@digdir/designsystemet-react 0.0.0-test-20250710104203 → 0.0.0-test-20250711123754

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 (150) hide show
  1. package/dist/cjs/components/Combobox/Combobox.js +2 -2
  2. package/dist/cjs/components/Combobox/Custom.js +2 -2
  3. package/dist/cjs/components/Combobox/Empty.js +1 -1
  4. package/dist/cjs/components/Combobox/Option/Option.js +1 -1
  5. package/dist/cjs/components/Combobox/internal/ComboboxInput.js +2 -2
  6. package/dist/cjs/components/avatar/avatar.js +2 -1
  7. package/dist/cjs/components/dialog/dialog.js +1 -1
  8. package/dist/cjs/components/dropdown/dropdown-trigger-context.js +0 -1
  9. package/dist/cjs/components/dropdown/dropdown-trigger.js +0 -1
  10. package/dist/cjs/components/dropdown/dropdown.js +2 -2
  11. package/dist/cjs/components/error-summary/error-summary-heading.js +1 -1
  12. package/dist/cjs/components/field/field-counter.js +2 -2
  13. package/dist/cjs/components/popover/popover-trigger.js +1 -1
  14. package/dist/cjs/components/search/search-clear.js +1 -1
  15. package/dist/cjs/components/suggestion/suggestion-input.js +6 -3
  16. package/dist/cjs/components/suggestion/suggestion-list.js +33 -2
  17. package/dist/cjs/components/suggestion/suggestion.js +5 -21
  18. package/dist/cjs/components/tabs/tabs-list.js +1 -1
  19. package/dist/cjs/components/textfield/textfield.js +3 -3
  20. package/dist/cjs/index.js +48 -48
  21. package/dist/esm/components/Combobox/Combobox.js +2 -2
  22. package/dist/esm/components/Combobox/Custom.js +2 -2
  23. package/dist/esm/components/Combobox/Empty.js +1 -1
  24. package/dist/esm/components/Combobox/Option/Option.js +1 -1
  25. package/dist/esm/components/Combobox/internal/ComboboxInput.js +2 -2
  26. package/dist/esm/components/avatar/avatar.js +2 -1
  27. package/dist/esm/components/dialog/dialog-trigger-context.js +1 -1
  28. package/dist/esm/components/dialog/dialog.js +1 -1
  29. package/dist/esm/components/dropdown/dropdown-trigger-context.js +0 -1
  30. package/dist/esm/components/dropdown/dropdown-trigger.js +0 -1
  31. package/dist/esm/components/dropdown/dropdown.js +1 -1
  32. package/dist/esm/components/error-summary/error-summary-heading.js +1 -1
  33. package/dist/esm/components/field/field-counter.js +2 -2
  34. package/dist/esm/components/popover/popover-trigger-context.js +1 -1
  35. package/dist/esm/components/popover/popover-trigger.js +1 -1
  36. package/dist/esm/components/search/search-clear.js +1 -1
  37. package/dist/esm/components/suggestion/suggestion-input.js +7 -4
  38. package/dist/esm/components/suggestion/suggestion-list.js +34 -3
  39. package/dist/esm/components/suggestion/suggestion.js +5 -21
  40. package/dist/esm/components/tabs/tabs-list.js +1 -1
  41. package/dist/esm/components/textfield/textfield.js +3 -3
  42. package/dist/esm/index.js +24 -24
  43. package/dist/types/colors.d.ts +1 -21
  44. package/dist/types/colors.d.ts.map +1 -1
  45. package/dist/types/components/Combobox/Combobox.d.ts +2 -2
  46. package/dist/types/components/Combobox/Combobox.d.ts.map +1 -1
  47. package/dist/types/components/Combobox/Custom.d.ts.map +1 -1
  48. package/dist/types/components/Combobox/Empty.d.ts.map +1 -1
  49. package/dist/types/components/Combobox/Option/Option.d.ts.map +1 -1
  50. package/dist/types/components/Combobox/internal/ComboboxInput.d.ts.map +1 -1
  51. package/dist/types/components/Combobox/internal/ComboboxLabel.d.ts.map +1 -1
  52. package/dist/types/components/avatar/avatar.d.ts.map +1 -1
  53. package/dist/types/components/badge/index.d.ts +1 -1
  54. package/dist/types/components/breadcrumbs/breadcrumbs-link.d.ts +1 -1
  55. package/dist/types/components/breadcrumbs/breadcrumbs-link.d.ts.map +1 -1
  56. package/dist/types/components/checkbox/checkbox.d.ts +1 -1
  57. package/dist/types/components/checkbox/checkbox.d.ts.map +1 -1
  58. package/dist/types/components/dialog/dialog-trigger.d.ts +1 -1
  59. package/dist/types/components/dialog/index.d.ts +1 -1
  60. package/dist/types/components/dropdown/dropdown-heading.d.ts +1 -1
  61. package/dist/types/components/dropdown/dropdown-heading.d.ts.map +1 -1
  62. package/dist/types/components/dropdown/dropdown-trigger-context.d.ts.map +1 -1
  63. package/dist/types/components/dropdown/dropdown-trigger.d.ts +1 -1
  64. package/dist/types/components/dropdown/dropdown-trigger.d.ts.map +1 -1
  65. package/dist/types/components/dropdown/dropdown.d.ts +1 -1
  66. package/dist/types/components/dropdown/dropdown.d.ts.map +1 -1
  67. package/dist/types/components/error-summary/error-summary-heading.d.ts +1 -1
  68. package/dist/types/components/error-summary/error-summary-heading.d.ts.map +1 -1
  69. package/dist/types/components/error-summary/error-summary-link.d.ts +1 -1
  70. package/dist/types/components/error-summary/error-summary-link.d.ts.map +1 -1
  71. package/dist/types/components/field/field-counter.d.ts +2 -2
  72. package/dist/types/components/field/field-counter.d.ts.map +1 -1
  73. package/dist/types/components/field/index.d.ts +1 -1
  74. package/dist/types/components/fieldset/fieldset-description.d.ts +1 -1
  75. package/dist/types/components/fieldset/fieldset-description.d.ts.map +1 -1
  76. package/dist/types/components/fieldset/fieldset-legend.d.ts.map +1 -1
  77. package/dist/types/components/index.d.ts +80 -40
  78. package/dist/types/components/index.d.ts.map +1 -1
  79. package/dist/types/components/pagination/pagination-button.d.ts +1 -1
  80. package/dist/types/components/pagination/pagination-button.d.ts.map +1 -1
  81. package/dist/types/components/popover/index.d.ts +1 -1
  82. package/dist/types/components/popover/popover-trigger.d.ts +1 -1
  83. package/dist/types/components/popover/popover-trigger.d.ts.map +1 -1
  84. package/dist/types/components/radio/radio.d.ts +1 -1
  85. package/dist/types/components/radio/radio.d.ts.map +1 -1
  86. package/dist/types/components/search/index.d.ts +1 -1
  87. package/dist/types/components/search/search-button.d.ts +2 -2
  88. package/dist/types/components/search/search-button.d.ts.map +1 -1
  89. package/dist/types/components/search/search-clear.d.ts +1 -1
  90. package/dist/types/components/search/search-clear.d.ts.map +1 -1
  91. package/dist/types/components/suggestion/suggestion-clear.d.ts +1 -1
  92. package/dist/types/components/suggestion/suggestion-clear.d.ts.map +1 -1
  93. package/dist/types/components/suggestion/suggestion-input.d.ts +13 -1
  94. package/dist/types/components/suggestion/suggestion-input.d.ts.map +1 -1
  95. package/dist/types/components/suggestion/suggestion-list.d.ts.map +1 -1
  96. package/dist/types/components/suggestion/suggestion.d.ts +2 -0
  97. package/dist/types/components/suggestion/suggestion.d.ts.map +1 -1
  98. package/dist/types/components/switch/switch.d.ts +1 -1
  99. package/dist/types/components/switch/switch.d.ts.map +1 -1
  100. package/dist/types/components/tabs/tabs-list.d.ts.map +1 -1
  101. package/dist/types/components/tabs/tabs-tab.d.ts.map +1 -1
  102. package/dist/types/components/textfield/textfield.d.ts +2 -2
  103. package/dist/types/components/textfield/textfield.d.ts.map +1 -1
  104. package/dist/types/components/toggle-group/toggle-group-item.d.ts.map +1 -1
  105. package/dist/types/components/toggle-group/use-toggle-groupitem.d.ts +1 -1
  106. package/dist/types/components/toggle-group/use-toggle-groupitem.d.ts.map +1 -1
  107. package/dist/types/types.d.ts +2 -1
  108. package/dist/types/types.d.ts.map +1 -1
  109. package/dist/types/utilities/roving-focus/use-roving-focus.d.ts +2 -2
  110. package/package.json +11 -10
  111. package/dist/types/components/alert/index.d.ts +0 -3
  112. package/dist/types/components/alert/index.d.ts.map +0 -1
  113. package/dist/types/components/avatar/index.d.ts +0 -3
  114. package/dist/types/components/avatar/index.d.ts.map +0 -1
  115. package/dist/types/components/button/index.d.ts +0 -3
  116. package/dist/types/components/button/index.d.ts.map +0 -1
  117. package/dist/types/components/checkbox/index.d.ts +0 -3
  118. package/dist/types/components/checkbox/index.d.ts.map +0 -1
  119. package/dist/types/components/divider/index.d.ts +0 -3
  120. package/dist/types/components/divider/index.d.ts.map +0 -1
  121. package/dist/types/components/heading/index.d.ts +0 -3
  122. package/dist/types/components/heading/index.d.ts.map +0 -1
  123. package/dist/types/components/input/index.d.ts +0 -3
  124. package/dist/types/components/input/index.d.ts.map +0 -1
  125. package/dist/types/components/label/index.d.ts +0 -3
  126. package/dist/types/components/label/index.d.ts.map +0 -1
  127. package/dist/types/components/link/index.d.ts +0 -3
  128. package/dist/types/components/link/index.d.ts.map +0 -1
  129. package/dist/types/components/paragraph/index.d.ts +0 -3
  130. package/dist/types/components/paragraph/index.d.ts.map +0 -1
  131. package/dist/types/components/radio/index.d.ts +0 -3
  132. package/dist/types/components/radio/index.d.ts.map +0 -1
  133. package/dist/types/components/skeleton/index.d.ts +0 -3
  134. package/dist/types/components/skeleton/index.d.ts.map +0 -1
  135. package/dist/types/components/skip-link/index.d.ts +0 -3
  136. package/dist/types/components/skip-link/index.d.ts.map +0 -1
  137. package/dist/types/components/spinner/index.d.ts +0 -3
  138. package/dist/types/components/spinner/index.d.ts.map +0 -1
  139. package/dist/types/components/switch/index.d.ts +0 -3
  140. package/dist/types/components/switch/index.d.ts.map +0 -1
  141. package/dist/types/components/tag/index.d.ts +0 -3
  142. package/dist/types/components/tag/index.d.ts.map +0 -1
  143. package/dist/types/components/textarea/index.d.ts +0 -3
  144. package/dist/types/components/textarea/index.d.ts.map +0 -1
  145. package/dist/types/components/textfield/index.d.ts +0 -3
  146. package/dist/types/components/textfield/index.d.ts.map +0 -1
  147. package/dist/types/components/tooltip/index.d.ts +0 -3
  148. package/dist/types/components/tooltip/index.d.ts.map +0 -1
  149. package/dist/types/components/validation-message/index.d.ts +0 -3
  150. package/dist/types/components/validation-message/index.d.ts.map +0 -1
