@navikt/ds-react 6.5.0 → 6.6.0
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/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js +2 -4
- package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
- package/cjs/form/combobox/Input/Input.js +6 -1
- package/cjs/form/combobox/Input/Input.js.map +1 -1
- package/cjs/form/form-summary/FormSummary.d.ts +82 -0
- package/cjs/form/form-summary/FormSummary.js +81 -0
- package/cjs/form/form-summary/FormSummary.js.map +1 -0
- package/cjs/form/form-summary/FormSummaryAnswer.d.ts +11 -0
- package/cjs/form/form-summary/FormSummaryAnswer.js +25 -0
- package/cjs/form/form-summary/FormSummaryAnswer.js.map +1 -0
- package/cjs/form/form-summary/FormSummaryAnswers.d.ts +9 -0
- package/cjs/form/form-summary/FormSummaryAnswers.js +48 -0
- package/cjs/form/form-summary/FormSummaryAnswers.js.map +1 -0
- package/cjs/form/form-summary/FormSummaryEditLink.d.ts +17 -0
- package/cjs/form/form-summary/FormSummaryEditLink.js +49 -0
- package/cjs/form/form-summary/FormSummaryEditLink.js.map +1 -0
- package/cjs/form/form-summary/FormSummaryHeader.d.ts +9 -0
- package/cjs/form/form-summary/FormSummaryHeader.js +48 -0
- package/cjs/form/form-summary/FormSummaryHeader.js.map +1 -0
- package/cjs/form/form-summary/FormSummaryHeading.d.ts +14 -0
- package/cjs/form/form-summary/FormSummaryHeading.js +31 -0
- package/cjs/form/form-summary/FormSummaryHeading.js.map +1 -0
- package/cjs/form/form-summary/FormSummaryLabel.d.ts +6 -0
- package/cjs/form/form-summary/FormSummaryLabel.js +45 -0
- package/cjs/form/form-summary/FormSummaryLabel.js.map +1 -0
- package/cjs/form/form-summary/FormSummaryValue.d.ts +6 -0
- package/cjs/form/form-summary/FormSummaryValue.js +49 -0
- package/cjs/form/form-summary/FormSummaryValue.js.map +1 -0
- package/cjs/form/form-summary/index.d.ts +8 -0
- package/cjs/form/form-summary/index.js +24 -0
- package/cjs/form/form-summary/index.js.map +1 -0
- package/cjs/index.d.ts +3 -2
- package/cjs/index.js +5 -3
- package/cjs/index.js.map +1 -1
- package/cjs/util/hooks/descendants/descendant.js +10 -1
- package/cjs/util/hooks/descendants/descendant.js.map +1 -1
- package/cjs/util/hooks/descendants/useDescendant.js +0 -5
- package/cjs/util/hooks/descendants/useDescendant.js.map +1 -1
- package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js +2 -4
- package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
- package/esm/form/combobox/Input/Input.js +6 -1
- package/esm/form/combobox/Input/Input.js.map +1 -1
- package/esm/form/form-summary/FormSummary.d.ts +82 -0
- package/esm/form/form-summary/FormSummary.js +52 -0
- package/esm/form/form-summary/FormSummary.js.map +1 -0
- package/esm/form/form-summary/FormSummaryAnswer.d.ts +11 -0
- package/esm/form/form-summary/FormSummaryAnswer.js +19 -0
- package/esm/form/form-summary/FormSummaryAnswer.js.map +1 -0
- package/esm/form/form-summary/FormSummaryAnswers.d.ts +9 -0
- package/esm/form/form-summary/FormSummaryAnswers.js +19 -0
- package/esm/form/form-summary/FormSummaryAnswers.js.map +1 -0
- package/esm/form/form-summary/FormSummaryEditLink.d.ts +17 -0
- package/esm/form/form-summary/FormSummaryEditLink.js +20 -0
- package/esm/form/form-summary/FormSummaryEditLink.js.map +1 -0
- package/esm/form/form-summary/FormSummaryHeader.d.ts +9 -0
- package/esm/form/form-summary/FormSummaryHeader.js +19 -0
- package/esm/form/form-summary/FormSummaryHeader.js.map +1 -0
- package/esm/form/form-summary/FormSummaryHeading.d.ts +14 -0
- package/esm/form/form-summary/FormSummaryHeading.js +5 -0
- package/esm/form/form-summary/FormSummaryHeading.js.map +1 -0
- package/esm/form/form-summary/FormSummaryLabel.d.ts +6 -0
- package/esm/form/form-summary/FormSummaryLabel.js +19 -0
- package/esm/form/form-summary/FormSummaryLabel.js.map +1 -0
- package/esm/form/form-summary/FormSummaryValue.d.ts +6 -0
- package/esm/form/form-summary/FormSummaryValue.js +20 -0
- package/esm/form/form-summary/FormSummaryValue.js.map +1 -0
- package/esm/form/form-summary/index.d.ts +8 -0
- package/esm/form/form-summary/index.js +10 -0
- package/esm/form/form-summary/index.js.map +1 -0
- package/esm/index.d.ts +3 -2
- package/esm/index.js +2 -1
- package/esm/index.js.map +1 -1
- package/esm/util/hooks/descendants/descendant.js +10 -1
- package/esm/util/hooks/descendants/descendant.js.map +1 -1
- package/esm/util/hooks/descendants/useDescendant.js +0 -5
- package/esm/util/hooks/descendants/useDescendant.js.map +1 -1
- package/package.json +15 -4
- package/src/form/combobox/FilteredOptions/filteredOptionsContext.tsx +9 -1
- package/src/form/combobox/Input/Input.tsx +5 -0
- package/src/form/form-summary/FormSummary.tsx +106 -0
- package/src/form/form-summary/FormSummaryAnswer.tsx +27 -0
- package/src/form/form-summary/FormSummaryAnswers.tsx +25 -0
- package/src/form/form-summary/FormSummaryEditLink.tsx +35 -0
- package/src/form/form-summary/FormSummaryHeader.tsx +25 -0
- package/src/form/form-summary/FormSummaryHeading.tsx +23 -0
- package/src/form/form-summary/FormSummaryLabel.tsx +17 -0
- package/src/form/form-summary/FormSummaryValue.tsx +24 -0
- package/src/form/form-summary/index.ts +30 -0
- package/src/index.ts +16 -15
- package/src/util/hooks/descendants/descendant.ts +15 -1
- package/src/util/hooks/descendants/useDescendant.tsx +0 -5
- package/src/accordion/accordion.stories.tsx +0 -286
- package/src/alert/alert.stories.tsx +0 -306
- package/src/button/button.stories.tsx +0 -185
- package/src/chat/chat.stories.tsx +0 -341
- package/src/chips/chips.stories.tsx +0 -260
- package/src/copybutton/copy-button.stories.tsx +0 -261
- package/src/date/datepicker/datepicker.stories.tsx +0 -614
- package/src/date/monthpicker/monthpicker.stories.tsx +0 -221
- package/src/dropdown/dropdown.stories.tsx +0 -124
- package/src/expansion-card/expansion-card.stories.tsx +0 -282
- package/src/form/checkbox/checkbox.stories.tsx +0 -281
- package/src/form/combobox/combobox.stories.tsx +0 -626
- package/src/form/confirmation-panel/confirmation-panel.stories.tsx +0 -128
- package/src/form/error-summary/error-summary.stories.tsx +0 -81
- package/src/form/fieldset/fieldset.stories.tsx +0 -157
- package/src/form/file-upload/file-upload-dropzone.stories.tsx +0 -123
- package/src/form/file-upload/file-upload-item.stories.tsx +0 -148
- package/src/form/file-upload/file-upload.stories.tsx +0 -248
- package/src/form/radio/radio.stories.tsx +0 -230
- package/src/form/search/search.stories.tsx +0 -238
- package/src/form/select/select.stories.tsx +0 -172
- package/src/form/switch/switch.stories.tsx +0 -171
- package/src/form/textarea/textarea.stories.tsx +0 -254
- package/src/form/textfield/text-field.stories.tsx +0 -143
- package/src/guide-panel/guidepanel.stories.tsx +0 -90
- package/src/help-text/help-text.stories.tsx +0 -91
- package/src/internal-header/header.stories.tsx +0 -229
- package/src/layout/bleed/Bleed.stories.tsx +0 -395
- package/src/layout/box/Box.stories.tsx +0 -380
- package/src/layout/grid/h-grid.stories.tsx +0 -122
- package/src/layout/page/Page.stories.tsx +0 -271
- package/src/layout/responsive/hide.stories.tsx +0 -80
- package/src/layout/responsive/show.stories.tsx +0 -80
- package/src/layout/sidemal-test/navno-sidemal.stories.tsx +0 -69
- package/src/layout/stack/stack.stories.tsx +0 -183
- package/src/link/stories/link.stories.tsx +0 -304
- package/src/link-panel/link-panel.stories.tsx +0 -59
- package/src/list/list.stories.tsx +0 -280
- package/src/loader/loader.stories.tsx +0 -82
- package/src/modal/modal.stories.tsx +0 -391
- package/src/pagination/pagination.stories.tsx +0 -110
- package/src/popover/popover.stories.tsx +0 -113
- package/src/portal/Portal.stories.tsx +0 -102
- package/src/read-more/readmore.stories.tsx +0 -91
- package/src/skeleton/skeleton.stories.tsx +0 -130
- package/src/stepper/stepper.stories.tsx +0 -200
- package/src/table/stories/table-1.stories.tsx +0 -292
- package/src/table/stories/table-2-expandable.stories.tsx +0 -298
- package/src/table/stories/table-3-async.stories.tsx +0 -179
- package/src/table/stories/tests/table.stories.tsx +0 -102
- package/src/tabs/Tabs.stories.tsx +0 -311
- package/src/tag/tag.stories.tsx +0 -126
- package/src/timeline/timeline.stories.tsx +0 -445
- package/src/toggle-group/ToggleGroup.stories.tsx +0 -198
- package/src/tooltip/tooltip.stories.tsx +0 -101
- package/src/typography/stories/bodylong.stories.tsx +0 -209
- package/src/typography/stories/bodyshort.stories.tsx +0 -208
- package/src/typography/stories/detail.stories.tsx +0 -115
- package/src/typography/stories/error-message.stories.tsx +0 -122
- package/src/typography/stories/heading.stories.tsx +0 -169
- package/src/typography/stories/label.stories.tsx +0 -131
- package/src/util/hooks/descendants/descendant.stories.tsx +0 -147
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import cl from "clsx";
|
|
2
|
+
import React, { forwardRef } from "react";
|
|
3
|
+
import { BodyLong } from "../../typography";
|
|
4
|
+
|
|
5
|
+
export interface FormSummaryValueProps
|
|
6
|
+
extends React.HTMLAttributes<HTMLDivElement> {
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const FormSummaryValue = forwardRef<
|
|
11
|
+
HTMLDivElement,
|
|
12
|
+
FormSummaryValueProps
|
|
13
|
+
>(({ children, className, ...rest }, ref) => (
|
|
14
|
+
<BodyLong
|
|
15
|
+
ref={ref}
|
|
16
|
+
{...rest}
|
|
17
|
+
as="dd"
|
|
18
|
+
className={cl("navds-form-summary__value", className)}
|
|
19
|
+
>
|
|
20
|
+
{children}
|
|
21
|
+
</BodyLong>
|
|
22
|
+
));
|
|
23
|
+
|
|
24
|
+
export default FormSummaryValue;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
export { default as FormSummary, type FormSummaryProps } from "./FormSummary";
|
|
3
|
+
export {
|
|
4
|
+
default as FormSummaryAnswer,
|
|
5
|
+
type FormSummaryAnswerProps,
|
|
6
|
+
} from "./FormSummaryAnswer";
|
|
7
|
+
export {
|
|
8
|
+
default as FormSummaryAnswers,
|
|
9
|
+
type FormSummaryAnswersProps,
|
|
10
|
+
} from "./FormSummaryAnswers";
|
|
11
|
+
export {
|
|
12
|
+
default as FormSummaryEditLink,
|
|
13
|
+
type FormSummaryEditProps,
|
|
14
|
+
} from "./FormSummaryEditLink";
|
|
15
|
+
export {
|
|
16
|
+
default as FormSummaryHeader,
|
|
17
|
+
type FormSummaryHeaderProps,
|
|
18
|
+
} from "./FormSummaryHeader";
|
|
19
|
+
export {
|
|
20
|
+
default as FormSummaryHeading,
|
|
21
|
+
type FormSummaryHeadingProps,
|
|
22
|
+
} from "./FormSummaryHeading";
|
|
23
|
+
export {
|
|
24
|
+
default as FormSummaryLabel,
|
|
25
|
+
type FormSummaryLabelProps,
|
|
26
|
+
} from "./FormSummaryLabel";
|
|
27
|
+
export {
|
|
28
|
+
default as FormSummaryValue,
|
|
29
|
+
type FormSummaryValueProps,
|
|
30
|
+
} from "./FormSummaryValue";
|
package/src/index.ts
CHANGED
|
@@ -26,8 +26,8 @@ export { Dropdown, type DropdownProps } from "./dropdown";
|
|
|
26
26
|
export { ExpansionCard, type ExpansionCardProps } from "./expansion-card";
|
|
27
27
|
export {
|
|
28
28
|
GuidePanel,
|
|
29
|
-
type GuidePanelProps,
|
|
30
29
|
GuidePanelDefaultIllustration,
|
|
30
|
+
type GuidePanelProps,
|
|
31
31
|
} from "./guide-panel";
|
|
32
32
|
export { HelpText, type HelpTextProps } from "./help-text";
|
|
33
33
|
export {
|
|
@@ -125,6 +125,21 @@ export {
|
|
|
125
125
|
} from "./form/confirmation-panel";
|
|
126
126
|
export { ErrorSummary, type ErrorSummaryProps } from "./form/error-summary";
|
|
127
127
|
export { Fieldset, type FieldsetProps } from "./form/fieldset";
|
|
128
|
+
export {
|
|
129
|
+
UNSAFE_FileUpload,
|
|
130
|
+
type FileAccepted,
|
|
131
|
+
type FileItem,
|
|
132
|
+
type FileMetadata,
|
|
133
|
+
type FileObject,
|
|
134
|
+
type FileRejected,
|
|
135
|
+
type FileRejectedPartitioned,
|
|
136
|
+
type FileRejectionReason,
|
|
137
|
+
type FileUploadDropzoneProps,
|
|
138
|
+
type FileUploadItemProps,
|
|
139
|
+
type FileUploadTriggerProps,
|
|
140
|
+
type FilesPartitioned,
|
|
141
|
+
} from "./form/file-upload";
|
|
142
|
+
export { FormSummary, type FormSummaryProps } from "./form/form-summary";
|
|
128
143
|
export {
|
|
129
144
|
Radio,
|
|
130
145
|
RadioGroup,
|
|
@@ -136,20 +151,6 @@ export { Select, type SelectProps } from "./form/select";
|
|
|
136
151
|
export { Switch, type SwitchProps } from "./form/switch";
|
|
137
152
|
export { Textarea, type TextareaProps } from "./form/textarea";
|
|
138
153
|
export { TextField, type TextFieldProps } from "./form/textfield";
|
|
139
|
-
export {
|
|
140
|
-
UNSAFE_FileUpload,
|
|
141
|
-
type FileUploadDropzoneProps,
|
|
142
|
-
type FileUploadTriggerProps,
|
|
143
|
-
type FileObject,
|
|
144
|
-
type FileRejected,
|
|
145
|
-
type FileAccepted,
|
|
146
|
-
type FileRejectedPartitioned,
|
|
147
|
-
type FilesPartitioned,
|
|
148
|
-
type FileRejectionReason,
|
|
149
|
-
type FileUploadItemProps,
|
|
150
|
-
type FileItem,
|
|
151
|
-
type FileMetadata,
|
|
152
|
-
} from "./form/file-upload";
|
|
153
154
|
|
|
154
155
|
/**
|
|
155
156
|
* @deprecated
|
|
@@ -143,7 +143,21 @@ export class DescendantsManager<
|
|
|
143
143
|
};
|
|
144
144
|
|
|
145
145
|
private registerNode = (node: T | null, options?: DescendantOptions<K>) => {
|
|
146
|
-
if (!node
|
|
146
|
+
if (!node) return;
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* While the node is registered, we have to make sure to sync options
|
|
150
|
+
* This is useful when ex. a node is disabled after it has been registered
|
|
151
|
+
*/
|
|
152
|
+
const mapNode = this.descendants.get(node);
|
|
153
|
+
if (mapNode) {
|
|
154
|
+
this.descendants.set(node, {
|
|
155
|
+
index: mapNode.index,
|
|
156
|
+
node,
|
|
157
|
+
...options,
|
|
158
|
+
} as Descendant<T, K>);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
147
161
|
|
|
148
162
|
const keys = Array.from(this.descendants.keys()).concat(node);
|
|
149
163
|
const sorted = sortNodes(keys);
|
|
@@ -17,11 +17,6 @@ function useDescendants<
|
|
|
17
17
|
K extends Record<string, any> = object,
|
|
18
18
|
>() {
|
|
19
19
|
const descendants = useRef(new DescendantsManager<T, K>()).current;
|
|
20
|
-
useClientLayoutEffect(() => {
|
|
21
|
-
return () => {
|
|
22
|
-
descendants.destroy();
|
|
23
|
-
};
|
|
24
|
-
});
|
|
25
20
|
|
|
26
21
|
return descendants;
|
|
27
22
|
}
|
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
import { StoryObj } from "@storybook/react";
|
|
2
|
-
import React, { useState } from "react";
|
|
3
|
-
import { Accordion, AccordionProps } from ".";
|
|
4
|
-
import AccordionContent from "./AccordionContent";
|
|
5
|
-
import AccordionHeader from "./AccordionHeader";
|
|
6
|
-
import AccordionItem from "./AccordionItem";
|
|
7
|
-
|
|
8
|
-
export default {
|
|
9
|
-
title: "ds-react/Accordion",
|
|
10
|
-
component: Accordion,
|
|
11
|
-
subcomponents: {
|
|
12
|
-
AccordionItem,
|
|
13
|
-
AccordionContent,
|
|
14
|
-
AccordionHeader,
|
|
15
|
-
},
|
|
16
|
-
parameters: {
|
|
17
|
-
chromatic: { disable: true },
|
|
18
|
-
},
|
|
19
|
-
decorators: [
|
|
20
|
-
(Story) => (
|
|
21
|
-
<div
|
|
22
|
-
style={{
|
|
23
|
-
width: "600px",
|
|
24
|
-
minHeight: "100vh",
|
|
25
|
-
display: "flex",
|
|
26
|
-
flexDirection: "column",
|
|
27
|
-
gap: "1rem",
|
|
28
|
-
}}
|
|
29
|
-
>
|
|
30
|
-
<Story />
|
|
31
|
-
</div>
|
|
32
|
-
),
|
|
33
|
-
],
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
type Story = StoryObj<typeof Accordion>;
|
|
37
|
-
|
|
38
|
-
const Content = () => (
|
|
39
|
-
<Accordion.Content>
|
|
40
|
-
Magna aliquip aliquip fugiat nostrud nostrud velit pariatur veniam officia
|
|
41
|
-
laboris voluptate officia pariatur. <a href="#Lorem">Lorem est</a> ex anim
|
|
42
|
-
velit occaecat nisi qui nostrud sit consectetur consectetur officia nostrud
|
|
43
|
-
ullamco. Est ex duis proident nostrud elit qui laborum anim minim eu
|
|
44
|
-
eiusmod. Veniam in nostrud sunt tempor velit incididunt sint ex dolor qui
|
|
45
|
-
velit id eu. Deserunt magna sunt velit in. Est exercitation id cillum qui
|
|
46
|
-
do. Minim adipisicing nostrud commodo proident occaecat aliquip nulla anim
|
|
47
|
-
proident reprehenderit. Magna ipsum officia veniam cupidatat duis veniam
|
|
48
|
-
dolore reprehenderit mollit velit. Ut consequat commodo minim occaecat id
|
|
49
|
-
pariatur. Nisi enim tempor laborum commodo. Tempor sit quis nostrud eu
|
|
50
|
-
cupidatat sunt commodo reprehenderit irure deserunt eiusmod ipsum.
|
|
51
|
-
Exercitation quis commodo cillum eiusmod eiusmod. Do laborum qui proident
|
|
52
|
-
commodo adipisicing eiusmod id.
|
|
53
|
-
</Accordion.Content>
|
|
54
|
-
);
|
|
55
|
-
|
|
56
|
-
const SmallContent = () => (
|
|
57
|
-
<Accordion.Content>
|
|
58
|
-
Magna aliquip aliquip fugiat nostrud <a href="#Lorem">Lorem est</a> pariatur
|
|
59
|
-
veniam officia laboris voluptate officia pariatur.ex anim
|
|
60
|
-
</Accordion.Content>
|
|
61
|
-
);
|
|
62
|
-
|
|
63
|
-
const Item = (props) => {
|
|
64
|
-
const [open, setOpen] = useState(false);
|
|
65
|
-
|
|
66
|
-
if (props.defaultOpen) {
|
|
67
|
-
return (
|
|
68
|
-
<Accordion.Item
|
|
69
|
-
defaultOpen={props.defaultOpen}
|
|
70
|
-
onOpenChange={console.log}
|
|
71
|
-
>
|
|
72
|
-
<Accordion.Header>Accordion header text</Accordion.Header>
|
|
73
|
-
<SmallContent />
|
|
74
|
-
</Accordion.Item>
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
return props.controlled ? (
|
|
79
|
-
<Accordion.Item open={open} onOpenChange={console.log}>
|
|
80
|
-
<Accordion.Header onClick={() => setOpen(!open)}>
|
|
81
|
-
Accordion header text
|
|
82
|
-
</Accordion.Header>
|
|
83
|
-
<Content />
|
|
84
|
-
</Accordion.Item>
|
|
85
|
-
) : (
|
|
86
|
-
<Accordion.Item onOpenChange={console.log}>
|
|
87
|
-
<Accordion.Header>Accordion header text</Accordion.Header>
|
|
88
|
-
<Content />
|
|
89
|
-
</Accordion.Item>
|
|
90
|
-
);
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
export const Controls: Story = {
|
|
94
|
-
render: ({ ...props }) => {
|
|
95
|
-
return (
|
|
96
|
-
<div style={{ width: 500 }}>
|
|
97
|
-
<Accordion {...props}>
|
|
98
|
-
{[...Array(4)].map((_, y) => (
|
|
99
|
-
<Item key={y} {...props} />
|
|
100
|
-
))}
|
|
101
|
-
</Accordion>
|
|
102
|
-
</div>
|
|
103
|
-
);
|
|
104
|
-
},
|
|
105
|
-
argTypes: {
|
|
106
|
-
variant: {
|
|
107
|
-
options: ["default", "neutral"],
|
|
108
|
-
control: { type: "select" },
|
|
109
|
-
},
|
|
110
|
-
headingSize: {
|
|
111
|
-
options: ["large", "medium", "small", "xsmall"],
|
|
112
|
-
control: { type: "select" },
|
|
113
|
-
},
|
|
114
|
-
size: {
|
|
115
|
-
options: ["large", "medium", "small"],
|
|
116
|
-
control: { type: "select" },
|
|
117
|
-
},
|
|
118
|
-
},
|
|
119
|
-
|
|
120
|
-
args: {
|
|
121
|
-
variant: "default",
|
|
122
|
-
headingSize: "medium",
|
|
123
|
-
size: "medium",
|
|
124
|
-
indent: true,
|
|
125
|
-
},
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
export const DefaultOpen: Story = {
|
|
129
|
-
render: () => {
|
|
130
|
-
return (
|
|
131
|
-
<div style={{ width: 500 }}>
|
|
132
|
-
<Accordion>
|
|
133
|
-
{[...Array(4)].map((_, y) => (
|
|
134
|
-
<Item key={y} defaultOpen={y === 2} />
|
|
135
|
-
))}
|
|
136
|
-
</Accordion>
|
|
137
|
-
</div>
|
|
138
|
-
);
|
|
139
|
-
},
|
|
140
|
-
};
|
|
141
|
-
|
|
142
|
-
export const Variants: Story = {
|
|
143
|
-
render: () => {
|
|
144
|
-
return (
|
|
145
|
-
<div style={{ width: 500 }} className="colgap">
|
|
146
|
-
<h3>Default</h3>
|
|
147
|
-
<Accordion>
|
|
148
|
-
{[...Array(2)].map((_, y) => (
|
|
149
|
-
<Item key={y} defaultOpen />
|
|
150
|
-
))}
|
|
151
|
-
</Accordion>
|
|
152
|
-
<h3>Neutral</h3>
|
|
153
|
-
<Accordion variant="neutral">
|
|
154
|
-
{[...Array(2)].map((_, y) => (
|
|
155
|
-
<Item key={y} defaultOpen />
|
|
156
|
-
))}
|
|
157
|
-
</Accordion>
|
|
158
|
-
</div>
|
|
159
|
-
);
|
|
160
|
-
},
|
|
161
|
-
};
|
|
162
|
-
|
|
163
|
-
export const ControlledState: Story = {
|
|
164
|
-
render: () => {
|
|
165
|
-
const [open, setOpen] = useState(false);
|
|
166
|
-
const [open2, setOpen2] = useState(false);
|
|
167
|
-
|
|
168
|
-
return (
|
|
169
|
-
<div style={{ width: 500 }}>
|
|
170
|
-
<Accordion>
|
|
171
|
-
<Accordion.Item open={open}>
|
|
172
|
-
<Accordion.Header onClick={() => setOpen(!open)}>
|
|
173
|
-
Accordion header text
|
|
174
|
-
</Accordion.Header>
|
|
175
|
-
<Content />
|
|
176
|
-
</Accordion.Item>
|
|
177
|
-
<Accordion.Item open={open2}>
|
|
178
|
-
<Accordion.Header onClick={() => setOpen2(!open2)}>
|
|
179
|
-
Accordion header text
|
|
180
|
-
</Accordion.Header>
|
|
181
|
-
<Content />
|
|
182
|
-
</Accordion.Item>
|
|
183
|
-
</Accordion>
|
|
184
|
-
</div>
|
|
185
|
-
);
|
|
186
|
-
},
|
|
187
|
-
};
|
|
188
|
-
|
|
189
|
-
const SingleHeaderAccordion = ({
|
|
190
|
-
size = "medium",
|
|
191
|
-
headingSize = "medium",
|
|
192
|
-
}: Partial<AccordionProps>) => {
|
|
193
|
-
return (
|
|
194
|
-
<Accordion size={size} headingSize={headingSize}>
|
|
195
|
-
<Accordion.Item>
|
|
196
|
-
<Accordion.Header>{`${size} size + ${headingSize} heading`}</Accordion.Header>
|
|
197
|
-
<Accordion.Content>a</Accordion.Content>
|
|
198
|
-
</Accordion.Item>
|
|
199
|
-
<Accordion.Item open>
|
|
200
|
-
<Accordion.Header>{`${size} size + ${headingSize} heading`}</Accordion.Header>
|
|
201
|
-
<Accordion.Content>
|
|
202
|
-
lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
203
|
-
</Accordion.Content>
|
|
204
|
-
</Accordion.Item>
|
|
205
|
-
</Accordion>
|
|
206
|
-
);
|
|
207
|
-
};
|
|
208
|
-
|
|
209
|
-
const sizes: AccordionProps["size"][] = ["large", "medium", "small"];
|
|
210
|
-
const headingSizes: AccordionProps["headingSize"][] = [
|
|
211
|
-
"large",
|
|
212
|
-
"medium",
|
|
213
|
-
"small",
|
|
214
|
-
"xsmall",
|
|
215
|
-
];
|
|
216
|
-
|
|
217
|
-
export const Size: Story = {
|
|
218
|
-
render: () => (
|
|
219
|
-
<div style={{ width: 500 }} className="colgap">
|
|
220
|
-
{sizes.map((size) => (
|
|
221
|
-
<SingleHeaderAccordion key={size} size={size} />
|
|
222
|
-
))}
|
|
223
|
-
</div>
|
|
224
|
-
),
|
|
225
|
-
};
|
|
226
|
-
|
|
227
|
-
export const HeadingSize: Story = {
|
|
228
|
-
render: () => (
|
|
229
|
-
<div style={{ width: 500 }} className="colgap">
|
|
230
|
-
{headingSizes.map((size) => (
|
|
231
|
-
<SingleHeaderAccordion key={size} headingSize={size} />
|
|
232
|
-
))}
|
|
233
|
-
</div>
|
|
234
|
-
),
|
|
235
|
-
};
|
|
236
|
-
|
|
237
|
-
export const Indent: Story = {
|
|
238
|
-
render: () => {
|
|
239
|
-
return (
|
|
240
|
-
<div style={{ width: 500 }} className="colgap">
|
|
241
|
-
<h3>No indent</h3>
|
|
242
|
-
<Accordion indent>
|
|
243
|
-
{[...Array(2)].map((_, y) => (
|
|
244
|
-
<Item key={y} defaultOpen />
|
|
245
|
-
))}
|
|
246
|
-
</Accordion>
|
|
247
|
-
<h3>Indent</h3>
|
|
248
|
-
<Accordion indent={false}>
|
|
249
|
-
{[...Array(2)].map((_, y) => (
|
|
250
|
-
<Item key={y} defaultOpen />
|
|
251
|
-
))}
|
|
252
|
-
</Accordion>
|
|
253
|
-
</div>
|
|
254
|
-
);
|
|
255
|
-
},
|
|
256
|
-
};
|
|
257
|
-
|
|
258
|
-
export const Chromatic: Story = {
|
|
259
|
-
render: (...props) => (
|
|
260
|
-
<div>
|
|
261
|
-
<div>
|
|
262
|
-
<h2>Variants</h2>
|
|
263
|
-
{Variants.render?.(...props)}
|
|
264
|
-
</div>
|
|
265
|
-
<div>
|
|
266
|
-
<h2>Size</h2>
|
|
267
|
-
{Size.render?.(...props)}
|
|
268
|
-
</div>
|
|
269
|
-
<div>
|
|
270
|
-
<h2>HeadingSize</h2>
|
|
271
|
-
{HeadingSize.render?.(...props)}
|
|
272
|
-
</div>
|
|
273
|
-
<div>
|
|
274
|
-
<h2>DefaultOpen</h2>
|
|
275
|
-
{DefaultOpen.render?.(...props)}
|
|
276
|
-
</div>
|
|
277
|
-
<div>
|
|
278
|
-
<h2>Indent</h2>
|
|
279
|
-
{Indent.render?.(...props)}
|
|
280
|
-
</div>
|
|
281
|
-
</div>
|
|
282
|
-
),
|
|
283
|
-
parameters: {
|
|
284
|
-
chromatic: { disable: false },
|
|
285
|
-
},
|
|
286
|
-
};
|