@swisspost/design-system-components 10.0.0-next.50 → 10.0.0-next.52

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 (208) hide show
  1. package/dist/cjs/focusable-D6snQLqS.js +5020 -0
  2. package/dist/cjs/get-focusable-children-Bx63XUQg.js +67 -0
  3. package/dist/cjs/{index-CpDyH7Ww.js → index-Cb8CTrOz.js} +13 -9
  4. package/dist/cjs/loader.cjs.js +2 -2
  5. package/dist/cjs/{package-qtH-QrKv.js → package-B7Ni5Tuu.js} +1 -1
  6. package/dist/cjs/post-accordion_2.cjs.entry.js +3 -3
  7. package/dist/cjs/post-avatar.cjs.entry.js +2 -2
  8. package/dist/cjs/post-back-to-top.cjs.entry.js +3 -3
  9. package/dist/cjs/post-banner.cjs.entry.js +2 -2
  10. package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +5 -5
  11. package/dist/cjs/post-breadcrumbs.cjs.entry.js +12 -11
  12. package/dist/cjs/post-card-control.cjs.entry.js +2 -2
  13. package/dist/cjs/post-closebutton_15.cjs.entry.js +128 -110
  14. package/dist/cjs/post-collapsible_2.cjs.entry.js +2 -2
  15. package/dist/cjs/post-components.cjs.js +2 -2
  16. package/dist/cjs/post-footer.cjs.entry.js +2 -2
  17. package/dist/cjs/post-linkarea.cjs.entry.js +2 -2
  18. package/dist/cjs/post-popover-trigger.cjs.entry.js +109 -0
  19. package/dist/cjs/post-popover.cjs.entry.js +22 -104
  20. package/dist/cjs/post-rating.cjs.entry.js +4 -8
  21. package/dist/cjs/post-tab-header.cjs.entry.js +3 -3
  22. package/dist/cjs/post-tab-panel.cjs.entry.js +3 -3
  23. package/dist/cjs/post-tabs.cjs.entry.js +3 -3
  24. package/dist/cjs/post-tooltip-trigger.cjs.entry.js +6 -5022
  25. package/dist/cjs/post-tooltip.cjs.entry.js +3 -3
  26. package/dist/collection/collection-manifest.json +1 -0
  27. package/dist/collection/components/post-accordion-item/post-accordion-item.js +1 -1
  28. package/dist/collection/components/post-back-to-top/post-back-to-top.js +1 -1
  29. package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +1 -1
  30. package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.js +34 -13
  31. package/dist/collection/components/post-closebutton/post-closebutton.css +1 -1
  32. package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
  33. package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
  34. package/dist/collection/components/post-megadropdown/post-megadropdown.js +9 -2
  35. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +1 -1
  36. package/dist/collection/components/post-menu/post-menu.js +29 -33
  37. package/dist/collection/components/post-menu-item/post-menu-item.css +1 -1
  38. package/dist/collection/components/post-menu-item/post-menu-item.js +1 -1
  39. package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +1 -1
  40. package/dist/collection/components/post-popover/post-popover.js +21 -77
  41. package/dist/collection/components/post-popover-trigger/post-popover-trigger.css +1 -0
  42. package/dist/collection/components/post-popover-trigger/post-popover-trigger.js +145 -0
  43. package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +153 -32
  44. package/dist/collection/components/post-rating/post-rating.js +4 -9
  45. package/dist/collection/components/post-tab-header/post-tab-header.js +1 -1
  46. package/dist/collection/components/post-tab-panel/post-tab-panel.js +1 -1
  47. package/dist/collection/components/post-tabs/post-tabs.js +1 -1
  48. package/dist/collection/components/post-togglebutton/post-togglebutton.js +1 -1
  49. package/dist/collection/components/post-tooltip/post-tooltip.js +2 -2
  50. package/dist/collection/components/post-tooltip-trigger/post-tooltip-trigger.css +1 -1
  51. package/dist/collection/components/post-tooltip-trigger/post-tooltip-trigger.js +1 -1
  52. package/dist/collection/utils/get-focusable-children.js +34 -5
  53. package/dist/component-names.json +1 -0
  54. package/dist/components/focusable.js +5018 -0
  55. package/dist/components/get-focusable-children.js +35 -6
  56. package/dist/components/index.d.ts +2 -0
  57. package/dist/components/index.js +1 -0
  58. package/dist/components/package.js +1 -1
  59. package/dist/components/post-accordion-item2.js +1 -1
  60. package/dist/components/post-back-to-top.js +1 -1
  61. package/dist/components/post-breadcrumb-item2.js +1 -1
  62. package/dist/components/post-breadcrumbs.js +14 -11
  63. package/dist/components/post-closebutton2.js +1 -1
  64. package/dist/components/post-mainnavigation.js +1 -1
  65. package/dist/components/post-megadropdown-trigger.js +1 -1
  66. package/dist/components/post-megadropdown.js +10 -3
  67. package/dist/components/post-menu-item2.js +2 -2
  68. package/dist/components/post-menu-trigger2.js +1 -1
  69. package/dist/components/post-menu2.js +27 -31
  70. package/dist/components/post-popover-trigger.d.ts +11 -0
  71. package/dist/components/post-popover-trigger.js +132 -0
  72. package/dist/components/post-popover.js +17 -99
  73. package/dist/components/post-popovercontainer2.js +82 -32
  74. package/dist/components/post-rating.js +2 -6
  75. package/dist/components/post-tab-header.js +1 -1
  76. package/dist/components/post-tab-panel.js +1 -1
  77. package/dist/components/post-tabs.js +1 -1
  78. package/dist/components/post-togglebutton.js +1 -1
  79. package/dist/components/post-tooltip-trigger.js +6 -5022
  80. package/dist/components/post-tooltip.js +1 -1
  81. package/dist/components/react/index.js +1 -1
  82. package/dist/components/react/{p-CDsgZHvX.js → p-B35HsBxh.js} +83 -33
  83. package/dist/components/react/{p-BuKAaKXE.js → p-BL8WEb6K.js} +3 -3
  84. package/dist/components/react/p-BVXiQdHq.js +64 -0
  85. package/dist/components/react/{p-BmpB1vs4.js → p-By7jk8fL.js} +1 -1
  86. package/dist/components/react/{p-BXPcgIqO.js → p-C4zJkcAb.js} +3 -3
  87. package/dist/components/react/{p-U9MTjvRU.js → p-CQhnMei5.js} +2 -2
  88. package/dist/components/react/{p-BlOv-NDA.js → p-CrEdcwed.js} +5 -5
  89. package/dist/components/react/{p-DnHwlsBi.js → p-Dl8clYLV.js} +3 -3
  90. package/dist/components/react/{p-B9Y7UQKI.js → p-DnhWNGb-.js} +1 -1
  91. package/dist/components/react/{p-BcVKzjda.js → p-DnqwBx5e.js} +1 -1
  92. package/dist/components/react/{p-Bw6vnK1I.js → p-Due3yZDR.js} +30 -34
  93. package/dist/components/react/p-HygIVKXC.js +5018 -0
  94. package/dist/components/react/p-kxuZ8mOU.js +3 -0
  95. package/dist/components/react/{p-B392lG2N.js → p-lC8Sp5tg.js} +1 -1
  96. package/dist/components/react/post-accordion-item.js +1 -1
  97. package/dist/components/react/post-accordion.js +1 -1
  98. package/dist/components/react/post-avatar.js +1 -1
  99. package/dist/components/react/post-back-to-top.js +3 -3
  100. package/dist/components/react/post-banner.js +1 -1
  101. package/dist/components/react/post-breadcrumb-item.js +1 -1
  102. package/dist/components/react/post-breadcrumbs.js +21 -18
  103. package/dist/components/react/post-card-control.js +2 -2
  104. package/dist/components/react/post-closebutton.js +1 -1
  105. package/dist/components/react/post-collapsible-trigger.js +1 -1
  106. package/dist/components/react/post-collapsible.js +1 -1
  107. package/dist/components/react/post-footer.js +6 -6
  108. package/dist/components/react/post-header.js +2 -2
  109. package/dist/components/react/post-icon.js +1 -1
  110. package/dist/components/react/post-language-option.js +1 -1
  111. package/dist/components/react/post-language-switch.js +5 -5
  112. package/dist/components/react/post-linkarea.js +1 -1
  113. package/dist/components/react/post-list-item.js +1 -1
  114. package/dist/components/react/post-list.js +1 -1
  115. package/dist/components/react/post-logo.js +1 -1
  116. package/dist/components/react/post-mainnavigation.js +3 -3
  117. package/dist/components/react/post-megadropdown-trigger.js +2 -2
  118. package/dist/components/react/post-megadropdown.js +12 -5
  119. package/dist/components/react/post-menu-item.js +1 -1
  120. package/dist/components/react/post-menu-trigger.js +1 -1
  121. package/dist/components/react/post-menu.js +1 -1
  122. package/dist/components/react/post-popover-trigger.d.ts +11 -0
  123. package/dist/components/react/post-popover-trigger.js +133 -0
  124. package/dist/components/react/post-popover.js +21 -103
  125. package/dist/components/react/post-popovercontainer.js +1 -1
  126. package/dist/components/react/post-rating.js +4 -8
  127. package/dist/components/react/post-tab-header.js +2 -2
  128. package/dist/components/react/post-tab-panel.js +2 -2
  129. package/dist/components/react/post-tabs.js +2 -2
  130. package/dist/components/react/post-togglebutton.js +2 -2
  131. package/dist/components/react/post-tooltip-trigger.js +4 -5020
  132. package/dist/components/react/post-tooltip.js +3 -3
  133. package/dist/docs.json +206 -42
  134. package/dist/esm/focusable-HygIVKXC.js +5018 -0
  135. package/dist/esm/get-focusable-children-D9ZHp2FP.js +64 -0
  136. package/dist/esm/{index-C8a0ddDa.js → index-CFNKgUjL.js} +13 -9
  137. package/dist/esm/loader.js +3 -3
  138. package/dist/esm/package-kxuZ8mOU.js +3 -0
  139. package/dist/esm/post-accordion_2.entry.js +3 -3
  140. package/dist/esm/post-avatar.entry.js +2 -2
  141. package/dist/esm/post-back-to-top.entry.js +3 -3
  142. package/dist/esm/post-banner.entry.js +2 -2
  143. package/dist/esm/post-breadcrumb-item_2.entry.js +5 -5
  144. package/dist/esm/post-breadcrumbs.entry.js +13 -12
  145. package/dist/esm/post-card-control.entry.js +2 -2
  146. package/dist/esm/post-closebutton_15.entry.js +125 -107
  147. package/dist/esm/post-collapsible_2.entry.js +2 -2
  148. package/dist/esm/post-components.js +3 -3
  149. package/dist/esm/post-footer.entry.js +2 -2
  150. package/dist/esm/post-linkarea.entry.js +2 -2
  151. package/dist/esm/post-popover-trigger.entry.js +107 -0
  152. package/dist/esm/post-popover.entry.js +19 -101
  153. package/dist/esm/post-rating.entry.js +4 -8
  154. package/dist/esm/post-tab-header.entry.js +3 -3
  155. package/dist/esm/post-tab-panel.entry.js +3 -3
  156. package/dist/esm/post-tabs.entry.js +3 -3
  157. package/dist/esm/post-tooltip-trigger.entry.js +5 -5021
  158. package/dist/esm/post-tooltip.entry.js +3 -3
  159. package/dist/post-components/{p-1253185c.entry.js → p-1096ed89.entry.js} +1 -1
  160. package/dist/post-components/{p-0a4d9f33.entry.js → p-12183522.entry.js} +1 -1
  161. package/dist/post-components/{p-b82e7cbe.entry.js → p-173dcaab.entry.js} +1 -1
  162. package/dist/post-components/p-1d7418ce.entry.js +1 -0
  163. package/dist/post-components/p-244a47db.entry.js +1 -0
  164. package/dist/post-components/p-264c5f97.entry.js +1 -0
  165. package/dist/post-components/{p-e7fbb03d.entry.js → p-290ea78f.entry.js} +1 -1
  166. package/dist/post-components/p-2f8cad6c.entry.js +1 -0
  167. package/dist/post-components/p-47e43863.entry.js +1 -0
  168. package/dist/post-components/{p-5ddde390.entry.js → p-50a5c57f.entry.js} +1 -1
  169. package/dist/post-components/p-6d8f95de.entry.js +1 -0
  170. package/dist/post-components/p-72e56701.entry.js +1 -0
  171. package/dist/post-components/p-81d78878.entry.js +1 -0
  172. package/dist/post-components/p-8a6467b4.entry.js +1 -0
  173. package/dist/post-components/{p-15e0d4b8.entry.js → p-9e461598.entry.js} +1 -1
  174. package/dist/post-components/p-CFNKgUjL.js +2 -0
  175. package/dist/post-components/p-D9ZHp2FP.js +1 -0
  176. package/dist/post-components/p-HygIVKXC.js +1 -0
  177. package/dist/post-components/p-a92b241a.entry.js +1 -0
  178. package/dist/post-components/{p-f9d044a3.entry.js → p-c84e7f02.entry.js} +1 -1
  179. package/dist/post-components/{p-048d2c1a.entry.js → p-e37d9a31.entry.js} +1 -1
  180. package/dist/post-components/p-f62f52d7.entry.js +1 -0
  181. package/dist/post-components/p-kxuZ8mOU.js +1 -0
  182. package/dist/post-components/post-components.css +1 -1
  183. package/dist/post-components/post-components.esm.js +1 -1
  184. package/dist/types/components/post-breadcrumbs/post-breadcrumbs.d.ts +6 -1
  185. package/dist/types/components/post-menu/post-menu.d.ts +4 -3
  186. package/dist/types/components/post-popover/post-popover.d.ts +5 -10
  187. package/dist/types/components/post-popover-trigger/post-popover-trigger.d.ts +37 -0
  188. package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +34 -5
  189. package/dist/types/components.d.ts +66 -13
  190. package/dist/types/utils/get-focusable-children.d.ts +1 -0
  191. package/hydrate/index.js +6708 -6595
  192. package/hydrate/index.mjs +6708 -6595
  193. package/package.json +7 -7
  194. package/dist/components/react/p-C35MCWIp.js +0 -35
  195. package/dist/components/react/p-DimG3b3P.js +0 -3
  196. package/dist/esm/package-DimG3b3P.js +0 -3
  197. package/dist/post-components/p-11abb64f.entry.js +0 -1
  198. package/dist/post-components/p-1d4252ba.entry.js +0 -1
  199. package/dist/post-components/p-3d30eafa.entry.js +0 -1
  200. package/dist/post-components/p-4114fc83.entry.js +0 -1
  201. package/dist/post-components/p-89411986.entry.js +0 -1
  202. package/dist/post-components/p-9bbf7271.entry.js +0 -1
  203. package/dist/post-components/p-C8a0ddDa.js +0 -2
  204. package/dist/post-components/p-DimG3b3P.js +0 -1
  205. package/dist/post-components/p-b034d196.entry.js +0 -1
  206. package/dist/post-components/p-b36c129a.entry.js +0 -1
  207. package/dist/post-components/p-f1d53256.entry.js +0 -1
  208. package/dist/post-components/p-f97f3a19.entry.js +0 -1
