@sapudex/web-components 2.12.1 → 2.13.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.
Files changed (56) hide show
  1. package/cypress/specs/EventRibbon.cy.tsx +1 -1
  2. package/cypress/specs/HeroBanner.cy.tsx +174 -0
  3. package/cypress/support/component-imports.instrumented.ts +2 -0
  4. package/cypress/support/component-imports.src.ts +2 -0
  5. package/dist/EventRibbonTemplate.js +2 -1
  6. package/dist/EventRibbonTemplate.js.map +1 -1
  7. package/dist/HeroBanner.d.ts +8 -0
  8. package/dist/HeroBanner.js +6 -0
  9. package/dist/HeroBanner.js.map +1 -1
  10. package/dist/PromoTile.d.ts +12 -22
  11. package/dist/PromoTile.js +6 -7
  12. package/dist/PromoTile.js.map +1 -1
  13. package/dist/Search.js +1 -1
  14. package/dist/Search.js.map +1 -1
  15. package/dist/assets/{InputSuggestions-CgAp8PwR.js → InputSuggestions-FI3fjOZ9.js} +1 -1
  16. package/dist/assets/{ListItemStandardExpandableTextTemplate-D5HEHY33.js → ListItemStandardExpandableTextTemplate-CkvW90wq.js} +1 -1
  17. package/dist/assets/{bundle.esm-CjcqU0ib.js → bundle.esm-BrqOd5tw.js} +129 -129
  18. package/dist/css/themes/EventRibbon.css +1 -1
  19. package/dist/css/themes/Link.css +1 -1
  20. package/dist/css/themes/RatingIndicator.css +1 -1
  21. package/dist/css/themes/Slider.css +1 -1
  22. package/dist/custom-elements-internal.json +179 -151
  23. package/dist/custom-elements.json +160 -136
  24. package/dist/generated/templates/HeroBannerTemplate.lit.js +2 -1
  25. package/dist/generated/templates/HeroBannerTemplate.lit.js.map +1 -1
  26. package/dist/generated/themes/EventRibbon.css.d.ts +1 -1
  27. package/dist/generated/themes/EventRibbon.css.js +1 -1
  28. package/dist/generated/themes/EventRibbon.css.js.map +1 -1
  29. package/dist/generated/themes/Link.css.d.ts +1 -1
  30. package/dist/generated/themes/Link.css.js +1 -1
  31. package/dist/generated/themes/Link.css.js.map +1 -1
  32. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  33. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  34. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  35. package/dist/generated/themes/Slider.css.d.ts +1 -1
  36. package/dist/generated/themes/Slider.css.js +1 -1
  37. package/dist/generated/themes/Slider.css.js.map +1 -1
  38. package/dist/types/PromoTile.d.ts +1 -1
  39. package/dist/types/PromoTile.js +57 -57
  40. package/dist/types/PromoTile.js.map +1 -1
  41. package/dist/vscode.html-custom-data.json +2 -2
  42. package/dist/web-types.json +26 -13
  43. package/package.json +1 -1
  44. package/src/EventRibbonTemplate.tsx +2 -1
  45. package/src/HeroBanner.hbs +3 -0
  46. package/src/HeroBanner.ts +14 -0
  47. package/src/PromoTile.ts +16 -26
  48. package/src/Search.ts +1 -1
  49. package/src/generated/templates/HeroBannerTemplate.lit.ts +2 -1
  50. package/src/generated/themes/EventRibbon.css.ts +1 -1
  51. package/src/generated/themes/Link.css.ts +1 -1
  52. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  53. package/src/generated/themes/Slider.css.ts +1 -1
  54. package/src/themes/EventRibbon.css +17 -6
  55. package/src/themes/Link.css +4 -2
  56. package/src/types/PromoTile.ts +1 -1
