@digdir/designsystemet-react 0.53.1 → 0.55.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/dist/cjs/components/Accordion/Accordion.module.css.js +1 -1
- package/dist/cjs/components/Accordion/AccordionHeader/AccordionHeader.js +1 -1
- package/dist/cjs/components/Box/Box.module.css.js +1 -1
- package/dist/cjs/components/Button/Button.module.css.js +1 -1
- package/dist/cjs/components/Card/Card.module.css.js +1 -1
- package/dist/cjs/components/Chip/Chip.module.css.js +1 -1
- package/dist/cjs/components/Divider/Divider.module.css.js +1 -1
- package/dist/cjs/components/DropdownMenu/DropdownMenu.module.css.js +1 -1
- package/dist/cjs/components/DropdownMenu/DropdownMenuGroup/DropdownMenuGroup.module.css.js +1 -1
- package/dist/cjs/components/DropdownMenu/DropdownMenuItem/DropdownMenuItem.module.css.js +1 -1
- package/dist/cjs/components/ErrorSummary/ErrorSummary.module.css.js +1 -1
- package/dist/cjs/components/HelpText/HelpText.module.css.js +1 -1
- package/dist/cjs/components/Link/Link.module.css.js +1 -1
- package/dist/cjs/components/List/List.module.css.js +1 -1
- package/dist/cjs/components/Modal/Modal.module.css.js +1 -1
- package/dist/cjs/components/Modal/ModalContent/ModalContent.module.css.js +1 -1
- package/dist/cjs/components/Modal/ModalFooter/ModalFooter.module.css.js +1 -1
- package/dist/cjs/components/Modal/ModalHeader/ModalHeader.module.css.js +1 -1
- package/dist/cjs/components/Pagination/Pagination.js +7 -2
- package/dist/cjs/components/Pagination/Pagination.module.css.js +1 -1
- package/dist/cjs/components/Popover/Popover.module.css.js +1 -1
- package/dist/cjs/components/Skeleton/Skeleton.module.css.js +1 -1
- package/dist/cjs/components/SkipLink/SkipLink.module.css.js +1 -1
- package/dist/cjs/components/Spinner/Spinner.module.css.js +1 -1
- package/dist/cjs/components/Table/Table.module.css.js +1 -1
- package/dist/cjs/components/Tabs/Tab/Tab.module.css.js +1 -1
- package/dist/cjs/components/Tabs/TabContent/TabContent.module.css.js +1 -1
- package/dist/cjs/components/Tabs/TabList/TabList.module.css.js +1 -1
- package/dist/cjs/components/Tag/Tag.module.css.js +1 -1
- package/dist/cjs/components/ToggleGroup/ToggleGroup.module.css.js +1 -1
- package/dist/cjs/components/ToggleGroup/ToggleGroupItem/ToggleGroupItem.module.css.js +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.module.css.js +1 -1
- package/dist/cjs/components/Typography/ErrorMessage/ErrorMessage.module.css.js +1 -1
- package/dist/cjs/components/Typography/Heading/Heading.module.css.js +1 -1
- package/dist/cjs/components/Typography/Ingress/Ingress.module.css.js +1 -1
- package/dist/cjs/components/Typography/Label/Label.module.css.js +1 -1
- package/dist/cjs/components/Typography/Paragraph/Paragraph.js +2 -2
- package/dist/cjs/components/Typography/Paragraph/Paragraph.module.css.js +1 -1
- package/dist/cjs/components/form/Checkbox/Checkbox.module.css.js +1 -1
- package/dist/cjs/components/form/Combobox/Combobox.js +12 -13
- package/dist/cjs/components/form/Combobox/Combobox.module.css.js +1 -1
- package/dist/cjs/components/form/Combobox/Custom/Custom.module.css.js +1 -1
- package/dist/cjs/components/form/Combobox/Empty/Empty.module.css.js +1 -1
- package/dist/cjs/components/form/Combobox/Option/Description/Description.module.css.js +1 -1
- package/dist/cjs/components/form/Combobox/Option/Option.module.css.js +1 -1
- package/dist/cjs/components/form/Combobox/internal/ComboboxClearButton.js +2 -2
- package/dist/cjs/components/form/Combobox/internal/ComboboxInput.js +3 -2
- package/dist/cjs/components/form/Combobox/useCombobox.js +24 -33
- package/dist/cjs/components/form/Fieldset/Fieldset.module.css.js +1 -1
- package/dist/cjs/components/form/NativeSelect/NativeSelect.module.css.js +1 -1
- package/dist/cjs/components/form/Radio/Group/Group.module.css.js +1 -1
- package/dist/cjs/components/form/Radio/Radio.module.css.js +1 -1
- package/dist/cjs/components/form/Search/Search.module.css.js +1 -1
- package/dist/cjs/components/form/Switch/Switch.module.css.js +1 -1
- package/dist/cjs/components/form/Textarea/Textarea.module.css.js +1 -1
- package/dist/cjs/components/form/Textfield/Textfield.module.css.js +1 -1
- package/dist/cjs/react-css-modules.css +714 -750
- package/dist/cjs/utilities/AnimateHeight/AnimateHeight.module.css.js +1 -1
- package/dist/cjs/utilities/utility.module.css.js +1 -1
- package/dist/esm/components/Accordion/Accordion.module.css.js +1 -1
- package/dist/esm/components/Accordion/AccordionHeader/AccordionHeader.js +1 -1
- package/dist/esm/components/Box/Box.module.css.js +1 -1
- package/dist/esm/components/Button/Button.module.css.js +1 -1
- package/dist/esm/components/Card/Card.module.css.js +1 -1
- package/dist/esm/components/Chip/Chip.module.css.js +1 -1
- package/dist/esm/components/Divider/Divider.module.css.js +1 -1
- package/dist/esm/components/DropdownMenu/DropdownMenu.module.css.js +1 -1
- package/dist/esm/components/DropdownMenu/DropdownMenuGroup/DropdownMenuGroup.module.css.js +1 -1
- package/dist/esm/components/DropdownMenu/DropdownMenuItem/DropdownMenuItem.module.css.js +1 -1
- package/dist/esm/components/ErrorSummary/ErrorSummary.module.css.js +1 -1
- package/dist/esm/components/HelpText/HelpText.module.css.js +1 -1
- package/dist/esm/components/Link/Link.module.css.js +1 -1
- package/dist/esm/components/List/List.module.css.js +1 -1
- package/dist/esm/components/Modal/Modal.module.css.js +1 -1
- package/dist/esm/components/Modal/ModalContent/ModalContent.module.css.js +1 -1
- package/dist/esm/components/Modal/ModalFooter/ModalFooter.module.css.js +1 -1
- package/dist/esm/components/Modal/ModalHeader/ModalHeader.module.css.js +1 -1
- package/dist/esm/components/Pagination/Pagination.js +7 -2
- package/dist/esm/components/Pagination/Pagination.module.css.js +1 -1
- package/dist/esm/components/Popover/Popover.module.css.js +1 -1
- package/dist/esm/components/Skeleton/Skeleton.module.css.js +1 -1
- package/dist/esm/components/SkipLink/SkipLink.module.css.js +1 -1
- package/dist/esm/components/Spinner/Spinner.module.css.js +1 -1
- package/dist/esm/components/Table/Table.module.css.js +1 -1
- package/dist/esm/components/Tabs/Tab/Tab.module.css.js +1 -1
- package/dist/esm/components/Tabs/TabContent/TabContent.module.css.js +1 -1
- package/dist/esm/components/Tabs/TabList/TabList.module.css.js +1 -1
- package/dist/esm/components/Tag/Tag.module.css.js +1 -1
- package/dist/esm/components/ToggleGroup/ToggleGroup.module.css.js +1 -1
- package/dist/esm/components/ToggleGroup/ToggleGroupItem/ToggleGroupItem.module.css.js +1 -1
- package/dist/esm/components/Tooltip/Tooltip.module.css.js +1 -1
- package/dist/esm/components/Typography/ErrorMessage/ErrorMessage.module.css.js +1 -1
- package/dist/esm/components/Typography/Heading/Heading.module.css.js +1 -1
- package/dist/esm/components/Typography/Ingress/Ingress.module.css.js +1 -1
- package/dist/esm/components/Typography/Label/Label.module.css.js +1 -1
- package/dist/esm/components/Typography/Paragraph/Paragraph.js +2 -2
- package/dist/esm/components/Typography/Paragraph/Paragraph.module.css.js +1 -1
- package/dist/esm/components/form/Checkbox/Checkbox.module.css.js +1 -1
- package/dist/esm/components/form/Combobox/Combobox.js +12 -13
- package/dist/esm/components/form/Combobox/Combobox.module.css.js +1 -1
- package/dist/esm/components/form/Combobox/Custom/Custom.module.css.js +1 -1
- package/dist/esm/components/form/Combobox/Empty/Empty.module.css.js +1 -1
- package/dist/esm/components/form/Combobox/Option/Description/Description.module.css.js +1 -1
- package/dist/esm/components/form/Combobox/Option/Option.module.css.js +1 -1
- package/dist/esm/components/form/Combobox/internal/ComboboxClearButton.js +2 -2
- package/dist/esm/components/form/Combobox/internal/ComboboxInput.js +3 -2
- package/dist/esm/components/form/Combobox/useCombobox.js +26 -17
- package/dist/esm/components/form/Fieldset/Fieldset.module.css.js +1 -1
- package/dist/esm/components/form/NativeSelect/NativeSelect.module.css.js +1 -1
- package/dist/esm/components/form/Radio/Group/Group.module.css.js +1 -1
- package/dist/esm/components/form/Radio/Radio.module.css.js +1 -1
- package/dist/esm/components/form/Search/Search.module.css.js +1 -1
- package/dist/esm/components/form/Switch/Switch.module.css.js +1 -1
- package/dist/esm/components/form/Textarea/Textarea.module.css.js +1 -1
- package/dist/esm/components/form/Textfield/Textfield.module.css.js +1 -1
- package/dist/esm/react-css-modules.css +714 -750
- package/dist/esm/utilities/AnimateHeight/AnimateHeight.module.css.js +1 -1
- package/dist/esm/utilities/utility.module.css.js +1 -1
- package/dist/types/components/Accordion/AccordionHeader/AccordionHeader.d.ts.map +1 -1
- package/dist/types/components/DropdownMenu/DropdownMenu.d.ts +1 -1
- package/dist/types/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/types/components/Popover/Popover.d.ts +1 -1
- package/dist/types/components/Typography/Paragraph/Paragraph.d.ts +5 -1
- package/dist/types/components/Typography/Paragraph/Paragraph.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/Combobox.d.ts +32 -1
- package/dist/types/components/form/Combobox/Combobox.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/internal/ComboboxInput.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/useCombobox.d.ts +13 -9
- package/dist/types/components/form/Combobox/useCombobox.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import
|
|
3
|
-
import { useMemo } from 'react';
|
|
2
|
+
import { useMemo, Children, useState, isValidElement } from 'react';
|
|
4
3
|
import { ComboboxOption } from './Option/Option.js';
|
|
5
4
|
import ComboboxCustom from './Custom/Custom.js';
|
|
6
5
|
|
|
7
|
-
|
|
6
|
+
const isOption = (option) => !!option;
|
|
7
|
+
function isComboboxOption(child) {
|
|
8
|
+
return isValidElement(child) && child.type === ComboboxOption;
|
|
9
|
+
}
|
|
10
|
+
function isComboboxCustom(child) {
|
|
11
|
+
return isValidElement(child) && child.type === ComboboxCustom;
|
|
12
|
+
}
|
|
13
|
+
function isInteractiveComboboxCustom(child) {
|
|
14
|
+
return isComboboxCustom(child) && child.props.interactive === true;
|
|
15
|
+
}
|
|
16
|
+
function useCombobox({ children, inputValue, multiple, filter, initialValue, }) {
|
|
8
17
|
const options = useMemo(() => {
|
|
9
18
|
const allOptions = [];
|
|
10
|
-
|
|
19
|
+
Children.forEach(children, (child) => {
|
|
11
20
|
if (isComboboxOption(child)) {
|
|
12
21
|
const props = child.props;
|
|
13
22
|
let label = props.displayValue || '';
|
|
14
23
|
if (!props.displayValue) {
|
|
15
24
|
let childrenLabel = '';
|
|
16
25
|
// go over children and find all strings
|
|
17
|
-
|
|
26
|
+
Children.forEach(props.children, (child) => {
|
|
18
27
|
if (typeof child === 'string') {
|
|
19
28
|
childrenLabel += child;
|
|
20
29
|
}
|
|
@@ -34,9 +43,14 @@ function useCombobox({ children, inputValue, multiple, selectedOptions, filter,
|
|
|
34
43
|
});
|
|
35
44
|
return allOptions;
|
|
36
45
|
}, [children]);
|
|
46
|
+
const preSelectedOptions = (initialValue || [])
|
|
47
|
+
.map((value) => options.find((option) => option.value === value))
|
|
48
|
+
.filter(isOption);
|
|
49
|
+
const [selectedOptions, setSelectedOptions] = useState(preSelectedOptions);
|
|
50
|
+
const [prevSelectedHash, setPrevSelectedHash] = useState(JSON.stringify(selectedOptions));
|
|
37
51
|
const optionsChildren = useMemo(() => {
|
|
38
52
|
const valuesArray = Array.from(options);
|
|
39
|
-
const children_ =
|
|
53
|
+
const children_ = Children.toArray(children).filter((child) => isComboboxOption(child));
|
|
40
54
|
const activeValue = valuesArray.find((item) => item.label === inputValue);
|
|
41
55
|
if (activeValue && !multiple)
|
|
42
56
|
return children_;
|
|
@@ -54,7 +68,7 @@ function useCombobox({ children, inputValue, multiple, selectedOptions, filter,
|
|
|
54
68
|
}, [options, children, multiple, inputValue, selectedOptions, filter]);
|
|
55
69
|
const customIds = useMemo(() => {
|
|
56
70
|
// find all custom components with `interactive=true` and generate random values for them
|
|
57
|
-
const children_ =
|
|
71
|
+
const children_ = Children.toArray(children).filter((child) => {
|
|
58
72
|
return isInteractiveComboboxCustom(child);
|
|
59
73
|
});
|
|
60
74
|
// return all ids
|
|
@@ -73,7 +87,7 @@ function useCombobox({ children, inputValue, multiple, selectedOptions, filter,
|
|
|
73
87
|
return [...customIds, ...options];
|
|
74
88
|
}, [customIds, optionsChildren]);
|
|
75
89
|
const restChildren = useMemo(() => {
|
|
76
|
-
return
|
|
90
|
+
return Children.toArray(children).filter((child) => {
|
|
77
91
|
return !isComboboxOption(child);
|
|
78
92
|
});
|
|
79
93
|
}, [children]);
|
|
@@ -83,16 +97,11 @@ function useCombobox({ children, inputValue, multiple, selectedOptions, filter,
|
|
|
83
97
|
restChildren,
|
|
84
98
|
options,
|
|
85
99
|
customIds,
|
|
100
|
+
selectedOptions,
|
|
101
|
+
setSelectedOptions,
|
|
102
|
+
prevSelectedHash,
|
|
103
|
+
setPrevSelectedHash,
|
|
86
104
|
};
|
|
87
105
|
}
|
|
88
|
-
function isComboboxOption(child) {
|
|
89
|
-
return React.isValidElement(child) && child.type === ComboboxOption;
|
|
90
|
-
}
|
|
91
|
-
function isComboboxCustom(child) {
|
|
92
|
-
return React.isValidElement(child) && child.type === ComboboxCustom;
|
|
93
|
-
}
|
|
94
|
-
function isInteractiveComboboxCustom(child) {
|
|
95
|
-
return isComboboxCustom(child) && child.props.interactive === true;
|
|
96
|
-
}
|
|
97
106
|
|
|
98
107
|
export { useCombobox as default, isComboboxCustom, isComboboxOption, isInteractiveComboboxCustom };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
var classes = {"fieldset":"fds-fieldset-fieldset-
|
|
2
|
+
var classes = {"fieldset":"fds-fieldset-fieldset-2b3c05fc","withSpacing":"fds-fieldset-withSpacing-2b3c05fc","description":"fds-fieldset-description-2b3c05fc","legend":"fds-fieldset-legend-2b3c05fc","readonly":"fds-fieldset-readonly-2b3c05fc","legendContent":"fds-fieldset-legendContent-2b3c05fc","padlock":"fds-fieldset-padlock-2b3c05fc","disabled":"fds-fieldset-disabled-2b3c05fc","errorWrapper":"fds-fieldset-errorWrapper-2b3c05fc"};
|
|
3
3
|
|
|
4
4
|
export { classes as default };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
var classes = {"select":"fds-nativeselect-select-
|
|
2
|
+
var classes = {"select":"fds-nativeselect-select-2e95d79c","multiple":"fds-nativeselect-multiple-2e95d79c","small":"fds-nativeselect-small-2e95d79c","medium":"fds-nativeselect-medium-2e95d79c","large":"fds-nativeselect-large-2e95d79c","formField":"fds-nativeselect-formField-2e95d79c","disabled":"fds-nativeselect-disabled-2e95d79c","readOnly":"fds-nativeselect-readOnly-2e95d79c","error":"fds-nativeselect-error-2e95d79c","padlock":"fds-nativeselect-padlock-2e95d79c","errorMessage":"fds-nativeselect-errorMessage-2e95d79c","label":"fds-nativeselect-label-2e95d79c"};
|
|
3
3
|
|
|
4
4
|
export { classes as default };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
var classes = {"container":"fds-radio-container-
|
|
2
|
+
var classes = {"container":"fds-radio-container-7a9bd584","label":"fds-radio-label-7a9bd584","description":"fds-radio-description-7a9bd584","input":"fds-radio-input-7a9bd584","disabled":"fds-radio-disabled-7a9bd584","readonly":"fds-radio-readonly-7a9bd584","error":"fds-radio-error-7a9bd584","small":"fds-radio-small-7a9bd584","medium":"fds-radio-medium-7a9bd584","large":"fds-radio-large-7a9bd584"};
|
|
3
3
|
|
|
4
4
|
export { classes as default };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
var classes = {"formField":"fds-search-formField-
|
|
2
|
+
var classes = {"formField":"fds-search-formField-a6b5fe3c","small":"fds-search-small-a6b5fe3c","medium":"fds-search-medium-a6b5fe3c","large":"fds-search-large-a6b5fe3c","errorMessage":"fds-search-errorMessage-a6b5fe3c","label":"fds-search-label-a6b5fe3c","field":"fds-search-field-a6b5fe3c","icon":"fds-search-icon-a6b5fe3c","input":"fds-search-input-a6b5fe3c","withSearchButton":"fds-search-withSearchButton-a6b5fe3c","disabled":"fds-search-disabled-a6b5fe3c","searchButton":"fds-search-searchButton-a6b5fe3c","clearButton":"fds-search-clearButton-a6b5fe3c","simple":"fds-search-simple-a6b5fe3c","error":"fds-search-error-a6b5fe3c"};
|
|
3
3
|
|
|
4
4
|
export { classes as default };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
var classes = {"switch":"fds-switch-switch-
|
|
2
|
+
var classes = {"switch":"fds-switch-switch-9a6b03bc","label":"fds-switch-label-9a6b03bc","track":"fds-switch-track-9a6b03bc","description":"fds-switch-description-9a6b03bc","padlock":"fds-switch-padlock-9a6b03bc","right":"fds-switch-right-9a6b03bc","input":"fds-switch-input-9a6b03bc","readonly":"fds-switch-readonly-9a6b03bc","disabled":"fds-switch-disabled-9a6b03bc","small":"fds-switch-small-9a6b03bc","medium":"fds-switch-medium-9a6b03bc","large":"fds-switch-large-9a6b03bc","thumb":"fds-switch-thumb-9a6b03bc"};
|
|
3
3
|
|
|
4
4
|
export { classes as default };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
var classes = {"formField":"fds-textarea-formField-
|
|
2
|
+
var classes = {"formField":"fds-textarea-formField-3d0e29bc","padlock":"fds-textarea-padlock-3d0e29bc","errorMessage":"fds-textarea-errorMessage-3d0e29bc","label":"fds-textarea-label-3d0e29bc","description":"fds-textarea-description-3d0e29bc","textarea":"fds-textarea-textarea-3d0e29bc","small":"fds-textarea-small-3d0e29bc","medium":"fds-textarea-medium-3d0e29bc","large":"fds-textarea-large-3d0e29bc","disabled":"fds-textarea-disabled-3d0e29bc","readonly":"fds-textarea-readonly-3d0e29bc","error":"fds-textarea-error-3d0e29bc"};
|
|
3
3
|
|
|
4
4
|
export { classes as default };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
var textFieldClasses = {"formField":"fds-textfield-formField-
|
|
2
|
+
var textFieldClasses = {"formField":"fds-textfield-formField-d98267a0","adornment":"fds-textfield-adornment-d98267a0","input":"fds-textfield-input-d98267a0","disabled":"fds-textfield-disabled-d98267a0","readonly":"fds-textfield-readonly-d98267a0","field":"fds-textfield-field-d98267a0","small":"fds-textfield-small-d98267a0","medium":"fds-textfield-medium-d98267a0","large":"fds-textfield-large-d98267a0","label":"fds-textfield-label-d98267a0","description":"fds-textfield-description-d98267a0","error":"fds-textfield-error-d98267a0","inputPrefix":"fds-textfield-inputPrefix-d98267a0","inputSuffix":"fds-textfield-inputSuffix-d98267a0","prefix":"fds-textfield-prefix-d98267a0","suffix":"fds-textfield-suffix-d98267a0","padlock":"fds-textfield-padlock-d98267a0","errorMessage":"fds-textfield-errorMessage-d98267a0"};
|
|
3
3
|
|
|
4
4
|
export { textFieldClasses as default };
|