@@ -0,0 +1,109 @@
1
+ 'use strict';
2
+
3
+ var index$1 = require('./index-Cb8CTrOz.js');
4
+ var _package = require('./package-B7Ni5Tuu.js');
5
+ var focusable = require('./focusable-D6snQLqS.js');
6
+ var index = require('./index-DtvYdwe1.js');
7
+ require('./breakpoints-CEkeixld.js');
8
+
9
+ const postPopoverTriggerCss = ":host{cursor:pointer}";
10
+
11
+ const PostPopoverTrigger = class {
12
+ syncAriaExpanded(newValue) {
13
+ this.ariaExpanded = newValue;
14
+ if (this.trigger) {
15
+ this.trigger.setAttribute('aria-expanded', String(newValue));
16
+ }
17
+ }
18
+ /**
19
+ * Watch for changes to the `for` property to validate its type and ensure it is a string.
20
+ * @param forValue - The new value of the `for` property.
21
+ */
22
+ validateFor() {
23
+ index.checkRequiredAndType(this, 'for', 'string');
24
+ }
25
+ // Gets the associated popover element to the trigger based on 'for'
26
+ get popover() {
27
+ const ref = document.getElementById(this.for);
28
+ return ref?.localName === 'post-popover' ? ref : null;
29
+ }
30
+ setupTrigger() {
31
+ this.trigger = this.host.querySelector('*');
32
+ if (this.trigger) {
33
+ this.trigger.setAttribute('aria-expanded', this.ariaExpanded.toString());
34
+ // check if its not focusable and add aria role and tabindex
35
+ if (!focusable.isFocusable(this.trigger)) {
36
+ this.trigger.setAttribute('tabindex', '0');
37
+ this.trigger.setAttribute('role', 'button');
38
+ }
39
+ // Set aria attributes
40
+ this.trigger.setAttribute('aria-haspopup', 'true');
41
+ this.trigger.setAttribute('aria-controls', this.for);
42
+ this.trigger.addEventListener('click', this.boundHandleToggle);
43
+ this.trigger.addEventListener('keydown', this.boundHandleKeyDown);
44
+ }
45
+ else {
46
+ console.error('No content found in the post-popover-trigger slot. Please insert a focusable element or content that can receive focus.');
47
+ }
48
+ }
49
+ handleToggle() {
50
+ const popoverEl = this.popover;
51
+ if (popoverEl) {
52
+ popoverEl.toggle(this.trigger);
53
+ this.focusTrigger();
54
+ }
55
+ else {
56
+ console.warn(`No post-popover found with ID: ${this.for}`);
57
+ }
58
+ }
59
+ focusTrigger() {
60
+ // Restores focus to the trigger
61
+ if (!this.popoverOpen && this.trigger) {
62
+ this.trigger.focus();
63
+ }
64
+ }
65
+ constructor(hostRef) {
66
+ index$1.registerInstance(this, hostRef);
67
+ /**
68
+ * Manages the accessibility attribute `aria-expanded` to indicate whether the associated popover is expanded or collapsed.
69
+ */
70
+ this.ariaExpanded = false;
71
+ /**
72
+ * Holds the state of the popover toggle
73
+ */
74
+ this.popoverOpen = false;
75
+ this.handleKeyDown = (e) => {
76
+ if (e.key === 'Enter' || e.key === ' ') {
77
+ e.preventDefault();
78
+ this.handleToggle();
79
+ }
80
+ };
81
+ this.boundHandleToggle = this.handleToggle.bind(this);
82
+ this.boundHandleKeyDown = this.handleKeyDown.bind(this);
83
+ this.boundHandlePostToggle = (event) => {
84
+ this.popoverOpen = event.detail.isOpen;
85
+ this.focusTrigger();
86
+ };
87
+ }
88
+ componentDidLoad() {
89
+ this.validateFor();
90
+ this.setupTrigger();
91
+ this.popover?.addEventListener('postToggle', this.boundHandlePostToggle);
92
+ }
93
+ disconnectedCallback() {
94
+ this.trigger.removeEventListener('click', this.boundHandleToggle);
95
+ this.trigger.removeEventListener('keydown', this.boundHandleKeyDown);
96
+ this.popover?.removeEventListener('postToggle', this.boundHandlePostToggle);
97
+ }
98
+ render() {
99
+ return (index$1.h(index$1.Host, { key: 'd7467aa400f407d76df06e8bbc84210e5f016073', "data-version": _package.version }, index$1.h("slot", { key: '618f3d14fb89b3ad3c101a58f8519c337d9f1721', onSlotchange: () => this.setupTrigger() })));
100
+ }
101
+ get host() { return index$1.getElement(this); }
102
+ static get watchers() { return {
103
+ "popoverOpen": ["syncAriaExpanded"],
104
+ "for": ["validateFor"]
105
+ }; }
106
+ };
107
+ PostPopoverTrigger.style = postPopoverTriggerCss;
108
+
109
+ exports.post_popover_trigger = PostPopoverTrigger;
@@ -1,69 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var index$1 = require('./index-CpDyH7Ww.js');
3
+ var index = require('./index-Cb8CTrOz.js');
4
4
  var placement = require('./placement-qEFR9hmI.js');
