@syncfusion/ej2-navigations 24.2.8 → 25.1.37

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 (133) hide show
  1. package/CHANGELOG.md +9 -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 +165 -137
  6. package/dist/es6/ej2-navigations.es2015.js.map +1 -1
  7. package/dist/es6/ej2-navigations.es5.js +165 -137
  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.d.ts +1 -0
  28. package/src/toolbar/toolbar.js +35 -13
  29. package/src/treeview/treeview-model.d.ts +4 -7
  30. package/src/treeview/treeview.d.ts +3 -3
  31. package/src/treeview/treeview.js +15 -9
  32. package/styles/accordion/_bds-definition.scss +180 -0
  33. package/styles/accordion/_material-definition.scss +1 -1
  34. package/styles/accordion/icons/_bds.scss +17 -0
  35. package/styles/accordion/material.css +1 -1
  36. package/styles/appbar/_bds-definition.scss +27 -0
  37. package/styles/bootstrap-dark.css +12 -4
  38. package/styles/bootstrap.css +12 -4
  39. package/styles/bootstrap4.css +12 -4
  40. package/styles/bootstrap5-dark.css +12 -4
  41. package/styles/bootstrap5.css +12 -4
  42. package/styles/breadcrumb/_bds-definition.scss +60 -0
  43. package/styles/breadcrumb/icons/_bds.scss +25 -0
  44. package/styles/carousel/_bds-definition.scss +27 -0
  45. package/styles/carousel/_layout.scss +5 -0
  46. package/styles/carousel/bootstrap-dark.css +6 -0
  47. package/styles/carousel/bootstrap.css +6 -0
  48. package/styles/carousel/bootstrap4.css +6 -0
  49. package/styles/carousel/bootstrap5-dark.css +6 -0
  50. package/styles/carousel/bootstrap5.css +6 -0
  51. package/styles/carousel/fabric-dark.css +6 -0
  52. package/styles/carousel/fabric.css +6 -0
  53. package/styles/carousel/fluent-dark.css +6 -0
  54. package/styles/carousel/fluent.css +6 -0
  55. package/styles/carousel/highcontrast-light.css +6 -0
  56. package/styles/carousel/highcontrast.css +6 -0
  57. package/styles/carousel/icons/_bds.scss +30 -0
  58. package/styles/carousel/material-dark.css +6 -0
  59. package/styles/carousel/material.css +6 -0
  60. package/styles/carousel/material3-dark.css +6 -0
  61. package/styles/carousel/material3.css +6 -0
  62. package/styles/carousel/tailwind-dark.css +6 -0
  63. package/styles/carousel/tailwind.css +6 -0
  64. package/styles/context-menu/_bds-definition.scss +65 -0
  65. package/styles/context-menu/icons/_bds.scss +33 -0
  66. package/styles/fabric-dark.css +12 -4
  67. package/styles/fabric.css +12 -4
  68. package/styles/fluent-dark.css +12 -4
  69. package/styles/fluent.css +12 -4
  70. package/styles/h-scroll/_bds-definition.scss +83 -0
  71. package/styles/h-scroll/icons/_bds.scss +49 -0
  72. package/styles/highcontrast-light.css +12 -4
  73. package/styles/highcontrast.css +12 -4
  74. package/styles/material-dark.css +12 -4
  75. package/styles/material.css +13 -5
  76. package/styles/material3-dark.css +12 -4
  77. package/styles/material3.css +12 -4
  78. package/styles/menu/_bds-definition.scss +66 -0
  79. package/styles/menu/icons/_bds.scss +134 -0
  80. package/styles/pager/_bds-definition.scss +152 -0
  81. package/styles/pager/icons/_bds.scss +50 -0
  82. package/styles/sidebar/_bds-definition.scss +45 -0
  83. package/styles/stepper/_bds-definition.scss +79 -0
  84. package/styles/stepper/_layout.scss +1 -0
  85. package/styles/stepper/bootstrap-dark.css +3 -0
  86. package/styles/stepper/bootstrap.css +3 -0
  87. package/styles/stepper/bootstrap4.css +3 -0
  88. package/styles/stepper/bootstrap5-dark.css +3 -0
  89. package/styles/stepper/bootstrap5.css +3 -0
  90. package/styles/stepper/fabric-dark.css +3 -0
  91. package/styles/stepper/fabric.css +3 -0
  92. package/styles/stepper/fluent-dark.css +3 -0
  93. package/styles/stepper/fluent.css +3 -0
  94. package/styles/stepper/highcontrast-light.css +3 -0
  95. package/styles/stepper/highcontrast.css +3 -0
  96. package/styles/stepper/icons/_bds.scss +5 -0
  97. package/styles/stepper/material-dark.css +3 -0
  98. package/styles/stepper/material.css +3 -0
  99. package/styles/stepper/material3-dark.css +3 -0
  100. package/styles/stepper/material3.css +3 -0
  101. package/styles/stepper/tailwind-dark.css +3 -0
  102. package/styles/stepper/tailwind.css +3 -0
  103. package/styles/tab/_bds-definition.scss +701 -0
  104. package/styles/tab/icons/_bds.scss +92 -0
  105. package/styles/tailwind-dark.css +14 -6
  106. package/styles/tailwind.css +12 -4
  107. package/styles/toolbar/_bds-definition.scss +215 -0
  108. package/styles/toolbar/_layout.scss +6 -7
  109. package/styles/toolbar/bootstrap-dark.css +3 -4
  110. package/styles/toolbar/bootstrap.css +3 -4
  111. package/styles/toolbar/bootstrap4.css +3 -4
  112. package/styles/toolbar/bootstrap5-dark.css +3 -4
  113. package/styles/toolbar/bootstrap5.css +3 -4
  114. package/styles/toolbar/fabric-dark.css +3 -4
  115. package/styles/toolbar/fabric.css +3 -4
  116. package/styles/toolbar/fluent-dark.css +3 -4
  117. package/styles/toolbar/fluent.css +3 -4
  118. package/styles/toolbar/highcontrast-light.css +3 -4
  119. package/styles/toolbar/highcontrast.css +3 -4
  120. package/styles/toolbar/icons/_bds.scss +16 -0
  121. package/styles/toolbar/material-dark.css +3 -4
  122. package/styles/toolbar/material.css +3 -4
  123. package/styles/toolbar/material3-dark.css +3 -4
  124. package/styles/toolbar/material3.css +3 -4
  125. package/styles/toolbar/tailwind-dark.css +3 -4
  126. package/styles/toolbar/tailwind.css +3 -4
  127. package/styles/treeview/_bds-definition.scss +132 -0
  128. package/styles/treeview/_tailwind-definition.scss +1 -1
  129. package/styles/treeview/_theme.scss +1 -1
  130. package/styles/treeview/icons/_bds.scss +43 -0
  131. package/styles/treeview/tailwind-dark.css +2 -2
  132. package/styles/v-scroll/_bds-definition.scss +49 -0
  133. package/styles/v-scroll/icons/_bds.scss +27 -0
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 24.2.8
3
+ * version : 25.1.37
4
4
  * Copyright Syncfusion Inc. 2001 - 2023. All rights reserved.
