Your IP : 172.69.214.233


Current Path : /var/www/element/data/www/revenuestory.ru/bitrix/js/ui/buttons/dist/
Upload File :
Current File : /var/www/element/data/www/revenuestory.ru/bitrix/js/ui/buttons/dist/ui.buttons.bundle.js.map

{"version":3,"file":"ui.buttons.bundle.js","sources":["../src/button/button-tag.js","../src/base-button.js","../src/button/button-color.js","../src/button/button-size.js","../src/button/button-icon.js","../src/button/button-state.js","../src/button/button-style.js","../src/button/button.js","../src/split-button/split-button-state.js","../src/split-button/split-sub-button-type.js","../src/split-button/split-sub-button.js","../src/split-button/split-button.js","../src/button-manager.js","../src/ibutton.js","../src/button/presets/add-button.js","../src/button/presets/apply-button.js","../src/button/presets/cancel-button.js","../src/button/presets/close-button.js","../src/button/presets/create-button.js","../src/button/presets/save-button.js","../src/button/presets/send-button.js","../src/button/presets/settings-button.js","../src/split-button/presets/add-split-button.js","../src/split-button/presets/apply-split-button.js","../src/split-button/presets/cancel-split-button.js","../src/split-button/presets/close-split-button.js","../src/split-button/presets/create-split-button.js","../src/split-button/presets/save-split-button.js","../src/split-button/presets/send-split-button.js"],"sourcesContent":["/**\n * @namespace {BX.UI}\n */\nexport default class ButtonTag\n{\n\tstatic BUTTON = 0;\n\tstatic LINK = 1;\n\tstatic SUBMIT = 2;\n\tstatic INPUT = 3;\n\tstatic DIV = 4;\n\tstatic SPAN = 5;\n}","import type IButton from './ibutton';\nimport ButtonTag from './button/button-tag';\nimport { Type, Tag, Dom, Event } from 'main.core';\nimport { type BaseButtonOptions } from './base-button-options';\nimport './ui.buttons.css';\n\nexport default class BaseButton implements IButton\n{\n\tconstructor(options: BaseButtonOptions)\n\t{\n\t\toptions = Type.isPlainObject(options) ? options : {};\n\t\tthis.options = Object.assign(this.getDefaultOptions(), options);\n\n\t\t/**\n\t\t * 'buttonNode', 'textNode' and counterNode options use only in ButtonManager.createFromNode\n\t\t */\n\t\tthis.button = Type.isDomNode(this.options.buttonNode) ? this.options.buttonNode : null;\n\t\tthis.textNode = Type.isDomNode(this.options.textNode) ? this.options.textNode : null;\n\t\tthis.counterNode = Type.isDomNode(this.options.counterNode) ? this.options.counterNode : null;\n\n\t\tthis.text = '';\n\t\tthis.counter = null;\n\t\tthis.events = {};\n\t\tthis.link = '';\n\t\tthis.maxWidth = null;\n\n\t\tthis.tag = this.isEnumValue(this.options.tag, ButtonTag) ? this.options.tag : ButtonTag.BUTTON;\n\t\tif (Type.isStringFilled(this.options.link))\n\t\t{\n\t\t\tthis.tag = ButtonTag.LINK;\n\t\t}\n\n\t\tthis.baseClass = Type.isStringFilled(this.options.baseClass) ? this.options.baseClass : '';\n\t\tthis.disabled = false;\n\n\t\tthis.handleEvent = this.handleEvent.bind(this);\n\n\t\tthis.init(); // needs to initialize private properties in derived classes.\n\n\t\tif (this.options.disabled === true)\n\t\t{\n\t\t\tthis.setDisabled();\n\t\t}\n\n\t\tthis.setText(this.options.text);\n\t\tthis.setCounter(this.options.counter);\n\t\tthis.setProps(this.options.props);\n\t\tthis.setDataSet(this.options.dataset);\n\t\tthis.addClass(this.options.className);\n\t\tthis.setLink(this.options.link);\n\t\tthis.setMaxWidth(this.options.maxWidth);\n\n\t\tthis.bindEvent('click', this.options.onclick);\n\t\tthis.bindEvents(this.options.events);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tinit(): void\n\t{\n\t\t// needs to initialize private properties in derived classes.\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tgetDefaultOptions(): Object\n\t{\n\t\treturn {};\n\t}\n\n\t/**\n\t * @public\n\t * @return {HTMLElement}\n\t */\n\trender(): HTMLElement\n\t{\n\t\treturn this.getContainer();\n\t}\n\n\t/**\n\t * @public\n\t * @param {HTMLElement} node\n\t * @return {?HTMLElement}\n\t */\n\trenderTo(node: HTMLElement): HTMLElement | null\n\t{\n\t\tif (Type.isDomNode(node))\n\t\t{\n\t\t\treturn node.appendChild(this.getContainer());\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * @public\n\t * @return {HTMLElement}\n\t */\n\tgetContainer(): HTMLElement\n\t{\n\t\tif (this.button !== null)\n\t\t{\n\t\t\treturn this.button;\n\t\t}\n\n\t\tswitch (this.getTag())\n\t\t{\n\t\t\tcase ButtonTag.BUTTON:\n\t\t\tdefault:\n\t\t\t\tthis.button = Tag.render`<button class=\"${this.getBaseClass()}\"></button>`;\n\t\t\t\tbreak;\n\t\t\tcase ButtonTag.INPUT:\n\t\t\t\tthis.button = Tag.render`<input class=\"${this.getBaseClass()}\" type=\"button\">`;\n\t\t\t\tbreak;\n\t\t\tcase ButtonTag.LINK:\n\t\t\t\tthis.button = Tag.render`<a class=\"${this.getBaseClass()}\" href=\"\"></a>`;\n\t\t\t\tbreak;\n\t\t\tcase ButtonTag.SUBMIT:\n\t\t\t\tthis.button = Tag.render`<input class=\"${this.getBaseClass()}\" type=\"submit\">`;\n\t\t\t\tbreak;\n\t\t\tcase ButtonTag.DIV:\n\t\t\t\tthis.button = Tag.render`<div class=\"${this.getBaseClass()}\"></div>`;\n\t\t\t\tbreak;\n\t\t\tcase ButtonTag.SPAN:\n\t\t\t\tthis.button = Tag.render`<span class=\"${this.getBaseClass()}\"></span>`;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn this.button;\n\t}\n\n\t/**\n\t * @protected\n\t * @return {string}\n\t */\n\tgetBaseClass(): string\n\t{\n\t\treturn this.baseClass;\n\t}\n\n\t/**\n\t * @public\n\t * @param {string} text\n\t * @return {this}\n\t */\n\tsetText(text: string): this\n\t{\n\t\tif (Type.isString(text))\n\t\t{\n\t\t\tthis.text = text;\n\n\t\t\tif (this.isInputType())\n\t\t\t{\n\t\t\t\tthis.getContainer().value = text;\n\t\t\t}\n\t\t\telse if (text.length > 0)\n\t\t\t{\n\t\t\t\tif (this.textNode === null)\n\t\t\t\t{\n\t\t\t\t\tthis.textNode = Tag.render`<span class=\"ui-btn-text\"></span>`;\n\t\t\t\t}\n\n\t\t\t\tif (!this.textNode.parentNode)\n\t\t\t\t{\n\t\t\t\t\tDom.prepend(this.textNode, this.getContainer());\n\t\t\t\t}\n\n\t\t\t\tthis.textNode.textContent = text;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (this.textNode !== null)\n\t\t\t\t{\n\t\t\t\t\tDom.remove(this.textNode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @return {string}\n\t */\n\tgetText(): string\n\t{\n\t\treturn this.text;\n\t}\n\n\t/**\n\t *\n\t * @param {number | string} counter\n\t * @return {this}\n\t */\n\tsetCounter(counter: number | string): this\n\t{\n\t\tif ([0, '0', '', null, false].includes(counter))\n\t\t{\n\t\t\tif (this.counterNode !== null)\n\t\t\t{\n\t\t\t\tDom.remove(this.counterNode);\n\t\t\t\tthis.counterNode = null;\n\t\t\t}\n\n\t\t\tthis.counter = null;\n\t\t}\n\t\telse if ((Type.isNumber(counter) && counter > 0) || Type.isStringFilled(counter))\n\t\t{\n\t\t\tif (this.isInputType())\n\t\t\t{\n\t\t\t\tthrow new Error('BX.UI.Button: an input button cannot have a counter.');\n\t\t\t}\n\n\t\t\tif (this.counterNode === null)\n\t\t\t{\n\t\t\t\tthis.counterNode = Tag.render`<span class=\"ui-btn-counter\"></span>`;\n\t\t\t\tDom.append(this.counterNode, this.getContainer());\n\t\t\t}\n\n\t\t\tthis.counter = counter;\n\t\t\tthis.counterNode.textContent = counter;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @return {number | string | null}\n\t */\n\tgetCounter(): number | string | null\n\t{\n\t\treturn this.counter;\n\t}\n\n\t/**\n\t *\n\t * @param {string} link\n\t * @return {this}\n\t */\n\tsetLink(link: string): this\n\t{\n\t\tif (Type.isString(link))\n\t\t{\n\t\t\tif (this.getTag() !== ButtonTag.LINK)\n\t\t\t{\n\t\t\t\tthrow new Error('BX.UI.Button: only an anchor button tag supports a link.');\n\t\t\t}\n\n\t\t\tthis.getContainer().href = link;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @return {string}\n\t */\n\tgetLink(): string\n\t{\n\t\treturn this.getContainer().href;\n\t}\n\n\tsetMaxWidth(maxWidth: number): this\n\t{\n\t\tif (Type.isNumber(maxWidth) && maxWidth > 0)\n\t\t{\n\t\t\tthis.maxWidth = maxWidth;\n\t\t\tthis.getContainer().style.maxWidth = `${maxWidth}px`;\n\t\t}\n\t\telse if (maxWidth === null)\n\t\t{\n\t\t\tthis.getContainer().style.removeProperty('max-width');\n\t\t\tthis.maxWidth = null;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tgetMaxWidth(): number | null\n\t{\n\t\treturn this.maxWidth;\n\t}\n\n\t/**\n\t * @public\n\t * @return {ButtonTag}\n\t */\n\tgetTag(): ButtonTag\n\t{\n\t\treturn this.tag;\n\t}\n\n\t/**\n\t * @public\n\t * @param {object.<string, string>} props\n\t * @return {this}\n\t */\n\tsetProps(props: { [propertyName: string]: string }): this\n\t{\n\t\tif (!Type.isPlainObject(props))\n\t\t{\n\t\t\treturn this;\n\t\t}\n\n\t\tfor (let propName in props)\n\t\t{\n\t\t\tconst propValue = props[propName];\n\t\t\tDom.attr(this.getContainer(), propName, propValue);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @return {object.<string, string>}\n\t */\n\tgetProps(): { [propertyName: string]: string }\n\t{\n\t\tconst attrs = this.getContainer().attributes;\n\t\tconst result = {};\n\t\tconst reserved = this.isInputType() ? ['class', 'type'] : ['class'];\n\n\t\tfor (let i = 0; i < attrs.length; i++)\n\t\t{\n\t\t\tconst { name, value } = attrs[i];\n\t\t\tif (reserved.includes(name) || name.startsWith('data-'))\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tresult[name] = value;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * @public\n\t * @param {object.<string, string>} props\n\t * @return {this}\n\t */\n\tsetDataSet(props: { [propertyName: string]: string }): this\n\t{\n\t\tif (!Type.isPlainObject(props))\n\t\t{\n\t\t\treturn this;\n\t\t}\n\n\t\tfor (let propName in props)\n\t\t{\n\t\t\tconst propValue = props[propName];\n\t\t\tif (propValue === null)\n\t\t\t{\n\t\t\t\tdelete this.getDataSet()[propName];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getDataSet()[propName] = propValue;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @return {DOMStringMap}\n\t */\n\tgetDataSet(): DOMStringMap\n\t{\n\t\treturn this.getContainer().dataset;\n\t}\n\n\t/**\n\t * @public\n\t * @param {string} className\n\t * @return {this}\n\t */\n\taddClass(className: string): this\n\t{\n\t\tif (Type.isStringFilled(className))\n\t\t{\n\t\t\tDom.addClass(this.getContainer(), className);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @param {string} className\n\t * @return {this}\n\t */\n\tremoveClass(className: string): this\n\t{\n\t\tif (Type.isStringFilled(className))\n\t\t{\n\t\t\tDom.removeClass(this.getContainer(), className);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @param {boolean} [flag=true]\n\t * @return {this}\n\t */\n\tsetDisabled(flag?: boolean): this\n\t{\n\t\tif (flag === false)\n\t\t{\n\t\t\tthis.disabled = false;\n\t\t\tthis.setProps({ disabled: null });\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.disabled = true;\n\t\t\tthis.setProps({ disabled: true });\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @return {boolean}\n\t */\n\tisDisabled(): boolean\n\t{\n\t\treturn this.disabled;\n\t}\n\n\t/**\n\t * @public\n\t * @return {boolean}\n\t */\n\tisInputType(): boolean\n\t{\n\t\treturn this.getTag() === ButtonTag.SUBMIT || this.getTag() === ButtonTag.INPUT;\n\t}\n\n\t/**\n\t * @public\n\t * @param {object.<string, function>} events\n\t * @return {this}\n\t */\n\tbindEvents(events: { [event: string]: (button: this, event: MouseEvent) => {} }): this\n\t{\n\t\tif (Type.isPlainObject(events))\n\t\t{\n\t\t\tfor (let eventName in events)\n\t\t\t{\n\t\t\t\tconst fn = events[eventName];\n\t\t\t\tthis.bindEvent(eventName, fn);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @param {string[]} events\n\t * @return {this}\n\t */\n\tunbindEvents(events: string[]): this\n\t{\n\t\tif (Type.isArray(events))\n\t\t{\n\t\t\tevents.forEach(eventName => {\n\t\t\t\tthis.unbindEvent(eventName);\n\t\t\t});\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @param {string} eventName\n\t * @param {function} fn\n\t * @return {this}\n\t */\n\tbindEvent(eventName: string, fn: (button: this, event: MouseEvent) => {}): this\n\t{\n\t\tif (Type.isStringFilled(eventName) && Type.isFunction(fn))\n\t\t{\n\t\t\tthis.unbindEvent(eventName);\n\t\t\tthis.events[eventName] = fn;\n\t\t\tEvent.bind(this.getContainer(), eventName, this.handleEvent);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @param {string} eventName\n\t * @return {this}\n\t */\n\tunbindEvent(eventName: string): this\n\t{\n\t\tif (this.events[eventName])\n\t\t{\n\t\t\tdelete this.events[eventName];\n\t\t\tEvent.unbind(this.getContainer(), eventName, this.handleEvent);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @private\n\t * @param {MouseEvent} event\n\t */\n\thandleEvent(event)\n\t{\n\t\tconst eventName = event.type;\n\t\tif (this.events[eventName])\n\t\t{\n\t\t\tconst fn = this.events[eventName];\n\t\t\tfn.call(this, this, event);\n\t\t}\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tisEnumValue(value, enumeration): boolean\n\t{\n\t\tfor (let code in enumeration)\n\t\t{\n\t\t\tif (enumeration[code] === value)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n}","/**\n * @namespace {BX.UI}\n */\nexport default class ButtonColor\n{\n\tstatic DANGER = 'ui-btn-danger';\n\tstatic DANGER_DARK = 'ui-btn-danger-dark';\n\tstatic DANGER_LIGHT = 'ui-btn-danger-light';\n\tstatic SUCCESS = 'ui-btn-success';\n\tstatic SUCCESS_DARK = 'ui-btn-success-dark';\n\tstatic SUCCESS_LIGHT = 'ui-btn-success-light';\n\tstatic PRIMARY_DARK = 'ui-btn-primary-dark';\n\tstatic PRIMARY = 'ui-btn-primary';\n\tstatic SECONDARY = 'ui-btn-secondary';\n\tstatic LINK = 'ui-btn-link';\n\tstatic LIGHT = 'ui-btn-light';\n\tstatic LIGHT_BORDER = 'ui-btn-light-border';\n}","/**\n * @namespace {BX.UI}\n */\nexport default class ButtonSize\n{\n\tstatic LARGE = 'ui-btn-lg';\n\tstatic MEDIUM = 'ui-btn-md';\n\tstatic SMALL = 'ui-btn-sm';\n\tstatic EXTRA_SMALL = 'ui-btn-xs';\n}","/**\n * @namespace {BX.UI}\n */\nexport default class ButtonIcon\n{\n\tstatic UNFOLLOW = 'ui-btn-icon-unfollow';\n\tstatic FOLLOW = 'ui-btn-icon-follow';\n\tstatic ADD = 'ui-btn-icon-add';\n\tstatic STOP = 'ui-btn-icon-stop';\n\tstatic START = 'ui-btn-icon-start';\n\tstatic PAUSE = 'ui-btn-icon-pause';\n\tstatic ADD_FOLDER = 'ui-btn-icon-add-folder';\n\tstatic SETTING = 'ui-btn-icon-setting';\n\tstatic TASK = 'ui-btn-icon-task';\n\tstatic INFO = 'ui-btn-icon-info';\n\tstatic SEARCH = 'ui-btn-icon-search';\n\tstatic PRINT = 'ui-btn-icon-print';\n\tstatic LIST = 'ui-btn-icon-list';\n\tstatic BUSINESS = 'ui-btn-icon-business';\n\tstatic BUSINESS_CONFIRM = 'ui-btn-icon-business-confirm';\n\tstatic BUSINESS_WARNING = 'ui-btn-icon-business-warning';\n\tstatic CAMERA = 'ui-btn-icon-camera';\n\tstatic PHONE_UP = 'ui-btn-icon-phone-up';\n\tstatic PHONE_DOWN = 'ui-btn-icon-phone-down';\n\tstatic PHONE_CALL = 'ui-btn-icon-phone-call';\n\tstatic BACK = 'ui-btn-icon-back';\n\tstatic REMOVE = 'ui-btn-icon-remove';\n\tstatic DOWNLOAD = 'ui-btn-icon-download';\n\tstatic DOTS = 'ui-btn-icon-ui-btn-icon-dots';\n\tstatic DONE = 'ui-btn-icon-done';\n\tstatic CANCEL = 'ui-btn-icon-cancel';\n\tstatic DISK = 'ui-btn-icon-disk';\n\tstatic LOCK = 'ui-btn-icon-lock';\n\tstatic MAIL = 'ui-btn-icon-mail';\n\tstatic CHAT = 'ui-btn-icon-chat';\n\tstatic PAGE = 'ui-btn-icon-page';\n\tstatic CLOUD = 'ui-btn-icon-cloud';\n\tstatic EDIT = 'ui-btn-icon-edit';\n\tstatic SHARE = 'ui-btn-icon-share';\n\tstatic ANGLE_UP = 'ui-btn-icon-angle-up';\n\tstatic ANGLE_DOWN = 'ui-btn-icon-angle-down';\n\tstatic EYE_OPENED = 'ui-btn-icon-eye-opened';\n\tstatic EYE_CLOSED = 'ui-btn-icon-eye-closed';\n\tstatic ALERT = 'ui-btn-icon-alert';\n\tstatic FAIL = 'ui-btn-icon-fail';\n\tstatic SUCCESS = 'ui-btn-icon-success';\n\tstatic PLAN = 'ui-btn-icon-plan';\n\tstatic TARIFF = 'ui-btn-icon-tariff';\n\tstatic BATTERY = 'ui-btn-icon-battery';\n\tstatic NO_BATTERY = 'ui-btn-icon-no-battery';\n\tstatic HALF_BATTERY = 'ui-btn-icon-half-battery';\n\tstatic LOW_BATTERY = 'ui-btn-icon-low-battery';\n\tstatic CRIT_BATTERY = 'ui-btn-icon-crit-battery';\n\tstatic DEMO = 'ui-btn-icon-demo';\n\tstatic ROBOTS = 'ui-btn-icon-robots';\n\tstatic NOTE = 'ui-btn-icon-note';\n\tstatic SCRIPT = 'ui-btn-icon-script';\n\tstatic PRINT2 = 'ui-btn-icon-print-2';\n\tstatic FUNNEL = 'ui-btn-icon-funnel';\n\tstatic FORWARD = 'ui-btn-icon-forward';\n\tstatic COPY = 'ui-btn-icon-copy';\n}\n","/**\n * @namespace {BX.UI}\n */\nexport default class ButtonState\n{\n\tstatic HOVER = 'ui-btn-hover';\n\tstatic ACTIVE = 'ui-btn-active';\n\tstatic DISABLED = 'ui-btn-disabled';\n\tstatic CLOCKING = 'ui-btn-clock';\n\tstatic WAITING = 'ui-btn-wait';\n}","/**\n * @namespace {BX.UI}\n */\nexport default class ButtonStyle\n{\n\tstatic NO_CAPS = 'ui-btn-no-caps';\n\tstatic ROUND = 'ui-btn-round';\n\tstatic DROPDOWN = 'ui-btn-dropdown';\n\tstatic COLLAPSED = 'ui-btn-collapsed';\n\tstatic DEPEND_ON_THEME = 'ui-btn-themes';\n}","import BaseButton from '../base-button';\nimport { Menu } from 'main.popup';\nimport { Type, Dom, Text, Event } from 'main.core';\nimport ButtonColor from './button-color';\nimport ButtonSize from './button-size';\nimport ButtonIcon from './button-icon';\nimport ButtonState from './button-state';\nimport ButtonStyle from './button-style';\nimport ButtonTag from './button-tag';\nimport { ButtonOptions } from './button-options';\nimport { type MenuOptions } from 'main.popup';\n\n/**\n * @namespace {BX.UI}\n */\nexport default class Button extends BaseButton\n{\n\tstatic BASE_CLASS = 'ui-btn';\n\n\tconstructor(options: ButtonOptions)\n\t{\n\t\toptions = Type.isPlainObject(options) ? options : {};\n\t\toptions.baseClass = Type.isStringFilled(options.baseClass) ? options.baseClass : Button.BASE_CLASS;\n\n\t\tsuper(options);\n\n\t\tthis.isDependOnTheme = null;\n\t\tthis.size = null;\n\t\tthis.color = null;\n\t\tthis.icon = null;\n\t\tthis.state = null;\n\t\tthis.id = null;\n\t\tthis.context = null;\n\n\t\tthis.menuWindow = null;\n\t\tthis.handleMenuClick = this.handleMenuClick.bind(this);\n\t\tthis.handleMenuClose = this.handleMenuClose.bind(this);\n\n\t\tthis.setDependOnTheme(this.options.dependOnTheme);\n\t\tthis.setSize(this.options.size);\n\t\tthis.setColor(this.options.color);\n\t\tthis.setIcon(this.options.icon);\n\t\tthis.setState(this.options.state);\n\t\tthis.setId(this.options.id);\n\t\tthis.setMenu(this.options.menu);\n\t\tthis.setContext(this.options.context);\n\n\t\tthis.options.noCaps && this.setNoCaps();\n\t\tthis.options.round && this.setRound();\n\n\t\tif (this.options.dropdown || (this.getMenuWindow() && this.options.dropdown !== false))\n\t\t{\n\t\t\tthis.setDropdown();\n\t\t}\n\t}\n\n\tstatic Size = ButtonSize;\n\tstatic Color = ButtonColor;\n\tstatic State = ButtonState;\n\tstatic Icon = ButtonIcon;\n\tstatic Tag = ButtonTag;\n\tstatic Style = ButtonStyle;\n\n\t/**\n\t * @public\n\t * @param {ButtonSize|null} size\n\t * @return {this}\n\t */\n\tsetSize(size: ButtonSize | null): this\n\t{\n\t\treturn this.setProperty('size', size, ButtonSize);\n\t}\n\n\t/**\n\t * @public\n\t * @return {?ButtonSize}\n\t */\n\tgetSize(): ButtonSize | null\n\t{\n\t\treturn this.size;\n\t}\n\n\t/**\n\t * @public\n\t * @param {ButtonColor|null} color\n\t * @return {this}\n\t */\n\tsetColor(color: ButtonColor | null): this\n\t{\n\t\treturn this.setProperty('color', color, ButtonColor);\n\t}\n\n\t/**\n\t * @public\n\t * @return {?ButtonSize}\n\t */\n\tgetColor(): ButtonColor | null\n\t{\n\t\treturn this.color;\n\t}\n\n\t/**\n\t * @public\n\t * @param {?ButtonIcon} icon\n\t * @return {this}\n\t */\n\tsetIcon(icon: ButtonIcon | null): this\n\t{\n\t\tthis.setProperty('icon', icon, ButtonIcon);\n\n\t\tif (this.isInputType() && this.getIcon() !== null)\n\t\t{\n\t\t\tthrow new Error('BX.UI.Button: Input type button cannot have an icon.');\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @return {?ButtonIcon}\n\t */\n\tgetIcon(): ButtonColor | null\n\t{\n\t\treturn this.icon;\n\t}\n\n\t/**\n\t * @public\n\t * @param {ButtonState|null} state\n\t * @return {this}\n\t */\n\tsetState(state: ButtonState | null): this\n\t{\n\t\treturn this.setProperty('state', state, ButtonState);\n\t}\n\n\t/**\n\t * @public\n\t * @return {?ButtonState}\n\t */\n\tgetState(): ButtonState | null\n\t{\n\t\treturn this.state;\n\t}\n\n\t/**\n\t * @public\n\t * @param {boolean} [flag=true]\n\t * @return {this}\n\t */\n\tsetNoCaps(flag: ? boolean): this\n\t{\n\t\tif (flag === false)\n\t\t{\n\t\t\tDom.removeClass(this.getContainer(), ButtonStyle.NO_CAPS);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.addClass(this.getContainer(), ButtonStyle.NO_CAPS);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @return {boolean}\n\t */\n\tisNoCaps(): boolean\n\t{\n\t\treturn Dom.hasClass(this.getContainer(), ButtonStyle.NO_CAPS);\n\t}\n\n\t/**\n\t * @public\n\t * @param {boolean} [flag=true]\n\t * @return {this}\n\t */\n\tsetRound(flag: ? boolean): this\n\t{\n\t\tif (flag === false)\n\t\t{\n\t\t\tDom.removeClass(this.getContainer(), ButtonStyle.ROUND);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.addClass(this.getContainer(), ButtonStyle.ROUND);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @return {boolean}\n\t */\n\tisRound(): boolean\n\t{\n\t\treturn Dom.hasClass(this.getContainer(), ButtonStyle.ROUND);\n\t}\n\n\t/**\n\t * @public\n\t * @param {boolean} [flag=true]\n\t * @return {this}\n\t */\n\tsetDependOnTheme(flag: boolean): this {\n\t\tif (flag === true)\n\t\t{\n\t\t\tDom.addClass(this.getContainer(), ButtonStyle.DEPEND_ON_THEME);\n\t\t}\n\t\telse if (flag === false)\n\t\t{\n\t\t\tDom.removeClass(this.getContainer(), ButtonStyle.DEPEND_ON_THEME);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @return {boolean}\n\t */\n\tisDependOnTheme(): boolean {\n\t\tif (flag === false)\n\t\t{\n\t\t\tDom.removeClass(this.getContainer(), ButtonStyle.DEPEND_ON_THEME);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.addClass(this.getContainer(), ButtonStyle.DEPEND_ON_THEME);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {boolean} [flag=true]\n\t * @return {this}\n\t */\n\tsetDropdown(flag: ? boolean): this\n\t{\n\t\tif (flag === false)\n\t\t{\n\t\t\tDom.removeClass(this.getContainer(), ButtonStyle.DROPDOWN);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.addClass(this.getContainer(), ButtonStyle.DROPDOWN);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @return {boolean}\n\t */\n\tisDropdown(): boolean\n\t{\n\t\treturn Dom.hasClass(this.getContainer(), ButtonStyle.DROPDOWN);\n\t}\n\n\t/**\n\t *\n\t * @param {boolean} [flag=true]\n\t * @return {this}\n\t */\n\tsetCollapsed(flag: ? boolean): this\n\t{\n\t\tif (flag === false)\n\t\t{\n\t\t\tDom.removeClass(this.getContainer(), ButtonStyle.COLLAPSED);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.addClass(this.getContainer(), ButtonStyle.COLLAPSED);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @return {boolean}\n\t */\n\tisCollapsed(): boolean\n\t{\n\t\treturn Dom.hasClass(this.getContainer(), ButtonStyle.COLLAPSED);\n\t}\n\n\t/**\n\t * @protected\n\t * @param {MenuOptions|false} options\n\t */\n\tsetMenu(options: MenuOptions): this\n\t{\n\t\tif (Type.isPlainObject(options) && Type.isArray(options.items) && options.items.length > 0)\n\t\t{\n\t\t\tthis.setMenu(false);\n\n\t\t\tthis.menuWindow = new Menu({\n\t\t\t\tid: `ui-btn-menu-${Text.getRandom().toLowerCase()}`,\n\t\t\t\tbindElement: this.getMenuBindElement(),\n\t\t\t\t...options\n\t\t\t});\n\n\t\t\tthis.menuWindow.getPopupWindow().subscribe('onClose', this.handleMenuClose);\n\t\t\tEvent.bind(this.getMenuClickElement(), 'click', this.handleMenuClick);\n\t\t}\n\t\telse if (options === false && this.menuWindow !== null)\n\t\t{\n\t\t\tthis.menuWindow.close();\n\n\t\t\tthis.menuWindow.getPopupWindow().unsubscribe('onClose', this.handleMenuClose);\n\t\t\tEvent.unbind(this.getMenuClickElement(), 'click', this.handleMenuClick);\n\n\t\t\tthis.menuWindow.destroy();\n\t\t\tthis.menuWindow = null;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @return {HTMLElement}\n\t */\n\tgetMenuBindElement(): HTMLElement\n\t{\n\t\treturn this.getContainer();\n\t}\n\n\t/**\n\t * @public\n\t * @return {HTMLElement}\n\t */\n\tgetMenuClickElement(): HTMLElement\n\t{\n\t\treturn this.getContainer();\n\t}\n\n\t/**\n\t * @protected\n\t * @param {MouseEvent} event\n\t */\n\thandleMenuClick(event: MouseEvent): void\n\t{\n\t\tthis.getMenuWindow().show();\n\t\tthis.setActive(this.getMenuWindow().getPopupWindow().isShown());\n\t}\n\n\t/**\n\t * @protected\n\t */\n\thandleMenuClose(): void\n\t{\n\t\tthis.setActive(false);\n\t}\n\n\t/**\n\t * @public\n\t * @return {Menu}\n\t */\n\tgetMenuWindow(): Menu\n\t{\n\t\treturn this.menuWindow;\n\t}\n\n\t/**\n\t * @public\n\t * @param {string|null} id\n\t * @return {this}\n\t */\n\tsetId(id: string | null): this\n\t{\n\t\tif (Type.isStringFilled(id) || Type.isNull(id))\n\t\t{\n\t\t\tthis.id = id;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @return {?string}\n\t */\n\tgetId(): ?string\n\t{\n\t\treturn this.id;\n\t}\n\n\t/**\n\t * @public\n\t * @param {boolean} [flag=true]\n\t * @return {this}\n\t */\n\tsetActive(flag?: boolean): this\n\t{\n\t\treturn this.setState(flag === false ? null : ButtonState.ACTIVE);\n\t}\n\n\t/**\n\t * @public\n\t * @return {boolean}\n\t */\n\tisActive(): boolean\n\t{\n\t\treturn this.getState() === ButtonState.ACTIVE;\n\t}\n\n\t/**\n\t * @public\n\t * @param {boolean} [flag=true]\n\t * @return {this}\n\t */\n\tsetHovered(flag?: boolean): this\n\t{\n\t\treturn this.setState(flag === false ? null : ButtonState.HOVER);\n\t}\n\n\t/**\n\t * @public\n\t * @return {boolean}\n\t */\n\tisHover(): boolean\n\t{\n\t\treturn this.getState() === ButtonState.HOVER;\n\t}\n\n\t/**\n\t * @public\n\t * @param {boolean} [flag=true]\n\t * @return {this}\n\t */\n\tsetDisabled(flag): this\n\t{\n\t\tthis.setState(flag === false ? null : ButtonState.DISABLED);\n\t\tsuper.setDisabled(flag);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @return {boolean}\n\t */\n\tisDisabled(): boolean\n\t{\n\t\treturn this.getState() === ButtonState.DISABLED;\n\t}\n\n\t/**\n\t * @public\n\t * @param {boolean} [flag=true]\n\t * @return {this}\n\t */\n\tsetWaiting(flag: ? boolean): this\n\t{\n\t\tif (flag === false)\n\t\t{\n\t\t\tthis.setState(null);\n\t\t\tthis.setProps({ disabled: null });\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.setState(ButtonState.WAITING);\n\t\t\tthis.setProps({ disabled: true });\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @return {boolean}\n\t */\n\tisWaiting(): boolean\n\t{\n\t\treturn this.getState() === ButtonState.WAITING;\n\t}\n\n\t/**\n\t * @public\n\t * @param {boolean} [flag=true]\n\t * @return {this}\n\t */\n\tsetClocking(flag?: boolean): this\n\t{\n\t\tif (flag === false)\n\t\t{\n\t\t\tthis.setState(null);\n\t\t\tthis.setProps({ disabled: null });\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.setState(ButtonState.CLOCKING);\n\t\t\tthis.setProps({ disabled: true });\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @return {boolean}\n\t */\n\tisClocking(): boolean\n\t{\n\t\treturn this.getState() === ButtonState.CLOCKING;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tsetProperty(property: string, value?: any, enumeration: Object): this\n\t{\n\t\tif (this.isEnumValue(value, enumeration))\n\t\t{\n\t\t\tDom.removeClass(this.getContainer(), this[property]);\n\t\t\tDom.addClass(this.getContainer(), value);\n\t\t\tthis[property] = value;\n\t\t}\n\t\telse if (value === null)\n\t\t{\n\t\t\tDom.removeClass(this.getContainer(), this[property]);\n\t\t\tthis[property] = null;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @param {*} context\n\t */\n\tsetContext(context: any): this\n\t{\n\t\tif (!Type.isUndefined(context))\n\t\t{\n\t\t\tthis.context = context;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @return {*}\n\t */\n\tgetContext(): any\n\t{\n\t\treturn this.context;\n\t}\n}\n","/**\n * @namespace {BX.UI}\n */\nexport default class SplitButtonState\n{\n\tstatic HOVER = 'ui-btn-hover';\n\tstatic MAIN_HOVER = 'ui-btn-main-hover';\n\tstatic MENU_HOVER = 'ui-btn-menu-hover';\n\tstatic ACTIVE = 'ui-btn-active';\n\tstatic MAIN_ACTIVE = 'ui-btn-main-active';\n\tstatic MENU_ACTIVE = 'ui-btn-menu-active';\n\tstatic DISABLED = 'ui-btn-disabled';\n\tstatic MAIN_DISABLED = 'ui-btn-main-disabled';\n\tstatic MENU_DISABLED = 'ui-btn-menu-disabled';\n\tstatic CLOCKING = 'ui-btn-clock';\n\tstatic WAITING = 'ui-btn-wait';\n}","/**\n * @namespace {BX.UI}\n */\nexport default class SplitSubButtonType\n{\n\tstatic MAIN = 'ui-btn-main';\n\tstatic MENU = 'ui-btn-menu';\n}","import BaseButton from '../base-button';\nimport SplitButtonState from './split-button-state';\nimport SplitSubButtonType from './split-sub-button-type';\nimport type SplitButton from './split-button';\nimport { Type } from 'main.core';\nimport type { SplitSubButtonOptions } from './split-sub-button-options';\n\n/**\n * @namespace {BX.UI}\n */\nexport default class SplitSubButton extends BaseButton\n{\n\tconstructor(options: SplitSubButtonOptions)\n\t{\n\t\toptions = Type.isPlainObject(options) ? options : {};\n\t\toptions.baseClass =\n\t\t\toptions.buttonType === SplitSubButtonType.MAIN\n\t\t\t\t? SplitSubButtonType.MAIN\n\t\t\t\t: SplitSubButtonType.MENU\n\t\t;\n\n\t\tsuper(options);\n\n\t\tif (this.isInputType())\n\t\t{\n\t\t\tthrow new Error('BX.UI.SplitSubButton: Split button cannot be an input tag.');\n\t\t}\n\t}\n\n\tstatic Type = SplitSubButtonType;\n\n\tinit(): void\n\t{\n\t\tthis.buttonType = this.options.buttonType;\n\t\tthis.splitButton = this.options.splitButton;\n\n\t\tsuper.init();\n\t}\n\n\t/**\n\t * @public\n\t * @return {SplitButton}\n\t */\n\tgetSplitButton(): SplitButton\n\t{\n\t\treturn this.splitButton;\n\t}\n\n\t/**\n\t * @public\n\t * @return {boolean}\n\t */\n\tisMainButton(): boolean\n\t{\n\t\treturn this.buttonType === SplitSubButtonType.MAIN;\n\t}\n\n\t/**\n\t * @public\n\t * @return {boolean}\n\t */\n\tisMenuButton(): boolean\n\t{\n\t\treturn this.buttonType === SplitSubButtonType.MENU;\n\t}\n\n\tsetText(text: string): this\n\t{\n\t\tif (Type.isString(text) && this.isMenuButton())\n\t\t{\n\t\t\tthrow new Error('BX.UI.SplitButton: a menu button doesn\\'t support a text caption.');\n\t\t}\n\n\t\treturn super.setText(text);\n\t}\n\n\t/**\n\t * @public\n\t * @param {boolean} [flag=true]\n\t * @return {this}\n\t */\n\tsetActive(flag?: boolean): this\n\t{\n\t\tthis.toggleState(\n\t\t\tflag,\n\t\t\tSplitButtonState.ACTIVE,\n\t\t\tSplitButtonState.MAIN_ACTIVE,\n\t\t\tSplitButtonState.MENU_ACTIVE\n\t\t);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @return {boolean}\n\t */\n\tisActive(): boolean\n\t{\n\t\tconst state = this.getSplitButton().getState();\n\t\tif (state === SplitButtonState.ACTIVE)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tif (this.isMainButton())\n\t\t{\n\t\t\treturn state === SplitButtonState.MAIN_ACTIVE;\n\t\t}\n\n\t\treturn state === SplitButtonState.MENU_ACTIVE;\n\t}\n\n\t/**\n\t * @public\n\t * @param {boolean} [flag=true]\n\t * @return {this}\n\t */\n\tsetDisabled(flag?: boolean): this\n\t{\n\t\tthis.toggleState(\n\t\t\tflag,\n\t\t\tSplitButtonState.DISABLED,\n\t\t\tSplitButtonState.MAIN_DISABLED,\n\t\t\tSplitButtonState.MENU_DISABLED\n\t\t);\n\n\t\tsuper.setDisabled(flag);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @param {boolean} flag\n\t * @return {this}\n\t */\n\tsetHovered(flag): this\n\t{\n\t\tthis.toggleState(\n\t\t\tflag,\n\t\t\tSplitButtonState.HOVER,\n\t\t\tSplitButtonState.MAIN_HOVER,\n\t\t\tSplitButtonState.MENU_HOVER\n\t\t);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @return {boolean}\n\t */\n\tisHovered(): boolean\n\t{\n\t\tconst state = this.getSplitButton().getState();\n\t\tif (state === SplitButtonState.HOVER)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tif (this.isMainButton())\n\t\t{\n\t\t\treturn state === SplitButtonState.MAIN_HOVER;\n\t\t}\n\n\t\treturn state === SplitButtonState.MENU_HOVER;\n\t}\n\n\t/**\n\t * @private\n\t * @param flag\n\t * @param globalState\n\t * @param mainState\n\t * @param menuState\n\t */\n\ttoggleState(flag, globalState, mainState, menuState)\n\t{\n\t\tconst state = this.getSplitButton().getState();\n\t\tif (flag === false)\n\t\t{\n\t\t\tif (state === globalState)\n\t\t\t{\n\t\t\t\tthis.getSplitButton().setState(this.isMainButton() ? menuState : mainState);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getSplitButton().setState(null);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (state === mainState && this.isMenuButton())\n\t\t\t{\n\t\t\t\tthis.getSplitButton().setState(globalState);\n\t\t\t}\n\t\t\telse if (state === menuState && this.isMainButton())\n\t\t\t{\n\t\t\t\tthis.getSplitButton().setState(globalState);\n\t\t\t}\n\t\t\telse if (state !== globalState)\n\t\t\t{\n\t\t\t\tthis.getSplitButton().setState(this.isMainButton() ? mainState : menuState);\n\t\t\t}\n\t\t}\n\t}\n}","import Button from '../button/button';\nimport SplitSubButton from './split-sub-button';\nimport SplitButtonState from './split-button-state';\nimport ButtonState from '../button/button-state';\nimport { Type, Tag } from 'main.core';\nimport SplitSubButtonType from './split-sub-button-type';\nimport type { SplitButtonOptions } from './split-button-options';\nimport ButtonTag from '../button/button-tag';\n\n/**\n * @namespace {BX.UI}\n */\nexport default class SplitButton extends Button\n{\n\tstatic BASE_CLASS = 'ui-btn-split';\n\n\tconstructor(options: SplitButtonOptions)\n\t{\n\t\toptions = Type.isPlainObject(options) ? options : {};\n\t\t// delete options.round;\n\n\t\tif (Type.isStringFilled(options.link))\n\t\t{\n\t\t\toptions.mainButton = Type.isPlainObject(options.mainButton) ? options.mainButton : {};\n\t\t\toptions.mainButton.link = options.link;\n\t\t\tdelete options.link;\n\t\t}\n\n\t\toptions.tag = ButtonTag.DIV;\n\t\toptions.baseClass = SplitButton.BASE_CLASS;\n\n\t\tsuper(options);\n\t}\n\n\tinit()\n\t{\n\t\tconst mainOptions = Type.isPlainObject(this.options.mainButton) ? this.options.mainButton : {};\n\t\tconst menuOptions = Type.isPlainObject(this.options.menuButton) ? this.options.menuButton : {};\n\t\tmainOptions.buttonType = SplitSubButtonType.MAIN;\n\t\tmainOptions.splitButton = this;\n\n\t\tmenuOptions.buttonType = SplitSubButtonType.MENU;\n\t\tmenuOptions.splitButton = this;\n\n\t\tthis.mainButton = new SplitSubButton(mainOptions);\n\t\tthis.menuButton = new SplitSubButton(menuOptions);\n\t\tthis.menuTarget = SplitSubButtonType.MAIN;\n\n\t\tif (this.options.menuTarget === SplitSubButtonType.MENU)\n\t\t{\n\t\t\tthis.menuTarget = SplitSubButtonType.MENU;\n\t\t}\n\n\t\tsuper.init();\n\t}\n\n\tstatic State = SplitButtonState;\n\n\t/**\n\t * @public\n\t * @return {HTMLElement}\n\t */\n\tgetContainer(): HTMLElement\n\t{\n\t\tif (this.button === null)\n\t\t{\n\t\t\tthis.button = Tag.render`\n\t\t\t\t<div class=\"${this.getBaseClass()}\">${[\n\t\t\t\tthis.getMainButton().getContainer(),\n\t\t\t\tthis.getMenuButton().getContainer()\n\t\t\t]}</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn this.button;\n\t}\n\n\t/**\n\t * @public\n\t * @return {SplitSubButton}\n\t */\n\tgetMainButton(): SplitSubButton\n\t{\n\t\treturn this.mainButton;\n\t}\n\n\t/**\n\t * @public\n\t * @return {SplitSubButton}\n\t */\n\tgetMenuButton(): SplitSubButton\n\t{\n\t\treturn this.menuButton;\n\t}\n\n\t/**\n\t * @public\n\t * @param {string} text\n\t * @return {this}\n\t */\n\tsetText(text: string): this\n\t{\n\t\tif (Type.isString(text))\n\t\t{\n\t\t\tthis.getMainButton().setText(text);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @return {string}\n\t */\n\tgetText(): string\n\t{\n\t\treturn this.getMainButton().getText();\n\t}\n\n\t/**\n\t *\n\t * @param {number | string} counter\n\t * @return {this}\n\t */\n\tsetCounter(counter: number | string): this\n\t{\n\t\treturn this.getMainButton().setCounter(counter);\n\t}\n\n\t/**\n\t *\n\t * @return {number | string | null}\n\t */\n\tgetCounter(): number | string | null\n\t{\n\t\treturn this.getMainButton().getCounter();\n\t}\n\n\t/**\n\t *\n\t * @param {string} link\n\t * @return {this}\n\t */\n\tsetLink(link: string): this\n\t{\n\t\treturn this.getMainButton().setLink(link);\n\t}\n\n\t/**\n\t *\n\t * @return {string}\n\t */\n\tgetLink(): string\n\t{\n\t\treturn this.getMainButton().getLink();\n\t}\n\n\t/**\n\t * @public\n\t * @param {SplitButtonState|null} state\n\t * @return {this}\n\t */\n\tsetState(state: SplitButtonState | null): this\n\t{\n\t\treturn this.setProperty('state', state, SplitButtonState);\n\t}\n\n\t/**\n\t * @public\n\t * @param {boolean} [flag=true]\n\t * @return {this}\n\t */\n\tsetDisabled(flag?: boolean): this\n\t{\n\t\tthis.setState(flag === false ? null : ButtonState.DISABLED);\n\t\tthis.getMainButton().setDisabled(flag);\n\t\tthis.getMenuButton().setDisabled(flag);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @protected\n\t * @return {HTMLElement}\n\t */\n\tgetMenuBindElement(): HTMLElement\n\t{\n\t\tif (this.getMenuTarget() === SplitSubButtonType.MENU)\n\t\t{\n\t\t\treturn this.getMenuButton().getContainer();\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.getContainer();\n\t\t}\n\t}\n\n\t/**\n\t * @protected\n\t * @param {MouseEvent} event\n\t */\n\thandleMenuClick(event: MouseEvent): void\n\t{\n\t\tthis.getMenuWindow().show();\n\n\t\tconst isActive = this.getMenuWindow().getPopupWindow().isShown();\n\t\tthis.getMenuButton().setActive(isActive);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\thandleMenuClose(): void\n\t{\n\t\tthis.getMenuButton().setActive(false);\n\t}\n\n\t/**\n\t * @protected\n\t * @return {HTMLElement}\n\t */\n\tgetMenuClickElement(): HTMLElement\n\t{\n\t\treturn this.getMenuButton().getContainer();\n\t}\n\n\t/**\n\t * @public\n\t * @return {SplitSubButtonType}\n\t */\n\tgetMenuTarget(): SplitSubButtonType\n\t{\n\t\treturn this.menuTarget;\n\t}\n\n\t/**\n\t *\n\t * @param {boolean} [flag=true]\n\t * @return {this}\n\t */\n\tsetDropdown(flag?: boolean): this\n\t{\n\t\treturn this;\n\t}\n\n\t/**\n\t * @public\n\t * @return {boolean}\n\t */\n\tisDropdown(): boolean\n\t{\n\t\treturn true;\n\t}\n}","import { Type, Reflection, Dom, Runtime, Tag } from 'main.core';\nimport { EventEmitter, BaseEvent } from 'main.core.events';\nimport { MenuItem } from 'main.popup';\n\nimport BaseButton from './base-button';\nimport Button from './button/button';\nimport SplitButton from './split-button/split-button';\nimport ButtonTag from './button/button-tag';\nimport ButtonColor from './button/button-color';\nimport ButtonSize from './button/button-size';\nimport ButtonState from './button/button-state';\nimport ButtonStyle from './button/button-style';\nimport ButtonIcon from './button/button-icon';\nimport SplitButtonState from './split-button/split-button-state';\n\nimport type { SplitButtonOptions } from './split-button/split-button-options';\nimport type { ButtonOptions } from './button/button-options';\nimport type { SplitSubButtonOptions } from './split-button/split-sub-button-options';\nimport SplitSubButtonType from './split-button/split-sub-button-type';\n\nexport default class ButtonManager\n{\n\t/**\n\t * @public\n\t * @param {HTMLButtonElement | HTMLAnchorElement | HTMLInputElement} node\n\t * @return {Button | SplitButton}\n\t */\n\tstatic createFromNode(\n\t\tnode: HTMLButtonElement | HTMLAnchorElement | HTMLInputElement | HTMLDivElement\n\t): Button | SplitButton\n\t{\n\t\tif (!Type.isDomNode(node))\n\t\t{\n\t\t\tthrow new Error('BX.UI.ButtonManager.createFromNode: \"node\" must be a DOM node.');\n\t\t}\n\n\t\tif (!Dom.hasClass(node, Button.BASE_CLASS) && !Dom.hasClass(node, SplitButton.BASE_CLASS))\n\t\t{\n\t\t\tthrow new Error('BX.UI.ButtonManager.createFromNode: \"node\" is not a button.');\n\t\t}\n\n\t\tconst isSplitButton = Dom.hasClass(node, SplitButton.BASE_CLASS);\n\t\tlet tag = null;\n\t\tlet text = null;\n\t\tlet textNode = null;\n\t\tlet counterNode = null;\n\t\tlet disabled = false;\n\t\tlet mainButtonOptions: SplitSubButtonOptions = {};\n\t\tlet menuButtonOptions: SplitSubButtonOptions = {};\n\n\t\tif (isSplitButton)\n\t\t{\n\t\t\tconst mainButton = node.querySelector(`.${SplitSubButtonType.MAIN}`);\n\t\t\tconst menuButton = node.querySelector(`.${SplitSubButtonType.MENU}`);\n\t\t\tif (!mainButton)\n\t\t\t{\n\t\t\t\tthrow new Error('BX.UI.ButtonManager.createFromNode: a split button doesn\\'t have a main button.');\n\t\t\t}\n\n\t\t\tif (!menuButton)\n\t\t\t{\n\t\t\t\tthrow new Error('BX.UI.ButtonManager.createFromNode: a split button doesn\\'t have a menu button.');\n\t\t\t}\n\n\t\t\tconst mainButtonTag = this.#getTag(mainButton);\n\t\t\tif (mainButtonTag === ButtonTag.INPUT || mainButtonTag === ButtonTag.SUBMIT)\n\t\t\t{\n\t\t\t\ttext = mainButton.value;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t[textNode, counterNode] = this.#getTextNode(mainButton);\n\t\t\t\ttext = textNode.textContent;\n\t\t\t}\n\n\t\t\tdisabled = Dom.hasClass(node, SplitButtonState.DISABLED);\n\n\t\t\tmainButtonOptions = {\n\t\t\t\ttag: mainButtonTag,\n\t\t\t\ttextNode,\n\t\t\t\tcounterNode,\n\t\t\t\tbuttonNode: mainButton,\n\t\t\t\tdisabled: Dom.hasClass(node, SplitButtonState.MAIN_DISABLED)\n\t\t\t};\n\n\t\t\tmenuButtonOptions = {\n\t\t\t\ttag: this.#getTag(menuButton),\n\t\t\t\tbuttonNode: menuButton,\n\t\t\t\ttextNode: null,\n\t\t\t\tcounterNode: null,\n\t\t\t\tdisabled: Dom.hasClass(node, SplitButtonState.MENU_DISABLED)\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttag = this.#getTag(node);\n\t\t\tif (tag === null)\n\t\t\t{\n\t\t\t\tthrow new Error('BX.UI.ButtonManager.createFromNode: \"node\" must be a button, link or input.');\n\t\t\t}\n\n\t\t\tdisabled = Dom.hasClass(node, ButtonState.DISABLED);\n\n\t\t\tif (tag === ButtonTag.INPUT || tag === ButtonTag.SUBMIT)\n\t\t\t{\n\t\t\t\ttext = node.value;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t[textNode, counterNode] = this.#getTextNode(node);\n\t\t\t\ttext = textNode.textContent;\n\t\t\t}\n\t\t}\n\n\t\tconst options: ButtonOptions & SplitButtonOptions = {\n\t\t\tid: node.dataset.btnUniqid,\n\t\t\tbuttonNode: node,\n\t\t\ttextNode: isSplitButton ? null : textNode,\n\t\t\tcounterNode: isSplitButton ? null : counterNode,\n\t\t\tcounter: this.#getCounter(counterNode),\n\t\t\ttag,\n\t\t\ttext,\n\t\t\tdisabled,\n\t\t\tmainButton: mainButtonOptions,\n\t\t\tmenuButton: menuButtonOptions,\n\t\t\tsize: this.#getEnumProp(node, ButtonSize),\n\t\t\tcolor: this.#getEnumProp(node, ButtonColor),\n\t\t\ticon: this.#getEnumProp(node, ButtonIcon),\n\t\t\tstate: this.#getEnumProp(node, isSplitButton ? SplitButtonState : ButtonState),\n\t\t\tnoCaps: Dom.hasClass(node, ButtonStyle.NO_CAPS),\n\t\t\tround: Dom.hasClass(node, ButtonStyle.ROUND)\n\t\t};\n\n\n\t\tconst nodeOptions = Dom.attr(node, 'data-json-options') || {};\n\n\t\tif (Dom.hasClass(node, ButtonStyle.DROPDOWN))\n\t\t{\n\t\t\toptions.dropdown = true;\n\t\t}\n\t\telse if (nodeOptions.dropdown === false)\n\t\t{\n\t\t\toptions.dropdown = false;\n\t\t}\n\n\t\tif (nodeOptions.onclick)\n\t\t{\n\t\t\toptions.onclick = this.#convertEventHandler(nodeOptions.onclick);\n\t\t}\n\n\t\tif (Type.isPlainObject(nodeOptions.events))\n\t\t{\n\t\t\toptions.events = nodeOptions.events;\n\t\t\tthis.#convertEvents(options.events);\n\t\t}\n\n\t\tif (Type.isPlainObject(nodeOptions.menu))\n\t\t{\n\t\t\toptions.menu = nodeOptions.menu;\n\t\t\tthis.#convertMenuEvents(options.menu.items);\n\t\t}\n\n\t\t['mainButton', 'menuButton'].forEach(button => {\n\n\t\t\tif (!Type.isPlainObject(nodeOptions[button]))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toptions[button] = Runtime.merge(options[button], nodeOptions[button]);\n\t\t\tif (options[button].onclick)\n\t\t\t{\n\t\t\t\toptions[button].onclick = this.#convertEventHandler(options[button].onclick);\n\t\t\t}\n\n\t\t\tthis.#convertEvents(options[button].events);\n\n\t\t});\n\n\t\tif (Type.isStringFilled(nodeOptions.menuTarget))\n\t\t{\n\t\t\toptions.menuTarget = nodeOptions.menuTarget;\n\t\t}\n\n\t\treturn isSplitButton ? new SplitButton(options) : new Button(options);\n\t}\n\n\tstatic createByUniqId(id): Button | SplitButton | null\n\t{\n\t\tif (!Type.isStringFilled(id))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst node = document.querySelector(`[data-btn-uniqid=\"${id}\"]`);\n\n\t\treturn node ? this.createFromNode(node) : null;\n\t}\n\n\t/**\n\t * @private\n\t * @param {HTMLElement} node\n\t * @return {null|number}\n\t */\n\tstatic #getTag(node: HTMLElement | HTMLInputElement): ButtonTag | null\n\t{\n\t\tif (node.nodeName === 'A')\n\t\t{\n\t\t\treturn ButtonTag.LINK;\n\t\t}\n\t\telse if (node.nodeName === 'BUTTON')\n\t\t{\n\t\t\treturn ButtonTag.BUTTON;\n\t\t}\n\t\telse if (node.nodeName === 'INPUT' && node.type === 'button')\n\t\t{\n\t\t\treturn ButtonTag.INPUT;\n\t\t}\n\t\telse if (node.nodeName === 'INPUT' && node.type === 'submit')\n\t\t{\n\t\t\treturn ButtonTag.SUBMIT;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * @private\n\t * @param {HTMLElement} node\n\t */\n\tstatic #getTextNode(node: HTMLElement): [HTMLElement, HTMLElement]\n\t{\n\t\tlet textNode = node.querySelector('.ui-btn-text');\n\t\tconst counterNode = node.querySelector('.ui-btn-counter');\n\t\tif (!textNode)\n\t\t{\n\t\t\tif (counterNode)\n\t\t\t{\n\t\t\t\tDom.remove(counterNode);\n\t\t\t}\n\n\t\t\ttextNode = Tag.render`<span class=\"ui-btn-text\">${node.innerHTML.trim()}</span>`;\n\t\t\tDom.clean(node);\n\t\t\tDom.append(textNode, node);\n\n\t\t\tif (counterNode)\n\t\t\t{\n\t\t\t\tDom.append(counterNode, node);\n\t\t\t}\n\t\t}\n\n\t\treturn [textNode, counterNode];\n\t}\n\n\t/**\n\t * @private\n\t * @param counterNode\n\t * @return {null|any}\n\t */\n\tstatic #getCounter(counterNode: HTMLElement): number | string | null\n\t{\n\t\tif (Type.isDomNode(counterNode))\n\t\t{\n\t\t\tconst textContent = counterNode.textContent;\n\t\t\tconst counter = Number(textContent);\n\n\t\t\treturn Type.isNumber(counter) ? counter : textContent;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * @private\n\t * @param {HTMLElement} node\n\t * @param {object} enumeration\n\t * @return {null|*}\n\t */\n\tstatic #getEnumProp(node: HTMLElement, enumeration: Object)\n\t{\n\t\tfor (let key in enumeration)\n\t\t{\n\t\t\tif (!enumeration.hasOwnProperty(key))\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (Dom.hasClass(node, enumeration[key]))\n\t\t\t{\n\t\t\t\treturn enumeration[key];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * @private\n\t * @param handler\n\t * @return {Function}\n\t */\n\tstatic #convertEventHandler(handler): Function\n\t{\n\t\tif (Type.isFunction(handler))\n\t\t{\n\t\t\treturn handler;\n\t\t}\n\n\t\tif (!Type.isObject(handler))\n\t\t{\n\t\t\tthrow new Error('BX.UI.ButtonManager.createFromNode: Event handler must be described as object or function.');\n\t\t}\n\n\t\tif (Type.isStringFilled(handler.code))\n\t\t{\n\t\t\treturn function() { // handle code can use callback arguments\n\t\t\t\teval(handler.code);\n\t\t\t};\n\t\t}\n\t\telse if (Type.isStringFilled(handler.event))\n\t\t{\n\t\t\treturn function(...args) {\n\n\t\t\t\tlet event;\n\t\t\t\tif (args[0] instanceof BaseEvent)\n\t\t\t\t{\n\t\t\t\t\tevent = args[0];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (args[0] instanceof BaseButton)\n\t\t\t\t\t{\n\t\t\t\t\t\tevent = new BaseEvent({ data: { button: args[0], event: args[1] } });\n\t\t\t\t\t}\n\t\t\t\t\telse if (args[1] instanceof MenuItem)\n\t\t\t\t\t{\n\t\t\t\t\t\tevent = new BaseEvent({ data: { item: args[1], event: args[0] } });\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tevent = new BaseEvent({ data: args });\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tEventEmitter.emit(handler.event, event);\n\t\t\t};\n\t\t}\n\t\telse if (Type.isStringFilled(handler.handler))\n\t\t{\n\t\t\treturn function(...args) {\n\t\t\t\tconst fn = Reflection.getClass(handler.handler);\n\t\t\t\tif (Type.isFunction(fn))\n\t\t\t\t{\n\t\t\t\t\tlet context = this;\n\t\t\t\t\tif (Type.isStringFilled(handler.context))\n\t\t\t\t\t{\n\t\t\t\t\t\tcontext = Reflection.getClass(handler.context);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fn.apply(context, args);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`BX.UI.ButtonManager.createFromNode: be aware, the handler ${handler.handler} is not a function.`\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t};\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * @private\n\t * @param events\n\t */\n\tstatic #convertEvents(events)\n\t{\n\t\tif (Type.isPlainObject(events))\n\t\t{\n\t\t\tfor (let [eventName, eventFn] of Object.entries(events))\n\t\t\t{\n\t\t\t\tevents[eventName] = this.#convertEventHandler(eventFn);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t * @param items\n\t */\n\tstatic #convertMenuEvents(items)\n\t{\n\t\tif (!Type.isArray(items))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\titems.forEach(item => {\n\t\t\tif (item.onclick)\n\t\t\t{\n\t\t\t\titem.onclick = this.#convertEventHandler(item.onclick);\n\t\t\t}\n\n\t\t\tif (item.events)\n\t\t\t{\n\t\t\t\tthis.#convertEvents(item.events);\n\t\t\t}\n\n\t\t\tif (Type.isArray(item.items))\n\t\t\t{\n\t\t\t\tthis.#convertMenuEvents(item.items);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * @deprecated\n\t * @param uniqId\n\t * @return {null|*}\n\t */\n\tstatic getByUniqid(uniqId)\n\t{\n\t\tconst toolbar = BX.UI.ToolbarManager.getDefaultToolbar();\n\n\t\treturn toolbar ? toolbar.getButton(uniqId) : null;\n\t}\n}","/**\n * @namespace {BX.UI}\n */\nexport default class IButton\n{\n\trender(): HTMLElement\n\t{\n\t\tthrow new Error('BX.UI.IButton: Must be implemented by a subclass');\n\t}\n}","import Button from '../button';\nimport ButtonColor from '../button-color';\nimport { Loc } from 'main.core';\n\n/**\n * @namespace {BX.UI}\n */\nexport default class AddButton extends Button\n{\n\tgetDefaultOptions()\n\t{\n\t\treturn {\n\t\t\ttext: Loc.getMessage('UI_BUTTONS_ADD_BTN_TEXT'),\n\t\t\tcolor: ButtonColor.SUCCESS\n\t\t};\n\t}\n}","import Button from '../button';\nimport ButtonColor from '../button-color';\nimport { Loc } from 'main.core';\n\n/**\n * @namespace {BX.UI}\n */\nexport default class ApplyButton extends Button\n{\n\tgetDefaultOptions()\n\t{\n\t\treturn {\n\t\t\ttext: Loc.getMessage('UI_BUTTONS_APPLY_BTN_TEXT'),\n\t\t\tcolor: ButtonColor.LIGHT_BORDER\n\t\t};\n\t}\n}","import Button from '../button';\nimport ButtonColor from '../button-color';\nimport { Loc } from 'main.core';\n\n/**\n * @namespace {BX.UI}\n */\nexport default class CancelButton extends Button\n{\n\tgetDefaultOptions()\n\t{\n\t\treturn {\n\t\t\ttext: Loc.getMessage('UI_BUTTONS_CANCEL_BTN_TEXT'),\n\t\t\tcolor: ButtonColor.LINK\n\t\t};\n\t}\n}","import Button from '../button';\nimport ButtonColor from '../button-color';\nimport { Loc } from 'main.core';\n\n/**\n * @namespace {BX.UI}\n */\nexport default class CloseButton extends Button\n{\n\tgetDefaultOptions()\n\t{\n\t\treturn {\n\t\t\ttext: Loc.getMessage('UI_BUTTONS_CLOSE_BTN_TEXT'),\n\t\t\tcolor: ButtonColor.LINK\n\t\t};\n\t}\n}","import Button from '../button';\nimport ButtonColor from '../button-color';\nimport { Loc } from 'main.core';\n\n/**\n * @namespace {BX.UI}\n */\nexport default class CreateButton extends Button\n{\n\tgetDefaultOptions()\n\t{\n\t\treturn {\n\t\t\ttext: Loc.getMessage('UI_BUTTONS_CREATE_BTN_TEXT'),\n\t\t\tcolor: ButtonColor.SUCCESS\n\t\t};\n\t}\n}","import Button from '../button';\nimport ButtonColor from '../button-color';\nimport { Loc } from 'main.core';\n\n/**\n * @namespace {BX.UI}\n */\nexport default class SaveButton extends Button\n{\n\tgetDefaultOptions()\n\t{\n\t\treturn {\n\t\t\ttext: Loc.getMessage('UI_BUTTONS_SAVE_BTN_TEXT'),\n\t\t\tcolor: ButtonColor.SUCCESS\n\t\t};\n\t}\n}","import Button from '../button';\nimport ButtonColor from '../button-color';\nimport { Loc } from 'main.core';\n\n/**\n * @namespace {BX.UI}\n */\nexport default class SendButton extends Button\n{\n\tgetDefaultOptions()\n\t{\n\t\treturn {\n\t\t\ttext: Loc.getMessage('UI_BUTTONS_SEND_BTN_TEXT'),\n\t\t\tcolor: ButtonColor.SUCCESS\n\t\t};\n\t}\n}","import Button from '../button';\nimport ButtonColor from '../button-color';\nimport ButtonIcon from '../button-icon';\n\n/**\n * @namespace {BX.UI}\n */\nexport default class SettingsButton extends Button\n{\n\tgetDefaultOptions()\n\t{\n\t\treturn {\n\t\t\ticon: ButtonIcon.SETTING,\n\t\t\tcolor: ButtonColor.LIGHT_BORDER,\n\t\t\tdropdown: false\n\t\t};\n\t}\n}","import SplitButton from '../split-button';\nimport ButtonColor from '../../button/button-color';\nimport { Loc } from 'main.core';\n\n/**\n * @namespace {BX.UI}\n */\nexport default class AddSplitButton extends SplitButton\n{\n\tgetDefaultOptions()\n\t{\n\t\treturn {\n\t\t\ttext: Loc.getMessage('UI_BUTTONS_ADD_BTN_TEXT'),\n\t\t\tcolor: ButtonColor.SUCCESS\n\t\t};\n\t}\n}","import SplitButton from '../split-button';\nimport ButtonColor from '../../button/button-color';\nimport { Loc } from 'main.core';\n\n/**\n * @namespace {BX.UI}\n */\nexport default class ApplySplitButton extends SplitButton\n{\n\tgetDefaultOptions()\n\t{\n\t\treturn {\n\t\t\ttext: Loc.getMessage('UI_BUTTONS_APPLY_BTN_TEXT'),\n\t\t\tcolor: ButtonColor.LIGHT_BORDER\n\t\t};\n\t}\n}","import SplitButton from '../split-button';\nimport ButtonColor from '../../button/button-color';\nimport { Loc } from 'main.core';\n\n/**\n * @namespace {BX.UI}\n */\nexport default class CancelSplitButton extends SplitButton\n{\n\tgetDefaultOptions()\n\t{\n\t\treturn {\n\t\t\ttext: Loc.getMessage('UI_BUTTONS_CANCEL_BTN_TEXT'),\n\t\t\tcolor: ButtonColor.LINK\n\t\t};\n\t}\n}","import SplitButton from '../split-button';\nimport ButtonColor from '../../button/button-color';\nimport { Loc } from 'main.core';\n\n/**\n * @namespace {BX.UI}\n */\nexport default class CloseSplitButton extends SplitButton\n{\n\tgetDefaultOptions()\n\t{\n\t\treturn {\n\t\t\ttext: Loc.getMessage('UI_BUTTONS_CLOSE_BTN_TEXT'),\n\t\t\tcolor: ButtonColor.LINK\n\t\t};\n\t}\n}","import SplitButton from '../split-button';\nimport ButtonColor from '../../button/button-color';\nimport { Loc } from 'main.core';\n\n/**\n * @namespace {BX.UI}\n */\nexport default class CreateSplitButton extends SplitButton\n{\n\tgetDefaultOptions()\n\t{\n\t\treturn {\n\t\t\ttext: Loc.getMessage('UI_BUTTONS_CREATE_BTN_TEXT'),\n\t\t\tcolor: ButtonColor.SUCCESS\n\t\t};\n\t}\n}","import SplitButton from '../split-button';\nimport ButtonColor from '../../button/button-color';\nimport { Loc } from 'main.core';\n\n/**\n * @namespace {BX.UI}\n */\nexport default class SaveSplitButton extends SplitButton\n{\n\tgetDefaultOptions()\n\t{\n\t\treturn {\n\t\t\ttext: Loc.getMessage('UI_BUTTONS_SAVE_BTN_TEXT'),\n\t\t\tcolor: ButtonColor.SUCCESS\n\t\t};\n\t}\n}","import SplitButton from '../split-button';\nimport ButtonColor from '../../button/button-color';\nimport { Loc } from 'main.core';\n\n/**\n * @namespace {BX.UI}\n */\nexport default class SendSplitButton extends SplitButton\n{\n\tgetDefaultOptions()\n\t{\n\t\treturn {\n\t\t\ttext: Loc.getMessage('UI_BUTTONS_SEND_BTN_TEXT'),\n\t\t\tcolor: ButtonColor.SUCCESS\n\t\t};\n\t}\n}"],"names":["ButtonTag","BaseButton","options","Type","isPlainObject","Object","assign","getDefaultOptions","button","isDomNode","buttonNode","textNode","counterNode","text","counter","events","link","maxWidth","tag","isEnumValue","BUTTON","isStringFilled","LINK","baseClass","disabled","handleEvent","bind","init","setDisabled","setText","setCounter","setProps","props","setDataSet","dataset","addClass","className","setLink","setMaxWidth","bindEvent","onclick","bindEvents","getContainer","node","appendChild","getTag","Tag","render","getBaseClass","INPUT","SUBMIT","DIV","SPAN","isString","isInputType","value","length","parentNode","Dom","prepend","textContent","remove","includes","isNumber","Error","append","href","style","removeProperty","propName","propValue","attr","attrs","attributes","result","reserved","i","name","startsWith","getDataSet","removeClass","flag","eventName","fn","isArray","forEach","unbindEvent","isFunction","Event","unbind","event","type","call","enumeration","code","ButtonColor","ButtonSize","ButtonIcon","ButtonState","ButtonStyle","Button","BASE_CLASS","isDependOnTheme","size","color","icon","state","id","context","menuWindow","handleMenuClick","handleMenuClose","setDependOnTheme","dependOnTheme","setSize","setColor","setIcon","setState","setId","setMenu","menu","setContext","noCaps","setNoCaps","round","setRound","dropdown","getMenuWindow","setDropdown","setProperty","getIcon","NO_CAPS","hasClass","ROUND","DEPEND_ON_THEME","DROPDOWN","COLLAPSED","items","Menu","Text","getRandom","toLowerCase","bindElement","getMenuBindElement","getPopupWindow","subscribe","getMenuClickElement","close","unsubscribe","destroy","show","setActive","isShown","isNull","ACTIVE","getState","HOVER","DISABLED","WAITING","CLOCKING","property","isUndefined","SplitButtonState","SplitSubButtonType","SplitSubButton","buttonType","MAIN","MENU","splitButton","isMenuButton","toggleState","MAIN_ACTIVE","MENU_ACTIVE","getSplitButton","isMainButton","MAIN_DISABLED","MENU_DISABLED","MAIN_HOVER","MENU_HOVER","globalState","mainState","menuState","SplitButton","mainButton","mainOptions","menuOptions","menuButton","menuTarget","getMainButton","getMenuButton","getText","getCounter","getLink","getMenuTarget","isActive","ButtonManager","isSplitButton","mainButtonOptions","menuButtonOptions","querySelector","mainButtonTag","btnUniqid","nodeOptions","Runtime","merge","document","createFromNode","uniqId","toolbar","BX","UI","ToolbarManager","getDefaultToolbar","getButton","nodeName","innerHTML","trim","clean","Number","key","hasOwnProperty","handler","isObject","eval","args","BaseEvent","data","MenuItem","item","EventEmitter","emit","Reflection","getClass","apply","console","warn","entries","eventFn","IButton","AddButton","Loc","getMessage","SUCCESS","ApplyButton","LIGHT_BORDER","CancelButton","CloseButton","CreateButton","SaveButton","SendButton","SettingsButton","SETTING","AddSplitButton","ApplySplitButton","CancelSplitButton","CloseSplitButton","CreateSplitButton","SaveSplitButton","SendSplitButton"],"mappings":"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"}