@@ -6,6 +6,8 @@ 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 omit = require('../../utilities/omit/omit.js');
10
+ var spinner = require('../spinner/spinner.js');
9
11
  var ComboboxContext = require('./ComboboxContext.js');
10
12
  var ComboboxIdContext = require('./ComboboxIdContext.js');
11
13
  var Custom = require('./Custom.js');
@@ -19,8 +21,6 @@ var useFloatingCombobox = require('./useFloatingCombobox.js');
19
21
  var useFormField = require('./useFormField/useFormField.js');
20
22
  var utilities = require('./utilities.js');
21
23
  var useDebounceCallback = require('../../utilities/hooks/use-debounce-callback/use-debounce-callback.js');
22
- var spinner = require('../spinner/spinner.js');
23
- var omit = require('../../utilities/omit/omit.js');
24
24
 
25
25
  /**
26
26
  * @deprecated Use `Suggestion` instead
@@ -6,10 +6,10 @@ var react$1 = require('@floating-ui/react');
6
6
  var reactSlot = require('@radix-ui/react-slot');
7
7
  var cl = require('clsx/lite');
8
8
  var react = require('react');
9
+ var omit = require('../../utilities/omit/omit.js');
10
+ var label = require('../label/label.js');
9
11
  var ComboboxContext = require('./ComboboxContext.js');
10
12
  var ComboboxIdContext = require('./ComboboxIdContext.js');
11
- var label = require('../label/label.js');
12
- var omit = require('../../utilities/omit/omit.js');
13
13
 
14
14
  const ComboboxCustom = react.forwardRef(({ asChild, interactive, id, className, ...rest }, ref) => {
15
15
  if (interactive && !id) {
@@ -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
- var ComboboxContext = require('./ComboboxContext.js');
8
7
  var label = require('../label/label.js');
8
+ var ComboboxContext = require('./ComboboxContext.js');
9
9
 
10
10
  const ComboboxEmpty = react.forwardRef(({ children, className, ...rest }, ref) => {
11
11
  const context = react.useContext(ComboboxContext.ComboboxContext);
@@ -5,11 +5,11 @@ var jsxRuntime = require('react/jsx-runtime');
5
5
  var cl = require('clsx/lite');
6
6
  var react = require('react');
7
7
  var omit = require('../../../utilities/omit/omit.js');
8
+ var label = require('../../label/label.js');
8
9
  var ComboboxContext = require('../ComboboxContext.js');
9
10
  var Description = require('./Description.js');
10
11
  var SelectedIcon = require('./SelectedIcon.js');
11
12
  var useComboboxOption = require('./useComboboxOption.js');
12
- var label = require('../../label/label.js');
13
13
 
14
14
  const ComboboxOption = react.memo(react.forwardRef(({ value, description, children, className, ...rest }, forwardedRef) => {
15
15
  const labelId = react.useId();
@@ -6,13 +6,13 @@ var react$1 = require('@floating-ui/react');
6
6
  var akselIcons = require('@navikt/aksel-icons');
7
7
  var cl = require('clsx/lite');
8
8
  var react = require('react');
9
+ var omit = require('../../../utilities/omit/omit.js');
10
+ var paragraph = require('../../paragraph/paragraph.js');
9
11
  var ComboboxContext = require('../ComboboxContext.js');
10
12
  var ComboboxIdContext = require('../ComboboxIdContext.js');
11
13
  var utilities = require('../utilities.js');
12
14
  var ComboboxChips = require('./ComboboxChips.js');
13
15
  var ComboboxClearButton = require('./ComboboxClearButton.js');
14
- var paragraph = require('../../paragraph/paragraph.js');
15
- var omit = require('../../../utilities/omit/omit.js');
16
16
 
17
17
  const ComboboxInput = ({ hideClearButton, listId, error, hideChips, handleKeyDown, ...rest }) => {
18
18
  const context = react.useContext(ComboboxContext.ComboboxContext);
@@ -24,8 +24,9 @@ var react = require('react');
24
24
  */
