@navikt/ds-react 0.19.8 → 0.19.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_docs.json +20 -1
- package/cjs/form/Textarea.js +12 -4
- package/cjs/form/error-summary/ErrorSummary.js +4 -2
- package/cjs/loader/Loader.js +2 -2
- package/esm/form/Textarea.d.ts +4 -0
- package/esm/form/Textarea.js +12 -4
- package/esm/form/Textarea.js.map +1 -1
- package/esm/form/error-summary/ErrorSummary.js +4 -2
- package/esm/form/error-summary/ErrorSummary.js.map +1 -1
- package/esm/loader/Loader.d.ts +1 -1
- package/esm/loader/Loader.js +2 -2
- package/esm/loader/Loader.js.map +1 -1
- package/package.json +2 -2
- package/src/alert/alert.stories.tsx +9 -1
- package/src/form/Textarea.tsx +17 -2
- package/src/form/error-summary/ErrorSummary.tsx +9 -3
- package/src/form/stories/textarea.stories.tsx +10 -0
- package/src/guide-panel/guidepanel.stories.tsx +51 -0
- package/src/help-text/help-text.stories.tsx +53 -18
- package/src/link/link.stories.tsx +77 -0
- package/src/link-panel/link-panel.stories.tsx +57 -0
- package/src/loader/Loader.tsx +8 -4
- package/src/loader/loader.stories.tsx +79 -0
- package/src/modal/modal.stories.tsx +71 -38
- package/src/panel/{stories/panel.stories.tsx → panel.stories.tsx} +27 -5
- package/src/popover/popover.stories.tsx +126 -0
- package/src/table/stories/table-async.stories.tsx +1 -1
- package/src/table/stories/table-expandable.stories.tsx +89 -62
- package/src/table/stories/table.stories.tsx +73 -83
- package/src/tag/tag.stories.tsx +45 -0
- package/src/toggle-group/ToggleGroup.stories.tsx +63 -81
- package/src/typography/heading.stories.tsx +75 -0
- package/src/typography/typography.stories.tsx +184 -111
- package/src/guide-panel/stories/example.css +0 -13
- package/src/guide-panel/stories/guidepanel.stories.mdx +0 -81
- package/src/guide-panel/stories/guidepanel.stories.tsx +0 -68
- package/src/link/stories/link.stories.mdx +0 -26
- package/src/link/stories/link.stories.tsx +0 -53
- package/src/link-panel/stories/illustration.tsx +0 -125
- package/src/link-panel/stories/link-panel.stories.mdx +0 -110
- package/src/link-panel/stories/link-panel.stories.tsx +0 -51
- package/src/loader/stories/loader.stories.mdx +0 -65
- package/src/loader/stories/loader.stories.tsx +0 -69
- package/src/panel/stories/panel.stories.mdx +0 -42
- package/src/popover/stories/popover.stories.mdx +0 -23
- package/src/popover/stories/popover.stories.tsx +0 -56
- package/src/table/stories/table-hot.stories.tsx +0 -376
- package/src/table/stories/table.stories.mdx +0 -112
- package/src/tag/stories/tag.stories.mdx +0 -56
- package/src/tag/stories/tag.stories.tsx +0 -32
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Meta } from "@storybook/react/types-6-0";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { LinkPanel } from "..";
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
title: "ds-react/LinkPanel",
|
|
7
|
+
component: LinkPanel,
|
|
8
|
+
argTypes: {
|
|
9
|
+
border: {
|
|
10
|
+
control: {
|
|
11
|
+
type: "boolean",
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
} as Meta;
|
|
16
|
+
|
|
17
|
+
export const Default = (props: any) => {
|
|
18
|
+
return (
|
|
19
|
+
<LinkPanel href="#" border={props?.border}>
|
|
20
|
+
<LinkPanel.Title>
|
|
21
|
+
Consectetur eu duis aliqua eu irure fugiat fugiat eu.
|
|
22
|
+
</LinkPanel.Title>
|
|
23
|
+
{props.description && (
|
|
24
|
+
<LinkPanel.Description>
|
|
25
|
+
Aliqua id aliquip Lorem esse
|
|
26
|
+
</LinkPanel.Description>
|
|
27
|
+
)}
|
|
28
|
+
</LinkPanel>
|
|
29
|
+
);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
Default.args = {
|
|
33
|
+
description: false,
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export const Description = () => {
|
|
37
|
+
return (
|
|
38
|
+
<LinkPanel href="#">
|
|
39
|
+
<LinkPanel.Title>
|
|
40
|
+
Consectetur eu duis aliqua eu irure fugiat fugiat eu.
|
|
41
|
+
</LinkPanel.Title>
|
|
42
|
+
<LinkPanel.Description>
|
|
43
|
+
Aliqua id aliquip Lorem esse
|
|
44
|
+
</LinkPanel.Description>
|
|
45
|
+
</LinkPanel>
|
|
46
|
+
);
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export const NoBorder = () => {
|
|
50
|
+
return (
|
|
51
|
+
<LinkPanel href="#" border={false}>
|
|
52
|
+
<LinkPanel.Title>
|
|
53
|
+
Consectetur eu duis aliqua eu irure fugiat fugiat eu.
|
|
54
|
+
</LinkPanel.Title>
|
|
55
|
+
</LinkPanel>
|
|
56
|
+
);
|
|
57
|
+
};
|
package/src/loader/Loader.tsx
CHANGED
|
@@ -8,7 +8,14 @@ export interface LoaderProps extends SVGProps<SVGSVGElement> {
|
|
|
8
8
|
* 64px | 40px | 32px | 24px | 20px | 16px
|
|
9
9
|
* @default "medium"
|
|
10
10
|
*/
|
|
11
|
-
size?:
|
|
11
|
+
size?:
|
|
12
|
+
| "3xlarge"
|
|
13
|
+
| "2xlarge"
|
|
14
|
+
| "xlarge"
|
|
15
|
+
| "large"
|
|
16
|
+
| "medium"
|
|
17
|
+
| "small"
|
|
18
|
+
| "xsmall";
|
|
12
19
|
/**
|
|
13
20
|
* Title prop on svg
|
|
14
21
|
* @default "venter..."
|
|
@@ -68,7 +75,6 @@ export const Loader = forwardRef<SVGSVGElement, LoaderProps>(
|
|
|
68
75
|
cy="25"
|
|
69
76
|
r="20"
|
|
70
77
|
fill="none"
|
|
71
|
-
strokeWidth="5"
|
|
72
78
|
/>
|
|
73
79
|
<circle
|
|
74
80
|
className="navds-loader__foreground"
|
|
@@ -77,9 +83,7 @@ export const Loader = forwardRef<SVGSVGElement, LoaderProps>(
|
|
|
77
83
|
r="20"
|
|
78
84
|
stroke={"var(--navds-global-color-gray-400)"}
|
|
79
85
|
fill="none"
|
|
80
|
-
strokeWidth="5"
|
|
81
86
|
strokeDasharray="50 155"
|
|
82
|
-
strokeLinecap="round"
|
|
83
87
|
/>
|
|
84
88
|
</svg>
|
|
85
89
|
);
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Loader } from "..";
|
|
3
|
+
import { Meta } from "@storybook/react/types-6-0";
|
|
4
|
+
export default {
|
|
5
|
+
title: "ds-react/Loader",
|
|
6
|
+
component: Loader,
|
|
7
|
+
argTypes: {
|
|
8
|
+
size: {
|
|
9
|
+
control: {
|
|
10
|
+
type: "radio",
|
|
11
|
+
options: [
|
|
12
|
+
"3xlarge",
|
|
13
|
+
"2xlarge",
|
|
14
|
+
"xlarge",
|
|
15
|
+
"large",
|
|
16
|
+
"medium",
|
|
17
|
+
"small",
|
|
18
|
+
"xsmall",
|
|
19
|
+
],
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
variant: {
|
|
23
|
+
control: {
|
|
24
|
+
type: "radio",
|
|
25
|
+
options: ["neutral", "interaction", "inverted"],
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
} as Meta;
|
|
30
|
+
|
|
31
|
+
export const Default = (props: any) => {
|
|
32
|
+
return <Loader {...props} />;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
Default.args = {
|
|
36
|
+
transparent: false,
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const Size = () => (
|
|
40
|
+
<div>
|
|
41
|
+
<Loader size="3xlarge" />
|
|
42
|
+
<Loader size="2xlarge" />
|
|
43
|
+
<Loader size="xlarge" />
|
|
44
|
+
<Loader size="large" />
|
|
45
|
+
<Loader size="medium" />
|
|
46
|
+
<Loader size="small" />
|
|
47
|
+
<Loader size="xsmall" />
|
|
48
|
+
</div>
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
export const Variant = () => (
|
|
52
|
+
<div className="colgap">
|
|
53
|
+
<div>
|
|
54
|
+
<Loader size="3xlarge" variant="neutral" />
|
|
55
|
+
<Loader size="3xlarge" variant="inverted" />
|
|
56
|
+
<Loader size="3xlarge" variant="interaction" />
|
|
57
|
+
</div>
|
|
58
|
+
<div style={{ backgroundColor: "#292929" }}>
|
|
59
|
+
<Loader size="3xlarge" variant="neutral" />
|
|
60
|
+
<Loader size="3xlarge" variant="inverted" />
|
|
61
|
+
<Loader size="3xlarge" variant="interaction" />
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
export const Transparent = () => (
|
|
67
|
+
<div className="colgap">
|
|
68
|
+
<div>
|
|
69
|
+
<Loader size="3xlarge" transparent variant="neutral" />
|
|
70
|
+
<Loader size="3xlarge" transparent variant="inverted" />
|
|
71
|
+
<Loader size="3xlarge" transparent variant="interaction" />
|
|
72
|
+
</div>
|
|
73
|
+
<div style={{ backgroundColor: "#292929" }}>
|
|
74
|
+
<Loader size="3xlarge" transparent variant="neutral" />
|
|
75
|
+
<Loader size="3xlarge" transparent variant="inverted" />
|
|
76
|
+
<Loader size="3xlarge" transparent variant="interaction" />
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
);
|
|
@@ -1,69 +1,102 @@
|
|
|
1
|
-
import React, { useState } from "react";
|
|
2
|
-
import { Modal } from "../..";
|
|
1
|
+
import React, { useEffect, useState } from "react";
|
|
2
|
+
import { BodyLong, Button, Heading, Modal } from "../..";
|
|
3
3
|
|
|
4
4
|
export default {
|
|
5
|
-
title: "ds-react/
|
|
5
|
+
title: "ds-react/Modal",
|
|
6
6
|
component: Modal,
|
|
7
|
+
parameters: {
|
|
8
|
+
chromatic: { delay: 1000 },
|
|
9
|
+
},
|
|
7
10
|
};
|
|
8
11
|
|
|
9
|
-
|
|
12
|
+
export const Default = (props) => {
|
|
13
|
+
const [open, setOpen] = useState(false);
|
|
10
14
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const [openThree, setOpenThree] = useState(false);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
Modal.setAppElement("#root");
|
|
17
|
+
}, []);
|
|
15
18
|
|
|
16
19
|
return (
|
|
17
20
|
<>
|
|
18
|
-
<
|
|
21
|
+
<Button onClick={() => setOpen(true)}>Open</Button>
|
|
19
22
|
<Modal
|
|
20
23
|
open={open}
|
|
21
24
|
onClose={() => setOpen(false)}
|
|
22
25
|
aria-labelledby="header123"
|
|
26
|
+
{...props}
|
|
23
27
|
>
|
|
24
28
|
<Modal.Content>
|
|
25
|
-
<
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
<
|
|
29
|
+
<Heading spacing id="header123" level="1" size="large">
|
|
30
|
+
Header
|
|
31
|
+
</Heading>
|
|
32
|
+
<Heading spacing level="2" size="medium">
|
|
33
|
+
Header
|
|
34
|
+
</Heading>
|
|
35
|
+
<BodyLong>Voluptate laboris mollit dolore qui. Magna elit.</BodyLong>
|
|
29
36
|
</Modal.Content>
|
|
30
37
|
</Modal>
|
|
38
|
+
</>
|
|
39
|
+
);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
Default.args = {
|
|
43
|
+
shouldCloseOnOverlayClick: true,
|
|
44
|
+
closeButton: true,
|
|
45
|
+
};
|
|
31
46
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
47
|
+
export const Open = () => {
|
|
48
|
+
const [open, setOpen] = useState(null);
|
|
49
|
+
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
Modal.setAppElement("#root");
|
|
52
|
+
}, []);
|
|
53
|
+
|
|
54
|
+
return (
|
|
55
|
+
<>
|
|
56
|
+
<Button onClick={() => setOpen(true)}>Open</Button>
|
|
35
57
|
<Modal
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
onClose={() => setOpenTwo(false)}
|
|
58
|
+
open={open ?? true}
|
|
59
|
+
onClose={() => setOpen(false)}
|
|
39
60
|
aria-labelledby="header123"
|
|
40
61
|
>
|
|
41
62
|
<Modal.Content>
|
|
42
|
-
<
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
id duis cupidatat labore magna consectetur et veniam tempor. In
|
|
50
|
-
minim exercitation id irure velit sit dolor aliquip velit esse.
|
|
51
|
-
Excepteur sint non minim nulla excepteur labore non magna eu.
|
|
52
|
-
</p>
|
|
63
|
+
<Heading spacing id="header123" level="1" size="large">
|
|
64
|
+
Header
|
|
65
|
+
</Heading>
|
|
66
|
+
<Heading spacing level="2" size="medium">
|
|
67
|
+
Header
|
|
68
|
+
</Heading>
|
|
69
|
+
<BodyLong>Voluptate laboris mollit dolore qui. Magna elit.</BodyLong>
|
|
53
70
|
</Modal.Content>
|
|
54
71
|
</Modal>
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
72
|
+
</>
|
|
73
|
+
);
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export const CloseButton = () => {
|
|
77
|
+
const [open, setOpen] = useState(true);
|
|
78
|
+
|
|
79
|
+
useEffect(() => {
|
|
80
|
+
Modal.setAppElement("#root");
|
|
81
|
+
}, []);
|
|
82
|
+
|
|
83
|
+
return (
|
|
84
|
+
<>
|
|
85
|
+
<Button onClick={() => setOpen(true)}>Open</Button>
|
|
58
86
|
<Modal
|
|
59
|
-
open={
|
|
87
|
+
open={open}
|
|
88
|
+
onClose={() => setOpen(false)}
|
|
89
|
+
aria-labelledby="header123"
|
|
60
90
|
closeButton={false}
|
|
61
|
-
onClose={() => setOpenThree(false)}
|
|
62
|
-
aria-label="Min modal"
|
|
63
91
|
>
|
|
64
92
|
<Modal.Content>
|
|
65
|
-
<
|
|
66
|
-
|
|
93
|
+
<Heading spacing id="header123" level="1" size="large">
|
|
94
|
+
Header
|
|
95
|
+
</Heading>
|
|
96
|
+
<Heading spacing level="2" size="medium">
|
|
97
|
+
Header
|
|
98
|
+
</Heading>
|
|
99
|
+
<BodyLong>Voluptate laboris mollit dolore qui. Magna elit.</BodyLong>
|
|
67
100
|
</Modal.Content>
|
|
68
101
|
</Modal>
|
|
69
102
|
</>
|
|
@@ -2,14 +2,37 @@ import React from "react";
|
|
|
2
2
|
import { Panel } from "../index";
|
|
3
3
|
import { Meta } from "@storybook/react/types-6-0";
|
|
4
4
|
export default {
|
|
5
|
-
title: "ds-react/
|
|
5
|
+
title: "ds-react/Panel",
|
|
6
6
|
component: Panel,
|
|
7
|
+
argTypes: {
|
|
8
|
+
border: {
|
|
9
|
+
defaultValue: true,
|
|
10
|
+
control: {
|
|
11
|
+
type: "boolean",
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
},
|
|
7
15
|
} as Meta;
|
|
8
16
|
|
|
9
|
-
export const
|
|
17
|
+
export const Default = (props) => {
|
|
10
18
|
return (
|
|
11
|
-
<
|
|
12
|
-
|
|
19
|
+
<Panel {...props}>
|
|
20
|
+
Eu quis exercitation voluptate ex. Aute irure esse occaecat minim
|
|
21
|
+
cupidatat velit minim duis sint culpa anim laboris. Consectetur nulla eu
|
|
22
|
+
commodo ea culpa velit commodo incididunt sunt ipsum. Amet anim
|
|
23
|
+
adipisicing minim ipsum do. Non laborum culpa reprehenderit est sint
|
|
24
|
+
officia quis excepteur. Fugiat eiusmod eiusmod commodo incididunt nisi
|
|
25
|
+
minim ex eu cupidatat quis ex. Lorem irure ea ea enim consectetur ea
|
|
26
|
+
aliqua cupidatat. Officia aute veniam aute exercitation ipsum aliqua
|
|
27
|
+
adipisicing. Est aliqua ad ullamco aute nostrud amet ea adipisicing
|
|
28
|
+
consequat id officia irure pariatur. Eu mollit amet culpa culpa velit.
|
|
29
|
+
</Panel>
|
|
30
|
+
);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export const Border = () => {
|
|
34
|
+
return (
|
|
35
|
+
<div className="colgap">
|
|
13
36
|
<Panel>
|
|
14
37
|
Eu quis exercitation voluptate ex. Aute irure esse occaecat minim
|
|
15
38
|
cupidatat velit minim duis sint culpa anim laboris. Consectetur nulla eu
|
|
@@ -21,7 +44,6 @@ export const All = () => {
|
|
|
21
44
|
adipisicing. Est aliqua ad ullamco aute nostrud amet ea adipisicing
|
|
22
45
|
consequat id officia irure pariatur. Eu mollit amet culpa culpa velit.
|
|
23
46
|
</Panel>
|
|
24
|
-
<h2>With border</h2>
|
|
25
47
|
<Panel border>
|
|
26
48
|
Eu quis exercitation voluptate ex. Aute irure esse occaecat minim
|
|
27
49
|
cupidatat velit minim duis sint culpa anim laboris. Consectetur nulla eu
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import React, { useState } from "react";
|
|
2
|
+
import { Popover } from "../index";
|
|
3
|
+
import { placements } from "@popperjs/core";
|
|
4
|
+
import { Button } from "../button";
|
|
5
|
+
|
|
6
|
+
export default {
|
|
7
|
+
title: "ds-react/Popover",
|
|
8
|
+
component: Popover,
|
|
9
|
+
parameters: {
|
|
10
|
+
chromatic: { disable: true },
|
|
11
|
+
},
|
|
12
|
+
argTypes: {
|
|
13
|
+
open: {
|
|
14
|
+
control: {
|
|
15
|
+
type: "boolean",
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
arrow: {
|
|
19
|
+
control: {
|
|
20
|
+
type: "boolean",
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
offset: {
|
|
24
|
+
control: {
|
|
25
|
+
type: "number",
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
strategy: {
|
|
29
|
+
defaultValue: "fixed",
|
|
30
|
+
control: {
|
|
31
|
+
type: "radio",
|
|
32
|
+
options: ["fixed", "absolute"],
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
placement: {
|
|
36
|
+
defaultValue: "bottom",
|
|
37
|
+
control: {
|
|
38
|
+
type: "radio",
|
|
39
|
+
options: [
|
|
40
|
+
"bottom",
|
|
41
|
+
"right",
|
|
42
|
+
"left",
|
|
43
|
+
"top-start",
|
|
44
|
+
"top-end",
|
|
45
|
+
"bottom-start",
|
|
46
|
+
"bottom-end",
|
|
47
|
+
"right-start",
|
|
48
|
+
"right-end",
|
|
49
|
+
"left-start",
|
|
50
|
+
"left-end",
|
|
51
|
+
"auto",
|
|
52
|
+
"auto-start",
|
|
53
|
+
"auto-end",
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export const Default = (props: any) => {
|
|
61
|
+
const [anchorEl, setAnchorEl] = useState(null);
|
|
62
|
+
const [open, setOpen] = useState<boolean>(false);
|
|
63
|
+
return (
|
|
64
|
+
<>
|
|
65
|
+
<Button ref={(el) => setAnchorEl(el)} onClick={() => setOpen((x) => !x)}>
|
|
66
|
+
Open
|
|
67
|
+
</Button>
|
|
68
|
+
<Popover
|
|
69
|
+
{...props}
|
|
70
|
+
open={props.open ?? open}
|
|
71
|
+
anchorEl={anchorEl}
|
|
72
|
+
onClose={() => setOpen(false)}
|
|
73
|
+
>
|
|
74
|
+
<Popover.Content>
|
|
75
|
+
Velit in consequat Lorem sunt ut deserunt nostrud enim enim sint
|
|
76
|
+
cillum ad veniam.
|
|
77
|
+
</Popover.Content>
|
|
78
|
+
</Popover>
|
|
79
|
+
</>
|
|
80
|
+
);
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
const Template = (props) => {
|
|
84
|
+
const [anchorEl, setAnchorEl] = useState(null);
|
|
85
|
+
|
|
86
|
+
return (
|
|
87
|
+
<>
|
|
88
|
+
<Button ref={(el) => setAnchorEl(el)}>X</Button>
|
|
89
|
+
<Popover {...props} open anchorEl={anchorEl}>
|
|
90
|
+
<Popover.Content>
|
|
91
|
+
Velit in consequat Lorem
|
|
92
|
+
<br />
|
|
93
|
+
sunt Pariatur ullamco ullamco
|
|
94
|
+
</Popover.Content>
|
|
95
|
+
</Popover>
|
|
96
|
+
</>
|
|
97
|
+
);
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
export const Placement = () => {
|
|
101
|
+
return (
|
|
102
|
+
<div className="colgap" style={{ gap: "12rem" }}>
|
|
103
|
+
{placements.map((placement) => (
|
|
104
|
+
<Template key={placement} placement={placement} />
|
|
105
|
+
))}
|
|
106
|
+
</div>
|
|
107
|
+
);
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
export const Arrow = () => {
|
|
111
|
+
return (
|
|
112
|
+
<div className="colgap" style={{ gap: "12rem" }}>
|
|
113
|
+
<Template arrow />
|
|
114
|
+
<Template arrow={false} />
|
|
115
|
+
</div>
|
|
116
|
+
);
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
export const Offset = () => {
|
|
120
|
+
return (
|
|
121
|
+
<div className="colgap" style={{ gap: "12rem" }}>
|
|
122
|
+
<Template arrow offset={30} />
|
|
123
|
+
<Template arrow={false} offset={30} />
|
|
124
|
+
</div>
|
|
125
|
+
);
|
|
126
|
+
};
|
|
@@ -3,76 +3,73 @@ import { Table } from "..";
|
|
|
3
3
|
import { Link } from "../..";
|
|
4
4
|
|
|
5
5
|
export default {
|
|
6
|
-
title: "ds-react/
|
|
6
|
+
title: "ds-react/Table",
|
|
7
7
|
component: Table,
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
export const Expandable = () => {
|
|
11
|
-
const [open, setOpen] = useState(false);
|
|
12
|
-
|
|
13
11
|
return (
|
|
14
|
-
|
|
15
|
-
<Table
|
|
16
|
-
<Table.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
<Table.HeaderCell key={key}>{name}</Table.HeaderCell>
|
|
20
|
-
))}
|
|
21
|
-
<Table.HeaderCell />
|
|
22
|
-
</Table.Row>
|
|
23
|
-
</Table.Header>
|
|
24
|
-
<Table.Body>
|
|
25
|
-
{data.map((data) => (
|
|
26
|
-
<Table.ExpandableRow
|
|
27
|
-
expansionDisabled={data.animal === "Sel"}
|
|
28
|
-
content={data.content}
|
|
29
|
-
key={data.name}
|
|
30
|
-
togglePlacement="right"
|
|
31
|
-
>
|
|
32
|
-
{columns.map(({ key }) => (
|
|
33
|
-
<Table.DataCell key={key}>{data[key]}</Table.DataCell>
|
|
34
|
-
))}
|
|
35
|
-
</Table.ExpandableRow>
|
|
12
|
+
<Table zebraStripes>
|
|
13
|
+
<Table.Header>
|
|
14
|
+
<Table.Row>
|
|
15
|
+
{columns.map(({ key, name }) => (
|
|
16
|
+
<Table.HeaderCell key={key}>{name}</Table.HeaderCell>
|
|
36
17
|
))}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
<Table
|
|
41
|
-
|
|
42
|
-
<Table.
|
|
43
|
-
|
|
44
|
-
{
|
|
45
|
-
|
|
18
|
+
<Table.HeaderCell />
|
|
19
|
+
</Table.Row>
|
|
20
|
+
</Table.Header>
|
|
21
|
+
<Table.Body>
|
|
22
|
+
{data.map((data) => (
|
|
23
|
+
<Table.ExpandableRow
|
|
24
|
+
expansionDisabled={data.animal === "Sel"}
|
|
25
|
+
content={data.content}
|
|
26
|
+
key={data.name}
|
|
27
|
+
togglePlacement="right"
|
|
28
|
+
>
|
|
29
|
+
{columns.map(({ key }) => (
|
|
30
|
+
<Table.DataCell key={key}>{data[key]}</Table.DataCell>
|
|
46
31
|
))}
|
|
47
|
-
</Table.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
{
|
|
62
|
-
<Table.
|
|
63
|
-
content={data.content}
|
|
64
|
-
key={data.name}
|
|
65
|
-
open={open}
|
|
66
|
-
onOpenChange={(open) => setOpen(open)}
|
|
67
|
-
>
|
|
68
|
-
{columns.map(({ key }) => (
|
|
69
|
-
<Table.DataCell key={key}>{data[key]}</Table.DataCell>
|
|
70
|
-
))}
|
|
71
|
-
</Table.ExpandableRow>
|
|
32
|
+
</Table.ExpandableRow>
|
|
33
|
+
))}
|
|
34
|
+
</Table.Body>
|
|
35
|
+
</Table>
|
|
36
|
+
);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const ExpandableSmall = () => {
|
|
40
|
+
const [open, setOpen] = useState(false);
|
|
41
|
+
return (
|
|
42
|
+
<Table size="small">
|
|
43
|
+
<Table.Header>
|
|
44
|
+
<Table.Row>
|
|
45
|
+
<Table.HeaderCell />
|
|
46
|
+
{columns.map(({ key, name }) => (
|
|
47
|
+
<Table.HeaderCell key={key}>{name}</Table.HeaderCell>
|
|
72
48
|
))}
|
|
73
|
-
</Table.
|
|
74
|
-
</Table>
|
|
75
|
-
|
|
49
|
+
</Table.Row>
|
|
50
|
+
</Table.Header>
|
|
51
|
+
<Table.Body>
|
|
52
|
+
{data.slice(0, 1).map((data) => (
|
|
53
|
+
<Table.ExpandableRow content={data.content} key={data.name}>
|
|
54
|
+
{columns.map(({ key }) => (
|
|
55
|
+
<Table.DataCell key={key}>{data[key]}</Table.DataCell>
|
|
56
|
+
))}
|
|
57
|
+
</Table.ExpandableRow>
|
|
58
|
+
))}
|
|
59
|
+
{data.slice(1, 2).map((data) => (
|
|
60
|
+
<Table.ExpandableRow
|
|
61
|
+
content={data.content}
|
|
62
|
+
key={data.name}
|
|
63
|
+
open={open}
|
|
64
|
+
onOpenChange={(open) => setOpen(open)}
|
|
65
|
+
>
|
|
66
|
+
{columns.map(({ key }) => (
|
|
67
|
+
<Table.DataCell key={key}>{data[key]}</Table.DataCell>
|
|
68
|
+
))}
|
|
69
|
+
</Table.ExpandableRow>
|
|
70
|
+
))}
|
|
71
|
+
</Table.Body>
|
|
72
|
+
</Table>
|
|
76
73
|
);
|
|
77
74
|
};
|
|
78
75
|
|
|
@@ -200,3 +197,33 @@ const data = [
|
|
|
200
197
|
),
|
|
201
198
|
},
|
|
202
199
|
];
|
|
200
|
+
|
|
201
|
+
export const ExpandableOpen = () => {
|
|
202
|
+
return (
|
|
203
|
+
<Table zebraStripes>
|
|
204
|
+
<Table.Header>
|
|
205
|
+
<Table.Row>
|
|
206
|
+
{columns.map(({ key, name }) => (
|
|
207
|
+
<Table.HeaderCell key={key}>{name}</Table.HeaderCell>
|
|
208
|
+
))}
|
|
209
|
+
<Table.HeaderCell />
|
|
210
|
+
</Table.Row>
|
|
211
|
+
</Table.Header>
|
|
212
|
+
<Table.Body>
|
|
213
|
+
{data.map((data) => (
|
|
214
|
+
<Table.ExpandableRow
|
|
215
|
+
expansionDisabled={data.animal === "Sel"}
|
|
216
|
+
content={data.content}
|
|
217
|
+
key={data.name}
|
|
218
|
+
togglePlacement="right"
|
|
219
|
+
defaultOpen
|
|
220
|
+
>
|
|
221
|
+
{columns.map(({ key }) => (
|
|
222
|
+
<Table.DataCell key={key}>{data[key]}</Table.DataCell>
|
|
223
|
+
))}
|
|
224
|
+
</Table.ExpandableRow>
|
|
225
|
+
))}
|
|
226
|
+
</Table.Body>
|
|
227
|
+
</Table>
|
|
228
|
+
);
|
|
229
|
+
};
|