@swisspost/design-system-components 1.7.1 → 2.0.0

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 (207) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/{index-c07c0cdb.js → index-13695f3f.js} +9 -5
  3. package/dist/cjs/index-13695f3f.js.map +1 -0
  4. package/dist/cjs/index.cjs.js +12 -12
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/package-8152e25e.js +7 -0
  7. package/dist/cjs/package-8152e25e.js.map +1 -0
  8. package/dist/cjs/post-accordion-9877919c.js +88 -0
  9. package/dist/cjs/post-accordion-9877919c.js.map +1 -0
  10. package/dist/cjs/post-accordion-item.cjs.entry.js +55 -0
  11. package/dist/cjs/post-accordion-item.cjs.entry.js.map +1 -0
  12. package/dist/cjs/post-accordion.cjs.entry.js +3 -3
  13. package/dist/cjs/{post-alert-39ac30a4.js → post-alert-d87e6132.js} +4 -4
  14. package/dist/cjs/{post-alert-39ac30a4.js.map → post-alert-d87e6132.js.map} +1 -1
  15. package/dist/cjs/post-alert.cjs.entry.js +3 -3
  16. package/dist/cjs/post-collapsible-ef0561b4.js +84 -0
  17. package/dist/cjs/post-collapsible-ef0561b4.js.map +1 -0
  18. package/dist/cjs/post-collapsible.cjs.entry.js +3 -3
  19. package/dist/cjs/post-components.cjs.js +3 -3
  20. package/dist/cjs/post-components.cjs.js.map +1 -1
  21. package/dist/cjs/{post-icon-53e50c15.js → post-icon-e9dcd643.js} +3 -3
  22. package/dist/cjs/{post-icon-53e50c15.js.map → post-icon-e9dcd643.js.map} +1 -1
  23. package/dist/cjs/post-icon.cjs.entry.js +3 -3
  24. package/dist/cjs/{post-popover-5a75c1b2.js → post-popover-e114ebe7.js} +3 -3
  25. package/dist/cjs/{post-popover-5a75c1b2.js.map → post-popover-e114ebe7.js.map} +1 -1
  26. package/dist/cjs/post-popover.cjs.entry.js +3 -3
  27. package/dist/cjs/{post-popovercontainer-84378594.js → post-popovercontainer-20fb22ee.js} +3 -3
  28. package/dist/cjs/{post-popovercontainer-84378594.js.map → post-popovercontainer-20fb22ee.js.map} +1 -1
  29. package/dist/cjs/post-popovercontainer.cjs.entry.js +3 -3
  30. package/dist/cjs/{post-tab-header-02c6e31e.js → post-tab-header-34c1cc21.js} +3 -3
  31. package/dist/cjs/{post-tab-header-02c6e31e.js.map → post-tab-header-34c1cc21.js.map} +1 -1
  32. package/dist/cjs/post-tab-header.cjs.entry.js +3 -3
  33. package/dist/cjs/{post-tab-panel-3973b707.js → post-tab-panel-95cf7092.js} +3 -3
  34. package/dist/cjs/{post-tab-panel-3973b707.js.map → post-tab-panel-95cf7092.js.map} +1 -1
  35. package/dist/cjs/post-tab-panel.cjs.entry.js +3 -3
  36. package/dist/cjs/{post-tabs-7a4fead7.js → post-tabs-dbe7c341.js} +3 -3
  37. package/dist/cjs/{post-tabs-7a4fead7.js.map → post-tabs-dbe7c341.js.map} +1 -1
  38. package/dist/cjs/post-tabs.cjs.entry.js +3 -3
  39. package/dist/cjs/{post-tooltip-79a9c96d.js → post-tooltip-659af1e3.js} +9 -6
  40. package/dist/cjs/post-tooltip-659af1e3.js.map +1 -0
  41. package/dist/cjs/post-tooltip.cjs.entry.js +3 -3
  42. package/dist/collection/animations/collapse.js +10 -5
  43. package/dist/collection/animations/collapse.js.map +1 -1
  44. package/dist/collection/collection-manifest.json +4 -3
  45. package/dist/collection/components/post-accordion/post-accordion.js +37 -36
  46. package/dist/collection/components/post-accordion/post-accordion.js.map +1 -1
  47. package/dist/collection/components/post-accordion-item/heading-levels.js.map +1 -0
  48. package/dist/collection/components/post-accordion-item/post-accordion-item.css +1 -0
  49. package/dist/collection/components/post-accordion-item/post-accordion-item.js +142 -0
  50. package/dist/collection/components/post-accordion-item/post-accordion-item.js.map +1 -0
  51. package/dist/collection/components/post-alert/post-alert.css +1 -1
  52. package/dist/collection/components/post-alert/post-alert.js.map +1 -1
  53. package/dist/collection/components/post-collapsible/post-collapsible.css +1 -1
  54. package/dist/collection/components/post-collapsible/post-collapsible.js +7 -48
  55. package/dist/collection/components/post-collapsible/post-collapsible.js.map +1 -1
  56. package/dist/collection/components/post-popover/post-popover.js.map +1 -1
  57. package/dist/collection/components/post-popovercontainer/post-popovercontainer.js.map +1 -1
  58. package/dist/collection/components/post-tabs/post-tabs.js.map +1 -1
  59. package/dist/collection/components/post-tooltip/post-tooltip.css +1 -1
  60. package/dist/collection/components/post-tooltip/post-tooltip.js +23 -2
  61. package/dist/collection/components/post-tooltip/post-tooltip.js.map +1 -1
  62. package/dist/collection/utils/property-checkers/check-non-empty.js.map +1 -1
  63. package/dist/collection/utils/property-checkers/check-type.js.map +1 -1
  64. package/dist/components/package.js +1 -1
  65. package/dist/components/post-accordion-item.d.ts +11 -0
  66. package/dist/components/post-accordion-item.js +82 -0
  67. package/dist/components/post-accordion-item.js.map +1 -0
  68. package/dist/components/post-accordion2.js +33 -32
  69. package/dist/components/post-accordion2.js.map +1 -1
  70. package/dist/components/post-alert2.js +1 -1
  71. package/dist/components/post-alert2.js.map +1 -1
  72. package/dist/components/post-collapsible2.js +16 -29
  73. package/dist/components/post-collapsible2.js.map +1 -1
  74. package/dist/components/post-tooltip2.js +7 -3
  75. package/dist/components/post-tooltip2.js.map +1 -1
  76. package/dist/docs.json +189 -72
  77. package/dist/esm/{index-35998e08.js → index-74cf5c9d.js} +9 -5
  78. package/dist/esm/index-74cf5c9d.js.map +1 -0
  79. package/dist/esm/index.js +12 -12
  80. package/dist/esm/loader.js +3 -3
  81. package/dist/esm/package-af0ef704.js +5 -0
  82. package/dist/esm/package-af0ef704.js.map +1 -0
  83. package/dist/esm/post-accordion-3b137073.js +86 -0
  84. package/dist/esm/post-accordion-3b137073.js.map +1 -0
  85. package/dist/esm/post-accordion-item.entry.js +51 -0
  86. package/dist/esm/post-accordion-item.entry.js.map +1 -0
  87. package/dist/esm/post-accordion.entry.js +3 -3
  88. package/dist/esm/{post-alert-5e352303.js → post-alert-0dcc6ac7.js} +4 -4
  89. package/dist/esm/{post-alert-5e352303.js.map → post-alert-0dcc6ac7.js.map} +1 -1
  90. package/dist/esm/post-alert.entry.js +3 -3
  91. package/dist/esm/post-collapsible-a418570f.js +82 -0
  92. package/dist/esm/post-collapsible-a418570f.js.map +1 -0
  93. package/dist/esm/post-collapsible.entry.js +3 -3
  94. package/dist/esm/post-components.js +4 -4
  95. package/dist/esm/post-components.js.map +1 -1
  96. package/dist/esm/{post-icon-fdda3f99.js → post-icon-302d1767.js} +3 -3
  97. package/dist/esm/{post-icon-fdda3f99.js.map → post-icon-302d1767.js.map} +1 -1
  98. package/dist/esm/post-icon.entry.js +3 -3
  99. package/dist/esm/{post-popover-ff2c259f.js → post-popover-5725afc7.js} +3 -3
  100. package/dist/esm/{post-popover-ff2c259f.js.map → post-popover-5725afc7.js.map} +1 -1
  101. package/dist/esm/post-popover.entry.js +3 -3
  102. package/dist/esm/{post-popovercontainer-f4cd18cd.js → post-popovercontainer-1c050e83.js} +3 -3
  103. package/dist/esm/{post-popovercontainer-f4cd18cd.js.map → post-popovercontainer-1c050e83.js.map} +1 -1
  104. package/dist/esm/post-popovercontainer.entry.js +3 -3
  105. package/dist/esm/{post-tab-header-486b267b.js → post-tab-header-ede9f078.js} +3 -3
  106. package/dist/esm/{post-tab-header-486b267b.js.map → post-tab-header-ede9f078.js.map} +1 -1
  107. package/dist/esm/post-tab-header.entry.js +3 -3
  108. package/dist/esm/{post-tab-panel-13940300.js → post-tab-panel-16796ee3.js} +3 -3
  109. package/dist/esm/{post-tab-panel-13940300.js.map → post-tab-panel-16796ee3.js.map} +1 -1
  110. package/dist/esm/post-tab-panel.entry.js +3 -3
  111. package/dist/esm/{post-tabs-6f44ed1d.js → post-tabs-16f99043.js} +3 -3
  112. package/dist/esm/{post-tabs-6f44ed1d.js.map → post-tabs-16f99043.js.map} +1 -1
  113. package/dist/esm/post-tabs.entry.js +3 -3
  114. package/dist/esm/{post-tooltip-1d99cd0c.js → post-tooltip-03a6d578.js} +9 -6
  115. package/dist/esm/post-tooltip-03a6d578.js.map +1 -0
  116. package/dist/esm/post-tooltip.entry.js +3 -3
  117. package/dist/post-components/index.esm.js +1 -1
  118. package/dist/post-components/p-06566f88.js +2 -0
  119. package/dist/post-components/p-06566f88.js.map +1 -0
  120. package/dist/post-components/{p-28be44d7.js → p-12a0f4b9.js} +2 -2
  121. package/dist/post-components/{p-28be44d7.js.map → p-12a0f4b9.js.map} +1 -1
  122. package/dist/post-components/{p-aca6e9c1.js → p-26dad3c3.js} +2 -2
  123. package/dist/post-components/p-299a3e41.entry.js +2 -0
  124. package/dist/post-components/p-3241987a.entry.js +2 -0
  125. package/dist/post-components/p-3fd14a00.js +2 -0
  126. package/dist/post-components/p-3fd14a00.js.map +1 -0
  127. package/dist/post-components/p-4b950d70.js +2 -0
  128. package/dist/post-components/p-503ac49b.entry.js +2 -0
  129. package/dist/post-components/{p-7d08e4f1.js → p-6391f970.js} +2 -2
  130. package/dist/post-components/p-6d0226cd.entry.js +2 -0
  131. package/dist/post-components/p-775859cc.entry.js +2 -0
  132. package/dist/post-components/p-78589fac.entry.js +2 -0
  133. package/dist/post-components/p-78589fac.entry.js.map +1 -0
  134. package/dist/post-components/{p-bc27f061.js → p-803284de.js} +3 -3
  135. package/dist/post-components/{p-bc27f061.js.map → p-803284de.js.map} +1 -1
  136. package/dist/post-components/p-83cedb31.entry.js +2 -0
  137. package/dist/post-components/p-88481640.entry.js +2 -0
  138. package/dist/post-components/p-8f37921c.entry.js +2 -0
  139. package/dist/post-components/{p-723336f2.js → p-91236c61.js} +2 -2
  140. package/dist/post-components/{p-d3ed113e.js → p-91f2291a.js} +2 -2
  141. package/dist/post-components/{p-3ef3a1d2.js → p-93ab273b.js} +2 -2
  142. package/dist/post-components/{p-81591ad0.js → p-b4f01350.js} +1 -1
  143. package/dist/post-components/p-b4f01350.js.map +1 -0
  144. package/dist/post-components/p-d96fbe33.entry.js +2 -0
  145. package/dist/post-components/p-de4704fc.js +2 -0
  146. package/dist/post-components/p-fe7650bc.entry.js +2 -0
  147. package/dist/post-components/post-components.esm.js +1 -1
  148. package/dist/post-components/post-components.esm.js.map +1 -1
  149. package/dist/types/components/post-accordion/post-accordion.d.ts +8 -8
  150. package/dist/types/components/post-accordion-item/post-accordion-item.d.ts +24 -0
  151. package/dist/types/components/post-collapsible/post-collapsible.d.ts +4 -10
  152. package/dist/types/components/post-tooltip/post-tooltip.d.ts +4 -0
  153. package/dist/types/components.d.ts +51 -18
  154. package/package.json +11 -3
  155. package/dist/cjs/index-c07c0cdb.js.map +0 -1
  156. package/dist/cjs/package-989e0b36.js +0 -7
  157. package/dist/cjs/package-989e0b36.js.map +0 -1
  158. package/dist/cjs/post-accordion-bc0c6f31.js +0 -87
  159. package/dist/cjs/post-accordion-bc0c6f31.js.map +0 -1
  160. package/dist/cjs/post-collapsible-85f8ace5.js +0 -93
  161. package/dist/cjs/post-collapsible-85f8ace5.js.map +0 -1
  162. package/dist/cjs/post-tooltip-79a9c96d.js.map +0 -1
  163. package/dist/collection/components/post-collapsible/heading-levels.js.map +0 -1
  164. package/dist/esm/index-35998e08.js.map +0 -1
  165. package/dist/esm/package-e13ef9ad.js +0 -5
  166. package/dist/esm/package-e13ef9ad.js.map +0 -1
  167. package/dist/esm/post-accordion-8e96598a.js +0 -85
  168. package/dist/esm/post-accordion-8e96598a.js.map +0 -1
  169. package/dist/esm/post-collapsible-3cc5dd87.js +0 -91
  170. package/dist/esm/post-collapsible-3cc5dd87.js.map +0 -1
  171. package/dist/esm/post-tooltip-1d99cd0c.js.map +0 -1
  172. package/dist/post-components/p-169b8ef7.entry.js +0 -2
  173. package/dist/post-components/p-4b94c2a1.entry.js +0 -2
  174. package/dist/post-components/p-4cbb5212.entry.js +0 -2
  175. package/dist/post-components/p-51ae6f46.entry.js +0 -2
  176. package/dist/post-components/p-668bf58c.entry.js +0 -2
  177. package/dist/post-components/p-67d0a4fa.entry.js +0 -2
  178. package/dist/post-components/p-6b3a5063.entry.js +0 -2
  179. package/dist/post-components/p-6cdc82c6.js +0 -2
  180. package/dist/post-components/p-6cdc82c6.js.map +0 -1
  181. package/dist/post-components/p-81591ad0.js.map +0 -1
  182. package/dist/post-components/p-9b1b6e06.entry.js +0 -2
  183. package/dist/post-components/p-a5a23448.js +0 -2
  184. package/dist/post-components/p-bd1d0117.js +0 -2
  185. package/dist/post-components/p-d8365401.entry.js +0 -2
  186. package/dist/post-components/p-e78d158d.entry.js +0 -2
  187. package/dist/post-components/p-f695aab4.js +0 -2
  188. package/dist/post-components/p-f695aab4.js.map +0 -1
  189. /package/dist/collection/components/{post-collapsible → post-accordion-item}/heading-levels.js +0 -0
  190. /package/dist/post-components/{p-aca6e9c1.js.map → p-26dad3c3.js.map} +0 -0
  191. /package/dist/post-components/{p-169b8ef7.entry.js.map → p-299a3e41.entry.js.map} +0 -0
  192. /package/dist/post-components/{p-4b94c2a1.entry.js.map → p-3241987a.entry.js.map} +0 -0
  193. /package/dist/post-components/{p-a5a23448.js.map → p-4b950d70.js.map} +0 -0
  194. /package/dist/post-components/{p-4cbb5212.entry.js.map → p-503ac49b.entry.js.map} +0 -0
  195. /package/dist/post-components/{p-7d08e4f1.js.map → p-6391f970.js.map} +0 -0
  196. /package/dist/post-components/{p-51ae6f46.entry.js.map → p-6d0226cd.entry.js.map} +0 -0
  197. /package/dist/post-components/{p-668bf58c.entry.js.map → p-775859cc.entry.js.map} +0 -0
  198. /package/dist/post-components/{p-67d0a4fa.entry.js.map → p-83cedb31.entry.js.map} +0 -0
  199. /package/dist/post-components/{p-6b3a5063.entry.js.map → p-88481640.entry.js.map} +0 -0
  200. /package/dist/post-components/{p-9b1b6e06.entry.js.map → p-8f37921c.entry.js.map} +0 -0
  201. /package/dist/post-components/{p-723336f2.js.map → p-91236c61.js.map} +0 -0
  202. /package/dist/post-components/{p-d3ed113e.js.map → p-91f2291a.js.map} +0 -0
  203. /package/dist/post-components/{p-3ef3a1d2.js.map → p-93ab273b.js.map} +0 -0
  204. /package/dist/post-components/{p-bd1d0117.js.map → p-d96fbe33.entry.js.map} +0 -0
  205. /package/dist/post-components/{p-d8365401.entry.js.map → p-de4704fc.js.map} +0 -0
  206. /package/dist/post-components/{p-e78d158d.entry.js.map → p-fe7650bc.entry.js.map} +0 -0
  207. /package/dist/types/components/{post-collapsible → post-accordion-item}/heading-levels.d.ts +0 -0
