@nypl/design-system-react-components 1.0.2 → 1.0.4
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 +53 -0
- package/README.md +171 -135
- package/dist/__tests__/mediaMatchMock.d.ts +79 -0
- package/dist/components/Card/Card.d.ts +8 -6
- package/dist/components/Heading/Heading.d.ts +6 -0
- package/dist/components/Icons/Icon.d.ts +1 -1
- package/dist/components/Icons/IconSvgs.d.ts +10 -0
- package/dist/components/Logo/Logo.d.ts +1 -1
- package/dist/components/Logo/LogoSvgs.d.ts +3 -0
- package/dist/components/Slider/Slider.d.ts +1 -2
- package/dist/components/Table/Table.d.ts +3 -2
- package/dist/components/Text/Text.d.ts +6 -0
- package/dist/components/TextInput/TextInput.d.ts +2 -1
- package/dist/design-system-react-components.cjs.development.js +1700 -878
- 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 +1672 -881
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/hooks/{tests → __tests__}/useCarouselStyles.test.d.ts +0 -0
- package/dist/hooks/__tests__/useNYPLBreakpoints.test.d.ts +1 -0
- package/dist/hooks/useNYPLBreakpoints.d.ts +13 -0
- package/dist/index.d.ts +2 -1
- package/dist/resources.scss +0 -4
- package/dist/styles.css +3 -2
- package/dist/theme/components/button.d.ts +7 -2
- package/dist/theme/components/checkbox.d.ts +1 -0
- package/dist/theme/components/customTable.d.ts +522 -34
- package/dist/theme/components/datePicker.d.ts +1 -0
- package/dist/theme/components/global.d.ts +5 -2
- package/dist/theme/components/heading.d.ts +5 -1
- package/dist/theme/components/image.d.ts +18 -0
- package/dist/theme/components/radio.d.ts +9 -0
- package/dist/theme/components/searchBar.d.ts +6 -0
- package/dist/theme/components/select.d.ts +4 -5
- package/dist/theme/components/structuredContent.d.ts +117 -17
- package/dist/theme/components/template.d.ts +4 -1
- package/dist/theme/components/text.d.ts +5 -1
- package/dist/theme/components/textInput.d.ts +4 -0
- package/dist/theme/components/toggle.d.ts +1 -0
- package/dist/theme/provider.d.ts +2 -1
- package/package.json +16 -16
- 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,241 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { render, screen } from "@testing-library/react";
|
|
3
|
-
import { axe } from "jest-axe";
|
|
4
|
-
import renderer from "react-test-renderer";
|
|
5
|
-
|
|
6
|
-
import Image from "../Image/Image";
|
|
7
|
-
import Table from "./Table";
|
|
8
|
-
|
|
9
|
-
export const columnHeaders = [
|
|
10
|
-
"First Name",
|
|
11
|
-
"Last Name",
|
|
12
|
-
"Nick Name",
|
|
13
|
-
"Address1",
|
|
14
|
-
"City",
|
|
15
|
-
"Zipcode",
|
|
16
|
-
"State",
|
|
17
|
-
];
|
|
18
|
-
export const columnHeadersUneven = [
|
|
19
|
-
"First Name",
|
|
20
|
-
"Last Name",
|
|
21
|
-
"Nick Name",
|
|
22
|
-
"Address1",
|
|
23
|
-
"City",
|
|
24
|
-
"Zipcode",
|
|
25
|
-
];
|
|
26
|
-
export const tableData = [
|
|
27
|
-
["Tom", "Nook", "Tanukichi", "Main Street", "New York", "23458", "NY"],
|
|
28
|
-
["Isabelle", "-", "Shizue", "Walnut Street", "New York", "23458", "NY"],
|
|
29
|
-
["K.K.", "Slider", "Totakeke", "Niper Place", "New York", "98765", "NY"],
|
|
30
|
-
[
|
|
31
|
-
"Sonny",
|
|
32
|
-
"Resetti",
|
|
33
|
-
"Risetto san",
|
|
34
|
-
"Village Road",
|
|
35
|
-
"New York",
|
|
36
|
-
"09873",
|
|
37
|
-
"NY",
|
|
38
|
-
],
|
|
39
|
-
];
|
|
40
|
-
export const tableDataUneven = [
|
|
41
|
-
["Tom", "Nook", "Tanukichi", "Main Street", "New York", "23458", "NY"],
|
|
42
|
-
["Isabelle", "-", "Shizue", "Walnut Street", "New York", "23458", "NY"],
|
|
43
|
-
["K.K.", "Slider", "Totakeke", "Niper Place", "New York", "98765", "NY"],
|
|
44
|
-
["Sonny", "Resetti", "Risetto san", "Village Road", "New York", "09873"],
|
|
45
|
-
];
|
|
46
|
-
export const characterHeaders = ["First Name", "Last Name", "Avatar"];
|
|
47
|
-
export const charactersData = [
|
|
48
|
-
[
|
|
49
|
-
"Tom",
|
|
50
|
-
"Nook",
|
|
51
|
-
<Image
|
|
52
|
-
alt="Tom Nook"
|
|
53
|
-
key="tom"
|
|
54
|
-
size="small"
|
|
55
|
-
src="https://play.nintendo.com/images/AC_Tom_FRYtwIN.17345b1513ac044897cfc243542899dce541e8dc.9afde10b.png"
|
|
56
|
-
/>,
|
|
57
|
-
],
|
|
58
|
-
[
|
|
59
|
-
"Isabelle",
|
|
60
|
-
"-",
|
|
61
|
-
,
|
|
62
|
-
<Image
|
|
63
|
-
alt="Isabelle"
|
|
64
|
-
key="isa"
|
|
65
|
-
size="small"
|
|
66
|
-
src="https://play.nintendo.com/images/AC_Isabelle_7XU6aGu.17345b1513ac044897cfc243542899dce541e8dc.9afde10b.png"
|
|
67
|
-
/>,
|
|
68
|
-
],
|
|
69
|
-
[
|
|
70
|
-
"K.K.",
|
|
71
|
-
"Slider",
|
|
72
|
-
,
|
|
73
|
-
<Image
|
|
74
|
-
alt="K.K Slider"
|
|
75
|
-
key="kk"
|
|
76
|
-
size="small"
|
|
77
|
-
src="https://play.nintendo.com/images/AC_KK_jh4yj5t.17345b1513ac044897cfc243542899dce541e8dc.9afde10b.png"
|
|
78
|
-
/>,
|
|
79
|
-
],
|
|
80
|
-
];
|
|
81
|
-
|
|
82
|
-
describe("Table Accessibility", () => {
|
|
83
|
-
it("passes axe accessibility test with the columnHeaders and tableData prop", async () => {
|
|
84
|
-
const { container } = render(
|
|
85
|
-
<Table columnHeaders={columnHeaders} tableData={tableData} />
|
|
86
|
-
);
|
|
87
|
-
expect(await axe(container)).toHaveNoViolations();
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
it("passes axe accessibility test with tableData prop", async () => {
|
|
91
|
-
const { container } = render(<Table tableData={tableData} />);
|
|
92
|
-
expect(await axe(container)).toHaveNoViolations();
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
describe("Table", () => {
|
|
97
|
-
it("renders a caption", () => {
|
|
98
|
-
render(<Table tableData={tableData} titleText="this is the caption" />);
|
|
99
|
-
expect(screen.getByText("this is the caption")).toBeInTheDocument();
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
it("renders a table header", () => {
|
|
103
|
-
render(
|
|
104
|
-
<Table
|
|
105
|
-
columnHeaders={columnHeaders}
|
|
106
|
-
tableData={tableData}
|
|
107
|
-
titleText="this is the caption"
|
|
108
|
-
/>
|
|
109
|
-
);
|
|
110
|
-
|
|
111
|
-
expect(screen.getByText("First Name")).toBeInTheDocument();
|
|
112
|
-
expect(screen.getByText("Last Name")).toBeInTheDocument();
|
|
113
|
-
expect(screen.getByText("Nick Name")).toBeInTheDocument();
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
it("renders table data", () => {
|
|
117
|
-
render(<Table tableData={tableData} columnHeaders={columnHeaders} />);
|
|
118
|
-
|
|
119
|
-
expect(screen.getByText("Tom")).toBeInTheDocument();
|
|
120
|
-
expect(screen.getByText("Nook")).toBeInTheDocument();
|
|
121
|
-
expect(screen.getByText("Village Road")).toBeInTheDocument();
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
it("logs a warning when the `tableData` prop is an empty array", async () => {
|
|
125
|
-
const warn = jest.spyOn(console, "warn");
|
|
126
|
-
render(<Table tableData={[]} />);
|
|
127
|
-
expect(warn).toHaveBeenCalledWith(
|
|
128
|
-
"NYPL Reservoir Table: Data in the `tableData` prop must be a two dimensional array."
|
|
129
|
-
);
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
it("logs a warning when the columns in each `tableData` row are not identical", async () => {
|
|
133
|
-
const warn = jest.spyOn(console, "warn");
|
|
134
|
-
render(<Table tableData={tableDataUneven} columnHeaders={columnHeaders} />);
|
|
135
|
-
expect(warn).toHaveBeenCalledWith(
|
|
136
|
-
"NYPL Reservoir Table: The number of columns in each row of the data table are not identical. " +
|
|
137
|
-
"The `Table` component may not render properly."
|
|
138
|
-
);
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
it("logs a warning when the column headers `columnHeaders` is not equal the number of columns in the data table", async () => {
|
|
142
|
-
const warn = jest.spyOn(console, "warn");
|
|
143
|
-
render(<Table tableData={tableData} columnHeaders={columnHeadersUneven} />);
|
|
144
|
-
expect(warn).toHaveBeenCalledWith(
|
|
145
|
-
"NYPL Reservoir Table: The number of column headers in the `columnHeaders` prop is not equal " +
|
|
146
|
-
"to the number of columns in the data table. " +
|
|
147
|
-
"The `Table` component may not render properly."
|
|
148
|
-
);
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
it("renders JSX elements from the data array", () => {
|
|
152
|
-
render(
|
|
153
|
-
<Table
|
|
154
|
-
columnHeaders={characterHeaders}
|
|
155
|
-
id="jsx-example"
|
|
156
|
-
tableData={charactersData}
|
|
157
|
-
/>
|
|
158
|
-
);
|
|
159
|
-
expect(screen.getAllByRole("img")).toHaveLength(3);
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
it("renders the UI snapshot correctly", () => {
|
|
163
|
-
const basic = renderer
|
|
164
|
-
.create(<Table id="basic" tableData={tableData} />)
|
|
165
|
-
.toJSON();
|
|
166
|
-
const withCaption = renderer
|
|
167
|
-
.create(
|
|
168
|
-
<Table
|
|
169
|
-
id="withCaption"
|
|
170
|
-
tableData={tableData}
|
|
171
|
-
titleText="this is the caption"
|
|
172
|
-
/>
|
|
173
|
-
)
|
|
174
|
-
.toJSON();
|
|
175
|
-
const withHeaders = renderer
|
|
176
|
-
.create(
|
|
177
|
-
<Table
|
|
178
|
-
columnHeaders={columnHeaders}
|
|
179
|
-
id="withHeaders"
|
|
180
|
-
tableData={tableData}
|
|
181
|
-
titleText="this is the caption"
|
|
182
|
-
/>
|
|
183
|
-
)
|
|
184
|
-
.toJSON();
|
|
185
|
-
const withRowHeaders = renderer
|
|
186
|
-
.create(
|
|
187
|
-
<Table
|
|
188
|
-
columnHeaders={columnHeaders}
|
|
189
|
-
id="withHeaders"
|
|
190
|
-
tableData={tableData}
|
|
191
|
-
titleText="this is the caption"
|
|
192
|
-
useRowHeaders
|
|
193
|
-
/>
|
|
194
|
-
)
|
|
195
|
-
.toJSON();
|
|
196
|
-
const withCustomHeaderColors = renderer
|
|
197
|
-
.create(
|
|
198
|
-
<Table
|
|
199
|
-
columnHeadersBackgroundColor="var(--nypl-colors-ui-link-primary)"
|
|
200
|
-
columnHeadersTextColor="var(--nypl-colors-ui-white)"
|
|
201
|
-
columnHeaders={columnHeaders}
|
|
202
|
-
id="withHeaders"
|
|
203
|
-
tableData={tableData}
|
|
204
|
-
titleText="this is the caption"
|
|
205
|
-
useRowHeaders
|
|
206
|
-
/>
|
|
207
|
-
)
|
|
208
|
-
.toJSON();
|
|
209
|
-
const withChakraProps = renderer
|
|
210
|
-
.create(
|
|
211
|
-
<Table
|
|
212
|
-
id="chakra"
|
|
213
|
-
tableData={tableData}
|
|
214
|
-
p="20px"
|
|
215
|
-
color="ui.error.primary"
|
|
216
|
-
/>
|
|
217
|
-
)
|
|
218
|
-
.toJSON();
|
|
219
|
-
const withOtherProps = renderer
|
|
220
|
-
.create(<Table id="props" tableData={tableData} data-testid="props" />)
|
|
221
|
-
.toJSON();
|
|
222
|
-
const withJSXData = renderer
|
|
223
|
-
.create(
|
|
224
|
-
<Table
|
|
225
|
-
columnHeaders={characterHeaders}
|
|
226
|
-
id="jsx-example"
|
|
227
|
-
tableData={charactersData}
|
|
228
|
-
/>
|
|
229
|
-
)
|
|
230
|
-
.toJSON();
|
|
231
|
-
|
|
232
|
-
expect(basic).toMatchSnapshot();
|
|
233
|
-
expect(withCaption).toMatchSnapshot();
|
|
234
|
-
expect(withHeaders).toMatchSnapshot();
|
|
235
|
-
expect(withRowHeaders).toMatchSnapshot();
|
|
236
|
-
expect(withCustomHeaderColors).toMatchSnapshot();
|
|
237
|
-
expect(withChakraProps).toMatchSnapshot();
|
|
238
|
-
expect(withOtherProps).toMatchSnapshot();
|
|
239
|
-
expect(withJSXData).toMatchSnapshot();
|
|
240
|
-
});
|
|
241
|
-
});
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
chakra,
|
|
3
|
-
Table as ChakraTable,
|
|
4
|
-
TableCaption as ChakraTableCaption,
|
|
5
|
-
Tbody as ChakraTbody,
|
|
6
|
-
Thead as ChakraTHead,
|
|
7
|
-
Td as ChakraTd,
|
|
8
|
-
Th as ChakraTh,
|
|
9
|
-
Tr as ChakraTr,
|
|
10
|
-
useMultiStyleConfig,
|
|
11
|
-
} from "@chakra-ui/react";
|
|
12
|
-
import * as React from "react";
|
|
13
|
-
|
|
14
|
-
interface CustomColors {
|
|
15
|
-
backgroundColor?: string;
|
|
16
|
-
color?: string;
|
|
17
|
-
}
|
|
18
|
-
export interface TableProps {
|
|
19
|
-
/** Additional class name for the `Table` component. */
|
|
20
|
-
className?: string;
|
|
21
|
-
/** Array of string values used to populate the `Table` column headers. */
|
|
22
|
-
columnHeaders?: string[];
|
|
23
|
-
/** Hex value to set the background color of the column headers. */
|
|
24
|
-
columnHeadersBackgroundColor?: string;
|
|
25
|
-
/** Hex value to set the text color of the column headers. */
|
|
26
|
-
columnHeadersTextColor?: string;
|
|
27
|
-
/** ID that other components can cross reference for accessibility purposes. */
|
|
28
|
-
id?: string;
|
|
29
|
-
/** If true, a border will be displayed between each row in the `Table`
|
|
30
|
-
* component. The default value is false. */
|
|
31
|
-
showRowDividers?: boolean;
|
|
32
|
-
/** Two-dimensional array used to populate the table rows. */
|
|
33
|
-
tableData: (string | JSX.Element)[][];
|
|
34
|
-
/** Displays `Table` title element. */
|
|
35
|
-
titleText?: string;
|
|
36
|
-
/** If true, the first cell of each row in the `Table` component will be
|
|
37
|
-
* visually styled as a header. The default value is false */
|
|
38
|
-
useRowHeaders?: boolean;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Basic `Table` component used to organize and display tabular data in
|
|
43
|
-
* rows and columns.
|
|
44
|
-
*/
|
|
45
|
-
export const Table = chakra((props: React.PropsWithChildren<TableProps>) => {
|
|
46
|
-
const {
|
|
47
|
-
className,
|
|
48
|
-
columnHeaders = [],
|
|
49
|
-
columnHeadersBackgroundColor,
|
|
50
|
-
columnHeadersTextColor,
|
|
51
|
-
id,
|
|
52
|
-
showRowDividers = false,
|
|
53
|
-
tableData,
|
|
54
|
-
titleText,
|
|
55
|
-
useRowHeaders = false,
|
|
56
|
-
...rest
|
|
57
|
-
} = props;
|
|
58
|
-
const customColors: CustomColors = {};
|
|
59
|
-
|
|
60
|
-
columnHeadersBackgroundColor &&
|
|
61
|
-
(customColors["backgroundColor"] = columnHeadersBackgroundColor);
|
|
62
|
-
columnHeadersTextColor && (customColors["color"] = columnHeadersTextColor);
|
|
63
|
-
|
|
64
|
-
const styles = useMultiStyleConfig("CustomTable", {
|
|
65
|
-
columnHeadersTextColor,
|
|
66
|
-
showRowDividers,
|
|
67
|
-
useRowHeaders,
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
const tableCaption = titleText && (
|
|
71
|
-
<ChakraTableCaption>{titleText}</ChakraTableCaption>
|
|
72
|
-
);
|
|
73
|
-
|
|
74
|
-
const columnHeadersElems = columnHeaders?.length > 0 && (
|
|
75
|
-
<ChakraTHead>
|
|
76
|
-
<ChakraTr>
|
|
77
|
-
{columnHeaders.map((child, key) => (
|
|
78
|
-
<ChakraTh key={key} scope="col" sx={customColors}>
|
|
79
|
-
{child}
|
|
80
|
-
</ChakraTh>
|
|
81
|
-
))}
|
|
82
|
-
</ChakraTr>
|
|
83
|
-
</ChakraTHead>
|
|
84
|
-
);
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* This renders a normal `tbody` DOM element structure if the `tableData`
|
|
88
|
-
* passed is a two-dimensional array. This is to render the appropriate
|
|
89
|
-
* row and column structure for a table.
|
|
90
|
-
*/
|
|
91
|
-
const tableBodyElems = () => {
|
|
92
|
-
if (
|
|
93
|
-
!Array.isArray(tableData) ||
|
|
94
|
-
tableData.length <= 0 ||
|
|
95
|
-
tableData[0].constructor !== Array
|
|
96
|
-
) {
|
|
97
|
-
console.warn(
|
|
98
|
-
"NYPL Reservoir Table: Data in the `tableData` prop must be a two dimensional array."
|
|
99
|
-
);
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
for (let i = 1; i < tableData.length; i++) {
|
|
104
|
-
if (tableData[0].length !== tableData[i].length) {
|
|
105
|
-
console.warn(
|
|
106
|
-
"NYPL Reservoir Table: The number of columns in each row of the data table are not identical. " +
|
|
107
|
-
"The `Table` component may not render properly."
|
|
108
|
-
);
|
|
109
|
-
break;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
return (
|
|
114
|
-
<ChakraTbody>
|
|
115
|
-
{tableData.map((row, index) => (
|
|
116
|
-
<ChakraTr key={index}>
|
|
117
|
-
{row.map((column, key) =>
|
|
118
|
-
key === 0 && useRowHeaders ? (
|
|
119
|
-
<ChakraTh scope="row" key={key}>
|
|
120
|
-
{column}
|
|
121
|
-
</ChakraTh>
|
|
122
|
-
) : (
|
|
123
|
-
<ChakraTd key={key}>{column}</ChakraTd>
|
|
124
|
-
)
|
|
125
|
-
)}
|
|
126
|
-
</ChakraTr>
|
|
127
|
-
))}
|
|
128
|
-
</ChakraTbody>
|
|
129
|
-
);
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
for (let j = 0; j < tableData.length; j++) {
|
|
133
|
-
if (columnHeaders.length !== tableData[j].length) {
|
|
134
|
-
console.warn(
|
|
135
|
-
"NYPL Reservoir Table: The number of column headers in the `columnHeaders` prop is not equal " +
|
|
136
|
-
"to the number of columns in the data table. " +
|
|
137
|
-
"The `Table` component may not render properly."
|
|
138
|
-
);
|
|
139
|
-
break;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
return (
|
|
144
|
-
<ChakraTable id={id} sx={styles} className={className} {...rest}>
|
|
145
|
-
{tableCaption}
|
|
146
|
-
{columnHeadersElems}
|
|
147
|
-
{tableBodyElems()}
|
|
148
|
-
</ChakraTable>
|
|
149
|
-
);
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
export default Table;
|