@onsvisual/svelte-components 1.0.44 → 1.0.45

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 (224) hide show
  1. package/README.md +24 -24
  2. package/dist/css/main.css +513 -2
  3. package/dist/datavis/BarChart/BarChart.stories.svelte +84 -84
  4. package/dist/datavis/BarChart/docs/component.md +19 -19
  5. package/dist/datavis/Chart/Chart.stories.svelte +128 -128
  6. package/dist/datavis/Chart/docs/component.md +31 -31
  7. package/dist/datavis/Chart/docs/example.md +28 -28
  8. package/dist/datavis/ColumnChart/ColumnChart.stories.svelte +84 -84
  9. package/dist/datavis/ColumnChart/docs/component.md +19 -19
  10. package/dist/datavis/DataCard/DataCard.stories.svelte +45 -45
  11. package/dist/datavis/DataCard/DataCard.svelte +70 -70
  12. package/dist/datavis/DataCard/Sparkline.svelte +117 -117
  13. package/dist/datavis/DataCard/docs/component.md +20 -20
  14. package/dist/datavis/DataCard/docs/example.md +25 -25
  15. package/dist/datavis/DotPlotChart/DotPlotChart.stories.svelte +40 -40
  16. package/dist/datavis/DotPlotChart/docs/component.md +19 -19
  17. package/dist/datavis/LineChart/LineChart.stories.svelte +64 -64
  18. package/dist/datavis/LineChart/docs/component.md +31 -31
  19. package/dist/datavis/ScatterChart/ScatterChart.stories.svelte +55 -55
  20. package/dist/datavis/ScatterChart/docs/component.md +53 -53
  21. package/dist/datavis/Table/Table.stories.svelte +48 -48
  22. package/dist/datavis/Table/Table.svelte +161 -161
  23. package/dist/datavis/Table/docs/component.md +20 -20
  24. package/dist/datavis/demo-data/data-scatter.js +40 -40
  25. package/dist/datavis/demo-data/data.js +18 -18
  26. package/dist/datavis/intro.mdx +21 -21
  27. package/dist/decorators/Blockquote/Blockquote.stories.svelte +25 -25
  28. package/dist/decorators/Blockquote/Blockquote.svelte +27 -27
  29. package/dist/decorators/Blockquote/docs/component.md +10 -10
  30. package/dist/decorators/Divider/Divider.stories.svelte +29 -29
  31. package/dist/decorators/Divider/Divider.svelte +52 -52
  32. package/dist/decorators/Divider/docs/component.md +12 -12
  33. package/dist/decorators/Em/Em.stories.svelte +30 -30
  34. package/dist/decorators/Em/Em.svelte +58 -58
  35. package/dist/decorators/Em/docs/component.md +12 -12
  36. package/dist/decorators/Icon/Icon.stories.svelte +27 -27
  37. package/dist/decorators/Icon/Icon.svelte +101 -93
  38. package/dist/decorators/Icon/Icon.svelte.d.ts +2 -2
  39. package/dist/decorators/Icon/docs/component.md +10 -10
  40. package/dist/decorators/Indent/Indent.stories.svelte +22 -22
  41. package/dist/decorators/Indent/Indent.svelte +3 -3
  42. package/dist/decorators/Indent/docs/component.md +10 -10
  43. package/dist/index.js +86 -86
  44. package/dist/inputs/Button/Button.stories.svelte +70 -70
  45. package/dist/inputs/Button/Button.svelte +152 -152
  46. package/dist/inputs/Button/Button.svelte.d.ts +2 -2
  47. package/dist/inputs/Button/docs/component.md +17 -17
  48. package/dist/inputs/ButtonGroup/ButtonGroup.stories.svelte +40 -40
  49. package/dist/inputs/ButtonGroup/ButtonGroup.svelte +57 -57
  50. package/dist/inputs/ButtonGroup/ButtonGroupItem.svelte +101 -101
  51. package/dist/inputs/ButtonGroup/docs/component.md +23 -23
  52. package/dist/inputs/Checkbox/Checkbox.stories.svelte +34 -34
  53. package/dist/inputs/Checkbox/Checkbox.svelte +180 -180
  54. package/dist/inputs/Checkbox/docs/component.md +14 -14
  55. package/dist/inputs/Checkboxes/Checkboxes.stories.svelte +34 -34
  56. package/dist/inputs/Checkboxes/Checkboxes.svelte +62 -62
  57. package/dist/inputs/Checkboxes/docs/component.md +20 -20
  58. package/dist/inputs/Checkboxes/docs/example.md +16 -16
  59. package/dist/inputs/Dropdown/Dropdown.stories.svelte +54 -54
  60. package/dist/inputs/Dropdown/Dropdown.svelte +66 -66
  61. package/dist/inputs/Dropdown/docs/component.md +22 -22
  62. package/dist/inputs/ErrorPanel/ErrorPanel.stories.svelte +25 -25
  63. package/dist/inputs/ErrorPanel/ErrorPanel.svelte +24 -24
  64. package/dist/inputs/ErrorPanel/docs/component.md +14 -14
  65. package/dist/inputs/ErrorSummary/ErrorSummary.stories.svelte +34 -34
  66. package/dist/inputs/ErrorSummary/ErrorSummary.svelte +47 -47
  67. package/dist/inputs/ErrorSummary/docs/component.md +17 -17
  68. package/dist/inputs/ErrorSummary/docs/example.md +12 -12
  69. package/dist/inputs/Input/Input.stories.svelte +73 -73
  70. package/dist/inputs/Input/Input.svelte +151 -151
  71. package/dist/inputs/Input/docs/component.md +16 -16
  72. package/dist/inputs/Radios/Radio.svelte +90 -90
  73. package/dist/inputs/Radios/Radios.stories.svelte +51 -51
  74. package/dist/inputs/Radios/Radios.svelte +62 -62
  75. package/dist/inputs/Radios/docs/component.md +24 -24
  76. package/dist/inputs/Radios/docs/example.md +21 -21
  77. package/dist/inputs/Select/Select.stories.svelte +63 -63
  78. package/dist/inputs/Select/Select.svelte +326 -326
  79. package/dist/inputs/Select/docs/component.md +27 -27
  80. package/dist/inputs/Textarea/Textarea.stories.svelte +40 -40
  81. package/dist/inputs/Textarea/Textarea.svelte +113 -113
  82. package/dist/inputs/Textarea/docs/component.md +16 -16
  83. package/dist/inputs/Toolbar/HelpModal.svelte +234 -234
  84. package/dist/inputs/Toolbar/ToolControl.svelte +23 -23
  85. package/dist/inputs/Toolbar/ToolControls.svelte +9 -9
  86. package/dist/inputs/Toolbar/Toolbar.stories.svelte +148 -148
  87. package/dist/inputs/Toolbar/Toolbar.svelte +70 -70
  88. package/dist/inputs/Toolbar/ToolbarButton.svelte +184 -184
  89. package/dist/inputs/Toolbar/ToolbarDivider.svelte +29 -29
  90. package/dist/inputs/Toolbar/ToolbarIcon.svelte +106 -106
  91. package/dist/inputs/Toolbar/ToolbarsContainer.svelte +69 -69
  92. package/dist/inputs/Toolbar/docs/component.md +101 -101
  93. package/dist/intro.mdx +66 -66
  94. package/dist/js/menuOptions.js +14 -14
  95. package/dist/js/utils.js +133 -133
  96. package/dist/js/withParams.js +43 -43
  97. package/dist/layout/Accordion/Accordion.stories.svelte +30 -30
  98. package/dist/layout/Accordion/Accordion.svelte +55 -55
  99. package/dist/layout/Accordion/AccordionItem.svelte +51 -51
  100. package/dist/layout/Accordion/accordion.js +64 -64
  101. package/dist/layout/Accordion/details.js +83 -83
  102. package/dist/layout/Accordion/docs/component.md +19 -19
  103. package/dist/layout/AnalyticsBanner/AnalyticsBanner.stories.svelte +16 -16
  104. package/dist/layout/AnalyticsBanner/AnalyticsBanner.svelte +314 -314
  105. package/dist/layout/AnalyticsBanner/docs/component.md +44 -44
  106. package/dist/layout/BackLink/BackLink.stories.svelte +16 -16
  107. package/dist/layout/BackLink/BackLink.svelte +30 -30
  108. package/dist/layout/BackLink/docs/component.md +12 -12
  109. package/dist/layout/Breadcrumb/Breadcrumb.stories.svelte +31 -31
  110. package/dist/layout/Breadcrumb/Breadcrumb.svelte +69 -69
  111. package/dist/layout/Breadcrumb/docs/component.md +15 -15
  112. package/dist/layout/Card/Card.stories.svelte +39 -39
  113. package/dist/layout/Card/Card.svelte +127 -127
  114. package/dist/layout/Card/docs/component.md +14 -14
  115. package/dist/layout/Card/docs/eg-images.md +27 -27
  116. package/dist/layout/Card/docs/eg-links.md +12 -12
  117. package/dist/layout/Card/docs/eg-spans.md +12 -12
  118. package/dist/layout/Contents/Contents.stories.svelte +27 -27
  119. package/dist/layout/Contents/Contents.svelte +51 -51
  120. package/dist/layout/Contents/docs/component.md +18 -18
  121. package/dist/layout/DescriptionList/DescriptionList.stories.svelte +22 -22
  122. package/dist/layout/DescriptionList/DescriptionList.svelte +59 -59
  123. package/dist/layout/DescriptionList/docs/component.md +18 -18
  124. package/dist/layout/Details/Details.stories.svelte +32 -32
  125. package/dist/layout/Details/Details.svelte +75 -75
  126. package/dist/layout/Details/docs/component.md +14 -14
  127. package/dist/layout/DocumentList/Document.svelte +103 -103
  128. package/dist/layout/DocumentList/DocumentList.stories.svelte +88 -88
  129. package/dist/layout/DocumentList/DocumentList.svelte +33 -33
  130. package/dist/layout/DocumentList/docs/component.md +28 -28
  131. package/dist/layout/DocumentList/docs/example.md +23 -23
  132. package/dist/layout/ErrorPage/ErrorPage.stories.svelte +18 -18
  133. package/dist/layout/ErrorPage/ErrorPage.svelte +48 -48
  134. package/dist/layout/ErrorPage/docs/component.md +13 -13
  135. package/dist/layout/Footer/Footer.stories.svelte +24 -24
  136. package/dist/layout/Footer/Footer.svelte +366 -366
  137. package/dist/layout/Footer/docs/component.md +10 -10
  138. package/dist/layout/Grid/Grid.stories.svelte +50 -50
  139. package/dist/layout/Grid/Grid.svelte +117 -117
  140. package/dist/layout/Grid/GridCell.svelte +65 -65
  141. package/dist/layout/Grid/docs/component.md +14 -14
  142. package/dist/layout/Header/Header.stories.svelte +26 -26
  143. package/dist/layout/Header/Header.svelte +875 -875
  144. package/dist/layout/Header/docs/component.md +11 -11
  145. package/dist/layout/Hero/Hero.stories.svelte +79 -79
  146. package/dist/layout/Hero/Hero.svelte +364 -364
  147. package/dist/layout/Hero/docs/component.md +14 -14
  148. package/dist/layout/Highlight/Highlight.stories.svelte +29 -29
  149. package/dist/layout/Highlight/Highlight.svelte +77 -77
  150. package/dist/layout/Highlight/docs/component.md +12 -12
  151. package/dist/layout/Image/Image.stories.svelte +23 -23
  152. package/dist/layout/Image/Image.svelte +29 -29
  153. package/dist/layout/Image/docs/component.md +15 -15
  154. package/dist/layout/List/Li.svelte +3 -3
  155. package/dist/layout/List/List.stories.svelte +40 -40
  156. package/dist/layout/List/List.svelte +46 -46
  157. package/dist/layout/List/docs/component.md +14 -14
  158. package/dist/layout/List/docs/example.md +12 -12
  159. package/dist/layout/NavSections/NavSection.svelte +90 -90
  160. package/dist/layout/NavSections/NavSections.stories.svelte +51 -51
  161. package/dist/layout/NavSections/NavSections.svelte +160 -160
  162. package/dist/layout/NavSections/docs/component.md +25 -25
  163. package/dist/layout/Notice/Notice.stories.svelte +61 -61
  164. package/dist/layout/Notice/Notice.svelte +56 -56
  165. package/dist/layout/Notice/docs/component.md +14 -14
  166. package/dist/layout/PhaseBanner/PhaseBanner.stories.svelte +24 -24
  167. package/dist/layout/PhaseBanner/PhaseBanner.svelte +66 -66
  168. package/dist/layout/PhaseBanner/docs/component.md +14 -14
  169. package/dist/layout/RelatedContent/RelatedContent.stories.svelte +36 -36
  170. package/dist/layout/RelatedContent/RelatedContent.svelte +54 -54
  171. package/dist/layout/RelatedContent/docs/component.md +16 -16
  172. package/dist/layout/Scroller/Scroller.stories.svelte +60 -60
  173. package/dist/layout/Scroller/Scroller.svelte +368 -368
  174. package/dist/layout/Scroller/ScrollerSection.svelte +70 -70
  175. package/dist/layout/Scroller/docs/component.md +39 -39
  176. package/dist/layout/Section/Section.stories.svelte +33 -33
  177. package/dist/layout/Section/Section.svelte +60 -60
  178. package/dist/layout/Section/docs/component.md +12 -12
  179. package/dist/layout/ShareButtons/ShareButtons.stories.svelte +20 -20
  180. package/dist/layout/ShareButtons/ShareButtons.svelte +131 -131
  181. package/dist/layout/ShareButtons/docs/component.md +14 -14
  182. package/dist/layout/SkipLink/SkipLink.stories.svelte +16 -16
  183. package/dist/layout/SkipLink/SkipLink.svelte +9 -9
  184. package/dist/layout/SkipLink/docs/component.md +11 -11
  185. package/dist/layout/Summary/Summary.stories.svelte +21 -21
  186. package/dist/layout/Summary/Summary.svelte +60 -60
  187. package/dist/layout/Summary/docs/component.md +17 -17
  188. package/dist/layout/Tabs/Tab.svelte +53 -53
  189. package/dist/layout/Tabs/Tabs.stories.svelte +29 -29
  190. package/dist/layout/Tabs/Tabs.svelte +89 -89
  191. package/dist/layout/Tabs/docs/component.md +16 -16
  192. package/dist/layout/Tabs/tabs.js +302 -302
  193. package/dist/layout/Timeline/Timeline.stories.svelte +44 -44
  194. package/dist/layout/Timeline/Timeline.svelte +17 -17
  195. package/dist/layout/Timeline/TimelineItem.svelte +14 -14
  196. package/dist/layout/Timeline/docs/component.md +27 -27
  197. package/dist/layout/Timeline/docs/example.md +20 -20
  198. package/dist/templates/EmbedArticle/EmbedArticle.stories.svelte +72 -72
  199. package/dist/templates/EmbedArticle/docs/component.md +56 -56
  200. package/dist/templates/FeatureArticle/FeatureArticle.stories.svelte +150 -150
  201. package/dist/templates/FeatureArticle/docs/component.md +125 -125
  202. package/dist/templates/StandardArticle/StandardArticle.stories.svelte +86 -86
  203. package/dist/templates/StandardArticle/docs/component.md +76 -76
  204. package/dist/templates/intro.mdx +18 -18
  205. package/dist/wrappers/Container/Container.stories.svelte +38 -38
  206. package/dist/wrappers/Container/Container.svelte +77 -77
  207. package/dist/wrappers/Container/docs/component.md +12 -12
  208. package/dist/wrappers/Embed/Embed.stories.svelte +24 -24
  209. package/dist/wrappers/Embed/Embed.svelte +44 -44
  210. package/dist/wrappers/Embed/docs/component.md +15 -15
  211. package/dist/wrappers/LazyLoad/LazyLoad.stories.svelte +37 -37
  212. package/dist/wrappers/LazyLoad/LazyLoad.svelte +50 -50
  213. package/dist/wrappers/LazyLoad/docs/component.md +29 -29
  214. package/dist/wrappers/Main/Main.stories.svelte +24 -24
  215. package/dist/wrappers/Main/Main.svelte +11 -11
  216. package/dist/wrappers/Main/docs/component.md +16 -16
  217. package/dist/wrappers/Observe/Observe.stories.svelte +29 -29
  218. package/dist/wrappers/Observe/Observe.svelte +40 -40
  219. package/dist/wrappers/Observe/docs/component.md +22 -22
  220. package/dist/wrappers/Theme/Theme.stories.svelte +70 -70
  221. package/dist/wrappers/Theme/Theme.svelte +76 -76
  222. package/dist/wrappers/Theme/docs/component.md +10 -10
  223. package/dist/wrappers/Theme/themes.js +70 -70
  224. package/package.json +88 -88
