@swisspost/design-system-components 10.0.0-next.46 → 10.0.0-next.48

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 (270) hide show
  1. package/dist/cjs/{event-from-AKK8RQrn.js → event-from-C6kpQwhw.js} +2 -2
  2. package/dist/cjs/index-CpDyH7Ww.js +8 -8
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/{package-Din0le0Q.js → package-CZyXYkIN.js} +1 -1
  5. package/dist/cjs/post-accordion_2.cjs.entry.js +4 -4
  6. package/dist/cjs/post-avatar.cjs.entry.js +91 -54
  7. package/dist/cjs/post-back-to-top.cjs.entry.js +32 -7
  8. package/dist/cjs/post-banner.cjs.entry.js +31 -35
  9. package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +1 -1
  10. package/dist/cjs/post-breadcrumbs.cjs.entry.js +1 -1
  11. package/dist/cjs/post-card-control.cjs.entry.js +3 -3
  12. package/dist/cjs/post-closebutton_15.cjs.entry.js +39 -8
  13. package/dist/cjs/post-collapsible_2.cjs.entry.js +2 -2
  14. package/dist/cjs/post-components.cjs.js +1 -1
  15. package/dist/cjs/post-footer.cjs.entry.js +1 -1
  16. package/dist/cjs/post-linkarea.cjs.entry.js +1 -1
  17. package/dist/cjs/post-popover.cjs.entry.js +1 -1
  18. package/dist/cjs/post-rating.cjs.entry.js +1 -1
  19. package/dist/cjs/post-tab-header.cjs.entry.js +1 -1
  20. package/dist/cjs/post-tab-panel.cjs.entry.js +1 -1
  21. package/dist/cjs/post-tabs.cjs.entry.js +2 -2
  22. package/dist/cjs/post-tooltip-trigger.cjs.entry.js +1 -1
  23. package/dist/cjs/post-tooltip.cjs.entry.js +1 -1
  24. package/dist/collection/animations/slide-and-fade.js +25 -0
  25. package/dist/collection/components/post-accordion-item/post-accordion-item.js +5 -5
  26. package/dist/collection/components/post-avatar/avatar-utils.js +16 -0
  27. package/dist/collection/components/post-avatar/post-avatar.js +91 -58
  28. package/dist/collection/components/post-back-to-top/post-back-to-top.css +1 -1
  29. package/dist/collection/components/post-back-to-top/post-back-to-top.js +5 -5
  30. package/dist/collection/components/post-banner/post-banner.css +1 -1
  31. package/dist/collection/components/post-banner/post-banner.js +41 -81
  32. package/dist/collection/components/post-card-control/post-card-control.js +8 -8
  33. package/dist/collection/components/post-closebutton/post-closebutton.js +9 -1
  34. package/dist/collection/components/post-menu/post-menu.js +4 -1
  35. package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +1 -1
  36. package/dist/collection/components/post-tabs/post-tabs.js +3 -3
  37. package/dist/collection/utils/event-from.js +2 -2
  38. package/dist/components/{p-8U5GFtQP.js → event-from.js} +2 -2
  39. package/dist/components/get-root.js +15 -0
  40. package/dist/components/index.d.ts +73 -0
  41. package/dist/components/index.js +36 -2315
  42. package/dist/components/package.js +3 -0
  43. package/dist/components/post-accordion-item.js +1 -1
  44. package/dist/components/post-accordion-item2.js +113 -0
  45. package/dist/components/post-accordion.js +1 -1
  46. package/dist/components/post-accordion2.js +138 -0
  47. package/dist/components/post-avatar.js +99 -62
  48. package/dist/components/post-back-to-top.js +37 -13
  49. package/dist/components/post-banner.js +39 -51
  50. package/dist/components/post-breadcrumb-item.js +1 -1
  51. package/dist/components/post-breadcrumb-item2.js +79 -0
  52. package/dist/components/post-breadcrumbs.js +13 -14
  53. package/dist/components/post-card-control.js +10 -11
  54. package/dist/components/post-closebutton.js +13 -6
  55. package/dist/components/post-collapsible-trigger.js +1 -1
  56. package/dist/components/post-collapsible-trigger2.js +135 -0
  57. package/dist/components/post-collapsible.js +1 -1
  58. package/dist/components/post-collapsible2.js +110 -0
  59. package/dist/components/post-footer.js +10 -11
  60. package/dist/components/post-header.js +30 -8
  61. package/dist/components/post-icon.js +1 -1
  62. package/dist/components/post-icon2.js +153 -0
  63. package/dist/components/post-language-option.js +8 -9
  64. package/dist/components/post-language-switch.js +12 -13
  65. package/dist/components/post-linkarea.js +3 -4
  66. package/dist/components/post-list-item.js +3 -4
  67. package/dist/components/post-list.js +4 -5
  68. package/dist/components/post-logo.js +5 -6
  69. package/dist/components/post-mainnavigation.js +4 -5
  70. package/dist/components/post-megadropdown-trigger.js +6 -7
  71. package/dist/components/post-megadropdown.js +7 -8
  72. package/dist/components/post-menu-item.js +1 -1
  73. package/dist/components/post-menu-item2.js +30 -0
  74. package/dist/components/post-menu-trigger.js +1 -1
  75. package/dist/components/post-menu-trigger2.js +110 -0
  76. package/dist/components/post-menu.js +1 -1
  77. package/dist/components/post-menu2.js +222 -0
  78. package/dist/components/post-popover.js +6 -7
  79. package/dist/components/post-popovercontainer.js +1 -1
  80. package/dist/components/post-popovercontainer2.js +3018 -0
  81. package/dist/components/post-rating.js +8 -9
  82. package/dist/components/post-tab-header.js +6 -7
  83. package/dist/components/post-tab-panel.js +6 -7
  84. package/dist/components/post-tabs.js +7 -8
  85. package/dist/components/post-togglebutton.js +3 -4
  86. package/dist/components/post-tooltip-trigger.js +6 -7
  87. package/dist/components/post-tooltip.js +6 -7
  88. package/dist/components/react/index.d.ts +33 -0
  89. package/dist/components/react/index.js +2315 -0
  90. package/dist/components/react/p-0Ltezq5O.js +3 -0
  91. package/dist/components/{p-C8YtuR96.js → react/p-38PqL5iD.js} +1 -1
  92. package/dist/components/react/p-BLchVpF6.js +14 -0
  93. package/dist/components/react/p-C35MCWIp.js +35 -0
  94. package/dist/components/{p-Dg6sSnLv.js → react/p-CGsAj6ij.js} +1 -1
  95. package/dist/components/react/p-CJ80BZ06.js +178 -0
  96. package/dist/{esm/index-BWC0gtGU.js → components/react/p-CV7fm1rW.js} +1 -1
  97. package/dist/components/react/p-C_2k3G1c.js +264 -0
  98. package/dist/components/{p-D1Ldeko3.js → react/p-Ce7jgYmK.js} +2 -2
  99. package/dist/components/{p-DNnYEFO6.js → react/p-CiYSngKM.js} +7 -7
  100. package/dist/components/{p-Cpy7mEQb.js → react/p-Da5wbVP8.js} +1 -1
  101. package/dist/components/{p-9rHPmDn6.js → react/p-Dq9F2i7n.js} +2 -2
  102. package/dist/components/{p-jLh9Y0sO.js → react/p-DzYquz3e.js} +2 -2
  103. package/dist/components/{p-C1i4rB_c.js → react/p-JHuJA2Lv.js} +4 -4
  104. package/dist/components/react/p-SbIC4aZX.js +11 -0
  105. package/dist/components/{p-Cd5RHPSU.js → react/p-Tg0GNTZM.js} +2 -2
  106. package/dist/{esm/event-from-8U5GFtQP.js → components/react/p-kraHE1r3.js} +2 -2
  107. package/dist/components/{p-DQE6fqIb.js → react/p-q8Fvf8A0.js} +1 -1
  108. package/dist/components/react/p-r4txK0AC.js +3 -0
  109. package/dist/components/react/post-accordion-item.d.ts +11 -0
  110. package/dist/components/react/post-accordion-item.js +6 -0
  111. package/dist/components/react/post-accordion.d.ts +11 -0
  112. package/dist/components/react/post-accordion.js +6 -0
  113. package/dist/components/react/post-avatar.d.ts +11 -0
  114. package/dist/components/react/post-avatar.js +226 -0
  115. package/dist/components/react/post-back-to-top.d.ts +11 -0
  116. package/dist/components/react/post-back-to-top.js +145 -0
  117. package/dist/components/react/post-banner.d.ts +11 -0
  118. package/dist/components/react/post-banner.js +99 -0
  119. package/dist/components/react/post-breadcrumb-item.d.ts +11 -0
  120. package/dist/components/react/post-breadcrumb-item.js +6 -0
  121. package/dist/components/react/post-breadcrumbs.d.ts +11 -0
  122. package/dist/components/react/post-breadcrumbs.js +187 -0
  123. package/dist/components/react/post-card-control.d.ts +11 -0
  124. package/dist/components/react/post-card-control.js +327 -0
  125. package/dist/components/react/post-closebutton.d.ts +11 -0
  126. package/dist/components/react/post-closebutton.js +50 -0
  127. package/dist/components/react/post-collapsible-trigger.d.ts +11 -0
  128. package/dist/components/react/post-collapsible-trigger.js +6 -0
  129. package/dist/components/react/post-collapsible.d.ts +11 -0
  130. package/dist/components/react/post-collapsible.js +6 -0
  131. package/dist/components/react/post-footer.d.ts +11 -0
  132. package/dist/components/react/post-footer.js +117 -0
  133. package/dist/components/react/post-header.d.ts +11 -0
  134. package/dist/components/react/post-header.js +333 -0
  135. package/dist/components/react/post-icon.d.ts +11 -0
  136. package/dist/components/react/post-icon.js +6 -0
  137. package/dist/components/react/post-language-option.d.ts +11 -0
  138. package/dist/components/react/post-language-option.js +101 -0
  139. package/dist/components/react/post-language-switch.d.ts +11 -0
  140. package/dist/components/react/post-language-switch.js +159 -0
  141. package/dist/components/react/post-linkarea.d.ts +11 -0
  142. package/dist/components/react/post-linkarea.js +46 -0
  143. package/dist/components/react/post-list-item.d.ts +11 -0
  144. package/dist/components/react/post-list-item.js +39 -0
  145. package/dist/components/react/post-list.d.ts +11 -0
  146. package/dist/components/react/post-list.js +62 -0
  147. package/dist/components/react/post-logo.d.ts +11 -0
  148. package/dist/components/react/post-logo.js +59 -0
  149. package/dist/components/react/post-mainnavigation.d.ts +11 -0
  150. package/dist/components/react/post-mainnavigation.js +181 -0
  151. package/dist/components/react/post-megadropdown-trigger.d.ts +11 -0
  152. package/dist/components/react/post-megadropdown-trigger.js +137 -0
  153. package/dist/components/react/post-megadropdown.d.ts +11 -0
  154. package/dist/components/react/post-megadropdown.js +197 -0
  155. package/dist/components/react/post-menu-item.d.ts +11 -0
  156. package/dist/components/react/post-menu-item.js +6 -0
  157. package/dist/components/react/post-menu-trigger.d.ts +11 -0
  158. package/dist/components/react/post-menu-trigger.js +6 -0
  159. package/dist/components/react/post-menu.d.ts +11 -0
  160. package/dist/components/react/post-menu.js +6 -0
  161. package/dist/components/react/post-popover.d.ts +11 -0
  162. package/dist/components/react/post-popover.js +189 -0
  163. package/dist/components/react/post-popovercontainer.d.ts +11 -0
  164. package/dist/components/react/post-popovercontainer.js +6 -0
  165. package/dist/components/react/post-rating.d.ts +11 -0
  166. package/dist/components/react/post-rating.js +153 -0
  167. package/dist/components/react/post-tab-header.d.ts +11 -0
  168. package/dist/components/react/post-tab-header.js +53 -0
  169. package/dist/components/react/post-tab-panel.d.ts +11 -0
  170. package/dist/components/react/post-tab-panel.js +55 -0
  171. package/dist/components/react/post-tabs.d.ts +11 -0
  172. package/dist/components/react/post-tabs.js +197 -0
  173. package/dist/components/react/post-togglebutton.d.ts +11 -0
  174. package/dist/components/react/post-togglebutton.js +57 -0
  175. package/dist/components/react/post-tooltip-trigger.d.ts +11 -0
  176. package/dist/components/react/post-tooltip-trigger.js +5223 -0
  177. package/dist/components/react/post-tooltip.d.ts +11 -0
  178. package/dist/components/react/post-tooltip.js +115 -0
  179. package/dist/components/switch-variants.js +3 -0
  180. package/dist/docs.json +43 -76
  181. package/dist/esm/event-from-kraHE1r3.js +105 -0
  182. package/dist/esm/index-C8a0ddDa.js +8 -8
  183. package/dist/esm/index-VmK3ABCB.js +88 -0
  184. package/dist/esm/loader.js +1 -1
  185. package/dist/esm/package-0Ltezq5O.js +3 -0
  186. package/dist/esm/post-accordion_2.entry.js +5 -5
  187. package/dist/esm/post-avatar.entry.js +92 -55
  188. package/dist/esm/post-back-to-top.entry.js +33 -8
  189. package/dist/esm/post-banner.entry.js +32 -36
  190. package/dist/esm/post-breadcrumb-item_2.entry.js +2 -2
  191. package/dist/esm/post-breadcrumbs.entry.js +2 -2
  192. package/dist/esm/post-card-control.entry.js +4 -4
  193. package/dist/esm/post-closebutton_15.entry.js +38 -7
  194. package/dist/esm/post-collapsible_2.entry.js +3 -3
  195. package/dist/esm/post-components.js +1 -1
  196. package/dist/esm/post-footer.entry.js +2 -2
  197. package/dist/esm/post-linkarea.entry.js +1 -1
  198. package/dist/esm/post-popover.entry.js +2 -2
  199. package/dist/esm/post-rating.entry.js +2 -2
  200. package/dist/esm/post-tab-header.entry.js +2 -2
  201. package/dist/esm/post-tab-panel.entry.js +2 -2
  202. package/dist/esm/post-tabs.entry.js +2 -2
  203. package/dist/esm/post-tooltip-trigger.entry.js +2 -2
  204. package/dist/esm/post-tooltip.entry.js +2 -2
  205. package/dist/loader/cdn.js +1 -0
  206. package/dist/loader/index.cjs.js +1 -0
  207. package/{loader → dist/loader}/index.d.ts +1 -1
  208. package/dist/loader/index.es2017.js +1 -0
  209. package/{loader → dist/loader}/index.js +1 -1
  210. package/dist/post-components/p-0Ltezq5O.js +1 -0
  211. package/dist/post-components/{p-eddb07df.entry.js → p-16772417.entry.js} +1 -1
  212. package/dist/post-components/{p-1dee733a.entry.js → p-38d3d441.entry.js} +1 -1
  213. package/dist/post-components/{p-470750be.entry.js → p-3c71f590.entry.js} +1 -1
  214. package/dist/post-components/p-40f21542.entry.js +1 -0
  215. package/dist/post-components/{p-30f12b7c.entry.js → p-4243cdd1.entry.js} +1 -1
  216. package/dist/post-components/p-4c18cb8c.entry.js +1 -0
  217. package/dist/post-components/{p-7819009b.entry.js → p-51dc7647.entry.js} +1 -1
  218. package/dist/post-components/{p-80bad606.entry.js → p-6777e505.entry.js} +1 -1
  219. package/dist/post-components/{p-7689015e.entry.js → p-6add880f.entry.js} +1 -1
  220. package/dist/post-components/{p-74a9aafc.entry.js → p-8363fedb.entry.js} +1 -1
  221. package/dist/post-components/p-83998038.entry.js +1 -0
  222. package/dist/post-components/{p-cb937e6b.entry.js → p-85bb1b5e.entry.js} +1 -1
  223. package/dist/post-components/{p-a0a1cab6.entry.js → p-8f4d8685.entry.js} +1 -1
  224. package/dist/post-components/{p-a69c874a.entry.js → p-95ad536d.entry.js} +1 -1
  225. package/dist/post-components/{p-3789cf50.entry.js → p-9d806e89.entry.js} +1 -1
  226. package/dist/post-components/{p-BWC0gtGU.js → p-VmK3ABCB.js} +1 -1
  227. package/dist/post-components/p-aad86320.entry.js +1 -0
  228. package/dist/post-components/p-c3e38acf.entry.js +1 -0
  229. package/dist/post-components/{p-ba13450e.entry.js → p-d61bb2ff.entry.js} +1 -1
  230. package/dist/post-components/p-kraHE1r3.js +1 -0
  231. package/dist/post-components/post-components.esm.js +1 -1
  232. package/dist/types/animations/slide-and-fade.d.ts +2 -0
  233. package/dist/types/components/post-accordion-item/post-accordion-item.d.ts +3 -3
  234. package/dist/types/components/post-avatar/avatar-utils.d.ts +3 -0
  235. package/dist/types/components/post-avatar/post-avatar.d.ts +14 -11
  236. package/dist/types/components/post-banner/post-banner.d.ts +6 -14
  237. package/dist/types/components/post-card-control/post-card-control.d.ts +7 -7
  238. package/dist/types/components/post-closebutton/post-closebutton.d.ts +2 -0
  239. package/dist/types/components/post-menu/post-menu.d.ts +3 -0
  240. package/dist/types/components/post-tabs/post-tabs.d.ts +2 -2
  241. package/dist/types/components.d.ts +9 -27
  242. package/dist/types/utils/component-on-ready.d.ts +2 -2
  243. package/hydrate/index.js +208 -142
  244. package/hydrate/index.mjs +208 -142
  245. package/package.json +20 -10
  246. package/dist/cjs/slide-CbBL7A8w.js +0 -28
  247. package/dist/components/p-7hVD-I9l.js +0 -3
  248. package/dist/components/p-BuLMaH5t.js +0 -25
  249. package/dist/esm/package-7hVD-I9l.js +0 -3
  250. package/dist/esm/slide-BuLMaH5t.js +0 -25
  251. package/dist/post-components/p-26730afe.entry.js +0 -1
  252. package/dist/post-components/p-2d3fb75c.entry.js +0 -1
  253. package/dist/post-components/p-2ed74834.entry.js +0 -1
  254. package/dist/post-components/p-7hVD-I9l.js +0 -1
  255. package/dist/post-components/p-8U5GFtQP.js +0 -1
  256. package/dist/post-components/p-BuLMaH5t.js +0 -1
  257. package/dist/post-components/p-cb5af9d8.entry.js +0 -1
  258. package/dist/post-components/p-ea9ae6b7.entry.js +0 -1
  259. package/loader/cdn.js +0 -1
  260. package/loader/index.cjs.js +0 -1
  261. package/loader/index.es2017.js +0 -1
  262. /package/dist/components/{p-CJ80BZ06.js → breakpoints.js} +0 -0
  263. /package/dist/components/{p-SbIC4aZX.js → fade.js} +0 -0
  264. /package/dist/components/{p-C35MCWIp.js → get-focusable-children.js} +0 -0
  265. /package/dist/components/{p-r4txK0AC.js → heading-levels.js} +0 -0
  266. /package/dist/components/{p-BLchVpF6.js → index.browser.js} +0 -0
  267. /package/dist/components/{p-CV7fm1rW.js → index2.js} +0 -0
  268. /package/dist/components/{p-C_2k3G1c.js → long-press-event.js} +0 -0
  269. /package/dist/components/{p-CBFgkSgY.js → react/p-CBFgkSgY.js} +0 -0
  270. /package/dist/components/{p-DjIHLduJ.js → react/p-DjIHLduJ.js} +0 -0
