@syncfusion/ej2-dropdowns 19.4.42 → 19.4.52

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.
Files changed (69) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +1 -1
  3. package/dist/ej2-dropdowns.umd.min.js +2 -2
  4. package/dist/ej2-dropdowns.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-dropdowns.es2015.js +73 -20
  6. package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
  7. package/dist/es6/ej2-dropdowns.es5.js +150 -92
  8. package/dist/es6/ej2-dropdowns.es5.js.map +1 -1
  9. package/dist/global/ej2-dropdowns.min.js +2 -2
  10. package/dist/global/ej2-dropdowns.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +11 -11
  13. package/src/drop-down-base/drop-down-base.js +18 -6
  14. package/src/drop-down-list/drop-down-list.js +107 -72
  15. package/src/list-box/list-box.js +4 -3
  16. package/src/multi-select/multi-select.js +18 -8
  17. package/styles/bootstrap-dark.css +18 -4
  18. package/styles/bootstrap.css +18 -4
  19. package/styles/bootstrap4.css +18 -4
  20. package/styles/bootstrap5-dark.css +18 -4
  21. package/styles/bootstrap5.css +18 -4
  22. package/styles/fabric-dark.css +18 -4
  23. package/styles/fabric.css +18 -4
  24. package/styles/highcontrast-light.css +18 -4
  25. package/styles/highcontrast.css +18 -4
  26. package/styles/list-box/_bootstrap-dark-definition.scss +3 -0
  27. package/styles/list-box/_bootstrap-definition.scss +3 -0
  28. package/styles/list-box/_bootstrap4-definition.scss +3 -0
  29. package/styles/list-box/_bootstrap5-definition.scss +3 -0
  30. package/styles/list-box/_fabric-dark-definition.scss +3 -0
  31. package/styles/list-box/_fabric-definition.scss +3 -0
  32. package/styles/list-box/_fluent-definition.scss +3 -0
  33. package/styles/list-box/_highcontrast-definition.scss +3 -0
  34. package/styles/list-box/_highcontrast-light-definition.scss +3 -0
  35. package/styles/list-box/_material-dark-definition.scss +3 -0
  36. package/styles/list-box/_material-definition.scss +3 -0
  37. package/styles/list-box/_tailwind-definition.scss +3 -0
  38. package/styles/list-box/_theme.scss +8 -0
  39. package/styles/list-box/bootstrap-dark.css +10 -0
  40. package/styles/list-box/bootstrap.css +10 -0
  41. package/styles/list-box/bootstrap4.css +10 -0
  42. package/styles/list-box/bootstrap5-dark.css +10 -0
  43. package/styles/list-box/bootstrap5.css +10 -0
  44. package/styles/list-box/fabric-dark.css +10 -0
  45. package/styles/list-box/fabric.css +10 -0
  46. package/styles/list-box/highcontrast-light.css +10 -0
  47. package/styles/list-box/highcontrast.css +10 -0
  48. package/styles/list-box/material-dark.css +10 -0
  49. package/styles/list-box/material.css +10 -0
  50. package/styles/list-box/tailwind-dark.css +10 -0
  51. package/styles/list-box/tailwind.css +10 -0
  52. package/styles/material-dark.css +18 -4
  53. package/styles/material.css +18 -4
  54. package/styles/multi-select/_layout.scss +6 -4
  55. package/styles/multi-select/bootstrap-dark.css +8 -4
  56. package/styles/multi-select/bootstrap.css +8 -4
  57. package/styles/multi-select/bootstrap4.css +8 -4
  58. package/styles/multi-select/bootstrap5-dark.css +8 -4
  59. package/styles/multi-select/bootstrap5.css +8 -4
  60. package/styles/multi-select/fabric-dark.css +8 -4
  61. package/styles/multi-select/fabric.css +8 -4
  62. package/styles/multi-select/highcontrast-light.css +8 -4
  63. package/styles/multi-select/highcontrast.css +8 -4
  64. package/styles/multi-select/material-dark.css +8 -4
  65. package/styles/multi-select/material.css +8 -4
  66. package/styles/multi-select/tailwind-dark.css +8 -4
  67. package/styles/multi-select/tailwind.css +8 -4
  68. package/styles/tailwind-dark.css +18 -4
  69. package/styles/tailwind.css +18 -4
@@ -216,6 +216,7 @@ const HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';
216
216
  const FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';
217
217
  const NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';
218
218
  const ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';
219
+ const HIDE_GROUPLIST = 'e-hide-group-header';
219
220
  /**
220
221
  * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components
221
222
  */
