UNPKG

smart-webcomponents-angular

Version:

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

6 lines (4 loc) 77.7 kB
/* Smart UI v20.0.2 (2024-09-06) Copyright (c) 2011-2024 jQWidgets. License: https://htmlelements.com/license/ */ // Smart("smart-grid-toolbar",class extends Smart.DataView{template(){return'<div id="container" role="presentation">\n <div id="header" class="smart-data-view-header" role="toolbar">\n <div id="viewStatesButton" class="smart-data-view-header-button smart-data-view-states-button smart-unselectable" role="button" aria-expanded="false" aria-haspopup="dialog" aria-label="ViewStates"><div class="smart-tool-label" role="presentation"></div></div>\n <div id="viewsButton" class="smart-data-view-header-button smart-data-view-views-button smart-unselectable" role="button" aria-expanded="false" aria-haspopup="dialog" aria-label="Views"><div class="smart-tool-label" role="presentation"></div></div>\n <div id="customizeButton" class="smart-data-view-header-button smart-data-view-customize-button smart-unselectable" role="button" aria-expanded="false" aria-haspopup="dialog" aria-label="Customize cards"><div class="smart-tool-label" role="presentation"></div></div>\n <div id="filterButton" class="smart-data-view-header-button smart-data-view-filter-button smart-unselectable" role="button" aria-expanded="false" aria-haspopup="dialog" aria-label="Filter"><div class="smart-tool-label" role="presentation"></div></div>\n <div id="sortButton" class="smart-data-view-header-button smart-data-view-sort-button smart-unselectable" role="button" aria-expanded="false" aria-haspopup="dialog" aria-label="Sort"><div class="smart-tool-label" role="presentation"></div></div>\n <div id="groupButton" class="smart-data-view-header-button smart-data-view-group-button smart-unselectable" role="button" aria-expanded="false" aria-haspopup="dialog" aria-label="Group"><div class="smart-tool-label" role="presentation"></div></div>\n <div id="resourceButton" class="smart-data-view-header-button smart-data-view-resource-button smart-unselectable" role="button" aria-expanded="false" aria-haspopup="dialog" aria-label="Resource"><div class="smart-tool-label" role="presentation"></div></div>\n <div id="labelButton" class="smart-data-view-header-button smart-data-view-label-button smart-unselectable" role="button" aria-expanded="false" aria-haspopup="dialog" aria-label="Lael"><div class="smart-tool-label" role="presentation"></div></div>\n <div id="formatButton" class="smart-data-view-header-button smart-data-view-format-button smart-unselectable" role="button" aria-expanded="false" aria-haspopup="dialog" aria-label="Format"><div class="smart-tool-label" role="presentation"></div></div>\n <div id="colorsButton" class="smart-data-view-header-button smart-data-view-colors-button smart-unselectable" role="button" aria-expanded="false" aria-haspopup="dialog" aria-label="Colors"><div class="smart-tool-label" role="presentation"></div></div>\n <div id="deleteButton" class="smart-data-view-header-button smart-data-view-delete-button smart-unselectable" role="button" aria-expanded="false" aria-haspopup="dialog" aria-label="Delete"><div class="smart-tool-label" role="presentation"></div></div>\n <div id="customButton" class="smart-data-view-header-button smart-data-view-custom-button smart-unselectable" role="button" aria-expanded="false" aria-haspopup="dialog" aria-label="Custom"><div class="smart-tool-label" role="presentation"></div></div>\n <div id="downloadButton" class="smart-data-view-header-button smart-data-view-download-button smart-unselectable" role="button" aria-expanded="false" aria-haspopup="dialog" aria-label="Download"><div class="smart-tool-label" role="presentation"></div></div>\n <div id="searchButton" class="smart-data-view-header-button smart-data-view-search-button smart-unselectable" role="button" aria-expanded="false" aria-haspopup="dialog" aria-label="Search"></div>\n <div id="headerDropDown" owner class="smart-data-view-header-drop-down smart-visibility-hidden" role="dialog">\n <div id="view" class="smart-hidden" role="presentation"></div>\n <div id="customize" class="smart-hidden" role="presentation"></div>\n <div id="filter" class="smart-hidden" role="presentation"></div>\n <div id="sort" class="smart-hidden" role="presentation"></div>\n <div id="group" class="smart-hidden" role="presentation"></div>\n <div id="format" class="smart-hidden" role="presentation"></div>\n <div id="colors" class="smart-hidden" role="presentation"></div>\n <div id="search" class="smart-data-view-search-box smart-hidden" role="presentation">\n <input type="text" id="searchInput" spellcheck="false" aria-label="Search" />\n <div id="searchLabel" class="smart-data-view-search-label smart-unselectable"></div>\n <div id="searchPrev" class="smart-data-view-search-prev" role="button" aria-label="Previous"></div>\n <div id="searchNext" class="smart-data-view-search-next" role="button" aria-label="Next"></div>\n <div id="searchClose" class="smart-data-view-search-close" role="button" aria-label="Close search box"></div>\n </div>\n </div>\n </div>\n </div>'}_refreshMobileViewTools(){const e=this;e.grid.offsetWidth<600?e.querySelectorAll(".smart-tool-label").forEach((e=>{e.classList.add("smart-hidden")})):e.querySelectorAll(".smart-tool-label").forEach((e=>{e.classList.remove("smart-hidden")}))}refreshTools(){const e=this;if(e.isRendered&&e.grid&&(e._refreshMobileViewTools(),e.refreshHeaderDropDownPosition(),e.grid)){const t=e.grid;if(t.dataSource&&t.dataSource.boundSource){const a=t.dataSource&&t.dataSource.virtualDataSource&&!t.dataSource.virtualDataSourceOnExpand&&t.dataSource.length>t.virtualModeCachedRowsCount&&"infinite"!==t.scrolling;if(e.dataSource&&t.dataSource&&e.dataSource.length!==t.dataSource.length||a)if(a){const a=Array.isArray(t.dataSource.boundSource)?t.dataSource.boundSource:t.dataSource.boundSource.toArray();e.dataSource=new Smart.DataAdapter({observable:!1,dataSource:[...a],dataFields:t.dataSource.dataFields})}else e.dataSource=t.dataSource;const s=t=>{const a=t?"add":"remove";e.$.filterButton.classList[a]("smart-disabled"),e.$.sortButton.classList[a]("smart-disabled"),e.$.groupButton.classList[a]("smart-disabled"),e.$.formatButton.classList[a]("smart-disabled"),e.$.colorsButton.classList[a]("smart-disabled"),e.$.searchButton.classList[a]("smart-disabled"),e.$.downloadButton.classList[a]("smart-disabled"),e.$.resourceButton.classList[a]("smart-disabled"),e.$.labelButton.classList[a]("smart-disabled")};s(e.dataSource&&0===e.dataSource.length),t.dataSource&&t.dataSource.virtualDataSource&&!t.dataSource.virtualDataSourceOnExpand&&"infinite"!==t.scrolling&&s(!1),0===t.columns.length?e.$.customizeButton.classList.add("smart-disabled"):e.$.customizeButton.classList.remove("smart-disabled")}}}get hasStyleObserver(){return!1}render(){const e=this;e._appliedFiltering={filters:[],operator:"and"},e._appliedSorting={dataFields:[],dataTypes:[],orderBy:[]},e._localizeHeader(),e._getInnerElementMessages(),super.render()}openFormatPanel(){const e=this,t=e.dataSource;if(!t||0===t.length||e.disabled||"none"===e.headerPosition)return;let a;if(e._refreshColumns("format"),e.grid.closeMenu(),e._editInfo&&e._editInfo.window.close(),e._closeDownloadMenu(),e._closeViewsMenu(),e._closeResourceMenu(),e._closeLabelMenu(),e.$.headerDropDown.classList.add("format-panel"),e.$.headerDropDown.classList.remove("customize-panel","colors-panel","sort-panel","search-panel","filter-panel"),e.$.format.classList.remove("smart-hidden"),e.$.customize.classList.add("smart-hidden"),e.$.sort.classList.add("smart-hidden"),e.$.colors.classList.add("smart-hidden"),e.$.filter.classList.add("smart-hidden"),e.$.group&&e.$.group.classList.add("smart-hidden"),e.$.search.classList.add("smart-hidden"),e._closeSearchPanel(),e._formatPartCreated)a=e.$.format.firstElementChild,a.columns=e.columns,a.dataSource=e.dataSource,a.locale=e.locale,a.messages=e._innerElementMessages.formattingPanel,a.rightToLeft=e.rightToLeft;else{a=document.createElement("smart-formatting-panel"),a.animation=e.animation,a.columns=e.columns,a.dataSource=e.dataSource,a.locale=e.locale,a.messages=e._innerElementMessages.formattingPanel,a.rightToLeft=e.rightToLeft,a.theme=e.theme,a.unfocusable=!1,a.ownerElement=e,a.dropDownAppendTo="body",e._formattingPanel=a,e.$.format.appendChild(a);const t=document.createElement("div");t.className="smart-format-panel smart-grid-panel-container-footer",t.setAttribute("role","presentation"),t.innerHTML=`<div id="buttonsContainer" class="smart-grid-panel-buttons-container smart-unselectable" role="presentation"><span class="smart-grid-panel-cancel-button" role="button">${e.localize("cancel")}</span><span class="smart-grid-panel-apply-button" role="button">${e.localize("apply")}</span></div>`,e._formattingPanel.$.apply=t.querySelector(".smart-grid-panel-apply-button"),e._formattingPanel.$.cancel=t.querySelector(".smart-grid-panel-cancel-button"),e.$.format.appendChild(t),e._formatPartCreated=!0,t.applyButton=t.querySelector(".smart-grid-panel-apply-button"),t.cancelButton=t.querySelector(".smart-grid-panel-cancel-button"),t.applyButton.onclick=()=>{a.$.fireEvent("apply"),e.grid._conditionalFormattingChanged=!0,e.grid._conditionalFormatting=a.apply(),e.grid.conditionalFormatting=a.getItems(),e.grid._recycle(!1),e.grid._conditionalFormattingChanged=!1},t.cancelButton.onclick=()=>{a.$.fireEvent("cancel")},e.grid.conditionalFormatting&&(a.items=e.grid.conditionalFormatting)}a.focus(),e._openHeaderDropDown(e.$.formatButton)}_openHeaderDropDown(e){const t=this;t.$.headerDropDown.parentElement!==document.body&&(document.body.appendChild(t.$.headerDropDown),t.$.headerDropDown.addEventListener("apply",(e=>{const a=t._getDropDownType();t._applyHandler(e),t.grid.$.fireEvent("batchChange",{type:a})})),t.$.headerDropDown.addEventListener("cancel",(()=>{const e=t._getDropDownType();t.closePanel(),t.grid.$.fireEvent("batchCancel",{type:e})}))),super._openHeaderDropDown(e),t.refreshHeaderDropDownPosition(e)}refreshHeaderDropDownPosition(e){const t=this;if(!t.$.headerDropDown||t.$.headerDropDown&&!t.$.headerDropDown.classList.contains("open"))return void(t._dropDownTarget=e);e?t._dropDownTarget=e:t._dropDownTarget&&(e=t._dropDownTarget);const a=t.grid.parentElement,s=a?a.scrollTop:0;if(t.grid.header.appendTo){const e=document.querySelector(t.grid.header.appendTo);t.$.headerDropDown.style.top=t.grid.offset(e).top+e.offsetHeight-s+"px"}else t.$.headerDropDown.style.top=t.grid.offset(t.grid).top+t.grid.$.header.offsetHeight-s+"px";const o=()=>{if(e){const a=t.grid.offset(e);if(a.left+t.$.headerDropDown.offsetWidth<document.body.scrollLeft+document.body.offsetWidth?t.$.headerDropDown.style.left=a.left+"px":t.$.headerDropDown.style.left=document.body.scrollLeft+document.body.offsetWidth-t.$.headerDropDown.offsetWidth+"px",a.top+t.$.headerDropDown.offsetHeight>=document.documentElement.clientHeight-40){let e=t.grid.offset(t.grid).top-t.$.headerDropDown.offsetHeight;if(t.grid.header.appendTo){const a=document.querySelector(t.grid.header.appendTo);e=t.grid.offset(a).top-t.$.headerDropDown.offsetHeight}e<0&&(e=0),t.$.headerDropDown.style.top=e+"px"}}else t.$.headerDropDown.style.left=t.grid.offset(t.grid).left+"px"};t.grid.offsetWidth<600&&t.$.headerDropDown.offsetWidth>t.grid.offsetWidth?(t.$.headerDropDown.style.width="90%",t.$.headerDropDown.style.left=t.grid.offset(t.grid).left+"px"):(t.$.headerDropDown.style.width="",o())}openFilterPanel(e){const t=this,a=t.dataSource;t._refreshColumns("filter"),t.$.view.classList.add("smart-hidden");const s=this.columns.map((e=>{const t=Object.assign({},e),s=a.dataFields.find((e=>e.name===t.dataField));return s&&(t.dataType=s.dataType),t})).filter((e=>e.allowFilter));if(super.openFilterPanel(s,null),t._closeDownloadMenu(),t._closeViewsMenu(),t._closeResourceMenu(),t._closeLabelMenu(),t.grid.closeMenu(),e){const a=t.$.headerDropDown.querySelector("smart-multi-column-filter-panel");a.$.itemsContainer.appendChild(a._createItem(t.columns.find((t=>t.dataField===e.dataField)),"string"===e.dataType?"CONTAINS":"EQUAL",""));const s=a.querySelectorAll(".smart-grid-panel-item");setTimeout((()=>{s[s.length-1].querySelector(".editor").focus()}),350)}}openColorsPanel(){const e=this,t=e.dataSource;e._refreshColumns("colors"),e.$.view.classList.add("smart-hidden");const a=this.columns.map((e=>{const a=Object.assign({},e),s=t.dataFields.find((e=>e.name===a.dataField));return s&&(a.dataType=s.dataType),a}));super.openColorsPanel(a,null,e.grid),e._closeDownloadMenu(),e._closeViewsMenu(),e._closeResourceMenu(),e._closeLabelMenu(),e.grid.closeMenu()}openViewPanel(){const e=this;if(e.disabled||"none"===e.headerPosition)return;if(!1===e.grid.appearance.showViewBarAsDropdown)return;let t;e.$.headerDropDown.classList.add("view-panel"),e.$.headerDropDown.classList.remove("customize-panel","filter-panel","sort-panel","search-panel","group-panel","format-panel","colors-panel"),e.$.view.classList.remove("smart-hidden"),e.$.colors.classList.add("smart-hidden"),e.$.filter.classList.add("smart-hidden"),e.$.sort.classList.add("smart-hidden"),e.$.search.classList.add("smart-hidden"),e.$.group.classList.add("smart-hidden"),e.$.format.classList.add("smart-hidden"),e.$.customize.classList.add("smart-hidden"),e.$.format&&e.$.format.classList.add("smart-hidden"),e.$.group&&e.$.group.classList.add("smart-hidden"),e.$.search.classList.add("smart-hidden"),e._closeSearchPanel(),e._viewPartCreated?t=e.$.view.firstElementChild:(t=document.createElement("div"),t.classList.add("smart-view-panel","smart-grid-view-bar"),e.$.view.appendChild(t),e.$.viewPanel=t,e._viewPartCreated=!0,e._updateViews()),e._openHeaderDropDown(e.$.viewStatesButton)}openSortPanel(e){const t=this,a=t.dataSource;t._refreshColumns("sort"),t.$.view.classList.add("smart-hidden");const s=t.columns.map((e=>{const s=Object.assign({},e),o=t._appliedSorting.dataFields.indexOf(s.dataField),i=a.dataFields.find((e=>e.name===s.dataField));return i&&(s.dataType=i.dataType,s.sortIndex=o,-1!==o&&(s.sortDirection=t._appliedSorting.orderBy[o])),s})).filter((e=>e.allowSort));if(e&&t._appliedSorting&&-1===t._appliedSorting.dataFields.indexOf(e.dataField)){const a=s.find((t=>t.dataField===e.dataField));a.sortDirection="ascending",a.sortIndex=t._appliedSorting.dataFields.length}super.openSortPanel(s),t._closeDownloadMenu(),t._closeViewsMenu(),t._closeResourceMenu(),t._closeLabelMenu();const o=t.grid;o.closeMenu();const i=t.$.headerDropDown.querySelector("smart-sort-panel");if(!i)return;i.grid=o,i.$.maintainSortContainer.classList.remove("smart-hidden"),o.sorting.maintainSort?i.$.maintainSortContainer.firstElementChild.setAttribute("active",""):i.$.maintainSortContainer.firstElementChild.removeAttribute("active"),i._changeApplyButtonText();const n=i.$.inputNotSorted,r=()=>{const e=i.querySelectorAll(".smart-grid-panel-item");"many"===t.grid.sorting.mode||e.length<1?n.classList.remove("smart-visibility-hidden"):e.length>=1&&n.classList.add("smart-visibility-hidden")};i.onDataSourceChange=()=>{r()},r()}openCustomizePanel(){const e=this;if(e.disabled||"none"===e.headerPosition)return;e._closeDownloadMenu(),e._closeViewsMenu(),e._closeResourceMenu(),e._closeLabelMenu(),e._refreshColumns("customize");let t=e.columns;const a=e.grid;a.closeMenu(),a.appearance.showColumnGroupsInColumnPanel&&(t=[],a.columns.forEach((e=>{if(!e.columnGroup){const a={label:e.label,dataField:e.dataField,level:0,parentDataField:null,dataType:e.dataType||"string",columnGroup:e.columnGroup||null,allowHide:void 0===e.allowHide||e.allowHide,allowSort:void 0===e.allowSort||e.allowSort,allowFilter:void 0===e.allowFilter||e.allowFilter,allowGroup:void 0===e.allowGroup||e.allowGroup,visible:void 0===e.visible||e.visible};t.push(a)}})),a._columnGroups.forEach((e=>{const a={dataField:e.name,label:e.label,level:0,disableDrag:!0,disableToggle:!1,allowHide:!0};if(t.push(a),e.columns){let s=e.columns.length,o=0,i=[],n=[];e.columns.forEach((a=>{const r={label:a.label,dataField:a.dataField,level:1,parentDataField:e.name,dataType:a.dataType||"string",columnGroup:a.columnGroup||null,allowHide:void 0===a.allowHide||a.allowHide,allowSort:void 0===a.allowSort||a.allowSort,allowFilter:void 0===a.allowFilter||a.allowFilter,allowGroup:void 0===a.allowGroup||a.allowGroup,visible:void 0===a.visible||a.visible};!1===r.allowHide&&(s--,n.push(r.dataField)),r.visible||(o++,i.push(r.dataField)),t.push(r)})),s<=0&&(a.allowHide=!1,a.disableToggle=!0),e.columns.length===o||s===o&&n.toString()!==i.toString()?a.visible=!1:a.visible=!0}})));const s=e.$.customize,o=t.map((t=>{const a={};return a.visible=t.visible,a.label=t.label,a.dataField=t.dataField,-1!==[e.coverField,e.titleField].indexOf(a.dataField)?a.disableToggle=!0:a.disableToggle=!1,void 0!==t.level&&(a.level=t.level),t.disableDrag&&(a.disableDrag=!0),t.parentDataField&&(a.parentDataField=t.parentDataField),t.allowHide||(a.disableToggle=!0),a}));let i;if(e._closeDialog(),e.$.headerDropDown.classList.add("customize-panel"),e.$.headerDropDown.classList.remove("view-panel","colors-panel","filter-panel","sort-panel","search-panel","group-panel","format-panel"),s.classList.remove("smart-hidden"),e.$.filter.classList.add("smart-hidden"),e.$.sort.classList.add("smart-hidden"),e.$.search.classList.add("smart-hidden"),e.$.group.classList.add("smart-hidden"),e.$.format.classList.add("smart-hidden"),e.$.view.classList.add("smart-hidden"),e.$.colors.classList.add("smart-hidden"),e._closeSearchPanel(),e._customizePartCreated)i=s.querySelector("smart-column-panel"),i.locale=e.locale,i.messages=e._innerElementMessages.columnPanel,i.set("dataSource",o),i.propertyChangedHandler("dataSource",void 0,o),i.rightToLeft=e.rightToLeft;else{const t=document.createDocumentFragment(),a=document.createElement("smart-column-panel");a.rightToLeft=e.rightToLeft,a.animation=e.animation,a.dataSource=o,a.locale=e.locale,a.messages=e._innerElementMessages.columnPanel,a.theme=e.theme,t.appendChild(a),e.$.customize.appendChild(t),e._customizePartCreated=!0}e._changedVisibility=new Map,e._openHeaderDropDown(e.$.customizeButton)}_applyFilter(e,t){const a=this;a.grid.beginUpdate(),a.grid.context=a.grid,a.grid.clearFilter();for(let t=0;t<e.length;t++){const s=e[t],o=s[0],i=s[1];a.grid.columnByDataField[o].filter=i}a.grid._filterOperator=t,a.grid.endUpdate(),a.grid.refreshFilters(),a.grid.context=document,a.grid.autoSaveState()}_applySort(){const e=this,t=e._appliedSorting;e.grid.beginUpdate(),e.grid.sorting.maintainSort=t.maintainSort,e.grid.context=e.grid,e.grid.clearSort();for(let a=0;a<t.dataFields.length;a++)e.grid.sortBy(t.dataFields[a],t.orderBy[a]);e.grid.endUpdate(),e.grid.context=document,e.grid.autoSaveState()}_getDropDownType(){const e=this;let t=null;return e.$.headerDropDown.classList.contains("filter-panel")?t="filter":e.$.headerDropDown.classList.contains("sort-panel")?t="sort":e.$.headerDropDown.classList.contains("search-panel")?t="search":e.$.headerDropDown.classList.contains("group-panel")?t="group":e.$.headerDropDown.classList.contains("format-panel")?t="format":e.$.headerDropDown.classList.contains("customize-panel")?t="customize":e.$.headerDropDown.classList.contains("view-panel")?t="view":e.$.headerDropDown.classList.contains("colors-panel")&&(t="colors"),t}_applyHandler(e){const t=this,a=e.target,s=e.detail,o=t.$.customize;if(t.grid&&"kanban"===t.grid.view&&t.grid._kanban&&o.contains(a))return t.grid._kanban._applyHandler(e,"customize"),void t.closePanel();o.contains(a)?t._applyColumns(s.value,s.moves):t.$.filter.contains(a)?t.addFilter(s.filters,s.operator,s.value):t.$.sort.contains(a)?t.addSort(s.sortByInfo):t.$.colors.contains(a)&&t.addColors(s.value,s.decorator,s.filters),t.closePanel()}_documentUpHandler(e){const t=this;let a=e.originalEvent.target,s=t.grid?t.grid.$.header:null;if(t.grid&&t.grid.header.appendTo&&(s=document.querySelector(t.grid.header.appendTo)),!s)return;t.shadowRoot&&a===t&&(a=e.originalEvent.composedPath()[0]);const o=e.originalEvent.composedPath();for(let e=0;e<o.length;e++){const t=o[e];if(t&&t.classList&&t.classList.contains("smart-menu-item")){const e=t.closest("smart-menu");if(e&&e.classList.contains("smart-grid-views-menu"))return;if(e&&e.classList.contains("smart-grid-download-menu"))return}}if(t._closeDownloadMenu(),t._closeViewsMenu(),t._closeResourceMenu(),t._closeLabelMenu(),!("none"===t.headerPosition||t.$.headerDropDown.classList.contains("smart-visibility-hidden")||a!==s&&s.contains(a))){const o=a.closest("smart-scroll-viewer"),i=a.closest(".smart-drop-down");if((!o||!s.contains(o.ownerElement))&&(!i||i.ownerElement&&!s.contains(i.ownerElement))){const a=e.originalEvent.composedPath();for(let e=0;e<a.length;e++){const t=a[e];if(t&&t.classList&&t.classList.contains("smart-data-view-header-drop-down"))return;if(t&&t.classList&&t.classList.contains("smart-formatting-panel-popup"))return}if(o&&o.ownerElement){const e=o.ownerElement.parents;for(let t=0;t<e.length;t++){const a=e[t];if(a&&a.classList&&a.classList.contains("smart-data-view-header-drop-down"))return}}if(i&&i.ownerElement){const e=i.ownerElement.parents;for(let t=0;t<e.length;t++){const a=e[t];if(a&&a.classList&&a.classList.contains("smart-data-view-header-drop-down"))return}}if(t.$.headerDropDown.querySelector("[open]"))return;t.closePanel()}}}_refreshColumns(e){const t=this,a=t.grid;let s,o=new Map;if("kanban"===a.view&&a._kanban)switch(e){case"customize":return s=a._kanban._getCustomizeColumnPanelDataSource(),s=JSON.parse(JSON.stringify(s)),t._refreshCustomizeButton(),void(t.columns=s)}s=Array.isArray(a.columns)?[...a.columns]:[...a.columns.toArray()],s=s.filter((t=>!1!==t._visible&&!(("filter"===e||"sort"===e)&&("sort"===e&&!t.sortOrder||"filter"===e&&!t.filter)&&!1===t.visible))),s=s.map((e=>{let t=e.allowHide;return a.grouping&&a.grouping.autoHideGroupColumn&&a.dataSource.groupBy.indexOf(e.dataField)>=0&&(t=!1),{label:e.label,dataField:e.dataField,dataType:e.dataType||"string",columnGroup:e.columnGroup||null,allowHide:void 0===e.allowHide||t,allowSort:void 0===e.allowSort||e.allowSort,allowFilter:void 0===e.allowFilter||e.allowFilter,allowGroup:void 0===e.allowGroup||e.allowGroup,visible:void 0===e.visible||e.visible,sortIndex:void 0!==e.sortIndex&&null!==e.sortIndex?e.sortIndex:-1,sortDirection:void 0!==e.sortOrder?e.sortOrder:null,options:e.editor&&e.editor.dataSource?e.editor.dataSource:null}})),s=JSON.parse(JSON.stringify(s)),s.forEach((e=>{let t=e.columnGroup?e.columnGroup+"."+e.label:e.label,a=1;for(;o.get(t);)t=e.columnGroup?e.columnGroup+"."+e.label+` (${a})`:e.label+` (${a})`,a++;o.set(t,e),e.label=t})),t.columns=s,t._refreshCustomizeButton()}_init(e){const t=this;if(t.grid=e,e.dataSource&&e.dataSource.boundSource){t._refreshColumns("init");const a=Array.isArray(e.dataSource.boundSource)?e.dataSource.boundSource:e.dataSource.boundSource.toArray();t.dataSource=new Smart.DataAdapter({observable:!1,dataSource:[...a],dataFields:e.dataSource.dataFields})}t.grid._openRowSettingsDialog=t._openRowSettingsDialog,t.rightToLeft=t.grid.rightToLeft,t.refreshTools(),t.$.headerDropDown.onclick=e=>{t.grid._headerClickHandler(e),e.stopPropagation(),e.preventDefault()},t.grid.removeEventListener("change",t._refreshFromSelection),t.grid.addEventListener("change",t._refreshFromSelection),t.grid.appearance.showViewBarAsDropdown||t._updateViews(),e.header.onInit&&e.header.onInit(t)}_removeMenu(){const e=this;if(e.downloadMenu){const t=e.downloadMenu.querySelector("smart-menu");t&&e.downloadMenu.removeChild(t)}}_removeLabelMenu(){const e=this;if(e.labelMenu){const t=e.labelMenu.querySelector("smart-menu");t&&e.labelMenu.removeChild(t);const a=e.labelMenu.querySelector(".label");a&&e.labelMenu.removeChild(a)}}_removeResourceMenu(){const e=this;if(e.resourceMenu){const t=e.resourceMenu.querySelector("smart-menu");t&&e.resourceMenu.removeChild(t);const a=e.resourceMenu.querySelector(".label");a&&e.resourceMenu.removeChild(a)}}_removeViewsMenu(){const e=this;if(e.viewsMenu){const t=e.viewsMenu.querySelector("smart-menu");t&&e.viewsMenu.removeChild(t);const a=e.viewsMenu.querySelector(".label");a&&e.viewsMenu.removeChild(a)}}_createViewsMenuItems(){const e=this,t=e.grid;e._removeViewsMenu();const a=document.createElement("smart-menu"),s=document.createDocumentFragment();a.classList.add("smart-grid-views-menu"),a.checkable=!0,a.checkboxes=!0,a.style.width="100%",a.mode="vertical",a.dropDownAppendTo="body",a.rightToLeft=t.rightToLeft,a.style.minWidth="150px";const o=(e,a,s)=>{const o=document.createElement("smart-menu-item");let i="smart-icon-grid-alt";switch(a){case"grid":i="smart-icon-grid-alt","grid"===t.view&&s&&(o.setAttribute("focus",""),o.checked=!0),o.title=t.localize("gridView");break;case"kanban":i="smart-icon-kanban-alt","kanban"===t.view&&s&&(o.setAttribute("focus",""),o.checked=!0),o.title=t.localize("kanbanView");break;case"card":i="smart-icon-card-alt","card"===t.view&&s&&(o.setAttribute("focus",""),o.checked=!0),o.title=t.localize("cardView");break;case"scheduler":i="smart-icon-scheduler","scheduler"===t.view&&s&&(o.setAttribute("focus",""),o.checked=!0),o.title=t.localize("schedulerView");break;case"timeline":i="smart-icon-timeline","timeline"===t.view&&s&&(o.setAttribute("focus",""),o.checked=!0),o.title=t.localize("timelineView")}return o.label='<span class="smart-grid-icon '+i+'"></span>'+e,o.value=a,o};s.appendChild(o(t.localize("viewGrid"),"grid",!0)),s.appendChild(o(t.localize("viewKanban"),"kanban",!0)),s.appendChild(o(t.localize("viewCard"),"card",!0)),s.appendChild(o(t.localize("viewScheduler"),"scheduler",!0)),a.appendChild(s),e.viewsMenu.insertBefore(a,e.viewsMenu.children[e.viewsMenu.children.length-1]),e.viewsMenu.onpointerup=()=>!1,a.onItemClick=a=>{e._setView(a.detail.value),e._closeViewsMenu(),t.autoSaveState(),e._updateViews()}}_createResourceMenuItems(){const e=this,t=e.grid;e._removeResourceMenu();const a=document.createElement("smart-menu"),s=document.createDocumentFragment();a.classList.add("smart-grid-views-menu"),a.checkable=!0,a.checkboxes=!0,a.style.width="100%",a.mode="vertical",a.dropDownAppendTo="body",a.rightToLeft=t.rightToLeft,a.style.minWidth="150px";const o=(e,a,s,o)=>{const i=document.createElement("smart-menu-item");return i.label='<span class="smart-grid-icon '+a+'"></span>'+e,t._dateStackedBySelect===o&&(i.setAttribute("focus",""),i.checked=!0),i.value=o,i};for(let e=0;e<t.columns.length;e++){const a=t.columns[e];a.editor&&a.editor.dataSource&&a.editor.singleSelect&&a.editor.dataSource.length&&("collaborator"===a.template||"tags"===a.template)&&s.appendChild(o(a.label,a.icon,0,a.dataField))}a.appendChild(s),e.resourceMenu.insertBefore(a,e.resourceMenu.children[e.resourceMenu.children.length-1]),e.resourceMenu.onpointerup=()=>!1,a.onItemClick=a=>{t._dateStackedBySelect===a.detail.item.value?delete t._dateStackedBySelect:t._dateStackedBySelect=a.detail.item.value,t._onSort&&t._onSort(),e._closeResourceMenu(),t.autoSaveState()}}_updateViews(){const e=this,t=e.grid;if(t.appearance.showViewBarAsDropdown||e.$.viewStatesButton.removeAttribute("aria-expanded"),t.stateSettings.enabled&&t.appearance.showViewBar){const a=e=>{(!t.users.length||!1!==t.currentUser&&null!==t.currentUser&&void 0!==t.currentUser)&&(delete t.stateSettings.storage[e.valueName],t.stateSettings.current===e.valueName&&(t.stateSettings.current=""),t.stateSettings.onStateChange&&t.stateSettings.onStateChange(t.stateSettings.storage[t.stateSettings.current],e.valueName,t.stateSettings.storage,t.stringify_object),e.remove())},s=a=>{const s=document.createElement("input");if(s.value=a.valueName,t.users.length&&(!1===t.currentUser||null===t.currentUser||void 0===t.currentUser))return;const o=()=>{if(s.value){if(t.stateSettings.storage[s.value])return;const o=t.stateSettings.storage[a.valueName];t.stateSettings.current===a.valueName&&(t.stateSettings.current=s.value),delete t.stateSettings.storage[o.name],o.name=s.value,t.stateSettings.storage[o.name]=o,t.stateSettings.onStateChange&&t.stateSettings.onStateChange(t.stateSettings.storage[t.stateSettings.current],o.name,t.stateSettings.storage,t.stringify_object),delete t.stateSettings.storage[a.valueName],s.remove();const i=s.value;a.valueName=i;let n="smart-icon-grid-alt";switch(o.view){case"grid":n="smart-icon-grid-alt";break;case"kanban":n="smart-icon-kanban-alt";break;case"card":n="smart-icon-card-alt";break;case"scheduler":n="smart-icon-scheduler";break;case"timeline":n="smart-icon-timeline"}i===t.stateSettings.current?(a.selected=!0,a.label='<span class="show smart-grid-icon '+n+'"></span><span style="overflow: hidden; text-overflow: ellipsis;">'+i+'</span><span class="show smart-grid-icon smart-icon-mode-edit"></span><span class="smart-grid-icon smart-icon-delete"></span>'):a.label='<span class="show smart-grid-icon '+n+'"></span><span style="overflow: hidden; text-overflow: ellipsis;">'+i+'</span><span class="show smart-grid-icon smart-icon-mode-edit"></span><span class="show smart-grid-icon smart-icon-delete"></span>',e._refreshViewsButton()}};s.onselectstart=e=>{e.stopPropagation()},s.onpointerdown=s.onpointerup=e=>{e.stopPropagation()},s.onkeydown=e=>{e.stopPropagation()},s.onkeyup=e=>{"Escape"===e.key&&(s.onchange=s.onblur=null,s.remove()),"Enter"===e.key&&(s.onchange=s.onblur=null,o()),e.stopPropagation()},s.onchange=()=>{s.onblur=null,s.onkeyup=null,o()},s.onblur=()=>{s.remove()},s.style.width="100%",s.style.height="100%",s.style.position="absolute",s.style.left="0px",s.style.top="0px",s.style.zIndex=99,s.classList.add("smart-input"),s.classList.add("underlined"),s.style.backgroundColor="var(--smart-background)",s.style.color="var(--smart-background-color)",a.querySelector(".smart-list-item-label-element").appendChild(s),setTimeout((()=>{s.focus()}),50)},o=(e,a,s)=>{const o=document.createElement("smart-list-item");let i="smart-icon-grid-alt";switch(a){case"grid":i="smart-icon-grid-alt";break;case"kanban":i="smart-icon-kanban-alt";break;case"card":i="smart-icon-card-alt";break;case"scheduler":i="smart-icon-scheduler";break;case"timeline":i="smart-icon-timeline"}return o.value=s,o.valueName=e,e===t.stateSettings.current?(o.selected=!0,o.label='<span class="show smart-grid-icon '+i+'"></span><span style="overflow: hidden; text-overflow: ellipsis;">'+e+'</span><span class="show smart-grid-icon smart-icon-mode-edit"></span><span class="smart-grid-icon smart-icon-delete"></span>'):o.label='<span class="show smart-grid-icon '+i+'"></span><span style="overflow: hidden; text-overflow: ellipsis;">'+e+'</span><span class="show smart-grid-icon smart-icon-mode-edit"></span><span class="show smart-grid-icon smart-icon-delete"></span>',t.users.length&&(!1!==t.currentUser&&null!==t.currentUser&&void 0!==t.currentUser||(e===t.stateSettings.current?(o.selected=!0,o.label='<span class="show smart-grid-icon '+i+'"></span><span style="overflow: hidden; text-overflow: ellipsis;">'+e+'</span><span class="smart-visibility-hidden smart-grid-icon smart-icon-mode-edit"></span><span class="smart-visibility-hidden smart-grid-icon smart-icon-delete"></span>'):o.label='<span class="show smart-grid-icon '+i+'"></span><span style="overflow: hidden; text-overflow: ellipsis;">'+e+'</span><span class="smart-visibility-hidden smart-grid-icon smart-icon-mode-edit"></span><span class="smart-visibility-hidden smart-grid-icon smart-icon-delete"></span>')),o};t.appearance.showViewBarAsDropdown||e.$.viewStatesButton.setAttribute("aria-expanded",!0);let i=t.$.viewBar;if(t.appearance.showViewBarAsDropdown&&(i=e.$.viewPanel),t.appearance.viewBarAppendTo&&(i=document.querySelector(t.appearance.viewBarAppendTo),i&&i.classList.add("smart-grid-view-bar")),!i.querySelector(".smart-grid-view-chooser-container")){const a=document.createElement("div");a.classList.add("smart-grid-view-chooser-container","smart-container");const s=document.createElement("div");s.classList.add("new-view"),!1===t.editing.enabled&&s.classList.add("smart-hidden");const o=(a,s)=>{a.stopPropagation(),a.preventDefault(),t.beginUpdate();let o=0,n=[];if(t.stateSettings.storage){for(;t.stateSettings.storage[t.localize("view")+" "+o];)o++;for(let e in t.stateSettings.storage){const a=t.stateSettings.storage[e];n[a.view]=1+n[a.view]||1}}let r="";switch(s){case"grid":r=t.localize("viewGrid");break;case"kanban":r=t.localize("viewKanban");break;case"card":r=t.localize("viewCard");break;case"scheduler":r=t.localize("viewScheduler");break;case"timeline":r=t.localize("viewTimeline")}if(n[s]||(n[s]=""),t.stateSettings.storage){let e=n[s]?t.localize("view")+" "+n[s]:t.localize("view");for(;t.stateSettings.storage[r+" "+e];)e=t.localize("view")+" "+n[s],n[s]++}const l=n[s]?t.localize("view")+" "+n[s]:t.localize("view");i._input.value=r+" "+l,t.stateSettings.current||(t.stateSettings.current=i._input.value),t.saveState(),t.stateSettings.current=i._input.value,e._closeViewsMenu(),t.resetState(!1);const d=t.view;t.set("view","grid",!1),t._kanban&&t._kanban._reset(),delete t.columnByDataField.taskStatus,"grid"===s&&"grid"!==d?e._setView("grid",!0):"kanban"===s?e._setView("kanban"):"card"===s?e._setView("card"):"scheduler"===s?e._setView("scheduler"):"timeline"===s&&e._setView("timeline"),t.saveState(),t.endUpdate(),e._updateViews(),t.$.fireEvent("viewChanged",{view:t.view})},n=document.createElement("smart-button");n.classList.add("selected"),n.classList.add("view"),n.innerHTML='<span style="display: flex; align-items: center;"><span class="show smart-grid-icon smart-icon-grid-alt"></span>'+t.localize("newGrid")+'</span><span style="font-size: 12px; color: rgba(var(--smart-secondary-rgb), 0.6);" class="show smart-grid-icon smart-icon-plus"></span>',n.title=t.localize("gridView");const r=document.createElement("smart-button");r.innerHTML='<span style="display: flex; align-items: center;"><span class="show smart-grid-icon smart-icon-kanban-alt"></span>'+t.localize("newKanban")+'</span><span style="font-size: 12px; color: rgba(var(--smart-secondary-rgb), 0.6);" class="show smart-grid-icon smart-icon-plus"></span>',r.classList.add("view"),r.title=t.localize("kanbanView");const l=document.createElement("smart-button");l.classList.add("selected"),l.classList.add("view"),l.innerHTML='<span style="display: flex; align-items: center;"><span class="show smart-grid-icon smart-icon-card-alt"></span>'+t.localize("newCard")+'</span><span style="font-size: 12px; color: rgba(var(--smart-secondary-rgb), 0.6);" class="show smart-grid-icon smart-icon-plus"></span>',l.title=t.localize("cardView");const d=document.createElement("smart-button");d.classList.add("selected"),d.classList.add("view"),d.innerHTML='<span style="display: flex; align-items: center;"><span class="show smart-grid-icon smart-icon-scheduler"></span>'+t.localize("newScheduler")+'</span><span style="font-size: 12px; color: rgba(var(--smart-secondary-rgb), 0.6);" class="show smart-grid-icon smart-icon-plus"></span>',d.title=t.localize("schedulerView");const c=document.createElement("smart-button");c.classList.add("selected"),c.classList.add("view"),c.innerHTML='<span style="display: flex; align-items: center;"><span class="show smart-grid-icon smart-icon-timeline"></span>'+t.localize("newTimeline")+'</span><span style="font-size: 12px; color: rgba(var(--smart-secondary-rgb), 0.6);" class="show smart-grid-icon smart-icon-plus"></span>',c.title=t.localize("timelineView");const u=document.createElement("div");u.classList.add("smart-grid-view-storage"),a.appendChild(u);const m=document.createElement("smart-input");m.classList.add("underlined"),m.placeholder=t.localize("viewNamePlaceholder"),m.hint=t.localize("viewNamePlaceholder"),m.onselectstart=e=>{e.stopPropagation()};const p=document.createElement("div");p.innerHTML="<span>"+t.localize("settings")+'</span><span class="smart-grid-icon show smart-icon-sort-down"></span>',p.classList.add("view-label"),s.appendChild(p);const h=document.createElement("div");s.appendChild(h),h.classList.add("footer"),t.users&&t.users.length&&(!1!==t.currentUser&&null!==t.currentUser&&void 0!==t.currentUser||(h.classList.add("smart-hidden"),p.classList.add("smart-hidden"))),h.appendChild(n),h.appendChild(r),h.appendChild(l),h.appendChild(d),p.onclick=()=>{p.classList.toggle("collapsed"),h.classList.toggle("collapsed")};const g=document.createElement("div");g.innerHTML='<span class="smart-grid-icon show smart-icon-plus"></span><span><a href="javascript:void();">'+t.localize("createView")+"</a></span>",g.classList.add("view-button"),g.onclick=e=>{let t="grid";r.classList.contains("selected")&&(t="kanban"),l.classList.contains("selected")&&(t="card"),d.classList.contains("selected")&&(t="scheduler"),c.classList.contains("selected")&&(t="timeline"),o(e,t,s)},r.onpointerdown=()=>{r.classList.add("selected"),n.classList.remove("selected"),l.classList.remove("selected"),d.classList.remove("selected"),c.classList.remove("selected"),g.click()},n.onpointerdown=()=>{n.classList.add("selected"),r.classList.remove("selected"),l.classList.remove("selected"),d.classList.remove("selected"),c.classList.remove("selected"),g.click()},l.onpointerdown=()=>{n.classList.remove("selected"),r.classList.remove("selected"),l.classList.add("selected"),d.classList.remove("selected"),c.classList.remove("selected"),g.click()},d.onpointerdown=()=>{n.classList.remove("selected"),r.classList.remove("selected"),l.classList.remove("selected"),d.classList.add("selected"),c.classList.remove("selected"),g.click()},c.onpointerdown=()=>{n.classList.remove("selected"),r.classList.remove("selected"),l.classList.remove("selected"),d.classList.remove("selected"),c.classList.add("selected"),g.click()};const v=()=>{t.stateSettings.storage&&!t.stateSettings.storage[m.value]||m.value&&!t.stateSettings.storage?g.classList.remove("disabled"):g.classList.add("disabled")};m.update=()=>v(),m.onkeyup=m.onchange=()=>{v()},v(),a.appendChild(s),i._storage=u,i._input=m,i.appendChild(a)}let n=t.stateSettings.storage;(n&&0===Object.keys(n).length||!n)&&(i._input.value||("kanban"===t.view?i._input.value=t.localize("newKanban")+" "+t.localize("view"):i._input.value=t.localize("newGrid")+" "+t.localize("view")),t.stateSettings.current||(t.stateSettings.current=i._input.value),t.saveState(),t.stateSettings.current=i._input.value,n=t.stateSettings.storage);const r=i._storage;if(r.innerHTML="",n){let e=1;const l=document.createDocumentFragment();let d=[],c=[];for(let e in n){const t=n[e];c[t.name]||(c[t.name]=t,d.push({name:e,value:t}))}d.sort(((e,t)=>{const a=new Date(e.value.date),s=new Date(t.value.date);if(e.value&&e.value.date&&t.value&&t.value.date){if(!e.value.date||!t.value.date)return-1;if(a<s)return-1;if(a>s)return 1;if(a===s)return 0}else{if(e.name<t.name)return-1;if(e.name>t.name)return 1;if(e.name===t.name)return 0}}));let u=[],m=-1;for(let t in d){const a=d[t],s=a.name,i=a.value;e++,u[i.view]=u[i.view]++||1;const n=o(s,i.view,i);n.selected&&(m=parseInt(t),delete n.selected),l.appendChild(n)}if(e){const e=document.createElement("smart-list-box");e.style.width="100%",e.style.height="100%",e.allowDrag=!0,e.allowDrop=!0,e.itemHeight=32,e.mode="vertical",e.style.borderColor="transparent",e.classList.add("smart-grid-views-menu"),e.checkable=!0,e.checkboxes=!0,e.filterable=!0,e.filterInputPlaceholder=t.localize("commandBarSearch")+" "+t.localize("view"),e.selectionMode="one",e.disableAutoCheck=!0,e.rightToLeft=t.rightToLeft,e.ondragend=e=>{const t=e.detail.item,a=n[t.valueName];if(a){const t=e.detail.target;if(t){const e=n[t.valueName].date;if(e){let t=new Smart.Utilities.DateTime(e);const s="top"===Smart.ListBox.DragDrop.DropDetails.position?-10:10;t=t.addSeconds(s),a.date=t.toDate().toJSON()}}}},e.onkeydown=t=>{const a=e.querySelector("smart-list-item[checked]");a&&"F2"===t.key&&s(a)},e.onDoubleClick=e=>{const t=e.target.closest("smart-list-item");s(t)},e.onClick=e=>{if(e.target&&e.target.classList.contains("smart-icon-delete")){const t=e.target.closest("smart-list-item");a(t),e.preventDefault(),e.stopPropagation()}else if(e.target&&e.target.classList.contains("smart-icon-mode-edit")){const t=e.target.closest("smart-list-item");s(t),e.preventDefault(),e.stopPropagation()}else if("INPUT"===e.target.nodeName)return},e.appendChild(l),r.appendChild(e),e.clearSelection(),e.selectedIndexes=[m],e.onchange=a=>{if(a.detail&&a.detail.selected){const s=a.detail.addedItems[0];t.loadState(s.valueName),e.querySelectorAll("smart-list-item").forEach((e=>{e.querySelector(".smart-icon-delete").classList.add("show")})),s.querySelector(".smart-icon-delete").classList.remove("show"),t.stateSettings.onStateChange&&t.stateSettings.onStateChange(t.stateSettings.storage[t.stateSettings.current],s.valueName,t.stateSettings.storage,t.stringify_object)}}}if(t.stateSettings.storage)for(;t.stateSettings.storage[t.localize("view")+" "+e];)e++;let p="";switch(t.view){case"grid":p=t.localize("viewGrid");break;case"kanban":p=t.localize("viewKanban");break;case"card":p=t.localize("viewCard");break;case"scheduler":p=t.localize("viewScheduler");break;case"timeline":p=t.localize("viewTimeline")}if(t.stateSettings.storage)for(;t.stateSettings.storage[p+" "+t.localize("view")+" "+u[t.view]];)u[t.view]++;i._input.value=p+" "+t.localize("view")+" "+u[t.view],i._input.update()}}}_setView(e,t){const a=this,s=a.grid;if(s.view===e&&!0!==t)return;s.view;const o=s.context;if("kanban"===e)if(s.context=s,s.view="kanban",s.context=o,s._kanbanInitialized&&s.columnByDataField.taskStatus)if(s.columnByDataField.taskStatus&&s._stackedBy&&s.columnByDataField.taskStatus.dataField!==s._stackedBy){s.beginUpdate(),delete s.columnByDataField.taskStatus;const e=s.columnByDataField[s._stackedBy];s.columnByDataField.taskStatus=e,s._createKanban(e),s._refreshHeaderBar(),s.endUpdate(!1),s._hideSchedulerView(),s._showKanbanView(),a._refresh()}else s._hideSchedulerView(),s._showKanbanView(),a._refresh();else delete s._kanbanInitialized,s._initKanbanView("dynamic","grid");else"grid"===e?(s.context=s,s.view="grid",s.context=o,s._hideKanbanView(),s._hideSchedulerView(),a._refresh(),s.layout.isDirty=!0,s._resetCachedLayout(),s._refreshLayout(),s.refresh()):"card"===e?(s.context=s,s.view="card",s.context=o,s._hideKanbanView(),s._hideSchedulerView(),a._refresh(),s.layout.isDirty=!0,s._resetCachedLayout(),s._refreshLayout(),s.refresh()):"scheduler"!==e&&"timeline"!==e||(s.context=s,s.view=e,s.context=o,t?(s._hideKanbanView(),s._showSchedulerView(),a._refresh()):(s._createScheduler(),a._refresh(),s.layout.isDirty=!0,s._resetCachedLayout(),s._refreshLayout(),s.refresh()));s.$.fireEvent("viewChanged",{view:e}),a._refresh()}_createMenuItems(){const e=this,t=e.grid;e._removeMenu();const a=document.createElement("smart-menu"),s=document.createDocumentFragment();a.mode="vertical",a.dropDownAppendTo="body",a.classList.add("smart-grid-download-menu"),a.rightToLeft=t.rightToLeft;const o=(e,t)=>{const a=document.createElement("smart-menu-item");let s="#D50000";switch(t){case"csv":s="#3f51b5";break;case"pdf":s="#f4511e";break;case"xlsx":s="#0b8043";break;case"json":s="#8e24aa"}const o='<span style="position: absolute; top: 0px; font-size: 10px; color: '+s+'">'+t+"</span>";return a.label='<span style="color: '+s+'" class="smart-grid-icon smart-icon-docs"></span>'+o+e,a.value=t,a};s.appendChild(o(t.localize("download")+" CSV","csv")),s.appendChild(o(t.localize("download")+" XLSX","xlsx")),s.appendChild(o(t.localize("download")+" JSON","json")),a.appendChild(s),e.downloadMenu.appendChild(a),a.onItemClick=e=>{const a=new Date;t.dataExport.fileName="data_"+a.getFullYear()+"-"+a.getMonth()+"-"+a.getDate(),t.exportData(e.detail.value)}}closePanel(){const e=this;super.closePanel(),e.grid&&e.grid.focus(),e.downloadMenu&&e.downloadMenu.classList.contains("open")?e._closeDownloadMenu():e.viewsMenu&&e.viewsMenu.classList.contains("open")?e._closeViewsMenu():e.resourceMenu&&e.resourceMenu.classList.contains("open")?e._closeResourceMenu():e.labelMenu&&e.labelMenu.classList.contains("open")&&e._closeLabelMenu()}_closeResourceMenu(){const e=this,t=e.resourceMenu;t&&(t.parentNode&&(t.classList.remove("open"),setTimeout((()=>{t&&t.parentNode&&t.parentNode.removeChild(t)}),100)),e.$.resourceButton.classList.remove("selected"),e.$.resourceButton.removeAttribute("aria-expanded"),t.classList.remove("open"))}_openResourceMenu(){const e=this;if(e.grid.editing.isEditing&&e.grid.cancelEdit(),e.resourceMenu&&e.resourceMenu.classList.contains("open"))return void e._closeResourceMenu();e.$.headerDropDown.classList.remove("view-panel","group-panel","colors-panel","customize-panel","filter-panel","sort-panel","search-panel","format-panel"),e.$.group.classList.add("smart-hidden"),e.$.filter.classList.add("smart-hidden"),e.$.colors.classList.add("smart-hidden"),e.$.customize.classList.add("smart-hidden"),e.$.sort.classList.add("smart-hidden"),e.$.search.classList.add("smart-hidden"),e.$.format.classList.add("smart-hidden"),e.$.view.classList.add("smart-hidden"),e.closePanel(),e.$.resourceButton.classList.add("selected"),e.$.resourceButton.setAttribute("aria-expanded",!0),e.resourceMenu||(e.resourceMenu=document.createElement("div"),e.resourceMenu.classList.add("smart-grid-column-menu","smart-grid-resource-menu"),e.resourceMenu.setAttribute("theme",e.getAttribute("theme")),e.resourceMenu.id=e.id+"_"+e.tagName.toLowerCase()+"_menu_"+Math.floor(65536*(1+Math.random())).toString(16).substring(1)),e.resourceMenu.classList.add("smart-animate"),e._createResourceMenuItems(),e.resourceMenu.style.height="auto",e.isInShadowDOM?e.getRootNode().appendChild(e.resourceMenu):document.body.appendChild(e.resourceMenu);const t=e.$.resourceButton.getBoundingClientRect();let a=t.left+window.pageXOffset,s=t.bottom+window.pageYOffset;a+e.resourceMenu.offsetWidth>window.innerWidth&&(a=t.right+window.pageXOffset-e.resourceMenu.offsetWidth,a+e.resourceMenu.offsetWidth>window.innerWidth&&(a=window.innerWidth-e.resourceMenu.offsetWidth)),e.resourceMenu.style.left=a+"px",e.resourceMenu.style.top=s+"px",e.resourceMenu.classList.remove("smart-hidden"),e.resourceMenu.classList.add("open")}_closeLabelMenu(){const e=this,t=e.labelMenu;t&&(t.parentNode&&(t.classList.remove("open"),setTimeout((()=>{t&&t.parentNode&&t.parentNode.removeChild(t)}),100)),e.$.labelButton.classList.remove("selected"),e.$.labelButton.removeAttribute("aria-expanded"),t.classList.remove("open"))}_createLabelMenuItems(){const e=this,t=e.grid;e._removeLabelMenu();const a=document.createElement("smart-menu"),s=document.createDocumentFragment();a.classList.add("smart-grid-views-menu"),a.checkable=!0,a.checkboxes=!0,a.style.width="100%",a.mode="vertical",a.dropDownAppendTo="body",a.rightToLeft=t.rightToLeft,a.style.minWidth="150px";const o=(e,a,s,o)=>{const i=document.createElement("smart-menu-item");return i.label='<span class="smart-grid-icon '+a+'"></span>'+e,t._labeledBy===o&&(i.setAttribute("focus",""),i.checked=!0),i.value=o,i};for(let e=0;e<t.columns.length;e++){const a=t.columns[e];"string"===a.dataType&&s.appendChild(o(a.label,a.icon,0,a.dataField))}a.appendChild(s),e.labelMenu.insertBefore(a,e.labelMenu.children[e.labelMenu.children.length-1]),e.labelMenu.onpointerup=()=>!1,a.onItemClick=a=>{t._labeledBy===a.detail.item.value?delete t._labeledBy:t._labeledBy=a.detail.item.value,t._onSort&&t._onSort(),e._closeLabelMenu(),t.autoSaveState()}}_openLabelMenu(){const e=this;if(e.grid.editing.isEditing&&e.grid.cancelEdit(),e.labelMenu&&e.labelMenu.classList.contains("open"))return void e._closeLabelMenu();e.$.headerDropDown.classList.remove("view-panel","group-panel","colors-panel","customize-panel","filter-panel","sort-panel","search-panel","format-panel"),e.$.group.classList.add("smart-hidden"),e.$.filter.classList.add("smart-hidden"),e.$.colors.classList.add("smart-hidden"),e.$.customize.classList.add("smart-hidden"),e.$.sort.classList.add("smart-hidden"),e.$.search.classList.add("smart-hidden"),e.$.format.classList.add("smart-hidden"),e.$.view.classList.add("smart-hidden"),e.closePanel(),e.$.labelButton.classList.add("selected"),e.$.labelButton.setAttribute("aria-expanded",!0),e.labelMenu||(e.labelMenu=document.createElement("div"),e.labelMenu.classList.add("smart-grid-column-menu","smart-grid-label-menu"),e.labelMenu.setAttribute("theme",e.getAttribute("theme")),e.labelMenu.id=e.id+"_"+e.tagName.toLowerCase()+"_menu_"+Math.floor(65536*(1+Math.random())).toString(16).substring(1)),e.labelMenu.classList.add("smart-animate"),e._createLabelMenuItems(),e.labelMenu.style.height="auto",e.isInShadowDOM?e.getRootNode().appendChild(e.labelMenu):document.body.appendChild(e.labelMenu);const t=e.$.labelButton.getBoundingClientRect();let a=t.left+window.pageXOffset,s=t.bottom+window.pageYOffset;a+e.labelMenu.offsetWidth>window.innerWidth&&(a=t.right+window.pageXOffset-e.labelMenu.offsetWidth,a+e.labelMenu.offsetWidth>window.innerWidth&&(a=window.innerWidth-e.labelMenu.offsetWidth)),e.labelMenu.style.left=a+"px",e.labelMenu.style.top=s+"px",e.labelMenu.classList.remove("smart-hidden"),e.labelMenu.classList.add("open")}_closeDownloadMenu(){const e=this,t=e.downloadMenu;t&&(t.parentNode&&(t.classList.remove("open"),setTimeout((()=>{t&&t.parentNode&&t.parentNode.removeChild(t)}),100)),e.$.downloadButton.classList.remove("selected"),e.$.downloadButton.removeAttribute("aria-expanded"),t.classList.remove("open"))}_openDownloadMenu(){const e=this;if(e.grid.editing.isEditing&&e.grid.cancelEdit(),e.downloadMenu&&e.downloadMenu.classList.