@@ -1,7 +0,0 @@
1
- 'use strict';
2
-
3
- const version = "1.7.1";
4
-
5
- exports.version = version;
6
-
7
- //# sourceMappingURL=package-989e0b36.js.map
@@ -1 +0,0 @@
1
- {"file":"package-989e0b36.js","mappings":";;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -1,87 +0,0 @@
1
- 'use strict';
2
-
3
- const index = require('./index-c07c0cdb.js');
4
- const _package = require('./package-989e0b36.js');
5
-
6
- const postAccordionCss = ":host{display:block}";
7
-
8
- const PostAccordion = class {
9
- constructor(hostRef) {
10
- index.registerInstance(this, hostRef);
11
- this.expandedCollapsibles = new Set();
12
- this.multiple = false;
13
- }
14
- componentWillLoad() {
15
- this.registerCollapsibles();
16
- }
17
- /**
18
- * Toggles the `post-collapsible` children with the given id.
19
- */
20
- async toggle(id) {
21
- const collapsibleToToggle = this.collapsibles
22
- .find(collapsible => collapsible.id === id);
23
- if (!collapsibleToToggle)
24
- throw new Error(`No post-collapsible found with id #${id}.`);
25
- await collapsibleToToggle.toggle();
26
- }
27
- collapseChangeHandler(event) {
28
- const toggledCollapsible = event.target;
29
- const isClosing = this.expandedCollapsibles.has(toggledCollapsible);
30
- if (isClosing) {
31
- this.expandedCollapsibles.delete(toggledCollapsible);
32
- }
33
- else {
34
- this.expandedCollapsibles.add(toggledCollapsible);
35
- }
36
- if (this.multiple || isClosing)
37
- return;
38
- // close other open collapsible elements to have only one opened at a time
39
- Array.from(this.expandedCollapsibles.values())
40
- .filter(collapsible => collapsible !== toggledCollapsible)
41
- .forEach(collapsible => {
42
- void collapsible.toggle(false);
43
- });
44
- }
45
- /**
46
- * Expands all `post-collapsible` children.
47
- *
48
- * If `close-others` is `true` and all items are closed, it will open the first one.
49
- * Otherwise, it will keep the opened one.
50
- */
51
- async expandAll() {
52
- if (this.multiple) {
53
- await Promise.all(this.collapsibles.map(collapsible => collapsible.toggle(true)));
54
- }
55
- else if (!this.expandedCollapsibles.size) {
56
- await this.collapsibles[0].toggle(true);
57
- }
58
- }
59
- /**
60
- * Collapses all `post-collapsible` children.
61
- */
62
- async collapseAll() {
63
- await Promise.all(this.collapsibles.map(collapsible => collapsible.toggle(false)));
64
- }
65
- registerCollapsibles() {
66
- this.collapsibles = Array.from(this.host.querySelectorAll('post-collapsible'));
67
- this.collapsibles
68
- .filter(collapsible => {
69
- return !collapsible.collapsed || this.expandedCollapsibles.has(collapsible);
70
- }).forEach((collapsible, index) => {
71
- if (!this.multiple && index !== 0) {
72
- collapsible.setAttribute('collapsed', '');
73
- return;
74
- }
75
- this.expandedCollapsibles.add(collapsible);
76
- });
77
- }
78
- render() {
79
- return (index.h(index.Host, { "data-version": _package.version }, index.h("div", { class: "accordion" }, index.h("slot", { onSlotchange: () => this.registerCollapsibles() }))));
80
- }
81
- get host() { return index.getElement(this); }
82
- };
83
- PostAccordion.style = postAccordionCss;
84
-
85
- exports.PostAccordion = PostAccordion;
86
-
87
- //# sourceMappingURL=post-accordion-bc0c6f31.js.map
@@ -1 +0,0 @@
1
- {"file":"post-accordion-bc0c6f31.js","mappings":"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","names":["h","Host","version"],"sources":["src/components/post-accordion/post-accordion.scss?tag=post-accordion&encapsulation=shadow","src/components/post-accordion/post-accordion.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import { Component, Element, h, Host, Listen, Method, Prop } from '@stencil/core';\nimport { version } from '../../../package.json';\n\n@Component({\n tag: 'post-accordion',\n styleUrl: 'post-accordion.scss',\n shadow: true,\n})\nexport class PostAccordion {\n private collapsibles: HTMLPostCollapsibleElement[];\n private expandedCollapsibles = new Set<HTMLPostCollapsibleElement>();\n\n @Element() host: HTMLPostAccordionElement;\n\n /**\n * If `true`, multiple `post-collapsible` can be open at the same time.\n */\n @Prop() readonly multiple: boolean = false;\n\n componentWillLoad() {\n this.registerCollapsibles();\n }\n\n /**\n * Toggles the `post-collapsible` children with the given id.\n */\n @Method()\n async toggle(id: string) {\n const collapsibleToToggle = this.collapsibles\n .find(collapsible => collapsible.id === id);\n\n if (!collapsibleToToggle) throw new Error(`No post-collapsible found with id #${id}.`);\n\n await collapsibleToToggle.toggle();\n }\n\n @Listen('collapseChange')\n collapseChangeHandler(event: CustomEvent) {\n const toggledCollapsible = event.target as HTMLPostCollapsibleElement;\n const isClosing = this.expandedCollapsibles.has(toggledCollapsible);\n\n if (isClosing) {\n this.expandedCollapsibles.delete(toggledCollapsible);\n } else {\n this.expandedCollapsibles.add(toggledCollapsible);\n }\n\n if (this.multiple || isClosing) return;\n\n // close other open collapsible elements to have only one opened at a time\n Array.from(this.expandedCollapsibles.values())\n .filter(collapsible => collapsible !== toggledCollapsible)\n .forEach(collapsible => {\n void collapsible.toggle(false);\n });\n }\n\n /**\n * Expands all `post-collapsible` children.\n *\n * If `close-others` is `true` and all items are closed, it will open the first one.\n * Otherwise, it will keep the opened one.\n */\n @Method()\n async expandAll() {\n if (this.multiple) {\n await Promise.all(\n this.collapsibles.map(collapsible => collapsible.toggle(true))\n );\n } else if (!this.expandedCollapsibles.size) {\n await this.collapsibles[0].toggle(true);\n }\n }\n\n /**\n * Collapses all `post-collapsible` children.\n */\n @Method()\n async collapseAll() {\n await Promise.all(\n this.collapsibles.map(collapsible => collapsible.toggle(false))\n );\n }\n\n private registerCollapsibles() {\n this.collapsibles = Array.from(\n this.host.querySelectorAll('post-collapsible')\n );\n\n this.collapsibles\n .filter(collapsible => {\n return !collapsible.collapsed || this.expandedCollapsibles.has(collapsible);\n }).forEach((collapsible, index) => {\n if (!this.multiple && index !== 0) {\n collapsible.setAttribute('collapsed', '');\n return;\n }\n\n this.expandedCollapsibles.add(collapsible);\n });\n }\n\n render() {\n return (\n <Host data-version={version}>\n <div class=\"accordion\">\n <slot onSlotchange={() => this.registerCollapsibles()}/>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1,93 +0,0 @@
1
- 'use strict';
2
-
3
- const index = require('./index-c07c0cdb.js');
4
- const _package = require('./package-989e0b36.js');
5
- const index$1 = require('./index-8c288b1a.js');
6
-
7
- function isMotionReduced() {
8
- return window.matchMedia('(prefers-reduced-motion: reduce)').matches;
9
- }
10
-
11
- const collapseDuration = 350;
12
- const collapseEasing = 'ease';
13
- const collapsedKeyframe = { height: '0', overflow: 'hidden' };
14
- const collapse = (el) => {
15
- const { height } = window.getComputedStyle(el);
16
- const expandedKeyframe = { height };
17
- return el.animate([expandedKeyframe, collapsedKeyframe], { duration: collapseDuration, easing: collapseEasing, fill: 'forwards' });
18
- };
19
- const expand = (el) => {
20
- const expandedKeyframe = { height: `${el.scrollHeight}px` };
21
- return el.animate([collapsedKeyframe, expandedKeyframe], { duration: collapseDuration, easing: collapseEasing, fill: 'forwards' });
22
- };
23
-
24
- const HEADING_LEVELS = [1, 2, 3, 4, 5, 6];
25
-
26
- const postCollapsibleCss = ".accordion-item,.bg-light .accordion-item,.bg-gray .accordion-item{--post-bg-opacity:1;background-color:rgba(var(--post-bg-rgb), var(--post-bg-opacity)) !important;color:var(--post-contrast-color) !important}.accordion-item,.bg-light .accordion-item,.bg-gray .accordion-item{--post-contrast-color:#000;--post-contrast-color-inverted:#fff;--post-gray-10:hsl(0, 0%, 90%);--post-gray-20:hsl(0, 0%, 80%);--post-gray-40:hsl(0, 0%, 60%);--post-gray-60:hsl(0, 0%, 40%);--post-gray-80:hsl(0, 0%, 20%);--post-yellow:#fc0;--post-light:#faf9f8;--post-gray:#f4f3f1;--post-dark:hsl(0, 0%, 20%);--post-primary:hsl(0, 0%, 20%);--post-white:#fff;--post-black:#000;--post-info:#cce4ee;--post-success:#2c911c;--post-warning:#f49e00;--post-danger:#a51728;--post-nightblue:#004976;--post-nightblue-bright:#0076a8;--post-petrol:#006d68;--post-petrol-bright:#00968f;--post-coral:#9e2a2f;--post-coral-bright:#e03c31;--post-olive:#716135;--post-olive-bright:#aa9d2e;--post-purple:#80276c;--post-purple-bright:#c5299b;--post-aubergine:#523178;--post-aubergine-bright:#7566a0;--post-success-green:#2c871d;--post-error-red:#a51728;--post-warning-orange:#f49e00;--post-success-background:#c0debb;--post-error-background:#ffdade;--post-warning-background:#fce2b2;--post-contrast-color-rgb:0, 0, 0;--post-contrast-color-inverted-rgb:255, 255, 255;--post-gray-10-rgb:230, 230, 230;--post-gray-20-rgb:204, 204, 204;--post-gray-40-rgb:153, 153, 153;--post-gray-60-rgb:102, 102, 102;--post-gray-80-rgb:51, 51, 51;--post-yellow-rgb:255, 204, 0;--post-light-rgb:250, 249, 248;--post-gray-rgb:244, 243, 241;--post-dark-rgb:51, 51, 51;--post-primary-rgb:51, 51, 51;--post-white-rgb:255, 255, 255;--post-black-rgb:0, 0, 0;--post-info-rgb:204, 228, 238;--post-success-rgb:44, 145, 28;--post-warning-rgb:244, 158, 0;--post-danger-rgb:165, 23, 40;--post-nightblue-rgb:0, 73, 118;--post-nightblue-bright-rgb:0, 118, 168;--post-petrol-rgb:0, 109, 104;--post-petrol-bright-rgb:0, 150, 143;--post-coral-rgb:158, 42, 47;--post-coral-bright-rgb:224, 60, 49;--post-olive-rgb:113, 97, 53;--post-olive-bright-rgb:170, 157, 46;--post-purple-rgb:128, 39, 108;--post-purple-bright-rgb:197, 41, 155;--post-aubergine-rgb:82, 49, 120;--post-aubergine-bright-rgb:117, 102, 160;--post-success-green-rgb:44, 135, 29;--post-error-red-rgb:165, 23, 40;--post-warning-orange-rgb:244, 158, 0;--post-success-background-rgb:192, 222, 187;--post-error-background-rgb:255, 218, 222;--post-warning-background-rgb:252, 226, 178}.accordion-item{border-block:2px solid #666;--post-bg-rgb:244, 243, 241}.accordion-item+.accordion-item{border-block-start:0}.bg-light .accordion-item{--post-bg-rgb:255, 255, 255}.bg-gray .accordion-item{--post-bg-rgb:255, 255, 255}.accordion-header{color:#333;font-size:1rem;font-weight:700;line-height:1.5;margin:0}.accordion-button{padding:0;overflow:visible;border:0;background:none;color:inherit;font:inherit;-webkit-user-select:none;user-select:none;-webkit-appearance:button;appearance:button;outline:none;width:100%;position:relative;padding-block:1rem;padding-inline-start:1rem;padding-inline-end:3rem;text-align:start;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms}.accordion-button:focus-visible{outline:2px solid #1976c8}.accordion-button:hover{color:#000;background-color:#e6e6e6}.accordion-button:disabled{opacity:.4;pointer-events:none}.accordion-button::after{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xml:space='preserve' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg id='icon'%3E%3Cpath d='m23.6 18.3-.9.9-6.7-6.6-6.6 6.6-.9-.9 7.5-7.6z'/%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg xml:space='preserve' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg id='icon'%3E%3Cpath d='m23.6 18.3-.9.9-6.7-6.6-6.6 6.6-.9-.9 7.5-7.6z'/%3E%3C/g%3E%3C/svg%3E\");background-color:currentColor;content:\"\";display:block;height:1.5rem;width:1.5rem;position:absolute;inset-inline-end:1rem;inset-block-start:50%;transform:translateY(-50%);transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}.accordion-button.collapsed::after{transform:translateY(-50%) rotate(-180deg)}.accordion-button>.text-truncate{display:block}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.accordion-button:hover:not(:disabled),.accordion-button:focus-visible:not(:disabled){outline:2px solid Highlight}.accordion-button:disabled{opacity:1 !important}}.accordion-body{padding:.5rem 1rem 1rem;font-weight:300}.accordion-button>*,.accordion-body>:first-child{margin-block-start:0 !important}.accordion-button>*,.accordion-body>:last-child{margin-block-end:0 !important}:host{display:block}.accordion-button{cursor:pointer}.accordion-button>::slotted(.text-truncate){display:block}post-collapsible+post-collapsible::part(accordion-item){border-block-start:0 !important}";
27
-
28
- const PostCollapsible = class {
29
- constructor(hostRef) {
30
- index.registerInstance(this, hostRef);
31
- this.collapseChange = index.createEvent(this, "collapseChange", 7);
32
- this.isLoaded = false;
33
- this.id = undefined;
34
- this.isOpen = true;
35
- this.hasHeader = undefined;
36
- this.headingTag = undefined;
37
- this.collapsed = false;
38
- this.headingLevel = 2;
39
- }
40
- validateCollapsed(newValue = this.collapsed) {
41
- index$1.checkEmptyOrType(newValue, 'boolean', 'The `collapsed` property of the `post-collapsible` must be a boolean.');
42
- }
43
- validateHeadingLevel(newValue = this.headingLevel) {
44
- index$1.checkEmptyOrOneOf(newValue, HEADING_LEVELS, 'The `headingLevel` property of the `post-collapsible` must be a number between 1 and 6.');
45
- }
46
- connectedCallback() {
47
- this.validateCollapsed();
48
- this.validateHeadingLevel();
49
- }
50
- componentWillRender() {
51
- var _a;
52
- this.id = this.host.id || `c${crypto.randomUUID()}`;
53
- this.hasHeader = this.host.querySelectorAll('[slot="header"]').length > 0;
54
- this.headingTag = `h${(_a = this.headingLevel) !== null && _a !== void 0 ? _a : 2}`;
55
- }
56
- componentDidLoad() {
57
- if (this.collapsed)
58
- void this.toggle(false);
59
- this.isLoaded = true;
60
- }
61
- /**
62
- * Triggers the collapse programmatically.
63
- *
64
- * If there is a collapsing transition running already, it will be reversed.
65
- */
66
- async toggle(open = !this.isOpen) {
67
- if (open === this.isOpen)
68
- return open;
69
- this.isOpen = !this.isOpen;
70
- if (this.isLoaded)
71
- this.collapseChange.emit();
72
- const animation = open ? expand(this.collapsible) : collapse(this.collapsible);
73
- if (!this.isLoaded || isMotionReduced())
74
- animation.finish();
75
- await animation.finished;
76
- animation.commitStyles();
77
- return this.isOpen;
78
- }
79
- render() {
80
- const collapse = (index.h("div", { "aria-labelledby": this.hasHeader ? `${this.id}--header` : undefined, class: `collapse${this.hasHeader ? ' accordion-collapse' : ''}`, id: `${this.id}--collapse`, ref: el => (this.collapsible = el) }, this.hasHeader ? (index.h("div", { class: "accordion-body" }, index.h("slot", null))) : (index.h("slot", null))));
81
- return (index.h(index.Host, { id: this.id, "data-version": _package.version }, this.hasHeader ? (index.h("div", { part: "accordion-item", class: "accordion-item" }, index.h(this.headingTag, { class: "accordion-header", id: `${this.id}--header` }, index.h("button", { "aria-controls": `${this.id}--collapse`, "aria-expanded": `${this.isOpen}`, class: `accordion-button${this.isOpen ? '' : ' collapsed'}`, onClick: () => this.toggle(), type: "button" }, index.h("slot", { name: "header" }))), collapse)) : (collapse)));
82
- }
83
- get host() { return index.getElement(this); }
84
- static get watchers() { return {
85
- "collapsed": ["validateCollapsed"],
86
- "headingLevel": ["validateHeadingLevel"]
87
- }; }
88
- };
89
- PostCollapsible.style = postCollapsibleCss;
90
-
91
- exports.PostCollapsible = PostCollapsible;
92
-
93
- //# sourceMappingURL=post-collapsible-85f8ace5.js.map
@@ -1 +0,0 @@
1
- {"file":"post-collapsible-85f8ace5.js","mappings":";;;;;;SAAgB,eAAe;IAC7B,OAAO,MAAM,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC,OAAO,CAAC;AACvE;;ACFA,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,cAAc,GAAG,MAAM,CAAC;AAC9B,MAAM,iBAAiB,GAAa,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAEjE,MAAM,QAAQ,GAAG,CAAC,EAAe;IACtC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,gBAAgB,GAAa,EAAE,MAAM,EAAE,CAAC;IAE9C,OAAO,EAAE,CAAC,OAAO,CACf,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EACrC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,CACzE,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,MAAM,GAAG,CAAC,EAAe;IACpC,MAAM,gBAAgB,GAAa,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC;IAEtE,OAAO,EAAE,CAAC,OAAO,CACf,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,EACrC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,CACzE,CAAC;AACJ,CAAC;;ACrBM,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU;;ACAzD,MAAM,kBAAkB,GAAG,6uJAA6uJ;;MCsB3vJ,eAAe;;;;QAClB,aAAQ,GAAG,KAAK,CAAC;;sBAMP,IAAI;;;yBAOiB,KAAK;4BAcG,CAAC;;IAXhD,iBAAiB,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS;QACzCA,wBAAgB,CACd,QAAQ,EACR,SAAS,EACT,uEAAuE,CACxE,CAAC;KACH;IAQD,oBAAoB,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY;QAC/CC,yBAAiB,CACf,QAAQ,EACR,cAAc,EACd,yFAAyF,CAC1F,CAAC;KACH;IAOD,iBAAiB;QACf,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;IAED,mBAAmB;;QACjB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,GAAG,IAAI,MAAA,IAAI,CAAC,YAAY,mCAAI,CAAC,EAAE,CAAC;KAChD;IAED,gBAAgB;QACd,IAAI,IAAI,CAAC,SAAS;YAAE,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACtB;;;;;;IAQD,MAAM,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM;QAC9B,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEtC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAE9C,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE/E,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,eAAe,EAAE;YAAE,SAAS,CAAC,MAAM,EAAE,CAAC;QAE5D,MAAM,SAAS,CAAC,QAAQ,CAAC;QAEzB,SAAS,CAAC,YAAY,EAAE,CAAC;QAEzB,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAED,MAAM;QACJ,MAAM,QAAQ,IACZC,oCACmB,IAAI,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,EAClE,KAAK,EAAE,WAAW,IAAI,CAAC,SAAS,GAAG,qBAAqB,GAAG,EAAE,EAAE,EAC/D,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,YAAY,EAC1B,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,IAEjC,IAAI,CAAC,SAAS,IACbA,iBAAK,KAAK,EAAC,gBAAgB,IACzBA,qBAAQ,CACJ,KAENA,qBAAQ,CACT,CACG,CACP,CAAC;QAEF,QACEA,QAACC,UAAI,IAAC,EAAE,EAAE,IAAI,CAAC,EAAE,kBAAgBC,gBAAO,IACrC,IAAI,CAAC,SAAS,IACbF,iBAAK,IAAI,EAAC,gBAAgB,EAAC,KAAK,EAAC,gBAAgB,IAC/CA,QAAC,IAAI,CAAC,UAAU,IAAC,KAAK,EAAC,kBAAkB,EAAC,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,UAAU,IAChEA,qCACiB,GAAG,IAAI,CAAC,EAAE,YAAY,mBACtB,GAAG,IAAI,CAAC,MAAM,EAAE,EAC/B,KAAK,EAAE,mBAAmB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,YAAY,EAAE,EAC3D,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,EAC5B,IAAI,EAAC,QAAQ,IAEbA,kBAAM,IAAI,EAAC,QAAQ,GAAG,CACf,CACO,EAEjB,QAAQ,CACL,KAEN,QAAQ,CACT,CACI,EACP;KACH;;;;;;;;;;;","names":["checkEmptyOrType","checkEmptyOrOneOf","h","Host","version"],"sources":["src/utils/is-motion-reduced.ts","src/animations/collapse.ts","src/components/post-collapsible/heading-levels.ts","src/components/post-collapsible/post-collapsible.scss?tag=post-collapsible&encapsulation=shadow","src/components/post-collapsible/post-collapsible.tsx"],"sourcesContent":["export function isMotionReduced(): boolean {\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n","const collapseDuration = 350;\nconst collapseEasing = 'ease';\nconst collapsedKeyframe: Keyframe = { height: '0', overflow: 'hidden' };\n\nexport const collapse = (el: HTMLElement): Animation => {\n const { height } = window.getComputedStyle(el);\n const expandedKeyframe: Keyframe = { height };\n\n return el.animate(\n [expandedKeyframe, collapsedKeyframe],\n { duration: collapseDuration, easing: collapseEasing, fill: 'forwards' },\n );\n};\n\nexport const expand = (el: HTMLElement): Animation => {\n const expandedKeyframe: Keyframe = { height: `${el.scrollHeight}px` };\n\n return el.animate(\n [collapsedKeyframe, expandedKeyframe],\n { duration: collapseDuration, easing: collapseEasing, fill: 'forwards' },\n );\n};\n","export const HEADING_LEVELS = [1, 2, 3, 4, 5, 6] as const;\n\nexport type HeadingLevel = typeof HEADING_LEVELS[number];\n","@use '@swisspost/design-system-styles/components/accordion';\n\n:host {\n display: block;\n}\n\n.accordion-button {\n cursor: pointer;\n\n > ::slotted(.text-truncate) {\n display: block;\n }\n}\n\npost-collapsible + post-collapsible::part(accordion-item) {\n border-block-start: 0!important;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { version } from '../../../package.json';\nimport { collapse, expand } from '../../animations/collapse';\nimport { checkEmptyOrOneOf, checkEmptyOrType, isMotionReduced } from '../../utils';\nimport { HEADING_LEVELS, HeadingLevel } from './heading-levels';\n\n@Component({\n tag: 'post-collapsible',\n styleUrl: 'post-collapsible.scss',\n shadow: true,\n})\nexport class PostCollapsible {\n private isLoaded = false;\n private collapsible: HTMLElement;\n\n @Element() host: HTMLPostCollapsibleElement;\n\n @State() id: string;\n @State() isOpen = true;\n @State() hasHeader: boolean;\n @State() headingTag: string;\n\n /**\n * If `true`, the element is initially collapsed otherwise it is displayed.\n */\n @Prop() readonly collapsed?: boolean = false;\n\n @Watch('collapsed')\n validateCollapsed(newValue = this.collapsed) {\n checkEmptyOrType(\n newValue,\n 'boolean',\n 'The `collapsed` property of the `post-collapsible` must be a boolean.',\n );\n }\n\n /**\n * Defines the hierarchical level of the collapsible header within the headings structure.\n */\n @Prop() readonly headingLevel?: HeadingLevel = 2;\n\n @Watch('headingLevel')\n validateHeadingLevel(newValue = this.headingLevel) {\n checkEmptyOrOneOf(\n newValue,\n HEADING_LEVELS,\n 'The `headingLevel` property of the `post-collapsible` must be a number between 1 and 6.',\n );\n }\n\n /**\n * An event emitted when the collapse element is shown or hidden, before the transition. It has no payload.\n */\n @Event() collapseChange: EventEmitter<void>;\n\n connectedCallback() {\n this.validateCollapsed();\n this.validateHeadingLevel();\n }\n\n componentWillRender() {\n this.id = this.host.id || `c${crypto.randomUUID()}`;\n this.hasHeader = this.host.querySelectorAll('[slot=\"header\"]').length > 0;\n this.headingTag = `h${this.headingLevel ?? 2}`;\n }\n\n componentDidLoad() {\n if (this.collapsed) void this.toggle(false);\n this.isLoaded = true;\n }\n\n /**\n * Triggers the collapse programmatically.\n *\n * If there is a collapsing transition running already, it will be reversed.\n */\n @Method()\n async toggle(open = !this.isOpen): Promise<boolean> {\n if (open === this.isOpen) return open;\n\n this.isOpen = !this.isOpen;\n if (this.isLoaded) this.collapseChange.emit();\n\n const animation = open ? expand(this.collapsible) : collapse(this.collapsible);\n\n if (!this.isLoaded || isMotionReduced()) animation.finish();\n\n await animation.finished;\n\n animation.commitStyles();\n\n return this.isOpen;\n }\n\n render() {\n const collapse = (\n <div\n aria-labelledby={this.hasHeader ? `${this.id}--header` : undefined}\n class={`collapse${this.hasHeader ? ' accordion-collapse' : ''}`}\n id={`${this.id}--collapse`}\n ref={el => (this.collapsible = el)}\n >\n {this.hasHeader ? (\n <div class=\"accordion-body\">\n <slot />\n </div>\n ) : (\n <slot />\n )}\n </div>\n );\n\n return (\n <Host id={this.id} data-version={version}>\n {this.hasHeader ? (\n <div part=\"accordion-item\" class=\"accordion-item\">\n <this.headingTag class=\"accordion-header\" id={`${this.id}--header`}>\n <button\n aria-controls={`${this.id}--collapse`}\n aria-expanded={`${this.isOpen}`}\n class={`accordion-button${this.isOpen ? '' : ' collapsed'}`}\n onClick={() => this.toggle()}\n type=\"button\"\n >\n <slot name=\"header\" />\n </button>\n </this.headingTag>\n\n {collapse}\n </div>\n ) : (\n collapse\n )}\n </Host>\n );\n }\n}\n"],"version":3}