@sapudex/web-components 2.21.0 → 2.22.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 (195) hide show
  1. package/bundle.esm.js +2 -0
  2. package/cypress/specs/ImageGridCloud.cy.tsx +78 -0
  3. package/cypress/specs/ImageGridCloudItem.cy.tsx +29 -0
  4. package/cypress/support/component-imports.instrumented.ts +4 -0
  5. package/cypress/support/component-imports.src.ts +4 -0
  6. package/dist/Accordion.js +1 -0
  7. package/dist/Accordion.js.map +1 -1
  8. package/dist/AccordionItem.js +2 -0
  9. package/dist/AccordionItem.js.map +1 -1
  10. package/dist/AssetsVariables.js +2 -1
  11. package/dist/AssetsVariables.js.map +1 -1
  12. package/dist/Breadcrumbs.js +5 -0
  13. package/dist/Breadcrumbs.js.map +1 -1
  14. package/dist/ContactItem.js +2 -0
  15. package/dist/ContactItem.js.map +1 -1
  16. package/dist/CountrySelector.js +1 -0
  17. package/dist/CountrySelector.js.map +1 -1
  18. package/dist/DatePicker.js +2 -1
  19. package/dist/DatePicker.js.map +1 -1
  20. package/dist/FilterMenu.js +2 -0
  21. package/dist/FilterMenu.js.map +1 -1
  22. package/dist/Footer.js +27 -0
  23. package/dist/Footer.js.map +1 -1
  24. package/dist/ImageGridCloud.d.ts +76 -0
  25. package/dist/ImageGridCloud.js +153 -0
  26. package/dist/ImageGridCloud.js.map +1 -0
  27. package/dist/ImageGridCloudItem.d.ts +35 -0
  28. package/dist/ImageGridCloudItem.js +49 -0
  29. package/dist/ImageGridCloudItem.js.map +1 -0
  30. package/dist/ImageGridCloudItemTemplate.d.ts +2 -0
  31. package/dist/ImageGridCloudItemTemplate.js +5 -0
  32. package/dist/ImageGridCloudItemTemplate.js.map +1 -0
  33. package/dist/ImageGridCloudTemplate.d.ts +2 -0
  34. package/dist/ImageGridCloudTemplate.js +6 -0
  35. package/dist/ImageGridCloudTemplate.js.map +1 -0
  36. package/dist/ImageGridTicker.d.ts +2 -2
  37. package/dist/ImageGridTicker.js +1 -8
  38. package/dist/ImageGridTicker.js.map +1 -1
  39. package/dist/LinkListItem.js +1 -0
  40. package/dist/LinkListItem.js.map +1 -1
  41. package/dist/List.js +3 -0
  42. package/dist/List.js.map +1 -1
  43. package/dist/ListGroupHeader.js +1 -0
  44. package/dist/ListGroupHeader.js.map +1 -1
  45. package/dist/ListItem.js +2 -0
  46. package/dist/ListItem.js.map +1 -1
  47. package/dist/ListItemBase.js +4 -0
  48. package/dist/ListItemBase.js.map +1 -1
  49. package/dist/ListSelectAll.js +1 -0
  50. package/dist/ListSelectAll.js.map +1 -1
  51. package/dist/MastheadCountrySelector.js +15 -0
  52. package/dist/MastheadCountrySelector.js.map +1 -1
  53. package/dist/MastheadItem.js +10 -0
  54. package/dist/MastheadItem.js.map +1 -1
  55. package/dist/MastheadMenu.js +6 -0
  56. package/dist/MastheadMenu.js.map +1 -1
  57. package/dist/MastheadMobileMenu.js +11 -0
  58. package/dist/MastheadMobileMenu.js.map +1 -1
  59. package/dist/MastheadProfileMenu.js +11 -0
  60. package/dist/MastheadProfileMenu.js.map +1 -1
  61. package/dist/MastheadShell.js +41 -0
  62. package/dist/MastheadShell.js.map +1 -1
  63. package/dist/MediaPlayer.js +1 -0
  64. package/dist/MediaPlayer.js.map +1 -1
  65. package/dist/MediaPlayerVimeo.d.ts +3 -3
  66. package/dist/MediaPlayerVimeo.js +1 -0
  67. package/dist/MediaPlayerVimeo.js.map +1 -1
  68. package/dist/MediaPlayerYoutube.js +3 -0
  69. package/dist/MediaPlayerYoutube.js.map +1 -1
  70. package/dist/Pagination.js +1 -1
  71. package/dist/Pagination.js.map +1 -1
  72. package/dist/Search.d.ts +2 -1
  73. package/dist/Search.js +18 -3
  74. package/dist/Search.js.map +1 -1
  75. package/dist/SearchTemplate.d.ts +2 -0
  76. package/dist/SearchTemplate.js +48 -0
  77. package/dist/SearchTemplate.js.map +1 -0
  78. package/dist/SearchableListBase.d.ts +3 -0
  79. package/dist/SearchableListBase.js +10 -0
  80. package/dist/SearchableListBase.js.map +1 -1
  81. package/dist/SecondaryNavigation.js +19 -0
  82. package/dist/SecondaryNavigation.js.map +1 -1
  83. package/dist/SecondaryNavigationItem.js +6 -0
  84. package/dist/SecondaryNavigationItem.js.map +1 -1
  85. package/dist/SecondaryNavigationSubItem.js +3 -0
  86. package/dist/SecondaryNavigationSubItem.js.map +1 -1
  87. package/dist/SelectBox.js +1 -0
  88. package/dist/SelectBox.js.map +1 -1
  89. package/dist/SocialMediaButton.js +2 -0
  90. package/dist/SocialMediaButton.js.map +1 -1
  91. package/dist/StepInput.js +2 -0
  92. package/dist/StepInput.js.map +1 -1
  93. package/dist/TabNavigation.js +3 -0
  94. package/dist/TabNavigation.js.map +1 -1
  95. package/dist/Tag.js +1 -0
  96. package/dist/Tag.js.map +1 -1
  97. package/dist/TagGroup.js +3 -0
  98. package/dist/TagGroup.js.map +1 -1
  99. package/dist/TextField.js +1 -0
  100. package/dist/TextField.js.map +1 -1
  101. package/dist/Tile.js +1 -0
  102. package/dist/Tile.js.map +1 -1
  103. package/dist/Upload.js +5 -0
  104. package/dist/Upload.js.map +1 -1
  105. package/dist/assets/{InputSuggestions-B0P5JAFd.js → InputSuggestions-By00xQan.js} +1 -1
  106. package/dist/assets/{ListItemStandardExpandableTextTemplate-CFj3_UAT.js → ListItemStandardExpandableTextTemplate-BGtoxRbA.js} +1 -1
  107. package/dist/assets/{bundle.esm-BaPBMfCT.js → bundle.esm-9yDdQqR5.js} +215 -212
  108. package/dist/css/themes/ImageGridCloud.css +1 -0
  109. package/dist/css/themes/ImageGridCloudItem.css +1 -0
  110. package/dist/css/themes/Pagination.css +1 -1
  111. package/dist/css/themes/RatingIndicator.css +1 -1
  112. package/dist/css/themes/Slider.css +1 -1
  113. package/dist/custom-elements-internal.json +3701 -189
  114. package/dist/custom-elements.json +737 -76
  115. package/dist/generated/themes/ImageGridCloud.css.d.ts +2 -0
  116. package/dist/generated/themes/ImageGridCloud.css.js +8 -0
  117. package/dist/generated/themes/ImageGridCloud.css.js.map +1 -0
  118. package/dist/generated/themes/ImageGridCloudItem.css.d.ts +2 -0
  119. package/dist/generated/themes/ImageGridCloudItem.css.js +8 -0
  120. package/dist/generated/themes/ImageGridCloudItem.css.js.map +1 -0
  121. package/dist/generated/themes/Pagination.css.d.ts +1 -1
  122. package/dist/generated/themes/Pagination.css.js +1 -1
  123. package/dist/generated/themes/Pagination.css.js.map +1 -1
  124. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  125. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  126. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  127. package/dist/generated/themes/Slider.css.d.ts +1 -1
  128. package/dist/generated/themes/Slider.css.js +1 -1
  129. package/dist/generated/themes/Slider.css.js.map +1 -1
  130. package/dist/vscode.html-custom-data.json +26 -1
  131. package/dist/web-types.json +74 -4
  132. package/package.json +1 -1
  133. package/src/Accordion.ts +1 -0
  134. package/src/AccordionItem.ts +2 -0
  135. package/src/AssetsVariables.ts +2 -1
  136. package/src/Breadcrumbs.ts +5 -0
  137. package/src/ContactItem.ts +2 -0
  138. package/src/CountrySelector.ts +1 -0
  139. package/src/DatePicker.ts +2 -1
  140. package/src/FilterMenu.ts +2 -0
  141. package/src/Footer.ts +27 -0
  142. package/src/ImageGridCloud.ts +188 -0
  143. package/src/ImageGridCloudItem.ts +57 -0
  144. package/src/ImageGridCloudItemTemplate.tsx +11 -0
  145. package/src/ImageGridCloudTemplate.tsx +16 -0
  146. package/src/ImageGridTicker.ts +3 -3
  147. package/src/LinkListItem.ts +1 -0
  148. package/src/List.ts +3 -0
  149. package/src/ListGroupHeader.ts +1 -0
  150. package/src/ListItem.ts +2 -0
  151. package/src/ListItemBase.ts +4 -0
  152. package/src/ListSelectAll.ts +1 -0
  153. package/src/MastheadCountrySelector.ts +15 -0
  154. package/src/MastheadItem.ts +10 -0
  155. package/src/MastheadMenu.ts +6 -0
  156. package/src/MastheadMobileMenu.ts +11 -0
  157. package/src/MastheadProfileMenu.ts +11 -0
  158. package/src/MastheadShell.ts +41 -0
  159. package/src/MediaPlayer.ts +1 -0
  160. package/src/MediaPlayerVimeo.ts +4 -3
  161. package/src/MediaPlayerYoutube.ts +3 -0
  162. package/src/Pagination.ts +1 -1
  163. package/src/Search.ts +20 -4
  164. package/src/SearchTemplate.tsx +353 -0
  165. package/src/SearchableListBase.ts +10 -0
  166. package/src/SecondaryNavigation.ts +19 -0
  167. package/src/SecondaryNavigationItem.ts +6 -0
  168. package/src/SecondaryNavigationSubItem.ts +3 -0
  169. package/src/SelectBox.ts +1 -0
  170. package/src/SocialMediaButton.ts +2 -0
  171. package/src/StepInput.ts +2 -0
  172. package/src/TabNavigation.ts +3 -0
  173. package/src/Tag.ts +1 -0
  174. package/src/TagGroup.ts +3 -0
  175. package/src/TextField.ts +1 -0
  176. package/src/Tile.ts +1 -0
  177. package/src/Upload.ts +5 -0
  178. package/src/generated/themes/ImageGridCloud.css.ts +9 -0
  179. package/src/generated/themes/ImageGridCloudItem.css.ts +9 -0
  180. package/src/generated/themes/Pagination.css.ts +1 -1
  181. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  182. package/src/generated/themes/Slider.css.ts +1 -1
  183. package/src/themes/ImageGridCloud.css +55 -0
  184. package/src/themes/ImageGridCloudItem.css +10 -0
  185. package/src/themes/Pagination.css +1 -1
  186. package/dist/generated/templates/SearchSuggestionsTemplate.lit.d.ts +0 -3
  187. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js +0 -17
  188. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js.map +0 -1
  189. package/dist/generated/templates/SearchTemplate.lit.d.ts +0 -3
  190. package/dist/generated/templates/SearchTemplate.lit.js +0 -28
  191. package/dist/generated/templates/SearchTemplate.lit.js.map +0 -1
  192. package/src/Search.hbs +0 -155
  193. package/src/SearchSuggestions.hbs +0 -91
  194. package/src/generated/templates/SearchSuggestionsTemplate.lit.ts +0 -21
  195. package/src/generated/templates/SearchTemplate.lit.ts +0 -32
