@grapecity/wijmo.grid.filter 5.20252.42 → 5.20252.44

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/es2015-esm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  *
3
- * Wijmo Library 5.20252.42
3
+ * Wijmo Library 5.20252.44
4
4
  * https://developer.mescius.com/wijmo
5
5
  *
6
6
  * Copyright(c) MESCIUS inc. All rights reserved.
@@ -11,4 +11,4 @@
11
11
  *
12
12
  */
13
13
 
14
- import{Column,DataMap,FlexGrid,DataMapEditor,CellRange,CellRangeEventArgs,CellType,_NewRowTemplate}from"@grapecity/wijmo.grid";import{Globalize,asString,asNumber,asArray,asBoolean,asType,asEnum,CollectionView,isString,isDate,DateTime,culture,isNumber,setAttribute,copy,changeType,showPopup,hidePopup,isFunction,createElement,toggleClass,removeClass,closestClass,setAriaLabel,Control,Event,DataType,Key,GlyphClsNames,InputFormElementsClsNames,UtilitesClsNames,NotifyCollectionChangedAction,format,setText,escapeRegExp,setChecked,SortDescription,SortNulls,ControlClsNames,replaceItems,getUniqueId,_addCultureInfo,enable,moveFocus,hasClass,addClass,ControlStateClsNames,_updatePopupPosition,PopupPosition,_registerModule}from"@grapecity/wijmo";import{DropDown,DropDownClsNames}from"@grapecity/wijmo.input";import{TabPanel}from"@grapecity/wijmo.nav";import*as input from"@grapecity/wijmo.input";import*as selfModule from"@grapecity/wijmo.grid.filter";export const ColumnFilterEditorClsNames={filterType:"wj-filtertype",hostElement:"wj-columnfiltereditor",sortButtons:"wj-sort-buttons",filterHeader:"wj-filter-header"};export const ConditionFilterEditorClsNames={hostElement:"wj-conditionfilter-editor"};export const FlexGridFilterClsNames={elemFilter:"wj-elem-filter",filter:"wj-filter",filterOff:"wj-filter-off",filterOn:"wj-filter-on",hostElement:"wj-columnfiltereditor",filterTopBorder:"wj-filter-tabPanel-top-border"};export const ValueFilterEditorClsNames={hostElement:"wj-valuefilter-editor",customModalText:"wj-custom-modal-text",modalFooter:"wj-valuefilter-modal-footer",filterOptions:"wj-filter-options"};export var FilterType;!function(e){e[e.None=0]="None";e[e.Condition=1]="Condition";e[e.Value=2]="Value";e[e.Both=3]="Both"}(FilterType||(FilterType={}));export var FilterMode;!function(e){e[e.SingleFilter=0]="SingleFilter";e[e.MultiFilter=1]="MultiFilter"}(FilterMode||(FilterMode={}));export class FlexGridFilter{constructor(e,t){this._showIcons=!0;this._showSort=!0;this._defFilterType=FilterType.Both;this._defFilterMode=FilterMode.SingleFilter;this._xValueSearch=!0;this._includeUpdatedRowsInFilter=!1;this._showIncludeSelection=!1;this.filterApplied=new Event;this.editingFilter=new Event;this.filterChanging=new Event;this.filterChanged=new Event;this.exclusiveValueSearchChanged=new Event;this._showIncludeSelectionChanged=new Event;this._filters=[];this._g=asType(e,FlexGrid,!1);this._g.formatItem.addHandler(this._formatItem.bind(this));this._g.itemsSourceChanged.addHandler(this.clear.bind(this));this._g.columns.collectionChanged.addHandler(this._adjustBindingColumns,this);let i=this._g.hostElement;e.addEventListener(i,"mousedown",this._mousedown.bind(this),!0);e.addEventListener(i,"click",this._click.bind(this),!0);e.addEventListener(i,"keydown",this._keydown.bind(this),!0);this._g.invalidate();copy(this,t);this._init()}_init(){const e=this.grid,_excludeRowFromFilter=e=>{let t=this.grid;const i=this.excludedRowsSet;if(null!=t&&t.rows.length>e)if(t.itemsSource)if(t.rows[e]instanceof _NewRowTemplate){let l=t.editableCollectionView.currentAddItem||t.rows[e].dataItem;l&&i.add(l)}else t.rows[e].dataItem&&i.add(t.rows[e].dataItem);else t.rows[e]&&i.add(t.rows[e])};e.rowChanged&&e.rowChanged.addHandler((e,t)=>{t.added&&_excludeRowFromFilter(t.index)});e.rowEditEnding.addHandler((e,t)=>{_excludeRowFromFilter(t.row)});e.cellEditEnded.addHandler((e,t)=>{_excludeRowFromFilter(t.row)})}get excludedRowsSet(){let e=this.grid;e.selectedSheet&&(e=e.selectedSheet);e._newAddedRowsSet||(e._newAddedRowsSet=new WeakSet);return e._newAddedRowsSet}set excludedRowsSet(e){let t=this.grid;t.selectedSheet&&(t=t.selectedSheet);t._newAddedRowsSet=e}get grid(){return this._g}get filterColumns(){return this._filterColumns}set filterColumns(e){this._filterColumns=asArray(e);this.clear()}get showFilterIcons(){return this._showIcons}set showFilterIcons(e){if(e!=this.showFilterIcons){this._showIcons=asBoolean(e);this._g&&this._g.invalidate()}}get showSortButtons(){return this._showSort}set showSortButtons(e){this._showSort=asBoolean(e)}get reApplyFilterOnUpdate(){return this._includeUpdatedRowsInFilter}set reApplyFilterOnUpdate(e){e!==this._includeUpdatedRowsInFilter&&(this._includeUpdatedRowsInFilter=asBoolean(e))}get showIncludeSelection(){return this._showIncludeSelection}set showIncludeSelection(e){if(e!=this._showIncludeSelection){this._showIncludeSelection=asBoolean(e,!1);this._onShowIncludeSelectionChanged()}}getColumnFilter(e,t=!0){if(e=this._asColumn(e)){for(let t=0;t<this._filters.length;t++)if(this._filters[t].column==e)return this._filters[t];if(t&&e.binding){let t=new ColumnFilter(this,e);this._filters.push(t);return t}}return null}get defaultFilterType(){return this._defFilterType}set defaultFilterType(e){if((e=asEnum(e,FilterType,!1))!=this.defaultFilterType){this._defFilterType=e;this._g.invalidate();this.clear()}}get defaultFilterMode(){return this._defFilterMode}set defaultFilterMode(e){if((e=asEnum(e,FilterMode,!1))!=this._defFilterMode){this._defFilterMode=e;this._g.invalidate();this.clear()}}get exclusiveValueSearch(){return this._xValueSearch}set exclusiveValueSearch(e){if((e=asBoolean(e))!==this._xValueSearch){this._xValueSearch=e;this.onExclusiveValueSearchChanged()}}get filterDefinition(){let e={defaultFilterType:this.defaultFilterType,filters:[]};this._filters.forEach(t=>{let i=t.conditionFilter,l=t.valueFilter,s=l.uniqueValues&&l.uniqueValues.length;if(t&&t.column&&t.column.binding&&(t.isActive||s||t.filterType!=this.defaultFilterType)){let n={binding:t.column.binding};if(i.isActive){let e=i.condition1,l=i.condition2;n={binding:t.column.binding,type:"condition",condition1:{operator:e.operator,value:e.value},and:i.and,condition2:{operator:l.operator,value:l.value}}}else(l.isActive||s)&&(n={binding:t.column.binding,type:"value",uniqueValues:l.uniqueValues,sortValues:l.sortValues,maxValues:l.maxValues,exclusiveValueSearch:l.exclusiveValueSearch,showValues:l.showValues});t.filterType!=this.defaultFilterType&&(n.filterType=t.filterType);e.filters.push(n)}});return JSON.stringify(e)}set filterDefinition(e){e=asString(e);this.clear();if(e){let t=JSON.parse(e);this.defaultFilterType=t.defaultFilterType;for(let e=0;e<t.filters.length;e++){let i=t.filters[e],l=this._asColumn(i.binding);l||(l=new Column({binding:i.binding}));let s=this.getColumnFilter(l,!0);if(s){null!=i.filterType&&(s.filterType=asEnum(i.filterType,FilterType));switch(i.type){case"condition":let e=s.conditionFilter;e.condition1.value=l.dataType==DataType.Date?changeType(i.condition1.value,l.dataType,null):i.condition1.value;e.condition1.operator=i.condition1.operator;e.and=i.and;e.condition2.value=l.dataType==DataType.Date?changeType(i.condition2.value,l.dataType,null):i.condition2.value;e.condition2.operator=i.condition2.operator;break;case"value":let t=s.valueFilter;t.uniqueValues=i.uniqueValues;["sortValues","maxValues","exclusiveValueSearch"].forEach(e=>{null!=i[e]&&(t[e]=i[e])});t.showValues=i.showValues}}}}this.apply()}get activeEditor(){return Control.getControl(this._divEdt)}editColumnFilter(e,t,i){let l=this._g;this.closeEditor();e=this._asColumn(e);let s=new CellRangeEventArgs(l.cells,new CellRange(-1,e.index));if(!this.onEditingFilter(s))return;let n=createElement(`<div class="${DropDownClsNames.dropDownPanel}"></div>`),r=this.getColumnFilter(e),a=new ColumnFilterEditor(n,r,this.showSortButtons);this._divEdt=n;this._edtCol=e;l.rightToLeft&&(n.dir="rtl");if(!this.onFilterChanging(s)){this._divEdt=this._edtCol=null;return}s.cancel=!0;a.filterChanged.addHandler(()=>{s.cancel=!1;setTimeout(()=>{s.cancel||this.apply()},a._edtVal&&a._edtVal._isFiltering?Control._SEARCH_DELAY+200:0)});a.buttonClicked.addHandler(()=>{this.closeEditor();l.focus();this.onFilterChanged(s)});a.lostFocus.addHandler(()=>{setTimeout(()=>{let e=Control.getControl(this._divEdt);e&&!e.containsFocus()&&this.closeEditor()},10)});let o=t?t.col:e.index,d=l.columns[o];t||d&&d.binding==e.binding||(o=l.selection.leftCol);l._edtHdl._commitRowEdits();l.scrollIntoView(-1,o,!0);let h=l.columnHeaders,u=t&&t.panel&&h&&t.panel._uid==h._uid?t.row:h.rows.length-1,c=o,_=i||h.getCellElement(u,c),p=_?null:h.getCellBoundingRect(u,c);_?showPopup(n,_,!1,!1,!1):showPopup(n,p);let m=e.header,f=format(culture.FlexGridFilter.accessibilityHelperMessage.filter.filterColumn,{name:m});l.announceShortcut(f);this._adjustTabPanelStyle(r);this._setAriaExpanded(_,!0);this._setAriaExpanded(l.cells.getCellElement(-1,c),!0);let g=a.hostElement.querySelectorAll("input");for(let e=0;e<g.length;e++){let t=g[e];if(t.offsetHeight>0&&t.tabIndex>-1&&!t.disabled){t.focus();break}}a.containsFocus()||a.focus()}_setAriaExpanded(e,t){if(e){var i=e.querySelector("."+FlexGridFilter._WJC_FILTER);setAttribute(i,"aria-expanded",t)}}closeEditor(){let e=this._g,t=Control.getControl(this._divEdt),i=this._edtCol;if(t){hidePopup(t.hostElement,()=>{t.dispose()});let i=culture.FlexGridFilter.accessibilityHelperMessage.filter.closeFilterDialog;e.announceShortcut(i)}if(i){let t=e.columnHeaders,l=t.rows.length?t.getCellElement(t.rows.length-1,i.index):null;this._setAriaExpanded(l,!1);l=e.cells.getCellElement(-1,i.index);this._setAriaExpanded(l,!1)}this._divEdt=null;this._edtCol=null}apply(){let e=this._g.collectionView;if(e){let t=this._g.editableCollectionView;if(t){t.commitEdit();t.commitNew()}this.excludedRowsSet=null;e.filter=this._filter.bind(this)}let t=e?e.updateFilterDefinition:null;isFunction(t)&&t.call(e,this);this.onFilterApplied()}clear(){if(this._filters.length){this._filters=[];this.apply()}}onFilterApplied(e){this.filterApplied.raise(this,e)}onEditingFilter(e){this.editingFilter.raise(this,e);return!e.cancel}onFilterChanging(e){this.filterChanging.raise(this,e);return!e.cancel}onFilterChanged(e){this.filterChanged.raise(this,e)}onExclusiveValueSearchChanged(e){this.exclusiveValueSearchChanged.raise(this,e)}_onShowIncludeSelectionChanged(e){this._showIncludeSelectionChanged.raise(this,e)}_asColumn(e){return isString(e)?this._g.getColumn(e,!0):isNumber(e)?this._g.columns[e]:asType(e,Column,!1)}_filter(e){const t=this.excludedRowsSet;if(!this.reApplyFilterOnUpdate&&t.has(e))return!0;let i=this._filters;for(let t=0;t<i.length;t++){let l=i[t];if(l.column!=FlexGridFilter._skipColumn&&!l.apply(e))return!1}return!0}_adjustTabPanelStyle(e){if(e){const t=e.filterType!==FilterType.Both,i=document.querySelector('[wj-part="tabpanes"]');t&&i&&toggleClass(i,FlexGridFilterClsNames.filterTopBorder)}}_formatItem(e,t){if(t.panel==e.columnHeaders){let e=this._g,i=e.getMergedRange(t.panel,t.row,t.col)||new CellRange(t.row,t.col),l=e.columns[i.col],s=e._getBindingColumn(t.panel,t.row,l),n=t.cell;if(i.row2==t.panel.rows.length-1||l!=s){let i=this.getColumnFilter(s,this.defaultFilterType!=FilterType.None),r=this._filterColumns;r&&r.length&&r.indexOf(s.binding)<0&&r.indexOf(s.name)<0&&(i=null);if(i){toggleClass(n,FlexGridFilterClsNames.filterOn,i.isActive);toggleClass(n,FlexGridFilterClsNames.filterOff,!i.isActive)}else{removeClass(n,FlexGridFilterClsNames.filterOn);removeClass(n,FlexGridFilterClsNames.filterOff)}if(i&&i.filterType!=FilterType.None){this._showIcons&&this._addFilterButton(s,i,n);0==t.row&&(n=e.cells.getCellElement(-1,t.col))&&this._addFilterButton(l,i,n)}}}}_addFilterButton(e,t,i){let l=FlexGridFilter._WJC_FILTER,s=createElement(`<button class="${InputFormElementsClsNames.btn} ${GlyphClsNames.btnGlyph} ${UtilitesClsNames.right} `+l+'" type="button" tabindex="-1">'+`<span class=${GlyphClsNames.filter}></span>`+"</button>");setAriaLabel(s,culture.FlexGridFilter.ariaLabels.edit+" "+e.header);setAttribute(s,"aria-haspopup","dialog");setAttribute(s,"aria-expanded",!1);setAttribute(s,"aria-describedby",e.describedById);setAttribute(s,"aria-pressed",t.isActive);if(!i.querySelector("."+l)){1==i.children.length&&(i=i.querySelector("div")||i);i.insertBefore(s,i.firstChild)}}_mousedown(e){this._edtColPrev=this._edtCol}_click(e){if(this._toggleEditor(e)){e.stopPropagation();e.preventDefault()}}_toggleEditor(e){if(!e.defaultPrevented&&0==e.button)if(closestClass(e.target,FlexGridFilter._WJC_FILTER)){let t=this._g,i=t.hitTest(e.target);i.panel||(i=t.hitTest(e));if(i.panel&&t.columnHeaders&&t.cells&&(i.panel._uid==t.columnHeaders._uid||i.panel._uid==t.cells._uid&&-1==i.row)){let e=t.getMergedRange(i.panel,i.row,i.col)||new CellRange(i.row,i.col),l=t.columns[e.col],s=t._getBindingColumn(i.panel,i.row,l);if(this._divEdt&&this._edtCol==s){this.closeEditor();t.focus()}else s!=this._edtColPrev&&setTimeout(()=>{this.editColumnFilter(s,i)},this._divEdt?100:0);return!0}}else this.closeEditor();return!1}_keydown(e){const t=e.ctrlKey||e.metaKey,i=!e.defaultPrevented&&!t&&e.altKey,l=i&&e.keyCode===Key.Up,s=i&&e.keyCode===Key.Down,n=!e.defaultPrevented&&t&&e.shiftKey&&e.keyCode===Key.F;if(l||s||n){let t=this.grid,i=t.selection,l=i.col>-1?t.columns[i.col]:null,s=l?t._getBindingColumn(t.cells,i.row,l):null,r=s&&s.dataMap&&s.dataMapEditor==DataMapEditor.DropDownList;if(this.filterColumns&&this.filterColumns.length>0&&!this.filterColumns.includes(s._binding._path)){e.preventDefault();return!1}if(t.activePanelType!=CellType.Cell&&t.activePanelType!=CellType.ColumnHeader){e.preventDefault();return!1}s&&s.editor instanceof DropDown&&(r=!0);if(s&&(!r||n)){let t=this.getColumnFilter(s,!1);if(t&&t.filterType!=FilterType.None){this.editColumnFilter(s);e.preventDefault();e.stopPropagation()}}}}_removeFilter(e){this._filters.splice(e,1)}_adjustBindingColumns(e,t){if(t.action==NotifyCollectionChangedAction.Reset){const e=this._filters;if(e&&e.length>0)for(let t=e.length-1;t>=0;t--){const i=e[t],l=i.column;if(l.binding){const e=this._asColumn(l.binding);e?e!==l&&i._setColumn(e):this._removeFilter(t)}}}}}FlexGridFilter._WJC_FILTER=FlexGridFilterClsNames.elemFilter;export const empty={};export class ColumnFilter{constructor(e,t){this._ariaLabel=culture.FlexGridFilter.ariaLabels.dialog;this._owner=e;this._col=t;this._valueFilter=new ValueFilter(t);this._valueFilter.setColumnFilter(this);this._valueFilter.exclusiveValueSearch=e.exclusiveValueSearch;this._valueFilter.showIncludeSelection=e.showIncludeSelection;this._conditionFilter=new ConditionFilter(t);this._conditionFilter.setColumnFilter(this);e.exclusiveValueSearchChanged.addHandler(e=>{this._valueFilter.exclusiveValueSearch=e.exclusiveValueSearch});e._showIncludeSelectionChanged.addHandler(e=>{this._valueFilter.showIncludeSelection=e.showIncludeSelection})}get filterType(){return null!=this._filterType?this._filterType:this._owner.defaultFilterType}set filterType(e){if((e=asEnum(e,FilterType,!0))!=this._filterType){let t=this.isActive;this.clear();this._filterType=e;t?this._owner.apply():this._col.grid&&this._col.grid.invalidate()}}get filterMode(){return null!=this._filterMode?this._filterMode:this._owner.defaultFilterMode}set filterMode(e){if((e=asEnum(e,FilterMode,!0))!=this._filterMode){let t=this.isActive;this.clear();this._filterMode=e;t?this._owner.apply():this._col.grid&&this._col.grid.invalidate()}}get dataMap(){return this.conditionFilter.dataMap||this.valueFilter.dataMap}set dataMap(e){this.conditionFilter.dataMap=e;this.valueFilter.dataMap=e}get valueFilter(){return this._valueFilter}get conditionFilter(){return this._conditionFilter}get column(){return this._col}_setColumn(e){this._col=e;this._valueFilter&&this._valueFilter._setColumn(e);this._conditionFilter&&this._conditionFilter._setColumn(e)}get ariaLabel(){return this._ariaLabel}set ariaLabel(e){e!=this._ariaLabel&&(this._ariaLabel=e)}get isActive(){return this._conditionFilter.isActive||this._valueFilter.isActive}apply(e){let t=this._conditionFilter.apply(e);this._valueFilter._cancelFilter||(t=t&&this._valueFilter.apply(e));return t}clear(){this._valueFilter.clear();this._conditionFilter.clear()}implementsInterface(e){return"IColumnFilter"==e}}export var ValueFilterSearchKind;!function(e){e[e.Text=0]="Text";e[e.Regex=1]="Regex";e[e.Excel=2]="Excel"}(ValueFilterSearchKind||(ValueFilterSearchKind={}));export class ValueFilter{constructor(e){this._values=null;this._filterText=null;this._xValueSearch=!0;this._maxValues=250;this._uniqueValues=null;this._sortValues=!0;this._searchType=ValueFilterSearchKind.Excel;this._showIncludeSelection=!1;this._allValues=null;this._col=e}get searchType(){return this._searchType}set searchType(e){this._searchType=asEnum(e,ValueFilterSearchKind)}get showValues(){return this._values}set showValues(e){this._values=e}get filterText(){return this._filterText}set filterText(e){this._filterText=asString(e)}get exclusiveValueSearch(){return this._xValueSearch}set exclusiveValueSearch(e){if((e=asBoolean(e))!==this._xValueSearch){this._xValueSearch=asBoolean(e);e&&(this._filterText="")}}get maxValues(){return this._maxValues}set maxValues(e){this._maxValues=asNumber(e,!1,!0)}get uniqueValues(){return this._uniqueValues}set uniqueValues(e){this._uniqueValues=asArray(e)}get sortValues(){return this._sortValues}set sortValues(e){this._sortValues=asBoolean(e)}get dataMap(){return this._map}set dataMap(e){this._map=asType(e,DataMap,!0)}get showIncludeSelection(){return this._showIncludeSelection}set showIncludeSelection(e){e!=this._showIncludeSelection&&(this._showIncludeSelection=asBoolean(e,!1))}get column(){return this._col}_setColumn(e){this._col=e}get isActive(){let e=null!=this._values;return this._columnFilter&&this._columnFilter.filterMode===FilterMode.MultiFilter?e:e&&Object.keys(this._values).length>0}apply(e){let t=this.column;if(!t||!t._binding||!this.isActive)return!0;e=t._binding.getValue(e);e=this.dataMap?this.dataMap.getDisplayValue(e)||"":t.dataMap?t.dataMap.getDisplayValue(e)||"":Globalize.format(e,t.format);return null!=this._values[e]}clear(){this.showValues=null;this.filterText=null}getUniqueValues(e=!0){let t=[],i=this.column,l=Globalize.format;if(this.uniqueValues){this.uniqueValues.forEach(e=>{t.push({value:e,text:l(e,i.format)})});return t}let s={},n=i.collectionView,r=n?n.sourceCollection:[];if(e&&n&&n.sourceCollection&&n.filter)try{this._columnFilter&&this._columnFilter.filterMode===FilterMode.MultiFilter&&this._columnFilter.conditionFilter.isActive?this._cancelFilter=!0:FlexGridFilter._skipColumn=this._col;let e=[];for(let t=0;t<r.length;t++)n.filter(r[t])&&e.push(r[t]);r=e}finally{this._cancelFilter=!1;FlexGridFilter._skipColumn=null}for(let e=0;e<r.length;e++){let n=i._binding.getValue(r[e]),a=this.dataMap?this.dataMap.getDisplayValue(n)||"":i.dataMap?i.dataMap.getDisplayValue(n)||"":l(n,i.format);if(!s[a]){s[a]=!0;t.push({value:n,text:a})}}return t}implementsInterface(e){return"IColumnFilter"==e}setColumnFilter(e){this._columnFilter=e}updateShowStatus(e){if(this.showValues&&0!=Object.keys(this.showValues).length){for(let t in this.showValues)for(let i=0;i<e.length;i++)if(e[i].text==t){e[i].show=!0;break}}else e.forEach(e=>e.show=!0);return e}setInitialAllValues(){let e=this.getUniqueValues(!1);this._allValues=this.updateShowStatus(e)}}export class ValueFilterEditor extends Control{constructor(e,t){super(e);this._canApply=!1;this._isFiltering=!1;this._filterTextChangedBnd=this._filterTextChanged.bind(this);this._cbSelectAllClickedBnd=this._cbSelectAllClicked.bind(this);this.canApplyChanged=new Event;this._filter=asType(t,ValueFilter,!1);let i=this.getTemplate();this.applyTemplate(`${ControlClsNames.hostElement} ${ValueFilterEditorClsNames.hostElement}`,i,{_divFilter:"div-filter",_cbSelectAll:"cb-select-all",_spSelectAll:"sp-select-all",_cbIncludeSel:"cb-include-sel",_spIncludeSel:"sp-include-sel",_lblIncludeSel:"lbl-include-sel",_divOptions:"div-options",_divValues:"div-values",_divExceeds:"div-exceeds",_aExceeds:"a-exceeds"});this._cbSelectAll.tabIndex=0;this._cbIncludeSel.tabIndex=0;this._divExceeds.tabIndex=0;let l=culture.FlexGridFilter;setText(this._spSelectAll,l.selectAll);setText(this._spIncludeSel,l.includeSelection);setText(this._aExceeds,l.exceedsMaxValues);setAttribute(this._divValues,"aria-live","polite");let s=this._view=new CollectionView(null,{sortNulls:SortNulls.First,filter:this._filterValues.bind(this)});if(t.sortValues){let e=t.column.dataMap||t.dataMap?"text":"value",i=t.column.dataType!=DataType.Boolean;s.sortDescriptions.push(new SortDescription(e,i))}s.collectionChanged.addHandler(this._updateSelectAllCheck,this);this._filterText="";this._rxFilter=null;this._cmbFilter=new input.ComboBox(this._divFilter,{trimText:!1,isRequired:!1,placeholder:l.search,keyActionPrintCharacters:0,keyActionTab:0});this._cmbFilter.isEditable=!0;const n=this._divFilter.querySelector(".wj-input-group");if(n){const e=document.createElement("span");e.classList.add("wj-glyph-search");n.insertBefore(e,n.firstChild)}this._lbValues=new input.ListBox(this._divValues,{displayMemberPath:"text",checkedMemberPath:"show",itemsSource:this._view,itemFormatter:(e,t)=>t||l.null,checkedItemsChanged:e=>this._updateSelectAllCheck()});this._lbValues._isNeedUpdateBnd=this._isSingleFilterMode();setAttribute(this._divValues,"aria-label",culture.FlexGridFilter.ariaLabels.listBox);setAriaLabel(this._cmbFilter.inputElement,l.ariaLabels.search);setAttribute(this._lbValues.hostElement,"aria-multiselectable",!0);this._cmbFilter.inputElement.addEventListener("input",this._filterTextChangedBnd);this._cbSelectAll.addEventListener("click",this._cbSelectAllClickedBnd);if(!this._popup){this._initPopup();this._aExceeds&&this.addEventListener(this._aExceeds,"click",e=>{e.preventDefault();this._popup.show(!0)})}this.updateEditor();setAttribute(this._lbValues.hostElement,"tabindex","-1");this._filter.showValues?this._initialItems=s.sourceCollection.filter(e=>this._filter.showValues[e.text||e.value]||!1):this._initialItems=this._lbValues.checkedItems;this._isSingleFilterMode()||this._filter.setInitialAllValues()}static get controlTemplate(){ValueFilterEditor._ctrlTemplate||(ValueFilterEditor._ctrlTemplate='<div><div wj-part="div-filter"></div>'+`<div wj-part="div-options" class="${input.ListBoxClsNames.listBoxItem} ${ValueFilterEditorClsNames.filterOptions}">`+'<label wj-part="select-all-container"><input wj-part="cb-select-all" type="checkbox" class="wj-custom-checkbox"> <span wj-part="sp-select-all"></span></label><br /><label wj-part="lbl-include-sel"><input wj-part="cb-include-sel" type="checkbox" class="wj-custom-checkbox"> <span wj-part="sp-include-sel"></span></label></div><div wj-part="div-values"></div><div wj-part="div-exceeds"><a wj-part="a-exceeds"></a></div></div>');return ValueFilterEditor._ctrlTemplate}static set controlTemplate(e){ValueFilterEditor._ctrlTemplate=e}get filter(){return this._filter}get canApply(){return this._canApply}set canApply(e){if(e!=this._canApply){this._canApply=e;this.onCanApplyChanged()}}get _shouldIncludeSelection(){return this._filter.showIncludeSelection&&this._cbIncludeSel.checked}updateEditor(){let e=this._filter.column,t=this._filter.getUniqueValues(!0);this._lbValues.isContentHtml=e.isContentHtml;let i=this._filter.showValues;if(!i||0==Object.keys(i).length&&this._isSingleFilterMode())t.forEach(e=>e.show=!0);else for(let e in i)for(let i=0;i<t.length;i++)if(t[i].text==e){t[i].show=!0;break}let l=this._filter.filterText||"",s=this._getCaseSensitive();this._cmbFilter.text=l;this._filterText=s?l:l.toLowerCase();this._rxFilter=this._getSearchExp(l,s);this._filter.showIncludeSelection&&!this.hostElement.contains(this._lblIncludeSel)?this._divOptions.appendChild(this._lblIncludeSel):this._filter.showIncludeSelection||this._lblIncludeSel.remove();let n=this._view;n.pageSize=this._filter.maxValues;n.sourceCollection=t;this._adjustWidthsTimer=setTimeout(()=>{this._adjustWidths()},0);this._updateExceedsMaxValuesDisplay()}clearEditor(e=!0){this._cmbFilter.text="";this._filterText="";this._rxFilter=null;let t=this._view;t.pageSize=0;t.items.forEach(t=>{t.show=e});t.moveCurrentTo(-1);t.refresh();t.pageSize=this._filter.maxValues}get isEditorClear(){return!this._filterText&&!this._cbSelectAll.indeterminate}_updateFilter(){let e,t=this._filter,i=null;e=this._isSingleFilterMode()?this._getItems():this._filter._allValues=replaceItems(this._filter._allValues,this._view.sourceCollection);if(!this._isSingleFilterMode()||this._filterText||this._cbSelectAll.indeterminate){i=this._shouldIncludeSelection&&this._filter.showValues||{};for(let t=0;t<e.length;t++){let l=e[t];l.show&&(i[l.text]=!0)}}t.showValues=i;t.filterText=this._filterText}updateFilter(){this._isFiltering?this._updateFilterTimer=setTimeout(()=>{this._updateFilter()},Control._SEARCH_DELAY+100):this._updateFilter()}onCanApplyChanged(e){this.canApplyChanged.raise(this,e)}_getCaseSensitive(){let e=this._filter.column,t=e?e.grid:null;return t&&t.caseSensitiveSearch}_getItems(){return this._filter.exclusiveValueSearch?this._view.items:this._view.sourceCollection}_filterTextChanged(){""===this._filterText&&this._cbSelectAll.checked||this._filter.exclusiveValueSearch?this._lbValues._addMode=!1:this._lbValues._addMode=!0;this._toFilter&&clearTimeout(this._toFilter);this._isFiltering=!0;this._toFilter=setTimeout(()=>{let e=this._cmbFilter.text,t=this._getCaseSensitive();t||(e=e.toLowerCase());if(e!=this._filterText){this._filterText=e;this._rxFilter=this._getSearchExp(e,t);this._view.refresh();this._updateExceedsMaxValuesDisplay();if(!e&&this._isSingleFilterMode()){let e=this._initialItems;if(e.length&&this._view.sourceCollection.indexOf(e[0])>-1){this._lbValues.checkedItems=this._initialItems;this._updateSelectAllCheck();this._isFiltering=!1;return}}if(this._filter.exclusiveValueSearch){this._cbSelectAll.checked=!0;this._cbSelectAllClicked()}else this._updateSelectAllCheck()}this._isFiltering=!1},Control._SEARCH_DELAY)}_getSearchExp(e,t){if(!e)return null;switch(this._filter.searchType){case ValueFilterSearchKind.Text:return this._getTextSearchExp(e,t);case ValueFilterSearchKind.Regex:return this._getRegexSearchExp(e,t);case ValueFilterSearchKind.Excel:return this._getExcelSearchExp(e,t)}}_getTextSearchExp(e,t){return new RegExp(escapeRegExp(e),t?"":"i")}_getRegexSearchExp(e,t){try{return new RegExp(e,t?"s":"is")}catch(e){return new RegExp("(?!)",t?"s":"is")}}_getExcelSearchExp(e,t){let i=e;i=(i=(i=(i=(i=(i=(i=(i=i.replace(/([.+^$[\]\\(){}|-])/g,"\\$1")).replace(/~~/g,"__`$0`__")).replace(/~\?/g,"__`$1`__")).replace(/~\*/g,"__`$2`__")).replace(/~(.)/g,"$1")).replace(/(\?+)/g,(function(e,t){return Array.from(t).map(e=>".").join("")}))).replace(/(\*+)/g,(function(e,t){return Array.from(t).map(e=>".*").join("")}))).replace(/__`\$(\d)`__/g,(function(e,t){switch(t){case"0":return"~";case"1":return"\\?";case"2":return"\\*"}}));/([^~]|^)[?*]/g.test(e)&&(i="^"+i+"$");("~"===e||e&&!i.length)&&(i="$a^");return new RegExp(i,t?"s":"is")}_filterValues(e){let t=this._rxFilter;return null==t||null==e||t.test(e.text)}_getActualItems(){return this._isSingleFilterMode()?this._getItems():this.exceedsMaxValues?this._view.sourceCollection:this._view.items}_cbSelectAllClicked(){let e=this._cbSelectAll.checked,t=this._divValues.scrollTop,i=this._getActualItems();for(let t=0;t<i.length;t++)i[t].show=e;this._view.refresh();this._divValues.scrollTop=t;this._adjustWidthsTimer=setTimeout(()=>{this._adjustWidths()},0)}_updateSelectAllCheck(){let e=this._getActualItems(),t=0,i=0;for(let l=0;l<e.length;l++){e[l].show?t++:i++;if(t&&i)break}let l=t&&i?null:t>0;setChecked(this._cbSelectAll,l);null==l?this._cbSelectAll.setAttribute("data-indeterminate","true"):this._cbSelectAll.removeAttribute("data-indeterminate");this.canApply=t>0}_adjustWidths(){let e=this._lbValues.hostElement;if(e&&e.offsetHeight>0){let t=0,i=e.querySelectorAll(`.${input.ListBoxClsNames.listBoxItem}`);if(i.length){for(let e=0;e<i.length;e++)t=Math.max(t,i[e].scrollWidth);if(t){let i=e.querySelectorAll(`.${input.ListBoxClsNames.listBoxItem}`);if(i.length)for(let e=0;e<i.length;e++)i[e].style.width=t+"px"}}}}get exceedsMaxValues(){return!(!this._view||!this._view._view)&&this._view._view.length>this.filter.maxValues}_updateExceedsMaxValuesDisplay(){this._divExceeds.style.display=this.exceedsMaxValues?"":"none"}_initPopup(){let e=document.createElement("div");const t=this.hostElement.getAttribute("lang");e.innerHTML=`\n <div role="dialog" aria-modal="true" aria-describedby="dialogDesc" ${t?`lang="${t}"`:""}>`+`<div class=${input.PopupClsNames.dialogBody}>`+`<div class=${ValueFilterEditorClsNames.customModalText}>`+'<p id="dialogDesc">'+culture.FlexGridFilter.popupBody+"</p></div></div>"+`<div class="${input.PopupClsNames.dialogFooter} ${ValueFilterEditorClsNames.modalFooter}" >`+`<button class="btn btn-primary ${UtilitesClsNames.hideOk}">`+culture.FlexGridFilter.popupOkButton+"</button></div></div>";this._popup=new input.Popup(e,{modal:!0,fadeIn:!0,fadeOut:!0})}_isSingleFilterMode(){return!this._filter._columnFilter||this._filter._columnFilter.filterMode==FilterMode.SingleFilter}dispose(){if(this._lbValues){this._lbValues.dispose();this._lbValues=null}this._cbSelectAll&&this._cbSelectAll.removeEventListener("click",this._cbSelectAllClickedBnd);if(this._cmbFilter){this._cmbFilter.inputElement&&this._cmbFilter.inputElement.removeEventListener("input",this._filterTextChangedBnd);this._cmbFilter.dispose();this._cmbFilter=null}if(this._view){this._view.collectionChanged.removeHandler(this._updateSelectAllCheck,this);this._view=null}if(this._adjustWidthsTimer){clearTimeout(this._adjustWidthsTimer);this._adjustWidthsTimer=null}if(this._updateFilterTimer){clearTimeout(this._updateFilterTimer);this._updateFilterTimer=null}if(this._toFilter){clearTimeout(this._toFilter);this._toFilter=null}if(this._popup&&!this._popup.isVisible){this._popup.dispose();this._popup=null}this._filter=null;this._initialItems=null;this._rxFilter=null;this._filterText=null;super.dispose()}}ValueFilterEditor._ctrlTemplate="";export class ConditionFilter{constructor(e){this._c1=new FilterCondition(this);this._c2=new FilterCondition(this);this._and=!0;this._col=e}get condition1(){return this._c1}get condition2(){return this._c2}get and(){return this._and}set and(e){this._and=asBoolean(e)}get dataMap(){return this._map}set dataMap(e){this._map=asType(e,DataMap,!0)}get column(){return this._col}_setColumn(e){this._col=e}get isActive(){return this._c1.isActive||this._c2.isActive}apply(e){let t=this._col,i=this._c1,l=this._c2,s=!1,n=!1;if(!t||!t._binding||!this.isActive)return!0;e=t._binding.getValue(e);let r=this.dataMap||t.dataMap;if(r)e=r.getDisplayValue(e);else if(isDate(e)){s=!this._hasTimePart();n=!this._hasDatePart();let t=FilterCondition._refDateTime;s?e=DateTime.fromDateTime(e,t):n&&(e=DateTime.fromDateTime(t,e))}else if(isNumber(e)){let i=Globalize,l=t.format,s=i.formatNumber(e,l);e=i.parseFloat(s,l)}let a=i.apply(e,s,n),o=l.apply(e,s,n);return i.isActive&&l.isActive?this._and?a&&o:a||o:i.isActive?a:!l.isActive||o}clear(){this._c1.clear();this._c2.clear();this.and=!0}_hasDatePart(){let e=this._col.format;if(!e)return!0;e=culture.Globalize.calendar.patterns[e]||e;return/[yMd]+/.test(e)}_hasTimePart(){let e=this._col.format;if(!e)return!1;e=culture.Globalize.calendar.patterns[e]||e;return/[Hmst]+/.test(e)}implementsInterface(e){return"IColumnFilter"==e}setColumnFilter(e){this._columnFilter=e}}export class FilterCondition{constructor(e){this._op=null;this._filter=e}get operator(){return this._op}set operator(e){this._op=asEnum(e,Operator,!0)}get value(){return this._val}set value(e){this._val=e;this._strVal=isString(e)?this._getCaseString(e):null}get isActive(){if(this._filter._columnFilter&&this._filter._columnFilter.filterMode==FilterMode.MultiFilter)switch(this._op){case null:return!1;case Operator.BLANK:case Operator.NOTBLANK:return!0;default:return""!==this._val&&null!==this._val}else switch(this._op){case null:return!1;case Operator.EQ:case Operator.NE:return!0;default:return null!=this._val||null!=this._strVal}}clear(){this.operator=null;this.value=null}apply(e,t,i){let l=this._strVal||this._val;isString(e)&&(e=this._getCaseString(e));isString(l)&&null==e&&(e="");isDate(l)&&(t?l=DateTime.fromDateTime(l,FilterCondition._refDateTime):i&&(l=DateTime.fromDateTime(FilterCondition._refDateTime,l)));let s=Operator;switch(this._op){case null:return!0;case s.EQ:return null!=e&&null!=l?e.valueOf()==l.valueOf():e==l;case s.NE:return null!=e&&null!=l?e.valueOf()!=l.valueOf():e!=l;case s.GT:return e>l;case s.GE:return e>=l;case s.LT:return e<l;case s.LE:return e<=l;case s.BW:return!(null==this._strVal||!isString(e))&&0==e.indexOf(this._strVal);case s.EW:return!!(null!=this._strVal&&isString(e)&&e.length>=this._strVal.length)&&e.substr(e.length-this._strVal.length)==l;case s.CT:return!(null==this._strVal||!isString(e))&&e.indexOf(this._strVal)>-1;case s.NC:return!(null==this._strVal||!isString(e))&&e.indexOf(this._strVal)<0;case s.NBW:return!(null==this._strVal||!isString(e))&&0!==e.indexOf(this._strVal);case s.NEW:return!(null==this._strVal||!isString(e))&&e.substring(e.length-this._strVal.length)!==l;case s.BLANK:return isBlankValue(e);case s.NOTBLANK:return!isBlankValue(e)}throw"Unknown operator"}_getCaseString(e){let t=this._filter.column,i=t?t.grid:null;return i&&i.caseSensitiveSearch?e:e.toLowerCase()}}FilterCondition._refDateTime=new Date(2e3,0,1,0,0,0);export var Operator;!function(e){e[e.EQ=0]="EQ";e[e.NE=1]="NE";e[e.GT=2]="GT";e[e.GE=3]="GE";e[e.LT=4]="LT";e[e.LE=5]="LE";e[e.BW=6]="BW";e[e.EW=7]="EW";e[e.CT=8]="CT";e[e.NC=9]="NC";e[e.NBW=10]="NBW";e[e.NEW=11]="NEW";e[e.BLANK=100]="BLANK";e[e.NOTBLANK=101]="NOTBLANK"}(Operator||(Operator={}));function isBlankValue(e){return null==e||""===e}export class ConditionFilterEditor extends Control{constructor(e,t){super(e);this._canApply=!1;this.canApplyChanged=new Event;this._filter=asType(t,ConditionFilter,!1);let i=this.getTemplate();this.applyTemplate(`${ControlClsNames.hostElement} ${ConditionFilterEditorClsNames.hostElement}`,i,{_divHdr:"div-hdr",_divCmb1:"div-cmb1",_divVal1:"div-val1",_btnAnd:"btn-and",_btnOr:"btn-or",_spAnd:"sp-and",_spOr:"sp-or",_divCmb2:"div-cmb2",_divVal2:"div-val2"});let l=culture.FlexGridFilter,s=l.ariaLabels;setAriaLabel(this._btnAnd,s.and);setAriaLabel(this._btnOr,s.or);setAttribute(this._btnAnd,"aria-describedby","filterAndDesc");setAttribute(this._btnOr,"aria-describedby","filterOrDesc");this._spAnd.id="filterAndDesc";this._spOr.id="filterOrDesc";setText(this._divHdr,l.header);setText(this._spAnd,l.and);setText(this._spOr,l.or);const n=getUniqueId("cmb1");this._divHdr.htmlFor=n;this._divCmb1.id=n;this._cmb1=this._createOperatorCombo(this._divCmb1,s.op1);this._val1=this._createValueInput(this._divVal1,s.val1);this._cmb2=this._createOperatorCombo(this._divCmb2,s.op2);this._val2=this._createValueInput(this._divVal2,s.val2);this._val1.hostElement.style.display="none";this._cmb1.selectedIndexChanged.addHandler((e,t)=>{const i=null==e.selectedValue||this._isShowConditionValuePart(e.selectedValue);this._val1.hostElement.style.display=i?"none":"";setAttribute(this._val1.hostElement,"aria-hidden",i.toString());this.canApply=!i||"none"!==this._val2.hostElement.style.display});this._val2.hostElement.style.display="none";this._cmb2.selectedIndexChanged.addHandler((e,t)=>{const i=null==e.selectedValue||this._isShowConditionValuePart(e.selectedValue);this._val2.hostElement.style.display=i?"none":"";setAttribute(this._val2.hostElement,"aria-hidden",i.toString());this.canApply="none"!==this._val1.hostElement.style.display||!i});let r=this.hostElement;this.addEventListener(r,"change",this._btnAndOrChanged.bind(this));this.addEventListener(r,"keydown",this._keydown.bind(this));this.updateEditor()}static get controlTemplate(){ConditionFilterEditor._ctrlTemplate||(ConditionFilterEditor._ctrlTemplate='<div><label wj-part="div-hdr" id="filterConditionHdr"></label><div wj-part="div-cmb1"></div><br/><div wj-part="div-val1"></div><br/><div role="radiogroup" style="text-align:center"><label><input wj-part="btn-and" type="radio" role="radio"> <span wj-part="sp-and"></span> </label>&nbsp;&nbsp;&nbsp;<label><input wj-part="btn-or" type="radio" role="radio"> <span wj-part="sp-or"></span> </label></div><div wj-part="div-cmb2"></div><br/><div wj-part="div-val2"></div><br/></div>');return ConditionFilterEditor._ctrlTemplate}static set controlTemplate(e){ConditionFilterEditor._ctrlTemplate=e}_isShowConditionValuePart(e){return e==Operator.BLANK||e==Operator.NOTBLANK}get filter(){return this._filter}get canApply(){return this._canApply}set canApply(e){if(e!=this._canApply){this._canApply=e;this.onCanApplyChanged()}}updateEditor(){let e=this._filter.condition1,t=this._filter.condition2;this._cmb1.selectedValue=e.operator;this._cmb2.selectedValue=t.operator;if(this._val1 instanceof input.ComboBox&&!(this._val1 instanceof input.InputTime)){this._val1.text=changeType(e.value,DataType.String);this._val2.text=changeType(t.value,DataType.String)}else{this._val1.value=e.value;this._val2.value=t.value}let i=this._filter.and;this._checkRadio(this._btnAnd,i);this._checkRadio(this._btnOr,!i)}clearEditor(){this._cmb1.selectedValue=this._cmb2.selectedValue=null;this._val1.text=this._val2.text=null;this._checkRadio(this._btnAnd,!0);this._checkRadio(this._btnOr,!1)}get isEditorClear(){return null==this._cmb1.selectedValue&&!this._val1.text&&null==this._cmb2.selectedValue&&!this._val2.text}updateFilter(){let e=this._filter.condition1,t=this._filter.condition2;e.operator=this._cmb1.selectedValue;t.operator=this._cmb2.selectedValue;if("value"in this._val1){e.value=this._val1.value;t.value=this._val2.value}else{e.value=this._getComboValue(this._val1);t.value=this._getComboValue(this._val2)}this._filter.and=this._btnAnd.checked}onCanApplyChanged(e){this.canApplyChanged.raise(this,e)}_getComboValue(e){return e.selectedIndex>-1?e.selectedValue:e.text}_createOperatorCombo(e,t){let i=this._filter.column,l=culture.FlexGridFilter,s=l.stringOperators,n=DataType;this._filter.dataMap||i.dataMap||(i.dataType==n.Date?s=l.dateOperators:i.dataType==n.Number?s=l.numberOperators:i.dataType==n.Boolean&&(s=l.booleanOperators));this._filter._columnFilter&&this._filter._columnFilter.filterMode==FilterMode.MultiFilter&&(s=s.concat(l.multiFilterBlankOperators));let r=new input.ComboBox(e,{itemsSource:s,displayMemberPath:"name",selectedValuePath:"op",keyActionPrintCharacters:0});setAriaLabel(r.inputElement,t);return r}_createValueInput(e,t){let i=this._filter,l=i.column,s=i.dataMap||l.dataMap,n=null,r=DataType;if(l.dataType==r.Date)(n=i._hasDatePart()?i._hasTimePart()?new input.InputDateTime(e):new input.InputDate(e):new input.InputTime(e,{keyActionPrintCharacters:0})).format=l.format;else if(l.dataType!=r.Number||s){(n=new input.ComboBox(e)).isEditable=!0;n.trimText=!1;n.keyActionPrintCharacters=0;if(s){n.itemsSource=s.getDisplayValues();n.caseSensitiveSearch=!!l.grid&&l.grid.caseSensitiveSearch}else l.dataType==r.Boolean&&(n.itemsSource=[!0,!1])}else{(n=new input.InputNumber(e)).step=1;n.format=l.format}n.isRequired=!1;setAriaLabel(n.inputElement,t);return n}_btnAndOrChanged(e){let t=e.target==this._btnAnd,i=e.target==this._btnOr;if(t||i){this._checkRadio(this._btnAnd,t);this._checkRadio(this._btnOr,i)}}_checkRadio(e,t){e.checked=t;setAttribute(e,"aria-checked",t.toString());setAttribute(e,"tabindex",t?null:"-1")}_keydown(e){let t=e.target==this._btnAnd,i=e.target==this._btnOr;if(t||i)switch(e.keyCode){case Key.Left:case Key.Right:case Key.Up:case Key.Down:let i=t?this._btnOr:this._btnAnd;i.click();i.focus();e.preventDefault()}}}ConditionFilterEditor._ctrlTemplate="";_addCultureInfo("FlexGridFilter",{ariaLabels:{edit:"Edit Filter for Column",dialog:"Filter Editor for Column",asc:"Sort Column in Ascending Order",dsc:"Sort Column in Descending Order",search:"Search Item List",op1:"First Condition Operator",val1:"First Condition Value",and:"Require both Conditions",or:"Require either Condition",op2:"Second Condition Operator",val2:"Second Condition Value",active:"active",listBox:"List of options available for filtering"},accessibilityHelperMessage:{filter:{filterColumn:"Show column {name} filter dialog",closeFilterDialog:"Close Filter dialog"}},ascending:"↑ Ascending",descending:"↓ Descending",apply:"Apply",cancel:"Cancel",clear:"Clear",conditions:"Filter by Condition",values:"Filter by Value",search:"Search",selectAll:"Select All",includeSelection:"Include Current Selection",null:"(nothing)",exceedsMaxValues:"Not all items showing",popupBody:"This column has more than 250 unique items. Only the first 250 unique items are displayed.",popupOkButton:"OK",header:"Show items where the value",and:"And",or:"Or",stringOperators:[{name:"(not set)",op:null},{name:"Equals",op:Operator.EQ},{name:"Does not equal",op:Operator.NE},{name:"Begins with",op:Operator.BW},{name:"Does not begin with",op:Operator.NBW},{name:"Ends with",op:Operator.EW},{name:"Does not end with",op:Operator.NEW},{name:"Contains",op:Operator.CT},{name:"Does not contain",op:Operator.NC}],multiFilterBlankOperators:[{name:"Nothing",op:Operator.BLANK},{name:"Not Nothing",op:Operator.NOTBLANK}],numberOperators:[{name:"(not set)",op:null},{name:"Equals",op:Operator.EQ},{name:"Does not equal",op:Operator.NE},{name:"Is Greater than",op:Operator.GT},{name:"Is Greater than or equal to",op:Operator.GE},{name:"Is Less than",op:Operator.LT},{name:"Is Less than or equal to",op:Operator.LE}],dateOperators:[{name:"(not set)",op:null},{name:"Equals",op:Operator.EQ},{name:"Is Before",op:Operator.LT},{name:"Is After",op:Operator.GT}],booleanOperators:[{name:"(not set)",op:null},{name:"Equals",op:Operator.EQ},{name:"Does not equal",op:Operator.NE}]});export class ColumnFilterEditor extends Control{constructor(e,t,i=!0){super(e,null,!0);this._disallowedControls=new Set(["TransposedGrid","WjTransposedGrid","TransposedMultiRow","WjTransposedMultiRow"]);this._btnClickedHandle=this._btnClicked.bind(this);this._cbSelectAllClickedHandle=this._cbSelectAllClicked.bind(this);this._andOrChangedHandle=this._andOrChanged.bind(this);this._isConditionFilterChanged=!1;this.filterChanged=new Event;this.buttonClicked=new Event;this._filter=asType(t,ColumnFilter);ColumnFilterEditor.isCustomedTemplate(ColumnFilterEditor.controlTemplate)&&(this._filter.filterMode===FilterMode.MultiFilter?ColumnFilterEditor.controlTemplate=ColumnFilterEditor._multiFilterTemplate:ColumnFilterEditor.controlTemplate=ColumnFilterEditor._singleFilterTemplate);let l=this.getTemplate();this._filter.filterMode===FilterMode.MultiFilter?this.applyTemplate(`${ControlClsNames.hostElement} ${ControlClsNames.content} ${ControlClsNames.content} ${ColumnFilterEditorClsNames.hostElement}`,l,{_divSort:"div-sort",_btnAsc:"btn-asc",_btnDsc:"btn-dsc",_divEdtVal:"div-edt-val",_divEdtCnd:"div-edt-cnd",_btnClear:"btn-clear"}):this.applyTemplate(`${ControlClsNames.hostElement} ${ControlClsNames.content} ${ControlClsNames.content} ${ColumnFilterEditorClsNames.hostElement}`,l,{_divSort:"div-sort",_btnAsc:"btn-asc",_btnDsc:"btn-dsc",_divType:"div-type",_tVal:"t-val",_tCnd:"t-cnd",_divEdtVal:"div-edt-val",_divEdtCnd:"div-edt-cnd",_btnApply:"btn-apply",_btnCancel:"btn-cancel",_btnClear:"btn-clear"});let s=culture.FlexGridFilter,n=s.ariaLabels,r=this.hostElement,a=this.filter.column,o=a.grid.collectionView;setAttribute(r,"role","dialog");setAttribute(r,"aria-label",this._filter._ariaLabel);setAriaLabel(this._btnAsc,n.asc);setAriaLabel(this._btnDsc,n.dsc);setText(this._btnAsc,s.ascending);setText(this._btnDsc,s.descending);setText(this._btnClear,s.clear);if(this._filter.filterMode===FilterMode.SingleFilter){setText(this._tVal,s.values);setText(this._tCnd,s.conditions);setText(this._btnApply,s.apply);setText(this._btnCancel,s.cancel);this._tabPanel=new TabPanel(this._divType.querySelector(".wj-tabpanel"),{isAnimated:!1,autoSwitch:!0,selectedIndexChanged:e=>{if(this.filter.filterType===FilterType.Both)if(e._isInitialized){let i=this.getActiveFilterType(t);e.selectedIndex=i===FilterType.Value?0:1;this._showFilter(i)}else this._showFilter(0===e.selectedIndex?FilterType.Value:FilterType.Condition);else{e.selectedIndex=this.filter.filterType===FilterType.Value?0:1;this._showFilter(this.filter.filterType)}}});this._showFilter(this.getActiveFilterType(t))}else this._showFilter();if(!a.allowSorting||this._disallowedControls.has(a.grid.constructor.name)){enable(this._btnAsc,!1);enable(this._btnDsc,!1)}i&&o&&o.canSort||(this._divSort.style.display="none");this._updateSortButtonState();this._btnApply&&this._btnApply.addEventListener("click",this._btnClickedHandle);this._btnCancel&&this._btnCancel.addEventListener("click",this._btnClickedHandle);this._btnClear.addEventListener("click",this._btnClickedHandle);this._btnAsc.addEventListener("click",this._btnClickedHandle);this._btnDsc.addEventListener("click",this._btnClickedHandle);this.addEventListener(r,"keydown",e=>{if(!e.defaultPrevented){let t=e.target.tagName.match(/^(a|button)$/i);switch(e.keyCode){case Key.Space:if(t){this._btnClicked(e);e.preventDefault()}break;case Key.Enter:if(t)this._btnClicked(e);else{this.updateFilter();this.onFilterChanged();this.onButtonClicked()}e.preventDefault();break;case Key.Escape:this.onButtonClicked();e.preventDefault();break;case Key.Tab:moveFocus(this.hostElement,e.shiftKey?-1:1);e.preventDefault()}}});this.addEventListener(window,"resize",()=>{if(!this.isTouching&&!this._wasTouching)if(this.filter.filterMode===FilterMode.SingleFilter)this.onButtonClicked();else{let e=this.filter.column,t=e.grid.columnHeaders,i=t.rows.length-1,l=e.index,s=t.getCellElement(i,l),n=s?null:t.getCellBoundingRect(i,l);_updatePopupPosition(this.hostElement,s||n,PopupPosition.BelowLeft)}})}static get controlTemplate(){ColumnFilterEditor._ctrlTemplate||(ColumnFilterEditor._ctrlTemplate=ColumnFilterEditor._singleFilterTemplate);return ColumnFilterEditor._ctrlTemplate}static set controlTemplate(e){ColumnFilterEditor._ctrlTemplate=e}static get _multiFilterTemplate(){const e=`\n <div wj-part="div-multi-filter">\n <div wj-part="div-edt-cnd" tabindex="-1"></div>\n <div wj-part="div-edt-val" tabindex="-1"></div>\n ${`\n <div style="text-align:right;margin-top:10px">\n <button wj-part="btn-clear" class="${InputFormElementsClsNames.btn}"></button>\n </div>\n `}\n </div>\n `;return`\n <div>\n ${`\n <div wj-part="div-sort" class="${ColumnFilterEditorClsNames.sortButtons}">\n <button wj-part="btn-asc" class="${InputFormElementsClsNames.btn}"></button>&nbsp;&nbsp;&nbsp;\n <button wj-part="btn-dsc" class="${InputFormElementsClsNames.btn}"></button>\n </div>\n `}\n ${e}\n </div>\n `}static get _singleFilterTemplate(){const e=`\n <div style="text-align:right;margin-top:10px">\n <button wj-part="btn-apply" class="${InputFormElementsClsNames.btn}"></button>&nbsp;&nbsp;\n <button wj-part="btn-cancel" class="${InputFormElementsClsNames.btn}"></button>&nbsp;&nbsp;\n <button wj-part="btn-clear" class="${InputFormElementsClsNames.btn}"></button>\n </div>\n `,t=`\n <div wj-part="div-type">\n <div class="wj-tabpanel">\n <div>\n <div wj-part="t-val" class="${ColumnFilterEditorClsNames.filterHeader}"></div>\n <div>\n <div wj-part="div-edt-val" tabindex="-1"></div>\n </div>\n </div>\n <div>\n <div wj-part="t-cnd" class="${ColumnFilterEditorClsNames.filterHeader}"></div>\n <div>\n <div wj-part="div-edt-cnd" tabindex="-1"></div>\n </div>\n </div>\n </div>\n ${e}\n </div>\n `;return`\n <div>\n ${`\n <div wj-part="div-sort" class="${ColumnFilterEditorClsNames.sortButtons}">\n <button wj-part="btn-asc" class="${InputFormElementsClsNames.btn}"></button>&nbsp;&nbsp;&nbsp;\n <button wj-part="btn-dsc" class="${InputFormElementsClsNames.btn}"></button>\n </div>\n `}\n ${t}\n </div>\n `}static isCustomedTemplate(e){return e===ColumnFilterEditor._multiFilterTemplate||e===ColumnFilterEditor._singleFilterTemplate}get filter(){return this._filter}updateEditor(){this._edtVal&&this._edtVal.updateEditor();this._edtCnd&&this._edtCnd.updateEditor()}updateFilter(){let e=this.filter.filterMode;if(e==FilterMode.SingleFilter)switch(this._getFilterType()){case FilterType.Value:this._edtVal.updateFilter();this.filter.conditionFilter.clear();break;case FilterType.Condition:this._edtCnd.updateFilter();this.filter.valueFilter.clear()}else if(e==FilterMode.MultiFilter){this._edtVal&&this._edtVal.updateFilter();this._edtCnd&&this._edtCnd.updateFilter()}}onFilterChanged(e){this.filterChanged.raise(this,e)}onButtonClicked(e){this.buttonClicked.raise(this,e)}_showFilter(e){this._wasTouching=this.isTouching;if(this._filter.filterMode===FilterMode.MultiFilter){this._edtCnd||(this._edtCnd=new ConditionFilterEditor(this._divEdtCnd,this.filter.conditionFilter));this._edtVal||(this._edtVal=new ValueFilterEditor(this._divEdtVal,this.filter.valueFilter));this._edtVal._updateExceedsMaxValuesDisplay();this.bindEventsForMultiFilter();return}if(e==FilterType.Value&&null==this._edtVal){this._edtVal=new ValueFilterEditor(this._divEdtVal,this.filter.valueFilter);this._edtVal.canApplyChanged.addHandler(e=>{enable(this._btnApply,this._edtVal.canApply)})}if(e==FilterType.Condition&&null==this._edtCnd){this._edtCnd=new ConditionFilterEditor(this._divEdtCnd,this.filter.conditionFilter);this._edtCnd.canApplyChanged.addHandler(e=>{enable(this._btnApply,this._edtCnd.canApply)})}if(0!=(e&this.filter.filterType))if(e==FilterType.Value){this._divEdtVal.style.display="";this._divEdtCnd.style.display="none";this._edtVal.focus();this._edtVal._updateExceedsMaxValuesDisplay();enable(this._btnApply,this._edtVal.canApply)}else{this._divEdtVal.style.display="none";this._divEdtCnd.style.display="";this._edtCnd.focus();enable(this._btnApply,this._edtCnd.canApply)}let t=[this._tCnd,this._tVal];switch(this.filter.filterType){case FilterType.None:case FilterType.Condition:case FilterType.Value:t.forEach(e=>{e.style.display="none"});break;default:t.forEach(e=>{e.style.display=""})}}getActiveFilterType(e){return this.filter.conditionFilter.isActive||0==(e.filterType&FilterType.Value)?FilterType.Condition:FilterType.Value}raiseFilterChangedHandler(){let e=this.filter._owner;e.onFilterChanged(new CellRangeEventArgs(e.grid.cells,new CellRange(-1,this.filter.column.index)))}bindEventsForMultiFilter(){const e=this._edtCnd,t=this._edtVal;e._cmb1.selectedIndexChanged.addHandler((t,i)=>{this.setConditionFilterChanged(e._val1);this._cmb1Timer=this.updateConditionEditorAndTirggerFilterChanged()});e._cmb2.selectedIndexChanged.addHandler((t,i)=>{this.setConditionFilterChanged(e._val2);this._cmb2Timer=this.updateConditionEditorAndTirggerFilterChanged()});e._val1.textChanged.addHandler(()=>{this._isConditionFilterChanged=!0;this._val1Timer=this.updateConditionEditorAndTirggerFilterChanged()});e._val2.textChanged.addHandler(()=>{this._isConditionFilterChanged=!0;this._val2Timer=this.updateConditionEditorAndTirggerFilterChanged()});e.hostElement.addEventListener("change",this._andOrChangedHandle);t._lbValues.itemChecked.addHandler(()=>{t.updateFilter();this.raiseFilterChangedHandler();this.onFilterChanged()});t._cbSelectAll.addEventListener("click",this._cbSelectAllClickedHandle);this._filterAppliedHandler=()=>{if(this._isConditionFilterChanged){this._edtVal.updateEditor();this._isConditionFilterChanged=!1}};this._filter._owner.filterApplied.addHandler(this._filterAppliedHandler)}updateConditionEditorAndTirggerFilterChanged(){return setTimeout(()=>{this.raiseFilterChangedHandler();this._edtCnd.updateFilter();this._isConditionFilterChanged&&this.onFilterChanged()},Control._SEARCH_DELAY+100)}_cbSelectAllClicked(){this._edtVal.updateFilter();this.raiseFilterChangedHandler();this.onFilterChanged()}_andOrChanged(e){let t=e.target==this._edtCnd._btnAnd,i=e.target==this._edtCnd._btnOr;if(t||i){this.filter.conditionFilter.isActive&&(this._isConditionFilterChanged=!0);this._andOrTimer=this.updateConditionEditorAndTirggerFilterChanged()}}_updateSortButtonState(){let e=this.filter.column,t=e?e.currentSort:"",i=ControlStateClsNames.active,l=culture.FlexGridFilter.ariaLabels;if("+"===t){addClass(this._btnAsc,i);this._btnAsc.setAttribute("aria-label",`${l.asc} ${l.active}`)}else if("-"===t){addClass(this._btnDsc,i);this._btnDsc.setAttribute("aria-label",`${l.dsc} ${l.active}`)}}_getFilterType(){let e=FilterType;return"none"!=this._divEdtVal.style.display?e.Value:e.Condition}setConditionFilterChanged(e){isValueInputDisplay(e.hostElement)?e.text&&(this._isConditionFilterChanged=!0):this._isConditionFilterChanged=!0}_btnClicked(e){let t=e.target;e.preventDefault();e.stopPropagation();if(!hasClass(t,ControlStateClsNames.disabled)){if(t==this._btnAsc||t==this._btnDsc){let t=this.filter.column.grid,i=this.filter.column,l=i.sortMemberPath||i.binding,s=i.grid.collectionView.sortDescriptions,n=this.hostElement["$WJ-OWNR"]&&this.hostElement["$WJ-OWNR"]["wj-cell-index"];if(n){let i=n.panel,r=n.rng;null==r&&(r=new CellRange(n.row,n.col,n.row,n.col));let a=new CellRangeEventArgs(i,r,e);if(t.onSortingColumn(a)){s.deferUpdate(()=>{s.clear();s.push(new SortDescription(l,e.target==this._btnAsc))});this._updateSortButtonState();t.onSortedColumn(a)}}}if(t==this._btnApply){this.updateFilter();this.onFilterChanged()}else if(t==this._btnClear){const e=this.filter.isActive;this.filter.clear();e&&this.onFilterChanged()}else this.updateEditor();this.onButtonClicked()}}dispose(){this._filterAppliedHandler&&this._filter._owner.filterApplied.removeHandler(this._filterAppliedHandler);if(this._cmb1Timer){clearTimeout(this._cmb1Timer);this._cmb1Timer=null}if(this._cmb2Timer){clearTimeout(this._cmb2Timer);this._cmb2Timer=null}if(this._val1Timer){clearTimeout(this._val1Timer);this._val1Timer=null}if(this._val2Timer){clearTimeout(this._val2Timer);this._val2Timer=null}if(this._andOrTimer){clearTimeout(this._andOrTimer);this._andOrTimer=null}this._btnApply&&this._btnApply.removeEventListener("click",this._btnClickedHandle);this._btnCancel&&this._btnCancel.removeEventListener("click",this._btnClickedHandle);this._btnClear&&this._btnClear.removeEventListener("click",this._btnClickedHandle);this._btnAsc&&this._btnAsc.removeEventListener("click",this._btnClickedHandle);this._btnDsc&&this._btnDsc.removeEventListener("click",this._btnClickedHandle);this._edtCnd&&this._andOrChangedHandle&&this._edtCnd.hostElement.removeEventListener("change",this._andOrChangedHandle);this._edtVal&&this._edtVal._cbSelectAll&&this._edtVal._cbSelectAll.removeEventListener("click",this._cbSelectAllClickedHandle);if(this._edtVal){this._edtVal.dispose();this._edtVal=null}if(this._edtCnd){this._edtCnd.dispose();this._edtCnd=null}if(this._tabPanel){this._tabPanel.dispose();this._tabPanel=null}super.dispose()}}ColumnFilterEditor._ctrlTemplate="";function isValueInputDisplay(e){return"none"!==e.style.display}_registerModule("wijmo.grid.filter",selfModule);
14
+ import{Column,DataMap,FlexGrid,DataMapEditor,CellRange,CellRangeEventArgs,CellType,_NewRowTemplate}from"@grapecity/wijmo.grid";import{Globalize,asString,asNumber,asArray,asBoolean,asType,asEnum,CollectionView,isString,isDate,DateTime,culture,isNumber,setAttribute,copy,changeType,showPopup,hidePopup,isFunction,createElement,toggleClass,removeClass,closestClass,setAriaLabel,Control,Event,DataType,Key,GlyphClsNames,InputFormElementsClsNames,UtilitesClsNames,NotifyCollectionChangedAction,format,_ENV_TOOLS,setText,escapeRegExp,setChecked,SortDescription,SortNulls,ControlClsNames,replaceItems,getUniqueId,_addCultureInfo,enable,moveFocus,hasClass,addClass,ControlStateClsNames,_updatePopupPosition,PopupPosition,_registerModule}from"@grapecity/wijmo";import{DropDown,DropDownClsNames}from"@grapecity/wijmo.input";import{TabPanel}from"@grapecity/wijmo.nav";import*as input from"@grapecity/wijmo.input";import*as selfModule from"@grapecity/wijmo.grid.filter";export const ColumnFilterEditorClsNames={filterType:"wj-filtertype",hostElement:"wj-columnfiltereditor",sortButtons:"wj-sort-buttons",filterHeader:"wj-filter-header"};export const ConditionFilterEditorClsNames={hostElement:"wj-conditionfilter-editor"};export const FlexGridFilterClsNames={elemFilter:"wj-elem-filter",filter:"wj-filter",filterOff:"wj-filter-off",filterOn:"wj-filter-on",hostElement:"wj-columnfiltereditor",filterTopBorder:"wj-filter-tabPanel-top-border"};export const ValueFilterEditorClsNames={hostElement:"wj-valuefilter-editor",customModalText:"wj-custom-modal-text",modalFooter:"wj-valuefilter-modal-footer",filterOptions:"wj-filter-options"};export var FilterType;!function(e){e[e.None=0]="None";e[e.Condition=1]="Condition";e[e.Value=2]="Value";e[e.Both=3]="Both"}(FilterType||(FilterType={}));export var FilterMode;!function(e){e[e.SingleFilter=0]="SingleFilter";e[e.MultiFilter=1]="MultiFilter"}(FilterMode||(FilterMode={}));export class FlexGridFilter{constructor(e,t){this._showIcons=!0;this._showSort=!0;this._defFilterType=FilterType.Both;this._defFilterMode=FilterMode.SingleFilter;this._xValueSearch=!0;this._includeUpdatedRowsInFilter=!1;this._showIncludeSelection=!1;this.filterApplied=new Event;this.editingFilter=new Event;this.filterChanging=new Event;this.filterChanged=new Event;this.exclusiveValueSearchChanged=new Event;this._showIncludeSelectionChanged=new Event;this._filters=[];this._g=asType(e,FlexGrid,!1);this._g.formatItem.addHandler(this._formatItem.bind(this));this._g.itemsSourceChanged.addHandler(this.clear.bind(this));this._g.columns.collectionChanged.addHandler(this._adjustBindingColumns,this);let i=this._g.hostElement;e.addEventListener(i,"mousedown",this._mousedown.bind(this),!0);e.addEventListener(i,"click",this._click.bind(this),!0);e.addEventListener(i,"keydown",this._keydown.bind(this),!0);this._g.invalidate();copy(this,t);this._init()}_init(){const e=this.grid,_excludeRowFromFilter=e=>{let t=this.grid;const i=this.excludedRowsSet;if(null!=t&&t.rows.length>e)if(t.itemsSource)if(t.rows[e]instanceof _NewRowTemplate){let l=t.editableCollectionView.currentAddItem||t.rows[e].dataItem;l&&i.add(l)}else t.rows[e].dataItem&&i.add(t.rows[e].dataItem);else t.rows[e]&&i.add(t.rows[e])};e.rowChanged&&e.rowChanged.addHandler((e,t)=>{t.added&&_excludeRowFromFilter(t.index)});e.rowEditEnding.addHandler((e,t)=>{_excludeRowFromFilter(t.row)});e.cellEditEnded.addHandler((e,t)=>{_excludeRowFromFilter(t.row)})}get excludedRowsSet(){let e=this.grid;e.selectedSheet&&(e=e.selectedSheet);e._newAddedRowsSet||(e._newAddedRowsSet=new WeakSet);return e._newAddedRowsSet}set excludedRowsSet(e){let t=this.grid;t.selectedSheet&&(t=t.selectedSheet);t._newAddedRowsSet=e}get grid(){return this._g}get filterColumns(){return this._filterColumns}set filterColumns(e){this._filterColumns=asArray(e);this.clear()}get showFilterIcons(){return this._showIcons}set showFilterIcons(e){if(e!=this.showFilterIcons){this._showIcons=asBoolean(e);this._g&&this._g.invalidate()}}get showSortButtons(){return this._showSort}set showSortButtons(e){this._showSort=asBoolean(e)}get reApplyFilterOnUpdate(){return this._includeUpdatedRowsInFilter}set reApplyFilterOnUpdate(e){e!==this._includeUpdatedRowsInFilter&&(this._includeUpdatedRowsInFilter=asBoolean(e))}get showIncludeSelection(){return this._showIncludeSelection}set showIncludeSelection(e){if(e!=this._showIncludeSelection){this._showIncludeSelection=asBoolean(e,!1);this._onShowIncludeSelectionChanged()}}getColumnFilter(e,t=!0){if(e=this._asColumn(e)){for(let t=0;t<this._filters.length;t++)if(_ENV_TOOLS.isSameInstance(this._filters[t].column,e))return this._filters[t];if(t&&e.binding){let t=new ColumnFilter(this,e);this._filters.push(t);return t}}return null}get defaultFilterType(){return this._defFilterType}set defaultFilterType(e){if((e=asEnum(e,FilterType,!1))!=this.defaultFilterType){this._defFilterType=e;this._g.invalidate();this.clear()}}get defaultFilterMode(){return this._defFilterMode}set defaultFilterMode(e){if((e=asEnum(e,FilterMode,!1))!=this._defFilterMode){this._defFilterMode=e;this._g.invalidate();this.clear()}}get exclusiveValueSearch(){return this._xValueSearch}set exclusiveValueSearch(e){if((e=asBoolean(e))!==this._xValueSearch){this._xValueSearch=e;this.onExclusiveValueSearchChanged()}}get filterDefinition(){let e={defaultFilterType:this.defaultFilterType,filters:[]};this._filters.forEach(t=>{let i=t.conditionFilter,l=t.valueFilter,s=l.uniqueValues&&l.uniqueValues.length;if(t&&t.column&&t.column.binding&&(t.isActive||s||t.filterType!=this.defaultFilterType)){let n={binding:t.column.binding};if(i.isActive){let e=i.condition1,l=i.condition2;n={binding:t.column.binding,type:"condition",condition1:{operator:e.operator,value:e.value},and:i.and,condition2:{operator:l.operator,value:l.value}}}else(l.isActive||s)&&(n={binding:t.column.binding,type:"value",uniqueValues:l.uniqueValues,sortValues:l.sortValues,maxValues:l.maxValues,exclusiveValueSearch:l.exclusiveValueSearch,showValues:l.showValues});t.filterType!=this.defaultFilterType&&(n.filterType=t.filterType);e.filters.push(n)}});return JSON.stringify(e)}set filterDefinition(e){e=asString(e);this.clear();if(e){let t=JSON.parse(e);this.defaultFilterType=t.defaultFilterType;for(let e=0;e<t.filters.length;e++){let i=t.filters[e],l=this._asColumn(i.binding);l||(l=new Column({binding:i.binding}));let s=this.getColumnFilter(l,!0);if(s){null!=i.filterType&&(s.filterType=asEnum(i.filterType,FilterType));switch(i.type){case"condition":let e=s.conditionFilter;e.condition1.value=l.dataType==DataType.Date?changeType(i.condition1.value,l.dataType,null):i.condition1.value;e.condition1.operator=i.condition1.operator;e.and=i.and;e.condition2.value=l.dataType==DataType.Date?changeType(i.condition2.value,l.dataType,null):i.condition2.value;e.condition2.operator=i.condition2.operator;break;case"value":let t=s.valueFilter;t.uniqueValues=i.uniqueValues;["sortValues","maxValues","exclusiveValueSearch"].forEach(e=>{null!=i[e]&&(t[e]=i[e])});t.showValues=i.showValues}}}}this.apply()}get activeEditor(){return Control.getControl(this._divEdt)}editColumnFilter(e,t,i){let l=this._g;this.closeEditor();e=this._asColumn(e);let s=new CellRangeEventArgs(l.cells,new CellRange(-1,e.index));if(!this.onEditingFilter(s))return;let n=createElement(`<div class="${DropDownClsNames.dropDownPanel}"></div>`),r=this.getColumnFilter(e),a=new ColumnFilterEditor(n,r,this.showSortButtons);this._divEdt=n;this._edtCol=e;l.rightToLeft&&(n.dir="rtl");if(!this.onFilterChanging(s)){this._divEdt=this._edtCol=null;return}s.cancel=!0;a.filterChanged.addHandler(()=>{s.cancel=!1;setTimeout(()=>{s.cancel||this.apply()},a._edtVal&&a._edtVal._isFiltering?Control._SEARCH_DELAY+200:0)});a.buttonClicked.addHandler(()=>{this.closeEditor();l.focus();this.onFilterChanged(s)});a.lostFocus.addHandler(()=>{setTimeout(()=>{let e=Control.getControl(this._divEdt);e&&!e.containsFocus()&&this.closeEditor()},10)});let o=t?t.col:e.index,d=l.columns[o];t||d&&d.binding==e.binding||(o=l.selection.leftCol);l._edtHdl._commitRowEdits();l.scrollIntoView(-1,o,!0);let h=l.columnHeaders,u=t&&t.panel&&h&&t.panel._uid==h._uid?t.row:h.rows.length-1,c=o,_=i||h.getCellElement(u,c),p=_?null:h.getCellBoundingRect(u,c);_?showPopup(n,_,!1,!1,!1):showPopup(n,p);let m=e.header,f=format(culture.FlexGridFilter.accessibilityHelperMessage.filter.filterColumn,{name:m});l.announceShortcut(f);this._adjustTabPanelStyle(r);this._setAriaExpanded(_,!0);this._setAriaExpanded(l.cells.getCellElement(-1,c),!0);let g=a.hostElement.querySelectorAll("input");for(let e=0;e<g.length;e++){let t=g[e];if(t.offsetHeight>0&&t.tabIndex>-1&&!t.disabled){t.focus();break}}a.containsFocus()||a.focus()}_setAriaExpanded(e,t){if(e){var i=e.querySelector("."+FlexGridFilter._WJC_FILTER);setAttribute(i,"aria-expanded",t)}}closeEditor(){let e=this._g,t=Control.getControl(this._divEdt),i=this._edtCol;if(t){hidePopup(t.hostElement,()=>{t.dispose()});let i=culture.FlexGridFilter.accessibilityHelperMessage.filter.closeFilterDialog;e.announceShortcut(i)}if(i){let t=e.columnHeaders,l=t.rows.length?t.getCellElement(t.rows.length-1,i.index):null;this._setAriaExpanded(l,!1);l=e.cells.getCellElement(-1,i.index);this._setAriaExpanded(l,!1)}this._divEdt=null;this._edtCol=null}apply(){let e=this._g.collectionView;if(e){let t=this._g.editableCollectionView;if(t){t.commitEdit();t.commitNew()}this.excludedRowsSet=null;e.filter=this._filter.bind(this)}let t=e?e.updateFilterDefinition:null;isFunction(t)&&t.call(e,this);this.onFilterApplied()}clear(){if(this._filters.length){this._filters=[];this.apply()}}onFilterApplied(e){this.filterApplied.raise(this,e)}onEditingFilter(e){this.editingFilter.raise(this,e);return!e.cancel}onFilterChanging(e){this.filterChanging.raise(this,e);return!e.cancel}onFilterChanged(e){this.filterChanged.raise(this,e)}onExclusiveValueSearchChanged(e){this.exclusiveValueSearchChanged.raise(this,e)}_onShowIncludeSelectionChanged(e){this._showIncludeSelectionChanged.raise(this,e)}_asColumn(e){return isString(e)?this._g.getColumn(e,!0):isNumber(e)?this._g.columns[e]:asType(e,Column,!1)}_filter(e){const t=this.excludedRowsSet;if(!this.reApplyFilterOnUpdate&&t.has(e))return!0;let i=this._filters;for(let t=0;t<i.length;t++){let l=i[t];if(l.column!=FlexGridFilter._skipColumn&&!l.apply(e))return!1}return!0}_adjustTabPanelStyle(e){if(e){const t=e.filterType!==FilterType.Both,i=document.querySelector('[wj-part="tabpanes"]');t&&i&&toggleClass(i,FlexGridFilterClsNames.filterTopBorder)}}_formatItem(e,t){if(t.panel==e.columnHeaders){let e=this._g,i=e.getMergedRange(t.panel,t.row,t.col)||new CellRange(t.row,t.col),l=e.columns[i.col],s=e._getBindingColumn(t.panel,t.row,l),n=t.cell;if(i.row2==t.panel.rows.length-1||l!=s){let i=this.getColumnFilter(s,this.defaultFilterType!=FilterType.None),r=this._filterColumns;r&&r.length&&r.indexOf(s.binding)<0&&r.indexOf(s.name)<0&&(i=null);if(i){toggleClass(n,FlexGridFilterClsNames.filterOn,i.isActive);toggleClass(n,FlexGridFilterClsNames.filterOff,!i.isActive)}else{removeClass(n,FlexGridFilterClsNames.filterOn);removeClass(n,FlexGridFilterClsNames.filterOff)}if(i&&i.filterType!=FilterType.None){this._showIcons&&this._addFilterButton(s,i,n);if(0==t.row){n=e.cells.getCellElement(-1,t.col);n&&this._addFilterButton(l,i,n)}}}}}_addFilterButton(e,t,i){let l=FlexGridFilter._WJC_FILTER,s=createElement(`<button class="${InputFormElementsClsNames.btn} ${GlyphClsNames.btnGlyph} ${UtilitesClsNames.right} `+l+'" type="button" tabindex="-1">'+`<span class=${GlyphClsNames.filter}></span></button>`);setAriaLabel(s,culture.FlexGridFilter.ariaLabels.edit+" "+e.header);setAttribute(s,"aria-haspopup","dialog");setAttribute(s,"aria-expanded",!1);setAttribute(s,"aria-describedby",e.describedById);setAttribute(s,"aria-pressed",t.isActive);if(!i.querySelector("."+l)){1==i.children.length&&(i=i.querySelector("div")||i);i.insertBefore(s,i.firstChild)}}_mousedown(e){this._edtColPrev=this._edtCol}_click(e){if(this._toggleEditor(e)){e.stopPropagation();e.preventDefault()}}_toggleEditor(e){if(!e.defaultPrevented&&0==e.button)if(closestClass(e.target,FlexGridFilter._WJC_FILTER)){let t=this._g,i=t.hitTest(e.target);i.panel||(i=t.hitTest(e));if(i.panel&&t.columnHeaders&&t.cells&&(i.panel._uid==t.columnHeaders._uid||i.panel._uid==t.cells._uid&&-1==i.row)){let e=t.getMergedRange(i.panel,i.row,i.col)||new CellRange(i.row,i.col),l=t.columns[e.col],s=t._getBindingColumn(i.panel,i.row,l);if(this._divEdt&&this._edtCol==s){this.closeEditor();t.focus()}else s!=this._edtColPrev&&setTimeout(()=>{this.editColumnFilter(s,i)},this._divEdt?100:0);return!0}}else this.closeEditor();return!1}_keydown(e){const t=e.ctrlKey||e.metaKey,i=!e.defaultPrevented&&!t&&e.altKey,l=i&&e.keyCode===Key.Up,s=i&&e.keyCode===Key.Down,n=!e.defaultPrevented&&t&&e.shiftKey&&e.keyCode===Key.F;if(l||s||n){let t=this.grid,i=t.selection,l=i.col>-1?t.columns[i.col]:null,s=l?t._getBindingColumn(t.cells,i.row,l):null,r=s&&s.dataMap&&s.dataMapEditor==DataMapEditor.DropDownList;if(this.filterColumns&&this.filterColumns.length>0&&!this.filterColumns.includes(s._binding._path)){e.preventDefault();return!1}if(t.activePanelType!=CellType.Cell&&t.activePanelType!=CellType.ColumnHeader){e.preventDefault();return!1}s&&s.editor instanceof DropDown&&(r=!0);if(s&&(!r||n)){let t=this.getColumnFilter(s,!1);if(t&&t.filterType!=FilterType.None){this.editColumnFilter(s);e.preventDefault();e.stopPropagation()}}}}_removeFilter(e){this._filters.splice(e,1)}_adjustBindingColumns(e,t){if(t.action==NotifyCollectionChangedAction.Reset){const e=this._filters;if(e&&e.length>0)for(let t=e.length-1;t>=0;t--){const i=e[t],l=i.column;if(l.binding){const e=this._asColumn(l.binding);e?e!==l&&i._setColumn(e):this._removeFilter(t)}}}}}FlexGridFilter._WJC_FILTER=FlexGridFilterClsNames.elemFilter;export const empty={};export class ColumnFilter{constructor(e,t){this._ariaLabel=culture.FlexGridFilter.ariaLabels.dialog;this._owner=e;this._col=t;this._valueFilter=new ValueFilter(t);this._valueFilter.setColumnFilter(this);this._valueFilter.exclusiveValueSearch=e.exclusiveValueSearch;this._valueFilter.showIncludeSelection=e.showIncludeSelection;this._conditionFilter=new ConditionFilter(t);this._conditionFilter.setColumnFilter(this);e.exclusiveValueSearchChanged.addHandler(e=>{this._valueFilter.exclusiveValueSearch=e.exclusiveValueSearch});e._showIncludeSelectionChanged.addHandler(e=>{this._valueFilter.showIncludeSelection=e.showIncludeSelection})}get filterType(){return null!=this._filterType?this._filterType:this._owner.defaultFilterType}set filterType(e){if((e=asEnum(e,FilterType,!0))!=this._filterType){let t=this.isActive;this.clear();this._filterType=e;t?this._owner.apply():this._col.grid&&this._col.grid.invalidate()}}get filterMode(){return null!=this._filterMode?this._filterMode:this._owner.defaultFilterMode}set filterMode(e){if((e=asEnum(e,FilterMode,!0))!=this._filterMode){let t=this.isActive;this.clear();this._filterMode=e;t?this._owner.apply():this._col.grid&&this._col.grid.invalidate()}}get dataMap(){return this.conditionFilter.dataMap||this.valueFilter.dataMap}set dataMap(e){this.conditionFilter.dataMap=e;this.valueFilter.dataMap=e}get valueFilter(){return this._valueFilter}get conditionFilter(){return this._conditionFilter}get column(){return this._col}_setColumn(e){this._col=e;this._valueFilter&&this._valueFilter._setColumn(e);this._conditionFilter&&this._conditionFilter._setColumn(e)}get ariaLabel(){return this._ariaLabel}set ariaLabel(e){e!=this._ariaLabel&&(this._ariaLabel=e)}get isActive(){return this._conditionFilter.isActive||this._valueFilter.isActive}apply(e){let t=this._conditionFilter.apply(e);this._valueFilter._cancelFilter||(t=t&&this._valueFilter.apply(e));return t}clear(){this._valueFilter.clear();this._conditionFilter.clear()}implementsInterface(e){return"IColumnFilter"==e}}export var ValueFilterSearchKind;!function(e){e[e.Text=0]="Text";e[e.Regex=1]="Regex";e[e.Excel=2]="Excel"}(ValueFilterSearchKind||(ValueFilterSearchKind={}));export class ValueFilter{constructor(e){this._values=null;this._filterText=null;this._xValueSearch=!0;this._maxValues=250;this._uniqueValues=null;this._sortValues=!0;this._searchType=ValueFilterSearchKind.Excel;this._showIncludeSelection=!1;this._allValues=null;this._col=e}get searchType(){return this._searchType}set searchType(e){this._searchType=asEnum(e,ValueFilterSearchKind)}get showValues(){return this._values}set showValues(e){this._values=e}get filterText(){return this._filterText}set filterText(e){this._filterText=asString(e)}get exclusiveValueSearch(){return this._xValueSearch}set exclusiveValueSearch(e){if((e=asBoolean(e))!==this._xValueSearch){this._xValueSearch=asBoolean(e);e&&(this._filterText="")}}get maxValues(){return this._maxValues}set maxValues(e){this._maxValues=asNumber(e,!1,!0)}get uniqueValues(){return this._uniqueValues}set uniqueValues(e){this._uniqueValues=asArray(e)}get sortValues(){return this._sortValues}set sortValues(e){this._sortValues=asBoolean(e)}get dataMap(){return this._map}set dataMap(e){this._map=asType(e,DataMap,!0)}get showIncludeSelection(){return this._showIncludeSelection}set showIncludeSelection(e){e!=this._showIncludeSelection&&(this._showIncludeSelection=asBoolean(e,!1))}get column(){return this._col}_setColumn(e){this._col=e}get isActive(){let e=null!=this._values;return this._columnFilter&&this._columnFilter.filterMode===FilterMode.MultiFilter?e:e&&Object.keys(this._values).length>0}apply(e){let t=this.column;if(!t||!t._binding||!this.isActive)return!0;e=t._binding.getValue(e);e=this.dataMap?this.dataMap.getDisplayValue(e)||"":t.dataMap?t.dataMap.getDisplayValue(e)||"":Globalize.format(e,t.format);return null!=this._values[e]}clear(){this.showValues=null;this.filterText=null}getUniqueValues(e=!0){let t=[],i=this.column,l=Globalize.format;if(this.uniqueValues){this.uniqueValues.forEach(e=>{t.push({value:e,text:l(e,i.format)})});return t}let s={},n=i.collectionView,r=n?n.sourceCollection:[];if(e&&n&&n.sourceCollection&&n.filter)try{this._columnFilter&&this._columnFilter.filterMode===FilterMode.MultiFilter&&this._columnFilter.conditionFilter.isActive?this._cancelFilter=!0:FlexGridFilter._skipColumn=this._col;let e=[];for(let t=0;t<r.length;t++)n.filter(r[t])&&e.push(r[t]);r=e}finally{this._cancelFilter=!1;FlexGridFilter._skipColumn=null}for(let e=0;e<r.length;e++){let n=i._binding.getValue(r[e]),a=this.dataMap?this.dataMap.getDisplayValue(n)||"":i.dataMap?i.dataMap.getDisplayValue(n)||"":l(n,i.format);if(!s[a]){s[a]=!0;t.push({value:n,text:a})}}return t}implementsInterface(e){return"IColumnFilter"==e}setColumnFilter(e){this._columnFilter=e}updateShowStatus(e){if(this.showValues&&0!=Object.keys(this.showValues).length){for(let t in this.showValues)for(let i=0;i<e.length;i++)if(e[i].text==t){e[i].show=!0;break}}else e.forEach(e=>e.show=!0);return e}setInitialAllValues(){let e=this.getUniqueValues(!1);this._allValues=this.updateShowStatus(e)}}export class ValueFilterEditor extends Control{constructor(e,t){super(e);this._canApply=!1;this._isFiltering=!1;this._filterTextChangedBnd=this._filterTextChanged.bind(this);this._cbSelectAllClickedBnd=this._cbSelectAllClicked.bind(this);this.canApplyChanged=new Event;this._filter=asType(t,ValueFilter,!1);let i=this.getTemplate();this.applyTemplate(`${ControlClsNames.hostElement} ${ValueFilterEditorClsNames.hostElement}`,i,{_divFilter:"div-filter",_cbSelectAll:"cb-select-all",_spSelectAll:"sp-select-all",_cbIncludeSel:"cb-include-sel",_spIncludeSel:"sp-include-sel",_lblIncludeSel:"lbl-include-sel",_divOptions:"div-options",_divValues:"div-values",_divExceeds:"div-exceeds",_aExceeds:"a-exceeds"});this._cbSelectAll.tabIndex=0;this._cbIncludeSel.tabIndex=0;this._divExceeds.tabIndex=0;let l=culture.FlexGridFilter;setText(this._spSelectAll,l.selectAll);setText(this._spIncludeSel,l.includeSelection);setText(this._aExceeds,l.exceedsMaxValues);setAttribute(this._divValues,"aria-live","polite");let s=this._view=new CollectionView(null,{sortNulls:SortNulls.First,filter:this._filterValues.bind(this)});if(t.sortValues){let e=t.column.dataMap||t.dataMap?"text":"value",i=t.column.dataType!=DataType.Boolean;s.sortDescriptions.push(new SortDescription(e,i))}s.collectionChanged.addHandler(this._updateSelectAllCheck,this);this._filterText="";this._rxFilter=null;this._cmbFilter=new input.ComboBox(this._divFilter,{trimText:!1,isRequired:!1,placeholder:l.search,keyActionPrintCharacters:0,keyActionTab:0});this._cmbFilter.isEditable=!0;const n=this._divFilter.querySelector(".wj-input-group");if(n){const e=document.createElement("span");e.classList.add("wj-glyph-search");n.insertBefore(e,n.firstChild)}this._lbValues=new input.ListBox(this._divValues,{displayMemberPath:"text",checkedMemberPath:"show",itemsSource:this._view,itemFormatter:(e,t)=>t||l.null,checkedItemsChanged:e=>this._updateSelectAllCheck()});this._lbValues._isNeedUpdateBnd=this._isSingleFilterMode();setAttribute(this._divValues,"aria-label",culture.FlexGridFilter.ariaLabels.listBox);setAriaLabel(this._cmbFilter.inputElement,l.ariaLabels.search);setAttribute(this._lbValues.hostElement,"aria-multiselectable",!0);this._cmbFilter.inputElement.addEventListener("input",this._filterTextChangedBnd);this._cbSelectAll.addEventListener("click",this._cbSelectAllClickedBnd);if(!this._popup){this._initPopup();this._aExceeds&&this.addEventListener(this._aExceeds,"click",e=>{e.preventDefault();this._popup.show(!0)})}this.updateEditor();setAttribute(this._lbValues.hostElement,"tabindex","-1");this._filter.showValues?this._initialItems=s.sourceCollection.filter(e=>this._filter.showValues[e.text||e.value]||!1):this._initialItems=this._lbValues.checkedItems;this._isSingleFilterMode()||this._filter.setInitialAllValues()}static get controlTemplate(){ValueFilterEditor._ctrlTemplate||(ValueFilterEditor._ctrlTemplate=`<div><div wj-part="div-filter"></div><div wj-part="div-options" class="${input.ListBoxClsNames.listBoxItem} ${ValueFilterEditorClsNames.filterOptions}"><label wj-part="select-all-container"><input wj-part="cb-select-all" type="checkbox" class="wj-custom-checkbox"> <span wj-part="sp-select-all"></span></label><br /><label wj-part="lbl-include-sel"><input wj-part="cb-include-sel" type="checkbox" class="wj-custom-checkbox"> <span wj-part="sp-include-sel"></span></label></div><div wj-part="div-values"></div><div wj-part="div-exceeds"><a wj-part="a-exceeds"></a></div></div>`);return ValueFilterEditor._ctrlTemplate}static set controlTemplate(e){ValueFilterEditor._ctrlTemplate=e}get filter(){return this._filter}get canApply(){return this._canApply}set canApply(e){if(e!=this._canApply){this._canApply=e;this.onCanApplyChanged()}}get _shouldIncludeSelection(){return this._filter.showIncludeSelection&&this._cbIncludeSel.checked}updateEditor(){let e=this._filter.column,t=this._filter.getUniqueValues(!0);this._lbValues.isContentHtml=e.isContentHtml;let i=this._filter.showValues;if(!i||0==Object.keys(i).length&&this._isSingleFilterMode())t.forEach(e=>e.show=!0);else for(let e in i)for(let i=0;i<t.length;i++)if(t[i].text==e){t[i].show=!0;break}let l=this._filter.filterText||"",s=this._getCaseSensitive();this._cmbFilter.text=l;this._filterText=s?l:l.toLowerCase();this._rxFilter=this._getSearchExp(l,s);this._filter.showIncludeSelection&&!this.hostElement.contains(this._lblIncludeSel)?this._divOptions.appendChild(this._lblIncludeSel):this._filter.showIncludeSelection||this._lblIncludeSel.remove();let n=this._view;n.pageSize=this._filter.maxValues;n.sourceCollection=t;this._adjustWidthsTimer=setTimeout(()=>{this._adjustWidths()},0);this._updateExceedsMaxValuesDisplay()}clearEditor(e=!0){this._cmbFilter.text="";this._filterText="";this._rxFilter=null;let t=this._view;t.pageSize=0;t.items.forEach(t=>{t.show=e});t.moveCurrentTo(-1);t.refresh();t.pageSize=this._filter.maxValues}get isEditorClear(){return!this._filterText&&!this._cbSelectAll.indeterminate}_updateFilter(){let e,t=this._filter,i=null;e=this._isSingleFilterMode()?this._getItems():this._filter._allValues=replaceItems(this._filter._allValues,this._view.sourceCollection);if(!this._isSingleFilterMode()||this._filterText||this._cbSelectAll.indeterminate){i=this._shouldIncludeSelection&&this._filter.showValues||{};for(let t=0;t<e.length;t++){let l=e[t];l.show&&(i[l.text]=!0)}}t.showValues=i;t.filterText=this._filterText}updateFilter(){this._isFiltering?this._updateFilterTimer=setTimeout(()=>{this._updateFilter()},Control._SEARCH_DELAY+100):this._updateFilter()}onCanApplyChanged(e){this.canApplyChanged.raise(this,e)}_getCaseSensitive(){let e=this._filter.column,t=e?e.grid:null;return t&&t.caseSensitiveSearch}_getItems(){return this._filter.exclusiveValueSearch?this._view.items:this._view.sourceCollection}_filterTextChanged(){""===this._filterText&&this._cbSelectAll.checked||this._filter.exclusiveValueSearch?this._lbValues._addMode=!1:this._lbValues._addMode=!0;this._toFilter&&clearTimeout(this._toFilter);this._isFiltering=!0;this._toFilter=setTimeout(()=>{let e=this._cmbFilter.text,t=this._getCaseSensitive();t||(e=e.toLowerCase());if(e!=this._filterText){this._filterText=e;this._rxFilter=this._getSearchExp(e,t);this._view.refresh();this._updateExceedsMaxValuesDisplay();if(this._isSingleFilterMode()){if(!e){let e=this._initialItems;if(e.length&&this._view.sourceCollection.indexOf(e[0])>-1){this._lbValues.checkedItems=this._initialItems;this._updateSelectAllCheck();this._isFiltering=!1;return}}}else this._filter.filterText=e;if(this._filter.exclusiveValueSearch){this._cbSelectAll.checked=!1;this._cbSelectAll.click()}else this._updateSelectAllCheck()}this._isFiltering=!1},Control._SEARCH_DELAY)}_getSearchExp(e,t){if(!e)return null;switch(this._filter.searchType){case ValueFilterSearchKind.Text:return this._getTextSearchExp(e,t);case ValueFilterSearchKind.Regex:return this._getRegexSearchExp(e,t);case ValueFilterSearchKind.Excel:return this._getExcelSearchExp(e,t)}}_getTextSearchExp(e,t){return new RegExp(escapeRegExp(e),t?"":"i")}_getRegexSearchExp(e,t){try{return new RegExp(e,t?"s":"is")}catch(e){return new RegExp("(?!)",t?"s":"is")}}_getExcelSearchExp(e,t){let i=e;i=i.replace(/([.+^$[\]\\(){}|-])/g,"\\$1");i=i.replace(/~~/g,"__`$0`__");i=i.replace(/~\?/g,"__`$1`__");i=i.replace(/~\*/g,"__`$2`__");i=i.replace(/~(.)/g,"$1");i=i.replace(/(\?+)/g,(function(e,t){return Array.from(t).map(e=>".").join("")}));i=i.replace(/(\*+)/g,(function(e,t){return Array.from(t).map(e=>".*").join("")}));i=i.replace(/__`\$(\d)`__/g,(function(e,t){switch(t){case"0":return"~";case"1":return"\\?";case"2":return"\\*"}}));/([^~]|^)[?*]/g.test(e)&&(i="^"+i+"$");("~"===e||e&&!i.length)&&(i="$a^");return new RegExp(i,t?"s":"is")}_filterValues(e){let t=this._rxFilter;return null==t||null==e||t.test(e.text)}_getActualItems(){return this._isSingleFilterMode()?this._getItems():this.exceedsMaxValues?this._view._view:this._view.items}_cbSelectAllClicked(){let e=this._cbSelectAll.checked,t=this._divValues.scrollTop,i=this._getActualItems();for(let t=0;t<i.length;t++)i[t].show=e;this._view.refresh();this._divValues.scrollTop=t;this._adjustWidthsTimer=setTimeout(()=>{this._adjustWidths()},0)}_updateSelectAllCheck(){let e=this._getActualItems(),t=0,i=0;for(let l=0;l<e.length;l++){e[l].show?t++:i++;if(t&&i)break}let l=t&&i?null:t>0;setChecked(this._cbSelectAll,l);null==l?this._cbSelectAll.setAttribute("data-indeterminate","true"):this._cbSelectAll.removeAttribute("data-indeterminate");this.canApply=t>0}_adjustWidths(){let e=this._lbValues.hostElement;if(e&&e.offsetHeight>0){let t=0,i=e.querySelectorAll("."+input.ListBoxClsNames.listBoxItem);if(i.length){for(let e=0;e<i.length;e++)t=Math.max(t,i[e].scrollWidth);if(t){let i=e.querySelectorAll("."+input.ListBoxClsNames.listBoxItem);if(i.length)for(let e=0;e<i.length;e++)i[e].style.width=t+"px"}}}}get exceedsMaxValues(){return!(!this._view||!this._view._view)&&this._view._view.length>this.filter.maxValues}_updateExceedsMaxValuesDisplay(){this._divExceeds.style.display=this.exceedsMaxValues?"":"none"}_initPopup(){let e=document.createElement("div");const t=this.hostElement.getAttribute("lang");e.innerHTML=`\n <div role="dialog" aria-modal="true" aria-describedby="dialogDesc" ${t?`lang="${t}"`:""}><div class=${input.PopupClsNames.dialogBody}><div class=${ValueFilterEditorClsNames.customModalText}><p id="dialogDesc">`+culture.FlexGridFilter.popupBody+"</p></div></div>"+`<div class="${input.PopupClsNames.dialogFooter} ${ValueFilterEditorClsNames.modalFooter}" >`+`<button class="btn btn-primary ${UtilitesClsNames.hideOk}">`+culture.FlexGridFilter.popupOkButton+"</button></div></div>";this._popup=new input.Popup(e,{modal:!0,fadeIn:!0,fadeOut:!0})}_isSingleFilterMode(){return!this._filter._columnFilter||this._filter._columnFilter.filterMode==FilterMode.SingleFilter}dispose(){if(this._lbValues){this._lbValues.dispose();this._lbValues=null}this._cbSelectAll&&this._cbSelectAll.removeEventListener("click",this._cbSelectAllClickedBnd);if(this._cmbFilter){this._cmbFilter.inputElement&&this._cmbFilter.inputElement.removeEventListener("input",this._filterTextChangedBnd);this._cmbFilter.dispose();this._cmbFilter=null}if(this._view){this._view.collectionChanged.removeHandler(this._updateSelectAllCheck,this);this._view=null}if(this._adjustWidthsTimer){clearTimeout(this._adjustWidthsTimer);this._adjustWidthsTimer=null}if(this._updateFilterTimer){clearTimeout(this._updateFilterTimer);this._updateFilterTimer=null}if(this._toFilter){clearTimeout(this._toFilter);this._toFilter=null}if(this._popup&&!this._popup.isVisible){this._popup.dispose();this._popup=null}this._filter=null;this._initialItems=null;this._rxFilter=null;this._filterText=null;super.dispose()}}ValueFilterEditor._ctrlTemplate="";export class ConditionFilter{constructor(e){this._c1=new FilterCondition(this);this._c2=new FilterCondition(this);this._and=!0;this._col=e}get condition1(){return this._c1}get condition2(){return this._c2}get and(){return this._and}set and(e){this._and=asBoolean(e)}get dataMap(){return this._map}set dataMap(e){this._map=asType(e,DataMap,!0)}get column(){return this._col}_setColumn(e){this._col=e}get isActive(){return this._c1.isActive||this._c2.isActive}apply(e){let t=this._col,i=this._c1,l=this._c2,s=!1,n=!1;if(!t||!t._binding||!this.isActive)return!0;e=t._binding.getValue(e);let r=this.dataMap||t.dataMap;if(r)e=r.getDisplayValue(e);else if(isDate(e)){s=!this._hasTimePart();n=!this._hasDatePart();let t=FilterCondition._refDateTime;s?e=DateTime.fromDateTime(e,t):n&&(e=DateTime.fromDateTime(t,e))}else if(isNumber(e)){let i=Globalize,l=t.format,s=i.formatNumber(e,l);e=i.parseFloat(s,l)}let a=i.apply(e,s,n),o=l.apply(e,s,n);return i.isActive&&l.isActive?this._and?a&&o:a||o:i.isActive?a:!l.isActive||o}clear(){this._c1.clear();this._c2.clear();this.and=!0}_hasDatePart(){let e=this._col.format;if(!e)return!0;e=culture.Globalize.calendar.patterns[e]||e;return/[yMd]+/.test(e)}_hasTimePart(){let e=this._col.format;if(!e)return!1;e=culture.Globalize.calendar.patterns[e]||e;return/[Hmst]+/.test(e)}implementsInterface(e){return"IColumnFilter"==e}setColumnFilter(e){this._columnFilter=e}}export class FilterCondition{constructor(e){this._op=null;this._filter=e}get operator(){return this._op}set operator(e){this._op=asEnum(e,Operator,!0)}get value(){return this._val}set value(e){this._val=e;this._strVal=isString(e)?this._getCaseString(e):null}get isActive(){if(this._filter._columnFilter&&this._filter._columnFilter.filterMode==FilterMode.MultiFilter)switch(this._op){case null:return!1;case Operator.BLANK:case Operator.NOTBLANK:return!0;default:return""!==this._val&&null!==this._val}else switch(this._op){case null:return!1;case Operator.EQ:case Operator.NE:return!0;default:return null!=this._val||null!=this._strVal}}clear(){this.operator=null;this.value=null}apply(e,t,i){let l=this._strVal||this._val;isString(e)&&(e=this._getCaseString(e));isString(l)&&null==e&&(e="");isDate(l)&&(t?l=DateTime.fromDateTime(l,FilterCondition._refDateTime):i&&(l=DateTime.fromDateTime(FilterCondition._refDateTime,l)));let s=Operator;switch(this._op){case null:return!0;case s.EQ:return null!=e&&null!=l?e.valueOf()==l.valueOf():e==l;case s.NE:return null!=e&&null!=l?e.valueOf()!=l.valueOf():e!=l;case s.GT:return e>l;case s.GE:return e>=l;case s.LT:return e<l;case s.LE:return e<=l;case s.BW:return!(null==this._strVal||!isString(e))&&0==e.indexOf(this._strVal);case s.EW:return!!(null!=this._strVal&&isString(e)&&e.length>=this._strVal.length)&&e.substr(e.length-this._strVal.length)==l;case s.CT:return!(null==this._strVal||!isString(e))&&e.indexOf(this._strVal)>-1;case s.NC:return!(null==this._strVal||!isString(e))&&e.indexOf(this._strVal)<0;case s.NBW:return!(null==this._strVal||!isString(e))&&0!==e.indexOf(this._strVal);case s.NEW:return!(null==this._strVal||!isString(e))&&e.substring(e.length-this._strVal.length)!==l;case s.BLANK:return isBlankValue(e);case s.NOTBLANK:return!isBlankValue(e)}throw"Unknown operator"}_getCaseString(e){let t=this._filter.column,i=t?t.grid:null;return i&&i.caseSensitiveSearch?e:e.toLowerCase()}}FilterCondition._refDateTime=new Date(2e3,0,1,0,0,0);export var Operator;!function(e){e[e.EQ=0]="EQ";e[e.NE=1]="NE";e[e.GT=2]="GT";e[e.GE=3]="GE";e[e.LT=4]="LT";e[e.LE=5]="LE";e[e.BW=6]="BW";e[e.EW=7]="EW";e[e.CT=8]="CT";e[e.NC=9]="NC";e[e.NBW=10]="NBW";e[e.NEW=11]="NEW";e[e.BLANK=100]="BLANK";e[e.NOTBLANK=101]="NOTBLANK"}(Operator||(Operator={}));function isBlankValue(e){return null==e||""===e}export class ConditionFilterEditor extends Control{constructor(e,t){super(e);this._canApply=!1;this.canApplyChanged=new Event;this._filter=asType(t,ConditionFilter,!1);let i=this.getTemplate();this.applyTemplate(`${ControlClsNames.hostElement} ${ConditionFilterEditorClsNames.hostElement}`,i,{_divHdr:"div-hdr",_divCmb1:"div-cmb1",_divVal1:"div-val1",_btnAnd:"btn-and",_btnOr:"btn-or",_spAnd:"sp-and",_spOr:"sp-or",_divCmb2:"div-cmb2",_divVal2:"div-val2",_lblVal:"lbl-val",_divHdr2:"div-hdr-second",_lblVal2:"lbl-val-second"});let l=culture.FlexGridFilter,s=l.ariaLabels;setAriaLabel(this._btnAnd,s.and);setAriaLabel(this._btnOr,s.or);setAttribute(this._btnAnd,"aria-describedby","filterAndDesc");setAttribute(this._btnOr,"aria-describedby","filterOrDesc");this._spAnd.id="filterAndDesc";this._spOr.id="filterOrDesc";setText(this._divHdr,l.header);setText(this._spAnd,l.and);setText(this._spOr,l.or);setText(this._lblVal,s.val1);setText(this._divHdr2,l.header);setText(this._lblVal2,s.val2);this._linkLabelToInput(this._divHdr,this._divCmb1,"cmb1");this._linkLabelToInput(this._divHdr2,this._divCmb2,"cmb2");this._cmb1=this._createOperatorCombo(this._divCmb1,s.op1);this._val1=this._createValueInput(this._divVal1,s.val1);this._cmb2=this._createOperatorCombo(this._divCmb2,s.op2);this._val2=this._createValueInput(this._divVal2,s.val2);this._val1.hostElement.style.display="none";this._lblVal.style.display="none";this._cmb1.selectedIndexChanged.addHandler((e,t)=>{const i=null==e.selectedValue||this._isShowConditionValuePart(e.selectedValue);this._val1.hostElement.style.display=i?"none":"";this._lblVal.style.display=i?"none":"";setAttribute(this._val1.hostElement,"aria-hidden",i.toString());this.canApply=!i||"none"!==this._val2.hostElement.style.display});this._val2.hostElement.style.display="none";this._lblVal2.style.display="none";this._cmb2.selectedIndexChanged.addHandler((e,t)=>{const i=null==e.selectedValue||this._isShowConditionValuePart(e.selectedValue);this._val2.hostElement.style.display=i?"none":"";this._lblVal2.style.display=i?"none":"";setAttribute(this._val2.hostElement,"aria-hidden",i.toString());this.canApply="none"!==this._val1.hostElement.style.display||!i});this.addEventListener(this._lblVal,"click",e=>this._onLabelClick(e,this._val1));this.addEventListener(this._lblVal2,"click",e=>this._onLabelClick(e,this._val2));let n=this.hostElement;this.addEventListener(n,"change",this._btnAndOrChanged.bind(this));this.addEventListener(n,"keydown",this._keydown.bind(this));this.updateEditor()}static get controlTemplate(){ConditionFilterEditor._ctrlTemplate||(ConditionFilterEditor._ctrlTemplate='<div><label wj-part="div-hdr"></label><div wj-part="div-cmb1"></div><br/><label wj-part="lbl-val"></label><div wj-part="div-val1"></div><br/><div role="radiogroup" style="text-align:center"><label><input wj-part="btn-and" type="radio" role="radio"> <span wj-part="sp-and"></span> </label>&nbsp;&nbsp;&nbsp;<label><input wj-part="btn-or" type="radio" role="radio"> <span wj-part="sp-or"></span> </label></div><label wj-part="div-hdr-second"></label><div wj-part="div-cmb2"></div><br/><label wj-part="lbl-val-second"></label><div wj-part="div-val2"></div><br/></div>');return ConditionFilterEditor._ctrlTemplate}static set controlTemplate(e){ConditionFilterEditor._ctrlTemplate=e}_isShowConditionValuePart(e){return e==Operator.BLANK||e==Operator.NOTBLANK}_linkLabelToInput(e,t,i){const l=getUniqueId(i);e.htmlFor=l;t.id=l}get filter(){return this._filter}get canApply(){return this._canApply}set canApply(e){if(e!=this._canApply){this._canApply=e;this.onCanApplyChanged()}}updateEditor(){let e=this._filter.condition1,t=this._filter.condition2;this._cmb1.selectedValue=e.operator;this._cmb2.selectedValue=t.operator;if(this._val1 instanceof input.ComboBox&&!(this._val1 instanceof input.InputTime)){this._val1.text=changeType(e.value,DataType.String);this._val2.text=changeType(t.value,DataType.String)}else{this._val1.value=e.value;this._val2.value=t.value}let i=this._filter.and;this._checkRadio(this._btnAnd,i);this._checkRadio(this._btnOr,!i)}clearEditor(){this._cmb1.selectedValue=this._cmb2.selectedValue=null;this._val1.text=this._val2.text=null;this._checkRadio(this._btnAnd,!0);this._checkRadio(this._btnOr,!1)}get isEditorClear(){return null==this._cmb1.selectedValue&&!this._val1.text&&null==this._cmb2.selectedValue&&!this._val2.text}updateFilter(){let e=this._filter.condition1,t=this._filter.condition2;e.operator=this._cmb1.selectedValue;t.operator=this._cmb2.selectedValue;if("value"in this._val1)if(!this._isSingleFilterMode()&&this._val1._cal&&this._val1._getParsedValue){e.value=this._val1._getParsedValue();t.value=this._val2._getParsedValue()}else{e.value=this._val1.value;t.value=this._val2.value}else{e.value=this._getComboValue(this._val1);t.value=this._getComboValue(this._val2)}this._filter.and=this._btnAnd.checked}onCanApplyChanged(e){this.canApplyChanged.raise(this,e)}_getComboValue(e){return e.selectedIndex>-1?e.selectedValue:e.text}_createOperatorCombo(e,t){let i=this._filter.column,l=culture.FlexGridFilter,s=l.stringOperators,n=DataType;this._filter.dataMap||i.dataMap||(i.dataType==n.Date?s=l.dateOperators:i.dataType==n.Number?s=l.numberOperators:i.dataType==n.Boolean&&(s=l.booleanOperators));this._isSingleFilterMode()||(s=s.concat(l.multiFilterBlankOperators));let r=new input.ComboBox(e,{itemsSource:s,displayMemberPath:"name",selectedValuePath:"op",keyActionPrintCharacters:0});setAriaLabel(r.inputElement,t);return r}_createValueInput(e,t){let i=this._filter,l=i.column,s=i.dataMap||l.dataMap,n=null,r=DataType;if(l.dataType==r.Date){n=i._hasDatePart()?i._hasTimePart()?new input.InputDateTime(e):new input.InputDate(e):new input.InputTime(e,{keyActionPrintCharacters:0});n.format=l.format}else if(l.dataType!=r.Number||s){n=new input.ComboBox(e);n.isEditable=!0;n.trimText=!1;n.keyActionPrintCharacters=0;if(s){n.itemsSource=s.getDisplayValues();n.caseSensitiveSearch=!!l.grid&&l.grid.caseSensitiveSearch}else l.dataType==r.Boolean&&(n.itemsSource=[!0,!1])}else{n=new input.InputNumber(e);n.step=1;n.format=l.format}n.isRequired=!1;setAriaLabel(n.inputElement,t);return n}_btnAndOrChanged(e){let t=e.target==this._btnAnd,i=e.target==this._btnOr;if(t||i){this._checkRadio(this._btnAnd,t);this._checkRadio(this._btnOr,i)}}_checkRadio(e,t){e.checked=t;setAttribute(e,"aria-checked",t.toString());setAttribute(e,"tabindex",t?null:"-1")}_keydown(e){let t=e.target==this._btnAnd,i=e.target==this._btnOr;if(t||i)switch(e.keyCode){case Key.Left:case Key.Right:case Key.Up:case Key.Down:let i=t?this._btnOr:this._btnAnd;i.click();i.focus();e.preventDefault()}}_onLabelClick(e,t){t.focus()}_isSingleFilterMode(){return!this._filter._columnFilter||this._filter._columnFilter.filterMode==FilterMode.SingleFilter}}ConditionFilterEditor._ctrlTemplate="";_addCultureInfo("FlexGridFilter",{ariaLabels:{edit:"Edit Filter for Column",dialog:"Filter Editor for Column",asc:"Sort Column in Ascending Order",dsc:"Sort Column in Descending Order",search:"Search Item List",op1:"First Condition Operator",val1:"First Condition Value",and:"Require both Conditions",or:"Require either Condition",op2:"Second Condition Operator",val2:"Second Condition Value",active:"active",listBox:"List of options available for filtering"},accessibilityHelperMessage:{filter:{filterColumn:"Show column {name} filter dialog",closeFilterDialog:"Close Filter dialog"}},ascending:"↑ Ascending",descending:"↓ Descending",apply:"Apply",cancel:"Cancel",clear:"Clear",conditions:"Filter by Condition",values:"Filter by Value",search:"Search",selectAll:"Select All",includeSelection:"Include Current Selection",null:"(nothing)",exceedsMaxValues:"Not all items showing",popupBody:"This column has more than 250 unique items. Only the first 250 unique items are displayed.",popupOkButton:"OK",header:"Show items where the value",and:"And",or:"Or",stringOperators:[{name:"(not set)",op:null},{name:"Equals",op:Operator.EQ},{name:"Does not equal",op:Operator.NE},{name:"Begins with",op:Operator.BW},{name:"Does not begin with",op:Operator.NBW},{name:"Ends with",op:Operator.EW},{name:"Does not end with",op:Operator.NEW},{name:"Contains",op:Operator.CT},{name:"Does not contain",op:Operator.NC}],multiFilterBlankOperators:[{name:"Nothing",op:Operator.BLANK},{name:"Not Nothing",op:Operator.NOTBLANK}],numberOperators:[{name:"(not set)",op:null},{name:"Equals",op:Operator.EQ},{name:"Does not equal",op:Operator.NE},{name:"Is Greater than",op:Operator.GT},{name:"Is Greater than or equal to",op:Operator.GE},{name:"Is Less than",op:Operator.LT},{name:"Is Less than or equal to",op:Operator.LE}],dateOperators:[{name:"(not set)",op:null},{name:"Equals",op:Operator.EQ},{name:"Is Before",op:Operator.LT},{name:"Is After",op:Operator.GT}],booleanOperators:[{name:"(not set)",op:null},{name:"Equals",op:Operator.EQ},{name:"Does not equal",op:Operator.NE}]});export class ColumnFilterEditor extends Control{constructor(e,t,i=!0){super(e,null,!0);this._disallowedControls=new Set(["TransposedGrid","WjTransposedGrid","TransposedMultiRow","WjTransposedMultiRow"]);this._btnClickedHandle=this._btnClicked.bind(this);this._cbSelectAllClickedHandle=this._cbSelectAllClicked.bind(this);this._andOrChangedHandle=this._andOrChanged.bind(this);this._isConditionFilterChanged=!1;this.filterChanged=new Event;this.buttonClicked=new Event;this._filter=asType(t,ColumnFilter);ColumnFilterEditor.isCustomedTemplate(ColumnFilterEditor.controlTemplate)&&(this._filter.filterMode===FilterMode.MultiFilter?ColumnFilterEditor.controlTemplate=ColumnFilterEditor._multiFilterTemplate:ColumnFilterEditor.controlTemplate=ColumnFilterEditor._singleFilterTemplate);let l=this.getTemplate();this._filter.filterMode===FilterMode.MultiFilter?this.applyTemplate(`${ControlClsNames.hostElement} ${ControlClsNames.content} ${ControlClsNames.content} ${ColumnFilterEditorClsNames.hostElement}`,l,{_divSort:"div-sort",_btnAsc:"btn-asc",_btnDsc:"btn-dsc",_divEdtVal:"div-edt-val",_divEdtCnd:"div-edt-cnd",_btnClear:"btn-clear"}):this.applyTemplate(`${ControlClsNames.hostElement} ${ControlClsNames.content} ${ControlClsNames.content} ${ColumnFilterEditorClsNames.hostElement}`,l,{_divSort:"div-sort",_btnAsc:"btn-asc",_btnDsc:"btn-dsc",_divType:"div-type",_tVal:"t-val",_tCnd:"t-cnd",_divEdtVal:"div-edt-val",_divEdtCnd:"div-edt-cnd",_btnApply:"btn-apply",_btnCancel:"btn-cancel",_btnClear:"btn-clear"});let s=culture.FlexGridFilter,n=s.ariaLabels,r=this.hostElement,a=this.filter.column,o=a.grid.collectionView;setAttribute(r,"role","dialog");setAttribute(r,"aria-label",this._filter._ariaLabel);setAriaLabel(this._btnAsc,n.asc);setAriaLabel(this._btnDsc,n.dsc);setText(this._btnAsc,s.ascending);setText(this._btnDsc,s.descending);setText(this._btnClear,s.clear);if(this._filter.filterMode===FilterMode.SingleFilter){setText(this._tVal,s.values);setText(this._tCnd,s.conditions);setText(this._btnApply,s.apply);setText(this._btnCancel,s.cancel);this._tabPanel=new TabPanel(this._divType.querySelector(".wj-tabpanel"),{isAnimated:!1,autoSwitch:!0,selectedIndexChanged:e=>{if(this.filter.filterType===FilterType.Both)if(e._isInitialized){let i=this.getActiveFilterType(t);e.selectedIndex=i===FilterType.Value?0:1;this._showFilter(i)}else this._showFilter(0===e.selectedIndex?FilterType.Value:FilterType.Condition);else{e.selectedIndex=this.filter.filterType===FilterType.Value?0:1;this._showFilter(this.filter.filterType)}}});this._showFilter(this.getActiveFilterType(t))}else this._showFilter();if(!a.allowSorting||this._disallowedControls.has(a.grid.constructor.name)){enable(this._btnAsc,!1);enable(this._btnDsc,!1)}i&&o&&o.canSort||(this._divSort.style.display="none");this._updateSortButtonState();this._btnApply&&this._btnApply.addEventListener("click",this._btnClickedHandle);this._btnCancel&&this._btnCancel.addEventListener("click",this._btnClickedHandle);this._btnClear.addEventListener("click",this._btnClickedHandle);this._btnAsc.addEventListener("click",this._btnClickedHandle);this._btnDsc.addEventListener("click",this._btnClickedHandle);this.addEventListener(r,"keydown",e=>{if(!e.defaultPrevented){let t=e.target.tagName.match(/^(a|button)$/i);switch(e.keyCode){case Key.Space:if(t){this._btnClicked(e);e.preventDefault()}break;case Key.Enter:if(t)this._btnClicked(e);else{this.updateFilter();this.onFilterChanged();this.onButtonClicked()}e.preventDefault();break;case Key.Escape:this.onButtonClicked();e.preventDefault();break;case Key.Tab:moveFocus(this.hostElement,e.shiftKey?-1:1);e.preventDefault()}}});this.addEventListener(window,"resize",()=>{if(!this.isTouching&&!this._wasTouching)if(this.filter.filterMode===FilterMode.SingleFilter)this.onButtonClicked();else{let e=this.filter.column,t=e.grid.columnHeaders,i=t.rows.length-1,l=e.index,s=t.getCellElement(i,l),n=s?null:t.getCellBoundingRect(i,l);_updatePopupPosition(this.hostElement,s||n,PopupPosition.BelowLeft)}})}static get controlTemplate(){ColumnFilterEditor._ctrlTemplate||(ColumnFilterEditor._ctrlTemplate=ColumnFilterEditor._singleFilterTemplate);return ColumnFilterEditor._ctrlTemplate}static set controlTemplate(e){ColumnFilterEditor._ctrlTemplate=e}static get _multiFilterTemplate(){const e=`\n <div wj-part="div-multi-filter">\n <div wj-part="div-edt-cnd" tabindex="-1"></div>\n <div wj-part="div-edt-val" tabindex="-1"></div>\n ${`\n <div style="text-align:right;margin-top:10px">\n <button wj-part="btn-clear" class="${InputFormElementsClsNames.btn}"></button>\n </div>\n `}\n </div>\n `;return`\n <div>\n ${`\n <div wj-part="div-sort" class="${ColumnFilterEditorClsNames.sortButtons}">\n <button wj-part="btn-asc" class="${InputFormElementsClsNames.btn}"></button>&nbsp;&nbsp;&nbsp;\n <button wj-part="btn-dsc" class="${InputFormElementsClsNames.btn}"></button>\n </div>\n `}\n ${e}\n </div>\n `}static get _singleFilterTemplate(){const e=`\n <div style="text-align:right;margin-top:10px">\n <button wj-part="btn-apply" class="${InputFormElementsClsNames.btn}"></button>&nbsp;&nbsp;\n <button wj-part="btn-cancel" class="${InputFormElementsClsNames.btn}"></button>&nbsp;&nbsp;\n <button wj-part="btn-clear" class="${InputFormElementsClsNames.btn}"></button>\n </div>\n `,t=`\n <div wj-part="div-type">\n <div class="wj-tabpanel">\n <div>\n <div wj-part="t-val" class="${ColumnFilterEditorClsNames.filterHeader}"></div>\n <div>\n <div wj-part="div-edt-val" tabindex="-1"></div>\n </div>\n </div>\n <div>\n <div wj-part="t-cnd" class="${ColumnFilterEditorClsNames.filterHeader}"></div>\n <div>\n <div wj-part="div-edt-cnd" tabindex="-1"></div>\n </div>\n </div>\n </div>\n ${e}\n </div>\n `;return`\n <div>\n ${`\n <div wj-part="div-sort" class="${ColumnFilterEditorClsNames.sortButtons}">\n <button wj-part="btn-asc" class="${InputFormElementsClsNames.btn}"></button>&nbsp;&nbsp;&nbsp;\n <button wj-part="btn-dsc" class="${InputFormElementsClsNames.btn}"></button>\n </div>\n `}\n ${t}\n </div>\n `}static isCustomedTemplate(e){return e===ColumnFilterEditor._multiFilterTemplate||e===ColumnFilterEditor._singleFilterTemplate}get filter(){return this._filter}updateEditor(){this._edtVal&&this._edtVal.updateEditor();this._edtCnd&&this._edtCnd.updateEditor()}updateFilter(){let e=this.filter.filterMode;if(e==FilterMode.SingleFilter)switch(this._getFilterType()){case FilterType.Value:this._edtVal.updateFilter();this.filter.conditionFilter.clear();break;case FilterType.Condition:this._edtCnd.updateFilter();this.filter.valueFilter.clear()}else if(e==FilterMode.MultiFilter){this._edtVal&&this._edtVal.updateFilter();this._edtCnd&&this._edtCnd.updateFilter()}}onFilterChanged(e){this.filterChanged.raise(this,e)}onButtonClicked(e){this.buttonClicked.raise(this,e)}_showFilter(e){this._wasTouching=this.isTouching;if(this._filter.filterMode===FilterMode.MultiFilter){this._edtCnd||(this._edtCnd=new ConditionFilterEditor(this._divEdtCnd,this.filter.conditionFilter));this._edtVal||(this._edtVal=new ValueFilterEditor(this._divEdtVal,this.filter.valueFilter));this._edtVal._updateExceedsMaxValuesDisplay();this.bindEventsForMultiFilter();return}if(e==FilterType.Value&&null==this._edtVal){this._edtVal=new ValueFilterEditor(this._divEdtVal,this.filter.valueFilter);this._edtVal.canApplyChanged.addHandler(e=>{enable(this._btnApply,this._edtVal.canApply)})}if(e==FilterType.Condition&&null==this._edtCnd){this._edtCnd=new ConditionFilterEditor(this._divEdtCnd,this.filter.conditionFilter);this._edtCnd.canApplyChanged.addHandler(e=>{enable(this._btnApply,this._edtCnd.canApply)})}if(0!=(e&this.filter.filterType))if(e==FilterType.Value){this._divEdtVal.style.display="";this._divEdtCnd.style.display="none";this._edtVal.focus();this._edtVal._updateExceedsMaxValuesDisplay();enable(this._btnApply,this._edtVal.canApply)}else{this._divEdtVal.style.display="none";this._divEdtCnd.style.display="";this._edtCnd.focus();enable(this._btnApply,this._edtCnd.canApply)}let t=[this._tCnd,this._tVal];switch(this.filter.filterType){case FilterType.None:case FilterType.Condition:case FilterType.Value:t.forEach(e=>{e.style.display="none"});break;default:t.forEach(e=>{e.style.display=""})}}getActiveFilterType(e){return this.filter.conditionFilter.isActive||0==(e.filterType&FilterType.Value)?FilterType.Condition:FilterType.Value}raiseFilterChangedHandler(){let e=this.filter._owner;e.onFilterChanged(new CellRangeEventArgs(e.grid.cells,new CellRange(-1,this.filter.column.index)))}bindEventsForMultiFilter(){const e=this._edtCnd,t=this._edtVal;e._cmb1.selectedIndexChanged.addHandler((t,i)=>{this.setConditionFilterChanged(e._val1);this._cmb1Timer=this.updateConditionEditorAndTirggerFilterChanged()});e._cmb2.selectedIndexChanged.addHandler((t,i)=>{this.setConditionFilterChanged(e._val2);this._cmb2Timer=this.updateConditionEditorAndTirggerFilterChanged()});e._val1.textChanged.addHandler(()=>{this._isConditionFilterChanged=!0;this._val1Timer=this.updateConditionEditorAndTirggerFilterChanged()});e._val2.textChanged.addHandler(()=>{this._isConditionFilterChanged=!0;this._val2Timer=this.updateConditionEditorAndTirggerFilterChanged()});e.hostElement.addEventListener("change",this._andOrChangedHandle);t._lbValues.itemChecked.addHandler(()=>{t.updateFilter();this.raiseFilterChangedHandler();this.onFilterChanged()});t._cbSelectAll.addEventListener("click",this._cbSelectAllClickedHandle);this._filterAppliedHandler=()=>{if(this._isConditionFilterChanged){this._edtVal.updateEditor();this._isConditionFilterChanged=!1}};this._filter._owner.filterApplied.addHandler(this._filterAppliedHandler)}updateConditionEditorAndTirggerFilterChanged(){return setTimeout(()=>{this.raiseFilterChangedHandler();this._edtCnd.updateFilter();this._isConditionFilterChanged&&this.onFilterChanged()},Control._SEARCH_DELAY+100)}_cbSelectAllClicked(){this._edtVal.updateFilter();this.raiseFilterChangedHandler();this.onFilterChanged()}_andOrChanged(e){let t=e.target==this._edtCnd._btnAnd,i=e.target==this._edtCnd._btnOr;if(t||i){this.filter.conditionFilter.isActive&&(this._isConditionFilterChanged=!0);this._andOrTimer=this.updateConditionEditorAndTirggerFilterChanged()}}_updateSortButtonState(){let e=this.filter.column,t=e?e.currentSort:"",i=ControlStateClsNames.active,l=culture.FlexGridFilter.ariaLabels;if("+"===t){addClass(this._btnAsc,i);this._btnAsc.setAttribute("aria-label",`${l.asc} ${l.active}`)}else if("-"===t){addClass(this._btnDsc,i);this._btnDsc.setAttribute("aria-label",`${l.dsc} ${l.active}`)}}_getFilterType(){let e=FilterType;return"none"!=this._divEdtVal.style.display?e.Value:e.Condition}setConditionFilterChanged(e){isValueInputDisplay(e.hostElement)?e.text&&(this._isConditionFilterChanged=!0):this._isConditionFilterChanged=!0}_btnClicked(e){let t=e.target;e.preventDefault();e.stopPropagation();if(!hasClass(t,ControlStateClsNames.disabled)){if(t==this._btnAsc||t==this._btnDsc){let t=this.filter.column.grid,i=this.filter.column,l=i.sortMemberPath||i.binding,s=i.grid.collectionView.sortDescriptions,n=this.hostElement["$WJ-OWNR"]&&this.hostElement["$WJ-OWNR"]["wj-cell-index"];if(n){let i=n.panel,r=n.rng;null==r&&(r=new CellRange(n.row,n.col,n.row,n.col));let a=new CellRangeEventArgs(i,r,e);if(t.onSortingColumn(a)){s.deferUpdate(()=>{s.clear();s.push(new SortDescription(l,e.target==this._btnAsc))});this._updateSortButtonState();t.onSortedColumn(a)}}}if(t==this._btnApply){this.updateFilter();this.onFilterChanged()}else if(t==this._btnClear){const e=this.filter.isActive;this.filter.clear();e&&this.onFilterChanged()}else this.updateEditor();this.onButtonClicked()}}dispose(){this._filterAppliedHandler&&this._filter._owner.filterApplied.removeHandler(this._filterAppliedHandler);if(this._cmb1Timer){clearTimeout(this._cmb1Timer);this._cmb1Timer=null}if(this._cmb2Timer){clearTimeout(this._cmb2Timer);this._cmb2Timer=null}if(this._val1Timer){clearTimeout(this._val1Timer);this._val1Timer=null}if(this._val2Timer){clearTimeout(this._val2Timer);this._val2Timer=null}if(this._andOrTimer){clearTimeout(this._andOrTimer);this._andOrTimer=null}this._btnApply&&this._btnApply.removeEventListener("click",this._btnClickedHandle);this._btnCancel&&this._btnCancel.removeEventListener("click",this._btnClickedHandle);this._btnClear&&this._btnClear.removeEventListener("click",this._btnClickedHandle);this._btnAsc&&this._btnAsc.removeEventListener("click",this._btnClickedHandle);this._btnDsc&&this._btnDsc.removeEventListener("click",this._btnClickedHandle);this._edtCnd&&this._andOrChangedHandle&&this._edtCnd.hostElement.removeEventListener("change",this._andOrChangedHandle);this._edtVal&&this._edtVal._cbSelectAll&&this._edtVal._cbSelectAll.removeEventListener("click",this._cbSelectAllClickedHandle);if(this._edtVal){this._edtVal.dispose();this._edtVal=null}if(this._edtCnd){this._edtCnd.dispose();this._edtCnd=null}if(this._tabPanel){this._tabPanel.dispose();this._tabPanel=null}super.dispose()}}ColumnFilterEditor._ctrlTemplate="";function isValueInputDisplay(e){return"none"!==e.style.display}_registerModule("wijmo.grid.filter",selfModule);