La selección de componentes personalizados no es posible desde el lienzo.
@artf Gracias de nuevo, depuraré teniendo esto en cuenta. :)
Lee la respuesta completa abajo ↓Pregunta
Hola,
Intenté averiguarlo por mi cuenta, pero siento que estoy dando vueltas un poco en círculos. Así que espero que tengáis tiempo para leer esto y ayudarme con el problema.
Me sale una plantilla html con varias etiquetas de componentes personalizadas => ''<custom-component-tag></custom-component-tag><custom-component-tag></custom-component-tag><custom-component-tag></custom-component-tag>.
Para todos los componentes defino un nuevo componente en grapesjs tal como se describe en la documentación. Para cada componente renderizo una vista diferente, pero no manipulo el modelo porque quiero que el html siga igual al guardar.
Aunque los componentes tienen la siguiente configuración, la función de selección no parece funcionar con ellos. A continuación se puede ver un código de ejemplo.
Proporcioné un vídeo de pantalla en el que se puede ver que el componente es visible dentro del árbol de componentes y puede seleccionarse desde ahí, pero la selección no es posible desde el lienzo.
PD: Este componente de ejemplo que selecciono en el vídeo está resaltado, pero algunos de los otros tienen un conjunto de herramientas para arrastrar, etc., pero no están resaltados. Este sería el segundo problema. '''js private createCustomComponent(editor) { const comps = editor. DomComponents; const defaultType = comps.getType('default'); const defaultModel = defaultType.model; comps.addType('custom-component', { model: defaultModel.extend({ defaults: Object.assign({}, defaultModel.prototype.defaults, { removible: cierto, Arrastrable: Cierto, Droppable: falso, Badgable: Cierto, Estilizado: Cierto, Resaltable: Cierto, copiable: falso, redimensionable: falso, Editable: Cierto, }) }, { isComponent: function (el) { if (el.tagName === 'ETIQUETA-COMPONENTE-PERSONALIZADO') { return {type: 'custom-component'}; } } }), Definir la vista view: defaultType.view.extend({ render: función () { defaultType.view.prototype.render.apply(esto, argumentos); valor const = document.createElement('div'); this.el.appendChild(valor); console.dir(this.el); devuelvo esto; }, }), }); }
Gracias de antemano :)
Respuestas (3)
@artf Gracias de nuevo, depuraré teniendo esto en cuenta. :)
Hola, diría que esto es igual que el #260, así que tu 'const value = document.createElement('div');' que es puramente un elemento DOM, sin un 'model' asignado, está bloqueando al editor para seleccionar su padre 'custom-component'. Solución: '''js valor const = document.createElement('div'); value.style.pointerEvents = 'ninguno'; this.el.appendChild(valor);
El resaltado se aplica mediante la clase 'gjs-comp-selected' que usa la propiedad 'outline', así que comprueba con inspector qué está pasando, probablemente tengas algún tipo de propiedad de reinicio (por ejemplo, 'outline: none;')
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #1912
[PREGUNTA] Componentes personalizados hijos por defecto
Hola, Estoy intentando entender cómo puedo lograr lo siguiente.Crear un componente con un contenido predeterminado como hijos.Crea un bloqu...
Issue #1895
[PREGUNTA] Arrastra el componente sobre el lienzo con script, script añadido varias veces.
Hola, no estoy seguro de si esto es un error o no. Pero he notado un comportamiento extraño: cuando arrastro un bloque que tiene un compone...
Issue #429
Guardado de componentes personalizados
Hola @artf siento ser un fastidio, realmente no quería abrir un ticket de problema, pero llevo días atascado intentando alcanzar mi objetiv...
Issue #957
[Pregunta] Añadir atributos personalizados (datos-) a los recursos/imágenes al subir/seleccionar
Hola, estoy haciendo todo lo posible por encontrar la mejor manera de hacerlo, pero necesito adjuntar dos etiquetas de datos HTML5 personal...
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.
Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.