@onsvisual/svelte-components 1.0.44 → 1.0.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/README.md +24 -24
  2. package/dist/css/main.css +513 -2
  3. package/dist/datavis/BarChart/BarChart.stories.svelte +84 -84
  4. package/dist/datavis/BarChart/docs/component.md +19 -19
  5. package/dist/datavis/Chart/Chart.stories.svelte +128 -128
  6. package/dist/datavis/Chart/docs/component.md +31 -31
  7. package/dist/datavis/Chart/docs/example.md +28 -28
  8. package/dist/datavis/ColumnChart/ColumnChart.stories.svelte +84 -84
  9. package/dist/datavis/ColumnChart/docs/component.md +19 -19
  10. package/dist/datavis/DataCard/DataCard.stories.svelte +45 -45
  11. package/dist/datavis/DataCard/DataCard.svelte +70 -70
  12. package/dist/datavis/DataCard/Sparkline.svelte +117 -117
  13. package/dist/datavis/DataCard/docs/component.md +20 -20
  14. package/dist/datavis/DataCard/docs/example.md +25 -25
  15. package/dist/datavis/DotPlotChart/DotPlotChart.stories.svelte +40 -40
  16. package/dist/datavis/DotPlotChart/docs/component.md +19 -19
  17. package/dist/datavis/LineChart/LineChart.stories.svelte +64 -64
  18. package/dist/datavis/LineChart/docs/component.md +31 -31
  19. package/dist/datavis/ScatterChart/ScatterChart.stories.svelte +55 -55
  20. package/dist/datavis/ScatterChart/docs/component.md +53 -53
  21. package/dist/datavis/Table/Table.stories.svelte +48 -48
  22. package/dist/datavis/Table/Table.svelte +161 -161
  23. package/dist/datavis/Table/docs/component.md +20 -20
  24. package/dist/datavis/demo-data/data-scatter.js +40 -40
  25. package/dist/datavis/demo-data/data.js +18 -18
  26. package/dist/datavis/intro.mdx +21 -21
  27. package/dist/decorators/Blockquote/Blockquote.stories.svelte +25 -25
  28. package/dist/decorators/Blockquote/Blockquote.svelte +27 -27
  29. package/dist/decorators/Blockquote/docs/component.md +10 -10
  30. package/dist/decorators/Divider/Divider.stories.svelte +29 -29
  31. package/dist/decorators/Divider/Divider.svelte +52 -52
  32. package/dist/decorators/Divider/docs/component.md +12 -12
  33. package/dist/decorators/Em/Em.stories.svelte +30 -30
  34. package/dist/decorators/Em/Em.svelte +58 -58
  35. package/dist/decorators/Em/docs/component.md +12 -12
  36. package/dist/decorators/Icon/Icon.stories.svelte +27 -27
  37. package/dist/decorators/Icon/Icon.svelte +101 -93
  38. package/dist/decorators/Icon/Icon.svelte.d.ts +2 -2
  39. package/dist/decorators/Icon/docs/component.md +10 -10
  40. package/dist/decorators/Indent/Indent.stories.svelte +22 -22
  41. package/dist/decorators/Indent/Indent.svelte +3 -3
  42. package/dist/decorators/Indent/docs/component.md +10 -10
  43. package/dist/index.js +86 -86
  44. package/dist/inputs/Button/Button.stories.svelte +70 -70
  45. package/dist/inputs/Button/Button.svelte +152 -152
  46. package/dist/inputs/Button/Button.svelte.d.ts +2 -2
  47. package/dist/inputs/Button/docs/component.md +17 -17
  48. package/dist/inputs/ButtonGroup/ButtonGroup.stories.svelte +40 -40
  49. package/dist/inputs/ButtonGroup/ButtonGroup.svelte +57 -57
  50. package/dist/inputs/ButtonGroup/ButtonGroupItem.svelte +101 -101
  51. package/dist/inputs/ButtonGroup/docs/component.md +23 -23
  52. package/dist/inputs/Checkbox/Checkbox.stories.svelte +34 -34
  53. package/dist/inputs/Checkbox/Checkbox.svelte +180 -180
  54. package/dist/inputs/Checkbox/docs/component.md +14 -14
  55. package/dist/inputs/Checkboxes/Checkboxes.stories.svelte +34 -34
  56. package/dist/inputs/Checkboxes/Checkboxes.svelte +62 -62
  57. package/dist/inputs/Checkboxes/docs/component.md +20 -20
  58. package/dist/inputs/Checkboxes/docs/example.md +16 -16
  59. package/dist/inputs/Dropdown/Dropdown.stories.svelte +54 -54
  60. package/dist/inputs/Dropdown/Dropdown.svelte +66 -66
  61. package/dist/inputs/Dropdown/docs/component.md +22 -22
  62. package/dist/inputs/ErrorPanel/ErrorPanel.stories.svelte +25 -25
  63. package/dist/inputs/ErrorPanel/ErrorPanel.svelte +24 -24
  64. package/dist/inputs/ErrorPanel/docs/component.md +14 -14
  65. package/dist/inputs/ErrorSummary/ErrorSummary.stories.svelte +34 -34
  66. package/dist/inputs/ErrorSummary/ErrorSummary.svelte +47 -47
  67. package/dist/inputs/ErrorSummary/docs/component.md +17 -17
  68. package/dist/inputs/ErrorSummary/docs/example.md +12 -12
  69. package/dist/inputs/Input/Input.stories.svelte +73 -73
  70. package/dist/inputs/Input/Input.svelte +151 -151
  71. package/dist/inputs/Input/docs/component.md +16 -16
  72. package/dist/inputs/Radios/Radio.svelte +90 -90
  73. package/dist/inputs/Radios/Radios.stories.svelte +51 -51
  74. package/dist/inputs/Radios/Radios.svelte +62 -62
  75. package/dist/inputs/Radios/docs/component.md +24 -24
  76. package/dist/inputs/Radios/docs/example.md +21 -21
  77. package/dist/inputs/Select/Select.stories.svelte +63 -63
  78. package/dist/inputs/Select/Select.svelte +326 -326
  79. package/dist/inputs/Select/docs/component.md +27 -27
  80. package/dist/inputs/Textarea/Textarea.stories.svelte +40 -40
  81. package/dist/inputs/Textarea/Textarea.svelte +113 -113
  82. package/dist/inputs/Textarea/docs/component.md +16 -16
  83. package/dist/inputs/Toolbar/HelpModal.svelte +234 -234
  84. package/dist/inputs/Toolbar/ToolControl.svelte +23 -23
  85. package/dist/inputs/Toolbar/ToolControls.svelte +9 -9
  86. package/dist/inputs/Toolbar/Toolbar.stories.svelte +148 -148
  87. package/dist/inputs/Toolbar/Toolbar.svelte +70 -70
  88. package/dist/inputs/Toolbar/ToolbarButton.svelte +184 -184
  89. package/dist/inputs/Toolbar/ToolbarDivider.svelte +29 -29
  90. package/dist/inputs/Toolbar/ToolbarIcon.svelte +106 -106
  91. package/dist/inputs/Toolbar/ToolbarsContainer.svelte +69 -69
  92. package/dist/inputs/Toolbar/docs/component.md +101 -101
  93. package/dist/intro.mdx +66 -66
  94. package/dist/js/menuOptions.js +14 -14
  95. package/dist/js/utils.js +133 -133
  96. package/dist/js/withParams.js +43 -43
  97. package/dist/layout/Accordion/Accordion.stories.svelte +30 -30
  98. package/dist/layout/Accordion/Accordion.svelte +55 -55
  99. package/dist/layout/Accordion/AccordionItem.svelte +51 -51
  100. package/dist/layout/Accordion/accordion.js +64 -64
  101. package/dist/layout/Accordion/details.js +83 -83
  102. package/dist/layout/Accordion/docs/component.md +19 -19
  103. package/dist/layout/AnalyticsBanner/AnalyticsBanner.stories.svelte +16 -16
  104. package/dist/layout/AnalyticsBanner/AnalyticsBanner.svelte +314 -314
  105. package/dist/layout/AnalyticsBanner/docs/component.md +44 -44
  106. package/dist/layout/BackLink/BackLink.stories.svelte +16 -16
  107. package/dist/layout/BackLink/BackLink.svelte +30 -30
  108. package/dist/layout/BackLink/docs/component.md +12 -12
  109. package/dist/layout/Breadcrumb/Breadcrumb.stories.svelte +31 -31
  110. package/dist/layout/Breadcrumb/Breadcrumb.svelte +69 -69
  111. package/dist/layout/Breadcrumb/docs/component.md +15 -15
  112. package/dist/layout/Card/Card.stories.svelte +39 -39
  113. package/dist/layout/Card/Card.svelte +127 -127
  114. package/dist/layout/Card/docs/component.md +14 -14
  115. package/dist/layout/Card/docs/eg-images.md +27 -27
  116. package/dist/layout/Card/docs/eg-links.md +12 -12
  117. package/dist/layout/Card/docs/eg-spans.md +12 -12
  118. package/dist/layout/Contents/Contents.stories.svelte +27 -27
  119. package/dist/layout/Contents/Contents.svelte +51 -51
  120. package/dist/layout/Contents/docs/component.md +18 -18
  121. package/dist/layout/DescriptionList/DescriptionList.stories.svelte +22 -22
  122. package/dist/layout/DescriptionList/DescriptionList.svelte +59 -59
  123. package/dist/layout/DescriptionList/docs/component.md +18 -18
  124. package/dist/layout/Details/Details.stories.svelte +32 -32
  125. package/dist/layout/Details/Details.svelte +75 -75
  126. package/dist/layout/Details/docs/component.md +14 -14
  127. package/dist/layout/DocumentList/Document.svelte +103 -103
  128. package/dist/layout/DocumentList/DocumentList.stories.svelte +88 -88
  129. package/dist/layout/DocumentList/DocumentList.svelte +33 -33
  130. package/dist/layout/DocumentList/docs/component.md +28 -28
  131. package/dist/layout/DocumentList/docs/example.md +23 -23
  132. package/dist/layout/ErrorPage/ErrorPage.stories.svelte +18 -18
  133. package/dist/layout/ErrorPage/ErrorPage.svelte +48 -48
  134. package/dist/layout/ErrorPage/docs/component.md +13 -13
  135. package/dist/layout/Footer/Footer.stories.svelte +24 -24
  136. package/dist/layout/Footer/Footer.svelte +366 -366
  137. package/dist/layout/Footer/docs/component.md +10 -10
  138. package/dist/layout/Grid/Grid.stories.svelte +50 -50
  139. package/dist/layout/Grid/Grid.svelte +117 -117
  140. package/dist/layout/Grid/GridCell.svelte +65 -65
  141. package/dist/layout/Grid/docs/component.md +14 -14
  142. package/dist/layout/Header/Header.stories.svelte +26 -26
  143. package/dist/layout/Header/Header.svelte +875 -875
  144. package/dist/layout/Header/docs/component.md +11 -11
  145. package/dist/layout/Hero/Hero.stories.svelte +79 -79
  146. package/dist/layout/Hero/Hero.svelte +364 -364
  147. package/dist/layout/Hero/docs/component.md +14 -14
  148. package/dist/layout/Highlight/Highlight.stories.svelte +29 -29
  149. package/dist/layout/Highlight/Highlight.svelte +77 -77
  150. package/dist/layout/Highlight/docs/component.md +12 -12
  151. package/dist/layout/Image/Image.stories.svelte +23 -23
  152. package/dist/layout/Image/Image.svelte +29 -29
  153. package/dist/layout/Image/docs/component.md +15 -15
  154. package/dist/layout/List/Li.svelte +3 -3
  155. package/dist/layout/List/List.stories.svelte +40 -40
  156. package/dist/layout/List/List.svelte +46 -46
  157. package/dist/layout/List/docs/component.md +14 -14
  158. package/dist/layout/List/docs/example.md +12 -12
  159. package/dist/layout/NavSections/NavSection.svelte +90 -90
  160. package/dist/layout/NavSections/NavSections.stories.svelte +51 -51
  161. package/dist/layout/NavSections/NavSections.svelte +160 -160
  162. package/dist/layout/NavSections/docs/component.md +25 -25
  163. package/dist/layout/Notice/Notice.stories.svelte +61 -61
  164. package/dist/layout/Notice/Notice.svelte +56 -56
  165. package/dist/layout/Notice/docs/component.md +14 -14
  166. package/dist/layout/PhaseBanner/PhaseBanner.stories.svelte +24 -24
  167. package/dist/layout/PhaseBanner/PhaseBanner.svelte +66 -66
  168. package/dist/layout/PhaseBanner/docs/component.md +14 -14
  169. package/dist/layout/RelatedContent/RelatedContent.stories.svelte +36 -36
  170. package/dist/layout/RelatedContent/RelatedContent.svelte +54 -54
  171. package/dist/layout/RelatedContent/docs/component.md +16 -16
  172. package/dist/layout/Scroller/Scroller.stories.svelte +60 -60
  173. package/dist/layout/Scroller/Scroller.svelte +368 -368
  174. package/dist/layout/Scroller/ScrollerSection.svelte +70 -70
  175. package/dist/layout/Scroller/docs/component.md +39 -39
  176. package/dist/layout/Section/Section.stories.svelte +33 -33
  177. package/dist/layout/Section/Section.svelte +60 -60
  178. package/dist/layout/Section/docs/component.md +12 -12
  179. package/dist/layout/ShareButtons/ShareButtons.stories.svelte +20 -20
  180. package/dist/layout/ShareButtons/ShareButtons.svelte +131 -131
  181. package/dist/layout/ShareButtons/docs/component.md +14 -14
  182. package/dist/layout/SkipLink/SkipLink.stories.svelte +16 -16
  183. package/dist/layout/SkipLink/SkipLink.svelte +9 -9
  184. package/dist/layout/SkipLink/docs/component.md +11 -11
  185. package/dist/layout/Summary/Summary.stories.svelte +21 -21
  186. package/dist/layout/Summary/Summary.svelte +60 -60
  187. package/dist/layout/Summary/docs/component.md +17 -17
  188. package/dist/layout/Tabs/Tab.svelte +53 -53
  189. package/dist/layout/Tabs/Tabs.stories.svelte +29 -29
  190. package/dist/layout/Tabs/Tabs.svelte +89 -89
  191. package/dist/layout/Tabs/docs/component.md +16 -16
  192. package/dist/layout/Tabs/tabs.js +302 -302
  193. package/dist/layout/Timeline/Timeline.stories.svelte +44 -44
  194. package/dist/layout/Timeline/Timeline.svelte +17 -17
  195. package/dist/layout/Timeline/TimelineItem.svelte +14 -14
  196. package/dist/layout/Timeline/docs/component.md +27 -27
  197. package/dist/layout/Timeline/docs/example.md +20 -20
  198. package/dist/templates/EmbedArticle/EmbedArticle.stories.svelte +72 -72
  199. package/dist/templates/EmbedArticle/docs/component.md +56 -56
  200. package/dist/templates/FeatureArticle/FeatureArticle.stories.svelte +150 -150
  201. package/dist/templates/FeatureArticle/docs/component.md +125 -125
  202. package/dist/templates/StandardArticle/StandardArticle.stories.svelte +86 -86
  203. package/dist/templates/StandardArticle/docs/component.md +76 -76
  204. package/dist/templates/intro.mdx +18 -18
  205. package/dist/wrappers/Container/Container.stories.svelte +38 -38
  206. package/dist/wrappers/Container/Container.svelte +77 -77
  207. package/dist/wrappers/Container/docs/component.md +12 -12
  208. package/dist/wrappers/Embed/Embed.stories.svelte +24 -24
  209. package/dist/wrappers/Embed/Embed.svelte +44 -44
  210. package/dist/wrappers/Embed/docs/component.md +15 -15
  211. package/dist/wrappers/LazyLoad/LazyLoad.stories.svelte +37 -37
  212. package/dist/wrappers/LazyLoad/LazyLoad.svelte +50 -50
  213. package/dist/wrappers/LazyLoad/docs/component.md +29 -29
  214. package/dist/wrappers/Main/Main.stories.svelte +24 -24
  215. package/dist/wrappers/Main/Main.svelte +11 -11
  216. package/dist/wrappers/Main/docs/component.md +16 -16
  217. package/dist/wrappers/Observe/Observe.stories.svelte +29 -29
  218. package/dist/wrappers/Observe/Observe.svelte +40 -40
  219. package/dist/wrappers/Observe/docs/component.md +22 -22
  220. package/dist/wrappers/Theme/Theme.stories.svelte +70 -70
  221. package/dist/wrappers/Theme/Theme.svelte +76 -76
  222. package/dist/wrappers/Theme/docs/component.md +10 -10
  223. package/dist/wrappers/Theme/themes.js +70 -70
  224. package/package.json +88 -88
