@sapudex/web-components 2.20.1 → 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 (253) hide show
  1. package/bundle.esm.js +4 -0
  2. package/cypress/specs/Feed.cy.tsx +72 -0
  3. package/cypress/specs/FeedItem.cy.tsx +82 -0
  4. package/cypress/specs/Footer.cy.tsx +45 -1
  5. package/cypress/specs/ImageGridCloud.cy.tsx +78 -0
  6. package/cypress/specs/ImageGridCloudItem.cy.tsx +29 -0
  7. package/cypress/support/component-imports.instrumented.ts +8 -0
  8. package/cypress/support/component-imports.src.ts +8 -0
  9. package/dist/Accordion.js +1 -0
  10. package/dist/Accordion.js.map +1 -1
  11. package/dist/AccordionItem.js +2 -0
  12. package/dist/AccordionItem.js.map +1 -1
  13. package/dist/AssetsVariables.js +5 -0
  14. package/dist/AssetsVariables.js.map +1 -1
  15. package/dist/Breadcrumbs.js +5 -0
  16. package/dist/Breadcrumbs.js.map +1 -1
  17. package/dist/ContactItem.js +2 -0
  18. package/dist/ContactItem.js.map +1 -1
  19. package/dist/CountrySelector.js +1 -0
  20. package/dist/CountrySelector.js.map +1 -1
  21. package/dist/DatePicker.js +2 -1
  22. package/dist/DatePicker.js.map +1 -1
  23. package/dist/Feed.d.ts +88 -0
  24. package/dist/Feed.js +103 -0
  25. package/dist/Feed.js.map +1 -0
  26. package/dist/FeedItem.d.ts +114 -0
  27. package/dist/FeedItem.js +131 -0
  28. package/dist/FeedItem.js.map +1 -0
  29. package/dist/FeedItemTemplate.d.ts +2 -0
  30. package/dist/FeedItemTemplate.js +16 -0
  31. package/dist/FeedItemTemplate.js.map +1 -0
  32. package/dist/FeedTemplate.d.ts +2 -0
  33. package/dist/FeedTemplate.js +19 -0
  34. package/dist/FeedTemplate.js.map +1 -0
  35. package/dist/FilterMenu.js +2 -0
  36. package/dist/FilterMenu.js.map +1 -1
  37. package/dist/Footer.d.ts +14 -2
  38. package/dist/Footer.js +37 -4
  39. package/dist/Footer.js.map +1 -1
  40. package/dist/FooterTemplate.js +3 -3
  41. package/dist/FooterTemplate.js.map +1 -1
  42. package/dist/ImageGridCloud.d.ts +76 -0
  43. package/dist/ImageGridCloud.js +153 -0
  44. package/dist/ImageGridCloud.js.map +1 -0
  45. package/dist/ImageGridCloudItem.d.ts +35 -0
  46. package/dist/ImageGridCloudItem.js +49 -0
  47. package/dist/ImageGridCloudItem.js.map +1 -0
  48. package/dist/ImageGridCloudItemTemplate.d.ts +2 -0
  49. package/dist/ImageGridCloudItemTemplate.js +5 -0
  50. package/dist/ImageGridCloudItemTemplate.js.map +1 -0
  51. package/dist/ImageGridCloudTemplate.d.ts +2 -0
  52. package/dist/ImageGridCloudTemplate.js +6 -0
  53. package/dist/ImageGridCloudTemplate.js.map +1 -0
  54. package/dist/ImageGridTicker.d.ts +2 -2
  55. package/dist/ImageGridTicker.js +1 -8
  56. package/dist/ImageGridTicker.js.map +1 -1
  57. package/dist/LinkListItem.js +1 -0
  58. package/dist/LinkListItem.js.map +1 -1
  59. package/dist/List.js +3 -0
  60. package/dist/List.js.map +1 -1
  61. package/dist/ListGroupHeader.js +1 -0
  62. package/dist/ListGroupHeader.js.map +1 -1
  63. package/dist/ListItem.js +2 -0
  64. package/dist/ListItem.js.map +1 -1
  65. package/dist/ListItemBase.js +4 -0
  66. package/dist/ListItemBase.js.map +1 -1
  67. package/dist/ListSelectAll.js +1 -0
  68. package/dist/ListSelectAll.js.map +1 -1
  69. package/dist/MastheadCountrySelector.js +15 -0
  70. package/dist/MastheadCountrySelector.js.map +1 -1
  71. package/dist/MastheadItem.js +10 -0
  72. package/dist/MastheadItem.js.map +1 -1
  73. package/dist/MastheadMenu.js +6 -0
  74. package/dist/MastheadMenu.js.map +1 -1
  75. package/dist/MastheadMobileMenu.js +11 -0
  76. package/dist/MastheadMobileMenu.js.map +1 -1
  77. package/dist/MastheadProfileMenu.js +11 -0
  78. package/dist/MastheadProfileMenu.js.map +1 -1
  79. package/dist/MastheadShell.js +41 -0
  80. package/dist/MastheadShell.js.map +1 -1
  81. package/dist/MediaPlayer.js +1 -0
  82. package/dist/MediaPlayer.js.map +1 -1
  83. package/dist/MediaPlayerVimeo.d.ts +3 -3
  84. package/dist/MediaPlayerVimeo.js +1 -0
  85. package/dist/MediaPlayerVimeo.js.map +1 -1
  86. package/dist/MediaPlayerYoutube.js +3 -0
  87. package/dist/MediaPlayerYoutube.js.map +1 -1
  88. package/dist/Pagination.js +1 -1
  89. package/dist/Pagination.js.map +1 -1
  90. package/dist/Search.d.ts +2 -1
  91. package/dist/Search.js +18 -3
  92. package/dist/Search.js.map +1 -1
  93. package/dist/SearchTemplate.d.ts +2 -0
  94. package/dist/SearchTemplate.js +48 -0
  95. package/dist/SearchTemplate.js.map +1 -0
  96. package/dist/SearchableListBase.d.ts +3 -0
  97. package/dist/SearchableListBase.js +10 -0
  98. package/dist/SearchableListBase.js.map +1 -1
  99. package/dist/SecondaryNavigation.js +19 -0
  100. package/dist/SecondaryNavigation.js.map +1 -1
  101. package/dist/SecondaryNavigationItem.js +6 -0
  102. package/dist/SecondaryNavigationItem.js.map +1 -1
  103. package/dist/SecondaryNavigationSubItem.js +3 -0
  104. package/dist/SecondaryNavigationSubItem.js.map +1 -1
  105. package/dist/SelectBox.js +1 -0
  106. package/dist/SelectBox.js.map +1 -1
  107. package/dist/SocialMediaButton.js +2 -0
  108. package/dist/SocialMediaButton.js.map +1 -1
  109. package/dist/StepInput.js +2 -0
  110. package/dist/StepInput.js.map +1 -1
  111. package/dist/TabNavigation.js +3 -0
  112. package/dist/TabNavigation.js.map +1 -1
  113. package/dist/Tag.js +1 -0
  114. package/dist/Tag.js.map +1 -1
  115. package/dist/TagGroup.js +3 -0
  116. package/dist/TagGroup.js.map +1 -1
  117. package/dist/TextField.js +1 -0
  118. package/dist/TextField.js.map +1 -1
  119. package/dist/Tile.js +1 -0
  120. package/dist/Tile.js.map +1 -1
  121. package/dist/Upload.js +5 -0
  122. package/dist/Upload.js.map +1 -1
  123. package/dist/assets/{InputSuggestions-yR1p8cXL.js → InputSuggestions-By00xQan.js} +1 -1
  124. package/dist/assets/{ListItemStandardExpandableTextTemplate-BovnAV24.js → ListItemStandardExpandableTextTemplate-BGtoxRbA.js} +1 -1
  125. package/dist/assets/{bundle.esm-C7AybWk0.js → bundle.esm-9yDdQqR5.js} +223 -214
  126. package/dist/assets/messagebundle_en-D_yCmNrd.js +1 -0
  127. package/dist/css/themes/Feed.css +1 -0
  128. package/dist/css/themes/FeedItem.css +1 -0
  129. package/dist/css/themes/Footer.css +1 -1
  130. package/dist/css/themes/ImageGridCloud.css +1 -0
  131. package/dist/css/themes/ImageGridCloudItem.css +1 -0
  132. package/dist/css/themes/MediaPlayer.css +1 -1
  133. package/dist/css/themes/Pagination.css +1 -1
  134. package/dist/css/themes/RatingIndicator.css +1 -1
  135. package/dist/css/themes/Slider.css +1 -1
  136. package/dist/custom-elements-internal.json +4455 -456
  137. package/dist/custom-elements.json +1411 -288
  138. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  139. package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
  140. package/dist/generated/i18n/i18n-defaults.js +2 -1
  141. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  142. package/dist/generated/themes/Feed.css.d.ts +2 -0
  143. package/dist/generated/themes/Feed.css.js +8 -0
  144. package/dist/generated/themes/Feed.css.js.map +1 -0
  145. package/dist/generated/themes/FeedItem.css.d.ts +2 -0
  146. package/dist/generated/themes/FeedItem.css.js +8 -0
  147. package/dist/generated/themes/FeedItem.css.js.map +1 -0
  148. package/dist/generated/themes/Footer.css.d.ts +1 -1
  149. package/dist/generated/themes/Footer.css.js +1 -1
  150. package/dist/generated/themes/Footer.css.js.map +1 -1
  151. package/dist/generated/themes/ImageGridCloud.css.d.ts +2 -0
  152. package/dist/generated/themes/ImageGridCloud.css.js +8 -0
  153. package/dist/generated/themes/ImageGridCloud.css.js.map +1 -0
  154. package/dist/generated/themes/ImageGridCloudItem.css.d.ts +2 -0
  155. package/dist/generated/themes/ImageGridCloudItem.css.js +8 -0
  156. package/dist/generated/themes/ImageGridCloudItem.css.js.map +1 -0
  157. package/dist/generated/themes/MediaPlayer.css.d.ts +1 -1
  158. package/dist/generated/themes/MediaPlayer.css.js +1 -1
  159. package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
  160. package/dist/generated/themes/Pagination.css.d.ts +1 -1
  161. package/dist/generated/themes/Pagination.css.js +1 -1
  162. package/dist/generated/themes/Pagination.css.js.map +1 -1
  163. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  164. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  165. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  166. package/dist/generated/themes/Slider.css.d.ts +1 -1
  167. package/dist/generated/themes/Slider.css.js +1 -1
  168. package/dist/generated/themes/Slider.css.js.map +1 -1
  169. package/dist/messagebundle.properties +3 -0
  170. package/dist/messagebundle_en.properties +1 -0
  171. package/dist/vscode.html-custom-data.json +130 -1
  172. package/dist/web-types.json +305 -4
  173. package/package.json +1 -1
  174. package/src/Accordion.ts +1 -0
  175. package/src/AccordionItem.ts +2 -0
  176. package/src/AssetsVariables.ts +5 -0
  177. package/src/Breadcrumbs.ts +5 -0
  178. package/src/ContactItem.ts +2 -0
  179. package/src/CountrySelector.ts +1 -0
  180. package/src/DatePicker.ts +2 -1
  181. package/src/Feed.ts +144 -0
  182. package/src/FeedItem.ts +198 -0
  183. package/src/FeedItemTemplate.tsx +60 -0
  184. package/src/FeedTemplate.tsx +66 -0
  185. package/src/FilterMenu.ts +2 -0
  186. package/src/Footer.ts +47 -4
  187. package/src/FooterTemplate.tsx +29 -39
  188. package/src/ImageGridCloud.ts +188 -0
  189. package/src/ImageGridCloudItem.ts +57 -0
  190. package/src/ImageGridCloudItemTemplate.tsx +11 -0
  191. package/src/ImageGridCloudTemplate.tsx +16 -0
  192. package/src/ImageGridTicker.ts +3 -3
  193. package/src/LinkListItem.ts +1 -0
  194. package/src/List.ts +3 -0
  195. package/src/ListGroupHeader.ts +1 -0
  196. package/src/ListItem.ts +2 -0
  197. package/src/ListItemBase.ts +4 -0
  198. package/src/ListSelectAll.ts +1 -0
  199. package/src/MastheadCountrySelector.ts +15 -0
  200. package/src/MastheadItem.ts +10 -0
  201. package/src/MastheadMenu.ts +6 -0
  202. package/src/MastheadMobileMenu.ts +11 -0
  203. package/src/MastheadProfileMenu.ts +11 -0
  204. package/src/MastheadShell.ts +41 -0
  205. package/src/MediaPlayer.ts +1 -0
  206. package/src/MediaPlayerVimeo.ts +4 -3
  207. package/src/MediaPlayerYoutube.ts +3 -0
  208. package/src/Pagination.ts +1 -1
  209. package/src/Search.ts +20 -4
  210. package/src/SearchTemplate.tsx +353 -0
  211. package/src/SearchableListBase.ts +10 -0
  212. package/src/SecondaryNavigation.ts +19 -0
  213. package/src/SecondaryNavigationItem.ts +6 -0
  214. package/src/SecondaryNavigationSubItem.ts +3 -0
  215. package/src/SelectBox.ts +1 -0
  216. package/src/SocialMediaButton.ts +2 -0
  217. package/src/StepInput.ts +2 -0
  218. package/src/TabNavigation.ts +3 -0
  219. package/src/Tag.ts +1 -0
  220. package/src/TagGroup.ts +3 -0
  221. package/src/TextField.ts +1 -0
  222. package/src/Tile.ts +1 -0
  223. package/src/Upload.ts +5 -0
  224. package/src/generated/i18n/i18n-defaults.ts +2 -2
  225. package/src/generated/themes/Feed.css.ts +9 -0
  226. package/src/generated/themes/FeedItem.css.ts +9 -0
  227. package/src/generated/themes/Footer.css.ts +1 -1
  228. package/src/generated/themes/ImageGridCloud.css.ts +9 -0
  229. package/src/generated/themes/ImageGridCloudItem.css.ts +9 -0
  230. package/src/generated/themes/MediaPlayer.css.ts +1 -1
  231. package/src/generated/themes/Pagination.css.ts +1 -1
  232. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  233. package/src/generated/themes/Slider.css.ts +1 -1
  234. package/src/i18n/messagebundle.properties +3 -0
  235. package/src/i18n/messagebundle_en.properties +1 -0
  236. package/src/themes/Feed.css +51 -0
  237. package/src/themes/FeedItem.css +60 -0
  238. package/src/themes/Footer.css +9 -5
  239. package/src/themes/ImageGridCloud.css +55 -0
  240. package/src/themes/ImageGridCloudItem.css +10 -0
  241. package/src/themes/MediaPlayer.css +1 -1
  242. package/src/themes/Pagination.css +1 -1
  243. package/dist/assets/messagebundle_en-BhTYnZbC.js +0 -1
  244. package/dist/generated/templates/SearchSuggestionsTemplate.lit.d.ts +0 -3
  245. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js +0 -17
  246. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js.map +0 -1
  247. package/dist/generated/templates/SearchTemplate.lit.d.ts +0 -3
  248. package/dist/generated/templates/SearchTemplate.lit.js +0 -28
  249. package/dist/generated/templates/SearchTemplate.lit.js.map +0 -1
  250. package/src/Search.hbs +0 -155
  251. package/src/SearchSuggestions.hbs +0 -91
  252. package/src/generated/templates/SearchSuggestionsTemplate.lit.ts +0 -21
  253. package/src/generated/templates/SearchTemplate.lit.ts +0 -32
