@swisspost/design-system-components 9.0.0-next.32 → 9.0.0-next.34

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 (347) hide show
  1. package/dist/cjs/{attribute-observer-6d8b886b.js → attribute-observer-c3a805b2.js} +3 -1
  2. package/dist/cjs/{breakpoints-c6247c71.js → breakpoints-cdf1b747.js} +12 -7
  3. package/dist/cjs/event-guard-efabc84f.js +47 -0
  4. package/dist/cjs/get-root-8102fecd.js +17 -0
  5. package/dist/cjs/{index-d6bf2c66.js → index-b60129c4.js} +2 -2
  6. package/dist/cjs/index.cjs.js +25 -25
  7. package/dist/cjs/loader.cjs.js +2 -2
  8. package/dist/cjs/long-press-event-6e62d113.js +266 -0
  9. package/dist/cjs/{package-6f8f430c.js → package-3426e8f7.js} +1 -1
  10. package/dist/cjs/{post-accordion-e3a6d78e.js → post-accordion-3ac8dca8.js} +10 -12
  11. package/dist/cjs/{post-accordion-item-7ed1f630.js → post-accordion-item-aace6bc2.js} +10 -10
  12. package/dist/cjs/post-accordion-item.cjs.entry.js +5 -3
  13. package/dist/cjs/post-accordion.cjs.entry.js +5 -3
  14. package/dist/cjs/{post-avatar-de8ec197.js → post-avatar-53abd22f.js} +5 -4
  15. package/dist/cjs/post-avatar.cjs.entry.js +4 -3
  16. package/dist/cjs/post-back-to-top-b231fc1c.js +96 -0
  17. package/dist/cjs/post-back-to-top.cjs.entry.js +4 -3
  18. package/dist/cjs/{post-banner-bf523706.js → post-banner-e6d14bf1.js} +4 -8
  19. package/dist/cjs/post-banner.cjs.entry.js +4 -3
  20. package/dist/cjs/{post-breadcrumb-da55143a.js → post-breadcrumb-a929f2a6.js} +30 -22
  21. package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +4 -3
  22. package/dist/cjs/post-breadcrumb.cjs.entry.js +4 -4
  23. package/dist/cjs/{post-card-control-0bcd7d16.js → post-card-control-cbee7b86.js} +26 -40
  24. package/dist/cjs/post-card-control.cjs.entry.js +4 -3
  25. package/dist/cjs/post-closebutton_15.cjs.entry.js +6 -5
  26. package/dist/cjs/{post-collapsible-trigger-a5e4451d.js → post-collapsible-trigger-d1cb592a.js} +39 -46
  27. package/dist/cjs/post-collapsible_2.cjs.entry.js +6 -5
  28. package/dist/cjs/post-components.cjs.js +2 -2
  29. package/dist/cjs/{post-footer-b15fee73.js → post-footer-4290dafc.js} +11 -11
  30. package/dist/cjs/post-footer.cjs.entry.js +4 -4
  31. package/dist/cjs/{post-linkarea-8c85bf5e.js → post-linkarea-f22f4f92.js} +5 -5
  32. package/dist/cjs/post-linkarea.cjs.entry.js +3 -3
  33. package/dist/cjs/{post-menu-item-509877cd.js → post-menu-item-afabaa61.js} +4 -4
  34. package/dist/cjs/{post-popover-1213aa19.js → post-popover-a4c72d38.js} +16 -14
  35. package/dist/cjs/post-popover.cjs.entry.js +5 -4
  36. package/dist/cjs/{post-rating-e1f8a668.js → post-rating-b87616fc.js} +4 -14
  37. package/dist/cjs/post-rating.cjs.entry.js +3 -3
  38. package/dist/cjs/{post-tab-header-889a6c64.js → post-tab-header-45cb6bb4.js} +5 -4
  39. package/dist/cjs/post-tab-header.cjs.entry.js +4 -3
  40. package/dist/cjs/{post-tab-panel-300f39a9.js → post-tab-panel-00d16ba7.js} +4 -4
  41. package/dist/cjs/post-tab-panel.cjs.entry.js +3 -3
  42. package/dist/cjs/{post-tabs-dc281228.js → post-tabs-2c3a89d0.js} +5 -12
  43. package/dist/cjs/post-tabs.cjs.entry.js +4 -3
  44. package/dist/cjs/{post-tag-fd9e586f.js → post-tag-370a2f4d.js} +3 -3
  45. package/dist/cjs/post-tag.cjs.entry.js +3 -3
  46. package/dist/cjs/{post-togglebutton-ad6ae1e4.js → post-togglebutton-2c9552e3.js} +969 -471
  47. package/dist/cjs/{post-tooltip-52d690e4.js → post-tooltip-4d4d2ea9.js} +39 -296
  48. package/dist/cjs/post-tooltip.cjs.entry.js +5 -4
  49. package/dist/collection/animations/collapse.js +3 -1
  50. package/dist/collection/components/post-accordion/post-accordion.js +6 -10
  51. package/dist/collection/components/post-accordion-item/post-accordion-item.js +6 -8
  52. package/dist/collection/components/post-avatar/post-avatar.js +3 -4
  53. package/dist/collection/components/post-back-to-top/post-back-to-top.css +1 -1
  54. package/dist/collection/components/post-back-to-top/post-back-to-top.js +37 -19
  55. package/dist/collection/components/post-banner/post-banner.js +0 -6
  56. package/dist/collection/components/post-breadcrumb/post-breadcrumb.js +16 -19
  57. package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +0 -2
  58. package/dist/collection/components/post-card-control/post-card-control.js +24 -40
  59. package/dist/collection/components/post-closebutton/post-closebutton.css +1 -0
  60. package/dist/collection/components/post-closebutton/post-closebutton.js +12 -2
  61. package/dist/collection/components/post-collapsible/post-collapsible.js +4 -10
  62. package/dist/collection/components/post-collapsible-trigger/post-collapsible-trigger.js +29 -32
  63. package/dist/collection/components/post-footer/post-footer.js +8 -9
  64. package/dist/collection/components/post-header/post-header.css +1 -1
  65. package/dist/collection/components/post-header/post-header.js +16 -19
  66. package/dist/collection/components/post-icon/post-icon.js +5 -7
  67. package/dist/collection/components/post-language-option/post-language-option.js +1 -10
  68. package/dist/collection/components/post-language-switch/post-language-switch.css +1 -1
  69. package/dist/collection/components/post-language-switch/post-language-switch.js +25 -31
  70. package/dist/collection/components/post-linkarea/post-linkarea.css +1 -1
  71. package/dist/collection/components/post-linkarea/post-linkarea.js +2 -2
  72. package/dist/collection/components/post-list/post-list.js +1 -3
  73. package/dist/collection/components/post-list-item/post-list-item.js +1 -2
  74. package/dist/collection/components/post-logo/post-logo.js +1 -2
  75. package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
  76. package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +98 -182
  77. package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
  78. package/dist/collection/components/post-megadropdown/post-megadropdown.js +20 -30
  79. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +42 -36
  80. package/dist/collection/components/post-menu/post-menu.js +51 -52
  81. package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +13 -15
  82. package/dist/collection/components/post-popover/post-popover.js +12 -12
  83. package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +30 -33
  84. package/dist/collection/components/post-rating/post-rating.js +1 -12
  85. package/dist/collection/components/post-tab-header/post-tab-header.js +2 -3
  86. package/dist/collection/components/post-tab-panel/post-tab-panel.js +2 -3
  87. package/dist/collection/components/post-tabs/post-tabs.js +1 -10
  88. package/dist/collection/components/post-tag/post-tag.js +0 -1
  89. package/dist/collection/components/post-togglebutton/post-togglebutton.js +10 -11
  90. package/dist/collection/components/post-tooltip/post-tooltip.js +36 -32
  91. package/dist/collection/utils/attribute-observer.js +2 -1
  92. package/dist/collection/utils/breakpoints.js +9 -7
  93. package/dist/collection/utils/environment.js +2 -0
  94. package/dist/collection/utils/event-guard.js +43 -0
  95. package/dist/collection/utils/get-root.js +6 -1
  96. package/dist/collection/utils/index.js +5 -0
  97. package/dist/collection/utils/is-motion-reduced.js +2 -1
  98. package/dist/components/attribute-observer.js +3 -1
  99. package/dist/components/breakpoints.js +12 -8
  100. package/dist/components/event-guard.js +45 -0
  101. package/dist/components/get-root.js +7 -1
  102. package/dist/components/long-press-event.js +264 -0
  103. package/dist/components/package.js +1 -1
  104. package/dist/components/post-accordion-item2.js +8 -8
  105. package/dist/components/post-accordion2.js +8 -10
  106. package/dist/components/post-avatar2.js +4 -3
  107. package/dist/components/post-back-to-top2.js +40 -20
  108. package/dist/components/post-banner2.js +2 -6
  109. package/dist/components/post-breadcrumb-item2.js +2 -2
  110. package/dist/components/post-breadcrumb2.js +28 -20
  111. package/dist/components/post-card-control2.js +25 -39
  112. package/dist/components/post-closebutton2.js +8 -3
  113. package/dist/components/post-collapsible-trigger2.js +33 -35
  114. package/dist/components/post-collapsible2.js +9 -12
  115. package/dist/components/post-footer2.js +8 -8
  116. package/dist/components/post-header2.js +18 -20
  117. package/dist/components/post-icon2.js +6 -6
  118. package/dist/components/post-language-option2.js +3 -10
  119. package/dist/components/post-language-switch2.js +28 -31
  120. package/dist/components/post-linkarea2.js +5 -4
  121. package/dist/components/post-list-item2.js +2 -2
  122. package/dist/components/post-list2.js +2 -3
  123. package/dist/components/post-logo2.js +3 -2
  124. package/dist/components/post-mainnavigation2.js +94 -182
  125. package/dist/components/post-megadropdown-trigger2.js +44 -36
  126. package/dist/components/post-megadropdown2.js +22 -31
  127. package/dist/components/post-menu-trigger2.js +15 -15
  128. package/dist/components/post-menu2.js +53 -52
  129. package/dist/components/post-popover2.js +14 -12
  130. package/dist/components/post-popovercontainer2.js +638 -36
  131. package/dist/components/post-rating2.js +2 -12
  132. package/dist/components/post-tab-header2.js +4 -3
  133. package/dist/components/post-tab-panel2.js +3 -3
  134. package/dist/components/post-tabs2.js +3 -10
  135. package/dist/components/post-tag2.js +1 -1
  136. package/dist/components/post-togglebutton2.js +12 -11
  137. package/dist/components/post-tooltip2.js +37 -294
  138. package/dist/docs.json +21 -15
  139. package/dist/esm/{attribute-observer-2f203993.js → attribute-observer-009deee5.js} +3 -1
  140. package/dist/esm/{breakpoints-bbe0c54e.js → breakpoints-7812702e.js} +12 -8
  141. package/dist/esm/event-guard-538ee077.js +45 -0
  142. package/dist/esm/get-root-1b1af46f.js +15 -0
  143. package/dist/esm/{index-3419e46d.js → index-f4d19816.js} +2 -2
  144. package/dist/esm/index.js +25 -25
  145. package/dist/esm/loader.js +3 -3
  146. package/dist/esm/long-press-event-04d24397.js +264 -0
  147. package/dist/esm/package-8986a24c.js +3 -0
  148. package/dist/esm/{post-accordion-7b6fb9c3.js → post-accordion-577b52a0.js} +10 -12
  149. package/dist/esm/{post-accordion-item-d40c0b26.js → post-accordion-item-99053b41.js} +10 -10
  150. package/dist/esm/post-accordion-item.entry.js +5 -3
  151. package/dist/esm/post-accordion.entry.js +5 -3
  152. package/dist/esm/{post-avatar-04ca6e3e.js → post-avatar-2914706c.js} +5 -4
  153. package/dist/esm/post-avatar.entry.js +4 -3
  154. package/dist/esm/post-back-to-top-4c7b1b47.js +94 -0
  155. package/dist/esm/post-back-to-top.entry.js +4 -3
  156. package/dist/esm/{post-banner-7c37e3ef.js → post-banner-295fd0f5.js} +4 -8
  157. package/dist/esm/post-banner.entry.js +4 -3
  158. package/dist/esm/{post-breadcrumb-59e4d655.js → post-breadcrumb-1abfb312.js} +30 -22
  159. package/dist/esm/post-breadcrumb-item_2.entry.js +4 -3
  160. package/dist/esm/post-breadcrumb.entry.js +4 -4
  161. package/dist/esm/{post-card-control-5471488b.js → post-card-control-ad72d4f8.js} +26 -40
  162. package/dist/esm/post-card-control.entry.js +4 -3
  163. package/dist/esm/post-closebutton_15.entry.js +6 -5
  164. package/dist/esm/{post-collapsible-trigger-1f6d816e.js → post-collapsible-trigger-6b4ece20.js} +39 -46
  165. package/dist/esm/post-collapsible_2.entry.js +6 -5
  166. package/dist/esm/post-components.js +3 -3
  167. package/dist/esm/{post-footer-d30f4dc8.js → post-footer-a5105e66.js} +11 -11
  168. package/dist/esm/post-footer.entry.js +4 -4
  169. package/dist/esm/{post-linkarea-8e1a561e.js → post-linkarea-22f97a88.js} +5 -5
  170. package/dist/esm/post-linkarea.entry.js +3 -3
  171. package/dist/esm/{post-menu-item-0c8477eb.js → post-menu-item-9465a1f3.js} +4 -4
  172. package/dist/esm/{post-popover-c43969ca.js → post-popover-e9b4569c.js} +16 -14
  173. package/dist/esm/post-popover.entry.js +5 -4
  174. package/dist/esm/{post-rating-94148df7.js → post-rating-ae16e3c9.js} +4 -14
  175. package/dist/esm/post-rating.entry.js +3 -3
  176. package/dist/esm/{post-tab-header-82df0ba9.js → post-tab-header-11f23150.js} +5 -4
  177. package/dist/esm/post-tab-header.entry.js +4 -3
  178. package/dist/esm/{post-tab-panel-a6512f53.js → post-tab-panel-0f3a952e.js} +4 -4
  179. package/dist/esm/post-tab-panel.entry.js +3 -3
  180. package/dist/esm/{post-tabs-d26ce341.js → post-tabs-1192509c.js} +5 -12
  181. package/dist/esm/post-tabs.entry.js +4 -3
  182. package/dist/esm/{post-tag-41d1667e.js → post-tag-8be0a71c.js} +3 -3
  183. package/dist/esm/post-tag.entry.js +3 -3
  184. package/dist/esm/{post-togglebutton-4f94bddb.js → post-togglebutton-b634fc7c.js} +969 -471
  185. package/dist/esm/{post-tooltip-20f916db.js → post-tooltip-f64bd0cc.js} +39 -296
  186. package/dist/esm/post-tooltip.entry.js +5 -4
  187. package/dist/post-components/index.esm.js +1 -1
  188. package/dist/post-components/p-0889c759.js +1 -0
  189. package/dist/post-components/p-0f398677.js +1 -0
  190. package/dist/post-components/p-1038fc25.js +1 -0
  191. package/dist/post-components/p-30f94eca.entry.js +1 -0
  192. package/dist/post-components/p-31bb6dc5.entry.js +1 -0
  193. package/dist/post-components/p-32173742.js +1 -0
  194. package/dist/post-components/p-338a2507.js +1 -0
  195. package/dist/post-components/p-36540dd6.entry.js +1 -0
  196. package/dist/post-components/p-3aa766a6.js +1 -0
  197. package/dist/post-components/p-3b0158b3.js +1 -0
  198. package/dist/post-components/p-40db8cd5.js +1 -0
  199. package/dist/post-components/p-44f13ce4.entry.js +1 -0
  200. package/dist/post-components/p-46a9324f.entry.js +1 -0
  201. package/dist/post-components/p-49c5aa99.js +1 -0
  202. package/dist/post-components/p-4cd4a936.entry.js +1 -0
  203. package/dist/post-components/p-548ef2f5.entry.js +1 -0
  204. package/dist/post-components/p-58f453dd.js +1 -0
  205. package/dist/post-components/p-5f54b77f.js +1 -0
  206. package/dist/post-components/p-60bb7f26.js +1 -0
  207. package/dist/post-components/p-60bfa4be.entry.js +1 -0
  208. package/dist/post-components/p-6b31a76a.js +1 -0
  209. package/dist/post-components/p-6ee81c5d.js +1 -0
  210. package/dist/post-components/p-6faad212.entry.js +1 -0
  211. package/dist/post-components/p-722ffaae.js +1 -0
  212. package/dist/post-components/p-74a0b44c.entry.js +1 -0
  213. package/dist/post-components/{p-28e77ad3.js → p-78b4c699.js} +1 -1
  214. package/dist/post-components/p-7aa0468b.entry.js +1 -0
  215. package/dist/post-components/p-7afc495e.entry.js +1 -0
  216. package/dist/post-components/p-8db32dab.js +8 -0
  217. package/dist/post-components/p-96034ba4.entry.js +1 -0
  218. package/dist/post-components/p-9aaf9f54.js +1 -0
  219. package/dist/post-components/{p-5c758f41.js → p-9e461613.js} +1 -1
  220. package/dist/post-components/p-ab4073be.js +1 -0
  221. package/dist/post-components/p-abd7eb91.js +8 -0
  222. package/dist/post-components/p-afb8a487.entry.js +1 -0
  223. package/dist/post-components/p-b003b381.js +1 -0
  224. package/dist/post-components/p-b97dea1e.entry.js +1 -0
  225. package/dist/post-components/p-be37cf2a.js +1 -0
  226. package/dist/post-components/p-c31b56ed.js +1 -0
  227. package/dist/post-components/p-ccbb51fe.js +1 -0
  228. package/dist/post-components/p-d3900385.entry.js +1 -0
  229. package/dist/post-components/p-ef49153c.entry.js +1 -0
  230. package/dist/post-components/p-f27e5691.js +1 -0
  231. package/dist/post-components/p-f553019f.entry.js +1 -0
  232. package/dist/post-components/p-ffc1db17.entry.js +1 -0
  233. package/dist/post-components/post-components.esm.js +1 -1
  234. package/dist/types/components/post-avatar/post-avatar.d.ts +1 -1
  235. package/dist/types/components/post-back-to-top/post-back-to-top.d.ts +3 -1
  236. package/dist/types/components/post-card-control/post-card-control.d.ts +1 -1
  237. package/dist/types/components/post-collapsible-trigger/post-collapsible-trigger.d.ts +9 -14
  238. package/dist/types/components/post-footer/post-footer.d.ts +2 -2
  239. package/dist/types/components/post-header/post-header.d.ts +1 -0
  240. package/dist/types/components/post-icon/post-icon.d.ts +0 -1
  241. package/dist/types/components/post-language-switch/post-language-switch.d.ts +5 -5
  242. package/dist/types/components/post-mainnavigation/post-mainnavigation.d.ts +14 -39
  243. package/dist/types/components/post-megadropdown-trigger/post-megadropdown-trigger.d.ts +2 -0
  244. package/dist/types/components/post-menu/post-menu.d.ts +1 -0
  245. package/dist/types/components/post-menu-trigger/post-menu-trigger.d.ts +1 -1
  246. package/dist/types/components/post-popover/post-popover.d.ts +3 -1
  247. package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +1 -1
  248. package/dist/types/components/post-tooltip/post-tooltip.d.ts +6 -1
  249. package/dist/types/components.d.ts +4 -4
  250. package/dist/types/popover-fn.d.ts +11 -0
  251. package/dist/types/utils/environment.d.ts +2 -0
  252. package/dist/types/utils/event-guard.d.ts +4 -0
  253. package/dist/types/utils/get-root.d.ts +4 -0
  254. package/dist/types/utils/index.d.ts +5 -0
  255. package/loaders/attribute-observer.js +3 -1
  256. package/loaders/breakpoints.js +12 -8
  257. package/loaders/event-guard.js +45 -0
  258. package/loaders/get-root.js +7 -1
  259. package/loaders/index.js +3 -3
  260. package/loaders/long-press-event.js +264 -0
  261. package/loaders/package.js +1 -1
  262. package/loaders/post-accordion-item2.js +8 -8
  263. package/loaders/post-accordion.js +8 -10
  264. package/loaders/post-avatar.js +4 -3
  265. package/loaders/post-back-to-top.js +40 -20
  266. package/loaders/post-banner.js +2 -6
  267. package/loaders/post-breadcrumb-item2.js +2 -2
  268. package/loaders/post-breadcrumb.js +28 -20
  269. package/loaders/post-card-control.js +25 -39
  270. package/loaders/post-closebutton.js +8 -3
  271. package/loaders/post-collapsible-trigger2.js +33 -35
  272. package/loaders/post-collapsible2.js +9 -12
  273. package/loaders/post-footer.js +8 -8
  274. package/loaders/post-header.js +18 -20
  275. package/loaders/post-icon2.js +6 -6
  276. package/loaders/post-language-option.js +3 -10
  277. package/loaders/post-language-switch.js +28 -31
  278. package/loaders/post-linkarea.js +5 -4
  279. package/loaders/post-list-item.js +2 -2
  280. package/loaders/post-list.js +2 -3
  281. package/loaders/post-logo.js +3 -2
  282. package/loaders/post-mainnavigation.js +94 -182
  283. package/loaders/post-megadropdown-trigger.js +44 -36
  284. package/loaders/post-megadropdown.js +22 -31
  285. package/loaders/post-menu-trigger2.js +15 -15
  286. package/loaders/post-menu2.js +53 -52
  287. package/loaders/post-popover.js +14 -12
  288. package/loaders/post-popovercontainer2.js +638 -36
  289. package/loaders/post-rating.js +2 -12
  290. package/loaders/post-tab-header.js +4 -3
  291. package/loaders/post-tab-panel.js +3 -3
  292. package/loaders/post-tabs.js +3 -10
  293. package/loaders/post-tag.js +1 -1
  294. package/loaders/post-togglebutton.js +12 -11
  295. package/loaders/post-tooltip.js +37 -294
  296. package/package.json +5 -5
  297. package/dist/cjs/debounce-158fd76f.js +0 -13
  298. package/dist/cjs/get-root-7a3498ef.js +0 -11
  299. package/dist/cjs/post-back-to-top-6a1c1ba4.js +0 -76
  300. package/dist/components/debounce.js +0 -11
  301. package/dist/esm/debounce-e54c7131.js +0 -11
  302. package/dist/esm/get-root-7af2e0d1.js +0 -9
  303. package/dist/esm/package-70367d05.js +0 -3
  304. package/dist/esm/post-back-to-top-abe253c1.js +0 -74
  305. package/dist/post-components/p-015361b5.entry.js +0 -1
  306. package/dist/post-components/p-077edb8c.js +0 -1
  307. package/dist/post-components/p-08a13d05.js +0 -1
  308. package/dist/post-components/p-08c3b919.entry.js +0 -1
  309. package/dist/post-components/p-0d7b0c2e.entry.js +0 -1
  310. package/dist/post-components/p-12f9a91e.entry.js +0 -1
  311. package/dist/post-components/p-20137c6a.entry.js +0 -1
  312. package/dist/post-components/p-21254d9c.entry.js +0 -1
  313. package/dist/post-components/p-22513a27.entry.js +0 -1
  314. package/dist/post-components/p-3638e50d.js +0 -1
  315. package/dist/post-components/p-4397f28e.js +0 -1
  316. package/dist/post-components/p-494a2a31.js +0 -1
  317. package/dist/post-components/p-509987da.entry.js +0 -1
  318. package/dist/post-components/p-5aeb3656.js +0 -1
  319. package/dist/post-components/p-5d0bb74d.js +0 -1
  320. package/dist/post-components/p-5e0f6c12.js +0 -1
  321. package/dist/post-components/p-5f89f4e8.entry.js +0 -1
  322. package/dist/post-components/p-6213f0dc.entry.js +0 -1
  323. package/dist/post-components/p-6ad7bf0f.js +0 -1
  324. package/dist/post-components/p-6f058a98.js +0 -1
  325. package/dist/post-components/p-737d76cb.js +0 -15
  326. package/dist/post-components/p-753a1935.js +0 -1
  327. package/dist/post-components/p-88a2cdaa.js +0 -1
  328. package/dist/post-components/p-90935fdd.js +0 -1
  329. package/dist/post-components/p-931c4523.js +0 -1
  330. package/dist/post-components/p-9748a355.js +0 -1
  331. package/dist/post-components/p-97865e22.entry.js +0 -1
  332. package/dist/post-components/p-a200c9c7.js +0 -1
  333. package/dist/post-components/p-a35c235a.entry.js +0 -1
  334. package/dist/post-components/p-a4264a61.entry.js +0 -1
  335. package/dist/post-components/p-a54c63d0.entry.js +0 -1
  336. package/dist/post-components/p-aebe402d.entry.js +0 -1
  337. package/dist/post-components/p-b43e79e3.entry.js +0 -1
  338. package/dist/post-components/p-c0c71e37.js +0 -1
  339. package/dist/post-components/p-c0ca344d.js +0 -1
  340. package/dist/post-components/p-c554fcf3.js +0 -1
  341. package/dist/post-components/p-cff7c06f.entry.js +0 -1
  342. package/dist/post-components/p-d1f70a05.entry.js +0 -1
  343. package/dist/post-components/p-dc67e6de.entry.js +0 -1
  344. package/dist/post-components/p-e1baac59.js +0 -1
  345. package/dist/post-components/p-f1ceccf3.js +0 -1
  346. package/dist/post-components/p-fc91cbc2.js +0 -1
  347. package/loaders/debounce.js +0 -11