@@ -119,7 +119,7 @@ describe("EventRibbon", () => {
119
119
 
120
120
  it("correctly renders custom logo image", () => {
121
121
  cy.mount(customLogoEventRibbon)
122
- cy.get("[udex-event-ribbon]").shadow().find(".udex-event-ribbon__logo-img").should("have.attr", "src", "https://cdn.udex.services.sap.com/dds/design-tokens/assets/logos/sap-logo.svg");
122
+ cy.get("[udex-event-ribbon]").shadow().find(".udex-event-ribbon__custom-logo").should("have.attr", "src", "https://cdn.udex.services.sap.com/dds/design-tokens/assets/logos/sap-logo.svg");
123
123
  });
124
124
 
125
125
  it("correctly renders custom logo image alt text", () => {
@@ -0,0 +1,174 @@
1
+ import {UDExHeroBanner, UDExButton, UDExBreadcrumbs, UDExBreadcrumbsItem} from "../support/component-imports.js";
2
+ import UDExButtonDesign from "../../src/types/ButtonDesign.js";
3
+
4
+ const primaryContentHeader = "Grow your business through enterprise";
5
+ const secondaryContentHeader = "Entertain an idea";
6
+ const backgroundVideoLabel = "Hero Banner background video label";
7
+ const backgroundImageLabel = "Hero Banner background image label";
8
+ const backgroundImageSrc = "./stories/hero-banner/bg1.png";
9
+ const backgroundVideoSrc = "./stories/hero-banner-bg-video.mp4";
10
+ const mediaContentImage = "./stories/hero-banner/bg6.jpg";
11
+ const linearGradient = "linear-gradient(to bottom, #1e5799 0%,#7db9e8 100%)";
12
+ const contentText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis posuere in massa id fringilla. Nunc rutrum turpis purus, et dignissim arcu gravida ut. Morbi sed sem ac magna consectetur tincidunt dapibus sed ipsum.";
13
+ const backgroundColor = "#fbdab9";
14
+
15
+ const heroBanner = <>
16
+ <UDExHeroBanner
17
+ id="heroBannerDefault"
18
+ backgroundImage={backgroundImageSrc}
19
+ backgroundImageLabel={backgroundImageLabel}
20
+ backgroundColor={backgroundColor}>
21
+ <div slot="content">
22
+ <UDExBreadcrumbs show-items="5" slot="breadcrumbs">
23
+ <UDExBreadcrumbsItem href="https://www.sap.com" icon="home" target="_blank" accessibleName="Home page">SAP Home</UDExBreadcrumbsItem>
24
+ <UDExBreadcrumbsItem href="htttps://www.sap.com" target="_blank">Second level</UDExBreadcrumbsItem>
25
+ <UDExBreadcrumbsItem href="htttps://www.sap.com" target="_blank">Third level</UDExBreadcrumbsItem>
26
+ <UDExBreadcrumbsItem href="htttps://www.sap.com" target="_blank">Fourth level</UDExBreadcrumbsItem>
27
+ <UDExBreadcrumbsItem href="htttps://www.sap.com" target="_blank">Fifth level</UDExBreadcrumbsItem>
28
+ </UDExBreadcrumbs>
29
+ <h1>{primaryContentHeader}</h1>
30
+ <p>{contentText}</p>
31
+ <div>
32
+ <UDExButton design={UDExButtonDesign.Positive}>Request a demo</UDExButton>
33
+ <UDExButton design={UDExButtonDesign.Transparent}>Watch the video</UDExButton>
34
+ </div>
35
+ </div>
36
+ <div slot="mediaContent">
37
+ <img src={mediaContentImage} alt="SAP support portal"/>
38
+ </div>
39
+ </UDExHeroBanner>
40
+ </>
41
+
42
+ const heroBannerWithGradient = <>
43
+ <UDExHeroBanner
44
+ id="heroBannerWithGradient"
45
+ backgroundImage={backgroundImageSrc}
46
+ backgroundImageLabel={backgroundVideoLabel}
47
+ backgroundGradient={linearGradient}>
48
+ <div slot="content">
49
+ <h1>{primaryContentHeader}</h1>
50
+ <p>{contentText}</p>
51
+ </div>
52
+ </UDExHeroBanner>
53
+ </>
54
+
55
+ const heroBannerWithAdditionalContent = <>
56
+ <UDExHeroBanner id="heroBannerWithAdditionalContent">
57
+ <div slot="content">
58
+ <h1>{primaryContentHeader}</h1>
59
+ <p>{contentText}</p>
60
+ <div>
61
+ <UDExButton design={UDExButtonDesign.Positive}>Request a demo</UDExButton>
62
+ <UDExButton design={UDExButtonDesign.Transparent}>Watch the video</UDExButton>
63
+ </div>
64
+ </div>
65
+
66
+ <div slot="additionalContent">
67
+ <h1>{secondaryContentHeader}</h1>
68
+ <p>{contentText}</p>
69
+ </div>
70
+ </UDExHeroBanner>
71
+ </>
72
+
73
+ const heroBannerWithVideoBackground = <>
74
+ <UDExHeroBanner
75
+ id="heroBannerVideoBackground"
76
+ backgroundVideo={backgroundVideoSrc}
77
+ backgroundVideoLabel={backgroundVideoLabel}>
78
+ <div slot="content">
79
+ <h1>{primaryContentHeader}</h1>
80
+ <p>{contentText}</p>
81
+ <div>
82
+ <UDExButton design={UDExButtonDesign.Positive}>Request a demo</UDExButton>
83
+ <UDExButton design={UDExButtonDesign.Transparent}>Watch the video</UDExButton>
84
+ </div>
85
+ </div>
86
+ </UDExHeroBanner>
87
+ </>
88
+
89
+ describe("Hero Banner component", () => {
90
+ describe("Hero Banner default", async () => {
91
+ beforeEach(() => {
92
+ cy.mount(heroBanner);
93
+ cy.get("#heroBannerDefault").shadow().as("heroBannerDefault");
94
+ });
95
+
96
+ it("tests if web component is correctly rendered", () => {
97
+ cy.get("@heroBannerDefault").find(".udex-hero-banner").should("be.visible");
98
+ });
99
+
100
+ it("tests if component renders primary content", () => {
101
+ cy.get("#heroBannerDefault").find("div[slot=content] h1").should("have.text", primaryContentHeader);
102
+ cy.get("#heroBannerDefault").find("div[slot=content]").find("h1, p, udex-button").should("have.length", 4);
103
+ });
104
+
105
+ it("tests if component renders background image", () => {
106
+ cy.get("@heroBannerDefault").find("img.udex-hero-banner__background-image").should("be.visible");
107
+ });
108
+
109
+ it("tests if correct background image is used", () => {
110
+ cy.get("@heroBannerDefault").find(".udex-hero-banner__background-image").should("have.attr", "src", backgroundImageSrc);
111
+ });
112
+
113
+ it("tests if correct background image label is applied", () => {
114
+ cy.get("@heroBannerDefault").find(".udex-hero-banner__background-image").should("have.attr", "alt", backgroundImageLabel);
115
+ });
116
+
117
+ it("tests if correct background color is applied", () => {
118
+ cy.get("@heroBannerDefault").find(".udex-hero-banner").should("have.attr", "style", `background-color: ${backgroundColor}; `);
119
+ });
120
+
121
+ it("tests if correct breadcrumbs is applied", () => {
122
+ cy.get("#heroBannerDefault").find("udex-breadcrumbs").find("udex-breadcrumbs-item").should("have.length", 5);
123
+ });
124
+
125
+ it("tests if component renders media content", () => {
126
+ cy.get("#heroBannerDefault").find("div[slot=mediaContent] img").should("have.attr", "src", mediaContentImage);
127
+ });
128
+ });
129
+
130
+ describe("Hero Banner with background video", () => {
131
+ beforeEach(() => {
132
+ cy.viewport(1920, 1080);
133
+ cy.mount(heroBannerWithVideoBackground);
134
+ cy.get("#heroBannerVideoBackground").shadow().as("videoBackground");
135
+ });
136
+
137
+ it("tests if component renders background video", () => {
138
+ cy.get("@videoBackground").find("video.udex-hero-banner__background-video").should("be.visible");
139
+ });
140
+
141
+ it("tests if correct background video is used", () => {
142
+ cy.get("@videoBackground").find("video.udex-hero-banner__background-video source").should("have.attr", "src", backgroundVideoSrc);
143
+ });
144
+
145
+ it("tests if correct background video label is applied", () => {
146
+ cy.get("@videoBackground").find("video.udex-hero-banner__background-video").should("have.attr", "alt", backgroundVideoLabel);
147
+ });
148
+ });
149
+
150
+ describe("Hero Banner with gradient", () => {
151
+ it("tests if correct gradient background is applied", () => {
152
+ cy.mount(heroBannerWithGradient);
153
+ cy.get("#heroBannerWithGradient").shadow().find(".udex-hero-banner").should("have.attr", "style", `background-color: transparent; background-image:${linearGradient}`);
154
+ });
155
+ });
156
+
157
+ describe("Hero Banner with additional content", () => {
158
+ beforeEach(() => {
159
+ cy.mount(heroBannerWithAdditionalContent);
160
+ });
161
+
162
+ it("tests if component renders secondary content", () => {
163
+ cy.get("#heroBannerWithAdditionalContent").find("div[slot=additionalContent] h1").should("have.text", secondaryContentHeader);
164
+ });
165
+
166
+ it("tests if defaults for properties are correctly applied", () => {
167
+ cy.get("#heroBannerWithAdditionalContent").shadow().find(".udex-hero-banner").should("have.attr", "style", "background-color: transparent; ");
168
+
169
+ cy.get("#heroBannerWithAdditionalContent").shadow().find(".udex-hero-banner__background-image").should("not.exist");
170
+
171
+ cy.get("#heroBannerWithAdditionalContent").shadow().find(".udex-hero-banner__background-video-wrapper").should("not.exist");
172
+ });
173
+ });
174
+ });
@@ -56,6 +56,7 @@ import UDExPromoTile from "../../instrumented/PromoTile.js";
56
56
  import UDExQuote from "../../instrumented/Quote.js";
57
57
  import UDExMastheadProfileMenu from "../../instrumented/MastheadProfileMenu.js";
58
58
  import UDExMessageStrip from "../../instrumented/MessageStrip.js";
59
+ import UDExHeroBanner from "../../instrumented/HeroBanner.js";
59
60
 
60
61
  export {
61
62
  UDExAccordion,
@@ -116,4 +117,5 @@ export {
116
117
  UDExQuote,
117
118
  UDExMastheadProfileMenu,
118
119
  UDExMessageStrip,
120
+ UDExHeroBanner,
119
121
  };
@@ -56,6 +56,7 @@ import UDExPromoTile from "../../src/PromoTile.js";
56
56
  import UDExQuote from "../../src/Quote.js";
57
57
  import UDExMastheadProfileMenu from "../../src/MastheadProfileMenu.js";
58
58
  import UDExMessageStrip from "../../src/MessageStrip.js";
59
+ import UDExHeroBanner from "../../src/HeroBanner.js";
59
60
 
60
61
  export {
61
62
  UDExAccordion,
@@ -116,4 +117,5 @@ export {
116
117
  UDExQuote,
117
118
  UDExMastheadProfileMenu,
118
119
  UDExMessageStrip,
120
+ UDExHeroBanner,
119
121
  };
@@ -2,10 +2,11 @@ import { jsx as _jsx, jsxs as _jsxs } from "@ui5/webcomponents-base/jsx-runtime"
2
2
  import Icon from "@ui5/webcomponents/dist/Icon.js";
3
3
  export default function EventRibbonTemplate() {
4
4
  const rootClass = "udex-event-ribbon";
5
+ const logoClass = this.customEventLogo?.length ? `${rootClass}__logo-img ${rootClass}__custom-logo` : `${rootClass}__logo-img`;
5
6
  const { text, target, url } = this._eventLink;
6
7
  return (_jsxs("a", { onKeyDown: this.handleKeyDown, role: "banner", "aria-label": this.eventText, class: {
7
8
  [`${rootClass}__container`]: true,
8
9
  [`${rootClass}__container-with-background-image`]: this.backgroundImage
9
- }, target: target, href: url, title: text, children: [_jsx("div", { class: `${rootClass}__logo`, children: _jsx("img", { class: `${rootClass}__logo-img`, src: this.eventLogoPath, alt: this.eventLogoAlt }) }), this.eventText && _jsx("p", { class: `${rootClass}__text`, children: this.eventText }), _jsxs("div", { class: `${rootClass}__link-container`, children: [this.eventLinkIcon && _jsx(Icon, { name: this.eventLinkIcon }), _jsx("span", { class: `${rootClass}__link-text`, children: text })] })] }));
10
+ }, target: target, href: url, title: text, children: [_jsx("div", { class: `${rootClass}__logo`, children: _jsx("img", { class: `${logoClass}`, src: this.eventLogoPath, alt: this.eventLogoAlt }) }), this.eventText && _jsx("p", { class: `${rootClass}__text`, children: this.eventText }), _jsxs("div", { class: `${rootClass}__link-container`, children: [this.eventLinkIcon && _jsx(Icon, { name: this.eventLinkIcon }), _jsx("span", { class: `${rootClass}__link-text`, children: text })] })] }));
10
11
  }
11
12
  //# sourceMappingURL=EventRibbonTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventRibbonTemplate.js","sourceRoot":"","sources":["../src/EventRibbonTemplate.tsx"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,iCAAiC,CAAC;AAGnD,MAAM,CAAC,OAAO,UAAU,mBAAmB;IACzC,MAAM,SAAS,GAAG,mBAAmB,CAAC;IACtC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;IAC9C,OAAO,CACL,aACE,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,IAAI,EAAC,QAAQ,gBACD,IAAI,CAAC,SAAS,EAC1B,KAAK,EAAE;YACL,CAAC,GAAG,SAAS,aAAa,CAAC,EAAE,IAAI;YACjC,CAAC,GAAG,SAAS,mCAAmC,CAAC,EAAE,IAAI,CAAC,eAAe;SACxE,EACD,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,GAAG,EACT,KAAK,EAAE,IAAI,aACX,cAAK,KAAK,EAAE,GAAG,SAAS,QAAQ,YAC9B,cAAK,KAAK,EAAE,GAAG,SAAS,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,GAAG,GACpF,EACL,IAAI,CAAC,SAAS,IAAI,YAAG,KAAK,EAAE,GAAG,SAAS,QAAQ,YAAG,IAAI,CAAC,SAAS,GAAK,EACvE,eAAK,KAAK,EAAE,GAAG,SAAS,kBAAkB,aACvC,IAAI,CAAC,aAAa,IAAI,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,CAAC,aAAa,GAAS,EAC9D,eAAM,KAAK,EAAE,GAAG,SAAS,aAAa,YAAG,IAAI,GAAQ,IACjD,IACJ,CACL,CAAC;AACJ,CAAC","sourcesContent":["import Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport type UDExEventRibbon from \"./EventRibbon.js\";\n\nexport default function EventRibbonTemplate(this: UDExEventRibbon) {\n const rootClass = \"udex-event-ribbon\";\n const { text, target, url } = this._eventLink;\n return (\n <a\n onKeyDown={this.handleKeyDown}\n role=\"banner\"\n aria-label={this.eventText}\n class={{\n [`${rootClass}__container`]: true,\n [`${rootClass}__container-with-background-image`]: this.backgroundImage\n }}\n target={target}\n href={url}\n title={text}>\n <div class={`${rootClass}__logo`}>\n <img class={`${rootClass}__logo-img`} src={this.eventLogoPath} alt={this.eventLogoAlt}/>\n </div>\n {this.eventText && <p class={`${rootClass}__text`}>{this.eventText}</p>}\n <div class={`${rootClass}__link-container`}>\n {this.eventLinkIcon && <Icon name={this.eventLinkIcon}></Icon>}\n <span class={`${rootClass}__link-text`}>{text}</span>\n </div>\n </a>\n );\n}\n"]}
1
+ {"version":3,"file":"EventRibbonTemplate.js","sourceRoot":"","sources":["../src/EventRibbonTemplate.tsx"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,iCAAiC,CAAC;AAGnD,MAAM,CAAC,OAAO,UAAU,mBAAmB;IACzC,MAAM,SAAS,GAAG,mBAAmB,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,cAAc,SAAS,eAAe,CAAC,CAAC,CAAC,GAAG,SAAS,YAAY,CAAC;IAC/H,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;IAC9C,OAAO,CACL,aACE,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,IAAI,EAAC,QAAQ,gBACD,IAAI,CAAC,SAAS,EAC1B,KAAK,EAAE;YACL,CAAC,GAAG,SAAS,aAAa,CAAC,EAAE,IAAI;YACjC,CAAC,GAAG,SAAS,mCAAmC,CAAC,EAAE,IAAI,CAAC,eAAe;SACxE,EACD,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,GAAG,EACT,KAAK,EAAE,IAAI,aACX,cAAK,KAAK,EAAE,GAAG,SAAS,QAAQ,YAC9B,cAAK,KAAK,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,GAAG,GAC1E,EACL,IAAI,CAAC,SAAS,IAAI,YAAG,KAAK,EAAE,GAAG,SAAS,QAAQ,YAAG,IAAI,CAAC,SAAS,GAAK,EACvE,eAAK,KAAK,EAAE,GAAG,SAAS,kBAAkB,aACvC,IAAI,CAAC,aAAa,IAAI,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,CAAC,aAAa,GAAS,EAC9D,eAAM,KAAK,EAAE,GAAG,SAAS,aAAa,YAAG,IAAI,GAAQ,IACjD,IACJ,CACL,CAAC;AACJ,CAAC","sourcesContent":["import Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport type UDExEventRibbon from \"./EventRibbon.js\";\n\nexport default function EventRibbonTemplate(this: UDExEventRibbon) {\n const rootClass = \"udex-event-ribbon\";\n const logoClass = this.customEventLogo?.length ? `${rootClass}__logo-img ${rootClass}__custom-logo` : `${rootClass}__logo-img`;\n const { text, target, url } = this._eventLink;\n return (\n <a\n onKeyDown={this.handleKeyDown}\n role=\"banner\"\n aria-label={this.eventText}\n class={{\n [`${rootClass}__container`]: true,\n [`${rootClass}__container-with-background-image`]: this.backgroundImage\n }}\n target={target}\n href={url}\n title={text}>\n <div class={`${rootClass}__logo`}>\n <img class={`${logoClass}`} src={this.eventLogoPath} alt={this.eventLogoAlt}/>\n </div>\n {this.eventText && <p class={`${rootClass}__text`}>{this.eventText}</p>}\n <div class={`${rootClass}__link-container`}>\n {this.eventLinkIcon && <Icon name={this.eventLinkIcon}></Icon>}\n <span class={`${rootClass}__link-text`}>{text}</span>\n </div>\n </a>\n );\n}\n"]}
@@ -73,6 +73,13 @@ declare class UDExHeroBanner extends UI5Element {
73
73
  * @public
74
74
  */
75
75
  content?: Array<HTMLElement>;
76
+ /**
77
+ * Slot for image or video content.
78
+ *
79
+ * @slot
80
+ * @public
81
+ */
82
+ mediaContent?: Array<HTMLElement>;
76
83
  /**
77
84
  * Slot for any additional content.
78
85
  *
@@ -96,6 +103,7 @@ declare class UDExHeroBanner extends UI5Element {
96
103
  */
97
104
  get shouldVideoAutoplay(): boolean;
98
105
  get heroBannerClasses(): string;
106
+ get hasMediaContent(): boolean;
99
107
  get hasAdditionalContent(): boolean;
100
108
  get hasCustomBackgroundPicture(): boolean;
101
109
  get mediaButtonIconName(): "media-play" | "media-pause";
@@ -67,6 +67,9 @@ let UDExHeroBanner = class UDExHeroBanner extends UI5Element {
67
67
  }
68
68
  return heroBannerClasses.join(" ");
69
69
  }
70
+ get hasMediaContent() {
71
+ return !!this.mediaContent?.length;
72
+ }
70
73
  get hasAdditionalContent() {
71
74
  return !!this.additionalContent?.length;
72
75
  }
@@ -137,6 +140,9 @@ __decorate([
137
140
  __decorate([
138
141
  slot()
139
142
  ], UDExHeroBanner.prototype, "content", void 0);
143
+ __decorate([
144
+ slot()
145
+ ], UDExHeroBanner.prototype, "mediaContent", void 0);
140
146
  __decorate([
141
147
  slot()
142
148
  ], UDExHeroBanner.prototype, "additionalContent", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"HeroBanner.js","sourceRoot":"","sources":["../src/HeroBanner.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport { isSpace } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport \"@ui5/webcomponents-icons/dist/media-play.js\";\nimport \"@ui5/webcomponents-icons/dist/media-pause.js\";\n\nimport HeroBannerTemplate from \"./generated/templates/HeroBannerTemplate.lit.js\";\n\n// Styles\nimport HeroBannerCss from \"./generated/themes/HeroBanner.css.js\";\n\nexport enum UDExImageLoadingStrategies {\n Eager = \"eager\",\n Lazy = \"lazy\",\n}\n\n/**\n * @class\n *\n * @constructor\n * @extends UI5Element\n * @tagname udex-hero-banner\n * @public\n */\n@customElement({\n tag: \"udex-hero-banner\",\n renderer: litRender,\n styles: HeroBannerCss,\n template: HeroBannerTemplate,\n dependencies: [Icon],\n})\nclass UDExHeroBanner extends UI5Element {\n /**\n * Allows control over the background image source.\n *\n * @public\n */\n @property({ type: String })\n backgroundImage?: string;\n\n /**\n * Allows control over the background image loading strategy.\n *\n * @public\n */\n @property()\n backgroundImageLoadingStrategy: `${UDExImageLoadingStrategies}` = UDExImageLoadingStrategies.Eager;\n\n /**\n * Used as the label for background image.\n *\n * @public\n */\n @property({ type: String })\n backgroundImageLabel?: string;\n\n /**\n * Allows control over the background video source.\n *\n * @public\n */\n @property({ type: String })\n backgroundVideo?: string;\n\n /**\n * Used as the label for background video.\n *\n * @public\n */\n @property({ type: String })\n backgroundVideoLabel?: string;\n\n /**\n * Allows control over the background color.\n * Value provided should be compatible with standard CSS rendering, e.g:\n * - HEX: \"#FFF\", \"#FFFFFF\", \"FFFFFFFF\"\n * - RGB/A: \"rgb(255, 255, 255)\", \"rgba(255, 255, 255, 1)\"\n * - HSL/A: \"hsl(0, 100%, 100%)\", \"hsla(0, 100%, 100%, 1\"\n * - Variables: \"var(--sapShell_Background)\", \"var(--udexColorNeutralWhite)\"\n * - Text values: \"white\", \"red\"\n *\n * @public\n */\n @property({ type: String })\n backgroundColor?: string;\n\n /**\n * Allows control over the background-image to set css gradient.\n * Value provided should be compatible with standard CSS linear-gradient rendering, e.g:\n * linear-gradient(to bottom, #1e5799 0%,#7db9e8 100%);\n * linear-gradient(to bottom, var(--udexColorBlue2) 0%,var(--udexColorBlue4) 100%);\n *\n * @public\n */\n @property({ type: String })\n backgroundGradient?: string;\n\n @property({ type: Boolean, noAttribute: true })\n _isVideoRunning?: boolean;\n\n /**\n * Slot for primary content.\n *\n * @slot\n * @public\n */\n @slot()\n content?: Array<HTMLElement>;\n\n /**\n * Slot for any additional content.\n *\n * @slot\n * @public\n */\n @slot()\n additionalContent?: Array<HTMLElement>;\n\n /**\n * Slot background picture override.\n *\n * @slot\n * @public\n */\n @slot()\n backgroundPicture?: Array<HTMLElement>;\n\n get hasBackgroundImage(): boolean {\n return !!this.backgroundImage;\n }\n get hasBackgroundVideo(): boolean {\n return !!this.backgroundVideo;\n }\n get wrapperBackgroundColor(): string {\n return this.backgroundColor ? this.backgroundColor : \"transparent\";\n }\n\n get wrapperBackgroundImage(): string {\n return this.backgroundGradient ? `background-image:${this.backgroundGradient}` : \"\";\n }\n\n /**\n * Determines if the video should autoplay based on the user's global preference.\n */\n get shouldVideoAutoplay() {\n return !window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n }\n\n get heroBannerClasses(): string {\n const heroBannerClasses = [\"udex-hero-banner\"];\n if (this.hasBackgroundVideo) {\n heroBannerClasses.push(\"udex-hero-banner--video\");\n }\n return heroBannerClasses.join(\" \");\n }\n get hasAdditionalContent() {\n return !!this.additionalContent?.length;\n }\n\n get hasCustomBackgroundPicture() {\n return !!this.backgroundPicture?.length;\n }\n\n get mediaButtonIconName() {\n return this._isVideoRunning ? \"media-pause\" : \"media-play\";\n }\n get _video() {\n return this.shadowRoot?.querySelector<HTMLVideoElement>(\"video\");\n }\n\n _toggleMediaButton(): void {\n if (this._video?.paused) {\n this._video?.play();\n } else {\n this._video?.pause();\n }\n this._calculateMediaButtonState();\n }\n\n _calculateMediaButtonState() {\n this._isVideoRunning = this._video ? !this._video.paused : false;\n }\n\n _isHTMLDivElement = (element: HTMLElement): element is HTMLDivElement => {\n return element.tagName === \"DIV\";\n };\n\n _handleKeydown(event: KeyboardEvent): void {\n const target = <HTMLElement>event.target;\n if (this._isHTMLDivElement(target) && isSpace(event)) {\n event.preventDefault();\n event.stopPropagation();\n this._toggleMediaButton();\n }\n }\n\n onEnterDOM() {\n if (this.backgroundVideo) {\n if (this.backgroundColor) {\n this.style.setProperty(\"--udexHeroBannerBackgroundVideoColor\", `${this.wrapperBackgroundColor}`);\n }\n this._video?.addEventListener(\"play\", () => {\n this._calculateMediaButtonState();\n });\n }\n }\n}\nUDExHeroBanner.define();\n\nexport default UDExHeroBanner;\n"]}
1
+ {"version":3,"file":"HeroBanner.js","sourceRoot":"","sources":["../src/HeroBanner.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport { isSpace } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport \"@ui5/webcomponents-icons/dist/media-play.js\";\nimport \"@ui5/webcomponents-icons/dist/media-pause.js\";\n\nimport HeroBannerTemplate from \"./generated/templates/HeroBannerTemplate.lit.js\";\n\n// Styles\nimport HeroBannerCss from \"./generated/themes/HeroBanner.css.js\";\n\nexport enum UDExImageLoadingStrategies {\n Eager = \"eager\",\n Lazy = \"lazy\",\n}\n\n/**\n * @class\n *\n * @constructor\n * @extends UI5Element\n * @tagname udex-hero-banner\n * @public\n */\n@customElement({\n tag: \"udex-hero-banner\",\n renderer: litRender,\n styles: HeroBannerCss,\n template: HeroBannerTemplate,\n dependencies: [Icon],\n})\nclass UDExHeroBanner extends UI5Element {\n /**\n * Allows control over the background image source.\n *\n * @public\n */\n @property({ type: String })\n backgroundImage?: string;\n\n /**\n * Allows control over the background image loading strategy.\n *\n * @public\n */\n @property()\n backgroundImageLoadingStrategy: `${UDExImageLoadingStrategies}` = UDExImageLoadingStrategies.Eager;\n\n /**\n * Used as the label for background image.\n *\n * @public\n */\n @property({ type: String })\n backgroundImageLabel?: string;\n\n /**\n * Allows control over the background video source.\n *\n * @public\n */\n @property({ type: String })\n backgroundVideo?: string;\n\n /**\n * Used as the label for background video.\n *\n * @public\n */\n @property({ type: String })\n backgroundVideoLabel?: string;\n\n /**\n * Allows control over the background color.\n * Value provided should be compatible with standard CSS rendering, e.g:\n * - HEX: \"#FFF\", \"#FFFFFF\", \"FFFFFFFF\"\n * - RGB/A: \"rgb(255, 255, 255)\", \"rgba(255, 255, 255, 1)\"\n * - HSL/A: \"hsl(0, 100%, 100%)\", \"hsla(0, 100%, 100%, 1\"\n * - Variables: \"var(--sapShell_Background)\", \"var(--udexColorNeutralWhite)\"\n * - Text values: \"white\", \"red\"\n *\n * @public\n */\n @property({ type: String })\n backgroundColor?: string;\n\n /**\n * Allows control over the background-image to set css gradient.\n * Value provided should be compatible with standard CSS linear-gradient rendering, e.g:\n * linear-gradient(to bottom, #1e5799 0%,#7db9e8 100%);\n * linear-gradient(to bottom, var(--udexColorBlue2) 0%,var(--udexColorBlue4) 100%);\n *\n * @public\n */\n @property({ type: String })\n backgroundGradient?: string;\n\n @property({ type: Boolean, noAttribute: true })\n _isVideoRunning?: boolean;\n\n /**\n * Slot for primary content.\n *\n * @slot\n * @public\n */\n @slot()\n content?: Array<HTMLElement>;\n\n /**\n * Slot for image or video content.\n *\n * @slot\n * @public\n */\n @slot()\n mediaContent?: Array<HTMLElement>;\n\n /**\n * Slot for any additional content.\n *\n * @slot\n * @public\n */\n @slot()\n additionalContent?: Array<HTMLElement>;\n\n /**\n * Slot background picture override.\n *\n * @slot\n * @public\n */\n @slot()\n backgroundPicture?: Array<HTMLElement>;\n\n get hasBackgroundImage(): boolean {\n return !!this.backgroundImage;\n }\n get hasBackgroundVideo(): boolean {\n return !!this.backgroundVideo;\n }\n get wrapperBackgroundColor(): string {\n return this.backgroundColor ? this.backgroundColor : \"transparent\";\n }\n\n get wrapperBackgroundImage(): string {\n return this.backgroundGradient ? `background-image:${this.backgroundGradient}` : \"\";\n }\n\n /**\n * Determines if the video should autoplay based on the user's global preference.\n */\n get shouldVideoAutoplay() {\n return !window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n }\n\n get heroBannerClasses(): string {\n const heroBannerClasses = [\"udex-hero-banner\"];\n if (this.hasBackgroundVideo) {\n heroBannerClasses.push(\"udex-hero-banner--video\");\n }\n return heroBannerClasses.join(\" \");\n }\n\n get hasMediaContent() {\n return !!this.mediaContent?.length;\n }\n\n get hasAdditionalContent() {\n return !!this.additionalContent?.length;\n }\n\n get hasCustomBackgroundPicture() {\n return !!this.backgroundPicture?.length;\n }\n\n get mediaButtonIconName() {\n return this._isVideoRunning ? \"media-pause\" : \"media-play\";\n }\n get _video() {\n return this.shadowRoot?.querySelector<HTMLVideoElement>(\"video\");\n }\n\n _toggleMediaButton(): void {\n if (this._video?.paused) {\n this._video?.play();\n } else {\n this._video?.pause();\n }\n this._calculateMediaButtonState();\n }\n\n _calculateMediaButtonState() {\n this._isVideoRunning = this._video ? !this._video.paused : false;\n }\n\n _isHTMLDivElement = (element: HTMLElement): element is HTMLDivElement => {\n return element.tagName === \"DIV\";\n };\n\n _handleKeydown(event: KeyboardEvent): void {\n const target = <HTMLElement>event.target;\n if (this._isHTMLDivElement(target) && isSpace(event)) {\n event.preventDefault();\n event.stopPropagation();\n this._toggleMediaButton();\n }\n }\n\n onEnterDOM() {\n if (this.backgroundVideo) {\n if (this.backgroundColor) {\n this.style.setProperty(\"--udexHeroBannerBackgroundVideoColor\", `${this.wrapperBackgroundColor}`);\n }\n this._video?.addEventListener(\"play\", () => {\n this._calculateMediaButtonState();\n });\n }\n }\n}\nUDExHeroBanner.define();\n\nexport default UDExHeroBanner;\n"]}
@@ -3,7 +3,7 @@ import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delega
3
3
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
4
4
  import type UDExButton from "./Button.js";
5
5
  import UDExButtonDesign from "./types/ButtonDesign.js";
6
- import { UDExPromoTileColorSheme, UDExPromoTileMode } from "./types/PromoTile.js";
6
+ import { UDExPromoTileColorScheme, UDExPromoTileMode } from "./types/PromoTile.js";
7
7
  export declare enum UDExOrientation {
8
8
  Vertical = "Vertical",
9
9
  Horizontal = "Horizontal"
@@ -40,80 +40,70 @@ declare class UDExPromoTile extends UI5Element {
40
40
  /**
41
41
  * Defines the orientation of the Promo Tile component.
42
42
  *
43
- * @type {string}
44
- * @defaultvalue "Vertical"
43
+ * @default "Vertical"
45
44
  * @public
46
45
  */
47
46
  orientation: `${UDExOrientation}`;
48
47
  /**
49
48
  * Defines the UI5 icon name in the pictogram section.
50
49
  *
51
- * @type {string}
52
- * @defaultvalue ""
50
+ * @default ""
53
51
  * @public
54
52
  */
55
53
  icon?: string;
56
54
  /**
57
55
  * Defines the image aria label and alt in the pictogram section.
58
56
  *
59
- * @type {string}
60
- * @defaultvalue ""
57
+ * @default ""
61
58
  * @public
62
59
  */
63
60
  imageLabel?: string;
64
61
  /**
65
62
  * Defines the logo URL in the pictogram section.
66
63
  *
67
- * @type {string}
68
- * @defaultvalue ""
64
+ * @default ""
69
65
  * @public
70
66
  */
71
67
  logoUrl?: string;
72
68
  /**
73
69
  * Defines the header text of the promo tile.
74
70
  *
75
- * @type {string}
76
- * @defaultvalue ""
71
+ * @default ""
77
72
  * @public
78
73
  */
79
74
  header?: string;
80
75
  /**
81
76
  * Defines the eyebrow text of the promo tile.
82
77
  *
83
- * @type {string}
84
- * @defaultvalue ""
78
+ * @default ""
85
79
  * @public
86
80
  */
87
81
  eyebrow?: string;
88
82
  /**
89
83
  * Defines the CTA button label
90
84
  *
91
- * @type {string}
92
- * @defaultvalue ""
85
+ * @default ""
93
86
  * @public
94
87
  */
95
88
  button?: string;
96
89
  /**
97
90
  * Defines the CTA button design
98
91
  *
99
- * @type {string}
100
- * @defaultvalue ""
92
+ * @default ""
101
93
  * @public
102
94
  */
103
95
  buttonDesign?: UDExButtonDesign;
104
96
  /**
105
97
  * Defines the color scheme of the Promo Tile.
106
98
  *
107
- * @type {string}
108
- * @defaultvalue ""
99
+ * @default ""
109
100
  * @public
110
101
  */
111
- colorScheme?: UDExPromoTileColorSheme;
102
+ colorScheme?: UDExPromoTileColorScheme;
112
103
  /**
113
104
  * Defines the accessible name of the component.
114
105
  *
115
- * @type {string}
116
- * @defaultvalue ""
106
+ * @default ""
117
107
  * @public
118
108
  */
119
109
  accessibleName?: string;
package/dist/PromoTile.js CHANGED
@@ -19,7 +19,7 @@ import { PROMO_TILE, PROMO_TILE_ICON } from "./generated/i18n/i18n-defaults.js";
19
19
  import { BreakpointUtils } from "./utils/Breakpoints.js";
20
20
  import UDExButtonSize from "./types/ButtonSize.js";
21
21
  import UDExButtonDesign from "./types/ButtonDesign.js";
22
- import { UDExPromoTileColorSheme, UDExPromoTileMode } from "./types/PromoTile.js";
22
+ import { UDExPromoTileColorScheme, UDExPromoTileMode } from "./types/PromoTile.js";
23
23
  // Styles
24
24
  import PromoTileCss from "./generated/themes/PromoTile.css.js";
25
25
  export var UDExOrientation;
@@ -51,8 +51,7 @@ let UDExPromoTile = UDExPromoTile_1 = class UDExPromoTile extends UI5Element {
51
51
  /**
52
52
  * Defines the orientation of the Promo Tile component.
53
53
  *
54
- * @type {string}
55
- * @defaultvalue "Vertical"
54
+ * @default "Vertical"
56
55
  * @public
57
56
  */
58
57
  this.orientation = UDExOrientation.Vertical;
@@ -110,7 +109,7 @@ let UDExPromoTile = UDExPromoTile_1 = class UDExPromoTile extends UI5Element {
110
109
  }
111
110
  checkEyebrowColor(colorScheme) {
112
111
  const number = this.getColorNumber(colorScheme);
113
- let color = UDExPromoTileColorSheme.Blue8;
112
+ let color = UDExPromoTileColorScheme.Blue8;
114
113
  if (number === 7) {
115
114
  color = "NeutralWhite";
116
115
  }
@@ -146,7 +145,7 @@ __decorate([
146
145
  slot({ type: HTMLElement, "default": true })
147
146
  ], UDExPromoTile.prototype, "content", void 0);
148
147
  __decorate([
149
- property({ type: String })
148
+ property()
150
149
  ], UDExPromoTile.prototype, "orientation", void 0);
151
150
  __decorate([
152
151
  property({ type: String })
@@ -167,10 +166,10 @@ __decorate([
167
166
  property({ type: String })
168
167
  ], UDExPromoTile.prototype, "button", void 0);
169
168
  __decorate([
170
- property({ type: String })
169
+ property()
171
170
  ], UDExPromoTile.prototype, "buttonDesign", void 0);
172
171
  __decorate([
173
- property({ type: String })
172
+ property()
174
173
  ], UDExPromoTile.prototype, "colorScheme", void 0);
175
174
  __decorate([
176
175
  property({ type: String })
@@ -1 +1 @@
1
- {"version":3,"file":"PromoTile.js","sourceRoot":"","sources":["../src/PromoTile.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport PromoTileTemplate from \"./PromoTileTemplate.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { PROMO_TILE, PROMO_TILE_ICON } from \"./generated/i18n/i18n-defaults.js\";\nimport { BreakpointUtils } from \"./utils/Breakpoints.js\";\nimport type UDExButton from \"./Button.js\";\nimport UDExButtonSize from \"./types/ButtonSize.js\";\nimport UDExButtonDesign from \"./types/ButtonDesign.js\";\nimport { UDExPromoTileColorSheme, UDExPromoTileMode } from \"./types/PromoTile.js\";\n\n// Styles\nimport PromoTileCss from \"./generated/themes/PromoTile.css.js\";\n\nexport enum UDExOrientation {\n Vertical = \"Vertical\",\n Horizontal = \"Horizontal\",\n}\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-promo-tile</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/PromoTile.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @tagname udex-promo-tile\n * @public\n */\n@customElement({\n tag: \"udex-promo-tile\",\n renderer: jsxRenderer,\n styles: PromoTileCss,\n template: PromoTileTemplate,\n})\n\n/**\n * Triggered when the user clicks on the CTA button\n *\n * @public\n */\n@event(\"button-click\", { cancelable: true, bubbles: true })\n\nclass UDExPromoTile extends UI5Element {\n eventDetails!: {\n \"button-click\": void,\n };\n\n /**\n * Defines the text content of the Promo Tile.\n *\n * @slot content\n * @public\n */\n @slot({ type: HTMLElement, \"default\": true })\n content!: Array<HTMLElement>;\n\n /**\n * Defines the orientation of the Promo Tile component.\n *\n * @type {string}\n * @defaultvalue \"Vertical\"\n * @public\n */\n @property({ type: String })\n orientation: `${UDExOrientation}` = UDExOrientation.Vertical;\n\n /**\n * Defines the UI5 icon name in the pictogram section.\n *\n * @type {string}\n * @defaultvalue \"\"\n * @public\n */\n @property({ type: String })\n icon?: string;\n\n /**\n * Defines the image aria label and alt in the pictogram section.\n *\n * @type {string}\n * @defaultvalue \"\"\n * @public\n */\n @property({ type: String })\n imageLabel?: string;\n\n /**\n * Defines the logo URL in the pictogram section.\n *\n * @type {string}\n * @defaultvalue \"\"\n * @public\n */\n @property({ type: String })\n logoUrl?: string;\n\n /**\n * Defines the header text of the promo tile.\n *\n * @type {string}\n * @defaultvalue \"\"\n * @public\n */\n @property({ type: String })\n header?: string;\n\n /**\n * Defines the eyebrow text of the promo tile.\n *\n * @type {string}\n * @defaultvalue \"\"\n * @public\n */\n @property({ type: String })\n eyebrow?: string;\n\n /**\n * Defines the CTA button label\n *\n * @type {string}\n * @defaultvalue \"\"\n * @public\n */\n @property({ type: String })\n button?: string;\n\n /**\n * Defines the CTA button design\n *\n * @type {string}\n * @defaultvalue \"\"\n * @public\n */\n @property({ type: String })\n buttonDesign?: UDExButtonDesign;\n\n /**\n * Defines the color scheme of the Promo Tile.\n *\n * @type {string}\n * @defaultvalue \"\"\n * @public\n */\n @property({ type: String })\n colorScheme?: UDExPromoTileColorSheme;\n\n /**\n * Defines the accessible name of the component.\n *\n * @type {string}\n * @defaultvalue \"\"\n * @public\n */\n @property({ type: String })\n accessibleName?: string;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _handleResizeBound: ResizeObserverCallback;\n _button: UDExButton | undefined;\n _colorMode: UDExPromoTileMode = UDExPromoTileMode.light;\n _lightModeColors: Array<number> = [1, 2];\n _darkModeColors: Array<number> = [7, 8, 9, 10];\n\n constructor() {\n super();\n this._handleResizeBound = this._handleResize.bind(this);\n }\n\n onEnterDOM(): void {\n if (isDesktop()) {\n this.setAttribute(\"desktop\", \"\");\n }\n ResizeHandler.register(this, this._handleResizeBound);\n }\n\n onExitDOM(): void {\n ResizeHandler.deregister(this, this._handleResizeBound);\n }\n\n onAfterRendering() {\n this._button = this.getButton();\n this.applyColorScheme();\n }\n\n _handleResize(): void {\n if (this._button) {\n this._button.size = this.isMobile ? UDExButtonSize.Medium : UDExButtonSize.Large;\n }\n }\n\n getButton(): UDExButton | undefined {\n return this.shadowRoot!.querySelector<UDExButton>(\n \"[udex-button]\",\n )!;\n }\n\n applyColorScheme(): void {\n if (!this.colorScheme) {\n return;\n }\n\n this._colorMode = this.checkColorMode(this.colorScheme);\n const eyebrowColor = this.checkEyebrowColor(this.colorScheme);\n\n if (this._colorMode === UDExPromoTileMode.dark) {\n if (this._button) {\n this._button.design = this.buttonDesign || UDExButtonDesign.Secondary;\n }\n this.style.setProperty(\"--udex-promo-tile-icon-fill-color\", `var(--udexCoreTextLight)`);\n }\n this.style.setProperty(\"--udex-promo-tile-background\", `var(--udexColor${this.colorScheme})`);\n this.style.setProperty(\"--udex-promo-tile-eyebrow-color\", `var(--udexColor${eyebrowColor})`);\n }\n\n getColorNumber(colorScheme: string): number {\n const match = colorScheme.match(/\\d+/);\n return match ? parseInt(match[0]) : 0;\n }\n\n checkColorMode(colorScheme: string): UDExPromoTileMode {\n const number = this.getColorNumber(colorScheme);\n\n if (number && this._darkModeColors.includes(number)) {\n return UDExPromoTileMode.dark;\n }\n return UDExPromoTileMode.light;\n }\n\n checkEyebrowColor(colorScheme: string): string {\n const number = this.getColorNumber(colorScheme);\n let color: string = UDExPromoTileColorSheme.Blue8;\n\n if (number === 7) {\n color = \"NeutralWhite\";\n } else if (this._darkModeColors.includes(number)) {\n color = colorScheme.replace(`${number}`, `${number - 7}`);\n } else if (this._lightModeColors.includes(number)) {\n color = colorScheme.replace(`${number}`, `${number + 7}`);\n }\n return color;\n }\n\n get isMobile(): boolean {\n return BreakpointUtils.isAtMost(\"S\");\n }\n\n get promoTileContainerText(): string {\n return this.accessibleName || this.header || UDExPromoTile.i18nBundle.getText(PROMO_TILE);\n }\n\n get _showPictogram(): boolean {\n return !!this.icon || !!this.logoUrl;\n }\n\n get _showLogo(): boolean {\n return !this.icon && !!this.logoUrl;\n }\n\n get _imageLabel(): string {\n return this.imageLabel || UDExPromoTile.i18nBundle.getText(PROMO_TILE_ICON);\n }\n\n handleCTAButtonClick(e: Event) {\n e.preventDefault();\n this.fireDecoratorEvent(\"button-click\");\n }\n}\n\nUDExPromoTile.define();\n\nexport default UDExPromoTile;\n"]}
1
+ {"version":3,"file":"PromoTile.js","sourceRoot":"","sources":["../src/PromoTile.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport PromoTileTemplate from \"./PromoTileTemplate.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { PROMO_TILE, PROMO_TILE_ICON } from \"./generated/i18n/i18n-defaults.js\";\nimport { BreakpointUtils } from \"./utils/Breakpoints.js\";\nimport type UDExButton from \"./Button.js\";\nimport UDExButtonSize from \"./types/ButtonSize.js\";\nimport UDExButtonDesign from \"./types/ButtonDesign.js\";\nimport { UDExPromoTileColorScheme, UDExPromoTileMode } from \"./types/PromoTile.js\";\n\n// Styles\nimport PromoTileCss from \"./generated/themes/PromoTile.css.js\";\n\nexport enum UDExOrientation {\n Vertical = \"Vertical\",\n Horizontal = \"Horizontal\",\n}\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-promo-tile</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/PromoTile.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @tagname udex-promo-tile\n * @public\n */\n@customElement({\n tag: \"udex-promo-tile\",\n renderer: jsxRenderer,\n styles: PromoTileCss,\n template: PromoTileTemplate,\n})\n\n/**\n * Triggered when the user clicks on the CTA button\n *\n * @public\n */\n@event(\"button-click\", { cancelable: true, bubbles: true })\n\nclass UDExPromoTile extends UI5Element {\n eventDetails!: {\n \"button-click\": void,\n };\n\n /**\n * Defines the text content of the Promo Tile.\n *\n * @slot content\n * @public\n */\n @slot({ type: HTMLElement, \"default\": true })\n content!: Array<HTMLElement>;\n\n /**\n * Defines the orientation of the Promo Tile component.\n *\n * @default \"Vertical\"\n * @public\n */\n @property()\n orientation: `${UDExOrientation}` = UDExOrientation.Vertical;\n\n /**\n * Defines the UI5 icon name in the pictogram section.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n icon?: string;\n\n /**\n * Defines the image aria label and alt in the pictogram section.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n imageLabel?: string;\n\n /**\n * Defines the logo URL in the pictogram section.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n logoUrl?: string;\n\n /**\n * Defines the header text of the promo tile.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n header?: string;\n\n /**\n * Defines the eyebrow text of the promo tile.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n eyebrow?: string;\n\n /**\n * Defines the CTA button label\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n button?: string;\n\n /**\n * Defines the CTA button design\n *\n * @default \"\"\n * @public\n */\n @property()\n buttonDesign?: UDExButtonDesign;\n\n /**\n * Defines the color scheme of the Promo Tile.\n *\n * @default \"\"\n * @public\n */\n @property()\n colorScheme?: UDExPromoTileColorScheme;\n\n /**\n * Defines the accessible name of the component.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n accessibleName?: string;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _handleResizeBound: ResizeObserverCallback;\n _button: UDExButton | undefined;\n _colorMode: UDExPromoTileMode = UDExPromoTileMode.light;\n _lightModeColors: Array<number> = [1, 2];\n _darkModeColors: Array<number> = [7, 8, 9, 10];\n\n constructor() {\n super();\n this._handleResizeBound = this._handleResize.bind(this);\n }\n\n onEnterDOM(): void {\n if (isDesktop()) {\n this.setAttribute(\"desktop\", \"\");\n }\n ResizeHandler.register(this, this._handleResizeBound);\n }\n\n onExitDOM(): void {\n ResizeHandler.deregister(this, this._handleResizeBound);\n }\n\n onAfterRendering() {\n this._button = this.getButton();\n this.applyColorScheme();\n }\n\n _handleResize(): void {\n if (this._button) {\n this._button.size = this.isMobile ? UDExButtonSize.Medium : UDExButtonSize.Large;\n }\n }\n\n getButton(): UDExButton | undefined {\n return this.shadowRoot!.querySelector<UDExButton>(\n \"[udex-button]\",\n )!;\n }\n\n applyColorScheme(): void {\n if (!this.colorScheme) {\n return;\n }\n\n this._colorMode = this.checkColorMode(this.colorScheme);\n const eyebrowColor = this.checkEyebrowColor(this.colorScheme);\n\n if (this._colorMode === UDExPromoTileMode.dark) {\n if (this._button) {\n this._button.design = this.buttonDesign || UDExButtonDesign.Secondary;\n }\n this.style.setProperty(\"--udex-promo-tile-icon-fill-color\", `var(--udexCoreTextLight)`);\n }\n this.style.setProperty(\"--udex-promo-tile-background\", `var(--udexColor${this.colorScheme})`);\n this.style.setProperty(\"--udex-promo-tile-eyebrow-color\", `var(--udexColor${eyebrowColor})`);\n }\n\n getColorNumber(colorScheme: string): number {\n const match = colorScheme.match(/\\d+/);\n return match ? parseInt(match[0]) : 0;\n }\n\n checkColorMode(colorScheme: string): UDExPromoTileMode {\n const number = this.getColorNumber(colorScheme);\n\n if (number && this._darkModeColors.includes(number)) {\n return UDExPromoTileMode.dark;\n }\n return UDExPromoTileMode.light;\n }\n\n checkEyebrowColor(colorScheme: string): string {\n const number = this.getColorNumber(colorScheme);\n let color: string = UDExPromoTileColorScheme.Blue8;\n\n if (number === 7) {\n color = \"NeutralWhite\";\n } else if (this._darkModeColors.includes(number)) {\n color = colorScheme.replace(`${number}`, `${number - 7}`);\n } else if (this._lightModeColors.includes(number)) {\n color = colorScheme.replace(`${number}`, `${number + 7}`);\n }\n return color;\n }\n\n get isMobile(): boolean {\n return BreakpointUtils.isAtMost(\"S\");\n }\n\n get promoTileContainerText(): string {\n return this.accessibleName || this.header || UDExPromoTile.i18nBundle.getText(PROMO_TILE);\n }\n\n get _showPictogram(): boolean {\n return !!this.icon || !!this.logoUrl;\n }\n\n get _showLogo(): boolean {\n return !this.icon && !!this.logoUrl;\n }\n\n get _imageLabel(): string {\n return this.imageLabel || UDExPromoTile.i18nBundle.getText(PROMO_TILE_ICON);\n }\n\n handleCTAButtonClick(e: Event) {\n e.preventDefault();\n this.fireDecoratorEvent(\"button-click\");\n }\n}\n\nUDExPromoTile.define();\n\nexport default UDExPromoTile;\n"]}
package/dist/Search.js CHANGED
@@ -487,7 +487,7 @@ let UDExSearch = UDExSearch_1 = class UDExSearch extends UI5Element {
487
487
  this.Suggestion = new Suggestion(this);
488
488
  }
489
489
  else {
490
- throw new Error("You have to import '@sapudex/webcomponents/dist/features/SearchSuggestionsPopover.js' module to use udex-search suggestions");
490
+ throw new Error("You have to import '@sapudex/web-components/dist/features/SearchSuggestionsPopover.js' module to use udex-search suggestions");
491
491
  }
492
492
  }
493
493
  _createObserver(popover, ingoreOpenState = false) {