@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.
- package/README.md +24 -24
- package/dist/css/main.css +513 -2
- package/dist/datavis/BarChart/BarChart.stories.svelte +84 -84
- package/dist/datavis/BarChart/docs/component.md +19 -19
- package/dist/datavis/Chart/Chart.stories.svelte +128 -128
- package/dist/datavis/Chart/docs/component.md +31 -31
- package/dist/datavis/Chart/docs/example.md +28 -28
- package/dist/datavis/ColumnChart/ColumnChart.stories.svelte +84 -84
- package/dist/datavis/ColumnChart/docs/component.md +19 -19
- package/dist/datavis/DataCard/DataCard.stories.svelte +45 -45
- package/dist/datavis/DataCard/DataCard.svelte +70 -70
- package/dist/datavis/DataCard/Sparkline.svelte +117 -117
- package/dist/datavis/DataCard/docs/component.md +20 -20
- package/dist/datavis/DataCard/docs/example.md +25 -25
- package/dist/datavis/DotPlotChart/DotPlotChart.stories.svelte +40 -40
- package/dist/datavis/DotPlotChart/docs/component.md +19 -19
- package/dist/datavis/LineChart/LineChart.stories.svelte +64 -64
- package/dist/datavis/LineChart/docs/component.md +31 -31
- package/dist/datavis/ScatterChart/ScatterChart.stories.svelte +55 -55
- package/dist/datavis/ScatterChart/docs/component.md +53 -53
- package/dist/datavis/Table/Table.stories.svelte +48 -48
- package/dist/datavis/Table/Table.svelte +161 -161
- package/dist/datavis/Table/docs/component.md +20 -20
- package/dist/datavis/demo-data/data-scatter.js +40 -40
- package/dist/datavis/demo-data/data.js +18 -18
- package/dist/datavis/intro.mdx +21 -21
- package/dist/decorators/Blockquote/Blockquote.stories.svelte +25 -25
- package/dist/decorators/Blockquote/Blockquote.svelte +27 -27
- package/dist/decorators/Blockquote/docs/component.md +10 -10
- package/dist/decorators/Divider/Divider.stories.svelte +29 -29
- package/dist/decorators/Divider/Divider.svelte +52 -52
- package/dist/decorators/Divider/docs/component.md +12 -12
- package/dist/decorators/Em/Em.stories.svelte +30 -30
- package/dist/decorators/Em/Em.svelte +58 -58
- package/dist/decorators/Em/docs/component.md +12 -12
- package/dist/decorators/Icon/Icon.stories.svelte +27 -27
- package/dist/decorators/Icon/Icon.svelte +101 -93
- package/dist/decorators/Icon/Icon.svelte.d.ts +2 -2
- package/dist/decorators/Icon/docs/component.md +10 -10
- package/dist/decorators/Indent/Indent.stories.svelte +22 -22
- package/dist/decorators/Indent/Indent.svelte +3 -3
- package/dist/decorators/Indent/docs/component.md +10 -10
- package/dist/index.js +86 -86
- package/dist/inputs/Button/Button.stories.svelte +70 -70
- package/dist/inputs/Button/Button.svelte +152 -152
- package/dist/inputs/Button/Button.svelte.d.ts +2 -2
- package/dist/inputs/Button/docs/component.md +17 -17
- package/dist/inputs/ButtonGroup/ButtonGroup.stories.svelte +40 -40
- package/dist/inputs/ButtonGroup/ButtonGroup.svelte +57 -57
- package/dist/inputs/ButtonGroup/ButtonGroupItem.svelte +101 -101
- package/dist/inputs/ButtonGroup/docs/component.md +23 -23
- package/dist/inputs/Checkbox/Checkbox.stories.svelte +34 -34
- package/dist/inputs/Checkbox/Checkbox.svelte +180 -180
- package/dist/inputs/Checkbox/docs/component.md +14 -14
- package/dist/inputs/Checkboxes/Checkboxes.stories.svelte +34 -34
- package/dist/inputs/Checkboxes/Checkboxes.svelte +62 -62
- package/dist/inputs/Checkboxes/docs/component.md +20 -20
- package/dist/inputs/Checkboxes/docs/example.md +16 -16
- package/dist/inputs/Dropdown/Dropdown.stories.svelte +54 -54
- package/dist/inputs/Dropdown/Dropdown.svelte +66 -66
- package/dist/inputs/Dropdown/docs/component.md +22 -22
- package/dist/inputs/ErrorPanel/ErrorPanel.stories.svelte +25 -25
- package/dist/inputs/ErrorPanel/ErrorPanel.svelte +24 -24
- package/dist/inputs/ErrorPanel/docs/component.md +14 -14
- package/dist/inputs/ErrorSummary/ErrorSummary.stories.svelte +34 -34
- package/dist/inputs/ErrorSummary/ErrorSummary.svelte +47 -47
- package/dist/inputs/ErrorSummary/docs/component.md +17 -17
- package/dist/inputs/ErrorSummary/docs/example.md +12 -12
- package/dist/inputs/Input/Input.stories.svelte +73 -73
- package/dist/inputs/Input/Input.svelte +151 -151
- package/dist/inputs/Input/docs/component.md +16 -16
- package/dist/inputs/Radios/Radio.svelte +90 -90
- package/dist/inputs/Radios/Radios.stories.svelte +51 -51
- package/dist/inputs/Radios/Radios.svelte +62 -62
- package/dist/inputs/Radios/docs/component.md +24 -24
- package/dist/inputs/Radios/docs/example.md +21 -21
- package/dist/inputs/Select/Select.stories.svelte +63 -63
- package/dist/inputs/Select/Select.svelte +326 -326
- package/dist/inputs/Select/docs/component.md +27 -27
- package/dist/inputs/Textarea/Textarea.stories.svelte +40 -40
- package/dist/inputs/Textarea/Textarea.svelte +113 -113
- package/dist/inputs/Textarea/docs/component.md +16 -16
- package/dist/inputs/Toolbar/HelpModal.svelte +234 -234
- package/dist/inputs/Toolbar/ToolControl.svelte +23 -23
- package/dist/inputs/Toolbar/ToolControls.svelte +9 -9
- package/dist/inputs/Toolbar/Toolbar.stories.svelte +148 -148
- package/dist/inputs/Toolbar/Toolbar.svelte +70 -70
- package/dist/inputs/Toolbar/ToolbarButton.svelte +184 -184
- package/dist/inputs/Toolbar/ToolbarDivider.svelte +29 -29
- package/dist/inputs/Toolbar/ToolbarIcon.svelte +106 -106
- package/dist/inputs/Toolbar/ToolbarsContainer.svelte +69 -69
- package/dist/inputs/Toolbar/docs/component.md +101 -101
- package/dist/intro.mdx +66 -66
- package/dist/js/menuOptions.js +14 -14
- package/dist/js/utils.js +133 -133
- package/dist/js/withParams.js +43 -43
- package/dist/layout/Accordion/Accordion.stories.svelte +30 -30
- package/dist/layout/Accordion/Accordion.svelte +55 -55
- package/dist/layout/Accordion/AccordionItem.svelte +51 -51
- package/dist/layout/Accordion/accordion.js +64 -64
- package/dist/layout/Accordion/details.js +83 -83
- package/dist/layout/Accordion/docs/component.md +19 -19
- package/dist/layout/AnalyticsBanner/AnalyticsBanner.stories.svelte +16 -16
- package/dist/layout/AnalyticsBanner/AnalyticsBanner.svelte +314 -314
- package/dist/layout/AnalyticsBanner/docs/component.md +44 -44
- package/dist/layout/BackLink/BackLink.stories.svelte +16 -16
- package/dist/layout/BackLink/BackLink.svelte +30 -30
- package/dist/layout/BackLink/docs/component.md +12 -12
- package/dist/layout/Breadcrumb/Breadcrumb.stories.svelte +31 -31
- package/dist/layout/Breadcrumb/Breadcrumb.svelte +69 -69
- package/dist/layout/Breadcrumb/docs/component.md +15 -15
- package/dist/layout/Card/Card.stories.svelte +39 -39
- package/dist/layout/Card/Card.svelte +127 -127
- package/dist/layout/Card/docs/component.md +14 -14
- package/dist/layout/Card/docs/eg-images.md +27 -27
- package/dist/layout/Card/docs/eg-links.md +12 -12
- package/dist/layout/Card/docs/eg-spans.md +12 -12
- package/dist/layout/Contents/Contents.stories.svelte +27 -27
- package/dist/layout/Contents/Contents.svelte +51 -51
- package/dist/layout/Contents/docs/component.md +18 -18
- package/dist/layout/DescriptionList/DescriptionList.stories.svelte +22 -22
- package/dist/layout/DescriptionList/DescriptionList.svelte +59 -59
- package/dist/layout/DescriptionList/docs/component.md +18 -18
- package/dist/layout/Details/Details.stories.svelte +32 -32
- package/dist/layout/Details/Details.svelte +75 -75
- package/dist/layout/Details/docs/component.md +14 -14
- package/dist/layout/DocumentList/Document.svelte +103 -103
- package/dist/layout/DocumentList/DocumentList.stories.svelte +88 -88
- package/dist/layout/DocumentList/DocumentList.svelte +33 -33
- package/dist/layout/DocumentList/docs/component.md +28 -28
- package/dist/layout/DocumentList/docs/example.md +23 -23
- package/dist/layout/ErrorPage/ErrorPage.stories.svelte +18 -18
- package/dist/layout/ErrorPage/ErrorPage.svelte +48 -48
- package/dist/layout/ErrorPage/docs/component.md +13 -13
- package/dist/layout/Footer/Footer.stories.svelte +24 -24
- package/dist/layout/Footer/Footer.svelte +366 -366
- package/dist/layout/Footer/docs/component.md +10 -10
- package/dist/layout/Grid/Grid.stories.svelte +50 -50
- package/dist/layout/Grid/Grid.svelte +117 -117
- package/dist/layout/Grid/GridCell.svelte +65 -65
- package/dist/layout/Grid/docs/component.md +14 -14
- package/dist/layout/Header/Header.stories.svelte +26 -26
- package/dist/layout/Header/Header.svelte +875 -875
- package/dist/layout/Header/docs/component.md +11 -11
- package/dist/layout/Hero/Hero.stories.svelte +79 -79
- package/dist/layout/Hero/Hero.svelte +364 -364
- package/dist/layout/Hero/docs/component.md +14 -14
- package/dist/layout/Highlight/Highlight.stories.svelte +29 -29
- package/dist/layout/Highlight/Highlight.svelte +77 -77
- package/dist/layout/Highlight/docs/component.md +12 -12
- package/dist/layout/Image/Image.stories.svelte +23 -23
- package/dist/layout/Image/Image.svelte +29 -29
- package/dist/layout/Image/docs/component.md +15 -15
- package/dist/layout/List/Li.svelte +3 -3
- package/dist/layout/List/List.stories.svelte +40 -40
- package/dist/layout/List/List.svelte +46 -46
- package/dist/layout/List/docs/component.md +14 -14
- package/dist/layout/List/docs/example.md +12 -12
- package/dist/layout/NavSections/NavSection.svelte +90 -90
- package/dist/layout/NavSections/NavSections.stories.svelte +51 -51
- package/dist/layout/NavSections/NavSections.svelte +160 -160
- package/dist/layout/NavSections/docs/component.md +25 -25
- package/dist/layout/Notice/Notice.stories.svelte +61 -61
- package/dist/layout/Notice/Notice.svelte +56 -56
- package/dist/layout/Notice/docs/component.md +14 -14
- package/dist/layout/PhaseBanner/PhaseBanner.stories.svelte +24 -24
- package/dist/layout/PhaseBanner/PhaseBanner.svelte +66 -66
- package/dist/layout/PhaseBanner/docs/component.md +14 -14
- package/dist/layout/RelatedContent/RelatedContent.stories.svelte +36 -36
- package/dist/layout/RelatedContent/RelatedContent.svelte +54 -54
- package/dist/layout/RelatedContent/docs/component.md +16 -16
- package/dist/layout/Scroller/Scroller.stories.svelte +60 -60
- package/dist/layout/Scroller/Scroller.svelte +368 -368
- package/dist/layout/Scroller/ScrollerSection.svelte +70 -70
- package/dist/layout/Scroller/docs/component.md +39 -39
- package/dist/layout/Section/Section.stories.svelte +33 -33
- package/dist/layout/Section/Section.svelte +60 -60
- package/dist/layout/Section/docs/component.md +12 -12
- package/dist/layout/ShareButtons/ShareButtons.stories.svelte +20 -20
- package/dist/layout/ShareButtons/ShareButtons.svelte +131 -131
- package/dist/layout/ShareButtons/docs/component.md +14 -14
- package/dist/layout/SkipLink/SkipLink.stories.svelte +16 -16
- package/dist/layout/SkipLink/SkipLink.svelte +9 -9
- package/dist/layout/SkipLink/docs/component.md +11 -11
- package/dist/layout/Summary/Summary.stories.svelte +21 -21
- package/dist/layout/Summary/Summary.svelte +60 -60
- package/dist/layout/Summary/docs/component.md +17 -17
- package/dist/layout/Tabs/Tab.svelte +53 -53
- package/dist/layout/Tabs/Tabs.stories.svelte +29 -29
- package/dist/layout/Tabs/Tabs.svelte +89 -89
- package/dist/layout/Tabs/docs/component.md +16 -16
- package/dist/layout/Tabs/tabs.js +302 -302
- package/dist/layout/Timeline/Timeline.stories.svelte +44 -44
- package/dist/layout/Timeline/Timeline.svelte +17 -17
- package/dist/layout/Timeline/TimelineItem.svelte +14 -14
- package/dist/layout/Timeline/docs/component.md +27 -27
- package/dist/layout/Timeline/docs/example.md +20 -20
- package/dist/templates/EmbedArticle/EmbedArticle.stories.svelte +72 -72
- package/dist/templates/EmbedArticle/docs/component.md +56 -56
- package/dist/templates/FeatureArticle/FeatureArticle.stories.svelte +150 -150
- package/dist/templates/FeatureArticle/docs/component.md +125 -125
- package/dist/templates/StandardArticle/StandardArticle.stories.svelte +86 -86
- package/dist/templates/StandardArticle/docs/component.md +76 -76
- package/dist/templates/intro.mdx +18 -18
- package/dist/wrappers/Container/Container.stories.svelte +38 -38
- package/dist/wrappers/Container/Container.svelte +77 -77
- package/dist/wrappers/Container/docs/component.md +12 -12
- package/dist/wrappers/Embed/Embed.stories.svelte +24 -24
- package/dist/wrappers/Embed/Embed.svelte +44 -44
- package/dist/wrappers/Embed/docs/component.md +15 -15
- package/dist/wrappers/LazyLoad/LazyLoad.stories.svelte +37 -37
- package/dist/wrappers/LazyLoad/LazyLoad.svelte +50 -50
- package/dist/wrappers/LazyLoad/docs/component.md +29 -29
- package/dist/wrappers/Main/Main.stories.svelte +24 -24
- package/dist/wrappers/Main/Main.svelte +11 -11
- package/dist/wrappers/Main/docs/component.md +16 -16
- package/dist/wrappers/Observe/Observe.stories.svelte +29 -29
- package/dist/wrappers/Observe/Observe.svelte +45 -40
- package/dist/wrappers/Observe/docs/component.md +22 -22
- package/dist/wrappers/Theme/Theme.stories.svelte +70 -70
- package/dist/wrappers/Theme/Theme.svelte +76 -76
- package/dist/wrappers/Theme/docs/component.md +10 -10
- package/dist/wrappers/Theme/themes.js +70 -70
- 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>
|