@sapudex/web-components 0.114.2 → 0.117.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/bundle.esm.js +3 -0
- package/dist/Avatar.d.ts +8 -1
- package/dist/Avatar.js +5 -2
- package/dist/Avatar.js.map +1 -1
- package/dist/CountrySelector.d.ts +1 -0
- package/dist/CountrySelector.js +3 -0
- package/dist/CountrySelector.js.map +1 -1
- package/dist/FilterMenu.d.ts +14 -4
- package/dist/FilterMenu.js +46 -7
- package/dist/FilterMenu.js.map +1 -1
- package/dist/InputGroup.js.map +1 -1
- package/dist/List.d.ts +7 -0
- package/dist/List.js +78 -18
- package/dist/List.js.map +1 -1
- package/dist/ListItem.d.ts +0 -1
- package/dist/ListItem.js +0 -6
- package/dist/ListItem.js.map +1 -1
- package/dist/ListItemBase.d.ts +3 -0
- package/dist/ListItemBase.js +12 -0
- package/dist/ListItemBase.js.map +1 -1
- package/dist/PhoneNumberField.js.map +1 -1
- package/dist/Search.d.ts +3 -0
- package/dist/Search.js +35 -10
- package/dist/Search.js.map +1 -1
- package/dist/SecondaryNavigation.d.ts +34 -46
- package/dist/SecondaryNavigation.js +140 -161
- package/dist/SecondaryNavigation.js.map +1 -1
- package/dist/SecondaryNavigationItem.d.ts +101 -0
- package/dist/SecondaryNavigationItem.js +287 -0
- package/dist/SecondaryNavigationItem.js.map +1 -0
- package/dist/SecondaryNavigationItemBase.d.ts +68 -0
- package/dist/SecondaryNavigationItemBase.js +78 -0
- package/dist/SecondaryNavigationItemBase.js.map +1 -0
- package/dist/SecondaryNavigationSubItem.d.ts +52 -0
- package/dist/SecondaryNavigationSubItem.js +102 -0
- package/dist/SecondaryNavigationSubItem.js.map +1 -0
- package/dist/SelectBox.d.ts +1 -0
- package/dist/SelectBox.js +13 -1
- package/dist/SelectBox.js.map +1 -1
- package/dist/StatusBadge.d.ts +67 -0
- package/dist/StatusBadge.js +104 -0
- package/dist/StatusBadge.js.map +1 -0
- package/dist/Tab.js +1 -1
- package/dist/Tab.js.map +1 -1
- package/dist/assets/{bundle.esm-ab45813e.js → bundle.esm-f65ae7da.js} +187 -184
- package/dist/assets/messagebundle_en-7249941b.js +1 -0
- package/dist/css/themes/Avatar.css +1 -1
- package/dist/css/themes/Checkbox.css +1 -1
- package/dist/css/themes/CountrySelector.css +1 -1
- package/dist/css/themes/Dropdown.css +1 -1
- package/dist/css/themes/FilterMenu.css +1 -1
- package/dist/css/themes/HeroBanner.css +1 -1
- package/dist/css/themes/MediaPlayer.css +1 -1
- package/dist/css/themes/PhoneNumberField.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/Search.css +1 -1
- package/dist/css/themes/SecondaryNavigation.css +1 -1
- package/dist/css/themes/SecondaryNavigationItem.css +1 -0
- package/dist/css/themes/SecondaryNavigationSubItem.css +1 -0
- package/dist/css/themes/Slider.css +1 -1
- package/dist/css/themes/StatusBadge.css +1 -0
- package/dist/custom-elements-internal.json +604 -2
- package/dist/custom-elements.json +574 -2
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +8 -1
- package/dist/generated/i18n/i18n-defaults.js +8 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/templates/CountrySelectorTemplate.lit.js +1 -1
- package/dist/generated/templates/CountrySelectorTemplate.lit.js.map +1 -1
- package/dist/generated/templates/DropdownTemplate.lit.js +1 -1
- package/dist/generated/templates/DropdownTemplate.lit.js.map +1 -1
- package/dist/generated/templates/FilterMenuTemplate.lit.js +3 -3
- package/dist/generated/templates/FilterMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/HeroBannerTemplate.lit.js +2 -2
- package/dist/generated/templates/HeroBannerTemplate.lit.js.map +1 -1
- package/dist/generated/templates/ListGroupHeaderTemplate.lit.js +4 -4
- package/dist/generated/templates/ListGroupHeaderTemplate.lit.js.map +1 -1
- package/dist/generated/templates/ListItemTemplate.lit.js +1 -1
- package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/ListSelectAllTemplate.lit.js +1 -1
- package/dist/generated/templates/ListSelectAllTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SearchSuggestionsTemplate.lit.js +1 -1
- package/dist/generated/templates/SearchSuggestionsTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SearchTemplate.lit.js +2 -2
- package/dist/generated/templates/SearchTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SearchableListBaseTemplate.lit.js +2 -2
- package/dist/generated/templates/SearchableListBaseTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.d.ts +4 -0
- package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js +11 -0
- package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js.map +1 -0
- package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.d.ts +4 -0
- package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js +9 -0
- package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js.map +1 -0
- package/dist/generated/templates/SecondaryNavigationTemplate.lit.js +7 -10
- package/dist/generated/templates/SecondaryNavigationTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SelectBoxTemplate.lit.js +1 -1
- package/dist/generated/templates/SelectBoxTemplate.lit.js.map +1 -1
- package/dist/generated/templates/StatusBadgeTemplate.lit.d.ts +4 -0
- package/dist/generated/templates/StatusBadgeTemplate.lit.js +5 -0
- package/dist/generated/templates/StatusBadgeTemplate.lit.js.map +1 -0
- package/dist/generated/themes/Avatar.css.js +1 -1
- package/dist/generated/themes/Avatar.css.js.map +1 -1
- package/dist/generated/themes/Checkbox.css.js +1 -1
- package/dist/generated/themes/Checkbox.css.js.map +1 -1
- package/dist/generated/themes/CountrySelector.css.js +1 -1
- package/dist/generated/themes/CountrySelector.css.js.map +1 -1
- package/dist/generated/themes/Dropdown.css.js +1 -1
- package/dist/generated/themes/Dropdown.css.js.map +1 -1
- package/dist/generated/themes/FilterMenu.css.js +1 -1
- package/dist/generated/themes/FilterMenu.css.js.map +1 -1
- package/dist/generated/themes/HeroBanner.css.js +1 -1
- package/dist/generated/themes/HeroBanner.css.js.map +1 -1
- package/dist/generated/themes/MediaPlayer.css.js +1 -1
- package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
- package/dist/generated/themes/PhoneNumberField.css.js +1 -1
- package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
- package/dist/generated/themes/RatingIndicator.css.js +1 -1
- package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
- package/dist/generated/themes/Search.css.js +1 -1
- package/dist/generated/themes/Search.css.js.map +1 -1
- package/dist/generated/themes/SecondaryNavigation.css.js +1 -1
- package/dist/generated/themes/SecondaryNavigation.css.js.map +1 -1
- package/dist/generated/themes/SecondaryNavigationItem.css.d.ts +3 -0
- package/dist/generated/themes/SecondaryNavigationItem.css.js +9 -0
- package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -0
- package/dist/generated/themes/SecondaryNavigationSubItem.css.d.ts +3 -0
- package/dist/generated/themes/SecondaryNavigationSubItem.css.js +9 -0
- package/dist/generated/themes/SecondaryNavigationSubItem.css.js.map +1 -0
- package/dist/generated/themes/Slider.css.js +1 -1
- package/dist/generated/themes/Slider.css.js.map +1 -1
- package/dist/generated/themes/StatusBadge.css.d.ts +3 -0
- package/dist/generated/themes/StatusBadge.css.js +9 -0
- package/dist/generated/themes/StatusBadge.css.js.map +1 -0
- package/dist/i18n/messagebundle.properties +12 -1
- package/dist/i18n/messagebundle_en.properties +8 -1
- package/dist/vscode.html-custom-data.json +131 -3
- package/dist/web-types.json +203 -5
- package/package.json +1 -1
- package/src/Avatar.ts +12 -3
- package/src/CountrySelector.hbs +2 -1
- package/src/CountrySelector.ts +4 -1
- package/src/Dropdown.hbs +0 -1
- package/src/FilterMenu.hbs +5 -1
- package/src/FilterMenu.ts +60 -10
- package/src/HeroBanner.hbs +24 -21
- package/src/InputGroup.ts +6 -5
- package/src/List.ts +92 -21
- package/src/ListGroupHeader.hbs +9 -5
- package/src/ListItem.hbs +2 -1
- package/src/ListItem.ts +0 -7
- package/src/ListItemBase.ts +14 -0
- package/src/ListSelectAll.hbs +1 -0
- package/src/PhoneNumberField.ts +1 -1
- package/src/Search.hbs +3 -2
- package/src/Search.ts +37 -10
- package/src/SearchSuggestions.hbs +1 -1
- package/src/SearchableListBase.hbs +2 -0
- package/src/SecondaryNavigation.hbs +50 -72
- package/src/SecondaryNavigation.ts +171 -195
- package/src/SecondaryNavigationItem.hbs +63 -0
- package/src/SecondaryNavigationItem.ts +358 -0
- package/src/SecondaryNavigationItemBase.ts +115 -0
- package/src/SecondaryNavigationSubItem.hbs +41 -0
- package/src/SecondaryNavigationSubItem.ts +123 -0
- package/src/SelectBox.hbs +1 -0
- package/src/SelectBox.ts +16 -1
- package/src/StatusBadge.hbs +9 -0
- package/src/StatusBadge.ts +129 -0
- package/src/Tab.ts +1 -1
- package/src/generated/i18n/i18n-defaults.ts +2 -2
- package/src/generated/templates/CountrySelectorTemplate.lit.ts +1 -1
- package/src/generated/templates/DropdownTemplate.lit.ts +1 -1
- package/src/generated/templates/FilterMenuTemplate.lit.ts +3 -3
- package/src/generated/templates/HeroBannerTemplate.lit.ts +2 -2
- package/src/generated/templates/ListGroupHeaderTemplate.lit.ts +4 -4
- package/src/generated/templates/ListItemTemplate.lit.ts +1 -1
- package/src/generated/templates/ListSelectAllTemplate.lit.ts +1 -1
- package/src/generated/templates/SearchSuggestionsTemplate.lit.ts +1 -1
- package/src/generated/templates/SearchTemplate.lit.ts +2 -2
- package/src/generated/templates/SearchableListBaseTemplate.lit.ts +2 -2
- package/src/generated/templates/SecondaryNavigationItemTemplate.lit.ts +16 -0
- package/src/generated/templates/SecondaryNavigationSubItemTemplate.lit.ts +14 -0
- package/src/generated/templates/SecondaryNavigationTemplate.lit.ts +7 -10
- package/src/generated/templates/SelectBoxTemplate.lit.ts +1 -1
- package/src/generated/templates/StatusBadgeTemplate.lit.ts +10 -0
- package/src/generated/themes/Avatar.css.ts +1 -1
- package/src/generated/themes/Checkbox.css.ts +1 -1
- package/src/generated/themes/CountrySelector.css.ts +1 -1
- package/src/generated/themes/Dropdown.css.ts +1 -1
- package/src/generated/themes/FilterMenu.css.ts +1 -1
- package/src/generated/themes/HeroBanner.css.ts +1 -1
- package/src/generated/themes/MediaPlayer.css.ts +1 -1
- package/src/generated/themes/PhoneNumberField.css.ts +1 -1
- package/src/generated/themes/RatingIndicator.css.ts +1 -1
- package/src/generated/themes/Search.css.ts +1 -1
- package/src/generated/themes/SecondaryNavigation.css.ts +1 -1
- package/src/generated/themes/SecondaryNavigationItem.css.ts +13 -0
- package/src/generated/themes/SecondaryNavigationSubItem.css.ts +13 -0
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/generated/themes/StatusBadge.css.ts +13 -0
- package/src/i18n/messagebundle.properties +12 -1
- package/src/i18n/messagebundle_en.properties +8 -1
- package/src/themes/Avatar.css +20 -0
- package/src/themes/Checkbox.css +12 -0
- package/src/themes/CountrySelector.css +4 -0
- package/src/themes/Dropdown.css +2 -0
- package/src/themes/FilterMenu.css +10 -0
- package/src/themes/HeroBanner.css +42 -6
- package/src/themes/MediaPlayer.css +3 -2
- package/src/themes/PhoneNumberField.css +4 -0
- package/src/themes/Search.css +11 -7
- package/src/themes/SecondaryNavigation.css +44 -302
- package/src/themes/SecondaryNavigationItem.css +220 -0
- package/src/themes/SecondaryNavigationSubItem.css +118 -0
- package/src/themes/StatusBadge.css +135 -0
- package/dist/assets/messagebundle_en-26cd7a92.js +0 -1
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
|
|
8
|
+
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
9
|
+
import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
|
|
10
|
+
import event from "@ui5/webcomponents-base/dist/decorators/event.js";
|
|
11
|
+
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
|
|
12
|
+
import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
13
|
+
import { isLeft, isRight, isUp, isDown, isEscape, isSpace, isEnter, isHome, isEnd, } from "@ui5/webcomponents-base/dist/Keys.js";
|
|
14
|
+
import UDExSecondaryNavigationSubItem from "./SecondaryNavigationSubItem.js";
|
|
15
|
+
import UDExSecondaryNavigationItemBase from "./SecondaryNavigationItemBase.js";
|
|
16
|
+
import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
|
|
17
|
+
import SecondaryNavigationItemTemplate from "./generated/templates/SecondaryNavigationItemTemplate.lit.js";
|
|
18
|
+
// Styles
|
|
19
|
+
import SecondaryNavigationItemCss from "./generated/themes/SecondaryNavigationItem.css.js";
|
|
20
|
+
export const menuItemRole = "menuitem";
|
|
21
|
+
/**
|
|
22
|
+
* @class
|
|
23
|
+
*
|
|
24
|
+
* <h3 class="comment-api-title">Overview</h3>
|
|
25
|
+
*
|
|
26
|
+
*
|
|
27
|
+
* <h3>Usage</h3>
|
|
28
|
+
*
|
|
29
|
+
* For the <code>udex-secondary-navigation-item</code>
|
|
30
|
+
* <h3>ES6 Module Import</h3>
|
|
31
|
+
*
|
|
32
|
+
* <code>import "@udex/web-components/dist/SecondaryNavigationItem.js";</code>
|
|
33
|
+
*
|
|
34
|
+
* @constructor
|
|
35
|
+
* @extends UDExSecondaryNavigationItemBase
|
|
36
|
+
* @tagname udex-secondary-navigation-item
|
|
37
|
+
* @private
|
|
38
|
+
*/
|
|
39
|
+
let UDExSecondaryNavigationItem = class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
|
|
40
|
+
constructor() {
|
|
41
|
+
super(...arguments);
|
|
42
|
+
/**
|
|
43
|
+
* Defines processed items.
|
|
44
|
+
*
|
|
45
|
+
* @private
|
|
46
|
+
* @default []
|
|
47
|
+
*/
|
|
48
|
+
this._processedItems = [];
|
|
49
|
+
this._dropdownHistory = [];
|
|
50
|
+
}
|
|
51
|
+
onAfterRendering() {
|
|
52
|
+
if (this._shouldFocusFirstSubItem && this.isOpen) {
|
|
53
|
+
this.onFirstSubItemFocus();
|
|
54
|
+
this._shouldFocusFirstSubItem = false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
onBeforeRendering() {
|
|
58
|
+
this._subTitle = this.subActiveItemTitle || this._subTitle;
|
|
59
|
+
}
|
|
60
|
+
onItemClick() {
|
|
61
|
+
if (this.hasNestedItems) {
|
|
62
|
+
this.setDropdownItems();
|
|
63
|
+
this.toggleDropdown();
|
|
64
|
+
}
|
|
65
|
+
this.fireEvent("nav-item-click", { item: this });
|
|
66
|
+
}
|
|
67
|
+
onSubItemClick(e) {
|
|
68
|
+
const { index } = e.target;
|
|
69
|
+
const clickedItem = this._processedItems[index];
|
|
70
|
+
if (clickedItem.items) {
|
|
71
|
+
this.setDropdownHistory();
|
|
72
|
+
this.setNestedItems(clickedItem);
|
|
73
|
+
}
|
|
74
|
+
this.fireEvent("sub-item-click", {
|
|
75
|
+
item: clickedItem,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
onBackClick() {
|
|
79
|
+
this.setPrevNestedItems();
|
|
80
|
+
}
|
|
81
|
+
toggleDropdown() {
|
|
82
|
+
this.isOpen = !this.isOpen;
|
|
83
|
+
}
|
|
84
|
+
closeDropdown() {
|
|
85
|
+
this.isOpen = false;
|
|
86
|
+
}
|
|
87
|
+
handleItemLinkKeyDown(e) {
|
|
88
|
+
if (isEnter(e) || isSpace(e)) {
|
|
89
|
+
e.preventDefault();
|
|
90
|
+
this.onItemClick();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
handleItemButtonKeyDown(e) {
|
|
94
|
+
if (isEnter(e) || isSpace(e)) {
|
|
95
|
+
this.onShouldFocusFirstSubItem();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
handleSubItemKeyDown(e) {
|
|
99
|
+
e.stopPropagation();
|
|
100
|
+
if (isEscape(e)) {
|
|
101
|
+
this.handleEscapeKey();
|
|
102
|
+
}
|
|
103
|
+
if (isLeft(e)) {
|
|
104
|
+
this.handleLeftArrow(e);
|
|
105
|
+
}
|
|
106
|
+
if (isRight(e)) {
|
|
107
|
+
this.handleRightArrow(e);
|
|
108
|
+
}
|
|
109
|
+
if (isUp(e)) {
|
|
110
|
+
e.preventDefault();
|
|
111
|
+
this.handleUpArrow(e);
|
|
112
|
+
}
|
|
113
|
+
if (isDown(e)) {
|
|
114
|
+
e.preventDefault();
|
|
115
|
+
this.handleDownArrow(e);
|
|
116
|
+
}
|
|
117
|
+
if (isHome(e)) {
|
|
118
|
+
e.preventDefault();
|
|
119
|
+
this.onFirstSubItemFocus();
|
|
120
|
+
}
|
|
121
|
+
if (isEnd(e)) {
|
|
122
|
+
e.preventDefault();
|
|
123
|
+
this.onLastSubItemFocus();
|
|
124
|
+
}
|
|
125
|
+
if (isEnter(e) || isSpace(e)) {
|
|
126
|
+
e.preventDefault();
|
|
127
|
+
this.handleEnterAndSpace(e);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
handleUpArrow(e) {
|
|
131
|
+
const { index } = e.target;
|
|
132
|
+
const lastIndex = this.domNavItems.length - 1;
|
|
133
|
+
const previousIndex = index - 1 < 0 ? lastIndex : index - 1;
|
|
134
|
+
if (!(lastIndex === previousIndex)) {
|
|
135
|
+
this.domNavItems[previousIndex].focus();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
handleDownArrow(e) {
|
|
139
|
+
const { index } = e.target;
|
|
140
|
+
const nextIndex = index + 1 > this.domNavItems.length - 1 ? 0 : index + 1;
|
|
141
|
+
if (!(nextIndex === 0)) {
|
|
142
|
+
this.domNavItems[nextIndex].focus();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
handleLeftArrow(e) {
|
|
146
|
+
const { isBack } = e.target;
|
|
147
|
+
if (isBack) {
|
|
148
|
+
this.setPrevNestedItems();
|
|
149
|
+
this.onShouldFocusFirstSubItem();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
handleRightArrow(e) {
|
|
153
|
+
const { hasItems, isBack } = e.target;
|
|
154
|
+
if (hasItems && !isBack) {
|
|
155
|
+
this.onSubItemClick(e);
|
|
156
|
+
this.onShouldFocusFirstSubItem();
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
handleEnterAndSpace(e) {
|
|
160
|
+
const { hasItems, isBack } = e.target;
|
|
161
|
+
if (isBack) {
|
|
162
|
+
this.onBackClick();
|
|
163
|
+
this.onShouldFocusFirstSubItem();
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
this.onSubItemClick(e);
|
|
167
|
+
if (hasItems) {
|
|
168
|
+
this.onShouldFocusFirstSubItem();
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
this.closeDropdown();
|
|
172
|
+
this.focus();
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
handleEscapeKey() {
|
|
176
|
+
this.closeDropdown();
|
|
177
|
+
this.focus();
|
|
178
|
+
}
|
|
179
|
+
setDropdownHistory() {
|
|
180
|
+
this._dropdownHistory.push(this._processedItems);
|
|
181
|
+
}
|
|
182
|
+
setPrevNestedItems() {
|
|
183
|
+
this._processedItems = this._dropdownHistory.pop();
|
|
184
|
+
}
|
|
185
|
+
setNestedItems({ title, items }) {
|
|
186
|
+
if (items) {
|
|
187
|
+
this._processedItems = [{ title, isBack: true }, ...items];
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
setDropdownItems() {
|
|
191
|
+
this._processedItems = this.subItems;
|
|
192
|
+
}
|
|
193
|
+
onFirstSubItemFocus() {
|
|
194
|
+
this.domNavItems[0].focus();
|
|
195
|
+
}
|
|
196
|
+
onLastSubItemFocus() {
|
|
197
|
+
this.domNavItems[this.domNavItems.length - 1].focus();
|
|
198
|
+
}
|
|
199
|
+
onShouldFocusFirstSubItem() {
|
|
200
|
+
this._shouldFocusFirstSubItem = true;
|
|
201
|
+
}
|
|
202
|
+
get domNavItems() {
|
|
203
|
+
const domNavItems = this.shadowRoot?.querySelectorAll("udex-secondary-navigation-sub-item");
|
|
204
|
+
return domNavItems ? Array.from(domNavItems) : [];
|
|
205
|
+
}
|
|
206
|
+
get hasNestedItems() {
|
|
207
|
+
return this.subItems.length > 0;
|
|
208
|
+
}
|
|
209
|
+
get isSubItemActive() {
|
|
210
|
+
return !!this.subActiveItem?.active;
|
|
211
|
+
}
|
|
212
|
+
get isActive() {
|
|
213
|
+
return this.isSubItemActive || this.active;
|
|
214
|
+
}
|
|
215
|
+
get subActiveItemTitle() {
|
|
216
|
+
return this.subActiveItem?.title;
|
|
217
|
+
}
|
|
218
|
+
get subActiveItem() {
|
|
219
|
+
return this.getActiveSubItem(this.subItems);
|
|
220
|
+
}
|
|
221
|
+
get isLink() {
|
|
222
|
+
return !this.hasNestedItems && !!this.path;
|
|
223
|
+
}
|
|
224
|
+
get itemRole() {
|
|
225
|
+
return this.role ? this.role : this.menuItemRole;
|
|
226
|
+
}
|
|
227
|
+
get menuItemRole() {
|
|
228
|
+
return menuItemRole;
|
|
229
|
+
}
|
|
230
|
+
get title() {
|
|
231
|
+
return this.label;
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
__decorate([
|
|
235
|
+
property({ type: String })
|
|
236
|
+
], UDExSecondaryNavigationItem.prototype, "ariaLabel", void 0);
|
|
237
|
+
__decorate([
|
|
238
|
+
property({ type: String })
|
|
239
|
+
], UDExSecondaryNavigationItem.prototype, "role", void 0);
|
|
240
|
+
__decorate([
|
|
241
|
+
slot({ type: HTMLElement })
|
|
242
|
+
], UDExSecondaryNavigationItem.prototype, "buttons", void 0);
|
|
243
|
+
__decorate([
|
|
244
|
+
property({ type: Object, multiple: true })
|
|
245
|
+
], UDExSecondaryNavigationItem.prototype, "subItems", void 0);
|
|
246
|
+
__decorate([
|
|
247
|
+
property({ type: Boolean })
|
|
248
|
+
], UDExSecondaryNavigationItem.prototype, "isOpen", void 0);
|
|
249
|
+
__decorate([
|
|
250
|
+
property({ type: Object })
|
|
251
|
+
], UDExSecondaryNavigationItem.prototype, "_processedItems", void 0);
|
|
252
|
+
UDExSecondaryNavigationItem = __decorate([
|
|
253
|
+
customElement({
|
|
254
|
+
tag: "udex-secondary-navigation-item",
|
|
255
|
+
renderer: litRender,
|
|
256
|
+
styles: SecondaryNavigationItemCss,
|
|
257
|
+
template: SecondaryNavigationItemTemplate,
|
|
258
|
+
dependencies: [UI5Icon, UDExSecondaryNavigationSubItem],
|
|
259
|
+
})
|
|
260
|
+
/**
|
|
261
|
+
* Fires when item is clicked
|
|
262
|
+
*
|
|
263
|
+
* @allowPreventDefault
|
|
264
|
+
* @public
|
|
265
|
+
*/
|
|
266
|
+
,
|
|
267
|
+
event("nav-item-click", {
|
|
268
|
+
detail: {
|
|
269
|
+
item: { type: HTMLElement },
|
|
270
|
+
},
|
|
271
|
+
})
|
|
272
|
+
/**
|
|
273
|
+
* Fires when dropdown item is clicked
|
|
274
|
+
*
|
|
275
|
+
* @allowPreventDefault
|
|
276
|
+
* @public
|
|
277
|
+
*/
|
|
278
|
+
,
|
|
279
|
+
event("sub-item-click", {
|
|
280
|
+
detail: {
|
|
281
|
+
item: { type: Array },
|
|
282
|
+
},
|
|
283
|
+
})
|
|
284
|
+
], UDExSecondaryNavigationItem);
|
|
285
|
+
UDExSecondaryNavigationItem.define();
|
|
286
|
+
export default UDExSecondaryNavigationItem;
|
|
287
|
+
//# sourceMappingURL=SecondaryNavigationItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecondaryNavigationItem.js","sourceRoot":"","sources":["../src/SecondaryNavigationItem.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport UI5Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport {\n isLeft,\n isRight,\n isUp,\n isDown,\n isEscape,\n isSpace,\n isEnter,\n isHome,\n isEnd,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport UDExSecondaryNavigationSubItem from \"./SecondaryNavigationSubItem.js\";\nimport UDExSecondaryNavigationItemBase, { NavItem } from \"./SecondaryNavigationItemBase.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\n\nimport SecondaryNavigationItemTemplate from \"./generated/templates/SecondaryNavigationItemTemplate.lit.js\";\n\n// Styles\nimport SecondaryNavigationItemCss from \"./generated/themes/SecondaryNavigationItem.css.js\";\n\nexport const menuItemRole: string = \"menuitem\";\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-secondary-navigation-item</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@udex/web-components/dist/SecondaryNavigationItem.js\";</code>\n *\n * @constructor\n * @extends UDExSecondaryNavigationItemBase\n * @tagname udex-secondary-navigation-item\n * @private\n */\n@customElement({\n tag: \"udex-secondary-navigation-item\",\n renderer: litRender,\n styles: SecondaryNavigationItemCss,\n template: SecondaryNavigationItemTemplate,\n dependencies: [UI5Icon, UDExSecondaryNavigationSubItem],\n})\n\n/**\n * Fires when item is clicked\n *\n * @allowPreventDefault\n * @public\n */\n@event(\"nav-item-click\", {\n detail: {\n item: { type: HTMLElement },\n },\n})\n\n/**\n * Fires when dropdown item is clicked\n *\n * @allowPreventDefault\n * @public\n */\n@event(\"sub-item-click\", {\n detail: {\n item: { type: Array },\n },\n})\n\nclass UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {\n /**\n * Defines an aria label for item\n *\n * @public\n */\n @property({ type: String })\n ariaLabel!: string;\n\n /**\n * Defines a role for item\n *\n * @public\n */\n @property({ type: String })\n role!: string;\n\n /**\n * Defines the content of the item.\n *\n * @slot content\n * @public\n */\n @slot({ type: HTMLElement })\n buttons!: Array<HTMLElement>;\n\n /**\n * List of the sub items\n *\n * @default \"[]\"\n * @public\n */\n @property({ type: Object, multiple: true })\n subItems!: Array<NavItem>;\n\n /**\n * Defines if dropdown is opened.\n *\n * @public\n * @default false\n */\n @property({ type: Boolean })\n isOpen!: boolean;\n\n /**\n * Defines processed items.\n *\n * @private\n * @default []\n */\n @property({ type: Object })\n _processedItems: Array<NavItem> = [];\n\n _dropdownHistory: Array<Array<NavItem>> = [];\n _shouldFocusFirstSubItem!: boolean;\n _subTitle!: string | undefined;\n\n onAfterRendering(): void {\n if (this._shouldFocusFirstSubItem && this.isOpen) {\n this.onFirstSubItemFocus();\n this._shouldFocusFirstSubItem = false;\n }\n }\n\n onBeforeRendering() : void {\n this._subTitle = this.subActiveItemTitle || this._subTitle;\n }\n\n onItemClick(): void {\n if (this.hasNestedItems) {\n this.setDropdownItems();\n this.toggleDropdown();\n }\n\n this.fireEvent(\"nav-item-click\", { item: this });\n }\n\n onSubItemClick(e: Event): void {\n const { index } = e.target as UDExSecondaryNavigationSubItem;\n const clickedItem = this._processedItems[index];\n\n if (clickedItem.items) {\n this.setDropdownHistory();\n this.setNestedItems(clickedItem);\n }\n\n this.fireEvent(\"sub-item-click\", {\n item: clickedItem,\n });\n }\n\n onBackClick(): void {\n this.setPrevNestedItems();\n }\n\n toggleDropdown(): void {\n this.isOpen = !this.isOpen;\n }\n\n closeDropdown(): void {\n this.isOpen = false;\n }\n\n handleItemLinkKeyDown(e: KeyboardEvent): void {\n if (isEnter(e) || isSpace(e)) {\n e.preventDefault();\n this.onItemClick();\n }\n }\n\n handleItemButtonKeyDown(e: KeyboardEvent): void {\n if (isEnter(e) || isSpace(e)) {\n this.onShouldFocusFirstSubItem();\n }\n }\n\n handleSubItemKeyDown(e: KeyboardEvent): void {\n e.stopPropagation();\n if (isEscape(e)) {\n this.handleEscapeKey();\n }\n if (isLeft(e)) {\n this.handleLeftArrow(e);\n }\n if (isRight(e)) {\n this.handleRightArrow(e);\n }\n if (isUp(e)) {\n e.preventDefault();\n this.handleUpArrow(e);\n }\n if (isDown(e)) {\n e.preventDefault();\n this.handleDownArrow(e);\n }\n if (isHome(e)) {\n e.preventDefault();\n this.onFirstSubItemFocus();\n }\n if (isEnd(e)) {\n e.preventDefault();\n this.onLastSubItemFocus();\n }\n if (isEnter(e) || isSpace(e)) {\n e.preventDefault();\n this.handleEnterAndSpace(e);\n }\n }\n\n handleUpArrow(e: KeyboardEvent): void {\n const { index } = e.target as UDExSecondaryNavigationSubItem;\n const lastIndex = this.domNavItems.length - 1;\n const previousIndex = index - 1 < 0 ? lastIndex : index - 1;\n if (!(lastIndex === previousIndex)) {\n this.domNavItems[previousIndex].focus();\n }\n }\n\n handleDownArrow(e: KeyboardEvent): void {\n const { index } = e.target as UDExSecondaryNavigationSubItem;\n const nextIndex = index + 1 > this.domNavItems.length - 1 ? 0 : index + 1;\n if (!(nextIndex === 0)) {\n this.domNavItems[nextIndex].focus();\n }\n }\n\n handleLeftArrow(e: KeyboardEvent): void {\n const { isBack } = e.target as UDExSecondaryNavigationSubItem;\n if (isBack) {\n this.setPrevNestedItems();\n this.onShouldFocusFirstSubItem();\n }\n }\n\n handleRightArrow(e: KeyboardEvent): void {\n const { hasItems, isBack } = e.target as UDExSecondaryNavigationSubItem;\n if (hasItems && !isBack) {\n this.onSubItemClick(e);\n this.onShouldFocusFirstSubItem();\n }\n }\n\n handleEnterAndSpace(e: KeyboardEvent): void {\n const { hasItems, isBack } = e.target as UDExSecondaryNavigationSubItem;\n if (isBack) {\n this.onBackClick();\n this.onShouldFocusFirstSubItem();\n return;\n }\n\n this.onSubItemClick(e);\n\n if (hasItems) {\n this.onShouldFocusFirstSubItem();\n } else {\n this.closeDropdown();\n this.focus();\n }\n }\n\n handleEscapeKey(): void {\n this.closeDropdown();\n this.focus();\n }\n\n setDropdownHistory(): void {\n this._dropdownHistory.push(this._processedItems);\n }\n\n setPrevNestedItems(): void {\n this._processedItems = this._dropdownHistory.pop()!;\n }\n\n setNestedItems({ title, items } : NavItem): void {\n if (items) {\n this._processedItems = [{ title, isBack: true }, ...items];\n }\n }\n\n setDropdownItems(): void {\n this._processedItems = this.subItems;\n }\n\n onFirstSubItemFocus(): void {\n this.domNavItems[0].focus();\n }\n\n onLastSubItemFocus(): void {\n this.domNavItems[this.domNavItems.length - 1].focus();\n }\n\n onShouldFocusFirstSubItem(): void {\n this._shouldFocusFirstSubItem = true;\n }\n\n get domNavItems(): Array<UDExSecondaryNavigationSubItem> {\n const domNavItems = this.shadowRoot?.querySelectorAll<UDExSecondaryNavigationSubItem>(\"udex-secondary-navigation-sub-item\");\n return domNavItems ? Array.from(domNavItems) : [];\n }\n\n get hasNestedItems(): boolean {\n return this.subItems.length > 0;\n }\n\n get isSubItemActive(): boolean {\n return !!this.subActiveItem?.active;\n }\n\n get isActive(): boolean {\n return this.isSubItemActive || this.active;\n }\n\n get subActiveItemTitle(): string | undefined {\n return this.subActiveItem?.title;\n }\n\n get subActiveItem(): NavItem | undefined {\n return this.getActiveSubItem(this.subItems);\n }\n\n get isLink(): boolean {\n return !this.hasNestedItems && !!this.path;\n }\n\n get itemRole(): string {\n return this.role ? this.role : this.menuItemRole;\n }\n\n get menuItemRole(): string {\n return menuItemRole;\n }\n\n get title(): string {\n return this.label;\n }\n}\n\nUDExSecondaryNavigationItem.define();\n\nexport default UDExSecondaryNavigationItem;\n"]}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
2
|
+
export declare enum Target {
|
|
3
|
+
_blank = "_blank",
|
|
4
|
+
_parent = "_parent",
|
|
5
|
+
_self = "_self",
|
|
6
|
+
_top = "_top"
|
|
7
|
+
}
|
|
8
|
+
export type NavItem = {
|
|
9
|
+
path?: string;
|
|
10
|
+
mobileLinkTitle?: string;
|
|
11
|
+
target?: Target;
|
|
12
|
+
title: string;
|
|
13
|
+
active?: boolean;
|
|
14
|
+
isBack?: boolean;
|
|
15
|
+
items?: Array<NavItem>;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* @class
|
|
19
|
+
*
|
|
20
|
+
* A class to serve as a foundation
|
|
21
|
+
* for the <code>UDExSecondaryNavigationItem</code> and <code>UDExSecondaryNavigationSubItem</code> classes.
|
|
22
|
+
*
|
|
23
|
+
* @constructor
|
|
24
|
+
* @author SAP SE
|
|
25
|
+
* @extends UI5Element
|
|
26
|
+
* @public
|
|
27
|
+
*/
|
|
28
|
+
declare class UDExSecondaryNavigationItemBase extends UI5Element {
|
|
29
|
+
/**
|
|
30
|
+
* Defines active state for the item
|
|
31
|
+
*
|
|
32
|
+
* @public
|
|
33
|
+
*/
|
|
34
|
+
active: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Defines path for the item
|
|
37
|
+
*
|
|
38
|
+
* @public
|
|
39
|
+
*/
|
|
40
|
+
path: string;
|
|
41
|
+
/**
|
|
42
|
+
* Defines target for the item
|
|
43
|
+
*
|
|
44
|
+
* @public
|
|
45
|
+
*/
|
|
46
|
+
target: string;
|
|
47
|
+
/**
|
|
48
|
+
* Defines subTitle for the item
|
|
49
|
+
*
|
|
50
|
+
* @public
|
|
51
|
+
*/
|
|
52
|
+
subTitle: string;
|
|
53
|
+
/**
|
|
54
|
+
* Defines label for the item
|
|
55
|
+
*
|
|
56
|
+
* @public
|
|
57
|
+
*/
|
|
58
|
+
label: string;
|
|
59
|
+
/**
|
|
60
|
+
* Defines the index for the item.
|
|
61
|
+
*
|
|
62
|
+
* @public
|
|
63
|
+
*/
|
|
64
|
+
index: number;
|
|
65
|
+
onEnterDOM(): void;
|
|
66
|
+
getActiveSubItem(data: Array<NavItem>): NavItem | undefined;
|
|
67
|
+
}
|
|
68
|
+
export default UDExSecondaryNavigationItemBase;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
8
|
+
import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
|
|
9
|
+
import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
|
|
10
|
+
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
11
|
+
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
|
|
12
|
+
import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
|
|
13
|
+
export var Target;
|
|
14
|
+
(function (Target) {
|
|
15
|
+
Target["_blank"] = "_blank";
|
|
16
|
+
Target["_parent"] = "_parent";
|
|
17
|
+
Target["_self"] = "_self";
|
|
18
|
+
Target["_top"] = "_top";
|
|
19
|
+
})(Target || (Target = {}));
|
|
20
|
+
/**
|
|
21
|
+
* @class
|
|
22
|
+
*
|
|
23
|
+
* A class to serve as a foundation
|
|
24
|
+
* for the <code>UDExSecondaryNavigationItem</code> and <code>UDExSecondaryNavigationSubItem</code> classes.
|
|
25
|
+
*
|
|
26
|
+
* @constructor
|
|
27
|
+
* @author SAP SE
|
|
28
|
+
* @extends UI5Element
|
|
29
|
+
* @public
|
|
30
|
+
*/
|
|
31
|
+
let UDExSecondaryNavigationItemBase = class UDExSecondaryNavigationItemBase extends UI5Element {
|
|
32
|
+
onEnterDOM() {
|
|
33
|
+
if (isDesktop()) {
|
|
34
|
+
this.setAttribute("desktop", "");
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
getActiveSubItem(data) {
|
|
38
|
+
let activeItem;
|
|
39
|
+
const findActiveItem = (array) => {
|
|
40
|
+
array.forEach(item => {
|
|
41
|
+
if (item.active === true) {
|
|
42
|
+
activeItem = item;
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (item.items) {
|
|
46
|
+
findActiveItem(item.items);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
findActiveItem(data);
|
|
51
|
+
return activeItem;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
__decorate([
|
|
55
|
+
property({ type: Boolean })
|
|
56
|
+
], UDExSecondaryNavigationItemBase.prototype, "active", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
property({ type: String })
|
|
59
|
+
], UDExSecondaryNavigationItemBase.prototype, "path", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
property({ type: String })
|
|
62
|
+
], UDExSecondaryNavigationItemBase.prototype, "target", void 0);
|
|
63
|
+
__decorate([
|
|
64
|
+
property({ type: String })
|
|
65
|
+
], UDExSecondaryNavigationItemBase.prototype, "subTitle", void 0);
|
|
66
|
+
__decorate([
|
|
67
|
+
property({ type: String })
|
|
68
|
+
], UDExSecondaryNavigationItemBase.prototype, "label", void 0);
|
|
69
|
+
__decorate([
|
|
70
|
+
property({ validator: Integer })
|
|
71
|
+
], UDExSecondaryNavigationItemBase.prototype, "index", void 0);
|
|
72
|
+
UDExSecondaryNavigationItemBase = __decorate([
|
|
73
|
+
customElement({
|
|
74
|
+
renderer: litRender,
|
|
75
|
+
})
|
|
76
|
+
], UDExSecondaryNavigationItemBase);
|
|
77
|
+
export default UDExSecondaryNavigationItemBase;
|
|
78
|
+
//# sourceMappingURL=SecondaryNavigationItemBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecondaryNavigationItemBase.js","sourceRoot":"","sources":["../src/SecondaryNavigationItemBase.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,SAAS,MAAM,sDAAsD,CAAC;AAC7E,OAAO,OAAO,MAAM,+CAA+C,CAAC;AAEpE,MAAM,CAAN,IAAY,MAKX;AALD,WAAY,MAAM;IAChB,2BAAiB,CAAA;IACjB,6BAAmB,CAAA;IACnB,yBAAe,CAAA;IACf,uBAAa,CAAA;AACf,CAAC,EALW,MAAM,KAAN,MAAM,QAKjB;AAYD;;;;;;;;;;GAUG;AAMH,IAAM,+BAA+B,GAArC,MAAM,+BAAgC,SAAQ,UAAU;IAiDtD,UAAU;QACR,IAAI,SAAS,EAAE,EAAE;YACf,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;SAClC;IACH,CAAC;IAED,gBAAgB,CAAC,IAAoB;QACnC,IAAI,UAAU,CAAC;QACf,MAAM,cAAc,GAAG,CAAC,KAAqB,EAAE,EAAE;YAC/C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACnB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;oBACxB,UAAU,GAAG,IAAI,CAAC;oBAClB,OAAO;iBACR;gBACD,IAAI,IAAI,CAAC,KAAK,EAAE;oBACd,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC5B;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,UAAU,CAAC;IACpB,CAAC;CACF,CAAA;AAjEG;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;+DACT;AAQjB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6DACX;AAQd;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;+DACT;AAQhB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iEACP;AAQlB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8DACV;AAQf;IADD,QAAQ,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;8DAChB;AA/Cb,+BAA+B;IAJpC,aAAa,CAAC;QACb,QAAQ,EAAE,SAAS;KACpB,CAAC;GAEI,+BAA+B,CAwEpC;AAED,eAAe,+BAA+B,CAAC","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport Integer from \"@ui5/webcomponents-base/dist/types/Integer.js\";\n\nexport enum Target {\n _blank = \"_blank\",\n _parent = \"_parent\",\n _self = \"_self\",\n _top = \"_top\",\n}\n\nexport type NavItem = {\n path?: string;\n mobileLinkTitle?: string;\n target?: Target;\n title: string;\n active?: boolean;\n isBack?: boolean;\n items?: Array<NavItem>;\n}\n\n/**\n * @class\n *\n * A class to serve as a foundation\n * for the <code>UDExSecondaryNavigationItem</code> and <code>UDExSecondaryNavigationSubItem</code> classes.\n *\n * @constructor\n * @author SAP SE\n * @extends UI5Element\n * @public\n */\n\n@customElement({\n renderer: litRender,\n})\n\nclass UDExSecondaryNavigationItemBase extends UI5Element {\n /**\n * Defines active state for the item\n *\n * @public\n */\n @property({ type: Boolean })\n active!: boolean;\n\n /**\n * Defines path for the item\n *\n * @public\n */\n @property({ type: String })\n path!: string;\n\n /**\n * Defines target for the item\n *\n * @public\n */\n @property({ type: String })\n target!: string;\n\n /**\n * Defines subTitle for the item\n *\n * @public\n */\n @property({ type: String })\n subTitle!: string;\n\n /**\n * Defines label for the item\n *\n * @public\n */\n @property({ type: String })\n label!: string;\n\n /**\n * Defines the index for the item.\n *\n * @public\n */\n @property({ validator: Integer })\n index!: number;\n\n onEnterDOM(): void {\n if (isDesktop()) {\n this.setAttribute(\"desktop\", \"\");\n }\n }\n\n getActiveSubItem(data: Array<NavItem>): NavItem | undefined {\n let activeItem;\n const findActiveItem = (array: Array<NavItem>) => {\n array.forEach(item => {\n if (item.active === true) {\n activeItem = item;\n return;\n }\n if (item.items) {\n findActiveItem(item.items);\n }\n });\n };\n\n findActiveItem(data);\n return activeItem;\n }\n}\n\nexport default UDExSecondaryNavigationItemBase;\n"]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
|
|
2
|
+
import "@ui5/webcomponents-icons/dist/slim-arrow-left.js";
|
|
3
|
+
import UDExSecondaryNavigationItemBase, { NavItem } from "./SecondaryNavigationItemBase.js";
|
|
4
|
+
/**
|
|
5
|
+
* @class
|
|
6
|
+
*
|
|
7
|
+
* <h3 class="comment-api-title">Overview</h3>
|
|
8
|
+
*
|
|
9
|
+
*
|
|
10
|
+
* <h3>Usage</h3>
|
|
11
|
+
*
|
|
12
|
+
* For the <code>udex-secondary-navigation-sub-item</code>
|
|
13
|
+
* <h3>ES6 Module Import</h3>
|
|
14
|
+
*
|
|
15
|
+
* <code>import "@udex/web-components/dist/SecondaryNavigationSubItem.js";</code>
|
|
16
|
+
*
|
|
17
|
+
* @constructor
|
|
18
|
+
* @extends UDExSecondaryNavigationItemBase
|
|
19
|
+
* @tagname udex-secondary-navigation-sub-item
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
22
|
+
declare class UDExSecondaryNavigationSubItem extends UDExSecondaryNavigationItemBase {
|
|
23
|
+
/**
|
|
24
|
+
* Defines active item.
|
|
25
|
+
*
|
|
26
|
+
* @public
|
|
27
|
+
* @default false
|
|
28
|
+
*/
|
|
29
|
+
isActive: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Defines back item.
|
|
32
|
+
*
|
|
33
|
+
* @public
|
|
34
|
+
* @default false
|
|
35
|
+
*/
|
|
36
|
+
isBack: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* List of the nested items
|
|
39
|
+
*
|
|
40
|
+
* @default "[]"
|
|
41
|
+
* @public
|
|
42
|
+
*/
|
|
43
|
+
nestedItems: Array<NavItem>;
|
|
44
|
+
static i18nBundle: any;
|
|
45
|
+
static onDefine(): Promise<void>;
|
|
46
|
+
onItemClick(): void;
|
|
47
|
+
onBackItemClick(): void;
|
|
48
|
+
get hasItems(): boolean;
|
|
49
|
+
get isSubItemActive(): boolean;
|
|
50
|
+
get backButtonLabel(): string;
|
|
51
|
+
}
|
|
52
|
+
export default UDExSecondaryNavigationSubItem;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var UDExSecondaryNavigationSubItem_1;
|
|
8
|
+
import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
|
|
9
|
+
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
10
|
+
import event from "@ui5/webcomponents-base/dist/decorators/event.js";
|
|
11
|
+
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
|
|
12
|
+
import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
13
|
+
import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
14
|
+
import "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
|
|
15
|
+
import "@ui5/webcomponents-icons/dist/slim-arrow-left.js";
|
|
16
|
+
import UDExSecondaryNavigationItemBase from "./SecondaryNavigationItemBase.js";
|
|
17
|
+
import { BACK_BUTTON_LABEL } from "./generated/i18n/i18n-defaults.js";
|
|
18
|
+
import SecondaryNavigationSubItemTemplate from "./generated/templates/SecondaryNavigationSubItemTemplate.lit.js";
|
|
19
|
+
// Styles
|
|
20
|
+
import SecondaryNavigationSubItemCss from "./generated/themes/SecondaryNavigationSubItem.css.js";
|
|
21
|
+
/**
|
|
22
|
+
* @class
|
|
23
|
+
*
|
|
24
|
+
* <h3 class="comment-api-title">Overview</h3>
|
|
25
|
+
*
|
|
26
|
+
*
|
|
27
|
+
* <h3>Usage</h3>
|
|
28
|
+
*
|
|
29
|
+
* For the <code>udex-secondary-navigation-sub-item</code>
|
|
30
|
+
* <h3>ES6 Module Import</h3>
|
|
31
|
+
*
|
|
32
|
+
* <code>import "@udex/web-components/dist/SecondaryNavigationSubItem.js";</code>
|
|
33
|
+
*
|
|
34
|
+
* @constructor
|
|
35
|
+
* @extends UDExSecondaryNavigationItemBase
|
|
36
|
+
* @tagname udex-secondary-navigation-sub-item
|
|
37
|
+
* @public
|
|
38
|
+
*/
|
|
39
|
+
let UDExSecondaryNavigationSubItem = UDExSecondaryNavigationSubItem_1 = class UDExSecondaryNavigationSubItem extends UDExSecondaryNavigationItemBase {
|
|
40
|
+
static async onDefine() {
|
|
41
|
+
UDExSecondaryNavigationSubItem_1.i18nBundle = await getI18nBundle("udex-secondary-navigation-sub-item");
|
|
42
|
+
}
|
|
43
|
+
onItemClick() {
|
|
44
|
+
this.fireEvent("sub-item-click", {
|
|
45
|
+
item: this,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
onBackItemClick() {
|
|
49
|
+
this.fireEvent("back-item-click");
|
|
50
|
+
}
|
|
51
|
+
get hasItems() {
|
|
52
|
+
return !!this.nestedItems.length;
|
|
53
|
+
}
|
|
54
|
+
get isSubItemActive() {
|
|
55
|
+
return !!this.getActiveSubItem(this.nestedItems)?.active;
|
|
56
|
+
}
|
|
57
|
+
get backButtonLabel() {
|
|
58
|
+
const label = UDExSecondaryNavigationSubItem_1.i18nBundle.getText(BACK_BUTTON_LABEL);
|
|
59
|
+
return `${label} ${this.label}`;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
__decorate([
|
|
63
|
+
property({ type: Boolean })
|
|
64
|
+
], UDExSecondaryNavigationSubItem.prototype, "isActive", void 0);
|
|
65
|
+
__decorate([
|
|
66
|
+
property({ type: Boolean })
|
|
67
|
+
], UDExSecondaryNavigationSubItem.prototype, "isBack", void 0);
|
|
68
|
+
__decorate([
|
|
69
|
+
property({ type: Object, multiple: true })
|
|
70
|
+
], UDExSecondaryNavigationSubItem.prototype, "nestedItems", void 0);
|
|
71
|
+
UDExSecondaryNavigationSubItem = UDExSecondaryNavigationSubItem_1 = __decorate([
|
|
72
|
+
customElement({
|
|
73
|
+
tag: "udex-secondary-navigation-sub-item",
|
|
74
|
+
renderer: litRender,
|
|
75
|
+
styles: SecondaryNavigationSubItemCss,
|
|
76
|
+
template: SecondaryNavigationSubItemTemplate,
|
|
77
|
+
dependencies: [UI5Icon],
|
|
78
|
+
})
|
|
79
|
+
/**
|
|
80
|
+
* Fires when item is clicked
|
|
81
|
+
*
|
|
82
|
+
* @allowPreventDefault
|
|
83
|
+
* @public
|
|
84
|
+
*/
|
|
85
|
+
,
|
|
86
|
+
event("sub-item-click", {
|
|
87
|
+
detail: {
|
|
88
|
+
item: { type: HTMLElement },
|
|
89
|
+
},
|
|
90
|
+
})
|
|
91
|
+
/**
|
|
92
|
+
* Fires when back item is clicked
|
|
93
|
+
*
|
|
94
|
+
* @allowPreventDefault
|
|
95
|
+
* @public
|
|
96
|
+
*/
|
|
97
|
+
,
|
|
98
|
+
event("back-item-click")
|
|
99
|
+
], UDExSecondaryNavigationSubItem);
|
|
100
|
+
UDExSecondaryNavigationSubItem.define();
|
|
101
|
+
export default UDExSecondaryNavigationSubItem;
|
|
102
|
+
//# sourceMappingURL=SecondaryNavigationSubItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecondaryNavigationSubItem.js","sourceRoot":"","sources":["../src/SecondaryNavigationSubItem.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,KAAK,MAAM,kDAAkD,CAAC;AACrE,OAAO,SAAS,MAAM,sDAAsD,CAAC;AAC7E,OAAO,OAAO,MAAM,iCAAiC,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAC3E,OAAO,mDAAmD,CAAC;AAC3D,OAAO,kDAAkD,CAAC;AAC1D,OAAO,+BAA4C,MAAM,kCAAkC,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,kCAAkC,MAAM,iEAAiE,CAAC;AAEjH,SAAS;AACT,OAAO,6BAA6B,MAAM,sDAAsD,CAAC;AAEjG;;;;;;;;;;;;;;;;;GAiBG;AA6BH,IAAM,8BAA8B,sCAApC,MAAM,8BAA+B,SAAQ,+BAA+B;IA8B1E,MAAM,CAAC,KAAK,CAAC,QAAQ;QACnB,gCAA8B,CAAC,UAAU,GAAG,MAAM,aAAa,CAAC,oCAAoC,CAAC,CAAC;IACxG,CAAC;IAED,WAAW;QACT,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;YAC/B,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;IAED,eAAe;QACb,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IACnC,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC3D,CAAC;IAED,IAAI,eAAe;QACjB,MAAM,KAAK,GAAG,gCAA8B,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAW,CAAC;QAC7F,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;CACF,CAAA;AAhDG;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gEACP;AASnB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;8DACT;AASjB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;mEACZ;AA1B3B,8BAA8B;IA5BnC,aAAa,CAAC;QACb,GAAG,EAAE,oCAAoC;QACzC,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,6BAA6B;QACrC,QAAQ,EAAE,kCAAkC;QAC5C,YAAY,EAAE,CAAC,OAAO,CAAC;KACxB,CAAC;IAEF;;;;;OAKG;;IACF,KAAK,CAAC,gBAAgB,EAAE;QACvB,MAAM,EAAE;YACN,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;SAC5B;KACF,CAAC;IAEF;;;;;OAKG;;IACF,KAAK,CAAC,iBAAiB,CAAC;GAEnB,8BAA8B,CAwDnC;AAED,8BAA8B,CAAC,MAAM,EAAE,CAAC;AAExC,eAAe,8BAA8B,CAAC","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport UI5Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-left.js\";\nimport UDExSecondaryNavigationItemBase, { NavItem } from \"./SecondaryNavigationItemBase.js\";\nimport { BACK_BUTTON_LABEL } from \"./generated/i18n/i18n-defaults.js\";\n\nimport SecondaryNavigationSubItemTemplate from \"./generated/templates/SecondaryNavigationSubItemTemplate.lit.js\";\n\n// Styles\nimport SecondaryNavigationSubItemCss from \"./generated/themes/SecondaryNavigationSubItem.css.js\";\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-secondary-navigation-sub-item</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@udex/web-components/dist/SecondaryNavigationSubItem.js\";</code>\n *\n * @constructor\n * @extends UDExSecondaryNavigationItemBase\n * @tagname udex-secondary-navigation-sub-item\n * @public\n */\n@customElement({\n tag: \"udex-secondary-navigation-sub-item\",\n renderer: litRender,\n styles: SecondaryNavigationSubItemCss,\n template: SecondaryNavigationSubItemTemplate,\n dependencies: [UI5Icon],\n})\n\n/**\n * Fires when item is clicked\n *\n * @allowPreventDefault\n * @public\n */\n@event(\"sub-item-click\", {\n detail: {\n item: { type: HTMLElement },\n },\n})\n\n/**\n * Fires when back item is clicked\n *\n * @allowPreventDefault\n * @public\n */\n@event(\"back-item-click\")\n\nclass UDExSecondaryNavigationSubItem extends UDExSecondaryNavigationItemBase {\n /**\n * Defines active item.\n *\n * @public\n * @default false\n */\n @property({ type: Boolean })\n isActive!: boolean;\n\n /**\n * Defines back item.\n *\n * @public\n * @default false\n */\n @property({ type: Boolean })\n isBack!: boolean;\n\n /**\n * List of the nested items\n *\n * @default \"[]\"\n * @public\n */\n @property({ type: Object, multiple: true })\n nestedItems!: Array<NavItem>;\n\n static i18nBundle: any;\n\n static async onDefine(): Promise<void> {\n UDExSecondaryNavigationSubItem.i18nBundle = await getI18nBundle(\"udex-secondary-navigation-sub-item\");\n }\n\n onItemClick(): void {\n this.fireEvent(\"sub-item-click\", {\n item: this,\n });\n }\n\n onBackItemClick(): void {\n this.fireEvent(\"back-item-click\");\n }\n\n get hasItems(): boolean {\n return !!this.nestedItems.length;\n }\n\n get isSubItemActive(): boolean {\n return !!this.getActiveSubItem(this.nestedItems)?.active;\n }\n\n get backButtonLabel(): string {\n const label = UDExSecondaryNavigationSubItem.i18nBundle.getText(BACK_BUTTON_LABEL) as string;\n return `${label} ${this.label}`;\n }\n}\n\nUDExSecondaryNavigationSubItem.define();\n\nexport default UDExSecondaryNavigationSubItem;\n"]}
|
package/dist/SelectBox.d.ts
CHANGED
|
@@ -149,6 +149,7 @@ declare class UDExSelectBox extends UDExSearchableListBase {
|
|
|
149
149
|
handleKeyDownTrigger(e: KeyboardEvent): void;
|
|
150
150
|
handleKeyDownTag(e: KeyboardEvent): void;
|
|
151
151
|
handleKeyDownDropdown(e: KeyboardEvent): void;
|
|
152
|
+
handleKeyDownSearch(e: CustomEvent): void;
|
|
152
153
|
handleOutsideClick(): void;
|
|
153
154
|
openDropdown(): void;
|
|
154
155
|
closeDropdown(): void;
|