Hola @artf, estaba probando a alternar entre usar ids y clases para el estilo, así que necesito cambiar el atributo componentFirst programáticamente. Pero cuando intento cambiar la configuración, el comportamiento no cambia. Esto ni siquiera funciona en la demo. Pasos para reproducirse:Añadir dos bloques de textoDales...
artf
Tienes que reactivar la selección después de cambiar esa opción 'editor.trigger('component:toggled')'
ClaudeCode
Gracias por informar de esto, @theSC0RP. Buena pregunta sobre ¿Cómo cambiar programáticamente componentFirst?. El enfoque recomendado con Componentes es utilizar la API orientada a eventos. Empieza aquí: Consulta la documentación de Grapes...
Versión: 0.17.4 Cómo reproducirCambiar a modo tableta o móvilOcultar el componente seleccionado desactivando el icono de visibilidad de la capaCambiar al modo escritorio. ResultadoEl icono de visibilidad sigue desactivado mientras se muestran los componentes ocultos. EsperadoDespués de cambiar al escritorio, el icono...
artf
Gracias por el informe @tranthanhhoa lo arreglaré en la próxima versión, pero creo que mantendré el cambio de visibilidad más como una condición global, para que el componente oculto no sea visible en todos los dispositivos.
ClaudeCode
Gracias por informar de esto, @tranthanhhoa. Buena pregunta sobre La visibilidad de las capas no funciona correctamente. El enfoque recomendado con Componentes es utilizar la API orientada a eventos. Empieza aquí: Consulta la documentación...
Hola a todos, Estoy usando grapesjs-blocks-bootstrap4 y reviso cómo componen los componentes, se ve bien. Pero cuando seleccionas contenedor tipo bloque, apunta a la clase en vez de a ID único. ! bootstrap-4-elemento Pude configurar un ID aleatorio usando este model.set('attributes', { id: randomID() }); pero aún así,...
Gracias por informar de esto, @cedriclajato. Gracias por compartir tu informe sobre Sin ID generado y sin ID de selección automática. Para ayudar al equipo a investigar y priorizar esto: Por favor, proporciona: Un ejemplo mínimo reproducib...
'''js editor.on('bloque:click', (bloqueo) => { console.log(bloqueo) }) ``` ¿O hay alguna forma de escuchar el evento de clic en el bloque?
artf
Bueno, de hecho puedes usar render personalizado de bloques para aplicar eventos DOM personalizados. '''js blockManager.add('some-block-id', { // ... Definición de bloque render: ({ model, el }) => { el.addEventListener('click', () => { co...
Gracias por informar de esto, @iabhiyaan. Buena pregunta sobre FEAT: añadir evento de clic en los bloques. El enfoque recomendado con GrapesJS es usar la API orientada a eventos. Empieza aquí: Consulta la documentación de GrapesJS de tu mó...
He notado que se está usando una versión anterior de Font Awesome versión 4.7. Uso la versión 5.2 de fontawesome y parece que causa problemas cuando se carga junto a la versión usada con Grapes JS; algunas fuentes no cargan o los nombres de las clases han cambiado en el nuevo conjunto de caracteres de Fontawesome. ¿Có...
artf
Puedes cambiar esta opción en init: https://github.com/artf/grapesjs/blob/88249c38577852dc3c42047356a70a12066ee6ca/src/editor/config/config.js#L165-L168
ClaudeCode
Gracias por informar de esto, @snowballrandom. Buena pregunta sobre *. El enfoque recomendado con GrapesJS es usar la API orientada a eventos. Empieza aquí: Consulta la documentación de GrapesJS de tu módulo específico Busca el método del...
He creado un rasgo personalizado, pero el nombre de ese rasgo será dinámico, lo cual se desconoce. El problema es que el removeTrait() actual solo funciona con nombre/id. Pero, ¿y si quiero eliminar todos los rasgos del componente con rasgo personalizado? Por ejemplo: creo un rasgo 'mi-rasgo personalizado' y lo vincul...
artf
Puedes usar el DNI '''js component.addTrait({ id: 'mi-rasgo-personalizado', Nombre: 'some_random', // ... }); // ... component.removeTrait('mi-rasgo-personalizado') ```
ClaudeCode
Gracias por informar de esto, @vijayshukla30. Gracias por compartir tu informe sobre Eliminar rasgo personalizado por tipo.. Para ayudar al equipo a investigar y priorizar esto: Por favor, proporciona: Un ejemplo mínimo reproducible (CodeS...
Versión: ÚltimaDescribe el bicho detallado https://jsfiddle.net/cleaver/wgz2jsvq/2/ No pasa nada en: '''js Rasgos: [ { texto: 'Botón sencillo', tipo: 'botón', Completo: Cierto, comando: () => { console.log('Botón roto'); alerta ('Botón roto'); }, }, ] ``` --- En la versión 0.16.45 el mismo código funcionaba bien: http...
artf
Gracias por el informe@tudor-ooo se corregirá en la próxima versión
ClaudeCode
Gracias por informar de esto, @mosh-tudor. El problema con el comando de rasgo del botón no funciona parece ser una condición de raza o un problema de sincronización de gestión de estados. Esto suele ocurrir cuando los eventos del ciclo de...
¿Qué intentas añadir a GrapesJS? El componente debería poder marcarse como sucio, activando el mensaje de advertencia 'onbeforeunload'. Describe tu solicitud de función detallado Tengo un componente de texto (personalizado) donde el usuario puede introducir texto arbitrario. Estoy almacenando los datos en mi servidor...
anlumo
Solucioné esto desactivando completamente el manejo onbeforeunload y creando el mío propio.
artf
El editor tiene la propiedad 'editar' que cambia cada vez que el RTE está activado o desactivado, así que supongo que, en tu caso, esto debería funcionar '''js editor.on('change:editing', (em, editing) => { window.onbeforeunload = edición...
anlumo
¿No se sobrescribiría este manejador onbeforeunload después por el fragmento que mencioné antes?
¿Hay alguna forma de añadir una nueva sección después del componente seleccionado usando grapesjs?
artf
Puedes hacerlo de esta manera: '''js const cmp = editor.getSelected(); cmp.parent().append('<section>...</section>', { at: cmp.index() + 1 }); ```
ClaudeCode
Gracias por informar de esto, @iabhiyaan. Buena pregunta sobre FEAT: insertAdjacentHTML('afterend', '<section></section>'). ¿Existe alguna API así en grapesjs? El enfoque recomendado con Componentes es utilizar la API orientada a eventos....
Versión: 0.17.4 ¿Puedes reproducir el error de la demo?[ ] Sí[X] No ¿Cuál es el comportamiento esperado?Tras insertar un iFrame que el src se devuelve al usar 'editor.getHTML()'Al cargar una página, esos iframes serán reconocidos como componentes iframe y volverán a ser editables Describe el error detallado Estoy añad...
artf
Añadiré soporte para iframe en la próxima versión
ClaudeCode
Gracias por informar de esto, @TheDude70. El problema con iframe no guarda src / no reconoce iframes tras carga parece ser una condición de carrera o un problema de gestión de estado. Esto suele ocurrir cuando los eventos del ciclo de vida...