25
25
  const Avatar = react.forwardRef(function Avatar({ 'aria-label': ariaLabel, variant = 'circle', className, children, initials, ...rest }, ref) {
26
26
  const useSlot = children && typeof children !== 'string';
27
+ const textChild = children && typeof children === 'string';
27
28
  const Component = useSlot ? reactSlot.Slot : react.Fragment;
28
- return (jsxRuntime.jsx("span", { ref: ref, className: cl('ds-avatar', className), "data-variant": variant, "data-initials": initials, role: 'img', "aria-label": ariaLabel, ...rest, children: jsxRuntime.jsx(Component, { ...(useSlot ? { 'aria-hidden': true } : {}), children: children }) }));
29
+ return (jsxRuntime.jsx("span", { ref: ref, className: cl('ds-avatar', className), "data-variant": variant, "data-initials": initials, role: 'img', "aria-label": ariaLabel, ...rest, children: jsxRuntime.jsx(Component, { ...(useSlot ? { 'aria-hidden': true } : {}), children: textChild ? jsxRuntime.jsx("span", { children: children }) : children }) }));
29
30
  });
30
31
 
31
32
  exports.Avatar = Avatar;
@@ -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 button = require('../button/button.js');
8
9
  var dialogTriggerContext = require('./dialog-trigger-context.js');
9
10
  var useMergeRefs = require('../../utilities/hooks/use-merge-refs/use-merge-refs.js');
10
- var button = require('../button/button.js');
11
11
 
12
12
  /**
13
13
  * Dialog component, used to display a dialog dialog.
@@ -2,7 +2,6 @@
2
2
  'use strict';
3
3
 
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
- require('../popover/index.js');
6
5
  var popoverTriggerContext = require('../popover/popover-trigger-context.js');
7
6
 
8
7
  /**
@@ -3,7 +3,6 @@
3
3
 
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var react = require('react');
6
- require('../popover/index.js');
7
6
  var popoverTrigger = require('../popover/popover-trigger.js');
8
7
 
9
8
  const DropdownTrigger = react.forwardRef(function DropdownTrigger({ asChild, ...rest }, ref) {
@@ -4,7 +4,7 @@
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var cl = require('clsx/lite');
6
6
  var react = require('react');
7
- var index = require('../popover/index.js');
7
+ var popover = require('../popover/popover.js');
8
8
 
9
9
  /**
10
10
  * Dropdown component, used to display a list of options.
@@ -34,7 +34,7 @@ var index = require('../popover/index.js');
34
34
  * </Dropdown>
35
35
  */
