@ilo-org/react 0.14.0 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +13 -10
- package/.eslintrc.cjs +0 -39
- package/.storybook/main.ts +0 -41
- package/.storybook/manager-head.html +0 -92
- package/.storybook/manager.ts +0 -6
- package/.storybook/preview-head.html +0 -5
- package/.storybook/preview.tsx +0 -81
- package/.storybook/styles.scss +0 -25
- package/.storybook/theme.ts +0 -46
- package/.turbo/turbo-build:lib.log +0 -15
- package/CHANGELOG.md +0 -884
- package/public/fao-logo.svg +0 -195
- package/public/favicon.ico +0 -0
- package/public/hero.jpg +0 -0
- package/public/ilo-dg.jpg +0 -0
- package/public/ilo-headquarters.jpg +0 -0
- package/public/large.jpg +0 -0
- package/public/media-file-poster.jpg +0 -0
- package/public/medium.jpg +0 -0
- package/public/react.svg +0 -8
- package/public/small.jpg +0 -0
- package/public/unhcr-logo.svg +0 -1
- package/public/unicef-logo.png +0 -0
- package/public/video-example.mp4 +0 -0
- package/public/wfp-logo.svg +0 -1
- package/public/who-logo.svg +0 -1
- package/public/youtube-video-poster.avif +0 -0
- package/rollup.config.mjs +0 -72
- package/src/__tests__/Accordion.test.tsx +0 -16
- package/src/__tests__/Button.test.tsx +0 -60
- package/src/__tests__/Callout.test.tsx +0 -43
- package/src/__tests__/ContextMenu.test.tsx +0 -19
- package/src/__tests__/Dropdown.test.tsx +0 -38
- package/src/__tests__/Heading.test.tsx +0 -51
- package/src/__tests__/Image.test.tsx +0 -21
- package/src/__tests__/LinkList.test.tsx +0 -17
- package/src/__tests__/List.test.tsx +0 -25
- package/src/__tests__/Loading.test.tsx +0 -33
- package/src/__tests__/Notification.test.tsx +0 -39
- package/src/__tests__/Pagination.test.tsx +0 -58
- package/src/__tests__/Profile.test.tsx +0 -48
- package/src/__tests__/ReadMore.test.tsx +0 -43
- package/src/__tests__/RichText.test.tsx +0 -16
- package/src/__tests__/SearchField.test.tsx +0 -35
- package/src/__tests__/TableOfContents.test.tsx +0 -12
- package/src/__tests__/Tag.test.tsx +0 -10
- package/src/components/Accordion/Accordion.args.ts +0 -16
- package/src/components/Accordion/Accordion.props.ts +0 -41
- package/src/components/Accordion/Accordion.tsx +0 -62
- package/src/components/Accordion/AccordionButton.props.ts +0 -13
- package/src/components/Accordion/AccordionButton.tsx +0 -58
- package/src/components/Accordion/AccordionCtx.ts +0 -9
- package/src/components/Accordion/AccordionItem.props.ts +0 -25
- package/src/components/Accordion/AccordionItem.tsx +0 -27
- package/src/components/Accordion/AccordionPanel.props.ts +0 -25
- package/src/components/Accordion/AccordionPanel.tsx +0 -46
- package/src/components/Accordion/index.ts +0 -4
- package/src/components/Breadcrumb/Breadcrumb.args.ts +0 -61
- package/src/components/Breadcrumb/Breadcrumb.props.ts +0 -13
- package/src/components/Breadcrumb/Breadcrumb.tsx +0 -82
- package/src/components/Breadcrumb/index.ts +0 -1
- package/src/components/Button/Button.args.ts +0 -35
- package/src/components/Button/Button.props.ts +0 -89
- package/src/components/Button/Button.tsx +0 -77
- package/src/components/Button/index.ts +0 -2
- package/src/components/Callout/Callout.args.ts +0 -38
- package/src/components/Callout/Callout.props.ts +0 -60
- package/src/components/Callout/Callout.tsx +0 -80
- package/src/components/Callout/index.ts +0 -2
- package/src/components/Cards/CardGroup/CardGroup.args.ts +0 -807
- package/src/components/Cards/CardGroup/CardGroup.props.ts +0 -78
- package/src/components/Cards/CardGroup/CardGroup.tsx +0 -54
- package/src/components/Cards/CardGroup/index.tsx +0 -3
- package/src/components/Cards/DataCard/DataCard.args.ts +0 -69
- package/src/components/Cards/DataCard/DataCard.props.ts +0 -60
- package/src/components/Cards/DataCard/DataCard.tsx +0 -107
- package/src/components/Cards/DataCard/index.tsx +0 -3
- package/src/components/Cards/DetailCard/DetailCard.args.ts +0 -17
- package/src/components/Cards/DetailCard/DetailCard.props.ts +0 -43
- package/src/components/Cards/DetailCard/DetailCard.tsx +0 -62
- package/src/components/Cards/DetailCard/index.tsx +0 -3
- package/src/components/Cards/FactlistCard/FactListCard.args.ts +0 -14
- package/src/components/Cards/FactlistCard/FactListCard.props.ts +0 -19
- package/src/components/Cards/FactlistCard/FactListCard.tsx +0 -42
- package/src/components/Cards/FactlistCard/index.tsx +0 -3
- package/src/components/Cards/FeatureCard/FeatureCard.args.ts +0 -30
- package/src/components/Cards/FeatureCard/FeatureCard.props.ts +0 -38
- package/src/components/Cards/FeatureCard/FeatureCard.tsx +0 -69
- package/src/components/Cards/FeatureCard/index.tsx +0 -3
- package/src/components/Cards/MultilinkCard/MultiLinkCard.tsx +0 -76
- package/src/components/Cards/MultilinkCard/MultilinkCard.args.ts +0 -33
- package/src/components/Cards/MultilinkCard/MultilinkCard.props.ts +0 -30
- package/src/components/Cards/MultilinkCard/index.tsx +0 -3
- package/src/components/Cards/PromoCard/PromoCard.args.ts +0 -19
- package/src/components/Cards/PromoCard/PromoCard.props.ts +0 -36
- package/src/components/Cards/PromoCard/PromoCard.tsx +0 -60
- package/src/components/Cards/PromoCard/index.tsx +0 -3
- package/src/components/Cards/StatCard/StatCard.args.ts +0 -14
- package/src/components/Cards/StatCard/StatCard.props.ts +0 -21
- package/src/components/Cards/StatCard/StatCard.tsx +0 -36
- package/src/components/Cards/StatCard/index.tsx +0 -3
- package/src/components/Cards/TextCard/TextCard.args.ts +0 -21
- package/src/components/Cards/TextCard/TextCard.props.ts +0 -32
- package/src/components/Cards/TextCard/TextCard.tsx +0 -62
- package/src/components/Cards/TextCard/index.tsx +0 -3
- package/src/components/Checkbox/Checkbox.args.ts +0 -42
- package/src/components/Checkbox/Checkbox.props.ts +0 -5
- package/src/components/Checkbox/Checkbox.tsx +0 -94
- package/src/components/Checkbox/index.ts +0 -2
- package/src/components/Collapse/Collapse.props.ts +0 -92
- package/src/components/Collapse/Collapse.tsx +0 -130
- package/src/components/Collapse/index.ts +0 -1
- package/src/components/ContextMenu/ContextMenu.args.ts +0 -62
- package/src/components/ContextMenu/ContextMenu.props.ts +0 -28
- package/src/components/ContextMenu/ContextMenu.tsx +0 -32
- package/src/components/ContextMenu/index.ts +0 -1
- package/src/components/Credit/Credit.args.ts +0 -14
- package/src/components/Credit/Credit.props.ts +0 -11
- package/src/components/Credit/Credit.tsx +0 -41
- package/src/components/Credit/index.ts +0 -1
- package/src/components/DatePicker/DatePicker.args.ts +0 -56
- package/src/components/DatePicker/DatePicker.props.ts +0 -26
- package/src/components/DatePicker/DatePicker.tsx +0 -80
- package/src/components/DatePicker/index.ts +0 -1
- package/src/components/Dropdown/Dropdown.args.ts +0 -70
- package/src/components/Dropdown/Dropdown.props.ts +0 -53
- package/src/components/Dropdown/Dropdown.tsx +0 -95
- package/src/components/Dropdown/index.ts +0 -1
- package/src/components/Empty/Empty.props.ts +0 -13
- package/src/components/Empty/Empty.tsx +0 -16
- package/src/components/Empty/index.ts +0 -1
- package/src/components/Fieldset/Fieldset.props.ts +0 -33
- package/src/components/Fieldset/Fieldset.tsx +0 -96
- package/src/components/Fieldset/index.ts +0 -1
- package/src/components/FileUpload/FileUpload.args.ts +0 -60
- package/src/components/FileUpload/FileUpload.props.ts +0 -21
- package/src/components/FileUpload/FileUpload.tsx +0 -116
- package/src/components/FileUpload/index.ts +0 -1
- package/src/components/Footer/Footer.args.ts +0 -74
- package/src/components/Footer/Footer.props.ts +0 -60
- package/src/components/Footer/Footer.tsx +0 -99
- package/src/components/Footer/index.ts +0 -1
- package/src/components/Form/Form.args.ts +0 -5
- package/src/components/Form/Form.props.ts +0 -8
- package/src/components/Form/Form.tsx +0 -23
- package/src/components/Form/index.ts +0 -2
- package/src/components/FormControl/FormControl.props.ts +0 -72
- package/src/components/FormControl/FormControl.tsx +0 -169
- package/src/components/FormControl/index.ts +0 -2
- package/src/components/FormElement/FormElement.props.ts +0 -60
- package/src/components/FormElement/FormElement.tsx +0 -19
- package/src/components/FormElement/index.ts +0 -1
- package/src/components/GlobalProvider/GlobalCtx.ts +0 -6
- package/src/components/GlobalProvider/GlobalProvider.props.ts +0 -15
- package/src/components/GlobalProvider/GlobalProvider.tsx +0 -21
- package/src/components/GlobalProvider/index.ts +0 -2
- package/src/components/Heading/Heading.args.ts +0 -49
- package/src/components/Heading/Heading.props.ts +0 -24
- package/src/components/Heading/Heading.tsx +0 -28
- package/src/components/Heading/index.ts +0 -1
- package/src/components/Hero/Hero.args.ts +0 -136
- package/src/components/Hero/Hero.props.ts +0 -62
- package/src/components/Hero/Hero.tsx +0 -94
- package/src/components/Hero/HeroCard.props.ts +0 -54
- package/src/components/Hero/HeroCard.tsx +0 -65
- package/src/components/Hero/index.ts +0 -2
- package/src/components/Icon/Icon.args.ts +0 -15
- package/src/components/Icon/Icon.props.ts +0 -16
- package/src/components/Icon/Icon.tsx +0 -25
- package/src/components/Icon/index.ts +0 -1
- package/src/components/Image/Image.args.ts +0 -29
- package/src/components/Image/Image.props.ts +0 -43
- package/src/components/Image/Image.tsx +0 -51
- package/src/components/Image/index.ts +0 -1
- package/src/components/Input/Input.args.ts +0 -139
- package/src/components/Input/Input.props.ts +0 -65
- package/src/components/Input/Input.tsx +0 -65
- package/src/components/Input/index.ts +0 -1
- package/src/components/Link/Link.props.ts +0 -39
- package/src/components/Link/Link.tsx +0 -42
- package/src/components/Link/index.ts +0 -1
- package/src/components/LinkList/LinkList.args.ts +0 -193
- package/src/components/LinkList/LinkList.props.ts +0 -52
- package/src/components/LinkList/LinkList.tsx +0 -59
- package/src/components/LinkList/index.ts +0 -1
- package/src/components/List/List.args.ts +0 -34
- package/src/components/List/List.props.ts +0 -29
- package/src/components/List/List.tsx +0 -36
- package/src/components/List/ListItem.props.ts +0 -18
- package/src/components/List/ListItem.tsx +0 -17
- package/src/components/List/index.ts +0 -2
- package/src/components/Loading/Loading.args.ts +0 -55
- package/src/components/Loading/Loading.props.ts +0 -23
- package/src/components/Loading/Loading.tsx +0 -24
- package/src/components/Loading/index.ts +0 -1
- package/src/components/LocalNav/LocalNav.args.ts +0 -64
- package/src/components/LocalNav/LocalNav.props.ts +0 -56
- package/src/components/LocalNav/LocalNav.tsx +0 -181
- package/src/components/LocalNav/index.ts +0 -1
- package/src/components/Logo/Logo.args.ts +0 -45
- package/src/components/Logo/Logo.props.ts +0 -67
- package/src/components/Logo/Logo.tsx +0 -247
- package/src/components/Logo/index.ts +0 -1
- package/src/components/LogoGrid/LogoGrid.args.ts +0 -50
- package/src/components/LogoGrid/LogoGrid.props.ts +0 -28
- package/src/components/LogoGrid/LogoGrid.tsx +0 -53
- package/src/components/LogoGrid/index.ts +0 -1
- package/src/components/Navigation/Navigation.args.ts +0 -113
- package/src/components/Navigation/Navigation.props.ts +0 -120
- package/src/components/Navigation/Navigation.tsx +0 -246
- package/src/components/Navigation/index.ts +0 -1
- package/src/components/Notification/Notification.args.ts +0 -157
- package/src/components/Notification/Notification.props.ts +0 -67
- package/src/components/Notification/Notification.tsx +0 -78
- package/src/components/Notification/index.ts +0 -1
- package/src/components/NumberPicker/NumberPicker.args.ts +0 -50
- package/src/components/NumberPicker/NumberPicker.props.ts +0 -26
- package/src/components/NumberPicker/NumberPicker.tsx +0 -88
- package/src/components/NumberPicker/index.ts +0 -1
- package/src/components/Pagination/Pagination.args.ts +0 -43
- package/src/components/Pagination/Pagination.props.ts +0 -66
- package/src/components/Pagination/Pagination.tsx +0 -115
- package/src/components/Pagination/index.ts +0 -1
- package/src/components/Profile/Profile.args.ts +0 -58
- package/src/components/Profile/Profile.props.ts +0 -55
- package/src/components/Profile/Profile.tsx +0 -51
- package/src/components/Profile/index.ts +0 -1
- package/src/components/Radio/Radio.args.ts +0 -15
- package/src/components/Radio/Radio.props.ts +0 -6
- package/src/components/Radio/Radio.tsx +0 -102
- package/src/components/Radio/index.ts +0 -2
- package/src/components/ReadMore/ReadMore.args.ts +0 -23
- package/src/components/ReadMore/ReadMore.props.ts +0 -38
- package/src/components/ReadMore/ReadMore.tsx +0 -55
- package/src/components/ReadMore/index.ts +0 -1
- package/src/components/RichText/RichText.props.ts +0 -11
- package/src/components/RichText/RichText.tsx +0 -22
- package/src/components/RichText/index.ts +0 -1
- package/src/components/RichText/richText.args.ts +0 -38
- package/src/components/SearchField/SearchField.args.ts +0 -73
- package/src/components/SearchField/SearchField.props.ts +0 -35
- package/src/components/SearchField/SearchField.tsx +0 -83
- package/src/components/SearchField/index.ts +0 -1
- package/src/components/SocialMedia/SocialMedia.args.ts +0 -54
- package/src/components/SocialMedia/SocialMedia.props.ts +0 -45
- package/src/components/SocialMedia/SocialMedia.tsx +0 -46
- package/src/components/SocialMedia/index.ts +0 -3
- package/src/components/TableOfContents/TableOfContents.args.ts +0 -35
- package/src/components/TableOfContents/TableOfContents.props.ts +0 -23
- package/src/components/TableOfContents/TableOfContents.tsx +0 -32
- package/src/components/TableOfContents/index.ts +0 -1
- package/src/components/Tabs/Tabs.args.tsx +0 -201
- package/src/components/Tabs/Tabs.props.ts +0 -13
- package/src/components/Tabs/Tabs.tsx +0 -60
- package/src/components/Tabs/index.ts +0 -1
- package/src/components/Tag/Tag.args.ts +0 -15
- package/src/components/Tag/Tag.props.ts +0 -34
- package/src/components/Tag/Tag.tsx +0 -104
- package/src/components/Tag/TagCtx.ts +0 -4
- package/src/components/Tag/TagSet.args.ts +0 -37
- package/src/components/Tag/TagSet.props.ts +0 -37
- package/src/components/Tag/TagSet.tsx +0 -61
- package/src/components/Tag/index.ts +0 -2
- package/src/components/TextInput/TextInput.args.ts +0 -75
- package/src/components/TextInput/TextInput.props.ts +0 -20
- package/src/components/TextInput/TextInput.tsx +0 -71
- package/src/components/TextInput/index.ts +0 -2
- package/src/components/Textarea/Textarea.args.ts +0 -34
- package/src/components/Textarea/Textarea.props.ts +0 -45
- package/src/components/Textarea/Textarea.tsx +0 -52
- package/src/components/Textarea/index.ts +0 -3
- package/src/components/Toggle/Toggle.args.ts +0 -62
- package/src/components/Toggle/Toggle.props.ts +0 -27
- package/src/components/Toggle/Toggle.tsx +0 -85
- package/src/components/Toggle/index.ts +0 -3
- package/src/components/Tooltip/Tooltip.args.ts +0 -39
- package/src/components/Tooltip/Tooltip.props.ts +0 -38
- package/src/components/Tooltip/Tooltip.tsx +0 -119
- package/src/components/Tooltip/index.ts +0 -1
- package/src/components/Video/Video.args.ts +0 -47
- package/src/components/Video/Video.props.ts +0 -35
- package/src/components/Video/Video.tsx +0 -34
- package/src/components/Video/VideoPlayer.props.ts +0 -51
- package/src/components/Video/VideoPlayer.tsx +0 -71
- package/src/components/Video/index.ts +0 -1
- package/src/components/Video/media-file-poster.jpg +0 -0
- package/src/components/index.ts +0 -46
- package/src/declarations.d.ts +0 -36
- package/src/hooks/index.ts +0 -2
- package/src/hooks/useGlobalSettings.ts +0 -13
- package/src/hooks/usePrevious.ts +0 -15
- package/src/hooks/useVideoPlayer.ts +0 -85
- package/src/index.ts +0 -1
- package/src/setup.ts +0 -6
- package/src/stories/Accordion/Accordion.stories.tsx +0 -145
- package/src/stories/Breadcrumb/Breadcrumb.mdx +0 -17
- package/src/stories/Breadcrumb/Breadcrumb.stories.tsx +0 -20
- package/src/stories/Button/Button.mdx +0 -94
- package/src/stories/Button/Button.stories.tsx +0 -68
- package/src/stories/Callout/Callout.mdx +0 -35
- package/src/stories/Callout/Callout.stories.tsx +0 -43
- package/src/stories/Card/DataCard.stories.tsx +0 -45
- package/src/stories/Card/DetailCard.stories.tsx +0 -41
- package/src/stories/Card/FactlistCard.stories.tsx +0 -48
- package/src/stories/Card/FeatureCard.stories.tsx +0 -56
- package/src/stories/Card/MultilinkCard.stories.tsx +0 -48
- package/src/stories/Card/PromoCard.stories.tsx +0 -48
- package/src/stories/Card/StatCard.stories.tsx +0 -45
- package/src/stories/Card/TextCard.stories.tsx +0 -45
- package/src/stories/CardGroup/CardGroup.mdx +0 -17
- package/src/stories/CardGroup/CardGroup.stories.tsx +0 -50
- package/src/stories/Checkbox/Checkbox.stories.tsx +0 -118
- package/src/stories/ContextMenu/ContextMenu.stories.tsx +0 -83
- package/src/stories/DatePicker/DatePicker.stories.tsx +0 -110
- package/src/stories/Dropdown/Dropdown.stories.tsx +0 -145
- package/src/stories/Empty/Empty.stories.tsx +0 -53
- package/src/stories/Fieldset/Fieldset.stories.tsx +0 -167
- package/src/stories/FileUpload/FileUpload.stories.tsx +0 -103
- package/src/stories/Footer/Footer.mdx +0 -17
- package/src/stories/Footer/Footer.stories.tsx +0 -15
- package/src/stories/Form/Form.mdx +0 -58
- package/src/stories/Form/Form.stories.tsx +0 -162
- package/src/stories/GetStarted.mdx +0 -57
- package/src/stories/Heading/Heading.stories.tsx +0 -193
- package/src/stories/Hero/Hero.stories.tsx +0 -68
- package/src/stories/Image/Image.stories.tsx +0 -50
- package/src/stories/Link/Link.stories.tsx +0 -81
- package/src/stories/LinkList/LinkList.args.ts +0 -190
- package/src/stories/LinkList/LinkList.stories.tsx +0 -60
- package/src/stories/List/List.stories.tsx +0 -167
- package/src/stories/Loading/Loading.stories.tsx +0 -97
- package/src/stories/LocalNav/LocalNav.mdx +0 -17
- package/src/stories/LocalNav/LocalNav.stories.tsx +0 -15
- package/src/stories/Logo/Logo.stories.tsx +0 -172
- package/src/stories/LogoGrid/LogoGrid.stories.tsx +0 -59
- package/src/stories/Navigation/Navigation.mdx +0 -17
- package/src/stories/Navigation/Navigation.stories.tsx +0 -15
- package/src/stories/Notification/Notification.stories.tsx +0 -187
- package/src/stories/NumberPicker/NumberPicker.stories.tsx +0 -69
- package/src/stories/Pagination/Pagination.stories.tsx +0 -86
- package/src/stories/Profile/Profile.stories.tsx +0 -64
- package/src/stories/Radio/Radio.stories.tsx +0 -232
- package/src/stories/ReadMore/ReadMore.stories.tsx +0 -59
- package/src/stories/RichText/RichText.stories.tsx +0 -63
- package/src/stories/SearchField/SearchField.stories.tsx +0 -91
- package/src/stories/SocialMedia/SocialMedia.stories.tsx +0 -60
- package/src/stories/TableOfContents/TableOfContents.stories.tsx +0 -55
- package/src/stories/Tabs/Tabs.mdx +0 -17
- package/src/stories/Tabs/Tabs.stories.tsx +0 -25
- package/src/stories/Tag/Tag.stories.tsx +0 -130
- package/src/stories/TextInput/TextInput.stories.tsx +0 -100
- package/src/stories/Textarea/Textarea.stories.tsx +0 -147
- package/src/stories/Toggle/Toggle.stories.tsx +0 -99
- package/src/stories/Tooltip/Tooltip.stories.tsx +0 -82
- package/src/stories/Video/Video.stories.tsx +0 -71
- package/src/stories/Welcome.stories.mdx +0 -37
- package/src/stories/assets/code-brackets.svg +0 -1
- package/src/stories/assets/colors.svg +0 -1
- package/src/stories/assets/comments.svg +0 -1
- package/src/stories/assets/direction.svg +0 -1
- package/src/stories/assets/flow.svg +0 -1
- package/src/stories/assets/plugin.svg +0 -1
- package/src/stories/assets/repo.svg +0 -1
- package/src/stories/assets/stackalt.svg +0 -1
- package/src/stories/welcome.scss +0 -133
- package/src/types/forms.args.ts +0 -288
- package/src/types/index.ts +0 -137
- package/src/types/temp.d.ts +0 -9
- package/src/utils/checkArrayDuplicates.ts +0 -3
- package/src/utils/createChainedFunction.ts +0 -31
- package/src/utils/getDefaultDimensionValue.ts +0 -28
- package/src/utils/hoursMinutesSeconds.ts +0 -8
- package/src/utils/index.ts +0 -6
- package/src/utils/transitionEndListener.ts +0 -29
- package/src/utils/triggerBrowserReflow.ts +0 -4
- package/tsconfig.build.json +0 -19
- package/tsconfig.json +0 -8
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { render, screen } from "@testing-library/react";
|
|
2
|
-
import { composeStories } from "@storybook/react";
|
|
3
|
-
import headingArgs from "../components/Heading/Heading.args";
|
|
4
|
-
import * as stories from "../stories/Heading/Heading.stories";
|
|
5
|
-
|
|
6
|
-
const { Heading1, Heading2, Heading3, Heading4, Heading5, Heading6 } =
|
|
7
|
-
composeStories(stories);
|
|
8
|
-
|
|
9
|
-
describe("<Heading>", () => {
|
|
10
|
-
it("Should render `h1` with story text.", () => {
|
|
11
|
-
render(<Heading1 />);
|
|
12
|
-
const headingElement = screen.getByRole("heading", { level: 1 });
|
|
13
|
-
expect(headingElement).not.toBeNull();
|
|
14
|
-
expect(headingElement.textContent).toEqual(headingArgs.heading1.children);
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
it("Should render `h2` with story text.", () => {
|
|
18
|
-
render(<Heading2 />);
|
|
19
|
-
const headingElement = screen.getByRole("heading", { level: 2 });
|
|
20
|
-
expect(headingElement).not.toBeNull();
|
|
21
|
-
expect(headingElement.textContent).toEqual(headingArgs.heading2.children);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it("Should render `h3` with story text.", () => {
|
|
25
|
-
render(<Heading3 />);
|
|
26
|
-
const headingElement = screen.getByRole("heading", { level: 3 });
|
|
27
|
-
expect(headingElement).not.toBeNull();
|
|
28
|
-
expect(headingElement.textContent).toEqual(headingArgs.heading3.children);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it("Should render `h4` with story text.", () => {
|
|
32
|
-
render(<Heading4 />);
|
|
33
|
-
const headingElement = screen.getByRole("heading", { level: 4 });
|
|
34
|
-
expect(headingElement).not.toBeNull();
|
|
35
|
-
expect(headingElement.textContent).toEqual(headingArgs.heading4.children);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it("Should render `h5` with story text.", () => {
|
|
39
|
-
render(<Heading5 />);
|
|
40
|
-
const headingElement = screen.getByRole("heading", { level: 5 });
|
|
41
|
-
expect(headingElement).not.toBeNull();
|
|
42
|
-
expect(headingElement.textContent).toEqual(headingArgs.heading5.children);
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
it("Should render `h6` with story text.", () => {
|
|
46
|
-
render(<Heading6 />);
|
|
47
|
-
const headingElement = screen.getByRole("heading", { level: 6 });
|
|
48
|
-
expect(headingElement).not.toBeNull();
|
|
49
|
-
expect(headingElement.textContent).toEqual(headingArgs.heading6.children);
|
|
50
|
-
});
|
|
51
|
-
});
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { render } from "@testing-library/react";
|
|
2
|
-
import { Image } from "../components/Image";
|
|
3
|
-
import imageArgs from "../components/Image/Image.args";
|
|
4
|
-
|
|
5
|
-
describe("<Image>", () => {
|
|
6
|
-
it("Should render `img` with correct image src", () => {
|
|
7
|
-
const { container } = render(<Image {...imageArgs} />);
|
|
8
|
-
expect(container).not.toBeNull();
|
|
9
|
-
expect(container.querySelector("img")?.getAttribute("src")).toEqual(
|
|
10
|
-
imageArgs.url?.[0].src
|
|
11
|
-
);
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
it("Should render `img` with correct image alt", () => {
|
|
15
|
-
const { container } = render(<Image {...imageArgs} />);
|
|
16
|
-
expect(container).not.toBeNull();
|
|
17
|
-
expect(container.querySelector("img")?.getAttribute("alt")).toEqual(
|
|
18
|
-
imageArgs.alt
|
|
19
|
-
);
|
|
20
|
-
});
|
|
21
|
-
});
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { render } from "@testing-library/react";
|
|
2
|
-
import { LinkList } from "../components/LinkList";
|
|
3
|
-
import linkListArgs from "../components/LinkList/LinkList.args";
|
|
4
|
-
|
|
5
|
-
describe("<LinkList>", () => {
|
|
6
|
-
it("Should render `ul` with some items.", () => {
|
|
7
|
-
const { container } = render(<LinkList {...linkListArgs.basic} />);
|
|
8
|
-
expect(container).not.toBeNull();
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
it("Should render `ul` with `li`s with the `indented` prop containing the class `indented`", () => {
|
|
12
|
-
const { container } = render(<LinkList {...linkListArgs.withindented} />);
|
|
13
|
-
expect(container).not.toBeNull();
|
|
14
|
-
const indentedElement = document.querySelectorAll(".indented");
|
|
15
|
-
expect(indentedElement).not.toEqual([]);
|
|
16
|
-
});
|
|
17
|
-
});
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { render } from "@testing-library/react";
|
|
2
|
-
import { List } from "../components/List";
|
|
3
|
-
import listArgs from "../components/List/List.args";
|
|
4
|
-
|
|
5
|
-
describe("<List>", () => {
|
|
6
|
-
it("Should render `ol` with some items.", () => {
|
|
7
|
-
const { container } = render(<List {...listArgs.ordered} />);
|
|
8
|
-
expect(container).not.toBeNull();
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
it("Should render `ul` with some items.", () => {
|
|
12
|
-
const { container } = render(<List {...listArgs.unordered} />);
|
|
13
|
-
expect(container).not.toBeNull();
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
it("Should render `ul` horizontally with some items.", () => {
|
|
17
|
-
const { container } = render(<List {...listArgs.horizontal} />);
|
|
18
|
-
expect(container).not.toBeNull();
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it("Should render `ul` unstyled with some items.", () => {
|
|
22
|
-
const { container } = render(<List {...listArgs.unstyled} />);
|
|
23
|
-
expect(container).not.toBeNull();
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { render } from "@testing-library/react";
|
|
2
|
-
import { Loading } from "../components/Loading";
|
|
3
|
-
import loadingArgs from "../components/Loading/Loading.args";
|
|
4
|
-
|
|
5
|
-
describe("<Loading>", () => {
|
|
6
|
-
it("Should render `Loading` with correct label from prop label", () => {
|
|
7
|
-
const { container } = render(<Loading {...loadingArgs.loadinglarge} />);
|
|
8
|
-
expect(container.children[0]).not.toBeNull();
|
|
9
|
-
const paragraphElement = document.querySelector(
|
|
10
|
-
'p[class*="--copy"]'
|
|
11
|
-
) as Element;
|
|
12
|
-
expect(paragraphElement).not.toBeNull();
|
|
13
|
-
expect(paragraphElement.textContent).toEqual(
|
|
14
|
-
loadingArgs.loadinglarge.message
|
|
15
|
-
);
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
it("Should render `Loading` with correct class derived from prop status", () => {
|
|
19
|
-
const { container } = render(<Loading {...loadingArgs.loadinglarge} />);
|
|
20
|
-
expect(container.children[0]).not.toBeNull();
|
|
21
|
-
expect(container.children[0].getAttribute("class")).toContain(
|
|
22
|
-
loadingArgs.loadinglarge.status
|
|
23
|
-
);
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
it("Should render `Loading` with correct class derived from prop size", () => {
|
|
27
|
-
const { container } = render(<Loading {...loadingArgs.loadinglarge} />);
|
|
28
|
-
expect(container.children[0]).not.toBeNull();
|
|
29
|
-
expect(container.children[0].getAttribute("class")).toContain(
|
|
30
|
-
loadingArgs.loadinglarge.size
|
|
31
|
-
);
|
|
32
|
-
});
|
|
33
|
-
});
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { render, screen } from "@testing-library/react";
|
|
2
|
-
import userEvent from "@testing-library/user-event";
|
|
3
|
-
import { Notification } from "../components/Notification";
|
|
4
|
-
import notificationArgs from "../components/Notification/Notification.args";
|
|
5
|
-
|
|
6
|
-
describe("<Notification>", () => {
|
|
7
|
-
it("Should render Notification headline with content.", () => {
|
|
8
|
-
const { container } = render(<Notification {...notificationArgs.hascta} />);
|
|
9
|
-
expect(container.children[0]).not.toBeNull();
|
|
10
|
-
const headlineElement = document.querySelector('[class*="--headline"]');
|
|
11
|
-
console.log(headlineElement);
|
|
12
|
-
expect(headlineElement?.textContent).toEqual(
|
|
13
|
-
notificationArgs?.hascta?.headline
|
|
14
|
-
);
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
it("Should render Notification copy with content.", () => {
|
|
18
|
-
const { container } = render(<Notification {...notificationArgs.hascta} />);
|
|
19
|
-
expect(container.children[0]).not.toBeNull();
|
|
20
|
-
const copyElement = document.querySelector('[class*="--copy"]');
|
|
21
|
-
expect(copyElement?.textContent).toEqual(notificationArgs?.hascta?.copy);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it("Should render `button` with correct label from prop closelabel", () => {
|
|
25
|
-
render(<Notification {...notificationArgs.hascta} />);
|
|
26
|
-
const buttonElement = screen.getAllByRole("button");
|
|
27
|
-
expect(buttonElement).not.toBeNull();
|
|
28
|
-
expect(buttonElement[0].textContent).toEqual(
|
|
29
|
-
notificationArgs?.hascta?.closelabel
|
|
30
|
-
);
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it("Should delete the component on click of the button", () => {
|
|
34
|
-
const { container } = render(<Notification {...notificationArgs.hascta} />);
|
|
35
|
-
expect(container.children[0]).not.toBeNull();
|
|
36
|
-
userEvent.click(screen.getByRole("button"));
|
|
37
|
-
expect(container.children[0]).toBeUndefined();
|
|
38
|
-
});
|
|
39
|
-
});
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { render } from "@testing-library/react";
|
|
2
|
-
import { Pagination } from "../components/Pagination";
|
|
3
|
-
import paginationArgs from "../components/Pagination/Pagination.args";
|
|
4
|
-
|
|
5
|
-
describe("<Pagination>", () => {
|
|
6
|
-
it("Pagination link should render with a disable class", () => {
|
|
7
|
-
const { container } = render(
|
|
8
|
-
<Pagination {...paginationArgs.firstDisabled} />
|
|
9
|
-
);
|
|
10
|
-
expect(container.children[0]).not.toBeNull();
|
|
11
|
-
const previousPagination = document.querySelector('a[class*="--disable"]');
|
|
12
|
-
expect(previousPagination).not.toBeNull();
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it("First link should match the args", () => {
|
|
16
|
-
render(<Pagination {...paginationArgs.firstDisabled} />);
|
|
17
|
-
const pagination = document.querySelector('a[class*="--first-page"]');
|
|
18
|
-
expect(pagination).not.toBeNull();
|
|
19
|
-
expect(pagination?.getAttribute("href")).toEqual(
|
|
20
|
-
expect.stringContaining(
|
|
21
|
-
paginationArgs.firstDisabled.firstPageUrl as string
|
|
22
|
-
)
|
|
23
|
-
);
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
it("Previous link should match the args", () => {
|
|
27
|
-
render(<Pagination {...paginationArgs.firstDisabled} />);
|
|
28
|
-
const pagination = document.querySelector('a[class*="--prev-page"]');
|
|
29
|
-
expect(pagination).not.toBeNull();
|
|
30
|
-
expect(pagination?.getAttribute("href")).toEqual(
|
|
31
|
-
expect.stringContaining(
|
|
32
|
-
paginationArgs.firstDisabled.prevPageUrl as string
|
|
33
|
-
)
|
|
34
|
-
);
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
it("Next link should match the args", () => {
|
|
38
|
-
render(<Pagination {...paginationArgs.firstDisabled} />);
|
|
39
|
-
const pagination = document.querySelector('a[class*="--next-page"]');
|
|
40
|
-
expect(pagination).not.toBeNull();
|
|
41
|
-
expect(pagination?.getAttribute("href")).toEqual(
|
|
42
|
-
expect.stringContaining(
|
|
43
|
-
paginationArgs.firstDisabled.nextPageUrl as string
|
|
44
|
-
)
|
|
45
|
-
);
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
it("Last link should match the args", () => {
|
|
49
|
-
render(<Pagination {...paginationArgs.firstDisabled} />);
|
|
50
|
-
const pagination = document.querySelector('a[class*="--last-page"]');
|
|
51
|
-
expect(pagination).not.toBeNull();
|
|
52
|
-
expect(pagination?.getAttribute("href")).toEqual(
|
|
53
|
-
expect.stringContaining(
|
|
54
|
-
paginationArgs.firstDisabled.lastPageUrl as string
|
|
55
|
-
)
|
|
56
|
-
);
|
|
57
|
-
});
|
|
58
|
-
});
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { render } from "@testing-library/react";
|
|
2
|
-
import { Profile } from "../components/Profile";
|
|
3
|
-
import profileArgs from "../components/Profile/Profile.args";
|
|
4
|
-
|
|
5
|
-
describe("<Profile>", () => {
|
|
6
|
-
it("Should render Profile with content from name prop.", () => {
|
|
7
|
-
const { container } = render(<Profile {...profileArgs.basic} />);
|
|
8
|
-
expect(container.children[0]).not.toBeNull();
|
|
9
|
-
const nameElement = document.querySelector('[class*="--name"]');
|
|
10
|
-
expect(nameElement?.textContent).toEqual(profileArgs?.basic?.name);
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
it("Should render Profile with content from avatar prop.", () => {
|
|
14
|
-
const { container } = render(<Profile {...profileArgs.basic} />);
|
|
15
|
-
expect(container.children[0]).not.toBeNull();
|
|
16
|
-
const imgElement = document.querySelector('[class*="--avatar"]');
|
|
17
|
-
expect(imgElement).toHaveAttribute("src", profileArgs?.basic?.avatar);
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it("Should render Profile with content from role prop.", () => {
|
|
21
|
-
const { container } = render(<Profile {...profileArgs.hasrole} />);
|
|
22
|
-
expect(container.children[0]).not.toBeNull();
|
|
23
|
-
const roleElement = document.querySelector('[class*="--role"]');
|
|
24
|
-
expect(roleElement?.textContent).toEqual(profileArgs?.hasrole?.role);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it("Should render Profile with content from description prop.", () => {
|
|
28
|
-
const { container } = render(<Profile {...profileArgs.hasdescription} />);
|
|
29
|
-
expect(container.children[0]).not.toBeNull();
|
|
30
|
-
const descriptionElement = document.querySelector(
|
|
31
|
-
'[class*="--description"]'
|
|
32
|
-
);
|
|
33
|
-
expect(descriptionElement?.textContent).toEqual(
|
|
34
|
-
profileArgs?.hasdescription?.description
|
|
35
|
-
);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it("Should render Profile with content from link prop.", () => {
|
|
39
|
-
const { container } = render(<Profile {...profileArgs.haslink} />);
|
|
40
|
-
expect(container.children[0]).not.toBeNull();
|
|
41
|
-
const linkElement = document.querySelector('[class*="--link"] a');
|
|
42
|
-
expect(linkElement?.textContent).toEqual(profileArgs?.haslink?.link?.label);
|
|
43
|
-
expect(linkElement).toHaveAttribute(
|
|
44
|
-
"href",
|
|
45
|
-
profileArgs?.haslink?.link?.url
|
|
46
|
-
);
|
|
47
|
-
});
|
|
48
|
-
});
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { render, screen } from "@testing-library/react";
|
|
2
|
-
import userEvent from "@testing-library/user-event";
|
|
3
|
-
import { ReadMore } from "../components/ReadMore";
|
|
4
|
-
import readMoreArgs from "../components/ReadMore/ReadMore.args";
|
|
5
|
-
|
|
6
|
-
describe("<ReadMore>", () => {
|
|
7
|
-
it("Should render RichText `div` with content.", () => {
|
|
8
|
-
const { container } = render(<ReadMore {...readMoreArgs.base} />);
|
|
9
|
-
expect(container.children[0]).not.toBeNull();
|
|
10
|
-
const richTextElement = document.querySelector('div[class*="--richtext"]');
|
|
11
|
-
const excerpt = new DOMParser().parseFromString(
|
|
12
|
-
readMoreArgs.base.excerpt,
|
|
13
|
-
"text/html"
|
|
14
|
-
).documentElement.textContent;
|
|
15
|
-
expect(richTextElement?.textContent).toEqual(excerpt);
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
it("Should render `button` with correct label from prop buttonlabel", () => {
|
|
19
|
-
render(<ReadMore {...readMoreArgs.base} />);
|
|
20
|
-
const buttonElement = screen.getAllByRole("button");
|
|
21
|
-
expect(buttonElement).not.toBeNull();
|
|
22
|
-
expect(buttonElement[0].textContent).toEqual(
|
|
23
|
-
readMoreArgs?.base?.buttonlabel?.closed
|
|
24
|
-
);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it("Should change contents of RichText `div` with new content.", () => {
|
|
28
|
-
render(<ReadMore {...readMoreArgs.base} />);
|
|
29
|
-
const richTextElement = document.querySelector(
|
|
30
|
-
'div[class*="--richtext"]'
|
|
31
|
-
) as Element;
|
|
32
|
-
const fulltext = new DOMParser().parseFromString(
|
|
33
|
-
readMoreArgs.open.fulltext,
|
|
34
|
-
"text/html"
|
|
35
|
-
).documentElement.textContent;
|
|
36
|
-
userEvent.click(
|
|
37
|
-
screen.getByText(readMoreArgs?.base?.buttonlabel?.closed as string, {
|
|
38
|
-
selector: "button",
|
|
39
|
-
})
|
|
40
|
-
);
|
|
41
|
-
expect(richTextElement.textContent).toEqual(fulltext);
|
|
42
|
-
});
|
|
43
|
-
});
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { render } from "@testing-library/react";
|
|
2
|
-
import { RichText } from "../components/RichText";
|
|
3
|
-
import richTextArgs from "../components/RichText/richText.args";
|
|
4
|
-
|
|
5
|
-
describe("<RichText>", () => {
|
|
6
|
-
it("Should render `div` with content.", () => {
|
|
7
|
-
const { container } = render(<RichText {...richTextArgs.richtext} />);
|
|
8
|
-
// Parse the content as a domstring and get the text content
|
|
9
|
-
const textContent = new DOMParser().parseFromString(
|
|
10
|
-
richTextArgs.richtext.content,
|
|
11
|
-
"text/html"
|
|
12
|
-
).documentElement.textContent;
|
|
13
|
-
expect(container.children[0]).not.toBeNull();
|
|
14
|
-
expect(container.children[0].textContent).toEqual(textContent);
|
|
15
|
-
});
|
|
16
|
-
});
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { fireEvent, render, screen } from "@testing-library/react";
|
|
2
|
-
import { SearchField } from "../components/SearchField";
|
|
3
|
-
import searchFieldArgs from "../components/SearchField/SearchField.args";
|
|
4
|
-
|
|
5
|
-
describe("<SearchField>", () => {
|
|
6
|
-
it("Should render `search field` with correct label from prop input.placeholder", () => {
|
|
7
|
-
const { container } = render(
|
|
8
|
-
<SearchField {...searchFieldArgs.searchfield} />
|
|
9
|
-
);
|
|
10
|
-
expect(container.children[0]).not.toBeNull();
|
|
11
|
-
const inputElement = screen.getByPlaceholderText(
|
|
12
|
-
searchFieldArgs.searchfield.input?.placeholder as string
|
|
13
|
-
);
|
|
14
|
-
expect(inputElement).not.toBeNull();
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
it("Should render `search field input` with disabled attribute", () => {
|
|
18
|
-
const { container } = render(
|
|
19
|
-
<SearchField {...searchFieldArgs.searchfielddisabled} />
|
|
20
|
-
);
|
|
21
|
-
expect(container.children[0]).not.toBeNull();
|
|
22
|
-
const inputElement = screen.getByPlaceholderText(
|
|
23
|
-
searchFieldArgs.searchfielddisabled.input?.placeholder as string
|
|
24
|
-
);
|
|
25
|
-
expect(inputElement).toHaveAttribute("disabled", "");
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it('calls "callback" prop on button click', () => {
|
|
29
|
-
const onClick = jest.fn();
|
|
30
|
-
render(<SearchField {...searchFieldArgs.searchfield} callback={onClick} />);
|
|
31
|
-
const buttonElement = screen.getAllByRole("button");
|
|
32
|
-
fireEvent.click(buttonElement[0]);
|
|
33
|
-
expect(onClick).toHaveBeenCalled();
|
|
34
|
-
});
|
|
35
|
-
});
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { render } from "@testing-library/react";
|
|
2
|
-
import { TableOfContents } from "../components/TableOfContents";
|
|
3
|
-
import tableOfContentsArgs from "../components/TableOfContents/TableOfContents.args";
|
|
4
|
-
|
|
5
|
-
describe("<TableOfContents>", () => {
|
|
6
|
-
it("Should render `ul` with some items.", () => {
|
|
7
|
-
const { container } = render(
|
|
8
|
-
<TableOfContents {...tableOfContentsArgs.toc} />
|
|
9
|
-
);
|
|
10
|
-
expect(container).not.toBeNull();
|
|
11
|
-
});
|
|
12
|
-
});
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { render } from "@testing-library/react";
|
|
2
|
-
import { TagSet } from "../components/Tag";
|
|
3
|
-
import tagSetArgs from "../components/Tag/TagSet.args";
|
|
4
|
-
|
|
5
|
-
describe("<TagSet>", () => {
|
|
6
|
-
it("Should render `button` with correct class name from type prop", () => {
|
|
7
|
-
const { container } = render(<TagSet {...tagSetArgs.tag} />);
|
|
8
|
-
expect(container).not.toBeNull();
|
|
9
|
-
});
|
|
10
|
-
});
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { AccordionProps } from "./Accordion.props";
|
|
2
|
-
|
|
3
|
-
const large: AccordionProps = {
|
|
4
|
-
onButtonClick: (e) => {
|
|
5
|
-
console.log(e.target);
|
|
6
|
-
},
|
|
7
|
-
allowMultipleExpanded: true,
|
|
8
|
-
defaultAccordionsExpanded: ["l1", "l2"],
|
|
9
|
-
children: undefined,
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Sample prop definitions for Accordions's enumerable properties (imported in stories and tests).
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
export { large };
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Dispatch, MouseEvent, ReactElement, SetStateAction } from "react";
|
|
2
|
-
export { default as AccordionItem } from "./AccordionItem";
|
|
3
|
-
import { getUpdatedItems } from "@ilo-org/utils";
|
|
4
|
-
import { AccordionItemProps } from "./AccordionItem.props";
|
|
5
|
-
|
|
6
|
-
export interface AccordionProps {
|
|
7
|
-
/**
|
|
8
|
-
* Specify the content of your Accordion.
|
|
9
|
-
*/
|
|
10
|
-
children?:
|
|
11
|
-
| ReactElement<AccordionItemProps>
|
|
12
|
-
| Array<ReactElement<AccordionItemProps>>;
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Callback to onButtonClick event;
|
|
16
|
-
*/
|
|
17
|
-
onButtonClick?: (e: MouseEvent<HTMLButtonElement>, i: any) => void;
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Allow multiple accordions to be expanded at once, default value is false
|
|
21
|
-
*/
|
|
22
|
-
allowMultipleExpanded?: boolean;
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Default accordions expanded on first load
|
|
26
|
-
*/
|
|
27
|
-
defaultAccordionsExpanded?: string[];
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Specify an optional className to be added to your accordion.
|
|
31
|
-
*/
|
|
32
|
-
className?: string;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export interface AccordionContextProps {
|
|
36
|
-
activeItems: string[];
|
|
37
|
-
getUpdatedItems: typeof getUpdatedItems;
|
|
38
|
-
setActiveItems: Dispatch<SetStateAction<string[]>>;
|
|
39
|
-
allowMultipleExpanded: boolean;
|
|
40
|
-
onButtonClick?: (e: MouseEvent<HTMLButtonElement>, i: any) => void;
|
|
41
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { getUpdatedItems } from "@ilo-org/utils";
|
|
2
|
-
import classNames from "classnames";
|
|
3
|
-
import { Children, FC, ReactElement, useEffect, useState } from "react";
|
|
4
|
-
import useGlobalSettings from "../../hooks/useGlobalSettings";
|
|
5
|
-
import { checkArrayDuplicates } from "../../utils/checkArrayDuplicates";
|
|
6
|
-
import { AccordionProps } from "./Accordion.props";
|
|
7
|
-
import { AccordionContext } from "./AccordionCtx";
|
|
8
|
-
|
|
9
|
-
const Accordion: FC<AccordionProps> = ({
|
|
10
|
-
children,
|
|
11
|
-
allowMultipleExpanded = false,
|
|
12
|
-
onButtonClick,
|
|
13
|
-
defaultAccordionsExpanded = [],
|
|
14
|
-
className,
|
|
15
|
-
}) => {
|
|
16
|
-
const { prefix } = useGlobalSettings();
|
|
17
|
-
const baseClass = `${prefix}--accordion`;
|
|
18
|
-
const [activeItems, setActiveItems] = useState<string[]>([]);
|
|
19
|
-
|
|
20
|
-
const accordionClasses = classNames(className, {
|
|
21
|
-
[baseClass]: true,
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
const defaultAccordionsExpandedString = JSON.stringify(
|
|
25
|
-
defaultAccordionsExpanded
|
|
26
|
-
);
|
|
27
|
-
|
|
28
|
-
useEffect(() => {
|
|
29
|
-
const expandedOnLoad = allowMultipleExpanded
|
|
30
|
-
? defaultAccordionsExpanded
|
|
31
|
-
: defaultAccordionsExpanded.length > 0
|
|
32
|
-
? [defaultAccordionsExpanded[0]]
|
|
33
|
-
: defaultAccordionsExpanded;
|
|
34
|
-
setActiveItems(expandedOnLoad);
|
|
35
|
-
}, [defaultAccordionsExpandedString, allowMultipleExpanded]); //eslint-disable-line react-hooks/exhaustive-deps
|
|
36
|
-
|
|
37
|
-
if (children) {
|
|
38
|
-
const ids: string[] = [];
|
|
39
|
-
Children.forEach(children, (child: ReactElement) => {
|
|
40
|
-
ids.push(child.props.id);
|
|
41
|
-
});
|
|
42
|
-
if (checkArrayDuplicates(ids)) {
|
|
43
|
-
console.warn("Warning: Accordion items must have unique ids.");
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return (
|
|
48
|
-
<AccordionContext.Provider
|
|
49
|
-
value={{
|
|
50
|
-
activeItems,
|
|
51
|
-
setActiveItems,
|
|
52
|
-
getUpdatedItems,
|
|
53
|
-
allowMultipleExpanded,
|
|
54
|
-
onButtonClick,
|
|
55
|
-
}}
|
|
56
|
-
>
|
|
57
|
-
<ul className={accordionClasses}>{children}</ul>
|
|
58
|
-
</AccordionContext.Provider>
|
|
59
|
-
);
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
export default Accordion;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from "react";
|
|
2
|
-
|
|
3
|
-
export default interface AccordionButtonProps {
|
|
4
|
-
/**
|
|
5
|
-
* Specify the content of your Button.
|
|
6
|
-
*/
|
|
7
|
-
children: ReactNode;
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Specify an optional className to be added to your Button.
|
|
11
|
-
*/
|
|
12
|
-
className?: string;
|
|
13
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import classNames from "classnames";
|
|
2
|
-
import { FC, MouseEvent, useContext } from "react";
|
|
3
|
-
import useGlobalSettings from "../../hooks/useGlobalSettings";
|
|
4
|
-
import { default as AccordionButtonProps } from "./AccordionButton.props";
|
|
5
|
-
import { AccordionContext, AccordionItemContext } from "./AccordionCtx";
|
|
6
|
-
|
|
7
|
-
const AccordionButton: FC<AccordionButtonProps> = ({
|
|
8
|
-
children,
|
|
9
|
-
className,
|
|
10
|
-
...rest
|
|
11
|
-
}) => {
|
|
12
|
-
const { prefix } = useGlobalSettings();
|
|
13
|
-
const baseClass = `${prefix}--accordion--button`;
|
|
14
|
-
|
|
15
|
-
const {
|
|
16
|
-
activeItems,
|
|
17
|
-
setActiveItems,
|
|
18
|
-
getUpdatedItems,
|
|
19
|
-
allowMultipleExpanded,
|
|
20
|
-
onButtonClick,
|
|
21
|
-
} = useContext(AccordionContext);
|
|
22
|
-
const { id } = useContext(AccordionItemContext);
|
|
23
|
-
const open = activeItems.indexOf(id) > -1;
|
|
24
|
-
|
|
25
|
-
const accordionButtonClasses = classNames(className, {
|
|
26
|
-
[baseClass]: true,
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* On click, get id of clicked item, and set that item in state to 'open', all others to 'closed'
|
|
31
|
-
*/
|
|
32
|
-
const handleClick = (e: MouseEvent<HTMLButtonElement>, id: string) => {
|
|
33
|
-
setActiveItems(
|
|
34
|
-
getUpdatedItems({ id, itemStatuses: activeItems, allowMultipleExpanded })
|
|
35
|
-
);
|
|
36
|
-
if (onButtonClick) {
|
|
37
|
-
onButtonClick(e, id);
|
|
38
|
-
}
|
|
39
|
-
e.currentTarget.blur();
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
return (
|
|
43
|
-
<div className={`${prefix}--h3`}>
|
|
44
|
-
<button
|
|
45
|
-
className={accordionButtonClasses}
|
|
46
|
-
aria-expanded={open}
|
|
47
|
-
onClick={(e) => handleClick(e, id)}
|
|
48
|
-
aria-controls={`panel-${id}`}
|
|
49
|
-
id={`button-${id}`}
|
|
50
|
-
{...rest}
|
|
51
|
-
>
|
|
52
|
-
{children}
|
|
53
|
-
</button>
|
|
54
|
-
</div>
|
|
55
|
-
);
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
export default AccordionButton;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { createContext } from "react";
|
|
2
|
-
import { AccordionContextProps } from "./Accordion.props";
|
|
3
|
-
import { AccordionItemContextProps } from "./AccordionItem.props";
|
|
4
|
-
|
|
5
|
-
export const AccordionContext = createContext({} as AccordionContextProps);
|
|
6
|
-
|
|
7
|
-
export const AccordionItemContext = createContext(
|
|
8
|
-
{} as AccordionItemContextProps
|
|
9
|
-
);
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from "react";
|
|
2
|
-
|
|
3
|
-
export interface AccordionItemContextProps {
|
|
4
|
-
/**
|
|
5
|
-
* The accordion item's unique id.
|
|
6
|
-
*/
|
|
7
|
-
id: string;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export interface AccordionItemProps {
|
|
11
|
-
/**
|
|
12
|
-
* Specify the id of the accordion item.
|
|
13
|
-
*/
|
|
14
|
-
id: string;
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Specify the content of your Button.
|
|
18
|
-
*/
|
|
19
|
-
children: ReactNode;
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Specify an optional className to be added to your Button.
|
|
23
|
-
*/
|
|
24
|
-
className?: string;
|
|
25
|
-
}
|