@syncfusion/ej2-inputs 35.1.41 → 35.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.
@@ -40,6 +40,30 @@ var Input;
40
40
  let floatType;
41
41
  let isBindClearAction = true;
42
42
  let resizeHandlers = new Map();
43
+ const mutationObservers = new Map();
44
+ const observeElementDetach = (element, container, resizeHandler) => {
45
+ const parent = container.parentElement;
46
+ if (!parent) {
47
+ return;
48
+ }
49
+ const observer = new MutationObserver(() => {
50
+ if (!document.documentElement.contains(container)) {
51
+ window.removeEventListener('resize', resizeHandler);
52
+ resizeHandlers.delete(element);
53
+ observer.disconnect();
54
+ mutationObservers.delete(element);
55
+ }
56
+ });
57
+ let host = parent;
58
+ while (host && host.parentElement && host.parentElement !== document.body) {
59
+ host = host.parentElement;
60
+ }
61
+ observer.observe(host || parent, {
62
+ childList: true,
63
+ subtree: true
64
+ });
65
+ mutationObservers.set(element, observer);
66
+ };
43
67
  /**
44
68
  * Create a wrapper to input element with multiple span elements and set the basic properties to input based components.
45
69
  * ```
@@ -461,8 +485,11 @@ var Input;
461
485
  if (!isNullOrUndefined(resizeHandlers)) {
462
486
  const resizeHandler = resizeHandlers.get(args.element);
463
487
  if (resizeHandler) {
464
- window.removeEventListener('resize', resizeHandler);
465
- resizeHandlers.delete(args.element);
488
+ const observer = mutationObservers.get(args.element);
489
+ if (observer) {
490
+ observer.disconnect();
491
+ mutationObservers.delete(args.element);
492
+ }
466
493
  if (isReactMode) {
467
494
  resizeHandlers = null;
468
495
  }
@@ -605,6 +632,7 @@ var Input;
605
632
  };
606
633
  resizeHandlers.set(element, resizeHandler);
607
634
  window.addEventListener('resize', resizeHandler);
635
+ observeElementDetach(element, container, resizeHandler);
608
636
  }
609
637
  if (moduleName !== 'multiselect' && !_isElementVisible(element)) {
610
638
  return;
@@ -12458,11 +12486,26 @@ let ColorPicker = class ColorPicker extends Component {
12458
12486
  }
12459
12487
  firstPaletteFocus() {
12460
12488
  if (!select('.' + SELECT, this.container.children[0])) {
12461
- selectAll('.' + PALETTES, this.container)[0].focus();
12489
+ const firstTile = select('.' + TILE, this.container);
12490
+ if (firstTile) {
12491
+ firstTile.focus();
12492
+ }
12493
+ else {
12494
+ selectAll('.' + PALETTES, this.container)[0].focus();
12495
+ }
12462
12496
  }
12463
12497
  }
12464
12498
  appendPalette(colors, key, refEle) {
12465
- const palette = this.createElement('div', { className: PALETTES, attrs: { 'tabindex': '0', 'role': 'grid' } });
12499
+ const rowCount = Math.ceil(colors.length / this.columns);
12500
+ const palette = this.createElement('div', {
12501
+ className: PALETTES,
12502
+ attrs: {
12503
+ 'tabindex': '0', 'role': 'grid',
12504
+ 'aria-label': (key === 'recent-color' ? 'Recent ' : '') + 'Color palette, ' + rowCount +
12505
+ (rowCount === 1 ? ' row and ' : ' rows and ') + this.columns +
12506
+ (this.columns === 1 ? ' column' : ' columns')
12507
+ }
12508
+ });
12466
12509
  if (key === 'recent-color') {
12467
12510
  palette.classList.add('e-recent-palette');
12468
12511
  }
@@ -12475,34 +12518,51 @@ let ColorPicker = class ColorPicker extends Component {
12475
12518
  let row;
12476
12519
  let tile;
12477
12520
  let roundedColor;
12521
+ let rowIdx = 0;
12522
+ let colIdx;
12478
12523
  for (let i = 0, len = colors.length; i < len; i++) {
12479
12524
  if (i === 0 || i % this.columns === 0) {
12525
+ rowIdx++;
12526
+ colIdx = 0;
12480
12527
  row = this.createElement('div', {
12481
- className: 'e-row', attrs: { 'role': 'row' }
12528
+ className: 'e-row',
12529
+ attrs: { 'role': 'row', 'aria-label': 'Row ' + rowIdx }
12482
12530
  });
12483
12531
  palette.appendChild(row);
12484
12532
  }
12533
+ colIdx++;
12485
12534
  roundedColor = this.roundValue(colors[i]).toLowerCase();
12486
12535
  tile = this.createElement('span', {
12487
- className: TILE, attrs: { 'role': 'gridcell', 'aria-label': roundedColor, 'aria-selected': 'false' }
12536
+ className: TILE, attrs: {
12537
+ 'role': 'gridcell', 'aria-label': roundedColor, 'aria-selected': 'false',
12538
+ 'tabindex': '-1',
12539
+ 'aria-rowindex': rowIdx.toString(), 'aria-colindex': colIdx.toString()
12540
+ }
12488
12541
  });
12489
12542
  this.trigger('beforeTileRender', { element: tile, presetName: key, value: colors[i] });
12490
12543
  row.appendChild(tile);
12491
12544
  if (this.value === roundedColor && key !== 'recent-color') {
12492
12545
  this.addTileSelection(tile);
12493
- palette.focus();
12494
12546
  }
12495
12547
  tile.style.backgroundColor = this.convertToRgbString(this.hexToRgb(roundedColor));
12496
12548
  }
12549
+ const selectedTile = palette.querySelector('.' + TILE + '.' + SELECT);
12550
+ if (selectedTile) {
12551
+ selectedTile.focus();
12552
+ }
12497
12553
  }
12498
12554
  setNoColor() {
12499
12555
  const noColorEle = this.container.querySelector('.e-row').children[0];
12500
12556
  noColorEle.classList.add(NOCOLOR);
12557
+ noColorEle.setAttribute('aria-label', 'No color');
12501
12558
  if (!this.value) {
12502
12559
  noColorEle.classList.add(SELECT);
12503
- closest(noColorEle, '.' + PALETTES).focus();
12560
+ noColorEle.setAttribute('aria-selected', 'true');
12561
+ noColorEle.focus();
12562
+ }
12563
+ else {
12564
+ noColorEle.setAttribute('aria-selected', 'false');
12504
12565
  }
12505
- ['aria-selected', 'aria-label'].forEach((attr) => { noColorEle.removeAttribute(attr); });
12506
12566
  noColorEle.style.backgroundColor = '';
12507
12567
  }
12508
12568
  appendElement(ele, insertPos = 0) {
@@ -13358,10 +13418,12 @@ let ColorPicker = class ColorPicker extends Component {
13358
13418
  }
13359
13419
  }
13360
13420
  paletteKeyDown(e) {
13361
- const target = e.target;
13362
- if (!target.classList.contains(PALETTES)) {
13421
+ const eventTarget = e.target;
13422
+ if (!eventTarget.classList.contains(PALETTES) && !eventTarget.classList.contains(TILE)) {
13363
13423
  return;
13364
13424
  }
13425
+ const target = eventTarget.classList.contains(TILE) ?
13426
+ closest(eventTarget, '.' + PALETTES) : eventTarget;
13365
13427
  let selectedEle;
13366
13428
  let idx;
13367
13429
  const tiles = [].slice.call(selectAll('.' + TILE, target));
@@ -13419,8 +13481,13 @@ let ColorPicker = class ColorPicker extends Component {
13419
13481
  case 13:
13420
13482
  e.preventDefault();
13421
13483
  if (prevSelectedEle) {
13422
- const cValue = prevSelectedEle.getAttribute('aria-label');
13423
- this.enterKeyHandler(cValue ? cValue : '');
13484
+ if (prevSelectedEle.classList.contains(NOCOLOR)) {
13485
+ this.enterKeyHandler('');
13486
+ }
13487
+ else {
13488
+ const cValue = prevSelectedEle.getAttribute('aria-label');
13489
+ this.enterKeyHandler(cValue ? cValue : '');
13490
+ }
13424
13491
  }
13425
13492
  break;
13426
13493
  }
@@ -13441,6 +13508,9 @@ let ColorPicker = class ColorPicker extends Component {
13441
13508
  }
13442
13509
  this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb), true);
13443
13510
  }
13511
+ if (newEle) {
13512
+ newEle.focus();
13513
+ }
13444
13514
  }
13445
13515
  tilePosition(items, element, cIdx) {
13446
13516
  items = Array.prototype.slice.call(items);