@nypl/design-system-react-components 0.25.2 → 0.25.6

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 (238) hide show
  1. package/CHANGELOG.md +101 -0
  2. package/README.md +47 -11
  3. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +4 -0
  4. package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +1 -0
  5. package/dist/components/Button/Button.d.ts +9 -8
  6. package/dist/components/Button/ButtonTypes.d.ts +2 -1
  7. package/dist/components/Card/Card.d.ts +36 -52
  8. package/dist/components/Card/CardTypes.d.ts +0 -15
  9. package/dist/components/Checkbox/Checkbox.d.ts +8 -9
  10. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +2 -2
  11. package/dist/components/DatePicker/DatePicker.d.ts +36 -36
  12. package/dist/components/Fieldset/Fieldset.d.ts +25 -0
  13. package/dist/components/HelperErrorText/HelperErrorText.d.ts +4 -0
  14. package/dist/components/HorizontalRule/HorizontalRule.d.ts +10 -3
  15. package/dist/components/Icons/Icon.d.ts +4 -0
  16. package/dist/components/Icons/IconSvgs.d.ts +11 -0
  17. package/dist/components/Icons/IconTypes.d.ts +11 -0
  18. package/dist/components/Image/Image.d.ts +19 -9
  19. package/dist/components/Image/ImageTypes.d.ts +20 -0
  20. package/dist/components/Link/Link.d.ts +4 -0
  21. package/dist/components/List/List.d.ts +7 -1
  22. package/dist/components/Notification/Notification.d.ts +6 -4
  23. package/dist/components/Pagination/Pagination.d.ts +16 -13
  24. package/dist/components/Pagination/Pagination.stories.d.ts +2 -0
  25. package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +29 -0
  26. package/dist/components/ProgressIndicator/ProgressIndicatorTypes.d.ts +8 -0
  27. package/dist/components/RadioGroup/RadioGroup.d.ts +2 -2
  28. package/dist/components/SearchBar/SearchBar.d.ts +3 -3
  29. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +18 -14
  30. package/dist/components/Slider/Slider.d.ts +57 -0
  31. package/dist/components/Tabs/Tabs.d.ts +1 -1
  32. package/dist/components/TextInput/TextInput.d.ts +10 -0
  33. package/dist/design-system-react-components.cjs.development.js +3058 -936
  34. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  35. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  36. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  37. package/dist/design-system-react-components.esm.js +3049 -921
  38. package/dist/design-system-react-components.esm.js.map +1 -1
  39. package/dist/index.d.ts +12 -6
  40. package/dist/resources.scss +180 -170
  41. package/dist/styles.css +1 -1
  42. package/dist/theme/components/breadcrumb.d.ts +9 -0
  43. package/dist/theme/components/button.d.ts +22 -8
  44. package/dist/theme/components/card.d.ts +168 -0
  45. package/dist/theme/components/checkbox.d.ts +5 -1
  46. package/dist/theme/components/checkboxGroup.d.ts +12 -0
  47. package/dist/theme/components/datePicker.d.ts +16 -0
  48. package/dist/theme/components/fieldset.d.ts +27 -0
  49. package/dist/theme/components/global.d.ts +23 -13
  50. package/dist/theme/components/globalMixins.d.ts +9 -1
  51. package/dist/theme/components/heading.d.ts +5 -0
  52. package/dist/theme/components/image.d.ts +31 -0
  53. package/dist/theme/components/label.d.ts +5 -3
  54. package/dist/theme/components/link.d.ts +4 -0
  55. package/dist/theme/components/list.d.ts +5 -1
  56. package/dist/theme/components/notification.d.ts +4 -14
  57. package/dist/theme/components/pagination.d.ts +19 -0
  58. package/dist/theme/components/progressIndicator.d.ts +50 -0
  59. package/dist/theme/components/radioGroup.d.ts +12 -0
  60. package/dist/theme/components/select.d.ts +11 -2
  61. package/dist/theme/components/skeletonLoader.d.ts +98 -0
  62. package/dist/theme/components/slider.d.ts +51 -0
  63. package/dist/theme/components/textInput.d.ts +8 -0
  64. package/dist/theme/foundations/breakpoints.d.ts +8 -8
  65. package/dist/theme/foundations/global.d.ts +6 -1
  66. package/package.json +72 -84
  67. package/src/__tests__/setup.ts +2 -2
  68. package/src/components/Accordion/Accordion.stories.mdx +39 -42
  69. package/src/components/Autosuggest/Autosuggest.stories.mdx +3 -3
  70. package/src/components/Autosuggest/Autosuggest.stories.tsx +1 -0
  71. package/src/components/Autosuggest/_Autosuggest.scss +5 -5
  72. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +24 -8
  73. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +33 -0
  74. package/src/components/Breadcrumbs/Breadcrumbs.tsx +5 -1
  75. package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +1 -0
  76. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +298 -1
  77. package/src/components/Button/Button.stories.mdx +15 -10
  78. package/src/components/Button/Button.test.tsx +21 -7
  79. package/src/components/Button/Button.tsx +18 -33
  80. package/src/components/Button/ButtonTypes.tsx +1 -0
  81. package/src/components/Button/__snapshots__/Button.test.tsx.snap +41 -10
  82. package/src/components/Card/Card.stories.mdx +296 -259
  83. package/src/components/Card/Card.test.tsx +156 -84
  84. package/src/components/Card/Card.tsx +195 -145
  85. package/src/components/Card/CardTypes.tsx +0 -17
  86. package/src/components/Card/__snapshots__/Card.test.tsx.snap +410 -0
  87. package/src/components/CardEdition/CardEdition.stories.tsx +15 -47
  88. package/src/components/CardEdition/_CardEdition.scss +22 -23
  89. package/src/components/Chakra/Box.stories.mdx +14 -15
  90. package/src/components/Chakra/Center.stories.mdx +15 -8
  91. package/src/components/Chakra/Grid.stories.mdx +16 -7
  92. package/src/components/Chakra/Stack.stories.mdx +35 -18
  93. package/src/components/Checkbox/Checkbox.stories.mdx +33 -11
  94. package/src/components/Checkbox/Checkbox.test.tsx +30 -3
  95. package/src/components/Checkbox/Checkbox.tsx +27 -27
  96. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +90 -2
  97. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +82 -2
  98. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +1 -1
  99. package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -15
  100. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +44 -80
  101. package/src/components/DatePicker/DatePicker.stories.mdx +163 -62
  102. package/src/components/DatePicker/DatePicker.test.tsx +248 -65
  103. package/src/components/DatePicker/DatePicker.tsx +158 -130
  104. package/src/components/DatePicker/_DatePicker.scss +33 -67
  105. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +818 -0
  106. package/src/components/Fieldset/Fieldset.stories.mdx +55 -0
  107. package/src/components/Fieldset/Fieldset.test.tsx +125 -0
  108. package/src/components/Fieldset/Fieldset.tsx +52 -0
  109. package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +68 -0
  110. package/src/components/Form/Form.stories.mdx +4 -5
  111. package/src/components/Form/Form.tsx +1 -0
  112. package/src/components/Grid/SimpleGrid.stories.mdx +32 -39
  113. package/src/components/Grid/SimpleGrid.test.tsx +4 -4
  114. package/src/components/Heading/Heading.stories.mdx +3 -4
  115. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +1 -1
  116. package/src/components/HelperErrorText/HelperErrorText.tsx +5 -1
  117. package/src/components/Hero/HeroTypes.tsx +1 -0
  118. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +7 -7
  119. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +6 -5
  120. package/src/components/HorizontalRule/HorizontalRule.test.tsx +17 -0
  121. package/src/components/HorizontalRule/HorizontalRule.tsx +21 -4
  122. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +5 -5
  123. package/src/components/Icons/Icon.stories.mdx +11 -3
  124. package/src/components/Icons/Icon.test.tsx +18 -0
  125. package/src/components/Icons/Icon.tsx +6 -0
  126. package/src/components/Icons/IconSvgs.tsx +22 -0
  127. package/src/components/Icons/IconTypes.tsx +11 -0
  128. package/src/components/Image/Image.stories.mdx +220 -0
  129. package/src/components/Image/Image.test.tsx +131 -29
  130. package/src/components/Image/Image.tsx +84 -56
  131. package/src/components/Image/ImageTypes.ts +22 -0
  132. package/src/components/Image/__snapshots__/Image.test.tsx.snap +190 -0
  133. package/src/components/Input/Input.stories.tsx +20 -64
  134. package/src/components/Input/_Input.scss +23 -14
  135. package/src/components/Link/Link.tsx +4 -1
  136. package/src/components/List/List.stories.mdx +1 -1
  137. package/src/components/List/List.tsx +11 -4
  138. package/src/components/Modal/Modal.stories.mdx +3 -3
  139. package/src/components/Modal/_Modal.scss +2 -2
  140. package/src/components/Notification/Notification.stories.mdx +1 -3
  141. package/src/components/Notification/Notification.tsx +24 -9
  142. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +2 -0
  143. package/src/components/Pagination/Pagination.stories.mdx +26 -27
  144. package/src/components/Pagination/Pagination.stories.tsx +11 -16
  145. package/src/components/Pagination/Pagination.test.tsx +276 -146
  146. package/src/components/Pagination/Pagination.tsx +174 -154
  147. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +285 -0
  148. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +292 -0
  149. package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +225 -0
  150. package/src/components/ProgressIndicator/ProgressIndicator.tsx +126 -0
  151. package/src/components/ProgressIndicator/ProgressIndicatorTypes.ts +8 -0
  152. package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +357 -0
  153. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +3 -0
  154. package/src/components/RadioGroup/RadioGroup.stories.mdx +3 -4
  155. package/src/components/RadioGroup/RadioGroup.tsx +11 -16
  156. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +39 -71
  157. package/src/components/SearchBar/SearchBar.Test.tsx +66 -21
  158. package/src/components/SearchBar/SearchBar.stories.mdx +114 -10
  159. package/src/components/SearchBar/SearchBar.tsx +15 -5
  160. package/src/components/Select/SelectTypes.tsx +1 -0
  161. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +28 -59
  162. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +97 -177
  163. package/src/components/SkeletonLoader/SkeletonLoader.tsx +74 -71
  164. package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +739 -0
  165. package/src/components/Slider/Slider.stories.mdx +529 -0
  166. package/src/components/Slider/Slider.test.tsx +653 -0
  167. package/src/components/Slider/Slider.tsx +303 -0
  168. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +1946 -0
  169. package/src/components/StyleGuide/Bidirectionality.stories.mdx +1 -1
  170. package/src/components/StyleGuide/Breakpoints.stories.mdx +21 -7
  171. package/src/components/StyleGuide/Buttons.stories.mdx +69 -15
  172. package/src/components/StyleGuide/ColorCard.tsx +0 -1
  173. package/src/components/StyleGuide/DesignTokens.stories.mdx +170 -0
  174. package/src/components/StyleGuide/Iconography.stories.mdx +51 -62
  175. package/src/components/Tabs/Tabs.tsx +5 -5
  176. package/src/components/Template/Template.stories.mdx +11 -16
  177. package/src/components/TextInput/TextInput.stories.mdx +1 -1
  178. package/src/components/TextInput/TextInput.tsx +23 -6
  179. package/src/components/TextInput/TextInputTypes.tsx +2 -0
  180. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +2 -3
  181. package/src/docs/Chakra.stories.mdx +2 -2
  182. package/src/index.ts +20 -12
  183. package/src/resources.scss +5 -5
  184. package/src/styles/base/{_02-breakpoints.scss → _01-breakpoints.scss} +9 -10
  185. package/src/styles/base/{_03-mixins.scss → _02-mixins.scss} +16 -5
  186. package/src/styles/base/{_04-base.scss → _03-base.scss} +7 -2
  187. package/src/styles/base/{_05-focus.scss → _04-focus.scss} +0 -15
  188. package/src/styles/base/_place-holder.scss +14 -3
  189. package/src/styles/{03-space → space}/_space-inline.scss +14 -14
  190. package/src/styles/{03-space → space}/_space-inset.scss +10 -10
  191. package/src/styles/space/_space-stack.scss +116 -0
  192. package/src/styles.scss +13 -55
  193. package/src/theme/components/breadcrumb.ts +10 -0
  194. package/src/theme/components/button.ts +18 -12
  195. package/src/theme/components/card.ts +174 -0
  196. package/src/theme/components/checkbox.ts +7 -2
  197. package/src/theme/components/checkboxGroup.ts +8 -0
  198. package/src/theme/components/datePicker.ts +17 -0
  199. package/src/theme/components/fieldset.ts +18 -0
  200. package/src/theme/components/global.ts +26 -15
  201. package/src/theme/components/globalMixins.ts +9 -1
  202. package/src/theme/components/heading.ts +5 -0
  203. package/src/theme/components/image.ts +116 -0
  204. package/src/theme/components/label.ts +3 -10
  205. package/src/theme/components/link.ts +4 -0
  206. package/src/theme/components/list.ts +6 -3
  207. package/src/theme/components/notification.ts +12 -14
  208. package/src/theme/components/pagination.ts +20 -0
  209. package/src/theme/components/progressIndicator.ts +62 -0
  210. package/src/theme/components/radioGroup.ts +8 -0
  211. package/src/theme/components/select.ts +5 -2
  212. package/src/theme/components/skeletonLoader.ts +107 -0
  213. package/src/theme/components/slider.ts +79 -0
  214. package/src/theme/components/textInput.ts +2 -0
  215. package/src/theme/foundations/breakpoints.ts +8 -8
  216. package/src/theme/foundations/global.ts +6 -1
  217. package/src/theme/index.ts +22 -4
  218. package/src/utils/componentCategories.ts +4 -3
  219. package/dist/components/Image/Image.stories.d.ts +0 -18
  220. package/dist/theme/components/customCheckboxGroup.d.ts +0 -18
  221. package/dist/theme/components/customRadioGroup.d.ts +0 -18
  222. package/src/components/Button/_Button.scss +0 -32
  223. package/src/components/Card/_Card.scss +0 -308
  224. package/src/components/Image/Image.stories.tsx +0 -54
  225. package/src/components/Image/_Image.scss +0 -38
  226. package/src/components/Pagination/_Pagination.scss +0 -40
  227. package/src/components/SkeletonLoader/_SkeletonLoader.scss +0 -142
  228. package/src/styles/01-colors/_colors-brand.scss +0 -62
  229. package/src/styles/01-colors/_colors-utility.scss +0 -67
  230. package/src/styles/02-typography/_type-scale.css +0 -11
  231. package/src/styles/02-typography/_type-weight.css +0 -7
  232. package/src/styles/02-typography/_typefaces.css +0 -4
  233. package/src/styles/03-space/_space-stack.scss +0 -116
  234. package/src/styles/03-space/_space.css +0 -30
  235. package/src/styles/base/_card-grid.scss +0 -77
  236. package/src/styles/base/_typography.scss +0 -11
  237. package/src/theme/components/customCheckboxGroup.ts +0 -12
  238. package/src/theme/components/customRadioGroup.ts +0 -12
