@onsvisual/svelte-components 1.0.36 → 1.0.38
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 -513
- 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 -18
- 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 +93 -93
- 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 +147 -147
- 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 -21
- 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/Input.svelte.d.ts +2 -2
- 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/Select.svelte.d.ts +2 -2
- 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/Textarea.svelte.d.ts +2 -2
- 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 -99
- 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 -139
- package/dist/layout/NavSections/NavSections.svelte.d.ts +4 -4
- 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 +35 -35
- 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 +89 -89
|
@@ -1,151 +1,151 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import { createEventDispatcher } from "svelte";
|
|
3
|
-
|
|
4
|
-
const dispatch = createEventDispatcher();
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* ID for <input> element
|
|
8
|
-
* @type {string|null}
|
|
9
|
-
*/
|
|
10
|
-
export let id = null;
|
|
11
|
-
/**
|
|
12
|
-
* Name attribute for <input> element
|
|
13
|
-
* @type {string|null}
|
|
14
|
-
*/
|
|
15
|
-
export let name = id;
|
|
16
|
-
/**
|
|
17
|
-
* A prop to bind to for the entered value
|
|
18
|
-
* @type {string|null}
|
|
19
|
-
*/
|
|
20
|
-
export let value = null;
|
|
21
|
-
/**
|
|
22
|
-
* A label to describe the <input> element (expected for accessibility)
|
|
23
|
-
* @type {string}
|
|
24
|
-
*/
|
|
25
|
-
export let label =
|
|
26
|
-
/**
|
|
27
|
-
* Visually hide the label
|
|
28
|
-
* @type {boolean}
|
|
29
|
-
*/
|
|
30
|
-
export let hideLabel = false;
|
|
31
|
-
/**
|
|
32
|
-
* An optional description to help users know what to enter
|
|
33
|
-
* @type {string|null}
|
|
34
|
-
*/
|
|
35
|
-
export let description = null;
|
|
36
|
-
/**
|
|
37
|
-
* The maximum number of characters that can be entered (optional)
|
|
38
|
-
* @type {number}
|
|
39
|
-
*/
|
|
40
|
-
export let charLimit = null;
|
|
41
|
-
/**
|
|
42
|
-
* The width of the <input> in characters
|
|
43
|
-
* @type {number}
|
|
44
|
-
*/
|
|
45
|
-
export let width = null;
|
|
46
|
-
/**
|
|
47
|
-
* An optional prefix (eg. £) to appear on the left of the input
|
|
48
|
-
* @type {string|null}
|
|
49
|
-
*/
|
|
50
|
-
export let prefix = null;
|
|
51
|
-
/**
|
|
52
|
-
* An optional suffix (eg. %) to appear on the right of the input
|
|
53
|
-
* @type {string|null}
|
|
54
|
-
*/
|
|
55
|
-
export let suffix = null;
|
|
56
|
-
/**
|
|
57
|
-
* An optional hidden description of the prefix (for accessibility)
|
|
58
|
-
* @type {string}
|
|
59
|
-
*/
|
|
60
|
-
export let unitLabel = prefix || suffix || "";
|
|
61
|
-
/**
|
|
62
|
-
* An optional regex pattern foto limit the input (not currently used)
|
|
63
|
-
* @type {string|null}
|
|
64
|
-
*/
|
|
65
|
-
export let pattern = null;
|
|
66
|
-
/**
|
|
67
|
-
* Set to `true` if the value should be a number
|
|
68
|
-
* @type {boolean}
|
|
69
|
-
*/
|
|
70
|
-
export let numeric = false;
|
|
71
|
-
/**
|
|
72
|
-
* Set to `true` to give the input a disabled state
|
|
73
|
-
* @type {boolean}
|
|
74
|
-
*/
|
|
75
|
-
export let disabled = false;
|
|
76
|
-
/**
|
|
77
|
-
* Set to `true` to highlight border in red
|
|
78
|
-
* @type {boolean}
|
|
79
|
-
*/
|
|
80
|
-
export let error = false;
|
|
81
|
-
/**
|
|
82
|
-
* Optional: Set an additional CSS class for the component
|
|
83
|
-
* @type {string|null}
|
|
84
|
-
*/
|
|
85
|
-
export let cls = null;
|
|
86
|
-
</script>
|
|
87
|
-
|
|
88
|
-
<div class="ons-field {cls}">
|
|
89
|
-
{#if label}
|
|
90
|
-
<label
|
|
91
|
-
class="ons-label"
|
|
92
|
-
class:ons-label--with-description={description}
|
|
93
|
-
class:ons-u-vh={hideLabel}
|
|
94
|
-
aria-describedby={description ? `${id}-description-hint` : null}
|
|
95
|
-
for={id}
|
|
96
|
-
>
|
|
97
|
-
{label}
|
|
98
|
-
</label>
|
|
99
|
-
{/if}
|
|
100
|
-
{#if description}
|
|
101
|
-
<span id="{id}-description-hint" class="ons-label__description ons-input--with-description">
|
|
102
|
-
{description}
|
|
103
|
-
</span>
|
|
104
|
-
{/if}
|
|
105
|
-
{#if prefix || suffix}
|
|
106
|
-
<span class="ons-input-type" class:ons-input-type--prefix={prefix}>
|
|
107
|
-
<span class="ons-input-type__inner">
|
|
108
|
-
<input
|
|
109
|
-
type="text"
|
|
110
|
-
{id}
|
|
111
|
-
{name}
|
|
112
|
-
bind:value
|
|
113
|
-
maxlength={charLimit}
|
|
114
|
-
pattern={pattern ? pattern : numeric ? "[0-9]*" : null}
|
|
115
|
-
inputmode={numeric ? "numeric" : null}
|
|
116
|
-
class="ons-input ons-input--text ons-input-type__input {Number.isInteger(width)
|
|
117
|
-
? `ons-input--w-${width}`
|
|
118
|
-
: ''}"
|
|
119
|
-
class:ons-input--error={error}
|
|
120
|
-
aria-labelledby="{id} {id}-unit"
|
|
121
|
-
aria-describedby={description ? `${id}-description-hint` : null}
|
|
122
|
-
{disabled}
|
|
123
|
-
on:change={(e) => dispatch("change", e)}
|
|
124
|
-
/>
|
|
125
|
-
<abbr
|
|
126
|
-
id="{id}-unit"
|
|
127
|
-
class="ons-input-type__type ons-js-input-abbr"
|
|
128
|
-
aria-label={unitLabel}
|
|
129
|
-
role="figure"
|
|
130
|
-
title={unitLabel}>{prefix || suffix}</abbr
|
|
131
|
-
>
|
|
132
|
-
</span>
|
|
133
|
-
</span>
|
|
134
|
-
{:else}
|
|
135
|
-
<input
|
|
136
|
-
type="text"
|
|
137
|
-
{id}
|
|
138
|
-
{name}
|
|
139
|
-
bind:value
|
|
140
|
-
pattern={pattern ? pattern : numeric ? "[0-9]*" : null}
|
|
141
|
-
inputmode={numeric ? "numeric" : null}
|
|
142
|
-
class="ons-input ons-input--text ons-input-type__input {Number.isInteger(width)
|
|
143
|
-
? `ons-input--w-${width}`
|
|
144
|
-
: ''}"
|
|
145
|
-
class:ons-input--error={error}
|
|
146
|
-
aria-describedby={description ? `${id}-description-hint` : null}
|
|
147
|
-
{disabled}
|
|
148
|
-
on:change={(e) => dispatch("change", e)}
|
|
149
|
-
/>
|
|
150
|
-
{/if}
|
|
151
|
-
</div>
|
|
1
|
+
<script>
|
|
2
|
+
import { createEventDispatcher } from "svelte";
|
|
3
|
+
|
|
4
|
+
const dispatch = createEventDispatcher();
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* ID for <input> element
|
|
8
|
+
* @type {string|null}
|
|
9
|
+
*/
|
|
10
|
+
export let id = null;
|
|
11
|
+
/**
|
|
12
|
+
* Name attribute for <input> element
|
|
13
|
+
* @type {string|null}
|
|
14
|
+
*/
|
|
15
|
+
export let name = id;
|
|
16
|
+
/**
|
|
17
|
+
* A prop to bind to for the entered value
|
|
18
|
+
* @type {string|null}
|
|
19
|
+
*/
|
|
20
|
+
export let value = null;
|
|
21
|
+
/**
|
|
22
|
+
* A label to describe the <input> element (expected for accessibility)
|
|
23
|
+
* @type {string|null}
|
|
24
|
+
*/
|
|
25
|
+
export let label = null;
|
|
26
|
+
/**
|
|
27
|
+
* Visually hide the label
|
|
28
|
+
* @type {boolean}
|
|
29
|
+
*/
|
|
30
|
+
export let hideLabel = false;
|
|
31
|
+
/**
|
|
32
|
+
* An optional description to help users know what to enter
|
|
33
|
+
* @type {string|null}
|
|
34
|
+
*/
|
|
35
|
+
export let description = null;
|
|
36
|
+
/**
|
|
37
|
+
* The maximum number of characters that can be entered (optional)
|
|
38
|
+
* @type {number}
|
|
39
|
+
*/
|
|
40
|
+
export let charLimit = null;
|
|
41
|
+
/**
|
|
42
|
+
* The width of the <input> in characters
|
|
43
|
+
* @type {number}
|
|
44
|
+
*/
|
|
45
|
+
export let width = null;
|
|
46
|
+
/**
|
|
47
|
+
* An optional prefix (eg. £) to appear on the left of the input
|
|
48
|
+
* @type {string|null}
|
|
49
|
+
*/
|
|
50
|
+
export let prefix = null;
|
|
51
|
+
/**
|
|
52
|
+
* An optional suffix (eg. %) to appear on the right of the input
|
|
53
|
+
* @type {string|null}
|
|
54
|
+
*/
|
|
55
|
+
export let suffix = null;
|
|
56
|
+
/**
|
|
57
|
+
* An optional hidden description of the prefix (for accessibility)
|
|
58
|
+
* @type {string}
|
|
59
|
+
*/
|
|
60
|
+
export let unitLabel = prefix || suffix || "";
|
|
61
|
+
/**
|
|
62
|
+
* An optional regex pattern foto limit the input (not currently used)
|
|
63
|
+
* @type {string|null}
|
|
64
|
+
*/
|
|
65
|
+
export let pattern = null;
|
|
66
|
+
/**
|
|
67
|
+
* Set to `true` if the value should be a number
|
|
68
|
+
* @type {boolean}
|
|
69
|
+
*/
|
|
70
|
+
export let numeric = false;
|
|
71
|
+
/**
|
|
72
|
+
* Set to `true` to give the input a disabled state
|
|
73
|
+
* @type {boolean}
|
|
74
|
+
*/
|
|
75
|
+
export let disabled = false;
|
|
76
|
+
/**
|
|
77
|
+
* Set to `true` to highlight border in red
|
|
78
|
+
* @type {boolean}
|
|
79
|
+
*/
|
|
80
|
+
export let error = false;
|
|
81
|
+
/**
|
|
82
|
+
* Optional: Set an additional CSS class for the component
|
|
83
|
+
* @type {string|null}
|
|
84
|
+
*/
|
|
85
|
+
export let cls = null;
|
|
86
|
+
</script>
|
|
87
|
+
|
|
88
|
+
<div class="ons-field {cls}">
|
|
89
|
+
{#if label}
|
|
90
|
+
<label
|
|
91
|
+
class="ons-label"
|
|
92
|
+
class:ons-label--with-description={description}
|
|
93
|
+
class:ons-u-vh={hideLabel}
|
|
94
|
+
aria-describedby={description ? `${id}-description-hint` : null}
|
|
95
|
+
for={id}
|
|
96
|
+
>
|
|
97
|
+
{label}
|
|
98
|
+
</label>
|
|
99
|
+
{/if}
|
|
100
|
+
{#if description}
|
|
101
|
+
<span id="{id}-description-hint" class="ons-label__description ons-input--with-description">
|
|
102
|
+
{description}
|
|
103
|
+
</span>
|
|
104
|
+
{/if}
|
|
105
|
+
{#if prefix || suffix}
|
|
106
|
+
<span class="ons-input-type" class:ons-input-type--prefix={prefix}>
|
|
107
|
+
<span class="ons-input-type__inner">
|
|
108
|
+
<input
|
|
109
|
+
type="text"
|
|
110
|
+
{id}
|
|
111
|
+
{name}
|
|
112
|
+
bind:value
|
|
113
|
+
maxlength={charLimit}
|
|
114
|
+
pattern={pattern ? pattern : numeric ? "[0-9]*" : null}
|
|
115
|
+
inputmode={numeric ? "numeric" : null}
|
|
116
|
+
class="ons-input ons-input--text ons-input-type__input {Number.isInteger(width)
|
|
117
|
+
? `ons-input--w-${width}`
|
|
118
|
+
: ''}"
|
|
119
|
+
class:ons-input--error={error}
|
|
120
|
+
aria-labelledby="{id} {id}-unit"
|
|
121
|
+
aria-describedby={description ? `${id}-description-hint` : null}
|
|
122
|
+
{disabled}
|
|
123
|
+
on:change={(e) => dispatch("change", e)}
|
|
124
|
+
/>
|
|
125
|
+
<abbr
|
|
126
|
+
id="{id}-unit"
|
|
127
|
+
class="ons-input-type__type ons-js-input-abbr"
|
|
128
|
+
aria-label={unitLabel}
|
|
129
|
+
role="figure"
|
|
130
|
+
title={unitLabel}>{prefix || suffix}</abbr
|
|
131
|
+
>
|
|
132
|
+
</span>
|
|
133
|
+
</span>
|
|
134
|
+
{:else}
|
|
135
|
+
<input
|
|
136
|
+
type="text"
|
|
137
|
+
{id}
|
|
138
|
+
{name}
|
|
139
|
+
bind:value
|
|
140
|
+
pattern={pattern ? pattern : numeric ? "[0-9]*" : null}
|
|
141
|
+
inputmode={numeric ? "numeric" : null}
|
|
142
|
+
class="ons-input ons-input--text ons-input-type__input {Number.isInteger(width)
|
|
143
|
+
? `ons-input--w-${width}`
|
|
144
|
+
: ''}"
|
|
145
|
+
class:ons-input--error={error}
|
|
146
|
+
aria-describedby={description ? `${id}-description-hint` : null}
|
|
147
|
+
{disabled}
|
|
148
|
+
on:change={(e) => dispatch("change", e)}
|
|
149
|
+
/>
|
|
150
|
+
{/if}
|
|
151
|
+
</div>
|
|
@@ -5,7 +5,7 @@ export default class Input extends SvelteComponentTyped<{
|
|
|
5
5
|
cls?: string | null | undefined;
|
|
6
6
|
id?: string | null | undefined;
|
|
7
7
|
width?: number | undefined;
|
|
8
|
-
label?: string | undefined;
|
|
8
|
+
label?: string | null | undefined;
|
|
9
9
|
pattern?: string | null | undefined;
|
|
10
10
|
name?: string | null | undefined;
|
|
11
11
|
error?: boolean | undefined;
|
|
@@ -33,7 +33,7 @@ declare const __propDef: {
|
|
|
33
33
|
cls?: string | null | undefined;
|
|
34
34
|
id?: string | null | undefined;
|
|
35
35
|
width?: number | undefined;
|
|
36
|
-
label?: string | undefined;
|
|
36
|
+
label?: string | null | undefined;
|
|
37
37
|
pattern?: string | null | undefined;
|
|
38
38
|
name?: string | null | undefined;
|
|
39
39
|
error?: boolean | undefined;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
A standard `<input>` element with Svelte bindings and events.
|
|
2
|
-
|
|
3
|
-
<!-- prettier-ignore -->
|
|
4
|
-
```html
|
|
5
|
-
<script>
|
|
6
|
-
import { Input } from "@onsvisual/svelte-components";
|
|
7
|
-
|
|
8
|
-
// Bind the <input> value to a variable (reactive)
|
|
9
|
-
let value;
|
|
10
|
-
|
|
11
|
-
// Define your own function on change
|
|
12
|
-
const handleChange = (e) => console.log(e);
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
<Input bind:value on:change="{handleChange}" />
|
|
16
|
-
```
|
|
1
|
+
A standard `<input>` element with Svelte bindings and events.
|
|
2
|
+
|
|
3
|
+
<!-- prettier-ignore -->
|
|
4
|
+
```html
|
|
5
|
+
<script>
|
|
6
|
+
import { Input } from "@onsvisual/svelte-components";
|
|
7
|
+
|
|
8
|
+
// Bind the <input> value to a variable (reactive)
|
|
9
|
+
let value;
|
|
10
|
+
|
|
11
|
+
// Define your own function on change
|
|
12
|
+
const handleChange = (e) => console.log(e);
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<Input bind:value on:change="{handleChange}" />
|
|
16
|
+
```
|
|
@@ -1,90 +1,90 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import { onMount, createEventDispatcher } from "svelte";
|
|
3
|
-
|
|
4
|
-
const dispatch = createEventDispatcher();
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Unique ID input
|
|
8
|
-
* @type {string|null}
|
|
9
|
-
*/
|
|
10
|
-
export let id = null;
|
|
11
|
-
/**
|
|
12
|
-
* Label for input
|
|
13
|
-
* @type {string|null}
|
|
14
|
-
*/
|
|
15
|
-
export let label = null;
|
|
16
|
-
/**
|
|
17
|
-
* Optional: Extended description for element
|
|
18
|
-
* @type {string|null}
|
|
19
|
-
*/
|
|
20
|
-
export let description = null;
|
|
21
|
-
/**
|
|
22
|
-
* Optional: Define the item as an object in the form {id, label, description?}
|
|
23
|
-
* @type {object}
|
|
24
|
-
*/
|
|
25
|
-
export let item = { id, label, description };
|
|
26
|
-
/**
|
|
27
|
-
* ID/name for radio group (required)
|
|
28
|
-
* @type {string}
|
|
29
|
-
*/
|
|
30
|
-
export let groupId;
|
|
31
|
-
/**
|
|
32
|
-
* Binding selected option
|
|
33
|
-
* @type {object|null}
|
|
34
|
-
*/
|
|
35
|
-
export let value = null;
|
|
36
|
-
/**
|
|
37
|
-
* Compact mode (no border)
|
|
38
|
-
* @type {boolean}
|
|
39
|
-
*/
|
|
40
|
-
export let compact = false;
|
|
41
|
-
|
|
42
|
-
let el;
|
|
43
|
-
|
|
44
|
-
onMount(() => {
|
|
45
|
-
if (value?.id === item.id) el.checked = true;
|
|
46
|
-
});
|
|
47
|
-
</script>
|
|
48
|
-
|
|
49
|
-
<span class="ons-radios__item" class:ons-radios__item--no-border={compact}>
|
|
50
|
-
<span class="ons-radio" class:ons-radio--no-border={compact}>
|
|
51
|
-
<input
|
|
52
|
-
type="radio"
|
|
53
|
-
id={item.id}
|
|
54
|
-
value={item}
|
|
55
|
-
name={groupId}
|
|
56
|
-
class="ons-radio__input ons-js-radio"
|
|
57
|
-
on:change={(e) => {
|
|
58
|
-
if (e?.target?.checked) {
|
|
59
|
-
value = item;
|
|
60
|
-
dispatch("change", { value, e });
|
|
61
|
-
}
|
|
62
|
-
}}
|
|
63
|
-
bind:this={el}
|
|
64
|
-
/>
|
|
65
|
-
<label
|
|
66
|
-
class="ons-radio__label"
|
|
67
|
-
class:ons-label--with-description={description}
|
|
68
|
-
for={item.id}
|
|
69
|
-
id="{item.id}-label"
|
|
70
|
-
aria-describedby={item.description ? `${item.id}-label-description-hint` : null}
|
|
71
|
-
>
|
|
72
|
-
{item.label}
|
|
73
|
-
{#if item.description}
|
|
74
|
-
<span class="ons-label__aria-hidden-description" aria-hidden="true"
|
|
75
|
-
><span class="ons-label__description ons-radio__label--with-description">
|
|
76
|
-
{item.description}
|
|
77
|
-
</span></span
|
|
78
|
-
>
|
|
79
|
-
{/if}
|
|
80
|
-
</label>
|
|
81
|
-
{#if item.description}
|
|
82
|
-
<span
|
|
83
|
-
class="ons-label__visually-hidden-description ons-u-vh"
|
|
84
|
-
id="{id}-label-description-hint"
|
|
85
|
-
>
|
|
86
|
-
{item.description}
|
|
87
|
-
</span>
|
|
88
|
-
{/if}
|
|
89
|
-
</span>
|
|
90
|
-
</span>
|
|
1
|
+
<script>
|
|
2
|
+
import { onMount, createEventDispatcher } from "svelte";
|
|
3
|
+
|
|
4
|
+
const dispatch = createEventDispatcher();
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Unique ID input
|
|
8
|
+
* @type {string|null}
|
|
9
|
+
*/
|
|
10
|
+
export let id = null;
|
|
11
|
+
/**
|
|
12
|
+
* Label for input
|
|
13
|
+
* @type {string|null}
|
|
14
|
+
*/
|
|
15
|
+
export let label = null;
|
|
16
|
+
/**
|
|
17
|
+
* Optional: Extended description for element
|
|
18
|
+
* @type {string|null}
|
|
19
|
+
*/
|
|
20
|
+
export let description = null;
|
|
21
|
+
/**
|
|
22
|
+
* Optional: Define the item as an object in the form {id, label, description?}
|
|
23
|
+
* @type {object}
|
|
24
|
+
*/
|
|
25
|
+
export let item = { id, label, description };
|
|
26
|
+
/**
|
|
27
|
+
* ID/name for radio group (required)
|
|
28
|
+
* @type {string}
|
|
29
|
+
*/
|
|
30
|
+
export let groupId;
|
|
31
|
+
/**
|
|
32
|
+
* Binding selected option
|
|
33
|
+
* @type {object|null}
|
|
34
|
+
*/
|
|
35
|
+
export let value = null;
|
|
36
|
+
/**
|
|
37
|
+
* Compact mode (no border)
|
|
38
|
+
* @type {boolean}
|
|
39
|
+
*/
|
|
40
|
+
export let compact = false;
|
|
41
|
+
|
|
42
|
+
let el;
|
|
43
|
+
|
|
44
|
+
onMount(() => {
|
|
45
|
+
if (value?.id === item.id) el.checked = true;
|
|
46
|
+
});
|
|
47
|
+
</script>
|
|
48
|
+
|
|
49
|
+
<span class="ons-radios__item" class:ons-radios__item--no-border={compact}>
|
|
50
|
+
<span class="ons-radio" class:ons-radio--no-border={compact}>
|
|
51
|
+
<input
|
|
52
|
+
type="radio"
|
|
53
|
+
id={item.id}
|
|
54
|
+
value={item}
|
|
55
|
+
name={groupId}
|
|
56
|
+
class="ons-radio__input ons-js-radio"
|
|
57
|
+
on:change={(e) => {
|
|
58
|
+
if (e?.target?.checked) {
|
|
59
|
+
value = item;
|
|
60
|
+
dispatch("change", { value, e });
|
|
61
|
+
}
|
|
62
|
+
}}
|
|
63
|
+
bind:this={el}
|
|
64
|
+
/>
|
|
65
|
+
<label
|
|
66
|
+
class="ons-radio__label"
|
|
67
|
+
class:ons-label--with-description={description}
|
|
68
|
+
for={item.id}
|
|
69
|
+
id="{item.id}-label"
|
|
70
|
+
aria-describedby={item.description ? `${item.id}-label-description-hint` : null}
|
|
71
|
+
>
|
|
72
|
+
{item.label}
|
|
73
|
+
{#if item.description}
|
|
74
|
+
<span class="ons-label__aria-hidden-description" aria-hidden="true"
|
|
75
|
+
><span class="ons-label__description ons-radio__label--with-description">
|
|
76
|
+
{item.description}
|
|
77
|
+
</span></span
|
|
78
|
+
>
|
|
79
|
+
{/if}
|
|
80
|
+
</label>
|
|
81
|
+
{#if item.description}
|
|
82
|
+
<span
|
|
83
|
+
class="ons-label__visually-hidden-description ons-u-vh"
|
|
84
|
+
id="{id}-label-description-hint"
|
|
85
|
+
>
|
|
86
|
+
{item.description}
|
|
87
|
+
</span>
|
|
88
|
+
{/if}
|
|
89
|
+
</span>
|
|
90
|
+
</span>
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
<script module>
|
|
2
|
-
import { defineMeta } from "@storybook/addon-svelte-csf";
|
|
3
|
-
import { withComponentDocs, withStoryDocs } from "../../js/withParams.js";
|
|
4
|
-
import Radio from "./Radio.svelte";
|
|
5
|
-
import Radios from "./Radios.svelte";
|
|
6
|
-
import componentDocs from "./docs/component.md?raw";
|
|
7
|
-
import exampleDocs from "./docs/example.md?raw";
|
|
8
|
-
|
|
9
|
-
const { Story } = defineMeta({
|
|
10
|
-
title: "Inputs/Radios",
|
|
11
|
-
component: Radios,
|
|
12
|
-
tags: ["autodocs"],
|
|
13
|
-
argTypes: {},
|
|
14
|
-
parameters: withComponentDocs(componentDocs)
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
let items = [
|
|
18
|
-
{
|
|
19
|
-
id: "house",
|
|
20
|
-
label: "House or bungalow",
|
|
21
|
-
description: "Includes terraced, semi-detached and detached homes."
|
|
22
|
-
},
|
|
23
|
-
{ id: "flat", label: "Flat, maisonette or apartment" },
|
|
24
|
-
{ id: "mobile", label: "Caravan or other mobile or temporary structure" }
|
|
25
|
-
];
|
|
26
|
-
</script>
|
|
27
|
-
|
|
28
|
-
{#snippet template(args)}
|
|
29
|
-
<div style:padding="12px">
|
|
30
|
-
<Radios {...args} />
|
|
31
|
-
</div>
|
|
32
|
-
{/snippet}
|
|
33
|
-
|
|
34
|
-
<Story name="Default" args={{ label: "Select one", id: "radios", items }} {template} />
|
|
35
|
-
|
|
36
|
-
<Story name="Compact without label" args={{ id: "radios", items, compact: true }} {template} />
|
|
37
|
-
|
|
38
|
-
<Story name="Individually defined radios" asChild parameters={withStoryDocs(exampleDocs)}>
|
|
39
|
-
<div style:padding="12px">
|
|
40
|
-
<Radios label="Select one">
|
|
41
|
-
<Radio
|
|
42
|
-
groupId="radios"
|
|
43
|
-
id="house"
|
|
44
|
-
label="House or bungalow"
|
|
45
|
-
description="Includes terraced, semi-detached and detached homes."
|
|
46
|
-
/>
|
|
47
|
-
<Radio groupId="radios" id="flat" label="Flat, maisonette or apartment" />
|
|
48
|
-
<Radio groupId="radios" id="mobile" label="Caravan or other mobile or temporary structure" />
|
|
49
|
-
</Radios>
|
|
50
|
-
</div>
|
|
51
|
-
</Story>
|
|
1
|
+
<script module>
|
|
2
|
+
import { defineMeta } from "@storybook/addon-svelte-csf";
|
|
3
|
+
import { withComponentDocs, withStoryDocs } from "../../js/withParams.js";
|
|
4
|
+
import Radio from "./Radio.svelte";
|
|
5
|
+
import Radios from "./Radios.svelte";
|
|
6
|
+
import componentDocs from "./docs/component.md?raw";
|
|
7
|
+
import exampleDocs from "./docs/example.md?raw";
|
|
8
|
+
|
|
9
|
+
const { Story } = defineMeta({
|
|
10
|
+
title: "Inputs/Radios",
|
|
11
|
+
component: Radios,
|
|
12
|
+
tags: ["autodocs"],
|
|
13
|
+
argTypes: {},
|
|
14
|
+
parameters: withComponentDocs(componentDocs)
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
let items = [
|
|
18
|
+
{
|
|
19
|
+
id: "house",
|
|
20
|
+
label: "House or bungalow",
|
|
21
|
+
description: "Includes terraced, semi-detached and detached homes."
|
|
22
|
+
},
|
|
23
|
+
{ id: "flat", label: "Flat, maisonette or apartment" },
|
|
24
|
+
{ id: "mobile", label: "Caravan or other mobile or temporary structure" }
|
|
25
|
+
];
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
{#snippet template(args)}
|
|
29
|
+
<div style:padding="12px">
|
|
30
|
+
<Radios {...args} />
|
|
31
|
+
</div>
|
|
32
|
+
{/snippet}
|
|
33
|
+
|
|
34
|
+
<Story name="Default" args={{ label: "Select one", id: "radios", items }} {template} />
|
|
35
|
+
|
|
36
|
+
<Story name="Compact without label" args={{ id: "radios", items, compact: true }} {template} />
|
|
37
|
+
|
|
38
|
+
<Story name="Individually defined radios" asChild parameters={withStoryDocs(exampleDocs)}>
|
|
39
|
+
<div style:padding="12px">
|
|
40
|
+
<Radios label="Select one">
|
|
41
|
+
<Radio
|
|
42
|
+
groupId="radios"
|
|
43
|
+
id="house"
|
|
44
|
+
label="House or bungalow"
|
|
45
|
+
description="Includes terraced, semi-detached and detached homes."
|
|
46
|
+
/>
|
|
47
|
+
<Radio groupId="radios" id="flat" label="Flat, maisonette or apartment" />
|
|
48
|
+
<Radio groupId="radios" id="mobile" label="Caravan or other mobile or temporary structure" />
|
|
49
|
+
</Radios>
|
|
50
|
+
</div>
|
|
51
|
+
</Story>
|