Spaces:
Running
Running
| import CustomEvents from 'tui-code-snippet/customEvents/customEvents'; | |
| import { eventNames } from '@/consts'; | |
| /** | |
| * Submenu Base Class | |
| * @class | |
| * @ignore | |
| */ | |
| class Submenu { | |
| /** | |
| * @param {HTMLElement} subMenuElement - submenu dom element | |
| * @param {Locale} locale - translate text | |
| * @param {string} name - name of sub menu | |
| * @param {Object} iconStyle - style of icon | |
| * @param {string} menuBarPosition - position of menu | |
| * @param {*} templateHtml - template for SubMenuElement | |
| * @param {boolean} [usageStatistics=false] - template for SubMenuElement | |
| */ | |
| constructor( | |
| subMenuElement, | |
| { locale, name, makeSvgIcon, menuBarPosition, templateHtml, usageStatistics } | |
| ) { | |
| this.subMenuElement = subMenuElement; | |
| this.menuBarPosition = menuBarPosition; | |
| this.toggleDirection = menuBarPosition === 'top' ? 'down' : 'up'; | |
| this.colorPickerControls = []; | |
| this.usageStatistics = usageStatistics; | |
| this.eventHandler = {}; | |
| this._makeSubMenuElement({ | |
| locale, | |
| name, | |
| makeSvgIcon, | |
| templateHtml, | |
| }); | |
| } | |
| /** | |
| * editor dom ui query selector | |
| * @param {string} selectName - query selector string name | |
| * @returns {HTMLElement} | |
| */ | |
| selector(selectName) { | |
| return this.subMenuElement.querySelector(selectName); | |
| } | |
| /** | |
| * change show state change for colorpicker instance | |
| * @param {Colorpicker} occurredControl - target Colorpicker Instance | |
| */ | |
| colorPickerChangeShow(occurredControl) { | |
| this.colorPickerControls.forEach((pickerControl) => { | |
| if (occurredControl !== pickerControl) { | |
| pickerControl.hide(); | |
| } | |
| }); | |
| } | |
| /** | |
| * Get button type | |
| * @param {HTMLElement} button - event target element | |
| * @param {array} buttonNames - Array of button names | |
| * @returns {string} - button type | |
| */ | |
| getButtonType(button, buttonNames) { | |
| return button.className.match(RegExp(`(${buttonNames.join('|')})`))[0]; | |
| } | |
| /** | |
| * Get button type | |
| * @param {HTMLElement} target - event target element | |
| * @param {string} removeClass - remove class name | |
| * @param {string} addClass - add class name | |
| */ | |
| changeClass(target, removeClass, addClass) { | |
| target.classList.remove(removeClass); | |
| target.classList.add(addClass); | |
| } | |
| /** | |
| * Interface method whose implementation is optional. | |
| * Returns the menu to its default state. | |
| */ | |
| changeStandbyMode() {} | |
| /** | |
| * Interface method whose implementation is optional. | |
| * Executed when the menu starts. | |
| */ | |
| changeStartMode() {} | |
| /** | |
| * Make submenu dom element | |
| * @param {Locale} locale - translate text | |
| * @param {string} name - submenu name | |
| * @param {Object} iconStyle - icon style | |
| * @param {*} templateHtml - template for SubMenuElement | |
| * @private | |
| */ | |
| _makeSubMenuElement({ locale, name, iconStyle, makeSvgIcon, templateHtml }) { | |
| const iconSubMenu = document.createElement('div'); | |
| iconSubMenu.className = `tui-image-editor-menu-${name}`; | |
| iconSubMenu.innerHTML = templateHtml({ | |
| locale, | |
| iconStyle, | |
| makeSvgIcon, | |
| }); | |
| this.subMenuElement.appendChild(iconSubMenu); | |
| } | |
| _onStartEditingInputBox() { | |
| this.fire(eventNames.INPUT_BOX_EDITING_STARTED); | |
| } | |
| _onStopEditingInputBox() { | |
| this.fire(eventNames.INPUT_BOX_EDITING_STOPPED); | |
| } | |
| } | |
| CustomEvents.mixin(Submenu); | |
| export default Submenu; | |