@syncfusion/ej2-dropdowns 33.2.10 → 33.2.15

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.
@@ -5991,7 +5991,7 @@ let DropDownList = class DropDownList extends DropDownBase {
5991
5991
  }, 5);
5992
5992
  }
5993
5993
  attributes(this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': this.element.id + '_popup', 'aria-controls': this.element.id });
5994
- if (this.getModuleName() !== 'dropdownlist' && this.list.classList.contains('e-nodata')) {
5994
+ if (this.list.classList.contains('e-nodata')) {
5995
5995
  attributes(this.targetElement(), { 'aria-activedescendant': 'no-record' });
5996
5996
  this.popupContentElement.setAttribute('role', 'status');
5997
5997
  this.popupContentElement.setAttribute('id', 'no-record');
@@ -6184,9 +6184,7 @@ let DropDownList = class DropDownList extends DropDownBase {
6184
6184
  ulElement = null;
6185
6185
  },
6186
6186
  targetExitViewport: () => {
6187
- if (!Browser.isDevice) {
6188
- this.hidePopup();
6189
- }
6187
+ this.hidePopup();
6190
6188
  }
6191
6189
  });
6192
6190
  }
@@ -6796,8 +6794,8 @@ let DropDownList = class DropDownList extends DropDownBase {
6796
6794
  if (!this.targetElement().hasAttribute('aria-label')) {
6797
6795
  attributes(this.targetElement(), { 'aria-label': this.getModuleName() });
6798
6796
  }
6799
- if (!this.inputElement.hasAttribute('aria-label')) {
6800
- this.inputElement.setAttribute('aria-label', this.getModuleName());
6797
+ if (!this.inputElement.hasAttribute('aria-labelledby')) {
6798
+ this.inputElement.setAttribute('aria-labelledby', this.hiddenElement.id);
6801
6799
  }
6802
6800
  this.inputElement.setAttribute('aria-expanded', 'false');
6803
6801
  }
@@ -7153,6 +7151,9 @@ let DropDownList = class DropDownList extends DropDownBase {
7153
7151
  }
7154
7152
  break;
7155
7153
  case 'value':
7154
+ if (this.isAngular && closest(this.inputElement, 'form') && oldProp.value === newProp.value) {
7155
+ this.preventChange = true;
7156
+ }
7156
7157
  if (this.fields.disabled) {
7157
7158
  newProp.value = newProp.value != null && !this.isDisableItemValue(newProp.value) ? newProp.value : null;
7158
7159
  }
@@ -13416,6 +13417,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13416
13417
  this.selectAllEventEle = [];
13417
13418
  this.preventSetCurrentData = false;
13418
13419
  this.isSelectAllLoop = false;
13420
+ this.isInitialFocusAnnouncementDone = false;
13419
13421
  this.scrollFocusStatus = false;
13420
13422
  this.keyDownStatus = false;
13421
13423
  }
@@ -14651,6 +14653,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
14651
14653
  return;
14652
14654
  }
14653
14655
  this.inputFocus = false;
14656
+ this.isInitialFocusAnnouncementDone = false;
14654
14657
  this.overAllWrapper.classList.remove(FOCUS);
14655
14658
  if (this.addTagOnBlur) {
14656
14659
  const dataChecks = this.getValueByText(this.inputElement.value, this.ignoreCase, this.ignoreAccent);
@@ -14917,6 +14920,10 @@ let MultiSelect = class MultiSelect extends DropDownBase {
14917
14920
  this.trigger('focus', args);
14918
14921
  this.focused = false;
14919
14922
  }
14923
+ if (!this.isInitialFocusAnnouncementDone) {
14924
+ this.announceInitialFocusInstruction();
14925
+ this.isInitialFocusAnnouncementDone = true;
14926
+ }
14920
14927
  if (!this.overAllWrapper.classList.contains(FOCUS)) {
14921
14928
  this.overAllWrapper.classList.add(FOCUS);
14922
14929
  }
@@ -15638,6 +15645,24 @@ let MultiSelect = class MultiSelect extends DropDownBase {
15638
15645
  }
15639
15646
  this.checkPlaceholderSize();
15640
15647
  }
15648
+ announceSelection(text) {
15649
+ if (text && this.chipAnnouncerLiveRegion) {
15650
+ const count = this.value ? this.value.length : 0;
15651
+ const announcement = `${text} added to selection ${count} items selected`;
15652
+ this.chipAnnouncerLiveRegion.textContent = announcement;
15653
+ }
15654
+ }
15655
+ announceInitialFocusInstruction() {
15656
+ if (this.chipAnnouncerLiveRegion) {
15657
+ const instruction = 'Use arrow keys to open popup and navigate items, Enter to select, and Backspace to delete selections';
15658
+ this.chipAnnouncerLiveRegion.textContent = '';
15659
+ setTimeout(() => {
15660
+ if (this.chipAnnouncerLiveRegion) {
15661
+ this.chipAnnouncerLiveRegion.textContent = instruction;
15662
+ }
15663
+ }, 200);
15664
+ }
15665
+ }
15641
15666
  moveByTop(state) {
15642
15667
  const elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);
15643
15668
  let index;
@@ -15841,7 +15866,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
15841
15866
  element.setAttribute('aria-hidden', 'true');
15842
15867
  const chipTitle = element.getAttribute('title');
15843
15868
  if (chipTitle && this.chipAnnouncerLiveRegion) {
15844
- const announcement = `${chipTitle} focused. Press Backspace to remove`;
15869
+ const announcement = chipTitle.length > 500
15870
+ ? 'Chip focused. Press Backspace to remove'
15871
+ : `${chipTitle} focused. Press Backspace to remove`;
15845
15872
  this.chipAnnouncerLiveRegion.textContent = announcement;
15846
15873
  }
15847
15874
  if (!isNullOrUndefined(this.inputElement) && element.id) {
@@ -16210,6 +16237,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
16210
16237
  if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {
16211
16238
  this.addChip(text, value, eve);
16212
16239
  }
16240
+ else {
16241
+ this.announceSelection(text);
16242
+ }
16213
16243
  if (this.hideSelectedItem && this.fields.groupBy) {
16214
16244
  this.hideGroupItem(value);
16215
16245
  }
@@ -16420,6 +16450,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
16420
16450
  }
16421
16451
  EventHandler.add(chipClose, 'mousedown', this.onChipRemove, this);
16422
16452
  this.chipCollectionWrapper.appendChild(chip);
16453
+ this.announceSelection(data);
16423
16454
  if (!this.changeOnBlur && e) {
16424
16455
  this.updateValueState(e, this.value, this.tempValues);
16425
16456
  }
@@ -20918,8 +20949,10 @@ class CheckBoxSelection {
20918
20949
  }
20919
20950
  }
20920
20951
  setLocale(unSelect) {
20921
- if (this.parent.selectAllText !== 'Select All' || this.parent.unSelectAllText !== 'Unselect All') {
20922
- const template = unSelect ? this.parent.unSelectAllText : this.parent.selectAllText;
20952
+ const template = unSelect ? this.parent.unSelectAllText : this.parent.selectAllText;
20953
+ const isListBox = this.parent.element.classList.contains('e-listbox');
20954
+ if ((this.parent.selectAllText !== 'Select All' || this.parent.unSelectAllText !== 'Unselect All') &&
20955
+ (!isListBox || typeof template === 'function' || (typeof template === 'string' && /<[a-z][\s\S]*>/i.test(template)))) {
20923
20956
  this.selectAllSpan.textContent = '';
20924
20957
  const compiledString = compile(template);
20925
20958
  const templateName = unSelect ? 'unSelectAllText' : 'selectAllText';