@digdir/designsystemet-react 1.0.8 → 1.1.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/Combobox/Combobox.js +1 -1
- package/dist/cjs/components/Combobox/ComboboxIdContext.js +1 -1
- package/dist/cjs/components/Field/Field.js +4 -2
- package/dist/cjs/components/Suggestion/Suggestion.js +73 -42
- package/dist/cjs/components/Suggestion/SuggestionChips.js +15 -0
- package/dist/cjs/components/Suggestion/SuggestionClear.js +2 -30
- package/dist/cjs/components/Suggestion/SuggestionEmpty.js +4 -4
- package/dist/cjs/components/Suggestion/SuggestionInput.js +12 -23
- package/dist/cjs/components/Suggestion/SuggestionList.js +4 -8
- package/dist/cjs/components/Suggestion/SuggestionOption.js +0 -1
- package/dist/cjs/components/Suggestion/index.js +4 -0
- package/dist/cjs/components/Tabs/TabsTab.js +2 -1
- package/dist/cjs/index.js +144 -156
- package/dist/cjs/utilities/omit/omit.js +1 -1
- package/dist/esm/components/Combobox/Combobox.js +1 -1
- package/dist/esm/components/Combobox/ComboboxIdContext.js +1 -1
- package/dist/esm/components/Field/Field.js +4 -2
- package/dist/esm/components/Suggestion/Suggestion.js +74 -43
- package/dist/esm/components/Suggestion/SuggestionChips.js +13 -0
- package/dist/esm/components/Suggestion/SuggestionClear.js +4 -31
- package/dist/esm/components/Suggestion/SuggestionEmpty.js +5 -5
- package/dist/esm/components/Suggestion/SuggestionInput.js +13 -24
- package/dist/esm/components/Suggestion/SuggestionList.js +4 -8
- package/dist/esm/components/Suggestion/SuggestionOption.js +0 -1
- package/dist/esm/components/Suggestion/index.js +4 -1
- package/dist/esm/components/Tabs/TabsTab.js +2 -1
- package/dist/esm/index.js +67 -73
- package/dist/esm/utilities/omit/omit.js +1 -1
- package/dist/react-types.d.ts +1 -0
- package/dist/types/components/Alert/index.d.ts +1 -1
- package/dist/types/components/Alert/index.d.ts.map +1 -1
- package/dist/types/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/types/components/Avatar/index.d.ts +1 -1
- package/dist/types/components/Avatar/index.d.ts.map +1 -1
- package/dist/types/components/Badge/Badge.d.ts.map +1 -1
- package/dist/types/components/Badge/BadgePosition.d.ts.map +1 -1
- package/dist/types/components/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
- package/dist/types/components/Breadcrumbs/BreadcrumbsItem.d.ts.map +1 -1
- package/dist/types/components/Breadcrumbs/BreadcrumbsLink.d.ts.map +1 -1
- package/dist/types/components/Breadcrumbs/BreadcrumbsList.d.ts.map +1 -1
- package/dist/types/components/Breadcrumbs/index.d.ts +1 -1
- package/dist/types/components/Button/Button.d.ts.map +1 -1
- package/dist/types/components/Button/index.d.ts +1 -1
- package/dist/types/components/Button/index.d.ts.map +1 -1
- package/dist/types/components/Checkbox/index.d.ts +1 -1
- package/dist/types/components/Checkbox/index.d.ts.map +1 -1
- package/dist/types/components/Chip/Chips.d.ts.map +1 -1
- package/dist/types/components/Combobox/Combobox.d.ts +1 -1
- package/dist/types/components/Combobox/Combobox.d.ts.map +1 -1
- package/dist/types/components/Combobox/ComboboxContext.d.ts +1 -1
- package/dist/types/components/Combobox/ComboboxContext.d.ts.map +1 -1
- package/dist/types/components/Combobox/ComboboxIdContext.d.ts +1 -1
- package/dist/types/components/Combobox/ComboboxIdContext.d.ts.map +1 -1
- package/dist/types/components/Combobox/Custom.d.ts.map +1 -1
- package/dist/types/components/Combobox/Empty.d.ts.map +1 -1
- package/dist/types/components/Combobox/Option/Description.d.ts.map +1 -1
- package/dist/types/components/Combobox/Option/Option.d.ts.map +1 -1
- package/dist/types/components/Combobox/Option/useComboboxOption.d.ts.map +1 -1
- package/dist/types/components/Combobox/index.d.ts +1 -1
- package/dist/types/components/Combobox/index.d.ts.map +1 -1
- package/dist/types/components/Combobox/internal/ComboboxClearButton.d.ts.map +1 -1
- package/dist/types/components/Combobox/useCombobox.d.ts.map +1 -1
- package/dist/types/components/Combobox/useComboboxKeyboard.d.ts.map +1 -1
- package/dist/types/components/Combobox/useFloatingCombobox.d.ts +1 -1
- package/dist/types/components/Combobox/useFloatingCombobox.d.ts.map +1 -1
- package/dist/types/components/Combobox/useFormField/useFormField.d.ts.map +1 -1
- package/dist/types/components/Combobox/utilities.d.ts.map +1 -1
- package/dist/types/components/Details/index.d.ts +1 -1
- package/dist/types/components/Details/index.d.ts.map +1 -1
- package/dist/types/components/Dialog/Dialog.d.ts.map +1 -1
- package/dist/types/components/Dialog/DialogTrigger.d.ts.map +1 -1
- package/dist/types/components/Dialog/DialogTriggerContext.d.ts.map +1 -1
- package/dist/types/components/Dialog/index.d.ts +2 -2
- package/dist/types/components/Dialog/index.d.ts.map +1 -1
- package/dist/types/components/Divider/index.d.ts +1 -1
- package/dist/types/components/Divider/index.d.ts.map +1 -1
- package/dist/types/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/types/components/Dropdown/DropdownItem.d.ts.map +1 -1
- package/dist/types/components/Dropdown/DropdownList.d.ts.map +1 -1
- package/dist/types/components/Dropdown/index.d.ts +4 -4
- package/dist/types/components/Dropdown/index.d.ts.map +1 -1
- package/dist/types/components/ErrorSummary/ErrorSummary.d.ts.map +1 -1
- package/dist/types/components/ErrorSummary/index.d.ts +2 -2
- package/dist/types/components/ErrorSummary/index.d.ts.map +1 -1
- package/dist/types/components/Field/Field.d.ts +10 -0
- package/dist/types/components/Field/Field.d.ts.map +1 -1
- package/dist/types/components/Field/index.d.ts +3 -2
- package/dist/types/components/Field/index.d.ts.map +1 -1
- package/dist/types/components/Fieldset/FieldsetLegend.d.ts.map +1 -1
- package/dist/types/components/Fieldset/index.d.ts +2 -2
- package/dist/types/components/Fieldset/index.d.ts.map +1 -1
- package/dist/types/components/Heading/index.d.ts +1 -1
- package/dist/types/components/Heading/index.d.ts.map +1 -1
- package/dist/types/components/Input/index.d.ts +1 -1
- package/dist/types/components/Input/index.d.ts.map +1 -1
- package/dist/types/components/Label/index.d.ts +1 -1
- package/dist/types/components/Label/index.d.ts.map +1 -1
- package/dist/types/components/Link/index.d.ts +1 -1
- package/dist/types/components/Link/index.d.ts.map +1 -1
- package/dist/types/components/List/ListItem.d.ts.map +1 -1
- package/dist/types/components/List/Lists.d.ts.map +1 -1
- package/dist/types/components/List/index.d.ts +1 -1
- package/dist/types/components/List/index.d.ts.map +1 -1
- package/dist/types/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/types/components/Pagination/PaginationItem.d.ts.map +1 -1
- package/dist/types/components/Pagination/PaginationList.d.ts.map +1 -1
- package/dist/types/components/Pagination/index.d.ts +1 -1
- package/dist/types/components/Paragraph/index.d.ts +1 -1
- package/dist/types/components/Paragraph/index.d.ts.map +1 -1
- package/dist/types/components/Popover/Popover.d.ts +1 -1
- package/dist/types/components/Popover/Popover.d.ts.map +1 -1
- package/dist/types/components/Popover/PopoverTrigger.d.ts.map +1 -1
- package/dist/types/components/Popover/PopoverTriggerContext.d.ts.map +1 -1
- package/dist/types/components/Popover/index.d.ts +2 -2
- package/dist/types/components/Popover/index.d.ts.map +1 -1
- package/dist/types/components/Radio/index.d.ts +1 -1
- package/dist/types/components/Radio/index.d.ts.map +1 -1
- package/dist/types/components/Search/SearchButton.d.ts.map +1 -1
- package/dist/types/components/Select/Select.d.ts.map +1 -1
- package/dist/types/components/Select/SelectOptgroup.d.ts.map +1 -1
- package/dist/types/components/Select/SelectOption.d.ts.map +1 -1
- package/dist/types/components/Select/index.d.ts +1 -1
- package/dist/types/components/Select/index.d.ts.map +1 -1
- package/dist/types/components/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/types/components/SkipLink/SkipLink.d.ts.map +1 -1
- package/dist/types/components/SkipLink/index.d.ts +1 -1
- package/dist/types/components/SkipLink/index.d.ts.map +1 -1
- package/dist/types/components/Spinner/index.d.ts +1 -1
- package/dist/types/components/Spinner/index.d.ts.map +1 -1
- package/dist/types/components/Suggestion/Suggestion.d.ts +100 -74
- package/dist/types/components/Suggestion/Suggestion.d.ts.map +1 -1
- package/dist/types/components/Suggestion/SuggestionChips.d.ts +19 -0
- package/dist/types/components/Suggestion/SuggestionChips.d.ts.map +1 -0
- package/dist/types/components/Suggestion/SuggestionClear.d.ts +1 -8
- package/dist/types/components/Suggestion/SuggestionClear.d.ts.map +1 -1
- package/dist/types/components/Suggestion/SuggestionEmpty.d.ts +1 -1
- package/dist/types/components/Suggestion/SuggestionEmpty.d.ts.map +1 -1
- package/dist/types/components/Suggestion/SuggestionInput.d.ts +1 -1
- package/dist/types/components/Suggestion/SuggestionInput.d.ts.map +1 -1
- package/dist/types/components/Suggestion/SuggestionList.d.ts +5 -5
- package/dist/types/components/Suggestion/SuggestionList.d.ts.map +1 -1
- package/dist/types/components/Suggestion/SuggestionOption.d.ts +0 -1
- package/dist/types/components/Suggestion/SuggestionOption.d.ts.map +1 -1
- package/dist/types/components/Suggestion/index.d.ts +23 -8
- package/dist/types/components/Suggestion/index.d.ts.map +1 -1
- package/dist/types/components/Switch/index.d.ts +1 -1
- package/dist/types/components/Switch/index.d.ts.map +1 -1
- package/dist/types/components/Table/Table.d.ts.map +1 -1
- package/dist/types/components/Table/TableBody.d.ts.map +1 -1
- package/dist/types/components/Table/TableCell.d.ts.map +1 -1
- package/dist/types/components/Table/TableFoot.d.ts.map +1 -1
- package/dist/types/components/Table/TableHead.d.ts.map +1 -1
- package/dist/types/components/Table/TableHeaderCell.d.ts.map +1 -1
- package/dist/types/components/Table/TableRow.d.ts.map +1 -1
- package/dist/types/components/Table/index.d.ts +6 -6
- package/dist/types/components/Table/index.d.ts.map +1 -1
- package/dist/types/components/Tabs/TabsTab.d.ts.map +1 -1
- package/dist/types/components/Tabs/index.d.ts +1 -1
- package/dist/types/components/Tabs/index.d.ts.map +1 -1
- package/dist/types/components/Tag/index.d.ts +1 -1
- package/dist/types/components/Tag/index.d.ts.map +1 -1
- package/dist/types/components/Textarea/index.d.ts +1 -1
- package/dist/types/components/Textarea/index.d.ts.map +1 -1
- package/dist/types/components/Textfield/Textfield.d.ts.map +1 -1
- package/dist/types/components/Textfield/index.d.ts +1 -1
- package/dist/types/components/Textfield/index.d.ts.map +1 -1
- package/dist/types/components/ValidationMessage/index.d.ts +1 -1
- package/dist/types/components/ValidationMessage/index.d.ts.map +1 -1
- package/dist/types/components/index.d.ts +29 -30
- package/dist/types/components/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/utilities/RovingFocus/RovingFocusItem.d.ts.map +1 -1
- package/dist/types/utilities/RovingFocus/RovingFocusRoot.d.ts.map +1 -1
- package/dist/types/utilities/RovingFocus/index.d.ts +1 -1
- package/dist/types/utilities/RovingFocus/index.d.ts.map +1 -1
- package/dist/types/utilities/hooks/index.d.ts +5 -5
- package/dist/types/utilities/hooks/index.d.ts.map +1 -1
- package/dist/types/utilities/hooks/useCheckboxGroup/useCheckboxGroup.d.ts.map +1 -1
- package/dist/types/utilities/hooks/useMergeRefs/useMergeRefs.d.ts.map +1 -1
- package/dist/types/utilities/hooks/usePagination/usePagination.d.ts.map +1 -1
- package/dist/types/utilities/hooks/useRadioGroup/useRadioGroup.d.ts.map +1 -1
- package/dist/types/utilities/index.d.ts +2 -2
- package/dist/types/utilities/index.d.ts.map +1 -1
- package/package.json +15 -17
- package/dist/cjs/components/MultiSuggestion/MultiSuggestion.js +0 -160
- package/dist/cjs/components/MultiSuggestion/MultiSuggestionChips.js +0 -20
- package/dist/cjs/components/MultiSuggestion/MultiSuggestionClear.js +0 -52
- package/dist/cjs/components/MultiSuggestion/MultiSuggestionEmpty.js +0 -23
- package/dist/cjs/components/MultiSuggestion/MultiSuggestionInput.js +0 -37
- package/dist/cjs/components/MultiSuggestion/MultiSuggestionList.js +0 -30
- package/dist/cjs/components/MultiSuggestion/MultiSuggestionOption.js +0 -12
- package/dist/cjs/components/MultiSuggestion/index.js +0 -34
- package/dist/esm/components/MultiSuggestion/MultiSuggestion.js +0 -157
- package/dist/esm/components/MultiSuggestion/MultiSuggestionChips.js +0 -18
- package/dist/esm/components/MultiSuggestion/MultiSuggestionClear.js +0 -49
- package/dist/esm/components/MultiSuggestion/MultiSuggestionEmpty.js +0 -21
- package/dist/esm/components/MultiSuggestion/MultiSuggestionInput.js +0 -35
- package/dist/esm/components/MultiSuggestion/MultiSuggestionList.js +0 -28
- package/dist/esm/components/MultiSuggestion/MultiSuggestionOption.js +0 -10
- package/dist/esm/components/MultiSuggestion/index.js +0 -26
- package/dist/types/components/MultiSuggestion/MultiSuggestion.d.ts +0 -131
- package/dist/types/components/MultiSuggestion/MultiSuggestion.d.ts.map +0 -1
- package/dist/types/components/MultiSuggestion/MultiSuggestionChips.d.ts +0 -20
- package/dist/types/components/MultiSuggestion/MultiSuggestionChips.d.ts.map +0 -1
- package/dist/types/components/MultiSuggestion/MultiSuggestionClear.d.ts +0 -35
- package/dist/types/components/MultiSuggestion/MultiSuggestionClear.d.ts.map +0 -1
- package/dist/types/components/MultiSuggestion/MultiSuggestionEmpty.d.ts +0 -15
- package/dist/types/components/MultiSuggestion/MultiSuggestionEmpty.d.ts.map +0 -1
- package/dist/types/components/MultiSuggestion/MultiSuggestionInput.d.ts +0 -21
- package/dist/types/components/MultiSuggestion/MultiSuggestionInput.d.ts.map +0 -1
- package/dist/types/components/MultiSuggestion/MultiSuggestionList.d.ts +0 -40
- package/dist/types/components/MultiSuggestion/MultiSuggestionList.d.ts.map +0 -1
- package/dist/types/components/MultiSuggestion/MultiSuggestionOption.d.ts +0 -6
- package/dist/types/components/MultiSuggestion/MultiSuggestionOption.d.ts.map +0 -1
- package/dist/types/components/MultiSuggestion/index.d.ts +0 -50
- package/dist/types/components/MultiSuggestion/index.d.ts.map +0 -1
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var MultiSuggestion$1 = require('./MultiSuggestion.js');
|
|
5
|
-
var MultiSuggestionChips = require('./MultiSuggestionChips.js');
|
|
6
|
-
var MultiSuggestionClear = require('./MultiSuggestionClear.js');
|
|
7
|
-
var MultiSuggestionEmpty = require('./MultiSuggestionEmpty.js');
|
|
8
|
-
var MultiSuggestionInput = require('./MultiSuggestionInput.js');
|
|
9
|
-
var MultiSuggestionList = require('./MultiSuggestionList.js');
|
|
10
|
-
var MultiSuggestionOption = require('./MultiSuggestionOption.js');
|
|
11
|
-
|
|
12
|
-
const MultiSuggestion = Object.assign(MultiSuggestion$1.MultiSuggestion, {
|
|
13
|
-
Input: MultiSuggestionInput.MultiSuggestionInput,
|
|
14
|
-
List: MultiSuggestionList.MultiSuggestionList,
|
|
15
|
-
Option: MultiSuggestionOption.MultiSuggestionOption,
|
|
16
|
-
Chips: MultiSuggestionChips.MultiSuggestionChips,
|
|
17
|
-
Empty: MultiSuggestionEmpty.MultiSuggestionEmpty,
|
|
18
|
-
Clear: MultiSuggestionClear.MultiSuggestionClear,
|
|
19
|
-
});
|
|
20
|
-
MultiSuggestion.displayName = 'EXPERIMENTAL_MultiSuggestion';
|
|
21
|
-
MultiSuggestion.Input.displayName = 'EXPERIMENTAL_MultiSuggestion.Input';
|
|
22
|
-
MultiSuggestion.List.displayName = 'EXPERIMENTAL_MultiSuggestion.List';
|
|
23
|
-
MultiSuggestion.Option.displayName = 'EXPERIMENTAL_MultiSuggestion.Option';
|
|
24
|
-
MultiSuggestion.Chips.displayName = 'EXPERIMENTAL_MultiSuggestion.Chips';
|
|
25
|
-
MultiSuggestion.Empty.displayName = 'EXPERIMENTAL_MultiSuggestion.Empty';
|
|
26
|
-
MultiSuggestion.Clear.displayName = 'EXPERIMENTAL_MultiSuggestion.Clear';
|
|
27
|
-
|
|
28
|
-
exports.EXPERIMENTAL_MultiSuggestionChips = MultiSuggestionChips.MultiSuggestionChips;
|
|
29
|
-
exports.EXPERIMENTAL_MultiSuggestionClear = MultiSuggestionClear.MultiSuggestionClear;
|
|
30
|
-
exports.EXPERIMENTAL_MultiSuggestionEmpty = MultiSuggestionEmpty.MultiSuggestionEmpty;
|
|
31
|
-
exports.EXPERIMENTAL_MultiSuggestionInput = MultiSuggestionInput.MultiSuggestionInput;
|
|
32
|
-
exports.EXPERIMENTAL_MultiSuggestionList = MultiSuggestionList.MultiSuggestionList;
|
|
33
|
-
exports.EXPERIMENTAL_MultiSuggestionOption = MultiSuggestionOption.MultiSuggestionOption;
|
|
34
|
-
exports.EXPERIMENTAL_MultiSuggestion = MultiSuggestion;
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { forwardRef, createContext, useState, useId, useRef, useEffect, useCallback } from 'react';
|
|
4
|
-
import '@u-elements/u-tags';
|
|
5
|
-
import { getDatalistValue, syncDatalistState } from '@u-elements/u-datalist';
|
|
6
|
-
import cl from 'clsx/lite';
|
|
7
|
-
import { useMergeRefs } from '../../utilities/hooks/useMergeRefs/useMergeRefs.js';
|
|
8
|
-
|
|
9
|
-
const MultiSuggestionContext = createContext({});
|
|
10
|
-
const MultiSuggestion = forwardRef(function MultiSuggestion({ value, defaultValue, onValueChange, name, filter = true, allowCreate = false, className, ...rest }, ref) {
|
|
11
|
-
const [listId, setListId] = useState(useId());
|
|
12
|
-
const [selectedItems, setSelectedItems] = useState({});
|
|
13
|
-
const inputRef = useRef(null);
|
|
14
|
-
const uTagsRef = useRef(null);
|
|
15
|
-
const mergedRefs = useMergeRefs([ref, uTagsRef]);
|
|
16
|
-
const isControlled = Boolean(value);
|
|
17
|
-
const [controlledDirty, setControlledDirty] = useState(false);
|
|
18
|
-
/**
|
|
19
|
-
* If we have set a default value, set it on initial render
|
|
20
|
-
*/
|
|
21
|
-
useEffect(() => {
|
|
22
|
-
if (!defaultValue)
|
|
23
|
-
return;
|
|
24
|
-
if (value) {
|
|
25
|
-
console.warn('defaultValue can not be used in combination with value');
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const items = uTagsRef.current?.querySelectorAll('u-option');
|
|
29
|
-
if (!items)
|
|
30
|
-
return;
|
|
31
|
-
const defaultItems = Array.from(items).filter((item) => defaultValue.includes(item.value));
|
|
32
|
-
for (const item of defaultItems) {
|
|
33
|
-
uTagsRef.current?.dispatchEvent(new CustomEvent('add', {
|
|
34
|
-
detail: { item },
|
|
35
|
-
}));
|
|
36
|
-
setSelectedItems((prevItems) => ({
|
|
37
|
-
...prevItems,
|
|
38
|
-
[item.value]: item,
|
|
39
|
-
}));
|
|
40
|
-
}
|
|
41
|
-
return () => {
|
|
42
|
-
console.error('Default value changed during render');
|
|
43
|
-
};
|
|
44
|
-
}, [defaultValue]);
|
|
45
|
-
/**
|
|
46
|
-
* Controlled state management
|
|
47
|
-
*/
|
|
48
|
-
useEffect(() => {
|
|
49
|
-
if (!value)
|
|
50
|
-
return;
|
|
51
|
-
const items = inputRef.current?.list?.options;
|
|
52
|
-
if (!items)
|
|
53
|
-
return;
|
|
54
|
-
const itemsArray = Array.from(items);
|
|
55
|
-
const itemsArrayValues = itemsArray.map((item) => item.value);
|
|
56
|
-
const selectedArray = Object.keys(selectedItems);
|
|
57
|
-
const validValues = value.filter((val) => itemsArrayValues.includes(val));
|
|
58
|
-
const itemsToAdd = validValues.filter((val) => !selectedArray.includes(val));
|
|
59
|
-
const itemsToRemove = selectedArray.filter((val) => !validValues.includes(val));
|
|
60
|
-
for (const item of itemsArray) {
|
|
61
|
-
if (itemsToAdd.includes(item.value)) {
|
|
62
|
-
uTagsRef.current?.dispatchEvent(new CustomEvent('add', {
|
|
63
|
-
detail: { item },
|
|
64
|
-
}));
|
|
65
|
-
setSelectedItems((prevItems) => ({
|
|
66
|
-
...prevItems,
|
|
67
|
-
[item.value]: item,
|
|
68
|
-
}));
|
|
69
|
-
}
|
|
70
|
-
if (itemsToRemove.includes(item.value)) {
|
|
71
|
-
uTagsRef.current?.dispatchEvent(new CustomEvent('remove', {
|
|
72
|
-
detail: { item },
|
|
73
|
-
}));
|
|
74
|
-
setSelectedItems((prevItems) => {
|
|
75
|
-
const { [item.value]: _, ...rest } = prevItems;
|
|
76
|
-
return rest;
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}, [value]);
|
|
81
|
-
/**
|
|
82
|
-
* Listerners and handling of adding/removing
|
|
83
|
-
*/
|
|
84
|
-
useEffect(() => {
|
|
85
|
-
if (!uTagsRef?.current)
|
|
86
|
-
return;
|
|
87
|
-
const handleItemsChange = (e) => {
|
|
88
|
-
e.preventDefault();
|
|
89
|
-
const item = e.detail.item;
|
|
90
|
-
if (e.detail.action === 'add') {
|
|
91
|
-
/**
|
|
92
|
-
* If creating is off, check if the value is allowed to be added
|
|
93
|
-
*/
|
|
94
|
-
if (!allowCreate) {
|
|
95
|
-
const optionExists = Array.from(inputRef.current?.list?.options || [], getDatalistValue).includes(item.value);
|
|
96
|
-
if (!optionExists)
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
setSelectedItems((prevItems) => ({
|
|
100
|
-
...prevItems,
|
|
101
|
-
[item.value]: item,
|
|
102
|
-
}));
|
|
103
|
-
}
|
|
104
|
-
if (e.detail.action === 'remove') {
|
|
105
|
-
setSelectedItems((prevItems) => {
|
|
106
|
-
const { [item.value]: _, ...rest } = prevItems;
|
|
107
|
-
return rest;
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
if (isControlled)
|
|
111
|
-
setControlledDirty(true);
|
|
112
|
-
};
|
|
113
|
-
uTagsRef.current.addEventListener('tags', handleItemsChange);
|
|
114
|
-
return () => {
|
|
115
|
-
uTagsRef.current?.removeEventListener('tags', handleItemsChange);
|
|
116
|
-
};
|
|
117
|
-
}, [uTagsRef, setSelectedItems]);
|
|
118
|
-
/**
|
|
119
|
-
* When controlled, trigger onValueChange callback for ordinary add/remove
|
|
120
|
-
*/
|
|
121
|
-
useEffect(() => {
|
|
122
|
-
if (!controlledDirty)
|
|
123
|
-
return;
|
|
124
|
-
onValueChange?.(Object.keys(selectedItems));
|
|
125
|
-
setControlledDirty(false);
|
|
126
|
-
}, [controlledDirty]);
|
|
127
|
-
const handleFilter = useCallback((input) => {
|
|
128
|
-
const list = input?.list;
|
|
129
|
-
// Let <datalist> handle filtering if filter is true
|
|
130
|
-
if (filter === true || !list)
|
|
131
|
-
return;
|
|
132
|
-
// Handle custom filter
|
|
133
|
-
if (filter !== false) {
|
|
134
|
-
let index = 0;
|
|
135
|
-
for (const option of list.getElementsByTagName('u-option')) {
|
|
136
|
-
if (!option.hasAttribute('data-empty'))
|
|
137
|
-
option.disabled = !filter({
|
|
138
|
-
index: index++, // Increment index for each <option>
|
|
139
|
-
input,
|
|
140
|
-
optionElement: option,
|
|
141
|
-
text: option.text,
|
|
142
|
-
value: getDatalistValue(option),
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
syncDatalistState(input); // Sync the datalist state if filter is custom or false
|
|
147
|
-
}, [filter]);
|
|
148
|
-
return (jsxs(MultiSuggestionContext.Provider, { value: {
|
|
149
|
-
inputRef,
|
|
150
|
-
listId,
|
|
151
|
-
selectedItems,
|
|
152
|
-
setListId,
|
|
153
|
-
handleFilter,
|
|
154
|
-
}, children: [jsx("u-tags", { class: cl('ds-multi-suggestion', className), ref: mergedRefs, ...rest }), name && (jsx("select", { multiple: true, hidden: true, name: name, children: Object.values(selectedItems).map((item) => (jsx("option", { value: item.value }, item.value))) }))] }));
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
export { MultiSuggestion, MultiSuggestionContext };
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
3
|
-
import { useContext } from 'react';
|
|
4
|
-
import { Chip } from '../Chip/index.js';
|
|
5
|
-
import { MultiSuggestionContext } from './MultiSuggestion.js';
|
|
6
|
-
|
|
7
|
-
const MultiSuggestionChips = ({ render = ({ value }) => value, }) => {
|
|
8
|
-
const { selectedItems } = useContext(MultiSuggestionContext);
|
|
9
|
-
return (jsx(Fragment, { children: selectedItems &&
|
|
10
|
-
Object.values(selectedItems).map((item) => (jsx(Chip.Removable, { value: item.value, asChild: true, children: jsx("data", { children: render({
|
|
11
|
-
text: item.textContent || item.value,
|
|
12
|
-
value: item.value,
|
|
13
|
-
element: item,
|
|
14
|
-
}) }) }, item.value))) }));
|
|
15
|
-
};
|
|
16
|
-
MultiSuggestionChips.displayName = 'MultiSuggestionChips';
|
|
17
|
-
|
|
18
|
-
export { MultiSuggestionChips };
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { forwardRef, useContext } from 'react';
|
|
4
|
-
import { MultiSuggestionContext } from './MultiSuggestion.js';
|
|
5
|
-
import { Button } from '../Button/Button.js';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Component that provides a clear button for the MultiSuggestion input.
|
|
9
|
-
*
|
|
10
|
-
* Place as a descendant of `MultiSuggestion`
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* <MultiSuggestion>
|
|
14
|
-
* <MultiSuggestion.Input />
|
|
15
|
-
* <MultiSuggestion.Clear />
|
|
16
|
-
* <MultiSuggestion.List />
|
|
17
|
-
* </MultiSuggestion>
|
|
18
|
-
*/
|
|
19
|
-
const MultiSuggestionClear = forwardRef(function MultiSuggestionClear({ 'aria-label': label = 'Tøm', onClick, ...rest }, ref) {
|
|
20
|
-
const { inputRef } = useContext(MultiSuggestionContext); //, handleValueChange
|
|
21
|
-
const handleClear = (event) => {
|
|
22
|
-
if (!inputRef?.current)
|
|
23
|
-
throw new Error('Input is missing');
|
|
24
|
-
/* narrow type to make TS happy */
|
|
25
|
-
if (!(inputRef?.current instanceof HTMLInputElement))
|
|
26
|
-
throw new Error('Input is not an input element');
|
|
27
|
-
event.preventDefault();
|
|
28
|
-
setReactInputValue(inputRef.current, '');
|
|
29
|
-
inputRef.current.focus();
|
|
30
|
-
onClick?.(event);
|
|
31
|
-
};
|
|
32
|
-
return (jsx(Button, { ref: ref, variant: 'tertiary', type: 'reset', "aria-label": label, onClick: handleClear, icon: true, ...rest }));
|
|
33
|
-
});
|
|
34
|
-
// Copied from https://github.com/facebook/react/issues/11488#issuecomment-1300987446
|
|
35
|
-
const setReactInputValue = (input, value) => {
|
|
36
|
-
const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value')?.set;
|
|
37
|
-
if (nativeInputValueSetter) {
|
|
38
|
-
nativeInputValueSetter.call(input, value);
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
throw new Error('Unable to find the native input value setter');
|
|
42
|
-
}
|
|
43
|
-
const inputEvent = new Event('input', { bubbles: true });
|
|
44
|
-
const changeEvent = new Event('change', { bubbles: true });
|
|
45
|
-
input.dispatchEvent(inputEvent);
|
|
46
|
-
input.dispatchEvent(changeEvent);
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
export { MultiSuggestionClear, setReactInputValue };
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { forwardRef } from 'react';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Component that provides an empty MultiSuggestion list.
|
|
7
|
-
*
|
|
8
|
-
* Place as a descendant of `MultiSuggestion.List`
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* <MultiSuggestion.List>
|
|
12
|
-
* <MultiSuggestion.Empty>Tomt</MultiSuggestion.Empty>
|
|
13
|
-
* </MultiSuggestion.List>
|
|
14
|
-
*/
|
|
15
|
-
const MultiSuggestionEmpty = forwardRef(function MultiSuggestionEmpty(rest, ref) {
|
|
16
|
-
return (
|
|
17
|
-
// biome-ignore lint/a11y/noInteractiveElementToNoninteractiveRole: Empty option shoult not be interactive
|
|
18
|
-
jsx("u-option", { "data-empty": true, role: 'none', ref: ref, ...rest }));
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
export { MultiSuggestionEmpty };
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { isDatalistClick } from '@u-elements/u-datalist';
|
|
4
|
-
import { forwardRef, useContext, useEffect } from 'react';
|
|
5
|
-
import { MultiSuggestionContext } from './MultiSuggestion.js';
|
|
6
|
-
import { useMergeRefs } from '../../utilities/hooks/useMergeRefs/useMergeRefs.js';
|
|
7
|
-
import { Input } from '../Input/Input.js';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Component that provides an input field for the MultiSuggestion list.
|
|
11
|
-
*
|
|
12
|
-
* Place as a descendant of `MultiSuggestion`
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* <MultiSuggestion>
|
|
16
|
-
* <MultiSuggestion.Input />
|
|
17
|
-
* <MultiSuggestion.List />
|
|
18
|
-
* </MultiSuggestion>
|
|
19
|
-
*/
|
|
20
|
-
const MultiSuggestionInput = forwardRef(function MultiSuggestionList({ value, onInput, ...rest }, ref) {
|
|
21
|
-
const { listId, inputRef, handleFilter } = useContext(MultiSuggestionContext);
|
|
22
|
-
const mergedRefs = useMergeRefs([inputRef, ref]);
|
|
23
|
-
// Update also if controlled value
|
|
24
|
-
useEffect(() => {
|
|
25
|
-
handleFilter?.(inputRef?.current);
|
|
26
|
-
}, [value]);
|
|
27
|
-
return (jsx(Input, { ref: mergedRefs, list: listId, value: value, onInput: (event) => {
|
|
28
|
-
onInput?.(event); // Should run first
|
|
29
|
-
if (!isDatalistClick(event.nativeEvent))
|
|
30
|
-
handleFilter?.(inputRef?.current);
|
|
31
|
-
}, placeholder: '' // We need an empty placeholder for the clear button to be able to show/hide
|
|
32
|
-
, ...rest }));
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
export { MultiSuggestionInput };
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { forwardRef, useContext, useEffect } from 'react';
|
|
4
|
-
import '@u-elements/u-datalist';
|
|
5
|
-
import { MultiSuggestionContext } from './MultiSuggestion.js';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Component that provides a MultiSuggestion list.
|
|
9
|
-
*
|
|
10
|
-
* Place as a descendant of `MultiSuggestion`
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* <MultiSuggestion>
|
|
14
|
-
* <MultiSuggestion.Input />
|
|
15
|
-
* <MultiSuggestion.List />
|
|
16
|
-
* </MultiSuggestion>
|
|
17
|
-
*/
|
|
18
|
-
const MultiSuggestionList = forwardRef(function MultiSuggestionList({ singular = '%d forslag', plural = '%d forslag', className, id, ...rest }, ref) {
|
|
19
|
-
const { inputRef, listId, setListId, handleFilter } = useContext(MultiSuggestionContext);
|
|
20
|
-
useEffect(() => handleFilter?.(inputRef?.current)); // Must run on every render
|
|
21
|
-
useEffect(() => {
|
|
22
|
-
if (id && listId !== id)
|
|
23
|
-
setListId?.(id);
|
|
24
|
-
}, [listId, id, setListId]);
|
|
25
|
-
return (jsx("u-datalist", { "data-sr-singular": singular, "data-sr-plural": plural, class: className, id: listId, ref: ref, ...rest }));
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
export { MultiSuggestionList };
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { forwardRef } from 'react';
|
|
4
|
-
import '@u-elements/u-datalist';
|
|
5
|
-
|
|
6
|
-
const MultiSuggestionOption = forwardRef(function MultiSuggestionOption({ className, ...rest }, ref) {
|
|
7
|
-
return (jsx("u-option", { class: className, ref: ref, ...rest }));
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
export { MultiSuggestionOption };
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { MultiSuggestion as MultiSuggestion$1 } from './MultiSuggestion.js';
|
|
3
|
-
import { MultiSuggestionChips } from './MultiSuggestionChips.js';
|
|
4
|
-
import { MultiSuggestionClear } from './MultiSuggestionClear.js';
|
|
5
|
-
import { MultiSuggestionEmpty } from './MultiSuggestionEmpty.js';
|
|
6
|
-
import { MultiSuggestionInput } from './MultiSuggestionInput.js';
|
|
7
|
-
import { MultiSuggestionList } from './MultiSuggestionList.js';
|
|
8
|
-
import { MultiSuggestionOption } from './MultiSuggestionOption.js';
|
|
9
|
-
|
|
10
|
-
const MultiSuggestion = Object.assign(MultiSuggestion$1, {
|
|
11
|
-
Input: MultiSuggestionInput,
|
|
12
|
-
List: MultiSuggestionList,
|
|
13
|
-
Option: MultiSuggestionOption,
|
|
14
|
-
Chips: MultiSuggestionChips,
|
|
15
|
-
Empty: MultiSuggestionEmpty,
|
|
16
|
-
Clear: MultiSuggestionClear,
|
|
17
|
-
});
|
|
18
|
-
MultiSuggestion.displayName = 'EXPERIMENTAL_MultiSuggestion';
|
|
19
|
-
MultiSuggestion.Input.displayName = 'EXPERIMENTAL_MultiSuggestion.Input';
|
|
20
|
-
MultiSuggestion.List.displayName = 'EXPERIMENTAL_MultiSuggestion.List';
|
|
21
|
-
MultiSuggestion.Option.displayName = 'EXPERIMENTAL_MultiSuggestion.Option';
|
|
22
|
-
MultiSuggestion.Chips.displayName = 'EXPERIMENTAL_MultiSuggestion.Chips';
|
|
23
|
-
MultiSuggestion.Empty.displayName = 'EXPERIMENTAL_MultiSuggestion.Empty';
|
|
24
|
-
MultiSuggestion.Clear.displayName = 'EXPERIMENTAL_MultiSuggestion.Clear';
|
|
25
|
-
|
|
26
|
-
export { MultiSuggestion as EXPERIMENTAL_MultiSuggestion, MultiSuggestionChips as EXPERIMENTAL_MultiSuggestionChips, MultiSuggestionClear as EXPERIMENTAL_MultiSuggestionClear, MultiSuggestionEmpty as EXPERIMENTAL_MultiSuggestionEmpty, MultiSuggestionInput as EXPERIMENTAL_MultiSuggestionInput, MultiSuggestionList as EXPERIMENTAL_MultiSuggestionList, MultiSuggestionOption as EXPERIMENTAL_MultiSuggestionOption };
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { type HTMLAttributes, type RefObject } from 'react';
|
|
2
|
-
import '@u-elements/u-tags';
|
|
3
|
-
import type { UHTMLTagsElement } from '@u-elements/u-tags';
|
|
4
|
-
type MultiSuggestionContextType = {
|
|
5
|
-
selectedItems?: {
|
|
6
|
-
[key: string]: HTMLDataElement;
|
|
7
|
-
};
|
|
8
|
-
listId?: string;
|
|
9
|
-
inputRef?: RefObject<HTMLInputElement | null>;
|
|
10
|
-
setListId?: (id: string) => void;
|
|
11
|
-
handleFilter?: (input?: HTMLInputElement | null) => void;
|
|
12
|
-
};
|
|
13
|
-
export declare const MultiSuggestionContext: React.Context<MultiSuggestionContextType>;
|
|
14
|
-
export type MultiSuggestionProps = {
|
|
15
|
-
/**
|
|
16
|
-
* Filter options, either true, false or a custom callback () => boolean
|
|
17
|
-
*
|
|
18
|
-
* If true, the <datalist> will handle filtering.
|
|
19
|
-
* If false, the <datalist> will not handle filtering.
|
|
20
|
-
* If a custom callback, the callback will be used to filter the <option> elements.
|
|
21
|
-
*
|
|
22
|
-
* @default true
|
|
23
|
-
*/
|
|
24
|
-
filter?: boolean | ((args: {
|
|
25
|
-
/**
|
|
26
|
-
* Index of the `option`
|
|
27
|
-
*/
|
|
28
|
-
index: number;
|
|
29
|
-
/**
|
|
30
|
-
* Text content of the `option`
|
|
31
|
-
*/
|
|
32
|
-
text: string;
|
|
33
|
-
/**
|
|
34
|
-
* Value of the `option`
|
|
35
|
-
*/
|
|
36
|
-
value: string;
|
|
37
|
-
/**
|
|
38
|
-
* The DOM element of the `option`
|
|
39
|
-
*/
|
|
40
|
-
optionElement: HTMLOptionElement;
|
|
41
|
-
/**
|
|
42
|
-
* The DOM element of the `input`
|
|
43
|
-
*/
|
|
44
|
-
input: HTMLInputElement;
|
|
45
|
-
}) => boolean);
|
|
46
|
-
/**
|
|
47
|
-
* Allows the user to create new items
|
|
48
|
-
*
|
|
49
|
-
* @default false
|
|
50
|
-
*/
|
|
51
|
-
allowCreate?: boolean;
|
|
52
|
-
/**
|
|
53
|
-
* The selected items of the multi-select.
|
|
54
|
-
* Using this makes the component controlled and it must be used in combination with onValueChange
|
|
55
|
-
*/
|
|
56
|
-
value?: string[];
|
|
57
|
-
/**
|
|
58
|
-
* Default selected items when uncontrolled
|
|
59
|
-
*/
|
|
60
|
-
defaultValue?: string[];
|
|
61
|
-
/**
|
|
62
|
-
* Callback when selected items changes
|
|
63
|
-
*/
|
|
64
|
-
onValueChange?: (value: string[]) => void;
|
|
65
|
-
/**
|
|
66
|
-
* The name of the associated form control
|
|
67
|
-
*
|
|
68
|
-
* @default undefined
|
|
69
|
-
*/
|
|
70
|
-
name?: string;
|
|
71
|
-
} & HTMLAttributes<UHTMLTagsElement>;
|
|
72
|
-
export declare const MultiSuggestion: React.ForwardRefExoticComponent<{
|
|
73
|
-
/**
|
|
74
|
-
* Filter options, either true, false or a custom callback () => boolean
|
|
75
|
-
*
|
|
76
|
-
* If true, the <datalist> will handle filtering.
|
|
77
|
-
* If false, the <datalist> will not handle filtering.
|
|
78
|
-
* If a custom callback, the callback will be used to filter the <option> elements.
|
|
79
|
-
*
|
|
80
|
-
* @default true
|
|
81
|
-
*/
|
|
82
|
-
filter?: boolean | ((args: {
|
|
83
|
-
/**
|
|
84
|
-
* Index of the `option`
|
|
85
|
-
*/
|
|
86
|
-
index: number;
|
|
87
|
-
/**
|
|
88
|
-
* Text content of the `option`
|
|
89
|
-
*/
|
|
90
|
-
text: string;
|
|
91
|
-
/**
|
|
92
|
-
* Value of the `option`
|
|
93
|
-
*/
|
|
94
|
-
value: string;
|
|
95
|
-
/**
|
|
96
|
-
* The DOM element of the `option`
|
|
97
|
-
*/
|
|
98
|
-
optionElement: HTMLOptionElement;
|
|
99
|
-
/**
|
|
100
|
-
* The DOM element of the `input`
|
|
101
|
-
*/
|
|
102
|
-
input: HTMLInputElement;
|
|
103
|
-
}) => boolean);
|
|
104
|
-
/**
|
|
105
|
-
* Allows the user to create new items
|
|
106
|
-
*
|
|
107
|
-
* @default false
|
|
108
|
-
*/
|
|
109
|
-
allowCreate?: boolean;
|
|
110
|
-
/**
|
|
111
|
-
* The selected items of the multi-select.
|
|
112
|
-
* Using this makes the component controlled and it must be used in combination with onValueChange
|
|
113
|
-
*/
|
|
114
|
-
value?: string[];
|
|
115
|
-
/**
|
|
116
|
-
* Default selected items when uncontrolled
|
|
117
|
-
*/
|
|
118
|
-
defaultValue?: string[];
|
|
119
|
-
/**
|
|
120
|
-
* Callback when selected items changes
|
|
121
|
-
*/
|
|
122
|
-
onValueChange?: (value: string[]) => void;
|
|
123
|
-
/**
|
|
124
|
-
* The name of the associated form control
|
|
125
|
-
*
|
|
126
|
-
* @default undefined
|
|
127
|
-
*/
|
|
128
|
-
name?: string;
|
|
129
|
-
} & HTMLAttributes<UHTMLTagsElement> & React.RefAttributes<UHTMLTagsElement>>;
|
|
130
|
-
export {};
|
|
131
|
-
//# sourceMappingURL=MultiSuggestion.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSuggestion.d.ts","sourceRoot":"","sources":["../../../src/components/MultiSuggestion/MultiSuggestion.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EAQf,MAAM,OAAO,CAAC;AACf,OAAO,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAI3D,KAAK,0BAA0B,GAAG;IAChC,aAAa,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAA;KAAE,CAAC;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAC9C,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,CAAC;CAC1D,CAAC;AAEF,eAAO,MAAM,sBAAsB,2CAElC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;;;;;;OAQG;IACH,MAAM,CAAC,EACH,OAAO,GACP,CAAC,CAAC,IAAI,EAAE;QACN;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;QACb;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,aAAa,EAAE,iBAAiB,CAAC;QACjC;;WAEG;QACH,KAAK,EAAE,gBAAgB,CAAC;KACzB,KAAK,OAAO,CAAC,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;AAErC,eAAO,MAAM,eAAe;IA5D1B;;;;;;;;OAQG;aAEC,OAAO,GACP,CAAC,CAAC,IAAI,EAAE;QACN;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;QACb;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,aAAa,EAAE,iBAAiB,CAAC;QACjC;;WAEG;QACH,KAAK,EAAE,gBAAgB,CAAC;KACzB,KAAK,OAAO,CAAC;IAClB;;;;OAIG;kBACW,OAAO;IACrB;;;OAGG;YACK,MAAM,EAAE;IAChB;;OAEG;mBACY,MAAM,EAAE;IACvB;;OAEG;oBACa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI;IACzC;;;;OAIG;WACI,MAAM;6EA0Nb,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
-
import type { DefaultProps } from '../../types';
|
|
3
|
-
import type { MergeRight } from '../../utilities';
|
|
4
|
-
export type MultiSuggestionChipsProps = MergeRight<DefaultProps & HTMLAttributes<HTMLDivElement>, {
|
|
5
|
-
/**
|
|
6
|
-
* Change the rendered content of the chip.
|
|
7
|
-
*
|
|
8
|
-
* @default ({ value }) => value
|
|
9
|
-
*/
|
|
10
|
-
render?: (args: {
|
|
11
|
-
text: string;
|
|
12
|
-
value: string;
|
|
13
|
-
element: HTMLDataElement;
|
|
14
|
-
}) => ReactNode;
|
|
15
|
-
}>;
|
|
16
|
-
export declare const MultiSuggestionChips: {
|
|
17
|
-
({ render, }: MultiSuggestionChipsProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
-
displayName: string;
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=MultiSuggestionChips.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSuggestionChips.d.ts","sourceRoot":"","sources":["../../../src/components/MultiSuggestion/MultiSuggestionChips.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIlD,MAAM,MAAM,yBAAyB,GAAG,UAAU,CAChD,YAAY,GAAG,cAAc,CAAC,cAAc,CAAC,EAC7C;IACE;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,eAAe,CAAC;KAC1B,KAAK,SAAS,CAAC;CACjB,CACF,CAAC;AAEF,eAAO,MAAM,oBAAoB;kBAE9B,yBAAyB;;CAmB3B,CAAC"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { type ButtonProps } from '../Button';
|
|
2
|
-
export type MultiSuggestionClearProps = Omit<ButtonProps, 'variant' | 'children'> & {
|
|
3
|
-
/**
|
|
4
|
-
* Aria label for the clear button
|
|
5
|
-
* @default 'Tøm'
|
|
6
|
-
*/
|
|
7
|
-
'aria-label'?: string;
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* Component that provides a clear button for the MultiSuggestion input.
|
|
11
|
-
*
|
|
12
|
-
* Place as a descendant of `MultiSuggestion`
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* <MultiSuggestion>
|
|
16
|
-
* <MultiSuggestion.Input />
|
|
17
|
-
* <MultiSuggestion.Clear />
|
|
18
|
-
* <MultiSuggestion.List />
|
|
19
|
-
* </MultiSuggestion>
|
|
20
|
-
*/
|
|
21
|
-
export declare const MultiSuggestionClear: React.ForwardRefExoticComponent<Omit<ButtonProps, "children" | "variant"> & {
|
|
22
|
-
/**
|
|
23
|
-
* Aria label for the clear button
|
|
24
|
-
* @default 'Tøm'
|
|
25
|
-
*/
|
|
26
|
-
'aria-label'?: string;
|
|
27
|
-
} & React.RefAttributes<HTMLButtonElement>>;
|
|
28
|
-
type ReactInternalHack = {
|
|
29
|
-
_valueTracker?: {
|
|
30
|
-
setValue: (a: string) => void;
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
export declare const setReactInputValue: (input: HTMLInputElement & ReactInternalHack, value: string) => void;
|
|
34
|
-
export {};
|
|
35
|
-
//# sourceMappingURL=MultiSuggestionClear.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSuggestionClear.d.ts","sourceRoot":"","sources":["../../../src/components/MultiSuggestion/MultiSuggestionClear.tsx"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAIrD,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,WAAW,EACX,SAAS,GAAG,UAAU,CACvB,GAAG;IACF;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB;IAnB/B;;;OAGG;mBACY,MAAM;2CAiDrB,CAAC;AAIH,KAAK,iBAAiB,GAAG;IAAE,aAAa,CAAC,EAAE;QAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAA;CAAE,CAAC;AAG/E,eAAO,MAAM,kBAAkB,GAC7B,OAAO,gBAAgB,GAAG,iBAAiB,EAC3C,OAAO,MAAM,KACZ,IAcF,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { OptionHTMLAttributes } from 'react';
|
|
2
|
-
import type { DefaultProps } from '../../types';
|
|
3
|
-
export type MultiSuggestionEmptyProps = DefaultProps & OptionHTMLAttributes<HTMLOptionElement>;
|
|
4
|
-
/**
|
|
5
|
-
* Component that provides an empty MultiSuggestion list.
|
|
6
|
-
*
|
|
7
|
-
* Place as a descendant of `MultiSuggestion.List`
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* <MultiSuggestion.List>
|
|
11
|
-
* <MultiSuggestion.Empty>Tomt</MultiSuggestion.Empty>
|
|
12
|
-
* </MultiSuggestion.List>
|
|
13
|
-
*/
|
|
14
|
-
export declare const MultiSuggestionEmpty: React.ForwardRefExoticComponent<DefaultProps & OptionHTMLAttributes<HTMLOptionElement> & React.RefAttributes<HTMLOptionElement>>;
|
|
15
|
-
//# sourceMappingURL=MultiSuggestionEmpty.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSuggestionEmpty.d.ts","sourceRoot":"","sources":["../../../src/components/MultiSuggestion/MultiSuggestionEmpty.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,yBAAyB,GAAG,YAAY,GAClD,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAE1C;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,kIAQ/B,CAAC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { type InputProps } from '../Input';
|
|
2
|
-
export type MultiSuggestionInputProps = InputProps;
|
|
3
|
-
/**
|
|
4
|
-
* Component that provides an input field for the MultiSuggestion list.
|
|
5
|
-
*
|
|
6
|
-
* Place as a descendant of `MultiSuggestion`
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* <MultiSuggestion>
|
|
10
|
-
* <MultiSuggestion.Input />
|
|
11
|
-
* <MultiSuggestion.List />
|
|
12
|
-
* </MultiSuggestion>
|
|
13
|
-
*/
|
|
14
|
-
export declare const MultiSuggestionInput: React.ForwardRefExoticComponent<Omit<import("../../types").DefaultProps & Omit<React.InputHTMLAttributes<HTMLInputElement>, "prefix" | "type">, "type" | "disabled" | "readOnly" | "size" | "role"> & {
|
|
15
|
-
type?: "checkbox" | "color" | "date" | "datetime-local" | "email" | "file" | "hidden" | "month" | "number" | "password" | "radio" | "search" | "tel" | "text" | "time" | "url" | "week";
|
|
16
|
-
size?: number;
|
|
17
|
-
disabled?: boolean;
|
|
18
|
-
readOnly?: boolean;
|
|
19
|
-
role?: React.AriaRole | undefined;
|
|
20
|
-
} & React.RefAttributes<HTMLInputElement>>;
|
|
21
|
-
//# sourceMappingURL=MultiSuggestionInput.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSuggestionInput.d.ts","sourceRoot":"","sources":["../../../src/components/MultiSuggestion/MultiSuggestionInput.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAGlD,MAAM,MAAM,yBAAyB,GAAG,UAAU,CAAC;AAEnD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB;;;;;;0CA2B/B,CAAC"}
|