@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.
- 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 +40 -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,70 +1,70 @@
|
|
|
1
|
-
<script module>
|
|
2
|
-
// @ts-ignore
|
|
3
|
-
import { defineMeta } from "@storybook/addon-svelte-csf";
|
|
4
|
-
import { withComponentDocs } from "../../js/withParams.js";
|
|
5
|
-
import Button from "./Button.svelte";
|
|
6
|
-
import componentDocs from "./docs/component.md?raw";
|
|
7
|
-
|
|
8
|
-
const { Story } = defineMeta({
|
|
9
|
-
title: "Inputs/Button",
|
|
10
|
-
component: Button,
|
|
11
|
-
tags: ["autodocs"],
|
|
12
|
-
argTypes: {
|
|
13
|
-
type: {
|
|
14
|
-
options: ["button", "submit", "reset"],
|
|
15
|
-
control: { type: "select" }
|
|
16
|
-
},
|
|
17
|
-
variant: {
|
|
18
|
-
options: ["primary", "secondary", "ghost"],
|
|
19
|
-
control: { type: "select" }
|
|
20
|
-
},
|
|
21
|
-
icon: {
|
|
22
|
-
control: { type: "select" }
|
|
23
|
-
},
|
|
24
|
-
iconPosition: {
|
|
25
|
-
options: ["before", "after"],
|
|
26
|
-
control: { type: "select" }
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
parameters: withComponentDocs(componentDocs)
|
|
30
|
-
});
|
|
31
|
-
</script>
|
|
32
|
-
|
|
33
|
-
{#snippet template(args)}
|
|
34
|
-
<div
|
|
35
|
-
style:padding="12px"
|
|
36
|
-
style:background={args?.variant === "ghost" ? "var(--ons-color-ocean-blue)" : null}
|
|
37
|
-
>
|
|
38
|
-
<Button {...args}>{args.text}</Button>
|
|
39
|
-
</div>
|
|
40
|
-
{/snippet}
|
|
41
|
-
|
|
42
|
-
<Story name="Default" args={{ text: "Primary button" }} {template} />
|
|
43
|
-
|
|
44
|
-
<Story name="Link" args={{ text: "Button-styled link", href: "#" }} {template} />
|
|
45
|
-
|
|
46
|
-
<Story name="Secondary" args={{ text: "Secondary button", variant: "secondary" }} {template} />
|
|
47
|
-
|
|
48
|
-
<Story name="Ghost" args={{ text: "Ghost button", variant: "ghost" }} {template} />
|
|
49
|
-
|
|
50
|
-
<Story name="Small" args={{ text: "Small button", small: true }} {template} />
|
|
51
|
-
|
|
52
|
-
<Story name="Icon before" args={{ text: "Download", icon: "download" }} {template} />
|
|
53
|
-
|
|
54
|
-
<Story
|
|
55
|
-
name="Icon after"
|
|
56
|
-
args={{ text: "Continue", icon: "arrow", iconPosition: "after" }}
|
|
57
|
-
{template}
|
|
58
|
-
/>
|
|
59
|
-
|
|
60
|
-
<Story
|
|
61
|
-
name="Icon only, hidden text"
|
|
62
|
-
args={{ text: "Search", icon: "search", hideLabel: true }}
|
|
63
|
-
{template}
|
|
64
|
-
/>
|
|
65
|
-
|
|
66
|
-
<Story
|
|
67
|
-
name="Custom colour button"
|
|
68
|
-
args={{ text: "Small button", icon: "cross", color: "#00a3a6", small: true }}
|
|
69
|
-
{template}
|
|
70
|
-
/>
|
|
1
|
+
<script module>
|
|
2
|
+
// @ts-ignore
|
|
3
|
+
import { defineMeta } from "@storybook/addon-svelte-csf";
|
|
4
|
+
import { withComponentDocs } from "../../js/withParams.js";
|
|
5
|
+
import Button from "./Button.svelte";
|
|
6
|
+
import componentDocs from "./docs/component.md?raw";
|
|
7
|
+
|
|
8
|
+
const { Story } = defineMeta({
|
|
9
|
+
title: "Inputs/Button",
|
|
10
|
+
component: Button,
|
|
11
|
+
tags: ["autodocs"],
|
|
12
|
+
argTypes: {
|
|
13
|
+
type: {
|
|
14
|
+
options: ["button", "submit", "reset"],
|
|
15
|
+
control: { type: "select" }
|
|
16
|
+
},
|
|
17
|
+
variant: {
|
|
18
|
+
options: ["primary", "secondary", "ghost"],
|
|
19
|
+
control: { type: "select" }
|
|
20
|
+
},
|
|
21
|
+
icon: {
|
|
22
|
+
control: { type: "select" }
|
|
23
|
+
},
|
|
24
|
+
iconPosition: {
|
|
25
|
+
options: ["before", "after"],
|
|
26
|
+
control: { type: "select" }
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
parameters: withComponentDocs(componentDocs)
|
|
30
|
+
});
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
{#snippet template(args)}
|
|
34
|
+
<div
|
|
35
|
+
style:padding="12px"
|
|
36
|
+
style:background={args?.variant === "ghost" ? "var(--ons-color-ocean-blue)" : null}
|
|
37
|
+
>
|
|
38
|
+
<Button {...args}>{args.text}</Button>
|
|
39
|
+
</div>
|
|
40
|
+
{/snippet}
|
|
41
|
+
|
|
42
|
+
<Story name="Default" args={{ text: "Primary button" }} {template} />
|
|
43
|
+
|
|
44
|
+
<Story name="Link" args={{ text: "Button-styled link", href: "#" }} {template} />
|
|
45
|
+
|
|
46
|
+
<Story name="Secondary" args={{ text: "Secondary button", variant: "secondary" }} {template} />
|
|
47
|
+
|
|
48
|
+
<Story name="Ghost" args={{ text: "Ghost button", variant: "ghost" }} {template} />
|
|
49
|
+
|
|
50
|
+
<Story name="Small" args={{ text: "Small button", small: true }} {template} />
|
|
51
|
+
|
|
52
|
+
<Story name="Icon before" args={{ text: "Download", icon: "download" }} {template} />
|
|
53
|
+
|
|
54
|
+
<Story
|
|
55
|
+
name="Icon after"
|
|
56
|
+
args={{ text: "Continue", icon: "arrow", iconPosition: "after" }}
|
|
57
|
+
{template}
|
|
58
|
+
/>
|
|
59
|
+
|
|
60
|
+
<Story
|
|
61
|
+
name="Icon only, hidden text"
|
|
62
|
+
args={{ text: "Search", icon: "search", hideLabel: true }}
|
|
63
|
+
{template}
|
|
64
|
+
/>
|
|
65
|
+
|
|
66
|
+
<Story
|
|
67
|
+
name="Custom colour button"
|
|
68
|
+
args={{ text: "Small button", icon: "cross", color: "#00a3a6", small: true }}
|
|
69
|
+
{template}
|
|
70
|
+
/>
|
|
@@ -1,152 +1,152 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import { createEventDispatcher } from "svelte";
|
|
3
|
-
import Icon from "../../decorators/Icon/Icon.svelte";
|
|
4
|
-
import { contrastColor, darkenColor } from "../../js/utils";
|
|
5
|
-
|
|
6
|
-
const dispatch = createEventDispatcher();
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Type of button
|
|
10
|
-
* @type {"button"|"submit"|"reset"}
|
|
11
|
-
*/
|
|
12
|
-
export let type = "button";
|
|
13
|
-
/**
|
|
14
|
-
* Style variant of button
|
|
15
|
-
* @type {"primary"|"secondary"|"ghost"}
|
|
16
|
-
*/
|
|
17
|
-
export let variant = "primary";
|
|
18
|
-
/**
|
|
19
|
-
* Href of button (renders button as a link)
|
|
20
|
-
* @type {string|null}
|
|
21
|
-
*/
|
|
22
|
-
export let href = null;
|
|
23
|
-
/**
|
|
24
|
-
* File name if link is used for a file download (only if href is also specified)
|
|
25
|
-
* @type {string|null}
|
|
26
|
-
*/
|
|
27
|
-
export let download = null;
|
|
28
|
-
/**
|
|
29
|
-
* Don't scroll when link is followed (only if href is also specified)
|
|
30
|
-
* @type {boolean}
|
|
31
|
-
*/
|
|
32
|
-
export let noScroll = false;
|
|
33
|
-
/**
|
|
34
|
-
* Make button smaller
|
|
35
|
-
* @type {boolean}
|
|
36
|
-
*/
|
|
37
|
-
export let small = false;
|
|
38
|
-
/**
|
|
39
|
-
* Icon on button, eg. "arrow", "search"
|
|
40
|
-
* @type {"arrow"|"chevron"|"
|
|
41
|
-
*/
|
|
42
|
-
export let icon = null;
|
|
43
|
-
/**
|
|
44
|
-
* Position of icon
|
|
45
|
-
* @type {"before"|"after"}
|
|
46
|
-
*/
|
|
47
|
-
export let iconPosition = "before";
|
|
48
|
-
/**
|
|
49
|
-
* Rotation of icon in degrees (clockwise)
|
|
50
|
-
* @type {number}
|
|
51
|
-
*/
|
|
52
|
-
export let iconRotation = 0;
|
|
53
|
-
/**
|
|
54
|
-
* Show button as disabled
|
|
55
|
-
* @type {boolean}
|
|
56
|
-
*/
|
|
57
|
-
export let disabled = false;
|
|
58
|
-
/**
|
|
59
|
-
* Visually hide the button text (for icon-only buttons)
|
|
60
|
-
* @type {boolean}
|
|
61
|
-
*/
|
|
62
|
-
export let hideLabel = false;
|
|
63
|
-
/**
|
|
64
|
-
* Aria label for button
|
|
65
|
-
* @type {string|null}
|
|
66
|
-
*/
|
|
67
|
-
export let arialabel = null;
|
|
68
|
-
/**
|
|
69
|
-
* Set a colour for the button
|
|
70
|
-
* @type {string|null}
|
|
71
|
-
*/
|
|
72
|
-
export let color = null;
|
|
73
|
-
/**
|
|
74
|
-
* Optional: Set an additional CSS class for the component
|
|
75
|
-
* @type {string|null}
|
|
76
|
-
*/
|
|
77
|
-
export let cls = null;
|
|
78
|
-
</script>
|
|
79
|
-
|
|
80
|
-
{#if href}
|
|
81
|
-
<a
|
|
82
|
-
href={!disabled ? href : null}
|
|
83
|
-
role="button"
|
|
84
|
-
{download}
|
|
85
|
-
class="ons-btn ons-btn--link ons-js-submit-btn {cls}"
|
|
86
|
-
class:ons-btn--small={small}
|
|
87
|
-
class:ons-btn--secondary={variant === "secondary"}
|
|
88
|
-
class:ons-btn--ghost={variant === "ghost"}
|
|
89
|
-
class:ons-btn--disabled={disabled}
|
|
90
|
-
on:click={(e) => dispatch("click", e)}
|
|
91
|
-
aria-label={arialabel}
|
|
92
|
-
data-sveltekit-noscroll={noScroll}
|
|
93
|
-
>
|
|
94
|
-
<span
|
|
95
|
-
class="ons-btn__inner"
|
|
96
|
-
style:background={color}
|
|
97
|
-
style:color={color ? contrastColor(color) : null}
|
|
98
|
-
style:box-shadow={color ? `0 0.1875rem 0 ${darkenColor(color)}` : null}
|
|
99
|
-
>
|
|
100
|
-
{#if iconPosition === "before"}
|
|
101
|
-
<slot name="icon">
|
|
102
|
-
{#if icon}
|
|
103
|
-
<Icon type={icon} marginRight={!hideLabel} rotation={iconRotation} />
|
|
104
|
-
{/if}
|
|
105
|
-
</slot>
|
|
106
|
-
{/if}
|
|
107
|
-
<span class="ons-btn__text" class:ons-u-vh={hideLabel}><slot /></span>
|
|
108
|
-
{#if iconPosition === "after"}
|
|
109
|
-
<slot name="icon">
|
|
110
|
-
{#if icon}
|
|
111
|
-
<Icon type={icon} marginLeft={!hideLabel} rotation={iconRotation} />
|
|
112
|
-
{/if}
|
|
113
|
-
</slot>
|
|
114
|
-
{/if}
|
|
115
|
-
</span>
|
|
116
|
-
</a>
|
|
117
|
-
{:else}
|
|
118
|
-
<button
|
|
119
|
-
{type}
|
|
120
|
-
class="ons-btn {cls}"
|
|
121
|
-
class:ons-btn--small={small}
|
|
122
|
-
class:ons-btn--secondary={variant === "secondary"}
|
|
123
|
-
class:ons-btn--ghost={variant === "ghost"}
|
|
124
|
-
class:ons-btn--disabled={disabled}
|
|
125
|
-
{disabled}
|
|
126
|
-
on:click={(e) => dispatch("click", e)}
|
|
127
|
-
aria-label={arialabel}
|
|
128
|
-
>
|
|
129
|
-
<span
|
|
130
|
-
class="ons-btn__inner"
|
|
131
|
-
style:background={color}
|
|
132
|
-
style:color={color ? contrastColor(color) : null}
|
|
133
|
-
style:box-shadow={color ? `0 0.1875rem 0 ${darkenColor(color)}` : null}
|
|
134
|
-
>
|
|
135
|
-
{#if iconPosition === "before"}
|
|
136
|
-
<slot name="icon">
|
|
137
|
-
{#if icon}
|
|
138
|
-
<Icon type={icon} marginRight={!hideLabel} rotation={iconRotation} />
|
|
139
|
-
{/if}
|
|
140
|
-
</slot>
|
|
141
|
-
{/if}
|
|
142
|
-
<span class="ons-btn__text" class:ons-u-vh={hideLabel}><slot /></span>
|
|
143
|
-
{#if iconPosition === "after"}
|
|
144
|
-
<slot name="icon">
|
|
145
|
-
{#if icon}
|
|
146
|
-
<Icon type={icon} marginLeft={!hideLabel} rotation={iconRotation} />
|
|
147
|
-
{/if}
|
|
148
|
-
</slot>
|
|
149
|
-
{/if}
|
|
150
|
-
</span>
|
|
151
|
-
</button>
|
|
152
|
-
{/if}
|
|
1
|
+
<script>
|
|
2
|
+
import { createEventDispatcher } from "svelte";
|
|
3
|
+
import Icon from "../../decorators/Icon/Icon.svelte";
|
|
4
|
+
import { contrastColor, darkenColor } from "../../js/utils";
|
|
5
|
+
|
|
6
|
+
const dispatch = createEventDispatcher();
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Type of button
|
|
10
|
+
* @type {"button"|"submit"|"reset"}
|
|
11
|
+
*/
|
|
12
|
+
export let type = "button";
|
|
13
|
+
/**
|
|
14
|
+
* Style variant of button
|
|
15
|
+
* @type {"primary"|"secondary"|"ghost"}
|
|
16
|
+
*/
|
|
17
|
+
export let variant = "primary";
|
|
18
|
+
/**
|
|
19
|
+
* Href of button (renders button as a link)
|
|
20
|
+
* @type {string|null}
|
|
21
|
+
*/
|
|
22
|
+
export let href = null;
|
|
23
|
+
/**
|
|
24
|
+
* File name if link is used for a file download (only if href is also specified)
|
|
25
|
+
* @type {string|null}
|
|
26
|
+
*/
|
|
27
|
+
export let download = null;
|
|
28
|
+
/**
|
|
29
|
+
* Don't scroll when link is followed (only if href is also specified)
|
|
30
|
+
* @type {boolean}
|
|
31
|
+
*/
|
|
32
|
+
export let noScroll = false;
|
|
33
|
+
/**
|
|
34
|
+
* Make button smaller
|
|
35
|
+
* @type {boolean}
|
|
36
|
+
*/
|
|
37
|
+
export let small = false;
|
|
38
|
+
/**
|
|
39
|
+
* Icon on button, eg. "arrow", "search"
|
|
40
|
+
* @type {"arrow"|"carret"|"chevron"|"cog"|"cross"|"download"|"expand"|"external"|"pin"|"print"|"search"|"shrink"|"signout"|"tick"|null}
|
|
41
|
+
*/
|
|
42
|
+
export let icon = null;
|
|
43
|
+
/**
|
|
44
|
+
* Position of icon
|
|
45
|
+
* @type {"before"|"after"}
|
|
46
|
+
*/
|
|
47
|
+
export let iconPosition = "before";
|
|
48
|
+
/**
|
|
49
|
+
* Rotation of icon in degrees (clockwise)
|
|
50
|
+
* @type {number}
|
|
51
|
+
*/
|
|
52
|
+
export let iconRotation = 0;
|
|
53
|
+
/**
|
|
54
|
+
* Show button as disabled
|
|
55
|
+
* @type {boolean}
|
|
56
|
+
*/
|
|
57
|
+
export let disabled = false;
|
|
58
|
+
/**
|
|
59
|
+
* Visually hide the button text (for icon-only buttons)
|
|
60
|
+
* @type {boolean}
|
|
61
|
+
*/
|
|
62
|
+
export let hideLabel = false;
|
|
63
|
+
/**
|
|
64
|
+
* Aria label for button
|
|
65
|
+
* @type {string|null}
|
|
66
|
+
*/
|
|
67
|
+
export let arialabel = null;
|
|
68
|
+
/**
|
|
69
|
+
* Set a colour for the button
|
|
70
|
+
* @type {string|null}
|
|
71
|
+
*/
|
|
72
|
+
export let color = null;
|
|
73
|
+
/**
|
|
74
|
+
* Optional: Set an additional CSS class for the component
|
|
75
|
+
* @type {string|null}
|
|
76
|
+
*/
|
|
77
|
+
export let cls = null;
|
|
78
|
+
</script>
|
|
79
|
+
|
|
80
|
+
{#if href}
|
|
81
|
+
<a
|
|
82
|
+
href={!disabled ? href : null}
|
|
83
|
+
role="button"
|
|
84
|
+
{download}
|
|
85
|
+
class="ons-btn ons-btn--link ons-js-submit-btn {cls}"
|
|
86
|
+
class:ons-btn--small={small}
|
|
87
|
+
class:ons-btn--secondary={variant === "secondary"}
|
|
88
|
+
class:ons-btn--ghost={variant === "ghost"}
|
|
89
|
+
class:ons-btn--disabled={disabled}
|
|
90
|
+
on:click={(e) => dispatch("click", e)}
|
|
91
|
+
aria-label={arialabel}
|
|
92
|
+
data-sveltekit-noscroll={noScroll}
|
|
93
|
+
>
|
|
94
|
+
<span
|
|
95
|
+
class="ons-btn__inner"
|
|
96
|
+
style:background={color}
|
|
97
|
+
style:color={color ? contrastColor(color) : null}
|
|
98
|
+
style:box-shadow={color ? `0 0.1875rem 0 ${darkenColor(color)}` : null}
|
|
99
|
+
>
|
|
100
|
+
{#if iconPosition === "before"}
|
|
101
|
+
<slot name="icon">
|
|
102
|
+
{#if icon}
|
|
103
|
+
<Icon type={icon} marginRight={!hideLabel} rotation={iconRotation} />
|
|
104
|
+
{/if}
|
|
105
|
+
</slot>
|
|
106
|
+
{/if}
|
|
107
|
+
<span class="ons-btn__text" class:ons-u-vh={hideLabel}><slot /></span>
|
|
108
|
+
{#if iconPosition === "after"}
|
|
109
|
+
<slot name="icon">
|
|
110
|
+
{#if icon}
|
|
111
|
+
<Icon type={icon} marginLeft={!hideLabel} rotation={iconRotation} />
|
|
112
|
+
{/if}
|
|
113
|
+
</slot>
|
|
114
|
+
{/if}
|
|
115
|
+
</span>
|
|
116
|
+
</a>
|
|
117
|
+
{:else}
|
|
118
|
+
<button
|
|
119
|
+
{type}
|
|
120
|
+
class="ons-btn {cls}"
|
|
121
|
+
class:ons-btn--small={small}
|
|
122
|
+
class:ons-btn--secondary={variant === "secondary"}
|
|
123
|
+
class:ons-btn--ghost={variant === "ghost"}
|
|
124
|
+
class:ons-btn--disabled={disabled}
|
|
125
|
+
{disabled}
|
|
126
|
+
on:click={(e) => dispatch("click", e)}
|
|
127
|
+
aria-label={arialabel}
|
|
128
|
+
>
|
|
129
|
+
<span
|
|
130
|
+
class="ons-btn__inner"
|
|
131
|
+
style:background={color}
|
|
132
|
+
style:color={color ? contrastColor(color) : null}
|
|
133
|
+
style:box-shadow={color ? `0 0.1875rem 0 ${darkenColor(color)}` : null}
|
|
134
|
+
>
|
|
135
|
+
{#if iconPosition === "before"}
|
|
136
|
+
<slot name="icon">
|
|
137
|
+
{#if icon}
|
|
138
|
+
<Icon type={icon} marginRight={!hideLabel} rotation={iconRotation} />
|
|
139
|
+
{/if}
|
|
140
|
+
</slot>
|
|
141
|
+
{/if}
|
|
142
|
+
<span class="ons-btn__text" class:ons-u-vh={hideLabel}><slot /></span>
|
|
143
|
+
{#if iconPosition === "after"}
|
|
144
|
+
<slot name="icon">
|
|
145
|
+
{#if icon}
|
|
146
|
+
<Icon type={icon} marginLeft={!hideLabel} rotation={iconRotation} />
|
|
147
|
+
{/if}
|
|
148
|
+
</slot>
|
|
149
|
+
{/if}
|
|
150
|
+
</span>
|
|
151
|
+
</button>
|
|
152
|
+
{/if}
|
|
@@ -10,7 +10,7 @@ export default class Button extends SvelteComponentTyped<{
|
|
|
10
10
|
type?: "button" | "reset" | "submit" | undefined;
|
|
11
11
|
variant?: "secondary" | "primary" | "ghost" | undefined;
|
|
12
12
|
noScroll?: boolean | undefined;
|
|
13
|
-
icon?: "search" | "arrow" | "chevron" | "
|
|
13
|
+
icon?: "search" | "expand" | "arrow" | "carret" | "chevron" | "cog" | "cross" | "download" | "external" | "pin" | "print" | "shrink" | "signout" | "tick" | null | undefined;
|
|
14
14
|
iconPosition?: "before" | "after" | undefined;
|
|
15
15
|
iconRotation?: number | undefined;
|
|
16
16
|
disabled?: boolean | undefined;
|
|
@@ -39,7 +39,7 @@ declare const __propDef: {
|
|
|
39
39
|
type?: "button" | "reset" | "submit" | undefined;
|
|
40
40
|
variant?: "secondary" | "primary" | "ghost" | undefined;
|
|
41
41
|
noScroll?: boolean | undefined;
|
|
42
|
-
icon?: "search" | "arrow" | "chevron" | "
|
|
42
|
+
icon?: "search" | "expand" | "arrow" | "carret" | "chevron" | "cog" | "cross" | "download" | "external" | "pin" | "print" | "shrink" | "signout" | "tick" | null | undefined;
|
|
43
43
|
iconPosition?: "before" | "after" | undefined;
|
|
44
44
|
iconRotation?: number | undefined;
|
|
45
45
|
disabled?: boolean | undefined;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
A button/link component that can be styled in various ways. It will render as an `<a>` link if it has an `href` property defined.
|
|
2
|
-
|
|
3
|
-
<!-- prettier-ignore -->
|
|
4
|
-
```html
|
|
5
|
-
<script>
|
|
6
|
-
import { Button } from "@onsvisual/svelte-components";
|
|
7
|
-
|
|
8
|
-
// Define your own function on click
|
|
9
|
-
const handleClick = (e) => console.log(e);
|
|
10
|
-
</script>
|
|
11
|
-
|
|
12
|
-
<!-- Standard button with on:click function -->
|
|
13
|
-
<Button on:click="{handleClick}">Button text</Button>
|
|
14
|
-
|
|
15
|
-
<!-- Button-styled link with href -->
|
|
16
|
-
<Button href="#">Link text</Button>
|
|
17
|
-
```
|
|
1
|
+
A button/link component that can be styled in various ways. It will render as an `<a>` link if it has an `href` property defined.
|
|
2
|
+
|
|
3
|
+
<!-- prettier-ignore -->
|
|
4
|
+
```html
|
|
5
|
+
<script>
|
|
6
|
+
import { Button } from "@onsvisual/svelte-components";
|
|
7
|
+
|
|
8
|
+
// Define your own function on click
|
|
9
|
+
const handleClick = (e) => console.log(e);
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<!-- Standard button with on:click function -->
|
|
13
|
+
<Button on:click="{handleClick}">Button text</Button>
|
|
14
|
+
|
|
15
|
+
<!-- Button-styled link with href -->
|
|
16
|
+
<Button href="#">Link text</Button>
|
|
17
|
+
```
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
<script module>
|
|
2
|
-
import { defineMeta } from "@storybook/addon-svelte-csf";
|
|
3
|
-
import componentDocs from "./docs/component.md?raw";
|
|
4
|
-
import ButtonGroup from "./ButtonGroup.svelte";
|
|
5
|
-
import ButtonGroupItem from "./ButtonGroupItem.svelte";
|
|
6
|
-
import { withComponentDocs } from "../../js/withParams.js";
|
|
7
|
-
|
|
8
|
-
const { Story } = defineMeta({
|
|
9
|
-
title: "Inputs/ButtonGroup",
|
|
10
|
-
component: ButtonGroup,
|
|
11
|
-
tags: ["autodocs"],
|
|
12
|
-
argTypes: {
|
|
13
|
-
legend: { control: "text" },
|
|
14
|
-
visuallyHideLegend: { control: "boolean" }
|
|
15
|
-
},
|
|
16
|
-
parameters: withComponentDocs(componentDocs)
|
|
17
|
-
});
|
|
18
|
-
</script>
|
|
19
|
-
|
|
20
|
-
{#snippet template(args)}
|
|
21
|
-
<ButtonGroup {...args}>
|
|
22
|
-
<ButtonGroupItem value="1" label="Option 1" />
|
|
23
|
-
<ButtonGroupItem value="2" label="Option 2" />
|
|
24
|
-
<ButtonGroupItem value="3" label="Option 3" />
|
|
25
|
-
</ButtonGroup>
|
|
26
|
-
{/snippet}
|
|
27
|
-
|
|
28
|
-
<Story name="Default" args={{ name: "primary", legend: "Choose an option" }} {template} />
|
|
29
|
-
|
|
30
|
-
<Story
|
|
31
|
-
name="With initial value"
|
|
32
|
-
args={{ name: "primary", legend: "Choose an option", value: "2" }}
|
|
33
|
-
{template}
|
|
34
|
-
/>
|
|
35
|
-
|
|
36
|
-
<Story
|
|
37
|
-
name="Visually hide legend"
|
|
38
|
-
args={{ name: "primary", legend: "Choose an option", visuallyHideLegend: true }}
|
|
39
|
-
{template}
|
|
40
|
-
/>
|
|
1
|
+
<script module>
|
|
2
|
+
import { defineMeta } from "@storybook/addon-svelte-csf";
|
|
3
|
+
import componentDocs from "./docs/component.md?raw";
|
|
4
|
+
import ButtonGroup from "./ButtonGroup.svelte";
|
|
5
|
+
import ButtonGroupItem from "./ButtonGroupItem.svelte";
|
|
6
|
+
import { withComponentDocs } from "../../js/withParams.js";
|
|
7
|
+
|
|
8
|
+
const { Story } = defineMeta({
|
|
9
|
+
title: "Inputs/ButtonGroup",
|
|
10
|
+
component: ButtonGroup,
|
|
11
|
+
tags: ["autodocs"],
|
|
12
|
+
argTypes: {
|
|
13
|
+
legend: { control: "text" },
|
|
14
|
+
visuallyHideLegend: { control: "boolean" }
|
|
15
|
+
},
|
|
16
|
+
parameters: withComponentDocs(componentDocs)
|
|
17
|
+
});
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
{#snippet template(args)}
|
|
21
|
+
<ButtonGroup {...args}>
|
|
22
|
+
<ButtonGroupItem value="1" label="Option 1" />
|
|
23
|
+
<ButtonGroupItem value="2" label="Option 2" />
|
|
24
|
+
<ButtonGroupItem value="3" label="Option 3" />
|
|
25
|
+
</ButtonGroup>
|
|
26
|
+
{/snippet}
|
|
27
|
+
|
|
28
|
+
<Story name="Default" args={{ name: "primary", legend: "Choose an option" }} {template} />
|
|
29
|
+
|
|
30
|
+
<Story
|
|
31
|
+
name="With initial value"
|
|
32
|
+
args={{ name: "primary", legend: "Choose an option", value: "2" }}
|
|
33
|
+
{template}
|
|
34
|
+
/>
|
|
35
|
+
|
|
36
|
+
<Story
|
|
37
|
+
name="Visually hide legend"
|
|
38
|
+
args={{ name: "primary", legend: "Choose an option", visuallyHideLegend: true }}
|
|
39
|
+
{template}
|
|
40
|
+
/>
|