@syncfusion/ej2-navigations 24.2.4 → 25.1.35-579988

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 (137) hide show
  1. package/CHANGELOG.md +4 -34
  2. package/dist/ej2-navigations.min.js +2 -2
  3. package/dist/ej2-navigations.umd.min.js +2 -2
  4. package/dist/ej2-navigations.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-navigations.es2015.js +154 -138
  6. package/dist/es6/ej2-navigations.es2015.js.map +1 -1
  7. package/dist/es6/ej2-navigations.es5.js +154 -138
  8. package/dist/es6/ej2-navigations.es5.js.map +1 -1
  9. package/dist/global/ej2-navigations.min.js +2 -2
  10. package/dist/global/ej2-navigations.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +12 -12
  13. package/src/accordion/accordion-model.d.ts +3 -2
  14. package/src/accordion/accordion.d.ts +3 -2
  15. package/src/accordion/accordion.js +7 -7
  16. package/src/breadcrumb/breadcrumb.js +2 -1
  17. package/src/common/menu-base-model.d.ts +3 -2
  18. package/src/common/menu-base.d.ts +3 -2
  19. package/src/common/menu-base.js +101 -101
  20. package/src/menu/menu-model.d.ts +3 -2
  21. package/src/menu/menu.d.ts +3 -2
  22. package/src/menu/menu.js +1 -1
  23. package/src/stepper/stepper.js +1 -2
  24. package/src/tab/tab-model.d.ts +7 -21
  25. package/src/tab/tab.d.ts +7 -21
  26. package/src/tab/tab.js +5 -5
  27. package/src/toolbar/toolbar.js +25 -7
  28. package/src/treeview/treeview-model.d.ts +4 -7
  29. package/src/treeview/treeview.d.ts +3 -3
  30. package/src/treeview/treeview.js +14 -16
  31. package/styles/accordion/_bds-definition.scss +180 -0
  32. package/styles/accordion/_material-definition.scss +1 -1
  33. package/styles/accordion/icons/_bds.scss +17 -0
  34. package/styles/accordion/material.css +1 -1
  35. package/styles/appbar/_bds-definition.scss +27 -0
  36. package/styles/bootstrap-dark.css +38 -8
  37. package/styles/bootstrap.css +34 -4
  38. package/styles/bootstrap4.css +38 -8
  39. package/styles/bootstrap5-dark.css +34 -4
  40. package/styles/bootstrap5.css +34 -4
  41. package/styles/breadcrumb/_bds-definition.scss +60 -0
  42. package/styles/breadcrumb/icons/_bds.scss +25 -0
  43. package/styles/carousel/_bds-definition.scss +27 -0
  44. package/styles/carousel/_layout.scss +5 -0
  45. package/styles/carousel/bootstrap-dark.css +6 -0
  46. package/styles/carousel/bootstrap.css +6 -0
  47. package/styles/carousel/bootstrap4.css +6 -0
  48. package/styles/carousel/bootstrap5-dark.css +6 -0
  49. package/styles/carousel/bootstrap5.css +6 -0
  50. package/styles/carousel/fabric-dark.css +6 -0
  51. package/styles/carousel/fabric.css +6 -0
  52. package/styles/carousel/fluent-dark.css +6 -0
  53. package/styles/carousel/fluent.css +6 -0
  54. package/styles/carousel/highcontrast-light.css +6 -0
  55. package/styles/carousel/highcontrast.css +6 -0
  56. package/styles/carousel/icons/_bds.scss +30 -0
  57. package/styles/carousel/material-dark.css +6 -0
  58. package/styles/carousel/material.css +6 -0
  59. package/styles/carousel/material3-dark.css +6 -0
  60. package/styles/carousel/material3.css +6 -0
  61. package/styles/carousel/tailwind-dark.css +6 -0
  62. package/styles/carousel/tailwind.css +6 -0
  63. package/styles/context-menu/_bds-definition.scss +65 -0
  64. package/styles/context-menu/icons/_bds.scss +33 -0
  65. package/styles/fabric-dark.css +34 -4
  66. package/styles/fabric.css +34 -4
  67. package/styles/fluent-dark.css +45 -15
  68. package/styles/fluent.css +45 -15
  69. package/styles/h-scroll/_bds-definition.scss +83 -0
  70. package/styles/h-scroll/icons/_bds.scss +49 -0
  71. package/styles/highcontrast-light.css +34 -4
  72. package/styles/highcontrast.css +34 -4
  73. package/styles/material-dark.css +34 -4
  74. package/styles/material.css +35 -5
  75. package/styles/material3-dark.css +34 -4
  76. package/styles/material3.css +34 -4
  77. package/styles/menu/_bds-definition.scss +66 -0
  78. package/styles/menu/icons/_bds.scss +134 -0
  79. package/styles/pager/_bds-definition.scss +152 -0
  80. package/styles/pager/icons/_bds.scss +50 -0
  81. package/styles/sidebar/_bds-definition.scss +45 -0
  82. package/styles/stepper/_bds-definition.scss +79 -0
  83. package/styles/stepper/_layout.scss +1 -0
  84. package/styles/stepper/bootstrap-dark.css +3 -0
  85. package/styles/stepper/bootstrap.css +3 -0
  86. package/styles/stepper/bootstrap4.css +3 -0
  87. package/styles/stepper/bootstrap5-dark.css +3 -0
  88. package/styles/stepper/bootstrap5.css +3 -0
  89. package/styles/stepper/fabric-dark.css +3 -0
  90. package/styles/stepper/fabric.css +3 -0
  91. package/styles/stepper/fluent-dark.css +3 -0
  92. package/styles/stepper/fluent.css +3 -0
  93. package/styles/stepper/highcontrast-light.css +3 -0
  94. package/styles/stepper/highcontrast.css +3 -0
  95. package/styles/stepper/icons/_bds.scss +5 -0
  96. package/styles/stepper/material-dark.css +3 -0
  97. package/styles/stepper/material.css +3 -0
  98. package/styles/stepper/material3-dark.css +3 -0
  99. package/styles/stepper/material3.css +3 -0
  100. package/styles/stepper/tailwind-dark.css +3 -0
  101. package/styles/stepper/tailwind.css +3 -0
  102. package/styles/tab/_bds-definition.scss +701 -0
  103. package/styles/tab/icons/_bds.scss +92 -0
  104. package/styles/tailwind-dark.css +36 -6
  105. package/styles/tailwind.css +34 -4
  106. package/styles/toolbar/_bds-definition.scss +215 -0
  107. package/styles/toolbar/_bootstrap-dark-definition.scss +3 -3
  108. package/styles/toolbar/_bootstrap4-definition.scss +3 -3
  109. package/styles/toolbar/_fluent-definition.scss +3 -3
  110. package/styles/toolbar/_layout.scss +39 -5
  111. package/styles/toolbar/bootstrap-dark.css +29 -8
  112. package/styles/toolbar/bootstrap.css +25 -4
  113. package/styles/toolbar/bootstrap4.css +29 -8
  114. package/styles/toolbar/bootstrap5-dark.css +25 -4
  115. package/styles/toolbar/bootstrap5.css +25 -4
  116. package/styles/toolbar/fabric-dark.css +25 -4
  117. package/styles/toolbar/fabric.css +25 -4
  118. package/styles/toolbar/fluent-dark.css +36 -15
  119. package/styles/toolbar/fluent.css +36 -15
  120. package/styles/toolbar/highcontrast-light.css +25 -4
  121. package/styles/toolbar/highcontrast.css +25 -4
  122. package/styles/toolbar/icons/_bds.scss +16 -0
  123. package/styles/toolbar/material-dark.css +25 -4
  124. package/styles/toolbar/material.css +25 -4
  125. package/styles/toolbar/material3-dark.css +25 -4
  126. package/styles/toolbar/material3.css +25 -4
  127. package/styles/toolbar/tailwind-dark.css +25 -4
  128. package/styles/toolbar/tailwind.css +25 -4
  129. package/styles/treeview/_bds-definition.scss +132 -0
  130. package/styles/treeview/_tailwind-definition.scss +1 -1
  131. package/styles/treeview/_theme.scss +1 -1
  132. package/styles/treeview/icons/_bds.scss +43 -0
  133. package/styles/treeview/tailwind-dark.css +2 -2
  134. package/styles/v-scroll/_bds-definition.scss +49 -0
  135. package/styles/v-scroll/icons/_bds.scss +27 -0
  136. package/.github/PULL_REQUEST_TEMPLATE/Bug.md +0 -63
  137. package/.github/PULL_REQUEST_TEMPLATE/feature.md +0 -39