@@ -1,73 +1,73 @@
1
- <script module>
2
- import { defineMeta } from "@storybook/addon-svelte-csf";
3
- import { withComponentDocs } from "../../js/withParams.js";
4
- import Input from "./Input.svelte";
5
- import componentDocs from "./docs/component.md?raw";
6
-
7
- const { Story } = defineMeta({
8
- title: "Inputs/Input",
9
- component: Input,
10
- tags: ["autodocs"],
11
- argTypes: {},
12
- parameters: withComponentDocs(componentDocs)
13
- });
14
- </script>
15
-
16
- {#snippet template(args)}
17
- <div style:padding="12px">
18
- <Input {...args} />
19
- </div>
20
- {/snippet}
21
-
22
- <Story
23
- name="Default"
24
- args={{
25
- id: "text",
26
- label: "Enter some text"
27
- }}
28
- {template}
29
- />
30
-
31
- <Story
32
- name="With hidden label"
33
- args={{
34
- id: "text",
35
- label: "Enter some text",
36
- hideLabel: true
37
- }}
38
- {template}
39
- />
40
-
41
- <Story
42
- name="With description"
43
- args={{
44
- id: "text",
45
- label: "Enter some text",
46
- description: "This is a hint on what to enter"
47
- }}
48
- {template}
49
- />
50
-
51
- <Story
52
- name="Numeric with prefix"
53
- args={{
54
- id: "text",
55
- label: "Enter some text",
56
- prefix: "£",
57
- unitLabel: "British pounds sterling",
58
- numeric: true,
59
- width: 5,
60
- charLimit: 8
61
- }}
62
- {template}
63
- />
64
-
65
- <Story
66
- name="Input error"
67
- args={{
68
- id: "text",
69
- label: "Enter some text",
70
- error: true
71
- }}
72
- {template}
73
- />
1
+ <script module>
2
+ import { defineMeta } from "@storybook/addon-svelte-csf";
3
+ import { withComponentDocs } from "../../js/withParams.js";
4
+ import Input from "./Input.svelte";
5
+ import componentDocs from "./docs/component.md?raw";
6
+
7
+ const { Story } = defineMeta({
8
+ title: "Inputs/Input",
9
+ component: Input,
10
+ tags: ["autodocs"],
11
+ argTypes: {},
12
+ parameters: withComponentDocs(componentDocs)
13
+ });
14
+ </script>
15
+
16
+ {#snippet template(args)}
17
+ <div style:padding="12px">
18
+ <Input {...args} />
19
+ </div>
20
+ {/snippet}
21
+
22
+ <Story
23
+ name="Default"
24
+ args={{
25
+ id: "text",
26
+ label: "Enter some text"
27
+ }}
28
+ {template}
29
+ />
30
+
31
+ <Story
32
+ name="With hidden label"
33
+ args={{
34
+ id: "text",
35
+ label: "Enter some text",
36
+ hideLabel: true
37
+ }}
38
+ {template}
39
+ />
40
+
41
+ <Story
42
+ name="With description"
43
+ args={{
44
+ id: "text",
45
+ label: "Enter some text",
46
+ description: "This is a hint on what to enter"
47
+ }}
48
+ {template}
49
+ />
50
+
51
+ <Story
52
+ name="Numeric with prefix"
53
+ args={{
54
+ id: "text",
55
+ label: "Enter some text",
56
+ prefix: "£",
57
+ unitLabel: "British pounds sterling",
58
+ numeric: true,
59
+ width: 5,
60
+ charLimit: 8
61
+ }}
62
+ {template}
63
+ />
64
+
65
+ <Story
66
+ name="Input error"
67
+ args={{
68
+ id: "text",
69
+ label: "Enter some text",
70
+ error: true
71
+ }}
72
+ {template}
73
+ />
@@ -1,151 +1,151 @@
1
- <script>
2
- import { createEventDispatcher } from "svelte";
3
-
4
- const dispatch = createEventDispatcher();
5
-
6
- /**
7
- * ID for &lt;input&gt; element
8
- * @type {string|null}
9
- */
10
- export let id = null;
11
- /**
12
- * Name attribute for &lt;input&gt; 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 &lt;input&gt; 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 &lt;input&gt; 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 &lt;input&gt; element
8
+ * @type {string|null}
9
+ */
10
+ export let id = null;
11
+ /**
12
+ * Name attribute for &lt;input&gt; 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 &lt;input&gt; 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 &lt;input&gt; 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,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>