@onsvisual/svelte-components 1.0.44 → 1.0.46

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 +45 -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,59 +1,59 @@
1
- <script>
2
- /**
3
- * Sets the title of the list (for screen readers)
4
- * @type {string|null}
5
- */
6
- export let title = null;
7
- /**
8
- * Array of items in format {key, value} where "value" may be an array of multiple values
9
- * @type {object[]}
10
- */
11
- export let items = [];
12
- /**
13
- * Option to change layout to "inline", eg. for title blocks
14
- * @type {"default"|"inline"}
15
- */
16
- export let mode = "default";
17
- /**
18
- * Optional: Set an additional CSS class for the component
19
- * @type {string|null}
20
- */
21
- export let cls = null;
22
- </script>
23
-
24
- <dl
25
- class="ons-description-list ons-description-list__items ons-grid ons-grid--gutterless ons-u-mb-no {cls} {mode ===
26
- 'inline'
27
- ? 'ons-description-list--inline ons-u-mt-s ons-u-mt-l@l'
28
- : 'ons-u-cf'}"
29
- {title}
30
- aria-label={title}
31
- >
32
- {#each items as item}
33
- <div class="ons-description-list__item">
34
- <dt
35
- class="ons-description-list__term ons-grid__col {mode === 'inline'
36
- ? 'ons-col-4@s@l'
37
- : 'ons-col-2@m'}"
38
- >
39
- {item.key}:
40
- </dt>
41
- {#each [item.value].flat() as value}
42
- <dd
43
- class="ons-description-list__value ons-grid__col {mode === 'inline'
44
- ? 'ons-col-8@s@l'
45
- : 'ons-col-10@m'}"
46
- >
47
- {@html value}
48
- </dd>
49
- {/each}
50
- </div>
51
- {/each}
52
- </dl>
53
-
54
- <style>
55
- /* Fix for inline wrapping on narrower container widths */
56
- .ons-description-list--inline {
57
- grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
58
- }
59
- </style>
1
+ <script>
2
+ /**
3
+ * Sets the title of the list (for screen readers)
4
+ * @type {string|null}
5
+ */
6
+ export let title = null;
7
+ /**
8
+ * Array of items in format {key, value} where "value" may be an array of multiple values
9
+ * @type {object[]}
10
+ */
11
+ export let items = [];
12
+ /**
13
+ * Option to change layout to "inline", eg. for title blocks
14
+ * @type {"default"|"inline"}
15
+ */
16
+ export let mode = "default";
17
+ /**
18
+ * Optional: Set an additional CSS class for the component
19
+ * @type {string|null}
20
+ */
21
+ export let cls = null;
22
+ </script>
23
+
24
+ <dl
25
+ class="ons-description-list ons-description-list__items ons-grid ons-grid--gutterless ons-u-mb-no {cls} {mode ===
26
+ 'inline'
27
+ ? 'ons-description-list--inline ons-u-mt-s ons-u-mt-l@l'
28
+ : 'ons-u-cf'}"
29
+ {title}
30
+ aria-label={title}
31
+ >
32
+ {#each items as item}
33
+ <div class="ons-description-list__item">
34
+ <dt
35
+ class="ons-description-list__term ons-grid__col {mode === 'inline'
36
+ ? 'ons-col-4@s@l'
37
+ : 'ons-col-2@m'}"
38
+ >
39
+ {item.key}:
40
+ </dt>
41
+ {#each [item.value].flat() as value}
42
+ <dd
43
+ class="ons-description-list__value ons-grid__col {mode === 'inline'
44
+ ? 'ons-col-8@s@l'
45
+ : 'ons-col-10@m'}"
46
+ >
47
+ {@html value}
48
+ </dd>
49
+ {/each}
50
+ </div>
51
+ {/each}
52
+ </dl>
53
+
54
+ <style>
55
+ /* Fix for inline wrapping on narrower container widths */
56
+ .ons-description-list--inline {
57
+ grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
58
+ }
59
+ </style>
@@ -1,18 +1,18 @@
1
- A component to display metadata in a tabular format.
2
-
3
- Based on this [ONS Design System component](https://service-manual.ons.gov.uk/design-system/components/description-list).
4
-
5
- <!-- prettier-ignore -->
6
- ```html
7
- <script>
8
- import { DescriptionList } from "@onsvisual/svelte-components";
9
-
10
- const items = [
11
- { key: "Survey", value: "Bricks & Blocks" },
12
- { key: "RU Refs", value: [49900000118, 49300005832]},
13
- { key: "To", value: "<a href='mailto:'>A Person</a>"}
14
- ];
15
- </script>
16
-
17
- <DescriptionList {items}/>
18
- ```
1
+ A component to display metadata in a tabular format.
2
+
3
+ Based on this [ONS Design System component](https://service-manual.ons.gov.uk/design-system/components/description-list).
4
+
5
+ <!-- prettier-ignore -->
6
+ ```html
7
+ <script>
8
+ import { DescriptionList } from "@onsvisual/svelte-components";
9
+
10
+ const items = [
11
+ { key: "Survey", value: "Bricks & Blocks" },
12
+ { key: "RU Refs", value: [49900000118, 49300005832]},
13
+ { key: "To", value: "<a href='mailto:'>A Person</a>"}
14
+ ];
15
+ </script>
16
+
17
+ <DescriptionList {items}/>
18
+ ```
@@ -1,32 +1,32 @@
1
- <script module>
2
- import { defineMeta } from "@storybook/addon-svelte-csf";
3
- import { withComponentDocs } from "../../js/withParams.js";
4
- import Details from "./Details.svelte";
5
- import componentDocs from "./docs/component.md?raw";
6
-
7
- const { Story } = defineMeta({
8
- title: "Layout/Details",
9
- component: Details,
10
- tags: ["autodocs"],
11
- argTypes: {},
12
- parameters: withComponentDocs(componentDocs)
13
- });
14
- </script>
15
-
16
- {#snippet template(args)}
17
- <Details {...args}>
18
- <p>{@html args.content || ""}</p>
19
- </Details>
20
- {/snippet}
21
-
22
- <Story
23
- name="Default"
24
- args={{ title: "Title of twisty", content: "Contents of twisty." }}
25
- {template}
26
- />
27
-
28
- <Story
29
- name="Open by default"
30
- args={{ title: "Title of twisty", content: "Contents of twisty.", open: true }}
31
- {template}
32
- />
1
+ <script module>
2
+ import { defineMeta } from "@storybook/addon-svelte-csf";
3
+ import { withComponentDocs } from "../../js/withParams.js";
4
+ import Details from "./Details.svelte";
5
+ import componentDocs from "./docs/component.md?raw";
6
+
7
+ const { Story } = defineMeta({
8
+ title: "Layout/Details",
9
+ component: Details,
10
+ tags: ["autodocs"],
11
+ argTypes: {},
12
+ parameters: withComponentDocs(componentDocs)
13
+ });
14
+ </script>
15
+
16
+ {#snippet template(args)}
17
+ <Details {...args}>
18
+ <p>{@html args.content || ""}</p>
19
+ </Details>
20
+ {/snippet}
21
+
22
+ <Story
23
+ name="Default"
24
+ args={{ title: "Title of twisty", content: "Contents of twisty." }}
25
+ {template}
26
+ />
27
+
28
+ <Story
29
+ name="Open by default"
30
+ args={{ title: "Title of twisty", content: "Contents of twisty.", open: true }}
31
+ {template}
32
+ />
@@ -1,75 +1,75 @@
1
- <script>
2
- import { createEventDispatcher } from "svelte";
3
-
4
- const dispatch = createEventDispatcher();
5
-
6
- /**
7
- * A title for the element
8
- * @type {string}
9
- */
10
- export let title = "Title";
11
- /**
12
- * Set the heading level for the title
13
- * @type {"h2"|"h3"}
14
- */
15
- export let headingTag = "h2";
16
- /**
17
- * Option for element to be open/expanded by default
18
- * @type {boolean}
19
- */
20
- export let open = false;
21
- /**
22
- * Optional: Set an additional CSS class for the component
23
- * @type {string|null}
24
- */
25
- export let cls = null;
26
-
27
- function doToggle(e) {
28
- dispatch("toggle", { open: e.newState === "open", e });
29
- }
30
- </script>
31
-
32
- <details
33
- class="ons-details ons-js-details ons-details--initialised {cls}"
34
- class:ons-details--open={open}
35
- bind:open
36
- on:toggle={doToggle}
37
- >
38
- <summary
39
- class="ons-details__heading ons-js-details-heading"
40
- aria-expanded={open}
41
- data-ga-action={open ? "Close panel" : "Open panel"}
42
- >
43
- {#if headingTag === "h3"}
44
- <h3 class="ons-details__title ons-u-fs-r--b">{title}</h3>
45
- {:else}
46
- <h2 class="ons-details__title ons-u-fs-r--b">{title}</h2>
47
- {/if}
48
- <span class="ons-details__icon">
49
- <svg
50
- class="ons-icon"
51
- viewBox="0 0 8 13"
52
- xmlns="http://www.w3.org/2000/svg"
53
- focusable="false"
54
- fill="currentColor"
55
- role="img"
56
- title="ons-icon-chevron"
57
- >
58
- <path
59
- d="M5.74,14.28l-.57-.56a.5.5,0,0,1,0-.71h0l5-5-5-5a.5.5,0,0,1,0-.71h0l.57-.56a.5.5,0,0,1,.71,0h0l5.93,5.93a.5.5,0,0,1,0,.7L6.45,14.28a.5.5,0,0,1-.71,0Z"
60
- transform="translate(-5.02 -1.59)"
61
- />
62
- </svg></span
63
- >
64
- </summary>
65
- <div class="ons-details__content ons-js-details-content">
66
- <slot />
67
- </div>
68
- </details>
69
-
70
- <style>
71
- .ons-details__content {
72
- /* hack to ensure that contents can be found when closed by using ctrl-F */
73
- display: block;
74
- }
75
- </style>
1
+ <script>
2
+ import { createEventDispatcher } from "svelte";
3
+
4
+ const dispatch = createEventDispatcher();
5
+
6
+ /**
7
+ * A title for the element
8
+ * @type {string}
9
+ */
10
+ export let title = "Title";
11
+ /**
12
+ * Set the heading level for the title
13
+ * @type {"h2"|"h3"}
14
+ */
15
+ export let headingTag = "h2";
16
+ /**
17
+ * Option for element to be open/expanded by default
18
+ * @type {boolean}
19
+ */
20
+ export let open = false;
21
+ /**
22
+ * Optional: Set an additional CSS class for the component
23
+ * @type {string|null}
24
+ */
25
+ export let cls = null;
26
+
27
+ function doToggle(e) {
28
+ dispatch("toggle", { open: e.newState === "open", e });
29
+ }
30
+ </script>
31
+
32
+ <details
33
+ class="ons-details ons-js-details ons-details--initialised {cls}"
34
+ class:ons-details--open={open}
35
+ bind:open
36
+ on:toggle={doToggle}
37
+ >
38
+ <summary
39
+ class="ons-details__heading ons-js-details-heading"
40
+ aria-expanded={open}
41
+ data-ga-action={open ? "Close panel" : "Open panel"}
42
+ >
43
+ {#if headingTag === "h3"}
44
+ <h3 class="ons-details__title ons-u-fs-r--b">{title}</h3>
45
+ {:else}
46
+ <h2 class="ons-details__title ons-u-fs-r--b">{title}</h2>
47
+ {/if}
48
+ <span class="ons-details__icon">
49
+ <svg
50
+ class="ons-icon"
51
+ viewBox="0 0 8 13"
52
+ xmlns="http://www.w3.org/2000/svg"
53
+ focusable="false"
54
+ fill="currentColor"
55
+ role="img"
56
+ title="ons-icon-chevron"
57
+ >
58
+ <path
59
+ d="M5.74,14.28l-.57-.56a.5.5,0,0,1,0-.71h0l5-5-5-5a.5.5,0,0,1,0-.71h0l.57-.56a.5.5,0,0,1,.71,0h0l5.93,5.93a.5.5,0,0,1,0,.7L6.45,14.28a.5.5,0,0,1-.71,0Z"
60
+ transform="translate(-5.02 -1.59)"
61
+ />
62
+ </svg></span
63
+ >
64
+ </summary>
65
+ <div class="ons-details__content ons-js-details-content">
66
+ <slot />
67
+ </div>
68
+ </details>
69
+
70
+ <style>
71
+ .ons-details__content {
72
+ /* hack to ensure that contents can be found when closed by using ctrl-F */
73
+ display: block;
74
+ }
75
+ </style>
@@ -1,14 +1,14 @@
1
- An expandable `<details>` ("twisty") component, which can be open or closed by default.
2
-
3
- This component is based on this [ONS Design System component](https://service-manual.ons.gov.uk/design-system/components/details), but intentionally uses the vanilla HTML `<details>` component to ensure that its content can be found when searching the page.
4
-
5
- <!-- prettier-ignore -->
6
- ```html
7
- <script>
8
- import { Details } from "@onsvisual/svelte-components";
9
- </script>
10
-
11
- <Details title="Title of twisty">
12
- <p>Contents of twisty</p>
13
- </Details>
14
- ```
1
+ An expandable `<details>` ("twisty") component, which can be open or closed by default.
2
+
3
+ This component is based on this [ONS Design System component](https://service-manual.ons.gov.uk/design-system/components/details), but intentionally uses the vanilla HTML `<details>` component to ensure that its content can be found when searching the page.
4
+
5
+ <!-- prettier-ignore -->
6
+ ```html
7
+ <script>
8
+ import { Details } from "@onsvisual/svelte-components";
9
+ </script>
10
+
11
+ <Details title="Title of twisty">
12
+ <p>Contents of twisty</p>
13
+ </Details>
14
+ ```
@@ -1,103 +1,103 @@
1
- <script>
2
- /**
3
- * The title of the document
4
- * @type {string|null}
5
- */
6
- export let title = null;
7
- /**
8
- * Set the heading level for the title
9
- * @type {"h2"|"h3"}
10
- */
11
- export let headingTag = "h2";
12
- /**
13
- * The URL of the document
14
- * @type {string|null}
15
- */
16
- export let href = null;
17
- /**
18
- * A description of the document
19
- * @type {string|null}
20
- */
21
- export let description = null;
22
- /**
23
- * Optional: URL of image to represent the document (use "true" for a placeholder)
24
- * @type {string|boolean}
25
- */
26
- export let image = false;
27
- /**
28
- * Highlight document as a featured item (inset on grey background)
29
- * @type {boolean}
30
- */
31
- export let featured = false;
32
- /**
33
- * Metadata about the type of document linked to (can include HTML)
34
- * @type {string|null}
35
- */
36
- export let meta = null;
37
- </script>
38
-
39
- <li class="ons-document-list__item" class:ons-document-list__item--featured={featured}>
40
- {#if image}
41
- <div
42
- class="ons-document-list__item-image ons-document-list__item-image--file"
43
- aria-hidden="true"
44
- >
45
- <a
46
- class="ons-document-list__image-link"
47
- class:ons-document-list__image-link--placeholder={image === true}
48
- {href}
49
- tabindex="-1"
50
- >
51
- {#if typeof image === "string"}
52
- <img src={image} alt="" loading="lazy" />
53
- {/if}
54
- </a>
55
- </div>
56
- {/if}
57
- <div class="ons-document-list__item-content">
58
- <div class="ons-document-list__item-header">
59
- {#if headingTag === "h3"}
60
- <h3 class="ons-document-list__item-title ons-u-fs-m ons-u-mt-no ons-u-mb-2xs">
61
- <a {href}
62
- >{title}
63
- {#if meta}<span class="ons-u-vh">{meta}</span>{/if}
64
- </a>
65
- </h3>
66
- {:else}
67
- <h2 class="ons-document-list__item-title ons-u-fs-m ons-u-mt-no ons-u-mb-2xs">
68
- <a {href}
69
- >{title}
70
- {#if meta}<span class="ons-u-vh">{meta}</span>{/if}
71
- </a>
72
- </h2>
73
- {/if}
74
- {#if meta}
75
- <ul class="ons-document-list__item-metadata ons-u-mb-2xs">
76
- <li class="ons-document-list__item-attribute" aria-hidden="true">{@html meta}</li>
77
- </ul>
78
- {/if}
79
- </div>
80
- {#if description}
81
- <div class="ons-document-list__item-description">
82
- <slot />
83
- {@html description}
84
- </div>
85
- {/if}
86
- </div>
87
- </li>
88
-
89
- <style>
90
- .ons-document-list__item-image--file .ons-document-list__image-link--placeholder {
91
- display: block;
92
- height: 136px;
93
- }
94
- .ons-document-list__image-link--placeholder {
95
- background-clip: padding-box;
96
- background-color: var(--ons-color-placeholder);
97
- background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3e%3cpath fill='%23fff' d='M0 19.39c.49-1 1-2 1.55-2.93A31.59 31.59 0 0 1 0 11.72v7.67ZM3 0S0 0 0 3.7v2a34.85 34.85 0 0 0 2.17 9.76A31.2 31.2 0 0 1 8.3 8.3c4.84-4.16 11.36-7 20.21-8.29Zm28.84 2c-10.11 1-17 3.86-22 8.1a29.78 29.78 0 0 0-6.49 8C7.26 25.65 14.66 31.19 27 32h1.21A3.71 3.71 0 0 0 32 27.91V2a.41.41 0 0 1-.16 0Zm-26 21.49a25.94 25.94 0 0 1-3-4.4A48 48 0 0 0 0 25.71V32h20.23a26.41 26.41 0 0 1-14.39-8.49Z'/%3e%3c/svg%3e");
98
- background-position: center;
99
- background-repeat: no-repeat;
100
- background-size: 32px 32px;
101
- height: 100%;
102
- }
103
- </style>
1
+ <script>
2
+ /**
3
+ * The title of the document
4
+ * @type {string|null}
5
+ */
6
+ export let title = null;
7
+ /**
8
+ * Set the heading level for the title
9
+ * @type {"h2"|"h3"}
10
+ */
11
+ export let headingTag = "h2";
12
+ /**
13
+ * The URL of the document
14
+ * @type {string|null}
15
+ */
16
+ export let href = null;
17
+ /**
18
+ * A description of the document
19
+ * @type {string|null}
20
+ */
21
+ export let description = null;
22
+ /**
23
+ * Optional: URL of image to represent the document (use "true" for a placeholder)
24
+ * @type {string|boolean}
25
+ */
26
+ export let image = false;
27
+ /**
28
+ * Highlight document as a featured item (inset on grey background)
29
+ * @type {boolean}
30
+ */
31
+ export let featured = false;
32
+ /**
33
+ * Metadata about the type of document linked to (can include HTML)
34
+ * @type {string|null}
35
+ */
36
+ export let meta = null;
37
+ </script>
38
+
39
+ <li class="ons-document-list__item" class:ons-document-list__item--featured={featured}>
40
+ {#if image}
41
+ <div
42
+ class="ons-document-list__item-image ons-document-list__item-image--file"
43
+ aria-hidden="true"
44
+ >
45
+ <a
46
+ class="ons-document-list__image-link"
47
+ class:ons-document-list__image-link--placeholder={image === true}
48
+ {href}
49
+ tabindex="-1"
50
+ >
51
+ {#if typeof image === "string"}
52
+ <img src={image} alt="" loading="lazy" />
53
+ {/if}
54
+ </a>
55
+ </div>
56
+ {/if}
57
+ <div class="ons-document-list__item-content">
58
+ <div class="ons-document-list__item-header">
59
+ {#if headingTag === "h3"}
60
+ <h3 class="ons-document-list__item-title ons-u-fs-m ons-u-mt-no ons-u-mb-2xs">
61
+ <a {href}
62
+ >{title}
63
+ {#if meta}<span class="ons-u-vh">{meta}</span>{/if}
64
+ </a>
65
+ </h3>
66
+ {:else}
67
+ <h2 class="ons-document-list__item-title ons-u-fs-m ons-u-mt-no ons-u-mb-2xs">
68
+ <a {href}
69
+ >{title}
70
+ {#if meta}<span class="ons-u-vh">{meta}</span>{/if}
71
+ </a>
72
+ </h2>
73
+ {/if}
74
+ {#if meta}
75
+ <ul class="ons-document-list__item-metadata ons-u-mb-2xs">
76
+ <li class="ons-document-list__item-attribute" aria-hidden="true">{@html meta}</li>
77
+ </ul>
78
+ {/if}
79
+ </div>
80
+ {#if description}
81
+ <div class="ons-document-list__item-description">
82
+ <slot />
83
+ {@html description}
84
+ </div>
85
+ {/if}
86
+ </div>
87
+ </li>
88
+
89
+ <style>
90
+ .ons-document-list__item-image--file .ons-document-list__image-link--placeholder {
91
+ display: block;
92
+ height: 136px;
93
+ }
94
+ .ons-document-list__image-link--placeholder {
95
+ background-clip: padding-box;
96
+ background-color: var(--ons-color-placeholder);
97
+ background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3e%3cpath fill='%23fff' d='M0 19.39c.49-1 1-2 1.55-2.93A31.59 31.59 0 0 1 0 11.72v7.67ZM3 0S0 0 0 3.7v2a34.85 34.85 0 0 0 2.17 9.76A31.2 31.2 0 0 1 8.3 8.3c4.84-4.16 11.36-7 20.21-8.29Zm28.84 2c-10.11 1-17 3.86-22 8.1a29.78 29.78 0 0 0-6.49 8C7.26 25.65 14.66 31.19 27 32h1.21A3.71 3.71 0 0 0 32 27.91V2a.41.41 0 0 1-.16 0Zm-26 21.49a25.94 25.94 0 0 1-3-4.4A48 48 0 0 0 0 25.71V32h20.23a26.41 26.41 0 0 1-14.39-8.49Z'/%3e%3c/svg%3e");
98
+ background-position: center;
99
+ background-repeat: no-repeat;
100
+ background-size: 32px 32px;
101
+ height: 100%;
102
+ }
103
+ </style>