Expose spectrum color picker options
Question
Hi @artf,
I'm wanting to customize some options for the spectrum color picker (specifically the palette). I've searched through the code and am not seeing how this is currently possible.
This is what I'd like to do:
grapesjs.init({
colorPicker: {
showPalette: true,
palette: [
['black', 'white', 'blanchedalmond'],
['rgb(255, 128, 0);', 'hsv 100 70 50', 'lightyellow']
]
}
});
Is something like this already possible and I missed it? If not, would you consider merging a pull request that adds this functionality?
Answers (3)
Is something like this already possible and I missed it? If not, would you consider merging a pull request that adds this functionality?
Unfortunately, not yet possible but I'll definitely accept a PR (ok for the option colorPicker)
The spectrum is called inside InputColor and used then in PropertyColorView and TraitColorView
I'd put a comment to not override default options like change, move, etc. as it will break it
Thanks @artf! Do you have any general thoughts on how to best make this change? I've reviewed the code and am not seeing an easy way to accomplish this, and I'd like to avoid spending time going down the wrong path.
Here's a summary of what the ideas I've considered so far...any of these sound better/worse than the others?
- Add ColorPicker to the utils object
- This would make it easy to pass the config along like this, utilizing the existing loadModule functionality:
grapesjs.init({ utils: { colorPicker: { ... } } }); - I think this would require changing how the InputColor/PropertyColorView/TraitColorView objects reference it - they would need to go through
editor.Utils.ColorPickerinstead of simply requiring the js file dependency. None of those objects appear to currently have any reference to theeditorobject, so this doesn't seem very straightforward.
- This would make it easy to pass the config along like this, utilizing the existing loadModule functionality:
- Move the ColorPicker object to be a top-level editor object (kind of like the rich text editor
editor.RichTextEditor, but this would beeditor.ColorPicker)- I guess the same issues exist here as with moving ColorPicker into the utils object...all referencing code would need to access this through
editor.ColorPickerrather than requiring the js file dependency...
- I guess the same issues exist here as with moving ColorPicker into the utils object...all referencing code would need to access this through
- Backbone/jQuery implementation
- Modify
Backbone.$.fn.spectrum.defaultsin the editor if thecolorPickerconfig was passed tograpesjs.init, and modify the ColorPicker to use those defaults if they exist. - This solution feels very hacky to me :(
- Modify
Any feedback that you could provide would be greatly appreciated :)
Honestly, I was thinking about a less invasive approach
None of those objects appear to currently have any reference to the editor object
Actually, PropertyColorView injectsEditorModel (which I commonly reference as em) as an option via target (probably will be best to rename it to em) but not in TraitColorView (easy fix, just need to pass this.config.em). After we have the em inside we can easily update InputColor like this
colorEl.spectrum({
//...
palette: [],
...this.target.getConfig('colorPicker'), // or this.em.getConfig...
// We need move(), change(), etc. to make the color input work properly
// so I'd keep them out
move(color) {...},
//...
What do you think?
Related Questions and Answers
Continue research with similar issue discussions.
Issue #903
How to access "assets" like we have getHtml() and getCss().
WARNING READ and FOLLOW next 5 steps, then REMOVE them before posting the issueFollow CONTRIBUTING Guidelines https://github.com/artf/grape...
Issue #1051
[BUG] CommandAbstract's callRun and callStop should return result for backward compatibility
Hi @artf, after the latest upgrade (0.14.9) some of my commands that rely on the results of other commands fail. This happens because of th...
Issue #1691
How to use variable/function outside of the script
Hello @artf , How can i access the variable as well functions which is outside of the script. My code is like, I am using angular.js(Angula...
Issue #1609
Grapesjs, How to extract html/css code in view code into console log?
WARNING READ and FOLLOW next 5 steps, then REMOVE them before posting the issueFollow CONTRIBUTING Guidelines https://github.com/artf/grape...
Paid Plugins That Match This Issue
Curated by issue keywords and label relevance to help you ship faster.
Loading paid plugin recommendations...
Browse Plugin Categories
Jump directly to plugin category pages on the marketplace.