Crear configuraciones de componentes seleccionadas personalizadas
@JulyanoF , Perdona, me he perdido el paréntesis. Es 'editor. TraitManager.getTraitsViewer().el'
Lee la respuesta completa abajo ↓Pregunta
Hay una opción en el panel para cambiar la configuración del componente (para enlaces, hay una opción de no cambiar enlace - HREF - y destino, para textos, id y título y para imágenes, atributo alt). Me gustaría saber cómo puedo crear esas entradas y cómo puedo cambiar estas atracción en un componente seleccionado. He creado una vista de panel para usarla como CKEditor y cambiar los componentes de texto cuando se selecciona y me gustaría que estos ajustes de nutria estuvieran en la misma vista:
editor. Panels.addButton('views',{ // 'views' es el id del panel
id: 'editorCK',
claseNombre: 'fa fa-pencil',
comando: 'editorCK',
});
editor. Commands.add('editorCK', {
run: function(editor, sender){
const bm = editor. Jefe de bloque;
const pn = editor. Paneles;
var blocoSelecionado = editor.getSelected();
if(this.mkeditorCustom){
$(this.mkeditorCustom).remove();
}
if (blocoSelecionado && blocoSelecionado.attributes.type == "text"){
bm.render();
id de const = 'contenedor de vistas';
const mkeditorCustom = document.createElement('div');
const panels = pn.getPanel(id) || pn.addPanel({ id });
const textarea = document.createElement('textarea');
textarea.id = "ckeditor";
mkeditorCustom.appendChild(área de texto);
panels.set('appendContent', mkeditorCustom).trigger('change:appendContent');
this.mkeditorCustom = mkeditorCustom;
$('#ckeditor').html(blocoSelecionado.toHTML().replace(/ <div class="c.*?>(.*?)<\/div>/, '$1')); if(CKEDITOR.instances.ckeditor) CKEDITOR.instances.ckeditor.destroy(); if(!CKEDITOR.instances.ckeditor) CKEDITOR.replace(', opcoesCKEDITOR); CKEDITOR.instances['\ckeditor'].on('change', function() { blocoSelecionado.set('content', CKEDITOR.instances['ckeditor'].getData().replace(/<div class="c.*?>(.*?)<\/div>/, '$1'));
});
}else{
bm.render();
id de const = 'contenedor de vistas';
const mkeditorCustom = document.createElement('div');
const panels = pn.getPanel(id) || pn.addPanel({ id });
const conteudo = document.createElement('div');
conteudo.className = 'gjs-sm-header';
const texto = document.createTextNode('Seleccione um bloco de texto para usar o editor de texto');
conteudo.appendChild(texto);
mkeditorCustom.appendChild(conteudo);
panels.set('appendContent', mkeditorCustom).trigger('change:appendContent');
this.mkeditorCustom = mkeditorCustom;
}
this.mkeditorCustom.style.display = 'bloque';
},
stop: function(editor, sender){
if(CKEDITOR.instances['ckeditor']) CKEDITOR.instances['ckeditor'].destroy();
const mkeditorCustom = this.mkeditorCustom;
mkeditorCustom & & (mkeditorCustom.style.display = 'ninguno');
}
});
Otra cosa que intento crear es que en esta misma Vista de Panel hay una entrada (cuando no se selecciona ningún componente) que cambia el ancho máximo del HTML generado y otra para cambiar el color del fondo
Respuestas (3)
@JulyanoF ,
Perdona, me he perdido el paréntesis. Es 'editor. TraitManager.getTraitsViewer().el'
Esto es lo que buscas: https://github.com/artf/grapesjs/wiki/Components
@arthuralmeidap bien, pero ¿cómo puedo mostrar el componente en mi comando actual?
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #362
Cómo crear componentes de enlace personalizados que inciten a los usuarios a escribir enlace/elegir enlace, similar al modal de componentes de imágenes
Los Componentes de Imagen tienen lógica para llamar a Modal y solicitar la interacción del usuario para opciones o configuración de la URL...
Issue #1144
[Pregunta]: Propiedad personalizada para cambiar varios ajustes
¿Hay alguna forma de ampliar una propiedad actual o crear una nueva para cambiar varias propiedades? Tengo un componente en el que me gusta...
Issue #1324
Eliminar atributos de un componente
Hola @artf no sé si es posible eliminar un atributo de un componente. En nuestro proyecto estoy inyectando un atributo personalizado de un...
Issue #1841
Nombre de los componentes
Tengo dos preguntas.¿Hay alguna forma de cambiar el nombre del componente integrado? Quería cambiar el nombre "Box" por "Div". Así que el m...
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 →Tutoriales relacionados
Guías detalladas sobre el mismo tema.
Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.