package/src/Footer.ts CHANGED
@@ -111,66 +111,91 @@ type DetailedEvents = "quick-links-click" | "trending-click" | "about-sap-click"
111
111
  /**
112
112
  * Triggered on click interaction with logo in footer
113
113
  * @public
114
+ * @param { MouseEvent | Event } originalEvent
114
115
  * @allowPreventDefault
115
116
  */
116
117
  @event("logo-click", { bubbles: true })
117
118
  /**
118
119
  * Triggered on click interaction with "Back to Top" button
119
120
  * @public
121
+ * @param { MouseEvent | Event } originalEvent
120
122
  * @allowPreventDefault
121
123
  */
122
124
  @event("back-to-top-click", { bubbles: true })
123
125
  /**
124
126
  * Triggered on click interaction with phone number link in footer
125
127
  * @public
128
+ * @param { MouseEvent | Event } originalEvent
126
129
  * @allowPreventDefault
127
130
  */
128
131
  @event("contact-phone-click", { bubbles: true })
129
132
  /**
130
133
  * Triggered on click interaction with local country numbers list link
131
134
  * @public
135
+ * @param { MouseEvent | Event } originalEvent
132
136
  * @allowPreventDefault
133
137
  */
134
138
  @event("contact-phone-local-numbers-click", { bubbles: true })
