@norges-domstoler/dds-components 10.1.0 → 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.
@@ -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:100;overflow-y:scroll;", " ", ""], function (_ref) {
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:200;opacity:1;}"], function (_ref) {
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);
@@ -33,7 +33,7 @@ var Container = styled.div.withConfig({
33
33
  var TooltipWrapper = styled(Paper).withConfig({
34
34
  displayName: "Tooltipstyles__TooltipWrapper",
35
35
  componentId: "sc-1cna5tc-3"
36
- })(["", " width:fit-content;position:absolute;z-index:100;text-align:center;padding:", ";", ";"], function (_ref) {
36
+ })(["", " width:fit-content;position:absolute;z-index:80;text-align:center;padding:", ";", ";"], function (_ref) {
37
37
  var open = _ref.open;
38
38
  return visibilityTransition(open);
39
39
  }, wrapper.padding, getFontStyling(defaultTypographyType));
package/dist/index.d.ts CHANGED
@@ -43,3 +43,5 @@ export * from './components/InlineEdit';
43
43
  export * from './components/TextArea';
44
44
  export * from './components/SplitButton';
45
45
  export * from './components/Stack';
46
+ export * from './components/FormGenerator';
47
+ export * from './components/FileUploader';
package/dist/index.js CHANGED
@@ -214,3 +214,5 @@ export { InlineEditInput } from './components/InlineEdit/InlineEditInput.js';
214
214
  export { StyledTextArea, TextArea } from './components/TextArea/TextArea.js';
215
215
  export { SplitButton } from './components/SplitButton/SplitButton.js';
216
216
  export { HStack, VStack } from './components/Stack/Stack.js';
217
+ export { FormGenerator } from './components/FormGenerator/FormGenerator.js';
218
+ export { FileUploader } from './components/FileUploader/FileUploader.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norges-domstoler/dds-components",
3
- "version": "10.1.0",
3
+ "version": "10.1.1",
4
4
  "description": "React components used in Elsa - domstolenes designsystem",
5
5
  "author": "Elsa team",
6
6
  "license": "MIT",
@@ -90,7 +90,7 @@
90
90
  "typescript": "^4.8.3"
91
91
  },
92
92
  "peerDependencies": {
93
- "@norges-domstoler/dds-design-tokens": "^3.0.0",
93
+ "@norges-domstoler/dds-design-tokens": "^3.0.1",
94
94
  "react": "^16 || ^17 || ^18",
95
95
  "react-dom": "^16 || ^17 || ^18",
96
96
  "styled-components": "^5"