2024-03-29 03:00:07 +00:00
|
|
|
export async function initColorPickers(selector = '.js-color-picker-input input', opts = {}) {
|
|
|
|
const inputEls = document.querySelectorAll(selector);
|
|
|
|
if (!inputEls.length) return;
|
2024-03-19 16:28:46 +00:00
|
|
|
|
2024-03-29 03:00:07 +00:00
|
|
|
const [{coloris, init}] = await Promise.all([
|
|
|
|
import(/* webpackChunkName: "colorpicker" */'@melloware/coloris'),
|
|
|
|
import(/* webpackChunkName: "colorpicker" */'../../css/features/colorpicker.css'),
|
2020-07-29 18:44:23 +00:00
|
|
|
]);
|
|
|
|
|
2024-03-29 03:00:07 +00:00
|
|
|
init();
|
|
|
|
coloris({
|
|
|
|
el: selector,
|
|
|
|
alpha: false,
|
|
|
|
focusInput: true,
|
|
|
|
selectInput: false,
|
|
|
|
...opts,
|
|
|
|
});
|
|
|
|
|
|
|
|
for (const inputEl of inputEls) {
|
|
|
|
const parent = inputEl.closest('.js-color-picker-input');
|
|
|
|
// prevent tabbing on the color preview `button` inside the input
|
|
|
|
parent.querySelector('button').tabIndex = -1;
|
|
|
|
// init precolors
|
|
|
|
for (const el of parent.querySelectorAll('.precolors .color')) {
|
|
|
|
el.addEventListener('click', (e) => {
|
|
|
|
inputEl.value = e.target.getAttribute('data-color-hex');
|
|
|
|
inputEl.dispatchEvent(new Event('input', {bubbles: true}));
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
2020-07-29 18:44:23 +00:00
|
|
|
}
|