36
36
  const Dropdown = react.forwardRef(function DropdownContent({ placement = 'bottom-end', className, ...rest }, ref) {
37
- return (jsxRuntime.jsx(index.Popover, { className: cl('ds-dropdown', className), placement: placement, ref: ref, ...rest }));
37
+ return (jsxRuntime.jsx(popover.Popover, { className: cl('ds-dropdown', className), placement: placement, ref: ref, ...rest }));
38
38
  });
39
39
 
40
40
  exports.Dropdown = Dropdown;
@@ -3,8 +3,8 @@
3
3
 
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var react = require('react');
6
- var errorSummary = require('./error-summary.js');
7
6
  var heading = require('../heading/heading.js');
7
+ var errorSummary = require('./error-summary.js');
8
8
 
9
9
  const ErrorSummaryHeading = react.forwardRef(function ErrorSummaryHeading({ className, id, ...rest }, ref) {
10
10
  const { headingId, setHeadingId } = react.useContext(errorSummary.ErrorSummaryContext);
@@ -3,9 +3,9 @@
3
3
 
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var react = require('react');
6
- var fieldObserver = require('./field-observer.js');
7
- var validationMessage = require('../validation-message/validation-message.js');
8
6
  var paragraph = require('../paragraph/paragraph.js');
7
+ var validationMessage = require('../validation-message/validation-message.js');
8
+ var fieldObserver = require('./field-observer.js');
9
9
 
10
10
  const label = (text, count) => text.replace('%d', Math.abs(count).toString());
11
11
  /**
@@ -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 popoverTriggerContext = require('./popover-trigger-context.js');
8
7
  var button = require('../button/button.js');
8
+ var popoverTriggerContext = require('./popover-trigger-context.js');
9
9
 
10
10
  /**
11
11
  * PopoverTrigger component, used to trigger a popover.
@@ -3,8 +3,8 @@
3
3
 
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var react = require('react');
6
- var utilities = require('../Combobox/utilities.js');
7
6
  var button = require('../button/button.js');
7
+ var utilities = require('../Combobox/utilities.js');
8
8
 
9
9
  /**
10
10
  * SearchClear component, used to display a clear button when the search input is not empty.
@@ -3,8 +3,8 @@
3
3
 
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var react = require('react');
6
- var suggestion = require('./suggestion.js');
7
6
  var input = require('../input/input.js');
7
+ var suggestion = require('./suggestion.js');
8
8
 
9
9
  /**
10
10
  * Component that provides an input field for the Suggestion list.
@@ -18,17 +18,20 @@ var input = require('../input/input.js');
18
18
  * </Suggestion>
19
19
  */
20
20
  const SuggestionInput = react.forwardRef(function SuggestionList({ value, onInput, onChange, ...rest }, ref) {
21
- const { handleFilter } = react.useContext(suggestion.SuggestionContext);
21
+ const { listId, handleFilter } = react.useContext(suggestion.SuggestionContext);
22
22
  react.useEffect(handleFilter, [value]); // Filter if controlled value
23
23
  if (onChange)
24
24
  console.warn('SuggestionInput: Avoid using onChange, as Suggestion controls the Input. Use onValueChange on Suggest instead, or onInput if fetching API results');
25
25
  if (value)
26
26
  console.warn('SuggestionInput: Avoid using value, as Suggestion controls the Input. Use value on Suggest instead.');
27
+ const popoverProps = Object.assign({
28
+ [react.version.startsWith('19') ? 'popoverTarget' : 'popovertarget']: listId,
29
+ }, rest);
27
30
  return (jsxRuntime.jsx(input.Input, { placeholder: '' // We need an empty placeholder for the clear button to be able to show/hide
28
31
  , ref: ref, onInput: (event) => {
29
32
  onInput?.(event); // Should run first
30
33
  handleFilter?.(); // Filter if uncontrolled value
31
- }, ...rest }));
34
+ }, ...popoverProps }));
32
35
  });
33
36
 
34
37
  exports.SuggestionInput = SuggestionInput;
@@ -4,7 +4,9 @@
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var react = require('react');
6
6
  require('@u-elements/u-datalist');
7
+ var dom = require('@floating-ui/dom');
7
8
  var suggestion = require('./suggestion.js');
9
+ var useMergeRefs = require('../../utilities/hooks/use-merge-refs/use-merge-refs.js');
8
10
 
9
11
  /**
10
12
  * Component that provides a Suggestion list.
@@ -18,9 +20,38 @@ var suggestion = require('./suggestion.js');
18
20
  * </Suggestion>
19
21
  */
20
22
  const SuggestionList = react.forwardRef(function SuggestionList({ singular = '%d forslag', plural = '%d forslag', className, id, ...rest }, ref) {
21
- const { handleFilter } = react.useContext(suggestion.SuggestionContext);
23
+ const { listId, setListId, handleFilter } = react.useContext(suggestion.SuggestionContext);
24
+ const listRef = react.useRef(null);
25
+ const mergedRefs = useMergeRefs.useMergeRefs([ref, listRef]);
22
26
  react.useEffect(handleFilter); // Must run on every render
23
- return (jsxRuntime.jsx("u-datalist", { "data-nofilter": true, "data-sr-singular": singular, "data-sr-plural": plural, class: className, ref: ref, ...rest }));
27
+ react.useEffect(() => {
28
+ id && setListId(id);
29
+ }, [id]);
30
+ // Position with floating-ui
31
+ react.useEffect(() => {
32
+ const list = listRef.current;
33
+ const trigger = document.querySelector(`[popovertarget="${list?.id}"]`);
34
+ if (list && trigger) {
35
+ return dom.autoUpdate(trigger, list, () => {
36
+ dom.computePosition(trigger, list, {
37
+ placement: 'bottom',
38
+ strategy: 'fixed',
39
+ middleware: [triggerWidth],
40
+ }).then(({ x, y }) => {
41
+ list.style.translate = `${x}px calc(${y}px + var(--dsc-suggestion-list-gap))`;
42
+ });
43
+ });
44
+ }
45
+ }, [listId]);
46
+ return (jsxRuntime.jsx("u-datalist", { "data-nofilter": true, "data-sr-singular": singular, "data-sr-plural": plural, class: className, ref: mergedRefs, id: listId, popover: 'manual', ...rest }));
24
47
  });
