@sapudex/web-components 2.10.0 → 2.12.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/bundle.esm.js +1 -0
- package/cypress/fixtures/profile-menu.ts +75 -0
- package/cypress/specs/Accordion.cy.tsx +19 -0
- package/cypress/specs/AccordionItem.cy.tsx +9 -0
- package/cypress/specs/Footer.cy.tsx +48 -11
- package/cypress/specs/ListItem.cy.tsx +66 -52
- package/cypress/specs/MastheadProfileMenu.cy.tsx +174 -0
- package/cypress/specs/PromoTile.cy.tsx +124 -0
- package/cypress/specs/Quote.cy.tsx +65 -0
- package/cypress/specs/SelectBox.cy.tsx +134 -66
- package/cypress/support/component-imports.instrumented.ts +8 -0
- package/cypress/support/component-imports.src.ts +9 -1
- package/dist/Accordion.d.ts +15 -0
- package/dist/Accordion.js +19 -0
- package/dist/Accordion.js.map +1 -1
- package/dist/AccordionItem.d.ts +19 -0
- package/dist/AccordionItem.js +23 -0
- package/dist/AccordionItem.js.map +1 -1
- package/dist/AccordionItemTemplate.js +7 -2
- package/dist/AccordionItemTemplate.js.map +1 -1
- package/dist/AccordionTemplate.js +21 -1
- package/dist/AccordionTemplate.js.map +1 -1
- package/dist/Button.d.ts +8 -0
- package/dist/Button.js +11 -0
- package/dist/Button.js.map +1 -1
- package/dist/Footer.d.ts +45 -3
- package/dist/Footer.js +41 -17
- package/dist/Footer.js.map +1 -1
- package/dist/List.d.ts +9 -2
- package/dist/List.js +19 -8
- package/dist/List.js.map +1 -1
- package/dist/ListGroupHeader.d.ts +2 -1
- package/dist/ListGroupHeader.js.map +1 -1
- package/dist/ListItem.d.ts +12 -1
- package/dist/ListItem.js +15 -1
- package/dist/ListItem.js.map +1 -1
- package/dist/ListItemBase.d.ts +10 -0
- package/dist/ListItemBase.js +31 -0
- package/dist/ListItemBase.js.map +1 -1
- package/dist/ListSelectAll.d.ts +2 -1
- package/dist/ListSelectAll.js.map +1 -1
- package/dist/MastheadItem.d.ts +2 -0
- package/dist/MastheadItem.js +6 -0
- package/dist/MastheadItem.js.map +1 -1
- package/dist/MastheadProfileMenu.d.ts +67 -3
- package/dist/MastheadProfileMenu.js +164 -10
- package/dist/MastheadProfileMenu.js.map +1 -1
- package/dist/MastheadShell.d.ts +1 -0
- package/dist/MastheadShell.js +6 -1
- package/dist/MastheadShell.js.map +1 -1
- package/dist/PromoTile.d.ts +143 -0
- package/dist/PromoTile.js +198 -0
- package/dist/PromoTile.js.map +1 -0
- package/dist/PromoTileTemplate.d.ts +2 -0
- package/dist/PromoTileTemplate.js +22 -0
- package/dist/PromoTileTemplate.js.map +1 -0
- package/dist/Quote.d.ts +11 -0
- package/dist/Quote.js +18 -3
- package/dist/Quote.js.map +1 -1
- package/dist/Search.d.ts +3 -1
- package/dist/Search.js +1 -0
- package/dist/Search.js.map +1 -1
- package/dist/SearchableListBase.d.ts +16 -0
- package/dist/SearchableListBase.js +31 -1
- package/dist/SearchableListBase.js.map +1 -1
- package/dist/SelectBox.js +10 -0
- package/dist/SelectBox.js.map +1 -1
- package/dist/SelectBoxItem.d.ts +29 -0
- package/dist/SelectBoxItem.js +26 -0
- package/dist/SelectBoxItem.js.map +1 -1
- package/dist/StatusBadge.d.ts +1 -7
- package/dist/StatusBadge.js +1 -8
- package/dist/StatusBadge.js.map +1 -1
- package/dist/StepInputTemplate.js +1 -1
- package/dist/StepInputTemplate.js.map +1 -1
- package/dist/assets/{InputSuggestions-xcV7PZDf.js → InputSuggestions-DtUQULbo.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-RYCr4pVL.js → ListItemStandardExpandableTextTemplate-B62PaSFk.js} +1 -1
- package/dist/assets/{bundle.esm-bg-64miJ.js → bundle.esm-Ba8g4ech.js} +211 -210
- package/dist/assets/messagebundle_en-PmkE-Vht.js +1 -0
- package/dist/css/themes/AccordionItem.css +1 -1
- package/dist/css/themes/BreadcrumbsPopover.css +1 -1
- package/dist/css/themes/Button.css +1 -1
- package/dist/css/themes/CountrySelector.css +1 -1
- package/dist/css/themes/Divider.css +1 -1
- package/dist/css/themes/Footer.css +1 -1
- package/dist/css/themes/HeroBanner.css +1 -1
- package/dist/css/themes/ListItem.css +1 -1
- package/dist/css/themes/MastheadProfileMenu.css +1 -1
- package/dist/css/themes/PromoTile.css +1 -0
- package/dist/css/themes/Quote.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/Slider.css +1 -1
- package/dist/css/themes/StepInput.css +1 -1
- package/dist/css/themes/Tag.css +1 -1
- package/dist/custom-elements-internal.json +1515 -277
- package/dist/custom-elements.json +1220 -146
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +7 -1
- package/dist/generated/i18n/i18n-defaults.js +7 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/templates/FooterTemplate.lit.js +33 -32
- package/dist/generated/templates/FooterTemplate.lit.js.map +1 -1
- package/dist/generated/templates/HeroBannerTemplate.lit.js +1 -1
- package/dist/generated/templates/HeroBannerTemplate.lit.js.map +1 -1
- package/dist/generated/templates/ListItemTemplate.lit.js +31 -23
- package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/ListTemplate.lit.js +2 -2
- package/dist/generated/templates/ListTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +11 -6
- package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SearchableListBaseTemplate.lit.js +6 -6
- package/dist/generated/templates/SearchableListBaseTemplate.lit.js.map +1 -1
- package/dist/generated/themes/AccordionItem.css.d.ts +1 -1
- package/dist/generated/themes/AccordionItem.css.js +1 -1
- package/dist/generated/themes/AccordionItem.css.js.map +1 -1
- package/dist/generated/themes/BreadcrumbsPopover.css.d.ts +1 -1
- package/dist/generated/themes/BreadcrumbsPopover.css.js +1 -1
- package/dist/generated/themes/BreadcrumbsPopover.css.js.map +1 -1
- package/dist/generated/themes/Button.css.d.ts +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.d.ts +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/Divider.css.d.ts +1 -1
- package/dist/generated/themes/Divider.css.js +1 -1
- package/dist/generated/themes/Divider.css.js.map +1 -1
- package/dist/generated/themes/Footer.css.d.ts +1 -1
- package/dist/generated/themes/Footer.css.js +1 -1
- package/dist/generated/themes/Footer.css.js.map +1 -1
- package/dist/generated/themes/HeroBanner.css.d.ts +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/ListItem.css.d.ts +1 -1
- package/dist/generated/themes/ListItem.css.js +1 -1
- package/dist/generated/themes/ListItem.css.js.map +1 -1
- package/dist/generated/themes/MastheadProfileMenu.css.d.ts +1 -1
- package/dist/generated/themes/MastheadProfileMenu.css.js +1 -1
- package/dist/generated/themes/MastheadProfileMenu.css.js.map +1 -1
- package/dist/generated/themes/PromoTile.css.d.ts +2 -0
- package/dist/generated/themes/PromoTile.css.js +8 -0
- package/dist/generated/themes/PromoTile.css.js.map +1 -0
- package/dist/generated/themes/Quote.css.d.ts +1 -1
- package/dist/generated/themes/Quote.css.js +1 -1
- package/dist/generated/themes/Quote.css.js.map +1 -1
- package/dist/generated/themes/RatingIndicator.css.d.ts +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/Slider.css.d.ts +1 -1
- package/dist/generated/themes/Slider.css.js +1 -1
- package/dist/generated/themes/Slider.css.js.map +1 -1
- package/dist/generated/themes/StepInput.css.d.ts +1 -1
- package/dist/generated/themes/StepInput.css.js +1 -1
- package/dist/generated/themes/StepInput.css.js.map +1 -1
- package/dist/generated/themes/Tag.css.d.ts +1 -1
- package/dist/generated/themes/Tag.css.js +1 -1
- package/dist/generated/themes/Tag.css.js.map +1 -1
- package/dist/messagebundle.properties +10 -0
- package/dist/messagebundle_en.properties +6 -0
- package/dist/types/PromoTile.d.ts +60 -0
- package/dist/types/PromoTile.js +63 -0
- package/dist/types/PromoTile.js.map +1 -0
- package/dist/types/StatusBadgeValueState.d.ts +8 -0
- package/dist/types/StatusBadgeValueState.js +10 -0
- package/dist/types/StatusBadgeValueState.js.map +1 -0
- package/dist/utils/debounce.d.ts +3 -1
- package/dist/utils/debounce.js +16 -4
- package/dist/utils/debounce.js.map +1 -1
- package/dist/vscode.html-custom-data.json +185 -16
- package/dist/web-types.json +603 -34
- package/package.json +1 -1
- package/src/Accordion.ts +19 -0
- package/src/AccordionItem.ts +28 -0
- package/src/AccordionItemTemplate.tsx +25 -10
- package/src/AccordionTemplate.tsx +22 -1
- package/src/Button.ts +10 -0
- package/src/Footer.hbs +39 -36
- package/src/Footer.ts +81 -6
- package/src/HeroBanner.hbs +0 -1
- package/src/List.hbs +0 -2
- package/src/List.ts +27 -8
- package/src/ListGroupHeader.ts +2 -1
- package/src/ListItem.hbs +16 -2
- package/src/ListItem.ts +29 -2
- package/src/ListItemBase.ts +42 -0
- package/src/ListSelectAll.ts +2 -1
- package/src/MastheadItem.ts +9 -0
- package/src/MastheadProfileMenu.hbs +79 -15
- package/src/MastheadProfileMenu.ts +228 -13
- package/src/MastheadShell.ts +7 -1
- package/src/PromoTile.ts +290 -0
- package/src/PromoTileTemplate.tsx +68 -0
- package/src/Quote.ts +17 -3
- package/src/Search.ts +1 -0
- package/src/SearchableListBase.hbs +18 -1
- package/src/SearchableListBase.ts +47 -1
- package/src/SelectBox.ts +11 -0
- package/src/SelectBoxItem.ts +39 -0
- package/src/StatusBadge.ts +1 -8
- package/src/StepInputTemplate.tsx +1 -1
- package/src/generated/i18n/i18n-defaults.ts +2 -2
- package/src/generated/templates/FooterTemplate.lit.ts +33 -32
- package/src/generated/templates/HeroBannerTemplate.lit.ts +1 -1
- package/src/generated/templates/ListItemTemplate.lit.ts +31 -23
- package/src/generated/templates/ListTemplate.lit.ts +2 -2
- package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +10 -5
- package/src/generated/templates/SearchableListBaseTemplate.lit.ts +6 -6
- package/src/generated/themes/AccordionItem.css.ts +1 -1
- package/src/generated/themes/BreadcrumbsPopover.css.ts +1 -1
- package/src/generated/themes/Button.css.ts +1 -1
- package/src/generated/themes/CountrySelector.css.ts +1 -1
- package/src/generated/themes/Divider.css.ts +1 -1
- package/src/generated/themes/Footer.css.ts +1 -1
- package/src/generated/themes/HeroBanner.css.ts +1 -1
- package/src/generated/themes/ListItem.css.ts +1 -1
- package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
- package/src/generated/themes/PromoTile.css.ts +9 -0
- package/src/generated/themes/Quote.css.ts +1 -1
- package/src/generated/themes/RatingIndicator.css.ts +1 -1
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/generated/themes/StepInput.css.ts +1 -1
- package/src/generated/themes/Tag.css.ts +1 -1
- package/src/i18n/messagebundle.properties +10 -0
- package/src/i18n/messagebundle_en.properties +6 -0
- package/src/themes/AccordionItem.css +61 -22
- package/src/themes/BreadcrumbsPopover.css +2 -1
- package/src/themes/Button.css +13 -0
- package/src/themes/CountrySelector.css +4 -0
- package/src/themes/Divider.css +2 -1
- package/src/themes/Footer.css +44 -9
- package/src/themes/HeroBanner.css +34 -32
- package/src/themes/ListItem.css +4 -9
- package/src/themes/MastheadProfileMenu.css +87 -3
- package/src/themes/PromoTile.css +152 -0
- package/src/themes/Quote.css +21 -24
- package/src/themes/StepInput.css +10 -0
- package/src/themes/Tag.css +18 -24
- package/src/types/PromoTile.ts +61 -0
- package/src/types/StatusBadgeValueState.ts +9 -0
- package/src/utils/debounce.ts +19 -4
- package/dist/assets/messagebundle_en-BHfPJk-2.js +0 -1
package/package.json
CHANGED
package/src/Accordion.ts
CHANGED
|
@@ -18,6 +18,16 @@ import AccordionCss from "./generated/themes/Accordion.css.js";
|
|
|
18
18
|
type UDExAccordionToggleItemsEventDetail = {
|
|
19
19
|
isOpen: boolean
|
|
20
20
|
}
|
|
21
|
+
|
|
22
|
+
export enum UDExAccordionHeadlineLevel {
|
|
23
|
+
H1 = "H1",
|
|
24
|
+
H2 = "H2",
|
|
25
|
+
H3 = "H3",
|
|
26
|
+
H4 = "H4",
|
|
27
|
+
H5 = "H5",
|
|
28
|
+
H6 = "H6"
|
|
29
|
+
}
|
|
30
|
+
|
|
21
31
|
/**
|
|
22
32
|
* @class
|
|
23
33
|
*
|
|
@@ -90,6 +100,15 @@ class UDExAccordion extends UI5Element {
|
|
|
90
100
|
@property({ type: String })
|
|
91
101
|
headline!: string;
|
|
92
102
|
|
|
103
|
+
/**
|
|
104
|
+
* Defines the semantic level of the headline.
|
|
105
|
+
*
|
|
106
|
+
* @default UDExAccordionHeadlineLevel.h3
|
|
107
|
+
* @public
|
|
108
|
+
*/
|
|
109
|
+
@property()
|
|
110
|
+
headlineLevel: UDExAccordionHeadlineLevel = UDExAccordionHeadlineLevel.H3;
|
|
111
|
+
|
|
93
112
|
/**
|
|
94
113
|
* Slot for accordion items.
|
|
95
114
|
*
|
package/src/AccordionItem.ts
CHANGED
|
@@ -11,6 +11,10 @@ import AccordionItemTemplate from "./AccordionItemTemplate.js";
|
|
|
11
11
|
// Styles
|
|
12
12
|
import AccordionItemCss from "./generated/themes/AccordionItem.css.js";
|
|
13
13
|
|
|
14
|
+
export enum UDExAccordionItemTitleSize {
|
|
15
|
+
Standard = "Standard",
|
|
16
|
+
Large = "Large"
|
|
17
|
+
}
|
|
14
18
|
/**
|
|
15
19
|
* @class
|
|
16
20
|
*
|
|
@@ -72,6 +76,24 @@ class UDExAccordionItem extends UI5Element {
|
|
|
72
76
|
@property()
|
|
73
77
|
label!: string;
|
|
74
78
|
|
|
79
|
+
/**
|
|
80
|
+
* Defines the size of label.
|
|
81
|
+
*
|
|
82
|
+
* @default UDExAccordionItemTitleSize.Standard
|
|
83
|
+
* @public
|
|
84
|
+
*/
|
|
85
|
+
@property()
|
|
86
|
+
labelSize: UDExAccordionItemTitleSize = UDExAccordionItemTitleSize.Standard;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Defines icon name to be display with title.
|
|
90
|
+
*
|
|
91
|
+
* @default ""
|
|
92
|
+
* @public
|
|
93
|
+
*/
|
|
94
|
+
@property()
|
|
95
|
+
labelIcon!: string;
|
|
96
|
+
|
|
75
97
|
/**
|
|
76
98
|
* Defines if the accordion item is expanded by default
|
|
77
99
|
*
|
|
@@ -113,6 +135,7 @@ class UDExAccordionItem extends UI5Element {
|
|
|
113
135
|
|
|
114
136
|
onAfterRendering() {
|
|
115
137
|
this.handleDirection();
|
|
138
|
+
this.setContentHeight();
|
|
116
139
|
}
|
|
117
140
|
|
|
118
141
|
onEnterDOM(): void {
|
|
@@ -121,6 +144,10 @@ class UDExAccordionItem extends UI5Element {
|
|
|
121
144
|
}
|
|
122
145
|
}
|
|
123
146
|
|
|
147
|
+
setContentHeight() {
|
|
148
|
+
this.style.setProperty("--udex-accordion-item-content-max-height", `${this.shadowRoot?.querySelector(".udex-accordion-item__content")?.scrollHeight}px`);
|
|
149
|
+
}
|
|
150
|
+
|
|
124
151
|
contentKeydown(e: KeyboardEvent) {
|
|
125
152
|
e.stopPropagation();
|
|
126
153
|
}
|
|
@@ -128,6 +155,7 @@ class UDExAccordionItem extends UI5Element {
|
|
|
128
155
|
itemClickHandler(e: Event) {
|
|
129
156
|
e.preventDefault();
|
|
130
157
|
this.expanded = !this.expanded;
|
|
158
|
+
this.setContentHeight();
|
|
131
159
|
this.fireDecoratorEvent("accordion-item-click");
|
|
132
160
|
}
|
|
133
161
|
|
|
@@ -4,30 +4,35 @@ import IconMode from "@ui5/webcomponents/dist/types/IconMode.js";
|
|
|
4
4
|
import slimArrowRight from "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
|
|
5
5
|
import { UDExNumberBadgeDesign, UDExSizeBadgeDesign, UDExTypeBadgeDesign } from "./types/BadgeDesign.js";
|
|
6
6
|
import UDExBadge from "./Badge.js";
|
|
7
|
+
import UDExDivider from "./Divider.js";
|
|
7
8
|
|
|
8
9
|
export default function AccordionItemTemplate(this: AccordionItem) {
|
|
9
10
|
const ariaControlsId = `udex-accordion-item__${this._id}-content`;
|
|
10
11
|
const ariaLabelledbyId = `udex-accordion-item__${this._id}`;
|
|
11
12
|
const rootClass = "udex-accordion-item";
|
|
13
|
+
const titleClass = this.labelIcon ? `${rootClass}--with-title` : "";
|
|
14
|
+
const headlineClass = `${rootClass}__header ${rootClass}__header--${this.labelSize.toLowerCase()}`;
|
|
12
15
|
|
|
13
16
|
return (
|
|
14
17
|
<>
|
|
15
18
|
<button
|
|
16
19
|
id={ariaLabelledbyId}
|
|
17
20
|
aria-controls={ariaControlsId}
|
|
18
|
-
className={`${
|
|
21
|
+
className={`${headlineClass}`}
|
|
19
22
|
onFocusIn={this.focusHandler}
|
|
20
23
|
onClick={this.itemClickHandler}
|
|
21
24
|
onKeyDown={this.keydownHandler}
|
|
22
25
|
aria-expanded={this.expanded}
|
|
23
26
|
type="button">
|
|
24
|
-
|
|
25
|
-
<
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
{this.labelIcon ?
|
|
28
|
+
<div className={`${rootClass}__icon-wrapper ${rootClass}__label-icon-wrapper`}>
|
|
29
|
+
<UI5Icon
|
|
30
|
+
class={`${rootClass}__icon ${rootClass}__label-icon`}
|
|
31
|
+
mode={IconMode.Decorative}
|
|
32
|
+
name={this.labelIcon}>
|
|
33
|
+
</UI5Icon>
|
|
34
|
+
</div>
|
|
35
|
+
: ""}
|
|
31
36
|
<span className={`${rootClass}__title`}>
|
|
32
37
|
{this.label}
|
|
33
38
|
{this.numberBadge &&
|
|
@@ -40,15 +45,25 @@ export default function AccordionItemTemplate(this: AccordionItem) {
|
|
|
40
45
|
</UDExBadge>
|
|
41
46
|
}
|
|
42
47
|
</span>
|
|
48
|
+
<div className={`${rootClass}__icon-wrapper`}>
|
|
49
|
+
<UI5Icon
|
|
50
|
+
class={`${rootClass}__icon`}
|
|
51
|
+
mode={IconMode.Decorative}
|
|
52
|
+
name={slimArrowRight}>
|
|
53
|
+
</UI5Icon>
|
|
54
|
+
</div>
|
|
43
55
|
</button>
|
|
44
56
|
<div
|
|
45
57
|
id={ariaControlsId}
|
|
46
58
|
aria-labelledby={ariaLabelledbyId}
|
|
47
|
-
className={`${rootClass}__content`}
|
|
59
|
+
className={`${rootClass}__content ${titleClass}`}
|
|
48
60
|
onKeyDown={this.contentKeydown}
|
|
49
61
|
role="region">
|
|
50
|
-
<
|
|
62
|
+
<div className={`${rootClass}__content-inner`}>
|
|
63
|
+
<slot></slot>
|
|
64
|
+
</div>
|
|
51
65
|
</div>
|
|
66
|
+
<UDExDivider></UDExDivider>
|
|
52
67
|
</>
|
|
53
68
|
);
|
|
54
69
|
}
|
|
@@ -2,6 +2,7 @@ import type Accordion from "./Accordion.js";
|
|
|
2
2
|
import UDExButton from "./Button.js";
|
|
3
3
|
import UDExButtonSize from "./types/ButtonSize.js";
|
|
4
4
|
import UDExButtonDesign from "./types/ButtonDesign.js";
|
|
5
|
+
import { UDExAccordionHeadlineLevel } from "./Accordion.js";
|
|
5
6
|
|
|
6
7
|
export default function AccordionTemplate(this: Accordion) {
|
|
7
8
|
const rootClass = "udex-accordion";
|
|
@@ -14,7 +15,7 @@ export default function AccordionTemplate(this: Accordion) {
|
|
|
14
15
|
onui5-accordion-item-focus={this.itemFocusHandler}>
|
|
15
16
|
<div className={`${rootClass}__head`} part="head">
|
|
16
17
|
{this.headline &&
|
|
17
|
-
|
|
18
|
+
headline.call(this, rootClass)
|
|
18
19
|
}
|
|
19
20
|
{!this.hideExpandButton &&
|
|
20
21
|
<UDExButton class={`${rootClass}__btn`}
|
|
@@ -35,3 +36,23 @@ export default function AccordionTemplate(this: Accordion) {
|
|
|
35
36
|
</div>
|
|
36
37
|
);
|
|
37
38
|
}
|
|
39
|
+
|
|
40
|
+
function headline(this: Accordion, rootClass: string) {
|
|
41
|
+
const { headline: title, headlineLevel } = this;
|
|
42
|
+
switch (headlineLevel) {
|
|
43
|
+
case UDExAccordionHeadlineLevel.H1:
|
|
44
|
+
return <h1 className={`${rootClass}__headline`}>{title}</h1>;
|
|
45
|
+
case UDExAccordionHeadlineLevel.H2:
|
|
46
|
+
return <h2 className={`${rootClass}__headline`}>{title}</h2>;
|
|
47
|
+
case UDExAccordionHeadlineLevel.H3:
|
|
48
|
+
return <h3 className={`${rootClass}__headline`}>{title}</h3>;
|
|
49
|
+
case UDExAccordionHeadlineLevel.H4:
|
|
50
|
+
return <h4 className={`${rootClass}__headline`}>{title}</h4>;
|
|
51
|
+
case UDExAccordionHeadlineLevel.H5:
|
|
52
|
+
return <h5 className={`${rootClass}__headline`}>{title}</h5>;
|
|
53
|
+
case UDExAccordionHeadlineLevel.H6:
|
|
54
|
+
return <h6 className={`${rootClass}__headline`}>{title}</h6>;
|
|
55
|
+
default:
|
|
56
|
+
return <h3 className={`${rootClass}__headline`}>{title}</h3>;
|
|
57
|
+
}
|
|
58
|
+
}
|
package/src/Button.ts
CHANGED
|
@@ -8,6 +8,7 @@ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
|
8
8
|
import {
|
|
9
9
|
BUTTON_ARIA_ATTENTION, BUTTON_ARIA_DEFAULT, BUTTON_ARIA_EMPHASIZED, BUTTON_ARIA_TRANSPARENT, BUTTON_ARIA_TYPE_NEGATIVE, BUTTON_ARIA_TYPE_POSITIVE, BUTTON_ARIA_TYPE_PRIMARY, BUTTON_ARIA_TYPE_SECONDARY, BUTTON_ARIA_TYPE_TERTIARY, BUTTON_ARIA_TYPE_WARNING, TOGGLED,
|
|
10
10
|
} from "./generated/i18n/i18n-defaults.js";
|
|
11
|
+
import WrappingType from "@ui5/webcomponents/dist/types/WrappingType.js";
|
|
11
12
|
import UDExButtonSize from "./types/ButtonSize.js";
|
|
12
13
|
import UDExButtonDesign from "./types/ButtonDesign.js";
|
|
13
14
|
|
|
@@ -77,6 +78,15 @@ class UDExButton extends Button {
|
|
|
77
78
|
@property({ type: Boolean })
|
|
78
79
|
_ariaDisabled!: boolean;
|
|
79
80
|
|
|
81
|
+
/**
|
|
82
|
+
* Defines if button should wrap text inside
|
|
83
|
+
*
|
|
84
|
+
* @default false
|
|
85
|
+
* @public
|
|
86
|
+
*/
|
|
87
|
+
@property({ type: String })
|
|
88
|
+
wrappingType: `${WrappingType}` = WrappingType.None;
|
|
89
|
+
|
|
80
90
|
@i18n("@sapudex/web-components")
|
|
81
91
|
static i18nBundle: I18nBundle;
|
|
82
92
|
|
package/src/Footer.hbs
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
<footer class="udex-footer">
|
|
2
2
|
<div class="udex-footer__content">
|
|
3
3
|
<div class="udex-footer__contact-social">
|
|
4
|
-
{{#if
|
|
4
|
+
{{#if hasLogo}}
|
|
5
5
|
<div class="udex-footer__logo">
|
|
6
|
-
{{#if
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
{{#if hasLogoLink}}
|
|
7
|
+
<a href="{{logoHref}}" @click="{{_onLogoClick}}" title="{{logoTitle}}" aria-label="{{logoAriaLabel}}">
|
|
8
|
+
<img id="udex-footer__logo-image" src="{{currentLogoUrl}}" class="{{logoClass}}" alt="{{logoAlt}}"/>
|
|
9
|
+
</a>
|
|
10
10
|
{{else}}
|
|
11
|
-
<img id="udex-footer__logo-image" src="{{
|
|
11
|
+
<img id="udex-footer__logo-image" src="{{currentLogoUrl}}" class="{{logoClass}}" alt="{{logoAlt}}"/>
|
|
12
|
+
{{/if}}
|
|
13
|
+
{{#if hasTagline}}
|
|
14
|
+
<img id="udex-footer__tagline-image" src="{{currentTaglineUrl}}" class="{{taglineClass}}" alt="{{taglineAlt}}"/>
|
|
12
15
|
{{/if}}
|
|
13
16
|
</div>
|
|
14
17
|
{{/if}}
|
|
@@ -83,40 +86,40 @@
|
|
|
83
86
|
{{/if}}
|
|
84
87
|
|
|
85
88
|
<udex-divider class="udex-footer__divider"></udex-divider>
|
|
89
|
+
</div>
|
|
86
90
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
{{/if}}
|
|
100
|
-
<span class="udex-footer__copyright-text">{{copyrightText}}</span>
|
|
101
|
-
</div>
|
|
102
|
-
|
|
103
|
-
{{#if socialLinksArray.length}}
|
|
104
|
-
<div class="udex-footer__social-container">
|
|
105
|
-
{{#each socialLinksArray}}
|
|
106
|
-
<udex-social-media-button
|
|
107
|
-
type="{{this.name}}"
|
|
108
|
-
url="{{this.url}}"
|
|
109
|
-
target="{{this.target}}"
|
|
110
|
-
accessible-name="{{this.accessibleName}}"
|
|
111
|
-
data-name="{{this.name}}"
|
|
112
|
-
data-id="{{this.id}}"
|
|
113
|
-
@ui5-click="{{../_onSocialMediaLinkClick}}"
|
|
114
|
-
></udex-social-media-button>
|
|
115
|
-
{{/each}}
|
|
116
|
-
</div>
|
|
91
|
+
<div class="udex-footer__copyright">
|
|
92
|
+
{{#if isChineseLang}}
|
|
93
|
+
<span class="udex-footer__copyright-chinese-text">
|
|
94
|
+
<a
|
|
95
|
+
href="{{chineseIcpNumberLink}}"
|
|
96
|
+
title="{{chineseICPNumber}}"
|
|
97
|
+
class="udex-footer__copyright-chinese-link"
|
|
98
|
+
target="_blank">
|
|
99
|
+
{{chineseICPNumber}}
|
|
100
|
+
</a>
|
|
101
|
+
{{chineseSecurityNetworkNumber}}
|
|
102
|
+
</span>
|
|
117
103
|
{{/if}}
|
|
104
|
+
<span class="udex-footer__copyright-text">{{copyrightText}}</span>
|
|
118
105
|
</div>
|
|
119
106
|
|
|
107
|
+
{{#if socialLinksArray.length}}
|
|
108
|
+
<div class="udex-footer__social-container">
|
|
109
|
+
{{#each socialLinksArray}}
|
|
110
|
+
<udex-social-media-button
|
|
111
|
+
type="{{this.name}}"
|
|
112
|
+
url="{{this.url}}"
|
|
113
|
+
target="{{this.target}}"
|
|
114
|
+
accessible-name="{{this.accessibleName}}"
|
|
115
|
+
data-name="{{this.name}}"
|
|
116
|
+
data-id="{{this.id}}"
|
|
117
|
+
@ui5-click="{{../_onSocialMediaLinkClick}}"
|
|
118
|
+
></udex-social-media-button>
|
|
119
|
+
{{/each}}
|
|
120
|
+
</div>
|
|
121
|
+
{{/if}}
|
|
122
|
+
|
|
120
123
|
<udex-button
|
|
121
124
|
class="udex-footer__back-to-top-button"
|
|
122
125
|
icon="back-to-top"
|
package/src/Footer.ts
CHANGED
|
@@ -199,7 +199,7 @@ class UDExFooter extends UI5Element {
|
|
|
199
199
|
* @public
|
|
200
200
|
*/
|
|
201
201
|
@property({ type: String })
|
|
202
|
-
logoTitle
|
|
202
|
+
logoTitle?: string;
|
|
203
203
|
|
|
204
204
|
/**
|
|
205
205
|
* Defines the Logo URL
|
|
@@ -208,7 +208,7 @@ class UDExFooter extends UI5Element {
|
|
|
208
208
|
* @public
|
|
209
209
|
*/
|
|
210
210
|
@property({ type: String })
|
|
211
|
-
logoUrl
|
|
211
|
+
logoUrl?: string;
|
|
212
212
|
|
|
213
213
|
/**
|
|
214
214
|
* Defines the optional component href link for the logo.
|
|
@@ -219,6 +219,51 @@ class UDExFooter extends UI5Element {
|
|
|
219
219
|
@property({ type: String })
|
|
220
220
|
logoLink: string = "";
|
|
221
221
|
|
|
222
|
+
/**
|
|
223
|
+
* Defines the tagline alt text.
|
|
224
|
+
*
|
|
225
|
+
* @default ""
|
|
226
|
+
* @public
|
|
227
|
+
*/
|
|
228
|
+
@property({ type: String })
|
|
229
|
+
taglineAlt?: string;
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Defines the tagline url.
|
|
233
|
+
*
|
|
234
|
+
* @default ""
|
|
235
|
+
* @public
|
|
236
|
+
*/
|
|
237
|
+
@property({ type: String })
|
|
238
|
+
taglineUrl?: string;
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Defines the chinese tagline url.
|
|
242
|
+
*
|
|
243
|
+
* @default ""
|
|
244
|
+
* @public
|
|
245
|
+
*/
|
|
246
|
+
@property({ type: String })
|
|
247
|
+
chineseTaglineUrl?: string;
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Defines the chinese logo url
|
|
251
|
+
*
|
|
252
|
+
* @default ""
|
|
253
|
+
* @public
|
|
254
|
+
*/
|
|
255
|
+
@property({ type: String })
|
|
256
|
+
chineseLogoUrl?: string;
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Defines the optional component href link for the chinese logo.
|
|
260
|
+
*
|
|
261
|
+
* @default ""
|
|
262
|
+
* @public
|
|
263
|
+
*/
|
|
264
|
+
@property({ type: String })
|
|
265
|
+
chineseLogoLink?: string;
|
|
266
|
+
|
|
222
267
|
/**
|
|
223
268
|
* List of the Quick links
|
|
224
269
|
*
|
|
@@ -398,10 +443,6 @@ class UDExFooter extends UI5Element {
|
|
|
398
443
|
window.scrollTo(0, 0);
|
|
399
444
|
}
|
|
400
445
|
|
|
401
|
-
get parsedRef(): string | undefined {
|
|
402
|
-
return (this.logoLink && this.logoLink.length > 0) ? this.logoLink : undefined;
|
|
403
|
-
}
|
|
404
|
-
|
|
405
446
|
get quickLinksArray(): FooterLink[] {
|
|
406
447
|
return parseArrayFromString<FooterLink>(this.quickLinks);
|
|
407
448
|
}
|
|
@@ -493,6 +534,40 @@ class UDExFooter extends UI5Element {
|
|
|
493
534
|
return getLanguage()?.toLowerCase() === "zh_cn";
|
|
494
535
|
}
|
|
495
536
|
|
|
537
|
+
get hasLogo(): boolean {
|
|
538
|
+
return !!(this.logoUrl || this.chineseLogoUrl);
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
get hasLogoLink(): boolean {
|
|
542
|
+
return !!(this.logoLink || this.chineseLogoLink);
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
get currentLogoUrl(): string | undefined {
|
|
546
|
+
return this.isChineseLang && this.chineseLogoUrl ? this.chineseLogoUrl : this.logoUrl;
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
get logoHref(): string {
|
|
550
|
+
return this.isChineseLang && this.chineseLogoLink ? this.chineseLogoLink : this.logoLink;
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
get hasTagline(): boolean {
|
|
554
|
+
return !!(this.taglineUrl || this.chineseTaglineUrl);
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
get currentTaglineUrl(): string | undefined {
|
|
558
|
+
return this.isChineseLang && this.chineseTaglineUrl ? this.chineseTaglineUrl : this.taglineUrl;
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
get taglineClass(): string {
|
|
562
|
+
const root = "udex-footer__tagline-image";
|
|
563
|
+
return this.isChineseLang && this.chineseTaglineUrl ? `${root}-chinese` : root;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
get logoClass(): string {
|
|
567
|
+
const root = "udex-footer__logo-image";
|
|
568
|
+
return this.isChineseLang && this.chineseLogoUrl ? `${root}-chinese` : root;
|
|
569
|
+
}
|
|
570
|
+
|
|
496
571
|
_onLogoClick(e: PointerEvent): void {
|
|
497
572
|
this.fireFooterBaseEvent(e, "logo-click");
|
|
498
573
|
}
|
package/src/HeroBanner.hbs
CHANGED
|
@@ -38,7 +38,6 @@
|
|
|
38
38
|
<slot id="udex-hero-banner__content" name="content" part="content"></slot>
|
|
39
39
|
|
|
40
40
|
{{#if hasAdditionalContent}}
|
|
41
|
-
<udex-media-player source="http://media.w3.org/2010/05/sintel/trailer.mp4" aspect-ratio="16:9"></udex-media-player>
|
|
42
41
|
<slot id="udex-hero-banner__additionalContent" name="additionalContent" part="additionalContent"></slot>
|
|
43
42
|
{{/if}}
|
|
44
43
|
{{/inline}}
|
package/src/List.hbs
CHANGED
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
class="udex-list"
|
|
14
14
|
role="{{accessibleRole}}"
|
|
15
15
|
aria-labelledby="{{ariaLabelledBy}}"
|
|
16
|
-
aria-label="{{accessibleName}}"
|
|
17
16
|
aria-busy="{{ariaBusy}}">
|
|
18
17
|
<slot></slot>
|
|
19
18
|
</div>
|
|
@@ -27,7 +26,6 @@
|
|
|
27
26
|
class="udex-list"
|
|
28
27
|
role="{{accessibleRole}}"
|
|
29
28
|
aria-labelledby="{{ariaLabelledBy}}"
|
|
30
|
-
aria-label="{{accessibleName}}"
|
|
31
29
|
aria-busy="{{ariaBusy}}">
|
|
32
30
|
<slot></slot>
|
|
33
31
|
</div>
|
package/src/List.ts
CHANGED
|
@@ -135,12 +135,21 @@ class UDExList extends UI5Element {
|
|
|
135
135
|
/**
|
|
136
136
|
* Defines the name of the UI5 Icon, that will be displayed for each item of the list.
|
|
137
137
|
*
|
|
138
|
-
* @
|
|
139
|
-
* @
|
|
138
|
+
* @default ""
|
|
139
|
+
* @public
|
|
140
140
|
*/
|
|
141
141
|
@property({ type: String })
|
|
142
142
|
itemIcon: string = "";
|
|
143
143
|
|
|
144
|
+
/**
|
|
145
|
+
* Enables tab navigation for the list.
|
|
146
|
+
*
|
|
147
|
+
* @default ""
|
|
148
|
+
* @public
|
|
149
|
+
*/
|
|
150
|
+
@property({ type: Boolean })
|
|
151
|
+
tabNavigationEnabled?: boolean;
|
|
152
|
+
|
|
144
153
|
/**
|
|
145
154
|
* Slot for list items.
|
|
146
155
|
*
|
|
@@ -167,6 +176,9 @@ class UDExList extends UI5Element {
|
|
|
167
176
|
}
|
|
168
177
|
|
|
169
178
|
handleKeyDown(e: KeyboardEvent): void {
|
|
179
|
+
if (this.tabNavigationEnabled) {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
170
182
|
if (isUp(e)) {
|
|
171
183
|
this.handleUpArrow(e);
|
|
172
184
|
}
|
|
@@ -323,8 +335,10 @@ class UDExList extends UI5Element {
|
|
|
323
335
|
clickedItem.selected = true;
|
|
324
336
|
}
|
|
325
337
|
|
|
326
|
-
this.
|
|
327
|
-
|
|
338
|
+
if (!this.tabNavigationEnabled) {
|
|
339
|
+
this.resetTabIndexes();
|
|
340
|
+
clickedItem._tabIndex = "0";
|
|
341
|
+
}
|
|
328
342
|
|
|
329
343
|
this.fireDecoratorEvent("selection-change", {
|
|
330
344
|
listItems: this.getItemsFromList(),
|
|
@@ -406,6 +420,10 @@ class UDExList extends UI5Element {
|
|
|
406
420
|
}
|
|
407
421
|
|
|
408
422
|
getTabIndex(index: number, item: UDExListItemBase): string {
|
|
423
|
+
if (this.tabNavigationEnabled) {
|
|
424
|
+
return "0";
|
|
425
|
+
}
|
|
426
|
+
|
|
409
427
|
const isFirstItem = this.modeSelected && index === 0;
|
|
410
428
|
const isFirstItemInGroupList = this.isGroupList && index === 1;
|
|
411
429
|
const listGroupHeader = item.closest("[udex-list-group-header]") as UDExListGroupHeader;
|
|
@@ -433,10 +451,11 @@ class UDExList extends UI5Element {
|
|
|
433
451
|
}
|
|
434
452
|
|
|
435
453
|
get ariaLabelModeText(): string {
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
454
|
+
const defaultText = this.modeSingleSelect || this.modeRadioGroup
|
|
455
|
+
? ARIA_LABEL_LIST_SELECTABLE
|
|
456
|
+
: ARIA_LABEL_LIST_MULTISELECTABLE;
|
|
457
|
+
|
|
458
|
+
return this.accessibleName || UDExList.i18nBundle.getText(defaultText);
|
|
440
459
|
}
|
|
441
460
|
|
|
442
461
|
get ariaLabelledBy(): string {
|
package/src/ListGroupHeader.ts
CHANGED
|
@@ -6,6 +6,7 @@ import Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
|
6
6
|
import UDExListGroupHeaderBase from "./ListGroupHeaderBase.js";
|
|
7
7
|
import ListGroupHeaderTemplate from "./generated/templates/ListGroupHeaderTemplate.lit.js";
|
|
8
8
|
import { UDExListItemSize } from "./types/List.js";
|
|
9
|
+
import type { UDExListItemBaseEvents } from "./ListItemBase.js";
|
|
9
10
|
|
|
10
11
|
// Styles
|
|
11
12
|
import ListGroupHeaderCss from "./generated/themes/ListGroupHeader.css.js";
|
|
@@ -48,7 +49,7 @@ type UDExListGroupHeaderBaseHeaderPressEventDetail = {
|
|
|
48
49
|
class UDExListGroupHeader extends UDExListGroupHeaderBase {
|
|
49
50
|
eventDetails!: {
|
|
50
51
|
"header-press": UDExListGroupHeaderBaseHeaderPressEventDetail,
|
|
51
|
-
};
|
|
52
|
+
} & UDExListItemBaseEvents;
|
|
52
53
|
|
|
53
54
|
handleHeaderPress() {
|
|
54
55
|
if (!this.controlled) {
|
package/src/ListItem.hbs
CHANGED
|
@@ -74,6 +74,13 @@
|
|
|
74
74
|
shape="{{imageShape}}"
|
|
75
75
|
size="{{imageSize}}"
|
|
76
76
|
part="avatar">
|
|
77
|
+
{{#if imageBadgeState}}
|
|
78
|
+
<udex-status-badge
|
|
79
|
+
slot="badge"
|
|
80
|
+
value-state="{{imageBadgeState}}"
|
|
81
|
+
size="{{imageSize}}">
|
|
82
|
+
</udex-status-badge>
|
|
83
|
+
{{/if}}
|
|
77
84
|
<img src="{{image}}" alt="{{imageAlt}}" />
|
|
78
85
|
</udex-avatar>
|
|
79
86
|
{{/if}}
|
|
@@ -86,6 +93,13 @@
|
|
|
86
93
|
{{/if}}
|
|
87
94
|
<slot part="content"></slot>
|
|
88
95
|
</div>
|
|
96
|
+
{{#if additionalText}}<div class="udex-list__add-text" part="additional-text">{{additionalText}}</div>{{/if}}
|
|
97
|
+
{{#if hasFirstIcon}}
|
|
98
|
+
<slot name="firstIcon" @click={{_fireIconClickEvent}}></slot>
|
|
99
|
+
{{/if}}
|
|
100
|
+
{{#if hasSecondIcon}}
|
|
101
|
+
<slot name="secondIcon" @click={{_fireIconClickEvent}}></slot>
|
|
102
|
+
{{/if}}
|
|
89
103
|
{{else}}
|
|
90
104
|
<div class="udex-list__text-holder">
|
|
91
105
|
<slot part="content"></slot>
|
|
@@ -93,10 +107,10 @@
|
|
|
93
107
|
</div>
|
|
94
108
|
{{#if additionalText}}<div class="udex-list__add-text" part="additional-text">{{additionalText}}</div>{{/if}}
|
|
95
109
|
{{#if hasFirstIcon}}
|
|
96
|
-
<slot name="firstIcon"></slot>
|
|
110
|
+
<slot name="firstIcon" @click={{_fireIconClickEvent}}></slot>
|
|
97
111
|
{{/if}}
|
|
98
112
|
{{#if hasSecondIcon}}
|
|
99
|
-
<slot name="secondIcon"></slot>
|
|
113
|
+
<slot name="secondIcon" @click={{_fireIconClickEvent}}></slot>
|
|
100
114
|
{{/if}}
|
|
101
115
|
{{/if}}
|
|
102
116
|
</div>
|