@sapudex/web-components 2.56.0 → 2.57.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 (227) hide show
  1. package/README.md +258 -0
  2. package/cypress/specs/TagGroup.cy.tsx +35 -0
  3. package/dist/Carousel.d.ts +9 -3
  4. package/dist/Carousel.js +35 -6
  5. package/dist/Carousel.js.map +1 -1
  6. package/dist/CarouselTemplate.js +3 -3
  7. package/dist/CarouselTemplate.js.map +1 -1
  8. package/dist/TabNavigation.d.ts +3 -2
  9. package/dist/TabNavigation.js +3 -2
  10. package/dist/TabNavigation.js.map +1 -1
  11. package/dist/Tag.d.ts +1 -0
  12. package/dist/Tag.js +6 -0
  13. package/dist/Tag.js.map +1 -1
  14. package/dist/TagGroup.js +4 -2
  15. package/dist/TagGroup.js.map +1 -1
  16. package/dist/assets/{InputSuggestions-ChhTxYh4.js → InputSuggestions-C8grDr_8.js} +1 -1
  17. package/dist/assets/{ListItemStandardExpandableTextTemplate-Bh1HxZfH.js → ListItemStandardExpandableTextTemplate-BQtSr7yg.js} +1 -1
  18. package/dist/assets/{bundle.esm-DCX_ohoZ.js → bundle.esm-GvPkDyXP.js} +238 -238
  19. package/dist/assets/messagebundle_ar-BvIvqOKJ.js +1 -0
  20. package/dist/assets/messagebundle_bg-CbE9TJP3.js +1 -0
  21. package/dist/assets/messagebundle_cs-D7sDCnrw.js +1 -0
  22. package/dist/assets/messagebundle_da-BKcG2gb3.js +1 -0
  23. package/dist/assets/messagebundle_de-CqojOAqG.js +1 -0
  24. package/dist/assets/messagebundle_el-DLfp0_Vm.js +1 -0
  25. package/dist/assets/messagebundle_en-DBpf5Il2.js +1 -0
  26. package/dist/assets/messagebundle_es-dcaagZn0.js +1 -0
  27. package/dist/assets/messagebundle_et-XYXhCdvm.js +1 -0
  28. package/dist/assets/messagebundle_fi-Dffg0zEq.js +1 -0
  29. package/dist/assets/messagebundle_fr-CW8ENL86.js +1 -0
  30. package/dist/assets/messagebundle_hr-onMgZwRd.js +1 -0
  31. package/dist/assets/messagebundle_hu-BPDuHAe0.js +1 -0
  32. package/dist/assets/messagebundle_it-BcfXVW1A.js +1 -0
  33. package/dist/assets/messagebundle_ja-EWp-Nkd9.js +1 -0
  34. package/dist/assets/messagebundle_ko-BKQ27UJW.js +1 -0
  35. package/dist/assets/messagebundle_lt-A-f2EeMY.js +1 -0
  36. package/dist/assets/messagebundle_lv-CHVU_rnx.js +1 -0
  37. package/dist/assets/messagebundle_nl-gmf1np1i.js +1 -0
  38. package/dist/assets/messagebundle_no-CazfcIRA.js +1 -0
  39. package/dist/assets/messagebundle_pl-iv_zMkL4.js +1 -0
  40. package/dist/assets/messagebundle_pt-usY49ESJ.js +1 -0
  41. package/dist/assets/messagebundle_pt_PT-DTLEUiTC.js +1 -0
  42. package/dist/assets/messagebundle_ro-BHeGIHaV.js +1 -0
  43. package/dist/assets/messagebundle_ru-DJB1z_R0.js +1 -0
  44. package/dist/assets/messagebundle_sk-DlNIpzr3.js +1 -0
  45. package/dist/assets/messagebundle_sl-Day075Cf.js +1 -0
  46. package/dist/assets/messagebundle_sr-iI_TwIHf.js +1 -0
  47. package/dist/assets/messagebundle_sv-BPj73b5X.js +1 -0
  48. package/dist/assets/messagebundle_tr-DpdBqQtI.js +1 -0
  49. package/dist/assets/messagebundle_uk-CT4EqEBF.js +1 -0
  50. package/dist/assets/messagebundle_zh_CN-B_42cWcu.js +1 -0
  51. package/dist/assets/messagebundle_zh_TW-D25iNCcy.js +1 -0
  52. package/dist/css/themes/Carousel.css +1 -1
  53. package/dist/css/themes/Switch.css +1 -1
  54. package/dist/css/themes/TabNavigation.css +1 -1
  55. package/dist/css/themes/Tooltip.css +1 -1
  56. package/dist/custom-elements-internal.json +12 -12
  57. package/dist/custom-elements.json +12 -12
  58. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  59. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  60. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  61. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  62. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  63. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  64. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  65. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  66. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  67. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  68. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  69. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  70. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  71. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  72. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  73. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  74. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  75. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  76. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  77. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  78. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  79. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  80. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  81. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  82. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  83. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  84. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  85. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  86. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  87. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  88. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  89. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  90. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  91. package/dist/generated/i18n/i18n-defaults.d.ts +1 -9
  92. package/dist/generated/i18n/i18n-defaults.js +1 -9
  93. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  94. package/dist/generated/templates/TabNavigationTemplate.lit.js +2 -2
  95. package/dist/generated/templates/TabNavigationTemplate.lit.js.map +1 -1
  96. package/dist/generated/themes/Carousel.css.d.ts +1 -1
  97. package/dist/generated/themes/Carousel.css.js +1 -1
  98. package/dist/generated/themes/Carousel.css.js.map +1 -1
  99. package/dist/generated/themes/Switch.css.d.ts +1 -1
  100. package/dist/generated/themes/Switch.css.js +1 -1
  101. package/dist/generated/themes/Switch.css.js.map +1 -1
  102. package/dist/generated/themes/TabNavigation.css.d.ts +1 -1
  103. package/dist/generated/themes/TabNavigation.css.js +1 -1
  104. package/dist/generated/themes/TabNavigation.css.js.map +1 -1
  105. package/dist/generated/themes/Tooltip.css.d.ts +1 -1
  106. package/dist/generated/themes/Tooltip.css.js +1 -1
  107. package/dist/generated/themes/Tooltip.css.js.map +1 -1
  108. package/dist/messagebundle.properties +0 -10
  109. package/dist/messagebundle_ar.properties +0 -6
  110. package/dist/messagebundle_bg.properties +0 -8
  111. package/dist/messagebundle_cs.properties +0 -8
  112. package/dist/messagebundle_da.properties +0 -8
  113. package/dist/messagebundle_de.properties +0 -8
  114. package/dist/messagebundle_el.properties +0 -8
  115. package/dist/messagebundle_en.properties +0 -8
  116. package/dist/messagebundle_es.properties +0 -8
  117. package/dist/messagebundle_et.properties +0 -8
  118. package/dist/messagebundle_fi.properties +0 -8
  119. package/dist/messagebundle_fr.properties +0 -8
  120. package/dist/messagebundle_hr.properties +0 -8
  121. package/dist/messagebundle_hu.properties +0 -8
  122. package/dist/messagebundle_it.properties +0 -8
  123. package/dist/messagebundle_ja.properties +0 -8
  124. package/dist/messagebundle_ko.properties +0 -8
  125. package/dist/messagebundle_lt.properties +0 -8
  126. package/dist/messagebundle_lv.properties +0 -8
  127. package/dist/messagebundle_nl.properties +0 -8
  128. package/dist/messagebundle_no.properties +0 -8
  129. package/dist/messagebundle_pl.properties +0 -8
  130. package/dist/messagebundle_pt.properties +0 -8
  131. package/dist/messagebundle_pt_PT.properties +0 -8
  132. package/dist/messagebundle_ro.properties +0 -8
  133. package/dist/messagebundle_ru.properties +0 -8
  134. package/dist/messagebundle_sk.properties +0 -8
  135. package/dist/messagebundle_sl.properties +0 -7
  136. package/dist/messagebundle_sr.properties +0 -8
  137. package/dist/messagebundle_sv.properties +0 -8
  138. package/dist/messagebundle_tr.properties +0 -8
  139. package/dist/messagebundle_uk.properties +0 -8
  140. package/dist/messagebundle_zh_CN.properties +0 -8
  141. package/dist/messagebundle_zh_TW.properties +0 -8
  142. package/dist/vscode.html-custom-data.json +10 -2
  143. package/dist/web-types.json +6 -6
  144. package/package.json +1 -1
  145. package/src/Carousel.ts +51 -8
  146. package/src/CarouselTemplate.tsx +7 -7
  147. package/src/TabNavigation.hbs +2 -0
  148. package/src/TabNavigation.ts +3 -2
  149. package/src/Tag.ts +7 -0
  150. package/src/TagGroup.ts +4 -2
  151. package/src/generated/i18n/i18n-defaults.ts +2 -2
  152. package/src/generated/templates/TabNavigationTemplate.lit.ts +2 -2
  153. package/src/generated/themes/Carousel.css.ts +1 -1
  154. package/src/generated/themes/Switch.css.ts +1 -1
  155. package/src/generated/themes/TabNavigation.css.ts +1 -1
  156. package/src/generated/themes/Tooltip.css.ts +1 -1
  157. package/src/i18n/messagebundle.properties +0 -10
  158. package/src/i18n/messagebundle_ar.properties +0 -6
  159. package/src/i18n/messagebundle_bg.properties +0 -8
  160. package/src/i18n/messagebundle_cs.properties +0 -8
  161. package/src/i18n/messagebundle_da.properties +0 -8
  162. package/src/i18n/messagebundle_de.properties +0 -8
  163. package/src/i18n/messagebundle_el.properties +0 -8
  164. package/src/i18n/messagebundle_en.properties +0 -8
  165. package/src/i18n/messagebundle_es.properties +0 -8
  166. package/src/i18n/messagebundle_et.properties +0 -8
  167. package/src/i18n/messagebundle_fi.properties +0 -8
  168. package/src/i18n/messagebundle_fr.properties +0 -8
  169. package/src/i18n/messagebundle_hr.properties +0 -8
  170. package/src/i18n/messagebundle_hu.properties +0 -8
  171. package/src/i18n/messagebundle_it.properties +0 -8
  172. package/src/i18n/messagebundle_ja.properties +0 -8
  173. package/src/i18n/messagebundle_ko.properties +0 -8
  174. package/src/i18n/messagebundle_lt.properties +0 -8
  175. package/src/i18n/messagebundle_lv.properties +0 -8
  176. package/src/i18n/messagebundle_nl.properties +0 -8
  177. package/src/i18n/messagebundle_no.properties +0 -8
  178. package/src/i18n/messagebundle_pl.properties +0 -8
  179. package/src/i18n/messagebundle_pt.properties +0 -8
  180. package/src/i18n/messagebundle_pt_PT.properties +0 -8
  181. package/src/i18n/messagebundle_ro.properties +0 -8
  182. package/src/i18n/messagebundle_ru.properties +0 -8
  183. package/src/i18n/messagebundle_sk.properties +0 -8
  184. package/src/i18n/messagebundle_sl.properties +0 -7
  185. package/src/i18n/messagebundle_sr.properties +0 -8
  186. package/src/i18n/messagebundle_sv.properties +0 -8
  187. package/src/i18n/messagebundle_tr.properties +0 -8
  188. package/src/i18n/messagebundle_uk.properties +0 -8
  189. package/src/i18n/messagebundle_zh_CN.properties +0 -8
  190. package/src/i18n/messagebundle_zh_TW.properties +0 -8
  191. package/src/themes/Carousel.css +17 -10
  192. package/src/themes/Switch.css +2 -2
  193. package/src/themes/TabNavigation.css +1 -0
  194. package/src/themes/Tooltip.css +5 -4
  195. package/dist/assets/messagebundle_ar-BUZ_gTvQ.js +0 -1
  196. package/dist/assets/messagebundle_bg-4ainC3nj.js +0 -1
  197. package/dist/assets/messagebundle_cs-CFtmLavu.js +0 -1
  198. package/dist/assets/messagebundle_da-BHL-qTPd.js +0 -1
  199. package/dist/assets/messagebundle_de-SMiMT-ST.js +0 -1
  200. package/dist/assets/messagebundle_el-ChAszJ4A.js +0 -1
  201. package/dist/assets/messagebundle_en-B0P3kkb6.js +0 -1
  202. package/dist/assets/messagebundle_es-LGmRBKqB.js +0 -1
  203. package/dist/assets/messagebundle_et-yYsmBPXN.js +0 -1
  204. package/dist/assets/messagebundle_fi-DeMNrHC9.js +0 -1
  205. package/dist/assets/messagebundle_fr-qEm5Eykz.js +0 -1
  206. package/dist/assets/messagebundle_hr-NBdiYo-T.js +0 -1
  207. package/dist/assets/messagebundle_hu-CBV3ISbF.js +0 -1
  208. package/dist/assets/messagebundle_it-BML2SC0W.js +0 -1
  209. package/dist/assets/messagebundle_ja-zyFfZHcj.js +0 -1
  210. package/dist/assets/messagebundle_ko-BCPaSqNp.js +0 -1
  211. package/dist/assets/messagebundle_lt-DB4b6FVx.js +0 -1
  212. package/dist/assets/messagebundle_lv-tAOia5tU.js +0 -1
  213. package/dist/assets/messagebundle_nl-BKUpVV-D.js +0 -1
  214. package/dist/assets/messagebundle_no-BZQfeWxT.js +0 -1
  215. package/dist/assets/messagebundle_pl-CsXeN1y6.js +0 -1
  216. package/dist/assets/messagebundle_pt-D9rap3lj.js +0 -1
  217. package/dist/assets/messagebundle_pt_PT-CQ5YAsmx.js +0 -1
  218. package/dist/assets/messagebundle_ro-BTNJ9YdP.js +0 -1
  219. package/dist/assets/messagebundle_ru-BTDmH8CB.js +0 -1
  220. package/dist/assets/messagebundle_sk-Lb4jvtpc.js +0 -1
  221. package/dist/assets/messagebundle_sl-BZi2bKSy.js +0 -1
  222. package/dist/assets/messagebundle_sr-B9TYgxO1.js +0 -1
  223. package/dist/assets/messagebundle_sv-DWlY9RTQ.js +0 -1
  224. package/dist/assets/messagebundle_tr-DOeCmUdx.js +0 -1
  225. package/dist/assets/messagebundle_uk-CCv57GhV.js +0 -1
  226. package/dist/assets/messagebundle_zh_CN-CHwH3F3-.js +0 -1
  227. package/dist/assets/messagebundle_zh_TW-FO0BCkub.js +0 -1