48
+ const triggerWidth = {
49
+ name: 'TriggerWidth',
50
+ fn(data) {
51
+ const { elements, rects } = data;
52
+ elements.floating.style.width = `${rects.reference.width}px`;
53
+ return data;
54
+ },
55
+ };
25
56
 
26
57
  exports.SuggestionList = SuggestionList;
@@ -8,6 +8,7 @@ var cl = require('clsx/lite');
8
8
  var useMergeRefs = require('../../utilities/hooks/use-merge-refs/use-merge-refs.js');
9
9
 
10
10
  const SuggestionContext = react.createContext({
11
+ setListId: () => undefined,
11
12
  handleFilter: () => undefined,
12
13
  });
13
14
  const text = (el) => el.textContent?.trim() || '';
@@ -28,38 +29,21 @@ const nextItems = (data, prev, multiple) => {
28
29
  : [...sanitizeItems(prev), item];
29
30
  };
30
31
  const defaultFilter = ({ label, input }) => label.toLowerCase().includes(input.value.trim().toLowerCase());
31
- // https://github.com/u-elements/u-elements/blob/fe076b724272c2fef00d41838b091b1563661829/packages/utils.ts#L222
32
- // TODO: DELETE THIS when bug in u-combobox is fixed. See https://github.com/u-elements/u-elements/issues/25
33
- const setValue = (input, data, type = '') => {
34
- const event = { bubbles: true, composed: true, data, inputType: type };
35
- const proto = HTMLInputElement.prototype;
36
- input.dispatchEvent(new InputEvent('beforeinput', event));
37
- Object.getOwnPropertyDescriptor(proto, 'value')?.set?.call(input, data);
38
- input.dispatchEvent(new InputEvent('input', event));
39
- input.dispatchEvent(new Event('change', { bubbles: true }));
40
- };
41
32
  const Suggestion = react.forwardRef(function Suggestion({ children, className, creatable = false, defaultValue, filter = true, multiple = false, name, onValueChange, value, ...rest }, ref) {
42
33
  const uComboboxRef = react.useRef(null);
43
- const generatedSelectId = react.useId();
44
- const selectId = rest.id ? `${rest.id}-select` : generatedSelectId;
34
+ const genId = react.useId();
35
+ const selectId = rest.id ? `${rest.id}-select` : genId;
45
36
  const isContolled = value !== undefined;
46
37
  const mergedRefs = useMergeRefs.useMergeRefs([ref, uComboboxRef]);
47
38
  const [isEmpty, setIsEmpty] = react.useState(false);
48
39
  const [selectedItems, setSelectedItems] = react.useState(sanitizeItems(defaultValue || value));
40
+ const [listId, setListId] = react.useState(rest.id ? `${rest.id}-list` : `${genId}-list`);
49
41
  // Update if controlled values
50
42
  const prevControlled = react.useRef(value);
51
43
  if (value !== prevControlled.current) {
52
44
  prevControlled.current = value;
53
45
  setSelectedItems(sanitizeItems(prevControlled.current));
54
46
  }
55
- react.useEffect(() => {
56
- // Workaround for missing input value update in u-combobox in single mode
57
- const sanitizedValue = sanitizeItems(prevControlled.current);
58
- const inputEl = uComboboxRef.current?.querySelector('input');
59
- if (inputEl && !multiple && sanitizedValue[0]) {
60
- setValue(inputEl, sanitizedValue[0].value, 'insertText');
61
- }
62
- }, [prevControlled.current, uComboboxRef.current]);
63
47
  /**
64
48
  * Listerners and handling of adding/removing
65
49
  */
@@ -98,7 +82,7 @@ const Suggestion = react.forwardRef(function Suggestion({ children, className, c
98
82
  }
99
83
  setIsEmpty(index === disabled);
100
84
  }, [filter]);
101
- return (jsxRuntime.jsx(SuggestionContext.Provider, { value: { isEmpty, selectedItems, handleFilter }, children: jsxRuntime.jsxs("u-combobox", { "data-multiple": multiple || undefined, "data-creatable": creatable || undefined, class: cl('ds-suggestion', className), ref: mergedRefs, ...rest, children: [children, !!name && (jsxRuntime.jsx("select", { name: name, multiple: true, hidden: true, id: selectId }))] }) }));
85
+ return (jsxRuntime.jsx(SuggestionContext.Provider, { value: { isEmpty, selectedItems, listId, setListId, handleFilter }, children: jsxRuntime.jsxs("u-combobox", { "data-multiple": multiple || undefined, "data-creatable": creatable || undefined, class: cl('ds-suggestion', className), ref: mergedRefs, ...rest, children: [children, !!name && (jsxRuntime.jsx("select", { name: name, multiple: true, hidden: true, id: selectId }))] }) }));
102
86
  });
103
87
 
104
88
  exports.Suggestion = Suggestion;
@@ -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 rovingFocusRoot = require('../../utilities/roving-focus/roving-focus-root.js');
7
+ var tabs = require('./tabs.js');
8
8
 
