@syncfusion/ej2-dropdowns 30.1.40 → 30.1.42

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.
@@ -367,7 +367,7 @@ class VirtualScroll {
367
367
  if (this.component === 'combobox') {
368
368
  let totalData = 0;
369
369
  if (this.parent.dataSource instanceof DataManager) {
370
- totalData = this.parent.dataSource.dataSource.json.length;
370
+ totalData = this.parent.remoteDataCount;
371
371
  }
372
372
  else if (this.parent.dataSource && this.parent.dataSource.length > 0) {
373
373
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -687,6 +687,7 @@ class VirtualScroll {
687
687
  this.parent.isVirtualScrolling = true;
688
688
  setTimeout(() => {
689
689
  this.parent.pageCount = this.parent.getPageCount();
690
+ this.parent.isRequesting = false;
690
691
  this.virtualScrollRefreshAsync().then(() => {
691
692
  if (this.parent.popupObj) {
692
693
  this.parent.list = this.parent.popupObj.element.querySelector('.' + 'e-content') || select('.' + 'e-content');
@@ -1505,11 +1506,12 @@ let DropDownBase = class DropDownBase extends Component {
1505
1506
  this.emptyDataRequest(fields);
1506
1507
  return;
1507
1508
  }
1508
- eventArgs.data.executeQuery(this.getQuery(eventArgs.query)).then((e) => {
1509
+ const query = this.getQuery(eventArgs.query);
1510
+ eventArgs.data.executeQuery(query).then((e) => {
1509
1511
  this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;
1510
1512
  let isReOrder = true;
1511
1513
  if (!this.virtualSelectAll) {
1512
- const newQuery = this.getQuery(eventArgs.query);
1514
+ const newQuery = query.clone();
1513
1515
  for (let queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {
1514
1516
  if (newQuery.queries[queryElements].fn === 'onWhere') {
1515
1517
  isWhereExist = true;
@@ -1564,10 +1566,15 @@ let DropDownBase = class DropDownBase extends Component {
1564
1566
  this.totalItemCount = !this.virtualSelectAll ? e.count : this.totalItemCount;
1565
1567
  ulElement = this.renderItems(listItems, fields);
1566
1568
  this.appendUncheckList = false;
1569
+ this.isUpdateGroupTemplate = false;
1567
1570
  this.onActionComplete(ulElement, listItems, e);
1568
1571
  if (this.groupTemplate) {
1572
+ if (this.isAngular && this.getModuleName() === 'multiselect') {
1573
+ this.updateGroupHeaderItems(ulElement);
1574
+ }
1569
1575
  this.renderGroupTemplate(ulElement);
1570
1576
  }
1577
+ this.isUpdateGroupTemplate = true;
1571
1578
  this.isRequested = false;
1572
1579
  this.bindChildItems(listItems, ulElement, fields, e);
1573
1580
  if (this.getInitialData) {
@@ -1670,10 +1677,15 @@ let DropDownBase = class DropDownBase extends Component {
1670
1677
  }
1671
1678
  if (!localDataArgs.cancel) {
1672
1679
  ulElement = this.renderItems(localDataArgs.result, fields);
1680
+ this.isUpdateGroupTemplate = false;
1673
1681
  this.onActionComplete(ulElement, localDataArgs.result, event);
1674
1682
  if (this.groupTemplate) {
1683
+ if (this.isAngular && this.getModuleName() === 'multiselect') {
1684
+ this.updateGroupHeaderItems(ulElement);
1685
+ }
1675
1686
  this.renderGroupTemplate(ulElement);
1676
1687
  }
1688
+ this.isUpdateGroupTemplate = true;
1677
1689
  this.bindChildItems(localDataArgs.result, ulElement, fields);
1678
1690
  if (this.getInitialData) {
1679
1691
  this.getInitialData = false;
@@ -1692,6 +1704,20 @@ let DropDownBase = class DropDownBase extends Component {
1692
1704
  });
1693
1705
  }
1694
1706
  }
1707
+ updateGroupHeaderItems(ulElement) {
1708
+ const headerElements = ulElement.querySelectorAll('.' + dropDownBaseClasses.group);
1709
+ const clonedHeaders = [];
1710
+ for (let i = 0; i < headerElements.length; i++) {
1711
+ clonedHeaders.push(headerElements[i].cloneNode ? headerElements[i].cloneNode(true) :
1712
+ headerElements[i]);
1713
+ }
1714
+ if (!this.isFilterAction) {
1715
+ this.groupHeaderItems = clonedHeaders;
1716
+ }
1717
+ else {
1718
+ this.fiteredGroupHeaderItems = clonedHeaders;
1719
+ }
1720
+ }
1695
1721
  handleVirtualKeyboardActions(e, pageCount) {
1696
1722
  // Used this method in component side.
1697
1723
  }
@@ -1826,6 +1852,21 @@ let DropDownBase = class DropDownBase extends Component {
1826
1852
  if (!isNullOrUndefined(this.list)) {
1827
1853
  if (!this.isVirtualizationEnabled) {
1828
1854
  this.list.innerHTML = '';
1855
+ if (this.isUpdateGroupTemplate && this.isAngular && this.groupTemplate && this.getModuleName() === 'multiselect') {
1856
+ const headerItems = ulElement.querySelectorAll('.' + dropDownBaseClasses.group);
1857
+ if (headerItems.length > 0 && this.groupHeaderItems.length > 0) {
1858
+ const groupHeaderMap = {};
1859
+ for (let i = 0; i < this.groupHeaderItems.length; i++) {
1860
+ groupHeaderMap[this.groupHeaderItems[i].id] = this.groupHeaderItems[i].innerHTML;
1861
+ }
1862
+ for (let i = 0; i < headerItems.length; i++) {
1863
+ if (Object.prototype.hasOwnProperty.call(groupHeaderMap, headerItems[i].id)) {
1864
+ headerItems[i].innerHTML = groupHeaderMap[headerItems[i].id];
1865
+ }
1866
+ }
1867
+ }
1868
+ this.renderGroupTemplate(ulElement);
1869
+ }
1829
1870
  this.list.appendChild(ulElement);
1830
1871
  this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);
1831
1872
  this.ulElement = this.list.querySelector('ul');
@@ -1920,7 +1961,9 @@ let DropDownBase = class DropDownBase extends Component {
1920
1961
  if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {
1921
1962
  const dataSource = this.dataSource;
1922
1963
  const option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };
1923
- const headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);
1964
+ const headerItems = this.isAngular && this.getModuleName() === 'multiselect' && !isNullOrUndefined(listEle) &&
1965
+ listEle.classList.contains(dropDownBaseClasses.fixedHead) ? [listEle] :
1966
+ listEle.querySelectorAll('.' + dropDownBaseClasses.group);
1924
1967
  const groupcheck = this.templateCompiler(this.groupTemplate);
1925
1968
  if (typeof this.groupTemplate !== 'function' && groupcheck) {
1926
1969
  const groupValue = select(this.groupTemplate, document).innerHTML.trim();
@@ -2055,10 +2098,38 @@ let DropDownBase = class DropDownBase extends Component {
2055
2098
  return false;
2056
2099
  }
2057
2100
  }
2101
+ updateFixedGroupTemplateHader(element) {
2102
+ const groupData = element.cloneNode ? element.cloneNode(true) : element;
2103
+ let isGroupDataUpdated = false;
2104
+ if (this.groupHeaderItems && this.groupHeaderItems.length > 0) {
2105
+ for (let i = 0; i < this.groupHeaderItems.length; i++) {
2106
+ if (groupData.id === this.groupHeaderItems[i].id) {
2107
+ groupData.innerHTML = this.groupHeaderItems[i].innerHTML;
2108
+ isGroupDataUpdated = true;
2109
+ break;
2110
+ }
2111
+ }
2112
+ }
2113
+ if (!isGroupDataUpdated && this.fiteredGroupHeaderItems && this.fiteredGroupHeaderItems.length > 0) {
2114
+ for (let i = 0; i < this.fiteredGroupHeaderItems.length; i++) {
2115
+ if (groupData.id === this.fiteredGroupHeaderItems[i].id) {
2116
+ groupData.innerHTML = this.fiteredGroupHeaderItems[i].innerHTML;
2117
+ break;
2118
+ }
2119
+ }
2120
+ }
2121
+ this.fixedHeaderElement.innerHTML = groupData.innerHTML;
2122
+ this.renderGroupTemplate(this.fixedHeaderElement);
2123
+ }
2058
2124
  updateGroupFixedHeader(element, target) {
2059
2125
  if (this.fixedHeaderElement) {
2060
2126
  if (!isNullOrUndefined(element.innerHTML)) {
2061
- this.fixedHeaderElement.innerHTML = element.innerHTML;
2127
+ if (this.groupTemplate && this.isAngular && this.getModuleName() === 'multiselect') {
2128
+ this.updateFixedGroupTemplateHader(element);
2129
+ }
2130
+ else {
2131
+ this.fixedHeaderElement.innerHTML = element.innerHTML;
2132
+ }
2062
2133
  }
2063
2134
  this.fixedHeaderElement.style.position = 'fixed';
2064
2135
  this.fixedHeaderElement.style.top = (this.list.parentElement.offsetTop + this.list.offsetTop) - window.scrollY + 'px';
@@ -2248,7 +2319,12 @@ let DropDownBase = class DropDownBase extends Component {
2248
2319
  setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });
2249
2320
  const firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group + ':not(.e-hide-listitem)');
2250
2321
  if (!isNullOrUndefined(firstLi)) {
2251
- this.fixedHeaderElement.innerHTML = firstLi.innerHTML;
2322
+ if (this.groupTemplate && this.isAngular && this.getModuleName() === 'multiselect') {
2323
+ this.updateFixedGroupTemplateHader(firstLi);
2324
+ }
2325
+ else {
2326
+ this.fixedHeaderElement.innerHTML = firstLi.innerHTML;
2327
+ }
2252
2328
  }
2253
2329
  }
2254
2330
  getSortedDataSource(dataSource) {
@@ -2801,6 +2877,8 @@ let DropDownBase = class DropDownBase extends Component {
2801
2877
  this.ulElement = null;
2802
2878
  this.list = null;
2803
2879
  this.enableRtlElements = null;
2880
+ this.groupHeaderItems = null;
2881
+ this.fiteredGroupHeaderItems = null;
2804
2882
  this.rippleFun = null;
2805
2883
  super.destroy();
2806
2884
  }
@@ -5159,7 +5237,14 @@ let DropDownList = class DropDownList extends DropDownBase {
5159
5237
  return;
5160
5238
  }
5161
5239
  if (this.getInitialData) {
5162
- this.updateActionCompleteDataValues(ulElement, list);
5240
+ if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {
5241
+ setTimeout(() => {
5242
+ this.updateActionCompleteDataValues(ulElement, list);
5243
+ }, 0);
5244
+ }
5245
+ else {
5246
+ this.updateActionCompleteDataValues(ulElement, list);
5247
+ }
5163
5248
  if (this.enableVirtualization) {
5164
5249
  this.updateSelectElementData(this.allowFiltering);
5165
5250
  }
@@ -8045,7 +8130,7 @@ let DropDownTree = class DropDownTree extends Component {
8045
8130
  if (this.isPopupOpen) {
8046
8131
  this.hidePopup();
8047
8132
  }
8048
- else if (!(e instanceof TouchEvent) && e.button !== 2) {
8133
+ else if (e.type === 'touchstart' || ('button' in e && e.button !== 2)) {
8049
8134
  this.focusIn(e);
8050
8135
  this.renderPopup();
8051
8136
  }
@@ -11072,8 +11157,8 @@ let ComboBox = class ComboBox extends DropDownList {
11072
11157
  const dataItem = this.getItemData();
11073
11158
  const value = this.allowObjectBinding ?
11074
11159
  this.getDataByValue(dataItem.value) : dataItem.value;
11075
- if ((this.value === dataItem.value && this.text !== dataItem.text) ||
11076
- (this.value !== dataItem.value && this.text === dataItem.text)) {
11160
+ if ((this.value === dataItem.value && this.text !== dataItem.text.toString()) ||
11161
+ (this.value !== dataItem.value && this.text === dataItem.text.toString())) {
11077
11162
  this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'value': value });
11078
11163
  }
11079
11164
  }
@@ -13517,7 +13602,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13517
13602
  return filterQuery;
13518
13603
  }
13519
13604
  }
13520
- if (this.filterAction) {
13605
+ if (this.isFilterAction) {
13521
13606
  if ((this.targetElement() !== null && !this.enableVirtualization) || (this.enableVirtualization &&
13522
13607
  this.targetElement() !== null && this.targetElement().trim() !== '')) {
13523
13608
  const dataType = this.typeOfData(this.dataSource).typeof;
@@ -13981,7 +14066,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13981
14066
  this.ulElement = this.mainList;
13982
14067
  }
13983
14068
  this.checkPlaceholderSize();
13984
- Input.createSpanElement(this.overAllWrapper, this.createElement);
14069
+ if (this.element.querySelector('.e-multiselect .e-float-text-content') === null) {
14070
+ Input.createSpanElement(this.overAllWrapper, this.createElement);
14071
+ }
13985
14072
  this.calculateWidth();
13986
14073
  if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] &&
13987
14074
  this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {
@@ -15163,7 +15250,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
15163
15250
  }
15164
15251
  else {
15165
15252
  this.setFloatLabelType();
15166
- Input.createSpanElement(this.overAllWrapper, this.createElement);
15253
+ if (this.element.querySelector('.e-multiselect .e-float-text-content') === null) {
15254
+ Input.createSpanElement(this.overAllWrapper, this.createElement);
15255
+ }
15167
15256
  }
15168
15257
  this.expandTextbox();
15169
15258
  }
@@ -16005,7 +16094,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
16005
16094
  this.clearAllCallback(e);
16006
16095
  }
16007
16096
  this.checkAndResetCache();
16008
- Input.createSpanElement(this.overAllWrapper, this.createElement);
16097
+ if (this.element.querySelector('.e-multiselect .e-float-text-content') === null) {
16098
+ Input.createSpanElement(this.overAllWrapper, this.createElement);
16099
+ }
16009
16100
  this.calculateWidth();
16010
16101
  if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {
16011
16102
  this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');
@@ -16159,7 +16250,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
16159
16250
  this.isFilterPrevented = eventArgs.cancel;
16160
16251
  if (!eventArgs.cancel) {
16161
16252
  if (!this.isFiltered && !eventArgs.preventDefaultAction) {
16162
- this.filterAction = true;
16253
+ this.isFilterAction = true;
16163
16254
  this.isFilteringAction = true;
16164
16255
  if (this.dataSource instanceof DataManager && this.allowCustomValue) {
16165
16256
  this.isCustomRendered = false;
@@ -16315,7 +16406,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
16315
16406
  initializeData() {
16316
16407
  this.mainListCollection = [];
16317
16408
  this.beforePopupOpen = false;
16318
- this.filterAction = false;
16409
+ this.isFilterAction = false;
16319
16410
  this.remoteFilterAction = false;
16320
16411
  this.isFirstClick = false;
16321
16412
  this.mobFilter = true;
@@ -16641,7 +16732,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
16641
16732
  }
16642
16733
  }
16643
16734
  updateDataList() {
16644
- if (this.mainList && this.ulElement && !(this.isFiltered || this.filterAction || this.targetElement().trim())) {
16735
+ if (this.mainList && this.ulElement && !(this.isFiltered || this.isFilterAction || this.targetElement().trim())) {
16645
16736
  const isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;
16646
16737
  const isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 &&
16647
16738
  this.ulElement.children[0].childElementCount > 0) &&
@@ -16731,6 +16822,11 @@ let MultiSelect = class MultiSelect extends DropDownBase {
16731
16822
  removeClass(selectedItems, className);
16732
16823
  while (temp > 0) {
16733
16824
  selectedItems[temp - 1].setAttribute('aria-selected', 'false');
16825
+ if (this.mode === 'CheckBox') {
16826
+ if (selectedItems && (selectedItems.length > (temp - 1))) {
16827
+ removeClass([selectedItems[temp - 1].firstElementChild.lastElementChild], 'e-check');
16828
+ }
16829
+ }
16734
16830
  temp--;
16735
16831
  }
16736
16832
  }
@@ -17874,7 +17970,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
17874
17970
  this.isDynamicDataChange = true;
17875
17971
  }
17876
17972
  if (this.getModuleName() === 'multiselect') {
17877
- this.filterAction = false;
17973
+ this.isFilterAction = false;
17878
17974
  this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);
17879
17975
  }
17880
17976
  for (const prop of Object.keys(newProp)) {
@@ -17979,7 +18075,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
17979
18075
  case 'floatLabelType':
17980
18076
  this.setFloatLabelType();
17981
18077
  this.addValidInputClass();
17982
- Input.createSpanElement(this.overAllWrapper, this.createElement);
18078
+ if (this.element.querySelector('.e-multiselect .e-float-text-content') === null) {
18079
+ Input.createSpanElement(this.overAllWrapper, this.createElement);
18080
+ }
17983
18081
  this.calculateWidth();
17984
18082
  if (!isNullOrUndefined(this.overAllWrapper) &&
17985
18083
  !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] &&
@@ -18568,7 +18666,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
18568
18666
  if (this.element.hasAttribute('data-val')) {
18569
18667
  this.element.setAttribute('data-val', 'false');
18570
18668
  }
18571
- Input.createSpanElement(this.overAllWrapper, this.createElement);
18669
+ if (this.element.querySelector('.e-multiselect .e-float-text-content') === null) {
18670
+ Input.createSpanElement(this.overAllWrapper, this.createElement);
18671
+ }
18572
18672
  this.calculateWidth();
18573
18673
  if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] &&
18574
18674
  this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {
@@ -19989,9 +20089,6 @@ let ListBox = ListBox_1 = class ListBox extends DropDownBase {
19989
20089
  this.unSelectAllText = l10nSelect.getConstant('unSelectAllText');
19990
20090
  this.popupWrapper = this.list;
19991
20091
  this.checkBoxSelectionModule.checkAllParent = null;
19992
- if (this.filterParent) {
19993
- this.filterParent = null;
19994
- }
19995
20092
  this.notify('selectAll', {});
19996
20093
  }
19997
20094
  }