@navikt/ds-react 0.19.9 → 0.19.10

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.
Files changed (39) hide show
  1. package/_docs.json +1 -1
  2. package/cjs/loader/Loader.js +2 -2
  3. package/esm/loader/Loader.d.ts +1 -1
  4. package/esm/loader/Loader.js +2 -2
  5. package/esm/loader/Loader.js.map +1 -1
  6. package/package.json +2 -2
  7. package/src/alert/alert.stories.tsx +9 -1
  8. package/src/guide-panel/guidepanel.stories.tsx +51 -0
  9. package/src/help-text/help-text.stories.tsx +53 -18
  10. package/src/link/link.stories.tsx +77 -0
  11. package/src/link-panel/link-panel.stories.tsx +57 -0
  12. package/src/loader/Loader.tsx +8 -4
  13. package/src/loader/loader.stories.tsx +79 -0
  14. package/src/modal/modal.stories.tsx +71 -38
  15. package/src/panel/{stories/panel.stories.tsx → panel.stories.tsx} +27 -5
  16. package/src/popover/popover.stories.tsx +126 -0
  17. package/src/table/stories/table-async.stories.tsx +1 -1
  18. package/src/table/stories/table-expandable.stories.tsx +89 -62
  19. package/src/table/stories/table.stories.tsx +73 -83
  20. package/src/tag/tag.stories.tsx +45 -0
  21. package/src/typography/heading.stories.tsx +75 -0
  22. package/src/typography/typography.stories.tsx +184 -111
  23. package/src/guide-panel/stories/example.css +0 -13
  24. package/src/guide-panel/stories/guidepanel.stories.mdx +0 -81
  25. package/src/guide-panel/stories/guidepanel.stories.tsx +0 -68
  26. package/src/link/stories/link.stories.mdx +0 -26
  27. package/src/link/stories/link.stories.tsx +0 -53
  28. package/src/link-panel/stories/illustration.tsx +0 -125
  29. package/src/link-panel/stories/link-panel.stories.mdx +0 -110
  30. package/src/link-panel/stories/link-panel.stories.tsx +0 -51
  31. package/src/loader/stories/loader.stories.mdx +0 -65
  32. package/src/loader/stories/loader.stories.tsx +0 -69
  33. package/src/panel/stories/panel.stories.mdx +0 -42
  34. package/src/popover/stories/popover.stories.mdx +0 -23
  35. package/src/popover/stories/popover.stories.tsx +0 -56
  36. package/src/table/stories/table-hot.stories.tsx +0 -376
  37. package/src/table/stories/table.stories.mdx +0 -112
  38. package/src/tag/stories/tag.stories.mdx +0 -56
  39. package/src/tag/stories/tag.stories.tsx +0 -32
@@ -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
+ };
@@ -5,7 +5,7 @@ import { Table } from "../index";
5
5
  import { Loader, Pagination, SortState } from "../..";
6
6
 
