@norges-domstoler/dds-components 10.0.2 → 10.1.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/README.md +3 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.js +292 -1
- package/dist/cjs/components/Stack/Stack.d.ts +37 -0
- package/dist/cjs/components/Stack/Stack.stories.d.ts +10 -0
- package/dist/cjs/components/Stack/Stack.tokens.d.ts +20 -0
- package/dist/cjs/components/Stack/index.d.ts +1 -0
- package/dist/cjs/components/Table/Cell.d.ts +5 -0
- package/dist/cjs/components/Table/Row.d.ts +3 -20
- package/dist/cjs/components/Table/Table.d.ts +2 -14
- package/dist/cjs/components/Table/Table.stories.d.ts +4 -4
- package/dist/cjs/components/Table/Table.styles.d.ts +10 -0
- package/dist/cjs/components/Table/Table.tokens.d.ts +5 -0
- package/dist/cjs/components/Table/Table.types.d.ts +37 -0
- package/dist/cjs/components/Table/collapsible/CollapsibleRow.d.ts +6 -0
- package/dist/cjs/components/Table/collapsible/CollapsibleTable.d.ts +9 -0
- package/dist/cjs/components/Table/collapsible/CollapsibleTable.stories.d.ts +48 -0
- package/dist/cjs/components/Table/collapsible/Table.context.d.ts +9 -0
- package/dist/cjs/components/Table/index.d.ts +11 -3
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +2077 -792
- package/dist/components/DescriptionList/DescriptionList.js +1 -1
- package/dist/components/FileUploader/ErrorList.js +28 -0
- package/dist/components/FileUploader/File.js +69 -0
- package/dist/components/FileUploader/FileUploader.js +153 -0
- package/dist/components/FileUploader/FileUploader.tokens.js +31 -0
- package/dist/components/FileUploader/fileUploaderReducer.js +35 -0
- package/dist/components/FileUploader/useFileUploader.js +202 -0
- package/dist/components/FileUploader/utils.js +32 -0
- package/dist/components/FormGenerator/FormGenerator.js +239 -0
- package/dist/components/FormGenerator/FormGenerator.styles.js +39 -0
- package/dist/components/FormGenerator/FormGenerator.tokens.js +21 -0
- package/dist/components/ProgressTracker/ProgressTracker.tokens.js +0 -1
- package/dist/components/Search/SearchSuggestions.js +1 -1
- package/dist/components/SkipToContent/SkipToContent.js +1 -1
- package/dist/components/Stack/Stack.d.ts +37 -0
- package/dist/components/Stack/Stack.js +46 -0
- package/dist/components/Stack/Stack.stories.d.ts +10 -0
- package/dist/components/Stack/Stack.tokens.d.ts +20 -0
- package/dist/components/Stack/Stack.tokens.js +26 -0
- package/dist/components/Stack/index.d.ts +1 -0
- package/dist/components/Table/Cell.d.ts +5 -0
- package/dist/components/Table/Cell.js +13 -4
- package/dist/components/Table/Row.d.ts +3 -20
- package/dist/components/Table/Row.js +1 -25
- package/dist/components/Table/Table.d.ts +2 -14
- package/dist/components/Table/Table.js +1 -1
- package/dist/components/Table/Table.stories.d.ts +4 -4
- package/dist/components/Table/Table.styles.d.ts +10 -0
- package/dist/components/Table/Table.styles.js +28 -0
- package/dist/components/Table/Table.tokens.d.ts +5 -0
- package/dist/components/Table/Table.tokens.js +10 -2
- package/dist/components/Table/Table.types.d.ts +37 -0
- package/dist/components/Table/collapsible/CollapsibleRow.d.ts +6 -0
- package/dist/components/Table/collapsible/CollapsibleRow.js +157 -0
- package/dist/components/Table/collapsible/CollapsibleTable.d.ts +9 -0
- package/dist/components/Table/collapsible/CollapsibleTable.js +42 -0
- package/dist/components/Table/collapsible/CollapsibleTable.stories.d.ts +48 -0
- package/dist/components/Table/collapsible/Table.context.d.ts +9 -0
- package/dist/components/Table/collapsible/Table.context.js +11 -0
- package/dist/components/Table/index.d.ts +11 -3
- package/dist/components/Table/index.js +5 -1
- package/dist/components/Tooltip/Tooltip.styles.js +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +4 -1
- package/package.json +2 -2
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray, defineProperty as _defineProperty } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
3
|
+
import { useState, createElement } from 'react';
|
|
4
|
+
import { Button } from '../Button/Button.js';
|
|
5
|
+
import { Card } from '../Card/Card.js';
|
|
6
|
+
import '../Card/CardAccordion/CardAccordion.js';
|
|
7
|
+
import '../Card/CardAccordion/CardAccordionHeader.js';
|
|
8
|
+
import '../Card/CardAccordion/CardAccordionBody.js';
|
|
9
|
+
import { Checkbox } from '../Checkbox/Checkbox.js';
|
|
10
|
+
import { CheckboxGroup } from '../Checkbox/CheckboxGroup.js';
|
|
11
|
+
import { Datepicker } from '../Datepicker/Datepicker.js';
|
|
12
|
+
import { Divider } from '../Divider/Divider.js';
|
|
13
|
+
import { GlobalMessage } from '../GlobalMessage/GlobalMessage.js';
|
|
14
|
+
import { InputMessage } from '../InputMessage/InputMessage.js';
|
|
15
|
+
import { List } from '../List/List.js';
|
|
16
|
+
import { ListItem } from '../List/ListItem.js';
|
|
17
|
+
import { LocalMessage } from '../LocalMessage/LocalMessage.js';
|
|
18
|
+
import { RadioButton } from '../RadioButton/RadioButton.js';
|
|
19
|
+
import { RadioButtonGroup } from '../RadioButton/RadioButtonGroup.js';
|
|
20
|
+
import { Select } from '../Select/Select.js';
|
|
21
|
+
import { Spinner } from '../Spinner/Spinner.js';
|
|
22
|
+
import { TextInput } from '../TextInput/TextInput.js';
|
|
23
|
+
import { ToggleButton } from '../ToggleButton/ToggleButton.js';
|
|
24
|
+
import { ToggleButtonGroup } from '../ToggleButton/ToggleButtonGroup.js';
|
|
25
|
+
import { Typography } from '../Typography/Typography/Typography.js';
|
|
26
|
+
import { Label } from '../Typography/Label/Label.js';
|
|
27
|
+
import { Paragraph } from '../Typography/Paragraph/Paragraph.js';
|
|
28
|
+
import { Heading } from '../Typography/Heading/Heading.js';
|
|
29
|
+
import { Link } from '../Typography/Link/Link.js';
|
|
30
|
+
import 'tslib';
|
|
31
|
+
import { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden.js';
|
|
32
|
+
import { Grid } from '../Grid/Grid.js';
|
|
33
|
+
import { GridChild } from '../Grid/GridChild.js';
|
|
34
|
+
import { useScreenSize, ScreenSize } from '../../hooks/useScreenSize.js';
|
|
35
|
+
import { ButtonRow, FormGeneratorFlexContainer, SubContainer } from './FormGenerator.styles.js';
|
|
36
|
+
import { formGeneratorTokens } from './FormGenerator.tokens.js';
|
|
37
|
+
|
|
38
|
+
var FormGenerator = function FormGenerator(props) {
|
|
39
|
+
var _props$fields = props.fields,
|
|
40
|
+
fields = _props$fields === void 0 ? [] : _props$fields,
|
|
41
|
+
stateOnChange = props.stateOnChange;
|
|
42
|
+
var _useState = useState({}),
|
|
43
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
44
|
+
myState = _useState2[0],
|
|
45
|
+
setState = _useState2[1];
|
|
46
|
+
var fieldOnChange = function fieldOnChange(event) {
|
|
47
|
+
var _event$target = event.target,
|
|
48
|
+
id = _event$target.id,
|
|
49
|
+
name = _event$target.name,
|
|
50
|
+
value = _event$target.value,
|
|
51
|
+
checked = _event$target.checked;
|
|
52
|
+
var newState = Object.assign(Object.assign({}, myState), _defineProperty({}, name || id, event.target.type === 'checkbox' ? checked : value));
|
|
53
|
+
setState(newState);
|
|
54
|
+
stateOnChange(newState);
|
|
55
|
+
};
|
|
56
|
+
var isMultiValue = function isMultiValue(obj) {
|
|
57
|
+
return (obj === null || obj === void 0 ? void 0 : obj.values) !== undefined;
|
|
58
|
+
};
|
|
59
|
+
var selectOnChange = function selectOnChange(chosen, name) {
|
|
60
|
+
var value = null;
|
|
61
|
+
if (isMultiValue(chosen)) {
|
|
62
|
+
value = Array.isArray(chosen) ? chosen === null || chosen === void 0 ? void 0 : chosen.map(function (test) {
|
|
63
|
+
return test.value;
|
|
64
|
+
}) : null;
|
|
65
|
+
} else {
|
|
66
|
+
value = (chosen === null || chosen === void 0 ? void 0 : chosen.value) || null;
|
|
67
|
+
}
|
|
68
|
+
var newState = Object.assign(Object.assign({}, myState), _defineProperty({}, name, value));
|
|
69
|
+
setState(newState);
|
|
70
|
+
stateOnChange(newState);
|
|
71
|
+
};
|
|
72
|
+
var GetComponent = function GetComponent(field, index) {
|
|
73
|
+
switch (field.component) {
|
|
74
|
+
case 'Button':
|
|
75
|
+
return /*#__PURE__*/createElement(Button, Object.assign({}, field.props, {
|
|
76
|
+
key: index
|
|
77
|
+
}));
|
|
78
|
+
case 'Card':
|
|
79
|
+
return /*#__PURE__*/createElement(Card, Object.assign({}, field.props, {
|
|
80
|
+
key: index
|
|
81
|
+
}), field.innerHTML);
|
|
82
|
+
case 'Checkbox':
|
|
83
|
+
return /*#__PURE__*/createElement(Checkbox, Object.assign({}, field.props, {
|
|
84
|
+
key: index,
|
|
85
|
+
onChange: fieldOnChange
|
|
86
|
+
}));
|
|
87
|
+
case 'CheckboxGroup':
|
|
88
|
+
return /*#__PURE__*/createElement(CheckboxGroup, Object.assign({}, field.props, {
|
|
89
|
+
key: index
|
|
90
|
+
}), field.children.map(function (child, childIndex) {
|
|
91
|
+
return !child.hide && GetComponent(child, childIndex);
|
|
92
|
+
}));
|
|
93
|
+
case 'Datepicker':
|
|
94
|
+
return /*#__PURE__*/createElement(Datepicker, Object.assign({}, field.props, {
|
|
95
|
+
key: index,
|
|
96
|
+
onChange: fieldOnChange
|
|
97
|
+
}));
|
|
98
|
+
case 'Divider':
|
|
99
|
+
return /*#__PURE__*/createElement(Divider, Object.assign({}, field.props, {
|
|
100
|
+
key: index
|
|
101
|
+
}));
|
|
102
|
+
case 'GlobalMessage':
|
|
103
|
+
return /*#__PURE__*/createElement(GlobalMessage, Object.assign({}, field.props, {
|
|
104
|
+
key: index
|
|
105
|
+
}), field.innerHTML);
|
|
106
|
+
case 'Heading':
|
|
107
|
+
return /*#__PURE__*/createElement(Heading, Object.assign({}, field.props, {
|
|
108
|
+
key: index
|
|
109
|
+
}), field.innerHTML);
|
|
110
|
+
case 'InputMessage':
|
|
111
|
+
return /*#__PURE__*/createElement(InputMessage, Object.assign({}, field.props, {
|
|
112
|
+
key: index
|
|
113
|
+
}));
|
|
114
|
+
case 'Label':
|
|
115
|
+
return /*#__PURE__*/createElement(Label, Object.assign({}, field.props, {
|
|
116
|
+
key: index
|
|
117
|
+
}), field.innerHTML);
|
|
118
|
+
case 'Link':
|
|
119
|
+
return /*#__PURE__*/createElement(Link, Object.assign({}, field.props, {
|
|
120
|
+
key: index
|
|
121
|
+
}), field.innerHTML);
|
|
122
|
+
case 'List':
|
|
123
|
+
return /*#__PURE__*/createElement(List, Object.assign({}, field.props, {
|
|
124
|
+
key: index
|
|
125
|
+
}), field.children.map(function (child, childIndex) {
|
|
126
|
+
return !child.hide && GetComponent(child, childIndex);
|
|
127
|
+
}));
|
|
128
|
+
case 'ListItem':
|
|
129
|
+
return /*#__PURE__*/createElement(ListItem, Object.assign({}, field.props, {
|
|
130
|
+
key: index
|
|
131
|
+
}), field.innerHTML);
|
|
132
|
+
case 'LocalMessage':
|
|
133
|
+
return /*#__PURE__*/createElement(LocalMessage, Object.assign({}, field.props, {
|
|
134
|
+
key: index
|
|
135
|
+
}), field.innerHTML);
|
|
136
|
+
case 'Paragraph':
|
|
137
|
+
return /*#__PURE__*/createElement(Paragraph, Object.assign({}, field.props, {
|
|
138
|
+
key: index
|
|
139
|
+
}), field.innerHTML);
|
|
140
|
+
case 'RadioButton':
|
|
141
|
+
return /*#__PURE__*/createElement(RadioButton, Object.assign({}, field.props, {
|
|
142
|
+
key: index,
|
|
143
|
+
onChange: fieldOnChange
|
|
144
|
+
}));
|
|
145
|
+
case 'RadioButtonGroup':
|
|
146
|
+
field.props.direction = screenSize > ScreenSize.XSmall ? 'row' : 'column';
|
|
147
|
+
return /*#__PURE__*/createElement(RadioButtonGroup, Object.assign({}, field.props, {
|
|
148
|
+
key: index
|
|
149
|
+
}), field.children.map(function (child, childIndex) {
|
|
150
|
+
return !child.hide && GetComponent(child, childIndex);
|
|
151
|
+
}));
|
|
152
|
+
case 'Select':
|
|
153
|
+
return /*#__PURE__*/createElement(Select, Object.assign({}, field.props, {
|
|
154
|
+
key: index,
|
|
155
|
+
onChange: function onChange(option) {
|
|
156
|
+
return selectOnChange(option, field.name);
|
|
157
|
+
}
|
|
158
|
+
}));
|
|
159
|
+
case 'Spinner':
|
|
160
|
+
return /*#__PURE__*/createElement(Spinner, Object.assign({}, field.props, {
|
|
161
|
+
key: index
|
|
162
|
+
}));
|
|
163
|
+
case 'TextInput':
|
|
164
|
+
return /*#__PURE__*/createElement(TextInput, Object.assign({}, field.props, {
|
|
165
|
+
key: index,
|
|
166
|
+
onChange: fieldOnChange
|
|
167
|
+
}));
|
|
168
|
+
case 'ToggleButton':
|
|
169
|
+
return /*#__PURE__*/createElement(ToggleButton, Object.assign({}, field.props, {
|
|
170
|
+
key: index,
|
|
171
|
+
onChange: fieldOnChange
|
|
172
|
+
}));
|
|
173
|
+
case 'ToggleButtonGroup':
|
|
174
|
+
return /*#__PURE__*/createElement(ToggleButtonGroup, Object.assign({}, field.props, {
|
|
175
|
+
key: index
|
|
176
|
+
}), field.children.map(function (child, childIndex) {
|
|
177
|
+
return !child.hide && GetComponent(child, childIndex);
|
|
178
|
+
}));
|
|
179
|
+
case 'Typography':
|
|
180
|
+
return /*#__PURE__*/createElement(Typography, Object.assign({}, field.props, {
|
|
181
|
+
key: index
|
|
182
|
+
}), field.innerHTML);
|
|
183
|
+
case 'VisuallyHidden':
|
|
184
|
+
return /*#__PURE__*/createElement(VisuallyHidden, Object.assign({}, field.props, {
|
|
185
|
+
key: index
|
|
186
|
+
}), field.innerHTML);
|
|
187
|
+
default:
|
|
188
|
+
return jsx(Fragment, {});
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
var isFormGeneratorRow = function isFormGeneratorRow(obj) {
|
|
192
|
+
return obj.rowType !== undefined;
|
|
193
|
+
};
|
|
194
|
+
var screenSize = useScreenSize();
|
|
195
|
+
return jsx(Grid, Object.assign({
|
|
196
|
+
as: "form",
|
|
197
|
+
rowGap: formGeneratorTokens.rowGaps
|
|
198
|
+
}, {
|
|
199
|
+
children: fields.map(function (obj, index) {
|
|
200
|
+
if (isFormGeneratorRow(obj)) {
|
|
201
|
+
if (obj.rowType === 'button') {
|
|
202
|
+
return jsx(ButtonRow, Object.assign({
|
|
203
|
+
columnsOccupied: "all"
|
|
204
|
+
}, {
|
|
205
|
+
children: jsx(FormGeneratorFlexContainer, Object.assign({
|
|
206
|
+
screenSize: screenSize
|
|
207
|
+
}, {
|
|
208
|
+
children: obj.fields.map(function (field, groupedIndex) {
|
|
209
|
+
return !field.hide && GetComponent(field, groupedIndex);
|
|
210
|
+
})
|
|
211
|
+
}))
|
|
212
|
+
}));
|
|
213
|
+
} else {
|
|
214
|
+
return jsx(GridChild, Object.assign({
|
|
215
|
+
columnsOccupied: "all"
|
|
216
|
+
}, {
|
|
217
|
+
children: jsx(SubContainer, Object.assign({
|
|
218
|
+
screenSize: screenSize,
|
|
219
|
+
length: obj.fields.length,
|
|
220
|
+
breakpoint: obj.breakpoint
|
|
221
|
+
}, {
|
|
222
|
+
children: obj.fields.map(function (field, groupedIndex) {
|
|
223
|
+
return !field.hide && GetComponent(field, groupedIndex);
|
|
224
|
+
})
|
|
225
|
+
}))
|
|
226
|
+
}));
|
|
227
|
+
}
|
|
228
|
+
} else {
|
|
229
|
+
return !obj.hide && jsx(GridChild, Object.assign({
|
|
230
|
+
columnsOccupied: "all"
|
|
231
|
+
}, {
|
|
232
|
+
children: GetComponent(obj, index)
|
|
233
|
+
}));
|
|
234
|
+
}
|
|
235
|
+
})
|
|
236
|
+
}));
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
export { FormGenerator };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import styled, { css } from 'styled-components';
|
|
2
|
+
import { ScreenSize } from '../../hooks/useScreenSize.js';
|
|
3
|
+
import '../Grid/Grid.js';
|
|
4
|
+
import { GridChild } from '../Grid/GridChild.js';
|
|
5
|
+
import { getLiteralScreenSize } from '../Grid/Grid.utils.js';
|
|
6
|
+
import { formGeneratorTokens } from './FormGenerator.tokens.js';
|
|
7
|
+
|
|
8
|
+
var FormGeneratorFlexContainer = styled.div.withConfig({
|
|
9
|
+
displayName: "FormGeneratorstyles__FormGeneratorFlexContainer",
|
|
10
|
+
componentId: "sc-1jlspa9-0"
|
|
11
|
+
})(["", ""], function (_ref) {
|
|
12
|
+
var screenSize = _ref.screenSize;
|
|
13
|
+
return css(["display:flex;flex-wrap:wrap;gap:", ";"], formGeneratorTokens.columnGaps[screenSize]);
|
|
14
|
+
});
|
|
15
|
+
var SubContainer = styled.div.withConfig({
|
|
16
|
+
displayName: "FormGeneratorstyles__SubContainer",
|
|
17
|
+
componentId: "sc-1jlspa9-1"
|
|
18
|
+
})(["", " ", " ", ""], function (_ref2) {
|
|
19
|
+
var screenSize = _ref2.screenSize,
|
|
20
|
+
length = _ref2.length;
|
|
21
|
+
return length === 2 ? css(["display:grid;"]) : css(["display:flex;flex-wrap:wrap;gap:", ";"], formGeneratorTokens.columnGaps[screenSize]);
|
|
22
|
+
}, function (_ref3) {
|
|
23
|
+
var screenSize = _ref3.screenSize,
|
|
24
|
+
length = _ref3.length,
|
|
25
|
+
_ref3$breakpoint = _ref3.breakpoint,
|
|
26
|
+
breakpoint = _ref3$breakpoint === void 0 ? ScreenSize.XSmall : _ref3$breakpoint;
|
|
27
|
+
return length === 2 ? screenSize > breakpoint ? css(["grid-auto-flow:column;grid-template-columns:min-content auto;column-gap:", ";"], formGeneratorTokens.columnGaps[screenSize]) : css(["grid-auto-flow:row;row-gap:", ";"], formGeneratorTokens.rowGaps[getLiteralScreenSize(screenSize)]) : "";
|
|
28
|
+
}, function (_ref4) {
|
|
29
|
+
var screenSize = _ref4.screenSize,
|
|
30
|
+
length = _ref4.length,
|
|
31
|
+
breakpoint = _ref4.breakpoint;
|
|
32
|
+
return length === 3 ? breakpoint !== undefined && screenSize >= breakpoint ? css(["flex-direction:row;"]) : css(["flex-direction:column;"]) : "";
|
|
33
|
+
});
|
|
34
|
+
var ButtonRow = styled(GridChild).withConfig({
|
|
35
|
+
displayName: "FormGeneratorstyles__ButtonRow",
|
|
36
|
+
componentId: "sc-1jlspa9-2"
|
|
37
|
+
})(["margin-top:", ";"], formGeneratorTokens.buttonRow.marginTop);
|
|
38
|
+
|
|
39
|
+
export { ButtonRow, FormGeneratorFlexContainer, SubContainer };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { defineProperty as _defineProperty } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';
|
|
3
|
+
import { ScreenSize } from '../../hooks/useScreenSize.js';
|
|
4
|
+
|
|
5
|
+
var _columnGaps;
|
|
6
|
+
var Spacing = ddsBaseTokens.spacing;
|
|
7
|
+
var formGeneratorTokens = {
|
|
8
|
+
columnGaps: (_columnGaps = {}, _defineProperty(_columnGaps, ScreenSize.XSmall, Spacing.SizesDdsSpacingLocalX1), _defineProperty(_columnGaps, ScreenSize.Small, Spacing.SizesDdsSpacingLocalX1), _defineProperty(_columnGaps, ScreenSize.Medium, Spacing.SizesDdsSpacingLocalX1), _defineProperty(_columnGaps, ScreenSize.Large, Spacing.SizesDdsSpacingLocalX1), _defineProperty(_columnGaps, ScreenSize.XLarge, Spacing.SizesDdsSpacingLocalX15), _columnGaps),
|
|
9
|
+
rowGaps: {
|
|
10
|
+
xs: Spacing.SizesDdsSpacingLocalX1,
|
|
11
|
+
sm: Spacing.SizesDdsSpacingLocalX1,
|
|
12
|
+
md: Spacing.SizesDdsSpacingLocalX1,
|
|
13
|
+
lg: Spacing.SizesDdsSpacingLocalX1,
|
|
14
|
+
xl: Spacing.SizesDdsSpacingLocalX15
|
|
15
|
+
},
|
|
16
|
+
buttonRow: {
|
|
17
|
+
marginTop: Spacing.SizesDdsSpacingLocalX1
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export { formGeneratorTokens };
|
|
@@ -38,7 +38,7 @@ var suggestionsContainer = searchTokens.suggestionsContainer,
|
|
|
38
38
|
var SuggestionsContainer = styled(Paper).withConfig({
|
|
39
39
|
displayName: "SearchSuggestions__SuggestionsContainer",
|
|
40
40
|
componentId: "sc-nlwf4s-0"
|
|
41
|
-
})(["", ";position:absolute;top:100%;width:100%;max-height:300px;margin-top:", ";border:", ";box-shadow:", ";z-index:
|
|
41
|
+
})(["", ";position:absolute;top:100%;width:100%;max-height:300px;margin-top:", ";border:", ";box-shadow:", ";z-index:80;overflow-y:scroll;", " ", ""], function (_ref) {
|
|
42
42
|
var isHidden = _ref.isHidden;
|
|
43
43
|
return visibilityTransition(!isHidden);
|
|
44
44
|
}, suggestionsContainer.marginTop, suggestionsContainer.border, suggestionsContainer.boxShadow, scrollbarStyling.firefox, scrollbarStyling.webkit);
|
|
@@ -16,7 +16,7 @@ var wrapper = skipToContentTokens.wrapper,
|
|
|
16
16
|
var Wrapper = styled.div.withConfig({
|
|
17
17
|
displayName: "SkipToContent__Wrapper",
|
|
18
18
|
componentId: "sc-57o1qv-0"
|
|
19
|
-
})(["box-sizing:border-box;position:absolute;top:", ";text-align:center;overflow:hidden;clip:rect(1px,1px,1px,1px);height:1px;width:1px;white-space:nowrap;background-color:", ";padding:", ";opacity:0;@media (prefers-reduced-motion:no-preference){transition:opacity 0.2s;}&:focus-within{clip:auto;height:auto;overflow:auto;width:100%;z-index:
|
|
19
|
+
})(["box-sizing:border-box;position:absolute;top:", ";text-align:center;overflow:hidden;clip:rect(1px,1px,1px,1px);height:1px;width:1px;white-space:nowrap;background-color:", ";padding:", ";opacity:0;@media (prefers-reduced-motion:no-preference){transition:opacity 0.2s;}&:focus-within{clip:auto;height:auto;overflow:auto;width:100%;z-index:250;opacity:1;}"], function (_ref) {
|
|
20
20
|
var top = _ref.top;
|
|
21
21
|
return top;
|
|
22
22
|
}, wrapper.backgroundColor, wrapper.padding);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { stackTokens } from './Stack.tokens';
|
|
2
|
+
import { BaseComponentPropsWithChildren } from '../../types';
|
|
3
|
+
declare type Align = 'stretch' | 'center' | 'flex-start' | 'flex-end';
|
|
4
|
+
declare type Justify = 'flex-start' | 'flex-end' | 'space-between' | 'space-around';
|
|
5
|
+
export interface StackStyleProps {
|
|
6
|
+
/**
|
|
7
|
+
* Hvilken retning elementene skal plasseres i.
|
|
8
|
+
*/
|
|
9
|
+
direction: 'horizontal' | 'vertical';
|
|
10
|
+
/**
|
|
11
|
+
* CSS `align-items`.
|
|
12
|
+
* @default 'center'
|
|
13
|
+
*/
|
|
14
|
+
align?: Align;
|
|
15
|
+
/**
|
|
16
|
+
* CSS `justify-content`.
|
|
17
|
+
* @default 'flex-start'
|
|
18
|
+
*/
|
|
19
|
+
justify?: Justify;
|
|
20
|
+
/**
|
|
21
|
+
* Hvilken spacing token som skal brukes som CSS `gap`.
|
|
22
|
+
* @default 0
|
|
23
|
+
*/
|
|
24
|
+
gap?: keyof typeof stackTokens.gap | 0;
|
|
25
|
+
}
|
|
26
|
+
export declare type StackProps = BaseComponentPropsWithChildren<HTMLDivElement, Omit<StackStyleProps, 'direction'>>;
|
|
27
|
+
export declare const HStack: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "className" | "id"> & Omit<StackStyleProps, "direction"> & {
|
|
28
|
+
children?: import("react").ReactNode;
|
|
29
|
+
} & {
|
|
30
|
+
htmlProps?: import("react").HTMLAttributes<HTMLDivElement> | undefined;
|
|
31
|
+
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
32
|
+
export declare const VStack: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "className" | "id"> & Omit<StackStyleProps, "direction"> & {
|
|
33
|
+
children?: import("react").ReactNode;
|
|
34
|
+
} & {
|
|
35
|
+
htmlProps?: import("react").HTMLAttributes<HTMLDivElement> | undefined;
|
|
36
|
+
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
37
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { __rest } from 'tslib';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import styled from 'styled-components';
|
|
5
|
+
import { stackTokens } from './Stack.tokens.js';
|
|
6
|
+
import { getBaseHTMLProps } from '../../types/BaseComponentProps.js';
|
|
7
|
+
|
|
8
|
+
var Stack = styled.div.withConfig({
|
|
9
|
+
displayName: "Stack",
|
|
10
|
+
componentId: "sc-1a1z9ks-0"
|
|
11
|
+
})(["display:flex;flex-direction:", ";align-items:", ";justify-content:", ";gap:", ";"], function (_ref) {
|
|
12
|
+
var direction = _ref.direction;
|
|
13
|
+
return direction === 'horizontal' ? 'row' : 'column';
|
|
14
|
+
}, function (props) {
|
|
15
|
+
return props.align;
|
|
16
|
+
}, function (props) {
|
|
17
|
+
return props.justify;
|
|
18
|
+
}, function (props) {
|
|
19
|
+
return props.gap === undefined || props.gap === 0 ? '0' : stackTokens.gap[props.gap];
|
|
20
|
+
});
|
|
21
|
+
Stack.defaultProps = {
|
|
22
|
+
align: 'center',
|
|
23
|
+
justify: 'flex-start'
|
|
24
|
+
};
|
|
25
|
+
var HStack = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
26
|
+
var id = _a.id,
|
|
27
|
+
className = _a.className,
|
|
28
|
+
htmlProps = _a.htmlProps,
|
|
29
|
+
rest = __rest(_a, ["id", "className", "htmlProps"]);
|
|
30
|
+
return jsx(Stack, Object.assign({
|
|
31
|
+
direction: "horizontal",
|
|
32
|
+
ref: ref
|
|
33
|
+
}, getBaseHTMLProps(id, className, htmlProps, rest)));
|
|
34
|
+
});
|
|
35
|
+
var VStack = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
36
|
+
var id = _a.id,
|
|
37
|
+
className = _a.className,
|
|
38
|
+
htmlProps = _a.htmlProps,
|
|
39
|
+
rest = __rest(_a, ["id", "className", "htmlProps"]);
|
|
40
|
+
return jsx(Stack, Object.assign({
|
|
41
|
+
direction: "vertical",
|
|
42
|
+
ref: ref
|
|
43
|
+
}, getBaseHTMLProps(id, className, htmlProps, rest)));
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
export { HStack, VStack };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ComponentMeta } from '@storybook/react';
|
|
2
|
+
import { StackProps } from './Stack';
|
|
3
|
+
declare const _default: ComponentMeta<import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "id" | "className"> & Omit<import("./Stack").StackStyleProps, "direction"> & {
|
|
4
|
+
children?: import("react").ReactNode;
|
|
5
|
+
} & {
|
|
6
|
+
htmlProps?: import("react").HTMLAttributes<HTMLDivElement> | undefined;
|
|
7
|
+
} & import("react").RefAttributes<HTMLDivElement>>>;
|
|
8
|
+
export default _default;
|
|
9
|
+
export declare const VStackOverview: (args: StackProps) => JSX.Element;
|
|
10
|
+
export declare const HStackOverview: (args: StackProps) => JSX.Element;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const stackTokens: {
|
|
2
|
+
gap: {
|
|
3
|
+
'local-x0.125': string;
|
|
4
|
+
'local-x0.25': string;
|
|
5
|
+
'local-x0.5': string;
|
|
6
|
+
'local-x0.75': string;
|
|
7
|
+
'local-x1': string;
|
|
8
|
+
'local-x1.5': string;
|
|
9
|
+
'local-x2': string;
|
|
10
|
+
'local-x2.5': string;
|
|
11
|
+
'local-x3': string;
|
|
12
|
+
'layout-x1': string;
|
|
13
|
+
'layout-x1.5': string;
|
|
14
|
+
'layout-x2': string;
|
|
15
|
+
'layout-x3': string;
|
|
16
|
+
'layout-x4': string;
|
|
17
|
+
'layout-x6': string;
|
|
18
|
+
'layout-x10': string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';
|
|
2
|
+
|
|
3
|
+
var spacing = ddsBaseTokens.spacing;
|
|
4
|
+
var gapTokens = {
|
|
5
|
+
'local-x0.125': spacing.SizesDdsSpacingLocalX0125,
|
|
6
|
+
'local-x0.25': spacing.SizesDdsSpacingLocalX025,
|
|
7
|
+
'local-x0.5': spacing.SizesDdsSpacingLocalX05,
|
|
8
|
+
'local-x0.75': spacing.SizesDdsSpacingLocalX075,
|
|
9
|
+
'local-x1': spacing.SizesDdsSpacingLocalX1,
|
|
10
|
+
'local-x1.5': spacing.SizesDdsSpacingLocalX15,
|
|
11
|
+
'local-x2': spacing.SizesDdsSpacingLocalX2,
|
|
12
|
+
'local-x2.5': spacing.SizesDdsSpacingLocalX25,
|
|
13
|
+
'local-x3': spacing.SizesDdsSpacingLocalX3,
|
|
14
|
+
'layout-x1': spacing.SizesDdsSpacingLayoutX1,
|
|
15
|
+
'layout-x1.5': spacing.SizesDdsSpacingLayoutX15,
|
|
16
|
+
'layout-x2': spacing.SizesDdsSpacingLayoutX2,
|
|
17
|
+
'layout-x3': spacing.SizesDdsSpacingLayoutX3,
|
|
18
|
+
'layout-x4': spacing.SizesDdsSpacingLayoutX4,
|
|
19
|
+
'layout-x6': spacing.SizesDdsSpacingLayoutX6,
|
|
20
|
+
'layout-x10': spacing.SizesDdsSpacingLayoutX10
|
|
21
|
+
};
|
|
22
|
+
var stackTokens = {
|
|
23
|
+
gap: gapTokens
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export { stackTokens };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Stack';
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { ThHTMLAttributes, TdHTMLAttributes } from 'react';
|
|
2
2
|
export declare type TableCellType = 'data' | 'head';
|
|
3
3
|
export declare type TableCellLayout = 'left' | 'right' | 'center' | 'text and icon';
|
|
4
|
+
export declare type CollapsibleProps = {
|
|
5
|
+
isCollapsibleChild?: boolean;
|
|
6
|
+
};
|
|
4
7
|
export declare type TableCellProps = {
|
|
5
8
|
/**Type celle. Returnerer enten `<td>` eller `<th>`. */
|
|
6
9
|
type?: TableCellType;
|
|
7
10
|
/**Layout av innholdet i cellen. 'tekst and icon' legger `gap` mellom barna og andre barnet i cellen. */
|
|
8
11
|
layout?: TableCellLayout;
|
|
12
|
+
/** Props ved bruk av `<CollapsibleRow>`. **OBS!** settes automatisk av forelder. */
|
|
13
|
+
collapsibleProps?: CollapsibleProps;
|
|
9
14
|
} & (TdHTMLAttributes<HTMLTableCellElement> | ThHTMLAttributes<HTMLTableCellElement>);
|
|
10
15
|
export declare const Cell: import("react").ForwardRefExoticComponent<TableCellProps & import("react").RefAttributes<HTMLTableCellElement>>;
|
|
@@ -2,10 +2,14 @@ import { __rest } from 'tslib';
|
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
3
|
import { forwardRef } from 'react';
|
|
4
4
|
import styled, { css } from 'styled-components';
|
|
5
|
+
import '../DescriptionList/DescriptionList.js';
|
|
6
|
+
import '../DescriptionList/DescriptionListTerm.js';
|
|
7
|
+
import { DescriptionListDesc } from '../DescriptionList/DescriptionListDesc.js';
|
|
8
|
+
import '../DescriptionList/DescriptionListGroup.js';
|
|
5
9
|
import { tableTokens } from './Table.tokens.js';
|
|
6
10
|
|
|
7
11
|
var cell = tableTokens.cell;
|
|
8
|
-
var
|
|
12
|
+
var getLayoutStyle = function getLayoutStyle(layout) {
|
|
9
13
|
switch (layout) {
|
|
10
14
|
case 'center':
|
|
11
15
|
return css(["justify-content:center;"]);
|
|
@@ -30,7 +34,7 @@ var InnerCell = styled.div.withConfig({
|
|
|
30
34
|
componentId: "sc-ghfpfs-1"
|
|
31
35
|
})(["display:flex;align-items:center;", ""], function (_ref2) {
|
|
32
36
|
var layout = _ref2.layout;
|
|
33
|
-
return
|
|
37
|
+
return getLayoutStyle(layout);
|
|
34
38
|
});
|
|
35
39
|
var getTableCellType = function getTableCellType(type) {
|
|
36
40
|
switch (type) {
|
|
@@ -47,8 +51,11 @@ var Cell = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
47
51
|
type = _a$type === void 0 ? 'data' : _a$type,
|
|
48
52
|
_a$layout = _a.layout,
|
|
49
53
|
layout = _a$layout === void 0 ? 'left' : _a$layout,
|
|
50
|
-
|
|
54
|
+
collapsibleProps = _a.collapsibleProps,
|
|
55
|
+
rest = __rest(_a, ["children", "type", "layout", "collapsibleProps"]);
|
|
51
56
|
var as = getTableCellType(type);
|
|
57
|
+
var _ref3 = collapsibleProps || {},
|
|
58
|
+
isCollapsibleChild = _ref3.isCollapsibleChild;
|
|
52
59
|
var cellProps = Object.assign({
|
|
53
60
|
as: as,
|
|
54
61
|
type: type
|
|
@@ -56,7 +63,9 @@ var Cell = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
56
63
|
var innerCellProps = {
|
|
57
64
|
layout: layout
|
|
58
65
|
};
|
|
59
|
-
return jsx(
|
|
66
|
+
return isCollapsibleChild ? jsx(DescriptionListDesc, {
|
|
67
|
+
children: children
|
|
68
|
+
}) : jsx(StyledCell, Object.assign({
|
|
60
69
|
ref: ref
|
|
61
70
|
}, cellProps, {
|
|
62
71
|
children: jsx(InnerCell, Object.assign({}, innerCellProps, {
|
|
@@ -1,23 +1,6 @@
|
|
|
1
|
-
import { HTMLAttributes } from 'react';
|
|
2
|
-
export declare type TableRowType = 'body' | 'head';
|
|
3
|
-
export declare type RowMode = 'normal' | 'sum';
|
|
4
|
-
export declare type TableRowProps = {
|
|
5
|
-
/**Spesifiserer om raden skal brukes i `<head>` eller `<body>`-seksjonen. */
|
|
6
|
-
type?: TableRowType;
|
|
7
|
-
/**Custom modus for rader som har ytterligere semantisk betydning (f.eks. summeringsrad), definerer kun styling. Ved bruk av sum må `<Cell>` med tall i høyrestilles vha layout prop. */
|
|
8
|
-
mode?: RowMode;
|
|
9
|
-
/**Spesifiserer om raden har blitt valgt/markert. */
|
|
10
|
-
selected?: boolean;
|
|
11
|
-
/**Spesifiserer om raden skal ha hover styling. Brukes hovedsakelig på klikkbare rader. */
|
|
12
|
-
hoverable?: boolean;
|
|
13
|
-
} & HTMLAttributes<HTMLTableRowElement>;
|
|
14
1
|
export declare const Row: import("react").ForwardRefExoticComponent<{
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
/**Custom modus for rader som har ytterligere semantisk betydning (f.eks. summeringsrad), definerer kun styling. Ved bruk av sum må `<Cell>` med tall i høyrestilles vha layout prop. */
|
|
18
|
-
mode?: RowMode | undefined;
|
|
19
|
-
/**Spesifiserer om raden har blitt valgt/markert. */
|
|
2
|
+
type?: import("./Table.types").TableRowType | undefined;
|
|
3
|
+
mode?: import("./Table.types").RowMode | undefined;
|
|
20
4
|
selected?: boolean | undefined;
|
|
21
|
-
/**Spesifiserer om raden skal ha hover styling. Brukes hovedsakelig på klikkbare rader. */
|
|
22
5
|
hoverable?: boolean | undefined;
|
|
23
|
-
} & HTMLAttributes<HTMLTableRowElement> & import("react").RefAttributes<HTMLTableRowElement>>;
|
|
6
|
+
} & import("react").HTMLAttributes<HTMLTableRowElement> & import("react").RefAttributes<HTMLTableRowElement>>;
|
|
@@ -1,32 +1,8 @@
|
|
|
1
1
|
import { __rest } from 'tslib';
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
3
|
import { forwardRef } from 'react';
|
|
4
|
-
import
|
|
5
|
-
import { focusVisibleInset } from '../../helpers/styling/focusVisible.js';
|
|
6
|
-
import '../../helpers/styling/hover.js';
|
|
7
|
-
import '../../helpers/styling/focus.js';
|
|
8
|
-
import '../../helpers/styling/danger.js';
|
|
9
|
-
import '../../helpers/styling/selection.js';
|
|
10
|
-
import { getFontStyling, defaultTypographyType } from '../Typography/Typography.utils.js';
|
|
11
|
-
import { tableTokens } from './Table.tokens.js';
|
|
4
|
+
import { StyledRow } from './Table.styles.js';
|
|
12
5
|
|
|
13
|
-
var row = tableTokens.row;
|
|
14
|
-
var bodyStyles = function bodyStyles(mode, selected) {
|
|
15
|
-
return css(["", " ", ""], mode === 'sum' && css(["font-weight:600;border-top:", ";border-bottom:", ";background-color:", ";"], row.body.mode.sum.borderTop, row.body.mode.sum.borderBottom, row.body.mode.sum.backgroundColor), selected && css(["background-color:", ";"], row.body.selected.backgroundColor));
|
|
16
|
-
};
|
|
17
|
-
var StyledRow = styled.tr.withConfig({
|
|
18
|
-
displayName: "Row__StyledRow",
|
|
19
|
-
componentId: "sc-15vvjkk-0"
|
|
20
|
-
})(["@media (prefers-reduced-motion:no-preference){transition:background-color 0.2s,border-color 0.2s,box-shadow 0.2s;}", " ", " ", ""], getFontStyling(defaultTypographyType, true), function (_ref) {
|
|
21
|
-
var type = _ref.type;
|
|
22
|
-
return type === 'head' && css(["font-weight:600;text-align:left;"]);
|
|
23
|
-
}, function (_ref2) {
|
|
24
|
-
var type = _ref2.type,
|
|
25
|
-
mode = _ref2.mode,
|
|
26
|
-
selected = _ref2.selected,
|
|
27
|
-
hoverable = _ref2.hoverable;
|
|
28
|
-
return type === 'body' && css(["&:nth-of-type(even){background-color:", ";", "}&:nth-of-type(odd){background-color:", ";", "}", " &:focus-visible,&.focus-visible{", "}"], row.body.even.backgroundColor, bodyStyles(mode, selected), row.body.odd.backgroundColor, bodyStyles(mode, selected), hoverable && css(["&:hover{background-color:", ";}"], row.body.hover.backgroundColor), focusVisibleInset);
|
|
29
|
-
});
|
|
30
6
|
var Row = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
31
7
|
var _a$type = _a.type,
|
|
32
8
|
type = _a$type === void 0 ? 'body' : _a$type,
|
|
@@ -1,18 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare type TableDensity = 'normal' | 'compact';
|
|
3
|
-
export declare type TableProps = {
|
|
4
|
-
/**Spesifiserer hvor romslige cellene i tabellen skal være. */
|
|
5
|
-
density?: TableDensity;
|
|
6
|
-
/**Spesifiserer om cellene i `<Head>` skal bli sticky ved scrolling. */
|
|
7
|
-
stickyHeader?: boolean;
|
|
8
|
-
/**Legger skillelinjer mellom radene. */
|
|
9
|
-
withDividers?: boolean;
|
|
10
|
-
} & HTMLAttributes<HTMLTableElement>;
|
|
1
|
+
import { TableDensity } from './Table.types';
|
|
11
2
|
export declare const Table: import("react").ForwardRefExoticComponent<{
|
|
12
|
-
/**Spesifiserer hvor romslige cellene i tabellen skal være. */
|
|
13
3
|
density?: TableDensity | undefined;
|
|
14
|
-
/**Spesifiserer om cellene i `<Head>` skal bli sticky ved scrolling. */
|
|
15
4
|
stickyHeader?: boolean | undefined;
|
|
16
|
-
/**Legger skillelinjer mellom radene. */
|
|
17
5
|
withDividers?: boolean | undefined;
|
|
18
|
-
} & HTMLAttributes<HTMLTableElement> & import("react").RefAttributes<HTMLTableElement>>;
|
|
6
|
+
} & import("react").HTMLAttributes<HTMLTableElement> & import("react").RefAttributes<HTMLTableElement>>;
|
|
@@ -22,7 +22,7 @@ var StyledTable = styled.table.withConfig({
|
|
|
22
22
|
return css(["td,th{padding:", ";}"], cell.density[density].padding);
|
|
23
23
|
}, function (_ref2) {
|
|
24
24
|
var stickyHeader = _ref2.stickyHeader;
|
|
25
|
-
return stickyHeader && css(["tr[type='head']{th[type='head']{position:sticky;top:0;}}"]);
|
|
25
|
+
return stickyHeader && css(["tr[type='head']{th[type='head']{position:sticky;top:0;z-index:50;}}"]);
|
|
26
26
|
}, function (_ref3) {
|
|
27
27
|
var withDividers = _ref3.withDividers;
|
|
28
28
|
return withDividers && css(["tr[type='body']{border-bottom:", ";}"], row.body.withDividers.borderBottom);
|