@syncfusion/ej2-inputs 35.1.37 → 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
  }
@@ -480,7 +507,9 @@ var Input;
480
507
  const parent = getParentNode(element);
481
508
  if (parent.classList.contains(CLASSNAMES.FLOATINPUT) && floatLabelType === 'Auto') {
482
509
  const label = getParentNode(element).getElementsByClassName('e-float-text')[0];
483
- updateLabelState(element.value, label, element);
510
+ if (label) {
511
+ updateLabelState(element.value, label, element);
512
+ }
484
513
  }
485
514
  }
486
515
  /**
@@ -603,6 +632,7 @@ var Input;
603
632
  };
604
633
  resizeHandlers.set(element, resizeHandler);
605
634
  window.addEventListener('resize', resizeHandler);
635
+ observeElementDetach(element, container, resizeHandler);
606
636
  }
607
637
  if (moduleName !== 'multiselect' && !_isElementVisible(element)) {
608
638
  return;
@@ -12456,11 +12486,26 @@ let ColorPicker = class ColorPicker extends Component {
12456
12486
  }
12457
12487
  firstPaletteFocus() {
12458
12488
  if (!select('.' + SELECT, this.container.children[0])) {
12459
- 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
+ }
12460
12496
  }
12461
12497
  }
12462
12498
  appendPalette(colors, key, refEle) {
12463
- 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
+ });
12464
12509
  if (key === 'recent-color') {
12465
12510
  palette.classList.add('e-recent-palette');
12466
12511
  }
@@ -12473,34 +12518,51 @@ let ColorPicker = class ColorPicker extends Component {
12473
12518
  let row;
12474
12519
  let tile;
12475
12520
  let roundedColor;
12521
+ let rowIdx = 0;
12522
+ let colIdx;
12476
12523
  for (let i = 0, len = colors.length; i < len; i++) {
12477
12524
  if (i === 0 || i % this.columns === 0) {
12525
+ rowIdx++;
12526
+ colIdx = 0;
12478
12527
  row = this.createElement('div', {
12479
- className: 'e-row', attrs: { 'role': 'row' }
12528
+ className: 'e-row',
12529
+ attrs: { 'role': 'row', 'aria-label': 'Row ' + rowIdx }
12480
12530
  });
12481
12531
  palette.appendChild(row);
12482
12532
  }
12533
+ colIdx++;
12483
12534
  roundedColor = this.roundValue(colors[i]).toLowerCase();
12484
12535
  tile = this.createElement('span', {
12485
- 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
+ }
12486
12541
  });
12487
12542
  this.trigger('beforeTileRender', { element: tile, presetName: key, value: colors[i] });
12488
12543
  row.appendChild(tile);
12489
12544
  if (this.value === roundedColor && key !== 'recent-color') {
12490
12545
  this.addTileSelection(tile);
12491
- palette.focus();
12492
12546
  }
12493
12547
  tile.style.backgroundColor = this.convertToRgbString(this.hexToRgb(roundedColor));
12494
12548
  }
12549
+ const selectedTile = palette.querySelector('.' + TILE + '.' + SELECT);
12550
+ if (selectedTile) {
12551
+ selectedTile.focus();
12552
+ }
12495
12553
  }
12496
12554
  setNoColor() {
12497
12555
  const noColorEle = this.container.querySelector('.e-row').children[0];
12498
12556
  noColorEle.classList.add(NOCOLOR);
12557
+ noColorEle.setAttribute('aria-label', 'No color');
12499
12558
  if (!this.value) {
12500
12559
  noColorEle.classList.add(SELECT);
12501
- closest(noColorEle, '.' + PALETTES).focus();
12560
+ noColorEle.setAttribute('aria-selected', 'true');
12561
+ noColorEle.focus();
12562
+ }
12563
+ else {
12564
+ noColorEle.setAttribute('aria-selected', 'false');
12502
12565
  }
12503
- ['aria-selected', 'aria-label'].forEach((attr) => { noColorEle.removeAttribute(attr); });
12504
12566
  noColorEle.style.backgroundColor = '';
12505
12567
  }
12506
12568
  appendElement(ele, insertPos = 0) {
@@ -13073,7 +13135,7 @@ let ColorPicker = class ColorPicker extends Component {
13073
13135
  else {
13074
13136
  this.setProperties({ 'value': hex }, true);
13075
13137
  }
13076
- this.element.value = hex ? hex : '#000000';
13138
+ this.element.value = hex ? hex : (this.mode === 'Palette' && !this.modeSwitcher && this.noColor ? '' : '#000000');
13077
13139
  }
13078
13140
  handlerDragPosition(prob, value, e) {
13079
13141
  e.preventDefault();
@@ -13356,10 +13418,12 @@ let ColorPicker = class ColorPicker extends Component {
13356
13418
  }
13357
13419
  }
13358
13420
  paletteKeyDown(e) {
13359
- const target = e.target;
13360
- if (!target.classList.contains(PALETTES)) {
13421
+ const eventTarget = e.target;
13422
+ if (!eventTarget.classList.contains(PALETTES) && !eventTarget.classList.contains(TILE)) {
13361
13423
  return;
13362
13424
  }
13425
+ const target = eventTarget.classList.contains(TILE) ?
13426
+ closest(eventTarget, '.' + PALETTES) : eventTarget;
13363
13427
  let selectedEle;
13364
13428
  let idx;
13365
13429
  const tiles = [].slice.call(selectAll('.' + TILE, target));
@@ -13417,8 +13481,13 @@ let ColorPicker = class ColorPicker extends Component {
13417
13481
  case 13:
13418
13482
  e.preventDefault();
13419
13483
  if (prevSelectedEle) {
13420
- const cValue = prevSelectedEle.getAttribute('aria-label');
13421
- 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
+ }
13422
13491
  }
13423
13492
  break;
13424
13493
  }
@@ -13439,6 +13508,9 @@ let ColorPicker = class ColorPicker extends Component {
13439
13508
  }
13440
13509
  this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb), true);
13441
13510
  }
13511
+ if (newEle) {
13512
+ newEle.focus();
13513
+ }
13442
13514
  }
13443
13515
  tilePosition(items, element, cIdx) {
13444
13516
  items = Array.prototype.slice.call(items);