@@ -0,0 +1,529 @@
1
+ import {
2
+ Meta,
3
+ Story,
4
+ Canvas,
5
+ ArgsTable,
6
+ Description,
7
+ } from "@storybook/addon-docs/blocks";
8
+ import { withDesign } from "storybook-addon-designs";
9
+
10
+ import Slider from "./Slider";
11
+ import SimpleGrid from "../Grid/SimpleGrid";
12
+ import { GridGaps } from "../Grid/GridTypes";
13
+ import Heading from "../Heading/Heading";
14
+ import { HeadingLevels } from "../Heading/HeadingTypes";
15
+ import { getCategory } from "../../utils/componentCategories";
16
+ import DSProvider from "../../theme/provider";
17
+
18
+ <Meta
19
+ title={getCategory("Slider")}
20
+ component={Slider}
21
+ decorators={[withDesign]}
22
+ parameters={{
23
+ design: {
24
+ type: "figma",
25
+ url:
26
+ "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=36889%3A25871",
27
+ },
28
+ jest: ["Slider.test.tsx"],
29
+ }}
30
+ argTypes={{
31
+ className: { table: { disable: true } },
32
+ id: { table: { disable: true } },
33
+ name: { table: { disable: true } },
34
+ onChange: { table: { disable: true } },
35
+ }}
36
+ />
37
+
38
+ # Slider
39
+
40
+ | Component Version | DS Version |
41
+ | ----------------- | ---------- |
42
+ | Added | `0.25.4` |
43
+ | Latest | `0.25.4` |
44
+
45
+ <Description of={Slider} />
46
+
47
+ The text input component doubles as a display for the slider's current value.
48
+ For this type of component, the `value` prop must be a single number.
49
+
50
+ <Canvas withToolbar>
51
+ <Story
52
+ name="Slider with Props"
53
+ args={{
54
+ defaultValue: 50,
55
+ helperText: "Pass in a value from the min 0 to the max 100 values.",
56
+ invalidText: "Oh no this is an error :(",
57
+ isDisabled: false,
58
+ isInvalid: false,
59
+ isRangeSlider: false,
60
+ isRequired: false,
61
+ labelText: "Slider label",
62
+ max: 100,
63
+ min: 0,
64
+ optReqFlag: true,
65
+ showBoxes: true,
66
+ showHelperInvalidText: true,
67
+ showLabel: true,
68
+ showValues: true,
69
+ step: 1,
70
+ }}
71
+ argTypes={{
72
+ defaultValue: { table: { disable: true } },
73
+ isRangeSlider: { table: { disable: true } },
74
+ }}
75
+ >
76
+ {(args) => <Slider {...args} />}
77
+ </Story>
78
+ </Canvas>
79
+
80
+ <ArgsTable story="Slider with Props" />
81
+
82
+ ### Accessibility
83
+
84
+ Chakra's `Slider` component is accessible and, as recommended, we pass in an
85
+ `aria-label` to their `Slider` component. On top of that, the DS `Slider`
86
+ component's `<label>` points to the `<input>` element which shows the current
87
+ value. This `input` element also has its own `aria-label`. When the input box
88
+ is hidden, the `for` attribute in the `label` element is removed.
89
+
90
+ Note that Chakra handles its single slider thumb aria attributes: `aria-valuemin`,
91
+ `aria-valuemax`, `aria-valuenow`, and `aria-orientation`.
92
+
93
+ ## Range Slider
94
+
95
+ Set `isRangeSlider` to `true` to create a range slider. The text input
96
+ components double as displays for the slider's current minimum and maximum
97
+ value. For this type of component, the `value` prop must be an array of two
98
+ numbers. This signifies the starting and ending values of the range slider.
99
+
100
+ <Canvas withToolbar>
101
+ <Story
102
+ name="Range Slider with Props"
103
+ args={{
104
+ defaultValue: [25, 75],
105
+ helperText: "Pass in a value from the min 0 to the max 100 values.",
106
+ invalidText: "Oh no this is an error :(",
107
+ isDisabled: false,
108
+ isInvalid: false,
109
+ isRangeSlider: true,
110
+ isRequired: false,
111
+ labelText: "Range Slider label",
112
+ max: 100,
113
+ min: 0,
114
+ optReqFlag: true,
115
+ showBoxes: true,
116
+ showHelperInvalidText: true,
117
+ showLabel: true,
118
+ showValues: true,
119
+ step: 1,
120
+ }}
121
+ argTypes={{
122
+ defaultValue: { table: { disable: true } },
123
+ isRangeSlider: { table: { disable: true } },
124
+ }}
125
+ >
126
+ {(args) => <Slider {...args} />}
127
+ </Story>
128
+ </Canvas>
129
+
130
+ <ArgsTable story="Range Slider with Props" />
131
+
132
+ ### Accessibility
133
+
134
+ Chakra's `RangeSlider` component is accessible and, as recommended, we pass in
135
+ two `aria-label`s to their `RangeSlider` component. The syntax is different than
136
+ the expected standard string; the `RangeSlider` expect `aria-label` to be an array
137
+ of two strings. On top of this, the DS `Slider`'s `<label>` element, when in the
138
+ `isRangeSlider` state, points to the _first_ `<input>` element which shows the
139
+ current _start_ value. These two `input` elements also have their own `aria-label`s.
140
+ When the input boxes are hidden, the `for` attribute in the `label` element is removed.
141
+
142
+ Note that Chakra handles its two slider thumbs aria attributes: `aria-valuemin`,
143
+ `aria-valuemax`, `aria-valuenow`, and `aria-orientation`.
144
+
145
+ ### Single Slider States
146
+
147
+ Note: In the following examples, the "Required"/"Optional" text in the label is
148
+ hidden by setting the `optReqFlag` prop to false.
149
+
150
+ <Canvas>
151
+ <DSProvider>
152
+ <Heading
153
+ id="heading-single-default"
154
+ level={HeadingLevels.Four}
155
+ text="Default State"
156
+ />
157
+ <Slider
158
+ defaultValue={50}
159
+ optReqFlag={false}
160
+ helperText="Component helper text."
161
+ invalidText="Component error text :("
162
+ labelText="Label"
163
+ />
164
+ </DSProvider>
165
+ </Canvas>
166
+
167
+ <Canvas>
168
+ <DSProvider>
169
+ <Heading
170
+ id="heading-single-errored"
171
+ level={HeadingLevels.Four}
172
+ text="Errored State"
173
+ />
174
+ <Slider
175
+ defaultValue={50}
176
+ optReqFlag={false}
177
+ helperText="Component helper text."
178
+ invalidText="Component error text :("
179
+ labelText="Label"
180
+ isInvalid
181
+ />
182
+ </DSProvider>
183
+ </Canvas>
184
+
185
+ <Canvas>
186
+ <DSProvider>
187
+ <Heading
188
+ id="heading-single-disabled"
189
+ level={HeadingLevels.Four}
190
+ text="Disabled State"
191
+ />
192
+ <Slider
193
+ defaultValue={50}
194
+ optReqFlag={false}
195
+ helperText="Component helper text."
196
+ invalidText="Component error text :("
197
+ labelText="Label"
198
+ isDisabled
199
+ />
200
+ </DSProvider>
201
+ </Canvas>
202
+
203
+ ### Range Slider States
204
+
205
+ To enable the Range Slider, set the `isRangeSlider` prop to true.
206
+
207
+ Note: In the following examples, the "Required"/"Optional" text in the label is
208
+ hidden by setting the `optReqFlag` prop to false.
209
+
210
+ <Canvas>
211
+ <DSProvider>
212
+ <Heading
213
+ id="heading-range-default"
214
+ level={HeadingLevels.Four}
215
+ text="Default State"
216
+ />
217
+ <Slider
218
+ defaultValue={[25, 75]}
219
+ optReqFlag={false}
220
+ helperText="Component helper text."
221
+ invalidText="Component error text :("
222
+ labelText="Label"
223
+ isRangeSlider
224
+ />
225
+ </DSProvider>
226
+ </Canvas>
227
+
228
+ <Canvas>
229
+ <DSProvider>
230
+ <Heading
231
+ id="heading-range-errored"
232
+ level={HeadingLevels.Four}
233
+ text="Errored State"
234
+ />
235
+ <SimpleGrid columns={1} gap={GridGaps.Large}>
236
+ <Slider
237
+ defaultValue={[25, 75]}
238
+ optReqFlag={false}
239
+ helperText="Component helper text."
240
+ invalidText="Component error text :("
241
+ labelText="Label"
242
+ isRangeSlider
243
+ isInvalid
244
+ />
245
+ <p>
246
+ Note: The slider does not allow the starting thumb to go past the ending
247
+ thumb. Likewise, it also does not allow the ending thumb to go below the
248
+ starting thumb. However, it's possible to set incorrect values directly
249
+ into both of the text inputs. For example, if you enter 80 in the first
250
+ text input box and 20 in the second input box, it will automatically go
251
+ into the invalid state. In the following example, the default values are
252
+ already set to 80 and 20 *just* to showcase this error.
253
+ </p>
254
+ <Slider
255
+ defaultValue={[80, 20]}
256
+ optReqFlag={false}
257
+ helperText="Component helper text."
258
+ invalidText="Component error text :("
259
+ labelText="Label"
260
+ isRangeSlider
261
+ />
262
+ </SimpleGrid>
263
+ </DSProvider>
264
+ </Canvas>
265
+
266
+ <Canvas>
267
+ <DSProvider>
268
+ <Heading
269
+ id="heading-range-disabled"
270
+ level={HeadingLevels.Four}
271
+ text="Disabled State"
272
+ />
273
+ <Slider
274
+ defaultValue={[25, 75]}
275
+ optReqFlag={false}
276
+ helperText="Component helper text."
277
+ invalidText="Component error text :("
278
+ labelText="Label"
279
+ isRangeSlider
280
+ isDisabled
281
+ />
282
+ </DSProvider>
283
+ </Canvas>
284
+
285
+ ### Single Slider Variants
286
+
287
+ In the following example, the min/max values and the current value text
288
+ input are hidden.
289
+
290
+ <Canvas>
291
+ <DSProvider>
292
+ <Heading
293
+ id="heading-single-labels"
294
+ level={HeadingLevels.Four}
295
+ text="With and Without Component Labels"
296
+ />
297
+ <SimpleGrid columns={1} gap={GridGaps.ExtraLarge}>
298
+ <Slider
299
+ defaultValue={50}
300
+ helperText="Component helper text."
301
+ labelText="Label"
302
+ showValues={false}
303
+ showBoxes={false}
304
+ />
305
+ <Slider
306
+ defaultValue={50}
307
+ helperText="Component helper text."
308
+ labelText="Label"
309
+ showValues={false}
310
+ showBoxes={false}
311
+ isRequired
312
+ />
313
+ <Slider
314
+ defaultValue={50}
315
+ helperText="Component helper text."
316
+ labelText="Label"
317
+ optReqFlag={false}
318
+ showValues={false}
319
+ showBoxes={false}
320
+ />
321
+ <Slider
322
+ defaultValue={50}
323
+ helperText="Component helper text."
324
+ labelText="Label"
325
+ optReqFlag={false}
326
+ showHelperInvalidText={false}
327
+ showValues={false}
328
+ showBoxes={false}
329
+ />
330
+ <Slider
331
+ defaultValue={50}
332
+ helperText="Component helper text."
333
+ labelText="Label"
334
+ optReqFlag={false}
335
+ showValues={false}
336
+ showBoxes={false}
337
+ showLabel={false}
338
+ />
339
+ </SimpleGrid>
340
+ </DSProvider>
341
+ </Canvas>
342
+
343
+ For the following examples, all labels are hidden.
344
+
345
+ <Canvas>
346
+ <DSProvider>
347
+ <Heading
348
+ id="heading-single-labels-inputs"
349
+ level={HeadingLevels.Four}
350
+ text="With and Without Internal Inputs and Labels"
351
+ />
352
+ <SimpleGrid columns={1} gap={GridGaps.ExtraLarge}>
353
+ <Slider
354
+ defaultValue={50}
355
+ helperText="Component helper text."
356
+ labelText="Label"
357
+ showHelperInvalidText={false}
358
+ showLabel={false}
359
+ />
360
+ <Slider
361
+ defaultValue={50}
362
+ helperText="Component helper text."
363
+ labelText="Label"
364
+ showHelperInvalidText={false}
365
+ showLabel={false}
366
+ showBoxes={false}
367
+ />
368
+ <Slider
369
+ defaultValue={50}
370
+ helperText="Component helper text."
371
+ labelText="Label"
372
+ showHelperInvalidText={false}
373
+ showLabel={false}
374
+ showValues={false}
375
+ />
376
+ <Slider
377
+ defaultValue={50}
378
+ helperText="Component helper text."
379
+ labelText="Label"
380
+ showHelperInvalidText={false}
381
+ showLabel={false}
382
+ showValues={false}
383
+ showBoxes={false}
384
+ />
385
+ </SimpleGrid>
386
+ </DSProvider>
387
+ </Canvas>
388
+
389
+ ### Range Slider with Adjusted Handles
390
+
391
+ In the following examples, all the labels are hidden.
392
+
393
+ <Canvas>
394
+ <DSProvider>
395
+ <SimpleGrid columns={1} gap={GridGaps.ExtraLarge}>
396
+ <Slider
397
+ defaultValue={[15, 75]}
398
+ helperText="Component helper text."
399
+ labelText="Label"
400
+ showHelperInvalidText={false}
401
+ showLabel={false}
402
+ isRangeSlider
403
+ />
404
+ <Slider
405
+ defaultValue={[15, 75]}
406
+ helperText="Component helper text."
407
+ labelText="Label"
408
+ showHelperInvalidText={false}
409
+ showLabel={false}
410
+ showBoxes={false}
411
+ isRangeSlider
412
+ />
413
+ <Slider
414
+ defaultValue={[15, 75]}
415
+ helperText="Component helper text."
416
+ labelText="Label"
417
+ showHelperInvalidText={false}
418
+ showLabel={false}
419
+ showValues={false}
420
+ isRangeSlider
421
+ />
422
+ <Slider
423
+ defaultValue={[15, 75]}
424
+ helperText="Component helper text."
425
+ labelText="Label"
426
+ showHelperInvalidText={false}
427
+ showLabel={false}
428
+ showValues={false}
429
+ showBoxes={false}
430
+ isRangeSlider
431
+ />
432
+ </SimpleGrid>
433
+ </DSProvider>
434
+ </Canvas>
435
+
436
+ ### Get Data Values
437
+
438
+ Pass a callback function to the `onChange` prop to get the current number value
439
+ of the `Slider` component or an array of two numbers when it is a range slider.
440
+ Internally, the `Slider` component handles the state of the current selected
441
+ value or values. Once the value(s) is updated, the `onChange` callback will be
442
+ called and the values will be passed.
443
+
444
+ #### Single Slider Value
445
+
446
+ Open up the browser's developer console to see the value of the `Slider`
447
+ after updating it.
448
+
449
+ ```tsx
450
+ // Typescript example:
451
+ function SliderExample() {
452
+ const onChange = (newValue: number) => {
453
+ console.log(`The single Slider updated value is: ${newValue}`);
454
+ };
455
+ return (
456
+ <Slider
457
+ helperText="Component helper text."
458
+ labelText="Label"
459
+ onChange={onChange}
460
+ />
461
+ );
462
+ }
463
+ ```
464
+
465
+ export function SliderExample() {
466
+ const onChange = (newValue) => {
467
+ console.log(`The single Slider updated value is: ${newValue}`);
468
+ };
469
+ return (
470
+ <Slider
471
+ helperText="Component helper text."
472
+ labelText="Label"
473
+ onChange={onChange}
474
+ />
475
+ );
476
+ }
477
+
478
+ <Canvas>
479
+ <DSProvider>
480
+ <SliderExample />
481
+ </DSProvider>
482
+ </Canvas>
483
+
484
+ #### Range Slider Values
485
+
486
+ Open up the browser's developer console to see the values of the `Slider`
487
+ after updating it in the `isRangeSlider` state.
488
+
489
+ ```tsx
490
+ // Typescript example:
491
+ function RangeSliderExample() {
492
+ const onChange = (newValue: number[]) => {
493
+ const [start, end] = newValue;
494
+ console.log(`The Range Slider updated start value is: ${start}`);
495
+ console.log(`The Range Slider updated end value is: ${end}`);
496
+ };
497
+ return (
498
+ <Slider
499
+ helperText="Component helper text."
500
+ labelText="Label"
501
+ onChange={onChange}
502
+ isRangeSlider
503
+ />
504
+ );
505
+ }
506
+ ```
507
+
508
+ export function RangeSliderExample() {
509
+ const onChange = (newValue) => {
510
+ const [start, end] = newValue;
511
+ console.log(`The Range Slider updated start value is: ${start}`);
512
+ console.log(`The Range Slider updated end value is: ${end}`);
513
+ };
514
+ return (
515
+ <Slider
516
+ defaultValue={[15, 75]}
517
+ helperText="Component helper text."
518
+ labelText="Label"
519
+ onChange={onChange}
520
+ isRangeSlider
521
+ />
522
+ );
523
+ }
524
+
525
+ <Canvas>
526
+ <DSProvider>
527
+ <RangeSliderExample />
528
+ </DSProvider>
529
+ </Canvas>