7
7
  export default {
8
- title: "ds-react/table",
8
+ title: "ds-react/Table",
9
9
  component: Table,
10
10
  parameters: {
11
11
  chromatic: { delay: 500 },
@@ -3,76 +3,73 @@ import { Table } from "..";
3
3
  import { Link } from "../..";
4
4
 
5
5
  export default {
6
- title: "ds-react/table",
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 zebraStripes>
16
- <Table.Header>
17
- <Table.Row>
18
- {columns.map(({ key, name }) => (
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
- </Table.Body>
38
- </Table>
39
- <h2>defaultOpen/controlled + small</h2>
40
- <Table size="small">
41
- <Table.Header>
42
- <Table.Row>
43
- <Table.HeaderCell />
44
- {columns.map(({ key, name }) => (
45
- <Table.HeaderCell key={key}>{name}</Table.HeaderCell>
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.Row>
48
- </Table.Header>
49
- <Table.Body>
50
- {data.slice(0, 1).map((data) => (
51
- <Table.ExpandableRow
52
- content={data.content}
53
- key={data.name}
54
- defaultOpen
55
- >
56
- {columns.map(({ key }) => (
57
- <Table.DataCell key={key}>{data[key]}</Table.DataCell>
58
- ))}
59
- </Table.ExpandableRow>
60
- ))}
61
- {data.slice(1, 2).map((data) => (
62
- <Table.ExpandableRow
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.Body>
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
+ };
@@ -3,85 +3,82 @@ import { Table } from "../";
3
3
  import { Alert, Button, Checkbox, Link } from "../..";
4
4
 
5
5
  export default {
6
- title: "ds-react/table",
6
+ title: "ds-react/Table",
7
7
  component: Table,
8
8
  };
9
9
 
10
- export const All = () => {
11
- const TableComponent = (props) => (
12
- <Table {...props}>
13
- <Table.Header>
14
- <Table.Row>
15
- {props.button && <Table.HeaderCell>Action</Table.HeaderCell>}
16
- <Table.HeaderCell>ID</Table.HeaderCell>
17
- <Table.HeaderCell>Fornavn</Table.HeaderCell>
18
- <Table.HeaderCell>Etternavn</Table.HeaderCell>
19
- <Table.HeaderCell>Rolle</Table.HeaderCell>
20
- </Table.Row>
21
- </Table.Header>
22
- <Table.Body>
23
- <Table.Row>
24
- {props.button && (
25
- <Table.DataCell
26
- style={{
27
- paddingTop: 6,
28
- paddingBottom: 6,
29
- }}
30
- >
31
- <Button size="xsmall">Click me!</Button>
32
- </Table.DataCell>
33
- )}
34
- <Table.HeaderCell>1</Table.HeaderCell>
35
- <Table.DataCell>Jean-Luc</Table.DataCell>
36
- <Table.DataCell>Picard</Table.DataCell>
37
- <Table.DataCell>Kaptein</Table.DataCell>
38
- </Table.Row>
39
- <Table.Row>
40
- {props.button && (
41
- <Table.DataCell
42
- style={{
43
- paddingTop: 6,
44
- paddingBottom: 6,
45
- }}
46
- >
47
- <Button size="xsmall">Click me!</Button>
48
- </Table.DataCell>
49
- )}
50
- <Table.HeaderCell>2</Table.HeaderCell>
51
- <Table.DataCell>William</Table.DataCell>
52
- <Table.DataCell>Riker</Table.DataCell>
53
- <Table.DataCell>Kommandør</Table.DataCell>
54
- </Table.Row>
55
- <Table.Row>
56
- {props.button && (
57
- <Table.DataCell
58
- style={{
59
- paddingTop: 6,
60
- paddingBottom: 6,
61
- }}
62
- >
63
- <Button size="xsmall">Click me!</Button>
64
- </Table.DataCell>
65
- )}
66
- <Table.HeaderCell>3</Table.HeaderCell>
67
- <Table.DataCell>Geordi</Table.DataCell>
68
- <Table.DataCell>La Forge</Table.DataCell>
69
- <Table.DataCell>Sjefsingeniør</Table.DataCell>
70
- </Table.Row>
71
- </Table.Body>
72
- </Table>
73
- );
10
+ const TableComponent = (props) => (
11
+ <Table {...props}>
12
+ <Table.Header>
13
+ <Table.Row>
14
+ {props.button && <Table.HeaderCell>Action</Table.HeaderCell>}
15
+ <Table.HeaderCell>ID</Table.HeaderCell>
16
+ <Table.HeaderCell>Fornavn</Table.HeaderCell>
17
+ <Table.HeaderCell>Etternavn</Table.HeaderCell>
18
+ <Table.HeaderCell>Rolle</Table.HeaderCell>
19
+ </Table.Row>
20
+ </Table.Header>
21
+ <Table.Body>
22
+ <Table.Row>
23
+ {props.button && (
24
+ <Table.DataCell
25
+ style={{
26
+ paddingTop: 6,
27
+ paddingBottom: 6,
28
+ }}
29
+ >
30
+ <Button size="xsmall">Click me!</Button>
31
+ </Table.DataCell>
32
+ )}
33
+ <Table.HeaderCell>1</Table.HeaderCell>
34
+ <Table.DataCell>Jean-Luc</Table.DataCell>
35
+ <Table.DataCell>Picard</Table.DataCell>
36
+ <Table.DataCell>Kaptein</Table.DataCell>
37
+ </Table.Row>
38
+ <Table.Row>
39
+ {props.button && (
40
+ <Table.DataCell
41
+ style={{
42
+ paddingTop: 6,
43
+ paddingBottom: 6,
44
+ }}
45
+ >
46
+ <Button size="xsmall">Click me!</Button>
47
+ </Table.DataCell>
48
+ )}
49
+ <Table.HeaderCell>2</Table.HeaderCell>
50
+ <Table.DataCell>William</Table.DataCell>
51
+ <Table.DataCell>Riker</Table.DataCell>
52
+ <Table.DataCell>Kommandør</Table.DataCell>
53
+ </Table.Row>
54
+ <Table.Row>
55
+ {props.button && (
56
+ <Table.DataCell
57
+ style={{
58
+ paddingTop: 6,
59
+ paddingBottom: 6,
60
+ }}
61
+ >
62
+ <Button size="xsmall">Click me!</Button>
63
+ </Table.DataCell>
64
+ )}
65
+ <Table.HeaderCell>3</Table.HeaderCell>
66
+ <Table.DataCell>Geordi</Table.DataCell>
67
+ <Table.DataCell>La Forge</Table.DataCell>
68
+ <Table.DataCell>Sjefsingeniør</Table.DataCell>
69
+ </Table.Row>
70
+ </Table.Body>
71
+ </Table>
72
+ );
73
+
74
+ export const Default = () => <TableComponent />;
75
+ export const Zebra = () => <TableComponent zebraStripes />;
76
+ export const Small = () => <TableComponent size="small" />;
77
+ export const Buttons = () => <TableComponent size="small" button />;
78
+
79
+ export const WithDivs = () => {
74
80
  return (
75
81
  <>
76
- <h1>Table</h1>
77
- <TableComponent />
78
- <h2>Zebra</h2>
79
- <TableComponent zebraStripes />
80
- <h2>Small Table</h2>
81
- <TableComponent size="small" />
82
- <h2>Small Table with buttons</h2>
83
- <TableComponent size="small" button />
84
- <h2>Table with divs</h2>
85
82
  <Alert variant="warning">
86
83
  Obs! Hvis man skal bygge tabeller uten å bruke vanlig {"<tabell> "}
87
84
  -markup er det svært viktig at man supplerer elementene med{" "}
@@ -147,15 +144,8 @@ export const All = () => {
147
144
  );
148
145
  };
149
146
 
150
- export const Selection = () => (
151
- <>
152
- <h1>Selection</h1>
153
- <h2>Medium</h2>
154
- <SelectionTable />
155
- <h2>Small</h2>
156
- <SelectionTable size="small" />
157
- </>
158
- );
147
+ export const Selection = () => <SelectionTable />;
148
+ export const SelectionSmall = () => <SelectionTable size="small" />;
159
149
 
160
150
  const SelectionTable = ({ size = "medium" }: { size?: "small" | "medium" }) => {
161
151
  const useToggleList = (initialState) => {
@@ -0,0 +1,45 @@
1
+ import React from "react";
2
+ import { Tag } from ".";
3
+
4
+ export default {
5
+ title: "ds-react/Tag",
6
+ component: Tag,
7
+ argTypes: {
8
+ variant: {
9
+ defaultValue: "info",
10
+ control: {
11
+ type: "radio",
12
+ options: ["error", "warning", "info", "success"],
13
+ },
14
+ },
15
+ },
16
+ };
17
+
18
+ const variants: Array<"error" | "warning" | "info" | "success"> = [
19
+ "error",
20
+ "warning",
21
+ "info",
22
+ "success",
23
+ ];
24
+
25
+ export const Default = (props) => (
26
+ <Tag variant={props.variant} size={props.size}>
27
+ {props.children}
28
+ </Tag>
29
+ );
30
+
31
+ Default.args = {
32
+ children: "Id elit esse",
33
+ };
34
+
35
+ export const Small = () => {
36
+ return (
37
+ <div className="rowgap">
38
+ {variants.map((variant, i) => (
39
+ <Tag key={variant} variant={variant} size="small">
40
+ {new Array(i + 1).fill("Id elit esse")}
41
+ </Tag>
42
+ ))}
43
+ </div>
44
+ );
45
+ };
@@ -0,0 +1,75 @@
1
+ import { Meta } from "@storybook/react";
2
+ import React from "react";
3
+ import { Heading } from "..";
4
+
5
+ export default {
6
+ title: "ds-react/Typography/Heading",
7
+ component: Heading,
8
+ argTypes: {
9
+ size: {
10
+ defaultValue: "large",
11
+ control: {
12
+ type: "radio",
13
+ options: ["xlarge", "large", "medium", "small", "xsmall"],
14
+ },
15
+ },
16
+ level: {
17
+ defaultValue: "1",
18
+ control: {
19
+ type: "radio",
20
+ options: ["1", "2", "3", "4", "5", "6"],
21
+ },
22
+ },
23
+ },
24
+ } as Meta;
25
+
26
+ const lorem = "Veniam consequat cillum";
27
+
28
+ export const Default = (props) => <Heading {...props}>{lorem}</Heading>;
29
+
30
+ Default.args = {
31
+ spacing: false,
32
+ };
33
+
34
+ export const Sizes = () => (
35
+ <div className="colgap">
36
+ <Heading level="1" size="xlarge">
37
+ {lorem}
38
+ </Heading>
39
+ <Heading level="2" size="large">
40
+ {lorem}
41
+ </Heading>
42
+ <Heading level="3" size="medium">
43
+ {lorem}
44
+ </Heading>
45
+ <Heading level="4" size="small">
46
+ {lorem}
47
+ </Heading>
48
+ <Heading level="5" size="xsmall">
49
+ {lorem}
50
+ </Heading>
51
+ </div>
52
+ );
53
+
54
+ export const Spacing = () => (
55
+ <div>
56
+ <Heading level="1" size="xlarge" spacing>
57
+ {lorem}
58
+ </Heading>
59
+ <Heading level="2" size="large" spacing>
60
+ {lorem}
61
+ </Heading>
62
+ <Heading level="3" size="medium" spacing>
63
+ {lorem}
64
+ </Heading>
65
+ <Heading level="4" size="small" spacing>
66
+ {lorem}
67
+ </Heading>
68
+ <Heading level="5" size="xsmall" spacing>
69
+ {lorem}
70
+ </Heading>
71
+ <Heading level="5" size="xsmall">
72
+ {lorem}
73
+ </Heading>
74
+ </div>
75
+ );