Issue #3076✓ ResueltoAbierto el 16 de octubre de 2020por JoshmamroudReacciones 3

PREGUNTA: Establecer el estado vacío del componente

Respuesta rápidapor Joshmamroud2

@artf ¡Eres EL HOMBRE! Ni siquiera sabía que existía el selector ':empty'. ¡Tan sencillo, tan increíble! Alucinado. ¡Gracias!

Lee la respuesta completa abajo ↓

Pregunta

Hola @artf,

¿Cómo recomendarías darle un estado vacío a un componente?

Por ejemplo, si tengo un componente de layout (es decir, una columna) que debería contener elementos hijos (por ejemplo, componente de texto o imagen). Cuando ese componente de diseño esté vacío, me gustaría mostrar algo de texto de ayuda dentro, como "Añadir un elemento aquí" y cuando tenga hijos, no debería mostrarse.

Por supuesto, esto solo debería existir en la vista y no renderizarse en el HTML de salida.

Aquí tienes un ejemplo de lo que quiero crear: ! imagen

Si hay otro problema que explique cómo hacerlo, pido disculpas, busqué y no encontré nada al respecto.

¡Gracias de antemano! Josh

Respuestas (3)

👍 Muy útilJoshmamroud23 de octubre de 2020

@artf ¡Eres EL HOMBRE! Ni siquiera sabía que existía el selector ':empty'. ¡Tan sencillo, tan increíble! Alucinado. ¡Gracias!

artf22 de octubre de 2020

He hecho algo similar de esta manera usando solo CSS '''js const doc = editor. Canvas.getDocument();

... addType('cc', { modelo: {...}, Vista: { init() { ... const stl = doc.querySelector('style#cc-id');

if (!stl) { doc.body.insertAdjacentHTML('beforeend', ' <estilo id="cc-id"> .cc-class:empty:after { contenido: "Bloque vacío"; text-align: center; pantalla: bloqueo; } </style> `); } } } })

hellocaio17 de octubre de 2020

Hola Josh, me gusta tu idea.

No soy experto, pero aquí tienes un par de impresiones:

Básicamente, añadiría algún tipo de bandera al propio componente.

Idea 1) Si el componente es algún tipo de contenedor (es decir, div), añadir un '<p class="empty-message">Arrastra un elemento aquí</p>', y cuando se añada un nuevo componente, podrías usar el evento del editor 'component:add' y comprobar si hay algún hermano con la clase 'empty-message' y eliminarlo.

idea 2) Añadir una clase 'empty message' al propio componente y luego usar CSS :before/:after para añadir contenido. Luego elimina la clase de mensaje vacío padre componentś usando JS, de forma similar a la idea 1.

Espero que te sirva.

Preguntas y respuestas relacionadas

Continúa investigando con debates sobre temas similares.

Plugins de pago que cumplen con este problema

Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.

Ver todos los plugins

Cargando recomendaciones de plugins de pago...

Opción gratuita

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 →
Opción premium

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.