@navikt/ds-react 6.5.0 → 6.6.1
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/collapsible/Collapsible.context.d.ts +48 -0
- package/cjs/collapsible/Collapsible.context.js +10 -0
- package/cjs/collapsible/Collapsible.context.js.map +1 -0
- package/cjs/collapsible/Collapsible.d.ts +48 -0
- package/cjs/collapsible/Collapsible.js +91 -0
- package/cjs/collapsible/Collapsible.js.map +1 -0
- package/cjs/collapsible/Collapsible.types.d.ts +19 -0
- package/cjs/collapsible/Collapsible.types.js +3 -0
- package/cjs/collapsible/Collapsible.types.js.map +1 -0
- package/cjs/collapsible/index.d.ts +3 -0
- package/cjs/collapsible/index.js +14 -0
- package/cjs/collapsible/index.js.map +1 -0
- package/cjs/collapsible/parts/Collapsible.Content.d.ts +10 -0
- package/cjs/collapsible/parts/Collapsible.Content.js +48 -0
- package/cjs/collapsible/parts/Collapsible.Content.js.map +1 -0
- package/cjs/collapsible/parts/Collapsible.Trigger.d.ts +10 -0
- package/cjs/collapsible/parts/Collapsible.Trigger.js +49 -0
- package/cjs/collapsible/parts/Collapsible.Trigger.js.map +1 -0
- 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/layout/stack/Spacer.js +1 -1
- package/cjs/layout/stack/Spacer.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/collapsible/Collapsible.context.d.ts +48 -0
- package/esm/collapsible/Collapsible.context.js +6 -0
- package/esm/collapsible/Collapsible.context.js.map +1 -0
- package/esm/collapsible/Collapsible.d.ts +48 -0
- package/esm/collapsible/Collapsible.js +62 -0
- package/esm/collapsible/Collapsible.js.map +1 -0
- package/esm/collapsible/Collapsible.types.d.ts +19 -0
- package/esm/collapsible/Collapsible.types.js +2 -0
- package/esm/collapsible/Collapsible.types.js.map +1 -0
- package/esm/collapsible/index.d.ts +3 -0
- package/esm/collapsible/index.js +5 -0
- package/esm/collapsible/index.js.map +1 -0
- package/esm/collapsible/parts/Collapsible.Content.d.ts +10 -0
- package/esm/collapsible/parts/Collapsible.Content.js +22 -0
- package/esm/collapsible/parts/Collapsible.Content.js.map +1 -0
- package/esm/collapsible/parts/Collapsible.Trigger.d.ts +10 -0
- package/esm/collapsible/parts/Collapsible.Trigger.js +23 -0
- package/esm/collapsible/parts/Collapsible.Trigger.js.map +1 -0
- 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/layout/stack/Spacer.js +1 -1
- package/esm/layout/stack/Spacer.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/collapsible/Collapsible.context.tsx +32 -0
- package/src/collapsible/Collapsible.tsx +100 -0
- package/src/collapsible/Collapsible.types.ts +19 -0
- package/src/collapsible/index.ts +10 -0
- package/src/collapsible/parts/Collapsible.Content.tsx +39 -0
- package/src/collapsible/parts/Collapsible.Trigger.tsx +42 -0
- 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/layout/stack/Spacer.tsx +1 -1
- 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
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { Meta, StoryFn, StoryObj } from "@storybook/react";
|
|
2
|
-
import React from "react";
|
|
3
|
-
import Select, { SelectProps } from "./Select";
|
|
4
|
-
|
|
5
|
-
const meta: Meta<typeof Select> = {
|
|
6
|
-
title: "ds-react/Select",
|
|
7
|
-
component: Select,
|
|
8
|
-
parameters: {
|
|
9
|
-
chromatic: { disable: true },
|
|
10
|
-
},
|
|
11
|
-
};
|
|
12
|
-
export default meta;
|
|
13
|
-
|
|
14
|
-
const content = (
|
|
15
|
-
<>
|
|
16
|
-
<option value="">Velg land</option>
|
|
17
|
-
<option value="norge">Norge</option>
|
|
18
|
-
<option value="sverige">Sverige</option>
|
|
19
|
-
</>
|
|
20
|
-
);
|
|
21
|
-
|
|
22
|
-
export const Default: StoryFn<Omit<SelectProps, "children">> = (props) => (
|
|
23
|
-
<Select {...props}>{content}</Select>
|
|
24
|
-
);
|
|
25
|
-
Default.args = {
|
|
26
|
-
label: "Ipsum enim quis culpa",
|
|
27
|
-
};
|
|
28
|
-
Default.argTypes = {
|
|
29
|
-
description: {
|
|
30
|
-
type: "string",
|
|
31
|
-
},
|
|
32
|
-
size: {
|
|
33
|
-
control: { type: "radio" },
|
|
34
|
-
options: ["medium", "small"],
|
|
35
|
-
},
|
|
36
|
-
error: {
|
|
37
|
-
type: "string",
|
|
38
|
-
},
|
|
39
|
-
hideLabel: {
|
|
40
|
-
type: "boolean",
|
|
41
|
-
},
|
|
42
|
-
disabled: {
|
|
43
|
-
type: "boolean",
|
|
44
|
-
},
|
|
45
|
-
readOnly: {
|
|
46
|
-
type: "boolean",
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
export const Small = () => {
|
|
51
|
-
return (
|
|
52
|
-
<Select size="small" label="Ipsum enim quis culpa">
|
|
53
|
-
{content}
|
|
54
|
-
</Select>
|
|
55
|
-
);
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
export const Description = () => {
|
|
59
|
-
return (
|
|
60
|
-
<div className="colgap">
|
|
61
|
-
<Select
|
|
62
|
-
label="Ipsum enim quis culpa"
|
|
63
|
-
description="Consectetur labore velit eiusmod Lorem ut nostrud mollit labore ullamco laboris laboris in."
|
|
64
|
-
>
|
|
65
|
-
{content}
|
|
66
|
-
</Select>
|
|
67
|
-
<Select
|
|
68
|
-
label="Ipsum enim quis culpa"
|
|
69
|
-
description="Consectetur labore velit eiusmod Lorem ut nostrud mollit labore ullamco laboris laboris in."
|
|
70
|
-
size="small"
|
|
71
|
-
>
|
|
72
|
-
{content}
|
|
73
|
-
</Select>
|
|
74
|
-
</div>
|
|
75
|
-
);
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
export const Error = () => {
|
|
79
|
-
return (
|
|
80
|
-
<div className="colgap">
|
|
81
|
-
<Select
|
|
82
|
-
label="Ipsum enim quis culpa"
|
|
83
|
-
error="Consectetur labore velit eiusmod Lorem ut nostrud mollit labore ullamco laboris laboris in."
|
|
84
|
-
>
|
|
85
|
-
{content}
|
|
86
|
-
</Select>
|
|
87
|
-
<Select
|
|
88
|
-
label="Ipsum enim quis culpa"
|
|
89
|
-
error="Consectetur labore velit eiusmod Lorem ut nostrud mollit labore ullamco laboris laboris in."
|
|
90
|
-
size="small"
|
|
91
|
-
>
|
|
92
|
-
{content}
|
|
93
|
-
</Select>
|
|
94
|
-
</div>
|
|
95
|
-
);
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
export const Disabled = () => {
|
|
99
|
-
return (
|
|
100
|
-
<div className="colgap">
|
|
101
|
-
<Select label="Ipsum enim quis culpa" disabled>
|
|
102
|
-
{content}
|
|
103
|
-
</Select>
|
|
104
|
-
<Select label="Ipsum enim quis culpa" disabled size="small">
|
|
105
|
-
{content}
|
|
106
|
-
</Select>
|
|
107
|
-
</div>
|
|
108
|
-
);
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
export const HideLabel = () => {
|
|
112
|
-
return (
|
|
113
|
-
<Select label="Ipsum enim quis culpa" hideLabel>
|
|
114
|
-
{content}
|
|
115
|
-
</Select>
|
|
116
|
-
);
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
export const Readonly = () => {
|
|
120
|
-
return (
|
|
121
|
-
<div className="colgap">
|
|
122
|
-
<Select
|
|
123
|
-
label="Hvilkets land er du fra?"
|
|
124
|
-
description="Velg landet du bor 180 dagen i året"
|
|
125
|
-
readOnly
|
|
126
|
-
>
|
|
127
|
-
{content}
|
|
128
|
-
</Select>
|
|
129
|
-
<Select label="Hvilkets land er du fra?" readOnly error="feilmelding">
|
|
130
|
-
{content}
|
|
131
|
-
</Select>
|
|
132
|
-
</div>
|
|
133
|
-
);
|
|
134
|
-
};
|
|
135
|
-
|
|
136
|
-
export const Chromatic: StoryObj<typeof Select> = {
|
|
137
|
-
render: () => (
|
|
138
|
-
<div>
|
|
139
|
-
<div>
|
|
140
|
-
<h2>Default</h2>
|
|
141
|
-
<Default label="Ipsum enim quis culpa" />
|
|
142
|
-
</div>
|
|
143
|
-
<div>
|
|
144
|
-
<h2>Small</h2>
|
|
145
|
-
<Small />
|
|
146
|
-
</div>
|
|
147
|
-
<div>
|
|
148
|
-
<h2>Description</h2>
|
|
149
|
-
<Description />
|
|
150
|
-
</div>
|
|
151
|
-
<div>
|
|
152
|
-
<h2>Error</h2>
|
|
153
|
-
<Error />
|
|
154
|
-
</div>
|
|
155
|
-
<div>
|
|
156
|
-
<h2>Disabled</h2>
|
|
157
|
-
<Disabled />
|
|
158
|
-
</div>
|
|
159
|
-
<div>
|
|
160
|
-
<h2>HideLabel</h2>
|
|
161
|
-
<HideLabel />
|
|
162
|
-
</div>
|
|
163
|
-
<div>
|
|
164
|
-
<h2>Readonly</h2>
|
|
165
|
-
<Readonly />
|
|
166
|
-
</div>
|
|
167
|
-
</div>
|
|
168
|
-
),
|
|
169
|
-
parameters: {
|
|
170
|
-
chromatic: { disable: false },
|
|
171
|
-
},
|
|
172
|
-
};
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import { Meta, StoryObj } from "@storybook/react";
|
|
2
|
-
import React from "react";
|
|
3
|
-
import { VStack } from "../../layout/stack";
|
|
4
|
-
import Switch from "./Switch";
|
|
5
|
-
|
|
6
|
-
export default {
|
|
7
|
-
title: "ds-react/Switch",
|
|
8
|
-
component: Switch,
|
|
9
|
-
argTypes: {
|
|
10
|
-
size: {
|
|
11
|
-
control: {
|
|
12
|
-
type: "radio",
|
|
13
|
-
options: ["medium", "small"],
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
position: {
|
|
17
|
-
control: {
|
|
18
|
-
type: "radio",
|
|
19
|
-
options: ["right", "left"],
|
|
20
|
-
},
|
|
21
|
-
},
|
|
22
|
-
description: {
|
|
23
|
-
type: "string",
|
|
24
|
-
},
|
|
25
|
-
hideLabel: {
|
|
26
|
-
type: "boolean",
|
|
27
|
-
},
|
|
28
|
-
disabled: {
|
|
29
|
-
type: "boolean",
|
|
30
|
-
},
|
|
31
|
-
loading: {
|
|
32
|
-
type: "boolean",
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
parameters: {
|
|
36
|
-
chromatic: { disable: true },
|
|
37
|
-
},
|
|
38
|
-
} satisfies Meta<typeof Switch>;
|
|
39
|
-
|
|
40
|
-
type Story = StoryObj<typeof Switch>;
|
|
41
|
-
|
|
42
|
-
export const Default: Story = {
|
|
43
|
-
args: {
|
|
44
|
-
children: "Label text",
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export const Small: Story = {
|
|
49
|
-
args: {
|
|
50
|
-
children: "Label text",
|
|
51
|
-
size: "small",
|
|
52
|
-
},
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
export const Description: Story = {
|
|
56
|
-
args: {
|
|
57
|
-
children: "Label text",
|
|
58
|
-
description: "Cillum sint exercitation ut cillum.",
|
|
59
|
-
},
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
export const Loading: Story = {
|
|
63
|
-
render: () => {
|
|
64
|
-
return (
|
|
65
|
-
<div className="colgap">
|
|
66
|
-
<div className="colgap">
|
|
67
|
-
<Switch loading>Label text</Switch>
|
|
68
|
-
|
|
69
|
-
<Switch checked loading>
|
|
70
|
-
Label text
|
|
71
|
-
</Switch>
|
|
72
|
-
</div>
|
|
73
|
-
<div className="colgap">
|
|
74
|
-
<Switch loading size="small">
|
|
75
|
-
Label text
|
|
76
|
-
</Switch>
|
|
77
|
-
<Switch checked loading size="small">
|
|
78
|
-
Label text
|
|
79
|
-
</Switch>
|
|
80
|
-
</div>
|
|
81
|
-
</div>
|
|
82
|
-
);
|
|
83
|
-
},
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
export const Disabled: Story = {
|
|
87
|
-
render: () => (
|
|
88
|
-
<div className="colgap">
|
|
89
|
-
<Switch disabled>Label text</Switch>
|
|
90
|
-
|
|
91
|
-
<Switch checked disabled>
|
|
92
|
-
Label text
|
|
93
|
-
</Switch>
|
|
94
|
-
</div>
|
|
95
|
-
),
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
export const HideLabel: Story = {
|
|
99
|
-
render: () => (
|
|
100
|
-
<div className="colgap">
|
|
101
|
-
<Switch hideLabel>Label text</Switch>
|
|
102
|
-
|
|
103
|
-
<Switch checked hideLabel>
|
|
104
|
-
Label text
|
|
105
|
-
</Switch>
|
|
106
|
-
</div>
|
|
107
|
-
),
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
export const Readonly: Story = {
|
|
111
|
-
render: () => (
|
|
112
|
-
<div className="colgap">
|
|
113
|
-
<Switch description="Slår av alle notifikasjoner" readOnly>
|
|
114
|
-
Notifikasjoner
|
|
115
|
-
</Switch>
|
|
116
|
-
|
|
117
|
-
<Switch checked readOnly>
|
|
118
|
-
Notifikasjoner
|
|
119
|
-
</Switch>
|
|
120
|
-
</div>
|
|
121
|
-
),
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
export const Chromatic: Story = {
|
|
125
|
-
render: () => (
|
|
126
|
-
<VStack gap="4" align="start">
|
|
127
|
-
<div>
|
|
128
|
-
<h2>Default</h2>
|
|
129
|
-
{/* @ts-expect-error Args are Partial here */}
|
|
130
|
-
<Switch {...Default.args} />
|
|
131
|
-
</div>
|
|
132
|
-
<div>
|
|
133
|
-
<h2>Small</h2>
|
|
134
|
-
{/* @ts-expect-error Args are Partial here */}
|
|
135
|
-
<Switch {...Small.args} position="left" />
|
|
136
|
-
{/* @ts-expect-error Args are Partial here */}
|
|
137
|
-
<Switch {...Small.args} position="right" />
|
|
138
|
-
</div>
|
|
139
|
-
<div>
|
|
140
|
-
<h2>Description</h2>
|
|
141
|
-
{/* @ts-expect-error Args are Partial here */}
|
|
142
|
-
<Switch {...Description.args} position="left" />
|
|
143
|
-
{/* @ts-expect-error Args are Partial here */}
|
|
144
|
-
<Switch {...Description.args} position="right" />
|
|
145
|
-
</div>
|
|
146
|
-
<div>
|
|
147
|
-
<h2>Loading</h2>
|
|
148
|
-
{/* @ts-expect-error Args are Partial here */}
|
|
149
|
-
<Loading.render />
|
|
150
|
-
</div>
|
|
151
|
-
<div>
|
|
152
|
-
<h2>Disabled</h2>
|
|
153
|
-
{/* @ts-expect-error Args are Partial here */}
|
|
154
|
-
<Disabled.render />
|
|
155
|
-
</div>
|
|
156
|
-
<div>
|
|
157
|
-
<h2>HideLabel</h2>
|
|
158
|
-
{/* @ts-expect-error Args are Partial here */}
|
|
159
|
-
<HideLabel.render />
|
|
160
|
-
</div>
|
|
161
|
-
<div>
|
|
162
|
-
<h2>Readonly</h2>
|
|
163
|
-
{/* @ts-expect-error Args are Partial here */}
|
|
164
|
-
<Readonly.render />
|
|
165
|
-
</div>
|
|
166
|
-
</VStack>
|
|
167
|
-
),
|
|
168
|
-
parameters: {
|
|
169
|
-
chromatic: { disable: false },
|
|
170
|
-
},
|
|
171
|
-
};
|
|
@@ -1,254 +0,0 @@
|
|
|
1
|
-
import { Meta, StoryFn, StoryObj } from "@storybook/react";
|
|
2
|
-
import { expect, userEvent, within } from "@storybook/test";
|
|
3
|
-
import React, { useState } from "react";
|
|
4
|
-
import { Button } from "../../button";
|
|
5
|
-
import { Modal } from "../../modal";
|
|
6
|
-
import { Textarea } from "./index";
|
|
7
|
-
|
|
8
|
-
const meta: Meta<typeof Textarea> = {
|
|
9
|
-
title: "ds-react/Textarea",
|
|
10
|
-
component: Textarea,
|
|
11
|
-
};
|
|
12
|
-
export default meta;
|
|
13
|
-
|
|
14
|
-
type Story = StoryObj<typeof Textarea>;
|
|
15
|
-
|
|
16
|
-
export const Default: StoryObj<typeof Textarea> = {
|
|
17
|
-
render: (props) => {
|
|
18
|
-
return <Textarea {...props} />;
|
|
19
|
-
},
|
|
20
|
-
|
|
21
|
-
args: {
|
|
22
|
-
maxLength: 0,
|
|
23
|
-
label: "Ipsum enim quis culpa",
|
|
24
|
-
},
|
|
25
|
-
|
|
26
|
-
argTypes: {
|
|
27
|
-
resize: {
|
|
28
|
-
control: { type: "radio" },
|
|
29
|
-
options: [true, "vertical", "horizontal"],
|
|
30
|
-
},
|
|
31
|
-
size: {
|
|
32
|
-
control: { type: "radio" },
|
|
33
|
-
options: ["medium", "small"],
|
|
34
|
-
},
|
|
35
|
-
description: { type: "string" },
|
|
36
|
-
error: { type: "string" },
|
|
37
|
-
hideLabel: { type: "boolean" },
|
|
38
|
-
disabled: { type: "boolean" },
|
|
39
|
-
readOnly: { type: "boolean" },
|
|
40
|
-
maxRows: { type: "number" },
|
|
41
|
-
minRows: { type: "number" },
|
|
42
|
-
},
|
|
43
|
-
parameters: {
|
|
44
|
-
chromatic: { disable: true },
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export const Small: StoryFn = () => {
|
|
49
|
-
return <Textarea size="small" label="Ipsum enim quis culpa" />;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
export const Description: StoryFn = () => {
|
|
53
|
-
return (
|
|
54
|
-
<div className="colgap">
|
|
55
|
-
<Textarea
|
|
56
|
-
label="Ipsum enim quis culpa"
|
|
57
|
-
description="Consectetur labore velit eiusmod Lorem ut nostrud mollit labore ullamco laboris laboris in."
|
|
58
|
-
/>
|
|
59
|
-
<Textarea
|
|
60
|
-
label="Ipsum enim quis culpa"
|
|
61
|
-
description="Consectetur labore velit eiusmod Lorem ut nostrud mollit labore ullamco laboris laboris in."
|
|
62
|
-
size="small"
|
|
63
|
-
/>
|
|
64
|
-
</div>
|
|
65
|
-
);
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
export const Error: StoryFn = () => {
|
|
69
|
-
return (
|
|
70
|
-
<div className="colgap">
|
|
71
|
-
<Textarea
|
|
72
|
-
label="Ipsum enim quis culpa"
|
|
73
|
-
error="Consectetur labore velit eiusmod Lorem ut nostrud mollit labore ullamco laboris laboris in."
|
|
74
|
-
/>
|
|
75
|
-
|
|
76
|
-
<Textarea
|
|
77
|
-
label="Ipsum enim quis culpa"
|
|
78
|
-
error="Consectetur labore velit eiusmod Lorem ut nostrud mollit labore ullamco laboris laboris in."
|
|
79
|
-
size="small"
|
|
80
|
-
/>
|
|
81
|
-
|
|
82
|
-
<Textarea
|
|
83
|
-
label="Ipsum enim quis culpa"
|
|
84
|
-
error="Consectetur labore velit eiusmod Lorem ut nostrud mollit labore ullamco laboris laboris in."
|
|
85
|
-
maxLength={20}
|
|
86
|
-
/>
|
|
87
|
-
|
|
88
|
-
<Textarea
|
|
89
|
-
label="Ipsum enim quis culpa"
|
|
90
|
-
error="Consectetur labore velit eiusmod Lorem ut nostrud mollit labore ullamco laboris laboris in."
|
|
91
|
-
value="Sed dignissim sollicitudin porta."
|
|
92
|
-
maxLength={20}
|
|
93
|
-
size="small"
|
|
94
|
-
/>
|
|
95
|
-
</div>
|
|
96
|
-
);
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
export const Disabled: StoryFn = () => {
|
|
100
|
-
return (
|
|
101
|
-
<div className="colgap">
|
|
102
|
-
<Textarea label="Ipsum enim quis culpa" disabled />
|
|
103
|
-
<Textarea label="Ipsum enim quis culpa" disabled size="small" />
|
|
104
|
-
</div>
|
|
105
|
-
);
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
export const HideLabel: StoryFn = () => {
|
|
109
|
-
return <Textarea label="Ipsum enim quis culpa" hideLabel />;
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
export const MaxLength: StoryFn = () => {
|
|
113
|
-
return <Textarea maxLength={50} label="Ipsum enim quis culpa" />;
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
export const MinRows: StoryFn = () => {
|
|
117
|
-
return <Textarea minRows={5} label="Ipsum enim quis culpa" />;
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
export const MaxRows: StoryFn = () => {
|
|
121
|
-
return (
|
|
122
|
-
<Textarea
|
|
123
|
-
maxRows={3}
|
|
124
|
-
value="Aute fugiat ut culpa enim ad culpa proident adipisicing anim proident ipsum elit. Cillum Lorem magna nisi cupidatat consequat culpa. Veniam ex quis elit dolore ea cupidatat fugiat in. Sint proident magna duis consequat velit ea velit pariatur in dolore ad. Aliqua officia nostrud veniam pariatur eu sint elit qui amet."
|
|
125
|
-
label="Ipsum enim quis culpa"
|
|
126
|
-
/>
|
|
127
|
-
);
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
export const Resize: StoryFn = () => {
|
|
131
|
-
return <Textarea resize label="Ipsum enim quis culpa" />;
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
export const OnChange: StoryFn = () => {
|
|
135
|
-
return (
|
|
136
|
-
<Textarea
|
|
137
|
-
label="Ipsum enim quis culpa"
|
|
138
|
-
onChange={console.log}
|
|
139
|
-
maxLength={50}
|
|
140
|
-
/>
|
|
141
|
-
);
|
|
142
|
-
};
|
|
143
|
-
OnChange.play = async ({ canvasElement }) => {
|
|
144
|
-
const canvas = within(canvasElement);
|
|
145
|
-
const input = canvas.getByLabelText("Ipsum enim quis culpa");
|
|
146
|
-
userEvent.click(input);
|
|
147
|
-
await userEvent.type(input, "Aute fugiat ut culpa");
|
|
148
|
-
const text = canvas.getByText("30 tegn igjen");
|
|
149
|
-
expect(text).toBeVisible();
|
|
150
|
-
};
|
|
151
|
-
|
|
152
|
-
export const Controlled: StoryFn = () => {
|
|
153
|
-
const [value, setValue] = useState("");
|
|
154
|
-
return (
|
|
155
|
-
<Textarea
|
|
156
|
-
resize
|
|
157
|
-
label="Ipsum enim quis culpa"
|
|
158
|
-
value={value}
|
|
159
|
-
onChange={(event) => setValue(event.currentTarget.value)}
|
|
160
|
-
/>
|
|
161
|
-
);
|
|
162
|
-
};
|
|
163
|
-
|
|
164
|
-
export const Readonly: StoryFn = () => {
|
|
165
|
-
return (
|
|
166
|
-
<div className="colgap">
|
|
167
|
-
<Textarea
|
|
168
|
-
label="På hvilket grunnlag har du tatt denne vurderingen?"
|
|
169
|
-
description="Beskriv i korte punkter"
|
|
170
|
-
value="Denne vurderingen ble gjort på grunnlag av X og Y"
|
|
171
|
-
readOnly
|
|
172
|
-
/>
|
|
173
|
-
<Textarea
|
|
174
|
-
label="På hvilket grunnlag har du tatt denne vurderingen?"
|
|
175
|
-
readOnly
|
|
176
|
-
value="Denne vurderingen ble gjort på grunnlag av X og Y"
|
|
177
|
-
error="feilmelding"
|
|
178
|
-
/>
|
|
179
|
-
</div>
|
|
180
|
-
);
|
|
181
|
-
};
|
|
182
|
-
|
|
183
|
-
export const AutoScrollbar: StoryFn<typeof Textarea> = (props) => (
|
|
184
|
-
<div
|
|
185
|
-
style={{
|
|
186
|
-
border: "1px solid lightGreen",
|
|
187
|
-
height: "90vh",
|
|
188
|
-
display: "flex",
|
|
189
|
-
flexDirection: "column",
|
|
190
|
-
}}
|
|
191
|
-
>
|
|
192
|
-
<div style={{ border: "1px dashed gray" }}>
|
|
193
|
-
<h1>Header</h1>
|
|
194
|
-
</div>
|
|
195
|
-
<Textarea
|
|
196
|
-
{...props}
|
|
197
|
-
resize
|
|
198
|
-
label="Textarea with autoScrollbar"
|
|
199
|
-
description="Description"
|
|
200
|
-
maxLength={30}
|
|
201
|
-
UNSAFE_autoScrollbar
|
|
202
|
-
/>
|
|
203
|
-
<div style={{ border: "1px dashed gray" }}>
|
|
204
|
-
<Button>Send</Button>
|
|
205
|
-
</div>
|
|
206
|
-
</div>
|
|
207
|
-
);
|
|
208
|
-
AutoScrollbar.argTypes = {
|
|
209
|
-
error: { type: "string" },
|
|
210
|
-
hideLabel: { type: "boolean" },
|
|
211
|
-
maxRows: { type: "number" },
|
|
212
|
-
minRows: { type: "number" },
|
|
213
|
-
};
|
|
214
|
-
|
|
215
|
-
export const ModalStrictMode: StoryFn<typeof Textarea> = () => {
|
|
216
|
-
// Story added after fixing an issue where TextareaAutoSize would reach max re-renders
|
|
217
|
-
// and set the height to 2px when used in StrictMode in a Modal that is initially open.
|
|
218
|
-
return (
|
|
219
|
-
<React.StrictMode>
|
|
220
|
-
<Modal open onClose={() => null} aria-label="Modal med textarea">
|
|
221
|
-
<Modal.Body>
|
|
222
|
-
<Textarea label="Har du noen tilbakemeldinger?" />
|
|
223
|
-
</Modal.Body>
|
|
224
|
-
</Modal>
|
|
225
|
-
</React.StrictMode>
|
|
226
|
-
);
|
|
227
|
-
};
|
|
228
|
-
ModalStrictMode.parameters = {
|
|
229
|
-
chromatic: { disable: true }, // Not reproducable in Chromatic
|
|
230
|
-
};
|
|
231
|
-
|
|
232
|
-
export const Chromatic: Story = {
|
|
233
|
-
render: (props) => (
|
|
234
|
-
<div>
|
|
235
|
-
<Textarea {...props} label="Textarea" />
|
|
236
|
-
<Small />
|
|
237
|
-
<Description />
|
|
238
|
-
<Error />
|
|
239
|
-
<Disabled />
|
|
240
|
-
<HideLabel />
|
|
241
|
-
<MaxLength />
|
|
242
|
-
<MinRows />
|
|
243
|
-
<MaxRows />
|
|
244
|
-
<Resize />
|
|
245
|
-
<OnChange />
|
|
246
|
-
<Controlled />
|
|
247
|
-
<Readonly />
|
|
248
|
-
<AutoScrollbar label="autoscrollbar" />
|
|
249
|
-
</div>
|
|
250
|
-
),
|
|
251
|
-
parameters: {
|
|
252
|
-
chromatic: { disable: false },
|
|
253
|
-
},
|
|
254
|
-
};
|