135
139
  /**
136
140
  * Triggered on click interaction with "Contact us by email" link
137
141
  * @public
142
+ * @param { MouseEvent | Event } originalEvent
138
143
  * @allowPreventDefault
139
144
  */
140
145
  @event("contact-email-click", { bubbles: true })
141
146
  /**
142
147
  * Triggered on click interaction with "Contact us by chat" link
143
148
  * @public
149
+ * @param { MouseEvent | Event } originalEvent
144
150
  * @allowPreventDefault
145
151
  */
146
152
  @event("contact-chat-click", { bubbles: true })
147
153
  /**
148
154
  * Triggered on click interaction with a link within "Quick Links" category
149
155
  * @public
156
+ * @param { MouseEvent | Event } originalEvent
157
+ * @param { HTMLElement } sourceNode
158
+ * @param { string | undefined } name
150
159
  * @allowPreventDefault
151
160
  */
152
161
  @event("quick-links-click", { bubbles: true })
153
162
  /**
154
163
  * Triggered on click interaction with a link within "Trending" category
155
164
  * @public
165
+ * @param { MouseEvent | Event } originalEvent
166
+ * @param { HTMLElement } sourceNode
167
+ * @param { string | undefined } name
168
+ * @param { string } [id]
156
169
  * @allowPreventDefault
157
170
  */