5
5
  * Use of this code is subject to the terms of our license.
6
6
  * A copy of the current license can be obtained at any time by e-mailing
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "_from": "@syncfusion/ej2-navigations@*",
3
- "_id": "@syncfusion/ej2-navigations@24.2.4",
3
+ "_id": "@syncfusion/ej2-navigations@25.1.35",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-yGv+M8TSZfo5giPl+68COLjC1TNTMPhdxZth5ZAJ/qfjUlX1X6j4Luammcjo8MN1QszAJ9K0ewWFbelekbzHRg==",
5
+ "_integrity": "sha512-fR5/03VzC+9IKq8D5/KeKt9MdqSZualOAS1f7dJZdLkVxxqaLq5Ce9tLAdXqtP58MqSk3Atk6AespHptGgauYA==",
6
6
  "_location": "/@syncfusion/ej2-navigations",
7
7
  "_phantomChildren": {},
8
8
  "_requested": {
@@ -39,10 +39,10 @@
39
39
  "/@syncfusion/ej2-spreadsheet",
40
40
  "/@syncfusion/ej2-vue-navigations"
41
41
  ],
42
- "_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-navigations/-/ej2-navigations-24.2.4.tgz",
43
- "_shasum": "9382a04536eca9b09930db9686c86dcad7b09848",
42
+ "_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-navigations/-/ej2-navigations-25.1.35.tgz",
43
+ "_shasum": "043a683ce25441881b94bb60054cbd3a98954a66",
44
44
  "_spec": "@syncfusion/ej2-navigations@*",
45
- "_where": "/jenkins/workspace/elease-automation_release_24.1.1/packages/included",
45
+ "_where": "/jenkins/workspace/elease-automation_release_25.1.1/packages/included",
46
46
  "author": {
47
47
  "name": "Syncfusion Inc."
48
48
  },
@@ -51,12 +51,12 @@
51
51
  },
52
52
  "bundleDependencies": false,
