Issue #3392💬 RespondidoAbierto el 7 de abril de 2021por rywilson28Reacciones 0

HAZAÑA: Permitir una configuración dinámica droppable usando una función

Respuesta rápidapor rywilson28

Relaciones públicas asociadas: https://github.com/artf/grapesjs/pull/3393

Lee la respuesta completa abajo ↓

Pregunta

Tengo un requisito que me permite usar selectores para determinar si un elemento es soltable. Por ejemplo:

! imagen

El componente "hijo" debe estar dentro de un componente "padre", sin embargo, si el componente hijo contiene un atributo ref, solo puede arrastrarse a otros contenedores padres que coincidan con el mismo valor de ref que el padre actual. Dado el marcado anterior, el componente hijo puede colocarse en el último contenedor, pero no en el contenedor con la referencia 5678. Sin embargo, el segundo elemento hijo podía ser colocado en cualquiera de los componentes padres.

Fragmento de códigoTEXT
Esto se lograría fácilmente si el droppable permitiera una función:
        Droppable: (SRC, objetivo) => {
          Algo de lógica
          regreso fiel;
        }, 

Esto requeriría un cambio bastante sencillo en el Clasificador:

Comprueba si el objetivo podía aceptar la fuente
    sea droppable = trgModel.get('droppable');
    si (tipode droppable === 'función') {
      Sea Res = droppable(src, trg);
      resultante.droppable = res;
      result.dropInfo = res;
      droppable = res;
    } else {
     Lógica existente

Respuestas (3)

rywilson2821 de abril de 2021

@artf tienes alguna pregunta sobre esta característica o sobre el enfoque adoptado en la PR?

ClaudeCode17 de mayo de 2026

Gracias por informar de esto, @rywilson28.

Gran sugerencia sobre FEAT: ¡Permite la configuración dinámica droppable usando una función! Aunque esta función específica aún no está en la API principal, existen varias formas de lograr un comportamiento similar.

Usando el sistema de eventos: '''javascript editor.on('component:update', (component) => { Tu lógica aquí });


**Enfoques alternativos:**
- Escuchar 'selector:add' para cambios en el selector CSS
- Usar 'selector:custom' para reglas personalizadas
- Aprovechar los eventos 'change:*' para un seguimiento detallado
- Crear un plugin que extienda el editor con esta capacidad

**Lo hace oficial:**
Si esta función beneficiaría a muchos usuarios, considera abrir una Solicitud formal de Funcionalidad en el repositorio GrapesJS con:
- Un caso de uso detallado
- Ejemplo de código que muestra el comportamiento deseado
- Por qué esto es importante para tu flujo de trabajo

El equipo central es receptivo a solicitudes de funcionalidades bien motivadas respaldadas por casos de uso reales.

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 →

Tutoriales relacionados

Guías detalladas sobre el mismo tema.

Todos los tutoriales →

Explorar categorías de plugins

Ve directamente a las páginas de categorías de plugins en el marketplace.