158
171
  @event("trending-click", { bubbles: true })
159
172
  /**
160
173
  * Triggered on click interaction with a link within "About SAP" category
161
174
  * @public
175
+ * @param { MouseEvent | Event } originalEvent
176
+ * @param { HTMLElement } sourceNode
177
+ * @param { string | undefined } name
178
+ * @param { string } [id]
162
179
  * @allowPreventDefault
163
180
  */
164
181
  @event("about-sap-click", { bubbles: true })
165
182
  /**
166
183
  * Triggered on click interaction with a link within "Site Information" category
167
184
  * @public
185
+ * @param { MouseEvent | Event } originalEvent
186
+ * @param { HTMLElement } sourceNode
187
+ * @param { string | undefined } name
188
+ * @param { string } [id]
168
189
  * @allowPreventDefault
169
190
  */
170
191
  @event("site-information-click", { bubbles: true })
171
192
  /**
172
193
  * Triggered on click interaction with any of the social media links within footer
173
194
  * @public
195
+ * @param { MouseEvent | Event } originalEvent
196
+ * @param { HTMLElement } sourceNode
197
+ * @param { string | undefined } name
198
+ * @param { string } [id]
174
199
  * @allowPreventDefault
175
200
  */
176
201
  @event("social-media-link-click", { bubbles: true })
@@ -178,6 +203,8 @@ type DetailedEvents = "quick-links-click" | "trending-click" | "about-sap-click"
178
203
  /**
179
204
  * Triggered when the user clicks on an accordion item.
180
205
  * @public
206
+ * @param { string | undefined } name
207
+ * @param { boolean } expanded
181
208
  */
182
209
  @event("accordion-item-click", { bubbles: true })
183
210
 
