Posición incorrecta de la barra de herramientas al duplicar un componente hijo
Cuando sobrescribes estos dos métodos en el comando 'select-comp', todo funciona perfectamente. El problema era que "el" no existe en el DOM. ` onHovered(em, component) { Sea el resultado = {}; si (componente) { const { view } = component; const { el } = vista; const pos = this.getElementPos(el); Resultado = { el, pos...
Lee la respuesta completa abajo ↓Pregunta
Hola, Puedes consultar este ejemplo: https://codepen.io/abozhinov/pen/XWbqjEJ
Pasos para reproducir el problema:
- Si existen componentes, elimínalos todos.
- Arrastra un nuevo bloque de carrusel.
- Selecciona el primer recipiente para niños.
- Haz clic en el icono DUPLICADO para crear un nuevo componente.
- Después de eso, intenta seleccionar el componente más reciente y luego vuelve a seleccionar el primero.
- La posición de la barra de herramientas es incorrecta porque el navegador no puede obtener el ancho y la altura del elemento.
[Error] TypeError: null no es un objeto (evaluando 'this.canvas.getHighlighter(t).style') showHighlighter (grapes.min.js:2:263826) updateToolsLocal (grapes.min.js:2:266937) (función anónima) (grapes.min.js:2:260549) forEach onHover (grapes.min.js:2:260438) m (grapes.min.js:2:22592) V (grapes.min.js:2:22263) h (grapes.min.js:2:20216) (función anónima) (grapes.min.js:2:22156) Set (grapes.min.js:2:24026) setHover (grapes.min.js:11:128341) handleHover (grapes.min.js:2:351496) I (grapes.min.js:2:9008) (función anónima) (grapes.min.js:2:9208) (función anónima) (grapes.min.js:2:2321) t (grapes.min.js:2:80874)
Cuando activo getView().reset(), los nuevos elementos en el DOM no existen y su ancho y altura son 0. Quiero reiniciar la vista y luego activar JS, que construirá el carrusel.
Respuestas (3)
Cuando sobrescribes estos dos métodos en el comando 'select-comp', todo funciona perfectamente.
El problema era que "el" no existe en el DOM.
`
onHovered(em, component) {
Sea el resultado = {};
si (componente) {
const { view } = component;
const { el } = vista;
const pos = this.getElementPos(el);
Resultado = { el, pos, component, view };
si (pos.width > 0) {
this.updateToolsLocal(result);
if (el.ownerDocument === this.currentDoc) {
this.elHovered = resultado;
}
}
}
},
onSelect() {
const { em } = esto;
componente const = em.getSelected();
si (componente) {
const { view } = component;
const { el } = vista;
si (el) {
const pos = this.getElementPos(el);
const result = { el, pos, component, view };
si (pos.width > 0) {
this.elSelected = resultado;
this.updateToolsGlobal();
Esto ocultará algunos elementos del componente select
this.updateToolsLocal(result);
}
}
} else {
this.toggleToolsEl();
this.lastSelected = 0;
}
}El mismo resultado que puedes obtener cuando el trigger renderiza en vez de reiniciar.
@artf si lo pruebas en la demo es igual. Solo tienes que arrastrar el carrusel y hacer clic en la diapositiva. <img width="1440" alt="Captura de pantalla 2020-03-16 at 14 58 23" src="https://user-images.githubusercontent.com/1404839/76760669-b8b75780-6796-11ea-8e24-8946e27949f9.png">
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #761
Problema de componentes de texto
Hola. Ojalá tuviera un componente de texto que no cree nuevos componentes cada vez que pulso la tecla "Enter" para crear nuevos párrafos (e...
Issue #2068
El plugin GrapesJs gradient ya no funciona
Hola equipo de GrapesJs Después de actualizar la versión de grapesjs desde la 14.0.59, noté que el plugin gradient dejó de funcionar, Tambi...
Issue #2824
¿Los objetos arrastrados no se posicionan con la resistencia inicial?
Así que cuando arrastro un componente o objeto desde la barra hasta el centro, no va a donde le dije... ¿Siempre va aproximadamente un 20%...
Issue #2771
[BUG] componente con textable:1 no funciona desde la versión 0.16.12
Hola, Acabo de actualizar a la versión de Last 0.16.12 y tengo un error al intentar mover un componente que tiene la propiedad 'textable:1'...
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 →Tutoriales relacionados
Guías detalladas sobre el mismo tema.
Tutorial
Ship to Production Faster: What’s New in GrapesJS Shadcn
Supercharge your page builder! GrapesJS Shadcn adds live drag previews, rich text / commands, dynamic data, and canvas presets to ship to prod faster.
Tutorial
How to Build a Production GrapesJS Editor: The Complete Walkthrough of Brief, Preset, Plugins, and Services
A complete walkthrough of building a production GrapesJS editor: how to choose a preset, pick plugins, and scope setup services without burning a sprint.
Tutorial
GrapesJS Inline RTE Plugins Update: CKEditor 5 v0.1.4 and Froala Inline Text Editor
CKEditor 5 Inline for GrapesJS v0.1.4 fixes Studio SDK toolbar clipping, iframe injection and link balloon bugs. Compare with Froala Inline — both $69.
Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.