UNPKG

balm-ui

Version:

A modular and customizable UI library based on Material Design and Vue 3

52 lines (42 loc) 1.56 kB
import { useEditor } from '../core/quill'; import UI_GLOBAL from '../../../../config/constants'; export function setToolbarIcons(customIcons = {}) { const { Quill } = useEditor(); const icons = Quill.import('ui/icons'); for (const [key, value] of Object.entries(customIcons)) { icons[key] = value; } } function setToolbarTips(formatElements, cutomTooltips) { const formats = Object.keys(cutomTooltips); formatElements.forEach((el) => { const format = el.classList[0].replace('ql-', ''); if (formats.includes(format)) { if (typeof cutomTooltips[format] === 'object') { el.title = cutomTooltips[format][el.value || 'default']; } else { el.title = cutomTooltips[format]; } } }); } const pickerExcludes = ['header', 'font', 'size', 'lineheight']; const pickerSelectors = `.ql-picker${pickerExcludes .map((format) => `:not(.ql-${format})`) .join('')} .ql-picker-label`; export function setToolbarStyle(cutomTooltips = {}) { const buttons = document.querySelectorAll('.ql-toolbar button'); const pickerLabels = document.querySelectorAll( `.ql-toolbar ${pickerSelectors}` ); const pickerItems = document.querySelectorAll( '.ql-toolbar .ql-align .ql-picker-item' ); [...buttons, ...pickerLabels, ...pickerItems].forEach((el) => { el.classList.add(UI_GLOBAL.cssClasses.icon); }); if (Object.keys(cutomTooltips).length) { const pickers = document.querySelectorAll('.ql-toolbar .ql-picker'); setToolbarTips([...buttons, ...pickers], cutomTooltips); } }