@navikt/ds-react 4.11.2 → 4.12.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/_docs.json +47 -5
- package/cjs/alert/Alert.js +1 -0
- package/cjs/copybutton/CopyButton.js +7 -3
- package/cjs/form/checkbox/Checkbox.js +3 -0
- package/cjs/form/combobox/Combobox.js +3 -2
- package/cjs/form/combobox/FilteredOptions/FilteredOptions.js +4 -5
- package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js +17 -9
- package/cjs/form/combobox/Input/Input.js +8 -4
- package/cjs/form/combobox/Input/inputContext.js +3 -1
- package/cjs/form/combobox/SelectedOptions/selectedOptionsContext.js +18 -12
- package/cjs/form/combobox/customOptionsContext.js +10 -2
- package/cjs/list/List.js +9 -5
- package/cjs/list/ListItem.js +4 -6
- package/esm/alert/Alert.js +1 -0
- package/esm/alert/Alert.js.map +1 -1
- package/esm/copybutton/CopyButton.d.ts +5 -0
- package/esm/copybutton/CopyButton.js +7 -3
- package/esm/copybutton/CopyButton.js.map +1 -1
- package/esm/form/checkbox/Checkbox.js +3 -0
- package/esm/form/checkbox/Checkbox.js.map +1 -1
- package/esm/form/combobox/Combobox.js +4 -3
- package/esm/form/combobox/Combobox.js.map +1 -1
- package/esm/form/combobox/FilteredOptions/FilteredOptions.js +4 -5
- package/esm/form/combobox/FilteredOptions/FilteredOptions.js.map +1 -1
- package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js +17 -9
- package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
- package/esm/form/combobox/Input/Input.js +8 -4
- package/esm/form/combobox/Input/Input.js.map +1 -1
- package/esm/form/combobox/Input/inputContext.d.ts +1 -0
- package/esm/form/combobox/Input/inputContext.js +3 -1
- package/esm/form/combobox/Input/inputContext.js.map +1 -1
- package/esm/form/combobox/SelectedOptions/selectedOptionsContext.js +18 -12
- package/esm/form/combobox/SelectedOptions/selectedOptionsContext.js.map +1 -1
- package/esm/form/combobox/customOptionsContext.d.ts +1 -0
- package/esm/form/combobox/customOptionsContext.js +10 -2
- package/esm/form/combobox/customOptionsContext.js.map +1 -1
- package/esm/form/combobox/types.d.ts +3 -3
- package/esm/list/List.d.ts +7 -1
- package/esm/list/List.js +9 -5
- package/esm/list/List.js.map +1 -1
- package/esm/list/ListItem.js +4 -6
- package/esm/list/ListItem.js.map +1 -1
- package/package.json +2 -2
- package/src/alert/Alert.tsx +1 -0
- package/src/alert/alert.stories.tsx +11 -1
- package/src/copybutton/CopyButton.tsx +27 -19
- package/src/copybutton/copy-button.stories.tsx +10 -0
- package/src/form/checkbox/Checkbox.tsx +17 -0
- package/src/form/combobox/Combobox.tsx +12 -1
- package/src/form/combobox/FilteredOptions/FilteredOptions.tsx +3 -5
- package/src/form/combobox/FilteredOptions/filteredOptionsContext.tsx +17 -8
- package/src/form/combobox/Input/Input.tsx +13 -4
- package/src/form/combobox/Input/inputContext.tsx +4 -1
- package/src/form/combobox/SelectedOptions/selectedOptionsContext.tsx +23 -13
- package/src/form/combobox/combobox.stories.tsx +90 -2
- package/src/form/combobox/customOptionsContext.tsx +10 -2
- package/src/form/combobox/types.ts +6 -3
- package/src/list/List.tsx +21 -5
- package/src/list/ListItem.tsx +4 -10
- package/src/list/list.stories.tsx +132 -1
package/src/list/List.tsx
CHANGED
|
@@ -24,6 +24,11 @@ export interface ListProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
24
24
|
* @default "h3"
|
|
25
25
|
*/
|
|
26
26
|
headingTag?: React.ElementType<any>;
|
|
27
|
+
/**
|
|
28
|
+
* Changes padding, height and font-size
|
|
29
|
+
* @default medium
|
|
30
|
+
*/
|
|
31
|
+
size?: "medium" | "small";
|
|
27
32
|
}
|
|
28
33
|
|
|
29
34
|
export interface ListComponent
|
|
@@ -37,13 +42,15 @@ export interface ListComponent
|
|
|
37
42
|
}
|
|
38
43
|
|
|
39
44
|
interface ListContextProps {
|
|
40
|
-
listType: "
|
|
45
|
+
listType: ListProps["as"];
|
|
41
46
|
isNested: boolean | null;
|
|
47
|
+
size: ListProps["size"];
|
|
42
48
|
}
|
|
43
49
|
|
|
44
50
|
export const ListContext = createContext<ListContextProps>({
|
|
45
51
|
listType: "ul",
|
|
46
52
|
isNested: null,
|
|
53
|
+
size: "medium",
|
|
47
54
|
});
|
|
48
55
|
|
|
49
56
|
export const List = forwardRef<HTMLDivElement, ListProps>(
|
|
@@ -55,35 +62,44 @@ export const List = forwardRef<HTMLDivElement, ListProps>(
|
|
|
55
62
|
title,
|
|
56
63
|
description,
|
|
57
64
|
headingTag = "h3",
|
|
65
|
+
size,
|
|
58
66
|
...rest
|
|
59
67
|
},
|
|
60
68
|
ref
|
|
61
69
|
) => {
|
|
62
70
|
const ariaId = useId();
|
|
63
71
|
|
|
64
|
-
const { isNested } = useContext(ListContext);
|
|
72
|
+
const { isNested, size: _size } = useContext(ListContext);
|
|
65
73
|
|
|
74
|
+
const listSize = size ?? _size ?? "medium";
|
|
66
75
|
return (
|
|
67
76
|
<ListContext.Provider
|
|
68
77
|
value={{
|
|
69
78
|
listType: ListTag,
|
|
70
79
|
isNested: isNested === null ? false : true,
|
|
80
|
+
size: listSize,
|
|
71
81
|
}}
|
|
72
82
|
>
|
|
73
83
|
<div
|
|
74
84
|
{...rest}
|
|
75
85
|
ref={ref}
|
|
76
|
-
className={cl("navds-list", className, {
|
|
86
|
+
className={cl("navds-list", `navds-list--${listSize}`, className, {
|
|
77
87
|
"navds-list--nested": isNested === null ? false : true,
|
|
78
88
|
})}
|
|
79
89
|
>
|
|
80
90
|
{title && (
|
|
81
|
-
<Heading
|
|
91
|
+
<Heading
|
|
92
|
+
id={`tittel-${ariaId}`}
|
|
93
|
+
size={listSize === "medium" ? "small" : "xsmall"}
|
|
94
|
+
as={headingTag}
|
|
95
|
+
>
|
|
82
96
|
{title}
|
|
83
97
|
</Heading>
|
|
84
98
|
)}
|
|
85
99
|
{description && (
|
|
86
|
-
<BodyShort id={`description-${ariaId}`}>
|
|
100
|
+
<BodyShort size={listSize} id={`description-${ariaId}`}>
|
|
101
|
+
{description}
|
|
102
|
+
</BodyShort>
|
|
87
103
|
)}
|
|
88
104
|
<ListTag
|
|
89
105
|
aria-labelledby={title && `tittel-${ariaId}`}
|
package/src/list/ListItem.tsx
CHANGED
|
@@ -20,7 +20,7 @@ export interface ListItemProps extends React.HTMLAttributes<HTMLLIElement> {
|
|
|
20
20
|
|
|
21
21
|
export const ListItem = forwardRef<HTMLLIElement, ListItemProps>(
|
|
22
22
|
({ className, children, title, icon, ...rest }, ref) => {
|
|
23
|
-
const { listType,
|
|
23
|
+
const { listType, size } = useContext(ListContext);
|
|
24
24
|
|
|
25
25
|
if (listType === "ol" && icon) {
|
|
26
26
|
console.warn(
|
|
@@ -29,13 +29,7 @@ export const ListItem = forwardRef<HTMLLIElement, ListItemProps>(
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
return (
|
|
32
|
-
<li
|
|
33
|
-
{...rest}
|
|
34
|
-
ref={ref}
|
|
35
|
-
className={cl("navds-list__item", className, {
|
|
36
|
-
"navds-list__item--noMargin": isNested,
|
|
37
|
-
})}
|
|
38
|
-
>
|
|
32
|
+
<li {...rest} ref={ref} className={cl("navds-list__item", className)}>
|
|
39
33
|
{listType === "ul" && (
|
|
40
34
|
<div
|
|
41
35
|
className={cl({
|
|
@@ -62,9 +56,9 @@ export const ListItem = forwardRef<HTMLLIElement, ListItemProps>(
|
|
|
62
56
|
</div>
|
|
63
57
|
)}
|
|
64
58
|
|
|
65
|
-
<BodyShort as="div" size=
|
|
59
|
+
<BodyShort as="div" size={size} className="navds-list__item-content">
|
|
66
60
|
{title && (
|
|
67
|
-
<Label as="p" size=
|
|
61
|
+
<Label as="p" size={size}>
|
|
68
62
|
{title}
|
|
69
63
|
</Label>
|
|
70
64
|
)}
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from "@navikt/aksel-icons";
|
|
7
7
|
import { Meta } from "@storybook/react";
|
|
8
8
|
import React from "react";
|
|
9
|
-
import { List } from "..";
|
|
9
|
+
import { List, VStack } from "..";
|
|
10
10
|
|
|
11
11
|
export default {
|
|
12
12
|
title: "ds-react/List",
|
|
@@ -91,6 +91,137 @@ export const WithHeading = {
|
|
|
91
91
|
},
|
|
92
92
|
};
|
|
93
93
|
|
|
94
|
+
export const SizesUl = {
|
|
95
|
+
render: () => {
|
|
96
|
+
return (
|
|
97
|
+
<VStack gap="8">
|
|
98
|
+
<List
|
|
99
|
+
title="Medium list"
|
|
100
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel risus volutpat."
|
|
101
|
+
size="medium"
|
|
102
|
+
>
|
|
103
|
+
<List.Item title="Lorem Ipsum Dolor Sit Amet">
|
|
104
|
+
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
|
105
|
+
</List.Item>
|
|
106
|
+
<List.Item title="Consectetur Adipiscing Elit">
|
|
107
|
+
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
|
108
|
+
</List.Item>
|
|
109
|
+
<List.Item>
|
|
110
|
+
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
|
111
|
+
</List.Item>
|
|
112
|
+
</List>
|
|
113
|
+
<List
|
|
114
|
+
title="Small list"
|
|
115
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel risus volutpat."
|
|
116
|
+
size="small"
|
|
117
|
+
>
|
|
118
|
+
<List.Item title="Lorem Ipsum Dolor Sit Amet">
|
|
119
|
+
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
|
120
|
+
</List.Item>
|
|
121
|
+
<List.Item title="Consectetur Adipiscing Elit">
|
|
122
|
+
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
|
123
|
+
</List.Item>
|
|
124
|
+
<List.Item>
|
|
125
|
+
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
|
126
|
+
</List.Item>
|
|
127
|
+
</List>
|
|
128
|
+
</VStack>
|
|
129
|
+
);
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
export const SizesOl = {
|
|
134
|
+
render: () => {
|
|
135
|
+
return (
|
|
136
|
+
<VStack gap="8">
|
|
137
|
+
<List
|
|
138
|
+
title="Medium list"
|
|
139
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel risus volutpat."
|
|
140
|
+
size="medium"
|
|
141
|
+
as="ol"
|
|
142
|
+
>
|
|
143
|
+
<List.Item title="Lorem Ipsum Dolor Sit Amet">
|
|
144
|
+
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
|
145
|
+
</List.Item>
|
|
146
|
+
<List.Item title="Consectetur Adipiscing Elit">
|
|
147
|
+
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
|
148
|
+
</List.Item>
|
|
149
|
+
<List.Item>
|
|
150
|
+
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
|
151
|
+
</List.Item>
|
|
152
|
+
</List>
|
|
153
|
+
<List
|
|
154
|
+
title="Small list"
|
|
155
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel risus volutpat."
|
|
156
|
+
size="small"
|
|
157
|
+
as="ol"
|
|
158
|
+
>
|
|
159
|
+
<List.Item title="Lorem Ipsum Dolor Sit Amet">
|
|
160
|
+
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
|
161
|
+
</List.Item>
|
|
162
|
+
<List.Item title="Consectetur Adipiscing Elit">
|
|
163
|
+
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
|
164
|
+
</List.Item>
|
|
165
|
+
<List.Item>
|
|
166
|
+
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
|
167
|
+
</List.Item>
|
|
168
|
+
</List>
|
|
169
|
+
</VStack>
|
|
170
|
+
);
|
|
171
|
+
},
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
export const SizesIcons = {
|
|
175
|
+
render: () => {
|
|
176
|
+
return (
|
|
177
|
+
<VStack gap="8">
|
|
178
|
+
<List
|
|
179
|
+
title="Medium list"
|
|
180
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel risus volutpat."
|
|
181
|
+
size="medium"
|
|
182
|
+
>
|
|
183
|
+
<List.Item
|
|
184
|
+
icon={<HeadHeartIcon aria-hidden />}
|
|
185
|
+
title="Lorem Ipsum Dolor Sit Amet"
|
|
186
|
+
>
|
|
187
|
+
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
|
188
|
+
</List.Item>
|
|
189
|
+
<List.Item
|
|
190
|
+
icon={<HeadHeartIcon aria-hidden />}
|
|
191
|
+
title="Consectetur Adipiscing Elit"
|
|
192
|
+
>
|
|
193
|
+
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
|
194
|
+
</List.Item>
|
|
195
|
+
<List.Item icon={<HeadHeartIcon aria-hidden />}>
|
|
196
|
+
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
|
197
|
+
</List.Item>
|
|
198
|
+
</List>
|
|
199
|
+
<List
|
|
200
|
+
title="Small list"
|
|
201
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel risus volutpat."
|
|
202
|
+
size="small"
|
|
203
|
+
>
|
|
204
|
+
<List.Item
|
|
205
|
+
icon={<HeadHeartIcon aria-hidden />}
|
|
206
|
+
title="Lorem Ipsum Dolor Sit Amet"
|
|
207
|
+
>
|
|
208
|
+
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
|
209
|
+
</List.Item>
|
|
210
|
+
<List.Item
|
|
211
|
+
icon={<HeadHeartIcon aria-hidden />}
|
|
212
|
+
title="Consectetur Adipiscing Elit"
|
|
213
|
+
>
|
|
214
|
+
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
|
215
|
+
</List.Item>
|
|
216
|
+
<List.Item icon={<HeadHeartIcon aria-hidden />}>
|
|
217
|
+
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
|
218
|
+
</List.Item>
|
|
219
|
+
</List>
|
|
220
|
+
</VStack>
|
|
221
|
+
);
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
|
|
94
225
|
export const Icons = {
|
|
95
226
|
render: () => {
|
|
96
227
|
return (
|