53
53
  "dependencies": {
54
- "@syncfusion/ej2-base": "~24.2.7",
55
- "@syncfusion/ej2-buttons": "~24.2.7",
56
- "@syncfusion/ej2-data": "~24.2.3",
57
- "@syncfusion/ej2-inputs": "~24.2.7",
58
- "@syncfusion/ej2-lists": "~24.2.8",
59
- "@syncfusion/ej2-popups": "~24.2.8"
54
+ "@syncfusion/ej2-base": "~25.1.35",
55
+ "@syncfusion/ej2-buttons": "~25.1.35",
56
+ "@syncfusion/ej2-data": "~25.1.35",
57
+ "@syncfusion/ej2-inputs": "~25.1.37",
58
+ "@syncfusion/ej2-lists": "~25.1.35",
59
+ "@syncfusion/ej2-popups": "~25.1.35"
60
60
  },
61
61
  "deprecated": false,
62
62
  "description": "A package of Essential JS 2 navigation components such as Tree-view, Tab, Toolbar, Context-menu, and Accordion which is used to navigate from one page to another",
@@ -161,6 +161,6 @@
161
161
  "url": "git+https://github.com/syncfusion/ej2-javascript-ui-controls.git"
162
162
  },
163
163
  "typings": "index.d.ts",
164
- "version": "24.2.8",
164
+ "version": "25.1.37",
165
165
  "sideEffects": false
166
166
  }
