@swisspost/design-system-components 10.0.0-next.66 → 10.0.0-next.68

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 (368) hide show
  1. package/dist/cjs/{breakpoints-B81j4H4_.js → breakpoints-B0Olgvgc.js} +8 -9
  2. package/dist/cjs/{get-focusable-children-SdEe5tt7.js → get-focusable-children-BGVgg7Te.js} +4 -4
  3. package/dist/cjs/{get-root-CUAv4k4C.js → get-root-B1FnQ50K.js} +1 -3
  4. package/dist/cjs/{index-YVR3WTTS.js → index-Du1lKw8D.js} +21 -9
  5. package/dist/cjs/{index-ChzLnSU8.js → index-qCzRmwgB.js} +2 -2
  6. package/dist/cjs/loader.cjs.js +2 -2
  7. package/dist/cjs/{package-Cixsn1Ql.js → package-DB6yM9Rp.js} +1 -1
  8. package/dist/cjs/post-accordion_2.cjs.entry.js +6 -7
  9. package/dist/cjs/post-autocomplete.cjs.entry.js +181 -0
  10. package/dist/cjs/post-avatar.cjs.entry.js +6 -7
  11. package/dist/cjs/post-back-to-top.cjs.entry.js +8 -9
  12. package/dist/cjs/post-banner.cjs.entry.js +5 -6
  13. package/dist/cjs/{post-breadcrumb-item_2.cjs.entry.js → post-breadcrumb-item.cjs.entry.js} +7 -23
  14. package/dist/cjs/post-breadcrumbs.cjs.entry.js +13 -12
  15. package/dist/cjs/{post-closebutton_13.cjs.entry.js → post-closebutton_14.cjs.entry.js} +97 -70
  16. package/dist/cjs/post-collapsible_2.cjs.entry.js +18 -12
  17. package/dist/cjs/post-components.cjs.js +2 -2
  18. package/dist/cjs/post-date-picker.cjs.entry.js +12 -13
  19. package/dist/cjs/post-footer.cjs.entry.js +8 -9
  20. package/dist/cjs/post-linkarea.cjs.entry.js +3 -3
  21. package/dist/cjs/post-listbox-option.cjs.entry.js +26 -0
  22. package/dist/cjs/post-listbox.cjs.entry.js +151 -0
  23. package/dist/cjs/post-login-widget.cjs.entry.js +60 -0
  24. package/dist/cjs/post-number-input.cjs.entry.js +20 -14
  25. package/dist/cjs/post-pagination.cjs.entry.js +10 -11
  26. package/dist/cjs/post-popover-trigger.cjs.entry.js +5 -6
  27. package/dist/cjs/post-popover.cjs.entry.js +7 -8
  28. package/dist/cjs/post-rating.cjs.entry.js +5 -6
  29. package/dist/cjs/post-stepper-item.cjs.entry.js +3 -3
  30. package/dist/cjs/post-stepper.cjs.entry.js +6 -7
  31. package/dist/cjs/post-tab-item.cjs.entry.js +5 -6
  32. package/dist/cjs/post-tab-panel.cjs.entry.js +5 -6
  33. package/dist/cjs/post-tabs.cjs.entry.js +8 -9
  34. package/dist/cjs/post-tooltip-trigger.cjs.entry.js +7 -10
  35. package/dist/cjs/post-tooltip.cjs.entry.js +5 -6
  36. package/dist/collection/animations/collapse.js +10 -3
  37. package/dist/collection/collection-manifest.json +5 -2
  38. package/dist/collection/components/post-accordion/post-accordion.js +2 -2
  39. package/dist/collection/components/post-autocomplete/post-autocomplete.css +1 -0
  40. package/dist/collection/components/post-autocomplete/post-autocomplete.js +271 -0
  41. package/dist/collection/components/post-avatar/post-avatar.js +2 -2
  42. package/dist/collection/components/post-back-to-top/post-back-to-top.js +4 -4
  43. package/dist/collection/components/post-banner/post-banner.js +1 -1
  44. package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +42 -5
  45. package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.js +9 -7
  46. package/dist/collection/components/post-closebutton/post-closebutton.js +1 -1
  47. package/dist/collection/components/post-collapsible/post-collapsible.js +4 -4
  48. package/dist/collection/components/post-collapsible-trigger/post-collapsible-trigger.js +1 -1
  49. package/dist/collection/components/post-date-picker/post-date-picker.css +1 -1
  50. package/dist/collection/components/post-date-picker/post-date-picker.js +9 -9
  51. package/dist/collection/components/post-footer/post-footer.css +1 -1
  52. package/dist/collection/components/post-footer/post-footer.js +3 -3
  53. package/dist/collection/components/post-header/post-header.js +13 -13
  54. package/dist/collection/components/post-icon/post-icon.js +16 -13
  55. package/dist/collection/components/post-language-menu/post-language-menu.css +1 -1
  56. package/dist/collection/components/post-language-menu/post-language-menu.js +1 -1
  57. package/dist/collection/components/post-language-menu-item/post-language-menu-item.css +1 -1
  58. package/dist/collection/components/post-language-menu-item/post-language-menu-item.js +28 -1
  59. package/dist/collection/components/post-linkarea/post-linkarea.js +1 -1
  60. package/dist/collection/components/post-listbox/post-listbox.css +1 -0
  61. package/dist/collection/components/post-listbox/post-listbox.js +293 -0
  62. package/dist/collection/components/post-listbox-option/post-listbox-option.css +1 -0
  63. package/dist/collection/components/post-listbox-option/post-listbox-option.js +109 -0
  64. package/dist/collection/components/post-login-widget/post-login-widget.js +120 -0
  65. package/dist/collection/components/post-logo/post-logo.js +1 -1
  66. package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +1 -1
  67. package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
  68. package/dist/collection/components/post-megadropdown/post-megadropdown.js +5 -5
  69. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.css +1 -1
  70. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +1 -1
  71. package/dist/collection/components/post-menu/post-menu.js +2 -2
  72. package/dist/collection/components/post-menu-item/post-menu-item.js +1 -1
  73. package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +1 -1
  74. package/dist/collection/components/post-number-input/post-number-input.css +4 -1
  75. package/dist/collection/components/post-number-input/post-number-input.js +12 -3
  76. package/dist/collection/components/post-pagination/post-pagination.js +6 -6
  77. package/dist/collection/components/post-popover/post-popover.js +1 -1
  78. package/dist/collection/components/post-popover-trigger/post-popover-trigger.js +1 -1
  79. package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +26 -19
  80. package/dist/collection/components/post-rating/post-rating.js +1 -1
  81. package/dist/collection/components/post-stepper/post-stepper.js +2 -2
  82. package/dist/collection/components/post-stepper-item/post-stepper-item.js +1 -1
  83. package/dist/collection/components/post-tab-item/post-tab-item.js +1 -1
  84. package/dist/collection/components/post-tab-panel/post-tab-panel.js +1 -1
  85. package/dist/collection/components/post-tabs/post-tabs.js +4 -4
  86. package/dist/collection/components/post-togglebutton/post-togglebutton.js +1 -1
  87. package/dist/collection/components/post-tooltip/post-tooltip.js +1 -1
  88. package/dist/collection/components/post-tooltip-trigger/post-tooltip-trigger.js +6 -6
  89. package/dist/collection/utils/attribute-observer.js +1 -2
  90. package/dist/collection/utils/breakpoints.js +8 -8
  91. package/dist/collection/utils/get-focusable-children.js +3 -3
  92. package/dist/collection/utils/get-root.js +1 -2
  93. package/dist/collection/utils/index.js +0 -1
  94. package/dist/collection/utils/is-iso-date.js +1 -1
  95. package/dist/collection/utils/is-motion-reduced.js +3 -2
  96. package/dist/collection/utils/property-checkers/check-date.js +1 -1
  97. package/dist/collection/utils/property-checkers/constants.js +1 -1
  98. package/dist/collection/utils/property-checkers/index.js +1 -2
  99. package/dist/collection/utils/repeat-on-long-press.js +6 -6
  100. package/dist/collection/utils/sass-export.js +1 -1
  101. package/dist/collection/utils/tests/helpers/mock-match-media.js +11 -0
  102. package/dist/collection/utils/tests/helpers/mock-stencil-constants.js +12 -0
  103. package/dist/component-names.json +4 -0
  104. package/dist/components/breakpoints.js +1 -1
  105. package/dist/components/get-focusable-children.js +1 -1
  106. package/dist/components/get-root.js +1 -1
  107. package/dist/components/index.d.ts +8 -2
  108. package/dist/components/index.js +1 -1
  109. package/dist/components/index2.js +1 -0
  110. package/dist/components/package.js +1 -1
  111. package/dist/components/post-accordion-item2.js +1 -1
  112. package/dist/components/post-accordion2.js +1 -1
  113. package/dist/components/post-autocomplete.d.ts +11 -0
  114. package/dist/components/post-autocomplete.js +1 -0
  115. package/dist/components/post-avatar.js +1 -1
  116. package/dist/components/post-back-to-top.js +1 -1
  117. package/dist/components/post-banner.js +1 -1
  118. package/dist/components/post-breadcrumb-item2.js +1 -1
  119. package/dist/components/post-breadcrumbs.js +1 -1
  120. package/dist/components/post-closebutton2.js +1 -1
  121. package/dist/components/post-collapsible-trigger2.js +1 -1
  122. package/dist/components/post-collapsible2.js +1 -1
  123. package/dist/components/post-date-picker.js +1 -1
  124. package/dist/components/post-footer.js +1 -1
  125. package/dist/components/post-header.js +1 -1
  126. package/dist/components/post-icon2.js +1 -1
  127. package/dist/components/post-language-menu-item.js +1 -1
  128. package/dist/components/post-language-menu.js +1 -1
  129. package/dist/components/post-linkarea.js +1 -1
  130. package/dist/components/post-listbox-option.d.ts +11 -0
  131. package/dist/components/post-listbox-option.js +1 -0
  132. package/dist/components/{post-env-test.d.ts → post-listbox.d.ts} +4 -4
  133. package/dist/components/post-listbox.js +1 -0
  134. package/dist/components/post-login-widget.d.ts +11 -0
  135. package/dist/components/post-login-widget.js +1 -0
  136. package/dist/components/post-logo.js +1 -1
  137. package/dist/components/post-mainnavigation.js +1 -1
  138. package/dist/components/post-megadropdown-trigger.js +1 -1
  139. package/dist/components/post-megadropdown.js +1 -1
  140. package/dist/components/post-menu-item2.js +1 -1
  141. package/dist/components/post-menu-trigger2.js +1 -1
  142. package/dist/components/post-menu2.js +1 -1
  143. package/dist/components/post-number-input.js +1 -1
  144. package/dist/components/post-pagination.js +1 -1
  145. package/dist/components/post-popover-trigger.js +1 -1
  146. package/dist/components/post-popover.js +1 -1
  147. package/dist/components/post-popovercontainer2.js +1 -1
  148. package/dist/components/post-rating.js +1 -1
  149. package/dist/components/post-stepper-item.js +1 -1
  150. package/dist/components/post-stepper.js +1 -1
  151. package/dist/components/post-tab-item.js +1 -1
  152. package/dist/components/post-tab-panel.js +1 -1
  153. package/dist/components/post-tabs.js +1 -1
  154. package/dist/components/post-togglebutton2.js +1 -1
  155. package/dist/components/post-tooltip-trigger.js +1 -1
  156. package/dist/components/post-tooltip.js +1 -1
  157. package/dist/components/react/index.js +1 -1
  158. package/dist/components/react/p-08F-DB-d.js +1 -0
  159. package/dist/components/react/p-B2BDAeHI.js +1 -0
  160. package/dist/components/react/p-BADyL6qQ.js +1 -0
  161. package/dist/components/react/p-BFAXoyMM.js +1 -0
  162. package/dist/components/react/p-BOqFllSV.js +1 -0
  163. package/dist/components/react/p-BQ3HlJPr.js +1 -0
  164. package/dist/components/react/p-ByN3t9FX.js +1 -0
  165. package/dist/components/react/{p-CmA91vH_.js → p-CmkOK7QT.js} +1 -1
  166. package/dist/components/react/p-CuiEdxy9.js +1 -0
  167. package/dist/components/react/p-DPFq3I2q.js +1 -0
  168. package/dist/components/react/p-DSw_A3Mh.js +1 -0
  169. package/dist/components/react/p-DsaGKkkf.js +1 -0
  170. package/dist/components/react/p-NDMNbu5d.js +1 -0
  171. package/dist/components/react/p-_AAbD0Gm.js +1 -0
  172. package/dist/components/react/p-aFH1oGSZ.js +1 -0
  173. package/dist/components/react/p-rEK_D60T.js +1 -0
  174. package/dist/components/react/p-wHDwT4JH.js +1 -0
  175. package/dist/components/react/post-accordion-item.js +1 -1
  176. package/dist/components/react/post-accordion.js +1 -1
  177. package/dist/components/react/post-autocomplete.d.ts +11 -0
  178. package/dist/components/react/post-autocomplete.js +1 -0
  179. package/dist/components/react/post-avatar.js +1 -1
  180. package/dist/components/react/post-back-to-top.js +1 -1
  181. package/dist/components/react/post-banner.js +1 -1
  182. package/dist/components/react/post-breadcrumb-item.js +1 -1
  183. package/dist/components/react/post-breadcrumbs.js +1 -1
  184. package/dist/components/react/post-closebutton.js +1 -1
  185. package/dist/components/react/post-collapsible-trigger.js +1 -1
  186. package/dist/components/react/post-collapsible.js +1 -1
  187. package/dist/components/react/post-date-picker.js +1 -1
  188. package/dist/components/react/post-footer.js +1 -1
  189. package/dist/components/react/post-header.js +1 -1
  190. package/dist/components/react/post-icon.js +1 -1
  191. package/dist/components/react/post-language-menu-item.js +1 -1
  192. package/dist/components/react/post-language-menu.js +1 -1
  193. package/dist/components/react/post-linkarea.js +1 -1
  194. package/dist/components/react/post-listbox-option.d.ts +11 -0
  195. package/dist/components/react/post-listbox-option.js +1 -0
  196. package/dist/components/react/{post-env-test.d.ts → post-listbox.d.ts} +4 -4
  197. package/dist/components/react/post-listbox.js +1 -0
  198. package/dist/components/react/post-login-widget.d.ts +11 -0
  199. package/dist/components/react/post-login-widget.js +1 -0
  200. package/dist/components/react/post-logo.js +1 -1
  201. package/dist/components/react/post-mainnavigation.js +1 -1
  202. package/dist/components/react/post-megadropdown-trigger.js +1 -1
  203. package/dist/components/react/post-megadropdown.js +1 -1
  204. package/dist/components/react/post-menu-item.js +1 -1
  205. package/dist/components/react/post-menu-trigger.js +1 -1
  206. package/dist/components/react/post-menu.js +1 -1
  207. package/dist/components/react/post-number-input.js +1 -1
  208. package/dist/components/react/post-pagination.js +1 -1
  209. package/dist/components/react/post-popover-trigger.js +1 -1
  210. package/dist/components/react/post-popover.js +1 -1
  211. package/dist/components/react/post-popovercontainer.js +1 -1
  212. package/dist/components/react/post-rating.js +1 -1
  213. package/dist/components/react/post-stepper-item.js +1 -1
  214. package/dist/components/react/post-stepper.js +1 -1
  215. package/dist/components/react/post-tab-item.js +1 -1
  216. package/dist/components/react/post-tab-panel.js +1 -1
  217. package/dist/components/react/post-tabs.js +1 -1
  218. package/dist/components/react/post-togglebutton.js +1 -1
  219. package/dist/components/react/post-tooltip-trigger.js +1 -1
  220. package/dist/components/react/post-tooltip.js +1 -1
  221. package/dist/docs.json +682 -56
  222. package/dist/esm/{breakpoints-_gmb7vUy.js → breakpoints-BQ3HlJPr.js} +8 -9
  223. package/dist/esm/{get-focusable-children-CFWKPWu9.js → get-focusable-children-DxYnH2ye.js} +4 -4
  224. package/dist/esm/{get-root-CXfAA093.js → get-root-08F-DB-d.js} +1 -3
  225. package/dist/esm/{index-Cj-Lzb7i.js → index-Ci4L1rzN.js} +21 -9
  226. package/dist/esm/{index-CCMeku7U.js → index-D9bU2pIE.js} +3 -3
  227. package/dist/esm/loader.js +3 -3
  228. package/dist/esm/package-NDMNbu5d.js +3 -0
  229. package/dist/esm/post-accordion_2.entry.js +6 -7
  230. package/dist/esm/post-autocomplete.entry.js +179 -0
  231. package/dist/esm/post-avatar.entry.js +6 -7
  232. package/dist/esm/post-back-to-top.entry.js +8 -9
  233. package/dist/esm/post-banner.entry.js +5 -6
  234. package/dist/esm/{post-breadcrumb-item_2.entry.js → post-breadcrumb-item.entry.js} +8 -23
  235. package/dist/esm/post-breadcrumbs.entry.js +13 -12
  236. package/dist/esm/{post-closebutton_13.entry.js → post-closebutton_14.entry.js} +97 -71
  237. package/dist/esm/post-collapsible_2.entry.js +18 -12
  238. package/dist/esm/post-components.js +3 -3
  239. package/dist/esm/post-date-picker.entry.js +12 -13
  240. package/dist/esm/post-footer.entry.js +8 -9
  241. package/dist/esm/post-linkarea.entry.js +3 -3
  242. package/dist/esm/post-listbox-option.entry.js +24 -0
  243. package/dist/esm/post-listbox.entry.js +149 -0
  244. package/dist/esm/post-login-widget.entry.js +58 -0
  245. package/dist/esm/post-number-input.entry.js +20 -14
  246. package/dist/esm/post-pagination.entry.js +10 -11
  247. package/dist/esm/post-popover-trigger.entry.js +5 -6
  248. package/dist/esm/post-popover.entry.js +7 -8
  249. package/dist/esm/post-rating.entry.js +5 -6
  250. package/dist/esm/post-stepper-item.entry.js +3 -3
  251. package/dist/esm/post-stepper.entry.js +6 -7
  252. package/dist/esm/post-tab-item.entry.js +5 -6
  253. package/dist/esm/post-tab-panel.entry.js +5 -6
  254. package/dist/esm/post-tabs.entry.js +8 -9
  255. package/dist/esm/post-tooltip-trigger.entry.js +7 -10
  256. package/dist/esm/post-tooltip.entry.js +5 -6
  257. package/dist/post-components/p-08F-DB-d.js +1 -0
  258. package/dist/post-components/p-1edd4d7c.entry.js +1 -0
  259. package/dist/post-components/p-319959ee.entry.js +1 -0
  260. package/dist/post-components/p-3364b421.entry.js +1 -0
  261. package/dist/post-components/p-38880c61.entry.js +1 -0
  262. package/dist/post-components/p-39b2b086.entry.js +1 -0
  263. package/dist/post-components/p-4ad6993e.entry.js +1 -0
  264. package/dist/post-components/p-4c021d5f.entry.js +1 -0
  265. package/dist/post-components/p-5c66d070.entry.js +1 -0
  266. package/dist/post-components/p-5f86479f.entry.js +1 -0
  267. package/dist/post-components/{p-fe35968d.entry.js → p-602960ff.entry.js} +1 -1
  268. package/dist/post-components/p-631f4bdd.entry.js +1 -0
  269. package/dist/post-components/p-6336ea0b.entry.js +1 -0
  270. package/dist/post-components/p-7ad4e293.entry.js +1 -0
  271. package/dist/post-components/p-82871134.entry.js +1 -0
  272. package/dist/post-components/p-8c91a9d8.entry.js +1 -0
  273. package/dist/post-components/p-9bdb92c0.entry.js +1 -0
  274. package/dist/post-components/p-BQ3HlJPr.js +1 -0
  275. package/dist/post-components/p-Ci4L1rzN.js +2 -0
  276. package/dist/post-components/p-D9bU2pIE.js +1 -0
  277. package/dist/post-components/p-DYYpZAAV.js +1 -0
  278. package/dist/post-components/p-NDMNbu5d.js +1 -0
  279. package/dist/post-components/p-cdc11592.entry.js +1 -0
  280. package/dist/post-components/p-df54677a.entry.js +1 -0
  281. package/dist/post-components/{p-46f30771.entry.js → p-e01ce660.entry.js} +1 -1
  282. package/dist/post-components/p-e331093d.entry.js +1 -0
  283. package/dist/post-components/p-e4fd234d.entry.js +1 -0
  284. package/dist/post-components/p-eb89eecb.entry.js +1 -0
  285. package/dist/post-components/p-ee03eed0.entry.js +1 -0
  286. package/dist/post-components/p-f1813327.entry.js +1 -0
  287. package/dist/post-components/p-f1bff988.entry.js +1 -0
  288. package/dist/post-components/p-f64c6491.entry.js +1 -0
  289. package/dist/post-components/p-fd10d5b9.entry.js +1 -0
  290. package/dist/post-components/post-components.css +6 -1
  291. package/dist/post-components/post-components.esm.js +1 -1
  292. package/dist/types/components/post-autocomplete/post-autocomplete.d.ts +34 -0
  293. package/dist/types/components/post-breadcrumb-item/post-breadcrumb-item.d.ts +8 -0
  294. package/dist/types/components/post-breadcrumbs/post-breadcrumbs.d.ts +8 -5
  295. package/dist/types/components/post-language-menu-item/post-language-menu-item.d.ts +5 -0
  296. package/dist/types/components/post-listbox/post-listbox.d.ts +37 -0
  297. package/dist/types/components/post-listbox-option/post-listbox-option.d.ts +13 -0
  298. package/dist/types/components/post-login-widget/post-login-widget.d.ts +30 -0
  299. package/dist/types/components/post-number-input/post-number-input.d.ts +2 -0
  300. package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +2 -0
  301. package/dist/types/components.d.ts +240 -13
  302. package/dist/types/utils/breakpoints.d.ts +1 -0
  303. package/dist/types/utils/index.d.ts +0 -1
  304. package/dist/types/utils/property-checkers/index.d.ts +1 -2
  305. package/dist/types/utils/tests/helpers/mock-match-media.d.ts +4 -0
  306. package/dist/types/utils/tests/helpers/mock-stencil-constants.d.ts +0 -0
  307. package/hydrate/index.js +699 -1388
  308. package/hydrate/index.mjs +699 -1388
  309. package/package.json +9 -7
  310. package/dist/cjs/environment-BQE9Unf_.js +0 -52
  311. package/dist/cjs/post-env-test.cjs.entry.js +0 -15
  312. package/dist/collection/utils/environment.js +0 -47
  313. package/dist/collection/utils/tests/environment/hydrate-app-helper.js +0 -16
  314. package/dist/collection/utils/tests/environment/post-env-test.js +0 -9
  315. package/dist/components/environment.js +0 -1
  316. package/dist/components/post-env-test.js +0 -1
  317. package/dist/components/react/p-BVGcVycs.js +0 -1
  318. package/dist/components/react/p-Bb0ejJa3.js +0 -1
  319. package/dist/components/react/p-BbnDcq_W.js +0 -1
  320. package/dist/components/react/p-BcBg4WYn.js +0 -1
  321. package/dist/components/react/p-C1CrnSak.js +0 -1
  322. package/dist/components/react/p-C9bJM7_1.js +0 -1
  323. package/dist/components/react/p-CApN7QUn.js +0 -1
  324. package/dist/components/react/p-CGeIHu-8.js +0 -1
  325. package/dist/components/react/p-CVM28gRr.js +0 -1
  326. package/dist/components/react/p-CdMrnWjS.js +0 -1
  327. package/dist/components/react/p-CfXYLM9Y.js +0 -1
  328. package/dist/components/react/p-DH6JtVW9.js +0 -1
  329. package/dist/components/react/p-Dgo_BJCW.js +0 -1
  330. package/dist/components/react/p-Dne0jb7e.js +0 -1
  331. package/dist/components/react/p-FxUVQ4Tx.js +0 -1
  332. package/dist/components/react/p-htxkyM9X.js +0 -1
  333. package/dist/components/react/post-env-test.js +0 -1
  334. package/dist/esm/environment-CEmnRoA6.js +0 -49
  335. package/dist/esm/package-CApN7QUn.js +0 -3
  336. package/dist/esm/post-env-test.entry.js +0 -13
  337. package/dist/post-components/p-054c0046.entry.js +0 -1
  338. package/dist/post-components/p-102b69dd.entry.js +0 -1
  339. package/dist/post-components/p-1221cdd6.entry.js +0 -1
  340. package/dist/post-components/p-14ca5d65.entry.js +0 -1
  341. package/dist/post-components/p-38404768.entry.js +0 -1
  342. package/dist/post-components/p-388ac19f.entry.js +0 -1
  343. package/dist/post-components/p-5088354d.entry.js +0 -1
  344. package/dist/post-components/p-53c3195b.entry.js +0 -1
  345. package/dist/post-components/p-6e79a981.entry.js +0 -1
  346. package/dist/post-components/p-700c3e20.entry.js +0 -1
  347. package/dist/post-components/p-7fc1291f.entry.js +0 -1
  348. package/dist/post-components/p-84905b89.entry.js +0 -1
  349. package/dist/post-components/p-9127ee5c.entry.js +0 -1
  350. package/dist/post-components/p-91fbf90f.entry.js +0 -1
  351. package/dist/post-components/p-9e6b8aae.entry.js +0 -1
  352. package/dist/post-components/p-CApN7QUn.js +0 -1
  353. package/dist/post-components/p-CCMeku7U.js +0 -1
  354. package/dist/post-components/p-CEmnRoA6.js +0 -1
  355. package/dist/post-components/p-Cj-Lzb7i.js +0 -2
  356. package/dist/post-components/p-DI-h_mEL.js +0 -1
  357. package/dist/post-components/p-DppMBmK1.js +0 -1
  358. package/dist/post-components/p-Rr097A6n.js +0 -1
  359. package/dist/post-components/p-b7c02b48.entry.js +0 -1
  360. package/dist/post-components/p-bb2dc205.entry.js +0 -1
  361. package/dist/post-components/p-dd2d35fd.entry.js +0 -1
  362. package/dist/post-components/p-dde0c46e.entry.js +0 -1
  363. package/dist/post-components/p-e4978408.entry.js +0 -1
  364. package/dist/post-components/p-eb4eabe2.entry.js +0 -1
  365. package/dist/post-components/p-ece3d263.entry.js +0 -1
  366. package/dist/types/utils/environment.d.ts +0 -26
  367. package/dist/types/utils/tests/environment/hydrate-app-helper.d.ts +0 -5
  368. package/dist/types/utils/tests/environment/post-env-test.d.ts +0 -3