9
9
  /**
10
10
  * The container for all `Tab` components.
@@ -4,12 +4,12 @@
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var react = require('react');
6
6
  var index = require('../field/index.js');
7
+ var input = require('../input/input.js');
7
8
  var label = require('../label/label.js');
8
- var fieldDescription = require('../field/field-description.js');
9
- var fieldAffix = require('../field/field-affix.js');
10
9
  var textarea = require('../textarea/textarea.js');
11
- var input = require('../input/input.js');
12
10
  var validationMessage = require('../validation-message/validation-message.js');
11
+ var fieldDescription = require('../field/field-description.js');
12
+ var fieldAffix = require('../field/field-affix.js');
13
13
 
14
14
  /**
15
15
  * Composed text input component using `Field`
package/dist/cjs/index.js CHANGED
@@ -6,13 +6,13 @@ var avatar = require('./components/avatar/avatar.js');
6
6
  var index = require('./components/badge/index.js');
7
7
  var badgePosition = require('./components/badge/badge-position.js');
8
8
  var index$1 = require('./components/breadcrumbs/index.js');
9
- var breadcrumbsList = require('./components/breadcrumbs/breadcrumbs-list.js');
10
9
  var breadcrumbsItem = require('./components/breadcrumbs/breadcrumbs-item.js');
11
10
  var breadcrumbsLink = require('./components/breadcrumbs/breadcrumbs-link.js');
11
+ var breadcrumbsList = require('./components/breadcrumbs/breadcrumbs-list.js');
12
12
  var button = require('./components/button/button.js');
13
13
  var index$2 = require('./components/Combobox/index.js');
14
- var Option = require('./components/Combobox/Option/Option.js');
15
14
  var Empty = require('./components/Combobox/Empty.js');
15
+ var Option = require('./components/Combobox/Option/Option.js');
16
16
  var index$3 = require('./components/card/index.js');
17
17
  var cardBlock = require('./components/card/card-block.js');
18
18
  var checkbox = require('./components/checkbox/checkbox.js');
@@ -23,73 +23,73 @@ var detailsContent = require('./components/details/details-content.js');
23
23
  var detailsSummary = require('./components/details/details-summary.js');
24
24
  var index$6 = require('./components/dialog/index.js');
25
25
  var dialogBlock = require('./components/dialog/dialog-block.js');
26
- var dialogTriggerContext = require('./components/dialog/dialog-trigger-context.js');
27
26
  var dialogTrigger = require('./components/dialog/dialog-trigger.js');
27
+ var dialogTriggerContext = require('./components/dialog/dialog-trigger-context.js');
28
28
  var divider = require('./components/divider/divider.js');
29
29
  var index$7 = require('./components/dropdown/index.js');
30
- var dropdownTriggerContext = require('./components/dropdown/dropdown-trigger-context.js');
31
- var dropdownList = require('./components/dropdown/dropdown-list.js');
30
+ var dropdownButton = require('./components/dropdown/dropdown-button.js');
32
31
  var dropdownHeading = require('./components/dropdown/dropdown-heading.js');
33
32
  var dropdownItem = require('./components/dropdown/dropdown-item.js');
34
- var dropdownButton = require('./components/dropdown/dropdown-button.js');
33
+ var dropdownList = require('./components/dropdown/dropdown-list.js');
35
34
  var dropdownTrigger = require('./components/dropdown/dropdown-trigger.js');
35
+ var dropdownTriggerContext = require('./components/dropdown/dropdown-trigger-context.js');
36
36
  var index$8 = require('./components/error-summary/index.js');
37
- var errorSummaryItem = require('./components/error-summary/error-summary-item.js');
38
37
  var errorSummaryHeading = require('./components/error-summary/error-summary-heading.js');
39
- var errorSummaryList = require('./components/error-summary/error-summary-list.js');
38
+ var errorSummaryItem = require('./components/error-summary/error-summary-item.js');
40
39
  var errorSummaryLink = require('./components/error-summary/error-summary-link.js');
40
+ var errorSummaryList = require('./components/error-summary/error-summary-list.js');
41
41
  var index$9 = require('./components/field/index.js');
42
- var fieldDescription = require('./components/field/field-description.js');
43
42
  var fieldAffix = require('./components/field/field-affix.js');
44
43
  var fieldCounter = require('./components/field/field-counter.js');
44
+ var fieldDescription = require('./components/field/field-description.js');
45
45
  var index$a = require('./components/fieldset/index.js');
46
- var fieldsetLegend = require('./components/fieldset/fieldset-legend.js');
47
46
  var fieldsetDescription = require('./components/fieldset/fieldset-description.js');
47
+ var fieldsetLegend = require('./components/fieldset/fieldset-legend.js');
48
48
  var heading = require('./components/heading/heading.js');
49
49
  var input = require('./components/input/input.js');
50
50
  var label = require('./components/label/label.js');
51
51
  var link = require('./components/link/link.js');
52
52
  var index$b = require('./components/list/index.js');
53
- var lists = require('./components/list/lists.js');
54
53
  var listItem = require('./components/list/list-item.js');
54
+ var lists = require('./components/list/lists.js');
55
55
  var index$c = require('./components/pagination/index.js');
56
- var paginationList = require('./components/pagination/pagination-list.js');
57
- var paginationItem = require('./components/pagination/pagination-item.js');
58
56
  var paginationButton = require('./components/pagination/pagination-button.js');
57
+ var paginationItem = require('./components/pagination/pagination-item.js');
58
+ var paginationList = require('./components/pagination/pagination-list.js');
59
59
  var paragraph = require('./components/paragraph/paragraph.js');
60
60
  var index$d = require('./components/popover/index.js');
61
- var popoverTriggerContext = require('./components/popover/popover-trigger-context.js');
62
61
  var popoverTrigger = require('./components/popover/popover-trigger.js');
62
+ var popoverTriggerContext = require('./components/popover/popover-trigger-context.js');
63
63
  var radio = require('./components/radio/radio.js');
64
- var searchClear = require('./components/search/search-clear.js');
64
+ var index$e = require('./components/search/index.js');
65
65
  var searchButton = require('./components/search/search-button.js');
66
+ var searchClear = require('./components/search/search-clear.js');
66
67
  var searchInput = require('./components/search/search-input.js');
67
- var index$e = require('./components/search/index.js');
68
68
  var index$f = require('./components/select/index.js');
69
- var selectOption = require('./components/select/select-option.js');
70
69
  var selectOptgroup = require('./components/select/select-optgroup.js');
70
+ var selectOption = require('./components/select/select-option.js');
71
71
  var skeleton = require('./components/skeleton/skeleton.js');
72
72
  var skipLink = require('./components/skip-link/skip-link.js');
73
73
  var spinner = require('./components/spinner/spinner.js');
74
74
  var index$g = require('./components/suggestion/index.js');
75
75
  var suggestionChips = require('./components/suggestion/suggestion-chips.js');
76
- var suggestionList = require('./components/suggestion/suggestion-list.js');
77
- var suggestionInput = require('./components/suggestion/suggestion-input.js');
76
+ var suggestionClear = require('./components/suggestion/suggestion-clear.js');
78
77
  var suggestionEmpty = require('./components/suggestion/suggestion-empty.js');
78
+ var suggestionInput = require('./components/suggestion/suggestion-input.js');
79
+ var suggestionList = require('./components/suggestion/suggestion-list.js');
79
80
  var suggestionOption = require('./components/suggestion/suggestion-option.js');
80
- var suggestionClear = require('./components/suggestion/suggestion-clear.js');
81
81
  var _switch = require('./components/switch/switch.js');
82
82
  var index$h = require('./components/table/index.js');
83
- var tableHead = require('./components/table/table-head.js');
84
83
  var tableBody = require('./components/table/table-body.js');
85
- var tableRow = require('./components/table/table-row.js');
86
84
  var tableCell = require('./components/table/table-cell.js');
87
- var tableHeaderCell = require('./components/table/table-header-cell.js');
88
85
  var tableFoot = require('./components/table/table-foot.js');
86
+ var tableHead = require('./components/table/table-head.js');
87
+ var tableHeaderCell = require('./components/table/table-header-cell.js');
88
+ var tableRow = require('./components/table/table-row.js');
89
89
  var index$i = require('./components/tabs/index.js');
90
- var tabsTab = require('./components/tabs/tabs-tab.js');
91
90
  var tabsList = require('./components/tabs/tabs-list.js');
92
91
  var tabsPanel = require('./components/tabs/tabs-panel.js');
92
+ var tabsTab = require('./components/tabs/tabs-tab.js');
93
93
  var tag = require('./components/tag/tag.js');
94
94
  var textarea = require('./components/textarea/textarea.js');
95
95
  var textfield = require('./components/textfield/textfield.js');
@@ -116,13 +116,13 @@ exports.Avatar = avatar.Avatar;
116
116
  exports.Badge = index.Badge;
117
117
  exports.BadgePosition = badgePosition.BadgePosition;
118
118
  exports.Breadcrumbs = index$1.Breadcrumbs;
119
- exports.BreadcrumbsList = breadcrumbsList.BreadcrumbsList;
120
119
  exports.BreadcrumbsItem = breadcrumbsItem.BreadcrumbsItem;
121
120
  exports.BreadcrumbsLink = breadcrumbsLink.BreadcrumbsLink;
121
+ exports.BreadcrumbsList = breadcrumbsList.BreadcrumbsList;
122
122
  exports.Button = button.Button;
123
123
  exports.Combobox = index$2.Combobox;
124
- exports.ComboboxOption = Option.ComboboxOption;
125
124
  exports.ComboboxEmpty = Empty.ComboboxEmpty;
125
+ exports.ComboboxOption = Option.ComboboxOption;
126
126
  exports.Card = index$3.Card;
127
127
  exports.CardBlock = cardBlock.CardBlock;
128
128
  exports.Checkbox = checkbox.Checkbox;
@@ -136,75 +136,75 @@ exports.DetailsContent = detailsContent.DetailsContent;
136
136
  exports.DetailsSummary = detailsSummary.DetailsSummary;
137
137
  exports.Dialog = index$6.Dialog;
138
138
  exports.DialogBlock = dialogBlock.DialogBlock;
139
- exports.DialogTriggerContext = dialogTriggerContext.DialogTriggerContext;
140
139
  exports.DialogTrigger = dialogTrigger.DialogTrigger;
140
+ exports.DialogTriggerContext = dialogTriggerContext.DialogTriggerContext;
141
141
  exports.Divider = divider.Divider;
142
142
  exports.Dropdown = index$7.Dropdown;
143
- exports.DropdownTriggerContext = dropdownTriggerContext.DropdownTriggerContext;
144
- exports.DropdownList = dropdownList.DropdownList;
143
+ exports.DropdownButton = dropdownButton.DropdownButton;
145
144
  exports.DropdownHeading = dropdownHeading.DropdownHeading;
146
145
  exports.DropdownItem = dropdownItem.DropdownItem;
147
- exports.DropdownButton = dropdownButton.DropdownButton;
146
+ exports.DropdownList = dropdownList.DropdownList;
148
147
  exports.DropdownTrigger = dropdownTrigger.DropdownTrigger;
148
+ exports.DropdownTriggerContext = dropdownTriggerContext.DropdownTriggerContext;
149
149
  exports.ErrorSummary = index$8.ErrorSummary;
150
- exports.ErrorSummaryItem = errorSummaryItem.ErrorSummaryItem;
151
150
  exports.ErrorSummaryHeading = errorSummaryHeading.ErrorSummaryHeading;
152
- exports.ErrorSummaryList = errorSummaryList.ErrorSummaryList;
151
+ exports.ErrorSummaryItem = errorSummaryItem.ErrorSummaryItem;
153
152
  exports.ErrorSummaryLink = errorSummaryLink.ErrorSummaryLink;
153
+ exports.ErrorSummaryList = errorSummaryList.ErrorSummaryList;
154
154
  exports.Field = index$9.Field;
155
- exports.FieldDescription = fieldDescription.FieldDescription;
156
155
  exports.FieldAffix = fieldAffix.FieldAffix;
157
156
  exports.FieldAffixes = fieldAffix.FieldAffixes;
158
157
  exports.FieldCounter = fieldCounter.FieldCounter;
158
+ exports.FieldDescription = fieldDescription.FieldDescription;
159
159
  exports.Fieldset = index$a.Fieldset;
160
- exports.FieldsetLegend = fieldsetLegend.FieldsetLegend;
161
160
  exports.FieldsetDescription = fieldsetDescription.FieldsetDescription;
161
+ exports.FieldsetLegend = fieldsetLegend.FieldsetLegend;
162
162
  exports.Heading = heading.Heading;
163
163
  exports.Input = input.Input;
164
164
  exports.Label = label.Label;
165
165
  exports.Link = link.Link;
166
166
  exports.List = index$b.List;
167
+ exports.ListItem = listItem.ListItem;
167
168
  exports.ListOrdered = lists.ListOrdered;
168
169
  exports.ListUnordered = lists.ListUnordered;
169
- exports.ListItem = listItem.ListItem;
170
170
  exports.Pagination = index$c.Pagination;
171
- exports.PaginationList = paginationList.PaginationList;
172
- exports.PaginationItem = paginationItem.PaginationItem;
173
171
  exports.PaginationButton = paginationButton.PaginationButton;
172
+ exports.PaginationItem = paginationItem.PaginationItem;
173
+ exports.PaginationList = paginationList.PaginationList;
174
174
  exports.Paragraph = paragraph.Paragraph;
175
175
  exports.Popover = index$d.Popover;
176
- exports.PopoverTriggerContext = popoverTriggerContext.PopoverTriggerContext;
177
176
  exports.PopoverTrigger = popoverTrigger.PopoverTrigger;
177
+ exports.PopoverTriggerContext = popoverTriggerContext.PopoverTriggerContext;
178
178
  exports.Radio = radio.Radio;
179
- exports.SearchClear = searchClear.SearchClear;
179
+ exports.Search = index$e.Search;
180
180
  exports.SearchButton = searchButton.SearchButton;
181
+ exports.SearchClear = searchClear.SearchClear;
181
182
  exports.SearchInput = searchInput.SearchInput;
182
- exports.Search = index$e.Search;
183
183
  exports.Select = index$f.Select;
184
- exports.SelectOption = selectOption.SelectOption;
185
184
  exports.SelectOptgroup = selectOptgroup.SelectOptgroup;
185
+ exports.SelectOption = selectOption.SelectOption;
186
186
  exports.Skeleton = skeleton.Skeleton;
187
187
  exports.SkipLink = skipLink.SkipLink;
188
188
  exports.Spinner = spinner.Spinner;
189
189
  exports.EXPERIMENTAL_Suggestion = index$g.EXPERIMENTAL_Suggestion;
190
190
  exports.EXPERIMENTAL_SuggestionChips = suggestionChips.SuggestionChips;
191
- exports.EXPERIMENTAL_SuggestionList = suggestionList.SuggestionList;
192
- exports.EXPERIMENTAL_SuggestionInput = suggestionInput.SuggestionInput;
191
+ exports.EXPERIMENTAL_SuggestionClear = suggestionClear.SuggestionClear;
193
192
  exports.EXPERIMENTAL_SuggestionEmpty = suggestionEmpty.SuggestionEmpty;
193
+ exports.EXPERIMENTAL_SuggestionInput = suggestionInput.SuggestionInput;
194
+ exports.EXPERIMENTAL_SuggestionList = suggestionList.SuggestionList;
194
195
  exports.EXPERIMENTAL_SuggestionOption = suggestionOption.SuggestionOption;
195
- exports.EXPERIMENTAL_SuggestionClear = suggestionClear.SuggestionClear;
196
196
  exports.Switch = _switch.Switch;
197
197
  exports.Table = index$h.Table;
198
- exports.TableHead = tableHead.TableHead;
199
198
  exports.TableBody = tableBody.TableBody;
200
- exports.TableRow = tableRow.TableRow;
201
199
  exports.TableCell = tableCell.TableCell;
202
- exports.TableHeaderCell = tableHeaderCell.TableHeaderCell;
203
200
  exports.TableFoot = tableFoot.TableFoot;
201
+ exports.TableHead = tableHead.TableHead;
202
+ exports.TableHeaderCell = tableHeaderCell.TableHeaderCell;
203
+ exports.TableRow = tableRow.TableRow;
204
204
  exports.Tabs = index$i.Tabs;
205
- exports.TabsTab = tabsTab.TabsTab;
206
205
  exports.TabsList = tabsList.TabsList;
207
206
  exports.TabsPanel = tabsPanel.TabsPanel;
207
+ exports.TabsTab = tabsTab.TabsTab;
208
208
  exports.Tag = tag.Tag;
209
209
  exports.Textarea = textarea.Textarea;
210
210
  exports.Textfield = textfield.Textfield;
@@ -4,6 +4,8 @@ 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 { omit } from '../../utilities/omit/omit.js';
8
+ import { Spinner } from '../spinner/spinner.js';
7
9
  import { ComboboxContext } from './ComboboxContext.js';
8
10
  import { ComboboxIdProvider } from './ComboboxIdContext.js';
9
11
  import { ComboboxCustom } from './Custom.js';
@@ -17,8 +19,6 @@ import { useFloatingCombobox } from './useFloatingCombobox.js';
17
19
  import { useFormField } from './useFormField/useFormField.js';
18
20
  import { prefix, setReactInputValue, removePrefix } from './utilities.js';
19
21
  import { useDebounceCallback } from '../../utilities/hooks/use-debounce-callback/use-debounce-callback.js';
20
- import { Spinner } from '../spinner/spinner.js';
21
- import { omit } from '../../utilities/omit/omit.js';
22
22
 
23
23
  /**
24
24
  * @deprecated Use `Suggestion` instead
@@ -4,10 +4,10 @@ import { useMergeRefs } from '@floating-ui/react';
4
4
  import { Slot } from '@radix-ui/react-slot';
5
5
  import cl from 'clsx/lite';
6
6
  import { forwardRef, useId, useContext, useMemo } from 'react';
7
+ import { omit } from '../../utilities/omit/omit.js';
8
+ import { Label } from '../label/label.js';
7
9
  import { ComboboxContext } from './ComboboxContext.js';
8
10
  import { useComboboxId } from './ComboboxIdContext.js';
9
- import { Label } from '../label/label.js';
10
- import { omit } from '../../utilities/omit/omit.js';
11
11
 
12
12
  const ComboboxCustom = forwardRef(({ asChild, interactive, id, className, ...rest }, ref) => {
13
13
  if (interactive && !id) {
@@ -2,8 +2,8 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import cl from 'clsx/lite';
4
4
  import { forwardRef, useContext } from 'react';
5
- import { ComboboxContext } from './ComboboxContext.js';
6
5
  import { Label } from '../label/label.js';
6
+ import { ComboboxContext } from './ComboboxContext.js';
7
7
 
8
8
  const ComboboxEmpty = forwardRef(({ children, className, ...rest }, ref) => {
9
9
  const context = useContext(ComboboxContext);