@syncfusion/ej2-dropdowns 27.2.5 → 28.1.33
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/README.md +2 -2
- package/dist/ej2-dropdowns.min.js +3 -3
- package/dist/ej2-dropdowns.umd.min.js +3 -3
- package/dist/ej2-dropdowns.umd.min.js.map +1 -1
- package/dist/es6/ej2-dropdowns.es2015.js +495 -37
- package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
- package/dist/es6/ej2-dropdowns.es5.js +494 -35
- package/dist/es6/ej2-dropdowns.es5.js.map +1 -1
- package/dist/global/ej2-dropdowns.min.js +3 -3
- package/dist/global/ej2-dropdowns.min.js.map +1 -1
- package/dist/global/index.d.ts +2 -2
- package/package.json +13 -13
- package/src/auto-complete/auto-complete.js +5 -2
- package/src/combo-box/combo-box.js +1 -1
- package/src/common/incremental-search.d.ts +1 -1
- package/src/common/incremental-search.js +5 -1
- package/src/common/virtual-scroll.js +2 -1
- package/src/drop-down-base/drop-down-base.js +14 -2
- package/src/drop-down-list/drop-down-list-model.d.ts +31 -0
- package/src/drop-down-list/drop-down-list.d.ts +44 -1
- package/src/drop-down-list/drop-down-list.js +202 -13
- package/src/list-box/list-box.d.ts +4 -0
- package/src/list-box/list-box.js +9 -4
- package/src/mention/mention.js +6 -1
- package/src/multi-select/multi-select-model.d.ts +31 -0
- package/src/multi-select/multi-select.d.ts +45 -0
- package/src/multi-select/multi-select.js +250 -10
- package/styles/auto-complete/_tailwind3-definition.scss +2 -0
- package/styles/auto-complete/bds.css +75 -0
- package/styles/auto-complete/bds.scss +4 -0
- package/styles/auto-complete/highcontrast.css +1 -1
- package/styles/auto-complete/tailwind3.css +101 -0
- package/styles/auto-complete/tailwind3.scss +4 -0
- package/styles/bds-lite.css +3013 -0
- package/styles/bds-lite.scss +28 -0
- package/styles/bds.css +3855 -0
- package/styles/bds.scss +33 -0
- package/styles/bootstrap-dark-lite.css +41 -2
- package/styles/bootstrap-dark.css +41 -2
- package/styles/bootstrap-lite.css +30 -1
- package/styles/bootstrap.css +30 -1
- package/styles/bootstrap4-lite.css +30 -0
- package/styles/bootstrap4.css +30 -0
- package/styles/bootstrap5-dark-lite.css +30 -0
- package/styles/bootstrap5-dark.css +30 -0
- package/styles/bootstrap5-lite.css +30 -0
- package/styles/bootstrap5.3-lite.css +30 -3
- package/styles/bootstrap5.3.css +30 -3
- package/styles/bootstrap5.css +30 -0
- package/styles/combo-box/_tailwind3-definition.scss +2 -0
- package/styles/combo-box/bds.css +75 -0
- package/styles/combo-box/bds.scss +4 -0
- package/styles/combo-box/highcontrast.css +1 -1
- package/styles/combo-box/tailwind3.css +101 -0
- package/styles/combo-box/tailwind3.scss +4 -0
- package/styles/drop-down-base/_bigger.scss +3 -0
- package/styles/drop-down-base/_layout.scss +7 -0
- package/styles/drop-down-base/_tailwind3-definition.scss +98 -0
- package/styles/drop-down-base/bds.css +496 -0
- package/styles/drop-down-base/bds.scss +4 -0
- package/styles/drop-down-base/bootstrap-dark.css +4 -0
- package/styles/drop-down-base/bootstrap.css +4 -0
- package/styles/drop-down-base/bootstrap4.css +4 -0
- package/styles/drop-down-base/bootstrap5-dark.css +4 -0
- package/styles/drop-down-base/bootstrap5.3.css +4 -0
- package/styles/drop-down-base/bootstrap5.css +4 -0
- package/styles/drop-down-base/fabric-dark.css +4 -0
- package/styles/drop-down-base/fabric.css +4 -0
- package/styles/drop-down-base/fluent-dark.css +4 -0
- package/styles/drop-down-base/fluent.css +4 -0
- package/styles/drop-down-base/fluent2.css +9 -5
- package/styles/drop-down-base/highcontrast-light.css +4 -0
- package/styles/drop-down-base/highcontrast.css +4 -0
- package/styles/drop-down-base/material-dark.css +4 -0
- package/styles/drop-down-base/material.css +4 -0
- package/styles/drop-down-base/material3-dark.css +4 -0
- package/styles/drop-down-base/material3.css +4 -0
- package/styles/drop-down-base/tailwind-dark.css +4 -0
- package/styles/drop-down-base/tailwind.css +4 -0
- package/styles/drop-down-base/tailwind3.css +392 -0
- package/styles/drop-down-base/tailwind3.scss +4 -0
- package/styles/drop-down-list/_highcontrast-definition.scss +1 -1
- package/styles/drop-down-list/_layout.scss +18 -2
- package/styles/drop-down-list/_tailwind3-definition.scss +135 -0
- package/styles/drop-down-list/_theme.scss +3 -1
- package/styles/drop-down-list/bds.css +609 -0
- package/styles/drop-down-list/bds.scss +10 -0
- package/styles/drop-down-list/bootstrap-dark.css +18 -1
- package/styles/drop-down-list/bootstrap.css +13 -1
- package/styles/drop-down-list/bootstrap4.css +13 -0
- package/styles/drop-down-list/bootstrap5-dark.css +13 -0
- package/styles/drop-down-list/bootstrap5.3.css +13 -0
- package/styles/drop-down-list/bootstrap5.css +13 -0
- package/styles/drop-down-list/fabric-dark.css +18 -1
- package/styles/drop-down-list/fabric.css +13 -1
- package/styles/drop-down-list/fluent-dark.css +13 -1
- package/styles/drop-down-list/fluent.css +13 -1
- package/styles/drop-down-list/fluent2.css +13 -1
- package/styles/drop-down-list/highcontrast-light.css +9 -1
- package/styles/drop-down-list/highcontrast.css +19 -1
- package/styles/drop-down-list/icons/_bootstrap-dark.scss +4 -0
- package/styles/drop-down-list/icons/_bootstrap.scss +4 -0
- package/styles/drop-down-list/icons/_bootstrap4.scss +4 -0
- package/styles/drop-down-list/icons/_bootstrap5.3.scss +4 -0
- package/styles/drop-down-list/icons/_bootstrap5.scss +4 -0
- package/styles/drop-down-list/icons/_fabric-dark.scss +4 -0
- package/styles/drop-down-list/icons/_fabric.scss +4 -0
- package/styles/drop-down-list/icons/_fluent.scss +4 -0
- package/styles/drop-down-list/icons/_fluent2.scss +4 -0
- package/styles/drop-down-list/icons/_highcontrast.scss +4 -0
- package/styles/drop-down-list/icons/_material-dark.scss +4 -0
- package/styles/drop-down-list/icons/_material.scss +4 -0
- package/styles/drop-down-list/icons/_material3.scss +4 -0
- package/styles/drop-down-list/icons/_tailwind.scss +4 -0
- package/styles/drop-down-list/icons/_tailwind3.scss +14 -0
- package/styles/drop-down-list/material-dark.css +18 -1
- package/styles/drop-down-list/material.css +13 -1
- package/styles/drop-down-list/material3-dark.css +13 -1
- package/styles/drop-down-list/material3.css +13 -1
- package/styles/drop-down-list/tailwind-dark.css +13 -1
- package/styles/drop-down-list/tailwind.css +13 -1
- package/styles/drop-down-list/tailwind3.css +455 -0
- package/styles/drop-down-list/tailwind3.scss +10 -0
- package/styles/drop-down-tree/_bigger.scss +41 -7
- package/styles/drop-down-tree/_layout.scss +34 -10
- package/styles/drop-down-tree/_tailwind3-definition.scss +67 -0
- package/styles/drop-down-tree/_theme.scss +3 -3
- package/styles/drop-down-tree/bds.css +712 -0
- package/styles/drop-down-tree/bds.scss +10 -0
- package/styles/drop-down-tree/bootstrap5.3.css +0 -3
- package/styles/drop-down-tree/icons/_tailwind3.scss +11 -0
- package/styles/drop-down-tree/tailwind3.css +512 -0
- package/styles/drop-down-tree/tailwind3.scss +10 -0
- package/styles/fabric-dark-lite.css +40 -1
- package/styles/fabric-dark.css +40 -1
- package/styles/fabric-lite.css +30 -1
- package/styles/fabric.css +30 -1
- package/styles/fluent-dark-lite.css +30 -1
- package/styles/fluent-dark.css +30 -1
- package/styles/fluent-lite.css +30 -1
- package/styles/fluent.css +30 -1
- package/styles/fluent2-lite.css +45 -12
- package/styles/fluent2.css +45 -12
- package/styles/highcontrast-light-lite.css +22 -1
- package/styles/highcontrast-light.css +22 -1
- package/styles/highcontrast-lite.css +41 -1
- package/styles/highcontrast.css +41 -1
- package/styles/list-box/_bigger.scss +18 -1
- package/styles/list-box/_layout.scss +29 -3
- package/styles/list-box/_tailwind3-definition.scss +123 -0
- package/styles/list-box/_theme.scss +11 -0
- package/styles/list-box/bds.css +971 -0
- package/styles/list-box/bds.scss +6 -0
- package/styles/list-box/fluent2.css +1 -1
- package/styles/list-box/icons/_tailwind3.scss +25 -0
- package/styles/list-box/tailwind3.css +991 -0
- package/styles/list-box/tailwind3.scss +6 -0
- package/styles/material-dark-lite.css +40 -1
- package/styles/material-dark.css +40 -1
- package/styles/material-lite.css +30 -1
- package/styles/material.css +30 -1
- package/styles/material3-dark-lite.css +32 -5
- package/styles/material3-dark.css +32 -5
- package/styles/material3-lite.css +32 -5
- package/styles/material3.css +32 -5
- package/styles/mention/_tailwind3-definition.scss +1 -0
- package/styles/mention/bds.css +78 -0
- package/styles/mention/bds.scss +6 -0
- package/styles/mention/tailwind3.css +67 -0
- package/styles/mention/tailwind3.scss +6 -0
- package/styles/multi-select/_bigger.scss +2 -2
- package/styles/multi-select/_bootstrap-dark-definition.scss +1 -1
- package/styles/multi-select/_layout.scss +27 -2
- package/styles/multi-select/_material3-definition.scss +1 -1
- package/styles/multi-select/_tailwind3-definition.scss +227 -0
- package/styles/multi-select/_theme.scss +1 -1
- package/styles/multi-select/bds.css +1575 -0
- package/styles/multi-select/bds.scss +10 -0
- package/styles/multi-select/bootstrap-dark.css +19 -1
- package/styles/multi-select/bootstrap.css +13 -0
- package/styles/multi-select/bootstrap4.css +13 -0
- package/styles/multi-select/bootstrap5-dark.css +13 -0
- package/styles/multi-select/bootstrap5.3.css +13 -0
- package/styles/multi-select/bootstrap5.css +13 -0
- package/styles/multi-select/fabric-dark.css +18 -0
- package/styles/multi-select/fabric.css +13 -0
- package/styles/multi-select/fluent-dark.css +13 -0
- package/styles/multi-select/fluent.css +13 -0
- package/styles/multi-select/fluent2.css +22 -5
- package/styles/multi-select/highcontrast-light.css +9 -0
- package/styles/multi-select/highcontrast.css +18 -0
- package/styles/multi-select/icons/_bootstrap-dark.scss +4 -0
- package/styles/multi-select/icons/_bootstrap.scss +4 -0
- package/styles/multi-select/icons/_bootstrap4.scss +4 -0
- package/styles/multi-select/icons/_bootstrap5.3.scss +4 -0
- package/styles/multi-select/icons/_bootstrap5.scss +4 -0
- package/styles/multi-select/icons/_fabric-dark.scss +4 -0
- package/styles/multi-select/icons/_fabric.scss +4 -0
- package/styles/multi-select/icons/_fluent.scss +4 -0
- package/styles/multi-select/icons/_fluent2.scss +4 -0
- package/styles/multi-select/icons/_highcontrast.scss +4 -0
- package/styles/multi-select/icons/_material-dark.scss +4 -0
- package/styles/multi-select/icons/_material.scss +4 -0
- package/styles/multi-select/icons/_material3.scss +4 -0
- package/styles/multi-select/icons/_tailwind.scss +4 -0
- package/styles/multi-select/icons/_tailwind3.scss +26 -0
- package/styles/multi-select/material-dark.css +18 -0
- package/styles/multi-select/material.css +13 -0
- package/styles/multi-select/material3-dark.css +15 -4
- package/styles/multi-select/material3.css +15 -4
- package/styles/multi-select/tailwind-dark.css +13 -0
- package/styles/multi-select/tailwind.css +13 -0
- package/styles/multi-select/tailwind3.css +1398 -0
- package/styles/multi-select/tailwind3.scss +10 -0
- package/styles/tailwind-dark-lite.css +30 -1
- package/styles/tailwind-dark.css +30 -1
- package/styles/tailwind-lite.css +30 -1
- package/styles/tailwind.css +30 -1
- package/styles/tailwind3-lite.css +2889 -0
- package/styles/tailwind3-lite.scss +28 -0
- package/styles/tailwind3.css +3550 -0
- package/styles/tailwind3.scss +33 -0
|
@@ -132,7 +132,7 @@ function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId,
|
|
|
132
132
|
* @param {string} [type] - Specifies the type.
|
|
133
133
|
* @returns {{ item: Element | null, index: number | null }} Returns the search matched items.
|
|
134
134
|
*/
|
|
135
|
-
function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type) {
|
|
135
|
+
function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type, ignoreAccent) {
|
|
136
136
|
const listItems = items;
|
|
137
137
|
ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;
|
|
138
138
|
const itemData = { item: null, index: null };
|
|
@@ -156,8 +156,12 @@ function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, typ
|
|
|
156
156
|
});
|
|
157
157
|
});
|
|
158
158
|
}
|
|
159
|
-
|
|
159
|
+
let text = dataSource && filterValue ? (ignoreCase ? filterValue.toString().toLocaleLowerCase() : filterValue).replace(/^\s+|\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\s+|\s+$/g, '');
|
|
160
160
|
/* eslint-disable security/detect-non-literal-regexp */
|
|
161
|
+
if (ignoreAccent && text && queryStr) {
|
|
162
|
+
text = text.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
163
|
+
queryStr = queryStr.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
164
|
+
}
|
|
161
165
|
if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr) || (searchType === 'EndsWith' && text.substr(text.length - queryStr.length) === queryStr) || (searchType === 'Contains' && new RegExp(queryStr, 'g').test(text))) {
|
|
162
166
|
itemData.item = item;
|
|
163
167
|
itemData.index = i;
|
|
@@ -689,7 +693,8 @@ class VirtualScroll {
|
|
|
689
693
|
direction: direction, sentinelInfo: info, offsets: e,
|
|
690
694
|
startIndex: this.parent.previousStartIndex, endIndex: this.parent.previousEndIndex
|
|
691
695
|
};
|
|
692
|
-
const vHeight = this.parent.popupContentElement
|
|
696
|
+
const vHeight = this.parent.popupContentElement ?
|
|
697
|
+
this.parent.popupContentElement.getBoundingClientRect().height : 0;
|
|
693
698
|
//Row Start and End Index calculation
|
|
694
699
|
const rowHeight = this.parent.listItemHeight;
|
|
695
700
|
const exactTopIndex = e.top / rowHeight;
|
|
@@ -1775,10 +1780,16 @@ let DropDownBase = class DropDownBase extends Component {
|
|
|
1775
1780
|
}
|
|
1776
1781
|
}
|
|
1777
1782
|
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
1778
|
-
|
|
1783
|
+
let focusItem = this.fields.disabled ? listElement.querySelector('.' + dropDownBaseClasses.li + ':not(.e-disabled') : listElement.querySelector('.' + dropDownBaseClasses.li);
|
|
1779
1784
|
const selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);
|
|
1780
1785
|
if (focusItem && !selectedItem) {
|
|
1781
|
-
|
|
1786
|
+
if (this.isVirtualizationEnabled && this.viewPortInfo.startIndex !== 0) {
|
|
1787
|
+
const elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');
|
|
1788
|
+
focusItem = elements && elements.length > 0 ? elements[2] : focusItem;
|
|
1789
|
+
}
|
|
1790
|
+
if (focusItem) {
|
|
1791
|
+
focusItem.classList.add(dropDownBaseClasses.focus);
|
|
1792
|
+
}
|
|
1782
1793
|
}
|
|
1783
1794
|
if (list.length <= 0) {
|
|
1784
1795
|
this.l10nUpdate();
|
|
@@ -1994,6 +2005,12 @@ let DropDownBase = class DropDownBase extends Component {
|
|
|
1994
2005
|
new DataManager(dataSource).executeLocal(new Query().take(100))
|
|
1995
2006
|
: dataSource;
|
|
1996
2007
|
ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);
|
|
2008
|
+
if (this.isIncrementalRequest) {
|
|
2009
|
+
this.incrementalLiCollections = ulElement.querySelectorAll('.' + dropDownBaseClasses.li);
|
|
2010
|
+
this.incrementalUlElement = ulElement;
|
|
2011
|
+
this.incrementalListData = listData;
|
|
2012
|
+
return ulElement;
|
|
2013
|
+
}
|
|
1997
2014
|
if (this.isVirtualizationEnabled) {
|
|
1998
2015
|
const oldUlElement = this.list.querySelector('.e-list-parent');
|
|
1999
2016
|
const virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');
|
|
@@ -2281,7 +2298,7 @@ let DropDownBase = class DropDownBase extends Component {
|
|
|
2281
2298
|
updateData.dataSource = this.dataSource;
|
|
2282
2299
|
}
|
|
2283
2300
|
if (this.getModuleName() === 'listbox') {
|
|
2284
|
-
if (!this.isReact || (this.isReact && !isNullOrUndefined(newProp.dataSource))) {
|
|
2301
|
+
if (!this.isReact || (this.isReact && (!isNullOrUndefined(newProp.dataSource) || !isNullOrUndefined(newProp.sortOrder)))) {
|
|
2285
2302
|
this.updateDataSource(updateData, oldProp);
|
|
2286
2303
|
}
|
|
2287
2304
|
}
|
|
@@ -2757,6 +2774,7 @@ const dropDownListClasses = {
|
|
|
2757
2774
|
backIcon: 'e-input-group-icon e-back-icon e-icons',
|
|
2758
2775
|
filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',
|
|
2759
2776
|
filterInput: 'e-input-filter',
|
|
2777
|
+
resizeIcon: 'e-resizer-right e-icons',
|
|
2760
2778
|
filterParent: 'e-filter-parent',
|
|
2761
2779
|
mobileFilter: 'e-ddl-device-filter',
|
|
2762
2780
|
footer: 'e-ddl-footer',
|
|
@@ -2798,6 +2816,8 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
2798
2816
|
this.isTouched = false;
|
|
2799
2817
|
this.isFocused = false;
|
|
2800
2818
|
this.autoFill = false;
|
|
2819
|
+
this.isUpdateHeaderHeight = false;
|
|
2820
|
+
this.isUpdateFooterHeight = false;
|
|
2801
2821
|
}
|
|
2802
2822
|
/**
|
|
2803
2823
|
* Initialize the event handler.
|
|
@@ -2939,6 +2959,10 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
2939
2959
|
(this.allowObjectBinding && this.previousValue &&
|
|
2940
2960
|
this.isObjectInArray(this.previousValue, [this.allowCustom ? this.value ? this.value : dataItem :
|
|
2941
2961
|
dataItem.value ? this.getDataByValue(dataItem.value) : dataItem]))) {
|
|
2962
|
+
this.checkAndResetCache();
|
|
2963
|
+
if (this.enableVirtualization && this.list) {
|
|
2964
|
+
this.updateInitialData();
|
|
2965
|
+
}
|
|
2942
2966
|
return;
|
|
2943
2967
|
}
|
|
2944
2968
|
this.onChangeEvent(e);
|
|
@@ -3253,6 +3277,22 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
3253
3277
|
this.updateIconState();
|
|
3254
3278
|
this.isFocused = true;
|
|
3255
3279
|
}
|
|
3280
|
+
resizingWireEvent() {
|
|
3281
|
+
// Mouse events
|
|
3282
|
+
EventHandler.add(document, 'mousemove', this.resizePopup, this);
|
|
3283
|
+
EventHandler.add(document, 'mouseup', this.stopResizing, this);
|
|
3284
|
+
// Touch events
|
|
3285
|
+
EventHandler.add(document, 'touchmove', this.resizePopup, this);
|
|
3286
|
+
EventHandler.add(document, 'touchend', this.stopResizing, this);
|
|
3287
|
+
}
|
|
3288
|
+
resizingUnWireEvent() {
|
|
3289
|
+
// Mouse events
|
|
3290
|
+
EventHandler.remove(document, 'mousemove', this.resizePopup);
|
|
3291
|
+
EventHandler.remove(document, 'mouseup', this.stopResizing);
|
|
3292
|
+
// Touch events
|
|
3293
|
+
EventHandler.remove(document, 'touchmove', this.resizePopup);
|
|
3294
|
+
EventHandler.remove(document, 'touchend', this.stopResizing);
|
|
3295
|
+
}
|
|
3256
3296
|
resetValueHandler(e) {
|
|
3257
3297
|
const formElement = closest(this.inputElement, 'form');
|
|
3258
3298
|
if (formElement && e.target === formElement) {
|
|
@@ -3347,6 +3387,68 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
3347
3387
|
this.incrementalSearch(e);
|
|
3348
3388
|
}
|
|
3349
3389
|
}
|
|
3390
|
+
startResizing(event) {
|
|
3391
|
+
this.isResizing = true;
|
|
3392
|
+
this.trigger('resizeStart', event);
|
|
3393
|
+
// Get initial touch or mouse coordinates
|
|
3394
|
+
const clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;
|
|
3395
|
+
const clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;
|
|
3396
|
+
// Store the initial dimensions of the popup
|
|
3397
|
+
if (this.list && this.list.parentElement) {
|
|
3398
|
+
this.originalWidth = this.list.parentElement.offsetWidth;
|
|
3399
|
+
this.originalHeight = this.list.parentElement.offsetHeight;
|
|
3400
|
+
this.originalMouseX = clientX;
|
|
3401
|
+
this.originalMouseY = clientY;
|
|
3402
|
+
}
|
|
3403
|
+
// Wire up events for resizing
|
|
3404
|
+
this.resizingWireEvent();
|
|
3405
|
+
if (event) {
|
|
3406
|
+
event.preventDefault(); // Prevent selection behavior if event exists
|
|
3407
|
+
}
|
|
3408
|
+
}
|
|
3409
|
+
resizePopup(event) {
|
|
3410
|
+
if (!this.isResizing) {
|
|
3411
|
+
return;
|
|
3412
|
+
}
|
|
3413
|
+
this.trigger('resizing', event);
|
|
3414
|
+
// Get the current touch or mouse position
|
|
3415
|
+
const clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;
|
|
3416
|
+
const clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;
|
|
3417
|
+
// Calculate the new width and height based on drag
|
|
3418
|
+
const dx = clientX - this.originalMouseX;
|
|
3419
|
+
const dy = clientY - this.originalMouseY;
|
|
3420
|
+
if (this.list && this.list.parentElement) {
|
|
3421
|
+
// Minimum width and height (100px)
|
|
3422
|
+
let minWidth = parseInt(window.getComputedStyle(this.list.parentElement).minWidth, 10);
|
|
3423
|
+
let minHeight = parseInt(window.getComputedStyle(this.list.parentElement).minHeight, 10);
|
|
3424
|
+
minWidth = minWidth || 100;
|
|
3425
|
+
minHeight = minHeight || 120;
|
|
3426
|
+
// Ensure the new width and height are not less than the minimum
|
|
3427
|
+
this.resizeWidth = Math.max(this.originalWidth + dx, minWidth);
|
|
3428
|
+
this.resizeHeight = Math.max(this.originalHeight + dy, minHeight);
|
|
3429
|
+
this.list.parentElement.style.width = `${this.resizeWidth}px`;
|
|
3430
|
+
this.list.parentElement.style.height = `${this.resizeHeight}px`;
|
|
3431
|
+
this.list.parentElement.style.maxHeight = `${this.resizeHeight}px`;
|
|
3432
|
+
this.list.style.maxHeight = `${this.resizeHeight}px`;
|
|
3433
|
+
if (this.fixedHeaderElement && this.ulElement) {
|
|
3434
|
+
this.fixedHeaderElement.style.width = `${this.ulElement.offsetWidth}px`;
|
|
3435
|
+
}
|
|
3436
|
+
}
|
|
3437
|
+
if (event) {
|
|
3438
|
+
event.preventDefault(); // Prevent selection behavior if event exists
|
|
3439
|
+
}
|
|
3440
|
+
}
|
|
3441
|
+
stopResizing(event) {
|
|
3442
|
+
if (this.isResizing) {
|
|
3443
|
+
this.isResizing = false;
|
|
3444
|
+
this.trigger('resizeStop', event);
|
|
3445
|
+
// Unwire the resize event listeners
|
|
3446
|
+
this.resizingUnWireEvent();
|
|
3447
|
+
}
|
|
3448
|
+
if (event) {
|
|
3449
|
+
event.preventDefault(); // Prevent selection behavior if event exists
|
|
3450
|
+
}
|
|
3451
|
+
}
|
|
3350
3452
|
onMouseClick(e) {
|
|
3351
3453
|
const target = e.target;
|
|
3352
3454
|
this.keyboardEvent = null;
|
|
@@ -3818,6 +3920,9 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
3818
3920
|
}
|
|
3819
3921
|
return;
|
|
3820
3922
|
}
|
|
3923
|
+
if (!this.enableVirtualization && this.liCollections[findLi] && this.liCollections[findLi].classList.contains('e-disabled')) {
|
|
3924
|
+
return;
|
|
3925
|
+
}
|
|
3821
3926
|
this.setSelection(this.liCollections[findLi], e);
|
|
3822
3927
|
}
|
|
3823
3928
|
}
|
|
@@ -3913,6 +4018,19 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
3913
4018
|
}
|
|
3914
4019
|
pageUpSelection(steps, event, isVirtualKeyAction) {
|
|
3915
4020
|
let previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];
|
|
4021
|
+
if (!this.enableVirtualization && previousItem && previousItem.classList.contains('e-disabled')) {
|
|
4022
|
+
let validIndex = steps >= 0 ? steps + 1 : 0;
|
|
4023
|
+
while (validIndex < this.liCollections.length) {
|
|
4024
|
+
previousItem = this.liCollections[validIndex];
|
|
4025
|
+
if (previousItem && !previousItem.classList.contains('e-disabled')) {
|
|
4026
|
+
break;
|
|
4027
|
+
}
|
|
4028
|
+
validIndex--;
|
|
4029
|
+
if (validIndex < 0) {
|
|
4030
|
+
return;
|
|
4031
|
+
}
|
|
4032
|
+
}
|
|
4033
|
+
}
|
|
3916
4034
|
if ((this.enableVirtualization && this.activeIndex == null)) {
|
|
3917
4035
|
previousItem = (this.liCollections.length >= steps && steps >= 0) ?
|
|
3918
4036
|
this.liCollections[steps + this.skeletonCount + 1] : this.liCollections[0];
|
|
@@ -3945,6 +4063,15 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
3945
4063
|
pageDownSelection(steps, event, isVirtualKeyAction) {
|
|
3946
4064
|
const list = this.getItems();
|
|
3947
4065
|
let previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];
|
|
4066
|
+
if (!this.enableVirtualization && previousItem && previousItem.classList.contains('e-disabled')) {
|
|
4067
|
+
while (steps >= 0 && steps < this.liCollections.length) {
|
|
4068
|
+
previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];
|
|
4069
|
+
if (previousItem && !previousItem.classList.contains('e-disabled')) {
|
|
4070
|
+
break;
|
|
4071
|
+
}
|
|
4072
|
+
steps++;
|
|
4073
|
+
}
|
|
4074
|
+
}
|
|
3948
4075
|
if (this.enableVirtualization && this.skeletonCount > 0) {
|
|
3949
4076
|
steps = this.getModuleName() === 'dropdownlist' && this.allowFiltering ? steps + 1 : steps;
|
|
3950
4077
|
previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];
|
|
@@ -4717,7 +4844,7 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
4717
4844
|
const virualElement = this.createElement('div', {
|
|
4718
4845
|
id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()
|
|
4719
4846
|
});
|
|
4720
|
-
|
|
4847
|
+
this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virualElement);
|
|
4721
4848
|
}
|
|
4722
4849
|
}
|
|
4723
4850
|
}
|
|
@@ -4756,7 +4883,7 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
4756
4883
|
const virualElement = this.createElement('div', {
|
|
4757
4884
|
id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()
|
|
4758
4885
|
});
|
|
4759
|
-
|
|
4886
|
+
this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virualElement);
|
|
4760
4887
|
}
|
|
4761
4888
|
}
|
|
4762
4889
|
}
|
|
@@ -5107,7 +5234,7 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
5107
5234
|
}
|
|
5108
5235
|
updateSelectionList() {
|
|
5109
5236
|
const selectedItem = this.list && this.list.querySelector('.' + 'e-active');
|
|
5110
|
-
if (!selectedItem && !isNullOrUndefined(this.value)) {
|
|
5237
|
+
if (!selectedItem && !isNullOrUndefined(this.value) && this.getModuleName() !== 'autocomplete') {
|
|
5111
5238
|
const value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;
|
|
5112
5239
|
const findEle = this.findListElement(this.list, 'li', 'data-value', value);
|
|
5113
5240
|
if (findEle) {
|
|
@@ -5139,10 +5266,12 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
5139
5266
|
formatUnit(Math.round(window.outerHeight).toString() + 'px') : formatUnit(this.popupHeight);
|
|
5140
5267
|
if (this.headerTemplate) {
|
|
5141
5268
|
this.setHeaderTemplate(popupEle);
|
|
5269
|
+
this.isUpdateHeaderHeight = this.header.offsetHeight !== 0;
|
|
5142
5270
|
}
|
|
5143
5271
|
append([this.list], popupEle);
|
|
5144
5272
|
if (this.footerTemplate) {
|
|
5145
5273
|
this.setFooterTemplate(popupEle);
|
|
5274
|
+
this.isUpdateFooterHeight = this.footer.offsetHeight !== 0;
|
|
5146
5275
|
}
|
|
5147
5276
|
document.body.appendChild(popupEle);
|
|
5148
5277
|
popupEle.style.top = '0px';
|
|
@@ -5306,12 +5435,57 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
5306
5435
|
if (!isNullOrUndefined(this.popupObj)) {
|
|
5307
5436
|
this.popupObj.show(new Animation(eventArgs.animation), (this.zIndex === 1000) ? this.element : null);
|
|
5308
5437
|
}
|
|
5438
|
+
if (this.isReact) {
|
|
5439
|
+
setTimeout(() => {
|
|
5440
|
+
if (this.popupHeight && this.list && this.popupHeight !== 'auto' && !(this.getModuleName() === 'dropdownlist' && this.allowFiltering)) {
|
|
5441
|
+
const popupHeightValue = typeof this.popupHeight === 'string' ? parseInt(this.popupHeight, 10) : this.popupHeight;
|
|
5442
|
+
if (!this.isUpdateHeaderHeight && this.headerTemplate && this.header) {
|
|
5443
|
+
const listHeight = this.list.style.maxHeight === '' ? popupHeightValue : parseInt(this.list.style.maxHeight, 10);
|
|
5444
|
+
this.list.style.maxHeight = (listHeight - this.header.offsetHeight).toString() + 'px';
|
|
5445
|
+
this.isUpdateHeaderHeight = true;
|
|
5446
|
+
}
|
|
5447
|
+
if (!this.isUpdateFooterHeight && this.footerTemplate && this.footer) {
|
|
5448
|
+
const listHeight = this.list.style.maxHeight === '' ? popupHeightValue : parseInt(this.list.style.maxHeight, 10);
|
|
5449
|
+
this.list.style.maxHeight = (listHeight - this.footer.offsetHeight).toString() + 'px';
|
|
5450
|
+
this.isUpdateFooterHeight = true;
|
|
5451
|
+
}
|
|
5452
|
+
}
|
|
5453
|
+
}, 15);
|
|
5454
|
+
}
|
|
5309
5455
|
}
|
|
5310
5456
|
else {
|
|
5311
5457
|
this.beforePopupOpen = false;
|
|
5312
5458
|
this.destroyPopup();
|
|
5313
5459
|
}
|
|
5314
5460
|
});
|
|
5461
|
+
if (this.allowResize) {
|
|
5462
|
+
const resizePaddingBottom = 16;
|
|
5463
|
+
// Create the resizer div
|
|
5464
|
+
this.resizer = this.createElement('div', {
|
|
5465
|
+
id: this.element.id + '_resize-popup',
|
|
5466
|
+
className: dropDownListClasses.resizeIcon // Adding class for styling
|
|
5467
|
+
});
|
|
5468
|
+
// Add the resizer div to the popup
|
|
5469
|
+
if (this.list && this.list.parentElement) {
|
|
5470
|
+
this.list.parentElement.classList.add('e-resize');
|
|
5471
|
+
if (this.popupHeight.toString().toLowerCase() !== 'auto') {
|
|
5472
|
+
this.list.parentElement.style.height = '100%';
|
|
5473
|
+
}
|
|
5474
|
+
this.list.parentElement.style.paddingBottom = (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.searchBoxHeight) ? (this.searchBoxHeight + resizePaddingBottom).toString() + 'px' : resizePaddingBottom.toString() + 'px';
|
|
5475
|
+
if (this.header || this.footer || this.itemTemplate) {
|
|
5476
|
+
this.list.parentElement.style.paddingBottom = ((parseInt(this.list.parentElement.style.maxHeight, 10) - parseInt(this.list.style.maxHeight, 10)) + resizePaddingBottom).toString() + 'px';
|
|
5477
|
+
}
|
|
5478
|
+
this.list.parentElement.appendChild(this.resizer);
|
|
5479
|
+
//hold the popup resize
|
|
5480
|
+
this.list.parentElement.style.width = `${this.resizeWidth}px`;
|
|
5481
|
+
this.list.parentElement.style.height = `${this.resizeHeight}px`;
|
|
5482
|
+
this.list.parentElement.style.maxHeight = `${this.resizeHeight}px`;
|
|
5483
|
+
this.list.style.maxHeight = `${this.resizeHeight}px`;
|
|
5484
|
+
}
|
|
5485
|
+
// Attach mouse and touch events to the resizer
|
|
5486
|
+
EventHandler.add(this.resizer, 'mousedown', this.startResizing, this);
|
|
5487
|
+
EventHandler.add(this.resizer, 'touchstart', this.startResizing, this);
|
|
5488
|
+
}
|
|
5315
5489
|
}
|
|
5316
5490
|
else {
|
|
5317
5491
|
this.beforePopupOpen = false;
|
|
@@ -5545,7 +5719,8 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
5545
5719
|
}
|
|
5546
5720
|
else {
|
|
5547
5721
|
this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ?
|
|
5548
|
-
this.virtualListInfo.startIndex * this.listItemHeight
|
|
5722
|
+
isInitial && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight +
|
|
5723
|
+
(this.listItemHeight * 2) : this.virtualListInfo.startIndex * this.listItemHeight : 0;
|
|
5549
5724
|
}
|
|
5550
5725
|
isScrollerCHanged = this.isKeyBoardAction;
|
|
5551
5726
|
}
|
|
@@ -5692,15 +5867,6 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
5692
5867
|
this.keyboardEvent = null;
|
|
5693
5868
|
EventHandler.remove(document, 'mousedown', this.onDocumentClick);
|
|
5694
5869
|
this.isActive = false;
|
|
5695
|
-
if (this.getModuleName() === 'dropdownlist') {
|
|
5696
|
-
Input.destroy({
|
|
5697
|
-
element: this.filterInput,
|
|
5698
|
-
floatLabelType: this.floatLabelType,
|
|
5699
|
-
properties: { placeholder: this.filterBarPlaceholder },
|
|
5700
|
-
buttons: this.clearIconElement
|
|
5701
|
-
}, this.clearIconElement);
|
|
5702
|
-
}
|
|
5703
|
-
this.filterInputObj = null;
|
|
5704
5870
|
this.isDropDownClick = false;
|
|
5705
5871
|
this.preventAutoFill = false;
|
|
5706
5872
|
const scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);
|
|
@@ -5772,6 +5938,15 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
5772
5938
|
const popupInstance = this.popupObj;
|
|
5773
5939
|
const eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };
|
|
5774
5940
|
this.trigger('close', eventArgs, (eventArgs) => {
|
|
5941
|
+
if (this.getModuleName() === 'dropdownlist') {
|
|
5942
|
+
Input.destroy({
|
|
5943
|
+
element: this.filterInput,
|
|
5944
|
+
floatLabelType: this.floatLabelType,
|
|
5945
|
+
properties: { placeholder: this.filterBarPlaceholder },
|
|
5946
|
+
buttons: this.clearIconElement
|
|
5947
|
+
}, this.clearIconElement);
|
|
5948
|
+
}
|
|
5949
|
+
this.filterInputObj = null;
|
|
5775
5950
|
if (!isNullOrUndefined(this.popupObj) &&
|
|
5776
5951
|
!isNullOrUndefined(this.popupObj.element.querySelector('.e-fixed-head'))) {
|
|
5777
5952
|
const fixedHeader = this.popupObj.element.querySelector('.e-fixed-head');
|
|
@@ -5842,6 +6017,12 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
5842
6017
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
5843
6018
|
this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();
|
|
5844
6019
|
}
|
|
6020
|
+
else if (!this.list.querySelector('.e-virtual-ddl')) {
|
|
6021
|
+
const virualElement = this.createElement('div', {
|
|
6022
|
+
id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()
|
|
6023
|
+
});
|
|
6024
|
+
this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virualElement);
|
|
6025
|
+
}
|
|
5845
6026
|
if (this.getModuleName() !== 'autocomplete' && this.totalItemCount !== 0 && this.totalItemCount > (this.itemCount * 2)) {
|
|
5846
6027
|
this.getSkeletonCount();
|
|
5847
6028
|
}
|
|
@@ -5860,6 +6041,10 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
5860
6041
|
this.isFilterFocus = false;
|
|
5861
6042
|
this.inputElement.removeAttribute('aria-controls');
|
|
5862
6043
|
if (this.popupObj) {
|
|
6044
|
+
if (this.resizer) {
|
|
6045
|
+
EventHandler.remove(this.resizer, 'mousedown', this.startResizing);
|
|
6046
|
+
EventHandler.remove(this.resizer, 'touchstart', this.startResizing);
|
|
6047
|
+
}
|
|
5863
6048
|
this.popupObj.destroy();
|
|
5864
6049
|
detach(this.popupObj.element);
|
|
5865
6050
|
}
|
|
@@ -6570,6 +6755,15 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
6570
6755
|
isOpen: true
|
|
6571
6756
|
});
|
|
6572
6757
|
}
|
|
6758
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
6759
|
+
const proxy = this;
|
|
6760
|
+
const duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;
|
|
6761
|
+
if (!this.isSecondClick && this.isReact && !this.isDropDownClick && this.isFiltering() && this.itemTemplate != null) {
|
|
6762
|
+
setTimeout(() => {
|
|
6763
|
+
proxy.cloneElements();
|
|
6764
|
+
proxy.isSecondClick = true;
|
|
6765
|
+
}, duration);
|
|
6766
|
+
}
|
|
6573
6767
|
}
|
|
6574
6768
|
invokeRenderPopup(e) {
|
|
6575
6769
|
if (Browser.isDevice && this.isFilterLayout()) {
|
|
@@ -6907,6 +7101,9 @@ __decorate$1([
|
|
|
6907
7101
|
__decorate$1([
|
|
6908
7102
|
Property(false)
|
|
6909
7103
|
], DropDownList.prototype, "enableVirtualization", void 0);
|
|
7104
|
+
__decorate$1([
|
|
7105
|
+
Property(false)
|
|
7106
|
+
], DropDownList.prototype, "allowResize", void 0);
|
|
6910
7107
|
__decorate$1([
|
|
6911
7108
|
Property(null)
|
|
6912
7109
|
], DropDownList.prototype, "text", void 0);
|
|
@@ -6946,6 +7143,15 @@ __decorate$1([
|
|
|
6946
7143
|
__decorate$1([
|
|
6947
7144
|
Event()
|
|
6948
7145
|
], DropDownList.prototype, "focus", void 0);
|
|
7146
|
+
__decorate$1([
|
|
7147
|
+
Event()
|
|
7148
|
+
], DropDownList.prototype, "resizeStop", void 0);
|
|
7149
|
+
__decorate$1([
|
|
7150
|
+
Event()
|
|
7151
|
+
], DropDownList.prototype, "resizing", void 0);
|
|
7152
|
+
__decorate$1([
|
|
7153
|
+
Event()
|
|
7154
|
+
], DropDownList.prototype, "resizeStart", void 0);
|
|
6949
7155
|
DropDownList = __decorate$1([
|
|
6950
7156
|
NotifyPropertyChanges
|
|
6951
7157
|
], DropDownList);
|
|
@@ -10715,7 +10921,7 @@ let ComboBox = class ComboBox extends DropDownList {
|
|
|
10715
10921
|
const inputValue = this.inputElement.value;
|
|
10716
10922
|
const dataSource = this.sortedData;
|
|
10717
10923
|
const type = this.typeOfData(dataSource).typeof;
|
|
10718
|
-
let activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);
|
|
10924
|
+
let activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type, this.ignoreAccent);
|
|
10719
10925
|
if (this.enableVirtualization && inputValue !== '' && this.getModuleName() !== 'autocomplete' && this.isTyped && !this.allowFiltering) {
|
|
10720
10926
|
let updatingincrementalindex = false;
|
|
10721
10927
|
const isEndIndexValid = this.viewPortInfo.endIndex >= this.incrementalEndIndex &&
|
|
@@ -11671,11 +11877,11 @@ let AutoComplete = class AutoComplete extends ComboBox {
|
|
|
11671
11877
|
});
|
|
11672
11878
|
this.list.appendChild(virtualElement).appendChild(this.list.querySelector('.e-list-parent'));
|
|
11673
11879
|
}
|
|
11674
|
-
if (!this.list.querySelector('.e-virtual-ddl') &&
|
|
11880
|
+
if (!this.list.querySelector('.e-virtual-ddl') && this.list.parentElement) {
|
|
11675
11881
|
const virtualElement = this.createElement('div', {
|
|
11676
11882
|
id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()
|
|
11677
11883
|
});
|
|
11678
|
-
|
|
11884
|
+
this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virtualElement);
|
|
11679
11885
|
}
|
|
11680
11886
|
}
|
|
11681
11887
|
if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount !== 0)) {
|
|
@@ -11710,6 +11916,9 @@ let AutoComplete = class AutoComplete extends ComboBox {
|
|
|
11710
11916
|
if (!isNullOrUndefined(item)) {
|
|
11711
11917
|
removeClass([item], dropDownListClasses.focus);
|
|
11712
11918
|
}
|
|
11919
|
+
if (!isNullOrUndefined(this.itemData) && !this.enableVirtualization) {
|
|
11920
|
+
this.focusIndexItem();
|
|
11921
|
+
}
|
|
11713
11922
|
this.postBackAction();
|
|
11714
11923
|
}
|
|
11715
11924
|
postBackAction() {
|
|
@@ -12202,6 +12411,7 @@ const BOX_ELEMENT = 'e-multiselect-box';
|
|
|
12202
12411
|
const FILTERPARENT = 'e-filter-parent';
|
|
12203
12412
|
const CUSTOM_WIDTH = 'e-search-custom-width';
|
|
12204
12413
|
const FILTERINPUT = 'e-input-filter';
|
|
12414
|
+
const RESIZE_ICON = 'e-resizer-right e-icons';
|
|
12205
12415
|
/**
|
|
12206
12416
|
* The Multiselect allows the user to pick a more than one value from list of predefined values.
|
|
12207
12417
|
* ```html
|
|
@@ -12232,6 +12442,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
12232
12442
|
super(option, element);
|
|
12233
12443
|
this.clearIconWidth = 0;
|
|
12234
12444
|
this.previousFilterText = '';
|
|
12445
|
+
this.storedSelectAllHeight = 0;
|
|
12446
|
+
this.isUpdateHeaderHeight = false;
|
|
12447
|
+
this.isUpdateFooterHeight = false;
|
|
12235
12448
|
this.isValidKey = false;
|
|
12236
12449
|
this.selectAllEventData = [];
|
|
12237
12450
|
this.selectAllEventEle = [];
|
|
@@ -12379,7 +12592,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
12379
12592
|
const eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };
|
|
12380
12593
|
this.trigger('open', eventArgs, (eventArgs) => {
|
|
12381
12594
|
if (!eventArgs.cancel) {
|
|
12382
|
-
this.focusAtFirstListItem();
|
|
12595
|
+
this.focusAtFirstListItem(true);
|
|
12383
12596
|
if (this.popupObj) {
|
|
12384
12597
|
document.body.appendChild(this.popupObj.element);
|
|
12385
12598
|
}
|
|
@@ -12394,6 +12607,23 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
12394
12607
|
if (this.popupObj) {
|
|
12395
12608
|
this.popupObj.show(eventArgs.animation, (this.zIndex === 1000) ? this.element : null);
|
|
12396
12609
|
}
|
|
12610
|
+
if (this.isReact) {
|
|
12611
|
+
setTimeout(() => {
|
|
12612
|
+
if (this.popupHeight && this.list && this.popupHeight !== 'auto') {
|
|
12613
|
+
const popupHeightValue = typeof this.popupHeight === 'string' ? parseInt(this.popupHeight, 10) : this.popupHeight;
|
|
12614
|
+
if (!this.isUpdateHeaderHeight && this.headerTemplate && this.header) {
|
|
12615
|
+
const listHeight = this.list.style.maxHeight === '' ? popupHeightValue : parseInt(this.list.style.maxHeight, 10);
|
|
12616
|
+
this.list.style.maxHeight = (listHeight - this.header.offsetHeight).toString() + 'px';
|
|
12617
|
+
this.isUpdateHeaderHeight = true;
|
|
12618
|
+
}
|
|
12619
|
+
if (!this.isUpdateFooterHeight && this.footerTemplate && this.footer) {
|
|
12620
|
+
const listHeight = this.list.style.maxHeight === '' ? popupHeightValue : parseInt(this.list.style.maxHeight, 10);
|
|
12621
|
+
this.list.style.maxHeight = (listHeight - this.footer.offsetHeight).toString() + 'px';
|
|
12622
|
+
this.isUpdateFooterHeight = true;
|
|
12623
|
+
}
|
|
12624
|
+
}
|
|
12625
|
+
}, 15);
|
|
12626
|
+
}
|
|
12397
12627
|
attributes(this.inputElement, {
|
|
12398
12628
|
'aria-expanded': 'true', 'aria-owns': this.element.id + '_popup', 'aria-controls': this.element.id
|
|
12399
12629
|
});
|
|
@@ -12470,16 +12700,16 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
12470
12700
|
: this.value[this.value.length - 1];
|
|
12471
12701
|
const valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', value);
|
|
12472
12702
|
if (!isNullOrUndefined(valueEle)) {
|
|
12473
|
-
this.scrollBottom(valueEle);
|
|
12703
|
+
this.scrollBottom(valueEle, undefined, false, null, true);
|
|
12474
12704
|
}
|
|
12475
12705
|
}
|
|
12476
12706
|
if (this.enableVirtualization) {
|
|
12477
12707
|
const focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);
|
|
12478
12708
|
this.isKeyBoardAction = false;
|
|
12479
|
-
this.scrollBottom(focusedItem);
|
|
12709
|
+
this.scrollBottom(focusedItem, undefined, false, null, true);
|
|
12480
12710
|
}
|
|
12481
12711
|
}
|
|
12482
|
-
focusAtFirstListItem() {
|
|
12712
|
+
focusAtFirstListItem(isOpen) {
|
|
12483
12713
|
if (this.ulElement && this.ulElement.querySelector('li.'
|
|
12484
12714
|
+ dropDownBaseClasses.li)) {
|
|
12485
12715
|
let element;
|
|
@@ -12492,10 +12722,18 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
12492
12722
|
if (this.fields.disabled) {
|
|
12493
12723
|
element = this.ulElement.querySelector('li.'
|
|
12494
12724
|
+ dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)' + ':not(.' + DISABLED$1 + ')');
|
|
12725
|
+
if (isOpen && this.viewPortInfo && this.viewPortInfo.startIndex !== 0) {
|
|
12726
|
+
const elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');
|
|
12727
|
+
element = elements && elements.length > 0 ? elements[2] : element;
|
|
12728
|
+
}
|
|
12495
12729
|
}
|
|
12496
12730
|
else {
|
|
12497
12731
|
element = this.ulElement.querySelector('li.'
|
|
12498
12732
|
+ dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');
|
|
12733
|
+
if (isOpen && this.viewPortInfo && this.viewPortInfo.startIndex !== 0) {
|
|
12734
|
+
const elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');
|
|
12735
|
+
element = elements && elements.length > 0 ? elements[2] : element;
|
|
12736
|
+
}
|
|
12499
12737
|
}
|
|
12500
12738
|
}
|
|
12501
12739
|
else {
|
|
@@ -12792,7 +13030,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
12792
13030
|
if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {
|
|
12793
13031
|
removeClass([element], dropDownBaseClasses.focus);
|
|
12794
13032
|
const listEle = element.parentElement.querySelectorAll('.' +
|
|
12795
|
-
dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');
|
|
13033
|
+
dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.' + DISABLED$1 + ')');
|
|
12796
13034
|
if (listEle.length > 0) {
|
|
12797
13035
|
addClass([listEle[0]], dropDownBaseClasses.focus);
|
|
12798
13036
|
this.updateAriaActiveDescendant();
|
|
@@ -12961,7 +13199,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
12961
13199
|
if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {
|
|
12962
13200
|
filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);
|
|
12963
13201
|
}
|
|
12964
|
-
else if ((this.enableVirtualization && this.targetElement() !== '') || !this.enableVirtualization) {
|
|
13202
|
+
else if ((this.enableVirtualization && this.targetElement() !== '' && !this.isClearAllAction) || !this.enableVirtualization) {
|
|
12965
13203
|
const fields = this.fields;
|
|
12966
13204
|
filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);
|
|
12967
13205
|
}
|
|
@@ -12969,6 +13207,11 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
12969
13207
|
if (this.enableVirtualization && (this.viewPortInfo.endIndex !== 0) && !this.virtualSelectAll) {
|
|
12970
13208
|
return this.virtualFilterQuery(filterQuery);
|
|
12971
13209
|
}
|
|
13210
|
+
if (this.virtualSelectAll) {
|
|
13211
|
+
return query ? query.take(this.maximumSelectionLength).requiresCount() : this.query ?
|
|
13212
|
+
this.query.take(this.maximumSelectionLength).requiresCount() :
|
|
13213
|
+
new Query().take(this.maximumSelectionLength).requiresCount();
|
|
13214
|
+
}
|
|
12972
13215
|
return filterQuery;
|
|
12973
13216
|
}
|
|
12974
13217
|
else {
|
|
@@ -13154,6 +13397,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
13154
13397
|
this.getFilteringSkeletonCount();
|
|
13155
13398
|
}
|
|
13156
13399
|
this.refreshPopup();
|
|
13400
|
+
if (this.allowResize) {
|
|
13401
|
+
this.setResize();
|
|
13402
|
+
}
|
|
13157
13403
|
if (this.mode === 'CheckBox') {
|
|
13158
13404
|
this.removeFocus();
|
|
13159
13405
|
}
|
|
@@ -13487,6 +13733,15 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
13487
13733
|
':not(.' + HIDE_LIST + ')' +
|
|
13488
13734
|
':not(.e-reorder-hide)');
|
|
13489
13735
|
let previousItem = steps >= 0 ? collection[steps + 1] : collection[0];
|
|
13736
|
+
if (this.fields.disabled && previousItem && !this.enableVirtualization) {
|
|
13737
|
+
while (previousItem && (previousItem.classList.contains('e-disabled') || previousItem.classList.contains(HIDE_LIST) ||
|
|
13738
|
+
previousItem.classList.contains('.e-reorder-hide') || previousItem.classList.contains('e-list-group-item'))) {
|
|
13739
|
+
previousItem = previousItem.previousElementSibling;
|
|
13740
|
+
}
|
|
13741
|
+
if (!previousItem) {
|
|
13742
|
+
return;
|
|
13743
|
+
}
|
|
13744
|
+
}
|
|
13490
13745
|
if (this.enableVirtualization && isVirtualKeyAction) {
|
|
13491
13746
|
previousItem = (this.liCollections.length >= steps && steps >= 0)
|
|
13492
13747
|
? this.liCollections[steps]
|
|
@@ -13518,6 +13773,15 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
13518
13773
|
const collection = this.list.querySelectorAll('li.'
|
|
13519
13774
|
+ dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');
|
|
13520
13775
|
let previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];
|
|
13776
|
+
if (this.fields.disabled && previousItem && !this.enableVirtualization) {
|
|
13777
|
+
while (previousItem && (previousItem.classList.contains('e-disabled') || previousItem.classList.contains(HIDE_LIST) ||
|
|
13778
|
+
previousItem.classList.contains('.e-reorder-hide') || previousItem.classList.contains('e-list-group-item'))) {
|
|
13779
|
+
previousItem = previousItem.nextElementSibling;
|
|
13780
|
+
}
|
|
13781
|
+
if (!previousItem) {
|
|
13782
|
+
return;
|
|
13783
|
+
}
|
|
13784
|
+
}
|
|
13521
13785
|
if (this.enableVirtualization && this.skeletonCount > 0) {
|
|
13522
13786
|
previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];
|
|
13523
13787
|
}
|
|
@@ -13568,6 +13832,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
13568
13832
|
if (this.isPopupOpen()) {
|
|
13569
13833
|
this.refreshPopup();
|
|
13570
13834
|
}
|
|
13835
|
+
if (this.allowResize) {
|
|
13836
|
+
this.setResize();
|
|
13837
|
+
}
|
|
13571
13838
|
setTimeout(() => {
|
|
13572
13839
|
this.calculateWidth();
|
|
13573
13840
|
}, 150);
|
|
@@ -13804,6 +14071,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
13804
14071
|
if (this.mode === 'CheckBox') {
|
|
13805
14072
|
this.inputElement.focus();
|
|
13806
14073
|
}
|
|
14074
|
+
this.isKeyBoardAction = false;
|
|
13807
14075
|
return;
|
|
13808
14076
|
case 13:
|
|
13809
14077
|
e.preventDefault();
|
|
@@ -13812,10 +14080,12 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
13812
14080
|
this.selectByKey(e);
|
|
13813
14081
|
}
|
|
13814
14082
|
this.checkPlaceholderSize();
|
|
14083
|
+
this.isKeyBoardAction = false;
|
|
13815
14084
|
return;
|
|
13816
14085
|
case 32:
|
|
13817
14086
|
this.isKeyBoardAction = true;
|
|
13818
14087
|
this.spaceKeySelection(e);
|
|
14088
|
+
this.isKeyBoardAction = false;
|
|
13819
14089
|
return;
|
|
13820
14090
|
case 9:
|
|
13821
14091
|
e.preventDefault();
|
|
@@ -13857,6 +14127,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
13857
14127
|
if (!(this.mode === 'CheckBox' && this.showSelectAll)) {
|
|
13858
14128
|
this.refreshPopup();
|
|
13859
14129
|
}
|
|
14130
|
+
if (this.allowResize) {
|
|
14131
|
+
this.setResize();
|
|
14132
|
+
}
|
|
13860
14133
|
this.isKeyBoardAction = false;
|
|
13861
14134
|
}
|
|
13862
14135
|
arrowDown(e, isVirtualKeyAction) {
|
|
@@ -13981,7 +14254,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
13981
14254
|
}
|
|
13982
14255
|
this.makeTextBoxEmpty();
|
|
13983
14256
|
}
|
|
13984
|
-
scrollBottom(selectedLI, activeIndex, isInitialSelection = false, keyCode = null) {
|
|
14257
|
+
scrollBottom(selectedLI, activeIndex, isInitialSelection = false, keyCode = null, isInitial = false) {
|
|
13985
14258
|
if ((!isNullOrUndefined(selectedLI) && selectedLI.classList.contains('e-virtual-list')) ||
|
|
13986
14259
|
(this.enableVirtualization && isNullOrUndefined(selectedLI))) {
|
|
13987
14260
|
selectedLI = this.liCollections[this.skeletonCount];
|
|
@@ -14035,8 +14308,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
14035
14308
|
}
|
|
14036
14309
|
}
|
|
14037
14310
|
else {
|
|
14038
|
-
this.list.scrollTop = this.virtualListInfo &&
|
|
14039
|
-
this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight
|
|
14311
|
+
this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ?
|
|
14312
|
+
isInitial && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight +
|
|
14313
|
+
(this.listItemHeight * 2) : this.virtualListInfo.startIndex * this.listItemHeight : 0;
|
|
14040
14314
|
}
|
|
14041
14315
|
isScrollerCHanged = this.isKeyBoardAction;
|
|
14042
14316
|
}
|
|
@@ -14237,6 +14511,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
14237
14511
|
this.getDataByValue(this.getFormattedValue(selectedElem.getAttribute('data-value'))) :
|
|
14238
14512
|
selectedElem.getAttribute('data-value');
|
|
14239
14513
|
this.removeValue(currentChip, e);
|
|
14514
|
+
this.updateDelimeter(this.delimiterChar, e);
|
|
14240
14515
|
this.makeTextBoxEmpty();
|
|
14241
14516
|
}
|
|
14242
14517
|
if (this.closePopupOnSelect) {
|
|
@@ -14359,7 +14634,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
14359
14634
|
return;
|
|
14360
14635
|
}
|
|
14361
14636
|
const index = this.getIndexByValue(focusedLi.getAttribute('data-value'));
|
|
14362
|
-
if (index === 0
|
|
14637
|
+
if (index === 0) {
|
|
14363
14638
|
position = 1;
|
|
14364
14639
|
}
|
|
14365
14640
|
if (index === (this.list.querySelectorAll('.e-list-item:not(.e-hide-listitem)').length - 1)) {
|
|
@@ -15005,6 +15280,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
15005
15280
|
if (this.headerTemplate) {
|
|
15006
15281
|
this.setHeaderTemplate();
|
|
15007
15282
|
overAllHeight -= this.header.offsetHeight;
|
|
15283
|
+
this.isUpdateHeaderHeight = this.header.offsetHeight !== 0;
|
|
15008
15284
|
}
|
|
15009
15285
|
append([this.list], this.popupWrapper);
|
|
15010
15286
|
if (!this.list.classList.contains(dropDownBaseClasses.noData) && this.getItems()[1]) {
|
|
@@ -15042,6 +15318,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
15042
15318
|
if (this.footerTemplate) {
|
|
15043
15319
|
this.setFooterTemplate();
|
|
15044
15320
|
overAllHeight -= this.footer.offsetHeight;
|
|
15321
|
+
this.isUpdateFooterHeight = this.footer.offsetHeight !== 0;
|
|
15045
15322
|
}
|
|
15046
15323
|
if (this.mode === 'CheckBox' && this.showSelectAll) {
|
|
15047
15324
|
this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });
|
|
@@ -15159,6 +15436,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
15159
15436
|
if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering && this.isDeviceFullScreen) {
|
|
15160
15437
|
this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });
|
|
15161
15438
|
}
|
|
15439
|
+
if (this.allowResize) {
|
|
15440
|
+
this.setResize();
|
|
15441
|
+
}
|
|
15162
15442
|
this.popupObj.close();
|
|
15163
15443
|
this.popupWrapper.style.visibility = '';
|
|
15164
15444
|
}
|
|
@@ -15282,6 +15562,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
15282
15562
|
if (this.enabled && !this.readonly) {
|
|
15283
15563
|
let temp;
|
|
15284
15564
|
this.setDynValue = false;
|
|
15565
|
+
this.isClearAllAction = true;
|
|
15285
15566
|
if (this.value && this.value.length > 0) {
|
|
15286
15567
|
if (this.allowFiltering) {
|
|
15287
15568
|
this.refreshListItems(null);
|
|
@@ -15328,6 +15609,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
15328
15609
|
this.previousStartIndex = 0;
|
|
15329
15610
|
this.previousEndIndex = 0;
|
|
15330
15611
|
}
|
|
15612
|
+
this.isClearAllAction = false;
|
|
15331
15613
|
}
|
|
15332
15614
|
this.isClearAllItem = true;
|
|
15333
15615
|
EventHandler.add(document, 'mouseup', this.preventSelection, this);
|
|
@@ -15358,6 +15640,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
15358
15640
|
if (this.isPopupOpen()) {
|
|
15359
15641
|
this.refreshPopup();
|
|
15360
15642
|
}
|
|
15643
|
+
if (this.allowResize) {
|
|
15644
|
+
this.setResize();
|
|
15645
|
+
}
|
|
15361
15646
|
if (!this.inputFocus) {
|
|
15362
15647
|
if (this.changeOnBlur) {
|
|
15363
15648
|
this.updateValueState(e, this.value, tempValues);
|
|
@@ -16160,6 +16445,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
16160
16445
|
}
|
|
16161
16446
|
this.checkSelectAll();
|
|
16162
16447
|
this.refreshPopup();
|
|
16448
|
+
if (this.allowResize) {
|
|
16449
|
+
this.setResize();
|
|
16450
|
+
}
|
|
16163
16451
|
if (this.hideSelectedItem) {
|
|
16164
16452
|
this.focusAtFirstListItem();
|
|
16165
16453
|
}
|
|
@@ -16674,6 +16962,22 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
16674
16962
|
EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);
|
|
16675
16963
|
}
|
|
16676
16964
|
}
|
|
16965
|
+
resizingWireEvent() {
|
|
16966
|
+
// Mouse events
|
|
16967
|
+
EventHandler.add(document, 'mousemove', this.resizePopup, this);
|
|
16968
|
+
EventHandler.add(document, 'mouseup', this.stopResizing, this);
|
|
16969
|
+
// Touch events
|
|
16970
|
+
EventHandler.add(document, 'touchmove', this.resizePopup, this);
|
|
16971
|
+
EventHandler.add(document, 'touchend', this.stopResizing, this);
|
|
16972
|
+
}
|
|
16973
|
+
resizingUnWireEvent() {
|
|
16974
|
+
// Mouse events
|
|
16975
|
+
EventHandler.remove(document, 'mousemove', this.resizePopup);
|
|
16976
|
+
EventHandler.remove(document, 'mouseup', this.stopResizing);
|
|
16977
|
+
// Touch events
|
|
16978
|
+
EventHandler.remove(document, 'touchmove', this.resizePopup);
|
|
16979
|
+
EventHandler.remove(document, 'touchend', this.stopResizing);
|
|
16980
|
+
}
|
|
16677
16981
|
selectAllItem(state, event, list) {
|
|
16678
16982
|
let li;
|
|
16679
16983
|
if (!isNullOrUndefined(this.list)) {
|
|
@@ -17195,6 +17499,20 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
17195
17499
|
this.enableRTL(newProp.enableRtl);
|
|
17196
17500
|
super.onPropertyChanged(newProp, oldProp);
|
|
17197
17501
|
break;
|
|
17502
|
+
case 'allowResize':
|
|
17503
|
+
this.allowResize = newProp.allowResize;
|
|
17504
|
+
if (!this.allowResize && this.popupObj) {
|
|
17505
|
+
const overAllHeight = parseInt(this.popupHeight, 10);
|
|
17506
|
+
if (this.popupHeight !== 'auto') {
|
|
17507
|
+
this.list.style.maxHeight = formatUnit(overAllHeight);
|
|
17508
|
+
this.popupWrapper.style.height = formatUnit(this.popupHeight);
|
|
17509
|
+
this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);
|
|
17510
|
+
}
|
|
17511
|
+
else {
|
|
17512
|
+
this.list.style.maxHeight = formatUnit(this.popupHeight);
|
|
17513
|
+
}
|
|
17514
|
+
}
|
|
17515
|
+
break;
|
|
17198
17516
|
case 'readonly':
|
|
17199
17517
|
this.updateReadonly(newProp.readonly);
|
|
17200
17518
|
this.hidePopup();
|
|
@@ -17437,6 +17755,24 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
17437
17755
|
if (this.mode === 'CheckBox' && this.showSelectAll) {
|
|
17438
17756
|
EventHandler.remove(this.popupObj.element, 'click', this.clickHandler);
|
|
17439
17757
|
}
|
|
17758
|
+
if (this.list && this.list.parentElement && this.allowResize) {
|
|
17759
|
+
if (this.resizer && this.list.parentElement.contains(this.resizer)) {
|
|
17760
|
+
this.list.parentElement.removeChild(this.resizer);
|
|
17761
|
+
}
|
|
17762
|
+
if (this.list.parentElement.classList.contains('e-resize')) {
|
|
17763
|
+
this.list.parentElement.classList.remove('e-resize');
|
|
17764
|
+
}
|
|
17765
|
+
this.list.parentElement.style.boxSizing = '';
|
|
17766
|
+
this.list.parentElement.style.paddingBottom = '';
|
|
17767
|
+
const overAllHeight = parseInt(this.popupHeight, 10);
|
|
17768
|
+
this.list.style.maxHeight = formatUnit(overAllHeight);
|
|
17769
|
+
this.list.parentElement.style.height = formatUnit(this.popupHeight);
|
|
17770
|
+
this.list.parentElement.style.maxHeight = formatUnit(this.popupHeight);
|
|
17771
|
+
}
|
|
17772
|
+
if (this.resizer) {
|
|
17773
|
+
EventHandler.remove(this.resizer, 'mousedown', this.startResizing);
|
|
17774
|
+
this.resizer.remove();
|
|
17775
|
+
}
|
|
17440
17776
|
if (this.enableVirtualization && this.mode === 'CheckBox' && this.value && this.value.length > 0 &&
|
|
17441
17777
|
this.enableSelectionOrder) {
|
|
17442
17778
|
this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;
|
|
@@ -17552,6 +17888,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
17552
17888
|
}
|
|
17553
17889
|
}
|
|
17554
17890
|
}
|
|
17891
|
+
if (this.allowResize) {
|
|
17892
|
+
this.setResize();
|
|
17893
|
+
}
|
|
17555
17894
|
this.preventSetCurrentData = true;
|
|
17556
17895
|
}
|
|
17557
17896
|
});
|
|
@@ -17736,6 +18075,102 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
17736
18075
|
}
|
|
17737
18076
|
this.renderComplete();
|
|
17738
18077
|
}
|
|
18078
|
+
setResize() {
|
|
18079
|
+
const resizePaddingBottom = 16;
|
|
18080
|
+
if (this.list && this.list.parentElement && isNullOrUndefined(this.list.parentElement.querySelector('.e-resizer-right.e-icons'))) {
|
|
18081
|
+
this.resizer = this.createElement('div', {
|
|
18082
|
+
id: this.element.id + '_resize-popup',
|
|
18083
|
+
className: RESIZE_ICON
|
|
18084
|
+
});
|
|
18085
|
+
}
|
|
18086
|
+
if (this.mode === 'CheckBox' && this.showSelectAll && this.selectAllHeight && this.selectAllHeight !== 0) {
|
|
18087
|
+
this.storedSelectAllHeight = this.selectAllHeight;
|
|
18088
|
+
}
|
|
18089
|
+
if (this.list && this.list.parentElement) {
|
|
18090
|
+
this.list.parentElement.classList.add('e-resize');
|
|
18091
|
+
if (this.popupHeight.toString().toLowerCase() !== 'auto') {
|
|
18092
|
+
this.list.parentElement.style.height = '100%';
|
|
18093
|
+
}
|
|
18094
|
+
this.list.parentElement.style.boxSizing = 'border-box'; // Ensures padding doesn't affect element size
|
|
18095
|
+
const paddingBottom = this.mode === 'CheckBox' && this.searchBoxHeight ? this.searchBoxHeight + resizePaddingBottom + (this.showSelectAll ? this.storedSelectAllHeight : 0) : resizePaddingBottom;
|
|
18096
|
+
this.list.parentElement.style.paddingBottom = `${paddingBottom}px`;
|
|
18097
|
+
this.list.parentElement.appendChild(this.resizer);
|
|
18098
|
+
this.list.parentElement.style.width = this.resizeWidth + 'px';
|
|
18099
|
+
this.list.parentElement.style.height = this.resizeHeight + 'px';
|
|
18100
|
+
this.list.parentElement.style.maxHeight = this.resizeHeight + 'px';
|
|
18101
|
+
this.list.style.maxHeight = `${this.resizeHeight}px`;
|
|
18102
|
+
}
|
|
18103
|
+
if (this.resizer) {
|
|
18104
|
+
EventHandler.add(this.resizer, 'mousedown', this.startResizing, this);
|
|
18105
|
+
EventHandler.add(this.resizer, 'touchstart', this.startResizing, this);
|
|
18106
|
+
}
|
|
18107
|
+
}
|
|
18108
|
+
startResizing(event) {
|
|
18109
|
+
this.isResizing = true;
|
|
18110
|
+
this.trigger('resizeStart', event);
|
|
18111
|
+
// Get initial touch or mouse coordinates
|
|
18112
|
+
const clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;
|
|
18113
|
+
const clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;
|
|
18114
|
+
if (this.list && this.list.parentElement) {
|
|
18115
|
+
this.originalWidth = this.list.parentElement.offsetWidth;
|
|
18116
|
+
this.originalHeight = this.list.parentElement.offsetHeight;
|
|
18117
|
+
this.originalMouseX = clientX;
|
|
18118
|
+
this.originalMouseY = clientY;
|
|
18119
|
+
}
|
|
18120
|
+
this.resizingWireEvent();
|
|
18121
|
+
// Prevent default behavior like text selection
|
|
18122
|
+
if (event) {
|
|
18123
|
+
event.preventDefault();
|
|
18124
|
+
}
|
|
18125
|
+
}
|
|
18126
|
+
resizePopup(event) {
|
|
18127
|
+
if (!this.isResizing) {
|
|
18128
|
+
return;
|
|
18129
|
+
}
|
|
18130
|
+
this.trigger('resizing', event);
|
|
18131
|
+
// Get the current touch or mouse position
|
|
18132
|
+
const clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;
|
|
18133
|
+
const clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;
|
|
18134
|
+
// Calculate the new width and height based on drag
|
|
18135
|
+
const dx = clientX - this.originalMouseX;
|
|
18136
|
+
const dy = clientY - this.originalMouseY;
|
|
18137
|
+
// Set minimum width and height (100px)
|
|
18138
|
+
const minWidth = 100;
|
|
18139
|
+
const minHeight = 130;
|
|
18140
|
+
// Ensure the new width and height are not smaller than the minimum
|
|
18141
|
+
this.resizeWidth = Math.max(this.originalWidth + dx, minWidth);
|
|
18142
|
+
this.resizeHeight = Math.max(this.originalHeight + dy, minHeight);
|
|
18143
|
+
if (this.list && this.list.parentElement) {
|
|
18144
|
+
// Set minimum width and height (100px)
|
|
18145
|
+
let minWidth = parseInt(window.getComputedStyle(this.list.parentElement).minWidth, 10);
|
|
18146
|
+
let minHeight = parseInt(window.getComputedStyle(this.list.parentElement).minHeight, 10);
|
|
18147
|
+
minWidth = minWidth || 100;
|
|
18148
|
+
minHeight = minHeight || 120;
|
|
18149
|
+
// Ensure the new width and height are not smaller than the minimum
|
|
18150
|
+
this.resizeWidth = Math.max(this.originalWidth + dx, minWidth);
|
|
18151
|
+
this.resizeHeight = Math.max(this.originalHeight + dy, minHeight);
|
|
18152
|
+
this.list.parentElement.style.width = `${this.resizeWidth}px`;
|
|
18153
|
+
this.list.parentElement.style.height = `${this.resizeHeight}px`;
|
|
18154
|
+
this.list.parentElement.style.maxHeight = `${this.resizeHeight}px`;
|
|
18155
|
+
this.list.style.maxHeight = `${this.resizeHeight}px`;
|
|
18156
|
+
if (this.fixedHeaderElement && this.ulElement) {
|
|
18157
|
+
this.fixedHeaderElement.style.width = `${this.ulElement.offsetWidth}px`;
|
|
18158
|
+
}
|
|
18159
|
+
}
|
|
18160
|
+
if (event) {
|
|
18161
|
+
event.preventDefault();
|
|
18162
|
+
}
|
|
18163
|
+
}
|
|
18164
|
+
stopResizing(event) {
|
|
18165
|
+
if (this.isResizing) {
|
|
18166
|
+
this.isResizing = false;
|
|
18167
|
+
this.trigger('resizeStop', event);
|
|
18168
|
+
this.resizingUnWireEvent();
|
|
18169
|
+
}
|
|
18170
|
+
if (event) {
|
|
18171
|
+
event.preventDefault();
|
|
18172
|
+
}
|
|
18173
|
+
}
|
|
17739
18174
|
getListHeight() {
|
|
17740
18175
|
const listParent = this.createElement('div', {
|
|
17741
18176
|
className: 'e-dropdownbase'
|
|
@@ -18121,6 +18556,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
18121
18556
|
this.inputElement = null;
|
|
18122
18557
|
this.delimiterWrapper = null;
|
|
18123
18558
|
this.liCollections = null;
|
|
18559
|
+
this.popupContentElement = null;
|
|
18124
18560
|
this.header = null;
|
|
18125
18561
|
this.mainList = null;
|
|
18126
18562
|
this.mainListCollection = null;
|
|
@@ -18231,6 +18667,9 @@ __decorate$5([
|
|
|
18231
18667
|
__decorate$5([
|
|
18232
18668
|
Property(false)
|
|
18233
18669
|
], MultiSelect.prototype, "readonly", void 0);
|
|
18670
|
+
__decorate$5([
|
|
18671
|
+
Property(false)
|
|
18672
|
+
], MultiSelect.prototype, "allowResize", void 0);
|
|
18234
18673
|
__decorate$5([
|
|
18235
18674
|
Property(null)
|
|
18236
18675
|
], MultiSelect.prototype, "text", void 0);
|
|
@@ -18312,6 +18751,15 @@ __decorate$5([
|
|
|
18312
18751
|
__decorate$5([
|
|
18313
18752
|
Event()
|
|
18314
18753
|
], MultiSelect.prototype, "chipSelection", void 0);
|
|
18754
|
+
__decorate$5([
|
|
18755
|
+
Event()
|
|
18756
|
+
], MultiSelect.prototype, "resizeStop", void 0);
|
|
18757
|
+
__decorate$5([
|
|
18758
|
+
Event()
|
|
18759
|
+
], MultiSelect.prototype, "resizing", void 0);
|
|
18760
|
+
__decorate$5([
|
|
18761
|
+
Event()
|
|
18762
|
+
], MultiSelect.prototype, "resizeStart", void 0);
|
|
18315
18763
|
__decorate$5([
|
|
18316
18764
|
Event()
|
|
18317
18765
|
], MultiSelect.prototype, "filtering", void 0);
|
|
@@ -19029,7 +19477,7 @@ let ListBox = ListBox_1 = class ListBox extends DropDownBase {
|
|
|
19029
19477
|
new Sortable(this.ulElement, {
|
|
19030
19478
|
scope: this.scope,
|
|
19031
19479
|
itemClass: 'e-list-item',
|
|
19032
|
-
|
|
19480
|
+
beforeDragStart: this.triggerDragStart.bind(this),
|
|
19033
19481
|
drag: this.triggerDrag.bind(this),
|
|
19034
19482
|
beforeDrop: this.beforeDragEnd.bind(this),
|
|
19035
19483
|
drop: this.dragEnd.bind(this),
|
|
@@ -19277,11 +19725,11 @@ let ListBox = ListBox_1 = class ListBox extends DropDownBase {
|
|
|
19277
19725
|
}
|
|
19278
19726
|
triggerDragStart(args) {
|
|
19279
19727
|
let badge;
|
|
19280
|
-
|
|
19728
|
+
const extendedArgs = extend(this.getDragArgs(args), { dragSelected: true }, { cancel: false });
|
|
19281
19729
|
if (Browser.isIos) {
|
|
19282
19730
|
this.list.style.overflow = 'hidden';
|
|
19283
19731
|
}
|
|
19284
|
-
this.trigger('dragStart',
|
|
19732
|
+
this.trigger('dragStart', extendedArgs, (dragEventArgs) => {
|
|
19285
19733
|
this.allowDragAll = dragEventArgs.dragSelected;
|
|
19286
19734
|
if (!this.allowDragAll) {
|
|
19287
19735
|
badge = this.ulElement.getElementsByClassName('e-list-badge')[0];
|
|
@@ -19289,6 +19737,9 @@ let ListBox = ListBox_1 = class ListBox extends DropDownBase {
|
|
|
19289
19737
|
detach(badge);
|
|
19290
19738
|
}
|
|
19291
19739
|
}
|
|
19740
|
+
if (dragEventArgs.cancel) {
|
|
19741
|
+
args.cancel = true;
|
|
19742
|
+
}
|
|
19292
19743
|
});
|
|
19293
19744
|
}
|
|
19294
19745
|
triggerDrag(args) {
|
|
@@ -19517,7 +19968,9 @@ let ListBox = ListBox_1 = class ListBox extends DropDownBase {
|
|
|
19517
19968
|
listObj.liCollections = liColl;
|
|
19518
19969
|
listObj.jsonData = extend([], [], jsonData, false);
|
|
19519
19970
|
listObj.listData = extend([], [], listData, false);
|
|
19520
|
-
listObj.
|
|
19971
|
+
if (listObj.sortOrder === 'None') {
|
|
19972
|
+
listObj.sortedData = extend([], [], sortedData, false);
|
|
19973
|
+
}
|
|
19521
19974
|
if (this.listData.length === 0) {
|
|
19522
19975
|
this.l10nUpdate();
|
|
19523
19976
|
}
|
|
@@ -21822,6 +22275,9 @@ let Mention = class Mention extends DropDownBase {
|
|
|
21822
22275
|
this.hidePopup();
|
|
21823
22276
|
this.lineBreak = true;
|
|
21824
22277
|
}
|
|
22278
|
+
else if ((e.key === 'Backspace' || e.key === 'Delete') && this.range && this.range.startOffset !== this.range.endOffset) {
|
|
22279
|
+
this.range.deleteContents();
|
|
22280
|
+
}
|
|
21825
22281
|
return;
|
|
21826
22282
|
}
|
|
21827
22283
|
if (lastWordRange.includes(this.mentionChar)) {
|
|
@@ -22593,7 +23049,9 @@ let Mention = class Mention extends DropDownBase {
|
|
|
22593
23049
|
}
|
|
22594
23050
|
scrollTop() {
|
|
22595
23051
|
if (!isNullOrUndefined(this.selectedLI)) {
|
|
22596
|
-
let nextOffset = this.
|
|
23052
|
+
let nextOffset = !isNullOrUndefined(this.fields.groupBy) && !isNullOrUndefined(this.fixedHeaderElement) ?
|
|
23053
|
+
this.selectedLI.offsetTop - (this.list.scrollTop + this.fixedHeaderElement.offsetHeight) :
|
|
23054
|
+
this.selectedLI.offsetTop - this.list.scrollTop;
|
|
22597
23055
|
nextOffset = this.fields.groupBy && nextOffset;
|
|
22598
23056
|
const boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);
|
|
22599
23057
|
if (this.activeIndex === 0) {
|