@digdir/designsystemet-react 1.9.0 → 1.10.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.
Files changed (42) hide show
  1. package/dist/cjs/components/Combobox/Combobox.js +3 -1
  2. package/dist/cjs/components/Combobox/Option/useComboboxOption.js +3 -1
  3. package/dist/cjs/components/Combobox/useComboboxKeyboard.js +4 -1
  4. package/dist/cjs/components/details/details.js +1 -1
  5. package/dist/cjs/components/dialog/dialog.js +1 -1
  6. package/dist/cjs/components/field/field-counter.js +3 -1
  7. package/dist/cjs/components/field/field.js +1 -1
  8. package/dist/cjs/components/popover/popover.js +1 -1
  9. package/dist/cjs/components/skeleton/skeleton.js +3 -1
  10. package/dist/cjs/components/spinner/spinner.js +3 -1
  11. package/dist/cjs/components/suggestion/suggestion-list.js +17 -4
  12. package/dist/cjs/components/suggestion/suggestion.js +1 -1
  13. package/dist/cjs/components/tabs/tabs-list.js +1 -1
  14. package/dist/cjs/components/tabs/tabs-panel.js +1 -1
  15. package/dist/cjs/index.js +87 -86
  16. package/dist/cjs/utilities/roving-focus/roving-focus-item.js +1 -1
  17. package/dist/esm/components/Combobox/Combobox.js +4 -2
  18. package/dist/esm/components/Combobox/ComboboxIdContext.js +1 -1
  19. package/dist/esm/components/Combobox/Option/useComboboxOption.js +3 -1
  20. package/dist/esm/components/Combobox/useComboboxKeyboard.js +4 -1
  21. package/dist/esm/components/chip/index.js +1 -1
  22. package/dist/esm/components/details/details.js +1 -1
  23. package/dist/esm/components/dialog/dialog.js +1 -1
  24. package/dist/esm/components/error-summary/error-summary.js +1 -1
  25. package/dist/esm/components/field/field-counter.js +3 -1
  26. package/dist/esm/components/field/field.js +1 -1
  27. package/dist/esm/components/list/index.js +1 -1
  28. package/dist/esm/components/popover/popover.js +1 -1
  29. package/dist/esm/components/skeleton/skeleton.js +3 -1
  30. package/dist/esm/components/spinner/spinner.js +3 -1
  31. package/dist/esm/components/suggestion/suggestion-list.js +18 -5
  32. package/dist/esm/components/suggestion/suggestion.js +2 -2
  33. package/dist/esm/components/tabs/tabs-list.js +1 -1
  34. package/dist/esm/components/tabs/tabs-panel.js +1 -1
  35. package/dist/esm/components/tabs/tabs.js +1 -1
  36. package/dist/esm/components/toggle-group/toggle-group.js +1 -1
  37. package/dist/esm/index.js +44 -43
  38. package/dist/esm/utilities/roving-focus/roving-focus-item.js +1 -1
  39. package/dist/esm/utilities/roving-focus/roving-focus-root.js +1 -1
  40. package/dist/types/components/suggestion/suggestion-list.d.ts +11 -1
  41. package/dist/types/components/suggestion/suggestion-list.d.ts.map +1 -1
  42. package/package.json +14 -17
@@ -6,6 +6,9 @@ var react$1 = require('@floating-ui/react');
6
6
  var reactVirtual = require('@tanstack/react-virtual');
7
7
  var cl = require('clsx/lite');
8
8
  var react = require('react');
9
+ var useDebounceCallback = require('../../utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.js');
10
+ require('../../utilities/roving-focus/roving-focus-item.js');
11
+ require('../../utilities/roving-focus/roving-focus-root.js');
9
12
  var spinner = require('../spinner/spinner.js');
10
13
  var ComboboxContext = require('./ComboboxContext.js');
11
14
  var ComboboxIdContext = require('./ComboboxIdContext.js');
@@ -20,7 +23,6 @@ var useComboboxKeyboard = require('./useComboboxKeyboard.js');
20
23
  var useFloatingCombobox = require('./useFloatingCombobox.js');
21
24
  var useFormField = require('./useFormField/useFormField.js');
22
25
  var utilities = require('./utilities.js');
23
- var useDebounceCallback = require('../../utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.js');
24
26
 
25
27
  /**
26
28
  * @deprecated Use `Suggestion` instead
@@ -3,10 +3,12 @@
3
3
 
4
4
  var react$1 = require('@floating-ui/react');
5
5
  var react = require('react');
6
+ var useDebounceCallback = require('../../../utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.js');
7
+ require('../../../utilities/roving-focus/roving-focus-item.js');
8
+ require('../../../utilities/roving-focus/roving-focus-root.js');
6
9
  var ComboboxContext = require('../ComboboxContext.js');
7
10
  var ComboboxIdContext = require('../ComboboxIdContext.js');
8
11
  var utilities = require('../utilities.js');
9
- var useDebounceCallback = require('../../../utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.js');
10
12
 
11
13
  const useComboboxOption = ({ id, ref, value, }) => {
12
14
  const generatedId = react.useId();
@@ -1,8 +1,11 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var ComboboxIdContext = require('./ComboboxIdContext.js');
5
4
  var useDebounceCallback = require('../../utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.js');
5
+ require('react');
6
+ require('../../utilities/roving-focus/roving-focus-item.js');
7
+ require('../../utilities/roving-focus/roving-focus-root.js');
8
+ var ComboboxIdContext = require('./ComboboxIdContext.js');
6
9
 
7
10
  const useComboboxKeyboard = ({ readOnly, disabled, interactiveChildren, filteredOptions, inputValue, selectedOptions, multiple, open, options, setOpen, handleSelectOption, }) => {
8
11
  const { activeIndex } = ComboboxIdContext.useComboboxId();
@@ -4,8 +4,8 @@
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var cl = require('clsx/lite');
6
6
  var react = require('react');
7
- require('@u-elements/u-details');
8
7
  var useMergeRefs = require('../../utilities/hooks/use-merge-refs/use-merge-refs.js');
8
+ require('@u-elements/u-details');
9
9
 
10
10
  /**
11
11
  * Details component, contains `Details.Summary` and `Details.Content` components.
@@ -5,9 +5,9 @@ var jsxRuntime = require('react/jsx-runtime');
5
5
  var reactSlot = require('@radix-ui/react-slot');
6
6
  var cl = require('clsx/lite');
7
7
  var react = require('react');
8
+ var useMergeRefs = require('../../utilities/hooks/use-merge-refs/use-merge-refs.js');
8
9
  var button = require('../button/button.js');
9
10
  var dialogTriggerContext = require('./dialog-trigger-context.js');
10
- var useMergeRefs = require('../../utilities/hooks/use-merge-refs/use-merge-refs.js');
11
11
 
12
12
  /**
13
13
  * Dialog component, used to display a dialog dialog.
@@ -3,10 +3,12 @@
3
3
 
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var react = require('react');
6
+ var useDebounceCallback = require('../../utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.js');
7
+ require('../../utilities/roving-focus/roving-focus-item.js');
8
+ require('../../utilities/roving-focus/roving-focus-root.js');
6
9
  var paragraph = require('../paragraph/paragraph.js');
7
10
  var validationMessage = require('../validation-message/validation-message.js');
8
11
  var fieldObserver = require('./field-observer.js');
9
- var useDebounceCallback = require('../../utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.js');
10
12
 
11
13
  const label = (text, count) => text.replace('%d', Math.abs(count).toString());
12
14
  /**
@@ -5,8 +5,8 @@ var jsxRuntime = require('react/jsx-runtime');
5
5
  var reactSlot = require('@radix-ui/react-slot');
6
6
  var cl = require('clsx/lite');
7
7
  var react = require('react');
8
- var fieldObserver = require('./field-observer.js');
9
8
  var useMergeRefs = require('../../utilities/hooks/use-merge-refs/use-merge-refs.js');
9
+ var fieldObserver = require('./field-observer.js');
10
10
 
11
11
  /**
12
12
  * Field component, used to wrap a form field.
@@ -6,8 +6,8 @@ var dom = require('@floating-ui/dom');
6
6
  var reactSlot = require('@radix-ui/react-slot');
7
7
  var cl = require('clsx/lite');
8
8
  var react = require('react');
9
- var popoverTriggerContext = require('./popover-trigger-context.js');
10
9
  var useMergeRefs = require('../../utilities/hooks/use-merge-refs/use-merge-refs.js');
10
+ var popoverTriggerContext = require('./popover-trigger-context.js');
11
11
 
12
12
  /**
13
13
  * Popover component, used to display content in a popover over an element.
@@ -5,8 +5,10 @@ var jsxRuntime = require('react/jsx-runtime');
5
5
  var reactSlot = require('@radix-ui/react-slot');
6
6
  var cl = require('clsx/lite');
7
7
  var react = require('react');
8
- var useSynchronizedAnimation = require('../../utilities/hooks/use-synchronized-animation/use-synchronized-animation.js');
9
8
  var useMergeRefs = require('../../utilities/hooks/use-merge-refs/use-merge-refs.js');
9
+ var useSynchronizedAnimation = require('../../utilities/hooks/use-synchronized-animation/use-synchronized-animation.js');
10
+ require('../../utilities/roving-focus/roving-focus-item.js');
11
+ require('../../utilities/roving-focus/roving-focus-root.js');
10
12
 
11
13
  /**
12
14
  * Skeleton is used to represent a draft of page while the content loads.
@@ -4,8 +4,10 @@
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var cl = require('clsx/lite');
6
6
  var react = require('react');
7
- var useSynchronizedAnimation = require('../../utilities/hooks/use-synchronized-animation/use-synchronized-animation.js');
8
7
  var useMergeRefs = require('../../utilities/hooks/use-merge-refs/use-merge-refs.js');
8
+ var useSynchronizedAnimation = require('../../utilities/hooks/use-synchronized-animation/use-synchronized-animation.js');
9
+ require('../../utilities/roving-focus/roving-focus-item.js');
10
+ require('../../utilities/roving-focus/roving-focus-root.js');
9
11
 
10
12
  /**
11
13
  * Spinner component used for indicating busy or indeterminate loading.
@@ -18,7 +18,7 @@ var suggestion = require('./suggestion.js');
18
18
  * <Suggestion.List />
19
19
  * </Suggestion>
20
20
  */