@@ -232,9 +232,10 @@ export interface AccordionModel extends ComponentModel{
232
232
  expandMode?: ExpandMode;
233
233
 
234
234
  /**
235
- * Defines whether to allow the cross-scripting site or not.
235
+ * Specifies whether to enable the rendering of untrusted HTML values in the Accordion component.
236
+ * When this property is enabled, the component will sanitize any suspected untrusted strings and scripts before rendering them.
236
237
  *
237
- * @default false
238
+ * @default true
238
239
  */
239
240
  enableHtmlSanitizer?: boolean;
240
241
 
@@ -274,9 +274,10 @@ export declare class Accordion extends Component<HTMLElement> implements INotify
274
274
  */
275
275
  expandMode: ExpandMode;
276
276
  /**
277
- * Defines whether to allow the cross-scripting site or not.
277
+ * Specifies whether to enable the rendering of untrusted HTML values in the Accordion component.
278
+ * When this property is enabled, the component will sanitize any suspected untrusted strings and scripts before rendering them.
278
279
  *
279
- * @default false
280
+ * @default true
280
281
  */
281
282
  enableHtmlSanitizer: boolean;
282
283
  /**
@@ -649,7 +649,7 @@ var Accordion = /** @class */ (function (_super) {
649
649
  }
650
650
  catch (e) {
651
651
  if (typeof (value) === 'string') {
652
- ele.innerHTML = SanitizeHtmlHelper.sanitize(value);
652
+ ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value;
653
653
  }
654
654
  else if (value instanceof (HTMLElement)) {
655
655
  ele.appendChild(value);
@@ -687,7 +687,7 @@ var Accordion = /** @class */ (function (_super) {
687
687
  });
688
688
  }
689
689
  else if (ele.childElementCount === 0) {
690
- ele.innerHTML = SanitizeHtmlHelper.sanitize(value);
690
+ ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value;
691
691
  }
692
692
  if (!isNOU(temString)) {
693
693
  if (this.templateEle.indexOf(value) === -1) {
@@ -715,11 +715,11 @@ var Accordion = /** @class */ (function (_super) {
715
715
  itemcnt.appendChild(ctn);
716
716
  }
717
717
  else {
718
- if (this.enableHtmlSanitizer && typeof (this.items[parseInt(index.toString(), 10)].content)) {
719
- this.items[parseInt(index.toString(), 10)].content =
720
- SanitizeHtmlHelper.sanitize(this.items[parseInt(index.toString(), 10)].content);
718
+ var content = this.items[parseInt(index.toString(), 10)].content;
719
+ if (this.enableHtmlSanitizer && typeof (content) === 'string') {
720
+ content = SanitizeHtmlHelper.sanitize(content);
721
721
  }
722
- itemcnt.appendChild(this.fetchElement(ctn, this.items[parseInt(index.toString(), 10)].content, index));
722
+ itemcnt.appendChild(this.fetchElement(ctn, content, index));
723
723
  }
724
724
  return itemcnt;
725
725
  };
@@ -1375,7 +1375,7 @@ var Accordion = /** @class */ (function (_super) {
1375
1375
  Property('Multiple')
1376
1376
  ], Accordion.prototype, "expandMode", void 0);
1377
1377
  __decorate([
1378
- Property(false)
1378
+ Property(true)
1379
1379
  ], Accordion.prototype, "enableHtmlSanitizer", void 0);
1380
1380
  __decorate([
1381
1381
  Complex({}, AccordionAnimationSettings)
@@ -462,8 +462,9 @@ var Breadcrumb = /** @class */ (function (_super) {
462
462
  };
463
463
  Breadcrumb.prototype.beforeItemRenderChanges = function (prevItem, currItem, elem, isRightIcon) {
464
464
  var wrapElem = elem.querySelector('.e-anchor-wrap');
465
- if (wrapElem) {
465
+ if (wrapElem && wrapElem.querySelector('.e-home')) {
466
466
  wrapElem.parentElement.setAttribute('aria-label', 'home');
467
+ wrapElem.parentElement.setAttribute('role', 'link');
467
468
  }
468
469
  if (currItem.text !== prevItem.text) {
469
470
  wrapElem.childNodes.forEach(function (child) {
@@ -266,9 +266,10 @@ export interface MenuBaseModel extends ComponentModel{
266
266
  enableScrolling?: boolean;
267
267
 
268
268
  /**
269
- * Defines whether to allow the cross-scripting site or not.
269
+ * Specifies whether to enable the rendering of untrusted HTML values in the Context Menu component.
270
+ * If 'enableHtmlSanitizer' set to true, the component will sanitize any suspected untrusted strings and scripts before rendering them.
270
271
  *
271
- * @default false
272
+ * @default true
272
273
  */
273
274
  enableHtmlSanitizer?: boolean;
274
275
 
@@ -283,9 +283,10 @@ export declare abstract class MenuBase extends Component<HTMLUListElement> imple
283
283
  */
284
284
  enableScrolling: boolean;
285
285
  /**
286
- * Defines whether to allow the cross-scripting site or not.
286
+ * Specifies whether to enable the rendering of untrusted HTML values in the Context Menu component.
287
+ * If 'enableHtmlSanitizer' set to true, the component will sanitize any suspected untrusted strings and scripts before rendering them.
287
288
  *
288
- * @default false
289
+ * @default true
289
290
  */
290
291
  enableHtmlSanitizer: boolean;
291
292
  /**
@@ -306,10 +306,10 @@ var MenuBase = /** @class */ (function (_super) {
306
306
  }
307
307
  this.targetElement = target;
308
308
  if (!this.isMenu) {
309
- EventHandler.add(this.targetElement, 'mousewheel DOMMouseScroll', this.scrollHandler, this);
309
+ EventHandler.add(this.targetElement, 'scroll', this.scrollHandler, this);
310
310
  for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {
311
311
  var parent_1 = _a[_i];
312
- EventHandler.add(parent_1, 'mousewheel DOMMouseScroll', this.scrollHandler, this);
312
+ EventHandler.add(parent_1, 'scroll', this.scrollHandler, this);
313
313
  }
314
314
  }
315
315
  }
@@ -1091,9 +1091,11 @@ var MenuBase = /** @class */ (function (_super) {
1091
1091
  }
1092
1092
  li.focus();
1093
1093
  cul = _this.getUlByNavIdx();
1094
- var index = _this.isValidLI(cul.children[0], 0, _this.action);
1095
- cul.children[index].classList.add(FOCUSED);
1096
- cul.children[index].focus();
1094
+ if (cul) {
1095
+ var index = _this.isValidLI(cul.children[0], 0, _this.action);
1096
+ cul.children[index].classList.add(FOCUSED);
1097
+ cul.children[index].focus();
1098
+ }
1097
1099
  }
1098
1100
  });
1099
1101
  };
@@ -1415,107 +1417,103 @@ var MenuBase = /** @class */ (function (_super) {
1415
1417
  }
1416
1418
  };
1417
1419
  MenuBase.prototype.clickHandler = function (e) {
1418
- if (this.isTapHold) {
1419
- this.isTapHold = false;
1420
+ this.isTapHold = this.isTapHold ? false : this.isTapHold;
1421
+ var wrapper = this.getWrapper();
1422
+ var trgt = e.target;
1423
+ var cli = this.cli = this.getLI(trgt);
1424
+ var regex = new RegExp('-ej2menu-(.*)-popup');
1425
+ var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;
1426
+ var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0
1427
+ : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);
1428
+ if (Browser.isDevice && this.isMenu) {
1429
+ this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));
1430
+ this.mouseDownHandler(e);
1420
1431
  }
1421
- else {
1422
- var wrapper = this.getWrapper();
1423
- var trgt = e.target;
1424
- var cli = this.cli = this.getLI(trgt);
1425
- var regex = new RegExp('-ej2menu-(.*)-popup');
1426
- var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;
1427
- var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0
1428
- : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);
1429
- if (Browser.isDevice && this.isMenu) {
1430
- this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));
1431
- this.mouseDownHandler(e);
1432
- }
1433
- if (cli && cliWrapper && this.isMenu) {
1434
- var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;
1435
- if (this.element.id !== cliWrapperId) {
1436
- return;
1437
- }
1438
- }
1439
- if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {
1440
- this.setLISelected(cli);
1441
- var navIdx = this.getIndex(cli.id, true);
1442
- var item = this.getItem(navIdx);
1443
- var eventArgs = { element: cli, item: item, event: e };
1444
- this.trigger('select', eventArgs);
1445
- }
1446
- if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {
1447
- var ul = void 0;
1448
- if (cli.classList.contains(HEADER)) {
1449
- ul = wrapper.children[this.navIdx.length - 1];
1450
- this.toggleAnimation(ul);
1451
- var sli = this.getLIByClass(ul, SELECTED);
1452
- if (sli) {
1453
- sli.classList.remove(SELECTED);
1454
- }
1455
- detach(cli.parentNode);
1456
- this.navIdx.pop();
1432
+ if (cli && cliWrapper && this.isMenu) {
1433
+ var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;
1434
+ if (this.element.id !== cliWrapperId) {
1435
+ return;
1436
+ }
1437
+ }
1438
+ if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {
1439
+ this.setLISelected(cli);
1440
+ var navIdx = this.getIndex(cli.id, true);
1441
+ var item = this.getItem(navIdx);
1442
+ var eventArgs = { element: cli, item: item, event: e };
1443
+ this.trigger('select', eventArgs);
1444
+ }
1445
+ if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {
1446
+ var ul = void 0;
1447
+ if (cli.classList.contains(HEADER)) {
1448
+ ul = wrapper.children[this.navIdx.length - 1];
1449
+ this.toggleAnimation(ul);
1450
+ var sli = this.getLIByClass(ul, SELECTED);
1451
+ if (sli) {
1452
+ sli.classList.remove(SELECTED);
1457
1453
  }
1458
- else {
1459
- if (!cli.classList.contains(SEPARATOR)) {
1460
- this.showSubMenu = true;
1461
- var cul = cli.parentNode;
1462
- if (isNullOrUndefined(cul)) {
1463
- return;
1454
+ detach(cli.parentNode);
1455
+ this.navIdx.pop();
1456
+ }
1457
+ else {
1458
+ if (!cli.classList.contains(SEPARATOR)) {
1459
+ this.showSubMenu = true;
1460
+ var cul = cli.parentNode;
1461
+ if (isNullOrUndefined(cul)) {
1462
+ return;
1463
+ }
1464
+ this.cliIdx = this.getIdx(cul, cli);
1465
+ if (this.isMenu || !Browser.isDevice) {
1466
+ var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))
1467
+ : this.getIdx(wrapper, cul);
1468
+ if (this.navIdx[culIdx] === this.cliIdx) {
1469
+ this.showSubMenu = false;
1464
1470
  }
1465
- this.cliIdx = this.getIdx(cul, cli);
1466
- if (this.isMenu || !Browser.isDevice) {
1467
- var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))
1468
- : this.getIdx(wrapper, cul);
1469
- if (this.navIdx[culIdx] === this.cliIdx) {
1470
- this.showSubMenu = false;
1471
+ if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {
1472
+ var sli = this.getLIByClass(cul, SELECTED);
1473
+ if (sli) {
1474
+ sli.classList.remove(SELECTED);
1471
1475
  }
1472
- if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {
1473
- var sli = this.getLIByClass(cul, SELECTED);
1474
- if (sli) {
1475
- sli.classList.remove(SELECTED);
1476
- }
1477
- this.isClosed = true;
1478
- this.keyType = 'click';
1479
- if (this.showItemOnClick) {
1480
- this.setLISelected(cli);
1481
- }
1482
- this.closeMenu(culIdx + 1, e);
1483
- if (this.showItemOnClick) {
1484
- this.setLISelected(cli);
1485
- }
1476
+ this.isClosed = true;
1477
+ this.keyType = 'click';
1478
+ if (this.showItemOnClick) {
1479
+ this.setLISelected(cli);
1480
+ }
1481
+ this.closeMenu(culIdx + 1, e);
1482
+ if (this.showItemOnClick) {
1483
+ this.setLISelected(cli);
1486
1484
  }
1487
1485
  }
1488
- if (!this.isClosed) {
1489
- this.afterCloseMenu(e);
1490
- }
1491
- this.isClosed = false;
1492
1486
  }
1487
+ if (!this.isClosed) {
1488
+ this.afterCloseMenu(e);
1489
+ }
1490
+ this.isClosed = false;
1493
1491
  }
1494
1492
  }
1495
- else {
1496
- if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {
1497
- var popupEle = closest(trgt, '.' + POPUP);
1498
- var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;
1499
- if (cIdx < this.navIdx.length) {
1500
- this.closeMenu(cIdx + 1, e);
1501
- if (popupEle) {
1502
- this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);
1503
- }
1493
+ }
1494
+ else {
1495
+ if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {
1496
+ var popupEle = closest(trgt, '.' + POPUP);
1497
+ var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;
1498
+ if (cIdx < this.navIdx.length) {
1499
+ this.closeMenu(cIdx + 1, e);
1500
+ if (popupEle) {
1501
+ this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);
1504
1502
  }
1505
1503
  }
1506
- else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'
1507
- && trgt.classList.contains('e-menu-icon')) {
1508
- this.menuHeaderClickHandler(e);
1509
- }
1510
- else {
1511
- if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&
1512
- !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {
1513
- if (!cli) {
1514
- this.removeLIStateByClass([SELECTED], [wrapper]);
1515
- }
1516
- if (!cli || !cli.querySelector('.' + CARET)) {
1517
- this.closeMenu(null, e);
1518
- }
1504
+ }
1505
+ else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'
1506
+ && trgt.classList.contains('e-menu-icon')) {
1507
+ this.menuHeaderClickHandler(e);
1508
+ }
1509
+ else {
1510
+ if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&
1511
+ !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {
1512
+ if (!cli) {
1513
+ this.removeLIStateByClass([SELECTED], [wrapper]);
1514
+ }
1515
+ if (!cli || !cli.querySelector('.' + CARET)) {
1516
+ this.closeMenu(null, e);
1519
1517
  }
1520
1518
  }
1521
1519
  }
@@ -1573,9 +1571,11 @@ var MenuBase = /** @class */ (function (_super) {
1573
1571
  li.classList.add(SELECTED);
1574
1572
  };
1575
1573
  MenuBase.prototype.getLIByClass = function (ul, classname) {
1576
- for (var i = 0, len = ul.children.length; i < len; i++) {
1577
- if (ul.children[i].classList.contains(classname)) {
1578
- return ul.children[i];
1574
+ if (ul) {
1575
+ for (var i = 0, len = ul.children.length; i < len; i++) {
1576
+ if (ul.children[i].classList.contains(classname)) {
1577
+ return ul.children[i];
1578
+ }
1579
1579
  }
1580
1580
  }
1581
1581
  return null;
@@ -1867,10 +1867,10 @@ var MenuBase = /** @class */ (function (_super) {
1867
1867
  }
1868
1868
  }
1869
1869
  if (!this.isMenu) {
1870
- EventHandler.remove(this.targetElement, 'mousewheel DOMMouseScroll', this.scrollHandler);
1870
+ EventHandler.remove(this.targetElement, 'scroll', this.scrollHandler);
1871
1871
  for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {
1872
1872
  var parent_2 = _a[_i];
1873
- EventHandler.remove(parent_2, 'mousewheel DOMMouseScroll', this.scrollHandler);
1873
+ EventHandler.remove(parent_2, 'scroll', this.scrollHandler);
1874
1874
  }
1875
1875
  }
1876
1876
  }
@@ -2346,7 +2346,7 @@ var MenuBase = /** @class */ (function (_super) {
2346
2346
  Property(false)
2347
2347
  ], MenuBase.prototype, "enableScrolling", void 0);
2348
2348
  __decorate([
2349
- Property(false)
2349
+ Property(true)
2350
2350
  ], MenuBase.prototype, "enableHtmlSanitizer", void 0);
2351
2351
  __decorate([
2352
2352
  Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)
@@ -51,9 +51,10 @@ export interface MenuModel extends MenuBaseModel{
51
51
  title?: string;
52
52
 
53
53
  /**
54
- * Defines whether to allow the cross-scripting site or not.
54
+ * Specifies whether to enable the rendering of untrusted HTML values in the Menu component.
55
+ * If 'enableHtmlSanitizer' set to true, the component will sanitize any suspected untrusted strings and scripts before rendering them.
55
56
  *
56
- * @default false
57
+ * @default true
57
58
  */
58
59
  enableHtmlSanitizer?: boolean;
59
60
 
@@ -63,9 +63,10 @@ export declare class Menu extends MenuBase implements INotifyPropertyChanged {
63
63
  */
64
64
  title: string;
65
65
  /**
66
- * Defines whether to allow the cross-scripting site or not.
66
+ * Specifies whether to enable the rendering of untrusted HTML values in the Menu component.
67
+ * If 'enableHtmlSanitizer' set to true, the component will sanitize any suspected untrusted strings and scripts before rendering them.
67
68
  *
68
- * @default false
69
+ * @default true
69
70
  */
70
71
  enableHtmlSanitizer: boolean;
71
72
  /**
package/src/menu/menu.js CHANGED
@@ -271,7 +271,7 @@ var Menu = /** @class */ (function (_super) {
271
271
  Property('Menu')
272
272
  ], Menu.prototype, "title", void 0);
273
273
  __decorate([
274
- Property(false)
274
+ Property(true)
275
275
  ], Menu.prototype, "enableHtmlSanitizer", void 0);
276
276
  __decorate([
277
277
  Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)
@@ -764,8 +764,7 @@ var Stepper = /** @class */ (function (_super) {
764
764
  var selectedEle = this.stepperItemElements[parseInt(this.activeStep.toString(), 10)].firstChild;
765
765
  var value = this.activeStep === 0 ? 0 : (selectedEle.offsetLeft - progressPos.offsetLeft + (selectedEle.offsetWidth / 2)) / progressPos.offsetWidth * 100;
766
766
  if (this.element.classList.contains(RTL)) {
767
- var elementPos = this.stepperItemElements[0].firstChild;
768
- value = ((progressPos.offsetWidth - selectedEle.offsetLeft) + Math.abs((elementPos.offsetLeft + elementPos.offsetWidth) - this.stepperItemList.offsetWidth)) / progressPos.offsetWidth * 100;
767
+ value = (progressPos.getBoundingClientRect().right - selectedEle.getBoundingClientRect().right + (selectedEle.offsetWidth / 2)) / progressPos.offsetWidth * 100;
769
768
  this.progressbar.style.setProperty(PROGRESSVALUE, (value) + '%');
770
769
  }
771
770
  else {
@@ -165,15 +165,8 @@ export interface TabModel extends ComponentModel{
165
165
 
166
166
  /**
167
167
  * An array of object that is used to configure the Tab component.
168
- * ```typescript
169
- * let tabObj: Tab = new Tab( {
170
- * items: [
171
- * { header: { text: 'TabItem1' }, content: 'Tab Item1 Content' },
172
- * { header: { text: 'TabItem2' }, content: 'Tab Item2 Content' }
173
- * ]
174
- * });
175
- * tabObj.appendTo('#tab');
176
- * ```
168
+ *
169
+ * {% codeBlock src='tab/items/index.md' %}{% endcodeBlock %}
177
170
  *
178
171
  * @default []
179
172
  */
@@ -203,16 +196,8 @@ export interface TabModel extends ComponentModel{
203
196
 
204
197
  /**
205
198
  * Specifies the index for activating the current Tab item.
206
- * ```typescript
207
- * let tabObj: Tab = new Tab( {
208
- * selectedItem: 1,
209
- * items: [
210
- * { header: { text: 'TabItem1' }, content: 'Tab Item1 Content' },
211
- * { header: { text: 'TabItem2' }, content: 'Tab Item2 Content' }
212
- * ]
213
- * });
214
- * tabObj.appendTo('#tab');
215
- * ```
199
+ *
200
+ * {% codeBlock src='tab/selectedItem/index.md' %}{% endcodeBlock %}
216
201
  *
217
202
  * @default 0
218
203
  */
@@ -274,9 +259,10 @@ export interface TabModel extends ComponentModel{
274
259
  enablePersistence?: boolean;
275
260
 
276
261
  /**
277
- * Defines whether to allow the cross-scripting site or not.
262
+ * Specifies whether to enable the rendering of untrusted HTML values in the Tab component.
263
+ * When this property is enabled, the component will sanitize any suspected untrusted strings and scripts before rendering them.
278
264
  *
279
- * @default false
265
+ * @default true
280
266
  */
281
267
  enableHtmlSanitizer?: boolean;
282
268
 
package/src/tab/tab.d.ts CHANGED
@@ -299,15 +299,8 @@ export declare class Tab extends Component<HTMLElement> implements INotifyProper
299
299
  private keyConfigs;
300
300
  /**
301
301
  * An array of object that is used to configure the Tab component.
302
- * ```typescript
303
- * let tabObj: Tab = new Tab( {
304
- * items: [
305
- * { header: { text: 'TabItem1' }, content: 'Tab Item1 Content' },
306
- * { header: { text: 'TabItem2' }, content: 'Tab Item2 Content' }
307
- * ]
308
- * });
309
- * tabObj.appendTo('#tab');
310
- * ```
302
+ *
303
+ * {% codeBlock src='tab/items/index.md' %}{% endcodeBlock %}
311
304
  *
312
305
  * @default []
313
306
  */
@@ -333,16 +326,8 @@ export declare class Tab extends Component<HTMLElement> implements INotifyProper
333
326
  cssClass: string;
334
327
  /**
335
328
  * Specifies the index for activating the current Tab item.
336
- * ```typescript
337
- * let tabObj: Tab = new Tab( {
338
- * selectedItem: 1,
339
- * items: [
340
- * { header: { text: 'TabItem1' }, content: 'Tab Item1 Content' },
341
- * { header: { text: 'TabItem2' }, content: 'Tab Item2 Content' }
342
- * ]
343
- * });
344
- * tabObj.appendTo('#tab');
345
- * ```
329
+ *
330
+ * {% codeBlock src='tab/selectedItem/index.md' %}{% endcodeBlock %}
346
331
  *
347
332
  * @default 0
348
333
  */
@@ -398,9 +383,10 @@ export declare class Tab extends Component<HTMLElement> implements INotifyProper
398
383
  */
399
384
  enablePersistence: boolean;
400
385
  /**
401
- * Defines whether to allow the cross-scripting site or not.
386
+ * Specifies whether to enable the rendering of untrusted HTML values in the Tab component.
387
+ * When this property is enabled, the component will sanitize any suspected untrusted strings and scripts before rendering them.
402
388
  *
403
- * @default false
389
+ * @default true
404
390
  */
405
391
  enableHtmlSanitizer: boolean;
406
392
  /**
package/src/tab/tab.js CHANGED
@@ -804,10 +804,10 @@ var Tab = /** @class */ (function (_super) {
804
804
  if (typeof val === 'string') {
805
805
  val = val.trim();
806
806
  if (this.isVue) {
807
- templateFn = compile(SanitizeHtmlHelper.sanitize(val));
807
+ templateFn = compile(this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(val) : val);
808
808
  }
809
809
  else {
810
- ele.innerHTML = SanitizeHtmlHelper.sanitize(val);
810
+ ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(val) : val;
811
811
  }
812
812
  }
813
813
  else {
@@ -1007,7 +1007,7 @@ var Tab = /** @class */ (function (_super) {
1007
1007
  ele.removeChild(ele.firstChild);
1008
1008
  }
1009
1009
  }
1010
- if (this.isReact) {
1010
+ if (this.isReact || this.isAngular || this.isVue) {
1011
1011
  this.clearTemplate(['content']);
1012
1012
  }
1013
1013
  this.templateEle = [];
@@ -1181,7 +1181,7 @@ var Tab = /** @class */ (function (_super) {
1181
1181
  var tbPop = select('.e-popup.e-toolbar-pop', this.hdrEle);
1182
1182
  if (tbPop && tbPop.classList.contains('e-popup-close')) {
1183
1183
  var tbPopObj = (tbPop && tbPop.ej2_instances[0]);
1184
- tbPopObj.position.X = (this.headerPlacement === 'Left') ? 'left' : 'right';
1184
+ tbPopObj.position.X = (this.headerPlacement === 'Left' || this.element.classList.contains(CLS_RTL)) ? 'left' : 'right';
1185
1185
  tbPopObj.dataBind();
1186
1186
  tbPopObj.show(config);
1187
1187
  }
@@ -2387,7 +2387,7 @@ var Tab = /** @class */ (function (_super) {
2387
2387
  Property(false)
2388
2388
  ], Tab.prototype, "enablePersistence", void 0);
2389
2389
  __decorate([
2390
- Property(false)
2390
+ Property(true)
2391
2391
  ], Tab.prototype, "enableHtmlSanitizer", void 0);
2392
2392
  __decorate([
2393
2393
  Property(false)
@@ -402,6 +402,7 @@ export declare class Toolbar extends Component<HTMLElement> implements INotifyPr
402
402
  private eleFocus;
403
403
  private clickHandler;
404
404
  private popupClickHandler;
405
+ private getToolbarPopupWidth;
405
406
  /**
406
407
  * To Initialize the control rendering
407
408
  *