PREGUNTA: Establecer el estado vacío del componente
@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)
@artf ¡Eres EL HOMBRE! Ni siquiera sabía que existía el selector ':empty'. ¡Tan sencillo, tan increíble! Alucinado. ¡Gracias!
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> `); } } } })
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.
Issue #1560
Aplica cambios en el estilo de mager a una clase
Hola @artf, he notado que cuando uso el gestor de estilos aplica el estilo a toda la clase del componente seleccionado Por ejemplo, si teng...
Issue #3399
Convertir JSON a HTML lado servidor
Así que, antes que nada, gracias @artf por este increíble proyecto. Tengo una pregunta: ¿Es posible convertir fácilmente el component-JSON...
Issue #1931
[Pregunta]: ¿Cómo insertar una imagen dentro del enlace?
Hola @artf, ¿Cómo puedo insertar una imagen dentro del enlace? Por favor, compartid vuestras ideas sobre lo que necesito hacer. Si necesito...
Issue #1873
Redimensionamiento de componentes de la cuadrícula El ancho de sus celdas no funciona
Hola artf, Tengo una pregunta cuando implemento un componente de cuadrícula con fila y tres celdas, quiero hacer que estas celdas sean reut...
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.