@@ -0,0 +1,110 @@
1
+ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
+ import { v as version } from './package.js';
3
+ import { c as checkRequiredAndType } from './index2.js';
4
+ import './breakpoints.js';
5
+ import { g as getRoot } from './get-root.js';
6
+
7
+ const postMenuTriggerCss = ":host{display:inline-block}";
8
+
9
+ const PostMenuTrigger = /*@__PURE__*/ proxyCustomElement(class PostMenuTrigger extends HTMLElement {
10
+ constructor() {
11
+ super();
12
+ this.__registerHost();
13
+ /**
14
+ * Manages the accessibility attribute `aria-expanded` to indicate whether the associated menu is expanded or collapsed.
15
+ */
16
+ this.ariaExpanded = false;
17
+ /**
18
+ * Reference to the slotted button within the trigger, if present.
19
+ * Used to manage click and key events for menu control.
20
+ */
21
+ this.slottedButton = null;
22
+ this.handleKeyDown = (e) => {
23
+ if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
24
+ e.preventDefault();
25
+ this.handleToggle();
26
+ }
27
+ };
28
+ }
29
+ /**
30
+ * Watch for changes to the `for` property to validate its type and ensure it is a string.
31
+ * @param forValue - The new value of the `for` property.
32
+ */
33
+ validateControlFor() {
34
+ checkRequiredAndType(this, 'for', 'string');
35
+ }
36
+ get menu() {
37
+ const ref = this.root.getElementById(this.for);
38
+ return ref && ref.localName === 'post-menu' ? ref : null;
39
+ }
40
+ handleToggle() {
41
+ if (this.menu) {
42
+ this.menu.toggle(this.host);
43
+ }
44
+ else {
45
+ console.warn(`No post-menu found with ID: ${this.for}`);
46
+ }
47
+ }
48
+ connectedCallback() {
49
+ this.root = getRoot(this.host);
50
+ }
51
+ componentDidLoad() {
52
+ this.validateControlFor();
53
+ this.slottedButton = this.host.querySelector('button');
54
+ // Check if the slottedButton is within a web component
55
+ if (!this.slottedButton) {
56
+ const webComponent = this.host.querySelector('.menu-trigger-webc');
57
+ if (webComponent?.shadowRoot) {
58
+ const slottedButton = webComponent.shadowRoot.querySelector('button');
59
+ if (slottedButton) {
60
+ this.slottedButton = slottedButton;
61
+ }
62
+ }
63
+ }
64
+ if (this.slottedButton) {
65
+ this.slottedButton.setAttribute('aria-haspopup', 'menu');
66
+ // Listen to the `toggleMenu` event emitted by the `post-menu` component
67
+ if (this.menu && this.slottedButton) {
68
+ this.menu.addEventListener('toggleMenu', (event) => {
69
+ this.ariaExpanded = event.detail;
70
+ this.slottedButton.setAttribute('aria-expanded', this.ariaExpanded.toString());
71
+ });
72
+ }
73
+ this.slottedButton.addEventListener('click', () => {
74
+ this.handleToggle();
75
+ });
76
+ this.slottedButton.addEventListener('keydown', this.handleKeyDown);
77
+ }
78
+ else {
79
+ console.warn('No button found within post-menu-trigger');
80
+ }
81
+ }
82
+ render() {
83
+ return (h(Host, { key: '76b3c59cdae5c78cefaaf1ea2a9668a77bddd37e', "data-version": version, "tab-index": "-1" }, h("slot", { key: '3835d87c3795e694f7493ceb735bd638bdd2dea1' })));
84
+ }
85
+ get host() { return this; }
86
+ static get watchers() { return {
87
+ "for": ["validateControlFor"]
88
+ }; }
89
+ static get style() { return postMenuTriggerCss; }
90
+ }, [4, "post-menu-trigger", {
91
+ "for": [513],
92
+ "ariaExpanded": [32]
93
+ }, undefined, {
94
+ "for": ["validateControlFor"]
95
+ }]);
96
+ function defineCustomElement() {
97
+ if (typeof customElements === "undefined") {
98
+ return;
99
+ }
100
+ const components = ["post-menu-trigger"];
101
+ components.forEach(tagName => { switch (tagName) {
102
+ case "post-menu-trigger":
103
+ if (!customElements.get(tagName)) {
104
+ customElements.define(tagName, PostMenuTrigger);
105
+ }
106
+ break;
107
+ } });
108
+ }
109
+
110
+ export { PostMenuTrigger as P, defineCustomElement as d };
@@ -1,4 +1,4 @@
1
- import { P as PostMenu$1, d as defineCustomElement$1 } from './p-C1i4rB_c.js';
1
+ import { P as PostMenu$1, d as defineCustomElement$1 } from './post-menu2.js';
2
2
 
