@nypl/design-system-react-components 1.0.2 → 1.0.3-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/dist/components/Slider/Slider.d.ts +1 -2
- package/dist/components/TextInput/TextInput.d.ts +2 -1
- package/dist/design-system-react-components.cjs.development.js +33 -10
- 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 +33 -10
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/hooks/{tests → __tests__}/useCarouselStyles.test.d.ts +0 -0
- package/dist/theme/components/global.d.ts +1 -1
- package/dist/theme/components/radio.d.ts +8 -0
- package/dist/theme/components/template.d.ts +4 -1
- package/package.json +2 -3
- package/CHANGELOG.md +0 -1430
- package/src/__tests__/fileMock.ts +0 -6
- package/src/__tests__/setup.ts +0 -27
- package/src/__tests__/utils/utils.test.ts +0 -18
- package/src/components/AccessibilityGuide/SkipNavigation.stories.mdx +0 -42
- package/src/components/Accordion/Accordion.stories.mdx +0 -333
- package/src/components/Accordion/Accordion.test.tsx +0 -237
- package/src/components/Accordion/Accordion.tsx +0 -137
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +0 -734
- package/src/components/Autosuggest/Autosuggest.stories.mdx +0 -75
- package/src/components/Autosuggest/Autosuggest.stories.tsx +0 -211
- package/src/components/Autosuggest/_Autosuggest.scss +0 -51
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +0 -231
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +0 -144
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +0 -98
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +0 -695
- package/src/components/Button/Button.stories.mdx +0 -320
- package/src/components/Button/Button.test.tsx +0 -184
- package/src/components/Button/Button.tsx +0 -95
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -106
- package/src/components/ButtonGroup/ButtonGroup.stories.mdx +0 -178
- package/src/components/ButtonGroup/ButtonGroup.test.tsx +0 -141
- package/src/components/ButtonGroup/ButtonGroup.tsx +0 -100
- package/src/components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap +0 -117
- package/src/components/Card/Card.stories.mdx +0 -1041
- package/src/components/Card/Card.test.tsx +0 -388
- package/src/components/Card/Card.tsx +0 -346
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +0 -568
- package/src/components/Chakra/Box.stories.mdx +0 -52
- package/src/components/Chakra/Center.stories.mdx +0 -96
- package/src/components/Chakra/Flex.stories.mdx +0 -111
- package/src/components/Chakra/Grid.stories.mdx +0 -89
- package/src/components/Chakra/Stack.stories.mdx +0 -109
- package/src/components/Checkbox/Checkbox.stories.mdx +0 -243
- package/src/components/Checkbox/Checkbox.test.tsx +0 -350
- package/src/components/Checkbox/Checkbox.tsx +0 -152
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +0 -661
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +0 -462
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +0 -492
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +0 -173
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +0 -1842
- package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +0 -163
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +0 -76
- package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +0 -103
- package/src/components/DatePicker/DatePicker.stories.mdx +0 -452
- package/src/components/DatePicker/DatePicker.test.tsx +0 -940
- package/src/components/DatePicker/DatePicker.tsx +0 -450
- package/src/components/DatePicker/_DatePicker.scss +0 -100
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +0 -908
- package/src/components/Fieldset/Fieldset.stories.mdx +0 -96
- package/src/components/Fieldset/Fieldset.test.tsx +0 -155
- package/src/components/Fieldset/Fieldset.tsx +0 -55
- package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +0 -89
- package/src/components/Form/Form.stories.mdx +0 -426
- package/src/components/Form/Form.test.tsx +0 -234
- package/src/components/Form/Form.tsx +0 -124
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -115
- package/src/components/Grid/SimpleGrid.stories.mdx +0 -336
- package/src/components/Grid/SimpleGrid.test.tsx +0 -79
- package/src/components/Grid/SimpleGrid.tsx +0 -49
- package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +0 -23
- package/src/components/Heading/Heading.stories.mdx +0 -187
- package/src/components/Heading/Heading.test.tsx +0 -171
- package/src/components/Heading/Heading.tsx +0 -104
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +0 -90
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +0 -172
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +0 -114
- package/src/components/HelperErrorText/HelperErrorText.tsx +0 -62
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +0 -93
- package/src/components/Hero/Hero.stories.mdx +0 -378
- package/src/components/Hero/Hero.test.tsx +0 -611
- package/src/components/Hero/Hero.tsx +0 -203
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +0 -379
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +0 -73
- package/src/components/HorizontalRule/HorizontalRule.test.tsx +0 -54
- package/src/components/HorizontalRule/HorizontalRule.tsx +0 -27
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +0 -44
- package/src/components/Icons/Icon.stories.mdx +0 -413
- package/src/components/Icons/Icon.test.tsx +0 -120
- package/src/components/Icons/Icon.tsx +0 -187
- package/src/components/Icons/IconSvgs.tsx +0 -64
- package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +0 -129
- package/src/components/Image/Image.stories.mdx +0 -332
- package/src/components/Image/Image.test.tsx +0 -155
- package/src/components/Image/Image.tsx +0 -171
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +0 -269
- package/src/components/Label/Label.stories.mdx +0 -100
- package/src/components/Label/Label.test.tsx +0 -116
- package/src/components/Label/Label.tsx +0 -55
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +0 -45
- package/src/components/Link/Link.stories.mdx +0 -249
- package/src/components/Link/Link.test.tsx +0 -224
- package/src/components/Link/Link.tsx +0 -178
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +0 -286
- package/src/components/List/List.stories.mdx +0 -393
- package/src/components/List/List.test.tsx +0 -265
- package/src/components/List/List.tsx +0 -156
- package/src/components/List/__snapshots__/List.test.tsx.snap +0 -213
- package/src/components/Logo/Logo.stories.mdx +0 -295
- package/src/components/Logo/Logo.test.tsx +0 -116
- package/src/components/Logo/Logo.tsx +0 -151
- package/src/components/Logo/LogoSvgs.tsx +0 -90
- package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +0 -142
- package/src/components/Modal/Modal.stories.mdx +0 -294
- package/src/components/Modal/Modal.test.tsx +0 -157
- package/src/components/Modal/Modal.tsx +0 -154
- package/src/components/Modal/__snapshots__/Modal.test.tsx.snap +0 -25
- package/src/components/Notification/Notification.stories.mdx +0 -358
- package/src/components/Notification/Notification.test.tsx +0 -279
- package/src/components/Notification/Notification.tsx +0 -224
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +0 -525
- package/src/components/Pagination/Pagination.stories.mdx +0 -184
- package/src/components/Pagination/Pagination.test.tsx +0 -419
- package/src/components/Pagination/Pagination.tsx +0 -269
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +0 -544
- package/src/components/Placeholder/Placeholder.tsx +0 -19
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +0 -360
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +0 -298
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +0 -132
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +0 -434
- package/src/components/Radio/Radio.stories.mdx +0 -216
- package/src/components/Radio/Radio.test.tsx +0 -247
- package/src/components/Radio/Radio.tsx +0 -119
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +0 -451
- package/src/components/RadioGroup/RadioGroup.stories.mdx +0 -479
- package/src/components/RadioGroup/RadioGroup.test.tsx +0 -471
- package/src/components/RadioGroup/RadioGroup.tsx +0 -171
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +0 -1550
- package/src/components/SearchBar/SearchBar.stories.mdx +0 -518
- package/src/components/SearchBar/SearchBar.test.tsx +0 -435
- package/src/components/SearchBar/SearchBar.tsx +0 -210
- package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +0 -1049
- package/src/components/Select/Select.stories.mdx +0 -439
- package/src/components/Select/Select.test.tsx +0 -358
- package/src/components/Select/Select.tsx +0 -183
- package/src/components/Select/__snapshots__/Select.test.tsx.snap +0 -895
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +0 -142
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +0 -116
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +0 -123
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +0 -898
- package/src/components/SkipNavigation/SkipNavigation.stories.mdx +0 -90
- package/src/components/SkipNavigation/SkipNavigation.test.tsx +0 -63
- package/src/components/SkipNavigation/SkipNavigation.tsx +0 -51
- package/src/components/SkipNavigation/__snapshots__/SkipNavigation.test.tsx.snap +0 -130
- package/src/components/Slider/Slider.stories.mdx +0 -628
- package/src/components/Slider/Slider.test.tsx +0 -736
- package/src/components/Slider/Slider.tsx +0 -322
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +0 -2186
- package/src/components/StatusBadge/StatusBadge.stories.mdx +0 -109
- package/src/components/StatusBadge/StatusBadge.test.tsx +0 -70
- package/src/components/StatusBadge/StatusBadge.tsx +0 -35
- package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +0 -47
- package/src/components/StructuredContent/StructuredContent.stories.mdx +0 -567
- package/src/components/StructuredContent/StructuredContent.test.tsx +0 -435
- package/src/components/StructuredContent/StructuredContent.tsx +0 -139
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +0 -368
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +0 -206
- package/src/components/StyleGuide/Breakpoints.stories.mdx +0 -55
- package/src/components/StyleGuide/Buttons.stories.mdx +0 -194
- package/src/components/StyleGuide/ColorCard.tsx +0 -43
- package/src/components/StyleGuide/Colors.stories.mdx +0 -201
- package/src/components/StyleGuide/DesignTokens.stories.mdx +0 -193
- package/src/components/StyleGuide/Forms.stories.mdx +0 -94
- package/src/components/StyleGuide/Iconography.stories.mdx +0 -142
- package/src/components/StyleGuide/Spacing.stories.mdx +0 -116
- package/src/components/StyleGuide/Typography.stories.mdx +0 -419
- package/src/components/Table/Table.stories.mdx +0 -272
- package/src/components/Table/Table.test.tsx +0 -241
- package/src/components/Table/Table.tsx +0 -152
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +0 -1703
- package/src/components/Tabs/Tabs.stories.mdx +0 -338
- package/src/components/Tabs/Tabs.test.tsx +0 -298
- package/src/components/Tabs/Tabs.tsx +0 -264
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +0 -584
- package/src/components/Template/Template.stories.mdx +0 -695
- package/src/components/Template/Template.test.tsx +0 -309
- package/src/components/Template/Template.tsx +0 -326
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +0 -342
- package/src/components/Text/Text.stories.mdx +0 -103
- package/src/components/Text/Text.test.tsx +0 -63
- package/src/components/Text/Text.tsx +0 -50
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +0 -50
- package/src/components/TextInput/TextInput.stories.mdx +0 -268
- package/src/components/TextInput/TextInput.test.tsx +0 -451
- package/src/components/TextInput/TextInput.tsx +0 -240
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +0 -274
- package/src/components/Toggle/Toggle.stories.mdx +0 -237
- package/src/components/Toggle/Toggle.test.tsx +0 -170
- package/src/components/Toggle/Toggle.tsx +0 -128
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +0 -470
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +0 -212
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +0 -308
- package/src/components/VideoPlayer/VideoPlayer.tsx +0 -188
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +0 -192
- package/src/docs/Chakra.stories.mdx +0 -563
- package/src/docs/Welcome.stories.mdx +0 -148
- package/src/helpers/types.ts +0 -1
- package/src/hooks/tests/useCarouselStyles.test.ts +0 -140
- package/src/hooks/tests/useNYPLTheme.test.tsx +0 -36
- package/src/hooks/useCarouselStyles.stories.mdx +0 -30
- package/src/hooks/useCarouselStyles.ts +0 -35
- package/src/hooks/useNYPLTheme.stories.mdx +0 -98
- package/src/hooks/useNYPLTheme.ts +0 -91
- package/src/hooks/useWindowSize.stories.mdx +0 -23
- package/src/hooks/useWindowSize.ts +0 -40
- package/src/index.ts +0 -136
- package/src/resources.scss +0 -6
- package/src/styles/base/_01-breakpoints.scss +0 -27
- package/src/styles/base/_02-mixins.scss +0 -103
- package/src/styles/base/_place-holder.scss +0 -33
- package/src/styles/space/_space-inline.scss +0 -79
- package/src/styles/space/_space-inset.scss +0 -57
- package/src/styles/space/_space-stack.scss +0 -116
- package/src/styles.scss +0 -23
- package/src/theme/components/accordion.ts +0 -25
- package/src/theme/components/breadcrumb.ts +0 -94
- package/src/theme/components/button.ts +0 -133
- package/src/theme/components/buttonGroup.ts +0 -10
- package/src/theme/components/card.ts +0 -237
- package/src/theme/components/checkbox.ts +0 -110
- package/src/theme/components/checkboxGroup.ts +0 -10
- package/src/theme/components/componentWrapper.ts +0 -14
- package/src/theme/components/customTable.ts +0 -77
- package/src/theme/components/datePicker.ts +0 -17
- package/src/theme/components/fieldset.ts +0 -23
- package/src/theme/components/global.ts +0 -91
- package/src/theme/components/globalMixins.ts +0 -24
- package/src/theme/components/heading.ts +0 -79
- package/src/theme/components/helperErrorText.ts +0 -14
- package/src/theme/components/hero.ts +0 -238
- package/src/theme/components/horizontalRule.ts +0 -17
- package/src/theme/components/icon.ts +0 -88
- package/src/theme/components/image.ts +0 -136
- package/src/theme/components/label.ts +0 -15
- package/src/theme/components/link.ts +0 -63
- package/src/theme/components/list.ts +0 -88
- package/src/theme/components/logo.ts +0 -58
- package/src/theme/components/notification.ts +0 -132
- package/src/theme/components/pagination.ts +0 -17
- package/src/theme/components/progressIndicator.ts +0 -67
- package/src/theme/components/radio.ts +0 -103
- package/src/theme/components/radioGroup.ts +0 -10
- package/src/theme/components/searchBar.ts +0 -19
- package/src/theme/components/select.ts +0 -72
- package/src/theme/components/skeletonLoader.ts +0 -113
- package/src/theme/components/skipNavigation.ts +0 -29
- package/src/theme/components/slider.ts +0 -95
- package/src/theme/components/statusBadge.ts +0 -26
- package/src/theme/components/structuredContent.ts +0 -149
- package/src/theme/components/tabs.ts +0 -109
- package/src/theme/components/template.ts +0 -114
- package/src/theme/components/text.ts +0 -38
- package/src/theme/components/textInput.ts +0 -65
- package/src/theme/components/toggle.ts +0 -109
- package/src/theme/components/videoPlayer.ts +0 -47
- package/src/theme/foundations/breakpoints.ts +0 -24
- package/src/theme/foundations/colors.ts +0 -212
- package/src/theme/foundations/global.ts +0 -43
- package/src/theme/foundations/radii.ts +0 -7
- package/src/theme/foundations/shadows.ts +0 -5
- package/src/theme/foundations/spacing.ts +0 -136
- package/src/theme/foundations/typography.ts +0 -107
- package/src/theme/index.ts +0 -131
- package/src/theme/provider.tsx +0 -9
- package/src/theme/types.ts +0 -1
- package/src/utils/componentCategories.ts +0 -152
- package/src/utils/interfaces.ts +0 -5
- package/src/utils/utils.ts +0 -84
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
chakra,
|
|
3
|
-
Modal as ChakraModal,
|
|
4
|
-
ModalOverlay,
|
|
5
|
-
ModalContent,
|
|
6
|
-
ModalHeader,
|
|
7
|
-
ModalFooter,
|
|
8
|
-
ModalBody,
|
|
9
|
-
ModalCloseButton,
|
|
10
|
-
useDisclosure,
|
|
11
|
-
} from "@chakra-ui/react";
|
|
12
|
-
import * as React from "react";
|
|
13
|
-
|
|
14
|
-
import Button from "../Button/Button";
|
|
15
|
-
import ButtonGroup from "../ButtonGroup/ButtonGroup";
|
|
16
|
-
import useWindowSize from "../../hooks/useWindowSize";
|
|
17
|
-
|
|
18
|
-
interface BaseModalProps {
|
|
19
|
-
bodyContent?: string | JSX.Element;
|
|
20
|
-
closeButtonLabel?: string;
|
|
21
|
-
headingText?: string | JSX.Element;
|
|
22
|
-
/** ID that other components can cross reference for accessibility purposes */
|
|
23
|
-
id?: string;
|
|
24
|
-
isOpen?: boolean;
|
|
25
|
-
onClose?: () => void;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export interface ModalProps {
|
|
29
|
-
buttonText?: string;
|
|
30
|
-
/** ID that other components can cross reference for accessibility purposes */
|
|
31
|
-
id?: string;
|
|
32
|
-
modalProps: BaseModalProps;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const BaseModal = chakra(
|
|
36
|
-
({
|
|
37
|
-
bodyContent,
|
|
38
|
-
closeButtonLabel = "Close",
|
|
39
|
-
headingText,
|
|
40
|
-
id,
|
|
41
|
-
isOpen,
|
|
42
|
-
onClose,
|
|
43
|
-
...rest
|
|
44
|
-
}: React.PropsWithChildren<BaseModalProps>) => {
|
|
45
|
-
// Based on --nypl-breakpoint-medium
|
|
46
|
-
const breakpointMedium = 600;
|
|
47
|
-
const defaultSize = "xl";
|
|
48
|
-
const fullSize = "full";
|
|
49
|
-
const [size, setSize] = React.useState<string>(defaultSize);
|
|
50
|
-
const windowDimensions = useWindowSize();
|
|
51
|
-
React.useEffect(() => {
|
|
52
|
-
if (windowDimensions.width <= breakpointMedium) {
|
|
53
|
-
setSize(fullSize);
|
|
54
|
-
} else {
|
|
55
|
-
setSize(defaultSize);
|
|
56
|
-
}
|
|
57
|
-
}, [windowDimensions.width]);
|
|
58
|
-
|
|
59
|
-
return (
|
|
60
|
-
<ChakraModal
|
|
61
|
-
id={id}
|
|
62
|
-
isOpen={isOpen}
|
|
63
|
-
onClose={onClose}
|
|
64
|
-
scrollBehavior="inside"
|
|
65
|
-
size={size}
|
|
66
|
-
{...rest}
|
|
67
|
-
>
|
|
68
|
-
<ModalOverlay />
|
|
69
|
-
<ModalContent>
|
|
70
|
-
<ModalHeader>{headingText}</ModalHeader>
|
|
71
|
-
<ModalCloseButton />
|
|
72
|
-
<ModalBody>{bodyContent}</ModalBody>
|
|
73
|
-
|
|
74
|
-
<ModalFooter>
|
|
75
|
-
<ButtonGroup>
|
|
76
|
-
<Button id="modal-close-btn" onClick={onClose}>
|
|
77
|
-
{closeButtonLabel}
|
|
78
|
-
</Button>
|
|
79
|
-
</ButtonGroup>
|
|
80
|
-
</ModalFooter>
|
|
81
|
-
</ModalContent>
|
|
82
|
-
</ChakraModal>
|
|
83
|
-
);
|
|
84
|
-
}
|
|
85
|
-
);
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* The `ModalTrigger` component renders a button that you click to open the
|
|
89
|
-
* internal `Modal` component. Note that props to update the internal `Modal`
|
|
90
|
-
* component are passed through to the `modalProps` prop.
|
|
91
|
-
*/
|
|
92
|
-
export const ModalTrigger = chakra(
|
|
93
|
-
({
|
|
94
|
-
buttonText,
|
|
95
|
-
id,
|
|
96
|
-
modalProps,
|
|
97
|
-
...rest
|
|
98
|
-
}: React.PropsWithChildren<ModalProps>) => {
|
|
99
|
-
const { isOpen, onOpen, onClose } = useDisclosure();
|
|
100
|
-
const finalOnCloseHandler = () => {
|
|
101
|
-
modalProps.onClose && modalProps.onClose();
|
|
102
|
-
onClose();
|
|
103
|
-
};
|
|
104
|
-
return (
|
|
105
|
-
<>
|
|
106
|
-
<Button id="modal-open-btn" onClick={onOpen}>
|
|
107
|
-
{buttonText}
|
|
108
|
-
</Button>
|
|
109
|
-
|
|
110
|
-
<BaseModal
|
|
111
|
-
bodyContent={modalProps.bodyContent}
|
|
112
|
-
closeButtonLabel={modalProps.closeButtonLabel}
|
|
113
|
-
headingText={modalProps.headingText}
|
|
114
|
-
id={id}
|
|
115
|
-
isOpen={isOpen}
|
|
116
|
-
onClose={finalOnCloseHandler}
|
|
117
|
-
{...rest}
|
|
118
|
-
/>
|
|
119
|
-
</>
|
|
120
|
-
);
|
|
121
|
-
}
|
|
122
|
-
);
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* This hook function can be used to render the `Modal` component with a custom
|
|
126
|
-
* open button(s) and optional custom close button(s). You must render your own
|
|
127
|
-
* button and pass the appropriate `onOpen` and ` handler for the modal to open.
|
|
128
|
-
*/
|
|
129
|
-
export function useModal() {
|
|
130
|
-
const { isOpen, onClose, onOpen } = useDisclosure();
|
|
131
|
-
const Modal = chakra(
|
|
132
|
-
({
|
|
133
|
-
bodyContent,
|
|
134
|
-
closeButtonLabel,
|
|
135
|
-
headingText,
|
|
136
|
-
id,
|
|
137
|
-
...rest
|
|
138
|
-
}: React.PropsWithChildren<BaseModalProps>) => {
|
|
139
|
-
return (
|
|
140
|
-
<BaseModal
|
|
141
|
-
bodyContent={bodyContent}
|
|
142
|
-
closeButtonLabel={closeButtonLabel}
|
|
143
|
-
headingText={headingText}
|
|
144
|
-
id={id}
|
|
145
|
-
isOpen={isOpen}
|
|
146
|
-
onClose={onClose}
|
|
147
|
-
{...rest}
|
|
148
|
-
/>
|
|
149
|
-
);
|
|
150
|
-
}
|
|
151
|
-
);
|
|
152
|
-
|
|
153
|
-
return { onClose, onOpen, Modal };
|
|
154
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`ModalTrigger renders the UI snapshot correctly 1`] = `
|
|
4
|
-
<button
|
|
5
|
-
className="chakra-button css-1xdhyk6"
|
|
6
|
-
data-testid="button"
|
|
7
|
-
id="modal-open-btn"
|
|
8
|
-
onClick={[Function]}
|
|
9
|
-
type="button"
|
|
10
|
-
>
|
|
11
|
-
Button Text
|
|
12
|
-
</button>
|
|
13
|
-
`;
|
|
14
|
-
|
|
15
|
-
exports[`useModal renders the UI snapshot correctly 1`] = `
|
|
16
|
-
<button
|
|
17
|
-
className="chakra-button css-1xdhyk6"
|
|
18
|
-
data-testid="button"
|
|
19
|
-
id="1"
|
|
20
|
-
onClick={[Function]}
|
|
21
|
-
type="button"
|
|
22
|
-
>
|
|
23
|
-
Open Modal
|
|
24
|
-
</button>
|
|
25
|
-
`;
|
|
@@ -1,358 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ArgsTable,
|
|
3
|
-
Canvas,
|
|
4
|
-
Description,
|
|
5
|
-
Meta,
|
|
6
|
-
Story,
|
|
7
|
-
} from "@storybook/addon-docs";
|
|
8
|
-
import { withDesign } from "storybook-addon-designs";
|
|
9
|
-
|
|
10
|
-
import Icon from "../Icons/Icon";
|
|
11
|
-
import Link from "../Link/Link";
|
|
12
|
-
import Notification from "./Notification";
|
|
13
|
-
import { getCategory } from "../../utils/componentCategories";
|
|
14
|
-
import DSProvider from "../../theme/provider";
|
|
15
|
-
|
|
16
|
-
<Meta
|
|
17
|
-
title={getCategory("Notification")}
|
|
18
|
-
component={Notification}
|
|
19
|
-
decorators={[withDesign]}
|
|
20
|
-
parameters={{
|
|
21
|
-
design: {
|
|
22
|
-
type: "figma",
|
|
23
|
-
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/?node-id=10734%3A812",
|
|
24
|
-
},
|
|
25
|
-
jest: ["Notification.test.tsx"],
|
|
26
|
-
}}
|
|
27
|
-
argTypes={{
|
|
28
|
-
className: { control: false },
|
|
29
|
-
dismissible: {
|
|
30
|
-
table: { defaultValue: { summary: false } },
|
|
31
|
-
},
|
|
32
|
-
icon: { control: false },
|
|
33
|
-
id: { control: false },
|
|
34
|
-
isCentered: {
|
|
35
|
-
table: { defaultValue: { summary: false } },
|
|
36
|
-
},
|
|
37
|
-
noMargin: {
|
|
38
|
-
table: { defaultValue: { summary: false } },
|
|
39
|
-
},
|
|
40
|
-
notificationContent: { control: false },
|
|
41
|
-
notificationType: {
|
|
42
|
-
table: { defaultValue: { summary: "standard" } },
|
|
43
|
-
},
|
|
44
|
-
}}
|
|
45
|
-
/>
|
|
46
|
-
|
|
47
|
-
# Notification
|
|
48
|
-
|
|
49
|
-
| Component Version | DS Version |
|
|
50
|
-
| ----------------- | ---------- |
|
|
51
|
-
| Added | `0.23.2` |
|
|
52
|
-
| Latest | `0.28.0` |
|
|
53
|
-
|
|
54
|
-
## Table of Contents
|
|
55
|
-
|
|
56
|
-
- [Overview](#overview)
|
|
57
|
-
- [Component Props](#component-props)
|
|
58
|
-
- [Accessibility](#accessibility)
|
|
59
|
-
- [Variants](#variants)
|
|
60
|
-
- [Custom Icon](#custom-icon)
|
|
61
|
-
- [Dismissible](#dismissible)
|
|
62
|
-
|
|
63
|
-
## Overview
|
|
64
|
-
|
|
65
|
-
<Description of={Notification} />
|
|
66
|
-
|
|
67
|
-
The `Notification` component is a configurable callout that should be used to
|
|
68
|
-
display important messages.
|
|
69
|
-
|
|
70
|
-
In the preview below, the border around the `Notification` is not part of the
|
|
71
|
-
component. It has been added to help illustrate how the `Notification` sits
|
|
72
|
-
within a parent element.
|
|
73
|
-
|
|
74
|
-
## Component Props
|
|
75
|
-
|
|
76
|
-
<Canvas>
|
|
77
|
-
<Story
|
|
78
|
-
name="Notification with Controls"
|
|
79
|
-
args={{
|
|
80
|
-
ariaLabel: "Notification label",
|
|
81
|
-
className: undefined,
|
|
82
|
-
dismissible: false,
|
|
83
|
-
icon: undefined,
|
|
84
|
-
id: "notification-id",
|
|
85
|
-
isCentered: false,
|
|
86
|
-
noMargin: false,
|
|
87
|
-
notificationHeading: "Notification Heading",
|
|
88
|
-
notificationContent: (
|
|
89
|
-
<>
|
|
90
|
-
Cras mattis consectetur purus sit amet fermentum. Maecenas faucibus
|
|
91
|
-
mollis interdum. Morbi leo risus, porta ac consectetur ac, vestibulum
|
|
92
|
-
at eros. Cum sociis natoque penatibus et magnis dis parturient montes,
|
|
93
|
-
nascetur ridiculus mus. Vivamus sagittis lacus vel augue laoreet
|
|
94
|
-
rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus,
|
|
95
|
-
nisi erat porttitor ligula.
|
|
96
|
-
</>
|
|
97
|
-
),
|
|
98
|
-
notificationType: "standard",
|
|
99
|
-
showIcon: true,
|
|
100
|
-
}}
|
|
101
|
-
>
|
|
102
|
-
{(args) => (
|
|
103
|
-
<div style={{ border: "1px solid #ccc" }}>
|
|
104
|
-
<Notification {...args} />
|
|
105
|
-
</div>
|
|
106
|
-
)}
|
|
107
|
-
</Story>
|
|
108
|
-
</Canvas>
|
|
109
|
-
|
|
110
|
-
<ArgsTable story="Notification with Controls" />
|
|
111
|
-
|
|
112
|
-
## Accessibility
|
|
113
|
-
|
|
114
|
-
The `Notification` component renders with an HTML `aside` element as its wrapper.
|
|
115
|
-
This is an HTML landmark element that is similar to adding an attribute of
|
|
116
|
-
`role="complementary"`. For accessibility purposes, landmark elements should not
|
|
117
|
-
be rendered inside other landmark elements such as the `header` and `footer`
|
|
118
|
-
landmark elements. Adding a `Notification` component inside an HTML `main` landmark
|
|
119
|
-
element is acceptable.
|
|
120
|
-
|
|
121
|
-
Every `Notification` component must have a unique `aria-label` attribute. This
|
|
122
|
-
is set through the `ariaLabel` prop. A unique `aria-label` value, along with the
|
|
123
|
-
`aside` HTML landmark element, helps screen readers better navigate a page with
|
|
124
|
-
multiple `Notification`s.
|
|
125
|
-
|
|
126
|
-
Icons rendered in the `Notification` component are decorative by default which
|
|
127
|
-
means that they are hidden to screen readers. Since the "X" close icon inside the
|
|
128
|
-
dismissible button is decorative and because there is no discernible text inside
|
|
129
|
-
the button, an `aria-label` attribute is added to the button.
|
|
130
|
-
|
|
131
|
-
Resources:
|
|
132
|
-
|
|
133
|
-
- [MDN Aria: complementary role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/complementary_role)
|
|
134
|
-
- [Deque Creating Accessible SVGs](https://www.deque.com/blog/creating-accessible-svgs/)
|
|
135
|
-
- [CSS Tricks Accessible SVG Icons](https://css-tricks.com/accessible-svg-icons/)
|
|
136
|
-
|
|
137
|
-
## Variants
|
|
138
|
-
|
|
139
|
-
### With NotificationHeading
|
|
140
|
-
|
|
141
|
-
<Canvas>
|
|
142
|
-
<DSProvider>
|
|
143
|
-
<Notification
|
|
144
|
-
notificationHeading="Standard Notification"
|
|
145
|
-
notificationContent={
|
|
146
|
-
<>
|
|
147
|
-
This is a "standard" Notification with a heading. Cras mattis
|
|
148
|
-
consectetur purus sit amet fermentum. Maecenas faucibus mollis
|
|
149
|
-
interdum. Morbi leo risus, porta ac consectetur ac, vestibulum at
|
|
150
|
-
eros. Cum sociis natoque penatibus et magnis dis parturient montes,
|
|
151
|
-
nascetur ridiculus mus. Vivamus sagittis lacus vel augue laoreet
|
|
152
|
-
rutrum faucibus dolor auctor.
|
|
153
|
-
</>
|
|
154
|
-
}
|
|
155
|
-
/>
|
|
156
|
-
</DSProvider>
|
|
157
|
-
</Canvas>
|
|
158
|
-
|
|
159
|
-
<Canvas>
|
|
160
|
-
<DSProvider>
|
|
161
|
-
<Notification
|
|
162
|
-
notificationType="announcement"
|
|
163
|
-
notificationHeading="Announcement Notification"
|
|
164
|
-
notificationContent={
|
|
165
|
-
<>
|
|
166
|
-
This is an "announcement" Notification with a heading. Cras mattis
|
|
167
|
-
consectetur purus sit amet fermentum. Maecenas faucibus mollis
|
|
168
|
-
interdum. Morbi leo risus, porta ac consectetur ac, vestibulum at
|
|
169
|
-
eros. Cum sociis natoque penatibus et magnis dis parturient montes,
|
|
170
|
-
nascetur ridiculus mus. Vivamus sagittis lacus vel augue laoreet
|
|
171
|
-
rutrum faucibus dolor auctor.
|
|
172
|
-
</>
|
|
173
|
-
}
|
|
174
|
-
/>
|
|
175
|
-
</DSProvider>
|
|
176
|
-
</Canvas>
|
|
177
|
-
|
|
178
|
-
<Canvas>
|
|
179
|
-
<DSProvider>
|
|
180
|
-
<Notification
|
|
181
|
-
notificationType="warning"
|
|
182
|
-
notificationHeading="Warning Notification"
|
|
183
|
-
notificationContent={
|
|
184
|
-
<>
|
|
185
|
-
This is a "warning" Notification with a heading. Cras mattis
|
|
186
|
-
consectetur purus sit amet fermentum. Maecenas faucibus mollis
|
|
187
|
-
interdum. Morbi leo risus, porta ac consectetur ac, vestibulum at
|
|
188
|
-
eros. Cum sociis natoque penatibus et magnis dis parturient montes,
|
|
189
|
-
nascetur ridiculus mus. Vivamus sagittis lacus vel augue laoreet
|
|
190
|
-
rutrum faucibus dolor auctor.
|
|
191
|
-
</>
|
|
192
|
-
}
|
|
193
|
-
/>
|
|
194
|
-
</DSProvider>
|
|
195
|
-
</Canvas>
|
|
196
|
-
|
|
197
|
-
### Without NotificationHeading
|
|
198
|
-
|
|
199
|
-
<Canvas>
|
|
200
|
-
<DSProvider>
|
|
201
|
-
<Notification
|
|
202
|
-
notificationContent={
|
|
203
|
-
<>
|
|
204
|
-
This is a "standard" Notification without a heading. Cras mattis
|
|
205
|
-
consectetur purus sit amet fermentum. Maecenas faucibus mollis
|
|
206
|
-
interdum. Morbi leo risus, porta ac consectetur ac, vestibulum at
|
|
207
|
-
eros. Cum sociis natoque penatibus et magnis dis parturient montes,
|
|
208
|
-
nascetur ridiculus mus. Vivamus sagittis lacus vel augue laoreet
|
|
209
|
-
rutrum faucibus dolor auctor.
|
|
210
|
-
</>
|
|
211
|
-
}
|
|
212
|
-
/>
|
|
213
|
-
</DSProvider>
|
|
214
|
-
</Canvas>
|
|
215
|
-
|
|
216
|
-
<Canvas>
|
|
217
|
-
<DSProvider>
|
|
218
|
-
<Notification
|
|
219
|
-
notificationType="announcement"
|
|
220
|
-
notificationContent={
|
|
221
|
-
<>
|
|
222
|
-
This is an "announcement" Notification without a heading. Cras mattis
|
|
223
|
-
consectetur purus sit amet fermentum. Maecenas faucibus mollis
|
|
224
|
-
interdum. Morbi leo risus, porta ac consectetur ac, vestibulum at
|
|
225
|
-
eros. Cum sociis natoque penatibus et magnis dis parturient montes,
|
|
226
|
-
nascetur ridiculus mus. Vivamus sagittis lacus vel augue laoreet
|
|
227
|
-
rutrum faucibus dolor auctor.
|
|
228
|
-
</>
|
|
229
|
-
}
|
|
230
|
-
/>
|
|
231
|
-
</DSProvider>
|
|
232
|
-
</Canvas>
|
|
233
|
-
|
|
234
|
-
<Canvas>
|
|
235
|
-
<DSProvider>
|
|
236
|
-
<Notification
|
|
237
|
-
notificationType="warning"
|
|
238
|
-
notificationContent={
|
|
239
|
-
<>
|
|
240
|
-
This is a "warning" Notification without a heading. Cras mattis
|
|
241
|
-
consectetur purus sit amet fermentum. Maecenas faucibus mollis
|
|
242
|
-
interdum. Morbi leo risus, porta ac consectetur ac, vestibulum at
|
|
243
|
-
eros. Cum sociis natoque penatibus et magnis dis parturient montes,
|
|
244
|
-
nascetur ridiculus mus. Vivamus sagittis lacus vel augue laoreet
|
|
245
|
-
rutrum faucibus dolor auctor.
|
|
246
|
-
</>
|
|
247
|
-
}
|
|
248
|
-
/>
|
|
249
|
-
</DSProvider>
|
|
250
|
-
</Canvas>
|
|
251
|
-
|
|
252
|
-
### Without Icon
|
|
253
|
-
|
|
254
|
-
The `Notification` icon can be hidden with the `showIcon` prop set to `false`.
|
|
255
|
-
|
|
256
|
-
<Canvas>
|
|
257
|
-
<DSProvider>
|
|
258
|
-
<Notification
|
|
259
|
-
notificationHeading="Standard Notification without Icon"
|
|
260
|
-
notificationContent={
|
|
261
|
-
<>
|
|
262
|
-
Cras mattis consectetur purus sit amet fermentum. Maecenas faucibus
|
|
263
|
-
mollis interdum. Morbi leo risus, porta ac consectetur ac, vestibulum
|
|
264
|
-
at eros. Cum sociis natoque penatibus et magnis dis parturient montes,
|
|
265
|
-
nascetur ridiculus mus.
|
|
266
|
-
</>
|
|
267
|
-
}
|
|
268
|
-
showIcon={false}
|
|
269
|
-
/>
|
|
270
|
-
<Notification
|
|
271
|
-
notificationContent={
|
|
272
|
-
<>
|
|
273
|
-
This is an Standard Notification without a heading or icon. Cras
|
|
274
|
-
mattis consectetur purus sit amet fermentum. Maecenas faucibus mollis
|
|
275
|
-
interdum. Morbi leo risus, porta ac consectetur ac, vestibulum at
|
|
276
|
-
eros. Cum sociis natoque penatibus et magnis dis parturient montes,
|
|
277
|
-
nascetur ridiculus mus.
|
|
278
|
-
</>
|
|
279
|
-
}
|
|
280
|
-
showIcon={false}
|
|
281
|
-
/>
|
|
282
|
-
</DSProvider>
|
|
283
|
-
</Canvas>
|
|
284
|
-
|
|
285
|
-
### With HTML content
|
|
286
|
-
|
|
287
|
-
The `notificationContent` prop can accept HTML.
|
|
288
|
-
|
|
289
|
-
<Canvas>
|
|
290
|
-
<DSProvider>
|
|
291
|
-
<Notification
|
|
292
|
-
notificationHeading="Standard Notification with HTML content"
|
|
293
|
-
notificationContent={
|
|
294
|
-
<>
|
|
295
|
-
<p>
|
|
296
|
-
Cras mattis consectetur purus sit amet fermentum. Maecenas faucibus
|
|
297
|
-
mollis interdum.
|
|
298
|
-
</p>
|
|
299
|
-
<p>
|
|
300
|
-
Morbi leo risus, porta ac consectetur ac, vestibulum at eros.{" "}
|
|
301
|
-
<b>
|
|
302
|
-
Cum sociis natoque penatibus et magnis dis parturient montes,
|
|
303
|
-
nascetur ridiculus mus
|
|
304
|
-
</b>
|
|
305
|
-
. <Link href="#">This is a link</Link>.
|
|
306
|
-
</p>
|
|
307
|
-
</>
|
|
308
|
-
}
|
|
309
|
-
/>
|
|
310
|
-
</DSProvider>
|
|
311
|
-
</Canvas>
|
|
312
|
-
|
|
313
|
-
## Custom Icon
|
|
314
|
-
|
|
315
|
-
The default icon can be overridden by using the `icon` prop to pass a custom `Icon` component.
|
|
316
|
-
|
|
317
|
-
<Canvas>
|
|
318
|
-
<Story name="Custom Icons">
|
|
319
|
-
<Notification
|
|
320
|
-
icon={<Icon name="check" color="section.research.secondary" />}
|
|
321
|
-
notificationHeading="Custom Icon"
|
|
322
|
-
notificationContent={
|
|
323
|
-
<>
|
|
324
|
-
This is a Notification with a custom icon. Cras mattis consectetur
|
|
325
|
-
purus sit amet fermentum. Maecenas faucibus mollis interdum. Morbi leo
|
|
326
|
-
risus, porta ac consectetur ac, vestibulum at eros. Cum sociis natoque
|
|
327
|
-
penatibus et magnis dis parturient montes, nascetur ridiculus mus.
|
|
328
|
-
</>
|
|
329
|
-
}
|
|
330
|
-
/>
|
|
331
|
-
</Story>
|
|
332
|
-
</Canvas>
|
|
333
|
-
|
|
334
|
-
## Dismissible
|
|
335
|
-
|
|
336
|
-
A dismissible `Notification` component can be created by setting the
|
|
337
|
-
`dismissible` prop to `true`. Once the "X" close icon on the upper right is
|
|
338
|
-
clicked, the `Notification` will be removed from the DOM, therefore it only
|
|
339
|
-
appears once.
|
|
340
|
-
|
|
341
|
-
<Canvas>
|
|
342
|
-
<Story name="Dismissible">
|
|
343
|
-
<Notification
|
|
344
|
-
dismissible
|
|
345
|
-
notificationHeading="Dismissible Notification"
|
|
346
|
-
notificationContent={
|
|
347
|
-
<>
|
|
348
|
-
This is a dismissible Notification with an X icon. Cras mattis
|
|
349
|
-
consectetur purus sit amet fermentum. Maecenas faucibus mollis
|
|
350
|
-
interdum. Morbi leo risus, porta ac consectetur ac, vestibulum at
|
|
351
|
-
eros. Cum sociis natoque penatibus et magnis dis parturient montes,
|
|
352
|
-
nascetur ridiculus mus.
|
|
353
|
-
</>
|
|
354
|
-
}
|
|
355
|
-
notificationType="announcement"
|
|
356
|
-
/>
|
|
357
|
-
</Story>
|
|
358
|
-
</Canvas>
|