@nypl/design-system-react-components 0.25.8 → 0.25.11
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 +110 -1
- package/README.md +1 -1
- package/dist/components/Button/Button.d.ts +6 -6
- package/dist/components/Button/ButtonTypes.d.ts +0 -1
- package/dist/components/Card/Card.d.ts +6 -4
- package/dist/components/Checkbox/Checkbox.d.ts +3 -2
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +3 -2
- package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +8 -2
- package/dist/components/DatePicker/DatePicker.d.ts +4 -3
- package/dist/components/Fieldset/Fieldset.d.ts +1 -3
- package/dist/components/Form/Form.d.ts +15 -14
- package/dist/components/Form/FormTypes.d.ts +2 -2
- package/dist/components/Heading/Heading.d.ts +7 -3
- package/dist/components/Heading/HeadingTypes.d.ts +6 -6
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +5 -2
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +3 -3
- package/dist/components/Icons/Icon.d.ts +4 -4
- package/dist/components/Icons/IconSvgs.d.ts +0 -21
- package/dist/components/Icons/IconTypes.d.ts +0 -23
- package/dist/components/Image/Image.d.ts +11 -3
- package/dist/components/List/List.d.ts +1 -1
- package/dist/components/Logo/Logo.d.ts +28 -0
- package/dist/components/Logo/LogoSvgs.d.ts +34 -0
- package/dist/components/Logo/LogoTypes.d.ts +46 -0
- package/dist/components/Modal/Modal.d.ts +0 -4
- package/dist/components/Notification/Notification.d.ts +4 -2
- package/dist/components/Placeholder/Placeholder.d.ts +3 -5
- package/dist/components/Radio/Radio.d.ts +6 -5
- package/dist/components/RadioGroup/RadioGroup.d.ts +6 -5
- package/dist/components/SearchBar/SearchBar.d.ts +15 -7
- package/dist/components/Select/Select.d.ts +7 -2
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -4
- package/dist/components/Slider/Slider.d.ts +3 -2
- package/dist/components/StatusBadge/StatusBadge.d.ts +2 -1
- package/dist/components/StructuredContent/StructuredContent.d.ts +41 -0
- package/dist/components/StructuredContent/StructuredContentTypes.d.ts +5 -0
- package/dist/components/Table/Table.d.ts +29 -0
- package/dist/components/Template/Template.d.ts +30 -6
- package/dist/components/Text/Text.d.ts +2 -2
- package/dist/components/TextInput/TextInput.d.ts +4 -3
- package/dist/components/Toggle/Toggle.d.ts +3 -2
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +14 -5
- package/dist/design-system-react-components.cjs.development.js +6721 -5777
- 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 +6774 -5839
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/index.d.ts +10 -8
- package/dist/resources.scss +0 -2
- package/dist/styles.css +2 -2
- package/dist/theme/components/breadcrumb.d.ts +1 -1
- package/dist/theme/components/button.d.ts +0 -12
- package/dist/theme/components/card.d.ts +14 -2
- package/dist/theme/components/customTable.d.ts +56 -0
- package/dist/theme/components/fieldset.d.ts +2 -2
- package/dist/theme/components/global.d.ts +1 -1
- package/dist/theme/components/heading.d.ts +4 -0
- package/dist/theme/components/label.d.ts +1 -1
- package/dist/theme/components/link.d.ts +14 -1
- package/dist/theme/components/list.d.ts +0 -2
- package/dist/theme/components/logo.d.ts +4 -0
- package/dist/theme/components/notification.d.ts +13 -4
- package/dist/theme/components/searchBar.d.ts +9 -11
- package/dist/theme/components/select.d.ts +1 -0
- package/dist/theme/components/structuredContent.d.ts +33 -0
- package/dist/theme/components/template.d.ts +10 -10
- package/dist/theme/components/textInput.d.ts +4 -0
- package/dist/theme/components/toggle.d.ts +8 -5
- package/dist/utils/utils.d.ts +10 -0
- package/package.json +40 -37
- package/src/__tests__/utils/utils.test.ts +23 -1
- package/src/components/Accordion/Accordion.stories.mdx +15 -13
- package/src/components/Accordion/Accordion.test.tsx +45 -1
- package/src/components/Accordion/Accordion.tsx +20 -8
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +243 -0
- package/src/components/Autosuggest/Autosuggest.stories.mdx +2 -1
- package/src/components/Autosuggest/Autosuggest.stories.tsx +24 -48
- package/src/components/Autosuggest/_Autosuggest.scss +2 -6
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +43 -13
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +15 -0
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +9 -3
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +5 -5
- package/src/components/Button/Button.stories.mdx +93 -48
- package/src/components/Button/Button.test.tsx +0 -12
- package/src/components/Button/Button.tsx +7 -7
- package/src/components/Button/ButtonTypes.tsx +0 -1
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -12
- package/src/components/Card/Card.stories.mdx +186 -71
- package/src/components/Card/Card.test.tsx +45 -22
- package/src/components/Card/Card.tsx +21 -6
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +9 -3
- package/src/components/Chakra/Box.stories.mdx +3 -3
- package/src/components/Chakra/Center.stories.mdx +5 -5
- package/src/components/Chakra/Flex.stories.mdx +113 -0
- package/src/components/Chakra/Grid.stories.mdx +3 -3
- package/src/components/Chakra/Stack.stories.mdx +2 -2
- package/src/components/Checkbox/Checkbox.stories.mdx +37 -15
- package/src/components/Checkbox/Checkbox.tsx +13 -8
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +48 -16
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -10
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +6 -3
- package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +151 -0
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +36 -23
- package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +85 -0
- package/src/components/DatePicker/DatePicker.stories.mdx +63 -18
- package/src/components/DatePicker/DatePicker.test.tsx +6 -6
- package/src/components/DatePicker/DatePicker.tsx +17 -11
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +50 -24
- package/src/components/Fieldset/Fieldset.stories.mdx +20 -9
- package/src/components/Fieldset/Fieldset.tsx +2 -4
- package/src/components/Form/Form.stories.mdx +75 -49
- package/src/components/Form/Form.test.tsx +92 -3
- package/src/components/Form/Form.tsx +28 -23
- package/src/components/Form/FormTypes.tsx +2 -2
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -1
- package/src/components/Grid/SimpleGrid.stories.mdx +26 -26
- package/src/components/Heading/Heading.stories.mdx +59 -23
- package/src/components/Heading/Heading.test.tsx +82 -18
- package/src/components/Heading/Heading.tsx +31 -31
- package/src/components/Heading/HeadingTypes.tsx +6 -6
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +71 -0
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +55 -27
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +42 -15
- package/src/components/HelperErrorText/HelperErrorText.tsx +24 -24
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +41 -4
- package/src/components/Hero/Hero.stories.mdx +72 -53
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +11 -9
- package/src/components/HorizontalRule/HorizontalRule.tsx +4 -6
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +4 -4
- package/src/components/Icons/Icon.stories.mdx +78 -77
- package/src/components/Icons/Icon.test.tsx +1 -1
- package/src/components/Icons/Icon.tsx +5 -6
- package/src/components/Icons/IconSvgs.tsx +0 -42
- package/src/components/Icons/IconTypes.tsx +0 -24
- package/src/components/Image/Image.stories.mdx +66 -18
- package/src/components/Image/Image.tsx +21 -10
- package/src/components/Label/Label.stories.mdx +20 -19
- package/src/components/Link/Link.stories.mdx +102 -51
- package/src/components/Link/Link.test.tsx +38 -8
- package/src/components/Link/Link.tsx +19 -12
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +60 -0
- package/src/components/List/List.stories.mdx +60 -29
- package/src/components/List/List.test.tsx +1 -1
- package/src/components/List/List.tsx +2 -2
- package/src/components/List/__snapshots__/List.test.tsx.snap +3 -1
- package/src/components/Logo/Logo.stories.mdx +222 -0
- package/src/components/Logo/Logo.test.tsx +98 -0
- package/src/components/Logo/Logo.tsx +97 -0
- package/src/components/Logo/LogoSvgs.tsx +66 -0
- package/src/components/Logo/LogoTypes.tsx +48 -0
- package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +71 -0
- package/src/components/Modal/Modal.stories.mdx +20 -5
- package/src/components/Modal/Modal.tsx +2 -8
- package/src/components/Notification/Notification.stories.mdx +128 -38
- package/src/components/Notification/Notification.test.tsx +49 -1
- package/src/components/Notification/Notification.tsx +25 -12
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +4 -0
- package/src/components/Pagination/Pagination.stories.mdx +18 -7
- package/src/components/Pagination/Pagination.tsx +3 -3
- package/src/components/Placeholder/Placeholder.tsx +7 -14
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +72 -43
- package/src/components/Radio/Radio.stories.mdx +39 -19
- package/src/components/Radio/Radio.tsx +13 -9
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +5 -5
- package/src/components/RadioGroup/RadioGroup.stories.mdx +50 -16
- package/src/components/RadioGroup/RadioGroup.test.tsx +13 -11
- package/src/components/RadioGroup/RadioGroup.tsx +97 -94
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +24 -21
- package/src/components/SearchBar/SearchBar.Test.tsx +160 -34
- package/src/components/SearchBar/SearchBar.stories.mdx +115 -33
- package/src/components/SearchBar/SearchBar.tsx +72 -51
- package/src/components/Select/Select.stories.mdx +48 -14
- package/src/components/Select/Select.test.tsx +89 -0
- package/src/components/Select/Select.tsx +27 -12
- package/src/components/Select/__snapshots__/Select.test.tsx.snap +545 -0
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +50 -16
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +8 -4
- package/src/components/Slider/Slider.stories.mdx +72 -22
- package/src/components/Slider/Slider.tsx +15 -10
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +67 -30
- package/src/components/StatusBadge/StatusBadge.stories.mdx +33 -18
- package/src/components/StatusBadge/StatusBadge.tsx +2 -1
- package/src/components/StructuredContent/StructuredContent.stories.mdx +427 -0
- package/src/components/StructuredContent/StructuredContent.test.tsx +376 -0
- package/src/components/StructuredContent/StructuredContent.tsx +153 -0
- package/src/components/StructuredContent/StructuredContentTypes.tsx +5 -0
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +283 -0
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +32 -83
- package/src/components/StyleGuide/Breakpoints.stories.mdx +1 -11
- package/src/components/StyleGuide/Buttons.stories.mdx +3 -18
- package/src/components/StyleGuide/ColorCard.tsx +1 -2
- package/src/components/StyleGuide/Colors.stories.mdx +3 -11
- package/src/components/StyleGuide/DesignTokens.stories.mdx +3 -8
- package/src/components/StyleGuide/Forms.stories.mdx +2 -10
- package/src/components/StyleGuide/Iconography.stories.mdx +8 -34
- package/src/components/StyleGuide/Spacing.stories.mdx +3 -14
- package/src/components/StyleGuide/Typography.stories.mdx +64 -76
- package/src/components/Table/Table.stories.mdx +165 -0
- package/src/components/Table/Table.test.tsx +137 -0
- package/src/components/Table/Table.tsx +126 -0
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +1179 -0
- package/src/components/Tabs/Tabs.stories.mdx +20 -14
- package/src/components/Tabs/Tabs.test.tsx +21 -5
- package/src/components/Tabs/Tabs.tsx +35 -20
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +195 -0
- package/src/components/Template/Template.stories.mdx +132 -48
- package/src/components/Template/Template.test.tsx +128 -6
- package/src/components/Template/Template.tsx +93 -13
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +169 -0
- package/src/components/Text/Text.stories.mdx +33 -11
- package/src/components/Text/Text.tsx +2 -2
- package/src/components/TextInput/TextInput.stories.mdx +84 -17
- package/src/components/TextInput/TextInput.test.tsx +96 -0
- package/src/components/TextInput/TextInput.tsx +12 -8
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +240 -0
- package/src/components/Toggle/Toggle.stories.mdx +33 -9
- package/src/components/Toggle/Toggle.tsx +14 -9
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +4 -4
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +64 -14
- package/src/components/VideoPlayer/VideoPlayer.tsx +17 -7
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +12 -6
- package/src/docs/Chakra.stories.mdx +5 -8
- package/src/docs/Intro.stories.mdx +2 -2
- package/src/index.ts +13 -6
- package/src/styles/base/_03-base.scss +1 -1
- package/src/styles/base/_place-holder.scss +7 -7
- package/src/styles.scss +1 -5
- package/src/theme/components/breadcrumb.ts +4 -4
- package/src/theme/components/button.ts +5 -12
- package/src/theme/components/card.ts +5 -2
- package/src/theme/components/checkbox.ts +1 -1
- package/src/theme/components/customTable.ts +63 -0
- package/src/theme/components/datePicker.ts +1 -1
- package/src/theme/components/global.ts +7 -7
- package/src/theme/components/heading.ts +13 -11
- package/src/theme/components/helperErrorText.ts +1 -1
- package/src/theme/components/image.ts +1 -1
- package/src/theme/components/link.ts +17 -5
- package/src/theme/components/list.ts +3 -5
- package/src/theme/components/logo.ts +54 -0
- package/src/theme/components/notification.ts +19 -9
- package/src/theme/components/searchBar.ts +11 -13
- package/src/theme/components/select.ts +1 -0
- package/src/theme/components/statusBadge.ts +1 -1
- package/src/theme/components/structuredContent.ts +74 -0
- package/src/theme/components/template.ts +10 -10
- package/src/theme/components/text.ts +6 -6
- package/src/theme/components/textInput.ts +2 -0
- package/src/theme/components/toggle.ts +10 -6
- package/src/theme/components/videoPlayer.ts +0 -2
- package/src/theme/foundations/global.ts +2 -2
- package/src/theme/foundations/typography.ts +84 -12
- package/src/theme/index.ts +6 -0
- package/src/utils/componentCategories.ts +2 -1
- package/src/utils/utils.ts +17 -0
- package/dist/__tests__/utils/bem.test.d.ts +0 -1
- package/dist/components/CardEdition/CardEdition.d.ts +0 -21
- package/dist/components/CardEdition/CardEdition.stories.d.ts +0 -27
- package/dist/components/Input/Input.d.ts +0 -36
- package/dist/components/Input/Input.stories.d.ts +0 -29
- package/dist/components/Input/InputTypes.d.ts +0 -6
- package/dist/components/StyleGuide/UIDocCard.d.ts +0 -11
- package/dist/helpers/CSSVariablesHelper.d.ts +0 -3
- package/dist/helpers/getCSSVariable.d.ts +0 -1
- package/dist/interfaces.d.ts +0 -3
- package/dist/utils/bem.d.ts +0 -1
- package/src/__tests__/utils/bem.test.ts +0 -37
- package/src/components/CardEdition/CardEdition.stories.tsx +0 -122
- package/src/components/CardEdition/CardEdition.test.tsx +0 -395
- package/src/components/CardEdition/CardEdition.tsx +0 -60
- package/src/components/CardEdition/_CardEdition.scss +0 -137
- package/src/components/Input/Input.stories.tsx +0 -133
- package/src/components/Input/Input.test.tsx +0 -266
- package/src/components/Input/Input.tsx +0 -81
- package/src/components/Input/InputTypes.tsx +0 -8
- package/src/components/Input/_Input.scss +0 -78
- package/src/components/StyleGuide/UIDocCard.tsx +0 -36
- package/src/helpers/CSSVariablesHelper.tsx +0 -34
- package/src/helpers/getCSSVariable.tsx +0 -5
- package/src/interfaces.ts +0 -3
- package/src/utils/bem.ts +0 -44
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/* eslint-disable camelcase */
|
|
2
|
+
import logo_bpl_black from "../../../icons/svg/logo_bpl_black.svg";
|
|
3
|
+
import logo_bpl_white from "../../../icons/svg/logo_bpl_white.svg";
|
|
4
|
+
import logo_clever_color from "../../../icons/svg/logo_clever_color.svg";
|
|
5
|
+
import logo_clever_white from "../../../icons/svg/logo_clever_white.svg";
|
|
6
|
+
import logo_lpa_color from "../../../icons/svg/logo_lpa_color.svg";
|
|
7
|
+
import logo_lpa_black from "../../../icons/svg/logo_lpa_black.svg";
|
|
8
|
+
import logo_lpa_white from "../../../icons/svg/logo_lpa_white.svg";
|
|
9
|
+
import logo_mln_black from "../../../icons/svg/logo_mln_black.svg";
|
|
10
|
+
import logo_mln_white from "../../../icons/svg/logo_mln_white.svg";
|
|
11
|
+
import logo_nypl_full_black from "../../../icons/svg/logo_nypl_full_black.svg";
|
|
12
|
+
import logo_nypl_full_white from "../../../icons/svg/logo_nypl_full_white.svg";
|
|
13
|
+
import logo_nypl_lion_black from "../../../icons/svg/logo_nypl_lion_black.svg";
|
|
14
|
+
import logo_nypl_lion_white from "../../../icons/svg/logo_nypl_lion_white.svg";
|
|
15
|
+
import logo_qpl_alt_black from "../../../icons/svg/logo_qpl_alt_black.svg";
|
|
16
|
+
import logo_qpl_alt_white from "../../../icons/svg/logo_qpl_alt_white.svg";
|
|
17
|
+
import logo_qpl_black from "../../../icons/svg/logo_qpl_black.svg";
|
|
18
|
+
import logo_qpl_color from "../../../icons/svg/logo_qpl_color.svg";
|
|
19
|
+
import logo_qpl_white from "../../../icons/svg/logo_qpl_white.svg";
|
|
20
|
+
import logo_schomburg_black from "../../../icons/svg/logo_schomburg_black.svg";
|
|
21
|
+
import logo_schomburg_circle_black from "../../../icons/svg/logo_schomburg_circle_black.svg";
|
|
22
|
+
import logo_schomburg_circle_color from "../../../icons/svg/logo_schomburg_circle_color.svg";
|
|
23
|
+
import logo_schomburg_circle_white from "../../../icons/svg/logo_schomburg_circle_white.svg";
|
|
24
|
+
import logo_schomburg_color from "../../../icons/svg/logo_schomburg_color.svg";
|
|
25
|
+
import logo_schomburg_white from "../../../icons/svg/logo_schomburg_white.svg";
|
|
26
|
+
import logo_simplye_black from "../../../icons/svg/logo_simplye_black.svg";
|
|
27
|
+
import logo_simplye_white from "../../../icons/svg/logo_simplye_white.svg";
|
|
28
|
+
import logo_simplye_color from "../../../icons/svg/logo_simplye_color.svg";
|
|
29
|
+
import logo_snfl_black from "../../../icons/svg/logo_snfl_black.svg";
|
|
30
|
+
import logo_snfl_white from "../../../icons/svg/logo_snfl_white.svg";
|
|
31
|
+
import logo_treasures_color from "../../../icons/svg/logo_treasures_color.svg";
|
|
32
|
+
import logo_treasures_color_negative from "../../../icons/svg/logo_treasures_color_negative.svg";
|
|
33
|
+
|
|
34
|
+
export default {
|
|
35
|
+
logo_bpl_black,
|
|
36
|
+
logo_bpl_white,
|
|
37
|
+
logo_clever_color,
|
|
38
|
+
logo_clever_white,
|
|
39
|
+
logo_lpa_black,
|
|
40
|
+
logo_lpa_color,
|
|
41
|
+
logo_lpa_white,
|
|
42
|
+
logo_mln_black,
|
|
43
|
+
logo_mln_white,
|
|
44
|
+
logo_nypl_full_black,
|
|
45
|
+
logo_nypl_full_white,
|
|
46
|
+
logo_nypl_lion_black,
|
|
47
|
+
logo_nypl_lion_white,
|
|
48
|
+
logo_qpl_alt_black,
|
|
49
|
+
logo_qpl_alt_white,
|
|
50
|
+
logo_qpl_black,
|
|
51
|
+
logo_qpl_color,
|
|
52
|
+
logo_qpl_white,
|
|
53
|
+
logo_schomburg_black,
|
|
54
|
+
logo_schomburg_circle_black,
|
|
55
|
+
logo_schomburg_circle_color,
|
|
56
|
+
logo_schomburg_circle_white,
|
|
57
|
+
logo_schomburg_color,
|
|
58
|
+
logo_schomburg_white,
|
|
59
|
+
logo_simplye_black,
|
|
60
|
+
logo_simplye_white,
|
|
61
|
+
logo_simplye_color,
|
|
62
|
+
logo_snfl_black,
|
|
63
|
+
logo_snfl_white,
|
|
64
|
+
logo_treasures_color,
|
|
65
|
+
logo_treasures_color_negative,
|
|
66
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export enum LogoColors {
|
|
2
|
+
Default = "",
|
|
3
|
+
UiBlack = "ui.black",
|
|
4
|
+
UiWhite = "ui.white",
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export enum LogoSizes {
|
|
8
|
+
ExtraExtraSmall = "xxsmall",
|
|
9
|
+
ExtraSmall = "xsmall",
|
|
10
|
+
Small = "small",
|
|
11
|
+
Medium = "medium",
|
|
12
|
+
Large = "large",
|
|
13
|
+
Default = "default",
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export enum LogoNames {
|
|
17
|
+
BrooklynPublicLibraryBlack = "logo_bpl_black",
|
|
18
|
+
BrooklynPublicLibraryWhite = "logo_bpl_white",
|
|
19
|
+
CleverColor = "logo_clever_color",
|
|
20
|
+
CleverWhite = "logo_clever_white",
|
|
21
|
+
LPAColor = "logo_lpa_color",
|
|
22
|
+
LPABlack = "logo_lpa_black",
|
|
23
|
+
LPAWhite = "logo_lpa_white",
|
|
24
|
+
MyLibraryNYCBlack = "logo_mln_black",
|
|
25
|
+
MyLibraryNYCWhite = "logo_mln_white",
|
|
26
|
+
NYPLBlack = "logo_nypl_full_black",
|
|
27
|
+
NYPLWhite = "logo_nypl_full_white",
|
|
28
|
+
NYPLLionBlack = "logo_nypl_lion_black",
|
|
29
|
+
NYPLLionWhite = "logo_nypl_lion_white",
|
|
30
|
+
QueensPublicLibraryColor = "logo_qpl_color",
|
|
31
|
+
QueensPublicLibraryBlack = "logo_qpl_black",
|
|
32
|
+
QueensPublicLibraryWhite = "logo_qpl_white",
|
|
33
|
+
QueensPublicLibraryAltBlack = "logo_qpl_alt_black",
|
|
34
|
+
QueensPublicLibraryAltWhite = "logo_qpl_alt_white",
|
|
35
|
+
SchomburgColor = "logo_schomburg_color",
|
|
36
|
+
SchomburgBlack = "logo_schomburg_black",
|
|
37
|
+
SchomburgWhite = "logo_schomburg_white",
|
|
38
|
+
SchomburgCircleColor = "logo_schomburg_circle_color",
|
|
39
|
+
SchomburgCircleBlack = "logo_schomburg_circle_black",
|
|
40
|
+
SchomburgCircleWhite = "logo_schomburg_circle_white",
|
|
41
|
+
SimplyEColor = "logo_simplye_color",
|
|
42
|
+
SimplyEBlack = "logo_simplye_black",
|
|
43
|
+
SimplyEWhite = "logo_simplye_white",
|
|
44
|
+
SNFLBlack = "logo_snfl_black",
|
|
45
|
+
SNFLWhite = "logo_snfl_white",
|
|
46
|
+
TreasuresColor = "logo_treasures_color",
|
|
47
|
+
TreasuresColorNegative = "logo_treasures_color_negative",
|
|
48
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`Logo renders the UI snapshot correctly 1`] = `
|
|
4
|
+
<svg
|
|
5
|
+
aria-hidden={false}
|
|
6
|
+
className="chakra-icon css-onkibi"
|
|
7
|
+
focusable={false}
|
|
8
|
+
id="test-logo"
|
|
9
|
+
role="img"
|
|
10
|
+
title="logo_nypl_full_black logo"
|
|
11
|
+
viewBox="0 0 24 24"
|
|
12
|
+
>
|
|
13
|
+
<g
|
|
14
|
+
stroke="currentColor"
|
|
15
|
+
strokeWidth="1.5"
|
|
16
|
+
>
|
|
17
|
+
<path
|
|
18
|
+
d="M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"
|
|
19
|
+
fill="none"
|
|
20
|
+
strokeLinecap="round"
|
|
21
|
+
/>
|
|
22
|
+
<path
|
|
23
|
+
d="M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"
|
|
24
|
+
fill="currentColor"
|
|
25
|
+
strokeLinecap="round"
|
|
26
|
+
/>
|
|
27
|
+
<circle
|
|
28
|
+
cx="12"
|
|
29
|
+
cy="12"
|
|
30
|
+
fill="none"
|
|
31
|
+
r="11.25"
|
|
32
|
+
strokeMiterlimit="10"
|
|
33
|
+
/>
|
|
34
|
+
</g>
|
|
35
|
+
</svg>
|
|
36
|
+
`;
|
|
37
|
+
|
|
38
|
+
exports[`Logo renders the UI snapshot correctly 2`] = `
|
|
39
|
+
<svg
|
|
40
|
+
aria-hidden={false}
|
|
41
|
+
className="chakra-icon css-onkibi"
|
|
42
|
+
focusable={false}
|
|
43
|
+
id="test-logo-size"
|
|
44
|
+
role="img"
|
|
45
|
+
title="logo_nypl_full_black logo"
|
|
46
|
+
viewBox="0 0 24 24"
|
|
47
|
+
>
|
|
48
|
+
<g
|
|
49
|
+
stroke="currentColor"
|
|
50
|
+
strokeWidth="1.5"
|
|
51
|
+
>
|
|
52
|
+
<path
|
|
53
|
+
d="M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"
|
|
54
|
+
fill="none"
|
|
55
|
+
strokeLinecap="round"
|
|
56
|
+
/>
|
|
57
|
+
<path
|
|
58
|
+
d="M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"
|
|
59
|
+
fill="currentColor"
|
|
60
|
+
strokeLinecap="round"
|
|
61
|
+
/>
|
|
62
|
+
<circle
|
|
63
|
+
cx="12"
|
|
64
|
+
cy="12"
|
|
65
|
+
fill="none"
|
|
66
|
+
r="11.25"
|
|
67
|
+
strokeMiterlimit="10"
|
|
68
|
+
/>
|
|
69
|
+
</g>
|
|
70
|
+
</svg>
|
|
71
|
+
`;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { useState } from "react";
|
|
2
2
|
import {
|
|
3
|
-
Meta,
|
|
4
|
-
Story,
|
|
5
3
|
ArgsTable,
|
|
6
4
|
Canvas,
|
|
7
5
|
Description,
|
|
8
|
-
|
|
6
|
+
Meta,
|
|
7
|
+
Story,
|
|
8
|
+
} from "@storybook/addon-docs";
|
|
9
|
+
|
|
9
10
|
import Modal from "./Modal";
|
|
10
11
|
import Button from "../Button/Button";
|
|
11
12
|
import { getCategory } from "../../utils/componentCategories";
|
|
@@ -14,7 +15,12 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
14
15
|
title={getCategory("Modal")}
|
|
15
16
|
component={Modal}
|
|
16
17
|
argTypes={{
|
|
18
|
+
blockName: { control: false },
|
|
17
19
|
children: { table: { disable: true } },
|
|
20
|
+
className: { control: false },
|
|
21
|
+
id: { control: false },
|
|
22
|
+
modifiers: { control: false },
|
|
23
|
+
open: { description: "Only used in Storybook." },
|
|
18
24
|
}}
|
|
19
25
|
parameters={{
|
|
20
26
|
jest: ["Modal.test.tsx"],
|
|
@@ -119,12 +125,21 @@ export const ModalStory = (args) => {
|
|
|
119
125
|
};
|
|
120
126
|
|
|
121
127
|
<Canvas withToolbar>
|
|
122
|
-
<Story
|
|
128
|
+
<Story
|
|
129
|
+
name="Modal"
|
|
130
|
+
args={{
|
|
131
|
+
blockName: undefined,
|
|
132
|
+
className: undefined,
|
|
133
|
+
id: "modal-id",
|
|
134
|
+
modifiers: undefined,
|
|
135
|
+
open: false,
|
|
136
|
+
}}
|
|
137
|
+
>
|
|
123
138
|
{(args) => <ModalStory {...args} />}
|
|
124
139
|
</Story>
|
|
125
140
|
</Canvas>
|
|
126
141
|
|
|
127
|
-
<ArgsTable story="
|
|
142
|
+
<ArgsTable story="Modal" />
|
|
128
143
|
|
|
129
144
|
## Code Implementation
|
|
130
145
|
|
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import bem from "../../utils/bem";
|
|
3
2
|
|
|
4
3
|
export interface ModalProps {
|
|
5
|
-
/** BlockName for use with BEM. See how to work with blockNames and BEM here: http://getbem.com/introduction/ */
|
|
6
|
-
blockName?: string;
|
|
7
4
|
/** ClassName that appears in addition to "modal" */
|
|
8
5
|
className?: string;
|
|
9
6
|
/** ID that other components can cross reference for accessibility purposes */
|
|
10
7
|
id?: string;
|
|
11
|
-
/** Modifiers array for use with BEM. See how to work with modifiers and BEM here: http://getbem.com/introduction/ */
|
|
12
|
-
modifiers?: string[];
|
|
13
8
|
}
|
|
14
9
|
|
|
15
10
|
/** Full-screen modal that appears on top of the body of the page. */
|
|
@@ -23,14 +18,13 @@ export default class Modal extends React.Component<ModalProps, any> {
|
|
|
23
18
|
}
|
|
24
19
|
|
|
25
20
|
render() {
|
|
26
|
-
const {
|
|
27
|
-
const baseClass = "modal";
|
|
21
|
+
const { id, className } = this.props;
|
|
28
22
|
|
|
29
23
|
return (
|
|
30
24
|
<div
|
|
31
25
|
// eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
|
|
32
26
|
tabIndex={0}
|
|
33
|
-
className={
|
|
27
|
+
className={`modal ${className}`}
|
|
34
28
|
id={id}
|
|
35
29
|
>
|
|
36
30
|
{this.props.children}
|
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
import {
|
|
2
|
-
Meta,
|
|
3
|
-
Story,
|
|
4
|
-
Canvas,
|
|
5
2
|
ArgsTable,
|
|
6
|
-
|
|
3
|
+
Canvas,
|
|
7
4
|
Description,
|
|
8
|
-
|
|
5
|
+
Meta,
|
|
6
|
+
Story,
|
|
7
|
+
} from "@storybook/addon-docs";
|
|
9
8
|
import { withDesign } from "storybook-addon-designs";
|
|
10
9
|
|
|
10
|
+
import Icon from "../Icons/Icon";
|
|
11
|
+
import { IconColors, IconNames } from "../Icons/IconTypes";
|
|
12
|
+
import Link from "../Link/Link";
|
|
11
13
|
import Notification from "./Notification";
|
|
12
14
|
import { NotificationTypes } from "./NotificationTypes";
|
|
13
|
-
import Icon from "../Icons/Icon";
|
|
14
|
-
import {
|
|
15
|
-
IconSizes,
|
|
16
|
-
IconColors,
|
|
17
|
-
IconNames,
|
|
18
|
-
IconAlign,
|
|
19
|
-
} from "../Icons/IconTypes";
|
|
20
15
|
import { getCategory } from "../../utils/componentCategories";
|
|
21
16
|
import DSProvider from "../../theme/provider";
|
|
17
|
+
import { getStorybookEnumValues } from "../../utils/utils";
|
|
18
|
+
|
|
19
|
+
export const enumValues = getStorybookEnumValues(
|
|
20
|
+
NotificationTypes,
|
|
21
|
+
"NotificationTypes"
|
|
22
|
+
);
|
|
22
23
|
|
|
23
24
|
<Meta
|
|
24
25
|
title={getCategory("Notification")}
|
|
@@ -31,6 +32,26 @@ import DSProvider from "../../theme/provider";
|
|
|
31
32
|
},
|
|
32
33
|
jest: ["Notification.test.tsx"],
|
|
33
34
|
}}
|
|
35
|
+
argTypes={{
|
|
36
|
+
centered: {
|
|
37
|
+
table: { defaultValue: { summary: false } },
|
|
38
|
+
},
|
|
39
|
+
className: { control: false },
|
|
40
|
+
dismissible: {
|
|
41
|
+
table: { defaultValue: { summary: false } },
|
|
42
|
+
},
|
|
43
|
+
icon: { control: false },
|
|
44
|
+
id: { control: false },
|
|
45
|
+
noMargin: {
|
|
46
|
+
table: { defaultValue: { summary: false } },
|
|
47
|
+
},
|
|
48
|
+
notificationContent: { control: false },
|
|
49
|
+
notificationType: {
|
|
50
|
+
control: { type: "select" },
|
|
51
|
+
table: { defaultValue: { summary: "NotificationTypes.Standard" } },
|
|
52
|
+
options: enumValues.options,
|
|
53
|
+
},
|
|
54
|
+
}}
|
|
34
55
|
/>
|
|
35
56
|
|
|
36
57
|
# Notification
|
|
@@ -38,7 +59,7 @@ import DSProvider from "../../theme/provider";
|
|
|
38
59
|
| Component Version | DS Version |
|
|
39
60
|
| ----------------- | ---------- |
|
|
40
61
|
| Added | `0.23.2` |
|
|
41
|
-
| Latest | `0.25.
|
|
62
|
+
| Latest | `0.25.11` |
|
|
42
63
|
|
|
43
64
|
<Description of={Notification} />
|
|
44
65
|
|
|
@@ -51,10 +72,15 @@ within a parent element.
|
|
|
51
72
|
|
|
52
73
|
<Canvas>
|
|
53
74
|
<Story
|
|
54
|
-
name="Notification
|
|
75
|
+
name="Notification with Controls"
|
|
55
76
|
args={{
|
|
56
|
-
|
|
57
|
-
centered:
|
|
77
|
+
ariaLabel: "Notification label",
|
|
78
|
+
centered: false,
|
|
79
|
+
className: undefined,
|
|
80
|
+
dismissible: false,
|
|
81
|
+
icon: undefined,
|
|
82
|
+
id: "notification-id",
|
|
83
|
+
noMargin: false,
|
|
58
84
|
notificationHeading: "Notification Heading",
|
|
59
85
|
notificationContent: (
|
|
60
86
|
<>
|
|
@@ -66,18 +92,31 @@ within a parent element.
|
|
|
66
92
|
nisi erat porttitor ligula.
|
|
67
93
|
</>
|
|
68
94
|
),
|
|
95
|
+
notificationType: "NotificationTypes.Standard",
|
|
69
96
|
showIcon: true,
|
|
70
97
|
}}
|
|
71
98
|
>
|
|
72
99
|
{(args) => (
|
|
73
100
|
<div style={{ border: "1px solid #ccc" }}>
|
|
74
|
-
<Notification
|
|
101
|
+
<Notification
|
|
102
|
+
{...args}
|
|
103
|
+
notificationType={enumValues.getValue(args.notificationType)}
|
|
104
|
+
/>
|
|
75
105
|
</div>
|
|
76
106
|
)}
|
|
77
107
|
</Story>
|
|
78
108
|
</Canvas>
|
|
79
109
|
|
|
80
|
-
<ArgsTable story="Notification
|
|
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.
|
|
81
120
|
|
|
82
121
|
## Variants
|
|
83
122
|
|
|
@@ -227,31 +266,82 @@ The `Notification` icon can be hidden with the `showIcon` prop set to `false`.
|
|
|
227
266
|
</DSProvider>
|
|
228
267
|
</Canvas>
|
|
229
268
|
|
|
269
|
+
### With HTML content
|
|
270
|
+
|
|
271
|
+
The `notificationContent` prop can accept HTML.
|
|
272
|
+
|
|
273
|
+
<Canvas>
|
|
274
|
+
<DSProvider>
|
|
275
|
+
<Notification
|
|
276
|
+
notificationHeading="Standard Notification with HTML content"
|
|
277
|
+
notificationContent={
|
|
278
|
+
<>
|
|
279
|
+
<p>
|
|
280
|
+
Cras mattis consectetur purus sit amet fermentum. Maecenas faucibus
|
|
281
|
+
mollis interdum.
|
|
282
|
+
</p>
|
|
283
|
+
<p>
|
|
284
|
+
Morbi leo risus, porta ac consectetur ac, vestibulum at eros.{" "}
|
|
285
|
+
<b>
|
|
286
|
+
Cum sociis natoque penatibus et magnis dis parturient montes,
|
|
287
|
+
nascetur ridiculus mus
|
|
288
|
+
</b>
|
|
289
|
+
. <Link href="#">This is a link</Link>.
|
|
290
|
+
</p>
|
|
291
|
+
</>
|
|
292
|
+
}
|
|
293
|
+
/>
|
|
294
|
+
</DSProvider>
|
|
295
|
+
</Canvas>
|
|
296
|
+
|
|
230
297
|
## Custom Icon
|
|
231
298
|
|
|
232
299
|
The default icon can be overridden by using the `icon` prop to pass a custom `Icon` component.
|
|
233
300
|
|
|
234
301
|
<Canvas>
|
|
235
302
|
<Story name="Custom Icons">
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
303
|
+
<Notification
|
|
304
|
+
icon={
|
|
305
|
+
<Icon
|
|
306
|
+
name={IconNames.Check}
|
|
307
|
+
color={IconColors.SectionResearchSecondary}
|
|
308
|
+
/>
|
|
309
|
+
}
|
|
310
|
+
notificationHeading="Custom Icon"
|
|
311
|
+
notificationContent={
|
|
312
|
+
<>
|
|
313
|
+
This is a Notification with a custom icon. Cras mattis consectetur
|
|
314
|
+
purus sit amet fermentum. Maecenas faucibus mollis interdum. Morbi leo
|
|
315
|
+
risus, porta ac consectetur ac, vestibulum at eros. Cum sociis natoque
|
|
316
|
+
penatibus et magnis dis parturient montes, nascetur ridiculus mus.
|
|
317
|
+
</>
|
|
318
|
+
}
|
|
319
|
+
/>
|
|
320
|
+
</Story>
|
|
321
|
+
</Canvas>
|
|
322
|
+
|
|
323
|
+
## Dismissible
|
|
324
|
+
|
|
325
|
+
A dismissible `Notification` component can be created by setting the
|
|
326
|
+
`dismissible` prop to `true`. Once the "X" close icon on the upper right is
|
|
327
|
+
clicked, the `Notification` will be removed from the DOM, therefore it only
|
|
328
|
+
appears once.
|
|
329
|
+
|
|
330
|
+
<Canvas>
|
|
331
|
+
<Story name="Dismissible">
|
|
332
|
+
<Notification
|
|
333
|
+
dismissible
|
|
334
|
+
notificationHeading="Dismissible Notification"
|
|
335
|
+
notificationContent={
|
|
336
|
+
<>
|
|
337
|
+
This is a dismissible Notification with an X icon. Cras mattis
|
|
338
|
+
consectetur purus sit amet fermentum. Maecenas faucibus mollis
|
|
339
|
+
interdum. Morbi leo risus, porta ac consectetur ac, vestibulum at
|
|
340
|
+
eros. Cum sociis natoque penatibus et magnis dis parturient montes,
|
|
341
|
+
nascetur ridiculus mus.
|
|
342
|
+
</>
|
|
343
|
+
}
|
|
344
|
+
notificationType={NotificationTypes.Announcement}
|
|
345
|
+
/>
|
|
256
346
|
</Story>
|
|
257
347
|
</Canvas>
|
|
@@ -41,6 +41,18 @@ describe("Notification Accessibility", () => {
|
|
|
41
41
|
);
|
|
42
42
|
expect(await axe(container)).toHaveNoViolations();
|
|
43
43
|
});
|
|
44
|
+
|
|
45
|
+
it("passes axe accessibility test for the dismissible type", async () => {
|
|
46
|
+
const { container } = render(
|
|
47
|
+
<Notification
|
|
48
|
+
dismissible
|
|
49
|
+
id="notificationID"
|
|
50
|
+
notificationContent={<>Notification content.</>}
|
|
51
|
+
notificationHeading="Notification Heading"
|
|
52
|
+
/>
|
|
53
|
+
);
|
|
54
|
+
expect(await axe(container)).toHaveNoViolations();
|
|
55
|
+
});
|
|
44
56
|
});
|
|
45
57
|
|
|
46
58
|
describe("Notification", () => {
|
|
@@ -48,6 +60,7 @@ describe("Notification", () => {
|
|
|
48
60
|
beforeEach(() => {
|
|
49
61
|
utils = render(
|
|
50
62
|
<Notification
|
|
63
|
+
ariaLabel="Notification label"
|
|
51
64
|
id="notificationID"
|
|
52
65
|
notificationContent={<>Notification content.</>}
|
|
53
66
|
notificationHeading="Notification Heading"
|
|
@@ -133,7 +146,31 @@ describe("Notification", () => {
|
|
|
133
146
|
);
|
|
134
147
|
});
|
|
135
148
|
|
|
136
|
-
it("renders
|
|
149
|
+
it("renders with an aria-label attribute", () => {
|
|
150
|
+
expect(screen.getByRole("complementary")).toHaveAttribute(
|
|
151
|
+
"aria-label",
|
|
152
|
+
"Notification label"
|
|
153
|
+
);
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
it("renders a dismissible icon", () => {
|
|
157
|
+
utils.rerender(
|
|
158
|
+
<Notification
|
|
159
|
+
dismissible
|
|
160
|
+
id="notificationID"
|
|
161
|
+
notificationContent={<>Notification content.</>}
|
|
162
|
+
notificationHeading="Notification Heading"
|
|
163
|
+
notificationType={NotificationTypes.Standard}
|
|
164
|
+
/>
|
|
165
|
+
);
|
|
166
|
+
const icons = screen.queryAllByRole("img");
|
|
167
|
+
|
|
168
|
+
expect(icons).toHaveLength(2);
|
|
169
|
+
expect(screen.getByTitle("Notification standard icon")).toBeInTheDocument();
|
|
170
|
+
expect(screen.getByTitle("Notification close icon")).toBeInTheDocument();
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
it.skip("renders the UI snapshot correctly", () => {
|
|
137
174
|
const standard = renderer
|
|
138
175
|
.create(
|
|
139
176
|
<Notification
|
|
@@ -190,11 +227,22 @@ describe("Notification", () => {
|
|
|
190
227
|
/>
|
|
191
228
|
)
|
|
192
229
|
.toJSON();
|
|
230
|
+
const dismissible = renderer
|
|
231
|
+
.create(
|
|
232
|
+
<Notification
|
|
233
|
+
dismissible
|
|
234
|
+
id="notificationID7"
|
|
235
|
+
notificationContent={<>Notification content.</>}
|
|
236
|
+
/>
|
|
237
|
+
)
|
|
238
|
+
.toJSON();
|
|
239
|
+
|
|
193
240
|
expect(standard).toMatchSnapshot();
|
|
194
241
|
expect(announcement).toMatchSnapshot();
|
|
195
242
|
expect(warning).toMatchSnapshot();
|
|
196
243
|
expect(withoutHeading).toMatchSnapshot();
|
|
197
244
|
expect(withoutAnIcon).toMatchSnapshot();
|
|
198
245
|
expect(withoutHeadingAndIcon).toMatchSnapshot();
|
|
246
|
+
expect(dismissible).toMatchSnapshot();
|
|
199
247
|
});
|
|
200
248
|
});
|