@sapudex/web-components 0.230.3 → 0.231.1

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 (279) hide show
  1. package/dist/Accordion.d.ts +7 -5
  2. package/dist/Accordion.js +22 -16
  3. package/dist/Accordion.js.map +1 -1
  4. package/dist/AccordionItem.js +7 -0
  5. package/dist/AccordionItem.js.map +1 -1
  6. package/dist/CountrySelector.d.ts +1 -1
  7. package/dist/CountrySelector.js +6 -7
  8. package/dist/CountrySelector.js.map +1 -1
  9. package/dist/MastheadCountrySelector.d.ts +6 -0
  10. package/dist/MastheadCountrySelector.js +17 -2
  11. package/dist/MastheadCountrySelector.js.map +1 -1
  12. package/dist/MastheadItem.d.ts +3 -0
  13. package/dist/MastheadItem.js +25 -1
  14. package/dist/MastheadItem.js.map +1 -1
  15. package/dist/MastheadMenu.d.ts +3 -1
  16. package/dist/MastheadMenu.js +26 -14
  17. package/dist/MastheadMenu.js.map +1 -1
  18. package/dist/MastheadMobileMenu.d.ts +4 -0
  19. package/dist/MastheadMobileMenu.js +61 -8
  20. package/dist/MastheadMobileMenu.js.map +1 -1
  21. package/dist/MastheadShell.d.ts +17 -0
  22. package/dist/MastheadShell.js +57 -13
  23. package/dist/MastheadShell.js.map +1 -1
  24. package/dist/Search.js +3 -3
  25. package/dist/Search.js.map +1 -1
  26. package/dist/SearchableListBase.d.ts +4 -0
  27. package/dist/SearchableListBase.js +21 -2
  28. package/dist/SearchableListBase.js.map +1 -1
  29. package/dist/assets/{bundle.esm-6dbe4d40.js → bundle.esm-7a799a95.js} +194 -194
  30. package/dist/assets/messagebundle_ar-4acbb276.js +1 -0
  31. package/dist/assets/messagebundle_bg-76df681f.js +1 -0
  32. package/dist/assets/messagebundle_cs-5488afab.js +1 -0
  33. package/dist/assets/messagebundle_da-7b8fee05.js +1 -0
  34. package/dist/assets/messagebundle_de-6c3b79cd.js +1 -0
  35. package/dist/assets/messagebundle_el-6f926401.js +1 -0
  36. package/dist/assets/messagebundle_en-4b95b93e.js +1 -0
  37. package/dist/assets/messagebundle_es-b32ec403.js +1 -0
  38. package/dist/assets/messagebundle_et-bac74fdc.js +1 -0
  39. package/dist/assets/messagebundle_fi-3485fac7.js +1 -0
  40. package/dist/assets/messagebundle_fr-4fea234b.js +1 -0
  41. package/dist/assets/messagebundle_hr-455c228f.js +1 -0
  42. package/dist/assets/messagebundle_hu-a8d556d9.js +1 -0
  43. package/dist/assets/messagebundle_it-014d7d0c.js +1 -0
  44. package/dist/assets/messagebundle_iw-630f53fd.js +1 -0
  45. package/dist/assets/messagebundle_ko-fd7c94a4.js +1 -0
  46. package/dist/assets/messagebundle_lt-93f8402d.js +1 -0
  47. package/dist/assets/messagebundle_lv-db65919a.js +1 -0
  48. package/dist/assets/messagebundle_nl-08fb0493.js +1 -0
  49. package/dist/assets/messagebundle_no-af05c854.js +1 -0
  50. package/dist/assets/messagebundle_pl-f65552a3.js +1 -0
  51. package/dist/assets/messagebundle_pt-c00237ba.js +1 -0
  52. package/dist/assets/messagebundle_ro-8387820d.js +1 -0
  53. package/dist/assets/messagebundle_ru-8aaf2b34.js +1 -0
  54. package/dist/assets/messagebundle_sk-bccab7cc.js +1 -0
  55. package/dist/assets/messagebundle_sl-9f2d28b6.js +1 -0
  56. package/dist/assets/messagebundle_sr-58be5960.js +1 -0
  57. package/dist/assets/messagebundle_sv-a0fbe175.js +1 -0
  58. package/dist/assets/messagebundle_tr-64ad7959.js +1 -0
  59. package/dist/assets/messagebundle_uk-7c63d422.js +1 -0
  60. package/dist/assets/messagebundle_zh_CN-6234699a.js +1 -0
  61. package/dist/assets/messagebundle_zh_TW-62cc17d9.js +1 -0
  62. package/dist/css/themes/CountrySelector.css +1 -1
  63. package/dist/css/themes/MastheadCountrySelector.css +1 -1
  64. package/dist/css/themes/MastheadItem.css +1 -1
  65. package/dist/css/themes/MastheadMenuItem.css +1 -1
  66. package/dist/css/themes/MastheadMobileMenu.css +1 -1
  67. package/dist/css/themes/MastheadShell.css +1 -1
  68. package/dist/css/themes/RatingIndicator.css +1 -1
  69. package/dist/css/themes/SearchableList.css +1 -1
  70. package/dist/css/themes/Slider.css +1 -1
  71. package/dist/custom-elements-internal.json +23 -15
  72. package/dist/custom-elements.json +22 -15
  73. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  74. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  75. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  76. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  77. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  78. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  79. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  80. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  81. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  82. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  83. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  84. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  85. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  86. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  87. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  88. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  89. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  90. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  91. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  92. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  93. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  94. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  95. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  96. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  97. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  98. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  99. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  100. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  101. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  102. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  103. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  104. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  105. package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
  106. package/dist/generated/i18n/i18n-defaults.js +2 -1
  107. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  108. package/dist/generated/templates/AccordionTemplate.lit.js +1 -1
  109. package/dist/generated/templates/AccordionTemplate.lit.js.map +1 -1
  110. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js +3 -3
  111. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js.map +1 -1
  112. package/dist/generated/templates/MastheadMenuTemplate.lit.js +3 -3
  113. package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +1 -1
  114. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +11 -11
  115. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +1 -1
  116. package/dist/generated/templates/MastheadShellTemplate.lit.js +1 -1
  117. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
  118. package/dist/generated/templates/SearchableListBaseTemplate.lit.js +1 -1
  119. package/dist/generated/templates/SearchableListBaseTemplate.lit.js.map +1 -1
  120. package/dist/generated/themes/CountrySelector.css.js +1 -1
  121. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  122. package/dist/generated/themes/MastheadCountrySelector.css.js +1 -1
  123. package/dist/generated/themes/MastheadCountrySelector.css.js.map +1 -1
  124. package/dist/generated/themes/MastheadItem.css.js +1 -1
  125. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  126. package/dist/generated/themes/MastheadMenuItem.css.js +1 -1
  127. package/dist/generated/themes/MastheadMenuItem.css.js.map +1 -1
  128. package/dist/generated/themes/MastheadMobileMenu.css.js +1 -1
  129. package/dist/generated/themes/MastheadMobileMenu.css.js.map +1 -1
  130. package/dist/generated/themes/MastheadShell.css.js +1 -1
  131. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  132. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  133. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  134. package/dist/generated/themes/SearchableList.css.js +1 -1
  135. package/dist/generated/themes/SearchableList.css.js.map +1 -1
  136. package/dist/generated/themes/Slider.css.js +1 -1
  137. package/dist/generated/themes/Slider.css.js.map +1 -1
  138. package/dist/i18n/messagebundle.properties +3 -0
  139. package/dist/i18n/messagebundle_ar.properties +3 -0
  140. package/dist/i18n/messagebundle_bg.properties +3 -0
  141. package/dist/i18n/messagebundle_cs.properties +3 -0
  142. package/dist/i18n/messagebundle_da.properties +3 -0
  143. package/dist/i18n/messagebundle_de.properties +3 -0
  144. package/dist/i18n/messagebundle_el.properties +3 -0
  145. package/dist/i18n/messagebundle_en.properties +1 -0
  146. package/dist/i18n/messagebundle_es.properties +3 -0
  147. package/dist/i18n/messagebundle_et.properties +3 -0
  148. package/dist/i18n/messagebundle_fi.properties +3 -0
  149. package/dist/i18n/messagebundle_fr.properties +3 -0
  150. package/dist/i18n/messagebundle_hr.properties +3 -0
  151. package/dist/i18n/messagebundle_hu.properties +3 -0
  152. package/dist/i18n/messagebundle_it.properties +3 -0
  153. package/dist/i18n/messagebundle_iw.properties +3 -1
  154. package/dist/i18n/messagebundle_ko.properties +3 -0
  155. package/dist/i18n/messagebundle_lt.properties +3 -0
  156. package/dist/i18n/messagebundle_lv.properties +3 -0
  157. package/dist/i18n/messagebundle_nl.properties +3 -0
  158. package/dist/i18n/messagebundle_no.properties +3 -0
  159. package/dist/i18n/messagebundle_pl.properties +3 -0
  160. package/dist/i18n/messagebundle_pt.properties +3 -0
  161. package/dist/i18n/messagebundle_pt_BR.properties +3 -0
  162. package/dist/i18n/messagebundle_ro.properties +3 -0
  163. package/dist/i18n/messagebundle_ru.properties +3 -0
  164. package/dist/i18n/messagebundle_sk.properties +3 -0
  165. package/dist/i18n/messagebundle_sl.properties +3 -0
  166. package/dist/i18n/messagebundle_sr.properties +3 -1
  167. package/dist/i18n/messagebundle_sv.properties +3 -0
  168. package/dist/i18n/messagebundle_tr.properties +3 -0
  169. package/dist/i18n/messagebundle_uk.properties +3 -0
  170. package/dist/i18n/messagebundle_zh_CN.properties +3 -1
  171. package/dist/i18n/messagebundle_zh_TW.properties +3 -0
  172. package/dist/vscode.html-custom-data.json +1 -1
  173. package/dist/web-types.json +10 -2
  174. package/package.json +1 -1
  175. package/src/Accordion.hbs +1 -0
  176. package/src/Accordion.ts +26 -18
  177. package/src/AccordionItem.ts +19 -6
  178. package/src/CountrySelector.ts +8 -9
  179. package/src/MastheadCountrySelector.hbs +5 -9
  180. package/src/MastheadCountrySelector.ts +22 -0
  181. package/src/MastheadItem.ts +32 -1
  182. package/src/MastheadMenu.hbs +3 -3
  183. package/src/MastheadMenu.ts +35 -15
  184. package/src/MastheadMobileMenu.hbs +12 -1
  185. package/src/MastheadMobileMenu.ts +68 -9
  186. package/src/MastheadShell.hbs +5 -5
  187. package/src/MastheadShell.ts +68 -14
  188. package/src/Search.ts +3 -3
  189. package/src/SearchableListBase.hbs +6 -0
  190. package/src/SearchableListBase.ts +25 -2
  191. package/src/generated/i18n/i18n-defaults.ts +2 -2
  192. package/src/generated/templates/AccordionTemplate.lit.ts +1 -1
  193. package/src/generated/templates/MastheadCountrySelectorTemplate.lit.ts +3 -3
  194. package/src/generated/templates/MastheadMenuTemplate.lit.ts +3 -3
  195. package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +11 -11
  196. package/src/generated/templates/MastheadShellTemplate.lit.ts +1 -1
  197. package/src/generated/templates/SearchableListBaseTemplate.lit.ts +1 -1
  198. package/src/generated/themes/CountrySelector.css.ts +1 -1
  199. package/src/generated/themes/MastheadCountrySelector.css.ts +1 -1
  200. package/src/generated/themes/MastheadItem.css.ts +1 -1
  201. package/src/generated/themes/MastheadMenuItem.css.ts +1 -1
  202. package/src/generated/themes/MastheadMobileMenu.css.ts +1 -1
  203. package/src/generated/themes/MastheadShell.css.ts +1 -1
  204. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  205. package/src/generated/themes/SearchableList.css.ts +1 -1
  206. package/src/generated/themes/Slider.css.ts +1 -1
  207. package/src/i18n/messagebundle.properties +3 -0
  208. package/src/i18n/messagebundle_ar.properties +3 -0
  209. package/src/i18n/messagebundle_bg.properties +3 -0
  210. package/src/i18n/messagebundle_cs.properties +3 -0
  211. package/src/i18n/messagebundle_da.properties +3 -0
  212. package/src/i18n/messagebundle_de.properties +3 -0
  213. package/src/i18n/messagebundle_el.properties +3 -0
  214. package/src/i18n/messagebundle_en.properties +1 -0
  215. package/src/i18n/messagebundle_es.properties +3 -0
  216. package/src/i18n/messagebundle_et.properties +3 -0
  217. package/src/i18n/messagebundle_fi.properties +3 -0
  218. package/src/i18n/messagebundle_fr.properties +3 -0
  219. package/src/i18n/messagebundle_hr.properties +3 -0
  220. package/src/i18n/messagebundle_hu.properties +3 -0
  221. package/src/i18n/messagebundle_it.properties +3 -0
  222. package/src/i18n/messagebundle_iw.properties +3 -1
  223. package/src/i18n/messagebundle_ko.properties +3 -0
  224. package/src/i18n/messagebundle_lt.properties +3 -0
  225. package/src/i18n/messagebundle_lv.properties +3 -0
  226. package/src/i18n/messagebundle_nl.properties +3 -0
  227. package/src/i18n/messagebundle_no.properties +3 -0
  228. package/src/i18n/messagebundle_pl.properties +3 -0
  229. package/src/i18n/messagebundle_pt.properties +3 -0
  230. package/src/i18n/messagebundle_pt_BR.properties +3 -0
  231. package/src/i18n/messagebundle_ro.properties +3 -0
  232. package/src/i18n/messagebundle_ru.properties +3 -0
  233. package/src/i18n/messagebundle_sk.properties +3 -0
  234. package/src/i18n/messagebundle_sl.properties +3 -0
  235. package/src/i18n/messagebundle_sr.properties +3 -1
  236. package/src/i18n/messagebundle_sv.properties +3 -0
  237. package/src/i18n/messagebundle_tr.properties +3 -0
  238. package/src/i18n/messagebundle_uk.properties +3 -0
  239. package/src/i18n/messagebundle_zh_CN.properties +3 -1
  240. package/src/i18n/messagebundle_zh_TW.properties +3 -0
  241. package/src/themes/CountrySelector.css +11 -0
  242. package/src/themes/MastheadCountrySelector.css +11 -0
  243. package/src/themes/MastheadItem.css +6 -2
  244. package/src/themes/MastheadMenuItem.css +5 -0
  245. package/src/themes/MastheadMobileMenu.css +1 -0
  246. package/src/themes/MastheadShell.css +10 -5
  247. package/src/themes/SearchableList.css +11 -0
  248. package/dist/assets/messagebundle_ar-bb470511.js +0 -1
  249. package/dist/assets/messagebundle_bg-a533dfab.js +0 -1
  250. package/dist/assets/messagebundle_cs-c70a7f36.js +0 -1
  251. package/dist/assets/messagebundle_da-e292cac5.js +0 -1
  252. package/dist/assets/messagebundle_de-5c108de6.js +0 -1
  253. package/dist/assets/messagebundle_el-44746e0b.js +0 -1
  254. package/dist/assets/messagebundle_en-d0c2d2d4.js +0 -1
  255. package/dist/assets/messagebundle_es-c0c1060f.js +0 -1
  256. package/dist/assets/messagebundle_et-a5f15d3b.js +0 -1
  257. package/dist/assets/messagebundle_fi-f4b8eb82.js +0 -1
  258. package/dist/assets/messagebundle_fr-af18ac46.js +0 -1
  259. package/dist/assets/messagebundle_hr-d893e46d.js +0 -1
  260. package/dist/assets/messagebundle_hu-230c58c9.js +0 -1
  261. package/dist/assets/messagebundle_it-5bf1436c.js +0 -1
  262. package/dist/assets/messagebundle_iw-dd60afc4.js +0 -1
  263. package/dist/assets/messagebundle_ko-c450bda3.js +0 -1
  264. package/dist/assets/messagebundle_lt-87ab0529.js +0 -1
  265. package/dist/assets/messagebundle_lv-fc413852.js +0 -1
  266. package/dist/assets/messagebundle_nl-34d7e236.js +0 -1
  267. package/dist/assets/messagebundle_no-f22648fb.js +0 -1
  268. package/dist/assets/messagebundle_pl-10303f09.js +0 -1
  269. package/dist/assets/messagebundle_pt-b7a40c67.js +0 -1
  270. package/dist/assets/messagebundle_ro-94628623.js +0 -1
  271. package/dist/assets/messagebundle_ru-1f6595ba.js +0 -1
  272. package/dist/assets/messagebundle_sk-89eabac1.js +0 -1
  273. package/dist/assets/messagebundle_sl-d56532f1.js +0 -1
  274. package/dist/assets/messagebundle_sr-cf7f3b32.js +0 -1
  275. package/dist/assets/messagebundle_sv-3a3b20d3.js +0 -1
  276. package/dist/assets/messagebundle_tr-33b16d09.js +0 -1
  277. package/dist/assets/messagebundle_uk-82e1f2c1.js +0 -1
  278. package/dist/assets/messagebundle_zh_CN-15ca05aa.js +0 -1
  279. package/dist/assets/messagebundle_zh_TW-ad6445e7.js +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "name": "@sapudex/web-components",