5
- var _package = require('./package-qtH-QrKv.js');
6
- var breakpoints = require('./breakpoints-CEkeixld.js');
7
- var index = require('./index-DtvYdwe1.js');
8
-
9
- function getAttributeObserver(attribute, handler) {
10
- /**
11
- * Handle attribute changes and childList changes from the observer
12
- * @param {MutationRecord[]} mutationList
13
- */
14
- function observerHandler(mutationList) {
15
- mutationList.forEach(mutation => {
16
- if (mutation.type === 'attributes' && mutation.attributeName === attribute) {
17
- handler(mutation.target);
18
- }
19
- if (mutation.type === 'childList') {
20
- mutation.addedNodes.forEach(node => {
21
- if (node.nodeType === Node.ELEMENT_NODE &&
22
- node.hasAttribute(attribute)) {
23
- handler(node);
24
- }
25
- });
26
- }
27
- });
28
- }
29
- // Initialize a mutation observer for patching accessibility features
30
- return breakpoints.IS_BROWSER ? new MutationObserver(observerHandler) : null;
31
- }
5
+ var _package = require('./package-B7Ni5Tuu.js');
6
+ var getFocusableChildren = require('./get-focusable-children-Bx63XUQg.js');
7
+ var index$1 = require('./index-DtvYdwe1.js');
8
+ require('./breakpoints-CEkeixld.js');
32
9
 