@@ -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
 
@@ -96,6 +96,7 @@ type UDExMastheadShellAnalyticsNameEventDetail = {
96
96
  * Fired event when the user clicks the mobile menu button opener.
97
97
  *
98
98
  * @public
99
+ * @param {AnalyticsName} analyticsName The analytics name for the mobile menu open event
99
100
  */
100
101
  @event("mobile-menu-open", { bubbles: true })
101
102
 
@@ -103,6 +104,7 @@ type UDExMastheadShellAnalyticsNameEventDetail = {
103
104
  * Fired event when the user clicks the mobile menu button closer.
104
105
  *
105
106
  * @public
107
+ * @param {AnalyticsName} analyticsName The analytics name for the mobile menu open event
106
108
  */
107
109
  @event("mobile-menu-close", { bubbles: true })
108
110
 
@@ -110,6 +112,11 @@ type UDExMastheadShellAnalyticsNameEventDetail = {
110
112
  * Fired event when the user clicks the search button trigger.
111
113
  *
112
114
  * @public
115
+ * @param {AnalyticsName} analyticsName The analytics name for the search click event
116
+ * @param {PointerEvent} originalEvent The original pointer event
117
+ * @param {HTMLElement} sourceNode The source element that fired the event
118
+ * @param {UDExMastheadItem} [item] The masthead item that was clicked
119
+ *
113
120
  */
114
121
  @event("search-click", { bubbles: true })
115
122
 
@@ -117,6 +124,10 @@ type UDExMastheadShellAnalyticsNameEventDetail = {
117
124
  * Fired event when the user clicks the search close button.
118
125
  *
119
126
  * @public
127
+ * @param {AnalyticsName} analyticsName The analytics name for the search click event
128
+ * @param {PointerEvent} originalEvent The original pointer event
129
+ * @param {HTMLElement} sourceNode The source element that fired the event
130
+ * @param {UDExMastheadItem} [item] The masthead item that was clicked
120
131
  */
121
132
  @event("search-close-click", { bubbles: true })
122
133
 
@@ -124,6 +135,7 @@ type UDExMastheadShellAnalyticsNameEventDetail = {
124
135
  * Fired event when the search panel is opened.
125
136
  *
126
137
  * @public
138
+ * @param {AnalyticsName} analyticsName The analytics name for the mobile menu open event
127
139
  */
128
140
  @event("search-opened", { bubbles: true })
129
141
 
@@ -131,6 +143,7 @@ type UDExMastheadShellAnalyticsNameEventDetail = {
131
143
  * Fired event when the search panel is closed.
132
144
  *
133
145
  * @public
146
+ * @param {AnalyticsName} analyticsName The analytics name for the mobile menu open event
134
147
  */
135
148
  @event("search-closed", { bubbles: true })
136
149
 
@@ -138,6 +151,10 @@ type UDExMastheadShellAnalyticsNameEventDetail = {
138
151
  * Fired event when the user clicks the cart button trigger.
139
152
  *
140
153
  * @public
154
+ * @param {AnalyticsName} analyticsName The analytics name for the search click event
155
+ * @param {PointerEvent} originalEvent The original pointer event
156
+ * @param {HTMLElement} sourceNode The source element that fired the event
157
+ * @param {UDExMastheadItem} [item] The masthead item that was clicked
141
158
  */
142
159
  @event("cart-click", { bubbles: true })
143
160
 
@@ -145,6 +162,10 @@ type UDExMastheadShellAnalyticsNameEventDetail = {
145
162
  * Fired event when the user clicks the support button trigger.
146
163
  *
147
164
  * @public
165
+ * @param {AnalyticsName} analyticsName The analytics name for the search click event
166
+ * @param {PointerEvent} originalEvent The original pointer event
167
+ * @param {HTMLElement} sourceNode The source element that fired the event
168
+ * @param {UDExMastheadItem} [item] The masthead item that was clicked
148
169
  */
149
170
  @event("support-click", { bubbles: true })
150
171
 
@@ -152,6 +173,10 @@ type UDExMastheadShellAnalyticsNameEventDetail = {
152
173
  * Fired event when the user clicks the profile button trigger.
153
174
  *
154
175
  * @public
176
+ * @param {AnalyticsName} analyticsName The analytics name for the search click event
177
+ * @param {PointerEvent} originalEvent The original pointer event
178
+ * @param {HTMLElement} sourceNode The source element that fired the event
179
+ * @param {UDExMastheadItem} [item] The masthead item that was clicked
155
180
  */
156
181
  @event("profile-click", { bubbles: true })
157
182
 
@@ -159,6 +184,10 @@ type UDExMastheadShellAnalyticsNameEventDetail = {
159
184
  * Fired event when the user clicks the country selector button trigger.
160
185
  *
161
186
  * @public
187
+ * @param {AnalyticsName} analyticsName The analytics name for the search click event
188
+ * @param {PointerEvent} originalEvent The original pointer event
189
+ * @param {HTMLElement} sourceNode The source element that fired the event
190
+ * @param {UDExMastheadItem} [item] The masthead item that was clicked
162
191
  */
163
192
  @event("country-selector-click", { bubbles: true })
164
193
 
@@ -166,6 +195,10 @@ type UDExMastheadShellAnalyticsNameEventDetail = {
166
195
  * Fired event when the user clicks the logo.
167
196
  *
168
197
  * @public
198
+ * @param {AnalyticsName} analyticsName The analytics name for the search click event
199
+ * @param {PointerEvent} originalEvent The original pointer event
200
+ * @param {HTMLElement} sourceNode The source element that fired the event
201
+ * @param {UDExMastheadItem} [item] The masthead item that was clicked
169
202
  */
170
203
  @event("logo-click", { bubbles: true })
171
204
 
@@ -173,6 +206,10 @@ type UDExMastheadShellAnalyticsNameEventDetail = {
173
206
  * Fired event when the user clicks the site label.
174
207
  *
175
208
  * @public
209
+ * @param {AnalyticsName} analyticsName The analytics name for the search click event
210
+ * @param {PointerEvent} originalEvent The original pointer event
211
+ * @param {HTMLElement} sourceNode The source element that fired the event
212
+ * @param {UDExMastheadItem} [item] The masthead item that was clicked
176
213
  */
177
214
  @event("site-label-click", { bubbles: true })
178
215
 
@@ -180,6 +217,10 @@ type UDExMastheadShellAnalyticsNameEventDetail = {
180
217
  * Fired event when the user clicks the co-brand.
181
218
  *
182
219
  * @public
220
+ * @param {AnalyticsName} analyticsName The analytics name for the search click event
221
+ * @param {PointerEvent} originalEvent The original pointer event
222
+ * @param {HTMLElement} sourceNode The source element that fired the event
223
+ * @param {UDExMastheadItem} [item] The masthead item that was clicked
183
224
  */
184
225
  @event("co-brand-click", { bubbles: true })
185
226
 
@@ -93,6 +93,7 @@ type UDExMediaPlayerVideoProgressEventDetail = {
93
93
  *
94
94
  * @allowPreventDefault
95
95
  * @public
96
+ * @param {number} progress percentage of video watched
96
97
  */
97
98
  @event("videoProgress", { bubbles: true })
98
99
  /**
@@ -12,7 +12,7 @@ import MediaPlayerCss from "./generated/themes/MediaPlayer.css.js";
12
12
 
13
13
  export type VimeoPlayer = Player;
14
14
 
15
- type UDExMediaPLayerViemeoPlayingEventDetail = {
15
+ type UDExMediaPlayerVimeoPlayingEventDetail = {
16
16
  percentPlayed: number,
17
17
  }
18
18
 
@@ -65,6 +65,7 @@ type UDExMediaPLayerViemeoPlayingEventDetail = {
65
65
  *
66
66
  * @allowPreventDefault
67
67
  * @public
68
+ * @param {number} percentPlayed Percentage of video played (0-100)
68
69
  */
69
70
  @event("playing", { bubbles: true })
70
71
  class UDExMediaPlayerVimeo extends UI5Element {
@@ -72,7 +73,7 @@ class UDExMediaPlayerVimeo extends UI5Element {
72
73
  "ready": void,
73
74
  "ended": void,
74
75
  "pause": void,
75
- "playing": UDExMediaPLayerViemeoPlayingEventDetail,
76
+ "playing": UDExMediaPlayerVimeoPlayingEventDetail,
76
77
  };
77
78
  /**
78
79
  * Defines the source of the video or audio
@@ -175,4 +176,4 @@ class UDExMediaPlayerVimeo extends UI5Element {
175
176
  UDExMediaPlayerVimeo.define();
176
177
 
177
178
  export default UDExMediaPlayerVimeo;
178
- export type { UDExMediaPLayerViemeoPlayingEventDetail };
179
+ export type { UDExMediaPlayerVimeoPlayingEventDetail };
@@ -73,6 +73,7 @@ type UDExMediaPlayerYoutubeBaseEventDetails = {
73
73
  *
74
74
  * @allowPreventDefault
75
75
  * @public
76
+ * @param {YT.OnStateChangeEvent} ytevent The YouTube state change event
76
77
  */
77
78
  @event("ended", { bubbles: true })
78
79
  /**
@@ -80,6 +81,7 @@ type UDExMediaPlayerYoutubeBaseEventDetails = {
80
81
  *
81
82
  * @allowPreventDefault
82
83
  * @public
84
+ * @param {YT.OnStateChangeEvent} ytevent The YouTube state change event
83
85
  */
84
86
  @event("pause", { bubbles: true })
85
87
  /**
@@ -87,6 +89,7 @@ type UDExMediaPlayerYoutubeBaseEventDetails = {
87
89
  *
88
90
  * @allowPreventDefault
89
91
  * @public
92
+ * @param {number} percentPlayed Percentage of video played (0-100)
90
93
  */
91
94
  @event("playing", { bubbles: true })
92
95
  class UDExMediaPlayerYoutube extends UI5Element {
package/src/Pagination.ts CHANGED
@@ -71,7 +71,7 @@ type UDExPaginationChangeEventDetail = {
71
71
  * Fires when pagination item was clicked.
72
72
  *
73
73
  * @allowPreventDefault
74
- * @param {Number}
74
+ * @param {number} currentPage The current page number.
75
75
  * @public
76
76
  */
77
77
  @event("change", { bubbles: true })
package/src/Search.ts CHANGED
@@ -6,7 +6,7 @@ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
6
6
  import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
7
7
  import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
8
8
  import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
9
- import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
9
+ import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
10
10
  import { getFeature } from "@ui5/webcomponents-base/dist/FeaturesRegistry.js";
11
11
  import Popover from "@ui5/webcomponents/dist/Popover.js";
12
12
  import {
@@ -42,12 +42,13 @@ import retryUntilSuccessful from "./utils/retryUntilSuccessful.js";
42
42
  import sanitizeString from "./utils/sanitizeString.js";
43
43
  import UDExButton from "./Button.js";
44
44
 
45
- import SearchTemplate from "./generated/templates/SearchTemplate.lit.js";
45
+ import SearchTemplate from "./SearchTemplate.js";
46
46
 
47
47
  // Styles
48
48
  import SearchCss from "./generated/themes/Search.css.js";
49
49
  import SearchSuggestionsCss from "./generated/themes/SearchSuggestions.css.js";
50
50
  import getEffectiveScrollbarStyle from "./utils/getEffectiveScrollbarStyle.js";
51
+ import type { Booleanish } from "@ui5/webcomponents-base/dist/thirdparty/preact/jsx.js";
51
52
 
52
53
  const SearchIcon: string = "sap-icon://search";
53
54
 
@@ -126,7 +127,7 @@ type UDExSearchKeydownEventDetail = {
126
127
  */
127
128
  @customElement({
128
129
  tag: "udex-search",
129
- renderer: litRender,
130
+ renderer: jsxRenderer,
130
131
  styles: [SearchCss, SearchSuggestionsCss, getEffectiveScrollbarStyle()],
131
132
  template: SearchTemplate,
132
133
  get dependencies() {
@@ -139,12 +140,20 @@ type UDExSearchKeydownEventDetail = {
139
140
  * Fired event when the user submitted the value.
140
141
  *
141
142
  * @public
143
+ * @param {string} value The submitted search value
144
+ * @param {string} categoryName The category name if an item from the suggestion list is clicked
145
+ * @param {string} item The clicked item from the suggestion list
146
+ *
142
147
  */
143
148
  @event("submit-search-value", { bubbles: true })
144
149
  /**
145
150
  * Fired event when the user typed to search field.
146
151
  *
147
152
  * @public
153
+ * @param {string} value The current value of the search field
154
+ * @param {string} categoryName The category name if an item from the suggestion list is clicked
155
+ * @param {string} item The clicked item from the suggestion list
156
+ *
148
157
  */
149
158
  @event("handle-value-search", { bubbles: true })
150
159
  /**
@@ -157,18 +166,25 @@ type UDExSearchKeydownEventDetail = {
157
166
  * Fired event when the user clicks on the item inside the popover.
158
167
  *
159
168
  * @public
169
+ * @param {string} value The value of the clicked item
170
+ * @param {string} categoryName The category name of the clicked item
171
+ * @param {string} item The clicked item from the suggestion list
172
+ *
160
173
  */
161
174
  @event("dropdown-item-click", { bubbles: true })
162
175
  /**
163
176
  * Fired event when the user clicks on the intem inside the prefix dropdown.
164
177
  *
165
178
  * @public
179
+ * @param {ListItemBase} item The clicked item from the prefix dropdown
180
+ *
166
181
  */
167
182
  @event("prefix-item-click")
168
183
  /**
169
184
  * Fired event when the user clicks on the intem inside the prefix dropdown.
170
185
  *
171
186
  * @public
187
+ * @param {KeyboardEvent} e The keyboard event object
172
188
  */
173
189
  @event("search-keydown", { bubbles: true })
174
190
  class UDExSearch extends UI5Element {
@@ -1181,7 +1197,7 @@ class UDExSearch extends UI5Element {
1181
1197
  return !!(this.suggestedList?.length || this.recommendedList?.length);
1182
1198
  }
1183
1199
 
1184
- get getAriaHasPopup(): string {
1200
+ get getAriaHasPopup(): "dialog" | Booleanish {
1185
1201
  return this.showSuggestedPopover ? "dialog" : "false";
1186
1202
  }
1187
1203
 
@@ -0,0 +1,353 @@
1
+ import type UDExSearch from "./Search.js";
2
+ import type { SuggestionList } from "./Search.js";
3
+ import slimArrowDown from "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
4
+ import search from "@ui5/webcomponents-icons/dist/search.js";
5
+ import decline from "@ui5/webcomponents-icons/dist/decline.js";
6
+ import microphone from "@ui5/webcomponents-icons/dist/microphone.js";
7
+ import UDExButton from "./Button.js";
8
+ import UDExButtonDesign from "./types/ButtonDesign.js";
9
+ import UDExButtonSize from "./types/ButtonSize.js";
10
+ import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
11
+ import UI5IconMode from "@ui5/webcomponents/dist/types/IconMode.js";
12
+ import UI5Popover from "@ui5/webcomponents/dist/Popover.js";
13
+ import UI5PopoverPlacement from "@ui5/webcomponents/dist/types/PopoverPlacement.js";
14
+ import UI5PopoverHAlign from "@ui5/webcomponents/dist/types/PopoverHorizontalAlign.js";
15
+ import UDExControlButton from "./ControlButton.js";
16
+ import UDExControlButtonDesign from "./types/ControlButtonDesign.js";
17
+ import UI5Button from "@ui5/webcomponents/dist/Button.js";
18
+ import UI5ButtonDesign from "@ui5/webcomponents/dist/types/ButtonDesign.js";
19
+
20
+ export default function SearchTemplate(this: UDExSearch) {
21
+ return (
22
+ <>
23
+ <div class={`udex-search__root ${this.searchClasses}`}>
24
+ { this.isShowSearchHomePrefix ? renderSearchHomePrefix.call(this) : "" }
25
+
26
+ <form role="search" class={`udex-search__container ${this.focusClasses} ${this.isNotEmptyClass}`}>
27
+ { this.labelAnimationDisabled ? renderInputWithStaticLabel.call(this) : renderInputWithAnimatedLabel.call(this) }
28
+
29
+ {
30
+ this.open ? (
31
+ <span
32
+ aria-live="polite"
33
+ aria-atomic="true"
34
+ id="search-description"
35
+ class="hidden"
36
+ aria-hidden="true"
37
+ >
38
+ {this.suggestionsDescription}
39
+ </span>
40
+ ) : ""
41
+ }
42
+
43
+ <div class="udex-search__icons">
44
+ {
45
+ this.isShowHomeResetButton ? (
46
+ <UDExButton
47
+ id="reset-button"
48
+ class="udex-search__button udex-search__reset-button"
49
+ size={UDExButtonSize.Small}
50
+ design={UDExButtonDesign.Default}
51
+ tooltip={this.tooltipInfo.tooltipResetButton}
52
+ onClick={this.onReset as any}
53
+ onKeyDown={this.handleKeyDownReset}
54
+ >
55
+ <UI5Icon
56
+ class="udex-search__button-icon"
57
+ accessible-name={this.accInfo.accessibleNameResetIcon}
58
+ accessible-role="presentation"
59
+ name={decline}
60
+ ></UI5Icon>
61
+ </UDExButton>
62
+ ) : ""
63
+ }
64
+
65
+ {
66
+ this.isShowResetButton ? (
67
+ <UDExControlButton
68
+ id="reset-button"
69
+ class="udex-search__reset-button"
70
+ design={UDExControlButtonDesign.Default}
71
+ tooltip={this.tooltipInfo.tooltipResetButton}
72
+ icon={decline}
73
+ size={UDExButtonSize.Large}
74
+ accessible-name={this.accInfo.accessibleNameResetIcon}
75
+ onClick={this.onReset as any}
76
+ onKeyDown={this.handleKeyDownReset}
77
+ ></UDExControlButton>
78
+ ) : ""
79
+ }
80
+
81
+ {
82
+ this.isVoiceButton ? (
83
+ <UDExButton
84
+ id="voice-button"
85
+ class={`udex-search__button udex-search__voice-button ${this.voiceActiveClass}`}
86
+ design={UDExButtonDesign.Default}
87
+ size={UDExButtonSize.Small}
88
+ icon={microphone}
89
+ tooltip={this.tooltipInfo.tooltipVoiceButton}
90
+ onClick={this.onVoice as any}
91
+ ></UDExButton>
92
+ ) : ""
93
+ }
94
+
95
+ {
96
+ this.showNonInteractiveButton ? (
97
+ <UI5Icon
98
+ class="udex-search__icon"
99
+ aria-hidden="true"
100
+ accessible-name={this.accInfo.accessibleNameSearchIcon}
101
+ name={search}
102
+ ></UI5Icon>
103
+ ) : ""
104
+ }
105
+
106
+ {
107
+ this.showSubmitHomeButton ? (
108
+ <UDExButton
109
+ id="submit-button"
110
+ class={`udex-search__button udex-search__submit-button ${this.searchButtonActiveClass}`}
111
+ design={UDExButtonDesign.Default}
112
+ icon={search}
113
+ size={UDExButtonSize.Small}
114
+ tooltip={this.tooltipInfo.tooltipSubmitButton}
115
+ onClick={this.onSubmit as any}
116
+ ></UDExButton>
117
+ ) : ""
118
+ }
119
+
120
+ {
121
+ this.showSubmitStandardButton ? (
122
+ <UDExControlButton
123
+ id="submit-button"
124
+ class="udex-search__submit-button"
125
+ size={UDExButtonSize.Large}
126
+ design={UDExControlButtonDesign.Default}
127
+ icon={search}
128
+ tooltip={this.tooltipInfo.tooltipSubmitButton}
129
+ onClick={this.onSubmit as any}
130
+ ></UDExControlButton>
131
+ ) : ""
132
+ }
133
+ </div>
134
+ </form>
135
+ </div>
136
+
137
+ { renderSearchSuggestionPopover.call(this) }
138
+ </>
139
+ );
140
+ }
141
+
142
+ function renderSearchHomePrefix(this: UDExSearch) {
143
+ return (
144
+ <div class={`udex-search__prefix ${this.prefixWrapperClasses}`}>
145
+ <button
146
+ type="button"
147
+ role="combobox"
148
+ aria-expanded={this._prefixDropdownExpanded}
149
+ aria-label={this.labelPrefix}
150
+ aria-haspopup="true"
151
+ aria-controls="udex-search-prefix"
152
+ class="udex-search__prefix-button"
153
+ onClick={this.handleDropdownClick}
154
+ >
155
+ <span class="udex-search__prefix-label">{this.labelPrefix}</span>
156
+ <UI5Icon
157
+ class="udex-search__prefix-icon"
158
+ name={slimArrowDown}
159
+ mode={UI5IconMode.Decorative}
160
+ ></UI5Icon>
161
+ </button>
162
+
163
+ <UI5Popover
164
+ id="udex-search-prefix"
165
+ class={this.prefixPopoverClasses}
166
+ hide-arrow
167
+ placement={UI5PopoverPlacement.Bottom}
168
+ horizontal-align={UI5PopoverHAlign.Start}
169
+ style={this.prefixPopoverStyles}
170
+ onClose={this.handleAfterClosePrefixPopover}
171
+ >
172
+ <slot></slot>
173
+ </UI5Popover>
174
+ </div>
175
+ );
176
+ }
177
+
178
+ function renderSearchInput(this: UDExSearch, placeholder: boolean = false) {
179
+ return (
180
+ <input
181
+ role="searchbox"
182
+ id="search-input"
183
+ type="search"
184
+ name="search"
185
+ class="udex-search__field"
186
+ autocomplete="off"
187
+ aria-autocomplete="list"
188
+ aria-haspopup={this.getAriaHasPopup}
189
+ aria-label={this.accInfo.ariaLabel}
190
+ aria-describedby="search-description"
191
+ {...(placeholder ? { placeholder: this.effectivePlaceholder } : {})}
192
+ value={this.value}
193
+ onInput={this.handleSearchChange}
194
+ onKeyDown={this.handleKeyDown}
195
+ onFocus={this.handleFocus}
196
+ onFocusOut={this.handleFocusout}
197
+ onBlur={this.handleBlur}
198
+ onClick={this.handleInputClick}
199
+ />
200
+ );
201
+ }
202
+
203
+ function renderInputWithStaticLabel(this: UDExSearch) {
204
+ return renderSearchInput.call(this, true);
205
+ }
206
+
207
+ function renderInputWithAnimatedLabel(this: UDExSearch) {
208
+ return (
209
+ <>
210
+ {
211
+ this.label ? (
212
+ <label for="search-input" class={this.labelClasses}>
213
+ {this.label}
214
+ </label>
215
+ ) : ""
216
+ }
217
+
218
+ { renderSearchInput.call(this, false) }
219
+ </>
220
+ );
221
+ }
222
+
223
+ function renderSearchSuggestionPopover(this: UDExSearch) {
224
+ return (
225
+ <UI5Popover
226
+ class={`udex-search-suggestions__root ${this.homeSearchPopoverClass}`}
227
+ hide-arrow
228
+ prevent-initial-focus
229
+ placement={UI5PopoverPlacement.Bottom}
230
+ horizontal-align={UI5PopoverHAlign.End}
231
+ style={this.popoverStyles}
232
+ id={this.getSuggestionsPopoverId}
233
+ aria-orientation="vertical"
234
+ accessible-role="Dialog"
235
+ onKeyDown={this.handleKeyPressSuggestionList}
236
+ accessible-name={this.suggestionsAccessibleName}
237
+ >
238
+ {
239
+ this.showNoResultMessage ? (
240
+ <span class="udex-search-suggestions__message">{this.noResultMessage}</span>
241
+ ) : renderSearchSuggestionPopoverResults.call(this)
242
+ }
243
+ </UI5Popover>
244
+ );
245
+ }
246
+
247
+ function renderSearchSuggestionPopoverResults(this: UDExSearch) {
248
+ return (
249
+ <div role="tree">
250
+ {
251
+ this.isShowSuggestedList ? (
252
+ renderSearchSuggestionPopoverResultsSuggestedList.call(this)
253
+ ) : ""
254
+ }
255
+
256
+ {
257
+ this.isShowRecommendedList ? (
258
+ renderSearchSuggestionPopoverResultsRecommendedList.call(this)
259
+ ) : ""
260
+ }
261
+ </div>
262
+ );
263
+ }
264
+
265
+ function renderSearchSuggestionPopoverResultsSuggestedList(this: UDExSearch) {
266
+ return (
267
+ <div class="udex-search-suggestions__block" role="treeitem">
268
+ {
269
+ this.suggestedHeading ? (
270
+ <span class="udex-search-suggestions__heading" id="suggested-heading">
271
+ {this.suggestedHeading}
272
+ </span>
273
+ ) : ""
274
+ }
275
+
276
+ <div class="udex-search-suggestions__list"
277
+ role="listbox"
278
+ aria-labelledby="suggested-heading"
279
+ tabindex={0}
280
+ onKeyDown={this.handleKeyDownPopover}
281
+ >
282
+ {
283
+ this.suggestedList.map((item, i) => (
284
+ <UI5Button
285
+ key={i}
286
+ id={item.id}
287
+ icon={item.icon}
288
+ type="Button"
289
+ design={UI5ButtonDesign.Default}
290
+ accessible-name={item.suggestionDescription}
291
+ class="udex-search-suggestions__item-button"
292
+ title={item.title}
293
+ tabindex={-1}
294
+ role="option"
295
+ onClick={item.handleSelectItem}
296
+ dangerouslySetInnerHTML={{ __html: item.text }}
297
+ ></UI5Button>
298
+ ))
299
+ }
300
+ </div>
301
+ </div>
302
+ );
303
+ }
304
+
305
+ function renderSearchSuggestionPopoverResultsRecommendedList(this: UDExSearch) {
306
+ return (
307
+ <div class="udex-search-suggestions__block" role="treeitem">
308
+ {
309
+ this.recommendedHeading ? (
310
+ <span class="udex-search-suggestions__heading" id="recommended-heading">
311
+ {this.recommendedHeading}
312
+ </span>
313
+ ) : ""
314
+ }
315
+
316
+ <div class="udex-search-suggestions__list"
317
+ role="listbox"
318
+ aria-labelledby="recommended-heading"
319
+ tabindex={0}
320
+ onKeyDown={this.handleKeyDownPopover}
321
+ >
322
+ {
323
+ this.recommendedList.map((item, i) => (
324
+ item.hasCustomIcon ? (
325
+ renderSearchSuggestionPopoverResultsRecommendedListButton(item, i, item.icon)
326
+ ) : (
327
+ renderSearchSuggestionPopoverResultsRecommendedListButton(item, i)
328
+ )
329
+ ))
330
+ }
331
+ </div>
332
+ </div>
333
+ );
334
+ }
335
+
336
+ function renderSearchSuggestionPopoverResultsRecommendedListButton(button: SuggestionList, key: number, icon: string | undefined = undefined) {
337
+ return (
338
+ <UI5Button
339
+ key={key}
340
+ id={button.id}
341
+ {...(icon ? { "icon": icon } : {})}
342
+ type="Button"
343
+ design={UI5ButtonDesign.Default}
344
+ class="udex-search-suggestions__item-button"
345
+ accessible-name={button.suggestionDescription}
346
+ title={button.title}
347
+ tabindex={-1}
348
+ role="option"
349
+ onClick={button.handleSelectItem}
350
+ dangerouslySetInnerHTML={{ __html: button.text }}
351
+ ></UI5Button>
352
+ );
353
+ }