Issue #2726💬 RespondidoAbierto el 21 de abril de 2020por adamwpeReacciones 0

Haz que el contenido de los componentes sea editable

Respuesta rápidapor adamwpe

Lo he solucionado: Solo tuve que hacer que el texto fuera un enlace e incluir un componente de texto. Por ejemplo,

Lee la respuesta completa abajo ↓

Pregunta

¿Es posible hacer que el contenido de un componente sea completamente editable?

Quiero hacer un ancla personalizada con un rasgo del href, y luego el usuario pueda estilizar el ancla en consecuencia, ya que planeo hacerlo como un botón.

Básicamente quiero que el usuario forme 'Click Me' como lo haría con cualquier texto.

editor. DomComponents.addType('custom_button', {
    modelo: {
        Predeterminados: {
            removible: cierto,
            Arrastrable: Cierto,
            Badgable: Cierto,
            Estilizado: Cierto,
            resaltable: falso,
            Seleccionable: Cierto,
            copiable: falso,
            redimensionable: falso,
            Editable: Cierto,
            Hoverable: Cierto,
            Atributos: {Clase: 'BTN GJS-Button'},
            etiquetaNombre: 'a',
            contenido: 'Haz clic en mí',
            rasgos: [{
                Tipo: 'texto',
                etiqueta: 'URL',
                Nombre: 'Href'
            }],
        },
        reRender() {
            this.view.render();
        }
    },
    isComponent: function (el) {

if (el.tagName === 'custom_button')
            return {type: 'custom_button'};
    }

});

editor. BlockManager.add('custom_button', {
    id: 'custom_button',
    etiqueta: 'Botón',
    categoría: 'GUI',
    Contenido: {
        Tipo: 'custom_button'
    }
});

He hecho un violín mostrando cómo queda ahora: https://jsfiddle.net/tb2gyas8/

¿Alguna idea?

Respuestas (1)

adamwpe21 de abril de 2020

Lo he solucionado:

Solo tuve que hacer que el texto fuera un enlace e incluir un componente de texto. Por ejemplo,


editor. DomComponents.addType('custom_button', {
            modelo: {
                Predeterminados: {
                    removible: cierto,
                    Arrastrable: Cierto,
                    Badgable: Cierto,
                    Estilizado: Cierto,
                    resaltable: falso,
                    Seleccionable: Cierto,
                    copiable: falso,
                    redimensionable: cierto,
                    Editable: Cierto,
                    Hoverable: Cierto,
                    Atributos: {Clase: 'BTN GJS-Button'},
                    Tipo: 'Enlace',
                    rasgos: [{
                        Tipo: 'texto',
                        etiqueta: 'URL',
                        Nombre: 'Href'
                    }],
                    Contenido: 'Hola Mundo'
                },
                reRender() {
                    this.view.render();
                }
            },
            extiende: 'enlace',
            isComponent: function (el) {

if (el.tagName === 'custom_button')
                    return {type: 'custom_button'};
            }

});

Widget de calendario
        editor. BlockManager.add('custom_button', {
            id: 'custom_button',
            etiqueta: 'Botón',
            categoría: 'GUI',
            Contenido: {
                Tipo: 'custom_button'
            }
        });

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.