@@ -2,30 +2,57 @@ import { h, Host, } from "@stencil/core";
2
2
  import { version } from "../../../../package";
3
3
  import { getFocusableChildren } from "../../utils/get-focusable-children";
4
4
  import { getRoot } from "../../utils/index";
5
+ import { eventGuard } from "../../utils/event-gua";
5
6
  export class PostMenu {
6
7
  constructor() {
8
+ this.lastFocusedElement = null;
9
+ this.KEYCODES = {
10
+ SPACE: ' ',
11
+ ENTER: 'Enter',
12
+ UP: 'ArrowUp',
13
+ DOWN: 'ArrowDown',
14
+ TAB: 'Tab',
15
+ HOME: 'Home',
16
+ END: 'End',
17
+ ESCAPE: 'Escape',
18
+ };
19
+ this.handleKeyDown = (e) => {
20
+ e.stopPropagation();
21
+ if (e.key === this.KEYCODES.ESCAPE) {
22
+ this.toggle(this.host);
23
+ return;
24
+ }
25
+ if (Object.values(this.KEYCODES).includes(e.key)) {
26
+ this.controlKeyDownHandler(e);
27
+ }
28
+ };
29
+ this.handlePostToggle = (event) => {
30
+ eventGuard(this.host, event, { targetLocalName: 'post-popovercontainer', delegatorSelector: 'post-menu' }, () => {
31
+ this.isVisible = event.detail;
32
+ this.toggleMenu.emit(this.isVisible);
33
+ requestAnimationFrame(() => {
34
+ if (this.isVisible) {
35
+ this.lastFocusedElement = this.root?.activeElement;
36
+ const menuItems = this.getSlottedItems();
37
+ if (menuItems.length > 0) {
38
+ menuItems[0].focus();
39
+ }
40
+ }
41
+ else if (this.lastFocusedElement) {
42
+ this.lastFocusedElement.focus();
43
+ }
44
+ });
45
+ });
46
+ };
47
+ this.handleClick = (e) => {
48
+ const target = e.target;
49
+ if (['BUTTON', 'A', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {
50
+ this.toggle(this.host);
51
+ }
52
+ };
7
53
  this.placement = 'bottom';
8
54
  this.isVisible = false;
9
55
  }
10
- popoverRef;
11
- lastFocusedElement = null;
12
- KEYCODES = {
13
- SPACE: ' ',
14
- ENTER: 'Enter',
15
- UP: 'ArrowUp',
16
- DOWN: 'ArrowDown',
17
- TAB: 'Tab',
18
- HOME: 'Home',
19
- END: 'End',
20
- ESCAPE: 'Escape',
21
- };
22
- host;
23
- /**
24
- * Emits when the menu is shown or hidden.
25
- * The event payload is a boolean: `true` when the menu was opened, `false` when it was closed.
26
- **/
27
- toggleMenu;
28
- root;
29
56
  connectedCallback() {
30
57
  this.root = getRoot(this.host);
31
58
  this.host.addEventListener('keydown', this.handleKeyDown);
@@ -34,24 +61,12 @@ export class PostMenu {
34
61
  disconnectedCallback() {
35
62
  this.host.removeEventListener('keydown', this.handleKeyDown);
36
63
  this.host.removeEventListener('click', this.handleClick);
64
+ this.popoverRef?.removeEventListener('postToggle', this.handlePostToggle);
37
65
  }
38
66
  componentDidLoad() {
39
- this.popoverRef.addEventListener('postToggle', (event) => {
40
- this.isVisible = event.detail;
41
- this.toggleMenu.emit(this.isVisible);
42
- requestAnimationFrame(() => {
43
- if (this.isVisible) {
44
- this.lastFocusedElement = this.root.activeElement;
45
- const menuItems = this.getSlottedItems();
46
- if (menuItems.length > 0) {
47
- menuItems[0].focus();
48
- }
49
- }
50
- else if (this.lastFocusedElement) {
51
- this.lastFocusedElement.focus();
52
- }
53
- });
54
- });
67
+ if (this.popoverRef) {
68
+ this.popoverRef.addEventListener('postToggle', this.handlePostToggle);
69
+ }
55
70
  }
56
71
  /**
57
72
  * Toggles the menu visibility based on its current state.
@@ -88,22 +103,6 @@ export class PostMenu {
88
103
  console.error('hide: popoverRef is null or undefined');
89
104
  }
90
105
  }
91
- handleKeyDown = (e) => {
92
- e.stopPropagation();
93
- if (e.key === this.KEYCODES.ESCAPE) {
94
- this.toggle(this.host);
95
- return;
96
- }
97
- if (Object.values(this.KEYCODES).includes(e.key)) {
98
- this.controlKeyDownHandler(e);
99
- }
100
- };
101
- handleClick = (e) => {
102
- const target = e.target;
103
- if (['BUTTON', 'A', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {
104
- this.toggle(this.host);
105
- }
106
- };
107
106
  controlKeyDownHandler(e) {
108
107
  const menuItems = this.getSlottedItems();
109
108
  if (!menuItems.length) {
@@ -152,7 +151,7 @@ export class PostMenu {
152
151
  .flatMap(el => Array.from(getFocusableChildren(el))));
153
152
  }
154
153
  render() {
155
- return (h(Host, { key: 'bbf51586a2b534d8784124547afb4e3a1b5c8dc8', "data-version": version, role: "menu" }, h("post-popovercontainer", { key: 'd54ac2a016ca74fc9fe8a34cdde5ac42786cde9e', placement: this.placement, ref: e => (this.popoverRef = e) }, h("div", { key: 'bbcd8c421bb6ac757c9d818ce6b56f343032ba74', class: "popover-container", part: "popover-container" }, h("slot", { key: 'af9513da5bb0c9d42b1f1d04af0fd9ee2a681e81' })))));
154
+ return (h(Host, { key: 'a86276a1fefccbb1f2b50f1ad74dd98ddcbdae5d', "data-version": version, role: "menu" }, h("post-popovercontainer", { key: 'a0b2a35714ba370b7a73d92d1d6c036aa7039aea', placement: this.placement, ref: e => (this.popoverRef = e) }, h("div", { key: '98da2e21f8e4b4e02b4c347bc4f9238edc635b77', class: "popover-container", part: "popover-container" }, h("slot", { key: 'd3060c46482c5f3179827b8996a9a4b24abf49fa' })))));
156
155
  }
157
156
  static get is() { return "post-menu"; }
158
157
  static get encapsulation() { return "shadow"; }
@@ -3,16 +3,20 @@ import { version } from "../../../../package";
3
3
  import { checkType, getRoot } from "../../utils/index";
4
4
  export class PostMenuTrigger {
5
5
  constructor() {
6
+ /**
7
+ * Reference to the slotted button within the trigger, if present.
8
+ * Used to manage click and key events for menu control.
9
+ */
10
+ this.slottedButton = null;
11
+ this.handleKeyDown = (e) => {
12
+ if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
13
+ e.preventDefault();
14
+ this.handleToggle();
15
+ }
16
+ };
6
17
  this.for = undefined;
7
18
  this.ariaExpanded = false;
8
19
  }
9
- host;
10
- /**
11
- * Reference to the slotted button within the trigger, if present.
12
- * Used to manage click and key events for menu control.
13
- */
14
- slottedButton = null;
15
- root;
16
20
  /**
17
21
  * Watch for changes to the `for` property to validate its type and ensure it is a string.
18
22
  * @param forValue - The new value of the `for` property.
@@ -32,12 +36,6 @@ export class PostMenuTrigger {
32
36
  console.warn(`No post-menu found with ID: ${this.for}`);
33
37
  }
34
38
  }
35
- handleKeyDown = (e) => {
36
- if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
37
- e.preventDefault();
38
- this.handleToggle();
39
- }
40
- };
41
39
  connectedCallback() {
42
40
  this.root = getRoot(this.host);
43
41
  }
@@ -73,7 +71,7 @@ export class PostMenuTrigger {
73
71
  }
74
72
  }
75
73
  render() {
76
- return (h(Host, { key: '84316d4a69c4231be636e5ff8971752d5af9bab2', "data-version": version, "tab-index": "-1" }, h("slot", { key: 'd3091adcf7033c4dd25e49fa383ccb9773b2d226' })));
74
+ return (h(Host, { key: '1b9589febc2976d17eed3363d91b4321473b7b5e', "data-version": version, "tab-index": "-1" }, h("slot", { key: 'bec55f97274084ab4721dc085dc9e1c3a216c0a3' })));
77
75
  }
78
76
  static get is() { return "post-menu-trigger"; }
79
77
  static get originalStyleUrls() {
@@ -103,7 +101,7 @@ export class PostMenuTrigger {
103
101
  "text": "ID of the menu element that this trigger is linked to. Used to open and close the specified menu."
104
102
  },
105
103
  "attribute": "for",
106
- "reflect": false
104
+ "reflect": true
107
105
  }
108
106
  };
109
107
  }
@@ -1,6 +1,6 @@
1
1
  import { h, Host } from "@stencil/core";
2
+ import { IS_BROWSER, getAttributeObserver } from "../../utils/index";
2
3
  import { version } from "../../../../package";
3
- import { getAttributeObserver } from "../../utils/attribute-observer";
4
4
  /**
5
5
  * @slot default - Slot for placing content inside the popover.
6
6
  */
@@ -20,16 +20,12 @@ const globalToggleHandler = (e) => {
20
20
  const popover = document.getElementById(popoverTarget);
21
21
  popover?.toggle(currentElement);
22
22
  };
23
- // Initialize a mutation observer for patching accessibility features
24
- const triggerObserver = getAttributeObserver(popoverTargetAttribute, trigger => {
25
- const force = trigger.hasAttribute(popoverTargetAttribute);
26
- trigger.setAttribute('aria-expanded', force ? 'false' : null);
27
- });
28
23
  export class PostPopover {
29
- popoverRef;
30
- localBeforeToggleHandler;
31
- host;
32
24
  constructor() {
25
+ // Initialize a mutation observer for patching accessibility features
26
+ this.triggerObserver = IS_BROWSER
27
+ ? getAttributeObserver(popoverTargetAttribute, this.patchAccessibilityFeatures)
28
+ : null;
33
29
  this.placement = 'top';
34
30
  this.closeButtonCaption = undefined;
35
31
  this.arrow = true;
@@ -40,7 +36,7 @@ export class PostPopover {
40
36
  if (popoverInstances === 0) {
41
37
  window.addEventListener('pointerup', globalToggleHandler);
42
38
  window.addEventListener('keydown', globalToggleHandler);
43
- triggerObserver.observe(document.body, {
39
+ this.triggerObserver?.observe(document.body, {
44
40
  subtree: true,
45
41
  childList: true,
46
42
  attributeFilter: [popoverTargetAttribute],
@@ -58,7 +54,7 @@ export class PostPopover {
58
54
  if (popoverInstances === 0) {
59
55
  window.removeEventListener('click', globalToggleHandler);
60
56
  window.removeEventListener('keydown', globalToggleHandler);
61
- triggerObserver.disconnect();
57
+ this.triggerObserver?.disconnect();
62
58
  }
63
59
  this.popoverRef.removeEventListener('beforetoggle', this.localBeforeToggleHandler);
64
60
  this.triggers.forEach(trigger => trigger.removeAttribute('aria-expanded'));
@@ -94,8 +90,12 @@ export class PostPopover {
94
90
  beforeToggleHandler() {
95
91
  this.triggers.forEach(trigger => trigger.setAttribute('aria-expanded', 'false'));
96
92
  }
93
+ patchAccessibilityFeatures(trigger) {
94
+ const force = trigger.hasAttribute(popoverTargetAttribute);
95
+ trigger.setAttribute('aria-expanded', force ? 'false' : null);
96
+ }
97
97
  render() {
98
- return (h(Host, { key: 'ec1aab472fb8f7d6515050d90f6a8b20730640f0', "data-version": version }, h("post-popovercontainer", { key: 'beda133fe8cf98f9db6b61f2bf3e08b3549d3b86', arrow: this.arrow, placement: this.placement, ref: e => (this.popoverRef = e) }, h("div", { key: 'dd0ad949ddc80632b3918cba539781cf23a46163', class: "popover-container" }, h("div", { key: '038dfcf60ff63b0fbe142c0e29db78fe13c5a51b', class: "popover-content" }, h("slot", { key: 'cabcedfbbd0dfc179a66bde0f9afd6a250e4fe1c' })), h("button", { key: 'bb8333e139158f3220c80380cd587e564664b612', class: "btn-close", onClick: () => this.hide() }, h("span", { key: '285a90c985133c7b53150a649850a6e675fdb4d8', class: "visually-hidden" }, this.closeButtonCaption))))));
98
+ return (h(Host, { key: '0eee6a532fc25170b70f2424b7238ae31f0efa2e', "data-version": version }, h("post-popovercontainer", { key: '52af51e794bd070a000fbdd5f0c05ee2f0c3ac1c', arrow: this.arrow, placement: this.placement, ref: e => (this.popoverRef = e) }, h("div", { key: '772b5efef90b136a38b69fccfce2d5607d46035a', class: "popover-container" }, h("div", { key: '8bfdf07447daa58f88c788f04fdfab483783ca7e', class: "popover-content" }, h("slot", { key: '7866899dbf93c856253e2448a0ca696499c94c12' })), h("button", { key: '5056fcd7654309c1f9810b8136ce472b6cf7946f', class: "btn-close", onClick: () => this.hide() }, h("span", { key: '9f9c9b8007a6431367197d824ca42cfd7ca91761', class: "visually-hidden" }, this.closeButtonCaption))))));
99
99
  }
100
100
  static get is() { return "post-popover"; }
101
101
  static get encapsulation() { return "shadow"; }
@@ -1,8 +1,9 @@
1
1
  import { Host, h } from "@stencil/core";
2
+ import { IS_BROWSER } from "../../utils/index";
3
+ import { version } from "../../../../package";
2
4
  import { arrow, autoUpdate, computePosition, flip, inline, limitShift, offset, shift, size, } from "@floating-ui/dom";
3
5
  // Polyfill for popovers, can be removed when https://caniuse.com/?search=popover is green
4
- import "@oddbird/popover-polyfill";
5
- import { version } from "../../../../package";
6
+ import { apply, isSupported } from "@oddbird/popover-polyfill/dist/popover-fn.js";
6
7
  /**
7
8
  * @slot - Default slot for placing content inside the popovercontainer.
8
9
  */
@@ -14,35 +15,6 @@ export class PostPopovercontainer {
14
15
  this.arrow = false;
15
16
  this.safeSpace = undefined;
16
17
  }
17
- static STATIC_SIDES = {
18
- top: 'bottom',
19
- right: 'left',
20
- bottom: 'top',
21
- left: 'right',
22
- };
23
- static PROPERTIES_TO_CLEAR = [
24
- '--safe-space-popover-x',
25
- '--safe-space-popover-y',
26
- '--safe-space-popover-x-start',
27
- '--safe-space-popover-x-end',
28
- '--safe-space-popover-y-start',
29
- '--safe-space-popover-y-end',
30
- '--safe-space-trigger-x',
31
- '--safe-space-trigger-y',
32
- '--safe-space-trigger-x-start',
33
- '--safe-space-trigger-x-end',
34
- '--safe-space-trigger-y-start',
35
- '--safe-space-trigger-y-end',
36
- ];
37
- host;
38
- arrowRef;
39
- eventTarget;
40
- clearAutoUpdate;
41
- toggleTimeoutId;
42
- /**
43
- * Fires whenever the popover gets shown or hidden, passing the new state in event.details as a boolean
44
- */
45
- postToggle;
46
18
  /**
47
19
  * Updates cursor position for safe space feature when popover is open.
48
20
  * Sets CSS custom properties for dynamic styling of safe area.
@@ -52,6 +24,11 @@ export class PostPopovercontainer {
52
24
  this.host.style.setProperty('--safe-space-cursor-x', `${event.clientX}px`);
53
25
  this.host.style.setProperty('--safe-space-cursor-y', `${event.clientY}px`);
54
26
  }
27
+ connectedCallback() {
28
+ if (IS_BROWSER && !isSupported()) {
29
+ apply();
30
+ }
31
+ }
55
32
  componentDidLoad() {
56
33
  this.host.addEventListener('beforetoggle', this.handleToggle.bind(this));
57
34
  }
@@ -246,9 +223,9 @@ export class PostPopovercontainer {
246
223
  }
247
224
  }
248
225
  render() {
249
- return (h(Host, { key: '4b1d039e821b26d830de798a8103995391d8e01b', "data-version": version, popover: this.manualClose ? 'manual' : 'auto' }, h("div", { key: '30e50db7f861df8339da244b1393372759a0fc13' }, this.arrow && (h("span", { key: 'acd8bae5e39cf6407fdefaaf0e2137d35b4c468d', class: "arrow", ref: el => {
226
+ return (h(Host, { key: 'bbd430fbda9344c351d59f3d59cf84049992709b', "data-version": version, popover: this.manualClose ? 'manual' : 'auto' }, h("div", { key: 'e359cac588d1dd1359c88f8e472828be845fdad7' }, this.arrow && (h("span", { key: '45329ae23722e93410132746e4e39e88e86cd310', class: "arrow", ref: el => {
250
227
  this.arrowRef = el;
251
- } })), h("slot", { key: 'a4854df31cab7e452c89cf4a8f36249878c6cd0c' }))));
228
+ } })), h("slot", { key: 'bb9b4b3d8e7c36f024883d02bd34766bf2e9de88' }))));
252
229
  }
253
230
  static get is() { return "post-popovercontainer"; }
254
231
  static get originalStyleUrls() {
@@ -464,3 +441,23 @@ export class PostPopovercontainer {
464
441
  }
465
442
  static get elementRef() { return "host"; }
466
443
  }
444
+ PostPopovercontainer.STATIC_SIDES = {
445
+ top: 'bottom',
446
+ right: 'left',
447
+ bottom: 'top',
448
+ left: 'right',
449
+ };
450
+ PostPopovercontainer.PROPERTIES_TO_CLEAR = [
451
+ '--safe-space-popover-x',
452
+ '--safe-space-popover-y',
453
+ '--safe-space-popover-x-start',
454
+ '--safe-space-popover-x-end',
455
+ '--safe-space-popover-y-start',
456
+ '--safe-space-popover-y-end',
457
+ '--safe-space-trigger-x',
458
+ '--safe-space-trigger-y',
459
+ '--safe-space-trigger-x-start',
460
+ '--safe-space-trigger-x-end',
461
+ '--safe-space-trigger-y-start',
462
+ '--safe-space-trigger-y-end',
463
+ ];
@@ -1,19 +1,8 @@
1
1
  import { h, Host } from "@stencil/core";
2
2
  import { version } from "../../../../package";
3
3
  export class PostRating {
4
- hasChanged = false;
5
- host;
6
- /**
7
- * An event emitted whenever the component's value has changed (on input).
8
- * The event payload can be used like so: `event.detail.value`.
9
- */
10
- postInput;
11
- /**
12
- * An event emitted whenever the component's value has changed (on blur).
13
- * The event payload can be used like so: `event.detail.value`.
14
- */
15
- postChange;
16
4
  constructor() {
5
+ this.hasChanged = false;
17
6
  this.hoveredIndex = undefined;
18
7
  this.label = 'Rating';
19
8
  this.stars = 5;
@@ -10,7 +10,6 @@ export class PostTabHeader {
10
10
  this.tabId = undefined;
11
11
  this.panel = undefined;
12
12
  }
13
- host;
14
13
  validateFor() {
15
14
  checkNonEmpty(this, 'panel');
16
15
  }
@@ -18,7 +17,7 @@ export class PostTabHeader {
18
17
  this.tabId = `tab-${this.host.id || nanoid(6)}`;
19
18
  }
20
19
  render() {
21
- return (h(Host, { key: '336824660de90bf5c570e9739947927a32612fbd', id: this.tabId, role: "tab", "data-version": version, "aria-selected": "false", tabindex: "-1", class: "tab-title", slot: "tabs" }, h("slot", { key: '8bfe0b57fa96044692e2db3fd983ccde427558e7' })));
20
+ return (h(Host, { key: '5046c46fa27fd6586c694420abf197b227b56520', id: this.tabId, role: "tab", "data-version": version, "aria-selected": "false", tabindex: "-1", class: "tab-title", slot: "tabs" }, h("slot", { key: '78c2f660e4f2307ca95a63f4cfd90d08cc6942df' })));
22
21
  }
23
22
  static get is() { return "post-tab-header"; }
24
23
  static get encapsulation() { return "shadow"; }
@@ -54,7 +53,7 @@ export class PostTabHeader {
54
53
  "text": "The name of the panel controlled by the tab header."
55
54
  },
56
55
  "attribute": "panel",
57
- "reflect": false
56
+ "reflect": true
58
57
  }
59
58
  };
60
59
  }
@@ -9,13 +9,12 @@ export class PostTabPanel {
9
9
  this.panelId = undefined;
10
10
  this.name = undefined;
11
11
  }
12
- host;
13
12
  componentWillLoad() {
14
13
  // get the id set on the host element or use a random id by default
15
14
  this.panelId = `panel-${this.host.id || nanoid(6)}`;
16
15
  }
17
16
  render() {
18
- return (h(Host, { key: '8331ab54bda793a120dc467d8406cc0a02a5c480', "data-version": version, id: this.panelId, role: "tabpanel" }, h("slot", { key: '7da6d67b69150a70ee290ad8ef9b95684ea3f83d' })));
17
+ return (h(Host, { key: '98427b35c6637af65930b69b75ea56facf044000', "data-version": version, id: this.panelId, role: "tabpanel" }, h("slot", { key: '4fa02667e8ff088c10122e010cfd7efe8ff3af57' })));
19
18
  }
20
19
  static get is() { return "post-tab-panel"; }
21
20
  static get encapsulation() { return "shadow"; }
@@ -46,7 +45,7 @@ export class PostTabPanel {
46
45
  "text": "The name of the panel, used to associate it with a tab header."
47
46
  },
48
47
  "attribute": "name",
49
- "reflect": false
48
+ "reflect": true
50
49
  }
51
50
  };
52
51
  }
@@ -10,21 +10,12 @@ import { componentOnReady } from "../../utils/index";
10
10
  */
11
11
  export class PostTabs {
12
12
  constructor() {
13
+ this.isLoaded = false;
13
14
  this.activePanel = undefined;
14
15
  }
15
- activeTab;
16
- showing;
17
- hiding;
18
- isLoaded = false;
19
16
  get tabs() {
20
17
  return Array.from(this.host.querySelectorAll('post-tab-header')).filter(tab => tab.closest('post-tabs') === this.host);
21
18
  }
22
- host;
23
- /**
24
- * An event emitted after the active tab changes, when the fade in transition of its associated panel is finished.
25
- * The payload is the name of the newly shown panel.
26
- */
27
- postChange;
28
19
  componentDidLoad() {
29
20
  this.moveMisplacedTabs();
30
21
  this.enableTabs();
@@ -4,7 +4,6 @@ import { version } from "../../../../package";
4
4
  * @slot default - Content to place in the `default` slot.<p>Markup accepted: <a href="https://developer.mozilla.org/en-US/docs/Glossary/Inline-level_content">inline content</a>.</p>
5
5
  */
6
6
  export class PostTag {
7
- host;
8
7
  constructor() {
9
8
  this.classes = undefined;
10
9
  this.variant = undefined;
@@ -6,9 +6,18 @@ import { checkType } from "../../utils/index";
6
6
  */
7
7
  export class PostTogglebutton {
8
8
  constructor() {
9
+ this.handleClick = () => {
10
+ this.toggled = !this.toggled;
11
+ };
12
+ this.handleKeydown = (event) => {
13
+ // perform a click when enter or spaced are pressed to mimic the button behavior
14
+ if (event.key === 'Enter' || event.key === ' ') {
15
+ event.preventDefault(); // prevents the page from scrolling when space is pressed
16
+ this.host.click();
17
+ }
18
+ };
9
19
  this.toggled = false;
10
20
  }
11
- host;
12
21
  validateToggled() {
13
22
  checkType(this, 'toggled', 'boolean');
14
23
  }
@@ -18,16 +27,6 @@ export class PostTogglebutton {
18
27
  this.host.addEventListener('click', () => this.handleClick());
19
28
  this.host.addEventListener('keydown', (e) => this.handleKeydown(e));
20
29
  }
21
- handleClick = () => {
22
- this.toggled = !this.toggled;
23
- };
24
- handleKeydown = (event) => {
25
- // perform a click when enter or spaced are pressed to mimic the button behavior
26
- if (event.key === 'Enter' || event.key === ' ') {
27
- event.preventDefault(); // prevents the page from scrolling when space is pressed
28
- this.host.click();
29
- }
30
- };
31
30
  render() {
32
31
  return (h(Host, { key: '3a1429a9b67b8cfafae184fe0d060ee3a04974e0', "data-version": version, role: "button", tabindex: "0", "aria-pressed": this.toggled.toString() }, h("slot", { key: '9ab1537574423740fc335fde732c699698acac25' })));
33
32
  }
@@ -1,9 +1,12 @@
1
1
  import { h, Host } from "@stencil/core";
2
- import { version } from "../../../../package";
3
2
  import isFocusable from "ally.js/is/focusable";
4
- import "long-press-event";
5
- import { getAttributeObserver } from "../../utils/attribute-observer";
6
- import { checkEmptyOrType } from "../../utils/index";
3
+ import { IS_BROWSER, checkEmptyOrType, getAttributeObserver } from "../../utils/index";
4
+ import { version } from "../../../../package";
5
+ if (IS_BROWSER) {
6
+ (async () => {
7
+ await import('long-press-event');
8
+ })();
9
+ }
7
10
  const OPEN_DELAY = 650; // matches HTML title delay
8
11
  /**
9
12
  * @slot default - Slot for the content of the tooltip.
@@ -28,7 +31,8 @@ let tooltipTimeout = null;
28
31
  * @returns
29
32
  */
30
33
  const globalInterestHandler = (e) => {
31
- const targetElement = e.target.closest(tooltipTargetAttributeSelector);
34
+ const eventTarget = e.target;
35
+ const targetElement = eventTarget.closest(tooltipTargetAttributeSelector);
32
36
  globalCurrentTarget = targetElement;
33
37
  if (!targetElement || !('getAttribute' in targetElement)) {
34
38
  clearTimeout(tooltipTimeout);
@@ -40,7 +44,7 @@ const globalInterestHandler = (e) => {
40
44
  const tooltip = document.getElementById(tooltipTarget);
41
45
  // Determine if the tooltip was triggered by a focus event
42
46
  const triggeredByFocus = e.type === 'focusin';
43
- void tooltip?.show(targetElement, triggeredByFocus);
47
+ tooltip?.show(targetElement, triggeredByFocus);
44
48
  if (hideTooltipTimeout) {
45
49
  window.clearTimeout(hideTooltipTimeout);
46
50
  hideTooltipTimeout = null;
@@ -73,34 +77,17 @@ const globalHideTooltip = (tooltip) => {
73
77
  hideTooltipTimeout = null;
74
78
  }, 42);
75
79
  };
76
- /**
77
- * Patch some accessibility features that are hard to remember or understand
78
- * @param {HTMLElement} trigger
79
- */
80
- const patchAccessibilityFeatures = (trigger) => {
81
- const describedBy = trigger.getAttribute('aria-describedby');
82
- const id = trigger.getAttribute(tooltipTargetAttribute);
83
- // Add tooltip to aria-describedby
84
- if (!describedBy?.includes(id)) {
85
- const newDescribedBy = describedBy ? `${describedBy} ${id}` : id;
86
- trigger.setAttribute('aria-describedby', newDescribedBy);
87
- }
88
- // Make element focusable
89
- if (!isFocusable(trigger)) {
90
- trigger.setAttribute('tabindex', '0');
91
- }
92
- };
93
- // Initialize a mutation observer for patching accessibility features
94
- const triggerObserver = getAttributeObserver(tooltipTargetAttribute, patchAccessibilityFeatures);
95
80
  export class PostTooltip {
96
81
  constructor() {
82
+ this.wasOpenedByFocus = false;
83
+ // Initialize a mutation observer for patching accessibility features
84
+ this.triggerObserver = IS_BROWSER
85
+ ? getAttributeObserver(tooltipTargetAttribute, this.patchAccessibilityFeatures)
86
+ : null;
97
87
  this.placement = 'top';
98
88
  this.arrow = true;
99
89
  this.delayed = false;
100
90
  }
101
- popoverRef;
102
- wasOpenedByFocus = false;
103
- host;
104
91
  validateDelayed() {
105
92
  checkEmptyOrType(this, 'delayed', 'boolean');
106
93
  }
@@ -127,9 +114,9 @@ export class PostTooltip {
127
114
  document.addEventListener('focusout', globalInterestLostHandler);
128
115
  document.addEventListener('long-press', globalInterestHandler);
129
116
  // Initially run the accessibility patcher on all triggers
130
- document.querySelectorAll('[data-tooltip-target]').forEach(patchAccessibilityFeatures);
117
+ document.querySelectorAll('[data-tooltip-target]').forEach(this.patchAccessibilityFeatures);
131
118
  // Start watching for future triggers
132
- triggerObserver.observe(document.body, {
119
+ this.triggerObserver?.observe(document.body, {
133
120
  subtree: true,
134
121
  childList: true,
135
122
  attributeFilter: [tooltipTargetAttribute],
@@ -150,7 +137,7 @@ export class PostTooltip {
150
137
  document.removeEventListener('focusin', globalInterestHandler);
151
138
  document.removeEventListener('focusout', globalInterestLostHandler);
152
139
  document.removeEventListener('long-press', globalInterestHandler);
153
- triggerObserver.disconnect();
140
+ this.triggerObserver?.disconnect();
154
141
  }
155
142
  }
156
143
  /**
@@ -214,9 +201,26 @@ export class PostTooltip {
214
201
  globalHideTooltip(this);
215
202
  this.host.style.pointerEvents = 'auto';
216
203
  }
204
+ /**
205
+ * Patch some accessibility features that are hard to remember or understand
206
+ * @param {HTMLElement} trigger
207
+ */
208
+ patchAccessibilityFeatures(trigger) {
209
+ const describedBy = trigger.getAttribute('aria-describedby');
210
+ const id = trigger.getAttribute(tooltipTargetAttribute);
211
+ // Add tooltip to aria-describedby
212
+ if (!describedBy?.includes(id)) {
213
+ const newDescribedBy = describedBy ? `${describedBy} ${id}` : id;
214
+ trigger.setAttribute('aria-describedby', newDescribedBy);
215
+ }
216
+ // Make element focusable
217
+ if (!isFocusable(trigger)) {
218
+ trigger.setAttribute('tabindex', '0');
219
+ }
220
+ }
217
221
  render() {
218
222
  const popoverClass = `${this.arrow ? ' has-arrow' : ''}`;
219
- return (h(Host, { key: '89b0e64fd5fde4c21d9c1eb624facff38b287e4a', "data-version": version, role: "tooltip", onPointerOver: this.handleInterest, onPointerOut: this.handleInterestLost, onFocusIn: this.handleInterest, onFocusOut: this.handleInterestLost }, h("post-popovercontainer", { key: '8006874c12a2eebe39682a09db677e8b315dd6bb', class: popoverClass, arrow: this.arrow, placement: this.placement, ref: (el) => (this.popoverRef = el) }, h("slot", { key: 'cf3bd12703885fe886f1703038437b59a4d79fd3' }))));
223
+ return (h(Host, { key: 'f6e535d23220c3b53840913882b7302d54cc6a89', "data-version": version, role: "tooltip", onPointerOver: this.handleInterest, onPointerOut: this.handleInterestLost, onFocusIn: this.handleInterest, onFocusOut: this.handleInterestLost }, h("post-popovercontainer", { key: '25aaaee555958fdacd3aa204b90d09ab14289b51', class: popoverClass, arrow: this.arrow, placement: this.placement, ref: (el) => (this.popoverRef = el) }, h("slot", { key: '81ae53f9ab5189253a256861b6df5a2cd31fe678' }))));
220
224
  }
221
225
  static get is() { return "post-tooltip"; }
222
226
  static get encapsulation() { return "shadow"; }
@@ -1,3 +1,4 @@
1
+ import { IS_BROWSER } from "./environment";
1
2
  export function getAttributeObserver(attribute, handler) {
2
3
  /**
3
4
  * Handle attribute changes and childList changes from the observer
@@ -19,5 +20,5 @@ export function getAttributeObserver(attribute, handler) {
19
20
  });
20
21
  }
21
22
  // Initialize a mutation observer for patching accessibility features
22
- return new MutationObserver(observerHandler);
23
+ return IS_BROWSER ? new MutationObserver(observerHandler) : null;
23
24
  }
@@ -1,11 +1,11 @@
1
+ import { IS_BROWSER } from "./environment";
1
2
  export class Breakpoint {
2
- breakpointMap;
3
- current = {
4
- key: '',
5
- name: '',
6
- };
7
3
  constructor() {
8
- if (!this.breakpointMap) {
4
+ this.current = {
5
+ key: '',
6
+ name: '',
7
+ };
8
+ if (IS_BROWSER && !this.breakpointMap) {
9
9
  const keys = this.getStyles('--post-breakpoint-keys');
10
10
  const names = this.getStyles('--post-breakpoint-names');
11
11
  const widths = this.getStyles('--post-breakpoint-widths');
@@ -40,7 +40,9 @@ export class Breakpoint {
40
40
  }
41
41
  }
42
42
  dispatchEvent(type) {
43
- window.dispatchEvent(new CustomEvent(`postBreakpoint:${type}`, { detail: this.current[type] }));
43
+ if (IS_BROWSER) {
44
+ window.dispatchEvent(new CustomEvent(`postBreakpoint:${type}`, { detail: this.current[type] }));
45
+ }
44
46
  }
45
47
  get(type) {
46
48
  this.updateHandler(false);
@@ -0,0 +1,2 @@
1
+ export const IS_SERVER = typeof window === 'undefined';
2
+ export const IS_BROWSER = !IS_SERVER;