@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.
- package/CHANGELOG.md +9 -34
- package/dist/ej2-navigations.min.js +2 -2
- package/dist/ej2-navigations.umd.min.js +2 -2
- package/dist/ej2-navigations.umd.min.js.map +1 -1
- package/dist/es6/ej2-navigations.es2015.js +165 -137
- package/dist/es6/ej2-navigations.es2015.js.map +1 -1
- package/dist/es6/ej2-navigations.es5.js +165 -137
- package/dist/es6/ej2-navigations.es5.js.map +1 -1
- package/dist/global/ej2-navigations.min.js +2 -2
- package/dist/global/ej2-navigations.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +12 -12
- package/src/accordion/accordion-model.d.ts +3 -2
- package/src/accordion/accordion.d.ts +3 -2
- package/src/accordion/accordion.js +7 -7
- package/src/breadcrumb/breadcrumb.js +2 -1
- package/src/common/menu-base-model.d.ts +3 -2
- package/src/common/menu-base.d.ts +3 -2
- package/src/common/menu-base.js +101 -101
- package/src/menu/menu-model.d.ts +3 -2
- package/src/menu/menu.d.ts +3 -2
- package/src/menu/menu.js +1 -1
- package/src/stepper/stepper.js +1 -2
- package/src/tab/tab-model.d.ts +7 -21
- package/src/tab/tab.d.ts +7 -21
- package/src/tab/tab.js +5 -5
- package/src/toolbar/toolbar.d.ts +1 -0
- package/src/toolbar/toolbar.js +35 -13
- package/src/treeview/treeview-model.d.ts +4 -7
- package/src/treeview/treeview.d.ts +3 -3
- package/src/treeview/treeview.js +15 -9
- package/styles/accordion/_bds-definition.scss +180 -0
- package/styles/accordion/_material-definition.scss +1 -1
- package/styles/accordion/icons/_bds.scss +17 -0
- package/styles/accordion/material.css +1 -1
- package/styles/appbar/_bds-definition.scss +27 -0
- package/styles/bootstrap-dark.css +12 -4
- package/styles/bootstrap.css +12 -4
- package/styles/bootstrap4.css +12 -4
- package/styles/bootstrap5-dark.css +12 -4
- package/styles/bootstrap5.css +12 -4
- package/styles/breadcrumb/_bds-definition.scss +60 -0
- package/styles/breadcrumb/icons/_bds.scss +25 -0
- package/styles/carousel/_bds-definition.scss +27 -0
- package/styles/carousel/_layout.scss +5 -0
- package/styles/carousel/bootstrap-dark.css +6 -0
- package/styles/carousel/bootstrap.css +6 -0
- package/styles/carousel/bootstrap4.css +6 -0
- package/styles/carousel/bootstrap5-dark.css +6 -0
- package/styles/carousel/bootstrap5.css +6 -0
- package/styles/carousel/fabric-dark.css +6 -0
- package/styles/carousel/fabric.css +6 -0
- package/styles/carousel/fluent-dark.css +6 -0
- package/styles/carousel/fluent.css +6 -0
- package/styles/carousel/highcontrast-light.css +6 -0
- package/styles/carousel/highcontrast.css +6 -0
- package/styles/carousel/icons/_bds.scss +30 -0
- package/styles/carousel/material-dark.css +6 -0
- package/styles/carousel/material.css +6 -0
- package/styles/carousel/material3-dark.css +6 -0
- package/styles/carousel/material3.css +6 -0
- package/styles/carousel/tailwind-dark.css +6 -0
- package/styles/carousel/tailwind.css +6 -0
- package/styles/context-menu/_bds-definition.scss +65 -0
- package/styles/context-menu/icons/_bds.scss +33 -0
- package/styles/fabric-dark.css +12 -4
- package/styles/fabric.css +12 -4
- package/styles/fluent-dark.css +12 -4
- package/styles/fluent.css +12 -4
- package/styles/h-scroll/_bds-definition.scss +83 -0
- package/styles/h-scroll/icons/_bds.scss +49 -0
- package/styles/highcontrast-light.css +12 -4
- package/styles/highcontrast.css +12 -4
- package/styles/material-dark.css +12 -4
- package/styles/material.css +13 -5
- package/styles/material3-dark.css +12 -4
- package/styles/material3.css +12 -4
- package/styles/menu/_bds-definition.scss +66 -0
- package/styles/menu/icons/_bds.scss +134 -0
- package/styles/pager/_bds-definition.scss +152 -0
- package/styles/pager/icons/_bds.scss +50 -0
- package/styles/sidebar/_bds-definition.scss +45 -0
- package/styles/stepper/_bds-definition.scss +79 -0
- package/styles/stepper/_layout.scss +1 -0
- package/styles/stepper/bootstrap-dark.css +3 -0
- package/styles/stepper/bootstrap.css +3 -0
- package/styles/stepper/bootstrap4.css +3 -0
- package/styles/stepper/bootstrap5-dark.css +3 -0
- package/styles/stepper/bootstrap5.css +3 -0
- package/styles/stepper/fabric-dark.css +3 -0
- package/styles/stepper/fabric.css +3 -0
- package/styles/stepper/fluent-dark.css +3 -0
- package/styles/stepper/fluent.css +3 -0
- package/styles/stepper/highcontrast-light.css +3 -0
- package/styles/stepper/highcontrast.css +3 -0
- package/styles/stepper/icons/_bds.scss +5 -0
- package/styles/stepper/material-dark.css +3 -0
- package/styles/stepper/material.css +3 -0
- package/styles/stepper/material3-dark.css +3 -0
- package/styles/stepper/material3.css +3 -0
- package/styles/stepper/tailwind-dark.css +3 -0
- package/styles/stepper/tailwind.css +3 -0
- package/styles/tab/_bds-definition.scss +701 -0
- package/styles/tab/icons/_bds.scss +92 -0
- package/styles/tailwind-dark.css +14 -6
- package/styles/tailwind.css +12 -4
- package/styles/toolbar/_bds-definition.scss +215 -0
- package/styles/toolbar/_layout.scss +6 -7
- package/styles/toolbar/bootstrap-dark.css +3 -4
- package/styles/toolbar/bootstrap.css +3 -4
- package/styles/toolbar/bootstrap4.css +3 -4
- package/styles/toolbar/bootstrap5-dark.css +3 -4
- package/styles/toolbar/bootstrap5.css +3 -4
- package/styles/toolbar/fabric-dark.css +3 -4
- package/styles/toolbar/fabric.css +3 -4
- package/styles/toolbar/fluent-dark.css +3 -4
- package/styles/toolbar/fluent.css +3 -4
- package/styles/toolbar/highcontrast-light.css +3 -4
- package/styles/toolbar/highcontrast.css +3 -4
- package/styles/toolbar/icons/_bds.scss +16 -0
- package/styles/toolbar/material-dark.css +3 -4
- package/styles/toolbar/material.css +3 -4
- package/styles/toolbar/material3-dark.css +3 -4
- package/styles/toolbar/material3.css +3 -4
- package/styles/toolbar/tailwind-dark.css +3 -4
- package/styles/toolbar/tailwind.css +3 -4
- package/styles/treeview/_bds-definition.scss +132 -0
- package/styles/treeview/_tailwind-definition.scss +1 -1
- package/styles/treeview/_theme.scss +1 -1
- package/styles/treeview/icons/_bds.scss +43 -0
- package/styles/treeview/tailwind-dark.css +2 -2
- package/styles/v-scroll/_bds-definition.scss +49 -0
- package/styles/v-scroll/icons/_bds.scss +27 -0
package/dist/global/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* filename: index.d.ts
|
|
3
|
-
* version :
|
|
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@
|
|
3
|
+
"_id": "@syncfusion/ej2-navigations@25.1.35",
|
|
4
4
|
"_inBundle": false,
|
|
5
|
-
"_integrity": "sha512-
|
|
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-
|
|
43
|
-
"_shasum": "
|
|
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-
|
|
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": "~
|
|
55
|
-
"@syncfusion/ej2-buttons": "~
|
|
56
|
-
"@syncfusion/ej2-data": "~
|
|
57
|
-
"@syncfusion/ej2-inputs": "~
|
|
58
|
-
"@syncfusion/ej2-lists": "~
|
|
59
|
-
"@syncfusion/ej2-popups": "~
|
|
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": "
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
|
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
|
-
|
|
719
|
-
|
|
720
|
-
|
|
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,
|
|
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(
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
|
289
|
+
* @default true
|
|
289
290
|
*/
|
|
290
291
|
enableHtmlSanitizer: boolean;
|
|
291
292
|
/**
|
package/src/common/menu-base.js
CHANGED
|
@@ -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, '
|
|
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, '
|
|
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
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
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
|
-
|
|
1419
|
-
|
|
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
|
-
|
|
1422
|
-
var
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
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
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
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.
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
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
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
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
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
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
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
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
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
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, '
|
|
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, '
|
|
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(
|
|
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)
|
package/src/menu/menu-model.d.ts
CHANGED
|
@@ -51,9 +51,10 @@ export interface MenuModel extends MenuBaseModel{
|
|
|
51
51
|
title?: string;
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
|
-
*
|
|
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
|
|
57
|
+
* @default true
|
|
57
58
|
*/
|
|
58
59
|
enableHtmlSanitizer?: boolean;
|
|
59
60
|
|
package/src/menu/menu.d.ts
CHANGED
|
@@ -63,9 +63,10 @@ export declare class Menu extends MenuBase implements INotifyPropertyChanged {
|
|
|
63
63
|
*/
|
|
64
64
|
title: string;
|
|
65
65
|
/**
|
|
66
|
-
*
|
|
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
|
|
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(
|
|
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)
|
package/src/stepper/stepper.js
CHANGED
|
@@ -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
|
-
|
|
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 {
|
package/src/tab/tab-model.d.ts
CHANGED
|
@@ -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
|
-
*
|
|
169
|
-
*
|
|
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
|
-
*
|
|
207
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
303
|
-
*
|
|
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
|
-
*
|
|
337
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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(
|
|
2390
|
+
Property(true)
|
|
2391
2391
|
], Tab.prototype, "enableHtmlSanitizer", void 0);
|
|
2392
2392
|
__decorate([
|
|
2393
2393
|
Property(false)
|
package/src/toolbar/toolbar.d.ts
CHANGED