4
- "version": "0.230.3",
4
+ "version": "0.231.1",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -44,7 +44,7 @@
44
44
  },
45
45
  {
46
46
  "name": "udex-accordion-item",
47
- "description": "<h3 class=\"comment-api-title\">Overview</h3>\n\n\n<h3>Usage</h3>\n\nFor the <code>udex-accordion-item</code>\n<h3>ES6 Module Import</h3>\n\n<code>import \"@sapudex/web-components/dist/AccordionItem.js\";</code>\n---\n\n\n### **Events:**\n - **accordion-item-focus** - Triggered when the user focuses on an accordion item.\n\n### **Slots:**\n - **default** - Slot for accordion item content.",
47
+ "description": "<h3 class=\"comment-api-title\">Overview</h3>\n\n\n<h3>Usage</h3>\n\nFor the <code>udex-accordion-item</code>\n<h3>ES6 Module Import</h3>\n\n<code>import \"@sapudex/web-components/dist/AccordionItem.js\";</code>\n---\n\n\n### **Events:**\n - **accordion-item-focus** - Triggered when the user focuses on an accordion item.\n- **accordion-item-click** - Triggered when the user clicks on an accordion item.\n\n### **Slots:**\n - **default** - Slot for accordion item content.",
48
48
  "doc-url": "",
49
49
  "attributes": [
50
50
  {
@@ -78,6 +78,10 @@
78
78
  {
79
79
  "name": "accordion-item-focus",
80
80
  "description": "Triggered when the user focuses on an accordion item."
81
+ },
82
+ {
83
+ "name": "accordion-item-click",
84
+ "description": "Triggered when the user clicks on an accordion item."
81
85
  }
82
86
  ],
83
87
  "js": {
@@ -107,6 +111,10 @@
107
111
  {
108
112
  "name": "accordion-item-focus",
109
113
  "description": "Triggered when the user focuses on an accordion item."
114
+ },
115
+ {
116
+ "name": "accordion-item-click",
117
+ "description": "Triggered when the user clicks on an accordion item."
110
118
  }
111
119
  ]
112
120
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapudex/web-components",
3
- "version": "0.230.3",
3
+ "version": "0.231.1",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/"
6
6
  },
package/src/Accordion.hbs CHANGED
@@ -1,6 +1,7 @@
1
1
  <div
2
2
  class="udex-accordion"
3
3
  @keydown="{{keydownHandler}}"
4
+ @ui5-accordion-item-click="{{updateAllExpandedStatus}}"
4
5
  @ui5-accordion-item-focus="{{itemFocusHandler}}">
5
6
  <div class="udex-accordion__head" part="head">
6
7
  <h3 class="udex-accordion__headline">{{headlineText}}</h3>
package/src/Accordion.ts CHANGED
@@ -104,26 +104,12 @@ class UDExAccordion extends UI5Element {
104
104
  UDExAccordion.i18nBundle = await getI18nBundle("@sapudex/web-components");
105
105
  }
106
106
 
107
- get toggleAllText(): string {
108
- return this._allExpanded
109
- ? UDExAccordion.i18nBundle.getText(COLLAPSE_ALL)
110
- : UDExAccordion.i18nBundle.getText(EXPAND_ALL);
111
- }
112
-
113
- get isExpanded(): boolean {
114
- return this._allExpanded;
115
- }
116
-
117
- get items(): {item: HTMLElement}[] {
118
- return this._items.map(el => {
119
- return {
120
- item: el,
121
- };
122
- });
107
+ onEnterDOM() {
108
+ this.updateAllExpandedStatus();
123
109
  }
124
110
 
125
- get headlineText(): string {
126
- return this.headline ? this.headline : "Default headline";
111
+ updateAllExpandedStatus() {
112
+ this._allExpanded = this._items.every(item => item.expanded);
127
113
  }
128
114
 
129
115
  toggleAllHandler(e: Event) {
@@ -188,6 +174,28 @@ class UDExAccordion extends UI5Element {
188
174
  this._activeItemIndex = this._items?.indexOf(target) ?? -1;
189
175
  }
190
176
  }
177
+
178
+ get toggleAllText(): string {
179
+ return this._allExpanded
180
+ ? UDExAccordion.i18nBundle.getText(COLLAPSE_ALL)
181
+ : UDExAccordion.i18nBundle.getText(EXPAND_ALL);
182
+ }
183
+
184
+ get isExpanded(): boolean {
185
+ return this._allExpanded;
186
+ }
187
+
188
+ get items(): {item: HTMLElement}[] {
189
+ return this._items.map(el => {
190
+ return {
191
+ item: el,
192
+ };
193
+ });
194
+ }
195
+
196
+ get headlineText(): string {
197
+ return this.headline ? this.headline : "Default headline";
198
+ }
191
199
  }
192
200
 
193
201
  UDExAccordion.define();
@@ -49,6 +49,12 @@ import AccordionItemCss from "./generated/themes/AccordionItem.css.js";
49
49
  */
50
50
  @event("accordion-item-focus")
51
51
 
52
+ /**
53
+ * Triggered when the user clicks on an accordion item.
54
+ * @public
55
+ */
56
+ @event("accordion-item-click")
57
+
52
58
  class UDExAccordionItem extends UI5Element {
53
59
  /**
54
60
  * Defines the Badge at the end of the title item.
@@ -56,7 +62,8 @@ class UDExAccordionItem extends UI5Element {
56
62
  * @default ""
57
63
  * @public
58
64
  */
59
- @property() numberBadge!: string;
65
+ @property()
66
+ numberBadge!: string;
60
67
 
61
68
  /**
62
69
  * Defines the title of the accordion item component.
@@ -66,7 +73,8 @@ class UDExAccordionItem extends UI5Element {
66
73
  * @default ""
67
74
  * @public
68
75
  */
69
- @property() title!: string;
76
+ @property()
77
+ title!: string;
70
78
 
71
79
  /**
72
80
  * Defines if the accordion item is expanded by default
@@ -74,7 +82,8 @@ class UDExAccordionItem extends UI5Element {
74
82
  * @default false
75
83
  * @public
76
84
  */
77
- @property({ type: Boolean }) expanded!: boolean;
85
+ @property({ type: Boolean })
86
+ expanded!: boolean;
78
87
 
79
88
  /**
80
89
  * Used internally to understand the component's open or closed state.
@@ -82,14 +91,16 @@ class UDExAccordionItem extends UI5Element {
82
91
  * @default false
83
92
  * @private
84
93
  */
85
- @property({ type: Boolean, noAttribute: true }) isOpen = false;
94
+ @property({ type: Boolean, noAttribute: true })
95
+ isOpen = false;
86
96
 
87
97
  /**
88
98
  * Defines direction of the accordion item.
89
99
  *
90
100
  * @public
91
101
  */
92
- @property({ type: String }) _direction?: string;
102
+ @property({ type: String })
103
+ _direction?: string;
93
104
 
94
105
  /**
95
106
  * Slot for accordion item content.
@@ -97,7 +108,8 @@ class UDExAccordionItem extends UI5Element {
97
108
  * @slot
98
109
  * @public
99
110
  */
100
- @slot({ type: Node, "default": true }) content!: Array<Node>;
111
+ @slot({ type: Node, "default": true })
112
+ content!: Array<Node>;
101
113
 
102
114
  constructor() {
103
115
  super();
@@ -121,6 +133,7 @@ class UDExAccordionItem extends UI5Element {
121
133
  e.preventDefault();
122
134
  this.toggleItemState(e.currentTarget as HTMLElement, this.expanded);
123
135
  this.toggleExpanded();
136
+ this.fireEvent("accordion-item-click");
124
137
  }
125
138
 
126
139
  toggleItemState(el: HTMLElement, isActive: boolean) {
@@ -427,28 +427,23 @@ class UDExCountrySelector extends UDExSearchableListBase {
427
427
  this._dropdown.onOpen(this.getInput());
428
428
  this._search.focus();
429
429
  this._search.value = key;
430
- this.onValueSearch(key);
430
+ this.fireChangeSearch();
431
431
  }
432
432
 
433
433
  handleInputMouseDown(e: CustomEvent): void {
434
434
  e.preventDefault();
435
435
  }
436
436
 
437
- onValueSearch(searchValue: string) {
438
- this._shouldFilterItems = true;
439
- this._filteredItems = this.filterItems(this.getProcessedItems(), searchValue);
440
- this.fireEvent("change-search", { value: searchValue });
441
- }
442
-
443
437
  handleTriggerClick() {
444
438
  this._dropdown.open = !this._dropdown.open;
445
439
  }
446
440
 
447
441
  handleValueSearch(e:CustomEvent) {
448
- this.onValueSearch(e.detail.value as string);
442
+ this.onSearch(e);
443
+ this.fireChangeSearch();
449
444
  }
450
445
 
451
- handleSubmitSearch() {
446
+ handleSubmitSearch(): void {
452
447
  this.onSubmitSearch();
453
448
  }
454
449
 
@@ -491,6 +486,10 @@ class UDExCountrySelector extends UDExSearchableListBase {
491
486
  });
492
487
  }
493
488
 
489
+ fireChangeSearch(): void {
490
+ this.fireEvent("change-search", { value: this._search.value });
491
+ }
492
+
494
493
  getSearch(): Search {
495
494
  return this.shadowRoot!.querySelector<Search>("[udex-search]")!;
496
495
  }
@@ -1,8 +1,6 @@
1
1
  <div class="udex-masthead-country-selector" @keydown="{{handleKeyDown}}">
2
2
  {{#if _isActiveRegionOpen}}
3
- <span class="udex-masthead-country-selector__title">
4
- {{countryTitle}}
5
- </span>
3
+ <span class="udex-masthead-country-selector__title">{{countryTitle}}</span>
6
4
  {{#unless this.isSingleMode}}
7
5
  <udex-masthead-menu-item
8
6
  class="udex-masthead-country-selector__region-back-item"
@@ -25,9 +23,10 @@
25
23
  non-interactive-submit-button
26
24
  show-submit-button>
27
25
  </udex-search>
26
+ <span aria-live="polite" aria-atomic="true" class="hidden">{{_accSearchResultInfo}}</span>
28
27
  <ul class="udex-masthead-country-selector__list udex-masthead-country-selector__list_countries" role="menu">
29
28
  {{#each _activeCountries}}
30
- <li role="menuitem">
29
+ <li role="none">
31
30
  <udex-masthead-menu-item
32
31
  class="udex-masthead-country-selector__item udex-masthead-country-selector__item_countries"
33
32
  @click="{{../fireEventCountryItemClick}}"
@@ -41,19 +40,16 @@
41
40
  {{/each}}
42
41
  </ul>
43
42
  {{else}}
44
- <span class="udex-masthead-country-selector__title">
45
- {{regionTitle}}
46
- </span>
43
+ <span class="udex-masthead-country-selector__title">{{regionTitle}}</span>
47
44
  <ul class="udex-masthead-country-selector__list" role="menu">
48
45
  {{#each regionsData}}
49
- <li role="menuitem">
46
+ <li role="none">
50
47
  <udex-masthead-menu-item
51
48
  id="{{this._id}}"
52
49
  @click="{{../handleRegionClick}}"
53
50
  index="{{@index}}"
54
51
  class="udex-masthead-country-selector__item udex-masthead-country-selector__item_region"
55
52
  aria-has-popup="true"
56
- accessible-role="button"
57
53
  type="Button"
58
54
  is-nav-item
59
55
  has-border
@@ -4,6 +4,8 @@ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
4
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
5
5
  import event from "@ui5/webcomponents-base/dist/decorators/event.js";
6
6
  import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
7
+ import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
8
+ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
7
9
  import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
8
10
  import "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
9
11
  import {
@@ -15,6 +17,7 @@ import MastheadCountrySelectorTemplate from "./generated/templates/MastheadCount
15
17
  import AnalyticsName from "./types/AnalyticsName.js";
16
18
  import { BreakpointUtils } from "./utils/Breakpoints.js";
17
19
  import type UDExMastheadShell from "./MastheadShell.js";
20
+ import { NO_MATCHES_FOUND, RESULT_RETURNED } from "./generated/i18n/i18n-defaults.js";
18
21
 
19
22
  // Styles
20
23
  import MastheadCountrySelectorCss from "./generated/themes/MastheadCountrySelector.css.js";
@@ -227,8 +230,15 @@ class UDExMastheadCountrySelector extends UI5Element {
227
230
  _activeCountries!: Array<Country>;
228
231
  _shouldFocusBackBtn!: boolean;
229
232
  _shouldFocusRegionByIndex!: boolean;
233
+ _accSearchResultInfo?: string;
230
234
  _activeRegionIndex!: number;
231
235
 
236
+ static i18nBundle: I18nBundle;
237
+
238
+ static async onDefine() {
239
+ UDExMastheadCountrySelector.i18nBundle = await getI18nBundle("@sapudex/web-components");
240
+ }
241
+
232
242
  constructor() {
233
243
  super();
234
244
  this._activeCountries = [];
@@ -325,6 +335,10 @@ class UDExMastheadCountrySelector extends UI5Element {
325
335
  this.setActiveCountries(this._activeRegion.countries.filter(country => country.displayTitle.toLowerCase().includes(searchTerm)));
326
336
  }
327
337
 
338
+ this._accSearchResultInfo = this._activeCountries.length
339
+ ? `${this._activeCountries.length} ${this.resultReturnedText}`
340
+ : this.noMatchesFoundText;
341
+
328
342
  this._shouldFocusBackBtn = false;
329
343
  this.fireEvent<SearchEventDetail>("country-selector-search", {
330
344
  value: e.detail.value,
@@ -502,6 +516,14 @@ class UDExMastheadCountrySelector extends UI5Element {
502
516
  });
503
517
  }
504
518
 
519
+ get noMatchesFoundText(): string {
520
+ return UDExMastheadCountrySelector.i18nBundle.getText(NO_MATCHES_FOUND);
521
+ }
522
+
523
+ get resultReturnedText(): string {
524
+ return UDExMastheadCountrySelector.i18nBundle.getText(RESULT_RETURNED);
525
+ }
526
+
505
527
  get items(): Array<UDExMastheadMenuItem> {
506
528
  const items = this.shadowRoot?.querySelectorAll<UDExMastheadMenuItem>(".udex-masthead-country-selector__item");
507
529
  return items ? Array.from(items) : [];
@@ -10,6 +10,7 @@ import "@ui5/webcomponents-icons/dist/search.js";
10
10
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
11
11
  import { isEscape } from "@ui5/webcomponents-base/dist/Keys.js";
12
12
  import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
13
+ import { getFirstFocusableElement } from "@ui5/webcomponents-base/dist/util/FocusableElements.js";
13
14
  import {
14
15
  OPENS_IN_A_NEW_WINDOW, PROFILE, CART, COUNTRY_SELECTOR, SUPPORT, SEARCH,
15
16
  } from "./generated/i18n/i18n-defaults.js";
@@ -17,6 +18,7 @@ import UDExMastheadMenu from "./MastheadMenu.js";
17
18
  import UDExAvatar from "./Avatar.js";
18
19
  import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
19
20
  import UDExMastheadShell from "./MastheadShell.js";
21
+ import UDExMastheadMenuItem from "./MastheadMenuItem.js";
20
22
  import { Target } from "./types/common.js";
21
23
  import { BreakpointUtils } from "./utils/Breakpoints.js";
22
24
  import AnalyticsName from "./types/AnalyticsName.js";
@@ -334,6 +336,10 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
334
336
  this.setDropdownInsetStart();
335
337
  }
336
338
 
339
+ if (this.shouldFocusFirstElement) {
340
+ this.applyFocusToFirstElement();
341
+ }
342
+
337
343
  this.handleOutsideClick();
338
344
  }
339
345
 
@@ -441,7 +447,7 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
441
447
  }
442
448
 
443
449
  setDropdownInsetStart(): void {
444
- const dropdown = this.getDomElement(".udex-masthead-item__dropdown");
450
+ const dropdown = this.dropdownHolder;
445
451
  if (dropdown) {
446
452
  const rect = dropdown.getBoundingClientRect();
447
453
  const marginInlineStart = this.calculateMarginInlineStart(rect);
@@ -474,6 +480,23 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
474
480
  return null;
475
481
  }
476
482
 
483
+ async applyFocusToFirstElement(): Promise<void> {
484
+ const menu = this.querySelector("[udex-masthead-menu]");
485
+
486
+ if (menu) {
487
+ const menuItems = Array.from(menu.shadowRoot?.querySelectorAll<UDExMastheadMenuItem>("[udex-masthead-menu-item]") || []);
488
+ const itemWithUrl = menuItems.find(menuItem => menuItem.url);
489
+ const focusableElement = itemWithUrl?.shadowRoot?.querySelector<HTMLElement>(".udex-masthead-menu-item");
490
+ if (focusableElement) {
491
+ focusableElement.focus();
492
+ return;
493
+ }
494
+ }
495
+
496
+ const focusedElement = await getFirstFocusableElement(this.dropdownHolder);
497
+ focusedElement?.focus();
498
+ }
499
+
477
500
  handleDirection(): void {
478
501
  const directionStyles = window
479
502
  .getComputedStyle(this)
@@ -524,6 +547,10 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
524
547
  || this.isNavItemTarget(target);
525
548
  }
526
549
 
550
+ get dropdownHolder(): HTMLElement {
551
+ return this.getDomElement(".udex-masthead-item__dropdown")!;
552
+ }
553
+
527
554
  get mastheadShell(): UDExMastheadShell {
528
555
  return document.querySelector<UDExMastheadShell>("[udex-masthead-shell]")!;
529
556
  }
@@ -575,6 +602,10 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
575
602
  return labels.length ? labels.join(" ").trim() : undefined;
576
603
  }
577
604
 
605
+ get shouldFocusFirstElement(): boolean {
606
+ return this.isDropdownOpened && !this._preventFocusOut;
607
+ }
608
+
578
609
  get isDropdownOpened(): boolean {
579
610
  return this.hasDropdownSlot && this.selected;
580
611
  }
@@ -40,7 +40,9 @@
40
40
  category="{{this.category}}">
41
41
  {{#each this.items}}
42
42
  <li>
43
- {{#if this.url}}
43
+ {{#if this.isDivider}}
44
+ <udex-divider class="udex-masthead-menu__item-divider"></udex-divider>
45
+ {{else}}
44
46
  <udex-masthead-menu-item
45
47
  @click="{{../../../handleMenuItemClick}}"
46
48
  badge="{{this.badge}}"
@@ -48,8 +50,6 @@
48
50
  url="{{this.url}}"
49
51
  label="{{this.title}}">
50
52
  </udex-masthead-menu-item>
51
- {{else}}
52
- <udex-divider class="udex-masthead-menu__item-divider"></udex-divider>
53
53
  {{/if}}
54
54
  </li>
55
55
  {{/each}}
@@ -12,6 +12,7 @@ import UDExMastheadMenuItem, { ItemType } from "./MastheadMenuItem.js";
12
12
  import UDExDivider from "./Divider.js";
13
13
  import MastheadMenuTemplate from "./generated/templates/MastheadMenuTemplate.lit.js";
14
14
  import AnalyticsName from "./types/AnalyticsName.js";
15
+ import UDExMastheadItem from "./MastheadItem.js";
15
16
 
16
17
  // Styles
17
18
  import MastheadMenuCss from "./generated/themes/MastheadMenu.css.js";
@@ -22,6 +23,7 @@ export type Item = {
22
23
  title: string;
23
24
  url: string;
24
25
  externalLink: boolean;
26
+ isDivider?: boolean;
25
27
  };
26
28
 
27
29
  export type SubMenuLinkItem = {
@@ -37,9 +39,10 @@ export type MenuItem = {
37
39
 
38
40
  export type MenuItemClickEventDetail = {
39
41
  category?: string,
42
+ analyticsPath: Array<string>,
43
+ analyticsName: AnalyticsName,
40
44
  originalEvent: Event,
41
45
  item: UDExMastheadMenuItem,
42
- analyticsName: AnalyticsName,
43
46
  sourceNode: HTMLElement,
44
47
  }
45
48
 
@@ -79,6 +82,9 @@ export type MenuItemClickEventDetail = {
79
82
  category: {
80
83
  type: String,
81
84
  },
85
+ analyticsPath: {
86
+ type: Array<string>,
87
+ },
82
88
  item: {
83
89
  type: HTMLElement,
84
90
  },
@@ -143,18 +149,26 @@ class UDExMastheadMenu extends UI5Element {
143
149
  }
144
150
 
145
151
  handleMenuItemClick(e: Event): void {
146
- const item = e.target as UDExMastheadMenuItem;
147
- const { url, type } = item;
148
- if (url?.length) {
149
- const list = item.closest(".udex-masthead-menu__list") as HTMLElement;
150
- this.fireEvent<MenuItemClickEventDetail>("menu-item-click", {
151
- sourceNode: item.shadowRoot?.querySelector(".udex-masthead-menu-item") as HTMLElement,
152
- analyticsName: AnalyticsName.Header,
153
- item,
154
- originalEvent: e,
155
- ...(type !== ItemType.Heading && { category: list?.getAttribute("category") || "" }),
156
- });
152
+ const menuItem = e.target as UDExMastheadMenuItem;
153
+ if (!menuItem.url?.length) {
154
+ return;
157
155
  }
156
+
157
+ const mainItem = this.closest("[udex-masthead-item]") as UDExMastheadItem;
158
+ const menuList = menuItem.closest(".udex-masthead-menu__list") as HTMLElement;
159
+ const sourceNode = menuItem.shadowRoot?.querySelector(".udex-masthead-menu-item") as HTMLElement;
160
+ const category = menuList?.getAttribute("category") || "";
161
+
162
+ const eventDetail: MenuItemClickEventDetail = {
163
+ analyticsPath: [mainItem?.label, category, menuItem.label].filter(Boolean),
164
+ analyticsName: AnalyticsName.Header,
165
+ originalEvent: e,
166
+ item: menuItem,
167
+ sourceNode,
168
+ ...(menuItem.type !== ItemType.Heading && { category }),
169
+ };
170
+
171
+ this.fireEvent<MenuItemClickEventDetail>("menu-item-click", eventDetail);
158
172
  }
159
173
 
160
174
  focusPreviousItem(item: UDExMastheadMenuItem): void {
@@ -186,10 +200,16 @@ class UDExMastheadMenu extends UI5Element {
186
200
  get itemsList(): Array<MenuItem> {
187
201
  let id = 1;
188
202
  const parsedItems: Array<MenuItem> = this.parseArrayFromString(this.subItems);
203
+
189
204
  return parsedItems.map((mainItem: MenuItem) => {
190
- mainItem.subMenuLinkItems = mainItem.subMenuLinkItems.map((category: SubMenuLinkItem) => {
191
- category.categoryId = `${id++}`;
192
- return category;
205
+ mainItem.subMenuLinkItems = mainItem.subMenuLinkItems.map((subMenu: SubMenuLinkItem) => {
206
+ subMenu.categoryId = `${id++}`;
207
+ subMenu.items = subMenu.items.map((item: Item) => ({
208
+ ...item,
209
+ ...(item.title === "-" && { isDivider: true }),
210
+ }));
211
+
212
+ return subMenu;
193
213
  });
194
214
 
195
215
  return mainItem;
@@ -17,6 +17,7 @@
17
17
  @click="{{handleExploreBackToMenuItems}}"
18
18
  label="{{_clickedItem.innerText}}"
19
19
  type="Button"
20
+ is-back
20
21
  has-border
21
22
  icon-start
22
23
  is-explore-back>
@@ -35,6 +36,7 @@
35
36
  @click="{{handleBackToMenuItems}}"
36
37
  label="{{_clickedItem.innerText}}"
37
38
  type="Button"
39
+ is-back
38
40
  has-border
39
41
  icon-start
40
42
  is-back-to-nav>
@@ -51,6 +53,7 @@
51
53
  @click="{{handleBackToCategories}}"
52
54
  label="{{_category.category}}"
53
55
  type="Button"
56
+ is-back
54
57
  has-border
55
58
  icon-start
56
59
  is-back-to-categories>
@@ -68,6 +71,7 @@
68
71
  @keydown="{{handleLeftRightKeys}}"
69
72
  accessible-role="button"
70
73
  type="Button"
74
+ first-level-btn
71
75
  first-level
72
76
  icon-end
73
77
  is-explore
@@ -88,7 +92,8 @@
88
92
  type="Button"
89
93
  has-border
90
94
  icon-end
91
- first-level>
95
+ first-level
96
+ first-level-btn>
92
97
  </udex-masthead-menu-item>
93
98
  {{else}}
94
99
  <udex-masthead-menu-item
@@ -96,6 +101,7 @@
96
101
  url="{{this.href}}"
97
102
  label="{{this.innerText}}"
98
103
  target="{{this.target}}"
104
+ first-level
99
105
  has-border>
100
106
  </udex-masthead-menu-item>
101
107
  {{/if}}
@@ -110,6 +116,7 @@
110
116
  url="{{_clickedItem.href}}"
111
117
  label="{{overviewLinkText}}"
112
118
  @click="{{handleMobileItemEvent}}"
119
+ second-level
113
120
  has-border>
114
121
  </udex-masthead-menu-item>
115
122
  </li>
@@ -125,6 +132,7 @@
125
132
  aria-has-popup="true"
126
133
  type="Button"
127
134
  second-level
135
+ second-level-btn
128
136
  has-border
129
137
  icon-end>
130
138
  </udex-masthead-menu-item>
@@ -136,6 +144,7 @@
136
144
  @click="{{../handleMobileItemEvent}}"
137
145
  url="{{this.url}}"
138
146
  label="{{this.title}}"
147
+ second-level
139
148
  has-border>
140
149
  </udex-masthead-menu-item>
141
150
  </li>
@@ -151,6 +160,7 @@
151
160
  @click="{{../handleMobileCategoryItemEvent}}"
152
161
  url="{{this._category.url}}"
153
162
  label="{{overviewLinkText}}"
163
+ third-level
154
164
  has-border>
155
165
  </udex-masthead-menu-item>
156
166
  </li>
@@ -162,6 +172,7 @@
162
172
  @click="{{../handleMobileCategoryItemEvent}}"
163
173
  label="{{this.title}}"
164
174
  url="{{this.url}}"
175
+ third-level
165
176
  has-border>
166
177
  </udex-masthead-menu-item>
167
178
  </li>