21
- const SuggestionList = react.forwardRef(function SuggestionList({ singular = '%d forslag', plural = '%d forslag', className, id, ...rest }, ref) {
21
+ const SuggestionList = react.forwardRef(function SuggestionList({ singular = '%d forslag', plural = '%d forslag', className, id, autoPlacement = true, ...rest }, ref) {
22
22
  const { handleFilter, uComboboxRef } = react.useContext(suggestion.SuggestionContext);
23
23
  react.useEffect(handleFilter); // Must run on every render
24
24
  // Position with floating-ui
@@ -30,9 +30,22 @@ const SuggestionList = react.forwardRef(function SuggestionList({ singular = '%d
30
30
  dom.computePosition(trigger, list, {
31
31
  placement: 'bottom',
32
32
  strategy: 'fixed',
33
- middleware: [triggerWidth],
34
- }).then(({ x, y }) => {
35
- list.style.translate = `${Math.round(x)}px calc(${Math.round(y)}px + var(--dsc-suggestion-list-gap))`;
33
+ middleware: [
34
+ ...(autoPlacement
35
+ ? [
36
+ dom.flip({
37
+ fallbackAxisSideDirection: 'start',
38
+ fallbackPlacements: ['top'],
39
+ }),
40
+ dom.shift(),
41
+ ]
42
+ : []),
43
+ undefined,
44
+ triggerWidth,
45
+ ],
46
+ }).then(({ x, y, placement }) => {
47
+ const varOperator = placement.startsWith('top') ? '-' : '+';
48
+ list.style.translate = `${Math.round(x)}px calc(${Math.round(y)}px ${varOperator} var(--dsc-suggestion-list-gap))`;
36
49
  });
37
50
  });
38
51
  }
@@ -5,8 +5,8 @@ var jsxRuntime = require('react/jsx-runtime');
5
5
  var react = require('react');
6
6
  require('@u-elements/u-combobox');
7
7
  var cl = require('clsx/lite');
8
- var index = require('../chip/index.js');
9
8
  var useMergeRefs = require('../../utilities/hooks/use-merge-refs/use-merge-refs.js');
9
+ var index = require('../chip/index.js');
10
10
 
11
11
  const text = (el) => el.textContent?.trim() || '';
12
12
  const sanitizeItems = (values = []) => typeof values === 'string'
@@ -3,9 +3,9 @@
3
3
 
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var react = require('react');
6
+ var useMergeRefs = require('../../utilities/hooks/use-merge-refs/use-merge-refs.js');
6
7
  var rovingFocusRoot = require('../../utilities/roving-focus/roving-focus-root.js');
7
8
  var tabs = require('./tabs.js');
8
- var useMergeRefs = require('../../utilities/hooks/use-merge-refs/use-merge-refs.js');
9
9
 
10
10
  /**
11
11
  * The container for all `Tab` components.
@@ -3,8 +3,8 @@
3
3
 
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var react = require('react');
6
- var tabs = require('./tabs.js');
7
6
  var useMergeRefs = require('../../utilities/hooks/use-merge-refs/use-merge-refs.js');
7
+ var tabs = require('./tabs.js');
8
8
 
9
9
  /**
10
10
  * A single content item in a Tabs component.
package/dist/cjs/index.js CHANGED
@@ -1,221 +1,222 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
+ var alert = require('./components/alert/alert.js');
5
+ var avatar = require('./components/avatar/avatar.js');
6
+ var index = require('./components/badge/index.js');
7
+ var index$1 = require('./components/breadcrumbs/index.js');
8
+ var button = require('./components/button/button.js');
9
+ var index$2 = require('./components/Combobox/index.js');
10
+ var index$3 = require('./components/card/index.js');
11
+ var checkbox = require('./components/checkbox/checkbox.js');
12
+ var index$4 = require('./components/chip/index.js');
13
+ var index$5 = require('./components/details/index.js');
14
+ var index$6 = require('./components/dialog/index.js');
15
+ var divider = require('./components/divider/divider.js');
16
+ var index$7 = require('./components/dropdown/index.js');
17
+ var index$8 = require('./components/error-summary/index.js');
18
+ var index$9 = require('./components/field/index.js');
19
+ var index$a = require('./components/fieldset/index.js');
20
+ var heading = require('./components/heading/heading.js');
21
+ var input = require('./components/input/input.js');
22
+ var label = require('./components/label/label.js');
23
+ var link = require('./components/link/link.js');
24
+ var index$b = require('./components/list/index.js');
25
+ var index$c = require('./components/pagination/index.js');
26
+ var paragraph = require('./components/paragraph/paragraph.js');
27
+ var index$d = require('./components/popover/index.js');
28
+ var radio = require('./components/radio/radio.js');
29
+ var index$e = require('./components/search/index.js');
30
+ var index$f = require('./components/select/index.js');
31
+ var skeleton = require('./components/skeleton/skeleton.js');
32
+ var skipLink = require('./components/skip-link/skip-link.js');
33
+ var spinner = require('./components/spinner/spinner.js');
34
+ var index$g = require('./components/suggestion/index.js');
35
+ var _switch = require('./components/switch/switch.js');
36
+ var index$h = require('./components/table/index.js');
37
+ var index$i = require('./components/tabs/index.js');
38
+ var tag = require('./components/tag/tag.js');
39
+ var textarea = require('./components/textarea/textarea.js');
40
+ var textfield = require('./components/textfield/textfield.js');
41
+ var index$j = require('./components/toggle-group/index.js');
42
+ var tooltip = require('./components/tooltip/tooltip.js');
43
+ var validationMessage = require('./components/validation-message/validation-message.js');
4
44
  var omit = require('./components/Combobox/omit/omit.js');
5
- var rovingFocusItem = require('./utilities/roving-focus/roving-focus-item.js');
6
- var rovingFocusRoot = require('./utilities/roving-focus/roving-focus-root.js');
7
- var useCheckboxGroup = require('./utilities/hooks/use-checkbox-group/use-checkbox-group.js');
8
45
  var useDebounceCallback = require('./utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.js');
9
46
  var useIsomorphicLayoutEffect = require('./utilities/hooks/deprecated/use-isomorphic-layout-effect/use-isomorphic-layout-effect.js');
10
47
  var useMediaQuery = require('./utilities/hooks/deprecated/use-media-query/use-media-query.js');
48
+ var useCheckboxGroup = require('./utilities/hooks/use-checkbox-group/use-checkbox-group.js');
49
+ require('react');
11
50
  var usePagination = require('./utilities/hooks/use-pagination/use-pagination.js');
12
51
  var useRadioGroup = require('./utilities/hooks/use-radio-group/use-radio-group.js');
13
52
  var useSynchronizedAnimation = require('./utilities/hooks/use-synchronized-animation/use-synchronized-animation.js');
14
- var alert = require('./components/alert/alert.js');
15
- var avatar = require('./components/avatar/avatar.js');
16
- var index = require('./components/badge/index.js');
53
+ var rovingFocusItem = require('./utilities/roving-focus/roving-focus-item.js');
54
+ var rovingFocusRoot = require('./utilities/roving-focus/roving-focus-root.js');
17
55
  var badgePosition = require('./components/badge/badge-position.js');
18
- var index$1 = require('./components/breadcrumbs/index.js');
19
56
  var breadcrumbsItem = require('./components/breadcrumbs/breadcrumbs-item.js');
20
57
  var breadcrumbsLink = require('./components/breadcrumbs/breadcrumbs-link.js');
21
58
  var breadcrumbsList = require('./components/breadcrumbs/breadcrumbs-list.js');
22
- var button = require('./components/button/button.js');
23
- var index$2 = require('./components/Combobox/index.js');
24
59
  var Empty = require('./components/Combobox/Empty.js');
25
60
  var Option = require('./components/Combobox/Option/Option.js');
26
- var index$3 = require('./components/card/index.js');
27
61
  var cardBlock = require('./components/card/card-block.js');
28
- var checkbox = require('./components/checkbox/checkbox.js');
29
- var index$4 = require('./components/chip/index.js');
30
62
  var chips = require('./components/chip/chips.js');
31
- var index$5 = require('./components/details/index.js');
32
63
  var detailsContent = require('./components/details/details-content.js');
33
64
  var detailsSummary = require('./components/details/details-summary.js');
34
- var index$6 = require('./components/dialog/index.js');
35
65
  var dialogBlock = require('./components/dialog/dialog-block.js');
36
66
  var dialogTrigger = require('./components/dialog/dialog-trigger.js');
37
67
  var dialogTriggerContext = require('./components/dialog/dialog-trigger-context.js');
38
- var divider = require('./components/divider/divider.js');
39
- var index$7 = require('./components/dropdown/index.js');
40
68
  var dropdownButton = require('./components/dropdown/dropdown-button.js');
41
69
  var dropdownHeading = require('./components/dropdown/dropdown-heading.js');
42
70
  var dropdownItem = require('./components/dropdown/dropdown-item.js');
43
71
  var dropdownList = require('./components/dropdown/dropdown-list.js');
44
72
  var dropdownTrigger = require('./components/dropdown/dropdown-trigger.js');
45
73
  var dropdownTriggerContext = require('./components/dropdown/dropdown-trigger-context.js');
46
- var index$8 = require('./components/error-summary/index.js');
47
74
  var errorSummaryHeading = require('./components/error-summary/error-summary-heading.js');
48
75
  var errorSummaryItem = require('./components/error-summary/error-summary-item.js');
49
76
  var errorSummaryLink = require('./components/error-summary/error-summary-link.js');
50
77
  var errorSummaryList = require('./components/error-summary/error-summary-list.js');
51
- var index$9 = require('./components/field/index.js');
52
78
  var fieldAffix = require('./components/field/field-affix.js');
53
79
  var fieldCounter = require('./components/field/field-counter.js');
54
80
  var fieldDescription = require('./components/field/field-description.js');
55
- var index$a = require('./components/fieldset/index.js');
56
81
  var fieldsetDescription = require('./components/fieldset/fieldset-description.js');
57
82
  var fieldsetLegend = require('./components/fieldset/fieldset-legend.js');
58
- var heading = require('./components/heading/heading.js');
59
- var input = require('./components/input/input.js');
60
- var label = require('./components/label/label.js');
61
- var link = require('./components/link/link.js');
62
- var index$b = require('./components/list/index.js');
63
83
  var listItem = require('./components/list/list-item.js');
64
84
  var lists = require('./components/list/lists.js');
65
- var index$c = require('./components/pagination/index.js');
66
85
  var paginationButton = require('./components/pagination/pagination-button.js');
67
86
  var paginationItem = require('./components/pagination/pagination-item.js');
68
87
  var paginationList = require('./components/pagination/pagination-list.js');
69
- var paragraph = require('./components/paragraph/paragraph.js');
70
- var index$d = require('./components/popover/index.js');
71
88
  var popoverTrigger = require('./components/popover/popover-trigger.js');
72
89
  var popoverTriggerContext = require('./components/popover/popover-trigger-context.js');
73
- var radio = require('./components/radio/radio.js');
74
- var index$e = require('./components/search/index.js');
75
90
  var searchButton = require('./components/search/search-button.js');
76
91
  var searchClear = require('./components/search/search-clear.js');
77
92
  var searchInput = require('./components/search/search-input.js');
78
- var index$f = require('./components/select/index.js');
79
93
  var selectOptgroup = require('./components/select/select-optgroup.js');
80
94
  var selectOption = require('./components/select/select-option.js');
81
- var skeleton = require('./components/skeleton/skeleton.js');
82
- var skipLink = require('./components/skip-link/skip-link.js');
83
- var spinner = require('./components/spinner/spinner.js');
84
- var index$g = require('./components/suggestion/index.js');
85
95
  var suggestionClear = require('./components/suggestion/suggestion-clear.js');
86
96
  var suggestionEmpty = require('./components/suggestion/suggestion-empty.js');
87
97
  var suggestionInput = require('./components/suggestion/suggestion-input.js');
88
98
  var suggestionList = require('./components/suggestion/suggestion-list.js');
89
99
  var suggestionOption = require('./components/suggestion/suggestion-option.js');
90
- var _switch = require('./components/switch/switch.js');
91
- var index$h = require('./components/table/index.js');
92
100
  var tableBody = require('./components/table/table-body.js');
93
101
  var tableCell = require('./components/table/table-cell.js');
94
102
  var tableFoot = require('./components/table/table-foot.js');
95
103
  var tableHead = require('./components/table/table-head.js');
96
104
  var tableHeaderCell = require('./components/table/table-header-cell.js');
97
105
  var tableRow = require('./components/table/table-row.js');
98
- var index$i = require('./components/tabs/index.js');
99
106
  var tabsList = require('./components/tabs/tabs-list.js');
100
107
  var tabsPanel = require('./components/tabs/tabs-panel.js');
101
108
  var tabsTab = require('./components/tabs/tabs-tab.js');
102
- var tag = require('./components/tag/tag.js');
103
- var textarea = require('./components/textarea/textarea.js');
104
- var textfield = require('./components/textfield/textfield.js');
105
- var index$j = require('./components/toggle-group/index.js');
106
109
  var toggleGroupItem = require('./components/toggle-group/toggle-group-item.js');
107
- var tooltip = require('./components/tooltip/tooltip.js');
108
- var validationMessage = require('./components/validation-message/validation-message.js');
109
110
 
110
111
 
111
112
 
113
+ exports.Alert = alert.Alert;
114
+ exports.Avatar = avatar.Avatar;
115
+ exports.Badge = index.Badge;
116
+ exports.Breadcrumbs = index$1.Breadcrumbs;
117
+ exports.Button = button.Button;
118
+ exports.Combobox = index$2.Combobox;
119
+ exports.Card = index$3.Card;
120
+ exports.Checkbox = checkbox.Checkbox;
121
+ exports.Chip = index$4.Chip;
122
+ exports.Details = index$5.Details;
123
+ exports.Dialog = index$6.Dialog;
124
+ exports.Divider = divider.Divider;
125
+ exports.Dropdown = index$7.Dropdown;
126
+ exports.ErrorSummary = index$8.ErrorSummary;
127
+ exports.Field = index$9.Field;
128
+ exports.Fieldset = index$a.Fieldset;
129
+ exports.Heading = heading.Heading;
130
+ exports.Input = input.Input;
131
+ exports.Label = label.Label;
132
+ exports.Link = link.Link;
133
+ exports.List = index$b.List;
134
+ exports.Pagination = index$c.Pagination;
135
+ exports.Paragraph = paragraph.Paragraph;
136
+ exports.Popover = index$d.Popover;
137
+ exports.Radio = radio.Radio;
138
+ exports.Search = index$e.Search;
139
+ exports.Select = index$f.Select;
140
+ exports.Skeleton = skeleton.Skeleton;
141
+ exports.SkipLink = skipLink.SkipLink;
142
+ exports.Spinner = spinner.Spinner;
143
+ exports.EXPERIMENTAL_Suggestion = index$g.EXPERIMENTAL_Suggestion;
144
+ exports.Switch = _switch.Switch;
145
+ exports.Table = index$h.Table;
146
+ exports.Tabs = index$i.Tabs;
147
+ exports.Tag = tag.Tag;
148
+ exports.Textarea = textarea.Textarea;
149
+ exports.Textfield = textfield.Textfield;
150
+ exports.ToggleGroup = index$j.ToggleGroup;
151
+ exports.Tooltip = tooltip.Tooltip;
152
+ exports.ValidationMessage = validationMessage.ValidationMessage;
112
153
  exports.omit = omit.omit;
113
- exports.RovingFocusItem = rovingFocusItem.RovingFocusItem;
114
- exports.RovingFocusRoot = rovingFocusRoot.RovingFocusRoot;
115
- exports.useCheckboxGroup = useCheckboxGroup.useCheckboxGroup;
116
154
  exports.useDebounceCallback = useDebounceCallback.useDebounceCallback;
117
155
  exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect.useIsomorphicLayoutEffect;
118
156
  exports.useMediaQuery = useMediaQuery.useMediaQuery;
157
+ exports.useCheckboxGroup = useCheckboxGroup.useCheckboxGroup;
119
158
  exports.usePagination = usePagination.usePagination;
120
159
  exports.useRadioGroup = useRadioGroup.useRadioGroup;
121
160
  exports.useSynchronizedAnimation = useSynchronizedAnimation.useSynchronizedAnimation;
122
- exports.Alert = alert.Alert;
123
- exports.Avatar = avatar.Avatar;
124
- exports.Badge = index.Badge;
161
+ exports.RovingFocusItem = rovingFocusItem.RovingFocusItem;
162
+ exports.RovingFocusRoot = rovingFocusRoot.RovingFocusRoot;
125
163
  exports.BadgePosition = badgePosition.BadgePosition;
126
- exports.Breadcrumbs = index$1.Breadcrumbs;
127
164
  exports.BreadcrumbsItem = breadcrumbsItem.BreadcrumbsItem;
128
165
  exports.BreadcrumbsLink = breadcrumbsLink.BreadcrumbsLink;
129
166
  exports.BreadcrumbsList = breadcrumbsList.BreadcrumbsList;
130
- exports.Button = button.Button;
131
- exports.Combobox = index$2.Combobox;
132
167
  exports.ComboboxEmpty = Empty.ComboboxEmpty;
133
168
  exports.ComboboxOption = Option.ComboboxOption;
134
- exports.Card = index$3.Card;
135
169
  exports.CardBlock = cardBlock.CardBlock;
136
- exports.Checkbox = checkbox.Checkbox;
137
- exports.Chip = index$4.Chip;
138
170
  exports.ChipButton = chips.ChipButton;
139
171
  exports.ChipCheckbox = chips.ChipCheckbox;
140
172
  exports.ChipRadio = chips.ChipRadio;
141
173
  exports.ChipRemovable = chips.ChipRemovable;
142
- exports.Details = index$5.Details;
143
174
  exports.DetailsContent = detailsContent.DetailsContent;
144
175
  exports.DetailsSummary = detailsSummary.DetailsSummary;
145
- exports.Dialog = index$6.Dialog;
146
176
  exports.DialogBlock = dialogBlock.DialogBlock;
147
177
  exports.DialogTrigger = dialogTrigger.DialogTrigger;
148
178
  exports.DialogTriggerContext = dialogTriggerContext.DialogTriggerContext;
149
- exports.Divider = divider.Divider;
150
- exports.Dropdown = index$7.Dropdown;
151
179
  exports.DropdownButton = dropdownButton.DropdownButton;
152
180
  exports.DropdownHeading = dropdownHeading.DropdownHeading;
153
181
  exports.DropdownItem = dropdownItem.DropdownItem;
154
182
  exports.DropdownList = dropdownList.DropdownList;
155
183
  exports.DropdownTrigger = dropdownTrigger.DropdownTrigger;
156
184
  exports.DropdownTriggerContext = dropdownTriggerContext.DropdownTriggerContext;
157
- exports.ErrorSummary = index$8.ErrorSummary;
158
185
  exports.ErrorSummaryHeading = errorSummaryHeading.ErrorSummaryHeading;
159
186
  exports.ErrorSummaryItem = errorSummaryItem.ErrorSummaryItem;
160
187
  exports.ErrorSummaryLink = errorSummaryLink.ErrorSummaryLink;
161
188
  exports.ErrorSummaryList = errorSummaryList.ErrorSummaryList;
162
- exports.Field = index$9.Field;
163
189
  exports.FieldAffix = fieldAffix.FieldAffix;
164
190
  exports.FieldAffixes = fieldAffix.FieldAffixes;
165
191
  exports.FieldCounter = fieldCounter.FieldCounter;
166
192
  exports.FieldDescription = fieldDescription.FieldDescription;
167
- exports.Fieldset = index$a.Fieldset;
168
193
  exports.FieldsetDescription = fieldsetDescription.FieldsetDescription;
169
194
  exports.FieldsetLegend = fieldsetLegend.FieldsetLegend;
170
- exports.Heading = heading.Heading;
171
- exports.Input = input.Input;
172
- exports.Label = label.Label;
173
- exports.Link = link.Link;
174
- exports.List = index$b.List;
175
195
  exports.ListItem = listItem.ListItem;
176
196
  exports.ListOrdered = lists.ListOrdered;
177
197
  exports.ListUnordered = lists.ListUnordered;
178
- exports.Pagination = index$c.Pagination;
179
198
  exports.PaginationButton = paginationButton.PaginationButton;
180
199
  exports.PaginationItem = paginationItem.PaginationItem;
181
200
  exports.PaginationList = paginationList.PaginationList;
182
- exports.Paragraph = paragraph.Paragraph;
183
- exports.Popover = index$d.Popover;
184
201
  exports.PopoverTrigger = popoverTrigger.PopoverTrigger;
185
202
  exports.PopoverTriggerContext = popoverTriggerContext.PopoverTriggerContext;
186
- exports.Radio = radio.Radio;
187
- exports.Search = index$e.Search;
188
203
  exports.SearchButton = searchButton.SearchButton;
189
204
  exports.SearchClear = searchClear.SearchClear;
190
205
  exports.SearchInput = searchInput.SearchInput;
191
- exports.Select = index$f.Select;
192
206
  exports.SelectOptgroup = selectOptgroup.SelectOptgroup;
193
207
  exports.SelectOption = selectOption.SelectOption;
194
- exports.Skeleton = skeleton.Skeleton;
195
- exports.SkipLink = skipLink.SkipLink;
196
- exports.Spinner = spinner.Spinner;
197
- exports.EXPERIMENTAL_Suggestion = index$g.EXPERIMENTAL_Suggestion;
198
208
  exports.EXPERIMENTAL_SuggestionClear = suggestionClear.SuggestionClear;
199
209
  exports.EXPERIMENTAL_SuggestionEmpty = suggestionEmpty.SuggestionEmpty;
200
210
  exports.EXPERIMENTAL_SuggestionInput = suggestionInput.SuggestionInput;
201
211
  exports.EXPERIMENTAL_SuggestionList = suggestionList.SuggestionList;
202
212
  exports.EXPERIMENTAL_SuggestionOption = suggestionOption.SuggestionOption;
203
- exports.Switch = _switch.Switch;
204
- exports.Table = index$h.Table;
205
213
  exports.TableBody = tableBody.TableBody;
206
214
  exports.TableCell = tableCell.TableCell;
207
215
  exports.TableFoot = tableFoot.TableFoot;
208
216
  exports.TableHead = tableHead.TableHead;
209
217
  exports.TableHeaderCell = tableHeaderCell.TableHeaderCell;
210
218
  exports.TableRow = tableRow.TableRow;
211
- exports.Tabs = index$i.Tabs;
212
219
  exports.TabsList = tabsList.TabsList;
213
220
  exports.TabsPanel = tabsPanel.TabsPanel;
214
221
  exports.TabsTab = tabsTab.TabsTab;
215
- exports.Tag = tag.Tag;
216
- exports.Textarea = textarea.Textarea;
217
- exports.Textfield = textfield.Textfield;
218
- exports.ToggleGroup = index$j.ToggleGroup;
219
222
  exports.ToggleGroupItem = toggleGroupItem.ToggleGroupItem;
220
- exports.Tooltip = tooltip.Tooltip;
221
- exports.ValidationMessage = validationMessage.ValidationMessage;
@@ -4,8 +4,8 @@
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var reactSlot = require('@radix-ui/react-slot');
6
6
  var react = require('react');
7
- var useRovingFocus = require('./use-roving-focus.js');
8
7
  var useMergeRefs = require('../hooks/use-merge-refs/use-merge-refs.js');
8
+ var useRovingFocus = require('./use-roving-focus.js');
9
9
 
10
10
  /** Get the next focusable RovingFocusItem */
11
11
  function getNextFocusableValue(items, value) {
@@ -1,9 +1,12 @@
1
1
  'use client';
2
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
3
  import { FloatingPortal, FloatingFocusManager } from '@floating-ui/react';
4
4
  import { useVirtualizer } from '@tanstack/react-virtual';
5
5
  import cl from 'clsx/lite';
6
6
  import { forwardRef, useRef, useState, useEffect } from 'react';
7
+ import { useDebounceCallback } from '../../utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.js';
8
+ import '../../utilities/roving-focus/roving-focus-item.js';
9
+ import '../../utilities/roving-focus/roving-focus-root.js';
7
10
  import { Spinner } from '../spinner/spinner.js';
8
11
  import { ComboboxContext } from './ComboboxContext.js';
9
12
  import { ComboboxIdProvider } from './ComboboxIdContext.js';
@@ -18,7 +21,6 @@ import { useComboboxKeyboard } from './useComboboxKeyboard.js';
18
21
  import { useFloatingCombobox } from './useFloatingCombobox.js';
19
22
  import { useFormField } from './useFormField/useFormField.js';
20
23
  import { prefix, setReactInputValue, removePrefix } from './utilities.js';
21
- import { useDebounceCallback } from '../../utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.js';
22
24
 
23
25
  /**
24
26
  * @deprecated Use `Suggestion` instead
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { jsx } from 'react/jsx-runtime';
3
- import { useReducer, createContext, useContext } from 'react';
3
+ import { createContext, useContext, useReducer } from 'react';
4
4
 
5
5
  const ComboboxIdContext = createContext({
6
6
  activeIndex: 0,
@@ -1,10 +1,12 @@
1
1
  'use client';
2
2
  import { useMergeRefs } from '@floating-ui/react';
3
3
  import { useId, useContext, useMemo, useEffect } from 'react';
4
+ import { useDebounceCallback } from '../../../utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.js';
5
+ import '../../../utilities/roving-focus/roving-focus-item.js';
6
+ import '../../../utilities/roving-focus/roving-focus-root.js';
4
7
  import { ComboboxContext } from '../ComboboxContext.js';
5
8
  import { useComboboxId, useComboboxIdDispatch } from '../ComboboxIdContext.js';
6
9
  import { prefix } from '../utilities.js';
7
- import { useDebounceCallback } from '../../../utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.js';
8
10
 
9
11
  const useComboboxOption = ({ id, ref, value, }) => {
10
12
  const generatedId = useId();
@@ -1,6 +1,9 @@
1
1
  'use client';
2
- import { useComboboxId } from './ComboboxIdContext.js';
3
2
  import { useDebounceCallback } from '../../utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.js';
3
+ import 'react';
4
+ import '../../utilities/roving-focus/roving-focus-item.js';
5
+ import '../../utilities/roving-focus/roving-focus-root.js';
6
+ import { useComboboxId } from './ComboboxIdContext.js';
4
7
 
5
8
  const useComboboxKeyboard = ({ readOnly, disabled, interactiveChildren, filteredOptions, inputValue, selectedOptions, multiple, open, options, setOpen, handleSelectOption, }) => {
6
9
  const { activeIndex } = useComboboxId();
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { ChipRemovable, ChipRadio, ChipCheckbox, ChipButton } from './chips.js';
2
+ import { ChipButton, ChipCheckbox, ChipRadio, ChipRemovable } from './chips.js';
3
3
 
4
4
  const ChipComponent = {
5
5
  Button: ChipButton,
@@ -2,8 +2,8 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import cl from 'clsx/lite';
4
4
  import { forwardRef, useRef, useEffect } from 'react';
5
- import '@u-elements/u-details';
6
5
  import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
6
+ import '@u-elements/u-details';
7
7
 
8
8
  /**
9
9
  * Details component, contains `Details.Summary` and `Details.Content` components.
@@ -3,9 +3,9 @@ import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import { Slot } from '@radix-ui/react-slot';
4
4
  import cl from 'clsx/lite';
5
5
  import { forwardRef, useContext, useRef, useEffect } from 'react';
6
+ import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
6
7
  import { Button } from '../button/button.js';
7
8
  import { Context } from './dialog-trigger-context.js';
8
- import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
9
9
 
10
10
  /**
11
11
  * Dialog component, used to display a dialog dialog.
@@ -2,7 +2,7 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { Slot } from '@radix-ui/react-slot';
4
4
  import cl from 'clsx/lite';
5
- import { forwardRef, createContext, useId, useState } from 'react';
5
+ import { createContext, forwardRef, useId, useState } from 'react';
6
6
 
7
7
  const ErrorSummaryContext = createContext({
8
8
  headingId: 'heading',
@@ -1,10 +1,12 @@
1
1
  'use client';
2
2
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef, useState, useRef, useEffect } from 'react';
4
+ import { useDebounceCallback } from '../../utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.js';
5
+ import '../../utilities/roving-focus/roving-focus-item.js';
6
+ import '../../utilities/roving-focus/roving-focus-root.js';
4
7
  import { Paragraph } from '../paragraph/paragraph.js';
5
8
  import { ValidationMessage } from '../validation-message/validation-message.js';
6
9
  import { isInputLike } from './field-observer.js';
7
- import { useDebounceCallback } from '../../utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.js';
8
10
 
9
11
  const label = (text, count) => text.replace('%d', Math.abs(count).toString());
10
12
  /**
@@ -3,8 +3,8 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import { Slot } from '@radix-ui/react-slot';
4
4
  import cl from 'clsx/lite';
5
5
  import { forwardRef, useRef, useEffect } from 'react';
6
- import { fieldObserver } from './field-observer.js';
7
6
  import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
7
+ import { fieldObserver } from './field-observer.js';
8
8
 
9
9
  /**
10
10
  * Field component, used to wrap a form field.
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { ListItem } from './list-item.js';
3
- import { ListUnordered, ListOrdered } from './lists.js';
3
+ import { ListOrdered, ListUnordered } from './lists.js';
4
4
 
5
5
  const ListComponent = {
6
6
  Item: ListItem,
@@ -4,8 +4,8 @@ import { autoUpdate, computePosition, offset, flip, shift } from '@floating-ui/d
4
4
  import { Slot } from '@radix-ui/react-slot';
5
5
  import cl from 'clsx/lite';
6
6
  import { forwardRef, useRef, useContext, useState, useEffect } from 'react';
7
- import { Context } from './popover-trigger-context.js';
8
7
  import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
8
+ import { Context } from './popover-trigger-context.js';
9
9
 
10
10
  /**
11
11
  * Popover component, used to display content in a popover over an element.
@@ -3,8 +3,10 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import { Slot } from '@radix-ui/react-slot';
4
4
  import cl from 'clsx/lite';
5
5
  import { forwardRef } from 'react';
6
- import { useSynchronizedAnimation } from '../../utilities/hooks/use-synchronized-animation/use-synchronized-animation.js';
7
6
  import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
7
+ import { useSynchronizedAnimation } from '../../utilities/hooks/use-synchronized-animation/use-synchronized-animation.js';
8
+ import '../../utilities/roving-focus/roving-focus-item.js';
9
+ import '../../utilities/roving-focus/roving-focus-root.js';
8
10
 
9
11
  /**
10
12
  * Skeleton is used to represent a draft of page while the content loads.
@@ -2,8 +2,10 @@
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import cl from 'clsx/lite';
4
4
  import { forwardRef } from 'react';
5
- import { useSynchronizedAnimation } from '../../utilities/hooks/use-synchronized-animation/use-synchronized-animation.js';
6
5
  import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
6
+ import { useSynchronizedAnimation } from '../../utilities/hooks/use-synchronized-animation/use-synchronized-animation.js';
7
+ import '../../utilities/roving-focus/roving-focus-item.js';
8
+ import '../../utilities/roving-focus/roving-focus-root.js';
7
9
 
8
10
  /**
9
11
  * Spinner component used for indicating busy or indeterminate loading.
@@ -2,7 +2,7 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef, useContext, useEffect } from 'react';
4
4
  import '@u-elements/u-datalist';
5
- import { autoUpdate, computePosition } from '@floating-ui/dom';
5
+ import { autoUpdate, computePosition, flip, shift } from '@floating-ui/dom';
6
6
  import { SuggestionContext } from './suggestion.js';
7
7
 
8
8
  /**
@@ -16,7 +16,7 @@ import { SuggestionContext } from './suggestion.js';
16
16
  * <Suggestion.List />
17
17
  * </Suggestion>
18
18
  */
19
- const SuggestionList = forwardRef(function SuggestionList({ singular = '%d forslag', plural = '%d forslag', className, id, ...rest }, ref) {
19
+ const SuggestionList = forwardRef(function SuggestionList({ singular = '%d forslag', plural = '%d forslag', className, id, autoPlacement = true, ...rest }, ref) {
20
20
  const { handleFilter, uComboboxRef } = useContext(SuggestionContext);
21
21
  useEffect(handleFilter); // Must run on every render
22
22
  // Position with floating-ui
@@ -28,9 +28,22 @@ const SuggestionList = forwardRef(function SuggestionList({ singular = '%d forsl
28
28
  computePosition(trigger, list, {
29
29
  placement: 'bottom',
30
30
  strategy: 'fixed',
31
- middleware: [triggerWidth],
32
- }).then(({ x, y }) => {
33
- list.style.translate = `${Math.round(x)}px calc(${Math.round(y)}px + var(--dsc-suggestion-list-gap))`;
31
+ middleware: [
32
+ ...(autoPlacement
33
+ ? [
34
+ flip({
35
+ fallbackAxisSideDirection: 'start',
36
+ fallbackPlacements: ['top'],
37
+ }),
38
+ shift(),
39
+ ]
40
+ : []),
41
+ undefined,
42
+ triggerWidth,
43
+ ],
44
+ }).then(({ x, y, placement }) => {
45
+ const varOperator = placement.startsWith('top') ? '-' : '+';
46
+ list.style.translate = `${Math.round(x)}px calc(${Math.round(y)}px ${varOperator} var(--dsc-suggestion-list-gap))`;
34
47
  });
35
48
  });
36
49
  }
@@ -1,10 +1,10 @@
1
1
  'use client';
2
2
  import { jsx, jsxs } from 'react/jsx-runtime';
3
- import { forwardRef, createContext, useRef, useId, useState, useEffect, useCallback } from 'react';
3
+ import { forwardRef, useRef, useId, useState, useEffect, useCallback, createContext } from 'react';
4
4
  import '@u-elements/u-combobox';
5
5
  import cl from 'clsx/lite';
6
- import { Chip as ChipComponent } from '../chip/index.js';
7
6
  import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
7
+ import { Chip as ChipComponent } from '../chip/index.js';
8
8
 
9
9
  const text = (el) => el.textContent?.trim() || '';
10
10
  const sanitizeItems = (values = []) => typeof values === 'string'
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef, useContext } from 'react';
4
+ import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
4
5
  import { RovingFocusRoot } from '../../utilities/roving-focus/roving-focus-root.js';
5
6
  import { Context } from './tabs.js';
6
- import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
7
7
 
8
8
  /**
9
9
  * The container for all `Tab` components.
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef, useContext, useId, useState, useRef, useEffect } from 'react';
4
- import { Context } from './tabs.js';
5
4
  import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
5
+ import { Context } from './tabs.js';
6
6
 
7
7
  /**
8
8
  * A single content item in a Tabs component.
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import cl from 'clsx/lite';
4
- import { forwardRef, createContext, useRef, useState } from 'react';
4
+ import { createContext, forwardRef, useRef, useState } from 'react';
5
5
 
6
6
  const Context = createContext({});
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx, jsxs } from 'react/jsx-runtime';
3
3
  import cl from 'clsx/lite';
4
- import { forwardRef, useId, useState, createContext } from 'react';
4
+ import { createContext, forwardRef, useId, useState } from 'react';
5
5
  import { RovingFocusRoot } from '../../utilities/roving-focus/roving-focus-root.js';
6
6
 
7
7
  const ToggleGroupContext = createContext({});
package/dist/esm/index.js CHANGED
@@ -1,106 +1,107 @@
1
1
  'use client';
2
+ export { Alert } from './components/alert/alert.js';
3
+ export { Avatar } from './components/avatar/avatar.js';
4
+ export { Badge } from './components/badge/index.js';
5
+ export { Breadcrumbs } from './components/breadcrumbs/index.js';
6
+ export { Button } from './components/button/button.js';
7
+ export { Combobox } from './components/Combobox/index.js';
8
+ export { Card } from './components/card/index.js';
9
+ export { Checkbox } from './components/checkbox/checkbox.js';
10
+ export { Chip } from './components/chip/index.js';
11
+ export { Details } from './components/details/index.js';
12
+ export { Dialog } from './components/dialog/index.js';
13
+ export { Divider } from './components/divider/divider.js';
14
+ export { Dropdown } from './components/dropdown/index.js';
15
+ export { ErrorSummary } from './components/error-summary/index.js';
16
+ export { Field } from './components/field/index.js';
17
+ export { Fieldset } from './components/fieldset/index.js';
18
+ export { Heading } from './components/heading/heading.js';
19
+ export { Input } from './components/input/input.js';
20
+ export { Label } from './components/label/label.js';
21
+ export { Link } from './components/link/link.js';
22
+ export { List } from './components/list/index.js';
23
+ export { Pagination } from './components/pagination/index.js';
24
+ export { Paragraph } from './components/paragraph/paragraph.js';
25
+ export { Popover } from './components/popover/index.js';
26
+ export { Radio } from './components/radio/radio.js';
27
+ export { Search } from './components/search/index.js';
28
+ export { Select } from './components/select/index.js';
29
+ export { Skeleton } from './components/skeleton/skeleton.js';
30
+ export { SkipLink } from './components/skip-link/skip-link.js';
31
+ export { Spinner } from './components/spinner/spinner.js';
32
+ export { EXPERIMENTAL_Suggestion } from './components/suggestion/index.js';
33
+ export { Switch } from './components/switch/switch.js';
34
+ export { Table } from './components/table/index.js';
35
+ export { Tabs } from './components/tabs/index.js';
36
+ export { Tag } from './components/tag/tag.js';
37
+ export { Textarea } from './components/textarea/textarea.js';
38
+ export { Textfield } from './components/textfield/textfield.js';
39
+ export { ToggleGroup } from './components/toggle-group/index.js';
40
+ export { Tooltip } from './components/tooltip/tooltip.js';
41
+ export { ValidationMessage } from './components/validation-message/validation-message.js';
2
42
  export { omit } from './components/Combobox/omit/omit.js';
3
- export { RovingFocusItem } from './utilities/roving-focus/roving-focus-item.js';
4
- export { RovingFocusRoot } from './utilities/roving-focus/roving-focus-root.js';
5
- export { useCheckboxGroup } from './utilities/hooks/use-checkbox-group/use-checkbox-group.js';
6
43
  export { useDebounceCallback } from './utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.js';
7
44
  export { useIsomorphicLayoutEffect } from './utilities/hooks/deprecated/use-isomorphic-layout-effect/use-isomorphic-layout-effect.js';
8
45
  export { useMediaQuery } from './utilities/hooks/deprecated/use-media-query/use-media-query.js';
46
+ export { useCheckboxGroup } from './utilities/hooks/use-checkbox-group/use-checkbox-group.js';
47
+ import 'react';
9
48
  export { usePagination } from './utilities/hooks/use-pagination/use-pagination.js';
10
49
  export { useRadioGroup } from './utilities/hooks/use-radio-group/use-radio-group.js';
11
50
  export { useSynchronizedAnimation } from './utilities/hooks/use-synchronized-animation/use-synchronized-animation.js';
12
- export { Alert } from './components/alert/alert.js';
13
- export { Avatar } from './components/avatar/avatar.js';
14
- export { Badge } from './components/badge/index.js';
51
+ export { RovingFocusItem } from './utilities/roving-focus/roving-focus-item.js';
52
+ export { RovingFocusRoot } from './utilities/roving-focus/roving-focus-root.js';
15
53
  export { BadgePosition } from './components/badge/badge-position.js';
16
- export { Breadcrumbs } from './components/breadcrumbs/index.js';
17
54
  export { BreadcrumbsItem } from './components/breadcrumbs/breadcrumbs-item.js';
18
55
  export { BreadcrumbsLink } from './components/breadcrumbs/breadcrumbs-link.js';
19
56
  export { BreadcrumbsList } from './components/breadcrumbs/breadcrumbs-list.js';
20
- export { Button } from './components/button/button.js';
21
- export { Combobox } from './components/Combobox/index.js';
22
57
  export { ComboboxEmpty } from './components/Combobox/Empty.js';
23
58
  export { ComboboxOption } from './components/Combobox/Option/Option.js';
24
- export { Card } from './components/card/index.js';
25
59
  export { CardBlock } from './components/card/card-block.js';
26
- export { Checkbox } from './components/checkbox/checkbox.js';
27
- export { Chip } from './components/chip/index.js';
28
60
  export { ChipButton, ChipCheckbox, ChipRadio, ChipRemovable } from './components/chip/chips.js';
29
- export { Details } from './components/details/index.js';
30
61
  export { DetailsContent } from './components/details/details-content.js';
31
62
  export { DetailsSummary } from './components/details/details-summary.js';
32
- export { Dialog } from './components/dialog/index.js';
33
63
  export { DialogBlock } from './components/dialog/dialog-block.js';
34
64
  export { DialogTrigger } from './components/dialog/dialog-trigger.js';
35
65
  export { DialogTriggerContext } from './components/dialog/dialog-trigger-context.js';
36
- export { Divider } from './components/divider/divider.js';
37
- export { Dropdown } from './components/dropdown/index.js';
38
66
  export { DropdownButton } from './components/dropdown/dropdown-button.js';
39
67
  export { DropdownHeading } from './components/dropdown/dropdown-heading.js';
40
68
  export { DropdownItem } from './components/dropdown/dropdown-item.js';
41
69
  export { DropdownList } from './components/dropdown/dropdown-list.js';
42
70
  export { DropdownTrigger } from './components/dropdown/dropdown-trigger.js';
43
71
  export { DropdownTriggerContext } from './components/dropdown/dropdown-trigger-context.js';
44
- export { ErrorSummary } from './components/error-summary/index.js';
45
72
  export { ErrorSummaryHeading } from './components/error-summary/error-summary-heading.js';
46
73
  export { ErrorSummaryItem } from './components/error-summary/error-summary-item.js';
47
74
  export { ErrorSummaryLink } from './components/error-summary/error-summary-link.js';
48
75
  export { ErrorSummaryList } from './components/error-summary/error-summary-list.js';
49
- export { Field } from './components/field/index.js';
50
76
  export { FieldAffix, FieldAffixes } from './components/field/field-affix.js';
51
77
  export { FieldCounter } from './components/field/field-counter.js';
52
78
  export { FieldDescription } from './components/field/field-description.js';
53
- export { Fieldset } from './components/fieldset/index.js';
54
79
  export { FieldsetDescription } from './components/fieldset/fieldset-description.js';
55
80
  export { FieldsetLegend } from './components/fieldset/fieldset-legend.js';
56
- export { Heading } from './components/heading/heading.js';
57
- export { Input } from './components/input/input.js';
58
- export { Label } from './components/label/label.js';
59
- export { Link } from './components/link/link.js';
60
- export { List } from './components/list/index.js';
61
81
  export { ListItem } from './components/list/list-item.js';
62
82
  export { ListOrdered, ListUnordered } from './components/list/lists.js';
63
- export { Pagination } from './components/pagination/index.js';
64
83
  export { PaginationButton } from './components/pagination/pagination-button.js';
65
84
  export { PaginationItem } from './components/pagination/pagination-item.js';
66
85
  export { PaginationList } from './components/pagination/pagination-list.js';
67
- export { Paragraph } from './components/paragraph/paragraph.js';
68
- export { Popover } from './components/popover/index.js';
69
86
  export { PopoverTrigger } from './components/popover/popover-trigger.js';
70
87
  export { PopoverTriggerContext } from './components/popover/popover-trigger-context.js';
71
- export { Radio } from './components/radio/radio.js';
72
- export { Search } from './components/search/index.js';
73
88
  export { SearchButton } from './components/search/search-button.js';
74
89
  export { SearchClear } from './components/search/search-clear.js';
75
90
  export { SearchInput } from './components/search/search-input.js';
76
- export { Select } from './components/select/index.js';
77
91
  export { SelectOptgroup } from './components/select/select-optgroup.js';
78
92
  export { SelectOption } from './components/select/select-option.js';
79
- export { Skeleton } from './components/skeleton/skeleton.js';
80
- export { SkipLink } from './components/skip-link/skip-link.js';
81
- export { Spinner } from './components/spinner/spinner.js';
82
- export { EXPERIMENTAL_Suggestion } from './components/suggestion/index.js';
83
93
  export { SuggestionClear as EXPERIMENTAL_SuggestionClear } from './components/suggestion/suggestion-clear.js';
84
94
  export { SuggestionEmpty as EXPERIMENTAL_SuggestionEmpty } from './components/suggestion/suggestion-empty.js';
85
95
  export { SuggestionInput as EXPERIMENTAL_SuggestionInput } from './components/suggestion/suggestion-input.js';
86
96
  export { SuggestionList as EXPERIMENTAL_SuggestionList } from './components/suggestion/suggestion-list.js';
87
97
  export { SuggestionOption as EXPERIMENTAL_SuggestionOption } from './components/suggestion/suggestion-option.js';
88
- export { Switch } from './components/switch/switch.js';
89
- export { Table } from './components/table/index.js';
90
98
  export { TableBody } from './components/table/table-body.js';
91
99
  export { TableCell } from './components/table/table-cell.js';
92
100
  export { TableFoot } from './components/table/table-foot.js';
93
101
  export { TableHead } from './components/table/table-head.js';
94
102
  export { TableHeaderCell } from './components/table/table-header-cell.js';
95
103
  export { TableRow } from './components/table/table-row.js';
96
- export { Tabs } from './components/tabs/index.js';
97
104
  export { TabsList } from './components/tabs/tabs-list.js';
98
105
  export { TabsPanel } from './components/tabs/tabs-panel.js';
99
106
  export { TabsTab } from './components/tabs/tabs-tab.js';
100
- export { Tag } from './components/tag/tag.js';
101
- export { Textarea } from './components/textarea/textarea.js';
102
- export { Textfield } from './components/textfield/textfield.js';
103
- export { ToggleGroup } from './components/toggle-group/index.js';
104
107
  export { ToggleGroupItem } from './components/toggle-group/toggle-group-item.js';
105
- export { Tooltip } from './components/tooltip/tooltip.js';
106
- export { ValidationMessage } from './components/validation-message/validation-message.js';
@@ -2,8 +2,8 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { Slot } from '@radix-ui/react-slot';
4
4
  import { forwardRef } from 'react';
5
- import { useRovingFocus } from './use-roving-focus.js';
6
5
  import { useMergeRefs } from '../hooks/use-merge-refs/use-merge-refs.js';
6
+ import { useRovingFocus } from './use-roving-focus.js';
7
7
 
8
8
  /** Get the next focusable RovingFocusItem */
9
9
  function getNextFocusableValue(items, value) {
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { Slot } from '@radix-ui/react-slot';
4
- import { forwardRef, useState, useRef, useEffect, createContext } from 'react';
4
+ import { createContext, forwardRef, useState, useRef, useEffect } from 'react';
5
5
  import { useMergeRefs } from '../hooks/use-merge-refs/use-merge-refs.js';
6
6
 
7
7
  const RovingFocusContext = createContext({
@@ -13,6 +13,11 @@ export type SuggestionListProps = MergeRight<DefaultProps & HTMLAttributes<HTMLD
13
13
  * @default '%d forslag'
14
14
  */
15
15
  plural?: string;
16
+ /**
17
+ * Whether to enable auto placement.
18
+ * @default true
19
+ */
20
+ autoPlacement?: boolean;
16
21
  }>;
17
22
  /**
18
23
  * Component that provides a Suggestion list.
@@ -25,7 +30,7 @@ export type SuggestionListProps = MergeRight<DefaultProps & HTMLAttributes<HTMLD
25
30
  * <Suggestion.List />
26
31
  * </Suggestion>
27
32
  */
28
- export declare const SuggestionList: import("react").ForwardRefExoticComponent<Omit<DefaultProps & HTMLAttributes<HTMLDataListElement>, "singular" | "plural"> & {
33
+ export declare const SuggestionList: import("react").ForwardRefExoticComponent<Omit<DefaultProps & HTMLAttributes<HTMLDataListElement>, "autoPlacement" | "singular" | "plural"> & {
29
34
  /**
30
35
  * The screen reader announcement for singular Suggestion, where %d is the number of Suggestions
31
36
  * @default '%d forslag'
@@ -36,5 +41,10 @@ export declare const SuggestionList: import("react").ForwardRefExoticComponent<O
36
41
  * @default '%d forslag'
37
42
  */
38
43
  plural?: string;
44
+ /**
45
+ * Whether to enable auto placement.
46
+ * @default true
47
+ */
48
+ autoPlacement?: boolean;
39
49
  } & import("react").RefAttributes<HTMLDataListElement>>;
40
50
  //# sourceMappingURL=suggestion-list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"suggestion-list.d.ts","sourceRoot":"","sources":["../../../src/components/suggestion/suggestion-list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,wBAAwB,CAAC;AAMhC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAC1C,YAAY,GAAG,cAAc,CAAC,mBAAmB,CAAC,EAClD;IACE;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CACF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc;IAxBvB;;;OAGG;eACQ,MAAM;IACjB;;;OAGG;aACM,MAAM;uDAuDjB,CAAC"}
1
+ {"version":3,"file":"suggestion-list.d.ts","sourceRoot":"","sources":["../../../src/components/suggestion/suggestion-list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,wBAAwB,CAAC;AAQhC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAC1C,YAAY,GAAG,cAAc,CAAC,mBAAmB,CAAC,EAClD;IACE;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CACF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc;IA7BvB;;;OAGG;eACQ,MAAM;IACjB;;;OAGG;aACM,MAAM;IACf;;;OAGG;oBACa,OAAO;uDA2EzB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@digdir/designsystemet-react",
3
3
  "type": "module",
4
- "version": "1.9.0",
4
+ "version": "1.10.0",
5
5
  "description": "React components for Designsystemet",
6
6
  "author": "Designsystemet team",
7
7
  "repository": {
@@ -24,7 +24,6 @@
24
24
  "types": "./dist/react-types.d.ts"
25
25
  }
26
26
  },
27
- "sideEffects": false,
28
27
  "files": [
29
28
  "dist/**"
30
29
  ],
@@ -38,42 +37,40 @@
38
37
  "dependencies": {
39
38
  "@floating-ui/dom": "^1.7.4",
40
39
  "@floating-ui/react": "0.26.23",
41
- "@navikt/aksel-icons": "^7.35.1",
40
+ "@navikt/aksel-icons": "^7.37.0",
42
41
  "@radix-ui/react-slot": "^1.2.4",
43
- "@tanstack/react-virtual": "^3.13.12",
42
+ "@tanstack/react-virtual": "^3.13.16",
44
43
  "@u-elements/u-combobox": "^1.0.5",
45
44
  "@u-elements/u-datalist": "^1.0.14",
46
45
  "@u-elements/u-details": "^0.1.5",
47
46
  "clsx": "^2.1.1",
48
- "@digdir/designsystemet-types": "^1.9.0"
47
+ "@digdir/designsystemet-types": "^1.10.0"
49
48
  },
50
49
  "devDependencies": {
51
50
  "@rollup/plugin-commonjs": "^29.0.0",
52
51
  "@rollup/plugin-node-resolve": "^16.0.3",
53
- "@storybook/addon-docs": "^9.1.16",
54
- "@storybook/addon-vitest": "^9.1.16",
55
- "@storybook/react-vite": "^9.1.16",
56
- "@testing-library/dom": "^10.4.1",
52
+ "@storybook/addon-docs": "^10.1.11",
53
+ "@storybook/addon-vitest": "^10.1.11",
54
+ "@storybook/react-vite": "^10.1.11",
57
55
  "@testing-library/jest-dom": "^6.9.1",
58
- "@testing-library/react": "^16.3.0",
56
+ "@testing-library/react": "^16.3.1",
59
57
  "@testing-library/user-event": "^14.6.1",
60
58
  "@types/react": "^19.2.7",
61
59
  "@types/react-dom": "^19.2.3",
62
- "react": "^19.2.1",
63
- "react-dom": "^19.2.1",
60
+ "react": "^19.2.3",
61
+ "react-dom": "^19.2.3",
64
62
  "rimraf": "^6.1.2",
65
- "rollup": "^4.53.3",
63
+ "rollup": "^4.54.0",
66
64
  "rollup-plugin-copy": "^3.5.0",
67
- "storybook": "^9.1.16",
65
+ "storybook": "^10.1.11",
68
66
  "tsx": "4.21.0",
69
67
  "typescript": "^5.9.3",
70
- "@digdir/designsystemet": "^1.9.0",
71
- "@digdir/designsystemet-css": "^1.9.0"
68
+ "@digdir/designsystemet": "^1.10.0",
69
+ "@digdir/designsystemet-css": "^1.10.0"
72
70
  },
73
71
  "scripts": {
74
72
  "build": "pnpm run clean && tsc -b tsconfig.lib.json --emitDeclarationOnly false && rollup -c --bundleConfigAsCjs",
75
73
  "clean": "rimraf dist && rimraf tsc-build && rimraf --glob \"*.tsbuildinfo\"",
76
- "copy-css-to-build": "copyfiles -u 1 ./src/**/*.css ./tsc-build/",
77
74
  "types": "tsc --noEmit"
78
75
  }
79
76
  }