@@ -1288,9 +1288,9 @@ let MenuBase = class MenuBase extends Component {
1288
1288
  }
1289
1289
  this.targetElement = target;
1290
1290
  if (!this.isMenu) {
1291
- EventHandler.add(this.targetElement, 'mousewheel DOMMouseScroll', this.scrollHandler, this);
1291
+ EventHandler.add(this.targetElement, 'scroll', this.scrollHandler, this);
1292
1292
  for (const parent of getScrollableParent(this.targetElement)) {
1293
- EventHandler.add(parent, 'mousewheel DOMMouseScroll', this.scrollHandler, this);
1293
+ EventHandler.add(parent, 'scroll', this.scrollHandler, this);
1294
1294
  }
1295
1295
  }
1296
1296
  }
@@ -2058,9 +2058,11 @@ let MenuBase = class MenuBase extends Component {
2058
2058
  }
2059
2059
  li.focus();
2060
2060
  cul = this.getUlByNavIdx();
2061
- const index = this.isValidLI(cul.children[0], 0, this.action);
2062
- cul.children[index].classList.add(FOCUSED);
2063
- cul.children[index].focus();
2061
+ if (cul) {
2062
+ const index = this.isValidLI(cul.children[0], 0, this.action);
2063
+ cul.children[index].classList.add(FOCUSED);
2064
+ cul.children[index].focus();
2065
+ }
2064
2066
  }
