@sapudex/web-components 0.111.0 → 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/.npmrc +1 -2
- package/bundle.esm.js +4 -0
- package/dist/AccordionItem.d.ts +7 -0
- package/dist/AccordionItem.js +6 -2
- package/dist/AccordionItem.js.map +1 -1
- 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 +6 -7
- package/dist/CountrySelector.js +15 -7
- package/dist/CountrySelector.js.map +1 -1
- package/dist/Dropdown.d.ts +10 -0
- package/dist/Dropdown.js +10 -0
- package/dist/Dropdown.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/Footer.d.ts +40 -1
- package/dist/Footer.js +151 -1
- package/dist/Footer.js.map +1 -1
- package/dist/InputGroup.d.ts +75 -0
- package/dist/InputGroup.js +101 -0
- package/dist/InputGroup.js.map +1 -0
- 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/MastheadMobileMenu.d.ts +4 -1
- package/dist/MastheadMobileMenu.js +10 -3
- package/dist/MastheadMobileMenu.js.map +1 -1
- package/dist/PhoneNumberField.d.ts +8 -0
- package/dist/PhoneNumberField.js +23 -10
- package/dist/PhoneNumberField.js.map +1 -1
- package/dist/Search.d.ts +60 -1
- package/dist/Search.js +191 -19
- package/dist/Search.js.map +1 -1
- package/dist/SecondaryNavigation.d.ts +37 -45
- package/dist/SecondaryNavigation.js +148 -153
- 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 +7 -0
- package/dist/SelectBox.js +27 -2
- 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/Table.d.ts +5 -5
- package/dist/Table.js +5 -5
- package/dist/Table.js.map +1 -1
- package/dist/Tag.d.ts +7 -1
- package/dist/Tag.js +6 -2
- package/dist/Tag.js.map +1 -1
- package/dist/TextArea.js.map +1 -1
- package/dist/assets/{bundle.esm-b7920968.js → bundle.esm-f65ae7da.js} +189 -184
- package/dist/assets/messagebundle_en-7249941b.js +1 -0
- package/dist/css/themes/AccordionItem.css +1 -1
- package/dist/css/themes/Avatar.css +1 -1
- package/dist/css/themes/Breadcrumbs.css +1 -1
- package/dist/css/themes/Checkbox.css +1 -1
- package/dist/css/themes/CountrySelector.css +1 -1
- package/dist/css/themes/DatePicker.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/InputGroup.css +1 -0
- package/dist/css/themes/MastheadItem.css +1 -1
- package/dist/css/themes/MastheadMenuItem.css +1 -1
- package/dist/css/themes/MastheadShell.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/SearchSuggestions.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/css/themes/Tag.css +1 -1
- package/dist/css/themes/TextField.css +1 -1
- package/dist/custom-elements-internal.json +1070 -116
- package/dist/custom-elements.json +1047 -169
- package/dist/features/SearchSuggestionsPopover.d.ts +3 -3
- package/dist/features/SearchSuggestionsPopover.js +16 -18
- package/dist/features/SearchSuggestionsPopover.js.map +1 -1
- 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/AccordionItemTemplate.lit.js +2 -1
- package/dist/generated/templates/AccordionItemTemplate.lit.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/FooterTemplate.lit.js +15 -15
- package/dist/generated/templates/FooterTemplate.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/InputGroupTemplate.lit.d.ts +4 -0
- package/dist/generated/templates/InputGroupTemplate.lit.js +7 -0
- package/dist/generated/templates/InputGroupTemplate.lit.js.map +1 -0
- 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/MastheadMobileMenuTemplate.lit.js +15 -10
- package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +1 -1
- package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SearchSuggestionsTemplate.lit.js +11 -10
- package/dist/generated/templates/SearchSuggestionsTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SearchTemplate.lit.js +11 -10
- 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 -9
- 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/AccordionItem.css.js +1 -1
- package/dist/generated/themes/AccordionItem.css.js.map +1 -1
- package/dist/generated/themes/Avatar.css.js +1 -1
- package/dist/generated/themes/Avatar.css.js.map +1 -1
- package/dist/generated/themes/Breadcrumbs.css.js +1 -1
- package/dist/generated/themes/Breadcrumbs.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/DatePicker.css.js +1 -1
- package/dist/generated/themes/DatePicker.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/InputGroup.css.d.ts +3 -0
- package/dist/generated/themes/InputGroup.css.js +9 -0
- package/dist/generated/themes/InputGroup.css.js.map +1 -0
- package/dist/generated/themes/MastheadItem.css.js +1 -1
- package/dist/generated/themes/MastheadItem.css.js.map +1 -1
- package/dist/generated/themes/MastheadMenuItem.css.js +1 -1
- package/dist/generated/themes/MastheadMenuItem.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/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/SearchSuggestions.css.js +1 -1
- package/dist/generated/themes/SearchSuggestions.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/generated/themes/Tag.css.js +1 -1
- package/dist/generated/themes/Tag.css.js.map +1 -1
- package/dist/generated/themes/TextField.css.js +1 -1
- package/dist/generated/themes/TextField.css.js.map +1 -1
- package/dist/i18n/messagebundle.properties +12 -1
- package/dist/i18n/messagebundle_en.properties +8 -1
- package/dist/types/callback.d.ts +2 -0
- package/dist/types/callback.js +2 -0
- package/dist/types/callback.js.map +1 -0
- package/dist/utils/debounce.d.ts +2 -2
- package/dist/utils/debounce.js.map +1 -1
- package/dist/utils/retryUntilSuccessful.d.ts +3 -0
- package/dist/utils/retryUntilSuccessful.js +21 -0
- package/dist/utils/retryUntilSuccessful.js.map +1 -0
- package/dist/vscode.html-custom-data.json +178 -14
- package/dist/web-types.json +406 -32
- package/package.json +1 -1
- package/src/AccordionItem.hbs +12 -1
- package/src/AccordionItem.ts +11 -2
- package/src/Avatar.ts +12 -3
- package/src/CountrySelector.hbs +3 -3
- package/src/CountrySelector.ts +22 -21
- package/src/Dropdown.hbs +0 -1
- package/src/Dropdown.ts +10 -0
- package/src/FilterMenu.hbs +5 -1
- package/src/FilterMenu.ts +60 -10
- package/src/Footer.hbs +154 -91
- package/src/Footer.ts +158 -1
- package/src/HeroBanner.hbs +24 -21
- package/src/InputGroup.hbs +20 -0
- package/src/InputGroup.ts +137 -0
- 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/MastheadMobileMenu.hbs +51 -28
- package/src/MastheadMobileMenu.ts +12 -3
- package/src/MastheadProfileMenu.hbs +1 -1
- package/src/PhoneNumberField.ts +27 -3
- package/src/Search.hbs +26 -3
- package/src/Search.ts +236 -21
- package/src/SearchSuggestions.hbs +47 -49
- package/src/SearchableListBase.hbs +2 -0
- package/src/SecondaryNavigation.hbs +52 -72
- package/src/SecondaryNavigation.ts +182 -186
- 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 +38 -1
- package/src/StatusBadge.hbs +9 -0
- package/src/StatusBadge.ts +129 -0
- package/src/Tab.ts +1 -1
- package/src/Table.ts +7 -7
- package/src/Tag.ts +12 -3
- package/src/TextArea.ts +1 -1
- package/src/features/SearchSuggestionsPopover.ts +18 -20
- package/src/generated/i18n/i18n-defaults.ts +2 -2
- package/src/generated/templates/AccordionItemTemplate.lit.ts +2 -1
- 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/FooterTemplate.lit.ts +15 -15
- package/src/generated/templates/HeroBannerTemplate.lit.ts +2 -2
- package/src/generated/templates/InputGroupTemplate.lit.ts +12 -0
- 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/MastheadMobileMenuTemplate.lit.ts +15 -10
- package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +1 -1
- package/src/generated/templates/SearchSuggestionsTemplate.lit.ts +11 -10
- package/src/generated/templates/SearchTemplate.lit.ts +10 -9
- 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 -9
- package/src/generated/templates/SelectBoxTemplate.lit.ts +1 -1
- package/src/generated/templates/StatusBadgeTemplate.lit.ts +10 -0
- package/src/generated/themes/AccordionItem.css.ts +1 -1
- package/src/generated/themes/Avatar.css.ts +1 -1
- package/src/generated/themes/Breadcrumbs.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/DatePicker.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/InputGroup.css.ts +13 -0
- package/src/generated/themes/MastheadItem.css.ts +1 -1
- package/src/generated/themes/MastheadMenuItem.css.ts +1 -1
- package/src/generated/themes/MastheadShell.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/SearchSuggestions.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/generated/themes/Tag.css.ts +1 -1
- package/src/generated/themes/TextField.css.ts +1 -1
- package/src/i18n/messagebundle.properties +12 -1
- package/src/i18n/messagebundle_en.properties +8 -1
- package/src/themes/AccordionItem.css +20 -15
- package/src/themes/Avatar.css +20 -0
- package/src/themes/Breadcrumbs.css +4 -2
- package/src/themes/Checkbox.css +12 -0
- package/src/themes/CountrySelector.css +16 -1
- package/src/themes/DatePicker.css +1 -1
- package/src/themes/Dropdown.css +3 -1
- package/src/themes/FilterMenu.css +10 -0
- package/src/themes/HeroBanner.css +42 -6
- package/src/themes/InputGroup.css +19 -0
- package/src/themes/MastheadItem.css +2 -7
- package/src/themes/MastheadMenuItem.css +0 -4
- package/src/themes/MastheadShell.css +9 -10
- package/src/themes/MediaPlayer.css +3 -2
- package/src/themes/PhoneNumberField.css +17 -3
- package/src/themes/Search.css +168 -21
- package/src/themes/SearchSuggestions.css +7 -1
- 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/src/themes/Tag.css +6 -1
- package/src/themes/TextField.css +10 -1
- package/src/types/callback.ts +3 -0
- package/src/utils/debounce.ts +1 -1
- package/src/utils/retryUntilSuccessful.ts +23 -0
- package/dist/assets/messagebundle_en-26cd7a92.js +0 -1
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
2
|
+
import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
|
|
3
|
+
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
4
|
+
import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
|
|
5
|
+
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
|
|
6
|
+
|
|
7
|
+
import Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
8
|
+
import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
9
|
+
import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
10
|
+
import UDExCheckbox from "./Checkbox.js";
|
|
11
|
+
import UDExRadioButton from "./RadioButton.js";
|
|
12
|
+
import UDExStatusMessage from "./StatusMessage.js";
|
|
13
|
+
import InputGroupTemplate from "./generated/templates/InputGroupTemplate.lit.js";
|
|
14
|
+
import {
|
|
15
|
+
VALUE_STATE_ERROR,
|
|
16
|
+
VALUE_STATE_SUCCESS,
|
|
17
|
+
} from "./generated/i18n/i18n-defaults.js";
|
|
18
|
+
|
|
19
|
+
// Styles
|
|
20
|
+
import InputGroupCss from "./generated/themes/InputGroup.css.js";
|
|
21
|
+
|
|
22
|
+
export enum GroupValueState {
|
|
23
|
+
Standard = "Standard",
|
|
24
|
+
Error = "Error",
|
|
25
|
+
Success = "Success",
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export enum Orientation {
|
|
29
|
+
Vertical = "Vertical",
|
|
30
|
+
Horizontal = "Horizontal",
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @class
|
|
35
|
+
*
|
|
36
|
+
* <h3 class="comment-api-title">Overview</h3>
|
|
37
|
+
*
|
|
38
|
+
*
|
|
39
|
+
* <h3>Usage</h3>
|
|
40
|
+
*
|
|
41
|
+
* For the <code>udex-input-group</code>
|
|
42
|
+
* <h3>ES6 Module Import</h3>
|
|
43
|
+
*
|
|
44
|
+
* <code>import "@udex/web-components/dist/InputGroup.js";</code>
|
|
45
|
+
*
|
|
46
|
+
* @constructor
|
|
47
|
+
* @extends UI5Element
|
|
48
|
+
* @public
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
@customElement({
|
|
52
|
+
tag: "udex-input-group",
|
|
53
|
+
renderer: litRender,
|
|
54
|
+
styles: InputGroupCss,
|
|
55
|
+
template: InputGroupTemplate,
|
|
56
|
+
dependencies: [Icon, UDExStatusMessage],
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
class UDExInputGroup extends UI5Element {
|
|
60
|
+
/**
|
|
61
|
+
* Defines the group name of the component.
|
|
62
|
+
*
|
|
63
|
+
* @public
|
|
64
|
+
*/
|
|
65
|
+
@property({ type: String })
|
|
66
|
+
groupName?: string;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Defines the orientation of the component.
|
|
70
|
+
*
|
|
71
|
+
* @default "Vertical"
|
|
72
|
+
* @public
|
|
73
|
+
*/
|
|
74
|
+
@property({ type: Orientation, defaultValue: Orientation.Vertical })
|
|
75
|
+
orientation!: `${Orientation}`;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Defines the value state of the component.
|
|
79
|
+
*
|
|
80
|
+
* @default "Standard"
|
|
81
|
+
* @public
|
|
82
|
+
*/
|
|
83
|
+
@property({ type: GroupValueState, defaultValue: GroupValueState.Standard })
|
|
84
|
+
valueState!: `${GroupValueState}`;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Defines supporting text under the Input Group.
|
|
88
|
+
*
|
|
89
|
+
* @default ""
|
|
90
|
+
* @public
|
|
91
|
+
*/
|
|
92
|
+
@property({ type: String })
|
|
93
|
+
supportingText!: string;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Slot for input elements items.
|
|
97
|
+
*
|
|
98
|
+
* @slot
|
|
99
|
+
* @public
|
|
100
|
+
*/
|
|
101
|
+
@slot({ type: HTMLElement, "default": true, individualSlots: true })
|
|
102
|
+
items!: Array<UDExCheckbox | UDExRadioButton>;
|
|
103
|
+
|
|
104
|
+
static i18nBundle: I18nBundle;
|
|
105
|
+
|
|
106
|
+
static async onDefine() {
|
|
107
|
+
UDExInputGroup.i18nBundle = await getI18nBundle("sap-ui-webcomponents-bundle");
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
get _items() {
|
|
111
|
+
return this.items.map(el => {
|
|
112
|
+
if (this.groupName) { el.name = this.groupName; }
|
|
113
|
+
return {
|
|
114
|
+
item: el,
|
|
115
|
+
};
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
get valueStateTypeMappings(): Record<string, string> {
|
|
120
|
+
return {
|
|
121
|
+
"Success": UDExInputGroup.i18nBundle.getText(VALUE_STATE_SUCCESS),
|
|
122
|
+
"Error": UDExInputGroup.i18nBundle.getText(VALUE_STATE_ERROR),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
get hasValueState(): boolean {
|
|
127
|
+
return this.valueState !== GroupValueState.Standard;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
get valueStateText(): string | undefined {
|
|
131
|
+
return this.supportingText || this.valueStateTypeMappings[this.valueState];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
UDExInputGroup.define();
|
|
136
|
+
|
|
137
|
+
export default UDExInputGroup;
|
package/src/List.ts
CHANGED
|
@@ -9,6 +9,8 @@ import {
|
|
|
9
9
|
isDown,
|
|
10
10
|
isHome,
|
|
11
11
|
isEnd,
|
|
12
|
+
isEnter,
|
|
13
|
+
isSpace,
|
|
12
14
|
} from "@ui5/webcomponents-base/dist/Keys.js";
|
|
13
15
|
import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
14
16
|
import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
@@ -154,25 +156,7 @@ class UDExList extends UI5Element {
|
|
|
154
156
|
|
|
155
157
|
handleItemPress(e: CustomEvent) {
|
|
156
158
|
const clickedItem: UDExListItemBase = e.detail.item;
|
|
157
|
-
|
|
158
|
-
if (this.modeSingleSelect && !this.controlled) {
|
|
159
|
-
this.revertSelectedItems(this.getSelectedItems());
|
|
160
|
-
clickedItem.selected = true;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
if (this.modeRadioGroup && !this.controlled) {
|
|
164
|
-
const groupHeader = clickedItem.parentElement as UDExListGroupHeaderBase;
|
|
165
|
-
const groupItems = groupHeader.getItems() as Array<UDExListItemBase>;
|
|
166
|
-
this.revertSelectedItems(groupItems);
|
|
167
|
-
|
|
168
|
-
clickedItem.selected = true;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
this.fireEvent("selection-change", {
|
|
172
|
-
listItems: this.getItemsFromList(),
|
|
173
|
-
selectedItems: this.getSelectedItems(),
|
|
174
|
-
item: clickedItem,
|
|
175
|
-
});
|
|
159
|
+
this.onItemPress(clickedItem);
|
|
176
160
|
}
|
|
177
161
|
|
|
178
162
|
handleKeyDown(e: KeyboardEvent) {
|
|
@@ -180,6 +164,15 @@ class UDExList extends UI5Element {
|
|
|
180
164
|
this.handleDownArrow(e);
|
|
181
165
|
this.handleHomeKey(e);
|
|
182
166
|
this.handleEndKey(e);
|
|
167
|
+
this.handleEnterOrSpace(e);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
handleEnterOrSpace(e: KeyboardEvent) {
|
|
171
|
+
if (isEnter(e) || isSpace(e)) {
|
|
172
|
+
e.preventDefault();
|
|
173
|
+
const clickedItem = e.target as UDExListItemBase;
|
|
174
|
+
this.onItemPress(clickedItem);
|
|
175
|
+
}
|
|
183
176
|
}
|
|
184
177
|
|
|
185
178
|
handleUpArrow(e: KeyboardEvent) {
|
|
@@ -193,20 +186,28 @@ class UDExList extends UI5Element {
|
|
|
193
186
|
const nonInteractiveHeader = items[previousSelectIndex].nonInteractive;
|
|
194
187
|
|
|
195
188
|
if (nonInteractiveHeader && previousSelectIndex === 0) {
|
|
189
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
190
|
+
this.setTabIndexByIndex(items, lastItemIndex);
|
|
196
191
|
items[lastItemIndex].focus();
|
|
197
192
|
return;
|
|
198
193
|
}
|
|
199
194
|
|
|
200
195
|
if (nonInteractiveHeader) {
|
|
196
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
197
|
+
this.setTabIndexByIndex(items, previousSelectIndex - 1);
|
|
201
198
|
items[previousSelectIndex - 1].focus();
|
|
202
199
|
return;
|
|
203
200
|
}
|
|
204
201
|
|
|
205
202
|
if (isHeaderItem) {
|
|
203
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
204
|
+
this.setTabIndexByIndex(items, previousSelectIndex);
|
|
206
205
|
this.focusHeader(items[previousSelectIndex]);
|
|
207
206
|
return;
|
|
208
207
|
}
|
|
209
208
|
|
|
209
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
210
|
+
this.setTabIndexByIndex(items, previousSelectIndex);
|
|
210
211
|
items[previousSelectIndex].focus();
|
|
211
212
|
}
|
|
212
213
|
}
|
|
@@ -221,15 +222,21 @@ class UDExList extends UI5Element {
|
|
|
221
222
|
const nonInteractiveHeader = items[nextSelectIndex].nonInteractive;
|
|
222
223
|
|
|
223
224
|
if (nonInteractiveHeader) {
|
|
225
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
226
|
+
this.setTabIndexByIndex(items, nextSelectIndex + 1);
|
|
224
227
|
items[nextSelectIndex + 1].focus();
|
|
225
228
|
return;
|
|
226
229
|
}
|
|
227
230
|
|
|
228
231
|
if (isHeaderItem) {
|
|
232
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
233
|
+
this.setTabIndexByIndex(items, nextSelectIndex);
|
|
229
234
|
this.focusHeader(items[nextSelectIndex]);
|
|
230
235
|
return;
|
|
231
236
|
}
|
|
232
237
|
|
|
238
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
239
|
+
this.setTabIndexByIndex(items, nextSelectIndex);
|
|
233
240
|
items[nextSelectIndex].focus();
|
|
234
241
|
}
|
|
235
242
|
}
|
|
@@ -238,20 +245,27 @@ class UDExList extends UI5Element {
|
|
|
238
245
|
if (isHome(e)) {
|
|
239
246
|
e.preventDefault();
|
|
240
247
|
const items = this.getKeyboardNavigationItems();
|
|
248
|
+
const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);
|
|
241
249
|
const firstItem = items[0];
|
|
242
250
|
const isHeaderItem = firstItem.isGroup;
|
|
243
251
|
const nonInteractiveItem = firstItem.nonInteractive;
|
|
244
252
|
|
|
245
253
|
if (nonInteractiveItem) {
|
|
254
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
255
|
+
this.setTabIndexByIndex(items, 1);
|
|
246
256
|
items[1].focus();
|
|
247
257
|
return;
|
|
248
258
|
}
|
|
249
259
|
|
|
250
260
|
if (isHeaderItem) {
|
|
261
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
262
|
+
this.setTabIndexByIndex(items, 0);
|
|
251
263
|
this.focusHeader(items[0]);
|
|
252
264
|
return;
|
|
253
265
|
}
|
|
254
266
|
|
|
267
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
268
|
+
this.setTabIndexByIndex(items, 0);
|
|
255
269
|
items[0].focus();
|
|
256
270
|
}
|
|
257
271
|
}
|
|
@@ -260,10 +274,37 @@ class UDExList extends UI5Element {
|
|
|
260
274
|
if (isEnd(e)) {
|
|
261
275
|
e.preventDefault();
|
|
262
276
|
const items = this.getKeyboardNavigationItems();
|
|
277
|
+
const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);
|
|
278
|
+
|
|
279
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
280
|
+
this.setTabIndexByIndex(items, items.length - 1);
|
|
263
281
|
items[items.length - 1].focus();
|
|
264
282
|
}
|
|
265
283
|
}
|
|
266
284
|
|
|
285
|
+
onItemPress(clickedItem :UDExListItemBase) {
|
|
286
|
+
if (this.modeSingleSelect && !this.controlled) {
|
|
287
|
+
this.revertSelectedItems(this.getSelectedItems());
|
|
288
|
+
clickedItem.selected = true;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
if (this.modeRadioGroup && !this.controlled) {
|
|
292
|
+
const groupHeader = clickedItem.parentElement as UDExListGroupHeaderBase;
|
|
293
|
+
const groupItems = groupHeader.getItems() as Array<UDExListItemBase>;
|
|
294
|
+
this.revertSelectedItems(groupItems);
|
|
295
|
+
clickedItem.selected = true;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
this.resetTabIndexes();
|
|
299
|
+
clickedItem._tabIndex = "0";
|
|
300
|
+
|
|
301
|
+
this.fireEvent("selection-change", {
|
|
302
|
+
listItems: this.getItemsFromList(),
|
|
303
|
+
selectedItems: this.getSelectedItems(),
|
|
304
|
+
item: clickedItem,
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
|
|
267
308
|
revertSelectedItems(items: Array<UDExListItemBase>) {
|
|
268
309
|
items.forEach((item: UDExListItemBase) => {
|
|
269
310
|
if (!item.disabled) {
|
|
@@ -277,6 +318,14 @@ class UDExList extends UI5Element {
|
|
|
277
318
|
header.focus();
|
|
278
319
|
}
|
|
279
320
|
|
|
321
|
+
unsetTabIndexByIndex(items: UDExListItemBase[], index: number) {
|
|
322
|
+
items[index]._tabIndex = "-1";
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
setTabIndexByIndex(items: UDExListItemBase[], index: number) {
|
|
326
|
+
items[index]._tabIndex = "0";
|
|
327
|
+
}
|
|
328
|
+
|
|
280
329
|
getItems(): Array<UDExListItemBase> {
|
|
281
330
|
return this.getSlottedNodes<UDExListItemBase>("items");
|
|
282
331
|
}
|
|
@@ -311,15 +360,37 @@ class UDExList extends UI5Element {
|
|
|
311
360
|
}
|
|
312
361
|
|
|
313
362
|
prepareListItemsMode() {
|
|
314
|
-
|
|
315
|
-
slottedItems.forEach(item => {
|
|
363
|
+
this.getItemsFromList().forEach((item, index) => {
|
|
316
364
|
item.mode = this.mode;
|
|
317
365
|
item.controlled = this.controlled;
|
|
318
366
|
item.type = this.type;
|
|
319
367
|
item._icon = this.itemIcon;
|
|
368
|
+
item._tabIndex = this.getTabIndex(index, item);
|
|
320
369
|
});
|
|
321
370
|
}
|
|
322
371
|
|
|
372
|
+
getTabIndex(index: number, item: UDExListItemBase): string {
|
|
373
|
+
if ((item.modeSingleSelect || this.modeRadioGroup) && this.isGroupList && index === 1) {
|
|
374
|
+
return "0";
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
if (this.modeSelected && index === 0) {
|
|
378
|
+
return "0";
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
return "-1";
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
resetTabIndexes() {
|
|
385
|
+
this.getItemsFromList().forEach(item => {
|
|
386
|
+
item._tabIndex = "-1";
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
get isGroupList(): boolean {
|
|
391
|
+
return this.getItemsFromList().some(item => item.isGroup);
|
|
392
|
+
}
|
|
393
|
+
|
|
323
394
|
get ariaLabelModeText(): string {
|
|
324
395
|
if (this.modeSingleSelect || this.modeRadioGroup) {
|
|
325
396
|
return UDExList.i18nBundle.getText(ARIA_LABEL_LIST_SELECTABLE);
|
package/src/ListGroupHeader.hbs
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
<li
|
|
2
2
|
part="item"
|
|
3
|
-
class="udex-list__group"
|
|
3
|
+
class="udex-list__group"
|
|
4
|
+
role="group"
|
|
5
|
+
aria-labelledby="group-heading">
|
|
4
6
|
<ul
|
|
5
7
|
class="udex-list__group-list"
|
|
6
8
|
@ui5-item-press="{{getHandleGroupItemsClick}}">
|
|
@@ -15,7 +17,7 @@
|
|
|
15
17
|
|
|
16
18
|
{{#*inline "multi-or-radio-group-header"}}
|
|
17
19
|
{{#if isNonActiveHeader}}
|
|
18
|
-
<header class="udex-list__inactive-header"
|
|
20
|
+
<header id="group-heading" class="udex-list__inactive-header">
|
|
19
21
|
<span class="udex-list__header-title">{{label}}</span>
|
|
20
22
|
{{#if supportingText}}
|
|
21
23
|
<span class="udex-list__supporting-text ">{{supportingText}}</span>
|
|
@@ -23,11 +25,13 @@
|
|
|
23
25
|
</header>
|
|
24
26
|
{{else}}
|
|
25
27
|
<udex-list-item
|
|
28
|
+
id="group-heading"
|
|
26
29
|
_additional-class-name="{{_additionalClassName}}"
|
|
27
30
|
?selected="{{selected}}"
|
|
31
|
+
_tab-index="{{_effectiveTabIndex}}"
|
|
28
32
|
?indeterminate="{{indeterminate}}"
|
|
29
33
|
part="group-item"
|
|
30
|
-
role="
|
|
34
|
+
role="none"
|
|
31
35
|
class="{{className}}"
|
|
32
36
|
mode="{{mode}}"
|
|
33
37
|
?controlled="{{controlled}}"
|
|
@@ -55,8 +59,8 @@
|
|
|
55
59
|
part="icon">
|
|
56
60
|
</ui5-icon>
|
|
57
61
|
{{/if}}
|
|
58
|
-
<div class="udex-list__header"
|
|
59
|
-
<span class="udex-list__header-title">{{label}}</span>
|
|
62
|
+
<div class="udex-list__header">
|
|
63
|
+
<span id="group-heading" class="udex-list__header-title">{{label}}</span>
|
|
60
64
|
{{#if supportingText}}
|
|
61
65
|
<span class="udex-list__supporting-text {{sizeClass}}">{{supportingText}}</span>
|
|
62
66
|
{{/if}}
|
package/src/ListItem.hbs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<li
|
|
3
3
|
part="item"
|
|
4
4
|
role="{{roleItem}}"
|
|
5
|
-
tabindex="{{
|
|
5
|
+
tabindex="{{_effectiveTabIndex}}"
|
|
6
6
|
aria-disabled="{{_ariaDisabled}}"
|
|
7
7
|
aria-labelledby="{{_accessibleNameRef}}"
|
|
8
8
|
class="{{className}}"
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
@focusin="{{handleFocusIn}}"
|
|
15
15
|
@focusout="{{handleFocusOut}}"
|
|
16
16
|
aria-selected="{{selected}}"
|
|
17
|
+
aria-current="{{selected}}"
|
|
17
18
|
?divider="{{divider}}"
|
|
18
19
|
_id="{{this._id}}">
|
|
19
20
|
{{#if modeMultiSelect}}
|
package/src/ListItem.ts
CHANGED
|
@@ -371,13 +371,6 @@ class UDExListItem extends UDExListItemBase {
|
|
|
371
371
|
return this.disabled ? true : undefined;
|
|
372
372
|
}
|
|
373
373
|
|
|
374
|
-
get _tabIndex() {
|
|
375
|
-
if (this.disabled) {
|
|
376
|
-
return -1;
|
|
377
|
-
}
|
|
378
|
-
return 0;
|
|
379
|
-
}
|
|
380
|
-
|
|
381
374
|
get modeSingleContent() {
|
|
382
375
|
return this.mode === ListMode.SingleContent;
|
|
383
376
|
}
|
package/src/ListItemBase.ts
CHANGED
|
@@ -111,6 +111,16 @@ class UDExListItemBase extends UI5Element {
|
|
|
111
111
|
@property({ type: String, defaultValue: "" })
|
|
112
112
|
_icon?: string;
|
|
113
113
|
|
|
114
|
+
@property({ type: String })
|
|
115
|
+
_tabIndex!: number | string;
|
|
116
|
+
|
|
117
|
+
get _effectiveTabIndex() {
|
|
118
|
+
if (this.disabled) {
|
|
119
|
+
return -1;
|
|
120
|
+
}
|
|
121
|
+
return this._tabIndex;
|
|
122
|
+
}
|
|
123
|
+
|
|
114
124
|
get numberOfItem() {
|
|
115
125
|
return [...this.parentNode!.children].indexOf(this) + 1;
|
|
116
126
|
}
|
|
@@ -127,6 +137,10 @@ class UDExListItemBase extends UI5Element {
|
|
|
127
137
|
return this.mode === ListMode.MultiSelect;
|
|
128
138
|
}
|
|
129
139
|
|
|
140
|
+
get modeSingleSelect() {
|
|
141
|
+
return this.mode === ListMode.SingleSelect;
|
|
142
|
+
}
|
|
143
|
+
|
|
130
144
|
get modeMultiSelectOrRadioGroup() {
|
|
131
145
|
return this.modeMultiSelect || this.modeRadioGroup;
|
|
132
146
|
}
|
package/src/ListSelectAll.hbs
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
<nav class="udex-masthead-mobile-menu" @keydown="{{handleKeyDown}}">
|
|
2
2
|
<div class="udex-masthead-mobile-menu__nav-holder">
|
|
3
|
-
|
|
4
|
-
<
|
|
5
|
-
|
|
3
|
+
{{#if hasSearchSlot}}
|
|
4
|
+
<div class="udex-masthead-mobile-menu__list-search">
|
|
5
|
+
<slot name="search"></slot>
|
|
6
|
+
</div>
|
|
7
|
+
{{/if}}
|
|
6
8
|
<ul class="udex-masthead-mobile-menu__list" role="menu">
|
|
7
9
|
{{#if showNavigation}}
|
|
8
10
|
{{>nav-items}}
|
|
@@ -33,15 +35,6 @@
|
|
|
33
35
|
back-to-categories>
|
|
34
36
|
</udex-masthead-menu-item>
|
|
35
37
|
</li>
|
|
36
|
-
{{#if _category.url}}
|
|
37
|
-
<li class="udex-masthead-mobile-menu__list-item" role="menuitem">
|
|
38
|
-
<udex-masthead-menu-item
|
|
39
|
-
url="{{this._category.url}}"
|
|
40
|
-
label="{{categoryLinkText}}"
|
|
41
|
-
has-border>
|
|
42
|
-
</udex-masthead-menu-item>
|
|
43
|
-
</li>
|
|
44
|
-
{{/if}}
|
|
45
38
|
{{>category-items}}
|
|
46
39
|
{{/if}}
|
|
47
40
|
</ul>
|
|
@@ -64,13 +57,7 @@
|
|
|
64
57
|
{{#*inline "nav-items"}}
|
|
65
58
|
{{#each items}}
|
|
66
59
|
<li class="udex-masthead-mobile-menu__list-item" role="menuitem">
|
|
67
|
-
{{#if this.
|
|
68
|
-
<udex-masthead-menu-item
|
|
69
|
-
url="{{this.href}}"
|
|
70
|
-
label="{{this.innerText}}"
|
|
71
|
-
has-border>
|
|
72
|
-
</udex-masthead-menu-item>
|
|
73
|
-
{{else}}
|
|
60
|
+
{{#if this.subItems}}
|
|
74
61
|
<udex-masthead-menu-item
|
|
75
62
|
@click="{{../handleMenuItemClick}}"
|
|
76
63
|
label="{{this.innerText}}"
|
|
@@ -80,29 +67,65 @@
|
|
|
80
67
|
icon-end
|
|
81
68
|
first-level>
|
|
82
69
|
</udex-masthead-menu-item>
|
|
70
|
+
{{else}}
|
|
71
|
+
<udex-masthead-menu-item
|
|
72
|
+
url="{{this.href}}"
|
|
73
|
+
label="{{this.innerText}}"
|
|
74
|
+
has-border>
|
|
75
|
+
</udex-masthead-menu-item>
|
|
83
76
|
{{/if}}
|
|
84
77
|
</li>
|
|
85
78
|
{{/each}}
|
|
86
79
|
{{/inline}}
|
|
87
80
|
|
|
88
81
|
{{#*inline "categories"}}
|
|
89
|
-
{{#
|
|
82
|
+
{{#if _clickedItem.href}}
|
|
90
83
|
<li class="udex-masthead-mobile-menu__list-item" role="menuitem">
|
|
91
84
|
<udex-masthead-menu-item
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
label="{{this.category}}"
|
|
96
|
-
type="Button"
|
|
97
|
-
second-level
|
|
98
|
-
has-border
|
|
99
|
-
icon-end>
|
|
85
|
+
url="{{_clickedItem.href}}"
|
|
86
|
+
label="{{overviewLinkText}}"
|
|
87
|
+
has-border>
|
|
100
88
|
</udex-masthead-menu-item>
|
|
101
89
|
</li>
|
|
90
|
+
{{/if}}
|
|
91
|
+
{{#each _categories}}
|
|
92
|
+
{{#if this.category}}
|
|
93
|
+
<li class="udex-masthead-mobile-menu__list-item" role="menuitem">
|
|
94
|
+
<udex-masthead-menu-item
|
|
95
|
+
@click="{{../handleMenuCategoryClick}}"
|
|
96
|
+
url="{{this.url}}"
|
|
97
|
+
id="{{@index}}"
|
|
98
|
+
label="{{this.category}}"
|
|
99
|
+
type="Button"
|
|
100
|
+
second-level
|
|
101
|
+
has-border
|
|
102
|
+
icon-end>
|
|
103
|
+
</udex-masthead-menu-item>
|
|
104
|
+
</li>
|
|
105
|
+
{{else}}
|
|
106
|
+
{{#each this.items}}
|
|
107
|
+
<li class="udex-masthead-mobile-menu__list-item" role="menuitem">
|
|
108
|
+
<udex-masthead-menu-item
|
|
109
|
+
url="{{this.url}}"
|
|
110
|
+
label="{{this.title}}"
|
|
111
|
+
has-border>
|
|
112
|
+
</udex-masthead-menu-item>
|
|
113
|
+
</li>
|
|
114
|
+
{{/each}}
|
|
115
|
+
{{/if}}
|
|
102
116
|
{{/each}}
|
|
103
117
|
{{/inline}}
|
|
104
118
|
|
|
105
119
|
{{#*inline "category-items"}}
|
|
120
|
+
{{#if _category.url}}
|
|
121
|
+
<li class="udex-masthead-mobile-menu__list-item" role="menuitem">
|
|
122
|
+
<udex-masthead-menu-item
|
|
123
|
+
url="{{this._category.url}}"
|
|
124
|
+
label="{{overviewLinkText}}"
|
|
125
|
+
has-border>
|
|
126
|
+
</udex-masthead-menu-item>
|
|
127
|
+
</li>
|
|
128
|
+
{{/if}}
|
|
106
129
|
{{#each _category.items}}
|
|
107
130
|
<li class="udex-masthead-mobile-menu__list-item" role="menuitem">
|
|
108
131
|
<udex-masthead-menu-item
|
|
@@ -230,13 +230,13 @@ class UDExMastheadMobileMenu extends UI5Element {
|
|
|
230
230
|
const item = this.getItemByList(e.target as UDExMastheadItem);
|
|
231
231
|
this._clickedItem = item;
|
|
232
232
|
this._categories = this.getCategories(item.getSubItems());
|
|
233
|
+
this.setCategoryByItem(item);
|
|
233
234
|
this._showCategories = true;
|
|
234
235
|
}
|
|
235
236
|
|
|
236
237
|
openCategoryItems(e: Event) {
|
|
237
238
|
const item = e.target as UDExMastheadMenuItem;
|
|
238
|
-
|
|
239
|
-
this._category = this._categories[index];
|
|
239
|
+
this.setCategoryByItem(item);
|
|
240
240
|
this._showCategories = false;
|
|
241
241
|
this._showCategoryItems = true;
|
|
242
242
|
}
|
|
@@ -252,6 +252,11 @@ class UDExMastheadMobileMenu extends UI5Element {
|
|
|
252
252
|
this._showCategoryItems = false;
|
|
253
253
|
}
|
|
254
254
|
|
|
255
|
+
setCategoryByItem(item: UDExMastheadMenuItem | UDExMastheadItem) {
|
|
256
|
+
const index = Number(item.getAttribute("id"));
|
|
257
|
+
this._category = this._categories[index];
|
|
258
|
+
}
|
|
259
|
+
|
|
255
260
|
getItemByList(el: UDExMastheadItem): UDExMastheadItem {
|
|
256
261
|
const items = [
|
|
257
262
|
...this.items,
|
|
@@ -291,7 +296,7 @@ class UDExMastheadMobileMenu extends UI5Element {
|
|
|
291
296
|
return !this._showCategories && !this._showCategoryItems;
|
|
292
297
|
}
|
|
293
298
|
|
|
294
|
-
get
|
|
299
|
+
get overviewLinkText(): string {
|
|
295
300
|
return UDExMastheadMobileMenu.i18nBundle.getText(OVERVIEW);
|
|
296
301
|
}
|
|
297
302
|
|
|
@@ -306,6 +311,10 @@ class UDExMastheadMobileMenu extends UI5Element {
|
|
|
306
311
|
get hasExploreBtnSlot(): boolean {
|
|
307
312
|
return !!this.getSlottedNodes("exploreSapMobileButton").length;
|
|
308
313
|
}
|
|
314
|
+
|
|
315
|
+
get hasSearchSlot(): boolean {
|
|
316
|
+
return !!this.search.length;
|
|
317
|
+
}
|
|
309
318
|
}
|
|
310
319
|
|
|
311
320
|
UDExMastheadMobileMenu.define();
|