33
10
  const postPopoverCss = "*{box-sizing:border-box}:host{display:block}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.popover-container{color:var(--post-current-fg);background-color:var(--post-current-bg);display:flex;align-items:self-start;padding:.5em;min-width:160px;max-width:min(var(--post-popover-max-width, 280px),100vw)}.popover-content{padding:.5em;flex-grow:1}";
34
11
 
35
- /**
36
- * @slot default - Slot for placing content inside the popover.
37
- */
38
- let popoverInstances = 0;
39
- const popoverTargetAttribute = 'data-popover-target';
40
- const globalToggleHandler = (e) => {
41
- let currentElement = e.target;
42
- // Traverse up the DOM tree to find if any parent has the popover target attribute
43
- while (currentElement && !currentElement.getAttribute(popoverTargetAttribute)) {
44
- if (currentElement === document.body || !currentElement.parentElement)
45
- break;
46
- currentElement = currentElement.parentElement;
47
- }
48
- const popoverTarget = currentElement?.getAttribute(popoverTargetAttribute);
49
- if (!popoverTarget || ('key' in e && e.key !== 'Enter'))
50
- return;
51
- const popover = document.getElementById(popoverTarget);
52
- popover?.toggle(currentElement);
53
- };
54
12
  const PostPopover = class {
55
- validatePlacement() {
56
- index.checkEmptyOrOneOf(this, 'placement', placement.PLACEMENT_TYPES);
57
- }
58
- validateCloseButtonCaption() {
59
- index.checkRequiredAndType(this, 'closeButtonCaption', 'string');
60
- }
61
13
  constructor(hostRef) {
62
- index$1.registerInstance(this, hostRef);
63
- // Initialize a mutation observer for patching accessibility features
64
- this.triggerObserver = breakpoints.IS_BROWSER
65
- ? getAttributeObserver(popoverTargetAttribute, this.patchAccessibilityFeatures)
66
- : null;
14
+ index.registerInstance(this, hostRef);
67
15
  /**
68
16
  * Defines the position of the popover relative to its trigger.
69
17
  * Popovers 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.
@@ -75,78 +23,48 @@ const PostPopover = class {
75
23
  */
76
24
  // eslint-disable-next-line @stencil-community/ban-default-true
77
25
  this.arrow = true;
78
- this.localBeforeToggleHandler = this.beforeToggleHandler.bind(this);
79
26
  }
80
- connectedCallback() {
81
- // Set up accessibility patcher and event listeners for the first component
82
- if (popoverInstances === 0) {
83
- window.addEventListener('pointerup', globalToggleHandler);
84
- window.addEventListener('keydown', globalToggleHandler);
85
- this.triggerObserver?.observe(document.body, {
86
- subtree: true,
87
- childList: true,
88
- attributeFilter: [popoverTargetAttribute],
89
- });
90
- }
91
- popoverInstances++;
92
- this.triggers.forEach(trigger => trigger.setAttribute('aria-expanded', 'false'));
27
+ validatePlacement() {
28
+ index$1.checkEmptyOrOneOf(this, 'placement', placement.PLACEMENT_TYPES);
29
+ }
30
+ validateCloseButtonCaption() {
31
+ index$1.checkRequiredAndType(this, 'closeButtonCaption', 'string');
93
32
  }
94
33
  componentDidLoad() {
95
34
  this.validatePlacement();
96
35
  this.validateCloseButtonCaption();
97
- this.popoverRef.addEventListener('beforetoggle', this.localBeforeToggleHandler);
98
- }
99
- disconnectedCallback() {
100
- popoverInstances--;
101
- // Remove listeners and observer after the last popover has been destructed
102
- if (popoverInstances === 0) {
103
- window.removeEventListener('click', globalToggleHandler);
104
- window.removeEventListener('keydown', globalToggleHandler);
105
- this.triggerObserver?.disconnect();
106
- }
107
- this.popoverRef.removeEventListener('beforetoggle', this.localBeforeToggleHandler);
108
- this.triggers.forEach(trigger => trigger.removeAttribute('aria-expanded'));
109
36
  }
110
37
  /**
111
38
  * Programmatically display the popover
112
- * @param target An element with [data-popover-target="id"] where the popover should be shown
39
+ * @param target A focusable element inside the <post-popover-trigger> component that controls the popover
113
40
  */
114
41
  async show(target) {
115
42
  this.popoverRef.show(target);
116
- console.log(this.popoverRef);
117
- target.setAttribute('aria-expanded', 'true');
118
43
  }
119
44
  /**
120
45
  * Programmatically hide this popover
121
46
  */
122
47
  async hide() {
123
48
  this.popoverRef.hide();
124
- this.triggers.forEach(trigger => trigger.setAttribute('aria-expanded', 'false'));
125
49
  }
126
50
  /**
127
51
  * Toggle popover display
128
- * @param target An element with [data-popover-target="id"] where the popover should be anchored to
52
+ * @param target A focusable element inside the <post-popover-trigger> component that controls the popover
129
53
  * @param force Pass true to always show or false to always hide
130
54
  */
131
55
  async toggle(target, force) {
132
- const newState = await this.popoverRef.toggle(target, force);
133
- this.triggers.forEach(trigger => trigger.setAttribute('aria-expanded', 'false'));
134
- target.setAttribute('aria-expanded', `${newState}`);
135
- }
136
- get triggers() {
137
- return document.querySelectorAll(`[${popoverTargetAttribute}="${this.host.id}"]`);
138
- }
139
- beforeToggleHandler() {
140
- this.triggers.forEach(trigger => trigger.setAttribute('aria-expanded', 'false'));
141
- }
142
- patchAccessibilityFeatures(trigger) {
143
- const force = trigger.hasAttribute(popoverTargetAttribute);
144
- trigger.setAttribute('aria-expanded', force ? 'false' : null);
56
+ await this.popoverRef.toggle(target, force);
57
+ const focusableChildren = getFocusableChildren.getDeepFocusableChildren(this.host);
58
+ // find first focusable element
59
+ const firstFocusable = focusableChildren[0];
60
+ if (firstFocusable) {
61
+ firstFocusable.focus();
62
+ }
145
63
  }
146
64
  render() {
147
- return (index$1.h(index$1.Host, { key: '4224bfe1dc1bdb7fdfb86da67b54816e8cc6fce4', "data-version": _package.version }, index$1.h("post-popovercontainer", { key: '3d7e370a89214878d33598cafd3d118c74d16312', arrow: this.arrow, placement: this.placement, ref: e => (this.popoverRef = e) }, index$1.h("div", { key: 'ed806f93ddec2656a15a1b242246c9c09b34f58a', class: "popover-container" }, index$1.h("div", { key: 'd60dd75153f88fc65d56dc9ec7387363e78cb835', class: "popover-content" }, index$1.h("slot", { key: 'f37005a225ecde32a80dd5efc3e61ccea7ab6dc5' })), index$1.h("post-closebutton", { key: 'c440bc94fb2832a8b8fcc0dd545b5f9d65cf834a', onClick: () => this.hide() }, this.closeButtonCaption)))));
65
+ return (index.h(index.Host, { key: '82f8d89013b8ddb37fb924c9608ba394c669f35a', "data-version": _package.version }, index.h("post-popovercontainer", { key: 'cf276e5faf65ae27bc0d8e51779de5470a1e49a3', arrow: this.arrow, placement: this.placement, ref: e => (this.popoverRef = e) }, index.h("div", { key: '9ab455b2ee7d7f082dc6fc588d519d7a362cad8c', class: "popover-container" }, index.h("div", { key: 'b3b468da2ff7ccb2a47d69a1841488359763e927', class: "popover-content" }, index.h("slot", { key: 'a32099475baaca02ce41350e36d363614a6f83ef' })), index.h("post-closebutton", { key: 'eac806bd1e6652cacce58fb7e915d66e82c24980', onClick: () => this.hide() }, this.closeButtonCaption)))));
148
66
  }
149
- get host() { return index$1.getElement(this); }
67
+ get host() { return index.getElement(this); }
150
68
  static get watchers() { return {
151
69
  "placement": ["validatePlacement"],
152
70
  "closeButtonCaption": ["validateCloseButtonCaption"]
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var index$1 = require('./index-CpDyH7Ww.js');
4
- var _package = require('./package-qtH-QrKv.js');
3
+ var index$1 = require('./index-Cb8CTrOz.js');
4
+ var _package = require('./package-B7Ni5Tuu.js');
5
5
  var index = require('./index-DtvYdwe1.js');
6
6
  require('./breakpoints-CEkeixld.js');
7
7
 
@@ -27,10 +27,6 @@ const PostRating = class {
27
27
  this.postInput = index$1.createEvent(this, "postInput");
28
28
  this.postChange = index$1.createEvent(this, "postChange");
29
29
  this.hasChanged = false;
30
- /**
31
- * Defines a hidden label for the component.
32
- */
33
- this.label = 'Rating';
34
30
  /**
35
31
  * Defines the total amount of stars rendered in the component.
36
32
  */
@@ -100,13 +96,13 @@ const PostRating = class {
100
96
  }
101
97
  }
102
98
  render() {
103
- return (index$1.h(index$1.Host, { key: 'befb055aff44467d2da231043db28797f843c239', "data-version": _package.version }, index$1.h("div", { key: 'c231944ad2638c2b69b6ae9e8ad92a962aa50139', role: "slider", class: "rating", tabindex: "0", "aria-label": this.label, "aria-valuemin": "0", "aria-valuemax": this.stars, "aria-valuenow": this.currentRating, "aria-valuetext": `${this.currentRating} out of ${this.stars}`, "aria-readonly": this.readonly ? 'true' : 'false', onKeyDown: this.keydownHandler, onBlur: this.blurHandler }, Array.from({ length: this.stars }).map((v, i) => (index$1.h("div", { key: `star-${v}`, "aria-hidden": "true", class: {
99
+ return (index$1.h(index$1.Host, { key: '9089061145d80c4791a56580d107d6fab88f1d6d', "data-version": _package.version }, index$1.h("div", { key: '81f0ba286541aecf6ddfd2e2fa113526a02abdcd', role: "slider", class: "rating", tabindex: "0", "aria-label": this.label, "aria-valuemin": "0", "aria-valuemax": this.stars, "aria-valuenow": this.currentRating, "aria-valuetext": `${this.currentRating} / ${this.stars}`, "aria-readonly": this.readonly ? 'true' : 'false', onKeyDown: this.keydownHandler, onBlur: this.blurHandler }, Array.from({ length: this.stars }).map((v, i) => (index$1.h("div", { key: `star-${v}`, "aria-hidden": "true", class: {
104
100
  'star': true,
105
101
  'before-hover': i < this.hoveredIndex,
106
102
  'active': i < Math.round(this.currentRating),
107
103
  'hover': i === this.hoveredIndex,
108
104
  'after-active': i > this.hoveredIndex && i < this.currentRating,
109
- }, onClick: () => this.update(i + 1), onMouseEnter: e => this.hoverHandler(i, e), onMouseLeave: e => this.hoverHandler(i, e) }, index$1.h("post-icon", { name: "2062", class: "stroke" }), index$1.h("post-icon", { name: "2574", class: "fill" })))))));
105
+ }, onClick: () => this.update(i + 1), onMouseEnter: e => this.hoverHandler(i, e), onMouseLeave: e => this.hoverHandler(i, e) }, index$1.h("post-icon", { name: "favoritestar", class: "stroke" }), index$1.h("post-icon", { name: "favoritestar-solid", class: "fill" })))))));
110
106
  }
111
107
  get host() { return index$1.getElement(this); }
112
108
  static get watchers() { return {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-CpDyH7Ww.js');
4
- var _package = require('./package-qtH-QrKv.js');
3
+ var index = require('./index-Cb8CTrOz.js');
4
+ var _package = require('./package-B7Ni5Tuu.js');
5
5
  var index$1 = require('./index-DtvYdwe1.js');
6
6
  require('./breakpoints-CEkeixld.js');
7
7
  var index_browser = require('./index.browser-Doj636JV.js');
@@ -19,7 +19,7 @@ const PostTabHeader = class {
19
19
  this.tabId = `tab-${this.host.id || index_browser.nanoid(6)}`;
20
20
  }
21
21
  render() {
22
- return (index.h(index.Host, { key: '387d9db0111153ca4a7da1a9ad600daeafa3b7a1', id: this.tabId, role: "tab", "data-version": _package.version, "aria-selected": "false", tabindex: "-1", class: "tab-title", slot: "tabs" }, index.h("slot", { key: '62126f05530776ca45b151b00834fa0c68c5b26e' })));
22
+ return (index.h(index.Host, { key: '5d9cfad4e62285e8b64a5f597e3d38d451dd493f', id: this.tabId, role: "tab", "data-version": _package.version, "aria-selected": "false", tabindex: "-1", class: "tab-title", slot: "tabs" }, index.h("slot", { key: '679874586fb55510af17838ef73403c8b7a33ddc' })));
23
23
  }
24
24
  get host() { return index.getElement(this); }
25
25
  static get watchers() { return {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-CpDyH7Ww.js');
4
- var _package = require('./package-qtH-QrKv.js');
3
+ var index = require('./index-Cb8CTrOz.js');
4
+ var _package = require('./package-B7Ni5Tuu.js');
5
5
  var index_browser = require('./index.browser-Doj636JV.js');
6
6
  var index$1 = require('./index-DtvYdwe1.js');
7
7
  require('./breakpoints-CEkeixld.js');
@@ -21,7 +21,7 @@ const PostTabPanel = class {
21
21
  this.panelId = `panel-${this.host.id || index_browser.nanoid(6)}`;
22
22
  }
23
23
  render() {
24
- return (index.h(index.Host, { key: '97ae92b05f495a63bd5ec5f57eb196fdf6772ca8', "data-version": _package.version, id: this.panelId, role: "tabpanel" }, index.h("slot", { key: '8b36e0849fcd65662a27bc62ac29cec0d8db4f41' })));
24
+ return (index.h(index.Host, { key: '5d6c56e41ac61b10dd2560482bc5e4edab394742', "data-version": _package.version, id: this.panelId, role: "tabpanel" }, index.h("slot", { key: 'ec7be772a0d3f883388742460c825dce0f0e44e8' })));
25
25
  }
26
26
  get host() { return index.getElement(this); }
27
27
  static get watchers() { return {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-CpDyH7Ww.js');
4
- var _package = require('./package-qtH-QrKv.js');
3
+ var index = require('./index-Cb8CTrOz.js');
4
+ var _package = require('./package-B7Ni5Tuu.js');
5
5
  var fade = require('./fade-nS5zzDQS.js');
6
6
  require('./breakpoints-CEkeixld.js');
7
7
 
@@ -167,7 +167,7 @@ const PostTabs = class {
167
167
  nextTab.focus();
168
168
  }
169
169
  render() {
170
- return (index.h(index.Host, { key: 'eb30ee19d073caf4f32e255045eff58c0cb511f5', "data-version": _package.version }, index.h("div", { key: '0920e0cbb6565ff8a9ff663e938291c050d6c93c', class: "tabs-wrapper", part: "tabs" }, index.h("div", { key: 'df3a5a698a77719b371879effba16e11709b2c22', class: "tabs", role: "tablist" }, index.h("slot", { key: 'e6c9592b39e999369eb1b6f43b08e7130872add9', name: "tabs", onSlotchange: () => this.enableTabs() }))), index.h("div", { key: '14cdae926ce10f854577de34b713c8e269568dbb', class: "tab-content", part: "content" }, index.h("slot", { key: 'f2aaff6a23f8dd2683963cb25c95d41953e708f5', onSlotchange: () => this.moveMisplacedTabs() }))));
170
+ return (index.h(index.Host, { key: '3e352bc059be99242f612a49bdea71fd065d67b0', "data-version": _package.version }, index.h("div", { key: '34d608d7af834fd4fb3106ac3fb90100a9b73138', class: "tabs-wrapper", part: "tabs" }, index.h("div", { key: '102e75b53d3e485a185d391f84755142d8690de6', class: "tabs", role: "tablist" }, index.h("slot", { key: '03624f2944dfd37d3eb3403772d430a6e053e676', name: "tabs", onSlotchange: () => this.enableTabs() }))), index.h("div", { key: '8c7c956b831ef19fb093122ca35c14b5a015dad3', class: "tab-content", part: "content" }, index.h("slot", { key: '8fad35a2a6d26814f513c422b4fcbe98aae7bd22', onSlotchange: () => this.moveMisplacedTabs() }))));
171
171
  }
172
172
  get host() { return index.getElement(this); }
173
173
  };