UNPKG

smart-webcomponents-angular

Version:

[![Price](https://img.shields.io/badge/price-COMMERCIAL-0098f7.svg)](https://jqwidgets.com/license/)

6 lines (4 loc) 38.5 kB
/* Smart UI v25.0.4 (2025-11-28) Copyright (c) 2011-2024 jQWidgets. License: https://htmlelements.com/license/ */ // Smart.Utilities.Assign("Grid.Menu",class{_openColumnChooserMenu(e){const t=this;if(e||(e=t._commandColumn),!e||t.menu&&t.menu.column===e&&e.element.hasAttribute("aria-controls"))return void t.closeMenu();t.menu||(t.menu=document.createElement("div"),t.menu.classList.add("smart-grid-column-menu"),t.menu.setAttribute("theme",t.getAttribute("theme")),t.menu.id=t.id+"_"+t.tagName.toLowerCase()+"_menu_"+Math.floor(65536*(1+Math.random())).toString(16).substring(1)),t.appearance.allowColumnMenuAnimation?t.menu.classList.add("smart-animate"):t.menu.classList.remove("smart-animate"),t._createColumnChooserMenuItems(e),t.menu.style.height=t.columnMenu.height?t.columnMenu.height+"px":"auto",t.menu.column&&t.menu.column!==e&&(t.menu.column.setProperty("menu",null),t.menu.column=null),t.isInShadowDOM?t.getRootNode().appendChild(t.menu):document.body.appendChild(t.menu),e.setProperty("menu",t.menu);const n=e.element.getBoundingClientRect();t.menu.column=e,t._filterContainer&&("none"!==e.filterMenuMode&&t.filtering.filterMenu.visible&&Smart.FilterPanel?t._filterContainer.classList.remove("smart-hidden"):t._filterContainer.classList.add("smart-hidden"));let l=n.right-n.width+window.pageXOffset,i=n.bottom+window.pageYOffset;l+t.menu.offsetWidth>window.innerWidth&&(l=n.right+window.pageXOffset-t.menu.offsetWidth,t.menu.classList.add("smart-open-right"),l+t.menu.offsetWidth>window.innerWidth&&(l=window.innerWidth-t.menu.offsetWidth)),t.menu.style.left=l+"px",t.menu.style.top=i+"px",t.menu.classList.remove("smart-hidden"),t.menu.classList.add("open")}_openColumnFilterMenu(e){const t=this;if(!e||t.filterRowMenu&&t.filterRowMenu.column===e&&e.element.hasAttribute("aria-controls"))return void t.closeMenu();t._closeMenu(t.filterRowExcelMenu),t.filterRowMenu||(t.filterRowMenu=document.createElement("div"),t.filterRowMenu.classList.add("smart-grid-column-menu"),t.filterRowMenu.setAttribute("theme",t.getAttribute("theme")),t.filterRowMenu.id=t.id+"_"+t.tagName.toLowerCase()+"_menu_"+Math.floor(65536*(1+Math.random())).toString(16).substring(1)),t.appearance.allowColumnMenuAnimation?t.filterRowMenu.classList.add("smart-animate"):t.filterRowMenu.classList.remove("smart-animate"),t._createColumnFilterMenuItems(e),t.filterRowMenu.style.height=t.columnMenu.height?t.columnMenu.height+"px":"auto",t.filterRowMenu.column&&t.filterRowMenu.column!==e&&(t.filterRowMenu.column.setProperty("menu",null),t.filterRowMenu.column=null),t.isInShadowDOM?t.getRootNode().appendChild(t.filterRowMenu):document.body.appendChild(t.filterRowMenu),e.setProperty("filterRowMenu",t.filterRowMenu);const n=e.element.getBoundingClientRect();t.filterRowMenu.column=e;let l=n.left+window.pageXOffset,i=n.bottom+t.layout.rowMinHeight+window.pageYOffset;return l+t.filterRowMenu.offsetWidth>window.innerWidth&&(l=n.right+window.pageXOffset-t.filterRowMenu.offsetWidth,l+t.filterRowMenu.offsetWidth>window.innerWidth&&(l=window.innerWidth-t.filterRowMenu.offsetWidth)),t.filterRowMenu.style.left=l+"px",t.filterRowMenu.style.top=i+"px",t.filterRowMenu.classList.remove("smart-hidden"),t.filterRowMenu.classList.add("open"),setTimeout((()=>{t.filterRowMenu.querySelector("smart-menu").focus()}),50),t.filterRowMenu}_openColumnFilterExcelMenu(e){const t=this;if(!e||t.filterRowExcelMenu&&t.filterRowExcelMenu.column===e&&e.element.hasAttribute("aria-controls"))return void t.closeMenu();t._closeMenu(t.filterRowMenu),t.filterRowExcelMenu||(t.filterRowExcelMenu=document.createElement("div"),t.filterRowExcelMenu.classList.add("smart-grid-column-menu"),t.filterRowExcelMenu.setAttribute("theme",t.getAttribute("theme")),t.filterRowExcelMenu.id=t.id+"_"+t.tagName.toLowerCase()+"_menu_"+Math.floor(65536*(1+Math.random())).toString(16).substring(1)),t.appearance.allowColumnMenuAnimation?t.filterRowExcelMenu.classList.add("smart-animate"):t.filterRowExcelMenu.classList.remove("smart-animate"),t._createColumnFilterExcelMenuItems(e),t.filterRowExcelMenu.style.height=t.columnMenu.height?t.columnMenu.height+"px":"auto",t.filterRowExcelMenu.column&&t.filterRowExcelMenu.column!==e&&(t.filterRowExcelMenu.column.setProperty("menu",null),t.filterRowExcelMenu.column=null),t.isInShadowDOM?t.getRootNode().appendChild(t.filterRowExcelMenu):document.body.appendChild(t.filterRowExcelMenu),e.setProperty("filterRowExcelMenu",t.filterRowExcelMenu);const n=e.element.getBoundingClientRect();t.filterRowExcelMenu.column=e;let l=n.left+n.width-t.filterRowExcelMenu.offsetWidth+window.pageXOffset,i=n.bottom+t.layout.rowMinHeight+window.pageYOffset;return l+t.filterRowExcelMenu.offsetWidth>window.innerWidth&&(l=n.right+window.pageXOffset-t.filterRowExcelMenu.offsetWidth,l+t.filterRowExcelMenu.offsetWidth>window.innerWidth&&(l=window.innerWidth-t.filterRowExcelMenu.offsetWidth)),t.filterRowExcelMenu.style.left=l+"px",t.filterRowExcelMenu.style.top=i+"px",t.filterRowExcelMenu.classList.remove("smart-hidden"),t.filterRowExcelMenu.classList.add("open"),setTimeout((()=>{t.filterRowExcelMenu.querySelector("smart-menu").focus()}),50),t.filterRowExcelMenu}openContextMenu(e,t){const n=this;if(n.contextMenu.selector){const l=document.querySelector(n.contextMenu.selector);l&&setTimeout((()=>{l.open(e,t)}),100)}else n._closeMenu(n._contextMenu),n._contextMenu||(n._contextMenu=document.createElement("div"),n._contextMenu.classList.add("smart-grid-column-menu"),n._contextMenu.setAttribute("theme",n.getAttribute("theme")),n._contextMenu.id=n.id+"_"+n.tagName.toLowerCase()+"_menu_"+Math.floor(65536*(1+Math.random())).toString(16).substring(1),n.menu=n._contextMenu),n.appearance.allowColumnMenuAnimation?n._contextMenu.classList.add("smart-animate"):n._contextMenu.classList.remove("smart-animate"),n.rightToLeft?n._contextMenu.setAttribute("right-to-left",""):n._contextMenu.removeAttribute("right-to-left"),n.contextMenu.dataField?n._contextMenu.column=n.columnByDataField[n.contextMenu.dataField]:n._contextMenu.column=n.columns[0],n._createContextMenuItems(n._contextMenu),n._contextMenu.style.setProperty("--smart-grid-column-menu-width","auto"),n._contextMenu.style.height=n.contextMenu.height?n.contextMenu.height+"px":"auto",n._contextMenu.style.width=n.contextMenu.width?n.contextMenu.width+"px":"auto",n.isInShadowDOM?n.getRootNode().appendChild(n.menu):document.body.appendChild(n._contextMenu),n._contextMenu.style.left=e+10+"px",n._contextMenu.style.top=t+"px",t+n._contextMenu.offsetHeight>window.innerHeight&&(n._contextMenu.style.top=window.innerHeight-n._contextMenu.offsetHeight-10+"px"),n._contextMenu.classList.remove("smart-hidden"),n._contextMenu.classList.add("open"),setTimeout((()=>{n._contextMenu&&n._contextMenu.querySelector("smart-menu").focus()}),50)}_openMenu(e){const t=this;if(!e||t.menu&&t.menu.column===e&&e.element.hasAttribute("aria-controls")||!1===t.columnMenu.enabled)return void t.closeMenu();t._closeMenu(t.filterRowMenu),t._closeMenu(t.filterRowExcelMenu),t.$.headerBar&&t.header.visible&&t.$.headerBar.closePanel(),t.menu||(t.menu=document.createElement("div"),t.menu.classList.add("smart-grid-column-menu"),t.menu.setAttribute("theme",t.getAttribute("theme")),t.menu.id=t.id+"_"+t.tagName.toLowerCase()+"_menu_"+Math.floor(65536*(1+Math.random())).toString(16).substring(1)),t.appearance.allowColumnMenuAnimation?t.menu.classList.add("smart-animate"):t.menu.classList.remove("smart-animate"),t.rightToLeft?t.menu.setAttribute("right-to-left",""):t.menu.removeAttribute("right-to-left"),t._createMenuItems(e),t._createFilterPanel(e),t._filterMenuItemsVisibility(e),t.menu.style.height=t.columnMenu.height?t.columnMenu.height+"px":"auto",t.menu.column&&t.menu.column!==e&&(t.menu.column.setProperty("menu",null),t.menu.column=null),t.isInShadowDOM?t.getRootNode().appendChild(t.menu):document.body.appendChild(t.menu),e.setProperty("menu",t.menu);const n=e.element.getBoundingClientRect();t.menu.column=e;let l=n.right-e.element.actionButton.getBoundingClientRect().width+window.pageXOffset,i=n.bottom+window.pageYOffset;t.menu.classList.remove("smart-open-right"),t.rightToLeft&&(l=n.left+window.pageXOffset-t.menu.offsetWidth+e.element.actionButton.getBoundingClientRect().width,l<0&&(l=n.left+window.pageXOffset)),l+t.menu.offsetWidth>window.innerWidth&&(l=n.right+window.pageXOffset-t.menu.offsetWidth,l+t.menu.offsetWidth>window.innerWidth&&(l=window.innerWidth-t.menu.offsetWidth),t.menu.classList.add("smart-open-right")),t.menu.style.left=l+"px",t.menu.style.top=i+"px",t.hasColumnMenu(e)?(t.menu.classList.remove("smart-hidden"),t.menu.classList.add("open"),setTimeout((()=>{t.menu&&(t.menu.querySelector(".smart-filter-panel-input")?t.menu.querySelector(".smart-filter-panel-input").focus():t.menu.querySelector("smart-menu").focus())}),50)):t.closeMenu()}_menuItemClick(e){const t=this,n=e.detail.value;if(n&&n.properties){const e=n.properties.command;"function"==typeof e?e.apply(t,[n.column,n.properties]):t[e]&&t[e].apply(t,[n.column,n.properties]),n.column&&n.column.autoCloseMenu&&t.closeMenu()}}contextMenuItemChartCommand(){}contextMenuItemCutCommand(){const e=this,t=new KeyboardEvent("keydown",{bubbles:!0,cancelable:!0,composed:!0,pointerId:42,pointerType:"mouse",ctrlKey:!0,key:"X"});e._clipboardHandler("x",t),e.columnByDataField[e.contextMenu.dataField]||(e.selectRow(e.contextMenu.id),e._createCopyRects())}contextMenuItemCopyCommand(){const e=this,t=new KeyboardEvent("keydown",{bubbles:!0,cancelable:!0,composed:!0,pointerId:42,pointerType:"mouse",ctrlKey:!0,key:"C"});e._clipboardHandler("c",t),e.columnByDataField[e.contextMenu.dataField]||(e.selectRow(e.contextMenu.id),e._createCopyRects())}contextMenuItemPasteCommand(){const e=new KeyboardEvent("keydown",{bubbles:!0,cancelable:!0,composed:!0,pointerId:42,pointerType:"mouse",ctrlKey:!0,key:"V"});this._clipboardHandler("v",e)}contextMenuItemClearCommand(){const e=this;if(e._selection)if(e._selection.rows&&Object.keys(e._selection.rows).length>0){if(void 0!==e.contextMenu.id){const t=e.getSelectedRows();if(t.length>=1)return void t.map((e=>e[0])).forEach((t=>{requestAnimationFrame((()=>{e.updateRow(t,null,null,!0)}))}))}}else if(e._selection.cells&&Object.keys(e._selection.cells).length>0){const t=new KeyboardEvent("keydown",{bubbles:!0,cancelable:!0,composed:!0,pointerId:42,pointerType:"mouse",key:"Delete"});e.closeMenu(),e.$.dispatch(t)}}contextMenuItemInsertRowCommand(){const e=this;if(void 0!==e.contextMenu.id){const t=e.rowById[e.contextMenu.id];t&&requestAnimationFrame((()=>{e.insertRow({},1+t.visibleIndex)}))}}contextMenuItemSelectRowCommand(){const e=this;void 0!==e.contextMenu.id&&e.rowById[e.contextMenu.id]&&requestAnimationFrame((()=>{e.selectRow(e.contextMenu.id),e.$.headerBar&&(e.$.headerBar.refreshTools(),e.$.headerBar._refreshDeleteButton())}))}contextMenuItemCloneRowCommand(){const e=this;if(void 0!==e.contextMenu.id){const t=e.rowById[e.contextMenu.id];t&&requestAnimationFrame((()=>{e.insertRow(e.getRowData(e.contextMenu.id),1+t.visibleIndex),e._recycle(!1,!0)}))}}contextMenuItemAddCommentCommand(){const e=this;void 0!==e.contextMenu.id&&(e._focusCommentInput=!0,e._openRowSettingsDialog(e.contextMenu.id),setTimeout((()=>{delete e._focusCommentInput}),300))}contextMenuItemExpandCommand(){const e=this;void 0!==e.contextMenu.id&&e._openRowSettingsDialog(e.contextMenu.id)}contextMenuItemDeleteCommand(){const e=this;if(void 0!==e.contextMenu.id){const t=e.getSelectedRows();if(t.length>=1){const e=t.map((e=>e[0]));return void this.removeRow(e)}e.deleteRow(e.contextMenu.id)}}contextMenuItemEditCommand(){const e=this;void 0!==e.contextMenu.id&&e.editing.enabled&&("cell"===e.editing.mode?e.beginEdit(e.contextMenu.id,e.contextMenu.dataField):e.beginEdit(e.contextMenu.id))}removeGroupByCommand(e){this.removeGroup(e.dataField),this.autoSaveState()}groupByCommand(e){const t=this;t.dataSource&&(t.$.headerBar?t.header.visible&&t.header.buttons.indexOf("group")>=0&&t.$.headerBar.openGroupPanel(e):t.addGroup(e.dataField),t.autoSaveState())}sortAscCommand(e){this.sortBy(e.dataField,"asc"),this.autoSaveState()}sortDescCommand(e){this.sortBy(e.dataField,"desc"),this.autoSaveState()}removeSortCommand(e){this.sortBy(e.dataField,null),this.autoSaveState()}addSortCommand(e){const t=this;t.$.headerBar&&t.$.headerBar.openSortPanel(e)}addFilterCommand(e){const t=this;t.$.headerBar&&t.$.headerBar.openFilterPanel(e)}removeFilterCommand(e){this.removeFilter(e.dataField)}customizeTypeCommand(e){this._openAddColumnDialog(e,"rename")}hideColumnCommand(e){e.visible=!1,this.autoSaveState()}deleteColumnCommand(e){const t=this;t.columns.splice(t.columns.indexOf(e),1);for(let n=0;n<t.rows.length;n++)delete t.rows[n].data[e.dataField]}insertRightCommand(e){this._openAddColumnDialog(null,!1,null,e)}duplicateCommand(e,t,n){const l=this,i=new Smart.Grid.Column(e);delete i._state;let o=e.dataField,a=0;if(void 0===n){let t=!1;for(let n=0;n<l.rows.length;n++)if(l.rows[n].data[e.dataField]){t=!0;break}if(t)return void l._openDescriptionDialog(e,"duplicate")}for(let e=0;e<l.columns.length;e++)l.columns[e].dataField.indexOf(o)>=0&&a++;if(i.displayField=i.dataField=e.dataField+"_"+a,"object"==typeof e.editor){const t={};for(let n in e.editor)"instance"!==n&&"cell"!==n&&"column"!==n&&"row"!==n&&"isInitialized"!==n&&(t[n]=e.editor[n]);i.editor=JSON.parse(JSON.stringify(t))}const r=l.columns.indexOf(e);if(n)for(let t=0;t<l.rows.length;t++){const n=l.rows[t],o=n.data[e.dataField];n.data[i.dataField]=o}i.label=e.label+` ${l.localize("copy")} `+a,l.columns.splice(1+r,0,i),l.onColumnClone&&setTimeout((()=>{l.onColumnClone(e.dataField,i.dataField,1+r,n)}),100)}_removeMenu(){const e=this;if(e.menu){const t=e.menu.querySelector("smart-menu");t&&e.menu.removeChild(t)}if(e.filterRowMenu){const t=e.filterRowMenu.querySelector("smart-menu");t&&e.filterRowMenu.removeChild(t)}if(e.filterRowExcelMenu){const t=e.filterRowExcelMenu.querySelector("smart-menu");t&&e.filterRowExcelMenu.removeChild(t)}if(e._contextMenu){const t=e._contextMenu.querySelector("smart-menu");t&&(e._contextMenu.removeChild(t),e._contextMenu.parentNode.removeChild(e._contextMenu))}}_createColumnChooserMenuItems(e){const t=this;t._removeMenu();const n=document.createElement("smart-menu"),l=document.createDocumentFragment();if(n.mode="vertical",n.dropDownAppendTo="body",n.checkboxes=!0,n.checkable=!0,n.classList.add("smart-grid-column-chooser-menu"),n.rightToLeft=t.rightToLeft,e&&"_addNewColumn"===e.dataField){if(t._kanbanViewColumns&&t._kanbanViewColumns.length>0)for(let e=0;e<t._kanbanViewColumns.length;e++){const n=t._kanbanViewColumns[e],i=t.columnByDataField[n.dataField];if(i&&i.visible)continue;const o=document.createElement("smart-menu-item"),a=n.showIcon?n.icon:n.visible?"smart-icon-eye":"smart-icon-eye-off";o.checked=n.visible,n.allowHide&&(n.command=function(e){t.closeMenu();const n=t.columnByDataField[e.dataField];n.visible=!0,delete n._visible;const l=t._kanbanViewColumns.indexOf(e);l>=0&&t._kanbanViewColumns.splice(l,1)},o.label=t.localize(n.label)||n.label||n.dataField,o.value={column:n,properties:n},a&&(o.label='<span class="smart-grid-icon '+a+'"></span>'+o.label),l.appendChild(o))}const e=document.createElement("smart-menu-item");e.label='<span class="smart-grid-icon smart-icon-plus"></span>'+t.localize("dialogNewColumn"),e.value={properties:{command:()=>{t.closeMenu(),t._openAddColumnDialog()}}},l.appendChild(e)}else for(let e=0;e<t.columns.length;e++){const n=t.columns[e],i=document.createElement("smart-menu-item"),o=n.showIcon?n.icon:n.visible?"smart-icon-eye":"smart-icon-eye-off";i.checked=n.visible,n.allowHide&&(n.command=function(e){e.visible=!e.visible},i.label=t.localize(n.label)||n.label||n.dataField,i.value={column:n,properties:n},o&&(i.label='<span class="smart-grid-icon '+o+'"></span>'+i.label),l.appendChild(i))}n.appendChild(l),t.menu.appendChild(n),t.menu.itemCheckChange=t._menuItemClick.bind(t),t.menu.addEventListener("itemCheckChange",t.menu.itemCheckChange),t.menu.addEventListener("keydown",t._keyDownHandler.bind(t))}_createFilterListBox(e){const t=this,n=t.columnByDataField[e];if(!n)return null;let l=t.getExcelFilterDataSource(n.dataField);const i=document.createElement("smart-list-box");return i.style.setProperty("--smart-list-item-height","24px"),i.id=t.id+"_"+t.tagName.toLowerCase()+"_filter_listbox_"+Math.floor(65536*(1+Math.random())).toString(16).substring(1),i.checkboxes=!0,i.animation="none",i.selectionMode="checkBox",i.dataSource=l,i.displayMember="label",i.valueMember="value",i.style.width="100%",i.filterable=!0,i.autoHeight=!0,i.selectAll=!0,i.rightToLeft=t.rightToLeft,i.theme=t.theme,i.locale=t.locale,i.style.height="200px",i.whenRendered((()=>{if(n.filterEditor&&n.filterEditor.values&&(n._filterInfo||(n._filterInfo={}),n._filterInfo.excelValues=n.filterEditor.values),n._filterInfo&&n._filterInfo.excelValues&&Array.isArray(n._filterInfo.excelValues)){i.clearSelection();let e=[];for(let t=0;t<n._filterInfo.excelValues.length;t++){const l=n._filterInfo.excelValues[t];e.push(l)}i.checkAll(e)}else i.checkAll();setTimeout((()=>{i.focusFilter()}),200)})),i}_createColumnFilterExcelMenuItems(e){const t=this;t._removeMenu();const n=document.createElement("smart-menu"),l=document.createDocumentFragment();n.mode="vertical",n.dropDownAppendTo="body",n.classList.add("smart-grid-column-filter-menu","filter-excel"),n.rightToLeft=t.rightToLeft,n.animation="none",n.preventHover=!0,n.style.setProperty("--smart-list-item-height","27px");const i=document.createElement("smart-menu-item");i.style.paddingLeft=i.style.paddingRight=i.style.paddingTop=i.style.paddingBottom="0px";const o=t._createFilterListBox(e.dataField),a=document.createElement("div");a.classList.add("smart-flex"),a.style.flexDirection="column",a.style.padding="5px",a.appendChild(o);const r=document.createElement("div");r.classList.add("smart-flex"),r.style.marginTop="10px",r.style.marginLeft="5px";const s=document.createElement("smart-button");s.innerHTML=t.localize("filter"),s.classList.add("primary");const m=document.createElement("smart-button");m.innerHTML=t.localize("clear"),m.style.marginLeft="10px",r.appendChild(s),r.appendChild(m),a.appendChild(r),i.appendChild(a),l.appendChild(i),m.onclick=function(){o.clearSelection(),o.checkAll(),e._filterInfo.excelValues=null,t.removeFilter(e.dataField);const n=t.getFilterRowFilter(e.dataField);n&&t.addFilter(e.dataField,n),t.closeMenu()},s.onclick=function(){const n=o.getSelectedValues();if(e._filterInfo.excelValues=n,n.length===o.getItems().length){e._filterInfo.excelValues=null;const n=t.getFilterRowFilter(e.dataField);return n?t.addFilter(e.dataField,n):t.removeFilter(e.dataField),void t.closeMenu()}const l=t.getExcelFilter(e.dataField,n),i=t.getFilterRowFilter(e.dataField);i&&l.addFilter("and",i),t.addFilter(e.dataField,l),t.closeMenu()},n.appendChild(l),t.filterRowExcelMenu.appendChild(n),t.filterRowExcelMenu.itemClick=t._menuItemClick.bind(t),t.filterRowExcelMenu.classList.add("smart-open-right"),t.filterRowExcelMenu.addEventListener("itemClick",t.filterRowExcelMenu.itemClick),t.filterRowExcelMenu.addEventListener("keydown",(e=>{"Escape"===e.key&&t._closeMenu(t.filterRowExcelMenu)}))}_createColumnFilterMenuItems(e){const t=this;t._removeMenu();const n=document.createElement("smart-menu"),l=document.createDocumentFragment();n.mode="vertical",n.dropDownAppendTo="body",n.classList.add("smart-grid-column-filter-menu"),n.rightToLeft=t.rightToLeft;const i=e._filterInfo.dataSource;for(let t=0;t<i.length;t++){const n=i[t],o=document.createElement("smart-menu-item"),a=n.icon;o.label=n.label,o.value={column:e,properties:n},a&&(o.label='<span class="smart-grid-icon '+a+'"></span>'+o.label),e._filterInfo.condition===n.value&&o.setAttribute("focus",""),l.appendChild(o)}n.appendChild(l),t.filterRowMenu.appendChild(n),t.filterRowMenu.itemClick=t._menuItemClick.bind(t),t.filterRowMenu.addEventListener("itemClick",t.filterRowMenu.itemClick),t.filterRowMenu.addEventListener("keydown",(e=>{"Escape"===e.key&&t._closeMenu(t.filterRowMenu)}))}_createMenuItems(e){const t=this;t._removeMenu();const n=document.createElement("smart-menu"),l=document.createDocumentFragment(),i=e.menuItems||t.columnMenu.dataSource;n.mode="vertical",n.dropDownAppendTo="body",n.rightToLeft=t.rightToLeft;for(let n in i){const o=i[n],a=document.createElement("smart-menu-item");let r=o.icon;a.label=t.localize(n),a.value={column:e,properties:o};const s=t=>{if(t){if("string"===e.dataType)return"A → Z";if("number"===e.dataType||"date"===e.dataType||"time"===e.dataType)return"1 → 9";if("bool"===e.dataType||"boolean"===e.dataType)return"0 → 1"}else{if("string"===e.dataType)return"Z → A";if("number"===e.dataType||"date"===e.dataType||"time"===e.dataType)return"9 → 1";if("bool"===e.dataType||"boolean"===e.dataType)return"1 → 0"}};"columnMenuItemSortAsc"===n?(a.label=t.localize(n,{mode:s(!0)}),"string"!==e.dataType&&o.iconAlt&&(r=o.iconAlt)):"columnMenuItemSortDesc"===n&&(a.label=t.localize(n,{mode:s(!1)}),"string"!==e.dataType&&o.iconAlt&&(r=o.iconAlt)),r&&(a.label='<span class="smart-grid-icon '+r+'"></span>'+a.label),l.appendChild(a)}n.appendChild(l),t._filterContainer?t.menu.insertBefore(n,t._filterContainer):t.menu.appendChild(n),t.menu.itemClick=t._menuItemClick.bind(t),t.menu.addEventListener("itemClick",t.menu.itemClick),t.menu.addEventListener("keydown",t._keyDownHandler.bind(t))}_createContextMenuItems(){const e=this;e._removeMenu();const t=document.createElement("smart-menu"),n=document.createDocumentFragment();let l=e.contextMenu.dataSource;t.mode="vertical",t.dropDownAppendTo="body",t.rightToLeft=e.rightToLeft;const i=e._selection&&e._selection.cells&&Object.keys(e._selection.cells).length>2,o=e._getSelectedRows(!0,!1);if(i){let t={};t.contextMenuItemCut=l.contextMenuItemCut,t.contextMenuItemCopy=l.contextMenuItemCopy,t.contextMenuItemPaste=l.contextMenuItemPaste,t.contextMenuItemClear=l.contextMenuItemClear,e.charting.enabled&&(t.contextMenuItemChart=l.contextMenuItemChart),l=t}else if(o.length>1){let t={};t.contextMenuItemCut=l.contextMenuItemCut,t.contextMenuItemCopy=l.contextMenuItemCopy,t.contextMenuItemPaste=l.contextMenuItemPaste,t.contextMenuItemClear=l.contextMenuItemClear,t.contextMenuItemDelete=l.contextMenuItemDelete,e.charting.enabled&&(t.contextMenuItemChart=l.contextMenuItemChart),l=t}if(null!==e.contextMenu.id&&e._newRow&&e._newRow.id===e.contextMenu.id){const t=function(t,n){const l=n.value;requestAnimationFrame((()=>{const t=[];for(let e=0;e<l;e++)t.push({});e.rows.push(t),e._recycle(!1),e.$.verticalScrollBar.value=e.$.verticalScrollBar.max}))},l=[{label:e.localize("contextMenuItemAddRow",{value:5}),value:5,command:t},{label:e.localize("contextMenuItemAddRow",{value:10}),value:10,command:t},{label:e.localize("contextMenuItemAddRow",{value:20}),value:20,command:t}];for(let e in l){const t=l[e],i=document.createElement("smart-menu-item");i.value={properties:t},i.label=t.label,n.appendChild(i)}}else for(let i in l){const o=l[i];let a=document.createElement("smart-menu-item"),r=o.icon;!0===o.visible?a.classList.remove("smart-hidden"):!1===o.visible&&a.classList.add("smart-hidden"),"contextMenuItemEdit"===i?(e.editing.enabled||(a.disabled=!0),"{{messages}}"===o.label?"cell"===e.editing.mode?a.label=e.localize("contextMenuItemEditCell"):a.label=e.localize("contextMenuItemEditRow"):a.label=o.label):"contextMenuItemClear"===i?(e.editing.enabled||(a.disabled=!0),"{{messages}}"===o.label?a.label=e.localize("clearContents"):a.label=o.label):"contextMenuItemCut"===i?(e.editing.enabled||(a.disabled=!0),"{{messages}}"===o.label?a.label=e.localize("cut").substring(0,1).toUpperCase()+e.localize("cut").substring(1):a.label=o.label):"contextMenuItemCopy"===i?(e.editing.enabled||(a.disabled=!0),"{{messages}}"===o.label?a.label=e.localize("copy").substring(0,1).toUpperCase()+e.localize("copy").substring(1):a.label=o.label):"contextMenuItemPaste"===i?(e.editing.enabled||(a.disabled=!0),"{{messages}}"===o.label?a.label=e.localize("paste"):a.label=o.label):"contextMenuItemExpand"===i?(e.editing.enabled||(a.disabled=!0),"{{messages}}"===o.label?a.label=e.localize("expandRecord"):a.label=o.label):"contextMenuItemCloneRow"===i?(e.editing.enabled||(a.disabled=!0),"{{messages}}"===o.label?a.label=e.localize("contextMenuItemCloneRow"):a.label=o.label):"contextMenuItemSelectRow"===i?(e.editing.enabled||(a.disabled=!0),"{{messages}}"===o.label?a.label=e.localize("contextMenuItemSelectRow"):a.label=o.label):"contextMenuItemComment"===i?(e.editing.enabled||(a.disabled=!0),"{{messages}}"===o.label?a.label=e.localize("commentPlaceholder"):a.label=o.label):"contextMenuItemChart"===i?(t.selectionMode="mouseenter",t.preventCloseOnCheck=!0,e.charting.enabled||(a.disabled=!0),a=document.createElement("smart-menu-items-group"),a.label=e.localize("contextMenuItemChart"),a.innerHTML='\n <smart-menu-items-group>\n Column\n <smart-menu-item type="column">Column</smart-menu-item>\n <smart-menu-item type="stackedcolumn">Stacked Column</smart-menu-item>\n <smart-menu-item type="stackedcolumn100">100% Stacked Column</smart-menu-item>\n </smart-menu-items-group>\n <smart-menu-items-group>Bar\n <smart-menu-item type="bar">Bar</smart-menu-item>\n <smart-menu-item type="stackedbar">Stacked Bar</smart-menu-item>\n <smart-menu-item type="stackedbar100" >100% Stacked Bar</smart-menu-item>\n </smart-menu-items-group>\n <smart-menu-items-group>Line\n <smart-menu-item type="line">Line</smart-menu-item>\n <smart-menu-item type="stackedline">Stacked Line</smart-menu-item>\n <smart-menu-item type="stackedline100">100% Stacked Line</smart-menu-item>\n </smart-menu-items-group>\n <smart-menu-items-group>Area\n <smart-menu-item type="area">Area</smart-menu-item>\n <smart-menu-item type="stackedarea">Stacked Area</smart-menu-item>\n <smart-menu-item type="stackedarea100">100% Stacked Area</smart-menu-item>\n </smart-menu-items-group>\n <smart-menu-items-group>Pie\n <smart-menu-item type="pie">Pie</smart-menu-item>\n <smart-menu-item type="donut">Donut</smart-menu-item>\n </smart-menu-items-group>\n <smart-menu-items-group>Scatter\n <smart-menu-item type="scatter">Scatter</smart-menu-item>\n <smart-menu-item type="bubble">Bubble</smart-menu-item>\n </smart-menu-items-group>\n <smart-menu-items-group>Funnel\n <smart-menu-item type="funnel">Funnel</smart-menu-item>\n <smart-menu-item type="pyramid">Pyramid</smart-menu-item>\n </smart-menu-items-group>\n ',a.querySelectorAll("smart-menu-item").forEach((n=>{const l=n.getAttribute("type");n.onpointerdown=n=>{n.stopPropagation(),n.preventDefault(),t.close(),e._closeMenu(e._contextMenu),e.createChart(l)},n.value={properties:{command:()=>{e.createChart(l)}}}}))):"{{messages}}"===o.label?a.label=e.localize(i):a.label=o.label,a.value={properties:o},r&&(a.label='<span class="smart-grid-icon '+r+'"></span>'+a.label),n.appendChild(a)}if(e.contextMenu.customContextMenuItems)for(let t in e.contextMenu.customContextMenuItems){const l=e.contextMenu.customContextMenuItems[t],i=document.createElement("smart-menu-item");let o=l.icon;!0===l.visible?i.classList.remove("smart-hidden"):!1===l.visible&&i.classList.add("smart-hidden"),i.label=l.label,i.value={properties:l},o&&(i.label='<span class="smart-grid-icon '+o+'"></span>'+i.label),n.appendChild(i)}[...n.querySelectorAll("smart-menu-item")].forEach((e=>{e.style.marginBottom=e.style.marginTop="0px"})),[...n.querySelectorAll("smart-menu-items-group")].forEach((e=>{e.style.marginBottom=e.style.marginTop="0px"})),t.appendChild(n),e._contextMenu.appendChild(t),""!==t.textContent||0!==t.children.length?(e._contextMenu.itemClick=t=>{t.detail.value||(t.detail.value={properties:{command:null}}),t.detail.value.column=t.detail.item.column=e._contextMenu.column;const n=t.detail.value.column;e._menuItemClick(t),e._closeMenu(e._contextMenu),e.$.fireEvent("contextMenuItemClick",{id:e._contextMenu.id,dataField:n?n.dataField:null,command:t.detail.value.properties.command})},e._contextMenu.style.minHeight="30px",e._contextMenu.addEventListener("itemClick",e._contextMenu.itemClick),e._contextMenu.addEventListener("keydown",e._keyDownHandler.bind(e))):e._removeMenu()}_getFilterType(e){const t=this;let n="string";switch(e.dataType.endsWith("?")?e.dataType.substring(0,e.dataType.length-1):e.dataType){case"number":case"int":case"float":case"int64":n="numeric";break;case"bool":case"boolean":n="bool";break;case"date":case"time":case"datetime":n="date";break;case"any":n="string"}return e.displayField!==e.dataField&&(n=t._getFilterDataType(e)),n}_createFilterPanel(e){const t=this;if(Smart.FilterPanel)if(t.filtering.enabled&&t.filtering.filterMenu.visible&&e.allowFilter&&!t.filtering.filterRow.visible&&(!t.header.visible||t.header.visible&&-1===t.header.buttons.indexOf("filter"))){const n=t._getFilterType(e);if(t._filterPanel&&t._filterPanel.parentNode&&t._filterPanel.parentNode.removeChild(t._filterPanel),t._filterPanel=t._filterPanels[n],!t._filterPanel){const e=document.createElement("smart-filter-panel");e.filterType=n,t._filterPanels[n]=e,t._filterPanel=e}t._filterPanel.dataField=e.dataField,t._filterPanel.rightToLeft=t.rightToLeft,t.filtering.filterMenu.messages?t._filterPanel.messages=t.filtering.filterMenu.messages:t._filterPanel.messages=t.messages,"excel"!==e.filterMenuMode&&"multi"!==e.filterMenuMode||(t._filterPanel.dataField=e.dataField,t._filterPanel._createFilterListBox=t._createFilterListBox.bind(t),t._filterPanel.getExcelFilter=t.getExcelFilter.bind(t),t.dataSource&&t.dataSource.boundSource&&(t._filterPanel.data=t.dataSource.boundSource.toArray?t.dataSource.boundSource.toArray():t.dataSource.boundSource)),e.filterEditor&&e.filterEditor.dataSource&&(t._filterPanel.data=[...e.filterEditor.dataSource]),t._filterPanel.mode=e.filterMenuMode,t._filterPanel.locale=t.locale;const l=t._filterPanel.querySelectorAll(".smart-filter-panel-input");for(let e=0;e<l.length;e++)l[e].onkeydown=e=>{"Enter"===e.key&&t._filterPanel.filter()};if(!t._filterContainer){const e=document.createElement("div");e.classList.add("smart-filter-container"),t._filterContainer=e,requestAnimationFrame((function(){t.menu.appendChild(e)})),t._applyFilterHandler=function(){t.addFilter(t._filterPanel.dataField,t._filterPanel.getFilter()),t.columnByDataField[t._filterPanel.dataField]._filterState=t._filterPanel.getState(),t.autoSaveState()},t._clearFilterHandler=function(){requestAnimationFrame((()=>{t.removeFilter(t._filterPanel.dataField),t.columnByDataField[t._filterPanel.dataField]._filterState=null,t.autoSaveState()}))}}t._filterContainer.appendChild(t._filterPanel),t._filterPanel.classList.remove("smart-hidden"),t._filterPanel.removeEventListener("filter",t._applyFilterHandler),t._filterPanel.removeEventListener("clear",t._clearFilterHandler),t._filterPanel.addEventListener("filter",t._applyFilterHandler),t._filterPanel.addEventListener("clear",t._clearFilterHandler);const i=t._filterContainer.querySelector(".smart-grid-custom-filter-panel");if(i&&t._filterContainer.removeChild(i),"none"!==e.filterMenuMode&&t.filtering.filterMenu.visible&&Smart.FilterPanel?t._filterContainer.classList.remove("smart-hidden"):t._filterContainer.classList.add("smart-hidden"),e.getFilterPanel)if(e._customFilterPanel)e.updateFilterPanel(e._customFilterPanel,e),t._filterContainer.removeChild(t._filterPanel),t._filterContainer.appendChild(e._customFilterPanel);else{const n=e.getFilterPanel(e);n&&(n.classList.add("smart-grid-custom-filter-panel"),e._customFilterPanel=n,t._filterContainer.removeChild(t._filterPanel),t._filterContainer.appendChild(n))}if(t._filterPanel.reset(),e.filterEditor&&!e.filter&&e.filterEditor.condition){const n=new Smart.FilterGroup,l=t._getFilterType(e),i=n.getConditions(l),o=e.filterEditor.condition?i.indexOf(e.filterEditor.condition.toUpperCase()):-1,a=e.filterEditor.condition2?i.indexOf(e.filterEditor.condition2.toUpperCase()):-1,r=e.filterEditor.value||"",s=e.filterEditor.value2||"",m=e.filterEditor.logicalOperator?["and","or"].indexOf(e.filterEditor.logicalOperator):0;e._filterState={firstFilterComparison:o,firstFilterValue:r,logicalOperator:m,secondFilterComparison:a,secondFilterValue:s},t._filterPanel.loadState(e._filterState)}if(e._filterState)t._filterPanel.loadState(e._filterState);else if(e.filter){const n=e.filter,l=t._getFilterType(e);let i=n.getFilters();for(;i.length>0&&"FilterGroup"===i[0].type;)i=i[0].value;const o=n.getConditions(l),a=i.length>0?o.indexOf(i[0].condition):-1,r=i.length>1?o.indexOf(i[1].condition):-1,s=i.length>0?i[0].value:"",m=i.length>1?i[1].value:"",u=i.length>1?["and","or"].indexOf(i[1].logicalOperator):0;"excel"===e.filterMenuMode?(e._filterState={filters:i},t._filterPanel.loadState(e._filterState)):"multi"===e.filterMenuMode?(e._filterState={filters:i,firstFilterValue:"",secondFilterValue:"",firstFilterComparison:a},t._filterPanel.loadState(e._filterState)):(e._filterState={firstFilterComparison:a,firstFilterValue:s,logicalOperator:u,secondFilterComparison:r,secondFilterValue:m},t._filterPanel.loadState(e._filterState))}}else t._filterPanel&&(t._filterPanel.parentNode&&t._filterPanel.parentNode.removeChild(t._filterPanel),e._filterState=null)}hasColumnMenu(e){const t=this;if(!1===t.columnMenu.enabled)return!1;const n=e.menuItems||t.columnMenu.dataSource;let l=0,i=0;for(let o in n){const a=n[o];if(i++,!1===a.visible)l++;else if("auto"===a.visible){if(("columnMenuItemFilter"===o||"columnMenuItemRemoveFilter"===o)&&(t.filtering.filterMenu.visible||t.filtering.filterRow.visible)&&(!t.header.visible||t.header.visible&&-1===t.header.buttons.indexOf("filter"))){l++;continue}if(!("columnMenuItemGroupBy"!==o&&"columnMenuItemRemoveGroupBy"!==o||e.allowGroup&&t.grouping.enabled)){l++;continue}if(!("columnMenuItemSort"!==o||e.allowSort&&t.sorting.enabled)){l++;continue}if(!("columnMenuItemFilter"!==o||e.allowFilter&&t.filtering.enabled)){l++;continue}if(!("columnMenuItemRemoveFilter"!==o||e.allowFilter&&t.filtering.enabled)){l++;continue}if("columnMenuItemGroupBy"===o&&!e.allowGroup){l++;continue}if(!("columnMenuItemSortAsc"!==o&&"columnMenuItemSortDesc"!==o&&"columnMenuItemRemoveSort"!==o||e.allowSort&&t.sorting.enabled)){l++;continue}}}return!(!(t.filtering.enabled&&t.filtering.filterMenu.visible&&!t.filtering.filterRow.visible&&"none"!==e.filterMenuMode&&Smart.FilterPanel||Smart.Menu&&!(l>=i))||l>=i)}_filterMenuItemsVisibility(e){const t=this,n=(t.menu.parentElement&&(t.enableShadowDOM||t.isInShadowDOM)?t.menu.firstElementChild.shadowRoot:t.menu).querySelectorAll("smart-menu-item"),l=e.menuItems||t.columnMenu.dataSource;let i=0;for(let o in l){const a=n[i++],r=l[o];if(a.disabled=!r.enabled,a.classList.remove("smart-hidden"),"columnMenuItemDelete"!==o||e.allowDelete)if("columnMenuItemHide"!==o||e.allowHide){if("columnMenuItemRemoveSort"===o&&(e.sortOrder?a.disabled=!1:a.disabled=!0),("columnMenuItemSortAsc"===o&&"asc"===e.sortOrder||"columnMenuItemSortDesc"===o&&"desc"===e.sortOrder)&&(a.disabled=!0),!0===r.visible)a.classList.remove("smart-hidden");else if(!1===r.visible)a.classList.add("smart-hidden");else if("auto"===r.visible){if("columnMenuItemFilter"!==o&&"columnMenuItemRemoveFilter"!==o||(!1===t.filtering.enabled?a.classList.add("smart-hidden"):((t.filtering.filterMenu.visible||t.filtering.filterRow.visible)&&a.classList.add("smart-hidden"),t.header.visible&&t.header.buttons.indexOf("filter")>=0?a.classList.remove("smart-hidden"):"columnMenuItemFilter"===o&&a.classList.add("smart-hidden"),e.filtered||"columnMenuItemRemoveFilter"!==o||a.classList.add("smart-hidden"))),"columnMenuItemSort"===o&&(!1===t.sorting.enabled?a.classList.add("smart-hidden"):(a.classList.add("smart-hidden"),t.header.visible&&t.header.buttons.indexOf("sort")>=0&&a.classList.remove("smart-hidden"))),"columnMenuItemGroupBy"===o){t.grouping.enabled&&e.allowGroup?a.classList.remove("smart-hidden"):a.classList.add("smart-hidden");const n=t.dataSource.groupBy.indexOf(e.dataField);a.disabled=n>=0}if("columnMenuItemRemoveGroupBy"===o){t.grouping.enabled&&e.allowGroup?a.classList.remove("smart-hidden"):a.classList.add("smart-hidden"),t.header.visible&&t.header.buttons.indexOf("group")>=0&&a.classList.add("smart-hidden");const n=t.dataSource.groupBy.indexOf(e.dataField);a.disabled=n<0}"columnMenuItemFilter"!==o||e.allowFilter||a.classList.add("smart-hidden"),"columnMenuItemSort"!==o||e.allowSort||a.classList.add("smart-hidden"),"columnMenuItemRemoveFilter"!==o||e.allowFilter||a.classList.add("smart-hidden"),"columnMenuItemSortAsc"!==o&&"columnMenuItemSortDesc"!==o&&"columnMenuItemRemoveSort"!==o||(e.allowSort&&t.sorting.enabled?a.classList.remove("smart-hidden"):a.classList.add("smart-hidden"),t.header.visible&&t.header.buttons.indexOf("sort")>=0&&a.classList.add("smart-hidden"))}}else a.classList.add("smart-hidden");else a.classList.add("smart-hidden")}}openMenu(e){const t=this.columnByDataField[e];t&&this._openMenu(t)}hasMenu(){const e=this;return!!(e.menu&&e.menu.column&&e.menu.parentNode)}_closeMenu(e){const t=this;(e=>{if(e){e.column&&(e.column.setProperty("menu",null),e.column=null);let n=e.classList.contains("open");if(e.parentNode&&(e.classList.remove("open"),t.appearance.allowColumnMenuAnimation||e.parentNode.removeChild(e)),e.removeEventListener("keydown",t._keyDownHandler.bind(t)),e.removeEventListener("itemClick",e.itemClick),e.removeEventListener("itemCheckChange",e.itemCheckChange),t._filterRowInputOnFocus)return;if(!n)return;t.focus()}})(e)}closeMenu(){const e=this,t=e.menu;if(e._closeMenu(t),e._closeMenu(e.filterRowMenu),e._closeMenu(e.filterRowExcelMenu),e._closeMenu(e._contextMenu),e._filterPanel){const t=e._filterPanel.querySelectorAll("smart-drop-down-list");for(let e=0;e<t.length;e++){const n=t[e];n.opened&&n.close()}}}});