@@ -636,7 +637,7 @@ let DropDownBase = class DropDownBase extends Component {
636
637
  }
637
638
  this.bindChildItems(localDataArgs.result, ulElement, fields);
638
639
  setTimeout(() => {
639
- if (this.getModuleName() === 'multiselect' && this.itemTemplate != null && (ulElement.childElementCount > 0 && ulElement.children[0].childElementCount > 0)) {
640
+ if (this.getModuleName() === 'multiselect' && this.itemTemplate != null && (ulElement.childElementCount > 0 && (ulElement.children[0].childElementCount > 0 || (this.fields.groupBy && ulElement.children[1] && ulElement.children[1].childElementCount > 0)))) {
640
641
  this.updateDataList();
641
642
  }
642
643
  });
@@ -722,12 +723,23 @@ let DropDownBase = class DropDownBase extends Component {
722
723
  if (this.isReact) {
723
724
  this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);
724
725
  }
725
- this.list.innerHTML = '';
726
726
  this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;
727
- this.list.appendChild(ulElement);
728
- this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);
729
- this.ulElement = this.list.querySelector('ul');
730
- this.postRender(this.list, list, this.bindEvent);
727
+ if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {
728
+ for (let i = 0; i < ulElement.childElementCount; i++) {
729
+ if (ulElement.children[i].classList.contains('e-list-group-item')) {
730
+ if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML == "") {
731
+ addClass([ulElement.children[i]], HIDE_GROUPLIST);
732
+ }
733
+ }
734
+ }
735
+ }
736
+ if (!isNullOrUndefined(this.list)) {
737
+ this.list.innerHTML = '';
738
+ this.list.appendChild(ulElement);
739
+ this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);
740
+ this.ulElement = this.list.querySelector('ul');
741
+ this.postRender(this.list, list, this.bindEvent);
742
+ }
731
743
  }
732
744
  /* eslint-disable @typescript-eslint/no-unused-vars */
733
745
  postRender(listElement, list, bindEvent) {
@@ -772,7 +784,7 @@ let DropDownBase = class DropDownBase extends Component {
772
784
  const tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);
773
785
  //EJ2-55168- Group checkbox is not working with group template
774
786
  if (this.isGroupChecking) {
775
- for (var i = 0; i < tempHeaders.length; i++) {
787
+ for (let i = 0; i < tempHeaders.length; i++) {
776
788
  this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });
777
789
  }
778
790
  }
@@ -782,7 +794,7 @@ let DropDownBase = class DropDownBase extends Component {
782
794
  const tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);
783
795
  //EJ2-55168- Group checkbox is not working with group template
784
796
  if (this.isGroupChecking) {
785
- for (var i = 0; i < tempHeaders.length; i++) {
797
+ for (let i = 0; i < tempHeaders.length; i++) {
786
798
  this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });
787
799
  }
788
800
  }
@@ -3609,7 +3621,7 @@ let DropDownList = class DropDownList extends DropDownBase {
3609
3621
  checkCustomValue() {
3610
3622
  this.itemData = this.getDataByValue(this.value);
3611
3623
  const dataItem = this.getItemData();
3612
- this.setProperties({ 'value': dataItem.value, 'text': dataItem.text });
3624
+ this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });
3613
3625
  }
3614
3626
  updateInputFields() {
3615
3627
  if (this.getModuleName() === 'dropdownlist') {
@@ -3680,6 +3692,21 @@ let DropDownList = class DropDownList extends DropDownBase {
3680
3692
  this.getModuleName() === 'autocomplete' && this.listData.length > 100) {
3681
3693
  this.setSelectionData(newProp.text, oldProp.text, 'text');
3682
3694
  }
3695
+ else if (newProp.text && this.dataSource instanceof DataManager) {
3696
+ const listLength = this.getItems().length;
3697
+ const checkField = isNullOrUndefined(this.fields.text) ? this.fields.value : this.fields.text;
3698
+ this.typedString = '';
3699
+ this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField, 'equal', newProp.text)))
3700
+ .then((e) => {
3701
+ if (e.result.length > 0) {
3702
+ this.addItem(e.result, listLength);
3703
+ this.updateValues();
3704
+ }
3705
+ else {
3706
+ this.setOldText(oldProp.text);
3707
+ }
3708
+ });
3709
+ }
3683
3710
  else {
3684
3711
  this.setOldText(oldProp.text);
3685
3712
  }