@@ -1,64 +1,64 @@
1
- export default class Accordion {
2
- constructor(button, detailsEls) {
3
- this.openDetailsEls = 0;
4
-
5
- this.button = button;
6
- this.buttonInner = button.querySelector(".ons-accordion__toggle-all-inner");
7
- this.group = button.getAttribute("data-group");
8
- this.detailsEls = detailsEls.filter((details) => details.group === this.group);
9
- this.totalDetailsEls = this.detailsEls.length;
10
- this.buttonOpenEl = this.buttonInner.querySelector(".ons-btn__text");
11
- this.buttonOpen = this.buttonOpenEl.innerHTML.trim();
12
- this.closeButton = button.getAttribute("data-close-all");
13
- this.open = this.detailsEls.find((details) => details.open === true);
14
-
15
- this.detailsEls.forEach((details) => {
16
- details.onOpen = this.onOpen.bind(this);
17
- details.onClose = this.onClose.bind(this);
18
- });
19
-
20
- if (this.open) {
21
- this.openDetailsEls = this.totalDetailsEls;
22
- }
23
-
24
- this.button.addEventListener("click", this.handleButtonClick.bind(this));
25
- this.setButton();
26
- this.button.classList.remove("ons-u-d-no");
27
- }
28
-
29
- handleButtonClick(event) {
30
- event.preventDefault();
31
-
32
- const open = !this.canClose();
33
-
34
- this.detailsEls.forEach((details) => {
35
- details.setOpen(open);
36
- });
37
- }
38
-
39
- onOpen() {
40
- this.openDetailsEls++;
41
- this.setButton();
42
- }
43
-
44
- onClose() {
45
- this.openDetailsEls--;
46
- this.setButton();
47
- }
48
-
49
- canClose() {
50
- return this.openDetailsEls === this.totalDetailsEls;
51
- }
52
-
53
- setButton() {
54
- if (this.canClose()) {
55
- this.buttonInner.innerHTML = this.closeButton;
56
- this.button.setAttribute("data-ga-label", this.buttonOpen);
57
- this.button.setAttribute("aria-expanded", "true");
58
- } else {
59
- this.buttonInner.innerHTML = this.buttonOpen;
60
- this.button.setAttribute("data-ga-label", this.closeButton);
61
- this.button.setAttribute("aria-expanded", "false");
62
- }
63
- }
64
- }
1
+ export default class Accordion {
2
+ constructor(button, detailsEls) {
3
+ this.openDetailsEls = 0;
4
+
5
+ this.button = button;
6
+ this.buttonInner = button.querySelector(".ons-accordion__toggle-all-inner");
7
+ this.group = button.getAttribute("data-group");
8
+ this.detailsEls = detailsEls.filter((details) => details.group === this.group);
9
+ this.totalDetailsEls = this.detailsEls.length;
10
+ this.buttonOpenEl = this.buttonInner.querySelector(".ons-btn__text");
11
+ this.buttonOpen = this.buttonOpenEl.innerHTML.trim();
12
+ this.closeButton = button.getAttribute("data-close-all");
13
+ this.open = this.detailsEls.find((details) => details.open === true);
14
+
15
+ this.detailsEls.forEach((details) => {
16
+ details.onOpen = this.onOpen.bind(this);
17
+ details.onClose = this.onClose.bind(this);
18
+ });
19
+
20
+ if (this.open) {
21
+ this.openDetailsEls = this.totalDetailsEls;
22
+ }
23
+
24
+ this.button.addEventListener("click", this.handleButtonClick.bind(this));
25
+ this.setButton();
26
+ this.button.classList.remove("ons-u-d-no");
27
+ }
28
+
29
+ handleButtonClick(event) {
30
+ event.preventDefault();
31
+
32
+ const open = !this.canClose();
33
+
34
+ this.detailsEls.forEach((details) => {
35
+ details.setOpen(open);
36
+ });
37
+ }
38
+
39
+ onOpen() {
40
+ this.openDetailsEls++;
41
+ this.setButton();
42
+ }
43
+
44
+ onClose() {
45
+ this.openDetailsEls--;
46
+ this.setButton();
47
+ }
48
+
49
+ canClose() {
50
+ return this.openDetailsEls === this.totalDetailsEls;
51
+ }
52
+
53
+ setButton() {
54
+ if (this.canClose()) {
55
+ this.buttonInner.innerHTML = this.closeButton;
56
+ this.button.setAttribute("data-ga-label", this.buttonOpen);
57
+ this.button.setAttribute("aria-expanded", "true");
58
+ } else {
59
+ this.buttonInner.innerHTML = this.buttonOpen;
60
+ this.button.setAttribute("data-ga-label", this.closeButton);
61
+ this.button.setAttribute("aria-expanded", "false");
62
+ }
63
+ }
64
+ }
@@ -1,83 +1,83 @@
1
- export default class Details {
2
- constructor(detailsElement) {
3
- this.saveState = detailsElement.getAttribute("data-save-state") === "true";
4
- this.open = detailsElement.getAttribute("data-open") === "true";
5
- this.group = detailsElement.getAttribute("data-group");
6
-
7
- // Elements
8
- this.details = detailsElement;
9
- this.detailsHeader = this.details.querySelector(".ons-js-details-heading");
10
- this.content = this.details.querySelector(".ons-js-details-content");
11
- this.detailsTitle = this.details.querySelector(".ons-js-corrections-details-title");
12
-
13
- // Initialise
14
- const detailsId = detailsElement.getAttribute("id");
15
-
16
- this.details.setAttribute("role", "group");
17
- this.detailsHeader.setAttribute("role", "link");
18
- this.detailsHeader.setAttribute("aria-controls", detailsId);
19
- this.detailsHeader.setAttribute("tabindex", 0);
20
-
21
- if (localStorage.getItem(detailsId) || this.open) {
22
- this.setOpen(true);
23
- } else {
24
- this.setOpen(false);
25
- }
26
-
27
- this.detailsHeader.addEventListener("click", this.toggle.bind(this));
28
- this.detailsHeader.addEventListener("keydown", this.keyboardInteraction.bind(this));
29
- this.details.classList.add("ons-details--initialised");
30
- }
31
-
32
- toggle(event) {
33
- event.preventDefault();
34
- this.setOpen(!this.isOpen);
35
- }
36
-
37
- setOpen(open) {
38
- if (open !== this.isOpen) {
39
- const action = open ? "Open" : "Close";
40
- const cls = open ? "add" : "remove";
41
- const openAttribute = open ? "set" : "remove";
42
- const setText = open ? "Close detail" : "Show detail";
43
-
44
- this.isOpen = open;
45
- this.details[`${openAttribute}Attribute`]("open", "");
46
- this.details.classList[cls]("ons-details--open");
47
- this.detailsHeader.setAttribute("aria-expanded", open);
48
- this.content.setAttribute("aria-hidden", !open);
49
- this.detailsHeader.setAttribute("data-ga-action", `${action} panel`);
50
- if (this.detailsTitle) {
51
- this.detailsTitle.textContent = setText;
52
- }
53
-
54
- if (this.onOpen && this.onClose) {
55
- if (open) {
56
- this.onOpen();
57
- } else {
58
- this.onClose();
59
- }
60
- }
61
- }
62
-
63
- if (this.saveState === true && open === true) {
64
- localStorage.setItem(this.details.getAttribute("id"), true);
65
- } else {
66
- localStorage.removeItem(this.details.getAttribute("id"));
67
- }
68
- }
69
-
70
- keyboardInteraction(event) {
71
- const keyCode = event.which;
72
- switch (keyCode) {
73
- // Enter/Space
74
- case 13:
75
- case 32:
76
- event.preventDefault();
77
- event.stopPropagation();
78
-
79
- this.toggle(event);
80
- break;
81
- }
82
- }
83
- }
1
+ export default class Details {
2
+ constructor(detailsElement) {
3
+ this.saveState = detailsElement.getAttribute("data-save-state") === "true";
4
+ this.open = detailsElement.getAttribute("data-open") === "true";
5
+ this.group = detailsElement.getAttribute("data-group");
6
+
7
+ // Elements
8
+ this.details = detailsElement;
9
+ this.detailsHeader = this.details.querySelector(".ons-js-details-heading");
10
+ this.content = this.details.querySelector(".ons-js-details-content");
11
+ this.detailsTitle = this.details.querySelector(".ons-js-corrections-details-title");
12
+
13
+ // Initialise
14
+ const detailsId = detailsElement.getAttribute("id");
15
+
16
+ this.details.setAttribute("role", "group");
17
+ this.detailsHeader.setAttribute("role", "link");
18
+ this.detailsHeader.setAttribute("aria-controls", detailsId);
19
+ this.detailsHeader.setAttribute("tabindex", 0);
20
+
21
+ if (localStorage.getItem(detailsId) || this.open) {
22
+ this.setOpen(true);
23
+ } else {
24
+ this.setOpen(false);
25
+ }
26
+
27
+ this.detailsHeader.addEventListener("click", this.toggle.bind(this));
28
+ this.detailsHeader.addEventListener("keydown", this.keyboardInteraction.bind(this));
29
+ this.details.classList.add("ons-details--initialised");
30
+ }
31
+
32
+ toggle(event) {
33
+ event.preventDefault();
34
+ this.setOpen(!this.isOpen);
35
+ }
36
+
37
+ setOpen(open) {
38
+ if (open !== this.isOpen) {
39
+ const action = open ? "Open" : "Close";
40
+ const cls = open ? "add" : "remove";
41
+ const openAttribute = open ? "set" : "remove";
42
+ const setText = open ? "Close detail" : "Show detail";
43
+
44
+ this.isOpen = open;
45
+ this.details[`${openAttribute}Attribute`]("open", "");
46
+ this.details.classList[cls]("ons-details--open");
47
+ this.detailsHeader.setAttribute("aria-expanded", open);
48
+ this.content.setAttribute("aria-hidden", !open);
49
+ this.detailsHeader.setAttribute("data-ga-action", `${action} panel`);
50
+ if (this.detailsTitle) {
51
+ this.detailsTitle.textContent = setText;
52
+ }
53
+
54
+ if (this.onOpen && this.onClose) {
55
+ if (open) {
56
+ this.onOpen();
57
+ } else {
58
+ this.onClose();
59
+ }
60
+ }
61
+ }
62
+
63
+ if (this.saveState === true && open === true) {
64
+ localStorage.setItem(this.details.getAttribute("id"), true);
65
+ } else {
66
+ localStorage.removeItem(this.details.getAttribute("id"));
67
+ }
68
+ }
69
+
70
+ keyboardInteraction(event) {
71
+ const keyCode = event.which;
72
+ switch (keyCode) {
73
+ // Enter/Space
74
+ case 13:
75
+ case 32:
76
+ event.preventDefault();
77
+ event.stopPropagation();
78
+
79
+ this.toggle(event);
80
+ break;
81
+ }
82
+ }
83
+ }
@@ -1,19 +1,19 @@
1
- An accordion component.
2
-
3
- Based on [this ONS Design System component](https://service-manual.ons.gov.uk/design-system/components/accordion).
4
-
5
- <!-- prettier-ignore -->
6
- ```html
7
- <script>
8
- import { Accordion, AccordionItem } from "@onsvisual/svelte-components";
9
- </script>
10
-
11
- <Accordion>
12
- <AccordionItem title="First item">
13
- <p>Contents of first item.</p>
14
- </AccordionItem>
15
- <AccordionItem title="Second item">
16
- <p>Contents of second item.</p>
17
- </AccordionItem>
18
- </Accordion>
19
- ```
1
+ An accordion component.
2
+
3
+ Based on [this ONS Design System component](https://service-manual.ons.gov.uk/design-system/components/accordion).
4
+
5
+ <!-- prettier-ignore -->
6
+ ```html
7
+ <script>
8
+ import { Accordion, AccordionItem } from "@onsvisual/svelte-components";
9
+ </script>
10
+
11
+ <Accordion>
12
+ <AccordionItem title="First item">
13
+ <p>Contents of first item.</p>
14
+ </AccordionItem>
15
+ <AccordionItem title="Second item">
16
+ <p>Contents of second item.</p>
17
+ </AccordionItem>
18
+ </Accordion>
19
+ ```
@@ -1,16 +1,16 @@
1
- <script module>
2
- import { defineMeta } from "@storybook/addon-svelte-csf";
3
- import { withComponentDocs } from "../../js/withParams.js";
4
- import AnalyticsBanner from "./AnalyticsBanner.svelte";
5
- import componentDocs from "./docs/component.md?raw";
6
-
7
- const { Story } = defineMeta({
8
- title: "Layout/AnalyticsBanner",
9
- component: AnalyticsBanner,
10
- tags: ["autodocs"],
11
- argTypes: {},
12
- parameters: { ...withComponentDocs(componentDocs), layout: "fullscreen" }
13
- });
14
- </script>
15
-
16
- <Story name="Default" args={{}} />
1
+ <script module>
2
+ import { defineMeta } from "@storybook/addon-svelte-csf";
3
+ import { withComponentDocs } from "../../js/withParams.js";
4
+ import AnalyticsBanner from "./AnalyticsBanner.svelte";
5
+ import componentDocs from "./docs/component.md?raw";
6
+
7
+ const { Story } = defineMeta({
8
+ title: "Layout/AnalyticsBanner",
9
+ component: AnalyticsBanner,
10
+ tags: ["autodocs"],
11
+ argTypes: {},
12
+ parameters: { ...withComponentDocs(componentDocs), layout: "fullscreen" }
13
+ });
14
+ </script>
15
+
16
+ <Story name="Default" args={{}} />