smart-webcomponents-react 25.0.0 → 25.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/source/modules/smart.3dchart.js +2 -2
- package/source/modules/smart.accordion.js +2 -2
- package/source/modules/smart.array.js +2 -2
- package/source/modules/smart.barcode.js +2 -2
- package/source/modules/smart.breadcrumb.js +2 -2
- package/source/modules/smart.button.js +2 -2
- package/source/modules/smart.buttongroup.js +2 -2
- package/source/modules/smart.calendar.js +2 -2
- package/source/modules/smart.card.js +2 -2
- package/source/modules/smart.cardview.js +2 -2
- package/source/modules/smart.carousel.js +2 -2
- package/source/modules/smart.chart.js +2 -2
- package/source/modules/smart.checkbox.js +2 -2
- package/source/modules/smart.checkinput.js +2 -2
- package/source/modules/smart.chip.js +2 -2
- package/source/modules/smart.colorinput.js +2 -2
- package/source/modules/smart.colorpanel.js +2 -2
- package/source/modules/smart.colorpicker.js +2 -2
- package/source/modules/smart.combobox.js +2 -2
- package/source/modules/smart.common.js +2 -2
- package/source/modules/smart.countryinput.js +2 -2
- package/source/modules/smart.dateinput.js +2 -2
- package/source/modules/smart.daterangeinput.js +2 -2
- package/source/modules/smart.datetimepicker.js +2 -2
- package/source/modules/smart.dockinglayout.js +2 -2
- package/source/modules/smart.dropdownbutton.js +2 -2
- package/source/modules/smart.dropdownlist.js +2 -2
- package/source/modules/smart.editor.js +2 -2
- package/source/modules/smart.element.js +2 -2
- package/source/modules/smart.fileupload.js +2 -2
- package/source/modules/smart.form.js +2 -2
- package/source/modules/smart.formulaparser.js +2 -2
- package/source/modules/smart.ganttchart.js +3 -3
- package/source/modules/smart.gauge.js +2 -2
- package/source/modules/smart.grid.js +9 -9
- package/source/modules/smart.gridpanel.js +2 -2
- package/source/modules/smart.gridview.js +9 -9
- package/source/modules/smart.input.js +2 -2
- package/source/modules/smart.kanban.js +2 -2
- package/source/modules/smart.layout.js +2 -2
- package/source/modules/smart.led.js +2 -2
- package/source/modules/smart.listbox.js +2 -2
- package/source/modules/smart.listmenu.js +2 -2
- package/source/modules/smart.map.js +2 -2
- package/source/modules/smart.maskedtextbox.js +2 -2
- package/source/modules/smart.menu.js +2 -2
- package/source/modules/smart.multicomboinput.js +2 -2
- package/source/modules/smart.multiinput.js +2 -2
- package/source/modules/smart.multilinetextbox.js +2 -2
- package/source/modules/smart.multisplitbutton.js +2 -2
- package/source/modules/smart.numberinput.js +2 -2
- package/source/modules/smart.numerictextbox.js +2 -2
- package/source/modules/smart.pager.js +2 -2
- package/source/modules/smart.passwordinput.js +2 -2
- package/source/modules/smart.passwordtextbox.js +2 -2
- package/source/modules/smart.path.js +2 -2
- package/source/modules/smart.phoneinput.js +2 -2
- package/source/modules/smart.pivottable.js +2 -2
- package/source/modules/smart.progressbar.js +2 -2
- package/source/modules/smart.qrcode.js +2 -2
- package/source/modules/smart.querybuilder.js +2 -2
- package/source/modules/smart.radiobutton.js +2 -2
- package/source/modules/smart.rating.js +2 -2
- package/source/modules/smart.ribbon.js +2 -2
- package/source/modules/smart.router.js +2 -2
- package/source/modules/smart.scheduler.js +2 -2
- package/source/modules/smart.scrollbar.js +2 -2
- package/source/modules/smart.slider.js +2 -2
- package/source/modules/smart.sortable.js +2 -2
- package/source/modules/smart.splitter.js +2 -2
- package/source/modules/smart.switchbutton.js +2 -2
- package/source/modules/smart.table.js +2 -2
- package/source/modules/smart.tabs.js +2 -2
- package/source/modules/smart.tank.js +2 -2
- package/source/modules/smart.textarea.js +2 -2
- package/source/modules/smart.textbox.js +2 -2
- package/source/modules/smart.timeinput.js +2 -2
- package/source/modules/smart.timeline.js +2 -2
- package/source/modules/smart.timepicker.js +2 -2
- package/source/modules/smart.toast.js +2 -2
- package/source/modules/smart.tooltip.js +2 -2
- package/source/modules/smart.tree.js +2 -2
- package/source/modules/smart.validator.js +2 -2
- package/source/modules/smart.window.js +2 -2
- package/source/smart.3dchart.js +1 -1
- package/source/smart.accordion.js +1 -1
- package/source/smart.ajax.js +1 -1
- package/source/smart.array.js +1 -1
- package/source/smart.barcode.js +1 -1
- package/source/smart.bootstrap.js +1 -1
- package/source/smart.breadcrumb.js +1 -1
- package/source/smart.button.js +1 -1
- package/source/smart.buttongroup.js +1 -1
- package/source/smart.calendar.js +1 -1
- package/source/smart.card.js +1 -1
- package/source/smart.cardview.js +1 -1
- package/source/smart.carousel.js +1 -1
- package/source/smart.chart.annotations.js +1 -1
- package/source/smart.chart.api.js +1 -1
- package/source/smart.chart.core.js +1 -1
- package/source/smart.chart.js +1 -1
- package/source/smart.chart.rangeselector.js +1 -1
- package/source/smart.chart.waterfall.js +1 -1
- package/source/smart.checkbox.js +1 -1
- package/source/smart.checkinput.js +1 -1
- package/source/smart.chip.js +1 -1
- package/source/smart.colorinput.js +1 -1
- package/source/smart.colorpanel.js +1 -1
- package/source/smart.colorpicker.js +1 -1
- package/source/smart.combobox.js +1 -1
- package/source/smart.complex.js +1 -1
- package/source/smart.core.js +1 -1
- package/source/smart.countryinput.js +1 -1
- package/source/smart.data.js +1 -1
- package/source/smart.date.js +1 -1
- package/source/smart.dateformatpanel.js +1 -1
- package/source/smart.dateinput.js +1 -1
- package/source/smart.daterangeinput.js +1 -1
- package/source/smart.datetimepicker.js +1 -1
- package/source/smart.dockinglayout.js +1 -1
- package/source/smart.draw.js +1 -1
- package/source/smart.dropdownbutton.js +1 -1
- package/source/smart.dropdownlist.js +1 -1
- package/source/smart.editor.js +1 -1
- package/source/smart.element.js +1 -1
- package/source/smart.elements.js +9 -9
- package/source/smart.export.js +1 -1
- package/source/smart.fileupload.js +1 -1
- package/source/smart.filter.js +1 -1
- package/source/smart.filterbuilder.js +1 -1
- package/source/smart.filterpanel.js +1 -1
- package/source/smart.form.js +1 -1
- package/source/smart.format.js +1 -1
- package/source/smart.formulaparser.js +1 -1
- package/source/smart.ganttchart.js +2 -2
- package/source/smart.gauge.js +1 -1
- package/source/smart.grid.cell.js +2 -2
- package/source/smart.grid.chart.js +1 -1
- package/source/smart.grid.column.js +2 -2
- package/source/smart.grid.core.js +2 -2
- package/source/smart.grid.dialog.js +1 -1
- package/source/smart.grid.edit.js +1 -1
- package/source/smart.grid.export.js +1 -1
- package/source/smart.grid.filter.js +2 -2
- package/source/smart.grid.group.js +1 -1
- package/source/smart.grid.js +1 -1
- package/source/smart.grid.menu.js +2 -2
- package/source/smart.grid.pager.js +1 -1
- package/source/smart.grid.reorder.js +1 -1
- package/source/smart.grid.resize.js +1 -1
- package/source/smart.grid.row.js +1 -1
- package/source/smart.grid.select.js +2 -2
- package/source/smart.grid.sort.js +1 -1
- package/source/smart.grid.toolbar.js +2 -2
- package/source/smart.grid.tree.js +1 -1
- package/source/smart.grid.view.js +1 -1
- package/source/smart.gridpanel.js +1 -1
- package/source/smart.input.js +1 -1
- package/source/smart.kanban.js +1 -1
- package/source/smart.layout.js +1 -1
- package/source/smart.led.js +1 -1
- package/source/smart.listbox.js +1 -1
- package/source/smart.listmenu.js +1 -1
- package/source/smart.map.js +1 -1
- package/source/smart.maskedtextbox.js +1 -1
- package/source/smart.math.js +1 -1
- package/source/smart.menu.js +1 -1
- package/source/smart.multicomboinput.js +1 -1
- package/source/smart.multiinput.js +1 -1
- package/source/smart.multilinetextbox.js +1 -1
- package/source/smart.multisplitbutton.js +1 -1
- package/source/smart.numberformatpanel.js +1 -1
- package/source/smart.numberinput.js +1 -1
- package/source/smart.numeric.js +1 -1
- package/source/smart.numerictextbox.js +1 -1
- package/source/smart.pager.js +1 -1
- package/source/smart.passwordinput.js +1 -1
- package/source/smart.passwordtextbox.js +1 -1
- package/source/smart.path.js +1 -1
- package/source/smart.phoneinput.js +1 -1
- package/source/smart.pivottable.js +1 -1
- package/source/smart.powerbutton.js +1 -1
- package/source/smart.progressbar.js +1 -1
- package/source/smart.qrcode.js +1 -1
- package/source/smart.radiobutton.js +1 -1
- package/source/smart.rating.js +1 -1
- package/source/smart.ribbon.js +1 -1
- package/source/smart.router.js +1 -1
- package/source/smart.scheduler.js +1 -1
- package/source/smart.scrollbar.js +1 -1
- package/source/smart.slider.js +1 -1
- package/source/smart.sortable.js +1 -1
- package/source/smart.sparkline.js +1 -1
- package/source/smart.splitter.js +1 -1
- package/source/smart.switchbutton.js +1 -1
- package/source/smart.table.js +1 -1
- package/source/smart.tabs.js +1 -1
- package/source/smart.tank.js +1 -1
- package/source/smart.textarea.js +1 -1
- package/source/smart.textbox.js +1 -1
- package/source/smart.tickintervalhandler.js +1 -1
- package/source/smart.timeinput.js +1 -1
- package/source/smart.timeline.js +1 -1
- package/source/smart.timepicker.js +1 -1
- package/source/smart.toast.js +1 -1
- package/source/smart.tooltip.js +1 -1
- package/source/smart.tree.js +1 -1
- package/source/smart.validationpanel.js +1 -1
- package/source/smart.validator.js +1 -1
- package/source/smart.window.js +1 -1
- package/source/styles/bootstrap/dark/smart.bootstrap.blue.css +3373 -3373
- package/source/styles/bootstrap/dark/smart.bootstrap.css +3373 -3373
- package/source/styles/bootstrap/dark/smart.bootstrap.cyan.css +3373 -3373
- package/source/styles/bootstrap/dark/smart.bootstrap.green.css +3373 -3373
- package/source/styles/bootstrap/dark/smart.bootstrap.indigo.css +3373 -3373
- package/source/styles/bootstrap/dark/smart.bootstrap.orange.css +3373 -3373
- package/source/styles/bootstrap/dark/smart.bootstrap.pink.css +3373 -3373
- package/source/styles/bootstrap/dark/smart.bootstrap.purple.css +3373 -3373
- package/source/styles/bootstrap/dark/smart.bootstrap.red.css +3373 -3373
- package/source/styles/bootstrap/dark/smart.bootstrap.teal.css +3373 -3373
- package/source/styles/bootstrap/dark/smart.bootstrap.turquoise.css +3373 -3373
- package/source/styles/bootstrap/light/smart.bootstrap.blue.css +3373 -3373
- package/source/styles/bootstrap/light/smart.bootstrap.css +3373 -3373
- package/source/styles/bootstrap/light/smart.bootstrap.cyan.css +3373 -3373
- package/source/styles/bootstrap/light/smart.bootstrap.green.css +3373 -3373
- package/source/styles/bootstrap/light/smart.bootstrap.indigo.css +3373 -3373
- package/source/styles/bootstrap/light/smart.bootstrap.orange.css +3373 -3373
- package/source/styles/bootstrap/light/smart.bootstrap.pink.css +3373 -3373
- package/source/styles/bootstrap/light/smart.bootstrap.purple.css +3373 -3373
- package/source/styles/bootstrap/light/smart.bootstrap.red.css +3373 -3373
- package/source/styles/bootstrap/light/smart.bootstrap.teal.css +3373 -3373
- package/source/styles/bootstrap/light/smart.bootstrap.turquoise.css +3373 -3373
- package/source/styles/bootstrap/smart.bootstrap.blue.css +234 -215
- package/source/styles/bootstrap/smart.bootstrap.css +277 -286
- package/source/styles/bootstrap/smart.bootstrap.cyan.css +234 -215
- package/source/styles/bootstrap/smart.bootstrap.green.css +234 -215
- package/source/styles/bootstrap/smart.bootstrap.indigo.css +234 -215
- package/source/styles/bootstrap/smart.bootstrap.orange.css +234 -215
- package/source/styles/bootstrap/smart.bootstrap.pink.css +237 -215
- package/source/styles/bootstrap/smart.bootstrap.purple.css +237 -215
- package/source/styles/bootstrap/smart.bootstrap.red.css +234 -215
- package/source/styles/bootstrap/smart.bootstrap.teal.css +234 -215
- package/source/styles/bootstrap/smart.bootstrap.turquoise.css +234 -215
- package/source/styles/components/smart.datetimeformatpanel.css +1 -1
- package/source/styles/components/smart.dropdownbutton.css +1 -1
- package/source/styles/components/smart.grid.css +1 -1
- package/source/styles/components/smart.ribbon.css +1 -1
- package/source/styles/default/scss/smart.dropdownbutton.scss +21 -20
- package/source/styles/default/scss/smart.grid.scss +195 -116
- package/source/styles/default/smart.dropdownbutton.css +5 -3
- package/source/styles/default/smart.grid.css +41 -18
- package/source/styles/smart.default.css +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
|
-
/* Smart UI v25.0.
|
|
2
|
+
/* Smart UI v25.0.1 (2025-11-26)
|
|
3
3
|
Copyright (c) 2011-2024 jQWidgets.
|
|
4
4
|
License: https://htmlelements.com/license/ */ //
|
|
5
5
|
|
|
6
|
-
Smart.Utilities.Assign("Grid.Filter",class{addFilter(e,t,l){const a=this,i=a.columnByDataField[e];if(!i){if(!a.dataSource||!a.dataSource.dataFields)return;if(!a.dataSource.dataFields.find((e=>e.name===e)))return}const r=a._getFilterDataType(i);if("string"==typeof t?t=a.dataSource._createFilter(r,[t]):t&&Array.isArray(t)&&(t=a.dataSource._createFilter(r,t)),"string"===r&&i.editor&&i.editor.dataSource&&i.dataField===i.displayField&&i.editor.dataSource[0]){const e=i.editor.dataSource[0];void 0!==e.label&&void 0!==e.value&&i.editor.dataSource.forEach((e=>{e.value===t.filters[0].value&&(t.filters[0].value=e.label)}))}if(i&&i.canNotify){if(i.setProperty("filter",t),a._isUpdating)return;!1!==l&&(a._filterRowInputOnFocus=!0,a.refreshFilters(),delete a._filterRowInputOnFocus)}}removeFilter(e,t){const l=this,a=l.columnByDataField[e];if(a&&a.canNotify){if(a.setProperty("filter",null),l._isUpdating)return;!1!==t&&(l._filterRowInputOnFocus=!0,l.refreshFilters(),delete l._filterRowInputOnFocus)}a&&delete a._filterState}findCells(e){const t=this,l=t.find(e,null,null,"or"),a=[];"string"==typeof e&&e.indexOf(",")>=0&&(e=e.split(","));for(let i=0;i<l.length;i++){const r=l[i];for(let l=0;l<t.columns.length;l++){const i=t.columns[l],n=r[i.dataField];if(Array.isArray(e))for(let t=0;t<e.length;t++)(""+n).trim().toLowerCase()===(""+e[t]).trim().toLowerCase()&&a.push([r.$.id,i.dataField,e[t]]);else(""+n).trim().toLowerCase()===(""+e).trim().toLowerCase()&&a.push([r.$.id,i.dataField,e])}}return a}find(e,t,l,a="and"){const i=this;let r=[];if(l){const e={"=":"EQUAL","<>":"NOT_EQUAL","!=":"NOT_EQUAL",not_like:"DOES_NOT_CONTAIN",like:"CONTAINS","<":"LESS_THAN",">":"GREATER_THAN","<=":"LESS_THAN_OR_EQUAL",">=":"GREATER_THAN_OR_EQUAL",equal:"EQUAL","not equal":"NOT_EQUAL","less than":"LESS_THAN","greater than":"GREATER_THAN","greater than or equal":"GREATER_THAN_OR_EQUAL","less than or equal":"LESS_THAN_OR_EQUAL","starts with":"STARTS_WITH","ends with":"ENDS_WITH",notEqual:"NOT_EQUAL",not_equal:"NOT_EQUAL",lessThan:"LESS_THAN",greaterThan:"GREATER_THAN",greaterThanOrEqual:"GREATER_THAN_OR_EQUAL",lessThanOrEqual:"LESS_THAN_OR_EQUAL",less_than:"LESS_THAN",greater_than:"GREATER_THAN",greater_than_or_equal:"GREATER_THAN_OR_EQUAL",less_than_or_equal:"LESS_THAN_OR_EQUAL",null:"null","":"EMPTY",isblank:"EMPTY",isnotblank:"NOT_EMPTY",isBlank:"EMPTY",isNotBlank:"NOT_EMPTY",CONTAINS:"CONTAINS",DOES_NOT_CONTAIN:"DOES_NOT_CONTAIN",contains:"CONTAINS",does_not_contain:"DOES_NOT_CONTAIN","not contains":"DOES_NOT_CONTAIN",notcontains:"DOES_NOT_CONTAIN",notContains:"DOES_NOT_CONTAIN",startswith:"STARTS_WITH",endswith:"ENDS_WITH",starts_with:"STARTS_WITH",ends_with:"ENDS_WITH",startsWith:"STARTS_WITH",endsWith:"ENDS_WITH",NULL:"NULL",NOT_NULL:"NOT_NULL"};e[l]&&(l=e[l])}const n=(e,a="or")=>{let r=[];for(let n=0;n<i.columns.length;n++){const o=i.columns[n],s=new Smart.Utilities.FilterGroup;let d;t&&o.dataField!==t||("string"===o.dataType?(l||(l="CONTAINS"),d=s.createFilter("string",e,l)):"number"===o.dataType?(l||(l="EQUAL"),d=s.createFilter("number",e,l)):"date"===o.dataType&&(l||(l="EQUAL"),d=s.createFilter("date",e,l)),s.addFilter(a,d),r.push([o.dataField,s]))}return r};void 0!==e&&"string"==typeof e&&e.indexOf(",")>=0&&(e=e.split(","));let o=[];if(Array.isArray(e))for(let t=0;t<e.length;t++)o.push(n(e[t].trim()));else r=n(e);const s=i.dataSource;if(!s)return[];let d=[];const u=(e,t)=>{let l=!1;for(let a=0;a<t.length;a++){const i=t[a],r=e[i[0]];l=l||i[1].evaluate(r)}return l};for(let e=0;e<s.length;e++){const t=s[e];if(o.length)if("and"===a){let e=!0;for(let l=0;l<o.length;l++)e=e&&u(t,o[l]);e&&d.push(t)}else{let e=!1;for(let l=0;l<o.length;l++)e=e||u(t,o[l]);e&&d.push(t)}else u(t,r)&&d.push(t)}return d}_applyJSONFilters(e,t){const l=this;function a(e){for(var t={},a=0;a<e.length;a++){const d=e[a];let u=d.field;const c=d.type,f=d.operator,m=d.value,F=d.logic;for(var i=0;i<l.columns.length;i++){var r=l.columns[i];u===r.label&&r.datafield&&(u=r.datafield)}if(!t[u]){var n=new Smart.FilterGroup;t[u]={filterGroup:n,logic:F||"and"}}F&&(t[u].logic=F||"and");var o,s=t[u].filterGroup;switch(c){case"string":o=s.createFilter("stringFilter",m,f);break;case"date":o=s.createFilter("dateFilter",m,f);break;case"number":o=s.createFilter("numericFilter",m,f);break;case"boolean":case"bool":o=s.createFilter("booleanFilter",m,f);break;default:continue}s.addFilter(t[u].logic.toLowerCase(),o)}return t}if(t)t(a(e));else{l.beginUpdate(),l.clearFilter();var i=a(e);for(var r in i){var n=i[r].filterGroup;l.addFilter(r,n,!1)}l.endUpdate(),l.refreshFilters()}}filterBy(e,t,l){const a=this;let i,r=[];if(a.ai&&a.ai.key)return void(()=>{const t=e=>{a._applyJSONFilters(e,l)};(()=>{let l='You are a helpful assistant converting natural language filter queries into structured JSON filters.\n "Use only these columns:';for(let e=0;e<a.columns.length;e++){const t=a.columns[e];t.allowFilter&&(l+="- "+t.label+" ("+t.dataType+") => "+t.dataField+"\n")}l+='\n Supported operators: CONTAINS, EQUAL, NOT_EQUAL, GREATER_THAN, LESS_THAN, GREATER_THAN_OR_EQUAL, LESS_THAN_OR_EQUAL, STARTS_WITH, ENDS_WITH \n Supported types: string, number, date, boolean\n Respond in this format\n [\n {\n "field": "dataField",\n "operator": "some operator",\n "value": "some value",\n "type": "some type",\n "logic": "AND }\n ]',function(e,t,l,i,r,n){const o=e||"https://api.openai.com/v1/chat/completions",s=new XMLHttpRequest;s.open("POST",o,!0),s.setRequestHeader("Authorization","Bearer "+t),s.setRequestHeader("Content-Type","application/json"),a._aiCanFetch=!0,s.onreadystatechange=function(){if(4===s.readyState)if(s.status>=200&&s.status<300)try{var e=JSON.parse(s.responseText);if(a._aiCanFetch){var t=e.choices[0].message.content,l=JSON.parse(t);r&&"function"==typeof r&&r(l),a._aiCanFetch=!1,n(null,l)}else n(null,[])}catch(e){console.error("Failed to parse OpenAI response:",s.responseText),n(e,[])}else console.error("Error calling OpenAI API:",s.status,s.statusText),n(new Error("HTTP error: "+s.status),[])};var d=JSON.stringify({model:"gpt-4",messages:[{role:"system",content:l},{role:"user",content:"Query: "+i}],temperature:0});s.send(d)}(a.ai.url,a.ai.key,l,e,t,(function(e){}))})()})();void 0!==e&&"string"==typeof e&&e.indexOf(",")>=0&&(e=e.split(",")),r=((e,l="or")=>{let r=[];for(let n=0;n<a.columns.length;n++){const o=a.columns[n],s=new Smart.Utilities.FilterGroup;let d;t&&o.dataType!==t||("string"===o.dataType?(i="CONTAINS",d=s.createFilter("string",e,i)):"number"===o.dataType?(i="EQUAL",d=s.createFilter("number",e,i)):"date"===o.dataType&&(i="EQUAL",d=s.createFilter("date",e,i)),s.addFilter(l,d),r.push([o.dataField,s]))}return r})(e),a.beginUpdate(),a.clearFilter();const n=a.filtering.operator;a.filtering.operator="or";for(let e=0;e<r.length;e++){const t=r[e];a.addFilter(t[0],t[1],!1)}a.endUpdate(),a.refreshFilters(),a.filtering.operator=n}clearFilter(){const e=this;for(let t=0;t<e.columns.length;t++){const l=e.columns[t];l&&(l.setProperty("filter",null),l._filterInfo&&(delete l._filterInfo.value,delete l._filterInfo.condition))}e._refreshFilterRowEditors(),e.refreshFilters()}getFilteredColumns(){const e=this;if(e._filters){const t=[];for(let l=0;l<e._filters.length;l++){const a=e._filters[l];t.push({dataField:a[0],filter:a[1].toString()})}return t}return[]}getFilteredColumnsByDataField(){const e=this;if(e._filters){const t=[];for(let l=0;l<e._filters.length;l++){const a=e._filters[l];t[a[0]]=a[1],t.length++}return t}return[]}getVisibleRows(){const e=this;if(e._visibleRows)return e._visibleRows;const t=[],l=e._viewRows,a=e.editing.addNewRow.visible&&"far"!==e.editing.addNewRow.position&&"button"!==e.editing.addNewRow.displayMode?1:0,i=e.grouping.enabled&&e.dataSource.groupBy&&e.dataSource.groupBy.length>0;let r=0;for(let e=0;e<l.length;e++){const n=l[e];n.canNotify=!1,n.visibleIndex=-1,!n.visible||!1===n.filtered&&void 0!==n.filtered||(i?n.leaf?n.visibleIndex=r++:n.visibleIndex=-1:n.visibleIndex=t.length-a,t.push(n)),n.canNotify=!0}return e._visibleRows=t,t}_refreshFilterRowEditors(){const e=this;if(e.filtering.filterRow)for(let t=0;t<e.columns.length;t++)e.columns[t]._filterEditorInitialized&&(e.columns[t]._filterEditorInitialized=!1)}refreshSortAndFilters(){this._refreshDataFilters()}_refreshDataFilters(){const e=this;!1!==e.editing.autoUpdateFilterAndSort&&(e._supressFilter||(!e._filters||e._filters&&0===e._filters.length)&&(!e._sortedColumns||e._sortedColumns&&0===e._sortedColumns.length)||(e.beginUpdate(),e._sortedColumns&&e._sortedColumns.length>0&&e.refreshSort(),e._filters&&e._filters.length>0&&e.refreshFilters(!0),e.endUpdate()))}refreshFilters(e){const t=this,l=[];t._filters||(t._filters=[]);for(let e=0;e<t.columns.length;e++){const a=t.columns[e];a.filter&&l.push([a.displayField,a.filter])}if(t.scrollTop=0,t.closeMenu(),t.dataSource&&!t.dataSource.onFilter&&(t.dataSource.onFilter=function(){const e=t._viewRows;for(let t=0;t<e.length;t++){const l=e[t];if(l.data&&!l.addNewRow){if(!l.data.$){l.filtered=!0;continue}l.filtered=void 0===l.data.$.filtered||l.data.$.filtered}}t.refresh()}),JSON.stringify(t._filters)===JSON.stringify(l)&&!0!==e)return void(t._visibleRows=null);if(t._filters=l,t._visibleRows=null,t.dataSource&&t.dataSource.virtualDataSource)t.closeMenu(),t._virtualDataRequest("filter");else{const e=t._filterOperator||t.filtering.operator;t.dataSource._filter(l,e)}t.paging.enabled&&t.dataSource&&!t.dataSource.virtualDataSource&&t._refreshPagesCount();let a=[];for(let e=0;e<t.columns.length;e++){const l=t.columns[e];l.filter&&a.push(l)}let i=[],r=[],n=[];if(t._filters)for(let e=0;e<t._filters.length;e++){const l=t._filters[e];n.push(l[0]);let a="";const o=t.columnByDataField[l[0]];for(let e=0;e<l[1].filters.length;e++){const t=l[1].filters[e].condition,i=l[1].filters[e].value,r=l[1].logicalOperators[e],n=1===r||"or"===r?"or":"and";o&&"string"===o.dataType?a+=`"${t}" "${i}"`:!o||"date"!==o.dataType&&"time"!==o.dataType&&"datetime"!==o.dataType?a+=`"${t}" ${i}`:i.getFullYear?a+=`"${t}" ${i.getFullYear()+"-"+(1+i.getMonth())+"-"+i.getDate()}`:a+=`"${t}" ${""+i}`,e<l[1].filters.length-1&&(a+=` ${n} `)}r.push([l[0],a]),i.push({dataField:l[0],filter:l[1]})}t.summaryRow.visible&&(t._calculateSummary(),t._recycle(!1)),e||t.$.fireEvent("filter",{columns:a,expressions:JSON.parse(JSON.stringify(r)),dataFields:n,data:JSON.parse(JSON.stringify(i))}),t._onFilter&&t._onFilter()}_getFilterDataType(e){const t=this;let l=e.dataType;if(e.displayField!==e.dataField&&t.dataSource&&t.dataSource.dataFields){const a=t.dataSource.dataFields.find((t=>t.name===e.displayField));a&&(l=a.dataType||"string")}return l}_handleFilterCellFocus(e){const t=this,l=e.column._filterInfo,a=l.editor,i=l.input,r=e.column;let n=r.dataType;if(a.setAttribute("focus",""),t.filtering.filterRow.cell=e,"RANGE"===l.condition)t._openFilterCellDialog(e,(e=>{const l=e._filterInfo,a=l.editor,i=l.range,r=l.input,n=l.cell;if(i){const l=new Smart.FilterGroup;l.addFilter("and",l.createFilter(e.dataType,i.min,"GREATER_THAN_OR_EQUAL")),l.addFilter("and",l.createFilter(e.dataType,i.max,"LESS_THAN_OR_EQUAL")),t.addFilter(e.dataField,l)}else t.removeFilter(e.dataField);if(t.autoSaveState(),a&&r)if(r.type="",i){const t=n.getFormattedValue(i.min,e.cellsFormat),l=n.getFormattedValue(i.max,e.cellsFormat);r.value=t+" - "+l}else r.value=""}));else if(r.displayField!==r.dataField&&(n=t._getFilterDataType(r)),i.type="number"===n||"int"===n||"float"===n?"number":"",l.value&&(i.value=l.value,"date"===n)){const t=new Smart.FilterGroup;if("string"==typeof l.value?i.value=e.getFormattedValue(l.value,r.cellsFormat):i.value=e.getFormattedValue(l.value[0],r.cellsFormat),l.value.length>1){let a=[];for(let i=0;i<l.value.length;i++)t.addFilter("or",t.createFilter(r.dataType,l.value[i],l.condition||"EQUAL")),a.push(e.getFormattedValue(l.value[i],r.cellsFormat||""));i.value=a.toString()}}}_handleFilterCellBlur(e){const t=this,l=e.column._filterInfo,a=l.editor,i=l.input,r=e.column,n=l.condition,o=t._getFilterDataType(r);if(t.filtering.filterRow.cell=null,r.filterRowMenu&&r.filterRowMenu.classList.contains("open"))a.removeAttribute("focus");else{if(""!==i.value&&"RANGE"!==n)if("date"===r.dataType){let t=[];if(i.value.indexOf(",")>=0&&(t=i.value.split(","),t=t.forEach((e=>Smart.Utilities.DateTime.ParseDate(e.trim(),r.cellsFormat)))),t.length>1){l.value=t;let a=[];const n=new Smart.FilterGroup;for(let i=0;i<t.length;i++)n.addFilter("or",n.createFilter(r.dataType,t[i],l.condition||"EQUAL")),a.push(e.getFormattedValue(t[i],r.cellsFormat||""));i.value=a.toString()}else r.cellsFormat?l.value=Smart.Utilities.DateTime.ParseDate(i.value,r.cellsFormat):l.value=new Date(i.value),i.value=e.getFormattedValue(l.value,r.cellsFormat)}else"number"===o||"int"===o||"float"===o?(l.value=parseFloat(i.value),i.type="",i.value=e.getFormattedValue(l.value,r.cellsFormat)):l.value=i.value;"auto"===t.filtering.filterRow.applyMode&&t._handleFilterCellValue(e),a.removeAttribute("focus")}}getExcelFilterDataSource(e){const t=this,l=t.columnByDataField[e];if(!l)return[];let a=[];if(l.filterEditor&&l.filterEditor.dataSource)a=a.concat(l.filterEditor.dataSource.map((e=>"string"==typeof e?{label:e,value:e}:e)));else if(l.options)a=a.concat(l.options.map((e=>"string"==typeof e?{label:e,value:e}:e)));else{const e={};if(t.dataSource&&t.dataSource.length>0)for(let a=0;a<t.dataSource.length;a++){const i=t.dataSource[a][l.dataField];null!=i&&""!==i&&(e[i]=i)}a=a.concat(Object.keys(e).map((e=>({label:e,value:e}))))}return a}getExcelFilter(e,t){const l=this,a=l.columnByDataField[e];if(a&&!a._filterInfo&&t&&(a._filterInfo={excelValues:t}),!a||!a._filterInfo)return null;t&&(a._filterInfo.excelValues=t);const i=a._filterInfo.excelValues,r=new Smart.Utilities.FilterGroup;let n=!1;if(i){for(let e=0;e<i.length;e++){const t=i[e],o="string"===a.dataType?"stringFilter":"number"===a.dataType?"numericFilter":"date"===a.dataType?"dateFilter":"boolean"===a.dataType?"booleanFilter":"stringFilter",s=r.createFilter(o,t,"equal",void 0,a.formatString,l.locale,!1);r.addFilter("or",s),n=!0}if(0===i.length){const t=l.getExcelFilterDataSource(e);if(t&&t.length>0)for(let e=0;e<t.length;e++){const i=t[e].value,o="string"===a.dataType?"stringFilter":"number"===a.dataType?"numericFilter":"date"===a.dataType?"dateFilter":"boolean"===a.dataType?"booleanFilter":"stringFilter",s=r.createFilter(o,i,"not_equal",void 0,a.formatString,l.locale,!1);r.addFilter("and",s),n=!0}}}return n?(r.operator="and",r):null}getFilterRowFilter(e){const t=this.columnByDataField[e];if(!t||!t._filterInfo)return null;const l=t._filterInfo,a=l.condition,i=this._getFilterDataType(t);if("RANGE"===a){const e=l.range;if(e){const l=new Smart.FilterGroup;return l.addFilter("and",l.createFilter(t.dataType,e.min,"GREATER_THAN_OR_EQUAL")),l.addFilter("and",l.createFilter(t.dataType,e.max,"LESS_THAN_OR_EQUAL")),l}return null}{let e=l.value;if(""===e||void 0===e)return null;{const a=new Smart.FilterGroup;let r=!1;if("date"===t.dataType){let l=null;e&&"object"==typeof e&&e instanceof Date?r=!0:e&&((e.split("/").length>2||e.split("-").length>2||e.split(".").length>2)&&(r=!0),r&&t.cellsFormat&&(l=Smart.Utilities.DateTime.ParseDate(e,t.cellsFormat),null!==l&&(r=!0,e=l)))}if("date"!==t.dataType||r){if("string"==typeof e){const t=e=>{e.forEach((e=>{const t=e.trim();t.length&&a.addFilter("or",a.createFilter(i,t,l.condition||("string"===i?"CONTAINS":"EQUAL")))}))};e.indexOf(" or ")>=0?(e=e.split("or"),t(e)):e.indexOf(" and ")>=0?(e=e.split("and"),t(e)):e.indexOf(" & ")>=0?(e=e.split("&"),t(e)):e.indexOf(' | " ')>=0?(e=e.split("|"),t(e)):a.addFilter("and",a.createFilter(i,e,l.condition||("string"===i?"CONTAINS":"EQUAL")))}else a.addFilter("and",a.createFilter(i,e,l.condition||("string"===i?"CONTAINS":"EQUAL")));return a}}}}_handleFilterCellValue(e){const t=this,l=e.column._filterInfo,a=e.column,i=l.condition,r=t._getFilterDataType(a);if("RANGE"===i){const e=l.range;if(e){const l=new Smart.FilterGroup;l.addFilter("and",l.createFilter(a.dataType,e.min,"GREATER_THAN_OR_EQUAL")),l.addFilter("and",l.createFilter(a.dataType,e.max,"LESS_THAN_OR_EQUAL")),t.addFilter(a.dataField,l)}else t.removeFilter(a.dataField)}else{let e=l.value;if(""!==e&&void 0!==e){const i=new Smart.FilterGroup;let n=!1;if("date"===a.dataType){let t=null;e&&"object"==typeof e&&e instanceof Date?n=!0:e&&((e.split("/").length>2||e.split("-").length>2||e.split(".").length>2)&&(n=!0),n&&a.cellsFormat&&(t=Smart.Utilities.DateTime.ParseDate(e,a.cellsFormat),null!==t&&(n=!0,e=t)))}if("date"!==a.dataType||n){if("string"==typeof e){const t=e=>{e.forEach((e=>{const t=e.trim();t.length&&i.addFilter("or",i.createFilter(r,t,l.condition||("string"===r?"CONTAINS":"EQUAL")))}))};e.indexOf(" or ")>=0?(e=e.split("or"),t(e)):e.indexOf(" and ")>=0?(e=e.split("and"),t(e)):e.indexOf(" & ")>=0?(e=e.split("&"),t(e)):e.indexOf(' | " ')>=0?(e=e.split("|"),t(e)):i.addFilter("and",i.createFilter(r,e,l.condition||("string"===r?"CONTAINS":"EQUAL")))}else i.addFilter("and",i.createFilter(r,e,l.condition||("string"===r?"CONTAINS":"EQUAL")));const n=t.getExcelFilter(a.dataField);n&&i.addFilter("and",n),t.addFilter(a.dataField,i)}}else{const e=t.getExcelFilter(a.dataField);e?t.addFilter(a.dataField,e):t.removeFilter(a.dataField)}}t.autoSaveState()}_handleFilterCellKeyDown(e,t){const l=this,a=e.column._filterInfo.input;t.ctrlKey&&"a"===t.key?a.select():t.altKey&&"ArrowDown"===t.key&&l._handleFilterCellIconClick(e)}_handleFilterCellKeyUp(e,t){const l=e.column,a=l._filterInfo.input,i=this,r=l._filterInfo,n=t.key;r.value!==a.value&&(r.value=a.value,"Control"===n||t.ctrlKey||("Escape"===n&&(r.value="",r.range=null,a.value=""),i._suspendFilterRowRefresh=!0,"Enter"===n||"Escape"===n||""===a.value?i._handleFilterCellValue(e):"auto"===i.filtering.filterRow.applyMode&&"Ctrl"!==n&&"Shift"!==n&&(i._filterRowTimer&&clearTimeout(i._filterRowTimer),i._filterRowTimer=setTimeout((()=>{i._suspendFilterRowRefresh=!0,i._handleFilterCellValue(e),i._suspendFilterRowRefresh=!1}),i.filtering.filterRow.autoApplyModeDelay)),clearTimeout(i._suspendFilterRowTimer),i._suspedFilterRowTimer=setTimeout((()=>{i._suspendFilterRowRefresh=!1}),1e3),t.ctrlKey&&"a"===n&&a.select()))}_handleFilterCellCheckBoxClick(e){const t=this,l=e.column,a=l._filterInfo;void 0===a.value&&(a.value=null),!0===a.value?a.value=!1:!1===a.value?a.value=null:null===a.value&&(a.value=!0);const i=e.element.querySelector(".smart-input");if(a.value?i.setAttribute("checked",a.value):null===a.value?i.setAttribute("checked","indeterminate"):i.removeAttribute("checked"),null===a.value)return t.removeFilter(l.dataField),void t.autoSaveState();const r=new Smart.FilterGroup;r.addFilter("and",r.createFilter(l.dataType,!0===a.value,"EQUAL")),t.addFilter(l.dataField,r),t.autoSaveState()}_handleFilterCellExcelIconClick(e){const t=this,l=e.column;l.filterRowExcelMenu&&l.filterRowExcelMenu.classList.contains("open")?t._closeMenu(l.filterRowExcelMenu):t._openColumnFilterExcelMenu(l)}_handleFilterCellIconClick(e){const t=this,l=e.column;l.filterRowMenu&&l.filterRowMenu.classList.contains("open")?t._closeMenu(l.filterRowMenu):t._openColumnFilterMenu(l)}_handleFilterCalendarCellClick(e){const t=this;t._openFilterCellDialog(e,(l=>{const a=l._filterInfo,i=a.editor.querySelector("input"),r=a.value;if(i){if(r||"RANGE"===a.condition)if(!r&&"RANGE"===a.condition&&a.range){t.removeFilter(l.dataField,!1);const e=new Smart.FilterGroup,i=a.range;e.addFilter("and",e.createFilter(l.dataType,i.min,"GREATER_THAN_OR_EQUAL")),e.addFilter("and",e.createFilter(l.dataType,i.max,"LESS_THAN_OR_EQUAL"));const r=a.cell.getFormattedValue(i.min,l.cellsFormat),n=a.cell.getFormattedValue(i.max,l.cellsFormat);t.addFilter(l.dataField,e),a.editor.querySelector("input").value=r+" - "+n}else if(r||"RANGE"!==a.condition||a.range){i.value=e.getFormattedValue(r[0],l.cellsFormat||"");const n=new Smart.FilterGroup;if(1===r.length)n.addFilter("and",n.createFilter(l.dataType,r[0],a.condition||"EQUAL"));else{let t=[];for(let i=0;i<r.length;i++)n.addFilter("or",n.createFilter(l.dataType,r[i],a.condition||"EQUAL")),t.push(e.getFormattedValue(r[i],l.cellsFormat||""));i.value=t.toString()}t.removeFilter(l.dataField,!1),t.addFilter(l.dataField,n)}else i.value="",t.removeFilter(l.dataField);else i.value="",t.removeFilter(l.dataField);t.autoSaveState()}}))}_handleFilterMenuClick(e,t){const l=this,a=e._filterInfo,i=a.editor,r=a.input;if(i.firstElementChild.innerHTML=`<i class="smart-grid-icon ${t.icon} show"></i>`,"CLEAR_FILTER"===t.value&&(r.value="",i.firstElementChild.innerHTML='<i class="smart-grid-icon smart-icon-search show"></i>',a.condition=null,a.value="",a.range=null),r.type="","RANGE"===a.condition&&"RANGE"!==t.value){let e=a.range;a.value=e.min}else if("RANGE"===t.value&&"RANGE"!==a.condition&&null!==a.condition){let e=a.range;a.value&&(e=a.value&&Array.isArray(a.value)?{min:a.value[0],max:a.value[0]}:{min:a.value,max:a.value},a.range=e)}if("RANGE"===t.value){r.readonly=!0;const i=new Smart.FilterGroup,n=a.range;if(n){i.addFilter("and",i.createFilter(e.dataType,n.min,"GREATER_THAN_OR_EQUAL")),i.addFilter("and",i.createFilter(e.dataType,n.max,"LESS_THAN_OR_EQUAL")),l.addFilter(e.dataField,i);const t=a.cell.getFormattedValue(n.min,e.cellsFormat),o=a.cell.getFormattedValue(n.max,e.cellsFormat);r.value=t+" - "+o}else r.value="";return a.condition=t.value,void l.autoSaveState()}if(r.readonly=!1,"CLEAR_FILTER"!==t.value&&(a.condition=t.value),""===r.value)l.removeFilter(e.dataField);else{const t=new Smart.FilterGroup,i=a.value,n=l._getFilterDataType(e);t.addFilter("and",t.createFilter(n,i,a.condition||"EQUAL")),l.addFilter(e.dataField,t),r.value=a.cell.getFormattedValue(i,e.cellsFormat)}l.autoSaveState(),setTimeout((()=>{r.focus()}),25)}_handleFilterNumberCellEditor(e,t,l){const a=t.querySelector("input"),i=t.querySelector(".up"),r=t.querySelector(".down"),n=e.column,o=this;let s=t=>{const l=n._filterInfo;if("RANGE"===l.condition)return void a.focus();let i=parseFloat(l.value);if(isNaN(i))return l.value=0,void(a.value=0);(t<0?i>a.min||""===a.min:i<a.max||""===a.max)&&(a.value=i+t,l.value=a.value,a.focus(),o._handleFilterCellValue(e))};l&&(s=l);const d=(e,t)=>{let l,a;e.onpointerdown=function(e){s(t),l&&clearTimeout(l),l=setTimeout((()=>{a&&clearInterval(a),a=setInterval((()=>{s(t)}),50)}),300),e.preventDefault(),e.stopPropagation()},e.onpointerup=()=>{a&&clearInterval(a),l&&clearTimeout(l),a=null},e.onpointerenter=()=>{a&&(clearInterval(a),a=setInterval((()=>{s(1)}),50))},e.onpointerleave=()=>{clearInterval(a)},document.addEventListener("pointerup",(()=>{a&&clearInterval(a),a=null,l&&clearTimeout(l)}))};d(i,1),d(r,-1)}_openFilterCellDialog(e,t){const l=this,a=l._dialogFilter||l._createDialog(),i=l.localize("dialogFilterHeader")+" "+e.column.label,r=a.content;a.header.innerHTML=i,a.confirm=t;let n=null,o=0;l._cellEditors||(l._cellEditors=[]),l._dialogFilter||(a.modal=!0,a.btnConfirm.innerHTML=l.localize("dialogFilterButtonConfirm"),a.btnCancel.innerHTML=l.localize("dialogFilterButtonCancel"),a.onOpen=function(){a.focus();const e=l._dialogFilterCell,t=e.column._filterInfo.range,i=e.column._filterInfo.value;if("date"===e.column.dataType){const a=r.querySelector("smart-calendar");a.locale=l.locale,setTimeout((()=>{"RANGE"===e.column._filterInfo.condition&&t?(a.selectedDates=[new Date(t.min.getTime()),new Date(t.max.getTime())],a._selectMultipleDates(new Date(t.min.getTime()),new Date(t.max.getTime()))):i&&(a.selectedDates=[new Date(i[0]?i[0].getTime():i.getTime())]),a.focus()}),100),a.focus()}else{const e=r.querySelectorAll("input");e[0].focus(),t&&(e[0].value=t.min,e[1].value=t.max)}},a.onClose=function(){},a.btnCancel.onclick=function(){a.close();const e=l._dialogFilterCell;e.column._filterInfo.range=null,e.column._filterInfo.value=null,a.confirm(e.column)},a.btnClose.onclick=function(){a.close()},a.btnConfirm.onclick=function(){const e=l._dialogFilterCell;if(e.column._filterInfo.range=null,e.column._filterInfo.value=null,"date"===e.column.dataType){const t=r.querySelector("smart-calendar"),l=t.selectedDates;if("range"===t.selectionMode)e.column._filterInfo.range={min:new Date(l[0].getTime()),max:new Date(l[l.length-1].getTime())};else{const t=[];l.forEach((e=>{const l=new Date(e.getTime());t.push(l)})),e.column._filterInfo.value=t}}else{const t=r.querySelectorAll("input");let l=t[0].value,a=t[1].value;""===a&&(a=100),""===l&&(l=0),e.column._filterInfo.range={min:l,max:a}}a.confirm(e.column),a.close()},a.onkeydown=function(e){const t=e.key;"Enter"===t?a.btnConfirm.onclick():"Escape"===t&&a.close()}),r.classList.remove("smart-grid-layout"),r.innerHTML="";const s=()=>{const e=r.querySelectorAll("input");a.btnConfirm.disabled=!0,""===e[0].value&&(e[0].value=0),""===e[1].value&&(e[1].value=100),parseFloat(e[0].value)<=parseFloat(e[1].value)&&(a.btnConfirm.disabled=!1)};"date"!==e.column.dataType&&r.classList.add("smart-grid-layout");for(let t=0;t<2;t++){const a=e.column;if("date"===a.dataType){const e=document.createElement("div");"RANGE"===a._filterInfo.condition?e.innerHTML='<smart-calendar selection-mode="range"></smart-calendar>':e.innerHTML="<smart-calendar></smart-calendar>",r.appendChild(e);break}o%2==0&&(n=document.createElement("div"),n.classList.add("row"),r.appendChild(n));const i=document.createElement("div");i.classList.add("col-sm-6");const d=document.createElement("div");d.classList.add("column");const u=document.createElement("label");u.innerHTML=0===t?l.localize("dialogFilterMinLabel"):l.localize("dialogFilterMaxLabel");const c=document.createElement("div");c.classList.add("smart-grid-dialog-editor"),c.setAttribute("editor",a.dataField),c.setAttribute("template",a.editor.template),i.appendChild(d),n.appendChild(i),d.appendChild(u),d.appendChild(c),o++,c.innerHTML='<div class="smart-grid-cell-editor smart-filter-input-value smart-grid-number-input-cell-editor"><input class="smart-input" type="number"><div class="nav"><div tabindex="-1" class="up"></div><div tabindex="-1" class="down"></div></div></div>';const f=c.querySelector("input");f.onchange=()=>{s()},l._handleFilterNumberCellEditor(e,c,(e=>{let t=parseFloat(f.value);isNaN(t)?f.value=0:((e<0?t>f.min||""===f.min:t<f.max||""===f.max)&&(f.value=t+e),s())}))}l._dialogFilter=a,l._dialogFilterCell=e;const d=e.column.element.getBoundingClientRect(),u=l.offset(l);let c=d.left+window.pageXOffset-u.left,f=d.bottom+l.layout.rowMinHeight+window.pageYOffset-u.top,m=Math.max(a.offsetWidth,314);c+m>u.left+l.offsetWidth&&(c=d.left+d.width+window.pageXOffset-u.left-m),e.column.filterRowMenu&&e.column.filterRowMenu.classList.contains("open")&&l._closeMenu(e.column.filterRowMenu),a.open(c,f)}});
|
|
6
|
+
Smart.Utilities.Assign("Grid.Filter",class{addFilter(e,t,l){const a=this,i=a.columnByDataField[e];if(!i){if(!a.dataSource||!a.dataSource.dataFields)return;if(!a.dataSource.dataFields.find((e=>e.name===e)))return}const r=a._getFilterDataType(i);if("string"==typeof t?t=a.dataSource._createFilter(r,[t]):t&&Array.isArray(t)&&(t=a.dataSource._createFilter(r,t)),"string"===r&&i.editor&&i.editor.dataSource&&i.dataField===i.displayField&&i.editor.dataSource[0]){const e=i.editor.dataSource[0];void 0!==e.label&&void 0!==e.value&&i.editor.dataSource.forEach((e=>{e.value===t.filters[0].value&&(t.filters[0].value=e.label)}))}if(i&&i.canNotify){if(i.setProperty("filter",t),a._isUpdating)return;!1!==l&&(a._filterRowInputOnFocus=!0,a.refreshFilters(),delete a._filterRowInputOnFocus)}}removeFilter(e,t){const l=this,a=l.columnByDataField[e];if(a&&a.canNotify){if(a.setProperty("filter",null),l._isUpdating)return;!1!==t&&(l._filterRowInputOnFocus=!0,l.refreshFilters(),delete l._filterRowInputOnFocus)}a&&delete a._filterState}findCells(e){const t=this,l=t.find(e,null,null,"or"),a=[];"string"==typeof e&&e.indexOf(",")>=0&&(e=e.split(","));for(let i=0;i<l.length;i++){const r=l[i];for(let l=0;l<t.columns.length;l++){const i=t.columns[l],n=r[i.dataField];if(Array.isArray(e))for(let t=0;t<e.length;t++)(""+n).trim().toLowerCase()===(""+e[t]).trim().toLowerCase()&&a.push([r.$.id,i.dataField,e[t]]);else(""+n).trim().toLowerCase()===(""+e).trim().toLowerCase()&&a.push([r.$.id,i.dataField,e])}}return a}find(e,t,l,a="and"){const i=this;let r=[];if(l){const e={"=":"EQUAL","<>":"NOT_EQUAL","!=":"NOT_EQUAL",not_like:"DOES_NOT_CONTAIN",like:"CONTAINS","<":"LESS_THAN",">":"GREATER_THAN","<=":"LESS_THAN_OR_EQUAL",">=":"GREATER_THAN_OR_EQUAL",equal:"EQUAL","not equal":"NOT_EQUAL","less than":"LESS_THAN","greater than":"GREATER_THAN","greater than or equal":"GREATER_THAN_OR_EQUAL","less than or equal":"LESS_THAN_OR_EQUAL","starts with":"STARTS_WITH","ends with":"ENDS_WITH",notEqual:"NOT_EQUAL",not_equal:"NOT_EQUAL",lessThan:"LESS_THAN",greaterThan:"GREATER_THAN",greaterThanOrEqual:"GREATER_THAN_OR_EQUAL",lessThanOrEqual:"LESS_THAN_OR_EQUAL",less_than:"LESS_THAN",greater_than:"GREATER_THAN",greater_than_or_equal:"GREATER_THAN_OR_EQUAL",less_than_or_equal:"LESS_THAN_OR_EQUAL",null:"null","":"EMPTY",isblank:"EMPTY",isnotblank:"NOT_EMPTY",isBlank:"EMPTY",isNotBlank:"NOT_EMPTY",CONTAINS:"CONTAINS",DOES_NOT_CONTAIN:"DOES_NOT_CONTAIN",contains:"CONTAINS",does_not_contain:"DOES_NOT_CONTAIN","not contains":"DOES_NOT_CONTAIN",notcontains:"DOES_NOT_CONTAIN",notContains:"DOES_NOT_CONTAIN",startswith:"STARTS_WITH",endswith:"ENDS_WITH",starts_with:"STARTS_WITH",ends_with:"ENDS_WITH",startsWith:"STARTS_WITH",endsWith:"ENDS_WITH",NULL:"NULL",NOT_NULL:"NOT_NULL"};e[l]&&(l=e[l])}const n=(e,a="or")=>{let r=[];for(let n=0;n<i.columns.length;n++){const o=i.columns[n],s=new Smart.Utilities.FilterGroup;let d;t&&o.dataField!==t||("string"===o.dataType?(l||(l="CONTAINS"),d=s.createFilter("string",e,l)):"number"===o.dataType?(l||(l="EQUAL"),d=s.createFilter("number",e,l)):"date"===o.dataType&&(l||(l="EQUAL"),d=s.createFilter("date",e,l)),s.addFilter(a,d),r.push([o.dataField,s]))}return r};void 0!==e&&"string"==typeof e&&e.indexOf(",")>=0&&(e=e.split(","));let o=[];if(Array.isArray(e))for(let t=0;t<e.length;t++)o.push(n(e[t].trim()));else r=n(e);const s=i.dataSource;if(!s)return[];let d=[];const c=(e,t)=>{let l=!1;for(let a=0;a<t.length;a++){const i=t[a],r=e[i[0]];l=l||i[1].evaluate(r)}return l};for(let e=0;e<s.length;e++){const t=s[e];if(o.length)if("and"===a){let e=!0;for(let l=0;l<o.length;l++)e=e&&c(t,o[l]);e&&d.push(t)}else{let e=!1;for(let l=0;l<o.length;l++)e=e||c(t,o[l]);e&&d.push(t)}else c(t,r)&&d.push(t)}return d}_applyJSONFilters(e,t){const l=this;function a(e){for(var t={},a=0;a<e.length;a++){const d=e[a];let c=d.field;const u=d.type,f=d.operator,m=d.value,F=d.logic;for(var i=0;i<l.columns.length;i++){var r=l.columns[i];c===r.label&&r.datafield&&(c=r.datafield)}if(!t[c]){var n=new Smart.FilterGroup;t[c]={filterGroup:n,logic:F||"and"}}F&&(t[c].logic=F||"and");var o,s=t[c].filterGroup;switch(u){case"string":o=s.createFilter("stringFilter",m,f);break;case"date":o=s.createFilter("dateFilter",m,f);break;case"number":o=s.createFilter("numericFilter",m,f);break;case"boolean":case"bool":o=s.createFilter("booleanFilter",m,f);break;default:continue}s.addFilter(t[c].logic.toLowerCase(),o)}return t}if(t)t(a(e));else{l.beginUpdate(),l.clearFilter();var i=a(e);for(var r in i){var n=i[r].filterGroup;l.addFilter(r,n,!1)}l.endUpdate(),l.refreshFilters()}}filterBy(e,t,l){const a=this;let i,r=[];if(a.ai&&a.ai.key)return void(()=>{const t=e=>{a._applyJSONFilters(e,l)};(()=>{let l='You are a helpful assistant converting natural language filter queries into structured JSON filters.\n "Use only these columns:';for(let e=0;e<a.columns.length;e++){const t=a.columns[e];t.allowFilter&&(l+="- "+t.label+" ("+t.dataType+") => "+t.dataField+"\n")}l+='\n Supported operators: CONTAINS, EQUAL, NOT_EQUAL, GREATER_THAN, LESS_THAN, GREATER_THAN_OR_EQUAL, LESS_THAN_OR_EQUAL, STARTS_WITH, ENDS_WITH \n Supported types: string, number, date, boolean\n Respond in this format\n [\n {\n "field": "dataField",\n "operator": "some operator",\n "value": "some value",\n "type": "some type",\n "logic": "AND }\n ]',function(e,t,l,i,r,n){const o=e||"https://api.openai.com/v1/chat/completions",s=new XMLHttpRequest;s.open("POST",o,!0),s.setRequestHeader("Authorization","Bearer "+t),s.setRequestHeader("Content-Type","application/json"),a._aiCanFetch=!0,s.onreadystatechange=function(){if(4===s.readyState)if(s.status>=200&&s.status<300)try{var e=JSON.parse(s.responseText);if(a._aiCanFetch){var t=e.choices[0].message.content,l=JSON.parse(t);r&&"function"==typeof r&&r(l),a._aiCanFetch=!1,n(null,l)}else n(null,[])}catch(e){console.error("Failed to parse OpenAI response:",s.responseText),n(e,[])}else console.error("Error calling OpenAI API:",s.status,s.statusText),n(new Error("HTTP error: "+s.status),[])};var d=JSON.stringify({model:"gpt-4",messages:[{role:"system",content:l},{role:"user",content:"Query: "+i}],temperature:0});s.send(d)}(a.ai.url,a.ai.key,l,e,t,(function(e){}))})()})();void 0!==e&&"string"==typeof e&&e.indexOf(",")>=0&&(e=e.split(",")),r=((e,l="or")=>{let r=[];for(let n=0;n<a.columns.length;n++){const o=a.columns[n],s=new Smart.Utilities.FilterGroup;let d;t&&o.dataType!==t||("string"===o.dataType?(i="CONTAINS",d=s.createFilter("string",e,i)):"number"===o.dataType?(i="EQUAL",d=s.createFilter("number",e,i)):"date"===o.dataType&&(i="EQUAL",d=s.createFilter("date",e,i)),s.addFilter(l,d),r.push([o.dataField,s]))}return r})(e),a.beginUpdate(),a.clearFilter();const n=a.filtering.operator;a.filtering.operator="or";for(let e=0;e<r.length;e++){const t=r[e];a.addFilter(t[0],t[1],!1)}a.endUpdate(),a.refreshFilters(),a.filtering.operator=n}clearFilter(){const e=this;for(let t=0;t<e.columns.length;t++){const l=e.columns[t];l&&(l.setProperty("filter",null),l._filterInfo&&(delete l._filterInfo.value,delete l._filterInfo.condition))}e._refreshFilterRowEditors(),e.refreshFilters()}getFilteredColumns(){const e=this;if(e._filters){const t=[];for(let l=0;l<e._filters.length;l++){const a=e._filters[l];t.push({dataField:a[0],filter:a[1].toString()})}return t}return[]}getFilteredColumnsByDataField(){const e=this;if(e._filters){const t=[];for(let l=0;l<e._filters.length;l++){const a=e._filters[l];t[a[0]]=a[1],t.length++}return t}return[]}getVisibleRows(){const e=this;if(e._visibleRows)return e._visibleRows;const t=[],l=e._viewRows,a=e.editing.addNewRow.visible&&"far"!==e.editing.addNewRow.position&&"button"!==e.editing.addNewRow.displayMode?1:0,i=e.grouping.enabled&&e.dataSource.groupBy&&e.dataSource.groupBy.length>0;let r=0;for(let e=0;e<l.length;e++){const n=l[e];n.canNotify=!1,n.visibleIndex=-1,!n.visible||!1===n.filtered&&void 0!==n.filtered||(i?n.leaf?n.visibleIndex=r++:n.visibleIndex=-1:n.visibleIndex=t.length-a,t.push(n)),n.canNotify=!0}return e._visibleRows=t,t}_refreshFilterRowEditors(){const e=this;if(e.filtering.filterRow)for(let t=0;t<e.columns.length;t++)e.columns[t]._filterEditorInitialized&&(e.columns[t]._filterEditorInitialized=!1)}refreshSortAndFilters(){this._refreshDataFilters()}_refreshDataFilters(){const e=this;!1!==e.editing.autoUpdateFilterAndSort&&(e._supressFilter||(!e._filters||e._filters&&0===e._filters.length)&&(!e._sortedColumns||e._sortedColumns&&0===e._sortedColumns.length)||(e.beginUpdate(),e._sortedColumns&&e._sortedColumns.length>0&&e.refreshSort(),e._filters&&e._filters.length>0&&e.refreshFilters(!0),e.endUpdate()))}refreshFilters(e){const t=this,l=[];t._filters||(t._filters=[]);for(let e=0;e<t.columns.length;e++){const a=t.columns[e];a.filter&&l.push([a.displayField,a.filter])}if(t.scrollTop=0,t.closeMenu(),t.dataSource&&!t.dataSource.onFilter&&(t.dataSource.onFilter=function(){const e=t._viewRows;for(let t=0;t<e.length;t++){const l=e[t];if(l.data&&!l.addNewRow){if(!l.data.$){l.filtered=!0;continue}l.filtered=void 0===l.data.$.filtered||l.data.$.filtered}}t.refresh()}),JSON.stringify(t._filters)===JSON.stringify(l)&&!0!==e)return void(t._visibleRows=null);if(t._filters=l,t._visibleRows=null,t.dataSource&&t.dataSource.virtualDataSource)t.closeMenu(),t._virtualDataRequest("filter");else{const e=t._filterOperator||t.filtering.operator;t.dataSource._filter(l,e)}t.paging.enabled&&t.dataSource&&!t.dataSource.virtualDataSource&&t._refreshPagesCount();let a=[];for(let e=0;e<t.columns.length;e++){const l=t.columns[e];l.filter&&a.push(l)}let i=[],r=[],n=[];if(t._filters)for(let e=0;e<t._filters.length;e++){const l=t._filters[e];n.push(l[0]);let a="";const o=t.columnByDataField[l[0]];for(let e=0;e<l[1].filters.length;e++){const t=l[1].filters[e].condition,i=l[1].filters[e].value,r=l[1].logicalOperators[e],n=1===r||"or"===r?"or":"and";o&&"string"===o.dataType?a+=`"${t}" "${i}"`:!o||"date"!==o.dataType&&"time"!==o.dataType&&"datetime"!==o.dataType?a+=`"${t}" ${i}`:i.getFullYear?a+=`"${t}" ${i.getFullYear()+"-"+(1+i.getMonth())+"-"+i.getDate()}`:a+=`"${t}" ${""+i}`,e<l[1].filters.length-1&&(a+=` ${n} `)}r.push([l[0],a]),i.push({dataField:l[0],filter:l[1]})}t.summaryRow.visible&&(t._calculateSummary(),t._recycle(!1)),e||t.$.fireEvent("filter",{columns:a,expressions:JSON.parse(JSON.stringify(r)),dataFields:n,data:JSON.parse(JSON.stringify(i))}),t._onFilter&&t._onFilter()}_getFilterDataType(e){const t=this;let l=e.dataType;if(e.displayField!==e.dataField&&t.dataSource&&t.dataSource.dataFields){const a=t.dataSource.dataFields.find((t=>t.name===e.displayField));a&&(l=a.dataType||"string")}return l}_handleFilterCellFocus(e){const t=this,l=e.column._filterInfo,a=l.editor,i=l.input,r=e.column;let n=r.dataType;if(a.setAttribute("focus",""),t.filtering.filterRow.cell=e,"RANGE"===l.condition)t._openFilterCellDialog(e,(e=>{const l=e._filterInfo,a=l.editor,i=l.range,r=l.input,n=l.cell;if(i){const l=new Smart.FilterGroup;l.addFilter("and",l.createFilter(e.dataType,i.min,"GREATER_THAN_OR_EQUAL")),l.addFilter("and",l.createFilter(e.dataType,i.max,"LESS_THAN_OR_EQUAL")),t.addFilter(e.dataField,l)}else t.removeFilter(e.dataField);if(t.autoSaveState(),a&&r)if(r.type="",i){const t=n.getFormattedValue(i.min,e.cellsFormat),l=n.getFormattedValue(i.max,e.cellsFormat);r.value=t+" - "+l}else r.value=""}));else if(r.displayField!==r.dataField&&(n=t._getFilterDataType(r)),i.type="number"===n||"int"===n||"float"===n?"number":"",l.value&&(i.value=l.value,"date"===n)){const t=new Smart.FilterGroup;if("string"==typeof l.value?i.value=e.getFormattedValue(l.value,r.cellsFormat):i.value=e.getFormattedValue(l.value[0],r.cellsFormat),l.value.length>1){let a=[];for(let i=0;i<l.value.length;i++)t.addFilter("or",t.createFilter(r.dataType,l.value[i],l.condition||"EQUAL")),a.push(e.getFormattedValue(l.value[i],r.cellsFormat||""));i.value=a.toString()}}}_handleFilterCellBlur(e){const t=this,l=e.column._filterInfo,a=l.editor,i=l.input,r=e.column,n=l.condition,o=t._getFilterDataType(r);if(t.filtering.filterRow.cell=null,r.filterRowMenu&&r.filterRowMenu.classList.contains("open"))a.removeAttribute("focus");else{if(""!==i.value&&"RANGE"!==n)if("date"===r.dataType){let t=[];if(i.value.indexOf(",")>=0&&(t=i.value.split(","),t=t.forEach((e=>Smart.Utilities.DateTime.ParseDate(e.trim(),r.cellsFormat)))),t.length>1){l.value=t;let a=[];const n=new Smart.FilterGroup;for(let i=0;i<t.length;i++)n.addFilter("or",n.createFilter(r.dataType,t[i],l.condition||"EQUAL")),a.push(e.getFormattedValue(t[i],r.cellsFormat||""));i.value=a.toString()}else r.cellsFormat?l.value=Smart.Utilities.DateTime.ParseDate(i.value,r.cellsFormat):l.value=new Date(i.value),i.value=e.getFormattedValue(l.value,r.cellsFormat)}else"number"===o||"int"===o||"float"===o?(l.value=parseFloat(i.value),i.type="",i.value=e.getFormattedValue(l.value,r.cellsFormat)):l.value=i.value;"auto"===t.filtering.filterRow.applyMode&&t._handleFilterCellValue(e),a.removeAttribute("focus")}}getExcelFilterDataSource(e){const t=this,l=t.columnByDataField[e];if(!l)return[];let a=[];if(l.filterEditor&&l.filterEditor.dataSource)a=a.concat(l.filterEditor.dataSource.map((e=>"string"==typeof e?{label:e,value:e}:e)));else if(l.options){const e=Array.isArray(l.options)?l.options.slice():[];a=a.concat(e.map((e=>"string"==typeof e?{label:e,value:e}:{label:void 0!==e.label?e.label:e.value,value:void 0!==e.value?e.value:e.label})))}else{const e={};if(t.dataSource&&t.dataSource.length>0)for(let a=0;a<t.dataSource.length;a++){const i=t.dataSource[a][l.dataField];null!=i&&""!==i&&(e[i]=i)}a=a.concat(Object.keys(e).map((e=>({label:e,value:e}))))}return a}getExcelFilter(e,t){const l=this,a=l.columnByDataField[e];if(a&&!a._filterInfo&&t&&(a._filterInfo={excelValues:t}),!a||!a._filterInfo)return null;t&&(a._filterInfo.excelValues=t);const i=a._filterInfo.excelValues,r=new Smart.Utilities.FilterGroup;let n=!1;const o="tags"===a.template&&a.templateSettings&&a.templateSettings.multiSelect;if(i){for(let e=0;e<i.length;e++){const t=i[e],s="string"===a.dataType?"stringFilter":"number"===a.dataType?"numericFilter":"date"===a.dataType?"dateFilter":"boolean"===a.dataType?"booleanFilter":"stringFilter";let d=r.createFilter(s,t,"equal",void 0,a.formatString,l.locale,!1);o&&(d=r.createFilter("stringFilter",t,"contains",void 0,a.formatString,l.locale,!1)),r.addFilter("or",d),n=!0}if(0===i.length){const t=l.getExcelFilterDataSource(e);if(t&&t.length>0)for(let e=0;e<t.length;e++){const i=t[e].value,s="string"===a.dataType?"stringFilter":"number"===a.dataType?"numericFilter":"date"===a.dataType?"dateFilter":"boolean"===a.dataType?"booleanFilter":"stringFilter";let d=r.createFilter(s,i,"not_equal",void 0,a.formatString,l.locale,!1);o&&(d=r.createFilter("stringFilter",i,"does_not_contain",void 0,a.formatString,l.locale,!1)),r.addFilter("and",d),n=!0}}}return n?(r.operator="and",r):null}getFilterRowFilter(e){const t=this.columnByDataField[e];if(!t||!t._filterInfo)return null;const l=t._filterInfo,a=l.condition,i=this._getFilterDataType(t);if("RANGE"===a){const e=l.range;if(e){const l=new Smart.FilterGroup;return l.addFilter("and",l.createFilter(t.dataType,e.min,"GREATER_THAN_OR_EQUAL")),l.addFilter("and",l.createFilter(t.dataType,e.max,"LESS_THAN_OR_EQUAL")),l}return null}{let e=l.value;if(""===e||void 0===e)return null;{const a=new Smart.FilterGroup;let r=!1;if("date"===t.dataType){let l=null;e&&"object"==typeof e&&e instanceof Date?r=!0:e&&((e.split("/").length>2||e.split("-").length>2||e.split(".").length>2)&&(r=!0),r&&t.cellsFormat&&(l=Smart.Utilities.DateTime.ParseDate(e,t.cellsFormat),null!==l&&(r=!0,e=l)))}if("date"!==t.dataType||r){if("string"==typeof e){const t=e=>{e.forEach((e=>{const t=e.trim();t.length&&a.addFilter("or",a.createFilter(i,t,l.condition||("string"===i?"CONTAINS":"EQUAL")))}))};e.indexOf(" or ")>=0?(e=e.split("or"),t(e)):e.indexOf(" and ")>=0?(e=e.split("and"),t(e)):e.indexOf(" & ")>=0?(e=e.split("&"),t(e)):e.indexOf(' | " ')>=0?(e=e.split("|"),t(e)):a.addFilter("and",a.createFilter(i,e,l.condition||("string"===i?"CONTAINS":"EQUAL")))}else a.addFilter("and",a.createFilter(i,e,l.condition||("string"===i?"CONTAINS":"EQUAL")));return a}}}}_handleFilterCellValue(e){const t=this,l=e.column._filterInfo,a=e.column,i=l.condition,r=t._getFilterDataType(a);if("RANGE"===i){const e=l.range;if(e){const l=new Smart.FilterGroup;l.addFilter("and",l.createFilter(a.dataType,e.min,"GREATER_THAN_OR_EQUAL")),l.addFilter("and",l.createFilter(a.dataType,e.max,"LESS_THAN_OR_EQUAL")),t.addFilter(a.dataField,l)}else t.removeFilter(a.dataField)}else{let e=l.value;if(""!==e&&void 0!==e){const i=new Smart.FilterGroup;let n=!1;if("date"===a.dataType){let t=null;e&&"object"==typeof e&&e instanceof Date?n=!0:e&&((e.split("/").length>2||e.split("-").length>2||e.split(".").length>2)&&(n=!0),n&&a.cellsFormat&&(t=Smart.Utilities.DateTime.ParseDate(e,a.cellsFormat),null!==t&&(n=!0,e=t)))}if("date"!==a.dataType||n){if("string"==typeof e){const t=e=>{e.forEach((e=>{const t=e.trim();t.length&&i.addFilter("or",i.createFilter(r,t,l.condition||("string"===r?"CONTAINS":"EQUAL")))}))};e.indexOf(" or ")>=0?(e=e.split("or"),t(e)):e.indexOf(" and ")>=0?(e=e.split("and"),t(e)):e.indexOf(" & ")>=0?(e=e.split("&"),t(e)):e.indexOf(' | " ')>=0?(e=e.split("|"),t(e)):i.addFilter("and",i.createFilter(r,e,l.condition||("string"===r?"CONTAINS":"EQUAL")))}else i.addFilter("and",i.createFilter(r,e,l.condition||("string"===r?"CONTAINS":"EQUAL")));const n=t.getExcelFilter(a.dataField);n&&i.addFilter("and",n),t.addFilter(a.dataField,i)}}else{const e=t.getExcelFilter(a.dataField);e?t.addFilter(a.dataField,e):t.removeFilter(a.dataField)}}t.autoSaveState()}_handleFilterCellKeyDown(e,t){const l=this,a=e.column._filterInfo.input;t.ctrlKey&&"a"===t.key?a.select():t.altKey&&"ArrowDown"===t.key&&l._handleFilterCellIconClick(e)}_handleFilterCellKeyUp(e,t){const l=e.column,a=l._filterInfo.input,i=this,r=l._filterInfo,n=t.key;r.value!==a.value&&(r.value=a.value,"Control"===n||t.ctrlKey||("Escape"===n&&(r.value="",r.range=null,a.value=""),i._suspendFilterRowRefresh=!0,"Enter"===n||"Escape"===n||""===a.value?i._handleFilterCellValue(e):"auto"===i.filtering.filterRow.applyMode&&"Ctrl"!==n&&"Shift"!==n&&(i._filterRowTimer&&clearTimeout(i._filterRowTimer),i._filterRowTimer=setTimeout((()=>{i._suspendFilterRowRefresh=!0,i._handleFilterCellValue(e),i._suspendFilterRowRefresh=!1}),i.filtering.filterRow.autoApplyModeDelay)),clearTimeout(i._suspendFilterRowTimer),i._suspedFilterRowTimer=setTimeout((()=>{i._suspendFilterRowRefresh=!1}),1e3),t.ctrlKey&&"a"===n&&a.select()))}_handleFilterCellCheckBoxClick(e){const t=this,l=e.column,a=l._filterInfo;void 0===a.value&&(a.value=null),!0===a.value?a.value=!1:!1===a.value?a.value=null:null===a.value&&(a.value=!0);const i=e.element.querySelector(".smart-input");if(a.value?i.setAttribute("checked",a.value):null===a.value?i.setAttribute("checked","indeterminate"):i.removeAttribute("checked"),null===a.value)return t.removeFilter(l.dataField),void t.autoSaveState();const r=new Smart.FilterGroup;r.addFilter("and",r.createFilter(l.dataType,!0===a.value,"EQUAL")),t.addFilter(l.dataField,r),t.autoSaveState()}_handleFilterCellExcelIconClick(e){const t=this,l=e.column;l.filterRowExcelMenu&&l.filterRowExcelMenu.classList.contains("open")?t._closeMenu(l.filterRowExcelMenu):t._openColumnFilterExcelMenu(l)}_handleFilterCellIconClick(e){const t=this,l=e.column;l.filterRowMenu&&l.filterRowMenu.classList.contains("open")?t._closeMenu(l.filterRowMenu):t._openColumnFilterMenu(l)}_handleFilterCalendarCellClick(e){const t=this;t._openFilterCellDialog(e,(l=>{const a=l._filterInfo,i=a.editor.querySelector("input"),r=a.value;if(i){if(r||"RANGE"===a.condition)if(!r&&"RANGE"===a.condition&&a.range){t.removeFilter(l.dataField,!1);const e=new Smart.FilterGroup,i=a.range;e.addFilter("and",e.createFilter(l.dataType,i.min,"GREATER_THAN_OR_EQUAL")),e.addFilter("and",e.createFilter(l.dataType,i.max,"LESS_THAN_OR_EQUAL"));const r=a.cell.getFormattedValue(i.min,l.cellsFormat),n=a.cell.getFormattedValue(i.max,l.cellsFormat);t.addFilter(l.dataField,e),a.editor.querySelector("input").value=r+" - "+n}else if(r||"RANGE"!==a.condition||a.range){i.value=e.getFormattedValue(r[0],l.cellsFormat||"");const n=new Smart.FilterGroup;if(1===r.length)n.addFilter("and",n.createFilter(l.dataType,r[0],a.condition||"EQUAL"));else{let t=[];for(let i=0;i<r.length;i++)n.addFilter("or",n.createFilter(l.dataType,r[i],a.condition||"EQUAL")),t.push(e.getFormattedValue(r[i],l.cellsFormat||""));i.value=t.toString()}t.removeFilter(l.dataField,!1),t.addFilter(l.dataField,n)}else i.value="",t.removeFilter(l.dataField);else i.value="",t.removeFilter(l.dataField);t.autoSaveState()}}))}_handleFilterMenuClick(e,t){const l=this,a=e._filterInfo,i=a.editor,r=a.input;if(i.firstElementChild.innerHTML=`<i class="smart-grid-icon ${t.icon} show"></i>`,"CLEAR_FILTER"===t.value&&(r.value="",i.firstElementChild.innerHTML='<i class="smart-grid-icon smart-icon-search show"></i>',a.condition=null,a.value="",a.range=null),r.type="","RANGE"===a.condition&&"RANGE"!==t.value){let e=a.range;a.value=e.min}else if("RANGE"===t.value&&"RANGE"!==a.condition&&null!==a.condition){let e=a.range;a.value&&(e=a.value&&Array.isArray(a.value)?{min:a.value[0],max:a.value[0]}:{min:a.value,max:a.value},a.range=e)}if("RANGE"===t.value){r.readonly=!0;const i=new Smart.FilterGroup,n=a.range;if(n){i.addFilter("and",i.createFilter(e.dataType,n.min,"GREATER_THAN_OR_EQUAL")),i.addFilter("and",i.createFilter(e.dataType,n.max,"LESS_THAN_OR_EQUAL")),l.addFilter(e.dataField,i);const t=a.cell.getFormattedValue(n.min,e.cellsFormat),o=a.cell.getFormattedValue(n.max,e.cellsFormat);r.value=t+" - "+o}else r.value="";return a.condition=t.value,void l.autoSaveState()}if(r.readonly=!1,"CLEAR_FILTER"!==t.value&&(a.condition=t.value),""===r.value)l.removeFilter(e.dataField);else{const t=new Smart.FilterGroup,i=a.value,n=l._getFilterDataType(e);t.addFilter("and",t.createFilter(n,i,a.condition||"EQUAL")),l.addFilter(e.dataField,t),r.value=a.cell.getFormattedValue(i,e.cellsFormat)}l.autoSaveState(),setTimeout((()=>{r.focus()}),25)}_handleFilterNumberCellEditor(e,t,l){const a=t.querySelector("input"),i=t.querySelector(".up"),r=t.querySelector(".down"),n=e.column,o=this;let s=t=>{const l=n._filterInfo;if("RANGE"===l.condition)return void a.focus();let i=parseFloat(l.value);if(isNaN(i))return l.value=0,void(a.value=0);(t<0?i>a.min||""===a.min:i<a.max||""===a.max)&&(a.value=i+t,l.value=a.value,a.focus(),o._handleFilterCellValue(e))};l&&(s=l);const d=(e,t)=>{let l,a;e.onpointerdown=function(e){s(t),l&&clearTimeout(l),l=setTimeout((()=>{a&&clearInterval(a),a=setInterval((()=>{s(t)}),50)}),300),e.preventDefault(),e.stopPropagation()},e.onpointerup=()=>{a&&clearInterval(a),l&&clearTimeout(l),a=null},e.onpointerenter=()=>{a&&(clearInterval(a),a=setInterval((()=>{s(1)}),50))},e.onpointerleave=()=>{clearInterval(a)},document.addEventListener("pointerup",(()=>{a&&clearInterval(a),a=null,l&&clearTimeout(l)}))};d(i,1),d(r,-1)}_openFilterCellDialog(e,t){const l=this,a=l._dialogFilter||l._createDialog(),i=l.localize("dialogFilterHeader")+" "+e.column.label,r=a.content;a.header.innerHTML=i,a.confirm=t;let n=null,o=0;l._cellEditors||(l._cellEditors=[]),l._dialogFilter||(a.modal=!0,a.btnConfirm.innerHTML=l.localize("dialogFilterButtonConfirm"),a.btnCancel.innerHTML=l.localize("dialogFilterButtonCancel"),a.onOpen=function(){a.focus();const e=l._dialogFilterCell,t=e.column._filterInfo.range,i=e.column._filterInfo.value;if("date"===e.column.dataType){const a=r.querySelector("smart-calendar");a.locale=l.locale,setTimeout((()=>{"RANGE"===e.column._filterInfo.condition&&t?(a.selectedDates=[new Date(t.min.getTime()),new Date(t.max.getTime())],a._selectMultipleDates(new Date(t.min.getTime()),new Date(t.max.getTime()))):i&&(a.selectedDates=[new Date(i[0]?i[0].getTime():i.getTime())]),a.focus()}),100),a.focus()}else{const e=r.querySelectorAll("input");e[0].focus(),t&&(e[0].value=t.min,e[1].value=t.max)}},a.onClose=function(){},a.btnCancel.onclick=function(){a.close();const e=l._dialogFilterCell;e.column._filterInfo.range=null,e.column._filterInfo.value=null,a.confirm(e.column)},a.btnClose.onclick=function(){a.close()},a.btnConfirm.onclick=function(){const e=l._dialogFilterCell;if(e.column._filterInfo.range=null,e.column._filterInfo.value=null,"date"===e.column.dataType){const t=r.querySelector("smart-calendar"),l=t.selectedDates;if("range"===t.selectionMode)e.column._filterInfo.range={min:new Date(l[0].getTime()),max:new Date(l[l.length-1].getTime())};else{const t=[];l.forEach((e=>{const l=new Date(e.getTime());t.push(l)})),e.column._filterInfo.value=t}}else{const t=r.querySelectorAll("input");let l=t[0].value,a=t[1].value;""===a&&(a=100),""===l&&(l=0),e.column._filterInfo.range={min:l,max:a}}a.confirm(e.column),a.close()},a.onkeydown=function(e){const t=e.key;"Enter"===t?a.btnConfirm.onclick():"Escape"===t&&a.close()}),r.classList.remove("smart-grid-layout"),r.innerHTML="";const s=()=>{const e=r.querySelectorAll("input");a.btnConfirm.disabled=!0,""===e[0].value&&(e[0].value=0),""===e[1].value&&(e[1].value=100),parseFloat(e[0].value)<=parseFloat(e[1].value)&&(a.btnConfirm.disabled=!1)};"date"!==e.column.dataType&&r.classList.add("smart-grid-layout");for(let t=0;t<2;t++){const a=e.column;if("date"===a.dataType){const e=document.createElement("div");"RANGE"===a._filterInfo.condition?e.innerHTML='<smart-calendar selection-mode="range"></smart-calendar>':e.innerHTML="<smart-calendar></smart-calendar>",r.appendChild(e);break}o%2==0&&(n=document.createElement("div"),n.classList.add("row"),r.appendChild(n));const i=document.createElement("div");i.classList.add("col-sm-6");const d=document.createElement("div");d.classList.add("column");const c=document.createElement("label");c.innerHTML=0===t?l.localize("dialogFilterMinLabel"):l.localize("dialogFilterMaxLabel");const u=document.createElement("div");u.classList.add("smart-grid-dialog-editor"),u.setAttribute("editor",a.dataField),u.setAttribute("template",a.editor.template),i.appendChild(d),n.appendChild(i),d.appendChild(c),d.appendChild(u),o++,u.innerHTML='<div class="smart-grid-cell-editor smart-filter-input-value smart-grid-number-input-cell-editor"><input class="smart-input" type="number"><div class="nav"><div tabindex="-1" class="up"></div><div tabindex="-1" class="down"></div></div></div>';const f=u.querySelector("input");f.onchange=()=>{s()},l._handleFilterNumberCellEditor(e,u,(e=>{let t=parseFloat(f.value);isNaN(t)?f.value=0:((e<0?t>f.min||""===f.min:t<f.max||""===f.max)&&(f.value=t+e),s())}))}l._dialogFilter=a,l._dialogFilterCell=e;const d=e.column.element.getBoundingClientRect(),c=l.offset(l);let u=d.left+window.pageXOffset-c.left,f=d.bottom+l.layout.rowMinHeight+window.pageYOffset-c.top,m=Math.max(a.offsetWidth,314);u+m>c.left+l.offsetWidth&&(u=d.left+d.width+window.pageXOffset-c.left-m),e.column.filterRowMenu&&e.column.filterRowMenu.classList.contains("open")&&l._closeMenu(e.column.filterRowMenu),a.open(u,f)}});
|
package/source/smart.grid.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
|
-
/* Smart UI v25.0.
|
|
2
|
+
/* Smart UI v25.0.1 (2025-11-26)
|
|
3
3
|
Copyright (c) 2011-2024 jQWidgets.
|
|
4
4
|
License: https://htmlelements.com/license/ */ //
|
|
5
5
|
|
|
6
|
-
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+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()}}}});
|
|
6
|
+
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()}}}});
|
package/source/smart.grid.row.js
CHANGED