@@ -1,5 +1,5 @@
1
- import { Host, h } from "@stencil/core";
2
- import { IS_BROWSER, checkEmptyOrType, checkRequiredAndType, checkEmptyOrOneOf } from "../../utils/index";
1
+ import { Host, h, Build } from "@stencil/core";
2
+ import { checkEmptyOrType, checkRequiredAndType, checkEmptyOrOneOf, } from "../../utils/property-checkers/index";
3
3
  import { version } from "../../../../package";
4
4
  import { ANIMATION_KEYS } from "../../types/icon-animations";
5
5
  const CDN_URL = `https://unpkg.com/@swisspost/design-system-icons@${version}/public/post-icons/`;
@@ -45,7 +45,11 @@ export class PostIcon {
45
45
  **/
46
46
  getUrl() {
47
47
  const fileName = `${this.name}.svg`;
48
- if (!IS_BROWSER && !this.base) {
48
+ // Prioritize only data:image URLs
49
+ if (this.url?.startsWith('data:image/')) {
50
+ return this.url;
51
+ }
52
+ if (Build.isServer && !this.base) {
49
53
  return `${CDN_URL}${fileName}`;
50
54
  }
51
55
  if (this.url) {
@@ -53,13 +57,13 @@ export class PostIcon {
53
57
  }
54
58
  const isAbsolute = (url) => /^https?:\/\//.test(url);
55
59
  const normalizeUrl = (url) => (url && !url.endsWith('/') ? `${url}/` : url);
56
- const cleanUrl = (url) => url.replace(/([^:])\/\//g, '$1/');
57
- const currentDomain = IS_BROWSER ? window.location.origin : '';
58
- const baseHref = IS_BROWSER
60
+ const cleanUrl = (url) => url.replaceAll(/([^:])\/\//g, '$1/');
61
+ const currentDomain = Build.isBrowser ? globalThis.location.origin : '';
62
+ const baseHref = Build.isBrowser
59
63
  ? document.querySelector('base[href]')?.getAttribute('href') || ''
60
64
  : '';
61
65
  let metaIconBase = '';
62
- if (IS_BROWSER) {
66
+ if (Build.isBrowser) {
63
67
  const metaTag = document.querySelector('meta[name="design-system-settings"]');
64
68
  metaIconBase = metaTag?.getAttribute('data-post-icon-base') || '';
65
69
  }
@@ -92,14 +96,13 @@ export class PostIcon {
92
96
  }
93
97
  getStyles() {
94
98
  const url = this.getUrl();
95
- return Object.entries({
99
+ return Object.fromEntries(Object.entries({
96
100
  '-webkit-mask-image': `url(${url})`,
97
101
  'mask-image': `url('${url}')`,
98
- 'transform': (this.scale && !isNaN(Number(this.scale)) ? 'scale(' + this.scale + ')' : '') +
99
- (this.rotate && !isNaN(Number(this.rotate)) ? ' rotate(' + this.rotate + 'deg)' : ''),
102
+ 'transform': (this.scale && !Number.isNaN(Number(this.scale)) ? 'scale(' + this.scale + ')' : '') +
103
+ (this.rotate && !Number.isNaN(Number(this.rotate)) ? ' rotate(' + this.rotate + 'deg)' : ''),
100
104
  })
101
- .filter(([_key, value]) => value !== null)
102
- .reduce((styles, [key, value]) => Object.assign(styles, { [key]: value }), {});
105
+ .filter(([_key, value]) => value !== null));
103
106
  }
104
107
  componentDidLoad() {
105
108
  this.validateBase();
@@ -109,7 +112,7 @@ export class PostIcon {
109
112
  this.validateAnimation();
110
113
  }
111
114
  render() {
112
- return (h(Host, { key: '0d39fadb6d179d82a7a951de4173578f9f351673', "data-version": version }, h("span", { key: 'd93a0a1307668e7a563a81037a399ba906d8fbe6', style: this.getStyles() })));
115
+ return (h(Host, { key: 'feefd0a41cd916581e6e9dc256fb96ad2381cbc4', "data-version": version }, h("span", { key: 'd5750e38ea77f811b9174d3139bc3912fcc9890b', style: this.getStyles() })));
113
116
  }
114
117
  static get is() { return "post-icon"; }
115
118
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- :host{display:flex}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.post-language-menu-dropdown-container{display:flex;flex-direction:column}.post-language-menu-trigger{display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;border:unset;font-weight:unset;display:flex;padding:.25rem .625rem;gap:.375rem;font-size:1rem;border-color:var(--post-scheme-color-interactive-button-tertiary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg);text-transform:uppercase;cursor:pointer}.post-language-menu-trigger:hover{text-decoration:none}.post-language-menu-trigger:disabled{border-style:var(--post-core-border-style-dash)}.post-language-menu-trigger{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.post-language-menu-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-menu-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.post-language-menu-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-menu-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-menu-trigger:is(a){color:LinkText;border:unset}.post-language-menu-trigger:is(button){background-color:ButtonFace !important;border:1px solid ButtonBorder !important}.post-language-menu-trigger:not(:disabled,.disabled):is(button):hover{background-color:Highlight !important}.post-language-menu-trigger:not(:disabled,.disabled):is(button):hover>post-icon{color:HighlightText !important}}.post-language-menu-trigger:hover{border-color:var(--post-scheme-color-interactive-button-tertiary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}.post-language-menu-trigger:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active){box-shadow:var(--post-device-elevation-100);border-color:var(--post-scheme-color-interactive-button-primary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-primary-enabled-bg);color:var(--post-scheme-color-interactive-button-primary-enabled-fg)}.post-language-menu-trigger:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active):hover{border-color:var(--post-scheme-color-interactive-button-primary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-primary-hover-bg);color:var(--post-scheme-color-interactive-button-primary-hover-fg)}.post-language-menu-trigger post-icon{transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}.post-language-menu-trigger:is([aria-current],[aria-pressed=true],[aria-expanded=true]) post-icon{transform:rotate(180deg)}post-menu::part(post-menu){padding-block:0}.post-language-menu-list{margin-top:1rem}
1
+ :host{display:flex}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.post-language-menu-dropdown-container{display:flex;flex-direction:column}.post-language-menu-trigger{display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;border:unset;font-weight:unset;display:flex;padding:.25rem .625rem;gap:.375rem;font-size:1rem;border-color:var(--post-scheme-color-interactive-button-tertiary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg);text-transform:uppercase;cursor:pointer}.post-language-menu-trigger:hover{text-decoration:none}.post-language-menu-trigger:disabled{border-style:var(--post-core-border-style-dash)}.post-language-menu-trigger{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.post-language-menu-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-menu-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.post-language-menu-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-menu-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-menu-trigger:is(a){color:LinkText;border:unset}.post-language-menu-trigger:is(button){background-color:ButtonFace !important;border:1px solid ButtonBorder !important}.post-language-menu-trigger:not(:disabled,.disabled):is(button):hover{background-color:Highlight !important}.post-language-menu-trigger:not(:disabled,.disabled):is(button):hover>post-icon{color:HighlightText !important}}.post-language-menu-trigger:hover{border-color:var(--post-scheme-color-interactive-button-tertiary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}.post-language-menu-trigger:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active){box-shadow:var(--post-device-elevation-100);border-color:var(--post-scheme-color-interactive-button-primary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-primary-enabled-bg);color:var(--post-scheme-color-interactive-button-primary-enabled-fg)}.post-language-menu-trigger:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active):hover{border-color:var(--post-scheme-color-interactive-button-primary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-primary-hover-bg);color:var(--post-scheme-color-interactive-button-primary-hover-fg)}.post-language-menu-trigger post-icon{transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}.post-language-menu-trigger:is([aria-current],[aria-pressed=true],[aria-expanded=true]) post-icon{transform:rotate(180deg)}.post-language-menu-list{margin-top:1rem}
@@ -40,7 +40,7 @@ export class PostLanguageMenu {
40
40
  const activeLanguage = this.activeLang &&
41
41
  document.querySelector(`post-language-menu-item[code="${this.activeLang}"]`);
42
42
  return activeLanguage
43
- ? this.textCurrentLanguage.replace(/#name/g, activeLanguage.name)
43
+ ? this.textCurrentLanguage.replaceAll('#name', activeLanguage.name)
44
44
  : undefined;
45
45
  }
46
46
  componentDidLoad() {
@@ -1 +1 @@
1
- post-language-menu-item{display:inline-block}post-language-menu-item button{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item button{background-color:ButtonFace !important}post-language-menu-item button:hover{background-color:Highlight !important}}post-language-menu-item button .visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}post-language-menu-item a{color:var(--post-current-fg);text-decoration:none}post-language-menu-item :is(a,button){cursor:pointer;display:flex;align-items:center;justify-content:center;width:100%;height:100%;text-transform:uppercase}post-language-menu-item :is(a,button){outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}post-language-menu-item :is(a,button):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item :is(a,button):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){post-language-menu-item :is(a,button):is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item :is(a,button):is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}post-language-menu-item:where([variant=list]) :is(a,button){padding-inline:0;width:40px;height:40px;border-radius:2px}post-language-menu-item:where([variant=list]) :is(a,button):hover{color:#504f4b}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item:where([variant=list]) :is(a,button){border:1px solid ButtonBorder;color:ButtonText}}post-language-menu-item:where([variant=list])[active]:not([active=false]) :is(a,button){background-color:#050400 !important;color:#fff;pointer-events:none}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item:where([variant=list])[active]:not([active=false]) :is(a,button){background-color:Highlight !important;color:HighlightText}}post-language-menu-item:where([variant=menu]){min-width:72px}post-language-menu-item:where([variant=menu])[active]:not([active=false]){display:none}post-language-menu-item:where([variant=menu]) :is(a,button){padding-block:13px;padding-inline:16px;box-sizing:border-box;justify-content:flex-start;position:relative;border-radius:0}post-language-menu-item:where([variant=menu]) :is(a,button):hover{color:#fff;background-color:#504f4b}post-language-menu-item:where([variant=menu]):first-child :is(a,button){border-start-start-radius:4px;border-start-end-radius:4px}post-language-menu-item:where([variant=menu]):last-child :is(a,button){border-end-start-radius:4px;border-end-end-radius:4px}
1
+ post-language-menu-item :is(a,button){text-transform:uppercase}post-language-menu-item:where([variant=menu]){min-width:72px}post-language-menu-item:where([variant=list]) button{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item:where([variant=list]) button{background-color:ButtonFace !important}post-language-menu-item:where([variant=list]) button:hover{background-color:Highlight !important}}post-language-menu-item:where([variant=list]) a{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}post-language-menu-item:where([variant=list]) :is(a,button){width:40px;height:40px;border-radius:2px;border-color:var(--post-scheme-color-interactive-button-tertiary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg)}post-language-menu-item:where([variant=list]) :is(a,button):hover{border-color:var(--post-scheme-color-interactive-button-tertiary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item:where([variant=list]) :is(a,button){border:1px solid ButtonBorder;color:ButtonText}}post-language-menu-item[active]:not([active=false]):where([variant=menu]){display:none}post-language-menu-item[active]:not([active=false]):where([variant=list]) :is(a,button){border-color:var(--post-scheme-color-interactive-button-primary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-primary-enabled-bg);color:var(--post-scheme-color-interactive-button-primary-enabled-fg);cursor:default}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item[active]:not([active=false]):where([variant=list]) :is(a,button){background-color:Highlight !important;color:HighlightText}}post-language-menu-item .visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}
@@ -15,12 +15,16 @@ export class PostLanguageMenuItem {
15
15
  validateName() {
16
16
  checkEmptyOrType(this, 'name', 'string');
17
17
  }
18
+ validateDescription() {
19
+ checkEmptyOrType(this, 'description', 'string');
20
+ }
18
21
  validateUrl() {
19
22
  checkEmptyOrUrl(this, 'url');
20
23
  }
21
24
  componentDidLoad() {
22
25
  this.validateCode();
23
26
  this.validateName();
27
+ this.validateDescription();
24
28
  this.validateUrl();
25
29
  if (!this.name && this.isNameRequired()) {
26
30
  throw new Error('The "name" property of the post-language-menu-item component is required when the full language name is not displayed.');
@@ -49,7 +53,8 @@ export class PostLanguageMenuItem {
49
53
  this.emitChange();
50
54
  }
51
55
  };
52
- return (h(Host, { key: '7ecba6c01b556cf630d8f3a4f3b64e97a11e8abb', "data-version": version, role: this.variant === 'list' ? 'listitem' : undefined }, this.url ? (h("a", { "aria-current": this.active ? 'page' : undefined, href: this.url, hrefLang: lang, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, h("slot", null), h("span", { class: "visually-hidden" }, this.name))) : (h("button", { "aria-current": this.active ? 'true' : undefined, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, h("slot", null), h("span", { class: "visually-hidden" }, this.name)))));
56
+ const interactiveElement = this.url ? (h("a", { "aria-current": this.active ? 'page' : undefined, href: this.url, hrefLang: lang, lang: lang, "aria-description": this.description, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, h("slot", null), h("span", { class: "visually-hidden" }, this.name))) : (h("button", { "aria-current": this.active ? 'true' : undefined, lang: lang, "aria-description": this.description, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, h("slot", null), h("span", { class: "visually-hidden" }, this.name)));
57
+ return this.variant === 'list' ? (h(Host, { "data-version": version, role: "listitem" }, interactiveElement)) : (h(Host, { "data-version": version }, h("post-menu-item", null, interactiveElement)));
53
58
  }
54
59
  static get is() { return "post-language-menu-item"; }
55
60
  static get originalStyleUrls() {
@@ -147,6 +152,25 @@ export class PostLanguageMenuItem {
147
152
  "reflect": false,
148
153
  "attribute": "name"
149
154
  },
155
+ "description": {
156
+ "type": "string",
157
+ "mutable": false,
158
+ "complexType": {
159
+ "original": "string",
160
+ "resolved": "string",
161
+ "references": {}
162
+ },
163
+ "required": false,
164
+ "optional": true,
165
+ "docs": {
166
+ "tags": [],
167
+ "text": "A description for the language read by screen-readers for improved accessibility."
168
+ },
169
+ "getter": false,
170
+ "setter": false,
171
+ "reflect": false,
172
+ "attribute": "description"
173
+ },
150
174
  "url": {
151
175
  "type": "string",
152
176
  "mutable": false,
@@ -233,6 +257,9 @@ export class PostLanguageMenuItem {
233
257
  }, {
234
258
  "propName": "name",
235
259
  "methodName": "validateName"
260
+ }, {
261
+ "propName": "description",
262
+ "methodName": "validateDescription"
236
263
  }, {
237
264
  "propName": "url",
238
265
  "methodName": "validateUrl"
@@ -55,7 +55,7 @@ export class PostLinkarea {
55
55
  }
56
56
  }
57
57
  render() {
58
- return (h(Host, { key: 'b79b314635a4cb302d862006d07ab5f059298382', "data-version": version, onClick: (e) => this.dispatchClick(e) }, h("slot", { key: '4e9a1ee60d499f6dd80819e68f6536b3964d3389' })));
58
+ return (h(Host, { key: 'cbf9710bb97cbf8ead6a8e8117f42113133507a8', "data-version": version, onClick: (e) => this.dispatchClick(e) }, h("slot", { key: 'b1d31bd8a3fcf41005814c725f8b2670480da119' })));
59
59
  }
60
60
  static get is() { return "post-linkarea"; }
61
61
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1 @@
1
+ post-popovercontainer{border-radius:4px;overflow:hidden;box-shadow:var(--post-device-elevation-300)}div[role=listbox]{max-height:384px;overflow:auto;display:flex;flex-direction:column}::slotted([slot=blank-slate]){display:block;padding:.75rem;color:#666}
@@ -0,0 +1,293 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
4
+ r = Reflect.decorate(decorators, target, key, desc);
5
+ else
6
+ for (var i = decorators.length - 1; i >= 0; i--)
7
+ if (d = decorators[i])
8
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
9
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
10
+ };
11
+ import { h, Host } from "@stencil/core";
12
+ import { version } from "../../../../package";
13
+ import { EventFrom } from "../../utils/index";
14
+ export class PostListbox {
15
+ constructor() {
16
+ this.highlightedIndex = -1;
17
+ this.visibleOptions = [];
18
+ this.diacriticPattern = /[\u0300-\u036F]/u;
19
+ this.registerOptions = () => {
20
+ this.visibleOptions = this.options;
21
+ };
22
+ this.updateSelection = (value) => {
23
+ this.options.forEach(option => {
24
+ option.selected = option.value === value;
25
+ option.highlighted = false;
26
+ });
27
+ this.highlightedIndex = -1;
28
+ this.filter('');
29
+ };
30
+ this.clearActive = () => {
31
+ this.highlightedIndex = -1;
32
+ this.postOptionActive.emit(null);
33
+ };
34
+ this.normalizeText = (text) => {
35
+ return text.trim().normalize('NFD').replace(this.diacriticPattern, '').toLocaleLowerCase();
36
+ };
37
+ this.resetFilter = () => {
38
+ this.visibleOptions = this.options;
39
+ this.options.forEach(option => {
40
+ option.hidden = false;
41
+ option.highlighted = false;
42
+ });
43
+ };
44
+ }
45
+ get options() {
46
+ return Array.from(this.host.querySelectorAll('post-listbox-option'));
47
+ }
48
+ get inputElement() {
49
+ let autocomplete = this.host.closest('post-autocomplete');
50
+ if (!autocomplete) {
51
+ autocomplete = document.querySelector(`post-autocomplete[listbox="${this.host.id}"]`);
52
+ }
53
+ return autocomplete?.querySelector('input');
54
+ }
55
+ componentWillLoad() {
56
+ this.registerOptions();
57
+ }
58
+ /** Opens the listbox */
59
+ async show() {
60
+ const input = this.inputElement;
61
+ if (input) {
62
+ this.popoverContainer?.show(input);
63
+ this.host.role = 'listbox';
64
+ }
65
+ }
66
+ /** Closes the listbox */
67
+ async hide() {
68
+ this.host.removeAttribute('role');
69
+ this.popoverContainer?.hide();
70
+ }
71
+ /** Uses the internal default filtering mode to filter the list of options.
72
+ * An empty string resets the filter to it's original state. */
73
+ async filter(query) {
74
+ const normalizedQuery = this.normalizeText(query);
75
+ if (normalizedQuery) {
76
+ this.visibleOptions = this.options.filter(option => {
77
+ const normalizedText = this.normalizeText(option.textContent);
78
+ const normalizedValue = this.normalizeText(option.value);
79
+ const isVisible = normalizedValue.includes(normalizedQuery) || normalizedText.includes(normalizedQuery);
80
+ option.hidden = !isVisible;
81
+ return isVisible;
82
+ });
83
+ }
84
+ else {
85
+ this.resetFilter();
86
+ }
87
+ this.clearActive();
88
+ }
89
+ /** Clears the currently selected option */
90
+ async clearSelection() {
91
+ this.updateSelection();
92
+ }
93
+ /** Navigates the listbox options in the specified direction and scrolls the active option into view.*/
94
+ async navigate(direction) {
95
+ if (this.visibleOptions.length === 0)
96
+ return;
97
+ if (this.highlightedIndex >= 0) {
98
+ this.visibleOptions[this.highlightedIndex].highlighted = false;
99
+ }
100
+ switch (direction) {
101
+ case 'first':
102
+ this.highlightedIndex = 0;
103
+ break;
104
+ case 'last':
105
+ this.highlightedIndex = this.visibleOptions.length - 1;
106
+ break;
107
+ case 'up':
108
+ this.highlightedIndex =
109
+ (this.highlightedIndex - 1 + this.visibleOptions.length) % this.visibleOptions.length;
110
+ break;
111
+ case 'down':
112
+ this.highlightedIndex = (this.highlightedIndex + 1) % this.visibleOptions.length;
113
+ break;
114
+ }
115
+ const activeOption = this.visibleOptions[this.highlightedIndex];
116
+ activeOption.scrollIntoView({ behavior: 'smooth', block: 'end' });
117
+ activeOption.highlighted = true;
118
+ this.postOptionActive.emit(activeOption.id);
119
+ }
120
+ /**
121
+ * Selects the currently highlighted option in the listbox and scrolls it into view.
122
+ */
123
+ async selectActive() {
124
+ if (this.highlightedIndex >= 0) {
125
+ const activeOption = this.visibleOptions[this.highlightedIndex];
126
+ this.updateSelection(activeOption.value);
127
+ this.host.dispatchEvent(new CustomEvent('postOptionSelected', { bubbles: true, detail: activeOption.value }));
128
+ }
129
+ }
130
+ optionClicked(event) {
131
+ this.updateSelection(event.detail);
132
+ }
133
+ render() {
134
+ return (h(Host, { key: '3572942d4f05b40bd8b35d959c513b5e534a2ec7', "data-version": version }, h("post-popovercontainer", { key: '1f900e151adf72ba9394783414ba7d71df1be70c', placement: "bottom-start", ref: el => (this.popoverContainer = el) }, this.visibleOptions.length === 0 ? h("slot", { name: "blank-slate" }) : h("slot", null))));
135
+ }
136
+ static get is() { return "post-listbox"; }
137
+ static get encapsulation() { return "shadow"; }
138
+ static get originalStyleUrls() {
139
+ return {
140
+ "$": ["post-listbox.scss"]
141
+ };
142
+ }
143
+ static get styleUrls() {
144
+ return {
145
+ "$": ["post-listbox.css"]
146
+ };
147
+ }
148
+ static get events() {
149
+ return [{
150
+ "method": "postOptionActive",
151
+ "name": "postOptionActive",
152
+ "bubbles": true,
153
+ "cancelable": true,
154
+ "composed": true,
155
+ "docs": {
156
+ "tags": [],
157
+ "text": "Emitted option id for the active option"
158
+ },
159
+ "complexType": {
160
+ "original": "string | null",
161
+ "resolved": "string",
162
+ "references": {}
163
+ }
164
+ }];
165
+ }
166
+ static get methods() {
167
+ return {
168
+ "show": {
169
+ "complexType": {
170
+ "signature": "() => Promise<void>",
171
+ "parameters": [],
172
+ "references": {
173
+ "Promise": {
174
+ "location": "global",
175
+ "id": "global::Promise"
176
+ }
177
+ },
178
+ "return": "Promise<void>"
179
+ },
180
+ "docs": {
181
+ "text": "Opens the listbox",
182
+ "tags": []
183
+ }
184
+ },
185
+ "hide": {
186
+ "complexType": {
187
+ "signature": "() => Promise<void>",
188
+ "parameters": [],
189
+ "references": {
190
+ "Promise": {
191
+ "location": "global",
192
+ "id": "global::Promise"
193
+ }
194
+ },
195
+ "return": "Promise<void>"
196
+ },
197
+ "docs": {
198
+ "text": "Closes the listbox",
199
+ "tags": []
200
+ }
201
+ },
202
+ "filter": {
203
+ "complexType": {
204
+ "signature": "(query: string) => Promise<void>",
205
+ "parameters": [{
206
+ "name": "query",
207
+ "type": "string",
208
+ "docs": ""
209
+ }],
210
+ "references": {
211
+ "Promise": {
212
+ "location": "global",
213
+ "id": "global::Promise"
214
+ }
215
+ },
216
+ "return": "Promise<void>"
217
+ },
218
+ "docs": {
219
+ "text": "Uses the internal default filtering mode to filter the list of options.\nAn empty string resets the filter to it's original state.",
220
+ "tags": []
221
+ }
222
+ },
223
+ "clearSelection": {
224
+ "complexType": {
225
+ "signature": "() => Promise<void>",
226
+ "parameters": [],
227
+ "references": {
228
+ "Promise": {
229
+ "location": "global",
230
+ "id": "global::Promise"
231
+ }
232
+ },
233
+ "return": "Promise<void>"
234
+ },
235
+ "docs": {
236
+ "text": "Clears the currently selected option",
237
+ "tags": []
238
+ }
239
+ },
240
+ "navigate": {
241
+ "complexType": {
242
+ "signature": "(direction: \"up\" | \"down\" | \"first\" | \"last\") => Promise<void>",
243
+ "parameters": [{
244
+ "name": "direction",
245
+ "type": "\"up\" | \"down\" | \"first\" | \"last\"",
246
+ "docs": ""
247
+ }],
248
+ "references": {
249
+ "Promise": {
250
+ "location": "global",
251
+ "id": "global::Promise"
252
+ }
253
+ },
254
+ "return": "Promise<void>"
255
+ },
256
+ "docs": {
257
+ "text": "Navigates the listbox options in the specified direction and scrolls the active option into view.",
258
+ "tags": []
259
+ }
260
+ },
261
+ "selectActive": {
262
+ "complexType": {
263
+ "signature": "() => Promise<void>",
264
+ "parameters": [],
265
+ "references": {
266
+ "Promise": {
267
+ "location": "global",
268
+ "id": "global::Promise"
269
+ }
270
+ },
271
+ "return": "Promise<void>"
272
+ },
273
+ "docs": {
274
+ "text": "Selects the currently highlighted option in the listbox and scrolls it into view.",
275
+ "tags": []
276
+ }
277
+ }
278
+ };
279
+ }
280
+ static get elementRef() { return "host"; }
281
+ static get listeners() {
282
+ return [{
283
+ "name": "postOptionSelected",
284
+ "method": "optionClicked",
285
+ "target": undefined,
286
+ "capture": false,
287
+ "passive": false
288
+ }];
289
+ }
290
+ }
291
+ __decorate([
292
+ EventFrom('post-listbox-option')
293
+ ], PostListbox.prototype, "optionClicked", null);
@@ -0,0 +1 @@
1
+ :host{padding:12px 12px 9px 16px;background-color:#fff;cursor:pointer;user-select:none;display:flex;align-items:center;gap:8px;justify-content:space-between}:host(:hover){background-color:#f0efed}:host([data-active=true]){outline:2px solid #000;outline-offset:-4px}:host([hidden]){display:none}:host(:focus-visible){outline:2px solid #050400;outline-offset:2px}.option-content{display:flex;flex-direction:column;min-width:0}.option-description{display:none;font-size:.85em;color:#666}:host(:not(:empty)) .option-description{display:block}post-icon{width:24px;height:24px}
@@ -0,0 +1,109 @@
1
+ import { h, Host } from "@stencil/core";
2
+ import { version } from "../../../../package";
3
+ export class PostListboxOption {
4
+ constructor() {
5
+ this.optionId = crypto.randomUUID();
6
+ /** Represents option is selected . */
7
+ this.selected = false;
8
+ /** Represents option is highlighted . */
9
+ this.highlighted = false;
10
+ }
11
+ render() {
12
+ return (h(Host, { key: '083077341f74f3d6f7baad7599aef968a9f07582', "data-version": version, role: "option", "aria-selected": `${this.selected}`, "data-active": this.highlighted ? 'true' : null,
13
+ /* Prevent focus change from triggering onblur event in post-autocomplete */
14
+ onPointerDown: (e) => e.preventDefault(), onClick: () => this.postOptionSelected.emit(this.value), id: `post-listbox-option-${this.optionId}` }, h("span", { key: '7d844e51e7f90ea77075f83b663b2b77049f04df', class: "option-content" }, this.value, h("span", { key: 'b7b19312ebaf634292076425725434d18a8a6532', class: "option-description" }, h("slot", { key: '69db5aad7cbe41419398ca32c7ca2b955fbcaefe' }))), this.selected && h("post-icon", { key: '8969fc083fb669a4c5e9d8dbb1c12e1fcde053d5', "aria-hidden": "true", name: "checkmark" })));
15
+ }
16
+ static get is() { return "post-listbox-option"; }
17
+ static get encapsulation() { return "shadow"; }
18
+ static get originalStyleUrls() {
19
+ return {
20
+ "$": ["post-listbox-option.scss"]
21
+ };
22
+ }
23
+ static get styleUrls() {
24
+ return {
25
+ "$": ["post-listbox-option.css"]
26
+ };
27
+ }
28
+ static get properties() {
29
+ return {
30
+ "value": {
31
+ "type": "string",
32
+ "mutable": false,
33
+ "complexType": {
34
+ "original": "string",
35
+ "resolved": "string",
36
+ "references": {}
37
+ },
38
+ "required": true,
39
+ "optional": false,
40
+ "docs": {
41
+ "tags": [],
42
+ "text": "A value string, similar to <option value=\"Value 1\">Value 1 description</option>"
43
+ },
44
+ "getter": false,
45
+ "setter": false,
46
+ "reflect": true,
47
+ "attribute": "value"
48
+ },
49
+ "selected": {
50
+ "type": "boolean",
51
+ "mutable": false,
52
+ "complexType": {
53
+ "original": "boolean",
54
+ "resolved": "boolean",
55
+ "references": {}
56
+ },
57
+ "required": false,
58
+ "optional": false,
59
+ "docs": {
60
+ "tags": [],
61
+ "text": "Represents option is selected ."
62
+ },
63
+ "getter": false,
64
+ "setter": false,
65
+ "reflect": true,
66
+ "attribute": "selected",
67
+ "defaultValue": "false"
68
+ },
69
+ "highlighted": {
70
+ "type": "boolean",
71
+ "mutable": false,
72
+ "complexType": {
73
+ "original": "boolean",
74
+ "resolved": "boolean",
75
+ "references": {}
76
+ },
77
+ "required": false,
78
+ "optional": false,
79
+ "docs": {
80
+ "tags": [],
81
+ "text": "Represents option is highlighted ."
82
+ },
83
+ "getter": false,
84
+ "setter": false,
85
+ "reflect": true,
86
+ "attribute": "highlighted",
87
+ "defaultValue": "false"
88
+ }
89
+ };
90
+ }
91
+ static get events() {
92
+ return [{
93
+ "method": "postOptionSelected",
94
+ "name": "postOptionSelected",
95
+ "bubbles": true,
96
+ "cancelable": true,
97
+ "composed": true,
98
+ "docs": {
99
+ "tags": [],
100
+ "text": "Fires when this option was selected. Bubbles up."
101
+ },
102
+ "complexType": {
103
+ "original": "string",
104
+ "resolved": "string",
105
+ "references": {}
106
+ }
107
+ }];
108
+ }
109
+ }