@@ -3706,6 +3733,21 @@ let DropDownList = class DropDownList extends DropDownBase {
3706
3733
  this.getModuleName() === 'autocomplete' && this.listData.length > 100) {
3707
3734
  this.setSelectionData(newProp.value, oldProp.value, 'value');
3708
3735
  }
3736
+ else if (newProp.value && this.dataSource instanceof DataManager) {
3737
+ const listLength = this.getItems().length;
3738
+ const checkField = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;
3739
+ this.typedString = '';
3740
+ this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField, 'equal', newProp.value)))
3741
+ .then((e) => {
3742
+ if (e.result.length > 0) {
3743
+ this.addItem(e.result, listLength);
3744
+ this.updateValues();
3745
+ }
3746
+ else {
3747
+ this.setOldValue(oldProp.value);
3748
+ }
3749
+ });
3750
+ }
3709
3751
  else {
3710
3752
  this.setOldValue(oldProp.value);
3711
3753
  }
@@ -8908,7 +8950,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
8908
8950
  return ariaAttributes;
8909
8951
  }
8910
8952
  updateListARIA() {
8911
- attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });
8953
+ if (!isNullOrUndefined(this.ulElement)) {
8954
+ attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });
8955
+ }
8912
8956
  const disableStatus = (this.inputElement.disabled) ? true : false;
8913
8957
  attributes(this.inputElement, this.getAriaAttributes());
8914
8958
  if (disableStatus) {
@@ -11036,8 +11080,13 @@ let MultiSelect = class MultiSelect extends DropDownBase {
11036
11080
  }
11037
11081
  }
11038
11082
  updateDataList() {
11039
- if (this.mainList && this.ulElement && (this.mainList.childElementCount < this.ulElement.childElementCount || ((this.ulElement.childElementCount > 0 && this.ulElement.children[0].childElementCount > 0) && (this.mainList.children[0].childElementCount < this.ulElement.children[0].childElementCount)))) {
11040
- this.mainList = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;
11083
+ if (this.mainList && this.ulElement) {
11084
+ let isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;
11085
+ let isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 && this.ulElement.children[0].childElementCount > 0) && (this.mainList.children[0].childElementCount < this.ulElement.children[0].childElementCount));
11086
+ let isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 && (this.ulElement.children[0].childElementCount > 0 || (this.fields.groupBy && this.ulElement.children[1] && this.ulElement.children[1].childElementCount > 0));
11087
+ if (isDynamicGroupItemUpdate || isReactTemplateUpdate || isAngularTemplateUpdate) {
11088
+ this.mainList = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;
11089
+ }
11041
11090
  }
11042
11091
  }
11043
11092
  isValidLI(li) {
@@ -11384,11 +11433,13 @@ let MultiSelect = class MultiSelect extends DropDownBase {
11384
11433
  }
11385
11434
  }
11386
11435
  wireListEvents() {
11387
- EventHandler.add(document, 'mousedown', this.onDocumentClick, this);
11388
- EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);
11389
- EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);
11390
- EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);
11391
- EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);
11436
+ if (!isNullOrUndefined(this.list)) {
11437
+ EventHandler.add(document, 'mousedown', this.onDocumentClick, this);
11438
+ EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);
11439
+ EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);
11440
+ EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);
11441
+ EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);
11442
+ }
11392
11443
  }
11393
11444
  unwireListEvents() {
11394
11445
  EventHandler.remove(document, 'mousedown', this.onDocumentClick);
@@ -12509,6 +12560,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
12509
12560
  this.mainData = null;
12510
12561
  this.filterParent = null;
12511
12562
  this.ulElement = null;
12563
+ this.mainListCollection = null;
12512
12564
  super.destroy();
12513
12565
  const temp = ['readonly', 'aria-disabled', 'aria-placeholder', 'placeholder'];
12514
12566
  let length = temp.length;
@@ -13925,9 +13977,10 @@ let ListBox = ListBox_1 = class ListBox extends DropDownBase {
13925
13977
  }
13926
13978
  if (objValue === dataValue) {
13927
13979
  itemIdx = this.getIndexByValue(dataValue);
13928
- liCollections.push(liElement[itemIdx]);
13929
- removeIdxes.push(i);
13930
- removeLiIdxes.push(itemIdx);
13980
+ const idx = itemIdx === i ? itemIdx : i;
13981
+ liCollections.push(liElement[idx]);
13982
+ removeIdxes.push(idx);
13983
+ removeLiIdxes.push(idx);
13931
13984
  }
13932
13985
  }
13933
13986
  }