@nypl/design-system-react-components 0.25.12 → 0.26.1
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/CHANGELOG.md +131 -1
- package/README.md +10 -10
- package/dist/components/Accordion/Accordion.d.ts +6 -4
- package/dist/components/Accordion/AccordionTypes.d.ts +5 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +4 -4
- package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +1 -1
- package/dist/components/Button/Button.d.ts +2 -2
- package/dist/components/Card/Card.d.ts +22 -29
- package/dist/components/Checkbox/Checkbox.d.ts +3 -3
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +9 -6
- package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +5 -6
- package/dist/components/Fieldset/Fieldset.d.ts +5 -6
- package/dist/components/Form/Form.d.ts +6 -6
- package/dist/components/Grid/GridTypes.d.ts +7 -7
- package/dist/components/Grid/SimpleGrid.d.ts +1 -1
- package/dist/components/Heading/Heading.d.ts +5 -5
- package/dist/components/Heading/HeadingTypes.d.ts +1 -1
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +9 -8
- package/dist/components/Hero/Hero.d.ts +9 -5
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +2 -10
- package/dist/components/Icons/Icon.d.ts +2 -1
- package/dist/components/Icons/IconTypes.d.ts +1 -0
- package/dist/components/Image/Image.d.ts +27 -9
- package/dist/components/Image/ImageTypes.d.ts +4 -4
- package/dist/components/Label/Label.d.ts +7 -4
- package/dist/components/Link/Link.d.ts +1 -1
- package/dist/components/List/List.d.ts +11 -11
- package/dist/components/List/ListTypes.d.ts +1 -1
- package/dist/components/Logo/Logo.d.ts +2 -1
- package/dist/components/Logo/LogoSvgs.d.ts +2 -0
- package/dist/components/Logo/LogoTypes.d.ts +4 -2
- package/dist/components/Notification/Notification.d.ts +7 -7
- package/dist/components/Pagination/Pagination.d.ts +2 -2
- package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +3 -3
- package/dist/components/Radio/Radio.d.ts +5 -7
- package/dist/components/RadioGroup/RadioGroup.d.ts +16 -8
- package/dist/components/SearchBar/SearchBar.d.ts +4 -4
- package/dist/components/Select/Select.d.ts +12 -8
- package/dist/components/Select/SelectTypes.d.ts +4 -0
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -6
- package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +0 -4
- package/dist/components/Slider/Slider.d.ts +6 -4
- package/dist/components/StatusBadge/StatusBadge.d.ts +5 -1
- package/dist/components/StructuredContent/StructuredContent.d.ts +10 -23
- package/dist/components/Table/Table.d.ts +1 -1
- package/dist/components/Tabs/Tabs.d.ts +7 -6
- package/dist/components/Template/Template.d.ts +17 -8
- package/dist/components/Text/Text.d.ts +4 -4
- package/dist/components/Text/TextTypes.d.ts +1 -1
- package/dist/components/TextInput/TextInput.d.ts +7 -7
- package/dist/components/Toggle/Toggle.d.ts +8 -10
- package/dist/components/Toggle/{ToggleSizes.d.ts → ToggleTypes.d.ts} +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +2 -1
- package/dist/design-system-react-components.cjs.development.js +2075 -1468
- package/dist/design-system-react-components.cjs.development.js.map +1 -1
- package/dist/design-system-react-components.cjs.production.min.js +1 -1
- package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
- package/dist/design-system-react-components.esm.js +2086 -1483
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/helpers/enums.d.ts +4 -0
- package/dist/hooks/useCarouselStyles.d.ts +3 -2
- package/dist/hooks/useNYPLTheme.d.ts +12 -0
- package/dist/index.d.ts +11 -9
- package/dist/styles.css +1 -1
- package/dist/theme/components/accordion.d.ts +7 -12
- package/dist/theme/components/breadcrumb.d.ts +3 -0
- package/dist/theme/components/button.d.ts +10 -2
- package/dist/theme/components/card.d.ts +44 -24
- package/dist/theme/components/checkbox.d.ts +6 -4
- package/dist/theme/components/checkboxGroup.d.ts +4 -2
- package/dist/theme/components/componentWrapper.d.ts +2 -2
- package/dist/theme/components/customTable.d.ts +84 -1
- package/dist/theme/components/fieldset.d.ts +4 -14
- package/dist/theme/components/global.d.ts +25 -18
- package/dist/theme/components/heading.d.ts +53 -0
- package/dist/theme/components/helperErrorText.d.ts +1 -0
- package/dist/theme/components/hero.d.ts +21 -15
- package/dist/theme/components/image.d.ts +1 -1
- package/dist/theme/components/label.d.ts +9 -10
- package/dist/theme/components/list.d.ts +99 -9
- package/dist/theme/components/notification.d.ts +4 -4
- package/dist/theme/components/pagination.d.ts +2 -5
- package/dist/theme/components/radio.d.ts +7 -4
- package/dist/theme/components/radioGroup.d.ts +4 -2
- package/dist/theme/components/select.d.ts +37 -5
- package/dist/theme/components/skeletonLoader.d.ts +2 -2
- package/dist/theme/components/slider.d.ts +6 -3
- package/dist/theme/components/structuredContent.d.ts +197 -0
- package/dist/theme/components/textInput.d.ts +18 -6
- package/dist/theme/components/toggle.d.ts +20 -5
- package/dist/theme/foundations/global.d.ts +2 -0
- package/dist/theme/foundations/radii.d.ts +1 -0
- package/dist/theme/foundations/spacing.d.ts +46 -43
- package/package.json +5 -6
- package/src/components/AccessibilityGuide/SkipNavigation.stories.mdx +34 -0
- package/src/components/Accordion/Accordion.stories.mdx +150 -66
- package/src/components/Accordion/Accordion.test.tsx +65 -17
- package/src/components/Accordion/Accordion.tsx +61 -27
- package/src/components/Accordion/AccordionTypes.tsx +5 -0
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +505 -14
- package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -3
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +37 -19
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +57 -36
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +14 -13
- package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +1 -1
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +211 -12
- package/src/components/Button/Button.stories.mdx +87 -23
- package/src/components/Button/Button.test.tsx +25 -0
- package/src/components/Button/Button.tsx +18 -7
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +27 -7
- package/src/components/Card/Card.stories.mdx +493 -329
- package/src/components/Card/Card.test.tsx +138 -18
- package/src/components/Card/Card.tsx +151 -85
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +221 -101
- package/src/components/Chakra/Center.stories.mdx +2 -2
- package/src/components/Chakra/Grid.stories.mdx +4 -4
- package/src/components/Checkbox/Checkbox.stories.mdx +73 -9
- package/src/components/Checkbox/Checkbox.test.tsx +89 -10
- package/src/components/Checkbox/Checkbox.tsx +26 -16
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +209 -6
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +135 -23
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +216 -90
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +39 -26
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +493 -89
- package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +12 -0
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +39 -41
- package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +47 -34
- package/src/components/DatePicker/DatePicker.stories.mdx +63 -27
- package/src/components/DatePicker/DatePicker.test.tsx +94 -15
- package/src/components/DatePicker/DatePicker.tsx +67 -58
- package/src/components/DatePicker/_DatePicker.scss +71 -13
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +250 -206
- package/src/components/Fieldset/Fieldset.stories.mdx +33 -3
- package/src/components/Fieldset/Fieldset.test.tsx +58 -28
- package/src/components/Fieldset/Fieldset.tsx +35 -30
- package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +40 -19
- package/src/components/Form/Form.stories.mdx +118 -47
- package/src/components/Form/Form.test.tsx +59 -16
- package/src/components/Form/Form.tsx +89 -65
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +83 -5
- package/src/components/Grid/GridTypes.tsx +7 -7
- package/src/components/Grid/SimpleGrid.stories.mdx +87 -41
- package/src/components/Grid/SimpleGrid.test.tsx +24 -9
- package/src/components/Grid/SimpleGrid.tsx +29 -20
- package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +16 -1
- package/src/components/Heading/Heading.stories.mdx +56 -25
- package/src/components/Heading/Heading.test.tsx +17 -7
- package/src/components/Heading/Heading.tsx +60 -58
- package/src/components/Heading/HeadingTypes.tsx +1 -1
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +27 -8
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +64 -42
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +15 -0
- package/src/components/HelperErrorText/HelperErrorText.tsx +40 -35
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +35 -4
- package/src/components/Hero/Hero.stories.mdx +143 -113
- package/src/components/Hero/Hero.test.tsx +146 -58
- package/src/components/Hero/Hero.tsx +144 -112
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +89 -17
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +26 -4
- package/src/components/HorizontalRule/HorizontalRule.test.tsx +9 -17
- package/src/components/HorizontalRule/HorizontalRule.tsx +9 -25
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +18 -5
- package/src/components/Icons/Icon.stories.mdx +80 -23
- package/src/components/Icons/Icon.test.tsx +51 -2
- package/src/components/Icons/Icon.tsx +93 -71
- package/src/components/Icons/IconTypes.tsx +1 -0
- package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +129 -0
- package/src/components/Image/Image.stories.mdx +160 -71
- package/src/components/Image/Image.test.tsx +40 -48
- package/src/components/Image/Image.tsx +80 -48
- package/src/components/Image/ImageTypes.ts +4 -4
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +84 -21
- package/src/components/Label/Label.stories.mdx +42 -20
- package/src/components/Label/Label.test.tsx +42 -17
- package/src/components/Label/Label.tsx +22 -13
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +19 -15
- package/src/components/Link/Link.stories.mdx +25 -1
- package/src/components/Link/Link.test.tsx +21 -0
- package/src/components/Link/Link.tsx +16 -9
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +37 -11
- package/src/components/List/List.stories.mdx +75 -40
- package/src/components/List/List.test.tsx +73 -22
- package/src/components/List/List.tsx +44 -28
- package/src/components/List/ListTypes.tsx +1 -1
- package/src/components/List/__snapshots__/List.test.tsx.snap +110 -8
- package/src/components/Logo/Logo.stories.mdx +40 -16
- package/src/components/Logo/Logo.test.tsx +29 -2
- package/src/components/Logo/Logo.tsx +28 -11
- package/src/components/Logo/LogoSvgs.tsx +4 -0
- package/src/components/Logo/LogoTypes.tsx +3 -1
- package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +73 -2
- package/src/components/Modal/Modal.stories.mdx +13 -0
- package/src/components/Notification/Notification.stories.mdx +29 -5
- package/src/components/Notification/Notification.test.tsx +23 -0
- package/src/components/Notification/Notification.tsx +53 -51
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +158 -29
- package/src/components/Pagination/Pagination.stories.mdx +27 -6
- package/src/components/Pagination/Pagination.test.tsx +55 -2
- package/src/components/Pagination/Pagination.tsx +12 -9
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +244 -27
- package/src/components/Placeholder/Placeholder.tsx +3 -1
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +76 -10
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +87 -13
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +20 -10
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +101 -14
- package/src/components/Radio/Radio.stories.mdx +75 -11
- package/src/components/Radio/Radio.test.tsx +83 -9
- package/src/components/Radio/Radio.tsx +70 -62
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +163 -5
- package/src/components/RadioGroup/RadioGroup.stories.mdx +293 -94
- package/src/components/RadioGroup/RadioGroup.test.tsx +193 -68
- package/src/components/RadioGroup/RadioGroup.tsx +110 -101
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1258 -902
- package/src/components/SearchBar/SearchBar.stories.mdx +101 -36
- package/src/components/SearchBar/{SearchBar.Test.tsx → SearchBar.test.tsx} +46 -4
- package/src/components/SearchBar/SearchBar.tsx +20 -11
- package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +1039 -0
- package/src/components/Select/Select.stories.mdx +151 -62
- package/src/components/Select/Select.test.tsx +56 -44
- package/src/components/Select/Select.tsx +125 -104
- package/src/components/Select/SelectTypes.tsx +5 -0
- package/src/components/Select/__snapshots__/Select.test.tsx.snap +749 -409
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +53 -23
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +14 -8
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +80 -78
- package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +0 -5
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +169 -10
- package/src/components/Slider/Slider.stories.mdx +123 -41
- package/src/components/Slider/Slider.test.tsx +65 -17
- package/src/components/Slider/Slider.tsx +30 -23
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +403 -226
- package/src/components/StatusBadge/StatusBadge.stories.mdx +19 -1
- package/src/components/StatusBadge/StatusBadge.test.tsx +19 -1
- package/src/components/StatusBadge/StatusBadge.tsx +25 -20
- package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +22 -3
- package/src/components/StructuredContent/StructuredContent.stories.mdx +229 -61
- package/src/components/StructuredContent/StructuredContent.test.tsx +162 -101
- package/src/components/StructuredContent/StructuredContent.tsx +98 -103
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +102 -17
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +5 -5
- package/src/components/StyleGuide/Breakpoints.stories.mdx +6 -6
- package/src/components/StyleGuide/Buttons.stories.mdx +2 -12
- package/src/components/StyleGuide/ColorCard.tsx +4 -4
- package/src/components/StyleGuide/Colors.stories.mdx +1 -2
- package/src/components/StyleGuide/DesignTokens.stories.mdx +56 -26
- package/src/components/StyleGuide/Forms.stories.mdx +27 -12
- package/src/components/StyleGuide/Iconography.stories.mdx +2 -12
- package/src/components/StyleGuide/Spacing.stories.mdx +80 -41
- package/src/components/StyleGuide/Typography.stories.mdx +47 -33
- package/src/components/Table/Table.stories.mdx +38 -11
- package/src/components/Table/Table.test.tsx +16 -1
- package/src/components/Table/Table.tsx +10 -8
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +408 -5
- package/src/components/Tabs/Tabs.stories.mdx +59 -10
- package/src/components/Tabs/Tabs.test.tsx +29 -11
- package/src/components/Tabs/Tabs.tsx +28 -21
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +394 -5
- package/src/components/Template/Template.stories.mdx +73 -32
- package/src/components/Template/Template.test.tsx +68 -5
- package/src/components/Template/Template.tsx +89 -71
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +195 -22
- package/src/components/Text/Text.stories.mdx +32 -15
- package/src/components/Text/Text.test.tsx +14 -11
- package/src/components/Text/Text.tsx +13 -16
- package/src/components/Text/TextTypes.tsx +1 -1
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +21 -4
- package/src/components/TextInput/TextInput.stories.mdx +73 -27
- package/src/components/TextInput/TextInput.test.tsx +65 -50
- package/src/components/TextInput/TextInput.tsx +123 -115
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +96 -73
- package/src/components/Toggle/Toggle.stories.mdx +74 -26
- package/src/components/Toggle/Toggle.test.tsx +41 -10
- package/src/components/Toggle/Toggle.tsx +29 -26
- package/src/components/Toggle/{ToggleSizes.tsx → ToggleTypes.tsx} +1 -1
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +191 -4
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +52 -4
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +41 -6
- package/src/components/VideoPlayer/VideoPlayer.tsx +134 -120
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +81 -39
- package/src/docs/Chakra.stories.mdx +50 -9
- package/src/docs/Welcome.stories.mdx +168 -0
- package/src/{components/Card/CardTypes.tsx → helpers/enums.ts} +2 -2
- package/src/hooks/tests/useNYPLTheme.test.tsx +1 -1
- package/src/hooks/useCarouselStyles.stories.mdx +30 -0
- package/src/hooks/useCarouselStyles.ts +3 -2
- package/src/hooks/useNYPLTheme.stories.mdx +101 -0
- package/src/hooks/useNYPLTheme.ts +31 -7
- package/src/hooks/useWindowSize.stories.mdx +23 -0
- package/src/index.ts +11 -15
- package/src/styles/base/_place-holder.scss +1 -1
- package/src/theme/components/accordion.ts +7 -12
- package/src/theme/components/breadcrumb.ts +3 -0
- package/src/theme/components/button.ts +15 -7
- package/src/theme/components/card.ts +56 -36
- package/src/theme/components/checkbox.ts +10 -8
- package/src/theme/components/checkboxGroup.ts +4 -2
- package/src/theme/components/componentWrapper.ts +2 -2
- package/src/theme/components/customTable.ts +39 -31
- package/src/theme/components/fieldset.ts +1 -2
- package/src/theme/components/global.ts +29 -23
- package/src/theme/components/heading.ts +1 -1
- package/src/theme/components/helperErrorText.ts +1 -0
- package/src/theme/components/hero.ts +14 -16
- package/src/theme/components/icon.ts +5 -2
- package/src/theme/components/image.ts +1 -1
- package/src/theme/components/label.ts +4 -3
- package/src/theme/components/list.ts +73 -66
- package/src/theme/components/notification.ts +7 -7
- package/src/theme/components/pagination.ts +2 -5
- package/src/theme/components/progressIndicator.ts +3 -3
- package/src/theme/components/radio.ts +9 -9
- package/src/theme/components/radioGroup.ts +4 -2
- package/src/theme/components/select.ts +35 -16
- package/src/theme/components/skeletonLoader.ts +3 -3
- package/src/theme/components/slider.ts +8 -7
- package/src/theme/components/statusBadge.ts +2 -2
- package/src/theme/components/structuredContent.ts +66 -1
- package/src/theme/components/tabs.ts +2 -2
- package/src/theme/components/template.ts +9 -9
- package/src/theme/components/textInput.ts +13 -12
- package/src/theme/components/toggle.ts +43 -13
- package/src/theme/components/videoPlayer.ts +1 -1
- package/src/theme/foundations/colors.ts +1 -1
- package/src/theme/foundations/radii.ts +1 -0
- package/src/theme/foundations/spacing.ts +70 -22
- package/src/theme/foundations/typography.ts +2 -2
- package/src/utils/componentCategories.ts +28 -21
- package/dist/components/Card/CardTypes.d.ts +0 -4
- package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +0 -4
- package/dist/components/RadioGroup/RadioGroupLayoutTypes.d.ts +0 -4
- package/dist/components/SearchBar/SearchBar.Test.d.ts +0 -1
- package/dist/helpers/generateUUID.d.ts +0 -1
- package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +0 -4
- package/src/components/RadioGroup/RadioGroupLayoutTypes.tsx +0 -4
- package/src/docs/Intro.stories.mdx +0 -53
- package/src/helpers/generateUUID.tsx +0 -5
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ButtonGroup, Flex, Spacer } from "@chakra-ui/react";
|
|
1
2
|
import {
|
|
2
3
|
ArgsTable,
|
|
3
4
|
Canvas,
|
|
@@ -7,17 +8,17 @@ import {
|
|
|
7
8
|
} from "@storybook/addon-docs";
|
|
8
9
|
import { withDesign } from "storybook-addon-designs";
|
|
9
10
|
|
|
11
|
+
import Button from "../Button/Button";
|
|
12
|
+
import Form from "../Form/Form";
|
|
10
13
|
import Radio from "../Radio/Radio";
|
|
11
|
-
import RadioGroup
|
|
12
|
-
import {
|
|
14
|
+
import RadioGroup from "./RadioGroup";
|
|
15
|
+
import { LayoutTypes } from "../../helpers/enums";
|
|
16
|
+
import SimpleGrid from "../Grid/SimpleGrid";
|
|
13
17
|
import { getCategory } from "../../utils/componentCategories";
|
|
14
18
|
import DSProvider from "../../theme/provider";
|
|
15
19
|
import { getStorybookEnumValues } from "../../utils/utils";
|
|
16
20
|
|
|
17
|
-
export const enumValues = getStorybookEnumValues(
|
|
18
|
-
RadioGroupLayoutTypes,
|
|
19
|
-
"RadioGroupLayoutTypes"
|
|
20
|
-
);
|
|
21
|
+
export const enumValues = getStorybookEnumValues(LayoutTypes, "LayoutTypes");
|
|
21
22
|
|
|
22
23
|
<Meta
|
|
23
24
|
title={getCategory("RadioGroup")}
|
|
@@ -37,6 +38,9 @@ export const enumValues = getStorybookEnumValues(
|
|
|
37
38
|
isDisabled: {
|
|
38
39
|
table: { defaultValue: { summary: false } },
|
|
39
40
|
},
|
|
41
|
+
isFullWidth: {
|
|
42
|
+
table: { defaultValue: { summary: false } },
|
|
43
|
+
},
|
|
40
44
|
isInvalid: {
|
|
41
45
|
table: { defaultValue: { summary: false } },
|
|
42
46
|
},
|
|
@@ -45,21 +49,21 @@ export const enumValues = getStorybookEnumValues(
|
|
|
45
49
|
},
|
|
46
50
|
layout: {
|
|
47
51
|
control: { type: "select" },
|
|
48
|
-
table: { defaultValue: { summary: "
|
|
52
|
+
table: { defaultValue: { summary: "LayoutTypes.Column" } },
|
|
49
53
|
options: enumValues.options,
|
|
50
54
|
},
|
|
51
55
|
key: { table: { disable: true } },
|
|
52
56
|
onChange: { control: false },
|
|
53
57
|
ref: { table: { disable: true } },
|
|
54
|
-
optReqFlag: {
|
|
55
|
-
table: { defaultValue: { summary: true } },
|
|
56
|
-
},
|
|
57
58
|
showHelperInvalidText: {
|
|
58
59
|
table: { defaultValue: { summary: true } },
|
|
59
60
|
},
|
|
60
61
|
showLabel: {
|
|
61
62
|
table: { defaultValue: { summary: true } },
|
|
62
63
|
},
|
|
64
|
+
showRequiredLabel: {
|
|
65
|
+
table: { defaultValue: { summary: true } },
|
|
66
|
+
},
|
|
63
67
|
}}
|
|
64
68
|
/>
|
|
65
69
|
|
|
@@ -68,10 +72,26 @@ export const enumValues = getStorybookEnumValues(
|
|
|
68
72
|
| Component Version | DS Version |
|
|
69
73
|
| ----------------- | ---------- |
|
|
70
74
|
| Added | `0.25.0` |
|
|
71
|
-
| Latest | `0.
|
|
75
|
+
| Latest | `0.26.0` |
|
|
76
|
+
|
|
77
|
+
## Table of Contents
|
|
78
|
+
|
|
79
|
+
- [Overview](#overview)
|
|
80
|
+
- [Component Props](#component-props)
|
|
81
|
+
- [Accessibility](#accessibility)
|
|
82
|
+
- [Layout Patterns](#layout-patterns)
|
|
83
|
+
- [Errored](#errored)
|
|
84
|
+
- [Required](#required)
|
|
85
|
+
- [Disabled](#disabled)
|
|
86
|
+
- [With JSX Element labels](#with-jsx-element-labels)
|
|
87
|
+
- [Getting Radio Input Values](#getting-radio-input-values)
|
|
88
|
+
|
|
89
|
+
## Overview
|
|
72
90
|
|
|
73
91
|
<Description of={RadioGroup} />
|
|
74
92
|
|
|
93
|
+
## Component Props
|
|
94
|
+
|
|
75
95
|
<Canvas withToolbar>
|
|
76
96
|
<Story
|
|
77
97
|
name="RadioGroup"
|
|
@@ -80,25 +100,26 @@ export const enumValues = getStorybookEnumValues(
|
|
|
80
100
|
defaultValue: "4",
|
|
81
101
|
helperText: "This is the helper text for the full group.",
|
|
82
102
|
id: "radioGroup-id",
|
|
83
|
-
invalidText: "error
|
|
103
|
+
invalidText: "An error occurred :(",
|
|
84
104
|
isDisabled: false,
|
|
105
|
+
isFullWidth: false,
|
|
85
106
|
isInvalid: false,
|
|
86
107
|
isRequired: false,
|
|
87
108
|
labelText: "Standard Radio Group",
|
|
88
|
-
layout: "
|
|
109
|
+
layout: "LayoutTypes.Column",
|
|
89
110
|
name: "radio-story",
|
|
90
111
|
onChange: undefined,
|
|
91
|
-
optReqFlag: true,
|
|
92
112
|
showHelperInvalidText: true,
|
|
93
113
|
showLabel: true,
|
|
114
|
+
showRequiredLabel: true,
|
|
94
115
|
}}
|
|
95
116
|
>
|
|
96
117
|
{(args) => (
|
|
97
118
|
<RadioGroup {...args} layout={enumValues.getValue(args.layout)}>
|
|
98
|
-
<Radio
|
|
99
|
-
<Radio
|
|
100
|
-
<Radio
|
|
101
|
-
<Radio
|
|
119
|
+
<Radio id="main-2" labelText="Radio 2" value="2" />
|
|
120
|
+
<Radio id="main-3" labelText="Radio 3" value="3" />
|
|
121
|
+
<Radio id="main-4" labelText="Radio 4" value="4" />
|
|
122
|
+
<Radio id="main-5" labelText="Radio 5" value="5" />
|
|
102
123
|
</RadioGroup>
|
|
103
124
|
)}
|
|
104
125
|
</Story>
|
|
@@ -106,6 +127,18 @@ export const enumValues = getStorybookEnumValues(
|
|
|
106
127
|
|
|
107
128
|
<ArgsTable story="RadioGroup" />
|
|
108
129
|
|
|
130
|
+
## Accessibility
|
|
131
|
+
|
|
132
|
+
The `RadioGroup` renders a group of `Radio` components that are wrapped in a
|
|
133
|
+
`<fieldset>` element. The `<fieldset>` element renders a `<legend>` element that
|
|
134
|
+
can be visually hidden through the `showLabel` prop.
|
|
135
|
+
|
|
136
|
+
Resources:
|
|
137
|
+
|
|
138
|
+
- [W3C ARIA radiogroup and radio example](https://www.w3.org/TR/2016/WD-wai-aria-practices-1.1-20160317/examples/radio/radio.html)
|
|
139
|
+
- [Deque University Radio and Radio Group](https://dequeuniversity.com/library/aria/radio-and-radio-group)
|
|
140
|
+
- [Chakra UI Radio](https://chakra-ui.com/docs/components/form/radio)
|
|
141
|
+
|
|
109
142
|
## Layout Patterns
|
|
110
143
|
|
|
111
144
|
Use the `layout` prop to set the `Radio` buttons to display in a column or in
|
|
@@ -114,26 +147,28 @@ a row.
|
|
|
114
147
|
<Canvas>
|
|
115
148
|
<DSProvider>
|
|
116
149
|
<RadioGroup
|
|
150
|
+
defaultValue="4"
|
|
151
|
+
id="column"
|
|
117
152
|
labelText="Column (default)"
|
|
118
153
|
name="column-example"
|
|
119
|
-
optReqFlag={false}
|
|
120
154
|
>
|
|
121
|
-
<Radio
|
|
122
|
-
<Radio
|
|
123
|
-
<Radio
|
|
124
|
-
<Radio
|
|
155
|
+
<Radio id="column-2" labelText="Radio 2" value="2" />
|
|
156
|
+
<Radio id="column-3" labelText="Radio 3" value="3" />
|
|
157
|
+
<Radio id="column-4" labelText="Radio 4" value="4" />
|
|
158
|
+
<Radio id="column-5" labelText="Radio 5" value="5" />
|
|
125
159
|
</RadioGroup>
|
|
126
160
|
<br />
|
|
127
161
|
<RadioGroup
|
|
162
|
+
defaultValue="3"
|
|
163
|
+
id="row"
|
|
128
164
|
labelText="Row"
|
|
129
165
|
name="row-example"
|
|
130
|
-
layout={
|
|
131
|
-
optReqFlag={false}
|
|
166
|
+
layout={LayoutTypes.Row}
|
|
132
167
|
>
|
|
133
|
-
<Radio
|
|
134
|
-
<Radio
|
|
135
|
-
<Radio
|
|
136
|
-
<Radio
|
|
168
|
+
<Radio id="row-2" labelText="Radio 2" value="2" />
|
|
169
|
+
<Radio id="row-3" labelText="Radio 3" value="3" />
|
|
170
|
+
<Radio id="row-4" labelText="Radio 4" value="4" />
|
|
171
|
+
<Radio id="row-5" labelText="Radio 5" value="5" />
|
|
137
172
|
</RadioGroup>
|
|
138
173
|
</DSProvider>
|
|
139
174
|
</Canvas>
|
|
@@ -143,16 +178,36 @@ a row.
|
|
|
143
178
|
<Canvas>
|
|
144
179
|
<DSProvider>
|
|
145
180
|
<RadioGroup
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
optReqFlag={false}
|
|
181
|
+
defaultValue="4"
|
|
182
|
+
id="errored"
|
|
149
183
|
invalidText="Error message for the full group."
|
|
150
184
|
isInvalid
|
|
185
|
+
labelText="Errored Radio Group"
|
|
186
|
+
name="errored-example"
|
|
151
187
|
>
|
|
152
|
-
<Radio
|
|
153
|
-
<Radio
|
|
154
|
-
<Radio
|
|
155
|
-
<Radio
|
|
188
|
+
<Radio id="radio-2" labelText="Radio 2" value="2" />
|
|
189
|
+
<Radio id="radio-3" labelText="Radio 3" value="3" />
|
|
190
|
+
<Radio id="radio-4" labelText="Radio 4" value="4" />
|
|
191
|
+
<Radio id="radio-5" labelText="Radio 5" value="5" />
|
|
192
|
+
</RadioGroup>
|
|
193
|
+
</DSProvider>
|
|
194
|
+
</Canvas>
|
|
195
|
+
|
|
196
|
+
## Required
|
|
197
|
+
|
|
198
|
+
<Canvas>
|
|
199
|
+
<DSProvider>
|
|
200
|
+
<RadioGroup
|
|
201
|
+
helperText="The reason for being required."
|
|
202
|
+
id="required"
|
|
203
|
+
isRequired
|
|
204
|
+
labelText="Required Radio Group"
|
|
205
|
+
name="required-example"
|
|
206
|
+
>
|
|
207
|
+
<Radio id="required-2" labelText="Radio 2" value="2" />
|
|
208
|
+
<Radio id="required-3" labelText="Radio 3" value="3" />
|
|
209
|
+
<Radio id="required-4" labelText="Radio 4" value="4" />
|
|
210
|
+
<Radio id="required-5" labelText="Radio 5" value="5" />
|
|
156
211
|
</RadioGroup>
|
|
157
212
|
</DSProvider>
|
|
158
213
|
</Canvas>
|
|
@@ -162,53 +217,150 @@ a row.
|
|
|
162
217
|
<Canvas>
|
|
163
218
|
<DSProvider>
|
|
164
219
|
<RadioGroup
|
|
165
|
-
labelText="Disabled Radio Group"
|
|
166
|
-
name="disabled-example"
|
|
167
|
-
optReqFlag={false}
|
|
168
220
|
helperText="The reason for being disabled."
|
|
221
|
+
id="disabled"
|
|
169
222
|
isDisabled
|
|
223
|
+
labelText="Disabled Radio Group"
|
|
224
|
+
name="disabled-example"
|
|
170
225
|
>
|
|
171
|
-
<Radio
|
|
172
|
-
<Radio
|
|
173
|
-
<Radio
|
|
174
|
-
<Radio
|
|
226
|
+
<Radio id="required-2" labelText="Radio 2" value="2" />
|
|
227
|
+
<Radio id="required-3" labelText="Radio 3" value="3" />
|
|
228
|
+
<Radio id="required-4" labelText="Radio 4" value="4" />
|
|
229
|
+
<Radio id="required-5" labelText="Radio 5" value="5" />
|
|
175
230
|
</RadioGroup>
|
|
176
231
|
</DSProvider>
|
|
177
232
|
</Canvas>
|
|
178
233
|
|
|
179
|
-
##
|
|
234
|
+
## With JSX Element labels
|
|
235
|
+
|
|
236
|
+
React elements can be passed to the `labelText` prop of the `Radio` component.
|
|
237
|
+
This is useful if you need to pass information as part of the label. For example,
|
|
238
|
+
if a `Radio` label needs to display how many items that option has, it can be
|
|
239
|
+
displayed with the help of the `Flex` and `Spacer` components.
|
|
240
|
+
|
|
241
|
+
Note: the width of `RadioGroup` is _not_ set to full width by default. In
|
|
242
|
+
order to make this work, pass in the `isFullWidth` prop.
|
|
243
|
+
|
|
244
|
+
<Canvas>
|
|
245
|
+
<DSProvider>
|
|
246
|
+
<RadioGroup
|
|
247
|
+
id="jsx-radiogroup"
|
|
248
|
+
isFullWidth
|
|
249
|
+
labelText="Radio Group"
|
|
250
|
+
name="radio-example"
|
|
251
|
+
>
|
|
252
|
+
<Radio
|
|
253
|
+
id="arts"
|
|
254
|
+
labelText={
|
|
255
|
+
<Flex>
|
|
256
|
+
<span>Arts</span>
|
|
257
|
+
<Spacer />
|
|
258
|
+
<span>4</span>
|
|
259
|
+
</Flex>
|
|
260
|
+
}
|
|
261
|
+
value="arts"
|
|
262
|
+
/>
|
|
263
|
+
<Radio
|
|
264
|
+
id="english"
|
|
265
|
+
labelText={
|
|
266
|
+
<Flex>
|
|
267
|
+
<span>English</span>
|
|
268
|
+
<Spacer />
|
|
269
|
+
<span>23</span>
|
|
270
|
+
</Flex>
|
|
271
|
+
}
|
|
272
|
+
value="English"
|
|
273
|
+
/>
|
|
274
|
+
<Radio
|
|
275
|
+
id="science"
|
|
276
|
+
labelText={
|
|
277
|
+
<Flex>
|
|
278
|
+
<span>Science</span>
|
|
279
|
+
<Spacer />
|
|
280
|
+
<span>10</span>
|
|
281
|
+
</Flex>
|
|
282
|
+
}
|
|
283
|
+
value="Science"
|
|
284
|
+
/>
|
|
285
|
+
<Radio
|
|
286
|
+
id="math"
|
|
287
|
+
labelText={
|
|
288
|
+
<Flex>
|
|
289
|
+
<span>Math</span>
|
|
290
|
+
<Spacer />
|
|
291
|
+
<span>3</span>
|
|
292
|
+
</Flex>
|
|
293
|
+
}
|
|
294
|
+
value="Math"
|
|
295
|
+
/>
|
|
296
|
+
</RadioGroup>
|
|
297
|
+
</DSProvider>
|
|
298
|
+
</Canvas>
|
|
299
|
+
|
|
300
|
+
## Getting Radio Input Values
|
|
180
301
|
|
|
181
302
|
### Controlled Component using `name` and `onChange` props
|
|
182
303
|
|
|
183
|
-
If your application uses controlled React components and the
|
|
184
|
-
be controlled, you can extract the data through the
|
|
185
|
-
This will be called every time a new `Radio` value
|
|
304
|
+
If your application uses controlled React components and the Reservoir Design
|
|
305
|
+
System (DS) `RadioGroup` must be controlled, you can extract the data through the
|
|
306
|
+
`name` and `onChange` props. This will be called every time a new `Radio` value
|
|
307
|
+
is selected. Open the browser's console to see the output.
|
|
186
308
|
|
|
187
309
|
```jsx
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
};
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
310
|
+
function RadioGroupControlledExample() {
|
|
311
|
+
const onChange = (selected) => {
|
|
312
|
+
// This will return the value selected as a string.
|
|
313
|
+
console.log(`Controlled example. Selected: ${selected}`);
|
|
314
|
+
};
|
|
315
|
+
return (
|
|
316
|
+
<RadioGroup
|
|
317
|
+
defaultValue="3"
|
|
318
|
+
id="controlled-example"
|
|
319
|
+
labelText="Controlled RadioGroup"
|
|
320
|
+
name="radioGroupExample"
|
|
321
|
+
onChange={onChange}
|
|
322
|
+
>
|
|
323
|
+
<Radio id="2" labelText="Radio 2" value="2" />
|
|
324
|
+
<Radio id="3" labelText="Radio 3" value="3" />
|
|
325
|
+
<Radio id="4" labelText="Radio 4" value="4" />
|
|
326
|
+
</RadioGroup>
|
|
327
|
+
);
|
|
328
|
+
}
|
|
206
329
|
```
|
|
207
330
|
|
|
331
|
+
export function RadioGroupControlledExample() {
|
|
332
|
+
const onChange = (selected) => {
|
|
333
|
+
// This will return the value selected as a string.
|
|
334
|
+
console.log(`Controlled example. Selected: ${selected}`);
|
|
335
|
+
};
|
|
336
|
+
return (
|
|
337
|
+
<RadioGroup
|
|
338
|
+
defaultValue="3"
|
|
339
|
+
id="controlled-example"
|
|
340
|
+
labelText="Controlled RadioGroup"
|
|
341
|
+
name="radioGroupExample"
|
|
342
|
+
onChange={onChange}
|
|
343
|
+
>
|
|
344
|
+
<Radio id="2" labelText="Radio 2" value="2" />
|
|
345
|
+
<Radio id="3" labelText="Radio 3" value="3" />
|
|
346
|
+
<Radio id="4" labelText="Radio 4" value="4" />
|
|
347
|
+
</RadioGroup>
|
|
348
|
+
);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
<Canvas>
|
|
352
|
+
<DSProvider>
|
|
353
|
+
<RadioGroupControlledExample />
|
|
354
|
+
</DSProvider>
|
|
355
|
+
</Canvas>
|
|
356
|
+
|
|
208
357
|
### Uncontrolled Component using `ref`s
|
|
209
358
|
|
|
359
|
+
**NOTE: this, along with Chakra's own `RadioGroup` component, are not working
|
|
360
|
+
at this time and we recommend to use the controlled pattern above.**
|
|
361
|
+
|
|
210
362
|
If your application uses uncontrolled components, you can pass React `ref` props
|
|
211
|
-
to the DS RadioGroup component to get the selected value from the DOM.
|
|
363
|
+
to the DS `RadioGroup` component to get the selected value from the DOM.
|
|
212
364
|
|
|
213
365
|
The following example is using the `register` React `ref` from the
|
|
214
366
|
`react-hook-form` package.
|
|
@@ -236,45 +388,92 @@ const submitForm = (formData) => {
|
|
|
236
388
|
<Controller
|
|
237
389
|
as={
|
|
238
390
|
<RadioGroup
|
|
239
|
-
id="uncontrolled-example"
|
|
240
|
-
labelText="Radio Group"
|
|
241
|
-
name="radioExample"
|
|
242
391
|
defaultValue="3"
|
|
392
|
+
id="uncontrolled-example"
|
|
393
|
+
labelText="RadioGroup Uncontrolled"
|
|
394
|
+
name="radioGroupExample"
|
|
243
395
|
ref={register()}
|
|
244
396
|
>
|
|
245
|
-
<Radio
|
|
246
|
-
<Radio
|
|
247
|
-
<Radio
|
|
397
|
+
<Radio id="2" labelText="Radio 2" value="2" />
|
|
398
|
+
<Radio id="3" labelText="Radio 3" value="3" />
|
|
399
|
+
<Radio id="4" labelText="Radio 4" value="4" />
|
|
248
400
|
</RadioGroup>
|
|
249
401
|
}
|
|
250
|
-
name="radioExample"
|
|
251
402
|
control={control}
|
|
403
|
+
name="radioGroupExample"
|
|
252
404
|
/>
|
|
253
405
|
</form>;
|
|
254
406
|
```
|
|
255
407
|
|
|
256
408
|
The above is specific to `react-hook-form` but a similar pattern can be used
|
|
257
|
-
with normal React `ref` values.
|
|
409
|
+
with normal React `ref` values. Open the browser's console to see the output
|
|
410
|
+
**although, at the moment, forwarding the ref to Chakra's own `RadioGroup`
|
|
411
|
+
component is not working.**
|
|
258
412
|
|
|
259
413
|
```jsx
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
414
|
+
export function RadioGroupUncontrolledExample() {
|
|
415
|
+
const radioGroupRef = React.createRef();
|
|
416
|
+
// Get the value through:
|
|
417
|
+
const onSubmit = (e) => {
|
|
418
|
+
e.preventDefault();
|
|
419
|
+
const radioGroupValue = radioGroupRef.current.value;
|
|
420
|
+
console.log(`Uncontrolled example. Selected: ${radioGroupValue}`);
|
|
421
|
+
};
|
|
422
|
+
return (
|
|
423
|
+
<Form onSubmit={onSubmit}>
|
|
424
|
+
<SimpleGrid columns="1">
|
|
425
|
+
<RadioGroup
|
|
426
|
+
defaultValue="3"
|
|
427
|
+
id="uncontrolled-example"
|
|
428
|
+
labelText="Uncontrolled RadioGroup"
|
|
429
|
+
name="radioGroupExample"
|
|
430
|
+
ref={radioGroupRef}
|
|
431
|
+
>
|
|
432
|
+
<Radio id="2" labelText="Radio 2" value="2" />
|
|
433
|
+
<Radio id="3" labelText="Radio 3" value="3" />
|
|
434
|
+
<Radio id="4" labelText="Radio 4" value="4" />
|
|
435
|
+
</RadioGroup>
|
|
436
|
+
<ButtonGroup>
|
|
437
|
+
<Button type="submit">Submit</Button>
|
|
438
|
+
</ButtonGroup>
|
|
439
|
+
</SimpleGrid>
|
|
440
|
+
</Form>
|
|
441
|
+
);
|
|
442
|
+
}
|
|
280
443
|
```
|
|
444
|
+
|
|
445
|
+
export function RadioGroupUncontrolledExample() {
|
|
446
|
+
const radioGroupRef = React.createRef();
|
|
447
|
+
// Get the value through:
|
|
448
|
+
const onSubmit = (e) => {
|
|
449
|
+
e.preventDefault();
|
|
450
|
+
const radioGroupValue = radioGroupRef.current.value;
|
|
451
|
+
console.log(`Uncontrolled example. Selected: ${radioGroupValue}`);
|
|
452
|
+
};
|
|
453
|
+
return (
|
|
454
|
+
<Form onSubmit={onSubmit}>
|
|
455
|
+
<SimpleGrid columns="1">
|
|
456
|
+
<RadioGroup
|
|
457
|
+
defaultValue="3"
|
|
458
|
+
id="uncontrolled-example"
|
|
459
|
+
labelText="Uncontrolled RadioGroup"
|
|
460
|
+
name="radioGroupExample"
|
|
461
|
+
ref={radioGroupRef}
|
|
462
|
+
>
|
|
463
|
+
<Radio id="2" labelText="Radio 2" value="2" />
|
|
464
|
+
<Radio id="3" labelText="Radio 3" value="3" />
|
|
465
|
+
<Radio id="4" labelText="Radio 4" value="4" />
|
|
466
|
+
</RadioGroup>
|
|
467
|
+
<ButtonGroup>
|
|
468
|
+
<Button type="submit">Submit</Button>
|
|
469
|
+
</ButtonGroup>
|
|
470
|
+
</SimpleGrid>
|
|
471
|
+
</Form>
|
|
472
|
+
);
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
<Canvas>
|
|
476
|
+
<DSProvider>
|
|
477
|
+
<RadioGroupUncontrolledExample />
|
|
478
|
+
</DSProvider>
|
|
479
|
+
</Canvas>
|