@sapudex/web-components 0.138.0 → 0.143.0
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/Accordion.js +1 -1
- package/dist/Accordion.js.map +1 -1
- package/dist/Avatar.js +1 -1
- package/dist/Avatar.js.map +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/Breadcrumbs.js.map +1 -1
- package/dist/Carousel.js +1 -1
- package/dist/Carousel.js.map +1 -1
- package/dist/CountrySelector.js +7 -3
- package/dist/CountrySelector.js.map +1 -1
- package/dist/DatePicker.js +1 -1
- package/dist/DatePicker.js.map +1 -1
- package/dist/Dropdown.d.ts +1 -0
- package/dist/Dropdown.js +13 -1
- package/dist/Dropdown.js.map +1 -1
- package/dist/FilterMenu.d.ts +2 -1
- package/dist/FilterMenu.js +13 -5
- package/dist/FilterMenu.js.map +1 -1
- package/dist/Footer.js +1 -1
- package/dist/Footer.js.map +1 -1
- package/dist/InputGroup.js +1 -1
- package/dist/InputGroup.js.map +1 -1
- package/dist/List.js +1 -1
- package/dist/List.js.map +1 -1
- package/dist/ListItem.js +1 -1
- package/dist/ListItem.js.map +1 -1
- package/dist/ListItemBase.d.ts +2 -2
- package/dist/ListItemBase.js.map +1 -1
- package/dist/ListSelectAll.js +1 -1
- package/dist/ListSelectAll.js.map +1 -1
- package/dist/MastheadItem.js +3 -8
- package/dist/MastheadItem.js.map +1 -1
- package/dist/MastheadMobileMenu.js +1 -1
- package/dist/MastheadMobileMenu.js.map +1 -1
- package/dist/MastheadProfileMenu.js +1 -1
- package/dist/MastheadProfileMenu.js.map +1 -1
- package/dist/MastheadShell.d.ts +22 -6
- package/dist/MastheadShell.js +39 -25
- package/dist/MastheadShell.js.map +1 -1
- package/dist/MessageStrip.js +1 -1
- package/dist/MessageStrip.js.map +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/Pagination.js.map +1 -1
- package/dist/PasswordField.js +1 -1
- package/dist/PasswordField.js.map +1 -1
- package/dist/PhoneNumberField.js +1 -1
- package/dist/PhoneNumberField.js.map +1 -1
- package/dist/RatingBar.js +1 -1
- package/dist/RatingBar.js.map +1 -1
- package/dist/Review.js +1 -1
- package/dist/Review.js.map +1 -1
- package/dist/ReviewItem.js +1 -1
- package/dist/ReviewItem.js.map +1 -1
- package/dist/Search.js +1 -1
- package/dist/Search.js.map +1 -1
- package/dist/SearchableListBase.d.ts +5 -0
- package/dist/SearchableListBase.js +11 -4
- package/dist/SearchableListBase.js.map +1 -1
- package/dist/SecondaryNavigation.d.ts +1 -0
- package/dist/SecondaryNavigation.js +8 -2
- package/dist/SecondaryNavigation.js.map +1 -1
- package/dist/SecondaryNavigationItem.d.ts +8 -0
- package/dist/SecondaryNavigationItem.js +19 -0
- package/dist/SecondaryNavigationItem.js.map +1 -1
- package/dist/SecondaryNavigationSubItem.js +1 -1
- package/dist/SecondaryNavigationSubItem.js.map +1 -1
- package/dist/SelectBox.js +1 -1
- package/dist/SelectBox.js.map +1 -1
- package/dist/StatusBadge.js +1 -1
- package/dist/StatusBadge.js.map +1 -1
- package/dist/StepInput.js +1 -1
- package/dist/StepInput.js.map +1 -1
- package/dist/Tab.js +1 -1
- package/dist/Tab.js.map +1 -1
- package/dist/TabNavigation.js +1 -1
- package/dist/TabNavigation.js.map +1 -1
- package/dist/Table.js +1 -1
- package/dist/Table.js.map +1 -1
- package/dist/TextArea.js +1 -1
- package/dist/TextArea.js.map +1 -1
- package/dist/TextField.js +1 -2
- package/dist/TextField.js.map +1 -1
- package/dist/TruncatedText.js +1 -1
- package/dist/TruncatedText.js.map +1 -1
- package/dist/assets/{bundle.esm-bb1c7413.js → bundle.esm-8623b7b1.js} +187 -187
- package/dist/css/themes/Button.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/MastheadItem.css +1 -1
- package/dist/css/themes/MastheadShell.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/SecondaryNavigationItem.css +1 -1
- package/dist/css/themes/SelectBox.css +1 -1
- package/dist/css/themes/Slider.css +1 -1
- package/dist/custom-elements-internal.json +56 -0
- package/dist/custom-elements.json +55 -0
- package/dist/data/CountryListISO3166.js +1 -1
- package/dist/data/CountryListISO3166.js.map +1 -1
- package/dist/generated/templates/MastheadShellTemplate.lit.js +10 -8
- package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SecondaryNavigationTemplate.lit.js +2 -2
- package/dist/generated/templates/SecondaryNavigationTemplate.lit.js.map +1 -1
- package/dist/generated/themes/Button.css.js +1 -1
- package/dist/generated/themes/Button.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/MastheadItem.css.js +1 -1
- package/dist/generated/themes/MastheadItem.css.js.map +1 -1
- package/dist/generated/themes/MastheadShell.css.js +1 -1
- package/dist/generated/themes/MastheadShell.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/SecondaryNavigationItem.css.js +1 -1
- package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -1
- package/dist/generated/themes/SelectBox.css.js +1 -1
- package/dist/generated/themes/SelectBox.css.js.map +1 -1
- package/dist/generated/themes/Slider.css.js +1 -1
- package/dist/generated/themes/Slider.css.js.map +1 -1
- package/dist/vscode.html-custom-data.json +9 -4
- package/dist/web-types.json +14 -4
- package/package.json +1 -1
- package/src/Accordion.ts +1 -1
- package/src/Avatar.ts +1 -1
- package/src/Breadcrumbs.ts +1 -1
- package/src/Carousel.ts +1 -1
- package/src/CountrySelector.ts +8 -4
- package/src/DatePicker.ts +1 -1
- package/src/Dropdown.ts +9 -1
- package/src/FilterMenu.ts +12 -7
- package/src/Footer.ts +1 -1
- package/src/InputGroup.ts +1 -1
- package/src/List.ts +1 -1
- package/src/ListItem.ts +1 -1
- package/src/ListItemBase.ts +1 -1
- package/src/ListSelectAll.ts +1 -1
- package/src/MastheadItem.ts +5 -10
- package/src/MastheadMobileMenu.ts +1 -1
- package/src/MastheadProfileMenu.ts +1 -1
- package/src/MastheadShell.hbs +26 -19
- package/src/MastheadShell.ts +57 -29
- package/src/MessageStrip.ts +1 -3
- package/src/Pagination.ts +1 -1
- package/src/PasswordField.ts +1 -1
- package/src/PhoneNumberField.ts +1 -1
- package/src/RatingBar.ts +1 -1
- package/src/Review.ts +1 -1
- package/src/ReviewItem.ts +1 -1
- package/src/Search.ts +1 -1
- package/src/SearchableListBase.ts +15 -7
- package/src/SecondaryNavigation.hbs +2 -0
- package/src/SecondaryNavigation.ts +9 -2
- package/src/SecondaryNavigationItem.ts +29 -0
- package/src/SecondaryNavigationSubItem.ts +1 -1
- package/src/SelectBox.ts +1 -1
- package/src/StatusBadge.ts +1 -1
- package/src/StepInput.ts +1 -1
- package/src/Tab.ts +1 -1
- package/src/TabNavigation.ts +1 -1
- package/src/Table.ts +1 -1
- package/src/TextArea.ts +1 -1
- package/src/TextField.ts +1 -2
- package/src/TruncatedText.ts +1 -1
- package/src/data/CountryListISO3166.ts +1 -1
- package/src/generated/templates/MastheadShellTemplate.lit.ts +10 -8
- package/src/generated/templates/SecondaryNavigationTemplate.lit.ts +2 -2
- package/src/generated/themes/Button.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/MastheadItem.css.ts +1 -1
- package/src/generated/themes/MastheadShell.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/SecondaryNavigationItem.css.ts +1 -1
- package/src/generated/themes/SelectBox.css.ts +1 -1
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/themes/Button.css +10 -0
- package/src/themes/CountrySelector.css +13 -11
- package/src/themes/Dropdown.css +10 -0
- package/src/themes/FilterMenu.css +15 -2
- package/src/themes/MastheadItem.css +6 -2
- package/src/themes/MastheadShell.css +88 -9
- package/src/themes/PhoneNumberField.css +22 -20
- package/src/themes/Search.css +4 -0
- package/src/themes/SecondaryNavigationItem.css +8 -1
- package/src/themes/SelectBox.css +8 -0
package/src/FilterMenu.ts
CHANGED
|
@@ -295,13 +295,7 @@ class UDExFilterMenu extends UDExSearchableListBase {
|
|
|
295
295
|
_search!: UDExSearch;
|
|
296
296
|
_hasFooterButtons!: boolean;
|
|
297
297
|
_popover!: ResponsivePopover;
|
|
298
|
-
|
|
299
|
-
onAfterRendering() {
|
|
300
|
-
this._search = this.getSearch();
|
|
301
|
-
this._popover = this.getPopover();
|
|
302
|
-
this._trigger = this.getTriggerButton();
|
|
303
|
-
this._hasFooterButtons = this.hasFooterButtons;
|
|
304
|
-
}
|
|
298
|
+
_breakpointSizeXS = 640;
|
|
305
299
|
|
|
306
300
|
onEnterDOM(): void {
|
|
307
301
|
if (isDesktop()) {
|
|
@@ -313,6 +307,13 @@ class UDExFilterMenu extends UDExSearchableListBase {
|
|
|
313
307
|
super.onBeforeRendering();
|
|
314
308
|
}
|
|
315
309
|
|
|
310
|
+
onAfterRendering() {
|
|
311
|
+
this._search = this.getSearch();
|
|
312
|
+
this._popover = this.getPopover();
|
|
313
|
+
this._trigger = this.getTriggerButton();
|
|
314
|
+
this._hasFooterButtons = this.hasFooterButtons;
|
|
315
|
+
}
|
|
316
|
+
|
|
316
317
|
handleSelectAll(e:CustomEvent): void {
|
|
317
318
|
this.onFilterSelectAllHeaderPress(e);
|
|
318
319
|
this.fireEvent("select-all");
|
|
@@ -436,6 +437,10 @@ class UDExFilterMenu extends UDExSearchableListBase {
|
|
|
436
437
|
}
|
|
437
438
|
|
|
438
439
|
_dropdownAfterOpen(): void {
|
|
440
|
+
const popoverLeftOffset = +this._popover.style.left.split("px")[0];
|
|
441
|
+
if (this._popover.offsetWidth + popoverLeftOffset < this._breakpointSizeXS) {
|
|
442
|
+
this.style.setProperty("--udex-filter-menu-popover-left-offset", `${this._popover.style.left}`);
|
|
443
|
+
}
|
|
439
444
|
this.fireEvent("after-open");
|
|
440
445
|
}
|
|
441
446
|
|
package/src/Footer.ts
CHANGED
|
@@ -320,7 +320,7 @@ class UDExFooter extends UI5Element {
|
|
|
320
320
|
static i18nBundle: I18nBundle;
|
|
321
321
|
|
|
322
322
|
static async onDefine(): Promise<void> {
|
|
323
|
-
UDExFooter.i18nBundle = await getI18nBundle("
|
|
323
|
+
UDExFooter.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
324
324
|
}
|
|
325
325
|
|
|
326
326
|
_handleResizeBound: ResizeObserverCallback;
|
package/src/InputGroup.ts
CHANGED
|
@@ -104,7 +104,7 @@ class UDExInputGroup extends UI5Element {
|
|
|
104
104
|
static i18nBundle: I18nBundle;
|
|
105
105
|
|
|
106
106
|
static async onDefine() {
|
|
107
|
-
UDExInputGroup.i18nBundle = await getI18nBundle("
|
|
107
|
+
UDExInputGroup.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
get _items() {
|
package/src/List.ts
CHANGED
|
@@ -147,7 +147,7 @@ class UDExList extends UI5Element {
|
|
|
147
147
|
static i18nBundle: I18nBundle;
|
|
148
148
|
|
|
149
149
|
static async onDefine(): Promise<void> {
|
|
150
|
-
UDExList.i18nBundle = await getI18nBundle("
|
|
150
|
+
UDExList.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
151
151
|
}
|
|
152
152
|
|
|
153
153
|
onBeforeRendering(): void {
|
package/src/ListItem.ts
CHANGED
|
@@ -251,7 +251,7 @@ class UDExListItem extends UDExListItemBase {
|
|
|
251
251
|
}
|
|
252
252
|
|
|
253
253
|
static async onDefine(): Promise<void> {
|
|
254
|
-
UDExListItem.i18nBundle = await getI18nBundle("
|
|
254
|
+
UDExListItem.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
255
255
|
}
|
|
256
256
|
|
|
257
257
|
onEnterDOM() {
|
package/src/ListItemBase.ts
CHANGED
package/src/ListSelectAll.ts
CHANGED
|
@@ -46,7 +46,7 @@ class UDExListSelectAll extends UDExListGroupHeaderBase {
|
|
|
46
46
|
static i18nBundle: I18nBundle;
|
|
47
47
|
|
|
48
48
|
static async onDefine(): Promise<void> {
|
|
49
|
-
UDExListSelectAll.i18nBundle = await getI18nBundle("
|
|
49
|
+
UDExListSelectAll.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
handleSelectAllPress() {
|
package/src/MastheadItem.ts
CHANGED
|
@@ -226,7 +226,7 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
|
|
|
226
226
|
static i18nBundle: I18nBundle;
|
|
227
227
|
|
|
228
228
|
static async onDefine(): Promise<void> {
|
|
229
|
-
UDExMastheadItem.i18nBundle = await getI18nBundle("
|
|
229
|
+
UDExMastheadItem.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
230
230
|
}
|
|
231
231
|
|
|
232
232
|
onEnterDOM() {
|
|
@@ -262,16 +262,11 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
|
|
|
262
262
|
}
|
|
263
263
|
}
|
|
264
264
|
|
|
265
|
-
handleKeyEscapeMobile() {
|
|
266
|
-
const mastheadShell: MastheadShell
|
|
267
|
-
const mobileMenu = mastheadShell?.mastheadMobileMenu;
|
|
268
|
-
mastheadShell?.removeActiveMobileClass();
|
|
269
|
-
mastheadShell?.mobileBtn?.focus();
|
|
270
|
-
this.selected = false;
|
|
265
|
+
handleKeyEscapeMobile(): void {
|
|
266
|
+
const mastheadShell: MastheadShell = document.querySelector<MastheadShell>("udex-masthead-shell")!;
|
|
271
267
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
}
|
|
268
|
+
mastheadShell.closeMobileMenu();
|
|
269
|
+
mastheadShell.mobileBtn?.focus();
|
|
275
270
|
}
|
|
276
271
|
|
|
277
272
|
handleNavigationItemClick(e: Event): void {
|
|
@@ -122,7 +122,7 @@ class UDExMastheadMobileMenu extends UI5Element {
|
|
|
122
122
|
static i18nBundle: I18nBundle;
|
|
123
123
|
|
|
124
124
|
static async onDefine(): Promise<void> {
|
|
125
|
-
UDExMastheadMobileMenu.i18nBundle = await getI18nBundle("
|
|
125
|
+
UDExMastheadMobileMenu.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
onAfterRendering() {
|
|
@@ -122,7 +122,7 @@ class UDExMastheadProfileMenu extends UI5Element {
|
|
|
122
122
|
static i18nBundle: I18nBundle;
|
|
123
123
|
|
|
124
124
|
static async onDefine(): Promise<void> {
|
|
125
|
-
UDExMastheadProfileMenu.i18nBundle = await getI18nBundle("
|
|
125
|
+
UDExMastheadProfileMenu.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
handleUserLogoutItemClick(e: Event): void {
|
package/src/MastheadShell.hbs
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
{{>siteLabel}}
|
|
9
9
|
{{/if}}
|
|
10
10
|
|
|
11
|
-
{{#
|
|
11
|
+
{{#if isMainMenuVisible}}
|
|
12
12
|
<div
|
|
13
13
|
class="udex-masthead-shell__main-menu"
|
|
14
14
|
data-menubar-item-expanded="true"
|
|
@@ -17,29 +17,35 @@
|
|
|
17
17
|
{{>item}}
|
|
18
18
|
{{/each}}
|
|
19
19
|
</div>
|
|
20
|
-
{{/
|
|
20
|
+
{{/if}}
|
|
21
21
|
</div>
|
|
22
22
|
|
|
23
|
-
{{#if
|
|
23
|
+
{{#if isSearchVisible}}
|
|
24
24
|
<div class="udex-masthead-shell__search-container">
|
|
25
25
|
<slot name="search"></slot>
|
|
26
26
|
</div>
|
|
27
|
-
|
|
28
|
-
<udex-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
{{else}}
|
|
37
|
-
<div class="udex-masthead-shell__right-menu">
|
|
38
|
-
<div
|
|
39
|
-
class="udex-masthead-shell__explore"
|
|
40
|
-
@ui5-item-click="{{setSelectedItem}}">
|
|
41
|
-
<slot name="exploreSAP"></slot>
|
|
27
|
+
{{#if _isSearchOpened}}
|
|
28
|
+
<div class="udex-masthead-shell__btn-holder">
|
|
29
|
+
<udex-control-button
|
|
30
|
+
class="udex-masthead-shell__close-search-btn"
|
|
31
|
+
size="Small"
|
|
32
|
+
icon="decline"
|
|
33
|
+
accessible-name="{{closeButtonAccessibleName}}"
|
|
34
|
+
@click={{hideSearch}}>
|
|
35
|
+
</udex-control-button>
|
|
42
36
|
</div>
|
|
37
|
+
{{/if}}
|
|
38
|
+
{{/if}}
|
|
39
|
+
|
|
40
|
+
{{#if isRightMenuVisible}}
|
|
41
|
+
<div class="udex-masthead-shell__right-menu">
|
|
42
|
+
{{#if hasExploreSAP}}
|
|
43
|
+
<div
|
|
44
|
+
class="udex-masthead-shell__explore"
|
|
45
|
+
@ui5-item-click="{{setSelectedItem}}">
|
|
46
|
+
<slot name="exploreSAP"></slot>
|
|
47
|
+
</div>
|
|
48
|
+
{{/if}}
|
|
43
49
|
{{#if hasSearch}}
|
|
44
50
|
<div class="udex-masthead-shell__search-icon">
|
|
45
51
|
<udex-masthead-item
|
|
@@ -77,6 +83,7 @@
|
|
|
77
83
|
<slot slot="dropdown" name="mobileMenu"></slot>
|
|
78
84
|
</udex-masthead-item>
|
|
79
85
|
<udex-masthead-item
|
|
86
|
+
@keydown="{{handleEnterAndSpaceOnCloseBtn}}"
|
|
80
87
|
@ui5-item-click="{{handleMobileCloseClick}}"
|
|
81
88
|
class="udex-masthead-shell__close-btn"
|
|
82
89
|
accessible-role="button"
|
|
@@ -124,7 +131,7 @@
|
|
|
124
131
|
{{/inline}}
|
|
125
132
|
|
|
126
133
|
{{#*inline "siteLabel"}}
|
|
127
|
-
{{#if
|
|
134
|
+
{{#if siteLabelUrl}}
|
|
128
135
|
<a
|
|
129
136
|
@click="{{handleSiteLabelClick}}"
|
|
130
137
|
role="link"
|
package/src/MastheadShell.ts
CHANGED
|
@@ -6,7 +6,9 @@ import event from "@ui5/webcomponents-base/dist/decorators/event.js";
|
|
|
6
6
|
import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
7
7
|
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
|
|
8
8
|
import ResizeHandler, { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
isLeft, isRight, isSpace, isEnter,
|
|
11
|
+
} from "@ui5/webcomponents-base/dist/Keys.js";
|
|
10
12
|
import "@ui5/webcomponents-icons/dist/decline.js";
|
|
11
13
|
import "@ui5/webcomponents-icons/dist/menu2.js";
|
|
12
14
|
import "@ui5/webcomponents-icons/dist/search.js";
|
|
@@ -22,9 +24,7 @@ import MastheadShellTemplate from "./generated/templates/MastheadShellTemplate.l
|
|
|
22
24
|
// Styles
|
|
23
25
|
import MastheadShellCss from "./generated/themes/MastheadShell.css.js";
|
|
24
26
|
|
|
25
|
-
const mobileMenuActiveClass: string = "udex-masthead-shell_mobile-menu-open";
|
|
26
27
|
const breakpointSizeM: number = 1279;
|
|
27
|
-
|
|
28
28
|
/**
|
|
29
29
|
* @class
|
|
30
30
|
*
|
|
@@ -181,6 +181,15 @@ class UDExMastheadShell extends UI5Element {
|
|
|
181
181
|
@property({ type: Boolean })
|
|
182
182
|
bodyOverflow!: boolean;
|
|
183
183
|
|
|
184
|
+
/**
|
|
185
|
+
* Defines the visibility of the Search by default.
|
|
186
|
+
*
|
|
187
|
+
* @default ""
|
|
188
|
+
* @public
|
|
189
|
+
*/
|
|
190
|
+
@property({ type: Boolean })
|
|
191
|
+
showSearchByDefault!: boolean;
|
|
192
|
+
|
|
184
193
|
/**
|
|
185
194
|
* Defines sticky position for component
|
|
186
195
|
*
|
|
@@ -251,12 +260,20 @@ class UDExMastheadShell extends UI5Element {
|
|
|
251
260
|
siteLabelAriaLabel!: string;
|
|
252
261
|
|
|
253
262
|
/**
|
|
254
|
-
* Defines if the search container is
|
|
263
|
+
* Defines if the search container is opened
|
|
255
264
|
*
|
|
256
265
|
* @private
|
|
257
266
|
*/
|
|
258
267
|
@property({ type: Boolean })
|
|
259
|
-
|
|
268
|
+
_isSearchOpened!: boolean;
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Defines if the mobile menu is open
|
|
272
|
+
*
|
|
273
|
+
* @private
|
|
274
|
+
*/
|
|
275
|
+
@property({ type: Boolean })
|
|
276
|
+
_isMobileMenuOpen!: boolean;
|
|
260
277
|
|
|
261
278
|
/**
|
|
262
279
|
* Defines if the close button was clicked
|
|
@@ -284,7 +301,7 @@ class UDExMastheadShell extends UI5Element {
|
|
|
284
301
|
|
|
285
302
|
this.handleOutsideClick();
|
|
286
303
|
|
|
287
|
-
if (this.
|
|
304
|
+
if (this._isSearchOpened) {
|
|
288
305
|
this.focusSearchInput();
|
|
289
306
|
}
|
|
290
307
|
|
|
@@ -302,12 +319,12 @@ class UDExMastheadShell extends UI5Element {
|
|
|
302
319
|
}
|
|
303
320
|
|
|
304
321
|
_handleResize(): void {
|
|
305
|
-
if (this.
|
|
306
|
-
this.
|
|
322
|
+
if (this.isBreakpointSizeM) {
|
|
323
|
+
this._isSearchOpened = false;
|
|
307
324
|
}
|
|
308
325
|
|
|
309
|
-
if (this._shouldHandleResize && this.
|
|
310
|
-
this.
|
|
326
|
+
if (this._shouldHandleResize && this.isBreakpointSizeM) {
|
|
327
|
+
this.closeMobileMenu();
|
|
311
328
|
return;
|
|
312
329
|
}
|
|
313
330
|
|
|
@@ -348,7 +365,7 @@ class UDExMastheadShell extends UI5Element {
|
|
|
348
365
|
|
|
349
366
|
handleSearchClick(e: CustomEvent): void {
|
|
350
367
|
e.stopPropagation();
|
|
351
|
-
this.
|
|
368
|
+
this._isSearchOpened = true;
|
|
352
369
|
this.resetSelectedItems();
|
|
353
370
|
if (this._searchOpener) {
|
|
354
371
|
this._searchOpener.selected = false;
|
|
@@ -369,7 +386,7 @@ class UDExMastheadShell extends UI5Element {
|
|
|
369
386
|
handleMobileMenuClick(e: CustomEvent) {
|
|
370
387
|
e.stopPropagation();
|
|
371
388
|
this.setSelectedItem(e);
|
|
372
|
-
this.
|
|
389
|
+
this._isMobileMenuOpen = true;
|
|
373
390
|
|
|
374
391
|
if (this.bodyOverflow) {
|
|
375
392
|
this.setOverflowBody();
|
|
@@ -378,12 +395,14 @@ class UDExMastheadShell extends UI5Element {
|
|
|
378
395
|
|
|
379
396
|
handleMobileCloseClick(e: CustomEvent) {
|
|
380
397
|
e.preventDefault();
|
|
381
|
-
this.
|
|
382
|
-
|
|
383
|
-
this._mobileMenu?.showFirstLevelMenu();
|
|
398
|
+
this.closeMobileMenu();
|
|
399
|
+
}
|
|
384
400
|
|
|
385
|
-
|
|
386
|
-
|
|
401
|
+
handleEnterAndSpaceOnCloseBtn(e: KeyboardEvent) {
|
|
402
|
+
e.preventDefault();
|
|
403
|
+
if (isSpace(e) || isEnter(e)) {
|
|
404
|
+
this.closeMobileMenu();
|
|
405
|
+
this.mobileBtn?.focus();
|
|
387
406
|
}
|
|
388
407
|
}
|
|
389
408
|
|
|
@@ -425,14 +444,6 @@ class UDExMastheadShell extends UI5Element {
|
|
|
425
444
|
});
|
|
426
445
|
}
|
|
427
446
|
|
|
428
|
-
addActiveMobileClass() {
|
|
429
|
-
this._rootHolder?.classList.add(mobileMenuActiveClass);
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
removeActiveMobileClass() {
|
|
433
|
-
this._rootHolder?.classList.remove(mobileMenuActiveClass);
|
|
434
|
-
}
|
|
435
|
-
|
|
436
447
|
setSelectedItem(e: CustomEvent): void {
|
|
437
448
|
const clickedItem: UDExMastheadItem = e.detail.item;
|
|
438
449
|
if (!clickedItem) {
|
|
@@ -449,11 +460,12 @@ class UDExMastheadShell extends UI5Element {
|
|
|
449
460
|
focusSearchBtn(): void {
|
|
450
461
|
if (this._searchOpener) {
|
|
451
462
|
this._searchOpener.focus();
|
|
463
|
+
this._closeBtnClicked = false;
|
|
452
464
|
}
|
|
453
465
|
}
|
|
454
466
|
|
|
455
467
|
hideSearch(): void {
|
|
456
|
-
this.
|
|
468
|
+
this._isSearchOpened = false;
|
|
457
469
|
this._closeBtnClicked = true;
|
|
458
470
|
}
|
|
459
471
|
|
|
@@ -488,8 +500,8 @@ class UDExMastheadShell extends UI5Element {
|
|
|
488
500
|
style.removeProperty("overflow");
|
|
489
501
|
}
|
|
490
502
|
|
|
491
|
-
|
|
492
|
-
this.
|
|
503
|
+
closeMobileMenu(): void {
|
|
504
|
+
this._isMobileMenuOpen = false;
|
|
493
505
|
this.resetSelectedItems();
|
|
494
506
|
this._mobileMenu?.showFirstLevelMenu();
|
|
495
507
|
|
|
@@ -530,13 +542,29 @@ class UDExMastheadShell extends UI5Element {
|
|
|
530
542
|
return !!this.search.length;
|
|
531
543
|
}
|
|
532
544
|
|
|
545
|
+
get hasExploreSAP(): boolean {
|
|
546
|
+
return !!this.exploreSAP.length;
|
|
547
|
+
}
|
|
548
|
+
|
|
533
549
|
get hasMobileMenuButtons(): boolean {
|
|
534
550
|
return !!this.mobileMenu.length;
|
|
535
551
|
}
|
|
536
552
|
|
|
537
|
-
get
|
|
553
|
+
get isBreakpointSizeM(): boolean {
|
|
538
554
|
return window.innerWidth <= breakpointSizeM;
|
|
539
555
|
}
|
|
556
|
+
|
|
557
|
+
get isMainMenuVisible(): boolean {
|
|
558
|
+
return !this.showSearchByDefault && !this._isSearchOpened;
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
get isRightMenuVisible(): boolean {
|
|
562
|
+
return this.showSearchByDefault || !this._isSearchOpened;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
get isSearchVisible(): boolean {
|
|
566
|
+
return this.showSearchByDefault || this._isSearchOpened;
|
|
567
|
+
}
|
|
540
568
|
}
|
|
541
569
|
|
|
542
570
|
UDExMastheadShell.define();
|
package/src/MessageStrip.ts
CHANGED
|
@@ -133,9 +133,7 @@ class UDExMessageStrip extends MessageStrip {
|
|
|
133
133
|
static i18nBundle: I18nBundle;
|
|
134
134
|
|
|
135
135
|
static async onDefine() {
|
|
136
|
-
UDExMessageStrip.i18nBundle = await getI18nBundle(
|
|
137
|
-
"sap-ui-webcomponents-bundle",
|
|
138
|
-
);
|
|
136
|
+
UDExMessageStrip.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
139
137
|
}
|
|
140
138
|
|
|
141
139
|
getTranslation(text: I18nText): string {
|
package/src/Pagination.ts
CHANGED
|
@@ -245,7 +245,7 @@ class UDExPagination extends UI5Element {
|
|
|
245
245
|
}
|
|
246
246
|
|
|
247
247
|
static async onDefine() {
|
|
248
|
-
UDExPagination.i18nBundle = await getI18nBundle("
|
|
248
|
+
UDExPagination.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
249
249
|
}
|
|
250
250
|
|
|
251
251
|
setActive(element: HTMLElement): void {
|
package/src/PasswordField.ts
CHANGED
|
@@ -194,7 +194,7 @@ class UDExPasswordField extends UI5Element {
|
|
|
194
194
|
static i18nBundle: I18nBundle;
|
|
195
195
|
|
|
196
196
|
static async onDefine() {
|
|
197
|
-
UDExPasswordField.i18nBundle = await getI18nBundle("
|
|
197
|
+
UDExPasswordField.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
handleShowPassword(): void {
|
package/src/PhoneNumberField.ts
CHANGED
|
@@ -290,7 +290,7 @@ class UDExPhoneNumberField extends UI5Element {
|
|
|
290
290
|
_handleResizeBound: ResizeObserverCallback;
|
|
291
291
|
|
|
292
292
|
static async onDefine() {
|
|
293
|
-
UDExPhoneNumberField.i18nBundle = await getI18nBundle("
|
|
293
|
+
UDExPhoneNumberField.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
294
294
|
}
|
|
295
295
|
|
|
296
296
|
get countrySelectorAriaLabel() {
|
package/src/RatingBar.ts
CHANGED
|
@@ -72,7 +72,7 @@ class UDExRatingBar extends UI5Element {
|
|
|
72
72
|
_maxPercentage: number = 100;
|
|
73
73
|
|
|
74
74
|
static async onDefine() {
|
|
75
|
-
UDExRatingBar.i18nBundle = await getI18nBundle("@
|
|
75
|
+
UDExRatingBar.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
onBeforeRendering(): void {
|
package/src/Review.ts
CHANGED
|
@@ -94,7 +94,7 @@ class UDExReview extends UI5Element {
|
|
|
94
94
|
_maxRatingBars: number = 5;
|
|
95
95
|
|
|
96
96
|
static async onDefine() {
|
|
97
|
-
UDExReview.i18nBundle = await getI18nBundle("@
|
|
97
|
+
UDExReview.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
get reviewsText(): string {
|
package/src/ReviewItem.ts
CHANGED
|
@@ -146,7 +146,7 @@ class UDExReviewItem extends UI5Element {
|
|
|
146
146
|
static i18nBundle: I18nBundle;
|
|
147
147
|
|
|
148
148
|
static async onDefine() {
|
|
149
|
-
UDExReviewItem.i18nBundle = await getI18nBundle("@
|
|
149
|
+
UDExReviewItem.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
150
150
|
}
|
|
151
151
|
|
|
152
152
|
constructor() {
|
package/src/Search.ts
CHANGED
|
@@ -504,7 +504,7 @@ class UDExSearch extends UI5Element {
|
|
|
504
504
|
}
|
|
505
505
|
|
|
506
506
|
static async onDefine(): Promise<void> {
|
|
507
|
-
UDExSearch.i18nBundle = await getI18nBundle("udex-
|
|
507
|
+
UDExSearch.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
508
508
|
}
|
|
509
509
|
|
|
510
510
|
onEnterDOM(): void {
|
|
@@ -241,9 +241,7 @@ class UDExSearchableListBase extends UI5Element {
|
|
|
241
241
|
}
|
|
242
242
|
|
|
243
243
|
onResetSearch() {
|
|
244
|
-
|
|
245
|
-
search.value = "";
|
|
246
|
-
this._filteredItems = this.filterItems(this.getProcessedItems(), "");
|
|
244
|
+
this.resetSearch();
|
|
247
245
|
this.fireEvent("reset-search");
|
|
248
246
|
}
|
|
249
247
|
|
|
@@ -253,6 +251,16 @@ class UDExSearchableListBase extends UI5Element {
|
|
|
253
251
|
});
|
|
254
252
|
}
|
|
255
253
|
|
|
254
|
+
/**
|
|
255
|
+
* Reset the search value.
|
|
256
|
+
* @public
|
|
257
|
+
*/
|
|
258
|
+
resetSearch() {
|
|
259
|
+
const search = this.getSearch();
|
|
260
|
+
search.value = "";
|
|
261
|
+
this._filteredItems = this.filterItems(this.getProcessedItems(), "");
|
|
262
|
+
}
|
|
263
|
+
|
|
256
264
|
filterItems(items: Array<ProcessedItem>, str: string): Array<ProcessedItem> {
|
|
257
265
|
return items.filter(preparedItem => {
|
|
258
266
|
const { isGroup, item } = preparedItem;
|
|
@@ -285,7 +293,7 @@ class UDExSearchableListBase extends UI5Element {
|
|
|
285
293
|
return text.replace(new RegExp(`(${str})`, "i"), "<b>$&</b>");
|
|
286
294
|
}
|
|
287
295
|
|
|
288
|
-
isIncludes(string: string, value: string):boolean {
|
|
296
|
+
isIncludes(string: string, value: string): boolean {
|
|
289
297
|
return string.toLowerCase().includes(value.toLowerCase());
|
|
290
298
|
}
|
|
291
299
|
|
|
@@ -407,11 +415,11 @@ class UDExSearchableListBase extends UI5Element {
|
|
|
407
415
|
return this.mode === ListMode.MultiSelect && isGrouping;
|
|
408
416
|
}
|
|
409
417
|
|
|
410
|
-
get additionalClassName() {
|
|
418
|
+
get additionalClassName(): string {
|
|
411
419
|
return `udex-searchable-list__header`;
|
|
412
420
|
}
|
|
413
421
|
|
|
414
|
-
get groupClassName() {
|
|
422
|
+
get groupClassName(): string {
|
|
415
423
|
const classHeader = `udex-searchable-list__header`;
|
|
416
424
|
return this.showSearch ? `${classHeader} udex-searchable-list__header_no-margin` : classHeader;
|
|
417
425
|
}
|
|
@@ -422,7 +430,7 @@ class UDExSearchableListBase extends UI5Element {
|
|
|
422
430
|
}
|
|
423
431
|
|
|
424
432
|
static async onDefine(): Promise<void> {
|
|
425
|
-
UDExSearchableListBase.i18nBundle = await getI18nBundle("
|
|
433
|
+
UDExSearchableListBase.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
426
434
|
}
|
|
427
435
|
}
|
|
428
436
|
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
mobile-link-title="{{this.mobileLinkTitle}}"
|
|
32
32
|
target="{{this.target}}"
|
|
33
33
|
.subItems="{{this.items}}"
|
|
34
|
+
_nav-items-length="{{../visibleItems.length}}"
|
|
34
35
|
@ui5-sub-item-click="{{../handleSubItemClick}}"
|
|
35
36
|
@ui5-nav-item-click="{{../handleItemClick}}">
|
|
36
37
|
</udex-secondary-navigation-item>
|
|
@@ -41,6 +42,7 @@
|
|
|
41
42
|
role="none"
|
|
42
43
|
class="udex-secondary-navigation__list-item">
|
|
43
44
|
<udex-secondary-navigation-item
|
|
45
|
+
_nav-items-length="{{visibleItems.length}}"
|
|
44
46
|
index="{{visibleItems.length}}"
|
|
45
47
|
@ui5-sub-item-click="{{../handleSubItemClick}}"
|
|
46
48
|
@ui5-nav-item-click="{{../handleItemClick}}"
|
|
@@ -156,13 +156,13 @@ class UDExSecondaryNavigation extends UI5Element {
|
|
|
156
156
|
static i18nBundle: any;
|
|
157
157
|
|
|
158
158
|
static async onDefine(): Promise<void> {
|
|
159
|
-
UDExSecondaryNavigation.i18nBundle = await getI18nBundle("udex-
|
|
159
|
+
UDExSecondaryNavigation.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
160
160
|
}
|
|
161
161
|
|
|
162
162
|
constructor() {
|
|
163
163
|
super();
|
|
164
164
|
this._showMoreButton = true;
|
|
165
|
-
this._boundReflowItems = this.
|
|
165
|
+
this._boundReflowItems = this._handleResize.bind(this);
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
onEnterDOM(): void {
|
|
@@ -177,6 +177,13 @@ class UDExSecondaryNavigation extends UI5Element {
|
|
|
177
177
|
ResizeHandler.deregister(this, this._boundReflowItems);
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
+
_handleResize() {
|
|
181
|
+
this.reflowItems();
|
|
182
|
+
if (this._clickedNavItem && this.isDesktopScreen) {
|
|
183
|
+
this._clickedNavItem.closeDropdown();
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
180
187
|
onInvalidation(changeInfo: ChangeInfo): void {
|
|
181
188
|
if (changeInfo.name === "navItems") {
|
|
182
189
|
this.reflowItems();
|
|
@@ -123,6 +123,14 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
|
|
|
123
123
|
@property({ type: Boolean })
|
|
124
124
|
isOpen!: boolean;
|
|
125
125
|
|
|
126
|
+
/**
|
|
127
|
+
* Defines the length of items in the secondary navigation.
|
|
128
|
+
*
|
|
129
|
+
* @private
|
|
130
|
+
*/
|
|
131
|
+
@property({ validator: Integer })
|
|
132
|
+
_navItemsLength!: number;
|
|
133
|
+
|
|
126
134
|
/**
|
|
127
135
|
* Defines processed items.
|
|
128
136
|
*
|
|
@@ -137,6 +145,10 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
|
|
|
137
145
|
_subTitle!: string | undefined;
|
|
138
146
|
|
|
139
147
|
onAfterRendering(): void {
|
|
148
|
+
if (this.isLastItem && this.isOpen && !this._isMobileView) {
|
|
149
|
+
this.setDropdownHorizontalAlign();
|
|
150
|
+
}
|
|
151
|
+
|
|
140
152
|
if (this._shouldFocusFirstSubItem && this.isOpen) {
|
|
141
153
|
this.onFirstSubItemFocus();
|
|
142
154
|
this._shouldFocusFirstSubItem = false;
|
|
@@ -306,6 +318,19 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
|
|
|
306
318
|
this._processedItems = this.subItems;
|
|
307
319
|
}
|
|
308
320
|
|
|
321
|
+
setDropdownHorizontalAlign(): void {
|
|
322
|
+
const dropdown = this.shadowRoot!.querySelector<HTMLElement>(".udex-secondary-navigation__dropdown");
|
|
323
|
+
const { right, left } = dropdown!.getBoundingClientRect();
|
|
324
|
+
|
|
325
|
+
if (right > window.innerWidth) {
|
|
326
|
+
dropdown?.setAttribute("data-horizontal-align", "right");
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
if (left < 0) {
|
|
330
|
+
dropdown?.setAttribute("data-horizontal-align", "left");
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
309
334
|
onFirstSubItemFocus(): void {
|
|
310
335
|
this.domNavItems[0].focus();
|
|
311
336
|
}
|
|
@@ -318,6 +343,10 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
|
|
|
318
343
|
this._shouldFocusFirstSubItem = true;
|
|
319
344
|
}
|
|
320
345
|
|
|
346
|
+
get isLastItem(): boolean {
|
|
347
|
+
return this._navItemsLength === this.index;
|
|
348
|
+
}
|
|
349
|
+
|
|
321
350
|
get domNavItems(): Array<UDExSecondaryNavigationSubItem> {
|
|
322
351
|
const domNavItems = this.shadowRoot?.querySelectorAll<UDExSecondaryNavigationSubItem>("udex-secondary-navigation-sub-item");
|
|
323
352
|
return domNavItems ? Array.from(domNavItems) : [];
|