3
3
  const PostMenu = PostMenu$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -0,0 +1,222 @@
1
+ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
+ import { a as PLACEMENT_TYPES, d as defineCustomElement$1 } from './post-popovercontainer2.js';
3
+ import { v as version } from './package.js';
4
+ import { g as getFocusableChildren } from './get-focusable-children.js';
5
+ import { d as checkEmptyOrOneOf } from './index2.js';
6
+ import './breakpoints.js';
7
+ import { E as EventFrom } from './event-from.js';
8
+ import { g as getRoot } from './get-root.js';
9
+
10
+ const postMenuCss = "@keyframes popIn{from{transform:scale(0.9);opacity:0;transition-property:transform,opacity,overlay,display;transition-behavior:allow-discrete;transition-duration:var(--post-transition-duration, 0.35s);transition-timing-function:linear(0, 0.007, 0.029 2.2%, 0.118 4.7%, 0.625 14.4%, 0.826 19%, 0.902, 0.962, 1.008 26.1%, 1.041 28.7%, 1.064 32.1%, 1.07 36%, 1.061 40.5%, 1.015 53.4%, 0.999 61.6%, 0.995 71.2%, 1)}to{opacity:1;transform:scale(1)}}:host{display:block}:where([part=menu]){display:flex;flex-direction:column;padding-block:.5rem}";
11
+
12
+ var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
13
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
15
+ r = Reflect.decorate(decorators, target, key, desc);
16
+ else
17
+ for (var i = decorators.length - 1; i >= 0; i--)
18
+ if (d = decorators[i])
19
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
20
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
21
+ };
22
+ const PostMenu = /*@__PURE__*/ proxyCustomElement(class PostMenu extends HTMLElement {
23
+ constructor() {
24
+ super();
25
+ this.__registerHost();
26
+ this.__attachShadow();
27
+ this.toggleMenu = createEvent(this, "toggleMenu", 7);
28
+ this.lastFocusedElement = null;
29
+ this.KEYCODES = {
30
+ SPACE: ' ',
31
+ ENTER: 'Enter',
32
+ UP: 'ArrowUp',
33
+ DOWN: 'ArrowDown',
34
+ TAB: 'Tab',
35
+ HOME: 'Home',
36
+ END: 'End',
37
+ ESCAPE: 'Escape',
38
+ };
39
+ /**
40
+ * Defines the position of the menu relative to its trigger.
41
+ * Menus are automatically flipped to the opposite side if there is not enough available space and are shifted towards the viewport if they would overlap edge boundaries.
42
+ * For supported values and behavior details, see the [Floating UI placement documentation](https://floating-ui.com/docs/computePosition#placement).
43
+ */
44
+ this.placement = 'bottom';
45
+ /**
46
+ * Holds the current visibility state of the menu.
47
+ * This state is internally managed to track whether the menu is open (`true`) or closed (`false`),
48
+ * and updates automatically when the menu is toggled.
49
+ */
50
+ this.isVisible = false;
51
+ this.handleKeyDown = (e) => {
52
+ e.stopPropagation();
53
+ if (e.key === this.KEYCODES.ESCAPE) {
54
+ this.toggle(this.host);
55
+ return;
56
+ }
57
+ if (Object.values(this.KEYCODES).includes(e.key)) {
58
+ this.controlKeyDownHandler(e);
59
+ }
60
+ };
61
+ this.handlePostToggle = (event) => {
62
+ this.isVisible = event.detail;
63
+ this.toggleMenu.emit(this.isVisible);
64
+ requestAnimationFrame(() => {
65
+ if (this.isVisible) {
66
+ this.lastFocusedElement = this.root?.activeElement;
67
+ const menuItems = this.getSlottedItems();
68
+ if (menuItems.length > 0) {
69
+ menuItems[0].focus();
70
+ }
71
+ }
72
+ else if (this.lastFocusedElement) {
73
+ this.lastFocusedElement.focus();
74
+ }
75
+ });
76
+ };
77
+ this.handleClick = (e) => {
78
+ const target = e.target;
79
+ if (['BUTTON', 'A', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {
80
+ this.toggle(this.host);
81
+ }
82
+ };
83
+ }
84
+ validatePlacement() {
85
+ checkEmptyOrOneOf(this, 'placement', PLACEMENT_TYPES);
86
+ }
87
+ connectedCallback() {
88
+ this.root = getRoot(this.host);
89
+ this.host.addEventListener('keydown', this.handleKeyDown);
90
+ this.host.addEventListener('click', this.handleClick);
91
+ }
92
+ disconnectedCallback() {
93
+ this.host.removeEventListener('keydown', this.handleKeyDown);
94
+ this.host.removeEventListener('click', this.handleClick);
95
+ this.popoverRef?.removeEventListener('postToggle', this.handlePostToggle);
96
+ }
97
+ componentDidLoad() {
98
+ this.validatePlacement();
99
+ if (this.popoverRef) {
100
+ this.popoverRef.addEventListener('postToggle', this.handlePostToggle);
101
+ }
102
+ }
103
+ /**
104
+ * Toggles the menu visibility based on its current state.
105
+ */
106
+ async toggle(target) {
107
+ if (this.popoverRef) {
108
+ await this.popoverRef.toggle(target);
109
+ }
110
+ else {
111
+ console.error('toggle: popoverRef is null or undefined');
112
+ }
113
+ }
114
+ /**
115
+ * Displays the popover menu, focusing the first menu item.
116
+ *
117
+ * @param target - The HTML element relative to which the popover menu should be displayed.
118
+ */
119
+ async show(target) {
120
+ if (this.popoverRef) {
121
+ await this.popoverRef.show(target);
122
+ }
123
+ else {
124
+ console.error('show: popoverRef is null or undefined');
125
+ }
126
+ }
127
+ /**
128
+ * Hides the popover menu and restores focus to the previously focused element.
129
+ */
130
+ async hide() {
131
+ if (this.popoverRef) {
132
+ await this.popoverRef.hide();
133
+ }
134
+ else {
135
+ console.error('hide: popoverRef is null or undefined');
136
+ }
137
+ }
138
+ controlKeyDownHandler(e) {
139
+ const menuItems = this.getSlottedItems();
140
+ if (!menuItems.length) {
141
+ return;
142
+ }
143
+ let currentIndex = menuItems.findIndex(el => {
144
+ // Check if the item is currently focused within its rendered scope (document or shadow root)
145
+ return el === getRoot(el).activeElement;
146
+ });
147
+ switch (e.key) {
148
+ case this.KEYCODES.UP:
149
+ e.preventDefault();
150
+ currentIndex = (currentIndex - 1 + menuItems.length) % menuItems.length;
151
+ break;
152
+ case this.KEYCODES.DOWN:
153
+ e.preventDefault();
154
+ currentIndex = (currentIndex + 1) % menuItems.length;
155
+ break;
156
+ case this.KEYCODES.HOME:
157
+ currentIndex = 0;
158
+ break;
159
+ case this.KEYCODES.END:
160
+ e.preventDefault();
161
+ currentIndex = menuItems.length - 1;
162
+ break;
163
+ case this.KEYCODES.SPACE:
164
+ this.toggle(this.host);
165
+ return;
166
+ case this.KEYCODES.TAB:
167
+ this.toggle(this.host);
168
+ break;
169
+ }
170
+ if (menuItems[currentIndex]) {
171
+ menuItems[currentIndex].focus();
172
+ }
173
+ }
174
+ getSlottedItems() {
175
+ const slot = this.host.shadowRoot.querySelector('slot');
176
+ const slottedElements = slot ? slot.assignedElements() : [];
177
+ return (slottedElements
178
+ // If the element is a slot, get the assigned elements
179
+ .flatMap(el => (el instanceof HTMLSlotElement ? el.assignedElements() : el))
180
+ // For each menu item, get any focusable children (e.g., buttons, links)
181
+ .flatMap(el => Array.from(getFocusableChildren(el))));
182
+ }
183
+ render() {
184
+ return (h(Host, { key: 'ee365a30646247563fccd55556f7667cb1591d02', "data-version": version, role: "menu" }, h("post-popovercontainer", { key: 'c649841d408d3f35dfed959cdc6b041163ff80d3', placement: this.placement, ref: e => (this.popoverRef = e) }, h("div", { key: '9f4f145b80c716d27dc51f4bcb0d269b2b2678a8', part: "menu" }, h("slot", { key: '72b53c8f154a4a91541799a789e8618a8d1a9c2c' })))));
185
+ }
186
+ get host() { return this; }
187
+ static get watchers() { return {
188
+ "placement": ["validatePlacement"]
189
+ }; }
190
+ static get style() { return postMenuCss; }
191
+ }, [1, "post-menu", {
192
+ "placement": [1],
193
+ "isVisible": [32],
194
+ "toggle": [64],
195
+ "show": [64],
196
+ "hide": [64]
197
+ }, undefined, {
198
+ "placement": ["validatePlacement"]
199
+ }]);
200
+ __decorate([
201
+ EventFrom('post-popovercontainer')
202
+ ], PostMenu.prototype, "handlePostToggle", void 0);
203
+ function defineCustomElement() {
204
+ if (typeof customElements === "undefined") {
205
+ return;
206
+ }
207
+ const components = ["post-menu", "post-popovercontainer"];
208
+ components.forEach(tagName => { switch (tagName) {
209
+ case "post-menu":
210
+ if (!customElements.get(tagName)) {
211
+ customElements.define(tagName, PostMenu);
212
+ }
213
+ break;
214
+ case "post-popovercontainer":
215
+ if (!customElements.get(tagName)) {
216
+ defineCustomElement$1();
217
+ }
218
+ break;
219
+ } });
220
+ }
221
+
222
+ export { PostMenu as P, defineCustomElement as d };
@@ -1,8 +1,8 @@
1
- import { p as proxyCustomElement, H, h, a as Host } from './index.js';
2
- import { d as defineCustomElement$2, a as PLACEMENT_TYPES } from './p-D1Ldeko3.js';
3
- import { v as version } from './p-7hVD-I9l.js';
4
- import { I as IS_BROWSER } from './p-CJ80BZ06.js';
5
- import { d as checkEmptyOrOneOf, c as checkRequiredAndType } from './p-CV7fm1rW.js';
1
+ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
+ import { a as PLACEMENT_TYPES, d as defineCustomElement$2 } from './post-popovercontainer2.js';
3
+ import { v as version } from './package.js';
4
+ import { I as IS_BROWSER } from './breakpoints.js';
5
+ import { d as checkEmptyOrOneOf, c as checkRequiredAndType } from './index2.js';
6
6
 
7
7
  function getAttributeObserver(attribute, handler) {
8
8
  /**
@@ -49,7 +49,7 @@ const globalToggleHandler = (e) => {
49
49
  const popover = document.getElementById(popoverTarget);
50
50
  popover?.toggle(currentElement);
51
51
  };
52
- const PostPopover$1 = /*@__PURE__*/ proxyCustomElement(class PostPopover extends H {
52
+ const PostPopover$1 = /*@__PURE__*/ proxyCustomElement(class PostPopover extends HTMLElement {
53
53
  validatePlacement() {
54
54
  checkEmptyOrOneOf(this, 'placement', PLACEMENT_TYPES);
55
55
  }
@@ -181,7 +181,6 @@ function defineCustomElement$1() {
181
181
  break;
182
182
  } });
183
183
  }
184
- defineCustomElement$1();
185
184
 
186
185
  const PostPopover = PostPopover$1;
187
186
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { P as PostPopovercontainer$1, d as defineCustomElement$1 } from './p-D1Ldeko3.js';
1
+ import { P as PostPopovercontainer$1, d as defineCustomElement$1 } from './post-popovercontainer2.js';
2
2
 
3
3
  const PostPopovercontainer = PostPopovercontainer$1;
4
4
  const defineCustomElement = defineCustomElement$1;