@syncfusion/ej2-dropdowns 27.2.4 → 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 +507 -39
- package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
- package/dist/es6/ej2-dropdowns.es5.js +506 -37
- 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 +21 -3
- 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/drop-down-tree/drop-down-tree.js +4 -1
- 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 +251 -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 +36 -9
- package/styles/material3-dark.css +36 -9
- package/styles/material3-lite.css +36 -9
- package/styles/material3.css +36 -9
- 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 +2 -2
- 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 +19 -8
- package/styles/multi-select/material3.css +19 -8
- 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,11 +2005,23 @@ 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');
|
|
2000
2017
|
if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && this.getModuleName() === 'autocomplete')) {
|
|
2001
|
-
|
|
2018
|
+
if (this.getModuleName() === 'multiselect' && this.isCheckBoxSelection && this.appendUncheckList && this.list && this.list.querySelector('.e-active')) {
|
|
2019
|
+
virtualUlElement.appendChild(ulElement);
|
|
2020
|
+
isCheckBoxUpdate = true;
|
|
2021
|
+
}
|
|
2022
|
+
else {
|
|
2023
|
+
virtualUlElement.replaceChild(ulElement, oldUlElement);
|
|
2024
|
+
}
|
|
2002
2025
|
const reOrderList = this.list.querySelectorAll('.e-reorder');
|
|
2003
2026
|
if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList && reOrderList.length > 0 && !isCheckBoxUpdate) {
|
|
2004
2027
|
this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList[0]);
|
|
@@ -2275,7 +2298,7 @@ let DropDownBase = class DropDownBase extends Component {
|
|
|
2275
2298
|
updateData.dataSource = this.dataSource;
|
|
2276
2299
|
}
|
|
2277
2300
|
if (this.getModuleName() === 'listbox') {
|
|
2278
|
-
if (!this.isReact || (this.isReact && !isNullOrUndefined(newProp.dataSource))) {
|
|
2301
|
+
if (!this.isReact || (this.isReact && (!isNullOrUndefined(newProp.dataSource) || !isNullOrUndefined(newProp.sortOrder)))) {
|
|
2279
2302
|
this.updateDataSource(updateData, oldProp);
|
|
2280
2303
|
}
|
|
2281
2304
|
}
|
|
@@ -2751,6 +2774,7 @@ const dropDownListClasses = {
|
|
|
2751
2774
|
backIcon: 'e-input-group-icon e-back-icon e-icons',
|
|
2752
2775
|
filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',
|
|
2753
2776
|
filterInput: 'e-input-filter',
|
|
2777
|
+
resizeIcon: 'e-resizer-right e-icons',
|
|
2754
2778
|
filterParent: 'e-filter-parent',
|
|
2755
2779
|
mobileFilter: 'e-ddl-device-filter',
|
|
2756
2780
|
footer: 'e-ddl-footer',
|
|
@@ -2792,6 +2816,8 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
2792
2816
|
this.isTouched = false;
|
|
2793
2817
|
this.isFocused = false;
|
|
2794
2818
|
this.autoFill = false;
|
|
2819
|
+
this.isUpdateHeaderHeight = false;
|
|
2820
|
+
this.isUpdateFooterHeight = false;
|
|
2795
2821
|
}
|
|
2796
2822
|
/**
|
|
2797
2823
|
* Initialize the event handler.
|
|
@@ -2933,6 +2959,10 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
2933
2959
|
(this.allowObjectBinding && this.previousValue &&
|
|
2934
2960
|
this.isObjectInArray(this.previousValue, [this.allowCustom ? this.value ? this.value : dataItem :
|
|
2935
2961
|
dataItem.value ? this.getDataByValue(dataItem.value) : dataItem]))) {
|
|
2962
|
+
this.checkAndResetCache();
|
|
2963
|
+
if (this.enableVirtualization && this.list) {
|
|
2964
|
+
this.updateInitialData();
|
|
2965
|
+
}
|
|
2936
2966
|
return;
|
|
2937
2967
|
}
|
|
2938
2968
|
this.onChangeEvent(e);
|
|
@@ -3247,6 +3277,22 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
3247
3277
|
this.updateIconState();
|
|
3248
3278
|
this.isFocused = true;
|
|
3249
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
|
+
}
|
|
3250
3296
|
resetValueHandler(e) {
|
|
3251
3297
|
const formElement = closest(this.inputElement, 'form');
|
|
3252
3298
|
if (formElement && e.target === formElement) {
|
|
@@ -3341,6 +3387,68 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
3341
3387
|
this.incrementalSearch(e);
|
|
3342
3388
|
}
|
|
3343
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
|
+
}
|
|
3344
3452
|
onMouseClick(e) {
|
|
3345
3453
|
const target = e.target;
|
|
3346
3454
|
this.keyboardEvent = null;
|
|
@@ -3812,6 +3920,9 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
3812
3920
|
}
|
|
3813
3921
|
return;
|
|
3814
3922
|
}
|
|
3923
|
+
if (!this.enableVirtualization && this.liCollections[findLi] && this.liCollections[findLi].classList.contains('e-disabled')) {
|
|
3924
|
+
return;
|
|
3925
|
+
}
|
|
3815
3926
|
this.setSelection(this.liCollections[findLi], e);
|
|
3816
3927
|
}
|
|
3817
3928
|
}
|
|
@@ -3907,6 +4018,19 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
3907
4018
|
}
|
|
3908
4019
|
pageUpSelection(steps, event, isVirtualKeyAction) {
|
|
3909
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
|
+
}
|
|
3910
4034
|
if ((this.enableVirtualization && this.activeIndex == null)) {
|
|
3911
4035
|
previousItem = (this.liCollections.length >= steps && steps >= 0) ?
|
|
3912
4036
|
this.liCollections[steps + this.skeletonCount + 1] : this.liCollections[0];
|
|
@@ -3939,6 +4063,15 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
3939
4063
|
pageDownSelection(steps, event, isVirtualKeyAction) {
|
|
3940
4064
|
const list = this.getItems();
|
|
3941
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
|
+
}
|
|
3942
4075
|
if (this.enableVirtualization && this.skeletonCount > 0) {
|
|
3943
4076
|
steps = this.getModuleName() === 'dropdownlist' && this.allowFiltering ? steps + 1 : steps;
|
|
3944
4077
|
previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];
|
|
@@ -4711,7 +4844,7 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
4711
4844
|
const virualElement = this.createElement('div', {
|
|
4712
4845
|
id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()
|
|
4713
4846
|
});
|
|
4714
|
-
|
|
4847
|
+
this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virualElement);
|
|
4715
4848
|
}
|
|
4716
4849
|
}
|
|
4717
4850
|
}
|
|
@@ -4750,7 +4883,7 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
4750
4883
|
const virualElement = this.createElement('div', {
|
|
4751
4884
|
id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()
|
|
4752
4885
|
});
|
|
4753
|
-
|
|
4886
|
+
this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virualElement);
|
|
4754
4887
|
}
|
|
4755
4888
|
}
|
|
4756
4889
|
}
|
|
@@ -5101,7 +5234,7 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
5101
5234
|
}
|
|
5102
5235
|
updateSelectionList() {
|
|
5103
5236
|
const selectedItem = this.list && this.list.querySelector('.' + 'e-active');
|
|
5104
|
-
if (!selectedItem && !isNullOrUndefined(this.value)) {
|
|
5237
|
+
if (!selectedItem && !isNullOrUndefined(this.value) && this.getModuleName() !== 'autocomplete') {
|
|
5105
5238
|
const value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;
|
|
5106
5239
|
const findEle = this.findListElement(this.list, 'li', 'data-value', value);
|
|
5107
5240
|
if (findEle) {
|
|
@@ -5133,10 +5266,12 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
5133
5266
|
formatUnit(Math.round(window.outerHeight).toString() + 'px') : formatUnit(this.popupHeight);
|
|
5134
5267
|
if (this.headerTemplate) {
|
|
5135
5268
|
this.setHeaderTemplate(popupEle);
|
|
5269
|
+
this.isUpdateHeaderHeight = this.header.offsetHeight !== 0;
|
|
5136
5270
|
}
|
|
5137
5271
|
append([this.list], popupEle);
|
|
5138
5272
|
if (this.footerTemplate) {
|
|
5139
5273
|
this.setFooterTemplate(popupEle);
|
|
5274
|
+
this.isUpdateFooterHeight = this.footer.offsetHeight !== 0;
|
|
5140
5275
|
}
|
|
5141
5276
|
document.body.appendChild(popupEle);
|
|
5142
5277
|
popupEle.style.top = '0px';
|
|
@@ -5300,12 +5435,57 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
5300
5435
|
if (!isNullOrUndefined(this.popupObj)) {
|
|
5301
5436
|
this.popupObj.show(new Animation(eventArgs.animation), (this.zIndex === 1000) ? this.element : null);
|
|
5302
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
|
+
}
|
|
5303
5455
|
}
|
|
5304
5456
|
else {
|
|
5305
5457
|
this.beforePopupOpen = false;
|
|
5306
5458
|
this.destroyPopup();
|
|
5307
5459
|
}
|
|
5308
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
|
+
}
|
|
5309
5489
|
}
|
|
5310
5490
|
else {
|
|
5311
5491
|
this.beforePopupOpen = false;
|
|
@@ -5539,7 +5719,8 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
5539
5719
|
}
|
|
5540
5720
|
else {
|
|
5541
5721
|
this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ?
|
|
5542
|
-
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;
|
|
5543
5724
|
}
|
|
5544
5725
|
isScrollerCHanged = this.isKeyBoardAction;
|
|
5545
5726
|
}
|
|
@@ -5686,15 +5867,6 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
5686
5867
|
this.keyboardEvent = null;
|
|
5687
5868
|
EventHandler.remove(document, 'mousedown', this.onDocumentClick);
|
|
5688
5869
|
this.isActive = false;
|
|
5689
|
-
if (this.getModuleName() === 'dropdownlist') {
|
|
5690
|
-
Input.destroy({
|
|
5691
|
-
element: this.filterInput,
|
|
5692
|
-
floatLabelType: this.floatLabelType,
|
|
5693
|
-
properties: { placeholder: this.filterBarPlaceholder },
|
|
5694
|
-
buttons: this.clearIconElement
|
|
5695
|
-
}, this.clearIconElement);
|
|
5696
|
-
}
|
|
5697
|
-
this.filterInputObj = null;
|
|
5698
5870
|
this.isDropDownClick = false;
|
|
5699
5871
|
this.preventAutoFill = false;
|
|
5700
5872
|
const scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);
|
|
@@ -5766,6 +5938,15 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
5766
5938
|
const popupInstance = this.popupObj;
|
|
5767
5939
|
const eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };
|
|
5768
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;
|
|
5769
5950
|
if (!isNullOrUndefined(this.popupObj) &&
|
|
5770
5951
|
!isNullOrUndefined(this.popupObj.element.querySelector('.e-fixed-head'))) {
|
|
5771
5952
|
const fixedHeader = this.popupObj.element.querySelector('.e-fixed-head');
|
|
@@ -5836,6 +6017,12 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
5836
6017
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
5837
6018
|
this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();
|
|
5838
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
|
+
}
|
|
5839
6026
|
if (this.getModuleName() !== 'autocomplete' && this.totalItemCount !== 0 && this.totalItemCount > (this.itemCount * 2)) {
|
|
5840
6027
|
this.getSkeletonCount();
|
|
5841
6028
|
}
|
|
@@ -5854,6 +6041,10 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
5854
6041
|
this.isFilterFocus = false;
|
|
5855
6042
|
this.inputElement.removeAttribute('aria-controls');
|
|
5856
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
|
+
}
|
|
5857
6048
|
this.popupObj.destroy();
|
|
5858
6049
|
detach(this.popupObj.element);
|
|
5859
6050
|
}
|
|
@@ -6564,6 +6755,15 @@ let DropDownList = class DropDownList extends DropDownBase {
|
|
|
6564
6755
|
isOpen: true
|
|
6565
6756
|
});
|
|
6566
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
|
+
}
|
|
6567
6767
|
}
|
|
6568
6768
|
invokeRenderPopup(e) {
|
|
6569
6769
|
if (Browser.isDevice && this.isFilterLayout()) {
|
|
@@ -6901,6 +7101,9 @@ __decorate$1([
|
|
|
6901
7101
|
__decorate$1([
|
|
6902
7102
|
Property(false)
|
|
6903
7103
|
], DropDownList.prototype, "enableVirtualization", void 0);
|
|
7104
|
+
__decorate$1([
|
|
7105
|
+
Property(false)
|
|
7106
|
+
], DropDownList.prototype, "allowResize", void 0);
|
|
6904
7107
|
__decorate$1([
|
|
6905
7108
|
Property(null)
|
|
6906
7109
|
], DropDownList.prototype, "text", void 0);
|
|
@@ -6940,6 +7143,15 @@ __decorate$1([
|
|
|
6940
7143
|
__decorate$1([
|
|
6941
7144
|
Event()
|
|
6942
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);
|
|
6943
7155
|
DropDownList = __decorate$1([
|
|
6944
7156
|
NotifyPropertyChanges
|
|
6945
7157
|
], DropDownList);
|
|
@@ -7182,7 +7394,7 @@ let DropDownTree = class DropDownTree extends Component {
|
|
|
7182
7394
|
}
|
|
7183
7395
|
else {
|
|
7184
7396
|
if (!isNullOrUndefined(this.element.id)) {
|
|
7185
|
-
this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text', id: this.element.id } });
|
|
7397
|
+
this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text', id: this.element.id + '_textbox' } });
|
|
7186
7398
|
}
|
|
7187
7399
|
else {
|
|
7188
7400
|
this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });
|
|
@@ -8409,6 +8621,9 @@ let DropDownTree = class DropDownTree extends Component {
|
|
|
8409
8621
|
const id = this.value[0].toString();
|
|
8410
8622
|
if (this.treeObj.selectedNodes[0] !== id) {
|
|
8411
8623
|
setValue('selectedNodes', [id], this.treeObj);
|
|
8624
|
+
if (this.fields.dataSource instanceof DataManager) {
|
|
8625
|
+
this.updateSelectedValues();
|
|
8626
|
+
}
|
|
8412
8627
|
}
|
|
8413
8628
|
}
|
|
8414
8629
|
else {
|
|
@@ -10706,7 +10921,7 @@ let ComboBox = class ComboBox extends DropDownList {
|
|
|
10706
10921
|
const inputValue = this.inputElement.value;
|
|
10707
10922
|
const dataSource = this.sortedData;
|
|
10708
10923
|
const type = this.typeOfData(dataSource).typeof;
|
|
10709
|
-
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);
|
|
10710
10925
|
if (this.enableVirtualization && inputValue !== '' && this.getModuleName() !== 'autocomplete' && this.isTyped && !this.allowFiltering) {
|
|
10711
10926
|
let updatingincrementalindex = false;
|
|
10712
10927
|
const isEndIndexValid = this.viewPortInfo.endIndex >= this.incrementalEndIndex &&
|
|
@@ -11662,11 +11877,11 @@ let AutoComplete = class AutoComplete extends ComboBox {
|
|
|
11662
11877
|
});
|
|
11663
11878
|
this.list.appendChild(virtualElement).appendChild(this.list.querySelector('.e-list-parent'));
|
|
11664
11879
|
}
|
|
11665
|
-
if (!this.list.querySelector('.e-virtual-ddl') &&
|
|
11880
|
+
if (!this.list.querySelector('.e-virtual-ddl') && this.list.parentElement) {
|
|
11666
11881
|
const virtualElement = this.createElement('div', {
|
|
11667
11882
|
id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()
|
|
11668
11883
|
});
|
|
11669
|
-
|
|
11884
|
+
this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virtualElement);
|
|
11670
11885
|
}
|
|
11671
11886
|
}
|
|
11672
11887
|
if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount !== 0)) {
|
|
@@ -11701,6 +11916,9 @@ let AutoComplete = class AutoComplete extends ComboBox {
|
|
|
11701
11916
|
if (!isNullOrUndefined(item)) {
|
|
11702
11917
|
removeClass([item], dropDownListClasses.focus);
|
|
11703
11918
|
}
|
|
11919
|
+
if (!isNullOrUndefined(this.itemData) && !this.enableVirtualization) {
|
|
11920
|
+
this.focusIndexItem();
|
|
11921
|
+
}
|
|
11704
11922
|
this.postBackAction();
|
|
11705
11923
|
}
|
|
11706
11924
|
postBackAction() {
|
|
@@ -12193,6 +12411,7 @@ const BOX_ELEMENT = 'e-multiselect-box';
|
|
|
12193
12411
|
const FILTERPARENT = 'e-filter-parent';
|
|
12194
12412
|
const CUSTOM_WIDTH = 'e-search-custom-width';
|
|
12195
12413
|
const FILTERINPUT = 'e-input-filter';
|
|
12414
|
+
const RESIZE_ICON = 'e-resizer-right e-icons';
|
|
12196
12415
|
/**
|
|
12197
12416
|
* The Multiselect allows the user to pick a more than one value from list of predefined values.
|
|
12198
12417
|
* ```html
|
|
@@ -12223,6 +12442,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
12223
12442
|
super(option, element);
|
|
12224
12443
|
this.clearIconWidth = 0;
|
|
12225
12444
|
this.previousFilterText = '';
|
|
12445
|
+
this.storedSelectAllHeight = 0;
|
|
12446
|
+
this.isUpdateHeaderHeight = false;
|
|
12447
|
+
this.isUpdateFooterHeight = false;
|
|
12226
12448
|
this.isValidKey = false;
|
|
12227
12449
|
this.selectAllEventData = [];
|
|
12228
12450
|
this.selectAllEventEle = [];
|
|
@@ -12370,7 +12592,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
12370
12592
|
const eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };
|
|
12371
12593
|
this.trigger('open', eventArgs, (eventArgs) => {
|
|
12372
12594
|
if (!eventArgs.cancel) {
|
|
12373
|
-
this.focusAtFirstListItem();
|
|
12595
|
+
this.focusAtFirstListItem(true);
|
|
12374
12596
|
if (this.popupObj) {
|
|
12375
12597
|
document.body.appendChild(this.popupObj.element);
|
|
12376
12598
|
}
|
|
@@ -12385,6 +12607,23 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
12385
12607
|
if (this.popupObj) {
|
|
12386
12608
|
this.popupObj.show(eventArgs.animation, (this.zIndex === 1000) ? this.element : null);
|
|
12387
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
|
+
}
|
|
12388
12627
|
attributes(this.inputElement, {
|
|
12389
12628
|
'aria-expanded': 'true', 'aria-owns': this.element.id + '_popup', 'aria-controls': this.element.id
|
|
12390
12629
|
});
|
|
@@ -12461,16 +12700,16 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
12461
12700
|
: this.value[this.value.length - 1];
|
|
12462
12701
|
const valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', value);
|
|
12463
12702
|
if (!isNullOrUndefined(valueEle)) {
|
|
12464
|
-
this.scrollBottom(valueEle);
|
|
12703
|
+
this.scrollBottom(valueEle, undefined, false, null, true);
|
|
12465
12704
|
}
|
|
12466
12705
|
}
|
|
12467
12706
|
if (this.enableVirtualization) {
|
|
12468
12707
|
const focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);
|
|
12469
12708
|
this.isKeyBoardAction = false;
|
|
12470
|
-
this.scrollBottom(focusedItem);
|
|
12709
|
+
this.scrollBottom(focusedItem, undefined, false, null, true);
|
|
12471
12710
|
}
|
|
12472
12711
|
}
|
|
12473
|
-
focusAtFirstListItem() {
|
|
12712
|
+
focusAtFirstListItem(isOpen) {
|
|
12474
12713
|
if (this.ulElement && this.ulElement.querySelector('li.'
|
|
12475
12714
|
+ dropDownBaseClasses.li)) {
|
|
12476
12715
|
let element;
|
|
@@ -12483,10 +12722,18 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
12483
12722
|
if (this.fields.disabled) {
|
|
12484
12723
|
element = this.ulElement.querySelector('li.'
|
|
12485
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
|
+
}
|
|
12486
12729
|
}
|
|
12487
12730
|
else {
|
|
12488
12731
|
element = this.ulElement.querySelector('li.'
|
|
12489
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
|
+
}
|
|
12490
12737
|
}
|
|
12491
12738
|
}
|
|
12492
12739
|
else {
|
|
@@ -12783,7 +13030,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
12783
13030
|
if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {
|
|
12784
13031
|
removeClass([element], dropDownBaseClasses.focus);
|
|
12785
13032
|
const listEle = element.parentElement.querySelectorAll('.' +
|
|
12786
|
-
dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');
|
|
13033
|
+
dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.' + DISABLED$1 + ')');
|
|
12787
13034
|
if (listEle.length > 0) {
|
|
12788
13035
|
addClass([listEle[0]], dropDownBaseClasses.focus);
|
|
12789
13036
|
this.updateAriaActiveDescendant();
|
|
@@ -12952,7 +13199,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
12952
13199
|
if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {
|
|
12953
13200
|
filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);
|
|
12954
13201
|
}
|
|
12955
|
-
else if ((this.enableVirtualization && this.targetElement() !== '') || !this.enableVirtualization) {
|
|
13202
|
+
else if ((this.enableVirtualization && this.targetElement() !== '' && !this.isClearAllAction) || !this.enableVirtualization) {
|
|
12956
13203
|
const fields = this.fields;
|
|
12957
13204
|
filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);
|
|
12958
13205
|
}
|
|
@@ -12960,6 +13207,11 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
12960
13207
|
if (this.enableVirtualization && (this.viewPortInfo.endIndex !== 0) && !this.virtualSelectAll) {
|
|
12961
13208
|
return this.virtualFilterQuery(filterQuery);
|
|
12962
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
|
+
}
|
|
12963
13215
|
return filterQuery;
|
|
12964
13216
|
}
|
|
12965
13217
|
else {
|
|
@@ -13145,6 +13397,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
13145
13397
|
this.getFilteringSkeletonCount();
|
|
13146
13398
|
}
|
|
13147
13399
|
this.refreshPopup();
|
|
13400
|
+
if (this.allowResize) {
|
|
13401
|
+
this.setResize();
|
|
13402
|
+
}
|
|
13148
13403
|
if (this.mode === 'CheckBox') {
|
|
13149
13404
|
this.removeFocus();
|
|
13150
13405
|
}
|
|
@@ -13478,6 +13733,15 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
13478
13733
|
':not(.' + HIDE_LIST + ')' +
|
|
13479
13734
|
':not(.e-reorder-hide)');
|
|
13480
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
|
+
}
|
|
13481
13745
|
if (this.enableVirtualization && isVirtualKeyAction) {
|
|
13482
13746
|
previousItem = (this.liCollections.length >= steps && steps >= 0)
|
|
13483
13747
|
? this.liCollections[steps]
|
|
@@ -13509,6 +13773,15 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
13509
13773
|
const collection = this.list.querySelectorAll('li.'
|
|
13510
13774
|
+ dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');
|
|
13511
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
|
+
}
|
|
13512
13785
|
if (this.enableVirtualization && this.skeletonCount > 0) {
|
|
13513
13786
|
previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];
|
|
13514
13787
|
}
|
|
@@ -13559,6 +13832,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
13559
13832
|
if (this.isPopupOpen()) {
|
|
13560
13833
|
this.refreshPopup();
|
|
13561
13834
|
}
|
|
13835
|
+
if (this.allowResize) {
|
|
13836
|
+
this.setResize();
|
|
13837
|
+
}
|
|
13562
13838
|
setTimeout(() => {
|
|
13563
13839
|
this.calculateWidth();
|
|
13564
13840
|
}, 150);
|
|
@@ -13795,6 +14071,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
13795
14071
|
if (this.mode === 'CheckBox') {
|
|
13796
14072
|
this.inputElement.focus();
|
|
13797
14073
|
}
|
|
14074
|
+
this.isKeyBoardAction = false;
|
|
13798
14075
|
return;
|
|
13799
14076
|
case 13:
|
|
13800
14077
|
e.preventDefault();
|
|
@@ -13803,10 +14080,12 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
13803
14080
|
this.selectByKey(e);
|
|
13804
14081
|
}
|
|
13805
14082
|
this.checkPlaceholderSize();
|
|
14083
|
+
this.isKeyBoardAction = false;
|
|
13806
14084
|
return;
|
|
13807
14085
|
case 32:
|
|
13808
14086
|
this.isKeyBoardAction = true;
|
|
13809
14087
|
this.spaceKeySelection(e);
|
|
14088
|
+
this.isKeyBoardAction = false;
|
|
13810
14089
|
return;
|
|
13811
14090
|
case 9:
|
|
13812
14091
|
e.preventDefault();
|
|
@@ -13848,6 +14127,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
13848
14127
|
if (!(this.mode === 'CheckBox' && this.showSelectAll)) {
|
|
13849
14128
|
this.refreshPopup();
|
|
13850
14129
|
}
|
|
14130
|
+
if (this.allowResize) {
|
|
14131
|
+
this.setResize();
|
|
14132
|
+
}
|
|
13851
14133
|
this.isKeyBoardAction = false;
|
|
13852
14134
|
}
|
|
13853
14135
|
arrowDown(e, isVirtualKeyAction) {
|
|
@@ -13972,7 +14254,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
13972
14254
|
}
|
|
13973
14255
|
this.makeTextBoxEmpty();
|
|
13974
14256
|
}
|
|
13975
|
-
scrollBottom(selectedLI, activeIndex, isInitialSelection = false, keyCode = null) {
|
|
14257
|
+
scrollBottom(selectedLI, activeIndex, isInitialSelection = false, keyCode = null, isInitial = false) {
|
|
13976
14258
|
if ((!isNullOrUndefined(selectedLI) && selectedLI.classList.contains('e-virtual-list')) ||
|
|
13977
14259
|
(this.enableVirtualization && isNullOrUndefined(selectedLI))) {
|
|
13978
14260
|
selectedLI = this.liCollections[this.skeletonCount];
|
|
@@ -14026,8 +14308,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
14026
14308
|
}
|
|
14027
14309
|
}
|
|
14028
14310
|
else {
|
|
14029
|
-
this.list.scrollTop = this.virtualListInfo &&
|
|
14030
|
-
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;
|
|
14031
14314
|
}
|
|
14032
14315
|
isScrollerCHanged = this.isKeyBoardAction;
|
|
14033
14316
|
}
|
|
@@ -14228,6 +14511,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
14228
14511
|
this.getDataByValue(this.getFormattedValue(selectedElem.getAttribute('data-value'))) :
|
|
14229
14512
|
selectedElem.getAttribute('data-value');
|
|
14230
14513
|
this.removeValue(currentChip, e);
|
|
14514
|
+
this.updateDelimeter(this.delimiterChar, e);
|
|
14231
14515
|
this.makeTextBoxEmpty();
|
|
14232
14516
|
}
|
|
14233
14517
|
if (this.closePopupOnSelect) {
|
|
@@ -14350,7 +14634,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
14350
14634
|
return;
|
|
14351
14635
|
}
|
|
14352
14636
|
const index = this.getIndexByValue(focusedLi.getAttribute('data-value'));
|
|
14353
|
-
if (index === 0
|
|
14637
|
+
if (index === 0) {
|
|
14354
14638
|
position = 1;
|
|
14355
14639
|
}
|
|
14356
14640
|
if (index === (this.list.querySelectorAll('.e-list-item:not(.e-hide-listitem)').length - 1)) {
|
|
@@ -14996,6 +15280,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
14996
15280
|
if (this.headerTemplate) {
|
|
14997
15281
|
this.setHeaderTemplate();
|
|
14998
15282
|
overAllHeight -= this.header.offsetHeight;
|
|
15283
|
+
this.isUpdateHeaderHeight = this.header.offsetHeight !== 0;
|
|
14999
15284
|
}
|
|
15000
15285
|
append([this.list], this.popupWrapper);
|
|
15001
15286
|
if (!this.list.classList.contains(dropDownBaseClasses.noData) && this.getItems()[1]) {
|
|
@@ -15033,6 +15318,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
15033
15318
|
if (this.footerTemplate) {
|
|
15034
15319
|
this.setFooterTemplate();
|
|
15035
15320
|
overAllHeight -= this.footer.offsetHeight;
|
|
15321
|
+
this.isUpdateFooterHeight = this.footer.offsetHeight !== 0;
|
|
15036
15322
|
}
|
|
15037
15323
|
if (this.mode === 'CheckBox' && this.showSelectAll) {
|
|
15038
15324
|
this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });
|
|
@@ -15150,6 +15436,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
15150
15436
|
if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering && this.isDeviceFullScreen) {
|
|
15151
15437
|
this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });
|
|
15152
15438
|
}
|
|
15439
|
+
if (this.allowResize) {
|
|
15440
|
+
this.setResize();
|
|
15441
|
+
}
|
|
15153
15442
|
this.popupObj.close();
|
|
15154
15443
|
this.popupWrapper.style.visibility = '';
|
|
15155
15444
|
}
|
|
@@ -15272,6 +15561,8 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
15272
15561
|
clearAll(e) {
|
|
15273
15562
|
if (this.enabled && !this.readonly) {
|
|
15274
15563
|
let temp;
|
|
15564
|
+
this.setDynValue = false;
|
|
15565
|
+
this.isClearAllAction = true;
|
|
15275
15566
|
if (this.value && this.value.length > 0) {
|
|
15276
15567
|
if (this.allowFiltering) {
|
|
15277
15568
|
this.refreshListItems(null);
|
|
@@ -15318,6 +15609,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
15318
15609
|
this.previousStartIndex = 0;
|
|
15319
15610
|
this.previousEndIndex = 0;
|
|
15320
15611
|
}
|
|
15612
|
+
this.isClearAllAction = false;
|
|
15321
15613
|
}
|
|
15322
15614
|
this.isClearAllItem = true;
|
|
15323
15615
|
EventHandler.add(document, 'mouseup', this.preventSelection, this);
|
|
@@ -15348,6 +15640,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
15348
15640
|
if (this.isPopupOpen()) {
|
|
15349
15641
|
this.refreshPopup();
|
|
15350
15642
|
}
|
|
15643
|
+
if (this.allowResize) {
|
|
15644
|
+
this.setResize();
|
|
15645
|
+
}
|
|
15351
15646
|
if (!this.inputFocus) {
|
|
15352
15647
|
if (this.changeOnBlur) {
|
|
15353
15648
|
this.updateValueState(e, this.value, tempValues);
|
|
@@ -16150,6 +16445,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
16150
16445
|
}
|
|
16151
16446
|
this.checkSelectAll();
|
|
16152
16447
|
this.refreshPopup();
|
|
16448
|
+
if (this.allowResize) {
|
|
16449
|
+
this.setResize();
|
|
16450
|
+
}
|
|
16153
16451
|
if (this.hideSelectedItem) {
|
|
16154
16452
|
this.focusAtFirstListItem();
|
|
16155
16453
|
}
|
|
@@ -16664,6 +16962,22 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
16664
16962
|
EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);
|
|
16665
16963
|
}
|
|
16666
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
|
+
}
|
|
16667
16981
|
selectAllItem(state, event, list) {
|
|
16668
16982
|
let li;
|
|
16669
16983
|
if (!isNullOrUndefined(this.list)) {
|
|
@@ -17185,6 +17499,20 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
17185
17499
|
this.enableRTL(newProp.enableRtl);
|
|
17186
17500
|
super.onPropertyChanged(newProp, oldProp);
|
|
17187
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;
|
|
17188
17516
|
case 'readonly':
|
|
17189
17517
|
this.updateReadonly(newProp.readonly);
|
|
17190
17518
|
this.hidePopup();
|
|
@@ -17427,6 +17755,24 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
17427
17755
|
if (this.mode === 'CheckBox' && this.showSelectAll) {
|
|
17428
17756
|
EventHandler.remove(this.popupObj.element, 'click', this.clickHandler);
|
|
17429
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
|
+
}
|
|
17430
17776
|
if (this.enableVirtualization && this.mode === 'CheckBox' && this.value && this.value.length > 0 &&
|
|
17431
17777
|
this.enableSelectionOrder) {
|
|
17432
17778
|
this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;
|
|
@@ -17542,6 +17888,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
17542
17888
|
}
|
|
17543
17889
|
}
|
|
17544
17890
|
}
|
|
17891
|
+
if (this.allowResize) {
|
|
17892
|
+
this.setResize();
|
|
17893
|
+
}
|
|
17545
17894
|
this.preventSetCurrentData = true;
|
|
17546
17895
|
}
|
|
17547
17896
|
});
|
|
@@ -17726,6 +18075,102 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
17726
18075
|
}
|
|
17727
18076
|
this.renderComplete();
|
|
17728
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
|
+
}
|
|
17729
18174
|
getListHeight() {
|
|
17730
18175
|
const listParent = this.createElement('div', {
|
|
17731
18176
|
className: 'e-dropdownbase'
|
|
@@ -18111,6 +18556,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
|
|
|
18111
18556
|
this.inputElement = null;
|
|
18112
18557
|
this.delimiterWrapper = null;
|
|
18113
18558
|
this.liCollections = null;
|
|
18559
|
+
this.popupContentElement = null;
|
|
18114
18560
|
this.header = null;
|
|
18115
18561
|
this.mainList = null;
|
|
18116
18562
|
this.mainListCollection = null;
|
|
@@ -18221,6 +18667,9 @@ __decorate$5([
|
|
|
18221
18667
|
__decorate$5([
|
|
18222
18668
|
Property(false)
|
|
18223
18669
|
], MultiSelect.prototype, "readonly", void 0);
|
|
18670
|
+
__decorate$5([
|
|
18671
|
+
Property(false)
|
|
18672
|
+
], MultiSelect.prototype, "allowResize", void 0);
|
|
18224
18673
|
__decorate$5([
|
|
18225
18674
|
Property(null)
|
|
18226
18675
|
], MultiSelect.prototype, "text", void 0);
|
|
@@ -18302,6 +18751,15 @@ __decorate$5([
|
|
|
18302
18751
|
__decorate$5([
|
|
18303
18752
|
Event()
|
|
18304
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);
|
|
18305
18763
|
__decorate$5([
|
|
18306
18764
|
Event()
|
|
18307
18765
|
], MultiSelect.prototype, "filtering", void 0);
|
|
@@ -19019,7 +19477,7 @@ let ListBox = ListBox_1 = class ListBox extends DropDownBase {
|
|
|
19019
19477
|
new Sortable(this.ulElement, {
|
|
19020
19478
|
scope: this.scope,
|
|
19021
19479
|
itemClass: 'e-list-item',
|
|
19022
|
-
|
|
19480
|
+
beforeDragStart: this.triggerDragStart.bind(this),
|
|
19023
19481
|
drag: this.triggerDrag.bind(this),
|
|
19024
19482
|
beforeDrop: this.beforeDragEnd.bind(this),
|
|
19025
19483
|
drop: this.dragEnd.bind(this),
|
|
@@ -19267,11 +19725,11 @@ let ListBox = ListBox_1 = class ListBox extends DropDownBase {
|
|
|
19267
19725
|
}
|
|
19268
19726
|
triggerDragStart(args) {
|
|
19269
19727
|
let badge;
|
|
19270
|
-
|
|
19728
|
+
const extendedArgs = extend(this.getDragArgs(args), { dragSelected: true }, { cancel: false });
|
|
19271
19729
|
if (Browser.isIos) {
|
|
19272
19730
|
this.list.style.overflow = 'hidden';
|
|
19273
19731
|
}
|
|
19274
|
-
this.trigger('dragStart',
|
|
19732
|
+
this.trigger('dragStart', extendedArgs, (dragEventArgs) => {
|
|
19275
19733
|
this.allowDragAll = dragEventArgs.dragSelected;
|
|
19276
19734
|
if (!this.allowDragAll) {
|
|
19277
19735
|
badge = this.ulElement.getElementsByClassName('e-list-badge')[0];
|
|
@@ -19279,6 +19737,9 @@ let ListBox = ListBox_1 = class ListBox extends DropDownBase {
|
|
|
19279
19737
|
detach(badge);
|
|
19280
19738
|
}
|
|
19281
19739
|
}
|
|
19740
|
+
if (dragEventArgs.cancel) {
|
|
19741
|
+
args.cancel = true;
|
|
19742
|
+
}
|
|
19282
19743
|
});
|
|
19283
19744
|
}
|
|
19284
19745
|
triggerDrag(args) {
|
|
@@ -19507,7 +19968,9 @@ let ListBox = ListBox_1 = class ListBox extends DropDownBase {
|
|
|
19507
19968
|
listObj.liCollections = liColl;
|
|
19508
19969
|
listObj.jsonData = extend([], [], jsonData, false);
|
|
19509
19970
|
listObj.listData = extend([], [], listData, false);
|
|
19510
|
-
listObj.
|
|
19971
|
+
if (listObj.sortOrder === 'None') {
|
|
19972
|
+
listObj.sortedData = extend([], [], sortedData, false);
|
|
19973
|
+
}
|
|
19511
19974
|
if (this.listData.length === 0) {
|
|
19512
19975
|
this.l10nUpdate();
|
|
19513
19976
|
}
|
|
@@ -21812,6 +22275,9 @@ let Mention = class Mention extends DropDownBase {
|
|
|
21812
22275
|
this.hidePopup();
|
|
21813
22276
|
this.lineBreak = true;
|
|
21814
22277
|
}
|
|
22278
|
+
else if ((e.key === 'Backspace' || e.key === 'Delete') && this.range && this.range.startOffset !== this.range.endOffset) {
|
|
22279
|
+
this.range.deleteContents();
|
|
22280
|
+
}
|
|
21815
22281
|
return;
|
|
21816
22282
|
}
|
|
21817
22283
|
if (lastWordRange.includes(this.mentionChar)) {
|
|
@@ -22583,7 +23049,9 @@ let Mention = class Mention extends DropDownBase {
|
|
|
22583
23049
|
}
|
|
22584
23050
|
scrollTop() {
|
|
22585
23051
|
if (!isNullOrUndefined(this.selectedLI)) {
|
|
22586
|
-
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;
|
|
22587
23055
|
nextOffset = this.fields.groupBy && nextOffset;
|
|
22588
23056
|
const boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);
|
|
22589
23057
|
if (this.activeIndex === 0) {
|