@navikt/ds-react 5.18.1 → 5.18.3
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/date/parts/DateWrapper.js +2 -2
- package/cjs/form/search/Search.js +1 -1
- package/cjs/modal/Modal.context.js +9 -0
- package/cjs/modal/Modal.js +3 -6
- package/cjs/modal/ModalHeader.js +2 -6
- package/cjs/popover/Popover.js +2 -2
- package/cjs/tooltip/Tooltip.js +3 -3
- package/cjs/util/create-context.js +9 -5
- package/esm/date/parts/DateWrapper.js +3 -3
- package/esm/date/parts/DateWrapper.js.map +1 -1
- package/esm/form/search/Search.js +1 -1
- package/esm/modal/Modal.context.d.ts +9 -0
- package/esm/modal/Modal.context.js +6 -0
- package/esm/modal/Modal.context.js.map +1 -0
- package/esm/modal/Modal.js +3 -6
- package/esm/modal/Modal.js.map +1 -1
- package/esm/modal/ModalHeader.js +3 -7
- package/esm/modal/ModalHeader.js.map +1 -1
- package/esm/popover/Popover.js +2 -2
- package/esm/popover/Popover.js.map +1 -1
- package/esm/tooltip/Tooltip.js +4 -4
- package/esm/tooltip/Tooltip.js.map +1 -1
- package/esm/util/create-context.d.ts +2 -5
- package/esm/util/create-context.js +10 -6
- package/esm/util/create-context.js.map +1 -1
- package/package.json +3 -3
- package/src/accordion/accordion.stories.tsx +121 -135
- package/src/chat/chat.stories.tsx +284 -206
- package/src/date/parts/DateWrapper.tsx +3 -3
- package/src/form/search/Search.tsx +3 -3
- package/src/modal/Modal.context.ts +13 -0
- package/src/modal/Modal.tsx +6 -8
- package/src/modal/ModalHeader.tsx +3 -7
- package/src/popover/Popover.tsx +2 -2
- package/src/table/stories/{table.stories.tsx → table-1.stories.tsx} +117 -94
- package/src/table/stories/{table-expandable.stories.tsx → table-2-expandable.stories.tsx} +6 -32
- package/src/table/stories/{table-async.stories.tsx → table-3-async.stories.tsx} +1 -1
- package/src/table/stories/tests/table.stories.tsx +3 -0
- package/src/tabs/Tabs.test.tsx +109 -0
- package/src/toggle-group/ToggleGroup.test.tsx +54 -0
- package/src/tooltip/Tooltip.tsx +4 -10
- package/src/typography/stories/bodylong.stories.tsx +47 -1
- package/src/typography/stories/bodyshort.stories.tsx +48 -2
- package/src/typography/stories/detail.stories.tsx +30 -1
- package/src/typography/stories/error-message.stories.tsx +32 -1
- package/src/typography/stories/heading.stories.tsx +30 -1
- package/src/typography/stories/label.stories.tsx +36 -1
- package/src/util/create-context.tsx +26 -15
- package/cjs/modal/ModalContext.js +0 -8
- package/esm/modal/ModalContext.d.ts +0 -7
- package/esm/modal/ModalContext.js +0 -3
- package/esm/modal/ModalContext.js.map +0 -1
- package/src/modal/ModalContext.ts +0 -7
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { StoryObj } from "@storybook/react";
|
|
1
2
|
import React, { useState } from "react";
|
|
2
3
|
import { Accordion, AccordionProps } from ".";
|
|
3
|
-
import { Table } from "../table";
|
|
4
4
|
import AccordionContent from "./AccordionContent";
|
|
5
5
|
import AccordionHeader from "./AccordionHeader";
|
|
6
6
|
import AccordionItem from "./AccordionItem";
|
|
@@ -13,13 +13,15 @@ export default {
|
|
|
13
13
|
AccordionContent,
|
|
14
14
|
AccordionHeader,
|
|
15
15
|
},
|
|
16
|
+
parameters: {
|
|
17
|
+
chromatic: { disable: true },
|
|
18
|
+
},
|
|
16
19
|
decorators: [
|
|
17
20
|
(Story) => (
|
|
18
21
|
<div
|
|
19
22
|
style={{
|
|
20
23
|
width: "600px",
|
|
21
24
|
minHeight: "100vh",
|
|
22
|
-
padding: "10rem 0",
|
|
23
25
|
display: "flex",
|
|
24
26
|
flexDirection: "column",
|
|
25
27
|
gap: "1rem",
|
|
@@ -29,25 +31,10 @@ export default {
|
|
|
29
31
|
</div>
|
|
30
32
|
),
|
|
31
33
|
],
|
|
32
|
-
argTypes: {
|
|
33
|
-
variant: {
|
|
34
|
-
options: ["default", "neutral"],
|
|
35
|
-
control: { type: "select" },
|
|
36
|
-
},
|
|
37
|
-
headingSize: {
|
|
38
|
-
options: ["large", "medium", "small", "xsmall"],
|
|
39
|
-
control: { type: "select" },
|
|
40
|
-
},
|
|
41
|
-
size: {
|
|
42
|
-
options: ["large", "medium", "small"],
|
|
43
|
-
control: { type: "select" },
|
|
44
|
-
},
|
|
45
|
-
nItems: {
|
|
46
|
-
control: { type: "number" },
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
34
|
};
|
|
50
35
|
|
|
36
|
+
type Story = StoryObj<typeof Accordion>;
|
|
37
|
+
|
|
51
38
|
const Content = () => (
|
|
52
39
|
<Accordion.Content>
|
|
53
40
|
Magna aliquip aliquip fugiat nostrud nostrud velit pariatur veniam officia
|
|
@@ -103,22 +90,34 @@ const Item = (props) => {
|
|
|
103
90
|
);
|
|
104
91
|
};
|
|
105
92
|
|
|
106
|
-
export const
|
|
107
|
-
render: ({
|
|
93
|
+
export const Controls: Story = {
|
|
94
|
+
render: ({ ...props }) => {
|
|
108
95
|
return (
|
|
109
96
|
<div style={{ width: 500 }}>
|
|
110
97
|
<Accordion {...props}>
|
|
111
|
-
{[...Array(
|
|
98
|
+
{[...Array(4)].map((_, y) => (
|
|
112
99
|
<Item key={y} {...props} />
|
|
113
100
|
))}
|
|
114
101
|
</Accordion>
|
|
115
102
|
</div>
|
|
116
103
|
);
|
|
117
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
|
+
},
|
|
118
119
|
|
|
119
120
|
args: {
|
|
120
|
-
controlled: false,
|
|
121
|
-
nItems: 2,
|
|
122
121
|
variant: "default",
|
|
123
122
|
headingSize: "medium",
|
|
124
123
|
size: "medium",
|
|
@@ -126,37 +125,31 @@ export const Default = {
|
|
|
126
125
|
},
|
|
127
126
|
};
|
|
128
127
|
|
|
129
|
-
export const DefaultOpen = {
|
|
130
|
-
render: (
|
|
128
|
+
export const DefaultOpen: Story = {
|
|
129
|
+
render: () => {
|
|
131
130
|
return (
|
|
132
131
|
<div style={{ width: 500 }}>
|
|
133
|
-
<Accordion
|
|
134
|
-
{[...Array(
|
|
135
|
-
<Item key={y} defaultOpen={
|
|
132
|
+
<Accordion>
|
|
133
|
+
{[...Array(4)].map((_, y) => (
|
|
134
|
+
<Item key={y} defaultOpen={y === 2} />
|
|
136
135
|
))}
|
|
137
136
|
</Accordion>
|
|
138
137
|
</div>
|
|
139
138
|
);
|
|
140
139
|
},
|
|
141
|
-
|
|
142
|
-
args: {
|
|
143
|
-
openItems: [1, 2],
|
|
144
|
-
controlled: false,
|
|
145
|
-
nItems: 5,
|
|
146
|
-
variant: "neutral",
|
|
147
|
-
headingSize: "large",
|
|
148
|
-
},
|
|
149
140
|
};
|
|
150
141
|
|
|
151
|
-
export const Variants = {
|
|
142
|
+
export const Variants: Story = {
|
|
152
143
|
render: () => {
|
|
153
144
|
return (
|
|
154
145
|
<div style={{ width: 500 }} className="colgap">
|
|
146
|
+
<h3>Default</h3>
|
|
155
147
|
<Accordion>
|
|
156
148
|
{[...Array(2)].map((_, y) => (
|
|
157
149
|
<Item key={y} defaultOpen />
|
|
158
150
|
))}
|
|
159
151
|
</Accordion>
|
|
152
|
+
<h3>Neutral</h3>
|
|
160
153
|
<Accordion variant="neutral">
|
|
161
154
|
{[...Array(2)].map((_, y) => (
|
|
162
155
|
<Item key={y} defaultOpen />
|
|
@@ -167,96 +160,32 @@ export const Variants = {
|
|
|
167
160
|
},
|
|
168
161
|
};
|
|
169
162
|
|
|
170
|
-
export const
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
<Accordion {...props}>
|
|
177
|
-
<Accordion.Item open={open}>
|
|
178
|
-
<Accordion.Header onClick={() => setOpen(!open)}>
|
|
179
|
-
Accordion header text
|
|
180
|
-
</Accordion.Header>
|
|
181
|
-
<Content />
|
|
182
|
-
</Accordion.Item>
|
|
183
|
-
<Accordion.Item open={open2}>
|
|
184
|
-
<Accordion.Header onClick={() => setOpen2(!open2)}>
|
|
185
|
-
Accordion header text
|
|
186
|
-
</Accordion.Header>
|
|
187
|
-
<Content />
|
|
188
|
-
</Accordion.Item>
|
|
189
|
-
</Accordion>
|
|
190
|
-
</div>
|
|
191
|
-
);
|
|
192
|
-
};
|
|
193
|
-
|
|
194
|
-
export const WithTable = {
|
|
195
|
-
render: (props) => {
|
|
196
|
-
const ExampleTable = () => {
|
|
197
|
-
return (
|
|
198
|
-
<Table>
|
|
199
|
-
<Table.Header>
|
|
200
|
-
<Table.Row>
|
|
201
|
-
<Table.HeaderCell>ID</Table.HeaderCell>
|
|
202
|
-
<Table.HeaderCell>Fornavn</Table.HeaderCell>
|
|
203
|
-
<Table.HeaderCell>Etternavn</Table.HeaderCell>
|
|
204
|
-
<Table.HeaderCell>Rolle</Table.HeaderCell>
|
|
205
|
-
</Table.Row>
|
|
206
|
-
</Table.Header>
|
|
207
|
-
<Table.Body>
|
|
208
|
-
<Table.Row>
|
|
209
|
-
<Table.HeaderCell>1</Table.HeaderCell>
|
|
210
|
-
<Table.DataCell>Jean-Luc</Table.DataCell>
|
|
211
|
-
<Table.DataCell>Picard</Table.DataCell>
|
|
212
|
-
<Table.DataCell>Kaptein</Table.DataCell>
|
|
213
|
-
</Table.Row>
|
|
214
|
-
<Table.Row>
|
|
215
|
-
<Table.HeaderCell>2</Table.HeaderCell>
|
|
216
|
-
<Table.DataCell>William</Table.DataCell>
|
|
217
|
-
<Table.DataCell>Riker</Table.DataCell>
|
|
218
|
-
<Table.DataCell>Kommandør</Table.DataCell>
|
|
219
|
-
</Table.Row>
|
|
220
|
-
<Table.Row>
|
|
221
|
-
<Table.HeaderCell>3</Table.HeaderCell>
|
|
222
|
-
<Table.DataCell>Geordi</Table.DataCell>
|
|
223
|
-
<Table.DataCell>La Forge</Table.DataCell>
|
|
224
|
-
<Table.DataCell>Sjefsingeniør</Table.DataCell>
|
|
225
|
-
</Table.Row>
|
|
226
|
-
</Table.Body>
|
|
227
|
-
</Table>
|
|
228
|
-
);
|
|
229
|
-
};
|
|
230
|
-
|
|
231
|
-
const ContentWithTable = () => {
|
|
232
|
-
return (
|
|
233
|
-
<Accordion.Content>
|
|
234
|
-
<ExampleTable />
|
|
235
|
-
</Accordion.Content>
|
|
236
|
-
);
|
|
237
|
-
};
|
|
163
|
+
export const ControlledState: Story = {
|
|
164
|
+
render: () => {
|
|
165
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
166
|
+
const [open, setOpen] = useState(false);
|
|
167
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
168
|
+
const [open2, setOpen2] = useState(false);
|
|
238
169
|
|
|
239
170
|
return (
|
|
240
171
|
<div style={{ width: 500 }}>
|
|
241
|
-
<Accordion
|
|
242
|
-
<Accordion.Item>
|
|
243
|
-
<Accordion.Header
|
|
244
|
-
|
|
172
|
+
<Accordion>
|
|
173
|
+
<Accordion.Item open={open}>
|
|
174
|
+
<Accordion.Header onClick={() => setOpen(!open)}>
|
|
175
|
+
Accordion header text
|
|
176
|
+
</Accordion.Header>
|
|
177
|
+
<Content />
|
|
245
178
|
</Accordion.Item>
|
|
246
|
-
<Accordion.Item>
|
|
247
|
-
<Accordion.Header
|
|
248
|
-
|
|
179
|
+
<Accordion.Item open={open2}>
|
|
180
|
+
<Accordion.Header onClick={() => setOpen2(!open2)}>
|
|
181
|
+
Accordion header text
|
|
182
|
+
</Accordion.Header>
|
|
183
|
+
<Content />
|
|
249
184
|
</Accordion.Item>
|
|
250
185
|
</Accordion>
|
|
251
186
|
</div>
|
|
252
187
|
);
|
|
253
188
|
},
|
|
254
|
-
|
|
255
|
-
args: {
|
|
256
|
-
variant: "default",
|
|
257
|
-
headingSize: "large",
|
|
258
|
-
indent: false,
|
|
259
|
-
},
|
|
260
189
|
};
|
|
261
190
|
|
|
262
191
|
const SingleHeaderAccordion = ({
|
|
@@ -269,9 +198,11 @@ const SingleHeaderAccordion = ({
|
|
|
269
198
|
<Accordion.Header>{`${size} size + ${headingSize} heading`}</Accordion.Header>
|
|
270
199
|
<Accordion.Content>a</Accordion.Content>
|
|
271
200
|
</Accordion.Item>
|
|
272
|
-
<Accordion.Item>
|
|
201
|
+
<Accordion.Item open>
|
|
273
202
|
<Accordion.Header>{`${size} size + ${headingSize} heading`}</Accordion.Header>
|
|
274
|
-
<Accordion.Content>
|
|
203
|
+
<Accordion.Content>
|
|
204
|
+
lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
205
|
+
</Accordion.Content>
|
|
275
206
|
</Accordion.Item>
|
|
276
207
|
</Accordion>
|
|
277
208
|
);
|
|
@@ -285,18 +216,73 @@ const headingSizes: AccordionProps["headingSize"][] = [
|
|
|
285
216
|
"xsmall",
|
|
286
217
|
];
|
|
287
218
|
|
|
288
|
-
export const Size =
|
|
289
|
-
|
|
290
|
-
{
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
219
|
+
export const Size: Story = {
|
|
220
|
+
render: () => (
|
|
221
|
+
<div style={{ width: 500 }} className="colgap">
|
|
222
|
+
{sizes.map((size) => (
|
|
223
|
+
<SingleHeaderAccordion key={size} size={size} />
|
|
224
|
+
))}
|
|
225
|
+
</div>
|
|
226
|
+
),
|
|
227
|
+
};
|
|
295
228
|
|
|
296
|
-
export const HeadingSize =
|
|
297
|
-
|
|
298
|
-
{
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
229
|
+
export const HeadingSize: Story = {
|
|
230
|
+
render: () => (
|
|
231
|
+
<div style={{ width: 500 }} className="colgap">
|
|
232
|
+
{headingSizes.map((size) => (
|
|
233
|
+
<SingleHeaderAccordion key={size} headingSize={size} />
|
|
234
|
+
))}
|
|
235
|
+
</div>
|
|
236
|
+
),
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
export const Indent: Story = {
|
|
240
|
+
render: () => {
|
|
241
|
+
return (
|
|
242
|
+
<div style={{ width: 500 }} className="colgap">
|
|
243
|
+
<h3>No indent</h3>
|
|
244
|
+
<Accordion indent>
|
|
245
|
+
{[...Array(2)].map((_, y) => (
|
|
246
|
+
<Item key={y} defaultOpen />
|
|
247
|
+
))}
|
|
248
|
+
</Accordion>
|
|
249
|
+
<h3>Indent</h3>
|
|
250
|
+
<Accordion indent={false}>
|
|
251
|
+
{[...Array(2)].map((_, y) => (
|
|
252
|
+
<Item key={y} defaultOpen />
|
|
253
|
+
))}
|
|
254
|
+
</Accordion>
|
|
255
|
+
</div>
|
|
256
|
+
);
|
|
257
|
+
},
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
export const Chromatic: Story = {
|
|
261
|
+
render: (...props) => (
|
|
262
|
+
<div>
|
|
263
|
+
<div>
|
|
264
|
+
<h2>Variants</h2>
|
|
265
|
+
{Variants.render?.(...props)}
|
|
266
|
+
</div>
|
|
267
|
+
<div>
|
|
268
|
+
<h2>Size</h2>
|
|
269
|
+
{Size.render?.(...props)}
|
|
270
|
+
</div>
|
|
271
|
+
<div>
|
|
272
|
+
<h2>HeadingSize</h2>
|
|
273
|
+
{HeadingSize.render?.(...props)}
|
|
274
|
+
</div>
|
|
275
|
+
<div>
|
|
276
|
+
<h2>DefaultOpen</h2>
|
|
277
|
+
{DefaultOpen.render?.(...props)}
|
|
278
|
+
</div>
|
|
279
|
+
<div>
|
|
280
|
+
<h2>Indent</h2>
|
|
281
|
+
{Indent.render?.(...props)}
|
|
282
|
+
</div>
|
|
283
|
+
</div>
|
|
284
|
+
),
|
|
285
|
+
parameters: {
|
|
286
|
+
chromatic: { disable: false },
|
|
287
|
+
},
|
|
288
|
+
};
|