Problema al adjuntar el evento a un nuevo plugin en Anglar
@sukheja-varun añadir cualquier evento al nuevo plugin Dentro de tu plugin, primero debes definir un componente de tipo personalizado: Luego define un nuevo bloque que utilice nuestro tipo de componente personalizado previamente definido: Para el modal, definimos las siguientes funciones: el ''createContent'' generará...
Lee la respuesta completa abajo ↓Pregunta
Hola a todos, Estaba intentando añadir un nuevo plugin a grapejs dentro de mi proyecto Angular. Requisito: Nuevo plugin con nombre como Producto. Cuando el usuario suelta el Product Plugin en HTML, debería abrirse un modal donde el usuario pueda escribir algunos atributos y una búsqueda de autocompletado donde el usuario pueda buscar varios productos y enviar modales. Tengo que inyectar esos productos en HTML.
Consulté la documentación y encontré el siguiente ejemplo
function myPlugin(editor){
editor. BlockManager.add('my-first-block', {
etiqueta: 'Bloque simple',
contenido: '<div class="my-block">Este es un bloque simple</div>',
});
}
Pero cuando intenté trabajar en esto no pude:
- adjuntar cualquier evento al nuevo plugin
- API de llamadas
- inyectar HTML personalizado
Respuestas (1)
@sukheja-varun
añadir cualquier evento al nuevo plugin
Dentro de tu plugin, primero debes definir un componente de tipo personalizado:
editor. DomComponents.addType('my-first-type', {
modelo: {
Predeterminados: {
components: '<div class="my-block">Este es un bloque simple</div>',
}
}
})
Luego define un nuevo bloque que utilice nuestro tipo de componente personalizado previamente definido:
editor. BlockManager.add('my-first-block', {
etiqueta: 'Bloque simple',
Contenido: {
Tipo: 'Mi-Primero-Tipo'
}
});
Para el modal, definimos las siguientes funciones:
const createContent = () => {
const content = document.createElement('div');
content.style = 'posición: relativa';
content.innerHTML =
`
<form onsubmit="">
< >
<tipo de entrada="texto" id="consulta" marcador de posición="búsqueda..." nombre="consulta" estilo=" margen-inferior:10px; tamaño-fuente: 1rem; relleno: 10px 20px; borde-radio: 3px; borde: ninguno; ">
</div>
</form>
<estilo del botón=" color de fondo: azul; color: blanco; tamaño-fuente: 1rem; radio de borde: 5px; borde: ninguno; relleno: 10px 20px; cursor: puntero ">
Enviar
</botton>
`
devolver contenido
}
el ''createContent'' generará el HTML interno para tu modal.
const applyChanges = () => {
axios.post("http://example.com", {
/*post cuerpo*/
})
}
el ''applyChanges'' es el manejador de clics para el botón de enviar dentro del modal. Y finalmente:
const showModal = () => {
const modal = editor. Modal
const content = createContent()
const BTN = content.children.length === 2 & content.children[1];
btn.addEventListener('click', applyChanges)
modal.open({
título: "¡Mi diálogo!",
Contenido: Contenido
})
}
Ahora que tenemos nuestro componente disponible como bloque y una forma de mostrar nuestro modal, necesitamos definir un oyente para el evento drop dentro de nuestro plugin:
editor.on("canvas:drop", (dt, m) => {
si (m & & m.atributos && m.atributos.tipo == 'mi-primero-tipo') {
/*nuestro componente ha sido eliminado, muestra el modal:*/
showModal()
}
})
API de llamadas
Como puedes ver en ''applyChanges'' puedes usar la librería de red que quieras, pero no hay ninguna biblioteca de red integrada disponible en grapesjs.
inyectar HTML personalizado
Para inyectar contenido dentro de tu componente, puedes usar tanto append como components. ¡Salud!
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #1715
Hola, soy nuevo en tu proyecto, pero me encanta. Tengo un pequeño problema con los atributos de la imagen.
He añadido dos rasgos nuevos al gestor de rasgos para imágenes. Anchura y altura. Lo añadí como plugin siguiendo tu ejemplo. Funciona perfe...
Issue #1538
Contenido diferente al exportar
Hola, Estoy intentando usar Grapejs con contenido dinámico. Lo que quiero conseguir es, como en WordPress, tener códigos cortos / etiquetas...
Issue #1510
Cómo añadir 2 columnas en blockmanager en grapesjs
Hola, soy nuevo en Grapejs y uso Grapejs con Angular6 He visto Demo de uvapesjs en []( https://grapesjs.com/demo.html). Quiero crear 2 colu...
Issue #1206
Problema: Añadir scripts dentro de contenido anidado que muestre un comportamiento diferente en comparación con un solo contenido
Hola, De hecho, estamos intentando añadir un script JS propio que pueda leer un archivo y previsualizarlo en el html. Pero al hacerlo, al a...
Plugins de pago que cumplen con este problema
Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.
Cargando recomendaciones de plugins de pago...
Consulta los plugins de código abierto de GrapesJS en GitHub O haz una búsqueda rápida en nuestro catálogo gratuito.
Explora plugins gratuitos →Los plugins premium incluyen soporte, actualizaciones regulares y funciones listas para producción — ahorrando días de trabajo de integración.
Explora plugins premium →Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.