@dhasdk/simple-ui 1.0.7 → 1.0.8
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/.babelrc +12 -0
- package/.storybook/main.ts +35 -0
- package/.storybook/preview.ts +4 -0
- package/BAKpostcss.config.jsBAK +15 -0
- package/BAKtailwind.config.mjsBAK +99 -0
- package/README.md +464 -16
- package/coverage/storybook/coverage-storybook.json +32411 -0
- package/coverage/storybook/lcov-report/Accordion.tsx.html +805 -0
- package/coverage/storybook/lcov-report/Badge.tsx.html +346 -0
- package/coverage/storybook/lcov-report/Breadcrumbs.tsx.html +742 -0
- package/coverage/storybook/lcov-report/Button.tsx.html +448 -0
- package/coverage/storybook/lcov-report/ButtonGroup.tsx.html +403 -0
- package/coverage/storybook/lcov-report/Card.tsx.html +292 -0
- package/coverage/storybook/lcov-report/CharacterCounter.tsx.html +253 -0
- package/coverage/storybook/lcov-report/CheckBox.tsx.html +1555 -0
- package/coverage/storybook/lcov-report/DatePicker.tsx.html +826 -0
- package/coverage/storybook/lcov-report/Input.tsx.html +1012 -0
- package/coverage/storybook/lcov-report/List.tsx.html +364 -0
- package/coverage/storybook/lcov-report/Modal.tsx.html +745 -0
- package/coverage/storybook/lcov-report/Pill.tsx.html +358 -0
- package/coverage/storybook/lcov-report/Search.tsx.html +997 -0
- package/coverage/storybook/lcov-report/SearchContent.tsx.html +235 -0
- package/coverage/storybook/lcov-report/SectionHeader.tsx.html +358 -0
- package/coverage/storybook/lcov-report/Select.tsx.html +1012 -0
- package/coverage/storybook/lcov-report/Shield.tsx.html +802 -0
- package/coverage/storybook/lcov-report/SideBarNav.tsx.html +490 -0
- package/coverage/storybook/lcov-report/Skeleton.tsx.html +394 -0
- package/coverage/storybook/lcov-report/Slider.tsx.html +385 -0
- package/coverage/storybook/lcov-report/Status.tsx.html +322 -0
- package/coverage/storybook/lcov-report/Tabs.tsx.html +610 -0
- package/coverage/storybook/lcov-report/Toggle.tsx.html +373 -0
- package/coverage/storybook/lcov-report/Tooltip.tsx.html +496 -0
- package/coverage/storybook/lcov-report/base.css +224 -0
- package/coverage/storybook/lcov-report/block-navigation.js +87 -0
- package/coverage/storybook/lcov-report/favicon.png +0 -0
- package/coverage/storybook/lcov-report/index.html +476 -0
- package/coverage/storybook/lcov-report/prettify.css +1 -0
- package/coverage/storybook/lcov-report/prettify.js +2 -0
- package/coverage/storybook/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/storybook/lcov-report/sorter.js +196 -0
- package/coverage/storybook/lcov.info +2312 -0
- package/dist/README.md +1815 -0
- package/eslint.config.mjs +13 -0
- package/package.json +6 -7
- package/project.json +11 -0
- package/src/assets/img/Frame.svg +5 -0
- package/src/assets/img/backArrowRight.svg +10 -0
- package/src/assets/img/bc-separator.png +0 -0
- package/src/assets/img/calendar.png +0 -0
- package/src/assets/img/calendar.svg +4 -0
- package/src/assets/img/check.svg +5 -0
- package/src/assets/img/check_box.svg +10 -0
- package/src/assets/img/check_box_empty.svg +10 -0
- package/src/assets/img/check_box_fill.svg +10 -0
- package/src/assets/img/check_box_fill_empty.svg +10 -0
- package/src/assets/img/chevron-down-white.svg +2 -0
- package/src/assets/img/chevron-down.svg +2 -0
- package/src/assets/img/chevron-left.svg +1 -0
- package/src/assets/img/chevron-right-light.svg +4 -0
- package/src/assets/img/chevron-right.svg +3 -0
- package/src/assets/img/chevron-up-white.svg +1 -0
- package/src/assets/img/chevron-up.svg +1 -0
- package/src/assets/img/clock.svg +6 -0
- package/src/assets/img/close.svg +1 -0
- package/src/assets/img/close2.svg +6 -0
- package/src/assets/img/closeModal.svg +10 -0
- package/src/assets/img/close_icon_dark.svg +10 -0
- package/src/assets/img/close_small.svg +3 -0
- package/src/assets/img/emergency_home.svg +10 -0
- package/src/assets/img/first-aid-kit.svg +7 -0
- package/src/assets/img/heartbeat.svg +4 -0
- package/src/assets/img/home-gray.svg +3 -0
- package/src/assets/img/home.svg +3 -0
- package/src/assets/img/hospital.jpg +0 -0
- package/src/assets/img/indeterminate_check_box.svg +10 -0
- package/src/assets/img/indeterminate_check_box_fill.svg +10 -0
- package/src/assets/img/info_24_ 1d4ed8.svg +3 -0
- package/src/assets/img/info_24_ 2c6441.svg +3 -0
- package/src/assets/img/marker_check_by_default.svg +10 -0
- package/src/assets/img/marker_check_by_default_fill.svg +10 -0
- package/src/assets/img/minus-accordion.svg +5 -0
- package/src/assets/img/minus.svg +3 -0
- package/src/assets/img/open.svg +1 -0
- package/src/assets/img/pill-white.svg +7 -0
- package/src/assets/img/pill.svg +5 -0
- package/src/assets/img/plus-accordion.svg +5 -0
- package/src/assets/img/plus.svg +4 -0
- package/src/assets/img/prescription.svg +6 -0
- package/src/assets/img/search.svg +10 -0
- package/src/assets/img/search_icon_light.svg +10 -0
- package/src/assets/img/separator.svg +3 -0
- package/src/assets/img/stethoscope-white.svg +8 -0
- package/src/assets/img/stethoscope.svg +8 -0
- package/src/assets/img/thumb_up.svg +10 -0
- package/src/assets/img/vector.svg +3 -0
- package/src/assets/img/warning-badge-disabled.svg +11 -0
- package/src/assets/img/warning-badge-green.svg +11 -0
- package/src/assets/img/warning-badge-red.svg +11 -0
- package/src/assets/img/warning-badge-yellow.svg +11 -0
- package/src/assets/img/warning.svg +10 -0
- package/src/global.d.ts +13 -0
- package/{index.d.ts → src/index.ts} +13 -5
- package/src/lib/Accordian--Accordian.stories.tsx +312 -0
- package/src/lib/Accordion.spec.tsx +384 -0
- package/src/lib/Accordion.tsx +240 -0
- package/src/lib/AppointmentPicker.spec.tsx +138 -0
- package/src/lib/AppointmentPicker.tsx +97 -0
- package/src/lib/Badge--Badge.stories.tsx +60 -0
- package/src/lib/Badge.spec.tsx +70 -0
- package/src/lib/Badge.tsx +87 -0
- package/src/lib/Breadcrumbs-Breadcrumbs.stories.tsx +114 -0
- package/src/lib/Breadcrumbs.spec.tsx +218 -0
- package/src/lib/Breadcrumbs.tsx +219 -0
- package/src/lib/Button--Button.stories.tsx +220 -0
- package/src/lib/Button.spec.tsx +241 -0
- package/src/lib/Button.tsx +121 -0
- package/src/lib/ButtonGroup--ButtonGroup.stories.tsx +129 -0
- package/src/lib/ButtonGroup.spec.tsx +89 -0
- package/src/lib/ButtonGroup.tsx +107 -0
- package/src/lib/Card--Card.stories.tsx +113 -0
- package/src/lib/Card.spec.tsx +112 -0
- package/src/lib/Card.tsx +69 -0
- package/src/lib/CharacterCounter--CharacterCounter.stories.tsx +169 -0
- package/src/lib/CharacterCounter.spec.tsx +123 -0
- package/src/lib/CharacterCounter.tsx +56 -0
- package/src/lib/CheckBox--CheckBox.stories.tsx +107 -0
- package/src/lib/CheckBox.spec.tsx +412 -0
- package/src/lib/CheckBox.tsx +491 -0
- package/src/lib/DatePicker--DatePicker.stories.tsx +228 -0
- package/src/lib/DatePicker.spec.tsx +424 -0
- package/src/lib/DatePicker.tsx +247 -0
- package/src/lib/Input--Input.stories.tsx +449 -0
- package/src/lib/Input.spec.tsx +281 -0
- package/src/lib/Input.tsx +309 -0
- package/src/lib/List--List.stories.tsx +157 -0
- package/src/lib/List.spec.tsx +211 -0
- package/src/lib/List.tsx +93 -0
- package/src/lib/Modal--Modal.stories.tsx +454 -0
- package/src/lib/Modal.spec.tsx +202 -0
- package/src/lib/Modal.tsx +220 -0
- package/src/lib/Pill--Pill.stories.tsx +98 -0
- package/src/lib/Pill.spec.tsx +103 -0
- package/src/lib/Pill.tsx +91 -0
- package/src/lib/ProgressBar.spec.tsx +106 -0
- package/src/lib/ProgressBar.tsx +112 -0
- package/src/lib/RadioGroup.spec.tsx +84 -0
- package/src/lib/RadioGroup.tsx +74 -0
- package/src/lib/RadioIcon.tsx +13 -0
- package/src/lib/Search--Search.stories.tsx +67 -0
- package/src/lib/Search.spec.tsx +182 -0
- package/src/lib/Search.tsx +304 -0
- package/src/lib/SearchContent.tsx +51 -0
- package/src/lib/SectionHeader--SectionHeader.stories.tsx +98 -0
- package/src/lib/SectionHeader.spec.tsx +60 -0
- package/src/lib/SectionHeader.tsx +91 -0
- package/src/lib/Select--Select.stories.tsx +387 -0
- package/src/lib/Select.spec.tsx +493 -0
- package/src/lib/Select.tsx +311 -0
- package/src/lib/Shield--Shield.stories.tsx +196 -0
- package/src/lib/Shield.spec.tsx +275 -0
- package/src/lib/Shield.tsx +239 -0
- package/src/lib/SideBarNav--SideBarNav.stories.tsx +136 -0
- package/src/lib/SideBarNav.spec.tsx +178 -0
- package/src/lib/SideBarNav.tsx +135 -0
- package/src/lib/Skeleton--Skeleton.stories.tsx +77 -0
- package/src/lib/Skeleton.module.css +16 -0
- package/src/lib/Skeleton.spec.tsx +83 -0
- package/src/lib/Skeleton.tsx +103 -0
- package/src/lib/SkipLink.spec.tsx +76 -0
- package/src/lib/SkipLink.tsx +48 -0
- package/src/lib/Slider--Slider.stories.tsx +108 -0
- package/src/lib/Slider.module.css +109 -0
- package/src/lib/Slider.spec.tsx +67 -0
- package/src/lib/Slider.tsx +101 -0
- package/src/lib/Status--Status.stories.tsx +93 -0
- package/src/lib/Status.spec.tsx +118 -0
- package/src/lib/Status.tsx +79 -0
- package/src/lib/Tabs--Tabs.stories.tsx +294 -0
- package/src/lib/Tabs.spec.tsx +249 -0
- package/src/lib/Tabs.tsx +188 -0
- package/src/lib/Tester.spec.tsx +17 -0
- package/src/lib/Toggle--Toggle.stories.tsx +162 -0
- package/src/lib/Toggle.spec.tsx +122 -0
- package/src/lib/Toggle.tsx +96 -0
- package/src/lib/Tooltip--Tooltip.stories.tsx +315 -0
- package/src/lib/Tooltip.spec.tsx +307 -0
- package/src/lib/Tooltip.tsx +137 -0
- package/src/lib/bak-simple-ui.stories.tsx-bak +24 -0
- package/src/styles.css +190 -0
- package/tsconfig.json +25 -0
- package/tsconfig.lib.json +42 -0
- package/tsconfig.spec.json +29 -0
- package/tsconfig.storybook.json +36 -0
- package/vite.config.mts +87 -0
- package/vitest.setup.ts +12 -0
- package/index.css +0 -1
- package/index.js +0 -35
- package/index.mjs +0 -4981
- package/lib/Accordion.d.ts +0 -36
- package/lib/AppointmentPicker.d.ts +0 -21
- package/lib/Badge.d.ts +0 -11
- package/lib/Breadcrumbs.d.ts +0 -13
- package/lib/Button.d.ts +0 -15
- package/lib/ButtonGroup.d.ts +0 -8
- package/lib/Card.d.ts +0 -11
- package/lib/CharacterCounter.d.ts +0 -11
- package/lib/CheckBox.d.ts +0 -30
- package/lib/DatePicker.d.ts +0 -7
- package/lib/Input.d.ts +0 -16
- package/lib/List.d.ts +0 -22
- package/lib/Modal.d.ts +0 -18
- package/lib/Pill.d.ts +0 -13
- package/lib/ProgressBar.d.ts +0 -19
- package/lib/RadioGroup.d.ts +0 -15
- package/lib/Search.d.ts +0 -26
- package/lib/SearchContent.d.ts +0 -6
- package/lib/SectionHeader.d.ts +0 -18
- package/lib/Select.d.ts +0 -19
- package/lib/Shield.d.ts +0 -12
- package/lib/SideBarNav.d.ts +0 -21
- package/lib/Skeleton.d.ts +0 -15
- package/lib/SkipLink.d.ts +0 -22
- package/lib/Slider.d.ts +0 -14
- package/lib/Status.d.ts +0 -10
- package/lib/Tabs.d.ts +0 -23
- package/lib/Toggle.d.ts +0 -11
- package/lib/Tooltip.d.ts +0 -14
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import './styles.css';
|
|
1
2
|
export { Accordion, AccordionParent } from './lib/Accordion';
|
|
2
3
|
export type { AccordionProps, AccordionParentProps } from './lib/Accordion';
|
|
3
4
|
export { AppointmentPicker } from './lib/AppointmentPicker';
|
|
@@ -12,19 +13,19 @@ export { Card } from './lib/Card';
|
|
|
12
13
|
export { CharacterCounter } from './lib/CharacterCounter';
|
|
13
14
|
export type { CharacterCounterProps } from './lib/CharacterCounter';
|
|
14
15
|
export { CheckBox, CheckBoxGroup } from './lib/CheckBox';
|
|
15
|
-
export type { CheckBoxProps, CheckBoxGroupProps } from './lib/CheckBox'
|
|
16
|
+
export type { CheckBoxProps, CheckBoxGroupProps } from './lib/CheckBox'
|
|
16
17
|
export { DatePicker } from './lib/DatePicker';
|
|
17
18
|
export type { DatePickerProps } from './lib/DatePicker';
|
|
18
19
|
export { IconPosition } from './lib/Tabs';
|
|
19
20
|
export { Input } from './lib/Input';
|
|
20
|
-
export { List, ListItem } from
|
|
21
|
+
export { List, ListItem } from './lib/List';
|
|
21
22
|
export { Modal } from './lib/Modal';
|
|
22
23
|
export { Pill } from './lib/Pill';
|
|
23
24
|
export type { PillProps } from './lib/Pill';
|
|
24
25
|
export { ProgressBar } from './lib/ProgressBar';
|
|
25
26
|
export type { ProgressBarProps } from './lib/ProgressBar';
|
|
26
|
-
export { RadioGroup } from
|
|
27
|
-
export type { RadioOption } from './lib/RadioGroup'
|
|
27
|
+
export { RadioGroup } from './lib/RadioGroup';
|
|
28
|
+
export type { RadioOption } from './lib/RadioGroup'
|
|
28
29
|
export { Search } from './lib/Search';
|
|
29
30
|
export type { DataSearchResults, SearchDataItem, SearchProps } from './lib/Search';
|
|
30
31
|
export { SectionHeader } from './lib/SectionHeader';
|
|
@@ -32,7 +33,7 @@ export type { SectionHeaderProps } from './lib/SectionHeader';
|
|
|
32
33
|
export { Select } from './lib/Select';
|
|
33
34
|
export type { SelectProps } from './lib/Select';
|
|
34
35
|
export { Shield } from './lib/Shield';
|
|
35
|
-
export type { ShieldProps } from './lib/Shield'
|
|
36
|
+
export type { ShieldProps } from './lib/Shield'
|
|
36
37
|
export { SideBarNav } from './lib/SideBarNav';
|
|
37
38
|
export { Skeleton, SkelCircle, SkelLine, SkelRow, SkelSection } from './lib/Skeleton';
|
|
38
39
|
export type { SkeletonProps, SkelProps } from './lib/Skeleton';
|
|
@@ -46,3 +47,10 @@ export { Toggle } from './lib/Toggle';
|
|
|
46
47
|
export type { ToggleProps } from './lib/Toggle';
|
|
47
48
|
export { Tooltip, TooltipContent } from './lib/Tooltip';
|
|
48
49
|
export type { TooltipProps, TooltipContentProps } from './lib/Tooltip';
|
|
50
|
+
|
|
51
|
+
// export * from './lib/Card';
|
|
52
|
+
// export * from './lib/Badge';
|
|
53
|
+
// export * from './lib/Button';
|
|
54
|
+
// export * from './lib/Input';
|
|
55
|
+
// export * from './lib/Select';
|
|
56
|
+
// export * from './lib/Toggle';
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
// Badge.stories.tsx
|
|
2
|
+
|
|
3
|
+
import { Meta, StoryContext} from '@storybook/react';
|
|
4
|
+
import { expect, fn, userEvent, within, waitFor } from 'storybook/test';
|
|
5
|
+
import { screen } from 'storybook/test'
|
|
6
|
+
import { Accordion, AccordionProps, AccordionParent, AccordionParentProps } from './Accordion';
|
|
7
|
+
import open from '../assets/img/open.svg';
|
|
8
|
+
import close from '../assets/img/close.svg';
|
|
9
|
+
|
|
10
|
+
export default {
|
|
11
|
+
title: 'Components/Accordion',
|
|
12
|
+
component: Accordion,
|
|
13
|
+
argTypes: {
|
|
14
|
+
variant: {
|
|
15
|
+
control: 'select',
|
|
16
|
+
options: ['default', 'blank', 'outline']
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
parameters: {
|
|
20
|
+
backgrounds: { default: 'light' },
|
|
21
|
+
// viewport: { defaultViewport: 'full' },
|
|
22
|
+
// viewport: { defaultViewport: 'full' },
|
|
23
|
+
|
|
24
|
+
},
|
|
25
|
+
} as Meta<typeof Accordion>;
|
|
26
|
+
|
|
27
|
+
// Default Accordion story
|
|
28
|
+
export const AccordionDefault = ({variant, label, children}: AccordionProps) => {
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<Accordion variant='default' label='Content Example'>
|
|
32
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
33
|
+
</Accordion>
|
|
34
|
+
)
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
// Default Accordion story
|
|
38
|
+
export const useBackgroundFalse = ({variant, label, children}: AccordionProps) => {
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<Accordion variant='default' label='Content Example' useBackground={false}>
|
|
42
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
43
|
+
</Accordion>
|
|
44
|
+
)
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// Default Accordion story
|
|
48
|
+
export const hrFalse = ({variant, label, children}: AccordionProps) => {
|
|
49
|
+
|
|
50
|
+
return (
|
|
51
|
+
<Accordion variant='default' label='Content Example' hr={false}>
|
|
52
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
53
|
+
</Accordion>
|
|
54
|
+
)
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
// Default Accordion story
|
|
58
|
+
export const AccordionParentDefault = ({variant, label, children}: AccordionProps) => {
|
|
59
|
+
|
|
60
|
+
return (
|
|
61
|
+
<AccordionParent variant='default' chevron
|
|
62
|
+
classNameChildHeading='bg-blue-300'
|
|
63
|
+
classNameChildContent='bg-blue-100 ps-6 pt-2'
|
|
64
|
+
hr = {false}
|
|
65
|
+
>
|
|
66
|
+
<Accordion label='Content Example'>
|
|
67
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
68
|
+
</Accordion>
|
|
69
|
+
<Accordion label='Second Example'>
|
|
70
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
71
|
+
</Accordion>
|
|
72
|
+
</AccordionParent>
|
|
73
|
+
)
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
// play:async ({ canvasElement }: StoryContext) => {
|
|
77
|
+
AccordionParentDefault.play = async ({ canvasElement }: StoryContext) => {
|
|
78
|
+
const canvas = within(canvasElement);
|
|
79
|
+
|
|
80
|
+
// Find both accordion buttons
|
|
81
|
+
const firstAccordionButton = await canvas.findByRole('button', { name: /content example/i });
|
|
82
|
+
const secondAccordionButton = await canvas.findByRole('button', { name: /second example/i });
|
|
83
|
+
|
|
84
|
+
// Click the first accordion button to open it
|
|
85
|
+
await userEvent.click(firstAccordionButton);
|
|
86
|
+
expect(firstAccordionButton).toHaveAttribute('aria-expanded', 'true');
|
|
87
|
+
|
|
88
|
+
// Click the second accordion button to open it
|
|
89
|
+
await userEvent.click(secondAccordionButton);
|
|
90
|
+
|
|
91
|
+
// Verify the first accordion is now closed
|
|
92
|
+
expect(firstAccordionButton).toHaveAttribute('aria-expanded', 'false');
|
|
93
|
+
|
|
94
|
+
// Verify the second accordion is open
|
|
95
|
+
expect(secondAccordionButton).toHaveAttribute('aria-expanded', 'true');
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
// ✅ Keyboard accessibility tests
|
|
99
|
+
|
|
100
|
+
// Focus the first accordion button
|
|
101
|
+
firstAccordionButton.focus();
|
|
102
|
+
expect(firstAccordionButton).toHaveFocus();
|
|
103
|
+
|
|
104
|
+
// Press "Enter" to toggle the first accordion
|
|
105
|
+
await userEvent.keyboard('{Enter}');
|
|
106
|
+
|
|
107
|
+
// pause 500ms
|
|
108
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
109
|
+
|
|
110
|
+
expect(firstAccordionButton).toHaveAttribute('aria-expanded', 'true');
|
|
111
|
+
|
|
112
|
+
// pause 500ms
|
|
113
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
114
|
+
|
|
115
|
+
// Press "Space" to toggle the first accordion
|
|
116
|
+
await userEvent.keyboard(' '); // TODO - change back to 'Space'
|
|
117
|
+
|
|
118
|
+
// pause 1500ms
|
|
119
|
+
await new Promise((resolve) => setTimeout(resolve, 1500));
|
|
120
|
+
|
|
121
|
+
expect(firstAccordionButton).toHaveAttribute('aria-expanded', 'false');
|
|
122
|
+
|
|
123
|
+
// Press "Enter" again to re-open the first accordion
|
|
124
|
+
await userEvent.keyboard('{Enter}');
|
|
125
|
+
|
|
126
|
+
// pause 1500ms
|
|
127
|
+
await new Promise((resolve) => setTimeout(resolve, 1500));
|
|
128
|
+
|
|
129
|
+
// pause 500ms
|
|
130
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
131
|
+
|
|
132
|
+
expect(firstAccordionButton).toHaveAttribute('aria-expanded', 'true');
|
|
133
|
+
|
|
134
|
+
// Verify the second accordion is closed (closes when 1st one opened)
|
|
135
|
+
expect(secondAccordionButton).toHaveAttribute('aria-expanded', 'false');
|
|
136
|
+
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
// Accordion Chevron False story
|
|
140
|
+
export const AccordionChevronTrue = ({variant, label, children}: AccordionProps) => {
|
|
141
|
+
|
|
142
|
+
return (
|
|
143
|
+
// <div className="w-full border-4 border-red-500">
|
|
144
|
+
<Accordion variant='default' label='Content Example' chevron={true}>
|
|
145
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
146
|
+
</Accordion>
|
|
147
|
+
// </div>
|
|
148
|
+
)
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
// Accordion Custom Icons story
|
|
153
|
+
export const AccordionCustomIcons = ({variant, label, children}: AccordionProps) => {
|
|
154
|
+
|
|
155
|
+
return (
|
|
156
|
+
// <div className="w-full border-4 border-red-500">
|
|
157
|
+
<Accordion variant='default' label='Content Example'
|
|
158
|
+
iconAccordionOpened={<img src={close} alt="Close Icon" />}
|
|
159
|
+
iconAccordionClosed={<img src={open} alt="Open Icon" />}
|
|
160
|
+
>
|
|
161
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
162
|
+
</Accordion>
|
|
163
|
+
// </div>
|
|
164
|
+
)
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
// Default Accordion story
|
|
169
|
+
export const AccordionReturnChild = ({variant, label, children}: AccordionProps) => {
|
|
170
|
+
|
|
171
|
+
return (
|
|
172
|
+
<AccordionParent variant='default' chevron
|
|
173
|
+
classNameChildHeading='bg-blue-300'
|
|
174
|
+
classNameChildContent='bg-blue-100 ps-6 pt-2'
|
|
175
|
+
>
|
|
176
|
+
<Accordion label='Content Example'>
|
|
177
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
178
|
+
</Accordion>
|
|
179
|
+
Return child test
|
|
180
|
+
<Accordion label='Second Example'>
|
|
181
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
182
|
+
</Accordion>
|
|
183
|
+
</AccordionParent>
|
|
184
|
+
)
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
// Default Accordion story
|
|
188
|
+
export const AccordionPlusMinus = ({variant, label, children}: AccordionProps) => {
|
|
189
|
+
|
|
190
|
+
return (
|
|
191
|
+
<AccordionParent variant='default' chevron={false}
|
|
192
|
+
classNameChildHeading='bg-blue-300'
|
|
193
|
+
classNameChildContent='bg-blue-100 ps-6 pt-2'
|
|
194
|
+
>
|
|
195
|
+
<Accordion label='Content Example'>
|
|
196
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
197
|
+
</Accordion>
|
|
198
|
+
<Accordion label='Second Example'>
|
|
199
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
200
|
+
</Accordion>
|
|
201
|
+
</AccordionParent>
|
|
202
|
+
)
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
// Custom Classes Accordion story
|
|
207
|
+
export const CustomClassesAccordion = ({variant, label, children}: AccordionProps) => {
|
|
208
|
+
|
|
209
|
+
return (
|
|
210
|
+
// <div className="w-full border-4 border-red-500">
|
|
211
|
+
<Accordion variant='default' label='Content Example'
|
|
212
|
+
classNameHeading='font-bold bg-slate-800 text-white border-b-0'
|
|
213
|
+
classNameContent='text-[0.9em] bg-slate-800 text-white font-sans'
|
|
214
|
+
>
|
|
215
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
216
|
+
</Accordion>
|
|
217
|
+
// </div>
|
|
218
|
+
)
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
// Multi Accordion Rounded Default story
|
|
222
|
+
export const MultiAccordionNoParent = ({variant, label, children}: AccordionProps) => {
|
|
223
|
+
|
|
224
|
+
return (
|
|
225
|
+
<>
|
|
226
|
+
<Accordion label='Content Example'>
|
|
227
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
228
|
+
</Accordion>
|
|
229
|
+
<Accordion label='Second Example'>
|
|
230
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
231
|
+
</Accordion>
|
|
232
|
+
<Accordion label='Third Example'>
|
|
233
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
234
|
+
</Accordion>
|
|
235
|
+
</>
|
|
236
|
+
)
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
// Multi Accordion Default story
|
|
240
|
+
export const MultiAccordionDefault = ({variant, label, children}: AccordionProps) => {
|
|
241
|
+
|
|
242
|
+
return (
|
|
243
|
+
|
|
244
|
+
<AccordionParent variant='default'>
|
|
245
|
+
<Accordion label='Content Example'>
|
|
246
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
247
|
+
</Accordion>
|
|
248
|
+
<Accordion label='Second Example'>
|
|
249
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
250
|
+
</Accordion>
|
|
251
|
+
<Accordion label='Third Example'>
|
|
252
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
253
|
+
</Accordion>
|
|
254
|
+
</AccordionParent>
|
|
255
|
+
)
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
// Multi Accordion Rounded Default story
|
|
259
|
+
export const MultiSingleOpenFalse = ({variant, label, children}: AccordionProps) => {
|
|
260
|
+
|
|
261
|
+
return (
|
|
262
|
+
|
|
263
|
+
<AccordionParent variant='default' className="" singleOpen={false}>
|
|
264
|
+
<Accordion label='Content Example'>
|
|
265
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
266
|
+
</Accordion>
|
|
267
|
+
<Accordion label='Second Example'>
|
|
268
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
269
|
+
</Accordion>
|
|
270
|
+
<Accordion label='Third Example'>
|
|
271
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
272
|
+
</Accordion>
|
|
273
|
+
</AccordionParent>
|
|
274
|
+
)
|
|
275
|
+
};
|
|
276
|
+
|
|
277
|
+
// Multi Accordion Rounded Default story
|
|
278
|
+
export const SingleUseBackgroundHr = ({variant, label, children}: AccordionProps) => {
|
|
279
|
+
|
|
280
|
+
return (
|
|
281
|
+
|
|
282
|
+
<AccordionParent variant='default' className="" singleOpen={false}>
|
|
283
|
+
<Accordion label='Content Example'>
|
|
284
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
285
|
+
</Accordion>
|
|
286
|
+
<Accordion label='hr = {false}' hr={false}>
|
|
287
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
288
|
+
</Accordion>
|
|
289
|
+
<Accordion label='useBackground = {false}' useBackground={false}>
|
|
290
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
291
|
+
</Accordion>
|
|
292
|
+
</AccordionParent>
|
|
293
|
+
)
|
|
294
|
+
};
|
|
295
|
+
|
|
296
|
+
// Multi Accordion Rounded Default story
|
|
297
|
+
export const MultiAccordionCustomClasses = ({variant, label, children}: AccordionProps) => {
|
|
298
|
+
|
|
299
|
+
return (
|
|
300
|
+
<AccordionParent variant='default' classNameChildHeading="bg-slate-500 text-white" classNameChildContent='font-bold' hr={false}>
|
|
301
|
+
<Accordion label='Content Example' classNameHeading="bg-slate-300 text-black" classNameContent='font-normal'>
|
|
302
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
303
|
+
</Accordion>
|
|
304
|
+
<Accordion label='Second Example'>
|
|
305
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
306
|
+
</Accordion>
|
|
307
|
+
<Accordion label='Third Example'>
|
|
308
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
309
|
+
</Accordion>
|
|
310
|
+
</AccordionParent>
|
|
311
|
+
)
|
|
312
|
+
};
|