@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,27 +1,27 @@
1
- An extended alternative to an HTML `<select>` component (see Dropdown), with auto-complete and the ability to have a custom **loadOptions** function.
2
-
3
- This component is a Svelte wrapper for the GOV.UK [accessible-autocomplete](https://github.com/alphagov/accessible-autocomplete).
4
-
5
- (Note: This component is not fully compatible with a previous version of the same component based on svelte-select.)
6
-
7
- <!-- prettier-ignore -->
8
- ```html
9
- <script>
10
- import { AccessibleSelect } from "@onsvisual/svelte-components";
11
-
12
- const values = [
13
- { id: "1", label: "one" },
14
- { id: "2", label: "two" },
15
- { id: "3", label: "three" },
16
- ];
17
-
18
-
19
- // Bind the <select> value to a variable (reactive)
20
- let value;
21
-
22
- // Define your own function on change
23
- const handleChange = (e) => console.log(e);
24
- </script>
25
-
26
- <AccessibleSelect {options} bind:value on:change="{handleChange}" />
27
- ```
1
+ An extended alternative to an HTML `<select>` component (see Dropdown), with auto-complete and the ability to have a custom **loadOptions** function.
2
+
3
+ This component is a Svelte wrapper for the GOV.UK [accessible-autocomplete](https://github.com/alphagov/accessible-autocomplete).
4
+
5
+ (Note: This component is not fully compatible with a previous version of the same component based on svelte-select.)
6
+
7
+ <!-- prettier-ignore -->
8
+ ```html
9
+ <script>
10
+ import { AccessibleSelect } from "@onsvisual/svelte-components";
11
+
12
+ const values = [
13
+ { id: "1", label: "one" },
14
+ { id: "2", label: "two" },
15
+ { id: "3", label: "three" },
16
+ ];
17
+
18
+
19
+ // Bind the <select> value to a variable (reactive)
20
+ let value;
21
+
22
+ // Define your own function on change
23
+ const handleChange = (e) => console.log(e);
24
+ </script>
25
+
26
+ <AccessibleSelect {options} bind:value on:change="{handleChange}" />
27
+ ```
@@ -1,40 +1,40 @@
1
- <script module>
2
- import { defineMeta } from "@storybook/addon-svelte-csf";
3
- import { withComponentDocs } from "../../js/withParams.js";
4
- import Textarea from "./Textarea.svelte";
5
- import componentDocs from "./docs/component.md?raw";
6
-
7
- const { Story } = defineMeta({
8
- title: "Inputs/Textarea",
9
- component: Textarea,
10
- tags: ["autodocs"],
11
- argTypes: {},
12
- parameters: withComponentDocs(componentDocs)
13
- });
14
- </script>
15
-
16
- {#snippet template(args)}
17
- <div style:padding="12px">
18
- <Textarea {...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="Hidden label and character limit"
33
- args={{
34
- id: "text",
35
- label: "Enter some text",
36
- hideLabel: true,
37
- charLimit: 200
38
- }}
39
- {template}
40
- />
1
+ <script module>
2
+ import { defineMeta } from "@storybook/addon-svelte-csf";
3
+ import { withComponentDocs } from "../../js/withParams.js";
4
+ import Textarea from "./Textarea.svelte";
5
+ import componentDocs from "./docs/component.md?raw";
6
+
7
+ const { Story } = defineMeta({
8
+ title: "Inputs/Textarea",
9
+ component: Textarea,
10
+ tags: ["autodocs"],
11
+ argTypes: {},
12
+ parameters: withComponentDocs(componentDocs)
13
+ });
14
+ </script>
15
+
16
+ {#snippet template(args)}
17
+ <div style:padding="12px">
18
+ <Textarea {...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="Hidden label and character limit"
33
+ args={{
34
+ id: "text",
35
+ label: "Enter some text",
36
+ hideLabel: true,
37
+ charLimit: 200
38
+ }}
39
+ {template}
40
+ />
@@ -1,113 +1,113 @@
1
- <script>
2
- import { createEventDispatcher } from "svelte";
3
-
4
- const dispatch = createEventDispatcher();
5
-
6
- /**
7
- * ID for &lt;textarea&gt; element
8
- * @type {string|null}
9
- */
10
- export let id = null;
11
- /**
12
- * Name for &lt;textarea&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;textarea&gt; element (expected for accessibility)
23
- * @type {string|null}
24
- */
25
- export let label = "Enter some text";
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|null}
39
- */
40
- export let charLimit = null;
41
- /**
42
- * The height of the &lt;textarea&gt; element in rows
43
- * @type {number}
44
- */
45
- export let rows = 8;
46
- /**
47
- * The width of the &lt;textarea&gt; element in characters
48
- * @type {number}
49
- */
50
- export let width = 30;
51
- /**
52
- * Optional: Set an additional CSS class for the component
53
- * @type {string|null}
54
- */
55
- export let cls = null;
56
-
57
- $: remaining = charLimit && value.length ? charLimit - value.length : charLimit || null;
58
- </script>
59
-
60
- <div class="ons-field {cls}">
61
- {#if label}
62
- <label
63
- class="ons-label ons-label--with-description"
64
- class:ons-u-vh={hideLabel}
65
- aria-describedby={description ? `${id}-description-hint` : null}
66
- for={id}>{label}</label
67
- >
68
- {/if}
69
- {#if description}
70
- <span id="{id}-description-hint" class="ons-label__description ons-input--with-description"
71
- >{description}</span
72
- >
73
- {/if}
74
- <textarea
75
- {id}
76
- {name}
77
- bind:value
78
- class="ons-input ons-input--textarea {Number.isInteger(width) ? `ons-input--w-${width}` : null}"
79
- class:ons-js-char-limit-input={charLimit}
80
- class:ons-input--limit-reached={remaining === 0}
81
- {rows}
82
- maxlength={charLimit}
83
- data-char-limit-ref="{id}-lim"
84
- aria-describedby="textarea-char-limit-lim"
85
- ></textarea>
86
- {#if Number.isInteger(remaining)}
87
- <span
88
- id="textarea-char-limit-lim"
89
- class="ons-input__limit ons-u-fs-s--b ons-u-mt-xs"
90
- class:ons-input__limit--reached={remaining === 0}
91
- data-charcount-singular="You have {remaining} character remaining"
92
- data-charcount-plural="You have {remaining} characters remaining"
93
- data-charcount-limit-singular=""
94
- data-charcount-limit-plural=""
95
- aria-live={remaining === 0 ? "assertive" : "polite"}
96
- >
97
- You have {remaining}
98
- {remaining === 1 ? "character" : "characters"} remaining
99
- </span>
100
- {/if}
101
- </div>
102
-
103
- <style>
104
- .ons-input--textarea {
105
- background: var(--background, white);
106
- border-color: currentColor;
107
- }
108
- .ons-input--textarea:focus {
109
- box-shadow:
110
- 0 0 0 1px currentColor,
111
- 0 0 0 4px #fbc900;
112
- }
113
- </style>
1
+ <script>
2
+ import { createEventDispatcher } from "svelte";
3
+
4
+ const dispatch = createEventDispatcher();
5
+
6
+ /**
7
+ * ID for &lt;textarea&gt; element
8
+ * @type {string|null}
9
+ */
10
+ export let id = null;
11
+ /**
12
+ * Name for &lt;textarea&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;textarea&gt; element (expected for accessibility)
23
+ * @type {string|null}
24
+ */
25
+ export let label = "Enter some text";
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|null}
39
+ */
40
+ export let charLimit = null;
41
+ /**
42
+ * The height of the &lt;textarea&gt; element in rows
43
+ * @type {number}
44
+ */
45
+ export let rows = 8;
46
+ /**
47
+ * The width of the &lt;textarea&gt; element in characters
48
+ * @type {number}
49
+ */
50
+ export let width = 30;
51
+ /**
52
+ * Optional: Set an additional CSS class for the component
53
+ * @type {string|null}
54
+ */
55
+ export let cls = null;
56
+
57
+ $: remaining = charLimit && value.length ? charLimit - value.length : charLimit || null;
58
+ </script>
59
+
60
+ <div class="ons-field {cls}">
61
+ {#if label}
62
+ <label
63
+ class="ons-label ons-label--with-description"
64
+ class:ons-u-vh={hideLabel}
65
+ aria-describedby={description ? `${id}-description-hint` : null}
66
+ for={id}>{label}</label
67
+ >
68
+ {/if}
69
+ {#if description}
70
+ <span id="{id}-description-hint" class="ons-label__description ons-input--with-description"
71
+ >{description}</span
72
+ >
73
+ {/if}
74
+ <textarea
75
+ {id}
76
+ {name}
77
+ bind:value
78
+ class="ons-input ons-input--textarea {Number.isInteger(width) ? `ons-input--w-${width}` : null}"
79
+ class:ons-js-char-limit-input={charLimit}
80
+ class:ons-input--limit-reached={remaining === 0}
81
+ {rows}
82
+ maxlength={charLimit}
83
+ data-char-limit-ref="{id}-lim"
84
+ aria-describedby="textarea-char-limit-lim"
85
+ ></textarea>
86
+ {#if Number.isInteger(remaining)}
87
+ <span
88
+ id="textarea-char-limit-lim"
89
+ class="ons-input__limit ons-u-fs-s--b ons-u-mt-xs"
90
+ class:ons-input__limit--reached={remaining === 0}
91
+ data-charcount-singular="You have {remaining} character remaining"
92
+ data-charcount-plural="You have {remaining} characters remaining"
93
+ data-charcount-limit-singular=""
94
+ data-charcount-limit-plural=""
95
+ aria-live={remaining === 0 ? "assertive" : "polite"}
96
+ >
97
+ You have {remaining}
98
+ {remaining === 1 ? "character" : "characters"} remaining
99
+ </span>
100
+ {/if}
101
+ </div>
102
+
103
+ <style>
104
+ .ons-input--textarea {
105
+ background: var(--background, white);
106
+ border-color: currentColor;
107
+ }
108
+ .ons-input--textarea:focus {
109
+ box-shadow:
110
+ 0 0 0 1px currentColor,
111
+ 0 0 0 4px #fbc900;
112
+ }
113
+ </style>
@@ -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
+ ```