Campos de fusión
Generalmente, para evitar perder la selección en el clic del elemento usas 'event.preventDefault()', así que puede que sea tu caso, pero no estoy seguro. Intenta al menos crear una demo reproducible, por cierto cerro el problema porque no tiene nada que ver con el núcleo en sí
Lee la respuesta completa abajo ↓Pregunta
Tengo una pregunta sobre campos de fusión, similar a https://github.com/artf/grapesjs/issues/481. Estoy intentando que el botón icono de mi campo de fusión desactive un modal con un desplegable de entrada, y después de seleccionar una opción del desplegable, que el campo de fusión se inserte solo.
rte.add('newMergeField', {
icono: '<button onclick="searchMergField(true)" id="newMergeFieldButton">Merge Field Search</button>',
evento: 'clic',
Resultado: RTE => {
const { focusOffset, anchorOffset } = rte.doc.getSelection();
window.rteInsertHTML = res => {
const currentHtml = cloneDeep(rte.el.innerText);
const [inicio, fin] = FocusOffset < AnchorOffset ? [DesplazamientoFocal, DesplazamientoAncla]: [DesplazamientoAncla, DesplazamientoEnfoque];
const [primero, último] = [currentHtml.slice(0, inicio), currentHtml.slice(fin, currentHtml.length - 1)];
rte.el.innerText = primero + res + último;
}
},
});
^ Tengo algo en esta línea. Al hacer clic en el botón icono, simplemente se almacena una función en el objeto de la ventana que se llamará después de seleccionar una opción en el menú desplegable de entrada. Esto funciona perfectamente salvo por un problema. Si decido pulsar "enter" varias veces al final del área de texto e intento añadir un campo de fusión en la parte inferior, en su lugar lo añadirá al principio del campo de texto.
Creo que esto se debe a que el objeto Rango pierde todos sus desplazamientos cuando pulso "enter". Pero si este es el caso, ¿cómo funciona simplemente llamar a 'rte.insertHTML()' dentro del gestor de eventos integrado del icono?
¿Hay alguna forma de replicar el comportamiento de 'rte.insertHTML()' y que se inserte en la parte inferior de mi área de texto después de crear varias líneas nuevas pulsando "enter"?
He probado esto tanto con el objeto Selection como con el objeto Range (llamando a rte.doc.getSelection().getRangeAt(0)
Respuestas (1)
Generalmente, para evitar perder la selección en el clic del elemento usas 'event.preventDefault()', así que puede que sea tu caso, pero no estoy seguro. Intenta al menos crear una demo reproducible, por cierto cerro el problema porque no tiene nada que ver con el núcleo en sí
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #1846
[Pregunta]: Usando ngModel en un componente que contiene grupos de tagName
He probado esta solución https://github.com/artf/grapesjs/issues/1819#event-2158016066 Pero sobre componentes personalizados, digamos, Teng...
Issue #2968
Pregunta: intentando poner el sector 'Settings' bajo el estilo
https://github.com/artf/grapesjs/issues/1627 Creo que la pregunta está relacionada específicamente con esta línea, tengo el mismo problema....
Issue #3564
No se puede actualizar el iframe
0.17.19 ¿Puedes reproducir el error de la demo? SÍ ¿Cuál es el comportamiento esperado? Había hecho una pregunta sobre la actualización de...
Issue #3119
[PREGUNTA] ¿Cómo crear un bloque personalizado hecho con componentes de grapesjs?
Hola, quiero que me hagan bloques personalizados con componentes de grapesjs. Encontré la solución para añadir componentes: https://github....
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.