{"version":3,"file":"ej2-splitbuttons.min.js","sources":["../../src/common/common.js","../../src/button-group/button-group.js","../../src/drop-down-button/drop-down-button.js","../../src/split-button/split-button.js","../../src/progress-button/progress-button.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, extend, deleteObject, Property, addClass } from '@syncfusion/ej2-base';\n/**\n * @param props\n * @param model\n */\nexport function getModel(props, model) {\n var obj = extend({}, props);\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((model).indexOf(prop) < 0) {\n deleteObject(obj, prop);\n }\n }\n return obj;\n}\n/** @hidden */\nexport function upDownKeyHandler(ul, keyCode) {\n var defaultIdx = keyCode === 40 ? 0 : ul.childElementCount - 1;\n var liIdx = defaultIdx;\n var li;\n var selectedLi = ul.querySelector('.e-selected');\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains('e-focused')) {\n li = ul.children[i];\n liIdx = i;\n li.classList.remove('e-focused');\n keyCode === 40 ? liIdx++ : liIdx--;\n if (liIdx === (keyCode === 40 ? ul.childElementCount : -1)) {\n liIdx = defaultIdx;\n }\n }\n }\n li = ul.children[liIdx];\n liIdx = isValidLI(ul, li, liIdx, keyCode);\n if (liIdx !== -1) {\n addClass([ul.children[liIdx]], 'e-focused');\n ul.children[liIdx].focus();\n }\n}\nfunction isValidLI(ul, li, index, keyCode, count) {\n if (count === void 0) { count = 0; }\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n if (index === (keyCode === 40 ? ul.childElementCount - 1 : 0)) {\n index = keyCode === 40 ? 0 : ul.childElementCount - 1;\n }\n else {\n keyCode === 40 ? index++ : index--;\n }\n }\n li = ul.children[index];\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n count++;\n if (count === ul.childElementCount) {\n return index = -1;\n }\n index = isValidLI(ul, li, index, keyCode, count);\n }\n return index;\n}\n/** @hidden */\nexport function setBlankIconStyle(popup) {\n var blankIconList = [].slice.call(popup.getElementsByClassName('e-blank-icon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = popup.querySelector('.e-item:not(.e-blank-icon):not(.e-separator)');\n if (iconLi.classList.contains('e-url')) {\n iconLi = iconLi.querySelector('.e-menu-url');\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n var cssProp;\n var enableRtl = popup.classList.contains('e-rtl');\n if (enableRtl) {\n cssProp = { padding: 'paddingRight', margin: 'marginLeft' };\n }\n else {\n cssProp = { padding: 'paddingLeft', margin: 'marginRight' };\n }\n // tslint:disable\n var size = parseInt(getComputedStyle(icon).fontSize, 10) + parseInt((enableRtl ? getComputedStyle(icon)[cssProp.margin] : getComputedStyle(icon)[cssProp.margin]), 10)\n + parseInt(getComputedStyle(iconLi).paddingLeft, 10) + \"px\";\n blankIconList.forEach(function (li) {\n if (li.classList.contains('e-url')) {\n li.querySelector('.e-menu-url').style[cssProp.padding] = size;\n }\n else {\n li.style[cssProp.padding] = size;\n }\n });\n // tslint:enable\n}\n/**\n * Defines the items of Split Button/DropDownButton.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"separator\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"url\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n","import { addClass, createElement as internalCreateElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\n/**\n * Initialize ButtonGroup CSS component with specified properties.\n * ```html\n *
\n * \n * \n * \n *
\n * ```\n * ```typescript\n * createButtonGroup('#buttongroup', {\n * cssClass: 'e-outline',\n * buttons: [\n * { content: 'Day' },\n * { content: 'Week' },\n * { content: 'Work Week'}\n * ]\n * });\n * ```\n * @param {string} selector\n * @param {CreateButtonGroupModel} options\n * @returns HTMLElement\n */\nexport function createButtonGroup(selector, options, createElement) {\n if (options === void 0) { options = {}; }\n var child;\n var btnElem;\n var nextChild;\n var btnModel;\n if (isNullOrUndefined(createElement)) {\n createElement = internalCreateElement;\n }\n var wrapper = document.querySelector(selector);\n addClass([wrapper], ['e-btn-group', 'e-css']);\n wrapper.setAttribute('role', 'group');\n var childs = wrapper.children;\n options.buttons = options.buttons || [];\n for (var i = 0, j = 0; j < childs.length; i++, j++) {\n child = childs[j];\n btnModel = options.buttons[i];\n if (btnModel !== null) {\n if (child.tagName === 'BUTTON') {\n btnElem = child;\n }\n else {\n btnElem = createElement('label');\n nextChild = childs[j + 1];\n if (nextChild) {\n wrapper.insertBefore(btnElem, nextChild);\n }\n else {\n wrapper.appendChild(btnElem);\n }\n if (child.id) {\n btnElem.setAttribute('for', child.id);\n }\n if (btnModel && btnModel.disabled) {\n child.disabled = true;\n }\n j++;\n }\n if (options.cssClass && btnModel && !btnModel.cssClass) {\n btnModel.cssClass = options.cssClass;\n }\n new Button(btnModel || {}, btnElem);\n }\n }\n return wrapper;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Collection, Event, NotifyPropertyChanges, detach, Property, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, getUniqueID, rippleEffect } from '@syncfusion/ej2-base';\nimport { attributes, Component, closest, select, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { classList, removeClass } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { upDownKeyHandler } from './../common/common';\nimport { getModel, Item, setBlankIconStyle } from './../common/common';\nvar classNames = {\n DISABLED: 'e-disabled',\n FOCUS: 'e-focused',\n ICON: 'e-menu-icon',\n ITEM: 'e-item',\n POPUP: 'e-dropdown-popup',\n RTL: 'e-rtl',\n SEPARATOR: 'e-separator',\n VERTICAL: 'e-vertical'\n};\n/**\n * DropDownButton component is used to toggle contextual overlays for displaying list of action items.\n * It can contain both text and images.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DropDownButton = /** @class */ (function (_super) {\n __extends(DropDownButton, _super);\n /**\n * Constructor for creating the widget\n * @param {DropDownButtonModel} options?\n * @param {string|HTMLButtonElement} element?\n */\n function DropDownButton(options, element) {\n return _super.call(this, options, element) || this;\n }\n DropDownButton.prototype.preRender = function () {\n /** */\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @returns string\n */\n DropDownButton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n * @returns void\n */\n DropDownButton.prototype.toggle = function () {\n this.canOpen() ? this.openPopUp() : this.closePopup();\n };\n /**\n * Initialize the Component rendering\n * @returns void\n * @private\n */\n DropDownButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n DropDownButton.prototype.addItems = function (items, text) {\n var newItem;\n var idx = this.items.length;\n for (var j = 0, len = this.items.length; j < len; j++) {\n if (text === this.items[j].text) {\n idx = j;\n break;\n }\n }\n for (var i = items.length - 1; i >= 0; i--) {\n // tslint:disable-next-line\n newItem = new Item(this, 'items', items[i], true);\n this.items.splice(idx, 0, newItem);\n }\n if (!this.canOpen()) {\n this.createItems();\n }\n };\n /**\n * Removes the items from the menu.\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n DropDownButton.prototype.removeItems = function (items, isUniqueId) {\n var refresh = false;\n for (var i = 0, len = items.length; i < len; i++) {\n for (var j = 0, len_1 = this.items.length; j < len_1; j++) {\n if (items[i] === (isUniqueId ? this.items[j].id : this.items[j].text)) {\n this.items.splice(j, 1);\n refresh = true;\n break;\n }\n }\n }\n if (refresh && this.getULElement()) {\n this.createItems();\n }\n };\n DropDownButton.prototype.createPopup = function () {\n var _a;\n var div = this.createElement('div', {\n className: classNames.POPUP,\n id: this.element.id + '-popup'\n });\n document.body.appendChild(div);\n this.dropDown = new Popup(div, {\n relateTo: this.element,\n collision: { X: 'fit', Y: 'flip' },\n position: { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n content: this.target ? this.getTargetElement() : '',\n enableRtl: this.enableRtl\n });\n if (this.dropDown.element.style.position === 'fixed') {\n this.dropDown.refreshPosition(this.element);\n }\n this.dropDown.hide();\n attributes(this.element, (_a = {},\n _a['aria-haspopup'] = this.items.length || this.target ? 'true' : 'false',\n _a['aria-expanded'] = 'false',\n _a['aria-owns'] = this.getPopUpElement().id,\n _a['type'] = 'button',\n _a['aria-label'] = this.element.textContent + ' dropdownbutton',\n _a));\n if (this.cssClass) {\n addClass([div], this.cssClass.split(' '));\n }\n };\n DropDownButton.prototype.getTargetElement = function () {\n return typeof (this.target) === 'string' ? select(this.target) : this.target;\n };\n DropDownButton.prototype.createItems = function (appendItems) {\n var items = this.items;\n var showIcon = this.hasIcon(this.items, 'iconCss');\n var span;\n var item;\n var li;\n var eventArgs;\n var ul = this.getULElement();\n if (ul) {\n ul.innerHTML = '';\n }\n else {\n ul = this.createElement('ul', {\n attrs: { 'role': 'menu', 'tabindex': '0' }\n });\n }\n for (var i = 0; i < items.length; i++) {\n item = items[i];\n var tempItem = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(item.text) : item.text;\n li = this.createElement('li', {\n innerHTML: item.url ? '' : tempItem,\n className: item.separator ? classNames.ITEM + ' ' + classNames.SEPARATOR : classNames.ITEM,\n attrs: { 'role': 'menuItem', 'tabindex': '-1' },\n id: item.id ? item.id : getUniqueID('e-' + this.getModuleName() + '-item')\n });\n if (item.url) {\n li.appendChild(this.createAnchor(item));\n li.classList.add('e-url');\n }\n if (item.iconCss) {\n span = this.createElement('span', { className: classNames.ICON + ' ' + item.iconCss });\n (item.url) ? li.childNodes[0].appendChild(span) : li.insertBefore(span, li.childNodes[0]);\n }\n else {\n if (showIcon && !item.separator) {\n li.classList.add('e-blank-icon');\n }\n }\n if (item.disabled) {\n li.classList.add('e-disabled');\n }\n eventArgs = { item: item, element: li };\n this.trigger('beforeItemRender', eventArgs);\n ul.appendChild(li);\n }\n if (appendItems) {\n this.getPopUpElement().appendChild(ul);\n }\n if (showIcon) {\n setBlankIconStyle(this.getPopUpElement());\n }\n };\n DropDownButton.prototype.hasIcon = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][field]) {\n return true;\n }\n }\n return false;\n };\n DropDownButton.prototype.createAnchor = function (item) {\n var tempItem = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(item.text) : item.text;\n return this.createElement('a', { className: 'e-menu-text e-menu-url', innerHTML: tempItem, attrs: { 'href': item.url } });\n };\n DropDownButton.prototype.initialize = function () {\n this.button = new Button({\n iconCss: this.iconCss, iconPosition: this.iconPosition, cssClass: this.cssClass, content: this.content,\n disabled: this.disabled, enableRtl: this.enableRtl, enablePersistence: this.enablePersistence\n });\n this.button.createElement = this.createElement;\n this.button.appendTo(this.element);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.appendArrowSpan();\n this.createPopup();\n this.setActiveElem([this.element]);\n };\n DropDownButton.prototype.appendArrowSpan = function () {\n this.element.appendChild(this.createElement('span', {\n className: 'e-btn-icon e-icons ' + 'e-icon-' + (this.cssClass.indexOf(classNames.VERTICAL) > -1\n ? 'bottom' : 'right') + ' e-caret'\n }));\n };\n DropDownButton.prototype.setActiveElem = function (elem) {\n this.activeElem = elem;\n };\n /**\n * Get component name.\n * @returns string\n * @private\n */\n DropDownButton.prototype.getModuleName = function () {\n return 'dropdown-btn';\n };\n DropDownButton.prototype.canOpen = function () {\n return this.getPopUpElement().classList.contains('e-popup-close');\n };\n /**\n * Destroys the widget.\n * @returns void\n */\n DropDownButton.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'dropdown-btn') {\n var attrList = void 0;\n var classList_1;\n if (this.element.querySelector('span.e-caret')) {\n detach(this.element.querySelector('span.e-caret'));\n }\n if (this.cssClass) {\n classList_1 = this.cssClass.split(' ');\n }\n this.button.destroy();\n if (classList_1) {\n removeClass([this.element], classList_1);\n }\n removeClass(this.activeElem, ['e-active']);\n attrList = this.element.getAttribute('class') ? ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type']\n : ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type', 'class'];\n attrList.forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.dropDown.destroy();\n var popupEle = document.getElementById(this.getPopUpElement().id);\n if (popupEle) {\n removeClass([popupEle], ['e-popup-open', 'e-popup-close']);\n detach(popupEle);\n }\n if (!this.disabled) {\n this.unWireEvents();\n }\n }\n };\n DropDownButton.prototype.getPopUpElement = function () {\n return this.dropDown.element;\n };\n DropDownButton.prototype.getULElement = function () {\n return this.getPopUpElement().children[0];\n };\n DropDownButton.prototype.wireEvents = function () {\n var popupElement = this.getPopUpElement();\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(popupElement, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);\n EventHandler.add(popupElement, 'keydown', this.keyBoardHandler, this);\n this.rippleFn = rippleEffect(popupElement, { selector: '.' + classNames.ITEM });\n };\n /** @hidden */\n DropDownButton.prototype.keyBoardHandler = function (e) {\n if (e.target === this.element && (e.keyCode === 9 || (!e.altKey && e.keyCode === 40) || e.keyCode === 38)) {\n return;\n }\n switch (e.keyCode) {\n case 38:\n case 40:\n if (e.altKey && (e.keyCode === 38 || e.keyCode === 40)) {\n this.keyEventHandler(e);\n }\n else {\n this.upDownKeyHandler(e);\n }\n break;\n case 9:\n case 13:\n case 27:\n case 32:\n this.keyEventHandler(e);\n break;\n }\n };\n DropDownButton.prototype.upDownKeyHandler = function (e) {\n if (this.target && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n e.preventDefault();\n upDownKeyHandler(this.getULElement(), e.keyCode);\n };\n DropDownButton.prototype.keyEventHandler = function (e) {\n if (this.target && (e.keyCode === 13 || e.keyCode === 9)) {\n return;\n }\n if (e.keyCode !== 9) {\n e.preventDefault();\n }\n if (e.keyCode === 27 || e.keyCode === 38 || e.keyCode === 9) {\n if (!this.canOpen()) {\n this.closePopup(e, this.element);\n }\n }\n else {\n this.clickHandler(e);\n }\n };\n DropDownButton.prototype.getLI = function (elem) {\n return elem.tagName === 'LI' ? elem : closest(elem, 'li');\n };\n DropDownButton.prototype.mousedownHandler = function (e) {\n var trgt = e.target;\n if (!this.canOpen() && !(closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')\n || closest(trgt, '[id=\"' + this.element.id + '\"]'))) {\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.clickHandler = function (e) {\n var trgt = e.target;\n var canOpen = this.canOpen();\n if (closest(trgt, '[id=\"' + this.element.id + '\"]')) {\n if (canOpen) {\n this.openPopUp(e);\n }\n else {\n this.closePopup(e, this.activeElem[0]);\n }\n }\n else {\n if (closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')) {\n var eventArgs = void 0;\n var liIdx = void 0;\n var item = void 0;\n var li = this.getLI(trgt);\n if (li) {\n liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n item = this.items[liIdx];\n if (item) {\n eventArgs = { element: li, item: item };\n this.trigger('select', eventArgs);\n }\n this.closePopup(e, this.activeElem[0]);\n }\n }\n }\n };\n DropDownButton.prototype.openPopUp = function (e) {\n var _this = this;\n if (e === void 0) { e = null; }\n if (!this.target) {\n this.createItems(true);\n }\n var ul = this.getULElement();\n var beforeOpenArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeOpen', beforeOpenArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var ul_1 = _this.getULElement();\n _this.dropDown.show(null, _this.element);\n addClass([_this.element], 'e-active');\n _this.element.setAttribute('aria-expanded', 'true');\n ul_1.focus();\n var openArgs = { element: ul_1, items: _this.items };\n _this.trigger('open', openArgs);\n }\n });\n };\n DropDownButton.prototype.closePopup = function (e, focusEle) {\n var _this = this;\n if (e === void 0) { e = null; }\n var ul = this.getULElement();\n var beforeCloseArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var ul_2 = _this.getULElement();\n var selectedLi = ul_2.querySelector('.e-selected');\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n _this.dropDown.hide();\n removeClass(_this.activeElem, 'e-active');\n _this.element.setAttribute('aria-expanded', 'false');\n if (focusEle) {\n focusEle.focus();\n }\n var closeArgs = { element: ul_2, items: _this.items };\n _this.trigger('close', closeArgs);\n if (!_this.target && ul_2) {\n detach(ul_2);\n }\n }\n });\n };\n DropDownButton.prototype.unWireEvents = function () {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n this.rippleFn();\n };\n /**\n * Called internally if any of the property value changed.\n * @param {DropDownButtonModel} newProp\n * @param {DropDownButtonModel} oldProp\n * @returns void\n * @private\n */\n DropDownButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var btnModel = ['content', 'cssClass', 'iconCss', 'iconPosition', 'disabled', 'enableRtl'];\n this.button.setProperties(getModel(newProp, btnModel));\n this.dropDown.setProperties(getModel(newProp, ['enableRtl']));\n var popupElement = this.getPopUpElement();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.unWireEvents();\n if (!this.canOpen()) {\n this.closePopup();\n }\n }\n else {\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (newProp.cssClass.indexOf(classNames.VERTICAL) > -1) {\n var arrowSpan = this.element.querySelector('span.e-caret');\n classList(arrowSpan, ['e-icon-bottom'], ['e-icon-right']);\n }\n if (oldProp.cssClass) {\n removeClass([popupElement], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([popupElement], newProp.cssClass.split(' '));\n }\n break;\n case 'target':\n this.dropDown.content = this.getTargetElement();\n this.dropDown.dataBind();\n break;\n case 'items':\n if (this.getULElement()) {\n this.createItems();\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to DropDownButton\n * its native method\n * @public\n */\n DropDownButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property('Left')\n ], DropDownButton.prototype, \"iconPosition\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Collection([], Item)\n ], DropDownButton.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"created\", void 0);\n DropDownButton = __decorate([\n NotifyPropertyChanges\n ], DropDownButton);\n return DropDownButton;\n}(Component));\nexport { DropDownButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/// \nimport { Event, remove, addClass, removeClass, detach, getValue, setValue } from '@syncfusion/ej2-base';\nimport { EventHandler, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { attributes, getUniqueID, getInstance, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getModel, Item } from './../common/common';\nimport { DropDownButton } from '../drop-down-button/drop-down-button';\nvar RTL = 'e-rtl';\nvar TAGNAME = 'EJS-SPLITBUTTON';\n/**\n * SplitButton component has primary and secondary button. Primary button is used to select\n * default action and secondary button is used to toggle contextual overlays for displaying list of\n * action items. It can contain both text and images.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar SplitButton = /** @class */ (function (_super) {\n __extends(SplitButton, _super);\n /**\n * Constructor for creating the widget\n * @param {SplitButtonModel} options?\n * @param {string|HTMLButtonElement} element?\n */\n function SplitButton(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize Angular support.\n * @private\n */\n SplitButton.prototype.preRender = function () {\n var ele = this.element;\n if (ele.tagName === TAGNAME) {\n var ejInstance = getValue('ej2_instances', ele);\n var btn = this.createElement('button', { attrs: { 'type': 'button' } });\n var wrapper = this.createElement(TAGNAME, { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n btn.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = btn;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.wrapper = wrapper;\n this.element = ele;\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the Component rendering\n * @returns void\n * @private\n */\n SplitButton.prototype.render = function () {\n this.initWrapper();\n this.createPrimaryButton();\n this.renderControl();\n };\n SplitButton.prototype.renderControl = function () {\n this.createSecondaryButton();\n this.setActiveElem([this.element, this.secondaryBtnObj.element]);\n this.setAria();\n this.wireEvents();\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n SplitButton.prototype.addItems = function (items, text) {\n _super.prototype.addItems.call(this, items, text);\n this.secondaryBtnObj.items = this.items;\n };\n /**\n * Removes the items from the menu.\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n SplitButton.prototype.removeItems = function (items, isUniqueId) {\n _super.prototype.removeItems.call(this, items, isUniqueId);\n this.secondaryBtnObj.items = this.items;\n };\n SplitButton.prototype.initWrapper = function () {\n if (!this.wrapper) {\n this.wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n this.element.parentNode.insertBefore(this.wrapper, this.element);\n }\n this.element.classList.remove('e-' + this.getModuleName());\n if (this.enableRtl) {\n this.wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([this.wrapper], this.cssClass.split(' '));\n }\n };\n SplitButton.prototype.createPrimaryButton = function () {\n var btnModel = {\n cssClass: this.cssClass,\n enableRtl: this.enableRtl,\n iconCss: this.iconCss,\n iconPosition: this.iconPosition,\n content: this.content,\n disabled: this.disabled\n };\n this.primaryBtnObj = new Button(btnModel);\n this.primaryBtnObj.createElement = this.createElement;\n this.primaryBtnObj.appendTo(this.element);\n this.element.classList.add('e-' + this.getModuleName());\n this.element.type = 'button';\n this.wrapper.appendChild(this.element);\n };\n SplitButton.prototype.createSecondaryButton = function () {\n var _this = this;\n var dropDownBtnModel;\n var btnElem;\n btnElem = this.createElement('button', {\n className: 'e-icon-btn',\n attrs: { 'tabindex': '-1' },\n id: this.element.id + '_dropdownbtn'\n });\n this.wrapper.appendChild(btnElem);\n dropDownBtnModel = {\n cssClass: this.cssClass,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n items: this.items,\n target: this.target,\n };\n dropDownBtnModel.beforeItemRender = function (args) {\n _this.trigger('beforeItemRender', args);\n };\n dropDownBtnModel.open = function (args) {\n _this.trigger('open', args);\n };\n dropDownBtnModel.close = function (args) {\n _this.trigger('close', args);\n };\n dropDownBtnModel.select = function (args) {\n _this.trigger('select', args);\n };\n dropDownBtnModel.beforeOpen = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger('beforeOpen', args, function (observedArgs) {\n callBackPromise.resolve(observedArgs);\n });\n return callBackPromise;\n };\n dropDownBtnModel.beforeClose = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger('beforeClose', args, function (observedArgs) {\n callBackPromise.resolve(observedArgs);\n });\n return callBackPromise;\n };\n this.secondaryBtnObj = new DropDownButton(dropDownBtnModel);\n this.secondaryBtnObj.createElement = this.createElement;\n this.secondaryBtnObj.appendTo(btnElem);\n this.secondaryBtnObj.dropDown.relateTo = this.wrapper;\n this.dropDown = this.secondaryBtnObj.dropDown;\n this.secondaryBtnObj.activeElem = [this.element, this.secondaryBtnObj.element];\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.secondaryBtnObj.keyBoardHandler);\n this.secondaryBtnObj.element.querySelector('.e-btn-icon').classList.remove('e-icon-right');\n };\n SplitButton.prototype.setAria = function () {\n attributes(this.element, {\n 'aria-expanded': 'false', 'aria-haspopup': 'true',\n 'aria-label': this.element.textContent + ' splitbutton', 'aria-owns': this.secondaryBtnObj.dropDown.element.id\n });\n };\n /**\n * Get component name.\n * @returns string\n * @private\n */\n SplitButton.prototype.getModuleName = function () {\n return 'split-btn';\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n * @returns void\n */\n SplitButton.prototype.toggle = function () {\n this.secondaryBtnObj.toggle();\n };\n SplitButton.prototype.destroy = function () {\n var _this = this;\n var classList = [RTL];\n var element = document.getElementById(this.element.id);\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n if (element && element.parentElement === this.wrapper) {\n if (this.wrapper.tagName === TAGNAME) {\n this.wrapper.innerHTML = '';\n removeClass([this.wrapper], ['e-rtl', 'e-' + this.getModuleName() + '-wrapper']);\n removeClass([this.wrapper], this.cssClass.split(' '));\n }\n else {\n removeClass([this.element], classList);\n ['aria-label', 'aria-haspopup', 'aria-expanded',\n 'aria-owns', 'type'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.wrapper.parentNode.insertBefore(this.element, this.wrapper);\n remove(this.wrapper);\n }\n this.unWireEvents();\n }\n this.primaryBtnObj.destroy();\n this.secondaryBtnObj.destroy();\n _super.prototype.destroy.call(this);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n };\n SplitButton.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.primaryBtnClickHandler, this);\n EventHandler.add(this.getPopUpElement(), 'keydown', this.keyBoardHandler, this);\n new KeyboardEvents(this.element, {\n keyAction: this.btnKeyBoardHandler.bind(this),\n keyConfigs: {\n altdownarrow: 'alt+downarrow'\n }\n });\n };\n SplitButton.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.primaryBtnClickHandler);\n getInstance(this.element, KeyboardEvents).destroy();\n };\n SplitButton.prototype.primaryBtnClickHandler = function () {\n this.trigger('click', { element: this.element });\n };\n SplitButton.prototype.btnKeyBoardHandler = function (e) {\n switch (e.action) {\n case 'altdownarrow':\n this.clickHandler(e);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n * @param {SplitButtonModel} newProp\n * @param {SplitButtonModel} oldProp\n * @returns void\n */\n SplitButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var model = ['content', 'iconCss', 'iconPosition', 'cssClass', 'disabled', 'enableRtl'];\n this.primaryBtnObj.setProperties(getModel(newProp, model));\n model = ['beforeOpen', 'beforeItemRender', 'select', 'open',\n 'close', 'cssClass', 'disabled', 'enableRtl'];\n if (Object.keys(newProp).indexOf('items') > -1) {\n this.secondaryBtnObj.items = newProp.items;\n this.secondaryBtnObj.dataBind();\n }\n this.secondaryBtnObj.setProperties(getModel(newProp, model));\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.wrapper], oldProp.cssClass.split(' '));\n }\n addClass([this.wrapper], newProp.cssClass.split(' '));\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n addClass([this.wrapper], RTL);\n }\n else {\n removeClass([this.wrapper], RTL);\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to SplitButton\n * its native method\n * @public\n */\n SplitButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('')\n ], SplitButton.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], SplitButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], SplitButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], SplitButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property('Left')\n ], SplitButton.prototype, \"iconPosition\", void 0);\n __decorate([\n Collection([], Item)\n ], SplitButton.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], SplitButton.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"created\", void 0);\n SplitButton = __decorate([\n NotifyPropertyChanges\n ], SplitButton);\n return SplitButton;\n}(DropDownButton));\nexport { SplitButton };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n }\n return Deferred;\n}());\nexport { Deferred };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { EventHandler, Property, NotifyPropertyChanges, Animation, attributes } from '@syncfusion/ej2-base';\nimport { Event, remove, removeClass } from '@syncfusion/ej2-base';\nimport { Complex, ChildProperty, isBlazor, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nvar HIDESPINNER = 'e-hide-spinner';\nvar PROGRESS = 'e-progress';\nvar PROGRESSACTIVE = 'e-progress-active';\nvar CONTENTCLS = 'e-btn-content';\n/**\n * Defines the spin settings.\n */\nvar SpinSettings = /** @class */ (function (_super) {\n __extends(SpinSettings, _super);\n function SpinSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], SpinSettings.prototype, \"template\", void 0);\n __decorate([\n Property(16)\n ], SpinSettings.prototype, \"width\", void 0);\n __decorate([\n Property('Left')\n ], SpinSettings.prototype, \"position\", void 0);\n return SpinSettings;\n}(ChildProperty));\nexport { SpinSettings };\n/**\n * Defines the animation settings.\n */\nvar AnimationSettings = /** @class */ (function (_super) {\n __extends(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('None')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property('ease')\n ], AnimationSettings.prototype, \"easing\", void 0);\n return AnimationSettings;\n}(ChildProperty));\nexport { AnimationSettings };\n/**\n * The ProgressButton visualizes the progression of an operation to indicate the user\n * that a process is happening in the background with visual representation.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar ProgressButton = /** @class */ (function (_super) {\n __extends(ProgressButton, _super);\n /**\n * Constructor for creating the widget\n * @param {ProgressButtonModel} options?\n * @param {string|HTMLButtonElement} element?\n */\n function ProgressButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.step = 1;\n return _this;\n }\n ProgressButton.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n /**\n * Initialize the Component rendering\n * @returns void\n * @private\n */\n ProgressButton.prototype.render = function () {\n if (isBlazor()) {\n this.isServerRendered = false;\n }\n _super.prototype.render.call(this);\n this.init();\n this.wireEvents();\n this.setAria();\n this.renderComplete();\n };\n /**\n * Starts the button progress at the specified percent.\n * @param percent Starts the button progress at this percent.\n * @returns void\n */\n ProgressButton.prototype.start = function (percent) {\n this.isPaused = false;\n this.startProgress(percent ? percent : this.percent, this.progressTime);\n };\n /**\n * Stops the button progress.\n * @returns void\n */\n ProgressButton.prototype.stop = function () {\n this.isPaused = true;\n cancelAnimationFrame(this.timerId);\n };\n /**\n * Complete the button progress.\n * @returns void\n */\n ProgressButton.prototype.progressComplete = function () {\n this.isPaused = false;\n this.finishProgress();\n };\n /**\n * Get component name.\n * @returns string\n * @private\n */\n ProgressButton.prototype.getModuleName = function () {\n return 'progress-btn';\n };\n /**\n * Destroys the widget.\n * @returns void\n */\n ProgressButton.prototype.destroy = function () {\n var _this = this;\n var classList = [HIDESPINNER, PROGRESSACTIVE, 'e-round-corner', 'e-' + _super.prototype.getModuleName.call(this),\n 'e-spin-' + this.spinSettings.position.toLowerCase()];\n var css;\n _super.prototype.destroy.call(this);\n this.unWireEvents();\n this.element.innerHTML = '';\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n removeClass([this.element], classList);\n css = this.element.getAttribute('class') ? ['aria-label', 'aria-valuemin', 'aria-valuemax', 'aria-valuenow']\n : ['aria-label', 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'class'];\n css.forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n };\n ProgressButton.prototype.init = function () {\n this.element.classList.add('e-' + _super.prototype.getModuleName.call(this));\n this.setContent();\n this.createSpinner();\n if (this.enableProgress) {\n this.createProgress();\n }\n };\n ProgressButton.prototype.createSpinner = function () {\n var spinner = this.createElement('span', { className: 'e-spinner' });\n this.setSpinPosition(spinner);\n createSpinner({\n target: spinner, width: this.spinSettings.width || 16, template: this.spinSettings.template\n }, this.createElement);\n };\n ProgressButton.prototype.getSpinner = function () {\n return this.element.getElementsByClassName('e-spinner')[0];\n };\n ProgressButton.prototype.getProgress = function () {\n return this.element.getElementsByClassName(PROGRESS)[0];\n };\n ProgressButton.prototype.setSpinPosition = function (ele) {\n var position = this.spinSettings.position || 'Left';\n if (position === 'Left' || position === 'Top') {\n this.element.insertBefore(ele, this.element.getElementsByClassName(CONTENTCLS)[0]);\n }\n else {\n this.element.appendChild(ele);\n }\n this.element.classList.add('e-spin-' + position.toLowerCase());\n };\n ProgressButton.prototype.createProgress = function () {\n this.element.appendChild(this.createElement('span', { className: PROGRESS }));\n };\n ProgressButton.prototype.setContent = function () {\n var cont;\n if (isBlazor()) {\n cont = this.content;\n if (this.enableHtmlSanitizer) {\n cont = SanitizeHtmlHelper.sanitize(this.content);\n }\n this.setContentIcon(cont);\n }\n else {\n cont = this.element.innerHTML;\n if (this.enableHtmlSanitizer) {\n cont = SanitizeHtmlHelper.sanitize(this.element.innerHTML);\n }\n this.element.innerHTML = '';\n this.element.appendChild(this.createElement('span', { className: CONTENTCLS, innerHTML: cont }));\n }\n };\n ProgressButton.prototype.setContentIcon = function (content) {\n var contElem = this.createElement('span', { className: CONTENTCLS, innerHTML: content });\n if (this.iconCss) {\n var span = this.createElement('span', { className: 'e-btn-icon ' + this.iconCss });\n if (!this.element.textContent.trim()) {\n this.element.classList.add('e-icon-btn');\n }\n else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n var node = contElem.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n contElem.insertBefore(span, node);\n }\n else {\n contElem.appendChild(span);\n }\n }\n this.element.appendChild(contElem);\n };\n ProgressButton.prototype.clickHandler = function () {\n if (this.element.classList.contains(PROGRESSACTIVE)) {\n return;\n }\n this.startProgress();\n };\n ProgressButton.prototype.startProgress = function (percent, progressTime) {\n var clsList = this.element.classList;\n var isVertical = clsList.contains('e-vertical');\n clsList.add(PROGRESSACTIVE);\n if (!(clsList.contains(HIDESPINNER))) {\n showSpinner(this.element);\n }\n this.startAnimate(Date.now(), progressTime ? progressTime : 0, progressTime ? Date.now() - (this.duration * 1 / 100) : Date.now(), percent ? percent : 0, 0, this.step, 0, isVertical);\n this.startContAnimate();\n };\n ProgressButton.prototype.startAnimate = function (timestamp, progressTime, prevTime, percent, prevPercent, step, prevProgressTime, isVertical) {\n var _this = this;\n try {\n var args = void 0;\n var timeDiff = timestamp - prevTime;\n var stepTime = this.duration * step / 100;\n var timeDiffBuffer_1 = timeDiff ? (timeDiff < stepTime ? timeDiff - stepTime : timeDiff % stepTime) : 0;\n this.progressTime = progressTime = progressTime + timeDiff - timeDiffBuffer_1;\n prevTime = timestamp - timeDiffBuffer_1;\n percent = percent + (timeDiff - timeDiffBuffer_1) / this.duration * 100;\n prevPercent = ((progressTime - prevProgressTime) % stepTime === 0 || percent === 100) ? percent : prevPercent;\n args = { percent: prevPercent, currentDuration: progressTime, step: step };\n this.eIsVertical = isVertical;\n if (percent === 0) {\n this.trigger('begin', args, function (observedArgs) {\n _this.successCallback(observedArgs, percent, prevPercent, progressTime, prevProgressTime, timeDiffBuffer_1, prevTime);\n });\n }\n else if (percent === 100 || progressTime === this.duration) {\n this.trigger('end', args, function (observedArgs) {\n _this.successCallback(observedArgs, percent, prevPercent, progressTime, prevProgressTime, timeDiffBuffer_1, prevTime);\n });\n }\n else {\n this.trigger('progress', args, function (observedArgs) {\n _this.successCallback(observedArgs, percent, prevPercent, progressTime, prevProgressTime, timeDiffBuffer_1, prevTime);\n });\n }\n }\n catch (e) {\n cancelAnimationFrame(this.timerId);\n this.trigger('fail', e);\n }\n };\n ProgressButton.prototype.successCallback = function (args, perc, pPerc, prgTim, pPrgTim, timDif, pTim) {\n var _this = this;\n var percent = perc;\n var prevPercent = pPerc;\n var timeDiffBuffer = timDif;\n var progressTime = prgTim;\n var prevProgressTime = pPrgTim;\n var prevTime = pTim;\n var isVertical = this.eIsVertical;\n if (percent !== args.percent && args.percent !== prevPercent) {\n percent = args.percent;\n }\n this.percent = percent;\n this.step = args.step;\n if ((progressTime - prevProgressTime) % (this.duration * args.step / 100) === 0 || percent === 100) {\n this.timerId = requestAnimationFrame(function () {\n if (_this.enableProgress) {\n _this.getProgress().style[isVertical ? 'height' : 'width'] = percent + '%';\n }\n _this.element.setAttribute('aria-valuenow', percent.toString());\n });\n prevPercent = percent;\n prevProgressTime = progressTime;\n }\n if (!this.isPaused) {\n if (progressTime < this.duration && percent < 100) {\n this.interval = window.setTimeout(function () {\n _this.startAnimate(Date.now(), progressTime, prevTime, percent, prevPercent, args.step, prevProgressTime, isVertical);\n // tslint:disable-next-line\n }, (this.duration / 100) - timeDiffBuffer);\n }\n else {\n this.interval = window.setTimeout(function () {\n _this.progressTime = _this.percent = 0;\n if (_this.enableProgress) {\n _this.getProgress().style[isVertical ? 'height' : 'width'] = '0%';\n }\n _this.element.setAttribute('aria-valuenow', '0');\n _this.hideSpin();\n // tslint:disable-next-line\n }, 100);\n }\n }\n };\n ProgressButton.prototype.startContAnimate = function () {\n var _this = this;\n var ele = this.element.getElementsByClassName(CONTENTCLS)[0];\n if (this.animationSettings.effect !== 'None') {\n (new Animation({})).animate(ele, {\n duration: this.animationSettings.duration,\n name: 'Progress' + this.animationSettings.effect,\n timingFunction: this.animationSettings.easing,\n begin: function () {\n if (_this.spinSettings.position === 'Center') {\n _this.setSpinnerSize();\n }\n },\n end: function () {\n ele.classList.add('e-animate-end');\n }\n });\n }\n else if (this.spinSettings.position === 'Center') {\n this.setSpinnerSize();\n }\n };\n ProgressButton.prototype.finishProgress = function () {\n var clsList = this.element.classList;\n var isVertical = clsList.contains('e-vertical');\n clsList.add(PROGRESSACTIVE);\n var args;\n var count = 100;\n for (var i = this.percent; i < count; i++) {\n i += 10;\n if (i > 100) {\n i = 100;\n }\n if (this.enableProgress) {\n this.getProgress().style[isVertical ? 'height' : 'width'] = (this.percent < 100) ? (i + '%') : '100%';\n }\n }\n this.element.setAttribute('aria-valuenow', '0');\n this.hideSpin();\n args = { step: this.step, currentDuration: this.progressTime, percent: 100 };\n clearTimeout(this.interval);\n this.trigger('end', args);\n this.progressTime = this.percent = 0;\n };\n ProgressButton.prototype.setSpinnerSize = function () {\n var ele = this.element.getElementsByClassName(CONTENTCLS)[0];\n var spinner = this.getSpinner();\n spinner.style.width = Math.max(spinner.offsetWidth, ele.offsetWidth) + 'px';\n spinner.style.height = Math.max(spinner.offsetHeight, ele.offsetHeight) + 'px';\n ele.classList.add('e-cont-animate');\n };\n ProgressButton.prototype.hideSpin = function () {\n var cont = this.element.getElementsByClassName(CONTENTCLS)[0];\n if (!(this.element.classList.contains(HIDESPINNER))) {\n hideSpinner(this.element);\n }\n this.element.classList.remove(PROGRESSACTIVE);\n if (this.animationSettings.effect !== 'None') {\n cont.classList.remove('e-animate-end');\n }\n if (this.spinSettings.position === 'Center') {\n var ele = this.getSpinner();\n cont.classList.remove('e-cont-animate');\n ele.style.width = 'auto';\n ele.style.height = 'auto';\n }\n };\n ProgressButton.prototype.setIconSpan = function () {\n var cont = this.element.getElementsByClassName(CONTENTCLS)[0];\n var iconSpan = this.element.getElementsByClassName('e-btn-icon')[0];\n if (cont.childNodes[0] && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n cont.insertBefore(iconSpan, cont.childNodes[0]);\n }\n else {\n cont.appendChild(iconSpan);\n }\n };\n ProgressButton.prototype.setAria = function () {\n attributes(this.element, {\n 'aria-label': this.element.textContent + ' progress', 'aria-valuemin': '0', 'aria-valuemax': '100', 'aria-valuenow': '0'\n });\n };\n ProgressButton.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n };\n ProgressButton.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n };\n /**\n * Called internally if any of the property value changed.\n * @param {ProgressButtonModel} newProp\n * @param {ProgressButtonModel} oldProp\n * @returns void\n * @private\n */\n ProgressButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var ele = this.element;\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (isBlazor()) {\n var btnElem = this.element.querySelector('.e-btn-content');\n if (this.iconCss) {\n if (this.iconPosition === 'Left' || this.iconPosition === 'Top') {\n btnElem.childNodes[1].textContent = this.content;\n }\n else {\n btnElem.childNodes[0].textContent = this.content;\n }\n }\n else {\n btnElem.textContent = this.content;\n }\n }\n else {\n this.setContent();\n this.createSpinner();\n if (this.enableProgress) {\n this.createProgress();\n }\n }\n ele.setAttribute('aria-label', ele.textContent + ' progress');\n break;\n case 'iconCss':\n if (!oldProp.iconCss) {\n this.setIconSpan();\n }\n break;\n case 'iconPosition':\n this.setIconSpan();\n break;\n case 'enableProgress':\n if (newProp.enableProgress) {\n this.createProgress();\n }\n else {\n remove(this.getProgress());\n }\n break;\n case 'spinSettings':\n if (newProp.spinSettings.position) {\n ele.classList.remove('e-spin-' + oldProp.spinSettings.position.toLowerCase());\n this.setSpinPosition(this.getSpinner());\n }\n if (newProp.spinSettings.template || newProp.spinSettings.width) {\n ele.removeChild(this.getSpinner());\n this.createSpinner();\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to ProgressButton\n * its native method\n * @public\n */\n ProgressButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property(false)\n ], ProgressButton.prototype, \"enableProgress\", void 0);\n __decorate([\n Property(2000)\n ], ProgressButton.prototype, \"duration\", void 0);\n __decorate([\n Property('Left')\n ], ProgressButton.prototype, \"iconPosition\", void 0);\n __decorate([\n Property('')\n ], ProgressButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], ProgressButton.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], ProgressButton.prototype, \"isPrimary\", void 0);\n __decorate([\n Property('')\n ], ProgressButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], ProgressButton.prototype, \"content\", void 0);\n __decorate([\n Property(false)\n ], ProgressButton.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], ProgressButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({}, SpinSettings)\n ], ProgressButton.prototype, \"spinSettings\", void 0);\n __decorate([\n Complex({}, AnimationSettings)\n ], ProgressButton.prototype, \"animationSettings\", void 0);\n __decorate([\n Event()\n ], ProgressButton.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], ProgressButton.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], ProgressButton.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], ProgressButton.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], ProgressButton.prototype, \"fail\", void 0);\n ProgressButton = __decorate([\n NotifyPropertyChanges\n ], ProgressButton);\n return ProgressButton;\n}(Button));\nexport { ProgressButton };\n"],"names":["getModel","props","model","obj","extend","_i","_a","Object","keys","length","prop","indexOf","deleteObject","upDownKeyHandler","ul","keyCode","defaultIdx","childElementCount","liIdx","selectedLi","querySelector","classList","remove","i","len","children","contains","isValidLI","addClass","focus","li","index","count","setBlankIconStyle","popup","blankIconList","slice","call","getElementsByClassName","iconLi","cssProp","icon","enableRtl","padding","margin","size","parseInt","getComputedStyle","fontSize","paddingLeft","forEach","style","createButtonGroup","selector","options","createElement","child","btnElem","nextChild","btnModel","isNullOrUndefined","internalCreateElement","wrapper","document","setAttribute","childs","buttons","j","tagName","insertBefore","appendChild","id","disabled","cssClass","Button","__extends","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","Item","_super","apply","Property","ChildProperty","classNames","DISABLED","FOCUS","ICON","ITEM","POPUP","RTL","SEPARATOR","VERTICAL","DropDownButton","element","preRender","getPersistData","addOnPersist","toggle","canOpen","openPopUp","closePopup","render","initialize","wireEvents","renderComplete","addItems","items","text","newItem","idx","splice","createItems","removeItems","isUniqueId","refresh","len_1","getULElement","createPopup","div","className","body","dropDown","Popup","relateTo","collision","X","Y","position","targetType","content","getTargetElement","refreshPosition","hide","attributes","getPopUpElement","textContent","split","select","appendItems","span","item","eventArgs","showIcon","hasIcon","innerHTML","attrs","role","tabindex","tempItem","SanitizeHtmlHelper","sanitize","url","separator","getUniqueID","getModuleName","createAnchor","add","iconCss","childNodes","trigger","field","href","button","iconPosition","enablePersistence","appendTo","appendArrowSpan","setActiveElem","elem","activeElem","destroy","_this","classList_1","detach","removeClass","getAttribute","removeAttribute","popupEle","getElementById","unWireEvents","popupElement","delegateMousedownHandler","mousedownHandler","bind","EventHandler","clickHandler","keyBoardHandler","rippleFn","rippleEffect","e","altKey","keyEventHandler","preventDefault","getLI","closest","trgt","beforeOpenArgs","event","cancel","observedArgs","ul_1","show","openArgs","focusEle","beforeCloseArgs","ul_2","closeArgs","onPropertyChanged","newProp","oldProp","setProperties","arrowSpan","dataBind","focusIn","Collection","Event","NotifyPropertyChanges","Component","TAGNAME","SplitButton","ele","ejInstance","getValue","btn","type","nodeName","nodeValue","parentNode","setValue","initWrapper","createPrimaryButton","renderControl","createSecondaryButton","secondaryBtnObj","setAria","primaryBtnObj","dropDownBtnModel","beforeItemRender","args","open","close","beforeOpen","callBackPromise","Deferred","resolve","beforeClose","aria-expanded","aria-haspopup","aria-label","aria-owns","concat","parentElement","primaryBtnClickHandler","KeyboardEvents","keyAction","btnKeyBoardHandler","keyConfigs","altdownarrow","getInstance","action","promise","Promise","reject","catch","then","CONTENTCLS","SpinSettings","AnimationSettings","ProgressButton","step","isBlazor","isServerRendered","init","start","percent","isPaused","startProgress","progressTime","stop","cancelAnimationFrame","timerId","progressComplete","finishProgress","spinSettings","toLowerCase","setContent","createSpinner","enableProgress","createProgress","spinner","setSpinPosition","width","template","getSpinner","getProgress","cont","enableHtmlSanitizer","setContentIcon","contElem","trim","node","clsList","isVertical","showSpinner","startAnimate","Date","now","duration","startContAnimate","timestamp","prevTime","prevPercent","prevProgressTime","timeDiff","stepTime","timeDiffBuffer_1","currentDuration","eIsVertical","successCallback","perc","pPerc","prgTim","pPrgTim","timDif","pTim","timeDiffBuffer","requestAnimationFrame","toString","interval","window","setTimeout","hideSpin","animationSettings","effect","Animation","animate","name","timingFunction","easing","begin","setSpinnerSize","end","clearTimeout","Math","max","offsetWidth","height","offsetHeight","hideSpinner","setIconSpan","iconSpan","aria-valuemin","aria-valuemax","aria-valuenow","removeChild","Complex"],"mappings":"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"}