@@ -0,0 +1,188 @@
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 type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
5
+ import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
6
+ import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
7
+ import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
8
+ import ImageGridCloudTemplate from "./ImageGridCloudTemplate.js";
9
+ import type UDExImageGridCloudItem from "./ImageGridCloudItem.js";
10
+
11
+ // Styles
12
+ import ImageGridCloudCss from "./generated/themes/ImageGridCloud.css.js";
13
+ import { BreakpointUtils } from "./utils/Breakpoints.js";
14
+
15
+ export enum UDExImageGridCloudVariable {
16
+ itemGapL = "--udex-image-grid-cloud-item-gap-l",
17
+ itemGapS = "--udex-image-grid-cloud-item-gap-s",
18
+ itemWidthL = "--udex-image-grid-cloud-item-width-l",
19
+ itemWidthS = "--udex-image-grid-cloud-item-width-s",
20
+ itemBorderWidth = "--udex-image-grid-cloud-item-border-width",
21
+ }
22
+
23
+ export enum UDExImageGridCloudSize {
24
+ Small = "Small",
25
+ Large = "Large",
26
+ }
27
+
28
+ /**
29
+ * @class
30
+ *
31
+ * <h3 class="comment-api-title">Overview</h3>
32
+ *
33
+ *
34
+ * <h3>Usage</h3>
35
+ *
36
+ * For the <code>udex-image-grid-cloud</code>
37
+ * <h3>ES6 Module Import</h3>
38
+ *
39
+ * <code>import "@sapudex/web-components/dist/ImageGridCloud.js";</code>
40
+ *
41
+ * @constructor
42
+ * @extends UI5Element
43
+ * @public
44
+ */
45
+ @customElement({
46
+ tag: "udex-image-grid-cloud",
47
+ renderer: jsxRenderer,
48
+ styles: ImageGridCloudCss,
49
+ template: ImageGridCloudTemplate,
50
+ })
51
+
52
+ class UDExImageGridCloud extends UI5Element {
53
+ /**
54
+ * Grayscale mode enhances visual harmony and can be used for minimal,
55
+ * professional layouts or to de-emphasize logos.
56
+ *
57
+ * @default undefined
58
+ * @public
59
+ */
60
+ @property({ type: Boolean })
61
+ grayscale?: boolean;
62
+
63
+ /**
64
+ * Defines the size of the items.
65
+ *
66
+ * @default "Large"
67
+ * @private
68
+ */
69
+ @property({ type: String })
70
+ size: `${UDExImageGridCloudSize}` = UDExImageGridCloudSize.Large;
71
+
72
+ /**
73
+ * Slot for image grid cloud items.
74
+ *
75
+ * @slot
76
+ * @public
77
+ */
78
+ @slot({ type: HTMLElement, "default": true })
79
+ items!: Array<UDExImageGridCloudItem>;
80
+
81
+ _rootId = "udex-image-grid-cloud";
82
+ _rowClassName = "udex-image-grid-cloud__row";
83
+ _container!: HTMLElement;
84
+ _items: Array<Element> = [];
85
+
86
+ _handleResizeBound: ResizeObserverCallback;
87
+
88
+ constructor() {
89
+ super();
90
+ this._handleResizeBound = this.handleResize.bind(this);
91
+ }
92
+
93
+ onEnterDOM(): void {
94
+ ResizeHandler.register(this, this._handleResizeBound);
95
+ }
96
+
97
+ onExitDOM(): void {
98
+ ResizeHandler.deregister(this, this._handleResizeBound);
99
+ }
100
+
101
+ onAfterRendering() {
102
+ this._container = this.containerElement;
103
+ this._items = this.itemsElements;
104
+ this.renderLayout();
105
+ }
106
+
107
+ handleResize(): void {
108
+ this.renderLayout();
109
+ }
110
+
111
+ renderLayout() {
112
+ if (this.isContainerEmpty) {
113
+ return;
114
+ }
115
+
116
+ const ITEM_WIDTH = this.itemWidth + this.itemHorizontalBorderWidth;
117
+ const GAP = this.itemGap;
118
+
119
+ const existingRows = Array.from(this._container.querySelectorAll(`.${this._rowClassName}`));
120
+ existingRows.forEach(row => row.remove());
121
+
122
+ const containerWidth = this._container.clientWidth;
123
+ const itemsPerRow = Math.max(Math.floor((containerWidth + GAP) / (ITEM_WIDTH + GAP)) || 0, 1);
124
+
125
+ let index = 0;
126
+ let rowIndex = 0;
127
+
128
+ while (index < this._items.length) {
129
+ const count = rowIndex % 2 === 0 ? itemsPerRow : Math.max(itemsPerRow - 1, 1);
130
+ const row = document.createElement("div");
131
+ row.className = this._rowClassName;
132
+
133
+ for (let i = 0; i < count && index < this._items.length; i++, index++) {
134
+ row.appendChild(this._items[index]);
135
+ }
136
+
137
+ this._container.appendChild(row);
138
+ rowIndex++;
139
+ }
140
+ }
141
+
142
+ _getVariableValue(variableName: string): string {
143
+ return window.getComputedStyle(this).getPropertyValue(`${variableName}`);
144
+ }
145
+
146
+ get itemWidth(): number {
147
+ const variableName = this.isSmallSize || this.isMobile
148
+ ? UDExImageGridCloudVariable.itemWidthS
149
+ : UDExImageGridCloudVariable.itemWidthL;
150
+ return parseInt(this._getVariableValue(variableName));
151
+ }
152
+
153
+ get itemGap(): number {
154
+ const variableName = this.isSmallSize || this.isMobile
155
+ ? UDExImageGridCloudVariable.itemGapS
156
+ : UDExImageGridCloudVariable.itemGapL;
157
+ return parseInt(this._getVariableValue(variableName));
158
+ }
159
+
160
+ get itemHorizontalBorderWidth(): number {
161
+ const border = parseInt(this._getVariableValue(UDExImageGridCloudVariable.itemBorderWidth));
162
+ return border * 2;
163
+ }
164
+
165
+ get isSmallSize(): boolean {
166
+ return this.size === UDExImageGridCloudSize.Small;
167
+ }
168
+
169
+ get containerElement(): HTMLElement {
170
+ return this.shadowRoot!.getElementById(this._rootId)!;
171
+ }
172
+
173
+ get itemsElements(): Array<Element> {
174
+ return Array.from(this.containerElement.children);
175
+ }
176
+
177
+ get isMobile(): boolean {
178
+ return BreakpointUtils.isAtMost("S");
179
+ }
180
+
181
+ get isContainerEmpty(): boolean {
182
+ return !this._container || this._items.length === 0;
183
+ }
184
+ }
185
+
186
+ UDExImageGridCloud.define();
187
+
188
+ export default UDExImageGridCloud;
@@ -0,0 +1,57 @@
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 jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
5
+
6
+ import ImageGridCloudItemTemplate from "./ImageGridCloudItemTemplate.js";
7
+
8
+ // Styles
9
+ import ImageGridCloudItemCss from "./generated/themes/ImageGridCloudItem.css.js";
10
+
11
+ /**
12
+ * @class
13
+ *
14
+ * <h3 class="comment-api-title">Overview</h3>
15
+ *
16
+ *
17
+ * <h3>Usage</h3>
18
+ *
19
+ * For the <code>udex-image-grid-cloud-item</code>
20
+ * <h3>ES6 Module Import</h3>
21
+ *
22
+ * <code>import "@sapudex/web-components/dist/ImageGridCloudItem.js";</code>
23
+ *
24
+ * @constructor
25
+ * @extends UI5Element
26
+ * @public
27
+ */
28
+ @customElement({
29
+ tag: "udex-image-grid-cloud-item",
30
+ renderer: jsxRenderer,
31
+ styles: ImageGridCloudItemCss,
32
+ template: ImageGridCloudItemTemplate,
33
+ })
34
+
35
+ class UDExImageGridCloudItem extends UI5Element {
36
+ /**
37
+ * Defines the source URL
38
+ *
39
+ * @default ""
40
+ * @public
41
+ */
42
+ @property({ type: String })
43
+ src!: string;
44
+
45
+ /**
46
+ * Defines image alt text
47
+ *
48
+ * @default ""
49
+ * @public
50
+ */
51
+ @property({ type: String })
52
+ alt!: string;
53
+ }
54
+
55
+ UDExImageGridCloudItem.define();
56
+
57
+ export default UDExImageGridCloudItem;
@@ -0,0 +1,11 @@
1
+ import type ImageGridCloudItem from "./ImageGridCloudItem.js";
2
+
3
+ export default function ImageGridCloudItemTemplate(this: ImageGridCloudItem) {
4
+ return (
5
+ <img
6
+ class="udex-image-grid-cloud-item-img"
7
+ src={this.src}
8
+ alt={this.alt}
9
+ />
10
+ );
11
+ }
@@ -0,0 +1,16 @@
1
+ import type ImageGridCloud from "./ImageGridCloud.js";
2
+ import UDExImageGridCloudItem from "./ImageGridCloudItem.js";
3
+
4
+ export default function ImageGridCloudTemplate(this: ImageGridCloud) {
5
+ return (
6
+ <div id="udex-image-grid-cloud">
7
+ {this.items.map(({ src, alt }) =>
8
+ <UDExImageGridCloudItem
9
+ class="udex-image-grid-cloud__item"
10
+ src={src}
11
+ alt={alt}>
12
+ </UDExImageGridCloudItem>
13
+ )}
14
+ </div>
15
+ );
16
+ }
@@ -57,6 +57,7 @@ type UDExImageGridTickerPlayBtnClickEventDetail = {
57
57
  * Fired event when the user click on a play/paused button.
58
58
  *
59
59
  * @public
60
+ * @param {boolean} isPaused - Indicates whether the animation is paused.
60
61
  */
61
62
  @event("play-button-click", { bubbles: true })
62
63
 
@@ -78,12 +79,11 @@ class UDExImageGridTicker extends UI5Element {
78
79
  * Grayscale mode enhances visual harmony and can be used for minimal,
79
80
  * professional layouts or to de-emphasize logos.
80
81
  *
81
- * @default false
82
+ * @default undefined
82
83
  * @public
83
84
  */
84
85
  @property({ type: Boolean })
85
- grayscale = false;
86
-
86
+ grayscale?: boolean;
87
87
  /**
88
88
  * Indicates whether the image grid ticker is scrollable.
89
89
  *
@@ -42,6 +42,7 @@ type UDExListLinkItemClickEventDetail = {
42
42
  /**
43
43
  * Triggered when the user clicks on an item.
44
44
  * @public
45
+ * @param {Event} originalEvent the original event object
45
46
  */
46
47
  @event("item-click", { bubbles: true })
47
48
 
package/src/List.ts CHANGED
@@ -63,6 +63,9 @@ type UDExListSelectionChangeEventDetail = {
63
63
  * Fired when selection is changed by user interaction
64
64
  *
65
65
  * @public
66
+ * @param {Array<UDExListItemBase>} listItems All items inside the list
67
+ * @param {Array<UDExListItemBase>} selectedItems Currently selected items
68
+ * @param {HTMLElement} item The item that triggered the event
66
69
  */
67
70
  @event("selection-change", { bubbles: true })
68
71
 
@@ -48,6 +48,7 @@ type UDExListGroupHeaderBaseHeaderPressEventDetail = {
48
48
  * Fired when selectable group header is pressed
49
49
  *
50
50
  * @public
51
+ * @param {HTMLElement} item The pressed group header item
51
52
  */
52
53
  @event("header-press", { bubbles: true })
53
54
 
package/src/ListItem.ts CHANGED
@@ -78,12 +78,14 @@ type UDExListItemItemPressEventDetail = {
78
78
  * Fired event when the user click on a list item.
79
79
  *
80
80
  * @public
81
+ * @param {boolean} selected Indicates whether the item is selected or not
81
82
  */
82
83
  @event("item-press", { bubbles: true })
83
84
  /**
84
85
  * Fired event when the user focuses on a list item.
85
86
  *
86
87
  * @public
88
+ * @param {HTMLElement} item The focused list item
87
89
  */
88
90
  @event("item-focus", { bubbles: true })
89
91
 
@@ -34,12 +34,16 @@ type UDExListItemBaseEventDetail = {
34
34
  * Fired event when the user click on a first icon.
35
35
  *
36
36
  * @public
37
+ * @param { PointerEvent } originalEvent The original event object
38
+ * @param { HTMLElement } item The list item
37
39
  */
38
40
  @event("first-icon-click", { bubbles: true })
39
41
  /**
40
42
  * Fired event when the user click on a second icon.
41
43
  *
42
44
  * @public
45
+ * @param { PointerEvent } originalEvent The original event object
46
+ * @param { HTMLElement } item The list item
43
47
  */
44
48
  @event("second-icon-click", { bubbles: true })
45
49
 
@@ -49,6 +49,7 @@ type UDExListSelectAllSelectAllEventDetail = {
49
49
  * Fired when the user clicks on the Select All header.
50
50
  *
51
51
  * @public
52
+ * @param {HTMLElement} item The select all item
52
53
  */
53
54
  @event("select-all", { bubbles: true })
54
55
 
@@ -88,6 +88,12 @@ type UDExMastheadCountrySelectorSearchEventDetail = {
88
88
  * Fires when region item is clicked
89
89
  *
90
90
  * @public
91
+ * @param {Event} originalEvent the original event object
92
+ * @param {Object} item the clicked region item
93
+ * @param {string} item.title the title of the region
94
+ * @param {Array} item.countries the countries of the region
95
+ * @param {AnalyticsName} analyticsName The analytics name for the event
96
+ * @param {HTMLElement} sourceNode The source node which triggered the event
91
97
  */
92
98
  @event("region-item-click", { bubbles: true })
93
99
 
@@ -95,6 +101,13 @@ type UDExMastheadCountrySelectorSearchEventDetail = {
95
101
  * Fires when region item is clicked
96
102
  *
97
103
  * @public
104
+ * @param {Event} originalEvent the original event object
105
+ * @param {Object} item the clicked country item
106
+ * @param {string} item.displayTitle the display title of the country
107
+ * @param {string} item.countryCode the country code of the country
108
+ * @param {string} item.url the url of the country
109
+ * @param {AnalyticsName} analyticsName The analytics name for the event
110
+ * @param {HTMLElement} sourceNode The source node which triggered the event
98
111
  */
99
112
  @event("country-item-click", { bubbles: true })
100
113
 
@@ -102,6 +115,8 @@ type UDExMastheadCountrySelectorSearchEventDetail = {
102
115
  * Fired event when the user typed to search field.
103
116
  *
104
117
  * @public
118
+ * @param {string} value The search value
119
+ * @param {AnalyticsName} analyticsName The analytics name for the event
105
120
  */
106
121
  @event("country-selector-search", { bubbles: true })
107
122
 
@@ -105,6 +105,10 @@ type UDExMastheadDropdownEventDetail = {
105
105
  *
106
106
  * @allowPreventDefault
107
107
  * @public
108
+ * @param {Event} originalEvent the original event object
109
+ * @param {UDExMastheadItem} item the clicked item
110
+ * @param {AnalyticsName} analyticsName the analytics name
111
+ * @param {HTMLElement} sourceNode the source node
108
112
  */
109
113
  @event("item-click", { bubbles: true })
110
114
 
@@ -113,6 +117,9 @@ type UDExMastheadDropdownEventDetail = {
113
117
  *
114
118
  * @allowPreventDefault
115
119
  * @public
120
+ * @param {string} title the title of the item
121
+ * @param {UDExMastheadDropdownItemAction} action the action that caused the event
122
+ * @param {AnalyticsName} analyticsName the analytics name
116
123
  */
117
124
  @event("dropdown-closed", { bubbles: true })
118
125
 
@@ -121,6 +128,9 @@ type UDExMastheadDropdownEventDetail = {
121
128
  *
122
129
  * @allowPreventDefault
123
130
  * @public
131
+ * @param {string} title the title of the item
132
+ * @param {UDExMastheadDropdownItemAction} action the action that caused the event
133
+ * @param {AnalyticsName} analyticsName the analytics name
124
134
  */
125
135
  @event("dropdown-opened", { bubbles: true })
126
136
 
@@ -77,6 +77,12 @@ type UDExMastheadMenuMenuItemClickEventDetail = {
77
77
  *
78
78
  * @allowPreventDefault
79
79
  * @public
80
+ * @param {string} category The category of the clicked menu item
81
+ * @param {Array<string>} analyticsPath The analytics path for the clicked menu item
82
+ * @param {AnalyticsName} analyticsName The analytics name for the clicked menu item
83
+ * @param {PointerEvent} originalEvent The original event object
84
+ * @param {UDExMastheadMenuItem} item The clicked menu item
85
+ * @param {HTMLElement} sourceNode The source node of the clicked menu item
80
86
  */
81
87
  @event("menu-item-click", { bubbles: true })
82
88
 
@@ -70,6 +70,14 @@ type UDExMastheadMobileMenuExploreClickEventDetail = {
70
70
  *
71
71
  * @allowPreventDefault
72
72
  * @public
73
+ * @param {PointerEvent | KeyboardEvent} originalEvent The original event object
74
+ * @param {UDExMastheadMenuItem} item The clicked item
75
+ * @param {string} [category] The category of the clicked item
76
+ * @param {boolean} isMobile Indicates whether the click happened in mobile menu
77
+ * @param {boolean} isBack Indicates whether the clicked item is a back button
78
+ * @param {AnalyticsName} analyticsName The analytics name for the clicked item
79
+ * @param {Array<string>} analyticsPath The analytics path for the clicked item
80
+ * @param {HTMLElement} sourceNode The source node of the clicked item
73
81
  */
74
82
  @event("item-click", { cancelable: true, bubbles: false })
75
83
 
@@ -78,6 +86,9 @@ type UDExMastheadMobileMenuExploreClickEventDetail = {
78
86
  *
79
87
  * @allowPreventDefault
80
88
  * @public
89
+ * @param {PointerEvent | KeyboardEvent} originalEvent The original event object
90
+ * @param {AnalyticsName} analyticsName The analytics name for the clicked item
91
+ * @param {HTMLElement} sourceNode The source node of the clicked item
81
92
  */
82
93
  @event("explorer-menu-click", { bubbles: true })
83
94
 
@@ -101,6 +101,10 @@ type UDExMastheadProfileMenuAddOrRemoveClickEventDetail = {
101
101
  /**
102
102
  * Fired when use click Logout link
103
103
  * @public
104
+ * @param {UDExMastheadMenuItem} item The clicked logout item
105
+ * @param {HTMLElement} sourceNode The HTML element of the clicked logout item
106
+ * @param {PointerEvent} originalEvent The original event object
107
+ * @param {AnalyticsName} analyticsName The analytics name for the clicked logout item
104
108
  */
105
109
  @event("logout", { cancelable: true, bubbles: true })
106
110
 
@@ -108,6 +112,10 @@ type UDExMastheadProfileMenuAddOrRemoveClickEventDetail = {
108
112
  * Fires when profile menu item is clicked
109
113
  *
110
114
  * @public
115
+ * @param {UDExMastheadMenuItem} item The clicked profile menu item
116
+ * @param {PointerEvent} originalEvent The original event object
117
+ * @param {AnalyticsName} analyticsName The analytics name for the clicked profile menu item
118
+ * @param {HTMLElement} sourceNode The HTML element of the clicked profile menu item
111
119
  */
112
120
  @event("profile-item-click", { cancelable: true, bubbles: true })
113
121
 
@@ -115,6 +123,7 @@ type UDExMastheadProfileMenuAddOrRemoveClickEventDetail = {
115
123
  * Fired when use click add or remove account button
116
124
  *
117
125
  * @public
126
+ * @param {AnalyticsName} analyticsName The analytics name for the clicked add or remove account button
118
127
  */
119
128
  @event("add-or-remove-account-click", { cancelable: true, bubbles: true })
120
129
 
@@ -122,6 +131,8 @@ type UDExMastheadProfileMenuAddOrRemoveClickEventDetail = {
122
131
  * Fires when identity item is clicked
123
132
  *
124
133
  * @public
134
+ * @param {ExtendedUserIdentity} item The clicked identity item
135
+ * @param {AnalyticsName} analyticsName The analytics name for the clicked identity item
125
136
  */
126
137
  @event("identity-item-click", { cancelable: true, bubbles: true })
127
138