@progress/kendo-vue-layout 2.5.1 → 2.5.2
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/dist/cdn/js/kendo-vue-layout.js +1 -1
- package/dist/es/main.d.ts +5 -0
- package/dist/es/main.js +5 -0
- package/dist/es/menu/BaseMenuItemInternalProps.d.ts +20 -0
- package/dist/es/menu/BaseMenuItemInternalProps.js +0 -0
- package/dist/es/menu/MenuProps.d.ts +51 -0
- package/dist/es/menu/MenuProps.js +1 -0
- package/dist/es/menu/components/Menu.d.ts +68 -0
- package/dist/es/menu/components/Menu.js +301 -0
- package/dist/es/menu/components/MenuItemArrow.d.ts +65 -0
- package/dist/es/menu/components/MenuItemArrow.js +59 -0
- package/dist/es/menu/components/MenuItemInternal.d.ts +55 -0
- package/dist/es/menu/components/MenuItemInternal.js +437 -0
- package/dist/es/menu/components/MenuItemInternalsList.d.ts +44 -0
- package/dist/es/menu/components/MenuItemInternalsList.js +147 -0
- package/dist/es/menu/components/MenuItemLink.d.ts +49 -0
- package/dist/es/menu/components/MenuItemLink.js +57 -0
- package/dist/es/menu/consts.d.ts +54 -0
- package/dist/es/menu/consts.js +70 -0
- package/dist/es/menu/events.d.ts +14 -0
- package/dist/es/menu/events.js +1 -0
- package/dist/es/menu/models/BaseMenuItem.d.ts +45 -0
- package/dist/es/menu/models/BaseMenuItem.js +1 -0
- package/dist/es/menu/models/MenuItemModel.d.ts +19 -0
- package/dist/es/menu/models/MenuItemModel.js +0 -0
- package/dist/es/menu/utils/DirectionHolder.d.ts +11 -0
- package/dist/es/menu/utils/DirectionHolder.js +24 -0
- package/dist/es/menu/utils/MouseOverHandler.d.ts +17 -0
- package/dist/es/menu/utils/MouseOverHandler.js +64 -0
- package/dist/es/menu/utils/getNewItemIdUponKeyboardNavigation.d.ts +7 -0
- package/dist/es/menu/utils/getNewItemIdUponKeyboardNavigation.js +202 -0
- package/dist/es/menu/utils/hoverDelay.d.ts +9 -0
- package/dist/es/menu/utils/hoverDelay.js +17 -0
- package/dist/es/menu/utils/itemsIdsUtils.d.ts +64 -0
- package/dist/es/menu/utils/itemsIdsUtils.js +119 -0
- package/dist/es/menu/utils/misc.d.ts +16 -0
- package/dist/es/menu/utils/misc.js +42 -0
- package/dist/es/menu/utils/prepareInputItemsForInternalWork.d.ts +5 -0
- package/dist/es/menu/utils/prepareInputItemsForInternalWork.js +80 -0
- package/dist/es/package-metadata.js +1 -1
- package/dist/npm/main.d.ts +5 -0
- package/dist/npm/main.js +5 -0
- package/dist/npm/menu/BaseMenuItemInternalProps.d.ts +20 -0
- package/dist/npm/menu/BaseMenuItemInternalProps.js +2 -0
- package/dist/npm/menu/MenuProps.d.ts +51 -0
- package/dist/npm/menu/MenuProps.js +5 -0
- package/dist/npm/menu/components/Menu.d.ts +68 -0
- package/dist/npm/menu/components/Menu.js +320 -0
- package/dist/npm/menu/components/MenuItemArrow.d.ts +65 -0
- package/dist/npm/menu/components/MenuItemArrow.js +69 -0
- package/dist/npm/menu/components/MenuItemInternal.d.ts +55 -0
- package/dist/npm/menu/components/MenuItemInternal.js +453 -0
- package/dist/npm/menu/components/MenuItemInternalsList.d.ts +44 -0
- package/dist/npm/menu/components/MenuItemInternalsList.js +158 -0
- package/dist/npm/menu/components/MenuItemLink.d.ts +49 -0
- package/dist/npm/menu/components/MenuItemLink.js +67 -0
- package/dist/npm/menu/consts.d.ts +54 -0
- package/dist/npm/menu/consts.js +73 -0
- package/dist/npm/menu/events.d.ts +14 -0
- package/dist/npm/menu/events.js +3 -0
- package/dist/npm/menu/models/BaseMenuItem.d.ts +45 -0
- package/dist/npm/menu/models/BaseMenuItem.js +3 -0
- package/dist/npm/menu/models/MenuItemModel.d.ts +19 -0
- package/dist/npm/menu/models/MenuItemModel.js +2 -0
- package/dist/npm/menu/utils/DirectionHolder.d.ts +11 -0
- package/dist/npm/menu/utils/DirectionHolder.js +27 -0
- package/dist/npm/menu/utils/MouseOverHandler.d.ts +17 -0
- package/dist/npm/menu/utils/MouseOverHandler.js +67 -0
- package/dist/npm/menu/utils/getNewItemIdUponKeyboardNavigation.d.ts +7 -0
- package/dist/npm/menu/utils/getNewItemIdUponKeyboardNavigation.js +206 -0
- package/dist/npm/menu/utils/hoverDelay.d.ts +9 -0
- package/dist/npm/menu/utils/hoverDelay.js +22 -0
- package/dist/npm/menu/utils/itemsIdsUtils.d.ts +64 -0
- package/dist/npm/menu/utils/itemsIdsUtils.js +135 -0
- package/dist/npm/menu/utils/misc.d.ts +16 -0
- package/dist/npm/menu/utils/misc.js +49 -0
- package/dist/npm/menu/utils/prepareInputItemsForInternalWork.d.ts +5 -0
- package/dist/npm/menu/utils/prepareInputItemsForInternalWork.js +84 -0
- package/dist/npm/package-metadata.js +1 -1
- package/package.json +9 -9
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
import * as Vue from 'vue';
|
|
3
|
+
var allVue = Vue;
|
|
4
|
+
var gh = allVue.h;
|
|
5
|
+
import { getDefaultSlots } from '@progress/kendo-vue-common'; // tslint:enable:max-line-length
|
|
6
|
+
|
|
7
|
+
var MenuItemLink = {
|
|
8
|
+
name: 'KendoMenuItemLink',
|
|
9
|
+
props: {
|
|
10
|
+
opened: Boolean,
|
|
11
|
+
url: String
|
|
12
|
+
},
|
|
13
|
+
computed: {
|
|
14
|
+
menuItemClassName: function menuItemClassName() {
|
|
15
|
+
return {
|
|
16
|
+
'k-link': true,
|
|
17
|
+
'k-menu-link': true,
|
|
18
|
+
'k-state-active': this.$props.opened
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
// @ts-ignore
|
|
23
|
+
setup: !gh ? undefined : function () {
|
|
24
|
+
var v3 = !!gh;
|
|
25
|
+
return {
|
|
26
|
+
v3: v3
|
|
27
|
+
};
|
|
28
|
+
},
|
|
29
|
+
render: function render(createElement) {
|
|
30
|
+
var h = gh || createElement;
|
|
31
|
+
var defaultSlot = getDefaultSlots(this);
|
|
32
|
+
|
|
33
|
+
if (this.$props.url) {
|
|
34
|
+
return h("a", {
|
|
35
|
+
"class": this.getMenuItemClassName(),
|
|
36
|
+
role: "presentation",
|
|
37
|
+
attrs: this.v3 ? undefined : {
|
|
38
|
+
role: "presentation",
|
|
39
|
+
href: this.props.url,
|
|
40
|
+
tabIndex: -1
|
|
41
|
+
},
|
|
42
|
+
href: this.props.url,
|
|
43
|
+
tabIndex: -1
|
|
44
|
+
}, [this.props.children]);
|
|
45
|
+
} else {
|
|
46
|
+
return h("span", {
|
|
47
|
+
"class": this.menuItemClassName,
|
|
48
|
+
role: "presentation",
|
|
49
|
+
attrs: this.v3 ? undefined : {
|
|
50
|
+
role: "presentation"
|
|
51
|
+
}
|
|
52
|
+
}, [defaultSlot]);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
var MenuItemLinkVue3 = MenuItemLink;
|
|
57
|
+
export { MenuItemLink, MenuItemLinkVue3 };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
export declare const POPUP_SETTINGS_RTL: {
|
|
5
|
+
downward: {
|
|
6
|
+
anchorAlign: {
|
|
7
|
+
vertical: string;
|
|
8
|
+
horizontal: string;
|
|
9
|
+
};
|
|
10
|
+
popupAlign: any;
|
|
11
|
+
collision: {
|
|
12
|
+
vertical: string;
|
|
13
|
+
horizontal: string;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
leftward: {
|
|
17
|
+
anchorAlign: {
|
|
18
|
+
vertical: string;
|
|
19
|
+
horizontal: string;
|
|
20
|
+
};
|
|
21
|
+
popupAlign: any;
|
|
22
|
+
collision: {
|
|
23
|
+
vertical: string;
|
|
24
|
+
horizontal: string;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* @hidden
|
|
30
|
+
*/
|
|
31
|
+
export declare const POPUP_SETTINGS: {
|
|
32
|
+
downward: {
|
|
33
|
+
anchorAlign: {
|
|
34
|
+
vertical: string;
|
|
35
|
+
horizontal: string;
|
|
36
|
+
};
|
|
37
|
+
popupAlign: any;
|
|
38
|
+
collision: {
|
|
39
|
+
vertical: string;
|
|
40
|
+
horizontal: string;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
rightward: {
|
|
44
|
+
anchorAlign: {
|
|
45
|
+
vertical: string;
|
|
46
|
+
horizontal: string;
|
|
47
|
+
};
|
|
48
|
+
popupAlign: any;
|
|
49
|
+
collision: {
|
|
50
|
+
vertical: string;
|
|
51
|
+
horizontal: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
var POPUP_ALIGN = {
|
|
5
|
+
vertical: 'top',
|
|
6
|
+
horizontal: 'left'
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* @hidden
|
|
10
|
+
*/
|
|
11
|
+
var POPUP_ALIGN_RTL = {
|
|
12
|
+
vertical: 'top',
|
|
13
|
+
horizontal: 'right'
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* @hidden
|
|
17
|
+
*/
|
|
18
|
+
var VERTICAL_COLLISION = {
|
|
19
|
+
vertical: 'flip',
|
|
20
|
+
horizontal: 'fit'
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* @hidden
|
|
24
|
+
*/
|
|
25
|
+
var HORIZONTAL_COLLISION = {
|
|
26
|
+
vertical: 'fit',
|
|
27
|
+
horizontal: 'flip'
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* @hidden
|
|
31
|
+
*/
|
|
32
|
+
export var POPUP_SETTINGS_RTL = {
|
|
33
|
+
downward: {
|
|
34
|
+
anchorAlign: {
|
|
35
|
+
vertical: 'bottom',
|
|
36
|
+
horizontal: 'right'
|
|
37
|
+
},
|
|
38
|
+
popupAlign: POPUP_ALIGN_RTL,
|
|
39
|
+
collision: VERTICAL_COLLISION
|
|
40
|
+
},
|
|
41
|
+
leftward: {
|
|
42
|
+
anchorAlign: {
|
|
43
|
+
vertical: 'top',
|
|
44
|
+
horizontal: 'left'
|
|
45
|
+
},
|
|
46
|
+
popupAlign: POPUP_ALIGN_RTL,
|
|
47
|
+
collision: HORIZONTAL_COLLISION
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* @hidden
|
|
52
|
+
*/
|
|
53
|
+
export var POPUP_SETTINGS = {
|
|
54
|
+
downward: {
|
|
55
|
+
anchorAlign: {
|
|
56
|
+
vertical: 'bottom',
|
|
57
|
+
horizontal: 'left'
|
|
58
|
+
},
|
|
59
|
+
popupAlign: POPUP_ALIGN,
|
|
60
|
+
collision: VERTICAL_COLLISION
|
|
61
|
+
},
|
|
62
|
+
rightward: {
|
|
63
|
+
anchorAlign: {
|
|
64
|
+
vertical: 'top',
|
|
65
|
+
horizontal: 'right'
|
|
66
|
+
},
|
|
67
|
+
popupAlign: POPUP_ALIGN,
|
|
68
|
+
collision: HORIZONTAL_COLLISION
|
|
69
|
+
}
|
|
70
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { MenuItemModel } from './models/MenuItemModel';
|
|
2
|
+
/**
|
|
3
|
+
* The arguments for the `select` event of the Menu. If the item has a URL and the event is prevented, navigation to the URL does not occur.
|
|
4
|
+
*/
|
|
5
|
+
export interface MenuSelectEvent {
|
|
6
|
+
/**
|
|
7
|
+
* The id of selected item. The ids are hierarchical and zero-based. The first root item has a `0` id. If the first root item has children, the first child acquires a `0_0` id and the second acquires a `0_1` id.
|
|
8
|
+
*/
|
|
9
|
+
itemId: string;
|
|
10
|
+
/**
|
|
11
|
+
* The selected item.
|
|
12
|
+
*/
|
|
13
|
+
item: MenuItemModel;
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// tslint:enable:max-line-length
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An interface which holds the shared properties of the MenuItemModel and the MenuItem components.
|
|
3
|
+
*/
|
|
4
|
+
export interface BaseMenuItem {
|
|
5
|
+
/**
|
|
6
|
+
* Specifies the item text ([see example]({% slug itemproperties_menu %}#toc-text)).
|
|
7
|
+
*/
|
|
8
|
+
text?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Specifies a URL which is rendered as a `href` attribute on the item link ([see example]({% slug itemproperties_menu %}#toc-url)).
|
|
11
|
+
*/
|
|
12
|
+
url?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Specifies the name of the [font icon]({% slug icons %}#toc-list-of-font-icons) that will be rendered for the item ([see example]({% slug itemproperties_menu %}#toc-icon)).
|
|
15
|
+
*/
|
|
16
|
+
icon?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Specifies if the item is disabled ([see example]({% slug itemproperties_menu %}#toc-disabled-state)).
|
|
19
|
+
*/
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* The additional CSS classes that will be rendered on the item ([see example]({% slug itemproperties_menu %}#toc-styles-and-classes)).
|
|
23
|
+
*/
|
|
24
|
+
cssClass?: string;
|
|
25
|
+
/**
|
|
26
|
+
* The CSS styles that will be rendered on the item ([see example]({% slug itemproperties_menu %}#toc-styles-and-classes)).
|
|
27
|
+
*/
|
|
28
|
+
cssStyle?: any;
|
|
29
|
+
/**
|
|
30
|
+
* A React functional or class component which is used for rendering the innermost part of the Menu item ([see example]({% slug rendering_menu %}#toc-items)). By default, the innermost item part includes only the text for the item.
|
|
31
|
+
*/
|
|
32
|
+
render?: any;
|
|
33
|
+
/**
|
|
34
|
+
* A React functional or class component which is used for rendering the link of the item ([see example]({% slug rendering_menu %}#toc-links)). The item link is a part of the visual representation of the item which, by default, includes an arrow, icon, and text.
|
|
35
|
+
*/
|
|
36
|
+
linkRender?: any;
|
|
37
|
+
/**
|
|
38
|
+
* A React functional or class component which is used for rendering content instead of the item children ([see example]({% slug rendering_menu %}#toc-content)).
|
|
39
|
+
*/
|
|
40
|
+
contentRender?: any;
|
|
41
|
+
/**
|
|
42
|
+
* Represents any additional data that is associated with the Menu item.
|
|
43
|
+
*/
|
|
44
|
+
data?: any;
|
|
45
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// tslint:enable:max-line-length
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BaseMenuItem } from './BaseMenuItem';
|
|
2
|
+
/**
|
|
3
|
+
* The interface for describing items that can be passed to the `items` property of the Menu as an alternative to passing them as children.
|
|
4
|
+
*/
|
|
5
|
+
export interface MenuItemModel extends BaseMenuItem {
|
|
6
|
+
/**
|
|
7
|
+
* Specifies the children of the item.
|
|
8
|
+
*/
|
|
9
|
+
items?: MenuItemModel[];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* @hidden
|
|
13
|
+
*/
|
|
14
|
+
export interface MenuItemInternalModel extends BaseMenuItem {
|
|
15
|
+
id: string;
|
|
16
|
+
items: MenuItemInternalModel[];
|
|
17
|
+
contentParentItemId?: string;
|
|
18
|
+
isLastFromSiblings: boolean;
|
|
19
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
export declare class DirectionHolder {
|
|
5
|
+
private phase;
|
|
6
|
+
private previousIsDirectionRightToLeft?;
|
|
7
|
+
private isDirectionRightToLeft?;
|
|
8
|
+
getIsDirectionRightToLeft(): boolean;
|
|
9
|
+
setIsDirectionRightToLeft(value: boolean): void;
|
|
10
|
+
hasDirectionChanged(): boolean;
|
|
11
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
var DirectionHolder = /** @class */ (function () {
|
|
5
|
+
function DirectionHolder() {
|
|
6
|
+
// The phase changes in the following sequence:
|
|
7
|
+
// NotInitialized -> Initialized -> NewValueReceived.
|
|
8
|
+
this.phase = 'Initialized';
|
|
9
|
+
}
|
|
10
|
+
DirectionHolder.prototype.getIsDirectionRightToLeft = function () {
|
|
11
|
+
return this.isDirectionRightToLeft;
|
|
12
|
+
};
|
|
13
|
+
DirectionHolder.prototype.setIsDirectionRightToLeft = function (value) {
|
|
14
|
+
this.phase = this.phase === 'NotInitialized' ? 'Initialized' : 'NewValueReceived';
|
|
15
|
+
this.previousIsDirectionRightToLeft = this.isDirectionRightToLeft;
|
|
16
|
+
this.isDirectionRightToLeft = value;
|
|
17
|
+
};
|
|
18
|
+
DirectionHolder.prototype.hasDirectionChanged = function () {
|
|
19
|
+
return this.phase === 'NewValueReceived' ?
|
|
20
|
+
this.previousIsDirectionRightToLeft !== this.isDirectionRightToLeft : false;
|
|
21
|
+
};
|
|
22
|
+
return DirectionHolder;
|
|
23
|
+
}());
|
|
24
|
+
export { DirectionHolder };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
export declare class MouseOverHandler {
|
|
5
|
+
private openOnClick;
|
|
6
|
+
private resetMenu;
|
|
7
|
+
private openItem;
|
|
8
|
+
private isMouseOverEnabled;
|
|
9
|
+
private mouseDown;
|
|
10
|
+
constructor(openOnClick: boolean | undefined, resetMenu: any, openItem: any);
|
|
11
|
+
set OpenOnClick(value: boolean | undefined);
|
|
12
|
+
handleItemSelectedViaKeyboard(): void;
|
|
13
|
+
get IsMouseOverEnabled(): boolean;
|
|
14
|
+
handleItemMouseDown(): void;
|
|
15
|
+
handleItemFocus(): void;
|
|
16
|
+
handleItemClick(itemId: string, clickedItemIsWithDefaultClose: boolean): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
var MouseOverHandler = /** @class */ (function () {
|
|
5
|
+
function MouseOverHandler(openOnClick, resetMenu, openItem) {
|
|
6
|
+
this.openOnClick = openOnClick;
|
|
7
|
+
this.resetMenu = resetMenu;
|
|
8
|
+
this.openItem = openItem;
|
|
9
|
+
this.openOnClick = openOnClick;
|
|
10
|
+
this.isMouseOverEnabled = openOnClick ? false : true;
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(MouseOverHandler.prototype, "OpenOnClick", {
|
|
13
|
+
set: function (value) {
|
|
14
|
+
if (Boolean(value) !== Boolean(this.openOnClick)) {
|
|
15
|
+
this.mouseDown = false;
|
|
16
|
+
this.isMouseOverEnabled = value ? false : true;
|
|
17
|
+
}
|
|
18
|
+
this.openOnClick = value;
|
|
19
|
+
},
|
|
20
|
+
enumerable: false,
|
|
21
|
+
configurable: true
|
|
22
|
+
});
|
|
23
|
+
MouseOverHandler.prototype.handleItemSelectedViaKeyboard = function () {
|
|
24
|
+
if (this.openOnClick) {
|
|
25
|
+
this.isMouseOverEnabled = false;
|
|
26
|
+
this.resetMenu();
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
Object.defineProperty(MouseOverHandler.prototype, "IsMouseOverEnabled", {
|
|
30
|
+
get: function () {
|
|
31
|
+
return this.isMouseOverEnabled;
|
|
32
|
+
},
|
|
33
|
+
enumerable: false,
|
|
34
|
+
configurable: true
|
|
35
|
+
});
|
|
36
|
+
MouseOverHandler.prototype.handleItemMouseDown = function () {
|
|
37
|
+
this.mouseDown = true;
|
|
38
|
+
};
|
|
39
|
+
MouseOverHandler.prototype.handleItemFocus = function () {
|
|
40
|
+
// Keep opening on mouse over upon tabbing
|
|
41
|
+
// and keyboard navigation. However, discard the event
|
|
42
|
+
// upon click because a cycle occurs and the item does not open.
|
|
43
|
+
if (this.openOnClick && !this.mouseDown) {
|
|
44
|
+
this.isMouseOverEnabled = true;
|
|
45
|
+
}
|
|
46
|
+
this.mouseDown = false;
|
|
47
|
+
};
|
|
48
|
+
MouseOverHandler.prototype.handleItemClick = function (itemId, clickedItemIsWithDefaultClose) {
|
|
49
|
+
if (this.openOnClick) {
|
|
50
|
+
if (this.isMouseOverEnabled) {
|
|
51
|
+
if (clickedItemIsWithDefaultClose) {
|
|
52
|
+
this.isMouseOverEnabled = false;
|
|
53
|
+
this.resetMenu();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
this.isMouseOverEnabled = true;
|
|
58
|
+
this.openItem(itemId);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
return MouseOverHandler;
|
|
63
|
+
}());
|
|
64
|
+
export { MouseOverHandler };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { MenuItemInternalModel } from '../models/MenuItemModel';
|
|
2
|
+
/**
|
|
3
|
+
* @hidden
|
|
4
|
+
* Returns the `itemId` (string) for applicable key codes even when the id has not changed.
|
|
5
|
+
* For key codes that are not applicable, returns `undefined`.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getNewItemIdUponKeyboardNavigation(sourceItems: MenuItemInternalModel[], sourceItemId: string, keyCode: number, key: string, isMenuVertical?: boolean, isDirectionRightToLeft?: boolean): string;
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { Keys } from '@progress/kendo-vue-common';
|
|
2
|
+
import { getFirstChildId, isIdZeroLevel, getRootParentId, isIdFirstLevel, getDirectParentId, getShortId, createId, getDirectSiblingIdForLevelZero, getItemById as getItemByIdUtil } from './itemsIdsUtils';
|
|
3
|
+
var NO_WHITESPACE_REGEX = /\S/;
|
|
4
|
+
/**
|
|
5
|
+
* @hidden
|
|
6
|
+
* Returns the `itemId` (string) for applicable key codes even when the id has not changed.
|
|
7
|
+
* For key codes that are not applicable, returns `undefined`.
|
|
8
|
+
*/
|
|
9
|
+
export function getNewItemIdUponKeyboardNavigation(sourceItems, sourceItemId, keyCode, key, isMenuVertical, isDirectionRightToLeft) {
|
|
10
|
+
var sourceItem = getItemById();
|
|
11
|
+
switch (keyCode) {
|
|
12
|
+
case Keys.left:
|
|
13
|
+
return getIdUponLeftKey();
|
|
14
|
+
case Keys.right:
|
|
15
|
+
return getIdUponRightKey();
|
|
16
|
+
case Keys.up:
|
|
17
|
+
return getIdUponUpKey();
|
|
18
|
+
case Keys.down:
|
|
19
|
+
return getIdUponDownKey();
|
|
20
|
+
case Keys.enter:
|
|
21
|
+
case Keys.space:
|
|
22
|
+
return getIdUponEnterAndSpaceKeys();
|
|
23
|
+
case Keys.home:
|
|
24
|
+
return getIdUponHomeKey();
|
|
25
|
+
case Keys.end:
|
|
26
|
+
return getIdUponEndKey();
|
|
27
|
+
case Keys.esc:
|
|
28
|
+
return getIdUponEscKey();
|
|
29
|
+
default:
|
|
30
|
+
return isSearchableKey() ? getIdUponSearchByChar() : sourceItemId;
|
|
31
|
+
}
|
|
32
|
+
function getIdUponLeftKey() {
|
|
33
|
+
if (isMenuVertical) {
|
|
34
|
+
return isDirectionRightToLeft ? getIdUponRightKeyForVerticalMenu() : getIdUponLeftKeyForVerticalMenu();
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
return isDirectionRightToLeft ?
|
|
38
|
+
getIdUponRightKeyForHorizontalMenu() : getIdUponLeftKeyForHorizontalMenu();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function getIdUponRightKey() {
|
|
42
|
+
if (isMenuVertical) {
|
|
43
|
+
return isDirectionRightToLeft ? getIdUponLeftKeyForVerticalMenu() : getIdUponRightKeyForVerticalMenu();
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
return isDirectionRightToLeft ?
|
|
47
|
+
getIdUponLeftKeyForHorizontalMenu() : getIdUponRightKeyForHorizontalMenu();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function getIdUponDownKey() {
|
|
51
|
+
if (isMenuVertical) {
|
|
52
|
+
return getNextSiblingId();
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
if (isIdZeroLevel(sourceItemId)) {
|
|
56
|
+
return getFirstChildIdForEnabledItemOrGetSameId();
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
return getNextSiblingId();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function getIdUponUpKey() {
|
|
64
|
+
if (isMenuVertical) {
|
|
65
|
+
return getPrevSiblingId();
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
if (isIdZeroLevel(sourceItemId)) {
|
|
69
|
+
return getLastChildIdForEnabledItemOrGetSameId();
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
return getPrevSiblingId();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function getIdUponEnterAndSpaceKeys() {
|
|
77
|
+
if (sourceItem.disabled) {
|
|
78
|
+
return sourceItemId;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
return hasChildren() ? getFirstChildId(sourceItemId) : getRootParentId(sourceItemId);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function getIdUponHomeKey() {
|
|
85
|
+
return getSiblings()[0].id;
|
|
86
|
+
}
|
|
87
|
+
function getIdUponEndKey() {
|
|
88
|
+
var siblings = getSiblings();
|
|
89
|
+
return siblings[siblings.length - 1].id;
|
|
90
|
+
}
|
|
91
|
+
function getIdUponEscKey() {
|
|
92
|
+
return isIdZeroLevel(sourceItemId) ? sourceItemId : getDirectParentId(sourceItemId);
|
|
93
|
+
}
|
|
94
|
+
function getIdUponSearchByChar() {
|
|
95
|
+
var searchChar = key.toLowerCase();
|
|
96
|
+
var siblings = getSiblings();
|
|
97
|
+
var currentItemIndex = Number(getShortId(sourceItemId));
|
|
98
|
+
var itemsToSearch = siblings.slice(currentItemIndex + 1).concat(siblings.slice(0, currentItemIndex + 1));
|
|
99
|
+
var matchedSibling = itemsToSearch.find(function (item) {
|
|
100
|
+
return (item.text || '').toLowerCase().startsWith(searchChar);
|
|
101
|
+
});
|
|
102
|
+
return matchedSibling ? matchedSibling.id : sourceItemId;
|
|
103
|
+
}
|
|
104
|
+
// #region Left Key Internals
|
|
105
|
+
function getIdUponLeftKeyForHorizontalMenu() {
|
|
106
|
+
if (isIdZeroLevel(sourceItemId)) {
|
|
107
|
+
return getPrevSiblingId();
|
|
108
|
+
}
|
|
109
|
+
else if (isIdFirstLevel(sourceItemId)) {
|
|
110
|
+
return getFirstChildIdForEnabledItemOrGetSameId(getPrevSiblingId(getRootParentId(sourceItemId)));
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
return getDirectParentId(sourceItemId);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function getIdUponLeftKeyForVerticalMenu() {
|
|
117
|
+
if (isIdZeroLevel(sourceItemId)) {
|
|
118
|
+
return getLastChildIdForEnabledItemOrGetSameId();
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
return getDirectParentId(sourceItemId);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// #endregion
|
|
125
|
+
// #region Right Key Internals
|
|
126
|
+
function getIdUponRightKeyForHorizontalMenu() {
|
|
127
|
+
if (isIdZeroLevel(sourceItemId)) {
|
|
128
|
+
return getNextSiblingId();
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
return getFirstChildIdForEnabledItemOrGetSameId(hasChildren() ? sourceItemId : getNextSiblingId(getRootParentId(sourceItemId)));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function getIdUponRightKeyForVerticalMenu() {
|
|
135
|
+
return getFirstChildIdForEnabledItemOrGetSameId(isIdZeroLevel(sourceItemId) || hasChildren() ?
|
|
136
|
+
sourceItemId : getNextSiblingId(getRootParentId(sourceItemId)));
|
|
137
|
+
}
|
|
138
|
+
// #endregion
|
|
139
|
+
// #region Utils
|
|
140
|
+
function getFirstChildIdForEnabledItemOrGetSameId(itemId) {
|
|
141
|
+
return getFirstOrLastChildIdForEnabledItemOrGetSameId(true, itemId);
|
|
142
|
+
}
|
|
143
|
+
function getLastChildIdForEnabledItemOrGetSameId(itemId) {
|
|
144
|
+
return getFirstOrLastChildIdForEnabledItemOrGetSameId(false, itemId);
|
|
145
|
+
}
|
|
146
|
+
function isSearchableKey() {
|
|
147
|
+
return key.length === 1 && NO_WHITESPACE_REGEX.test(key);
|
|
148
|
+
}
|
|
149
|
+
function getItemById(itemId, items) {
|
|
150
|
+
if (itemId === undefined) {
|
|
151
|
+
itemId = sourceItemId;
|
|
152
|
+
}
|
|
153
|
+
if (items === undefined) {
|
|
154
|
+
items = sourceItems;
|
|
155
|
+
}
|
|
156
|
+
return getItemByIdUtil(itemId, items);
|
|
157
|
+
}
|
|
158
|
+
function hasChildren(itemId) {
|
|
159
|
+
return getItemById(itemId).items.length > 0;
|
|
160
|
+
}
|
|
161
|
+
function getPrevSiblingId(itemId) {
|
|
162
|
+
return getSiblingId(false, itemId);
|
|
163
|
+
}
|
|
164
|
+
function getNextSiblingId(itemId) {
|
|
165
|
+
return getSiblingId(true, itemId);
|
|
166
|
+
}
|
|
167
|
+
function getLastChildId(itemId) {
|
|
168
|
+
var itemChildren = getItemById(itemId).items;
|
|
169
|
+
return itemChildren[itemChildren.length - 1].id;
|
|
170
|
+
}
|
|
171
|
+
function getSiblings() {
|
|
172
|
+
return isIdZeroLevel(sourceItemId) ?
|
|
173
|
+
sourceItems : getItemById(getDirectParentId(sourceItemId), sourceItems).items;
|
|
174
|
+
}
|
|
175
|
+
function getFirstOrLastChildIdForEnabledItemOrGetSameId(getFirstChild, itemId) {
|
|
176
|
+
if (itemId === undefined) {
|
|
177
|
+
itemId = sourceItemId;
|
|
178
|
+
}
|
|
179
|
+
var item = getItemById(itemId);
|
|
180
|
+
if (hasChildren(itemId) && !item.disabled) {
|
|
181
|
+
return getFirstChild ? getFirstChildId(itemId) : getLastChildId(itemId);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
return itemId;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
function getSiblingId(next, itemId) {
|
|
188
|
+
if (itemId === undefined) {
|
|
189
|
+
itemId = sourceItemId;
|
|
190
|
+
}
|
|
191
|
+
if (isIdZeroLevel(itemId)) {
|
|
192
|
+
return getDirectSiblingIdForLevelZero(next, itemId, sourceItems.length);
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
var directParentId = getDirectParentId(itemId);
|
|
196
|
+
var shortId = getShortId(itemId);
|
|
197
|
+
var siblingsCount = getItemById(directParentId).items.length;
|
|
198
|
+
return createId(getDirectSiblingIdForLevelZero(next, shortId, siblingsCount), directParentId);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// #endregion
|
|
202
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
export function getHoverOpenDelay(props) {
|
|
5
|
+
if (props.hoverOpenDelay !== undefined) {
|
|
6
|
+
return props.hoverOpenDelay;
|
|
7
|
+
}
|
|
8
|
+
else {
|
|
9
|
+
return props.openOnClick ? 0 : 100;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* @hidden
|
|
14
|
+
*/
|
|
15
|
+
export function getHoverCloseDelay(props) {
|
|
16
|
+
return props.hoverCloseDelay !== undefined ? props.hoverCloseDelay : 100;
|
|
17
|
+
}
|