Issue #1393💬 RespondidoAbierto el 29 de agosto de 2018por pnellesenReacciones 1

¿Añadir el selector de color de grapesjs a un nuevo tipo de rasgo?

Respuesta rápidapor pnellesen1

@nojacko he modificado un poco mi código, esto es básicamente lo que estoy haciendo: '''js getInputEl: function() { if (!this.inputEl) { var input = document.createElement('div'); input.innerHTML = this.inputHtml var inputEl = input; var pickerEl = inputEl.querySelector(".myolorPicker"); pickerEl.id = "ppcp" + this.ci...

Lee la respuesta completa abajo ↓

Pregunta

Estoy creando un nuevo tipo de rasgo y me gustaría poder incluir el selector de color de Grapesjs dentro de él; ¿alguna sugerencia sobre cómo hacerlo? Ahora mismo estoy incluyendo la entrada de color HTML estándar en mi HTML "inputEl" (junto con un campo de texto y un botón de opción), pero me encantaría poder usar el que viene con grapesJS en su lugar, si es posible.

Ejemplo de dónde me gustaría poner el recogedor de uvas.

inputEl = '<div>ALGO DE HTML</div><div><span>AQUÍ Color: </span><span><input type="color" id="colorpicker" value=""></span></div><div>MÁS HTML AQUÍ'</div>

Gracias por cualquier sugerencia. Gran herramienta, por cierto, gracias por crearla.

Respuestas (3)

pnellesen13 de septiembre de 2018

@nojacko he modificado un poco mi código, esto es básicamente lo que estoy haciendo:

'''js getInputEl: function() { if (!this.inputEl) { var input = document.createElement('div'); input.innerHTML = this.inputHtml var inputEl = input; var pickerEl = inputEl.querySelector(".myolorPicker"); pickerEl.id = "ppcp" + this.cid; if (!this.model.colorPickerEl) {// añadir el selector de color del espectro jQuery a nuestro editor de rasgos this.model.colorPickerEl = editor. TraitManager.getType('color').prototype.getInputEl.apply(this, arguments); } pickerEl.appendChild(this.model.colorPickerEl)

... código para gestionar cambios de valor y actualizar otros campos ...

return this.inputEl; }

Espero que esto ayude. Esto sigue siendo un trabajo en progreso :)

Ten en cuenta que el método getInputEl del colorPicker añade un colorselector de espectro al cuerpo del lienzo cada vez que se llama, y parece estar mapeado al elemento que devuelve, por eso solo lo llamo si no tengo ya ese elemento como parte de mi modelo. Sospecho que probablemente hay mejores formas de manejar esto, pero esto está funcionando para mi app por ahora.
artf2 de septiembre de 2018

Hola @pnellesen esta es en realidad una muy buena pregunta, sin duda, deberíamos permitirlo, pero por desgracia, ahora mismo no es tan sencillo. Deberíamos refactorizar algunos módulos para hacer la interfaz más reutilizable. Por cierto, intenta extender el 'editor. TraitManager.getType('color').prototype.getInputEl' dentro del método 'getInputEl' y mira si te puede ayudar

pnellesen6 de septiembre de 2018
Fragmento de códigoTEXT
@artf - ¡gracias por la respuesta! Tu sugerencia funcionó bastante bien (e incluso funciona en Internet Explorer, que es mejor que mi selector de color en html5 :p ). Tengo que hacer algunos ajustes en mi estilismo y mis datos de entrada, pero por lo demás está bien.

¡Gracias de nuevo!

Para quien tenga curiosidad por saber cómo funcionaba (y seguro que hay mejores formas):

Solo necesitaba añadir unas 5 líneas de código (en negrita más abajo) y añadir un atributo "data-colorp-c" al elemento al que quería adjuntar el selector:

getInputEl: function() {
      if (!this.inputEl) {
        var input = document.createElement('div');
        var thisModel = this.model;
        var thisTarget = this.target;
        **var that = esto
        var thisColorPicker = function() {
          Volver a ser editor. TraitManager.getType('color').prototype.getInputEl.apply(que, argumentos);
        }**
       ... más código...
      **miSelectorColorEl.appendeNiño(esteSelectorColor())**
     ... otro código ...
}

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.