package/README.md ADDED
@@ -0,0 +1,258 @@
1
+ # Quickstart guide for UDEx Components
2
+
3
+ Follow along these few steps to get you successfully using our provided web components.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Installation](#installation)
8
+ - [Importing the component/-s you intend to use](#importing-the-component-s-you-intend-to-use)
9
+ - [Using the component](#using-the-component)
10
+ - [Using our custom theme](#using-our-custom-theme)
11
+ - [Import our asset bundle and theme css](#import-our-asset-bundle-and-theme-css)
12
+ - [Activate the theme](#activate-the-theme)
13
+ - [Configuration options](#configuration-options)
14
+ - [Controlling default tooltips](#controlling-default-tooltips)
15
+ - [Language](#language)
16
+ - [UDEx Custom Translation](#udex-custom-translation)
17
+ - [Using UDEx components with UI5 components](#using-ui5-components)
18
+ - [Scoping configuration](#scoping-configuration)
19
+ - [Using UI5 icons](#using-ui5-icons)
20
+
21
+ ## Installation
22
+
23
+ To use our provided components, it's necessary to add the package to your project as a dependancy:
24
+
25
+ Using npm:
26
+
27
+ ```bash
28
+ npm install @sapudex/web-components
29
+ ```
30
+
31
+ Or with yarn:
32
+
33
+ ```bash
34
+ yarn add @sapudex/web-components
35
+ ```
36
+
37
+ ## Importing the component/-s you intend to use
38
+
39
+ Next we're going to import and register the components we need, this should be done at the root of application(`src/main.js`, etc) to ensure the components are loaded appropriately.
40
+ Registering the components will tell the browser what to do with them once it encounters their HTML markup tags in source.
41
+
42
+ Replace `<component-name>` with the name of the desired component.
43
+
44
+ ```javascript
45
+ import '@sapudex/web-components/dist/<component-name>.js';
46
+ ```
47
+
48
+ For example, to use the "Button" component:
49
+
50
+ ```javascript
51
+ import '@sapudex/web-components/dist/Button.js';
52
+ ```
53
+
54
+ ## Using the component
55
+
56
+ And finally, once the component is imported, you can use it just like any other standard HTML element, typically by adding it to your rendered HTML markup.
57
+
58
+ ```html
59
+ <html>
60
+ <body>
61
+ <section>
62
+ <udex-button>UDEx Button</udex-button>
63
+ </section>
64
+ </body>
65
+ </html>
66
+ ```
67
+
68
+ ```jsx
69
+ const renderSectionWithButton = (title = 'UDEx Button') => (
70
+ <section>
71
+ <udex-button>{title}</udex-button>
72
+ </section>
73
+ );
74
+ ```
75
+
76
+ ## Using our custom theme
77
+
78
+ While our components come out-of-the-box with default styling, it's recommended to include our theming assets as well.
79
+
80
+ ### Import our asset bundle and theme css
81
+
82
+ Import our `Assets.js` in your root javascript - `main.js`, `index.js` or similar.
83
+
84
+ ```javascript
85
+ import '@sapudex/web-components/dist/Assets.js';
86
+ ```
87
+
88
+ and add the following HTML snippet to your root `.html` file - `index.html` or similar, depending on your setup.
89
+
90
+ ```html
91
+ <link rel="stylesheet" type="text/css" href="path/to/@sapudex/design-tokens/dist/themes/sap_glow/css_variables.css">
92
+ ```
93
+
94
+ Where you should adjust the path to the theme("css_variables.css") file provided by our `@sapudex/design-tokens` package.
95
+
96
+ An alternative way for setting up the theme is to import our `css_variables.css` before the `Assets.js` in the root javascript.
97
+
98
+ ```javascript
99
+ import '@sapudex/design-tokens/dist/themes/sap_glow/css_variables.css';
100
+ import '@sapudex/web-components/dist/Assets.js';
101
+ ```
102
+
103
+ Another option, if acceptable by technical requirements, you can use theme files from our CDN, e.g.:
104
+
105
+ ```html
106
+ <link rel="stylesheet" type="text/css" href="https://cdn.udex.services.sap.com/dds/design-tokens/latest/themes/sap_glow/css_variables.css">
107
+ ```
108
+
109
+ ### Activate the theme
110
+
111
+ You have several options on activating the theme but the simplest is to add a
112
+ small HTML snippet to your root `.html` file:
113
+
114
+ ```html
115
+ <script data-ui5-config type="application/json">
116
+ {
117
+ "theme": "sap_glow"
118
+ }
119
+ </script>
120
+ ```
121
+
122
+ Visit [SAP Web Components](https://ui5.github.io/webcomponents/docs/advanced/theming-part2/) to see other ways to activate our theme or just generally integrate with the SAP Web Components/Theme Designer theming ecosystem.
123
+
124
+ ## Configuration options
125
+
126
+ ### Controlling default tooltips
127
+
128
+ Configuration options are inherited from UI5 settings. For more information, please visit [UI5 Configuration documentation](https://ui5.github.io/webcomponents/docs/advanced/configuration/).
129
+
130
+ This configuration option controls whether components will display default tooltips in specific cases.
131
+
132
+ Default tooltips are generally recommended to cover accessibility standards and typically you would not need to modify this setting. However, in rare cases you may want to implement custom tooltip visualization and turn off the default tooltips. To do so, set `enableDefaultTooltips` to `false`.
133
+
134
+ ```html
135
+ <script data-ui5-config type="application/json">
136
+ {
137
+ "enableDefaultTooltips": false
138
+ }
139
+ </script>
140
+
141
+ ```
142
+
143
+ ### Language
144
+
145
+ Configuration options are inherited from UI5 settings. For more information, please visit [UI5 Configuration documentation](https://ui5.github.io/webcomponents/docs/advanced/configuration/).
146
+
147
+ Language to be used for translatable texts. The `en` language is built in all UI5/UDEx Web Components that have translatable texts. Thus, components are always translated. Configuring another language will additionally fetch and use that language. Any language is fetched once.
148
+
149
+ ```html
150
+ <script data-ui5-config type="application/json">
151
+ {
152
+ "language": "zh_cn"
153
+ }
154
+ </script>
155
+
156
+ ```
157
+
158
+ or
159
+
160
+ ```javascript
161
+ import { setLanguage } from "@ui5/webcomponents-base/dist/config/Language.js";
162
+ setLanguage("zh_cn");
163
+ ```
164
+
165
+ ### UDEx custom Translation
166
+
167
+ UDEx custom translation is a feature that allows to overwrite default UI5 automatic translation of components hardcoded text.
168
+ This setting will overwrite translated texts, regardless of configured language.
169
+ To setup custom translations, push an object with proper `[key: string] :string` values into `window["udex-config"].translations` object, before component loads.
170
+
171
+ ```javascript
172
+ window["udex-config"] = {
173
+ translations: {
174
+ MAIN_LINKS: "custom main links",
175
+ LOGOUT: "custom logout"
176
+ }
177
+ };
178
+ ```
179
+
180
+ List of all translatable keys can be found under `@sapudex/web-components/dist/generated/i18n/i18n-defaults.js`.
181
+
182
+ ## Using UI5 components
183
+
184
+ In order to use UDEx components together with [UI5 components library](https://ui5.github.io/webcomponents/) , you need to make sure to use matching version for both libraries. UDEx components, under the hood uses following UI5 packages:
185
+
186
+ - `@ui5/webcomponents`
187
+ - `@ui5/webcomponents-base`
188
+ - `@ui5/webcomponents-fiori`
189
+
190
+ If any of this package is used at the same project scope, all of those packages version need to match with the one used internal in `@sapudex/web-components`.
191
+
192
+ ### Scoping configuration
193
+
194
+ In case it is not possible to keep in sync ui5 and udex packages version or in case of conflicting functionalities, it is possible to keep both packages detached and use as separate libraries. When scoping is configured, components can be used under tags with custom suffix.
195
+
196
+ Scoping configuration example:
197
+
198
+ ```javascript
199
+ import {
200
+ setCustomElementsScopingSuffix,
201
+ setCustomElementsScopingRules,
202
+ } from "@ui5/webcomponents-base/dist/CustomElementsScope.js";
203
+
204
+ setCustomElementsScopingRules({ include: [/^udex-/, /^ui5-/], exclude: [] });
205
+ setCustomElementsScopingSuffix("lib");
206
+ ```
207
+
208
+ Usage example:
209
+
210
+ ```html
211
+ <udex-checkbox-lib></udex-checkbox-lib>
212
+ <ui5-checkbox-lib></ui5-checkbox-lib>
213
+ ```
214
+
215
+ Please read more detailed information about the scoping on [UI5 documentation page](https://ui5.github.io/webcomponents/docs/advanced/scoping/).
216
+
217
+ ### Using UI5 icons
218
+
219
+ UDEx components do not include icons, please use UI5 provided [icon library](https://ui5.github.io/webcomponents/icons/) available with following packages:
220
+
221
+ - `@ui5/webcomponents-icons`
222
+ - `@ui5/webcomponents-icons-tnt`
223
+ - `@ui5/webcomponents-icons-business-suite`
224
+
225
+ Those libraries contains only set of icons, without UI5 components or utility functions. It is not required to import `@ui5/webcomponents` package (or other components packages) in order to use icons with UDEx components.
226
+
227
+ Single icon should be imported to be used by its name in UDEx components, e.g.:
228
+
229
+ ```javascript
230
+ import "@ui5/webcomponents-icons/dist/action";
231
+ ```
232
+
233
+ ```html
234
+ <udex-button icon="action">Button Text</udex-button>
235
+ ```
236
+
237
+ In cases where UDEx do not provide option for component icon or there is special need to icon styling, custom UI5 [Icon](https://ui5.github.io/webcomponents/components/Icon/) component can be use as a slot, e.g.:
238
+
239
+ ```javascript
240
+ import Icon from "@ui5/webcomponents/dist/Icon.js";
241
+ import "@ui5/webcomponents-icons/dist/action";
242
+ ```
243
+
244
+ ```html
245
+ <udex-tile>
246
+ <ui5-icon name="action"></ui5-icon>
247
+ <h3>Title</h3>
248
+ ...
249
+ </udex-tile>
250
+ ```
251
+
252
+ ## Additional resources
253
+
254
+ - [UI5: Importing components](https://ui5.github.io/webcomponents/docs/getting-started/components-packages/#usage)
255
+ - [UI5: Understanding Web Component APIs](https://ui5.github.io/webcomponents/docs/getting-started/components-APIs/)
256
+ - [UI5: Theming configuration](https://ui5.github.io/webcomponents/docs/advanced/configuration/#theme)
257
+ - [UI5: i18n for Apps](https://ui5.github.io/webcomponents/docs/advanced/using-i18n-for-apps/)
258
+ - [UI5: Using Icons](https://ui5.github.io/webcomponents/docs/advanced/using-icons/)
@@ -210,4 +210,39 @@ describe("TagGroup", () => {
210
210
  });
211
211
  });
212
212
 
213
+ describe("Keyboard navigation with nonSelectable tags", () => {
214
+ const nonSelectableTagGroup = <UDExTagGroup>
215
+ {Array.from({ length: 16 }, (_, i) => (
216
+ <UDExTag nonSelectable text={`Tag ${i + 1}`} icon="employee"></UDExTag>
217
+ ))}
218
+ </UDExTagGroup>;
219
+
220
+ it("Shift+Tab from overflow button focuses last visible nonSelectable tag's button", () => {
221
+ cy.mount(<div><button id="before">before</button>{nonSelectableTagGroup}</div>);
222
+
223
+ cy.get("[udex-tag-group]").shadow().find(".udex-tag-group__tokenizer").as("tokenizer");
224
+ cy.get("[udex-tag-group]").should("have.attr", "_is-hidden-tags");
225
+ cy.get("@tokenizer").shadow().find(".ui5-tokenizer-more-text").should("be.visible");
226
+
227
+ cy.get("@tokenizer").then($tokenizer => {
228
+ const nMoreCount = ($tokenizer[0] as any)._nMoreCount as number;
229
+ const totalCount = ($tokenizer[0] as any)._tokens.length as number;
230
+ const visibleCount = totalCount - nMoreCount;
231
+ cy.get("#before").focus();
232
+ // Tab through each visible tag's button + 1 more to land on the "n more" button
233
+ Cypress._.times(visibleCount + 1, () => cy.realPress("Tab"));
234
+ });
235
+
236
+ cy.get("@tokenizer").shadow().find(".ui5-tokenizer-more-text").should("be.focused");
237
+
238
+ cy.realPress(["Shift", "Tab"]);
239
+
240
+ cy.get("@tokenizer").then($tokenizer => {
241
+ const nMoreCount = ($tokenizer[0] as any)._nMoreCount as number;
242
+ const totalCount = ($tokenizer[0] as any)._tokens.length as number;
243
+ const lastVisibleToken = ($tokenizer[0] as any)._tokens[totalCount - nMoreCount - 1];
244
+ cy.wrap(lastVisibleToken).shadow().find("button").should("be.focused");
245
+ });
246
+ });
247
+ });
213
248
  });
@@ -4,12 +4,17 @@ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
4
4
  import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
5
5
  import type UI5Carousel from "@ui5/webcomponents/dist/Carousel.js";
6
6
  import type { CarouselNavigateEventDetail } from "@ui5/webcomponents/dist/Carousel.js";
7
- import type { UI5CustomEvent } from "@ui5/webcomponents-base";
8
7
  import type CarouselPageIndicatorType from "@ui5/webcomponents/dist/types/CarouselPageIndicatorType.js";
8
+ import type { UI5CustomEvent } from "@ui5/webcomponents-base";
9
9
  export declare enum UDExCarouselNavigationPosition {
10
10
  top = "top",
11
11
  bottom = "bottom"
12
12
  }
13
+ export declare enum UDExCarouselPageIndicatorType {
14
+ Default = "Default",
15
+ Numeric = "Numeric",
16
+ None = "None"
17
+ }
13
18
  export declare enum UDExCarouselButtonDesign {
14
19
  Secondary = "Secondary",
15
20
  Tertiary = "Tertiary"
@@ -106,7 +111,7 @@ declare class UDExCarousel extends UI5Element {
106
111
  * @default "Default"
107
112
  * @public
108
113
  */
109
- pageIndicatorType: `${CarouselPageIndicatorType}`;
114
+ pageIndicatorType: `${UDExCarouselPageIndicatorType}`;
110
115
  /**
111
116
  * Defines the prev button is disabled
112
117
  *
@@ -171,8 +176,9 @@ declare class UDExCarousel extends UI5Element {
171
176
  };
172
177
  get _hidePageIndicator(): boolean;
173
178
  get _carousel(): UI5Carousel | null;
174
- get _isBottomNavigation(): boolean;
179
+ get _isBottomDotNavigation(): boolean;
175
180
  get autoplayToggleButtonTooltipText(): string;
181
+ get sanitizedPageIndicatorType(): `${CarouselPageIndicatorType}`;
176
182
  }
177
183
  export default UDExCarousel;
178
184
  export type { CarouselNavigateEventDetail, UDExCarouselAutoplayToggleEventDetails };
package/dist/Carousel.js CHANGED
@@ -25,6 +25,12 @@ export var UDExCarouselNavigationPosition;
25
25
  UDExCarouselNavigationPosition["top"] = "top";
26
26
  UDExCarouselNavigationPosition["bottom"] = "bottom";
27
27
  })(UDExCarouselNavigationPosition || (UDExCarouselNavigationPosition = {}));
28
+ export var UDExCarouselPageIndicatorType;
29
+ (function (UDExCarouselPageIndicatorType) {
30
+ UDExCarouselPageIndicatorType["Default"] = "Default";
31
+ UDExCarouselPageIndicatorType["Numeric"] = "Numeric";
32
+ UDExCarouselPageIndicatorType["None"] = "None";
33
+ })(UDExCarouselPageIndicatorType || (UDExCarouselPageIndicatorType = {}));
28
34
  export var UDExCarouselButtonDesign;
29
35
  (function (UDExCarouselButtonDesign) {
30
36
  UDExCarouselButtonDesign["Secondary"] = "Secondary";
@@ -220,14 +226,14 @@ let UDExCarousel = UDExCarousel_1 = class UDExCarousel extends UI5Element {
220
226
  if (this.isPrevButtonDisabled || !this._carousel) {
221
227
  return;
222
228
  }
223
- this._carousel.navigateLeft();
229
+ this._carousel.navigateArrowLeft();
224
230
  this._calculateDisabledButtonsState();
225
231
  }
226
232
  _nextButtonClick() {
227
233
  if (this.isNextButtonDisabled || !this._carousel) {
228
234
  return;
229
235
  }
230
- this._carousel.navigateRight();
236
+ this._carousel.navigateArrowRight();
231
237
  this._calculateDisabledButtonsState();
232
238
  }
233
239
  _onkeydown(e) {
@@ -246,8 +252,13 @@ let UDExCarousel = UDExCarousel_1 = class UDExCarousel extends UI5Element {
246
252
  return translate(UDExCarousel_1, CAROUSEL_PREVIOUS_ARROW_TEXT);
247
253
  }
248
254
  get carouselClass() {
249
- const classes = "udex-carousel";
250
- return `${classes} udex-carousel__navigation--${this.navigationPlacement}`;
255
+ let classes = "udex-carousel";
256
+ classes += ` udex-carousel__navigation--${this.navigationPlacement}`;
257
+ if (this.navigationPlacement === UDExCarouselNavigationPosition.bottom
258
+ && this.pageIndicatorType === UDExCarouselPageIndicatorType.None) {
259
+ classes += " udex-carousel__navigation--bottom-buttons-only";
260
+ }
261
+ return classes;
251
262
  }
252
263
  get navigationWrapperClass() {
253
264
  let _class = "udex-carousel__navigation-wrapper";
@@ -264,6 +275,10 @@ let UDExCarousel = UDExCarousel_1 = class UDExCarousel extends UI5Element {
264
275
  return _class;
265
276
  }
266
277
  get buttonDesign() {
278
+ if (this.navigationPlacement === UDExCarouselNavigationPosition.bottom
279
+ && this.pageIndicatorType === UDExCarouselPageIndicatorType.None) {
280
+ return UDExCarouselButtonDesign.Secondary;
281
+ }
267
282
  return this.navigationPlacement === UDExCarouselNavigationPosition.top
268
283
  ? UDExCarouselButtonDesign.Secondary
269
284
  : UDExCarouselButtonDesign.Tertiary;
@@ -275,19 +290,33 @@ let UDExCarousel = UDExCarousel_1 = class UDExCarousel extends UI5Element {
275
290
  };
276
291
  }
277
292
  get _hidePageIndicator() {
293
+ if (this.navigationPlacement === UDExCarouselNavigationPosition.bottom
294
+ && this.pageIndicatorType === UDExCarouselPageIndicatorType.None) {
295
+ return true;
296
+ }
278
297
  return this.navigationPlacement === UDExCarouselNavigationPosition.top;
279
298
  }
280
299
  get _carousel() {
281
300
  return this.shadowRoot.querySelector("[ui5-carousel]");
282
301
  }
283
- get _isBottomNavigation() {
284
- return this.navigationPlacement === UDExCarouselNavigationPosition.bottom;
302
+ get _isBottomDotNavigation() {
303
+ if (this.navigationPlacement === UDExCarouselNavigationPosition.bottom
304
+ && this.pageIndicatorType !== UDExCarouselPageIndicatorType.None) {
305
+ return true;
306
+ }
307
+ return false;
285
308
  }
286
309
  get autoplayToggleButtonTooltipText() {
287
310
  return this._autoplayIsPaused
288
311
  ? translate(UDExCarousel_1, CAROUSEL_AUTOPLAY_TOGGLE_START)
289
312
  : translate(UDExCarousel_1, CAROUSEL_AUTOPLAY_TOGGLE_STOP);
290
313
  }
314
+ get sanitizedPageIndicatorType() {
315
+ if (this.pageIndicatorType === UDExCarouselPageIndicatorType.None) {
316
+ return UDExCarouselPageIndicatorType.Default;
317
+ }
318
+ return this.pageIndicatorType;
319
+ }
291
320
  };
292
321
  __decorate([
293
322
  property()
@@ -1 +1 @@
1
- {"version":3,"file":"Carousel.js","sourceRoot":"","sources":["../src/Carousel.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { DefaultSlot } 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-strict.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport {\n isUp, isDown, isRight, isLeft,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport {\n CAROUSEL_NEXT_ARROW_TEXT,\n CAROUSEL_PREVIOUS_ARROW_TEXT,\n CAROUSEL_AUTOPLAY_TOGGLE_START,\n CAROUSEL_AUTOPLAY_TOGGLE_STOP,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport redirectAttributes from \"./utils/redirectAttributes.js\";\nimport type UI5Carousel from \"@ui5/webcomponents/dist/Carousel.js\";\nimport type { CarouselNavigateEventDetail } from \"@ui5/webcomponents/dist/Carousel.js\";\nimport type { UI5CustomEvent } from \"@ui5/webcomponents-base\";\nimport translate from \"./utils/translate.js\";\n\nimport CarouselTemplate from \"./CarouselTemplate.js\";\n\n// Styles\nimport CarouselCss from \"./generated/themes/Carousel.css.js\";\nimport type CarouselPageIndicatorType from \"@ui5/webcomponents/dist/types/CarouselPageIndicatorType.js\";\n\nexport enum UDExCarouselNavigationPosition {\n top = \"top\",\n bottom = \"bottom\",\n}\n\nexport enum UDExCarouselButtonDesign {\n Secondary = \"Secondary\",\n Tertiary = \"Tertiary\",\n}\n\ntype UDExCarouselAutoplayToggleEventDetails = {\n isPaused: boolean;\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-carousel</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/Carousel.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @tagname udex-carousel\n * @public\n */\n@customElement({\n tag: \"udex-carousel\",\n renderer: jsxRenderer,\n styles: CarouselCss,\n template: CarouselTemplate,\n})\n/**\n * Triggered when carousel navigates to a new slide\n * @public\n * @param { CustomEvent }\n */\n@event(\"navigate\")\n/**\n * Fired event when the user click on a play/paused button.\n *\n * @public\n * @param {boolean} isPaused - Indicates current state of autoplay\n */\n@event(\"autoplay-toggle-click\", { bubbles: true })\n\nclass UDExCarousel extends UI5Element {\n eventDetails!: {\n \"navigate\": CarouselNavigateEventDetail,\n \"autoplay-toggle-click\": UDExCarouselAutoplayToggleEventDetails,\n };\n /**\n * Defines the position of the navigation.\n * <br><br>\n * Available options are:\n * <ul>\n * <li><code>top</code> - the navigation button are placed above the component.</li>\n * <li><code>bottom</code> - the navigation button arrows are placed below the component.</li>\n * </ul>\n *\n * @public\n */\n @property()\n navigationPlacement: `${UDExCarouselNavigationPosition}` = UDExCarouselNavigationPosition.top;\n /**\n * Controls carousel autoplay functionality\n * @public\n * @default undefined\n */\n @property({ type: Boolean })\n autoplay?: boolean;\n\n /**\n * Defines carousel autoplay speed in milliseconds till next slide\n * @public\n */\n @property({ type: Number })\n autoplaySpeed: number = 2000;\n\n /**\n * Indicates current state of autoplay.\n *\n * @default true\n * @private\n */\n @property({ type: Boolean })\n _autoplayIsPaused = true;\n\n /**\n * Defines whether the carousel should loop, i.e show the first page after the last page is reached and vice versa.\n * @public\n * @default false\n */\n @property({ type: Boolean })\n cyclic?: boolean;\n\n /**\n * Defines the content of the component.\n *\n * @slot\n * @public\n */\n @slot({ \"default\": true, type: HTMLElement, individualSlots: true })\n items!: DefaultSlot<HTMLElement>;\n\n /**\n * Defines the number of items per page depending on the carousel width.\n *\n * - 'S' for screens smaller than 600 pixels.\n * - 'M' for screens greater than or equal to 600 pixels and smaller than 1024 pixels.\n * - 'L' for screens greater than or equal to 1024 pixels and smaller than 1440 pixels.\n * - 'XL' for screens greater than or equal to 1440 pixels.\n *\n * One item per page is shown by default.\n * @default \"S1 M1 L1 XL1\"\n * @public\n */\n @property()\n itemsPerPage = \"S1 M1 L1 XL1\";\n\n /**\n * Defines the style of the page indicator.\n * Available options are:\n *\n * - `Default` - The page indicator will be visualized as dots if there are fewer than 9 pages. If there are more pages, the page indicator will switch to displaying the current page and the total number of pages. (e.g. X of Y)\n * - `Numeric` - The page indicator will display the current page and the total number of pages. (e.g. X of Y)\n * @since 1.10\n * @default \"Default\"\n * @public\n */\n @property()\n pageIndicatorType: `${CarouselPageIndicatorType}` = \"Default\";\n\n /**\n * Defines the prev button is disabled\n *\n * @default false\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n isPrevButtonDisabled!: boolean;\n\n /**\n * Defines the next button is disabled\n *\n * @default false\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n isNextButtonDisabled!: boolean;\n\n /**\n * Defines the accessible ARIA name of the component.\n *\n * @default ''\n * @public\n */\n @property({ type: String })\n accessibleName: string = \"\";\n\n /**\n * Tracks whether the inner carousel has multiple pages (updated after render).\n *\n * @default false\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n _hasManyPages = false;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _autoplayInterval: ReturnType<typeof setInterval> | null = null;\n _autoplayLastToggle = Date.now();\n _autoplayMinTimeBetweenToggle = 250;\n _autoplayManualStop = false;\n _resizeHandler: ResizeObserverCallback;\n\n constructor() {\n super();\n this._resizeHandler = this._onResize.bind(this);\n }\n\n onAfterRendering() {\n redirectAttributes(this, \"carousel\");\n\n this._calculateDisabledButtonsState();\n\n if (this._autoplayInterval === null) {\n this._startAutoplay();\n }\n }\n\n onExitDOM(): void {\n ResizeHandler.deregister(this, this._resizeHandler);\n\n if (this._autoplayInterval) {\n clearInterval(this._autoplayInterval);\n }\n }\n\n onEnterDOM(): void {\n ResizeHandler.register(this, this._resizeHandler);\n }\n\n _onResize(): void {\n this._hasManyPages = this._carousel?.hasManyPages ?? false;\n }\n\n _autoplayLoop = () => {\n const items = this._carousel?.items;\n if (!items) {\n return;\n }\n\n const currentSlide = this._carousel._currentPageIndex;\n const itemsPerPage = this._carousel.effectiveItemsPerPage;\n const isLastSlide = currentSlide === (items.length - itemsPerPage);\n\n if (isLastSlide && !this.cyclic) {\n this._stopAutoplay();\n this._autoplayManualStop = true;\n\n return;\n }\n\n const nextSlide = isLastSlide ? 0 : (currentSlide + itemsPerPage);\n\n this._carousel?.navigateTo(nextSlide);\n this._calculateDisabledButtonsState();\n };\n\n _startAutoplay(): void {\n if (!this.autoplay) {\n return;\n }\n\n if (!this._carousel?.items) {\n console.warn(\"[UDExCarousel] Cannot start autoplay on an empty carousel\");\n return;\n }\n\n const toggleBuffer = Date.now() - this._autoplayLastToggle;\n if (this._autoplayInterval !== null && toggleBuffer <= this._autoplayMinTimeBetweenToggle) {\n this._autoplayLastToggle = Date.now();\n return;\n }\n\n if (this._autoplayInterval !== null) {\n clearInterval(this._autoplayInterval);\n }\n\n this._autoplayInterval = setInterval(this._autoplayLoop, this.autoplaySpeed);\n this._autoplayIsPaused = false;\n this._autoplayLastToggle = Date.now();\n }\n\n _stopAutoplay(): void {\n if (!this._autoplayInterval) {\n return;\n }\n\n clearInterval(this._autoplayInterval);\n this._autoplayIsPaused = true;\n this._autoplayLastToggle = Date.now();\n }\n\n _onAutoplayToggleClick(): void {\n if (this._autoplayIsPaused) {\n this._startAutoplay();\n this._autoplayManualStop = false;\n } else {\n this._stopAutoplay();\n this._autoplayManualStop = true;\n }\n\n this.fireDecoratorEvent(\"autoplay-toggle-click\", {\n isPaused: this._autoplayIsPaused,\n });\n }\n\n _onFocusIn(): void {\n this._stopAutoplay();\n }\n\n _onFocusOut(): void {\n if (!this._autoplayManualStop) {\n this._startAutoplay();\n }\n }\n\n _onMouseEnter(): void {\n this._stopAutoplay();\n }\n\n _onMouseLeave(): void {\n if (!this._autoplayManualStop) {\n this._startAutoplay();\n }\n }\n\n _calculateDisabledButtonsState() {\n this.isPrevButtonDisabled = !this._carousel?.hasPrev;\n this.isNextButtonDisabled = !this._carousel?.hasNext;\n }\n\n _prevButtonClick() {\n if (this.isPrevButtonDisabled || !this._carousel) {\n return;\n }\n\n this._carousel.navigateLeft();\n this._calculateDisabledButtonsState();\n }\n\n _nextButtonClick() {\n if (this.isNextButtonDisabled || !this._carousel) {\n return;\n }\n\n this._carousel.navigateRight();\n this._calculateDisabledButtonsState();\n }\n\n _onkeydown(e: KeyboardEvent) {\n if (isLeft(e) || isDown(e) || isRight(e) || isUp(e)) {\n this._calculateDisabledButtonsState();\n }\n }\n\n _handleNavigate(e: UI5CustomEvent<UI5Carousel, \"navigate\">): void {\n this._calculateDisabledButtonsState();\n\n this.fireDecoratorEvent(\"navigate\", e.detail);\n }\n\n get nextPageText(): string {\n return translate(UDExCarousel, CAROUSEL_NEXT_ARROW_TEXT);\n }\n\n get previousPageText(): string {\n return translate(UDExCarousel, CAROUSEL_PREVIOUS_ARROW_TEXT);\n }\n\n get carouselClass(): string {\n const classes = \"udex-carousel\";\n\n return `${classes} udex-carousel__navigation--${this.navigationPlacement}`;\n }\n\n get navigationWrapperClass(): string {\n let _class = \"udex-carousel__navigation-wrapper\";\n\n if (this.autoplay) {\n _class += \" udex-carousel__navigation-wrapper--autoplay\";\n }\n\n return _class;\n }\n\n get navigationButtonWrapperClass(): string {\n let _class = \"udex-carousel__navigation-button-wrapper\";\n\n if (this._carousel?.isPageTypeDots) {\n _class += \" udex-carousel__navigation-button-wrapper--dot-indicators\";\n }\n\n return _class;\n }\n\n get buttonDesign(): UDExCarouselButtonDesign {\n return this.navigationPlacement === UDExCarouselNavigationPosition.top\n ? UDExCarouselButtonDesign.Secondary\n : UDExCarouselButtonDesign.Tertiary;\n }\n\n get showNavigationButtons(): { top: boolean; bottom: boolean } {\n return {\n top: this.navigationPlacement === UDExCarouselNavigationPosition.top && this._hasManyPages,\n bottom: this.navigationPlacement === UDExCarouselNavigationPosition.bottom && this._hasManyPages,\n };\n }\n\n get _hidePageIndicator(): boolean {\n return this.navigationPlacement === UDExCarouselNavigationPosition.top;\n }\n\n get _carousel(): UI5Carousel | null {\n return this.shadowRoot!.querySelector<UI5Carousel>(\"[ui5-carousel]\");\n }\n\n get _isBottomNavigation(): boolean {\n return this.navigationPlacement === UDExCarouselNavigationPosition.bottom;\n }\n\n get autoplayToggleButtonTooltipText(): string {\n return this._autoplayIsPaused\n ? translate(UDExCarousel, CAROUSEL_AUTOPLAY_TOGGLE_START)\n : translate(UDExCarousel, CAROUSEL_AUTOPLAY_TOGGLE_STOP);\n }\n}\n\nUDExCarousel.define();\n\nexport default UDExCarousel;\nexport type { CarouselNavigateEventDetail, UDExCarouselAutoplayToggleEventDetails };\n"]}
1
+ {"version":3,"file":"Carousel.js","sourceRoot":"","sources":["../src/Carousel.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { DefaultSlot } 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-strict.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport {\n isUp, isDown, isRight, isLeft,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport {\n CAROUSEL_NEXT_ARROW_TEXT,\n CAROUSEL_PREVIOUS_ARROW_TEXT,\n CAROUSEL_AUTOPLAY_TOGGLE_START,\n CAROUSEL_AUTOPLAY_TOGGLE_STOP,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport redirectAttributes from \"./utils/redirectAttributes.js\";\nimport type UI5Carousel from \"@ui5/webcomponents/dist/Carousel.js\";\nimport type { CarouselNavigateEventDetail } from \"@ui5/webcomponents/dist/Carousel.js\";\nimport type CarouselPageIndicatorType from \"@ui5/webcomponents/dist/types/CarouselPageIndicatorType.js\";\nimport type { UI5CustomEvent } from \"@ui5/webcomponents-base\";\nimport translate from \"./utils/translate.js\";\n\nimport CarouselTemplate from \"./CarouselTemplate.js\";\n\n// Styles\nimport CarouselCss from \"./generated/themes/Carousel.css.js\";\n\nexport enum UDExCarouselNavigationPosition {\n top = \"top\",\n bottom = \"bottom\",\n}\n\nexport enum UDExCarouselPageIndicatorType {\n Default = \"Default\",\n Numeric = \"Numeric\",\n None = \"None\"\n}\n\nexport enum UDExCarouselButtonDesign {\n Secondary = \"Secondary\",\n Tertiary = \"Tertiary\",\n}\n\ntype UDExCarouselAutoplayToggleEventDetails = {\n isPaused: boolean;\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-carousel</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/Carousel.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @tagname udex-carousel\n * @public\n */\n@customElement({\n tag: \"udex-carousel\",\n renderer: jsxRenderer,\n styles: CarouselCss,\n template: CarouselTemplate,\n})\n/**\n * Triggered when carousel navigates to a new slide\n * @public\n * @param { CustomEvent }\n */\n@event(\"navigate\")\n/**\n * Fired event when the user click on a play/paused button.\n *\n * @public\n * @param {boolean} isPaused - Indicates current state of autoplay\n */\n@event(\"autoplay-toggle-click\", { bubbles: true })\n\nclass UDExCarousel extends UI5Element {\n eventDetails!: {\n \"navigate\": CarouselNavigateEventDetail,\n \"autoplay-toggle-click\": UDExCarouselAutoplayToggleEventDetails,\n };\n /**\n * Defines the position of the navigation.\n * <br><br>\n * Available options are:\n * <ul>\n * <li><code>top</code> - the navigation button are placed above the component.</li>\n * <li><code>bottom</code> - the navigation button arrows are placed below the component.</li>\n * </ul>\n *\n * @public\n */\n @property()\n navigationPlacement: `${UDExCarouselNavigationPosition}` = UDExCarouselNavigationPosition.top;\n /**\n * Controls carousel autoplay functionality\n * @public\n * @default undefined\n */\n @property({ type: Boolean })\n autoplay?: boolean;\n\n /**\n * Defines carousel autoplay speed in milliseconds till next slide\n * @public\n */\n @property({ type: Number })\n autoplaySpeed: number = 2000;\n\n /**\n * Indicates current state of autoplay.\n *\n * @default true\n * @private\n */\n @property({ type: Boolean })\n _autoplayIsPaused = true;\n\n /**\n * Defines whether the carousel should loop, i.e show the first page after the last page is reached and vice versa.\n * @public\n * @default false\n */\n @property({ type: Boolean })\n cyclic?: boolean;\n\n /**\n * Defines the content of the component.\n *\n * @slot\n * @public\n */\n @slot({ \"default\": true, type: HTMLElement, individualSlots: true })\n items!: DefaultSlot<HTMLElement>;\n\n /**\n * Defines the number of items per page depending on the carousel width.\n *\n * - 'S' for screens smaller than 600 pixels.\n * - 'M' for screens greater than or equal to 600 pixels and smaller than 1024 pixels.\n * - 'L' for screens greater than or equal to 1024 pixels and smaller than 1440 pixels.\n * - 'XL' for screens greater than or equal to 1440 pixels.\n *\n * One item per page is shown by default.\n * @default \"S1 M1 L1 XL1\"\n * @public\n */\n @property()\n itemsPerPage = \"S1 M1 L1 XL1\";\n\n /**\n * Defines the style of the page indicator.\n * Available options are:\n *\n * - `Default` - The page indicator will be visualized as dots if there are fewer than 9 pages. If there are more pages, the page indicator will switch to displaying the current page and the total number of pages. (e.g. X of Y)\n * - `Numeric` - The page indicator will display the current page and the total number of pages. (e.g. X of Y)\n * @since 1.10\n * @default \"Default\"\n * @public\n */\n @property()\n pageIndicatorType: `${UDExCarouselPageIndicatorType}` = \"Default\";\n\n /**\n * Defines the prev button is disabled\n *\n * @default false\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n isPrevButtonDisabled!: boolean;\n\n /**\n * Defines the next button is disabled\n *\n * @default false\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n isNextButtonDisabled!: boolean;\n\n /**\n * Defines the accessible ARIA name of the component.\n *\n * @default ''\n * @public\n */\n @property({ type: String })\n accessibleName: string = \"\";\n\n /**\n * Tracks whether the inner carousel has multiple pages (updated after render).\n *\n * @default false\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n _hasManyPages = false;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _autoplayInterval: ReturnType<typeof setInterval> | null = null;\n _autoplayLastToggle = Date.now();\n _autoplayMinTimeBetweenToggle = 250;\n _autoplayManualStop = false;\n _resizeHandler: ResizeObserverCallback;\n\n constructor() {\n super();\n this._resizeHandler = this._onResize.bind(this);\n }\n\n onAfterRendering() {\n redirectAttributes(this, \"carousel\");\n\n this._calculateDisabledButtonsState();\n\n if (this._autoplayInterval === null) {\n this._startAutoplay();\n }\n }\n\n onExitDOM(): void {\n ResizeHandler.deregister(this, this._resizeHandler);\n\n if (this._autoplayInterval) {\n clearInterval(this._autoplayInterval);\n }\n }\n\n onEnterDOM(): void {\n ResizeHandler.register(this, this._resizeHandler);\n }\n\n _onResize(): void {\n this._hasManyPages = this._carousel?.hasManyPages ?? false;\n }\n\n _autoplayLoop = () => {\n const items = this._carousel?.items;\n if (!items) {\n return;\n }\n\n const currentSlide = this._carousel._currentPageIndex;\n const itemsPerPage = this._carousel.effectiveItemsPerPage;\n const isLastSlide = currentSlide === (items.length - itemsPerPage);\n\n if (isLastSlide && !this.cyclic) {\n this._stopAutoplay();\n this._autoplayManualStop = true;\n\n return;\n }\n\n const nextSlide = isLastSlide ? 0 : (currentSlide + itemsPerPage);\n\n this._carousel?.navigateTo(nextSlide);\n this._calculateDisabledButtonsState();\n };\n\n _startAutoplay(): void {\n if (!this.autoplay) {\n return;\n }\n\n if (!this._carousel?.items) {\n console.warn(\"[UDExCarousel] Cannot start autoplay on an empty carousel\");\n return;\n }\n\n const toggleBuffer = Date.now() - this._autoplayLastToggle;\n if (this._autoplayInterval !== null && toggleBuffer <= this._autoplayMinTimeBetweenToggle) {\n this._autoplayLastToggle = Date.now();\n return;\n }\n\n if (this._autoplayInterval !== null) {\n clearInterval(this._autoplayInterval);\n }\n\n this._autoplayInterval = setInterval(this._autoplayLoop, this.autoplaySpeed);\n this._autoplayIsPaused = false;\n this._autoplayLastToggle = Date.now();\n }\n\n _stopAutoplay(): void {\n if (!this._autoplayInterval) {\n return;\n }\n\n clearInterval(this._autoplayInterval);\n this._autoplayIsPaused = true;\n this._autoplayLastToggle = Date.now();\n }\n\n _onAutoplayToggleClick(): void {\n if (this._autoplayIsPaused) {\n this._startAutoplay();\n this._autoplayManualStop = false;\n } else {\n this._stopAutoplay();\n this._autoplayManualStop = true;\n }\n\n this.fireDecoratorEvent(\"autoplay-toggle-click\", {\n isPaused: this._autoplayIsPaused,\n });\n }\n\n _onFocusIn(): void {\n this._stopAutoplay();\n }\n\n _onFocusOut(): void {\n if (!this._autoplayManualStop) {\n this._startAutoplay();\n }\n }\n\n _onMouseEnter(): void {\n this._stopAutoplay();\n }\n\n _onMouseLeave(): void {\n if (!this._autoplayManualStop) {\n this._startAutoplay();\n }\n }\n\n _calculateDisabledButtonsState() {\n this.isPrevButtonDisabled = !this._carousel?.hasPrev;\n this.isNextButtonDisabled = !this._carousel?.hasNext;\n }\n\n _prevButtonClick() {\n if (this.isPrevButtonDisabled || !this._carousel) {\n return;\n }\n\n this._carousel.navigateArrowLeft();\n this._calculateDisabledButtonsState();\n }\n\n _nextButtonClick() {\n if (this.isNextButtonDisabled || !this._carousel) {\n return;\n }\n\n this._carousel.navigateArrowRight();\n this._calculateDisabledButtonsState();\n }\n\n _onkeydown(e: KeyboardEvent) {\n if (isLeft(e) || isDown(e) || isRight(e) || isUp(e)) {\n this._calculateDisabledButtonsState();\n }\n }\n\n _handleNavigate(e: UI5CustomEvent<UI5Carousel, \"navigate\">): void {\n this._calculateDisabledButtonsState();\n\n this.fireDecoratorEvent(\"navigate\", e.detail);\n }\n\n get nextPageText(): string {\n return translate(UDExCarousel, CAROUSEL_NEXT_ARROW_TEXT);\n }\n\n get previousPageText(): string {\n return translate(UDExCarousel, CAROUSEL_PREVIOUS_ARROW_TEXT);\n }\n\n get carouselClass(): string {\n let classes = \"udex-carousel\";\n\n classes += ` udex-carousel__navigation--${this.navigationPlacement}`;\n\n if (\n this.navigationPlacement === UDExCarouselNavigationPosition.bottom\n && this.pageIndicatorType === UDExCarouselPageIndicatorType.None\n ) {\n classes += \" udex-carousel__navigation--bottom-buttons-only\";\n }\n\n return classes;\n }\n\n get navigationWrapperClass(): string {\n let _class = \"udex-carousel__navigation-wrapper\";\n\n if (this.autoplay) {\n _class += \" udex-carousel__navigation-wrapper--autoplay\";\n }\n\n return _class;\n }\n\n get navigationButtonWrapperClass(): string {\n let _class = \"udex-carousel__navigation-button-wrapper\";\n\n if (this._carousel?.isPageTypeDots) {\n _class += \" udex-carousel__navigation-button-wrapper--dot-indicators\";\n }\n\n return _class;\n }\n\n get buttonDesign(): UDExCarouselButtonDesign {\n if (\n this.navigationPlacement === UDExCarouselNavigationPosition.bottom\n && this.pageIndicatorType === UDExCarouselPageIndicatorType.None\n ) {\n return UDExCarouselButtonDesign.Secondary;\n }\n\n return this.navigationPlacement === UDExCarouselNavigationPosition.top\n ? UDExCarouselButtonDesign.Secondary\n : UDExCarouselButtonDesign.Tertiary;\n }\n\n get showNavigationButtons(): { top: boolean; bottom: boolean } {\n return {\n top: this.navigationPlacement === UDExCarouselNavigationPosition.top && this._hasManyPages,\n bottom: this.navigationPlacement === UDExCarouselNavigationPosition.bottom && this._hasManyPages,\n };\n }\n\n get _hidePageIndicator(): boolean {\n if (\n this.navigationPlacement === UDExCarouselNavigationPosition.bottom\n && this.pageIndicatorType === UDExCarouselPageIndicatorType.None\n ) {\n return true;\n }\n\n return this.navigationPlacement === UDExCarouselNavigationPosition.top;\n }\n\n get _carousel(): UI5Carousel | null {\n return this.shadowRoot!.querySelector<UI5Carousel>(\"[ui5-carousel]\");\n }\n\n get _isBottomDotNavigation(): boolean {\n if (\n this.navigationPlacement === UDExCarouselNavigationPosition.bottom\n && this.pageIndicatorType !== UDExCarouselPageIndicatorType.None\n ) {\n return true;\n }\n return false;\n }\n\n get autoplayToggleButtonTooltipText(): string {\n return this._autoplayIsPaused\n ? translate(UDExCarousel, CAROUSEL_AUTOPLAY_TOGGLE_START)\n : translate(UDExCarousel, CAROUSEL_AUTOPLAY_TOGGLE_STOP);\n }\n\n get sanitizedPageIndicatorType(): `${CarouselPageIndicatorType}` {\n if (this.pageIndicatorType === UDExCarouselPageIndicatorType.None) {\n return UDExCarouselPageIndicatorType.Default;\n }\n\n return this.pageIndicatorType;\n }\n}\n\nUDExCarousel.define();\n\nexport default UDExCarousel;\nexport type { CarouselNavigateEventDetail, UDExCarouselAutoplayToggleEventDetails };\n"]}
@@ -9,14 +9,14 @@ import slimArrowRight from "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
9
9
  import play from "@ui5/webcomponents-icons/dist/play.js";
10
10
  import pause from "@ui5/webcomponents-icons/dist/pause.js";
11
11
  export default function CarouselTemplate() {
12
- return (_jsxs("div", { className: this.carouselClass, onKeyDown: this._onkeydown, children: [this.showNavigationButtons.top && navigation.call(this), _jsx(UI5Carousel, { itemsPerPage: this.itemsPerPage, pageIndicatorType: this.pageIndicatorType, id: "carousel", hideNavigationArrows: true, arrowsPlacement: CarouselArrowsPlacement.Navigation, accessibleName: this.accessibleName, hidePageIndicator: this._hidePageIndicator, onNavigate: this._handleNavigate, onMouseEnter: this._onMouseEnter, onMouseLeave: this._onMouseLeave, onFocusIn: this._onFocusIn, onFocusOut: this._onFocusOut, cyclic: this.cyclic, children: this.items.map(item => _jsx("slot", { name: item._individualSlot })) }), this.showNavigationButtons.bottom && navigation.call(this)] }));
12
+ return (_jsxs("div", { className: this.carouselClass, onKeyDown: this._onkeydown, children: [this.showNavigationButtons.top && navigation.call(this), _jsx(UI5Carousel, { itemsPerPage: this.itemsPerPage, pageIndicatorType: this.sanitizedPageIndicatorType, id: "carousel", hideNavigationArrows: true, arrowsPlacement: CarouselArrowsPlacement.Navigation, accessibleName: this.accessibleName, hidePageIndicator: this._hidePageIndicator, onNavigate: this._handleNavigate, onMouseEnter: this._onMouseEnter, onMouseLeave: this._onMouseLeave, onFocusIn: this._onFocusIn, onFocusOut: this._onFocusOut, cyclic: this.cyclic, children: this.items.map(item => _jsx("slot", { name: item._individualSlot })) }), this.showNavigationButtons.bottom && navigation.call(this)] }));
13
13
  }
14
14
  function navigation() {
15
15
  const btnClassName = "udex-carousel__navigation-button";
16
16
  const icon = this._autoplayIsPaused ? play : pause;
17
17
  return (_jsxs("div", { className: this.navigationWrapperClass, part: "navigation", children: [this.autoplay &&
18
- _jsx(UDExButton, { class: `udex-carousel__autoplay-toggle-button`, size: UDExButtonSize.Large, design: UDExButtonDesign.Tertiary, icon: icon, onClick: this._onAutoplayToggleClick, tooltip: this.autoplayToggleButtonTooltipText }), _jsxs("div", { className: this.navigationButtonWrapperClass, children: [_jsx(UDExButton, { "data-ui5-arrow-back": true, size: UDExButtonSize.Large, disabled: this.isPrevButtonDisabled, class: btnClassName, icon: slimArrowLeft, design: this.buttonDesign, tooltip: this.previousPageText, onClick: this._prevButtonClick, part: "prev-button" }), this._isBottomNavigation &&
19
- _jsx("div", { className: "udex-carousel__navigation-page-indicator-spacer" }), _jsx(UDExButton, { "data-ui5-arrow-forward": true, size: UDExButtonSize.Large, disabled: this.isNextButtonDisabled, class: btnClassName, icon: slimArrowRight, design: this.buttonDesign, tooltip: this.nextPageText, onClick: this._nextButtonClick, part: "next-button" })] }), this.autoplay && this._isBottomNavigation &&
18
+ _jsx(UDExButton, { class: `udex-carousel__autoplay-toggle-button`, size: UDExButtonSize.Large, design: UDExButtonDesign.Tertiary, icon: icon, onClick: this._onAutoplayToggleClick, tooltip: this.autoplayToggleButtonTooltipText }), _jsxs("div", { className: this.navigationButtonWrapperClass, children: [_jsx(UDExButton, { "data-ui5-arrow-back": true, size: UDExButtonSize.Large, disabled: this.isPrevButtonDisabled, class: btnClassName, icon: slimArrowLeft, design: this.buttonDesign, tooltip: this.previousPageText, onClick: this._prevButtonClick, part: "prev-button" }), this._isBottomDotNavigation &&
19
+ _jsx("div", { className: "udex-carousel__navigation-page-indicator-spacer" }), _jsx(UDExButton, { "data-ui5-arrow-forward": true, size: UDExButtonSize.Large, disabled: this.isNextButtonDisabled, class: btnClassName, icon: slimArrowRight, design: this.buttonDesign, tooltip: this.nextPageText, onClick: this._nextButtonClick, part: "next-button" })] }), this.autoplay && this._isBottomDotNavigation &&
20
20
  _jsx("div", { className: "udex-carousel__navigation-spacer" })] }));
21
21
  }
22
22
  //# sourceMappingURL=CarouselTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CarouselTemplate.js","sourceRoot":"","sources":["../src/CarouselTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import type Carousel from \"./Carousel.js\";\nimport UI5Carousel from \"@ui5/webcomponents/dist/Carousel.js\";\nimport UDExButton from \"./Button.js\";\nimport UDExButtonSize from \"./types/ButtonSize.js\";\nimport UDExButtonDesign from \"./types/ButtonDesign.js\";\nimport type SlottedChild from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport CarouselArrowsPlacement from \"@ui5/webcomponents/dist/types/CarouselArrowsPlacement.js\";\nimport slimArrowLeft from \"@ui5/webcomponents-icons/dist/slim-arrow-left.js\";\nimport slimArrowRight from \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\nimport play from \"@ui5/webcomponents-icons/dist/play.js\";\nimport pause from \"@ui5/webcomponents-icons/dist/pause.js\";\n\nexport default function CarouselTemplate(this: Carousel) {\n return (\n <div className={this.carouselClass} onKeyDown={this._onkeydown}>\n {this.showNavigationButtons.top && navigation.call(this)}\n\n <UI5Carousel\n itemsPerPage={this.itemsPerPage}\n pageIndicatorType={this.pageIndicatorType}\n id=\"carousel\"\n hideNavigationArrows\n arrowsPlacement={CarouselArrowsPlacement.Navigation}\n accessibleName={this.accessibleName}\n hidePageIndicator={this._hidePageIndicator}\n onNavigate={this._handleNavigate}\n onMouseEnter={this._onMouseEnter}\n onMouseLeave={this._onMouseLeave}\n onFocusIn={this._onFocusIn}\n onFocusOut={this._onFocusOut}\n cyclic={this.cyclic}\n >\n {\n this.items.map(item =>\n <slot name={(item as SlottedChild)._individualSlot}></slot>\n )\n }\n </UI5Carousel>\n\n {this.showNavigationButtons.bottom && navigation.call(this)}\n </div>\n );\n}\n\nfunction navigation(this: Carousel) {\n const btnClassName = \"udex-carousel__navigation-button\";\n const icon = this._autoplayIsPaused ? play : pause;\n\n return (\n <div className={this.navigationWrapperClass} part=\"navigation\">\n {\n this.autoplay &&\n <UDExButton\n class={`udex-carousel__autoplay-toggle-button`}\n size={UDExButtonSize.Large}\n design={UDExButtonDesign.Tertiary}\n icon={icon}\n onClick={this._onAutoplayToggleClick}\n tooltip={this.autoplayToggleButtonTooltipText}\n ></UDExButton>\n }\n\n <div className={this.navigationButtonWrapperClass}>\n <UDExButton\n data-ui5-arrow-back\n size={UDExButtonSize.Large}\n disabled={this.isPrevButtonDisabled}\n class={btnClassName}\n icon={slimArrowLeft}\n design={this.buttonDesign}\n tooltip={this.previousPageText}\n onClick={this._prevButtonClick}\n part=\"prev-button\">\n </UDExButton>\n\n {\n this._isBottomNavigation &&\n <div className=\"udex-carousel__navigation-page-indicator-spacer\" />\n }\n\n <UDExButton\n data-ui5-arrow-forward\n size={UDExButtonSize.Large}\n disabled={this.isNextButtonDisabled}\n class={btnClassName}\n icon={slimArrowRight}\n design={this.buttonDesign}\n tooltip={this.nextPageText}\n onClick={this._nextButtonClick}\n part=\"next-button\">\n </UDExButton>\n </div>\n\n {\n this.autoplay && this._isBottomNavigation &&\n <div className=\"udex-carousel__navigation-spacer\"></div>\n }\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"CarouselTemplate.js","sourceRoot":"","sources":["../src/CarouselTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,WAAW,MAAM,qCAAqC,CAAC;AAC9D,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AAEvD,OAAO,uBAAuB,MAAM,0DAA0D,CAAC;AAC/F,OAAO,aAAa,MAAM,kDAAkD,CAAC;AAC7E,OAAO,cAAc,MAAM,mDAAmD,CAAC;AAC/E,OAAO,IAAI,MAAM,uCAAuC,CAAC;AACzD,OAAO,KAAK,MAAM,wCAAwC,CAAC;AAE3D,MAAM,CAAC,OAAO,UAAU,gBAAgB;IACtC,OAAO,CACL,eAAK,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,aAC3D,IAAI,CAAC,qBAAqB,CAAC,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAExD,KAAC,WAAW,IACV,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,iBAAiB,EAAE,IAAI,CAAC,0BAA0B,EAClD,EAAE,EAAC,UAAU,EACb,oBAAoB,QACpB,eAAe,EAAE,uBAAuB,CAAC,UAAU,EACnD,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,EAC1C,UAAU,EAAE,IAAI,CAAC,eAAe,EAChC,YAAY,EAAE,IAAI,CAAC,aAAa,EAChC,YAAY,EAAE,IAAI,CAAC,aAAa,EAChC,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,UAAU,EAAE,IAAI,CAAC,WAAW,EAC5B,MAAM,EAAE,IAAI,CAAC,MAAM,YAGjB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACpB,eAAM,IAAI,EAAG,IAAqB,CAAC,eAAe,GAAS,CAC5D,GAES,EAEb,IAAI,CAAC,qBAAqB,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IACvD,CACP,CAAC;AACJ,CAAC;AAED,SAAS,UAAU;IACjB,MAAM,YAAY,GAAG,kCAAkC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAEnD,OAAO,CACL,eAAK,SAAS,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,EAAC,YAAY,aAE1D,IAAI,CAAC,QAAQ;gBACb,KAAC,UAAU,IACT,KAAK,EAAE,uCAAuC,EAC9C,IAAI,EAAE,cAAc,CAAC,KAAK,EAC1B,MAAM,EAAE,gBAAgB,CAAC,QAAQ,EACjC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,IAAI,CAAC,sBAAsB,EACpC,OAAO,EAAE,IAAI,CAAC,+BAA+B,GACjC,EAGhB,eAAK,SAAS,EAAE,IAAI,CAAC,4BAA4B,aAC/C,KAAC,UAAU,iCAET,IAAI,EAAE,cAAc,CAAC,KAAK,EAC1B,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EACnC,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAC9B,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAC9B,IAAI,EAAC,aAAa,GACN,EAGZ,IAAI,CAAC,sBAAsB;wBAC3B,cAAK,SAAS,EAAC,iDAAiD,GAAG,EAGrE,KAAC,UAAU,oCAET,IAAI,EAAE,cAAc,CAAC,KAAK,EAC1B,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EACnC,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAC9B,IAAI,EAAC,aAAa,GACN,IACV,EAGJ,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,sBAAsB;gBAC5C,cAAK,SAAS,EAAC,kCAAkC,GAAO,IAEtD,CACP,CAAC;AACJ,CAAC","sourcesContent":["import type Carousel from \"./Carousel.js\";\nimport UI5Carousel from \"@ui5/webcomponents/dist/Carousel.js\";\nimport UDExButton from \"./Button.js\";\nimport UDExButtonSize from \"./types/ButtonSize.js\";\nimport UDExButtonDesign from \"./types/ButtonDesign.js\";\nimport type SlottedChild from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport CarouselArrowsPlacement from \"@ui5/webcomponents/dist/types/CarouselArrowsPlacement.js\";\nimport slimArrowLeft from \"@ui5/webcomponents-icons/dist/slim-arrow-left.js\";\nimport slimArrowRight from \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\nimport play from \"@ui5/webcomponents-icons/dist/play.js\";\nimport pause from \"@ui5/webcomponents-icons/dist/pause.js\";\n\nexport default function CarouselTemplate(this: Carousel) {\n return (\n <div className={this.carouselClass} onKeyDown={this._onkeydown}>\n {this.showNavigationButtons.top && navigation.call(this)}\n\n <UI5Carousel\n itemsPerPage={this.itemsPerPage}\n pageIndicatorType={this.sanitizedPageIndicatorType}\n id=\"carousel\"\n hideNavigationArrows\n arrowsPlacement={CarouselArrowsPlacement.Navigation}\n accessibleName={this.accessibleName}\n hidePageIndicator={this._hidePageIndicator}\n onNavigate={this._handleNavigate}\n onMouseEnter={this._onMouseEnter}\n onMouseLeave={this._onMouseLeave}\n onFocusIn={this._onFocusIn}\n onFocusOut={this._onFocusOut}\n cyclic={this.cyclic}\n >\n {\n this.items.map(item =>\n <slot name={(item as SlottedChild)._individualSlot}></slot>\n )\n }\n </UI5Carousel>\n\n {this.showNavigationButtons.bottom && navigation.call(this)}\n </div>\n );\n}\n\nfunction navigation(this: Carousel) {\n const btnClassName = \"udex-carousel__navigation-button\";\n const icon = this._autoplayIsPaused ? play : pause;\n\n return (\n <div className={this.navigationWrapperClass} part=\"navigation\">\n {\n this.autoplay &&\n <UDExButton\n class={`udex-carousel__autoplay-toggle-button`}\n size={UDExButtonSize.Large}\n design={UDExButtonDesign.Tertiary}\n icon={icon}\n onClick={this._onAutoplayToggleClick}\n tooltip={this.autoplayToggleButtonTooltipText}\n ></UDExButton>\n }\n\n <div className={this.navigationButtonWrapperClass}>\n <UDExButton\n data-ui5-arrow-back\n size={UDExButtonSize.Large}\n disabled={this.isPrevButtonDisabled}\n class={btnClassName}\n icon={slimArrowLeft}\n design={this.buttonDesign}\n tooltip={this.previousPageText}\n onClick={this._prevButtonClick}\n part=\"prev-button\"\n ></UDExButton>\n\n {\n this._isBottomDotNavigation &&\n <div className=\"udex-carousel__navigation-page-indicator-spacer\" />\n }\n\n <UDExButton\n data-ui5-arrow-forward\n size={UDExButtonSize.Large}\n disabled={this.isNextButtonDisabled}\n class={btnClassName}\n icon={slimArrowRight}\n design={this.buttonDesign}\n tooltip={this.nextPageText}\n onClick={this._nextButtonClick}\n part=\"next-button\"\n ></UDExButton>\n </div>\n\n {\n this.autoplay && this._isBottomDotNavigation &&\n <div className=\"udex-carousel__navigation-spacer\"></div>\n }\n </div>\n );\n}\n"]}
@@ -9,6 +9,7 @@ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
9
9
  import "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
10
10
  import "@ui5/webcomponents-icons/dist/play.js";
11
11
  import "@ui5/webcomponents-icons/dist/pause.js";
12
+ import UDExButtonSize from "./types/ButtonSize.js";
12
13
  import TabNavigationPopoverTemplate from "./generated/templates/TabNavigationPopoverTemplate.lit.js";
13
14
  export declare enum UDExSizeMoreButton {
14
15
  Small = "Small",
@@ -64,9 +65,9 @@ declare class UDExTabNavigation extends UI5Element {
64
65
  * Defines the size of the "More" button.
65
66
  *
66
67
  * @public
67
- * @default "Small"
68
+ * @default "Medium"
68
69
  */
69
- sizeMoreButton: `${UDExSizeMoreButton}`;
70
+ sizeMoreButton: `${UDExButtonSize}`;
70
71
  /**
71
72
  * Defines the mode of the component.
72
73
  *
@@ -25,6 +25,7 @@ import "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
25
25
  import "@ui5/webcomponents-icons/dist/play.js";
26
26
  import "@ui5/webcomponents-icons/dist/pause.js";
27
27
  import UDExButton from "./Button.js";
28
+ import UDExButtonSize from "./types/ButtonSize.js";
28
29
  // Templates
29
30
  import TabNavigationTemplate from "./generated/templates/TabNavigationTemplate.lit.js";
30
31
  import TabNavigationPopoverTemplate from "./generated/templates/TabNavigationPopoverTemplate.lit.js";
@@ -83,9 +84,9 @@ let UDExTabNavigation = UDExTabNavigation_1 = class UDExTabNavigation extends UI
83
84
  * Defines the size of the "More" button.
84
85
  *
85
86
  * @public
86
- * @default "Small"
87
+ * @default "Medium"
87
88
  */
88
- this.sizeMoreButton = "Small";
89
+ this.sizeMoreButton = UDExButtonSize.Medium;
89
90
  /**
90
91
  * Defines the mode of the component.
91
92
  *