@progress/kendo-angular-menu 21.4.1 → 22.0.0-develop.1
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/data-binding/binding-directive-base.d.ts +1 -1
- package/fesm2022/progress-kendo-angular-menu.mjs +87 -87
- package/menu-base.d.ts +1 -1
- package/package.json +11 -19
- package/esm2022/constants.mjs +0 -8
- package/esm2022/context-menu/context-menu-event.mjs +0 -25
- package/esm2022/context-menu/context-menu-items.service.mjs +0 -27
- package/esm2022/context-menu/context-menu-popup-event.mjs +0 -29
- package/esm2022/context-menu/context-menu-select-event.mjs +0 -14
- package/esm2022/context-menu/context-menu-target-container.directive.mjs +0 -49
- package/esm2022/context-menu/context-menu-target.directive.mjs +0 -62
- package/esm2022/context-menu/context-menu-target.service.mjs +0 -27
- package/esm2022/context-menu/context-menu-template.directive.mjs +0 -39
- package/esm2022/context-menu/context-menu.component.mjs +0 -527
- package/esm2022/context-menu/context-menu.module.mjs +0 -69
- package/esm2022/context-menu/context-menu.service.mjs +0 -30
- package/esm2022/data-binding/binding-directive-base.mjs +0 -46
- package/esm2022/data-binding/flat-binding.directive.mjs +0 -139
- package/esm2022/data-binding/hierachy-binding.directive.mjs +0 -124
- package/esm2022/data-binding/utils.mjs +0 -31
- package/esm2022/directives.mjs +0 -48
- package/esm2022/dom-queries.mjs +0 -104
- package/esm2022/index.mjs +0 -29
- package/esm2022/menu-animation.interface.mjs +0 -5
- package/esm2022/menu-base.mjs +0 -103
- package/esm2022/menu-event.mjs +0 -22
- package/esm2022/menu-item.component.mjs +0 -149
- package/esm2022/menu-item.interface.mjs +0 -5
- package/esm2022/menu-select-event.mjs +0 -14
- package/esm2022/menu.component.mjs +0 -304
- package/esm2022/menu.module.mjs +0 -65
- package/esm2022/menus.module.mjs +0 -59
- package/esm2022/open-on-click-settings.mjs +0 -10
- package/esm2022/package-metadata.mjs +0 -16
- package/esm2022/preventable-event.mjs +0 -34
- package/esm2022/progress-kendo-angular-menu.mjs +0 -8
- package/esm2022/rendering/arrow.component.mjs +0 -70
- package/esm2022/rendering/link.directive.mjs +0 -69
- package/esm2022/rendering/list.component.mjs +0 -679
- package/esm2022/rendering/popup-settings.mjs +0 -74
- package/esm2022/services/actions.service.mjs +0 -192
- package/esm2022/services/hover.service.mjs +0 -127
- package/esm2022/services/items.service.mjs +0 -128
- package/esm2022/services/navigation.service.mjs +0 -268
- package/esm2022/size.mjs +0 -5
- package/esm2022/templates/item-content-template.directive.mjs +0 -53
- package/esm2022/templates/item-link-template.directive.mjs +0 -57
- package/esm2022/templates/item-template.directive.mjs +0 -54
- package/esm2022/utils.mjs +0 -52
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Directive, Input } from '@angular/core';
|
|
6
|
-
import { MenuBase } from '../menu-base';
|
|
7
|
-
import { BindingDirectiveBase } from './binding-directive-base';
|
|
8
|
-
import { getter } from './utils';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "../menu-base";
|
|
11
|
-
/**
|
|
12
|
-
* Represents a directive that converts the provided flat data to [MenuItems]({% slug api_menu_menuitem %}) and binds them to the Menu.
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```html
|
|
16
|
-
* <kendo-menu [kendoMenuFlatBinding]="flatData" [textField]="'text'" [idField]="'id'" [parentIdField]="'parentId'">
|
|
17
|
-
* </kendo-menu>
|
|
18
|
-
* ```
|
|
19
|
-
*
|
|
20
|
-
* @remarks
|
|
21
|
-
* Applied to: {@link MenuComponent}.
|
|
22
|
-
*/
|
|
23
|
-
export class FlatBindingDirective extends BindingDirectiveBase {
|
|
24
|
-
/**
|
|
25
|
-
* Specifies the array of data which will be used to populate the Menu.
|
|
26
|
-
*/
|
|
27
|
-
data;
|
|
28
|
-
/**
|
|
29
|
-
* Defines the `text` field of the items.
|
|
30
|
-
*/
|
|
31
|
-
textField;
|
|
32
|
-
/**
|
|
33
|
-
* Defines the `url` field of the items.
|
|
34
|
-
*/
|
|
35
|
-
urlField;
|
|
36
|
-
/**
|
|
37
|
-
* Defines the `icon` field of the items.
|
|
38
|
-
*/
|
|
39
|
-
iconField;
|
|
40
|
-
/**
|
|
41
|
-
* Defines the `svgIcon` field of the items.
|
|
42
|
-
*/
|
|
43
|
-
svgIconField;
|
|
44
|
-
/**
|
|
45
|
-
* Defines the `disabled` field of the items.
|
|
46
|
-
*/
|
|
47
|
-
disabledField;
|
|
48
|
-
/**
|
|
49
|
-
* Defines the `cssClass` field of the items.
|
|
50
|
-
*/
|
|
51
|
-
cssClassField;
|
|
52
|
-
/**
|
|
53
|
-
* Defines the `cssStyle` field of the items.
|
|
54
|
-
*/
|
|
55
|
-
cssStyleField;
|
|
56
|
-
/**
|
|
57
|
-
* Defines the `separator` field of the items.
|
|
58
|
-
*/
|
|
59
|
-
separatorField;
|
|
60
|
-
/**
|
|
61
|
-
* Defines the `id` field of the items.
|
|
62
|
-
*/
|
|
63
|
-
idField;
|
|
64
|
-
/**
|
|
65
|
-
* Defines the parent `id` field of the items.
|
|
66
|
-
*/
|
|
67
|
-
parentIdField;
|
|
68
|
-
constructor(menu) {
|
|
69
|
-
super(menu);
|
|
70
|
-
}
|
|
71
|
-
mapItems(items) {
|
|
72
|
-
if (!this.idField || !this.parentIdField) {
|
|
73
|
-
return items.map(item => this.createItem(item));
|
|
74
|
-
}
|
|
75
|
-
const result = [];
|
|
76
|
-
const map = {};
|
|
77
|
-
for (let idx = 0; idx < items.length; idx++) {
|
|
78
|
-
const item = items[idx];
|
|
79
|
-
const menuItem = this.createItem(item);
|
|
80
|
-
const id = getter(this.idField)(item);
|
|
81
|
-
const parentId = getter(this.parentIdField)(item);
|
|
82
|
-
if (parentId === null || parentId === undefined) {
|
|
83
|
-
result.push(menuItem);
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
const parent = map[parentId] = map[parentId] || {};
|
|
87
|
-
parent.items = parent.items || [];
|
|
88
|
-
parent.items.push(menuItem);
|
|
89
|
-
}
|
|
90
|
-
if (map[id]) {
|
|
91
|
-
menuItem.items = map[id].items;
|
|
92
|
-
}
|
|
93
|
-
map[id] = menuItem;
|
|
94
|
-
}
|
|
95
|
-
return result;
|
|
96
|
-
}
|
|
97
|
-
createItem(dataItem) {
|
|
98
|
-
const result = { data: dataItem };
|
|
99
|
-
const fields = this.fields;
|
|
100
|
-
for (let idx = 0; idx < fields.length; idx++) {
|
|
101
|
-
const { source, target } = fields[idx];
|
|
102
|
-
result[target] = getter(source)(dataItem);
|
|
103
|
-
}
|
|
104
|
-
return result;
|
|
105
|
-
}
|
|
106
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FlatBindingDirective, deps: [{ token: i1.MenuBase }], target: i0.ɵɵFactoryTarget.Directive });
|
|
107
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: FlatBindingDirective, isStandalone: true, selector: "[kendoMenuFlatBinding]", inputs: { data: ["kendoMenuFlatBinding", "data"], textField: "textField", urlField: "urlField", iconField: "iconField", svgIconField: "svgIconField", disabledField: "disabledField", cssClassField: "cssClassField", cssStyleField: "cssStyleField", separatorField: "separatorField", idField: "idField", parentIdField: "parentIdField" }, exportAs: ["kendoMenuFlatBinding"], usesInheritance: true, ngImport: i0 });
|
|
108
|
-
}
|
|
109
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FlatBindingDirective, decorators: [{
|
|
110
|
-
type: Directive,
|
|
111
|
-
args: [{
|
|
112
|
-
exportAs: 'kendoMenuFlatBinding',
|
|
113
|
-
selector: '[kendoMenuFlatBinding]',
|
|
114
|
-
standalone: true
|
|
115
|
-
}]
|
|
116
|
-
}], ctorParameters: () => [{ type: i1.MenuBase }], propDecorators: { data: [{
|
|
117
|
-
type: Input,
|
|
118
|
-
args: ["kendoMenuFlatBinding"]
|
|
119
|
-
}], textField: [{
|
|
120
|
-
type: Input
|
|
121
|
-
}], urlField: [{
|
|
122
|
-
type: Input
|
|
123
|
-
}], iconField: [{
|
|
124
|
-
type: Input
|
|
125
|
-
}], svgIconField: [{
|
|
126
|
-
type: Input
|
|
127
|
-
}], disabledField: [{
|
|
128
|
-
type: Input
|
|
129
|
-
}], cssClassField: [{
|
|
130
|
-
type: Input
|
|
131
|
-
}], cssStyleField: [{
|
|
132
|
-
type: Input
|
|
133
|
-
}], separatorField: [{
|
|
134
|
-
type: Input
|
|
135
|
-
}], idField: [{
|
|
136
|
-
type: Input
|
|
137
|
-
}], parentIdField: [{
|
|
138
|
-
type: Input
|
|
139
|
-
}] } });
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Directive, Input } from '@angular/core';
|
|
6
|
-
import { MenuBase } from '../menu-base';
|
|
7
|
-
import { BindingDirectiveBase } from './binding-directive-base';
|
|
8
|
-
import { getter, last } from './utils';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "../menu-base";
|
|
11
|
-
const getField = (field, level) => Array.isArray(field) ? field[level] || last(field) : field;
|
|
12
|
-
/**
|
|
13
|
-
* Represents a directive that converts the provided hierarchical data to [MenuItems]({% slug api_menu_menuitem %}) and binds them to the Menu.
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```html
|
|
17
|
-
* <kendo-menu [kendoMenuHierarchyBinding]="hierarchicalData" [textField]="'text'" [childrenField]="'items'">
|
|
18
|
-
* </kendo-menu>
|
|
19
|
-
* ```
|
|
20
|
-
*
|
|
21
|
-
* @remarks
|
|
22
|
-
* Applied to: {@link MenuComponent}.
|
|
23
|
-
*/
|
|
24
|
-
export class HierarchyBindingDirective extends BindingDirectiveBase {
|
|
25
|
-
/**
|
|
26
|
-
* Specifies the array of data which will be used to populate the Menu.
|
|
27
|
-
*/
|
|
28
|
-
data;
|
|
29
|
-
/**
|
|
30
|
-
* Defines the `text` field (or fields) of an item.
|
|
31
|
-
*/
|
|
32
|
-
textField;
|
|
33
|
-
/**
|
|
34
|
-
* Defines the `url` field (or fields) of an item.
|
|
35
|
-
*/
|
|
36
|
-
urlField;
|
|
37
|
-
/**
|
|
38
|
-
* Defines the `icon` field (or fields) of an item.
|
|
39
|
-
*/
|
|
40
|
-
iconField;
|
|
41
|
-
/**
|
|
42
|
-
* Defines the `svgIcon` field of the items.
|
|
43
|
-
*/
|
|
44
|
-
svgIconField;
|
|
45
|
-
/**
|
|
46
|
-
* Defines the `disabled` field (or fields) of an item.
|
|
47
|
-
*/
|
|
48
|
-
disabledField;
|
|
49
|
-
/**
|
|
50
|
-
* Defines the `cssClass` field (or fields) of an item.
|
|
51
|
-
*/
|
|
52
|
-
cssClassField;
|
|
53
|
-
/**
|
|
54
|
-
* Defines the `cssStyle` field (or fields) of an item.
|
|
55
|
-
*/
|
|
56
|
-
cssStyleField;
|
|
57
|
-
/**
|
|
58
|
-
* Defines the `separator` field (or fields) of the items.
|
|
59
|
-
*/
|
|
60
|
-
separatorField;
|
|
61
|
-
/**
|
|
62
|
-
* Defines the `children` field (or fields) of the items.
|
|
63
|
-
*/
|
|
64
|
-
childrenField;
|
|
65
|
-
constructor(menu) {
|
|
66
|
-
super(menu);
|
|
67
|
-
}
|
|
68
|
-
mapItems(items, level = 0) {
|
|
69
|
-
return items.map((item) => {
|
|
70
|
-
const menuItem = this.createItem(item, level);
|
|
71
|
-
const children = this.getChildren(item, level);
|
|
72
|
-
if (children) {
|
|
73
|
-
menuItem.items = this.mapItems(children, level + 1);
|
|
74
|
-
}
|
|
75
|
-
return menuItem;
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
createItem(item, level) {
|
|
79
|
-
const result = { data: item };
|
|
80
|
-
const fields = this.fields;
|
|
81
|
-
for (let idx = 0; idx < fields.length; idx++) {
|
|
82
|
-
const { target, source } = fields[idx];
|
|
83
|
-
result[target] = getter(getField(source, level))(item);
|
|
84
|
-
}
|
|
85
|
-
return result;
|
|
86
|
-
}
|
|
87
|
-
getChildren(item, level) {
|
|
88
|
-
if (this.childrenField) {
|
|
89
|
-
const field = getField(this.childrenField, level);
|
|
90
|
-
return item[field];
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HierarchyBindingDirective, deps: [{ token: i1.MenuBase }], target: i0.ɵɵFactoryTarget.Directive });
|
|
94
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: HierarchyBindingDirective, isStandalone: true, selector: "[kendoMenuHierarchyBinding]", inputs: { data: ["kendoMenuHierarchyBinding", "data"], textField: "textField", urlField: "urlField", iconField: "iconField", svgIconField: "svgIconField", disabledField: "disabledField", cssClassField: "cssClassField", cssStyleField: "cssStyleField", separatorField: "separatorField", childrenField: "childrenField" }, exportAs: ["kendoMenuHierarchyBinding"], usesInheritance: true, ngImport: i0 });
|
|
95
|
-
}
|
|
96
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HierarchyBindingDirective, decorators: [{
|
|
97
|
-
type: Directive,
|
|
98
|
-
args: [{
|
|
99
|
-
exportAs: 'kendoMenuHierarchyBinding',
|
|
100
|
-
selector: '[kendoMenuHierarchyBinding]',
|
|
101
|
-
standalone: true
|
|
102
|
-
}]
|
|
103
|
-
}], ctorParameters: () => [{ type: i1.MenuBase }], propDecorators: { data: [{
|
|
104
|
-
type: Input,
|
|
105
|
-
args: ["kendoMenuHierarchyBinding"]
|
|
106
|
-
}], textField: [{
|
|
107
|
-
type: Input
|
|
108
|
-
}], urlField: [{
|
|
109
|
-
type: Input
|
|
110
|
-
}], iconField: [{
|
|
111
|
-
type: Input
|
|
112
|
-
}], svgIconField: [{
|
|
113
|
-
type: Input
|
|
114
|
-
}], disabledField: [{
|
|
115
|
-
type: Input
|
|
116
|
-
}], cssClassField: [{
|
|
117
|
-
type: Input
|
|
118
|
-
}], cssStyleField: [{
|
|
119
|
-
type: Input
|
|
120
|
-
}], separatorField: [{
|
|
121
|
-
type: Input
|
|
122
|
-
}], childrenField: [{
|
|
123
|
-
type: Input
|
|
124
|
-
}] } });
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
const FIELD_REGEX = /\[(?:(\d+)|['"](.*?)['"])\]|((?:(?!\[.*?\]|\.).)+)/g;
|
|
6
|
-
const getterCache = {};
|
|
7
|
-
getterCache['undefined'] = (obj) => obj;
|
|
8
|
-
/**
|
|
9
|
-
* @hidden
|
|
10
|
-
*/
|
|
11
|
-
export const getter = (field) => {
|
|
12
|
-
if (getterCache[field]) {
|
|
13
|
-
return getterCache[field];
|
|
14
|
-
}
|
|
15
|
-
const fields = [];
|
|
16
|
-
field.replace(FIELD_REGEX, (_match, index, indexAccessor, name) => {
|
|
17
|
-
fields.push(index !== undefined ? index : (indexAccessor || name));
|
|
18
|
-
});
|
|
19
|
-
getterCache[field] = (obj) => {
|
|
20
|
-
let result = obj;
|
|
21
|
-
for (let idx = 0; idx < fields.length && result; idx++) {
|
|
22
|
-
result = result[fields[idx]];
|
|
23
|
-
}
|
|
24
|
-
return result;
|
|
25
|
-
};
|
|
26
|
-
return getterCache[field];
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* @hidden
|
|
30
|
-
*/
|
|
31
|
-
export const last = (arr) => arr[arr.length - 1];
|
package/esm2022/directives.mjs
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { MenuComponent } from './menu.component';
|
|
6
|
-
import { MenuItemComponent } from './menu-item.component';
|
|
7
|
-
import { LinkDirective } from './rendering/link.directive';
|
|
8
|
-
import { ExpandArrowComponent } from './rendering/arrow.component';
|
|
9
|
-
import { ItemTemplateDirective } from './templates/item-template.directive';
|
|
10
|
-
import { ItemLinkTemplateDirective } from './templates/item-link-template.directive';
|
|
11
|
-
import { ItemContentTemplateDirective } from './templates/item-content-template.directive';
|
|
12
|
-
import { HierarchyBindingDirective } from './data-binding/hierachy-binding.directive';
|
|
13
|
-
import { FlatBindingDirective } from './data-binding/flat-binding.directive';
|
|
14
|
-
import { ContextMenuComponent } from './context-menu/context-menu.component';
|
|
15
|
-
import { ContextMenuTemplateDirective } from './context-menu/context-menu-template.directive';
|
|
16
|
-
import { ContextMenuTargetDirective } from './context-menu/context-menu-target.directive';
|
|
17
|
-
import { ContextMenuTargetContainerDirective } from './context-menu/context-menu-target-container.directive';
|
|
18
|
-
/**
|
|
19
|
-
* Represents a utility array that contains all `Menu` related components and directives.
|
|
20
|
-
*/
|
|
21
|
-
export const KENDO_MENU = [
|
|
22
|
-
MenuComponent,
|
|
23
|
-
MenuItemComponent,
|
|
24
|
-
ItemTemplateDirective,
|
|
25
|
-
ItemLinkTemplateDirective,
|
|
26
|
-
ItemContentTemplateDirective,
|
|
27
|
-
HierarchyBindingDirective,
|
|
28
|
-
FlatBindingDirective,
|
|
29
|
-
LinkDirective,
|
|
30
|
-
ExpandArrowComponent
|
|
31
|
-
];
|
|
32
|
-
/**
|
|
33
|
-
* Represents a utility array that contains all `ContextMenu` related components and directives.
|
|
34
|
-
*/
|
|
35
|
-
export const KENDO_CONTEXTMENU = [
|
|
36
|
-
ContextMenuComponent,
|
|
37
|
-
ContextMenuTemplateDirective,
|
|
38
|
-
ContextMenuTargetDirective,
|
|
39
|
-
ContextMenuTargetContainerDirective,
|
|
40
|
-
...KENDO_MENU
|
|
41
|
-
];
|
|
42
|
-
/**
|
|
43
|
-
* Represents a utility array that contains all `@progress/kendo-angular-menu` related components and directives.
|
|
44
|
-
*/
|
|
45
|
-
export const KENDO_MENUS = [
|
|
46
|
-
...KENDO_MENU,
|
|
47
|
-
...KENDO_CONTEXTMENU
|
|
48
|
-
];
|
package/esm2022/dom-queries.mjs
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { NODE_INDEX } from './constants';
|
|
6
|
-
const DEFAULT_ID = 'kendo-matches-container';
|
|
7
|
-
const focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;
|
|
8
|
-
const matches = (element, selector) => (element.matches || element.msMatchesSelector).call(element, selector);
|
|
9
|
-
/**
|
|
10
|
-
* @hidden
|
|
11
|
-
*/
|
|
12
|
-
export const closest = (node, predicate) => {
|
|
13
|
-
while (node && !predicate(node)) {
|
|
14
|
-
node = node.parentNode;
|
|
15
|
-
}
|
|
16
|
-
return node;
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* @hidden
|
|
20
|
-
*/
|
|
21
|
-
export const closestInScope = (node, predicate, scope) => {
|
|
22
|
-
while (node && node !== scope && !predicate(node)) {
|
|
23
|
-
node = node.parentNode;
|
|
24
|
-
}
|
|
25
|
-
if (node !== scope) {
|
|
26
|
-
return node;
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
/**
|
|
30
|
-
* @hidden
|
|
31
|
-
*/
|
|
32
|
-
export const isFocusable = (element) => {
|
|
33
|
-
if (element.tagName) {
|
|
34
|
-
const tagName = element.tagName.toLowerCase();
|
|
35
|
-
const tabIndex = element.getAttribute('tabIndex');
|
|
36
|
-
const skipTab = tabIndex === '-1';
|
|
37
|
-
let focusable = tabIndex !== null && !skipTab;
|
|
38
|
-
if (focusableRegex.test(tagName)) {
|
|
39
|
-
focusable = !element.disabled && !skipTab;
|
|
40
|
-
}
|
|
41
|
-
return focusable;
|
|
42
|
-
}
|
|
43
|
-
return false;
|
|
44
|
-
};
|
|
45
|
-
const toClassList = (classNames) => String(classNames).trim().split(' ');
|
|
46
|
-
/**
|
|
47
|
-
* @hidden
|
|
48
|
-
*/
|
|
49
|
-
export const hasClass = (element, name) => {
|
|
50
|
-
return toClassList(element.className).indexOf(name) >= 0;
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* @hidden
|
|
54
|
-
*/
|
|
55
|
-
export const matchesClasses = (classes) => {
|
|
56
|
-
const list = toClassList(classes);
|
|
57
|
-
return (element) => {
|
|
58
|
-
const classList = toClassList(element.className);
|
|
59
|
-
return Boolean(list.find(name => classList.indexOf(name) >= 0));
|
|
60
|
-
};
|
|
61
|
-
};
|
|
62
|
-
/**
|
|
63
|
-
* @hidden
|
|
64
|
-
*/
|
|
65
|
-
export const nodeIndex = (node) => node.getAttribute(NODE_INDEX);
|
|
66
|
-
/**
|
|
67
|
-
* @hidden
|
|
68
|
-
*/
|
|
69
|
-
export const closestItem = (node, scope) => closestInScope(node, nodeIndex, scope);
|
|
70
|
-
/**
|
|
71
|
-
* @hidden
|
|
72
|
-
*/
|
|
73
|
-
export const closestList = (node) => {
|
|
74
|
-
let list = closest(node, matchesClasses('k-menu-popup k-menu k-menu-group'));
|
|
75
|
-
if (list && hasClass(list, 'k-menu-popup')) {
|
|
76
|
-
list = list.querySelector('.k-menu-group');
|
|
77
|
-
}
|
|
78
|
-
return list;
|
|
79
|
-
};
|
|
80
|
-
/**
|
|
81
|
-
* @hidden
|
|
82
|
-
*/
|
|
83
|
-
export const inMenu = (node, itemsService) => {
|
|
84
|
-
if (node === itemsService.lists[0].element.nativeElement) {
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
const list = closestList(node);
|
|
88
|
-
return list && itemsService.containsList(list);
|
|
89
|
-
};
|
|
90
|
-
/**
|
|
91
|
-
* @hidden
|
|
92
|
-
*/
|
|
93
|
-
export const findInContainer = (element, selector, container) => {
|
|
94
|
-
const id = container.getAttribute('id');
|
|
95
|
-
if (!id) {
|
|
96
|
-
container.setAttribute('id', DEFAULT_ID);
|
|
97
|
-
}
|
|
98
|
-
const contextSelector = `#${id || DEFAULT_ID} ${selector}`;
|
|
99
|
-
const match = closestInScope(element, node => matches(node, contextSelector), container);
|
|
100
|
-
if (!id) {
|
|
101
|
-
container.removeAttribute('id');
|
|
102
|
-
}
|
|
103
|
-
return match;
|
|
104
|
-
};
|
package/esm2022/index.mjs
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
export { MenuComponent } from './menu.component';
|
|
6
|
-
export { ListComponent, ItemComponent } from './rendering/list.component';
|
|
7
|
-
export { LinkDirective } from './rendering/link.directive';
|
|
8
|
-
export { ExpandArrowComponent } from './rendering/arrow.component';
|
|
9
|
-
export { MenuItemComponent } from './menu-item.component';
|
|
10
|
-
export { MenuEvent } from './menu-event';
|
|
11
|
-
export { MenuSelectEvent } from './menu-select-event';
|
|
12
|
-
export { ItemContentTemplateDirective } from './templates/item-content-template.directive';
|
|
13
|
-
export { ItemTemplateDirective } from './templates/item-template.directive';
|
|
14
|
-
export { ItemLinkTemplateDirective } from './templates/item-link-template.directive';
|
|
15
|
-
export { HierarchyBindingDirective } from './data-binding/hierachy-binding.directive';
|
|
16
|
-
export { FlatBindingDirective } from './data-binding/flat-binding.directive';
|
|
17
|
-
export { MenuModule } from './menu.module';
|
|
18
|
-
export { ContextMenuEvent } from './context-menu/context-menu-event';
|
|
19
|
-
export { ContextMenuSelectEvent } from './context-menu/context-menu-select-event';
|
|
20
|
-
export { ContextMenuPopupEvent } from './context-menu/context-menu-popup-event';
|
|
21
|
-
export { ContextMenuTemplateDirective } from './context-menu/context-menu-template.directive';
|
|
22
|
-
export { ContextMenuComponent } from './context-menu/context-menu.component';
|
|
23
|
-
export { ContextMenuModule } from './context-menu/context-menu.module';
|
|
24
|
-
export { ContextMenuService } from './context-menu/context-menu.service';
|
|
25
|
-
export { ItemsService } from './services/items.service';
|
|
26
|
-
export { ContextMenuTargetContainerDirective } from './context-menu/context-menu-target-container.directive';
|
|
27
|
-
export { ContextMenuTargetDirective } from './context-menu/context-menu-target.directive';
|
|
28
|
-
export { MenusModule } from './menus.module';
|
|
29
|
-
export * from './directives';
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
export {};
|
package/esm2022/menu-base.mjs
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Input, ContentChildren, QueryList, Component } from '@angular/core';
|
|
6
|
-
import { MenuItemComponent } from './menu-item.component';
|
|
7
|
-
import { ItemTemplateDirective } from './templates/item-template.directive';
|
|
8
|
-
import { ItemLinkTemplateDirective } from './templates/item-link-template.directive';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
/**
|
|
11
|
-
* @hidden
|
|
12
|
-
*/
|
|
13
|
-
export class MenuBase {
|
|
14
|
-
/**
|
|
15
|
-
* Specifies the Menu items.
|
|
16
|
-
*/
|
|
17
|
-
items;
|
|
18
|
-
/**
|
|
19
|
-
* Specifies if the Menu will be vertical ([see example]({% slug vertical_menu %})).
|
|
20
|
-
*/
|
|
21
|
-
vertical = false;
|
|
22
|
-
/**
|
|
23
|
-
* Specifies that the root items can be opened only on click
|
|
24
|
-
* ([see example]({% slug openclose_menu %}#toc-opening-on-click)).
|
|
25
|
-
*/
|
|
26
|
-
openOnClick = false;
|
|
27
|
-
/**
|
|
28
|
-
* Specifies the delay in milliseconds before the Menu items are opened or closed on item hover
|
|
29
|
-
* or leave ([see example]({% slug openclose_menu %}#toc-delay-on-hover)). Used to avoid the accidental
|
|
30
|
-
* opening or closing of the items.
|
|
31
|
-
*/
|
|
32
|
-
hoverDelay = 100;
|
|
33
|
-
/**
|
|
34
|
-
* Sets the Menu animation.
|
|
35
|
-
*/
|
|
36
|
-
animate = true;
|
|
37
|
-
/**
|
|
38
|
-
* Sets the Menu size.
|
|
39
|
-
*
|
|
40
|
-
* The possible values are:
|
|
41
|
-
* * `small`
|
|
42
|
-
* * `medium` (default)
|
|
43
|
-
* * `large`
|
|
44
|
-
* * `none`
|
|
45
|
-
*
|
|
46
|
-
*/
|
|
47
|
-
size = 'medium';
|
|
48
|
-
/**
|
|
49
|
-
* Configures the popup settings for the Menu items.
|
|
50
|
-
* Allows customization of the popup class and margin.
|
|
51
|
-
*/
|
|
52
|
-
popupSettings;
|
|
53
|
-
/**
|
|
54
|
-
* @hidden
|
|
55
|
-
*/
|
|
56
|
-
itemTemplate;
|
|
57
|
-
/**
|
|
58
|
-
* @hidden
|
|
59
|
-
*/
|
|
60
|
-
itemLinkTemplate;
|
|
61
|
-
/**
|
|
62
|
-
* @hidden
|
|
63
|
-
*/
|
|
64
|
-
children;
|
|
65
|
-
/**
|
|
66
|
-
* @hidden
|
|
67
|
-
*/
|
|
68
|
-
get rootItems() {
|
|
69
|
-
return this.items || (this.children ? this.children.toArray() : []);
|
|
70
|
-
}
|
|
71
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MenuBase, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
72
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MenuBase, selector: "kendo-menu-base", inputs: { items: "items", vertical: "vertical", openOnClick: "openOnClick", hoverDelay: "hoverDelay", animate: "animate", size: "size", popupSettings: "popupSettings" }, queries: [{ propertyName: "itemTemplate", predicate: ItemTemplateDirective }, { propertyName: "itemLinkTemplate", predicate: ItemLinkTemplateDirective }, { propertyName: "children", predicate: MenuItemComponent }], ngImport: i0, template: ``, isInline: true });
|
|
73
|
-
}
|
|
74
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MenuBase, decorators: [{
|
|
75
|
-
type: Component,
|
|
76
|
-
args: [{
|
|
77
|
-
selector: 'kendo-menu-base',
|
|
78
|
-
template: ``
|
|
79
|
-
}]
|
|
80
|
-
}], propDecorators: { items: [{
|
|
81
|
-
type: Input
|
|
82
|
-
}], vertical: [{
|
|
83
|
-
type: Input
|
|
84
|
-
}], openOnClick: [{
|
|
85
|
-
type: Input
|
|
86
|
-
}], hoverDelay: [{
|
|
87
|
-
type: Input
|
|
88
|
-
}], animate: [{
|
|
89
|
-
type: Input
|
|
90
|
-
}], size: [{
|
|
91
|
-
type: Input
|
|
92
|
-
}], popupSettings: [{
|
|
93
|
-
type: Input
|
|
94
|
-
}], itemTemplate: [{
|
|
95
|
-
type: ContentChildren,
|
|
96
|
-
args: [ItemTemplateDirective]
|
|
97
|
-
}], itemLinkTemplate: [{
|
|
98
|
-
type: ContentChildren,
|
|
99
|
-
args: [ItemLinkTemplateDirective]
|
|
100
|
-
}], children: [{
|
|
101
|
-
type: ContentChildren,
|
|
102
|
-
args: [MenuItemComponent]
|
|
103
|
-
}] } });
|
package/esm2022/menu-event.mjs
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { PreventableEvent } from './preventable-event';
|
|
6
|
-
/**
|
|
7
|
-
* Represents the arguments for the `open` and `close` events of the Menu.
|
|
8
|
-
*/
|
|
9
|
-
export class MenuEvent extends PreventableEvent {
|
|
10
|
-
/**
|
|
11
|
-
* Specifies the MenuComponent that triggered the event.
|
|
12
|
-
*/
|
|
13
|
-
sender;
|
|
14
|
-
/**
|
|
15
|
-
* Specifies the item data of the event.
|
|
16
|
-
*/
|
|
17
|
-
item;
|
|
18
|
-
/**
|
|
19
|
-
* Specifies the item index of the event.
|
|
20
|
-
*/
|
|
21
|
-
index;
|
|
22
|
-
}
|