2065
2067
  });
2066
2068
  }
@@ -2375,107 +2377,103 @@ let MenuBase = class MenuBase extends Component {
2375
2377
  }
2376
2378
  }
2377
2379
  clickHandler(e) {
2378
- if (this.isTapHold) {
2379
- this.isTapHold = false;
2380
+ this.isTapHold = this.isTapHold ? false : this.isTapHold;
2381
+ const wrapper = this.getWrapper();
2382
+ const trgt = e.target;
2383
+ const cli = this.cli = this.getLI(trgt);
2384
+ const regex = new RegExp('-ej2menu-(.*)-popup');
2385
+ const cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;
2386
+ const isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0
2387
+ : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);
2388
+ if (Browser.isDevice && this.isMenu) {
2389
+ this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));
2390
+ this.mouseDownHandler(e);
2380
2391
  }
2381
- else {
2382
- const wrapper = this.getWrapper();
2383
- const trgt = e.target;
2384
- const cli = this.cli = this.getLI(trgt);
2385
- const regex = new RegExp('-ej2menu-(.*)-popup');
2386
- const cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;
2387
- const isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0
2388
- : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);
2389
- if (Browser.isDevice && this.isMenu) {
2390
- this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));
2391
- this.mouseDownHandler(e);
2392
- }
2393
- if (cli && cliWrapper && this.isMenu) {
2394
- const cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;
2395
- if (this.element.id !== cliWrapperId) {
2396
- return;
2397
- }
2392
+ if (cli && cliWrapper && this.isMenu) {
2393
+ const cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;
2394
+ if (this.element.id !== cliWrapperId) {
2395
+ return;
2398
2396
  }
2399
- if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {
2400
- this.setLISelected(cli);
2401
- const navIdx = this.getIndex(cli.id, true);
2402
- const item = this.getItem(navIdx);
2403
- const eventArgs = { element: cli, item: item, event: e };
2404
- this.trigger('select', eventArgs);
2397
+ }
2398
+ if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {
2399
+ this.setLISelected(cli);
2400
+ const navIdx = this.getIndex(cli.id, true);
2401
+ const item = this.getItem(navIdx);
2402
+ const eventArgs = { element: cli, item: item, event: e };
2403
+ this.trigger('select', eventArgs);
2404
+ }
2405
+ if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {
2406
+ let ul;
2407
+ if (cli.classList.contains(HEADER)) {
2408
+ ul = wrapper.children[this.navIdx.length - 1];
2409
+ this.toggleAnimation(ul);
2410
+ const sli = this.getLIByClass(ul, SELECTED);
2411
+ if (sli) {
2412
+ sli.classList.remove(SELECTED);
2413
+ }
2414
+ detach(cli.parentNode);
2415
+ this.navIdx.pop();
2405
2416
  }
2406
- if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {
2407
- let ul;
2408
- if (cli.classList.contains(HEADER)) {
2409
- ul = wrapper.children[this.navIdx.length - 1];
2410
- this.toggleAnimation(ul);
2411
- const sli = this.getLIByClass(ul, SELECTED);
2412
- if (sli) {
2413
- sli.classList.remove(SELECTED);
2417
+ else {
2418
+ if (!cli.classList.contains(SEPARATOR)) {
2419
+ this.showSubMenu = true;
2420
+ const cul = cli.parentNode;
2421
+ if (isNullOrUndefined(cul)) {
2422
+ return;
2414
2423
  }
2415
- detach(cli.parentNode);
2416
- this.navIdx.pop();
2417
- }
2418
- else {
2419
- if (!cli.classList.contains(SEPARATOR)) {
2420
- this.showSubMenu = true;
2421
- const cul = cli.parentNode;
2422
- if (isNullOrUndefined(cul)) {
2423
- return;
2424
+ this.cliIdx = this.getIdx(cul, cli);
2425
+ if (this.isMenu || !Browser.isDevice) {
2426
+ const culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))
2427
+ : this.getIdx(wrapper, cul);
2428
+ if (this.navIdx[culIdx] === this.cliIdx) {
2429
+ this.showSubMenu = false;
2424
2430
  }
2425
- this.cliIdx = this.getIdx(cul, cli);
2426
- if (this.isMenu || !Browser.isDevice) {
2427
- const culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))
2428
- : this.getIdx(wrapper, cul);
2429
- if (this.navIdx[culIdx] === this.cliIdx) {
2430
- this.showSubMenu = false;
2431
+ if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {
2432
+ const sli = this.getLIByClass(cul, SELECTED);
2433
+ if (sli) {
2434
+ sli.classList.remove(SELECTED);
2431
2435
  }
2432
- if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {
2433
- const sli = this.getLIByClass(cul, SELECTED);
2434
- if (sli) {
2435
- sli.classList.remove(SELECTED);
2436
- }
2437
- this.isClosed = true;
2438
- this.keyType = 'click';
2439
- if (this.showItemOnClick) {
2440
- this.setLISelected(cli);
2441
- }
2442
- this.closeMenu(culIdx + 1, e);
2443
- if (this.showItemOnClick) {
2444
- this.setLISelected(cli);
2445
- }
2436
+ this.isClosed = true;
2437
+ this.keyType = 'click';
2438
+ if (this.showItemOnClick) {
2439
+ this.setLISelected(cli);
2440
+ }
2441
+ this.closeMenu(culIdx + 1, e);
2442
+ if (this.showItemOnClick) {
2443
+ this.setLISelected(cli);
2446
2444
  }
2447
2445
  }
2448
- if (!this.isClosed) {
2449
- this.afterCloseMenu(e);
2450
- }
2451
- this.isClosed = false;
2452
2446
  }
2447
+ if (!this.isClosed) {
2448
+ this.afterCloseMenu(e);
2449
+ }
2450
+ this.isClosed = false;
2453
2451
  }
2454
2452
  }
2455
- else {
2456
- if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {
2457
- const popupEle = closest(trgt, '.' + POPUP);
2458
- const cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;
2459
- if (cIdx < this.navIdx.length) {
2460
- this.closeMenu(cIdx + 1, e);
2461
- if (popupEle) {
2462
- this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);
2463
- }
2453
+ }
2454
+ else {
2455
+ if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {
2456
+ const popupEle = closest(trgt, '.' + POPUP);
2457
+ const cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;
2458
+ if (cIdx < this.navIdx.length) {
2459
+ this.closeMenu(cIdx + 1, e);
2460
+ if (popupEle) {
2461
+ this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);
2464
2462
  }
2465
2463
  }
2466
- else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'
2467
- && trgt.classList.contains('e-menu-icon')) {
2468
- this.menuHeaderClickHandler(e);
2469
- }
2470
- else {
2471
- if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&
2472
- !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {
2473
- if (!cli) {
2474
- this.removeLIStateByClass([SELECTED], [wrapper]);
2475
- }
2476
- if (!cli || !cli.querySelector('.' + CARET)) {
2477
- this.closeMenu(null, e);
2478
- }
2464
+ }
2465
+ else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'
2466
+ && trgt.classList.contains('e-menu-icon')) {
2467
+ this.menuHeaderClickHandler(e);
2468
+ }
2469
+ else {
2470
+ if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&
2471
+ !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {
2472
+ if (!cli) {
2473
+ this.removeLIStateByClass([SELECTED], [wrapper]);
2474
+ }
2475
+ if (!cli || !cli.querySelector('.' + CARET)) {
2476
+ this.closeMenu(null, e);
2479
2477
  }
2480
2478
  }
2481
2479
  }
@@ -2533,9 +2531,11 @@ let MenuBase = class MenuBase extends Component {
2533
2531
  li.classList.add(SELECTED);
2534
2532
  }
2535
2533
  getLIByClass(ul, classname) {
2536
- for (let i = 0, len = ul.children.length; i < len; i++) {
2537
- if (ul.children[i].classList.contains(classname)) {
2538
- return ul.children[i];
2534
+ if (ul) {
2535
+ for (let i = 0, len = ul.children.length; i < len; i++) {
2536
+ if (ul.children[i].classList.contains(classname)) {
2537
+ return ul.children[i];
2538
+ }
2539
2539
  }
2540
2540
  }
2541
2541
  return null;
@@ -2819,9 +2819,9 @@ let MenuBase = class MenuBase extends Component {
2819
2819
  }
2820
2820
  }
2821
2821
  if (!this.isMenu) {
2822
- EventHandler.remove(this.targetElement, 'mousewheel DOMMouseScroll', this.scrollHandler);
2822
+ EventHandler.remove(this.targetElement, 'scroll', this.scrollHandler);
2823
2823
  for (const parent of getScrollableParent(this.targetElement)) {
2824
- EventHandler.remove(parent, 'mousewheel DOMMouseScroll', this.scrollHandler);
2824
+ EventHandler.remove(parent, 'scroll', this.scrollHandler);
2825
2825
  }
2826
2826
  }
2827
2827
  }
@@ -3289,7 +3289,7 @@ __decorate$2([
3289
3289
  Property(false)
3290
3290
  ], MenuBase.prototype, "enableScrolling", void 0);
3291
3291
  __decorate$2([
3292
- Property(false)
3292
+ Property(true)
3293
3293
  ], MenuBase.prototype, "enableHtmlSanitizer", void 0);
3294
3294
  __decorate$2([
3295
3295
  Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)
@@ -4348,7 +4348,9 @@ let Toolbar = class Toolbar extends Component {
4348
4348
  popup.appendTo(ele);
4349
4349
  EventHandler.add(document, 'scroll', this.docEvent.bind(this));
4350
4350
  EventHandler.add(document, 'click ', this.docEvent.bind(this));
4351
- popup.element.style.maxHeight = popup.element.offsetHeight + 'px';
4351
+ if (this.overflowMode !== 'Extended') {
4352
+ popup.element.style.maxHeight = popup.element.offsetHeight + 'px';
4353
+ }
4352
4354
  if (this.isVertical) {
4353
4355
  popup.element.style.visibility = 'hidden';
4354
4356
  }
@@ -4363,7 +4365,7 @@ let Toolbar = class Toolbar extends Component {
4363
4365
  }
4364
4366
  this.popObj = popup;
4365
4367
  }
4366
- else {
4368
+ else if (this.overflowMode !== 'Extended') {
4367
4369
  const popupEle = this.popObj.element;
4368
4370
  setStyleAttribute(popupEle, { maxHeight: '', display: 'block' });
4369
4371
  setStyleAttribute(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });
@@ -4390,11 +4392,13 @@ let Toolbar = class Toolbar extends Component {
4390
4392
  const toolEle = this.popObj.element.parentElement;
4391
4393
  const popupNav = toolEle.querySelector('.' + CLS_TBARNAV);
4392
4394
  popupNav.setAttribute('aria-expanded', 'true');
4393
- setStyleAttribute(popObj.element, { height: 'auto', maxHeight: '' });
4394
- popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';
4395
4395
  if (this.overflowMode === 'Extended') {
4396
4396
  popObj.element.style.minHeight = '';
4397
4397
  }
4398
+ else {
4399
+ setStyleAttribute(popObj.element, { height: 'auto', maxHeight: '' });
4400
+ popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';
4401
+ }
4398
4402
  const popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;
4399
4403
  const popIcon = popupNav.firstElementChild;
4400
4404
  popupNav.classList.add(CLS_TBARNAVACT);
@@ -4411,9 +4415,11 @@ let Toolbar = class Toolbar extends Component {
4411
4415
  break;
4412
4416
  }
4413
4417
  }
4414
- setStyleAttribute(popObj.element, { maxHeight: overflowHeight + 'px' });
4418
+ if (this.overflowMode !== 'Extended') {
4419
+ setStyleAttribute(popObj.element, { maxHeight: overflowHeight + 'px' });
4420
+ }
4415
4421
  }
4416
- else if (this.isVertical) {
4422
+ else if (this.isVertical && this.overflowMode !== 'Extended') {
4417
4423
  const tbEleData = this.element.getBoundingClientRect();
4418
4424
  setStyleAttribute(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });
4419
4425
  }
@@ -5285,13 +5291,25 @@ let Toolbar = class Toolbar extends Component {
5285
5291
  this.activeEle.focus();
5286
5292
  }
5287
5293
  activeEleRemove(curEle) {
5294
+ let previousEle = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE$2 + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');
5288
5295
  if (!isNullOrUndefined(this.activeEle)) {
5289
5296
  this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));
5297
+ if (previousEle) {
5298
+ previousEle.removeAttribute('tabindex');
5299
+ }
5300
+ previousEle = this.activeEle;
5290
5301
  }
5291
5302
  this.activeEle = curEle;
5292
5303
  if (this.getDataTabindex(this.activeEle) === '-1') {
5293
5304
  if (isNullOrUndefined(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {
5294
- this.updateTabIndex('-1');
5305
+ if (!isNullOrUndefined(this.element.querySelector('.e-hor-nav')) && this.element.querySelector('.e-hor-nav').classList.contains('e-nav-active')) {
5306
+ this.updateTabIndex('0');
5307
+ this.getDataTabindex(previousEle) === '-1' ? previousEle.setAttribute('tabindex', '0') :
5308
+ previousEle.setAttribute('tabindex', this.getDataTabindex(previousEle));
5309
+ }
5310
+ else {
5311
+ this.updateTabIndex('-1');
5312
+ }
5295
5313
  curEle.removeAttribute('tabindex');
5296
5314
  }
5297
5315
  else {
@@ -6245,7 +6263,7 @@ let Accordion = class Accordion extends Component {
6245
6263
  }
6246
6264
  catch (e) {
6247
6265
  if (typeof (value) === 'string') {
6248
- ele.innerHTML = SanitizeHtmlHelper.sanitize(value);
6266
+ ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value;
6249
6267
  }
6250
6268
  else if (value instanceof (HTMLElement)) {
6251
6269
  ele.appendChild(value);
@@ -6283,7 +6301,7 @@ let Accordion = class Accordion extends Component {
6283
6301
  });
6284
6302
  }
6285
6303
  else if (ele.childElementCount === 0) {
6286
- ele.innerHTML = SanitizeHtmlHelper.sanitize(value);
6304
+ ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value;
6287
6305
  }
6288
6306
  if (!isNullOrUndefined(temString)) {
6289
6307
  if (this.templateEle.indexOf(value) === -1) {
@@ -6311,11 +6329,11 @@ let Accordion = class Accordion extends Component {
6311
6329
  itemcnt.appendChild(ctn);
6312
6330
  }
6313
6331
  else {
6314
- if (this.enableHtmlSanitizer && typeof (this.items[parseInt(index.toString(), 10)].content)) {
6315
- this.items[parseInt(index.toString(), 10)].content =
6316
- SanitizeHtmlHelper.sanitize(this.items[parseInt(index.toString(), 10)].content);
6332
+ let content = this.items[parseInt(index.toString(), 10)].content;
6333
+ if (this.enableHtmlSanitizer && typeof (content) === 'string') {
6334
+ content = SanitizeHtmlHelper.sanitize(content);
6317
6335
  }
6318
- itemcnt.appendChild(this.fetchElement(ctn, this.items[parseInt(index.toString(), 10)].content, index));
6336
+ itemcnt.appendChild(this.fetchElement(ctn, content, index));
6319
6337
  }
6320
6338
  return itemcnt;
6321
6339
  }
@@ -6964,7 +6982,7 @@ __decorate$4([
6964
6982
  Property('Multiple')
6965
6983
  ], Accordion.prototype, "expandMode", void 0);
6966
6984
  __decorate$4([
6967
- Property(false)
6985
+ Property(true)
6968
6986
  ], Accordion.prototype, "enableHtmlSanitizer", void 0);
6969
6987
  __decorate$4([
6970
6988
  Complex({}, AccordionAnimationSettings)
@@ -7364,7 +7382,7 @@ __decorate$6([
7364
7382
  Property('Menu')
7365
7383
  ], Menu.prototype, "title", void 0);
7366
7384
  __decorate$6([
7367
- Property(false)
7385
+ Property(true)
7368
7386
  ], Menu.prototype, "enableHtmlSanitizer", void 0);
7369
7387
  __decorate$6([
7370
7388
  Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)
@@ -8130,10 +8148,10 @@ let Tab = class Tab extends Component {
8130
8148
  if (typeof val === 'string') {
8131
8149
  val = val.trim();
8132
8150
  if (this.isVue) {
8133
- templateFn = compile(SanitizeHtmlHelper.sanitize(val));
8151
+ templateFn = compile(this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(val) : val);
8134
8152
  }
8135
8153
  else {
8136
- ele.innerHTML = SanitizeHtmlHelper.sanitize(val);
8154
+ ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(val) : val;
8137
8155
  }
8138
8156
  }
8139
8157
  else {
@@ -8333,7 +8351,7 @@ let Tab = class Tab extends Component {
8333
8351
  ele.removeChild(ele.firstChild);
8334
8352
  }
8335
8353
  }
8336
- if (this.isReact) {
8354
+ if (this.isReact || this.isAngular || this.isVue) {
8337
8355
  this.clearTemplate(['content']);
8338
8356
  }
8339
8357
  this.templateEle = [];
@@ -8505,7 +8523,7 @@ let Tab = class Tab extends Component {
8505
8523
  const tbPop = select('.e-popup.e-toolbar-pop', this.hdrEle);
8506
8524
  if (tbPop && tbPop.classList.contains('e-popup-close')) {
8507
8525
  const tbPopObj = (tbPop && tbPop.ej2_instances[0]);
8508
- tbPopObj.position.X = (this.headerPlacement === 'Left') ? 'left' : 'right';
8526
+ tbPopObj.position.X = (this.headerPlacement === 'Left' || this.element.classList.contains(CLS_RTL$4)) ? 'left' : 'right';
8509
8527
  tbPopObj.dataBind();
8510
8528
  tbPopObj.show(config);
8511
8529
  }
@@ -9699,7 +9717,7 @@ __decorate$7([
9699
9717
  Property(false)
9700
9718
  ], Tab.prototype, "enablePersistence", void 0);
9701
9719
  __decorate$7([
9702
- Property(false)
9720
+ Property(true)
9703
9721
  ], Tab.prototype, "enableHtmlSanitizer", void 0);
9704
9722
  __decorate$7([
9705
9723
  Property(false)
@@ -9927,7 +9945,6 @@ let TreeView = TreeView_1 = class TreeView extends Component {
9927
9945
  this.preventExpand = false;
9928
9946
  this.checkedElement = [];
9929
9947
  this.disableNode = [];
9930
- // eslint-disable-next-line
9931
9948
  this.validArr = [];
9932
9949
  this.validNodes = [];
9933
9950
  this.expandChildren = [];
@@ -10102,7 +10119,6 @@ let TreeView = TreeView_1 = class TreeView extends Component {
10102
10119
  this.element.setAttribute('aria-multiselectable', 'false');
10103
10120
  }
10104
10121
  }
10105
- // eslint-disable-next-line
10106
10122
  templateComplier(template) {
10107
10123
  if (template) {
10108
10124
  this.hasTemplate = true;
@@ -10126,7 +10142,6 @@ let TreeView = TreeView_1 = class TreeView extends Component {
10126
10142
  setDataBinding(changeDataSource) {
10127
10143
  this.treeList.push('false');
10128
10144
  if (this.fields.dataSource instanceof DataManager) {
10129
- /* eslint-disable */
10130
10145
  this.isOffline = this.fields.dataSource.dataSource.offline;
10131
10146
  if (this.fields.dataSource.ready) {
10132
10147
  this.fields.dataSource.ready.then((e) => {
@@ -10416,7 +10431,7 @@ let TreeView = TreeView_1 = class TreeView extends Component {
10416
10431
  element = this.element.querySelector('[data-uid="' + data[this.fields.id] + '"]');
10417
10432
  }
10418
10433
  if (element) {
10419
- let ariaChecked = element.querySelector('.' + CHECKBOXWRAP).getAttribute('aria-checked');
10434
+ let ariaChecked = element.getAttribute('aria-checked');
10420
10435
  if (ariaChecked !== 'true') {
10421
10436
  this.changeState(element, 'indeterminate', null, true, true);
10422
10437
  }
@@ -10471,24 +10486,22 @@ let TreeView = TreeView_1 = class TreeView extends Component {
10471
10486
  beforeNodeCreate(e) {
10472
10487
  if (this.showCheckBox) {
10473
10488
  let checkboxEle = createCheckBox(this.createElement, true, { cssClass: this.touchClass });
10474
- checkboxEle.setAttribute('role', 'checkbox');
10475
- checkboxEle.setAttribute('aria-label', e.text);
10476
10489
  let icon = select('div.' + ICON, e.item);
10477
10490
  let id = e.item.getAttribute('data-uid');
10478
10491
  e.item.childNodes[0].insertBefore(checkboxEle, e.item.childNodes[0].childNodes[isNullOrUndefined(icon) ? 0 : 1]);
10479
10492
  let checkValue = getValue(e.fields.isChecked, e.curData);
10480
10493
  if (this.checkedNodes.indexOf(id) > -1) {
10481
10494
  select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);
10482
- checkboxEle.setAttribute('aria-checked', 'true');
10495
+ e.item.setAttribute('aria-checked', 'true');
10483
10496
  this.addCheck(e.item);
10484
10497
  }
10485
10498
  else if (!isNullOrUndefined(checkValue) && checkValue.toString() === 'true') {
10486
10499
  select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);
10487
- checkboxEle.setAttribute('aria-checked', 'true');
10500
+ e.item.setAttribute('aria-checked', 'true');
10488
10501
  this.addCheck(e.item);
10489
10502
  }
10490
10503
  else {
10491
- checkboxEle.setAttribute('aria-checked', 'false');
10504
+ e.item.setAttribute('aria-checked', 'false');
10492
10505
  }
10493
10506
  let frame = select('.' + CHECKBOXFRAME, checkboxEle);
10494
10507
  EventHandler.add(frame, 'mousedown', this.frameMouseHandler, this);
@@ -11020,7 +11033,7 @@ let TreeView = TreeView_1 = class TreeView extends Component {
11020
11033
  }
11021
11034
  ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;
11022
11035
  if (!isNullOrUndefined(ariaState)) {
11023
- wrapper.setAttribute('aria-checked', ariaState);
11036
+ currLi.setAttribute('aria-checked', ariaState);
11024
11037
  }
11025
11038
  if (isAdd) {
11026
11039
  let data = [].concat([], this.checkActionNodes);
@@ -11034,7 +11047,7 @@ let TreeView = TreeView_1 = class TreeView extends Component {
11034
11047
  }
11035
11048
  if (!isPrevent) {
11036
11049
  if (!isNullOrUndefined(ariaState)) {
11037
- wrapper.setAttribute('aria-checked', ariaState);
11050
+ currLi.setAttribute('aria-checked', ariaState);
11038
11051
  eventArgs.data[0].checked = ariaState;
11039
11052
  this.trigger('nodeChecked', eventArgs);
11040
11053
  this.checkActionNodes = [];
@@ -11732,7 +11745,7 @@ let TreeView = TreeView_1 = class TreeView extends Component {
11732
11745
  }
11733
11746
  }
11734
11747
  nodeSelectAction(li, e, eventArgs, multiSelect) {
11735
- if (!this.allowMultiSelection || (!multiSelect && (!e || (e && !e.ctrlKey)))) {
11748
+ if (!this.allowMultiSelection || (!multiSelect && (!e || (e && !(e.ctrlKey || e.metaKey))))) {
11736
11749
  this.removeSelectAll();
11737
11750
  }
11738
11751
  if (this.allowMultiSelection && e && e.shiftKey) {
@@ -11841,7 +11854,7 @@ let TreeView = TreeView_1 = class TreeView extends Component {
11841
11854
  this.expandOnType = (this.expandOn === 'Auto') ? (Browser.isDevice ? 'Click' : 'DblClick') : this.expandOn;
11842
11855
  }
11843
11856
  expandHandler(e) {
11844
- let target = e.originalEvent.target;
11857
+ let target = Browser.isDevice && !Browser.isIos ? document.elementFromPoint(e.originalEvent.changedTouches[0].clientX, e.originalEvent.changedTouches[0].clientY) : e.originalEvent.target;
11845
11858
  if (!target || target.classList.contains(INPUT) || target.classList.contains(ROOT) ||
11846
11859
  target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) ||
11847
11860
  target.classList.contains(ICON) || this.showCheckBox && closest(target, '.' + CHECKBOXWRAP)) {
@@ -12055,7 +12068,7 @@ let TreeView = TreeView_1 = class TreeView extends Component {
12055
12068
  this.checkActionNodes = [];
12056
12069
  let ariaState = !isCheck ? 'true' : 'false';
12057
12070
  if (!isNullOrUndefined(ariaState)) {
12058
- checkWrap.setAttribute('aria-checked', ariaState);
12071
+ currLi.setAttribute('aria-checked', ariaState);
12059
12072
  }
12060
12073
  let eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);
12061
12074
  this.trigger('nodeChecking', eventArgs, (observedArgs) => {
@@ -12407,6 +12420,9 @@ let TreeView = TreeView_1 = class TreeView extends Component {
12407
12420
  }
12408
12421
  }
12409
12422
  onMouseOver(e) {
12423
+ if (Browser.isDevice) {
12424
+ return;
12425
+ }
12410
12426
  let target = e.target;
12411
12427
  let classList$$1 = target.classList;
12412
12428
  let currentLi = closest(target, '.' + LISTITEM);
@@ -12451,7 +12467,7 @@ let TreeView = TreeView_1 = class TreeView extends Component {
12451
12467
  let checked = null;
12452
12468
  const checkboxElement = select('.' + CHECKBOXWRAP, currLi);
12453
12469
  if (this.showCheckBox && checkboxElement) {
12454
- checked = checkboxElement.getAttribute('aria-checked');
12470
+ checked = currLi.getAttribute('aria-checked');
12455
12471
  }
12456
12472
  return {
12457
12473
  id: id, text: text, parentID: pid, selected: selected, selectable: selectable, expanded: expanded,
@@ -14847,7 +14863,7 @@ __decorate$8([
14847
14863
  Property(null)
14848
14864
  ], TreeView.prototype, "dragArea", void 0);
14849
14865
  __decorate$8([
14850
- Property(false)
14866
+ Property(true)
14851
14867
  ], TreeView.prototype, "enableHtmlSanitizer", void 0);
14852
14868
  __decorate$8([
14853
14869
  Property(false)
@@ -16106,8 +16122,9 @@ let Breadcrumb = class Breadcrumb extends Component {
16106
16122
  }
16107
16123
  beforeItemRenderChanges(prevItem, currItem, elem, isRightIcon) {
16108
16124
  const wrapElem = elem.querySelector('.e-anchor-wrap');
16109
- if (wrapElem) {
16125
+ if (wrapElem && wrapElem.querySelector('.e-home')) {
16110
16126
  wrapElem.parentElement.setAttribute('aria-label', 'home');
16127
+ wrapElem.parentElement.setAttribute('role', 'link');
16111
16128
  }
16112
16129
  if (currItem.text !== prevItem.text) {
16113
16130
  wrapElem.childNodes.forEach((child) => {
@@ -18868,8 +18885,7 @@ let Stepper = class Stepper extends StepperBase {
18868
18885
  const selectedEle = this.stepperItemElements[parseInt(this.activeStep.toString(), 10)].firstChild;
18869
18886
  let value = this.activeStep === 0 ? 0 : (selectedEle.offsetLeft - progressPos.offsetLeft + (selectedEle.offsetWidth / 2)) / progressPos.offsetWidth * 100;
18870
18887
  if (this.element.classList.contains(RTL$3)) {
18871
- const elementPos = this.stepperItemElements[0].firstChild;
18872
- value = ((progressPos.offsetWidth - selectedEle.offsetLeft) + Math.abs((elementPos.offsetLeft + elementPos.offsetWidth) - this.stepperItemList.offsetWidth)) / progressPos.offsetWidth * 100;
18888
+ value = (progressPos.getBoundingClientRect().right - selectedEle.getBoundingClientRect().right + (selectedEle.offsetWidth / 2)) / progressPos.offsetWidth * 100;
18873
18889
  this.progressbar.style.setProperty(PROGRESSVALUE$1, (value) + '%');
18874
18890
  }
18875
18891
  else {