@economic/taco 1.16.2 → 1.17.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 (137) hide show
  1. package/dist/components/AlertDialog/Context.d.ts +1 -1
  2. package/dist/components/Banner/Banner.stories.d.ts +2 -20
  3. package/dist/components/Button/Button.d.ts +2 -2
  4. package/dist/components/Button/Button.stories.d.ts +1 -1
  5. package/dist/components/Combobox/useCombobox.d.ts +2 -1
  6. package/dist/components/Datepicker/Datepicker.d.ts +7 -3
  7. package/dist/components/Datepicker/Datepicker.stories.d.ts +2 -2
  8. package/dist/components/Datepicker/useDatepicker.d.ts +2 -1
  9. package/dist/components/Dialog/Context.d.ts +1 -1
  10. package/dist/components/Dialog/Dialog.d.ts +1 -1
  11. package/dist/components/Icon/Icon.stories.d.ts +4 -20
  12. package/dist/components/IconButton/IconButton.stories.d.ts +11 -48
  13. package/dist/components/Input/Input.d.ts +15 -8
  14. package/dist/components/Input/Input.stories.d.ts +15 -41
  15. package/dist/components/Provider/Localization.d.ts +3 -2
  16. package/dist/components/SearchInput/SearchInput.d.ts +5 -10
  17. package/dist/components/SearchInput/SearchInput.stories.d.ts +3 -6
  18. package/dist/components/Select/Select.d.ts +1 -1
  19. package/dist/components/Select/Select.stories.d.ts +1 -1
  20. package/dist/components/Select2/Select2.d.ts +2 -0
  21. package/dist/components/Select2/Select2.stories.d.ts +0 -1
  22. package/dist/components/Select2/components/Search.d.ts +6 -3
  23. package/dist/components/Select2/hooks/useChildren.d.ts +2 -1
  24. package/dist/components/Tooltip/Tooltip.d.ts +4 -4
  25. package/dist/components/Tooltip/Tooltip.stories.d.ts +2 -2
  26. package/dist/esm/index.css +44 -40
  27. package/dist/esm/packages/taco/src/components/Accordion/Accordion.js +2 -2
  28. package/dist/esm/packages/taco/src/components/Accordion/Accordion.js.map +1 -1
  29. package/dist/esm/packages/taco/src/components/AlertDialog/Context.js.map +1 -1
  30. package/dist/esm/packages/taco/src/components/Backdrop/Backdrop.js +1 -1
  31. package/dist/esm/packages/taco/src/components/Backdrop/Backdrop.js.map +1 -1
  32. package/dist/esm/packages/taco/src/components/Button/Button.js +1 -2
  33. package/dist/esm/packages/taco/src/components/Button/Button.js.map +1 -1
  34. package/dist/esm/packages/taco/src/components/Button/util.js +7 -7
  35. package/dist/esm/packages/taco/src/components/Button/util.js.map +1 -1
  36. package/dist/esm/packages/taco/src/components/Calendar/Calendar.js +1 -1
  37. package/dist/esm/packages/taco/src/components/Calendar/Calendar.js.map +1 -1
  38. package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js +6 -5
  39. package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js.map +1 -1
  40. package/dist/esm/packages/taco/src/components/Combobox/Combobox.js +2 -2
  41. package/dist/esm/packages/taco/src/components/Combobox/Combobox.js.map +1 -1
  42. package/dist/esm/packages/taco/src/components/Combobox/useCombobox.js.map +1 -1
  43. package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js +37 -33
  44. package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js.map +1 -1
  45. package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js.map +1 -1
  46. package/dist/esm/packages/taco/src/components/Dialog/Context.js.map +1 -1
  47. package/dist/esm/packages/taco/src/components/Dialog/Dialog.js.map +1 -1
  48. package/dist/esm/packages/taco/src/components/Dialog/components/Content.js +1 -1
  49. package/dist/esm/packages/taco/src/components/Dialog/components/Content.js.map +1 -1
  50. package/dist/esm/packages/taco/src/components/Dialog/components/Extra.js +1 -1
  51. package/dist/esm/packages/taco/src/components/Dialog/components/Extra.js.map +1 -1
  52. package/dist/esm/packages/taco/src/components/Field/Field.js +3 -3
  53. package/dist/esm/packages/taco/src/components/Field/Field.js.map +1 -1
  54. package/dist/esm/packages/taco/src/components/Hanger/Hanger.js +3 -4
  55. package/dist/esm/packages/taco/src/components/Hanger/Hanger.js.map +1 -1
  56. package/dist/esm/packages/taco/src/components/HoverCard/Primitives.js +1 -1
  57. package/dist/esm/packages/taco/src/components/HoverCard/Primitives.js.map +1 -1
  58. package/dist/esm/packages/taco/src/components/Input/Input.js +110 -58
  59. package/dist/esm/packages/taco/src/components/Input/Input.js.map +1 -1
  60. package/dist/esm/packages/taco/src/components/Input/util.js +14 -8
  61. package/dist/esm/packages/taco/src/components/Input/util.js.map +1 -1
  62. package/dist/esm/packages/taco/src/components/Listbox/ScrollableList.js +2 -2
  63. package/dist/esm/packages/taco/src/components/Listbox/ScrollableList.js.map +1 -1
  64. package/dist/esm/packages/taco/src/components/Menu/components/Header.js +1 -1
  65. package/dist/esm/packages/taco/src/components/Menu/components/Header.js.map +1 -1
  66. package/dist/esm/packages/taco/src/components/Menu/components/Item.js +3 -3
  67. package/dist/esm/packages/taco/src/components/Menu/components/Item.js.map +1 -1
  68. package/dist/esm/packages/taco/src/components/Menu/components/Separator.js +1 -1
  69. package/dist/esm/packages/taco/src/components/Menu/components/Separator.js.map +1 -1
  70. package/dist/esm/packages/taco/src/components/Navigation/Navigation.js +7 -7
  71. package/dist/esm/packages/taco/src/components/Navigation/Navigation.js.map +1 -1
  72. package/dist/esm/packages/taco/src/components/Popover/Popover.js +1 -2
  73. package/dist/esm/packages/taco/src/components/Popover/Popover.js.map +1 -1
  74. package/dist/esm/packages/taco/src/components/Popover/Primitives.js +1 -1
  75. package/dist/esm/packages/taco/src/components/Popover/Primitives.js.map +1 -1
  76. package/dist/esm/packages/taco/src/components/Popover/util.js +1 -1
  77. package/dist/esm/packages/taco/src/components/Popover/util.js.map +1 -1
  78. package/dist/esm/packages/taco/src/components/Progress/Progress.js +3 -3
  79. package/dist/esm/packages/taco/src/components/Progress/Progress.js.map +1 -1
  80. package/dist/esm/packages/taco/src/components/Provider/Localization.js +3 -2
  81. package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
  82. package/dist/esm/packages/taco/src/components/RadioGroup/RadioGroup.js +4 -4
  83. package/dist/esm/packages/taco/src/components/RadioGroup/RadioGroup.js.map +1 -1
  84. package/dist/esm/packages/taco/src/components/ScrollArea/ScrollArea.js +1 -1
  85. package/dist/esm/packages/taco/src/components/ScrollArea/ScrollArea.js.map +1 -1
  86. package/dist/esm/packages/taco/src/components/SearchInput/SearchInput.js +31 -15
  87. package/dist/esm/packages/taco/src/components/SearchInput/SearchInput.js.map +1 -1
  88. package/dist/esm/packages/taco/src/components/Select/Select.js +2 -2
  89. package/dist/esm/packages/taco/src/components/Select/Select.js.map +1 -1
  90. package/dist/esm/packages/taco/src/components/Select2/Select2.js +8 -9
  91. package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
  92. package/dist/esm/packages/taco/src/components/Select2/components/Collection.js +1 -1
  93. package/dist/esm/packages/taco/src/components/Select2/components/Collection.js.map +1 -1
  94. package/dist/esm/packages/taco/src/components/Select2/components/Edit.js +1 -1
  95. package/dist/esm/packages/taco/src/components/Select2/components/Edit.js.map +1 -1
  96. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js +14 -6
  97. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js.map +1 -1
  98. package/dist/esm/packages/taco/src/components/Select2/hooks/useChildren.js +3 -2
  99. package/dist/esm/packages/taco/src/components/Select2/hooks/useChildren.js.map +1 -1
  100. package/dist/esm/packages/taco/src/components/Select2/utilities.js +1 -1
  101. package/dist/esm/packages/taco/src/components/Select2/utilities.js.map +1 -1
  102. package/dist/esm/packages/taco/src/components/Switch/Switch.js +5 -4
  103. package/dist/esm/packages/taco/src/components/Switch/Switch.js.map +1 -1
  104. package/dist/esm/packages/taco/src/components/Table/components/BaseTable.js +1 -1
  105. package/dist/esm/packages/taco/src/components/Table/components/BaseTable.js.map +1 -1
  106. package/dist/esm/packages/taco/src/components/Table/components/WindowedTable.js +2 -2
  107. package/dist/esm/packages/taco/src/components/Table/components/WindowedTable.js.map +1 -1
  108. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowDraggable.js +1 -1
  109. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowDraggable.js.map +1 -1
  110. package/dist/esm/packages/taco/src/components/Table/util/renderColumn.js +1 -1
  111. package/dist/esm/packages/taco/src/components/Table/util/renderColumn.js.map +1 -1
  112. package/dist/esm/packages/taco/src/components/Table/util/renderRow.js +2 -2
  113. package/dist/esm/packages/taco/src/components/Table/util/renderRow.js.map +1 -1
  114. package/dist/esm/packages/taco/src/components/Table/util/sortTypes.js +1 -1
  115. package/dist/esm/packages/taco/src/components/Table/util/sortTypes.js.map +1 -1
  116. package/dist/esm/packages/taco/src/components/Tabs/Tabs.js +2 -2
  117. package/dist/esm/packages/taco/src/components/Tabs/Tabs.js.map +1 -1
  118. package/dist/esm/packages/taco/src/components/Toast/Toast.js +5 -5
  119. package/dist/esm/packages/taco/src/components/Toast/Toast.js.map +1 -1
  120. package/dist/esm/packages/taco/src/components/Tooltip/Tooltip.js +3 -3
  121. package/dist/esm/packages/taco/src/components/Tooltip/Tooltip.js.map +1 -1
  122. package/dist/esm/packages/taco/src/components/Tour/Tour.js +3 -3
  123. package/dist/esm/packages/taco/src/components/Tour/Tour.js.map +1 -1
  124. package/dist/esm/packages/taco/src/index.js +1 -1
  125. package/dist/esm/packages/taco/src/utils/colors.js +9 -9
  126. package/dist/esm/packages/taco/src/utils/colors.js.map +1 -1
  127. package/dist/index.css +44 -40
  128. package/dist/index.d.ts +0 -1
  129. package/dist/primitives/Sortable/components/Item.d.ts +1 -0
  130. package/dist/taco.cjs.development.js +362 -280
  131. package/dist/taco.cjs.development.js.map +1 -1
  132. package/dist/taco.cjs.production.min.js +1 -1
  133. package/dist/taco.cjs.production.min.js.map +1 -1
  134. package/package.json +3 -3
  135. package/plugins/tailwindcss-group-peer.js +12 -0
  136. package/tailwind.config.js +272 -22
  137. package/types.json +87 -43
@@ -1 +1 @@
1
- {"version":3,"file":"RadioGroup.js","sources":["../../../../../../../src/components/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport { Orientation } from '../../types';\n\nexport type RadioGroupItemValue = string | number | boolean | null;\n\nexport const getRadioGroupItemValueAsString = (value: RadioGroupItemValue): string => String(value ?? '');\n\nexport const findByValue = (values: RadioGroupItemValue[], valueAsString: string): RadioGroupItemValue =>\n values.find(value => getRadioGroupItemValueAsString(value) === valueAsString) as RadioGroupItemValue;\n\nconst RadioGroupContext = React.createContext({ disabled: false, invalid: false });\n\nexport type RadioGroupItemProps<T = HTMLButtonElement> = Omit<\n React.ButtonHTMLAttributes<T>,\n 'children' | 'onSelect' | 'value'\n> & {\n /** Label for the radio group item */\n children: React.ReactNode;\n /* Whether the radio group item is disabled */\n disabled?: boolean;\n /** Value of the radio button */\n value: RadioGroupItemValue;\n};\n\nconst RadioGroupItem = React.forwardRef(function RadioGroupItem(props: RadioGroupItemProps, ref: React.Ref<HTMLButtonElement>) {\n const context = React.useContext(RadioGroupContext);\n const { children, value, ...otherProps } = props;\n\n const isDisabled = context.disabled || props.disabled;\n\n const className = cn(\n 'flex flex-shrink-0 self-start items-center justify-center h-4 w-4 mt-[0.2rem] rounded-full bg-white border-2',\n {\n 'border-grey-dark hover:border-4 focus:yt-focus aria-checked:bg-blue aria-checked:border-blue hover:aria-checked:border-blue-light':\n !isDisabled && !context.invalid,\n 'border-grey cursor-not-allowed aria-checked:bg-blue-light aria-checked:border-blue-light ': isDisabled,\n 'border-red hover:border-4 text-red focus:border-red focus:yt-focus-red aria-checked:bg-red aria-checked:border-red':\n context.invalid && !isDisabled,\n }\n );\n const labelClassName = cn(\n 'flex items-center gap-2',\n {\n 'cursor-pointer': !isDisabled,\n 'cursor-not-allowed text-grey-dark': isDisabled,\n },\n props.className\n );\n\n return (\n <label className={labelClassName}>\n <RadioGroupPrimitive.Item\n {...otherProps}\n className={className}\n disabled={isDisabled}\n ref={ref}\n value={getRadioGroupItemValueAsString(value)}>\n <RadioGroupPrimitive.Indicator className=\"h-2 w-2 rounded-full bg-white\" />\n </RadioGroupPrimitive.Item>\n {children}\n </label>\n );\n});\n\ntype ReactGroupBaseChild = React.ReactElement<RadioGroupItemProps> | boolean | null;\n\ntype RadioGroupBaseProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'children' | 'defaultValue' | 'onChange' | 'value'> & {\n children: ReactGroupBaseChild[];\n /* Whether the radio group is disabled */\n disabled?: boolean;\n /* Whether the radio group is in an invalid state */\n invalid?: boolean;\n /** The name of the radio group, used when submitting an HTML form */\n name?: string;\n /**\n * Orientation of the radio group\n * @defaultValue vertical\n */\n orientation?: Orientation;\n /* Whether the radio group requires user input */\n required?: boolean;\n};\n\ninterface UncontrolledRadioGroupProps extends RadioGroupBaseProps {\n /* The default value (uncontrolled) */\n defaultValue?: RadioGroupItemValue;\n onChange?: never;\n value?: never;\n}\n\ninterface ControlledRadioGroupProps extends RadioGroupBaseProps {\n defaultValue?: never;\n /** Handler called when the value changes */\n onChange: (value: RadioGroupItemValue) => void;\n /** The current value (controlled) */\n value?: RadioGroupItemValue;\n}\n\nexport type RadioGroupProps = UncontrolledRadioGroupProps | ControlledRadioGroupProps;\n\nexport type ForwardedRadioGroupWithStatics = React.ForwardRefExoticComponent<\n RadioGroupProps & React.RefAttributes<HTMLDivElement>\n> & {\n /** Item component rendered in a `RadioGroup` component */\n Item: React.ForwardRefExoticComponent<RadioGroupItemProps>;\n};\n\nexport const useRadioGroup = (props: RadioGroupProps) => {\n const { children, defaultValue, disabled, invalid, onChange, orientation = 'vertical', value, ...otherProps } = props;\n\n const values = React.useMemo<RadioGroupItemValue[]>(() => {\n const radioGroupItemValues: RadioGroupItemValue[] = [];\n\n React.Children.forEach(children, child => {\n if (React.isValidElement(child)) {\n radioGroupItemValues.push(child.props.value);\n }\n });\n\n return radioGroupItemValues;\n }, [children]);\n\n const context = React.useMemo(() => ({ disabled: disabled ?? false, invalid: invalid ?? false }), [disabled, invalid]);\n\n let valueProps;\n\n if (onChange !== undefined) {\n const handleChange = (value: string): void => onChange(findByValue(values, value));\n\n valueProps = {\n onValueChange: handleChange,\n value: value !== undefined ? getRadioGroupItemValueAsString(value) : undefined,\n };\n } else {\n valueProps = {\n defaultValue: defaultValue !== undefined ? getRadioGroupItemValueAsString(defaultValue) : undefined,\n };\n }\n\n return {\n context,\n props: {\n ...otherProps,\n ...valueProps,\n children,\n disabled,\n orientation,\n },\n };\n};\n\nexport const RadioGroup = React.forwardRef(function RadioGroup(props: RadioGroupProps, ref: React.Ref<HTMLDivElement>) {\n const { context, props: otherProps } = useRadioGroup(props);\n const className = cn(\n 'flex items-start gap-y-2',\n {\n 'flex-wrap gap-x-4 ': otherProps.orientation === 'horizontal',\n 'flex-col': otherProps.orientation === 'vertical',\n },\n otherProps.className\n );\n\n return (\n <RadioGroupContext.Provider value={context}>\n <RadioGroupPrimitive.Root {...otherProps} className={className} data-taco=\"radio-group\" ref={ref} />\n </RadioGroupContext.Provider>\n );\n}) as ForwardedRadioGroupWithStatics;\nRadioGroup.Item = RadioGroupItem;\n"],"names":["getRadioGroupItemValueAsString","value","String","findByValue","values","valueAsString","find","RadioGroupContext","React","disabled","invalid","RadioGroupItem","props","ref","context","children","otherProps","isDisabled","className","cn","labelClassName","RadioGroupPrimitive","useRadioGroup","defaultValue","onChange","orientation","radioGroupItemValues","forEach","child","push","valueProps","undefined","handleChange","onValueChange","RadioGroup","Provider","Item"],"mappings":"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"}
1
+ {"version":3,"file":"RadioGroup.js","sources":["../../../../../../../src/components/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport { Orientation } from '../../types';\n\nexport type RadioGroupItemValue = string | number | boolean | null;\n\nexport const getRadioGroupItemValueAsString = (value: RadioGroupItemValue): string => String(value ?? '');\n\nexport const findByValue = (values: RadioGroupItemValue[], valueAsString: string): RadioGroupItemValue =>\n values.find(value => getRadioGroupItemValueAsString(value) === valueAsString) as RadioGroupItemValue;\n\nconst RadioGroupContext = React.createContext({ disabled: false, invalid: false });\n\nexport type RadioGroupItemProps<T = HTMLButtonElement> = Omit<\n React.ButtonHTMLAttributes<T>,\n 'children' | 'onSelect' | 'value'\n> & {\n /** Label for the radio group item */\n children: React.ReactNode;\n /* Whether the radio group item is disabled */\n disabled?: boolean;\n /** Value of the radio button */\n value: RadioGroupItemValue;\n};\n\nconst RadioGroupItem = React.forwardRef(function RadioGroupItem(props: RadioGroupItemProps, ref: React.Ref<HTMLButtonElement>) {\n const context = React.useContext(RadioGroupContext);\n const { children, value, ...otherProps } = props;\n\n const isDisabled = context.disabled || props.disabled;\n\n const className = cn(\n 'flex flex-shrink-0 self-start items-center justify-center h-4 w-4 mt-[0.2rem] rounded-full bg-white border-2',\n {\n 'border-grey-300 hover:border-4 focus:yt-focus aria-checked:bg-blue-500 aria-checked:border-blue-500 hover:aria-checked:border-blue-300':\n !isDisabled && !context.invalid,\n 'border-grey-200 cursor-not-allowed aria-checked:bg-blue-300 aria-checked:border-blue-300 ': isDisabled,\n 'border-red-500 hover:border-4 text-red-500 focus:border-red-500 focus:yt-focus-red aria-checked:bg-red-500 aria-checked:border-red':\n context.invalid && !isDisabled,\n }\n );\n const labelClassName = cn(\n 'flex items-center gap-2',\n {\n 'cursor-pointer': !isDisabled,\n 'cursor-not-allowed text-grey-300': isDisabled,\n },\n props.className\n );\n\n return (\n <label className={labelClassName}>\n <RadioGroupPrimitive.Item\n {...otherProps}\n className={className}\n disabled={isDisabled}\n ref={ref}\n value={getRadioGroupItemValueAsString(value)}>\n <RadioGroupPrimitive.Indicator className=\"h-2 w-2 rounded-full bg-white\" />\n </RadioGroupPrimitive.Item>\n {children}\n </label>\n );\n});\n\ntype ReactGroupBaseChild = React.ReactElement<RadioGroupItemProps> | boolean | null;\n\ntype RadioGroupBaseProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'children' | 'defaultValue' | 'onChange' | 'value'> & {\n children: ReactGroupBaseChild[];\n /* Whether the radio group is disabled */\n disabled?: boolean;\n /* Whether the radio group is in an invalid state */\n invalid?: boolean;\n /** The name of the radio group, used when submitting an HTML form */\n name?: string;\n /**\n * Orientation of the radio group\n * @defaultValue vertical\n */\n orientation?: Orientation;\n /* Whether the radio group requires user input */\n required?: boolean;\n};\n\ninterface UncontrolledRadioGroupProps extends RadioGroupBaseProps {\n /* The default value (uncontrolled) */\n defaultValue?: RadioGroupItemValue;\n onChange?: never;\n value?: never;\n}\n\ninterface ControlledRadioGroupProps extends RadioGroupBaseProps {\n defaultValue?: never;\n /** Handler called when the value changes */\n onChange: (value: RadioGroupItemValue) => void;\n /** The current value (controlled) */\n value?: RadioGroupItemValue;\n}\n\nexport type RadioGroupProps = UncontrolledRadioGroupProps | ControlledRadioGroupProps;\n\nexport type ForwardedRadioGroupWithStatics = React.ForwardRefExoticComponent<\n RadioGroupProps & React.RefAttributes<HTMLDivElement>\n> & {\n /** Item component rendered in a `RadioGroup` component */\n Item: React.ForwardRefExoticComponent<RadioGroupItemProps>;\n};\n\nexport const useRadioGroup = (props: RadioGroupProps) => {\n const { children, defaultValue, disabled, invalid, onChange, orientation = 'vertical', value, ...otherProps } = props;\n\n const values = React.useMemo<RadioGroupItemValue[]>(() => {\n const radioGroupItemValues: RadioGroupItemValue[] = [];\n\n React.Children.forEach(children, child => {\n if (React.isValidElement(child)) {\n radioGroupItemValues.push(child.props.value);\n }\n });\n\n return radioGroupItemValues;\n }, [children]);\n\n const context = React.useMemo(() => ({ disabled: disabled ?? false, invalid: invalid ?? false }), [disabled, invalid]);\n\n let valueProps;\n\n if (onChange !== undefined) {\n const handleChange = (value: string): void => onChange(findByValue(values, value));\n\n valueProps = {\n onValueChange: handleChange,\n value: value !== undefined ? getRadioGroupItemValueAsString(value) : undefined,\n };\n } else {\n valueProps = {\n defaultValue: defaultValue !== undefined ? getRadioGroupItemValueAsString(defaultValue) : undefined,\n };\n }\n\n return {\n context,\n props: {\n ...otherProps,\n ...valueProps,\n children,\n disabled,\n orientation,\n },\n };\n};\n\nexport const RadioGroup = React.forwardRef(function RadioGroup(props: RadioGroupProps, ref: React.Ref<HTMLDivElement>) {\n const { context, props: otherProps } = useRadioGroup(props);\n const className = cn(\n 'flex items-start gap-y-2',\n {\n 'flex-wrap gap-x-4 ': otherProps.orientation === 'horizontal',\n 'flex-col': otherProps.orientation === 'vertical',\n },\n otherProps.className\n );\n\n return (\n <RadioGroupContext.Provider value={context}>\n <RadioGroupPrimitive.Root {...otherProps} className={className} data-taco=\"radio-group\" ref={ref} />\n </RadioGroupContext.Provider>\n );\n}) as ForwardedRadioGroupWithStatics;\nRadioGroup.Item = RadioGroupItem;\n"],"names":["getRadioGroupItemValueAsString","value","String","findByValue","values","valueAsString","find","RadioGroupContext","React","disabled","invalid","RadioGroupItem","props","ref","context","children","otherProps","isDisabled","className","cn","labelClassName","RadioGroupPrimitive","useRadioGroup","defaultValue","onChange","orientation","radioGroupItemValues","forEach","child","push","valueProps","undefined","handleChange","onValueChange","RadioGroup","Provider","Item"],"mappings":"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"}
@@ -15,7 +15,7 @@ const Thumb = props => /*#__PURE__*/React__default.createElement(Thumb$1, Object
15
15
  className: "flex-[1] rounded bg-black opacity-50"
16
16
  }));
17
17
  const Corner = props => /*#__PURE__*/React__default.createElement(Corner$1, Object.assign({}, props, {
18
- classname: "bg-grey-darker"
18
+ classname: "bg-grey-500"
19
19
  }));
20
20
  const ScrollArea = props => {
21
21
  const {
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollArea.js","sources":["../../../../../../../src/components/ScrollArea/ScrollArea.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\n\n\nconst Bar = props => {\n const className = cn(`flex select-none touch-none transition-colors hover:bg-grey`, {\n 'w-[7px] hover:w-[14px] mr-[2px] hover:px-[2px] hover:mr-0': props.orientation === 'vertical',\n 'flex-col h-[7px] hover:h-[14px] mb-[2px] hover:py-[2px] hover:mb-0': props.orientation === 'horizontal',\n });\n return <ScrollAreaPrimitive.Scrollbar {...props} className={className} />;\n};\n\nconst Thumb = props => <ScrollAreaPrimitive.Thumb {...props} className=\"flex-[1] rounded bg-black opacity-50\" />;\n\nconst Corner = props => <ScrollAreaPrimitive.Corner {...props} classname=\"bg-grey-darker\" />;\n\nexport type ScrollbarProps = Omit<ScrollAreaPrimitive.ScrollAreaProps, 'scrollHideDelay'>;\n\nexport const ScrollArea = (props: ScrollbarProps) => {\n const { children, ...otherProps } = props;\n\n return (\n <ScrollAreaPrimitive.Root {...otherProps} className={cn('overflow-hidden', props.className)}>\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full\">{children}</ScrollAreaPrimitive.Viewport>\n <Bar orientation=\"vertical\">\n <Thumb />\n </Bar>\n <Bar orientation=\"horizontal\">\n <Thumb />\n </Bar>\n <Corner />\n </ScrollAreaPrimitive.Root>\n );\n};\n"],"names":["Bar","props","className","cn","orientation","React","ScrollAreaPrimitive","Thumb","Corner","classname","ScrollArea","children","otherProps"],"mappings":";;;;AAKA,MAAMA,GAAG,GAAGC,KAAK;EACb,MAAMC,SAAS,GAAGC,EAAE,8DAA8D,EAAE;IAChF,2DAA2D,EAAEF,KAAK,CAACG,WAAW,KAAK,UAAU;IAC7F,oEAAoE,EAAEH,KAAK,CAACG,WAAW,KAAK;GAC/F,CAAC;EACF,oBAAOC,6BAACC,SAA6B,oBAAKL,KAAK;IAAEC,SAAS,EAAEA;KAAa;AAC7E,CAAC;AAED,MAAMK,KAAK,GAAGN,KAAK,iBAAII,6BAACC,OAAyB,oBAAKL,KAAK;EAAEC,SAAS,EAAC;GAAyC;AAEhH,MAAMM,MAAM,GAAGP,KAAK,iBAAII,6BAACC,QAA0B,oBAAKL,KAAK;EAAEQ,SAAS,EAAC;GAAmB;MAI/EC,UAAU,GAAIT,KAAqB;EAC5C,MAAM;IAAEU,QAAQ;IAAE,GAAGC;GAAY,GAAGX,KAAK;EAEzC,oBACII,6BAACC,IAAwB,oBAAKM,UAAU;IAAEV,SAAS,EAAEC,EAAE,CAAC,iBAAiB,EAAEF,KAAK,CAACC,SAAS;mBACtFG,6BAACC,QAA4B;IAACJ,SAAS,EAAC;KAAiBS,QAAQ,CAAgC,eACjGN,6BAACL,GAAG;IAACI,WAAW,EAAC;kBACbC,6BAACE,KAAK,OAAG,CACP,eACNF,6BAACL,GAAG;IAACI,WAAW,EAAC;kBACbC,6BAACE,KAAK,OAAG,CACP,eACNF,6BAACG,MAAM,OAAG,CACa;AAEnC;;;;"}
1
+ {"version":3,"file":"ScrollArea.js","sources":["../../../../../../../src/components/ScrollArea/ScrollArea.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\n\nconst Bar = props => {\n const className = cn(`flex select-none touch-none transition-colors hover:bg-grey`, {\n 'w-[7px] hover:w-[14px] mr-[2px] hover:px-[2px] hover:mr-0': props.orientation === 'vertical',\n 'flex-col h-[7px] hover:h-[14px] mb-[2px] hover:py-[2px] hover:mb-0': props.orientation === 'horizontal',\n });\n return <ScrollAreaPrimitive.Scrollbar {...props} className={className} />;\n};\n\nconst Thumb = props => <ScrollAreaPrimitive.Thumb {...props} className=\"flex-[1] rounded bg-black opacity-50\" />;\n\nconst Corner = props => <ScrollAreaPrimitive.Corner {...props} classname=\"bg-grey-500\" />;\n\nexport type ScrollbarProps = Omit<ScrollAreaPrimitive.ScrollAreaProps, 'scrollHideDelay'>;\n\nexport const ScrollArea = (props: ScrollbarProps) => {\n const { children, ...otherProps } = props;\n\n return (\n <ScrollAreaPrimitive.Root {...otherProps} className={cn('overflow-hidden', props.className)}>\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full\">{children}</ScrollAreaPrimitive.Viewport>\n <Bar orientation=\"vertical\">\n <Thumb />\n </Bar>\n <Bar orientation=\"horizontal\">\n <Thumb />\n </Bar>\n <Corner />\n </ScrollAreaPrimitive.Root>\n );\n};\n"],"names":["Bar","props","className","cn","orientation","React","ScrollAreaPrimitive","Thumb","Corner","classname","ScrollArea","children","otherProps"],"mappings":";;;;AAIA,MAAMA,GAAG,GAAGC,KAAK;EACb,MAAMC,SAAS,GAAGC,EAAE,8DAA8D,EAAE;IAChF,2DAA2D,EAAEF,KAAK,CAACG,WAAW,KAAK,UAAU;IAC7F,oEAAoE,EAAEH,KAAK,CAACG,WAAW,KAAK;GAC/F,CAAC;EACF,oBAAOC,6BAACC,SAA6B,oBAAKL,KAAK;IAAEC,SAAS,EAAEA;KAAa;AAC7E,CAAC;AAED,MAAMK,KAAK,GAAGN,KAAK,iBAAII,6BAACC,OAAyB,oBAAKL,KAAK;EAAEC,SAAS,EAAC;GAAyC;AAEhH,MAAMM,MAAM,GAAGP,KAAK,iBAAII,6BAACC,QAA0B,oBAAKL,KAAK;EAAEQ,SAAS,EAAC;GAAgB;MAI5EC,UAAU,GAAIT,KAAqB;EAC5C,MAAM;IAAEU,QAAQ;IAAE,GAAGC;GAAY,GAAGX,KAAK;EAEzC,oBACII,6BAACC,IAAwB,oBAAKM,UAAU;IAAEV,SAAS,EAAEC,EAAE,CAAC,iBAAiB,EAAEF,KAAK,CAACC,SAAS;mBACtFG,6BAACC,QAA4B;IAACJ,SAAS,EAAC;KAAiBS,QAAQ,CAAgC,eACjGN,6BAACL,GAAG;IAACI,WAAW,EAAC;kBACbC,6BAACE,KAAK,OAAG,CACP,eACNF,6BAACL,GAAG;IAACI,WAAW,EAAC;kBACbC,6BAACE,KAAK,OAAG,CACP,eACNF,6BAACG,MAAM,OAAG,CACa;AAEnC;;;;"}
@@ -1,40 +1,56 @@
1
- import { forwardRef, createElement } from 'react';
1
+ import { forwardRef, createElement, Fragment } from 'react';
2
2
  import { IconButton } from '../IconButton/IconButton.js';
3
3
  import { useLocalization } from '../Provider/Localization.js';
4
+ import { useMergedRef } from '../../hooks/useMergedRef.js';
4
5
  import { Input } from '../Input/Input.js';
6
+ import { setInputValueByRef } from '../../utils/input.js';
5
7
 
6
8
  const SearchInput = /*#__PURE__*/forwardRef(function SearchInput({
7
9
  onSearch,
8
10
  ...props
9
11
  }, ref) {
12
+ const internalRef = useMergedRef(ref);
10
13
  const {
11
14
  texts
12
15
  } = useLocalization();
13
16
  const handleClick = () => {
14
- if (!props.disabled) {
15
- onSearch === null || onSearch === void 0 ? void 0 : onSearch(props.value);
16
- }
17
+ var _internalRef$current$, _internalRef$current;
18
+ onSearch === null || onSearch === void 0 ? void 0 : onSearch((_internalRef$current$ = (_internalRef$current = internalRef.current) === null || _internalRef$current === void 0 ? void 0 : _internalRef$current.value) !== null && _internalRef$current$ !== void 0 ? _internalRef$current$ : '');
19
+ };
20
+ const handleCancelClick = () => {
21
+ setInputValueByRef(internalRef.current, '');
17
22
  };
18
23
  const handleKeyDown = event => {
19
24
  var _props$onKeyDown;
20
- const isEnterKeyPressed = event.key === 'Enter';
21
- if (isEnterKeyPressed) {
25
+ if (event.key === 'Enter') {
26
+ event.preventDefault();
22
27
  handleClick();
28
+ return;
23
29
  }
24
30
  (_props$onKeyDown = props.onKeyDown) === null || _props$onKeyDown === void 0 ? void 0 : _props$onKeyDown.call(props, event);
25
31
  };
26
32
  return /*#__PURE__*/createElement(Input, Object.assign({
27
- "aria-label": texts.searchInput.inputLabel
33
+ "aria-label": texts.searchInput.placeholder,
34
+ placeholder: texts.searchInput.placeholder
28
35
  }, props, {
29
- button: /*#__PURE__*/createElement(IconButton, {
30
- "aria-label": texts.searchInput.buttonLabel,
31
- icon: "search",
32
- className: "!border-transparent !bg-transparent focus:!border-transparent peer-focus:!border-transparent peer-focus:peer-active:!border-transparent",
33
- disabled: props.disabled,
34
- onClick: handleClick
35
- }),
36
36
  onKeyDown: handleKeyDown,
37
- ref: ref,
37
+ postfix: /*#__PURE__*/createElement(Fragment, null, props.disabled || props.readOnly || !props.value ? null : /*#__PURE__*/createElement(IconButton, {
38
+ "aria-hidden": true,
39
+ className: "group-peer-focus:visible group-peer-hover:visible !text-grey-700 invisible mr-0.5 !h-5 !min-h-[theme(spacing.4)] !w-5 !min-w-[theme(spacing.4)] text-xs hover:visible group-hover:visible",
40
+ icon: "close",
41
+ onClick: handleCancelClick,
42
+ rounded: true,
43
+ tabIndex: -1,
44
+ tooltip: texts.searchInput.clear
45
+ }), /*#__PURE__*/createElement(IconButton, {
46
+ "aria-label": texts.searchInput.button,
47
+ icon: "search",
48
+ className: "group-peer-focus:!border-transparent group-peer-focus:group-peer-active:!border-transparent -mr-2 !border-transparent !bg-transparent focus:!border-transparent",
49
+ disabled: props.disabled || props.readOnly,
50
+ onClick: handleClick,
51
+ tooltip: texts.searchInput.button
52
+ })),
53
+ ref: internalRef,
38
54
  type: "search"
39
55
  }));
40
56
  });
@@ -1 +1 @@
1
- {"version":3,"file":"SearchInput.js","sources":["../../../../../../../src/components/SearchInput/SearchInput.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Input, InputProps } from '../Input/Input';\nimport { useLocalization } from '../Provider/Localization';\nimport { IconButton } from '../IconButton/IconButton';\n\nexport type SearchInputTexts = {\n /**\n * aria-label text for input\n */\n inputLabel: string;\n /**\n * aria-label text for the search button\n */\n buttonLabel: string;\n};\n\nexport type SearchInputProps = Omit<InputProps, 'icon'> & {\n /** Current input value will be passed to the method. In order to get the value, the component must be controlled otherwise value will always be undefined */\n onSearch?: (value: string | number | readonly string[] | undefined) => void;\n};\n\nexport const SearchInput = React.forwardRef(function SearchInput(\n { onSearch, ...props }: SearchInputProps,\n ref: React.Ref<HTMLInputElement>\n) {\n const { texts } = useLocalization();\n\n const handleClick = (): void => {\n if (!props.disabled) {\n onSearch?.(props.value);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>): void => {\n const isEnterKeyPressed = event.key === 'Enter';\n\n if (isEnterKeyPressed) {\n handleClick();\n }\n\n props.onKeyDown?.(event);\n };\n\n return (\n <Input\n aria-label={texts.searchInput.inputLabel}\n {...props}\n button={\n <IconButton\n aria-label={texts.searchInput.buttonLabel}\n icon=\"search\"\n className=\"!border-transparent !bg-transparent focus:!border-transparent peer-focus:!border-transparent peer-focus:peer-active:!border-transparent\"\n disabled={props.disabled}\n onClick={handleClick}\n />\n }\n onKeyDown={handleKeyDown}\n ref={ref}\n type=\"search\"\n />\n );\n});\n"],"names":["SearchInput","React","onSearch","props","ref","texts","useLocalization","handleClick","disabled","value","handleKeyDown","event","isEnterKeyPressed","key","onKeyDown","Input","searchInput","inputLabel","button","IconButton","buttonLabel","icon","className","onClick","type"],"mappings":";;;;;MAqBaA,WAAW,gBAAGC,UAAgB,CAAC,SAASD,WAAW,CAC5D;EAAEE,QAAQ;EAAE,GAAGC;CAAyB,EACxCC,GAAgC;EAEhC,MAAM;IAAEC;GAAO,GAAGC,eAAe,EAAE;EAEnC,MAAMC,WAAW,GAAG;IAChB,IAAI,CAACJ,KAAK,CAACK,QAAQ,EAAE;MACjBN,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAGC,KAAK,CAACM,KAAK,CAAC;;GAE9B;EAED,MAAMC,aAAa,GAAIC,KAA4C;;IAC/D,MAAMC,iBAAiB,GAAGD,KAAK,CAACE,GAAG,KAAK,OAAO;IAE/C,IAAID,iBAAiB,EAAE;MACnBL,WAAW,EAAE;;IAGjB,oBAAAJ,KAAK,CAACW,SAAS,qDAAf,sBAAAX,KAAK,EAAaQ,KAAK,CAAC;GAC3B;EAED,oBACIV,cAACc,KAAK;kBACUV,KAAK,CAACW,WAAW,CAACC;KAC1Bd,KAAK;IACTe,MAAM,eACFjB,cAACkB,UAAU;oBACKd,KAAK,CAACW,WAAW,CAACI,WAAW;MACzCC,IAAI,EAAC,QAAQ;MACbC,SAAS,EAAC,yIAAyI;MACnJd,QAAQ,EAAEL,KAAK,CAACK,QAAQ;MACxBe,OAAO,EAAEhB;MACX;IAENO,SAAS,EAAEJ,aAAa;IACxBN,GAAG,EAAEA,GAAG;IACRoB,IAAI,EAAC;KACP;AAEV,CAAC;;;;"}
1
+ {"version":3,"file":"SearchInput.js","sources":["../../../../../../../src/components/SearchInput/SearchInput.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Input, InputProps } from '../Input/Input';\nimport { useLocalization } from '../Provider/Localization';\nimport { IconButton } from '../IconButton/IconButton';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { setInputValueByRef } from '../../utils/input';\n\nexport type SearchInputTexts = {\n button: string;\n clear: string;\n placeholder: string;\n};\n\nexport type SearchInputProps = Omit<InputProps, 'button' | 'icon' | 'prefix' | 'postfix'> & {\n /** Current input value will be passed to the method. In order to get the value, the component must be controlled otherwise value will always be undefined */\n onSearch?: (value: string | number | readonly string[] | undefined) => void;\n};\n\nexport const SearchInput = React.forwardRef(function SearchInput(\n { onSearch, ...props }: SearchInputProps,\n ref: React.Ref<HTMLInputElement>\n) {\n const internalRef = useMergedRef<HTMLInputElement>(ref);\n const { texts } = useLocalization();\n\n const handleClick = (): void => {\n onSearch?.(internalRef.current?.value ?? '');\n };\n\n const handleCancelClick = (): void => {\n setInputValueByRef(internalRef.current, '');\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>): void => {\n if (event.key === 'Enter') {\n event.preventDefault();\n handleClick();\n return;\n }\n\n props.onKeyDown?.(event);\n };\n\n return (\n <Input\n aria-label={texts.searchInput.placeholder}\n placeholder={texts.searchInput.placeholder}\n {...props}\n onKeyDown={handleKeyDown}\n postfix={\n <>\n {props.disabled || props.readOnly || !props.value ? null : (\n <IconButton\n aria-hidden\n className=\"group-peer-focus:visible group-peer-hover:visible !text-grey-700 invisible mr-0.5 !h-5 !min-h-[theme(spacing.4)] !w-5 !min-w-[theme(spacing.4)] text-xs hover:visible group-hover:visible\"\n icon=\"close\"\n onClick={handleCancelClick}\n rounded\n tabIndex={-1}\n tooltip={texts.searchInput.clear}\n />\n )}\n <IconButton\n aria-label={texts.searchInput.button}\n icon=\"search\"\n className=\"group-peer-focus:!border-transparent group-peer-focus:group-peer-active:!border-transparent -mr-2 !border-transparent !bg-transparent focus:!border-transparent\"\n disabled={props.disabled || props.readOnly}\n onClick={handleClick}\n tooltip={texts.searchInput.button}\n />\n </>\n }\n ref={internalRef}\n type=\"search\"\n />\n );\n});\n"],"names":["SearchInput","React","onSearch","props","ref","internalRef","useMergedRef","texts","useLocalization","handleClick","current","value","handleCancelClick","setInputValueByRef","handleKeyDown","event","key","preventDefault","onKeyDown","Input","searchInput","placeholder","postfix","disabled","readOnly","IconButton","className","icon","onClick","rounded","tabIndex","tooltip","clear","button","type"],"mappings":";;;;;;;MAkBaA,WAAW,gBAAGC,UAAgB,CAAC,SAASD,WAAW,CAC5D;EAAEE,QAAQ;EAAE,GAAGC;CAAyB,EACxCC,GAAgC;EAEhC,MAAMC,WAAW,GAAGC,YAAY,CAAmBF,GAAG,CAAC;EACvD,MAAM;IAAEG;GAAO,GAAGC,eAAe,EAAE;EAEnC,MAAMC,WAAW,GAAG;;IAChBP,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,kDAAGG,WAAW,CAACK,OAAO,yDAAnB,qBAAqBC,KAAK,yEAAI,EAAE,CAAC;GAC/C;EAED,MAAMC,iBAAiB,GAAG;IACtBC,kBAAkB,CAACR,WAAW,CAACK,OAAO,EAAE,EAAE,CAAC;GAC9C;EAED,MAAMI,aAAa,GAAIC,KAA4C;;IAC/D,IAAIA,KAAK,CAACC,GAAG,KAAK,OAAO,EAAE;MACvBD,KAAK,CAACE,cAAc,EAAE;MACtBR,WAAW,EAAE;MACb;;IAGJ,oBAAAN,KAAK,CAACe,SAAS,qDAAf,sBAAAf,KAAK,EAAaY,KAAK,CAAC;GAC3B;EAED,oBACId,cAACkB,KAAK;kBACUZ,KAAK,CAACa,WAAW,CAACC,WAAW;IACzCA,WAAW,EAAEd,KAAK,CAACa,WAAW,CAACC;KAC3BlB,KAAK;IACTe,SAAS,EAAEJ,aAAa;IACxBQ,OAAO,eACHrB,8BACKE,KAAK,CAACoB,QAAQ,IAAIpB,KAAK,CAACqB,QAAQ,IAAI,CAACrB,KAAK,CAACQ,KAAK,GAAG,IAAI,gBACpDV,cAACwB,UAAU;;MAEPC,SAAS,EAAC,2LAA2L;MACrMC,IAAI,EAAC,OAAO;MACZC,OAAO,EAAEhB,iBAAiB;MAC1BiB,OAAO;MACPC,QAAQ,EAAE,CAAC,CAAC;MACZC,OAAO,EAAExB,KAAK,CAACa,WAAW,CAACY;MAElC,eACD/B,cAACwB,UAAU;oBACKlB,KAAK,CAACa,WAAW,CAACa,MAAM;MACpCN,IAAI,EAAC,QAAQ;MACbD,SAAS,EAAC,iKAAiK;MAC3KH,QAAQ,EAAEpB,KAAK,CAACoB,QAAQ,IAAIpB,KAAK,CAACqB,QAAQ;MAC1CI,OAAO,EAAEnB,WAAW;MACpBsB,OAAO,EAAExB,KAAK,CAACa,WAAW,CAACa;MAC7B,CACH;IAEP7B,GAAG,EAAEC,WAAW;IAChB6B,IAAI,EAAC;KACP;AAEV,CAAC;;;;"}
@@ -30,8 +30,8 @@ const BaseSelect = /*#__PURE__*/forwardRef(function BaseSelect(props, ref) {
30
30
  const className = cn('inline-flex relative w-full', {
31
31
  'yt-select--readonly': props.readOnly
32
32
  }, externalClassName);
33
- const inputClassname = cn(getInputClasses(props), 'h-8 text-left pr-0', {
34
- 'border-blue': popover.open
33
+ const inputClassname = cn(getInputClasses(props), 'h-8 text-left !pr-0', {
34
+ 'border-blue-500': popover.open
35
35
  });
36
36
  useEffect(() => {
37
37
  if (autoFocus && internalRef.current) {
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../../../../../src/components/Select/Select.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { Icon } from '../Icon/Icon';\nimport { Listbox, MultiListbox, ListboxProps } from '../Listbox/Listbox';\nimport { useBoundingClientRectListener } from '../../hooks/useBoundingClientRectListener';\nimport { useSelect } from './useSelect';\nimport { Combobox, ComboboxProps } from '../Combobox/Combobox';\nimport { Badge } from '../Badge/Badge';\nimport { getInputClasses } from '../Input/util';\n\nexport type SelectTexts = {\n /**\n * The text displayed when all options are selected when multiselect mode in on.\n */\n allOptionsSelected: string;\n};\n\nexport type BaseSelectProps = Omit<ListboxProps, 'dialog'> &\n Omit<ComboboxProps, 'inline'> & {\n /**\n * Allows to select multiple values.\n * All the selected values will be combined in a comma-seperated string as the value of the input.\n */\n multiselect?: boolean;\n };\n\nexport type SelectProps = BaseSelectProps & {\n /**\n * Creates an editable select.\n * Setting this will render a inline Combobox which will display the provided data on click/focus,\n * even if there is no value in the input.\n * After user starts typing, matching data will be displayed.\n */\n editable?: boolean;\n};\n\nconst BaseSelect = React.forwardRef(function BaseSelect(props: BaseSelectProps, ref: React.Ref<HTMLInputElement>) {\n const { autoFocus, className: externalClassName, highlighted, style, ...otherProps } = props;\n const { button, listbox, popover, input, text, more = 0 } = useSelect(otherProps, ref);\n const internalRef = React.useRef<HTMLButtonElement>(null);\n const selectDimensions = useBoundingClientRectListener(internalRef);\n const className = cn('inline-flex relative w-full', { 'yt-select--readonly': props.readOnly }, externalClassName);\n const inputClassname = cn(getInputClasses(props), 'h-8 text-left pr-0', {\n 'border-blue': popover.open,\n });\n\n React.useEffect(() => {\n if (autoFocus && internalRef.current) {\n internalRef.current.focus();\n }\n }, []);\n\n const renderMultiSelection = (): React.ReactNode => {\n return (\n <>\n <span className=\"flex-grow truncate text-left\">{text}</span>\n {more > 0 && <Badge className=\"ml-2\">{`+${more}`}</Badge>}\n </>\n );\n };\n\n const commonListboxProps: ListboxProps = {\n ...listbox,\n className: 'w-auto',\n invalid: undefined,\n style: { minWidth: selectDimensions?.width },\n tabIndex: popover.open ? 0 : -1,\n };\n\n return (\n <span className={className} data-taco=\"select\" style={style}>\n <PopoverPrimitive.Root {...popover}>\n <PopoverPrimitive.Trigger {...button} className={inputClassname} ref={internalRef}>\n {props.multiselect ? renderMultiSelection() : <span className=\"flex-grow truncate text-left\">{text}</span>}\n <span className=\"flex h-8 w-8 items-center justify-center\">\n <Icon className=\"pointer-events-none\" name={popover.open ? 'chevron-up' : 'chevron-down'} />\n </span>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content align=\"start\" sideOffset={4}>\n {props.multiselect ? <MultiListbox {...commonListboxProps} /> : <Listbox {...commonListboxProps} />}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n <input {...input} className=\"hidden\" type=\"text\" />\n </PopoverPrimitive.Root>\n </span>\n );\n});\n\nexport const Select = React.forwardRef(function Select(props: SelectProps, ref: React.Ref<HTMLInputElement>) {\n const { editable, ...otherProps } = props;\n\n if (editable) {\n return <Combobox {...otherProps} dialog={undefined} inline ref={ref} />;\n }\n\n return <BaseSelect {...otherProps} ref={ref} />;\n});\n"],"names":["BaseSelect","React","props","ref","autoFocus","className","externalClassName","highlighted","style","otherProps","button","listbox","popover","input","text","more","useSelect","internalRef","selectDimensions","useBoundingClientRectListener","cn","readOnly","inputClassname","getInputClasses","open","current","focus","renderMultiSelection","Badge","commonListboxProps","invalid","undefined","minWidth","width","tabIndex","PopoverPrimitive","multiselect","Icon","name","align","sideOffset","MultiListbox","Listbox","type","Select","editable","Combobox","dialog","inline"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sources":["../../../../../../../src/components/Select/Select.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { Icon } from '../Icon/Icon';\nimport { Listbox, MultiListbox, ListboxProps } from '../Listbox/Listbox';\nimport { useBoundingClientRectListener } from '../../hooks/useBoundingClientRectListener';\nimport { useSelect } from './useSelect';\nimport { Combobox, ComboboxProps } from '../Combobox/Combobox';\nimport { Badge } from '../Badge/Badge';\nimport { getInputClasses } from '../Input/util';\n\nexport type SelectTexts = {\n /**\n * The text displayed when all options are selected when multiselect mode in on.\n */\n allOptionsSelected: string;\n};\n\nexport type BaseSelectProps = Omit<ListboxProps, 'dialog'> &\n Omit<ComboboxProps, 'inline'> & {\n /**\n * Allows to select multiple values.\n * All the selected values will be combined in a comma-seperated string as the value of the input.\n */\n multiselect?: boolean;\n };\n\nexport type SelectProps = BaseSelectProps & {\n /**\n * Creates an editable select.\n * Setting this will render a inline Combobox which will display the provided data on click/focus,\n * even if there is no value in the input.\n * After user starts typing, matching data will be displayed.\n */\n editable?: boolean;\n};\n\nconst BaseSelect = React.forwardRef(function BaseSelect(props: BaseSelectProps, ref: React.Ref<HTMLInputElement>) {\n const { autoFocus, className: externalClassName, highlighted, style, ...otherProps } = props;\n const { button, listbox, popover, input, text, more = 0 } = useSelect(otherProps, ref);\n const internalRef = React.useRef<HTMLButtonElement>(null);\n const selectDimensions = useBoundingClientRectListener(internalRef);\n const className = cn('inline-flex relative w-full', { 'yt-select--readonly': props.readOnly }, externalClassName);\n const inputClassname = cn(getInputClasses(props), 'h-8 text-left !pr-0', {\n 'border-blue-500': popover.open,\n });\n\n React.useEffect(() => {\n if (autoFocus && internalRef.current) {\n internalRef.current.focus();\n }\n }, []);\n\n const renderMultiSelection = (): React.ReactNode => {\n return (\n <>\n <span className=\"flex-grow truncate text-left\">{text}</span>\n {more > 0 && <Badge className=\"ml-2\">{`+${more}`}</Badge>}\n </>\n );\n };\n\n const commonListboxProps: ListboxProps = {\n ...listbox,\n className: 'w-auto',\n invalid: undefined,\n style: { minWidth: selectDimensions?.width },\n tabIndex: popover.open ? 0 : -1,\n };\n\n return (\n <span className={className} data-taco=\"select\" style={style}>\n <PopoverPrimitive.Root {...popover}>\n <PopoverPrimitive.Trigger {...button} className={inputClassname} ref={internalRef}>\n {props.multiselect ? renderMultiSelection() : <span className=\"flex-grow truncate text-left\">{text}</span>}\n <span className=\"flex h-8 w-8 items-center justify-center\">\n <Icon className=\"pointer-events-none\" name={popover.open ? 'chevron-up' : 'chevron-down'} />\n </span>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content align=\"start\" sideOffset={4}>\n {props.multiselect ? <MultiListbox {...commonListboxProps} /> : <Listbox {...commonListboxProps} />}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n <input {...input} className=\"hidden\" type=\"text\" />\n </PopoverPrimitive.Root>\n </span>\n );\n});\n\nexport const Select = React.forwardRef(function Select(props: SelectProps, ref: React.Ref<HTMLInputElement>) {\n const { editable, ...otherProps } = props;\n\n if (editable) {\n return <Combobox {...otherProps} dialog={undefined} inline ref={ref} />;\n }\n\n return <BaseSelect {...otherProps} ref={ref} />;\n});\n"],"names":["BaseSelect","React","props","ref","autoFocus","className","externalClassName","highlighted","style","otherProps","button","listbox","popover","input","text","more","useSelect","internalRef","selectDimensions","useBoundingClientRectListener","cn","readOnly","inputClassname","getInputClasses","open","current","focus","renderMultiSelection","Badge","commonListboxProps","invalid","undefined","minWidth","width","tabIndex","PopoverPrimitive","multiselect","Icon","name","align","sideOffset","MultiListbox","Listbox","type","Select","editable","Combobox","dialog","inline"],"mappings":"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"}
@@ -2,9 +2,9 @@ import React__default from 'react';
2
2
  import cn from 'classnames';
3
3
  import { useLocalization } from '../Provider/Localization.js';
4
4
  import { Root, Trigger, Portal, Content } from '@radix-ui/react-popover';
5
+ import { useBoundingClientRectListener } from '../../hooks/useBoundingClientRectListener.js';
5
6
  import { useMergedRef } from '../../hooks/useMergedRef.js';
6
7
  import { createCustomKeyboardEvent } from '../../utils/input.js';
7
- import { useBoundingClientRectListener } from '../../hooks/useBoundingClientRectListener.js';
8
8
  import { useControllableState } from '@radix-ui/react-use-controllable-state';
9
9
  import { Root as Root$1, createListboxValueSetter } from '../../primitives/Listbox2/components/Root.js';
10
10
  import '../../primitives/Listbox2/components/Option.js';
@@ -72,6 +72,7 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
72
72
  } = useChildren({
73
73
  children: initialChildren,
74
74
  emptyValue,
75
+ multiple,
75
76
  open,
76
77
  setValue,
77
78
  value
@@ -103,15 +104,13 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
103
104
  var _listboxRef$current;
104
105
  if (open) {
105
106
  event.preventDefault();
106
- } else {
107
- if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
108
- setOpen(true);
109
- }
107
+ } else if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
108
+ setOpen(true);
110
109
  }
111
110
  // the focus should always remain on the input, so we forward events on to the listbox
112
111
  (_listboxRef$current = listboxRef.current) === null || _listboxRef$current === void 0 ? void 0 : _listboxRef$current.dispatchEvent(createCustomKeyboardEvent(event));
113
112
  };
114
- const className = cn('border-grey-dark rounded border bg-white py-1.5 shadow-md outline-none', createCollectionClassName());
113
+ const className = cn('border-grey-300 rounded border bg-white py-1.5 shadow-md outline-none', createCollectionClassName());
115
114
  return /*#__PURE__*/React__default.createElement(Select2Context.Provider, {
116
115
  value: context
117
116
  }, /*#__PURE__*/React__default.createElement(Root, {
@@ -130,10 +129,9 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
130
129
  "data-taco": "Select2"
131
130
  }, /*#__PURE__*/React__default.createElement(Trigger$1, Object.assign({}, otherProps, {
132
131
  "aria-haspopup": "listbox",
133
- children: allChildren,
134
132
  onKeyDown: handleKeyDown,
135
133
  ref: internalRef
136
- }))), /*#__PURE__*/React__default.createElement(Portal, null, /*#__PURE__*/React__default.createElement(Content, {
134
+ }), allChildren)), /*#__PURE__*/React__default.createElement(Portal, null, /*#__PURE__*/React__default.createElement(Content, {
137
135
  asChild: true,
138
136
  align: "start",
139
137
  onOpenAutoFocus: event => {
@@ -159,7 +157,7 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
159
157
  placeholder: onCreate ? texts.select2.searchOrCreate : texts.select2.search,
160
158
  ref: searchRef
161
159
  }) : null, allChildren.length <= 0 ? /*#__PURE__*/React__default.createElement("div", {
162
- className: "text-grey-darkest -mt-0.5 flex h-8 items-center px-2",
160
+ className: "text-grey-700 -mt-0.5 flex h-8 items-center px-2",
163
161
  role: "presentation"
164
162
  }, "No results found...") : /*#__PURE__*/React__default.createElement(Root$1, {
165
163
  className: "flex flex-col gap-0.5",
@@ -214,6 +212,7 @@ const ControlledHiddenField = props => {
214
212
  }
215
213
  return null;
216
214
  };
215
+ Select2.displayName = 'Select2';
217
216
 
218
217
  export { Select2 };
219
218
  //# sourceMappingURL=Select2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select2.js","sources":["../../../../../../../src/components/Select2/Select2.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport * as ListboxPrimitive from '../../primitives/Listbox2/Listbox2';\nimport { Select2OptionValue, Select2Value } from './types';\nimport { Option, Select2OptionProps } from './components/Option';\nimport { Group, Select2GroupProps } from './components/Group';\nimport { Select2TitleProps, Title } from './components/Title';\nimport { Select2Context } from './components/Context';\nimport { createCollectionClassName } from './utilities';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { useBoundingClientRectListener } from '../../hooks/useBoundingClientRectListener';\nimport { createCustomKeyboardEvent } from '../../utils/input';\nimport { Trigger } from './components/Trigger';\nimport { useIsFormControl } from '../../hooks/useIsFormControl';\nimport { BubbleSelect } from '../../primitives/BubbleSelect';\nimport { Search } from './components/Search';\nimport { useChildren } from './hooks/useChildren';\nimport { Color } from '../../utils/colors';\nimport { Create } from './components/Create';\nimport { Collection } from './components/Collection';\nimport { CollectionRef } from '../../primitives/Collection/Collection';\nimport { useLocalization } from '../Provider/Localization';\n//import { All } from './components/All';\n\ntype Select2Texts = {\n allSelect: string;\n allDeselect: string;\n cancel: string;\n chooseColor: string;\n create: string;\n delete: string;\n save: string;\n search: string;\n searchOrCreate: string;\n};\n\ntype Select2Props = Omit<React.HTMLAttributes<HTMLButtonElement>, 'children' | 'defaultValue' | 'onChange' | 'value'> & {\n children: React.ReactElement<Select2OptionProps>[];\n defaultValue?: Select2Value;\n emptyValue?: Select2OptionValue;\n disabled?: boolean;\n disableSearch?: boolean;\n highlighted?: boolean;\n invalid?: boolean;\n multiple?: boolean;\n name?: string;\n onChange?: (value: Select2Value) => void;\n onCreate?: (name: string, color: Color | undefined) => Promise<Select2OptionProps>;\n onDelete?: (value: Select2OptionValue) => Promise<void>;\n onEdit?: (value: Select2OptionValue, text: string, color: Color | undefined) => Promise<void>;\n readOnly?: boolean;\n tags?: boolean;\n value?: Select2Value;\n};\ntype Select2PropsWithStatics = React.ForwardRefExoticComponent<Select2Props & React.RefAttributes<HTMLButtonElement>> & {\n Option: React.ForwardRefExoticComponent<Select2OptionProps>;\n Group: React.ForwardRefExoticComponent<Select2GroupProps>;\n Title: React.ForwardRefExoticComponent<Select2TitleProps>;\n};\n\nconst Select2 = React.forwardRef<HTMLButtonElement, Select2Props>(function Select2(props, ref) {\n const {\n children: initialChildren,\n defaultValue: defaultProp,\n disabled = false,\n disableSearch = false,\n emptyValue = undefined,\n highlighted = false,\n invalid = false,\n multiple = false,\n name,\n onChange,\n onCreate,\n onDelete,\n onEdit,\n readOnly = false,\n tabIndex = 0,\n tags = false,\n value: prop,\n ...otherProps\n } = props;\n\n // refs\n const internalRef = useMergedRef<HTMLButtonElement>(ref);\n const listboxRef = React.useRef<CollectionRef>(null);\n const searchRef = React.useRef<HTMLInputElement>(null);\n const { texts } = useLocalization();\n // align the listbox min width with the width of the input - it should never be smaller\n const dimensions = useBoundingClientRectListener(internalRef);\n\n // state\n const [open, setOpen] = React.useState(false);\n const [value, _setValue] = useControllableState<Select2Value>({\n // uncontrolled\n defaultProp,\n // controlled\n onChange,\n prop,\n });\n const setValue = ListboxPrimitive.createListboxValueSetter(multiple, _setValue);\n const [validationError, setValidationError] = React.useState<Error | undefined>();\n\n const { allChildren, filteredChildren, searchQuery, setSearchQuery } = useChildren({\n children: initialChildren,\n emptyValue,\n open,\n setValue,\n value,\n });\n\n // context\n const context = {\n disabled,\n highlighted,\n invalid,\n listboxRef,\n multiple,\n onCreate,\n onDelete,\n onEdit,\n open,\n readOnly,\n ref: internalRef,\n searchQuery,\n searchRef,\n setOpen,\n setSearchQuery,\n setValidationError,\n setValue,\n tags,\n validationError,\n value,\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (open) {\n event.preventDefault();\n } else {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n setOpen(true);\n }\n }\n\n // the focus should always remain on the input, so we forward events on to the listbox\n listboxRef.current?.dispatchEvent(createCustomKeyboardEvent(event as React.KeyboardEvent<HTMLInputElement>));\n };\n\n const className = cn('border-grey-dark rounded border bg-white py-1.5 shadow-md outline-none', createCollectionClassName());\n\n return (\n <Select2Context.Provider value={context}>\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <ControlledHiddenField\n emptyValue={emptyValue}\n multiple={multiple || tags}\n name={name}\n options={allChildren.map(child => child.props.value)}\n parentRef={internalRef}\n setValue={setValue}\n value={value}\n />\n <PopoverPrimitive.Trigger asChild data-taco=\"Select2\">\n <Trigger\n {...otherProps}\n aria-haspopup=\"listbox\"\n children={allChildren}\n onKeyDown={handleKeyDown}\n ref={internalRef}\n />\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n asChild\n align=\"start\"\n onOpenAutoFocus={event => {\n event.preventDefault();\n event.stopPropagation();\n internalRef.current?.focus();\n }}\n onCloseAutoFocus={event => {\n event.preventDefault();\n event.stopPropagation();\n internalRef.current?.focus();\n }}\n sideOffset={4}\n tabIndex={-1}>\n <div className={className} style={{ minWidth: dimensions?.width ? `${dimensions.width}px` : undefined }}>\n {!disableSearch && (allChildren.length > 0 || onCreate) ? (\n <Search\n placeholder={onCreate ? texts.select2.searchOrCreate : texts.select2.search}\n ref={searchRef}\n />\n ) : null}\n {allChildren.length <= 0 ? (\n <div className=\"text-grey-darkest -mt-0.5 flex h-8 items-center px-2\" role=\"presentation\">\n No results found...\n </div>\n ) : (\n <ListboxPrimitive.Root\n className=\"flex flex-col gap-0.5\"\n customSelector=\":scope > button\"\n disabled={disabled}\n multiple={multiple}\n readOnly={readOnly}\n ref={listboxRef}\n setValue={setValue}\n tabIndex={-1}\n value={value}>\n {/*multiple && !searchQuery && Array.isArray(value) ? (\n <All\n children={allChildren}\n onToggle={_setValue}\n selected={value.length === allChildren.length}\n />\n ) : null*/}\n <Collection>{filteredChildren}</Collection>\n {onCreate ? <Create onCreate={onCreate} options={allChildren} /> : null}\n </ListboxPrimitive.Root>\n )}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n </Select2Context.Provider>\n );\n}) as Select2PropsWithStatics;\nSelect2.Option = Option;\nSelect2.Group = Group;\nSelect2.Title = Title;\n\nconst ControlledHiddenField = props => {\n const { emptyValue, multiple, name, options, parentRef, value, setValue } = props;\n const isFormControl = useIsFormControl(parentRef, () => setValue(multiple ? [] : undefined));\n\n let bubbleValue;\n\n if (isFormControl) {\n if (value !== undefined) {\n if (multiple) {\n bubbleValue = Array.isArray(value) ? value.map(String) : [value === null ? '' : String(value)];\n } else {\n bubbleValue = value === null ? '' : String(value);\n }\n }\n\n return (\n <BubbleSelect aria-hidden key={String(bubbleValue)} multiple={multiple} name={name} value={bubbleValue}>\n {emptyValue !== undefined ? <option value={emptyValue} /> : null}\n {options.map(option => (\n <option key={String(option)} value={String(option)} />\n ))}\n </BubbleSelect>\n );\n }\n\n return null;\n};\n\nexport { Select2 };\n\nexport type {\n Select2Texts,\n Select2GroupProps,\n Select2OptionProps,\n Select2OptionValue,\n Select2Value,\n Select2Props,\n Select2TitleProps,\n};\n"],"names":["Select2","React","forwardRef","props","ref","children","initialChildren","defaultValue","defaultProp","disabled","disableSearch","emptyValue","undefined","highlighted","invalid","multiple","name","onChange","onCreate","onDelete","onEdit","readOnly","tabIndex","tags","value","prop","otherProps","internalRef","useMergedRef","listboxRef","useRef","searchRef","texts","useLocalization","dimensions","useBoundingClientRectListener","open","setOpen","useState","_setValue","useControllableState","setValue","ListboxPrimitive","validationError","setValidationError","allChildren","filteredChildren","searchQuery","setSearchQuery","useChildren","context","handleKeyDown","event","preventDefault","key","current","dispatchEvent","createCustomKeyboardEvent","className","cn","createCollectionClassName","Select2Context","Provider","PopoverPrimitive","onOpenChange","ControlledHiddenField","options","map","child","parentRef","asChild","Trigger","onKeyDown","align","onOpenAutoFocus","stopPropagation","focus","onCloseAutoFocus","sideOffset","style","minWidth","width","length","Search","placeholder","select2","searchOrCreate","search","role","customSelector","Collection","Create","Option","Group","Title","isFormControl","useIsFormControl","bubbleValue","Array","isArray","String","BubbleSelect","option"],"mappings":"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"}
1
+ {"version":3,"file":"Select2.js","sources":["../../../../../../../src/components/Select2/Select2.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport * as ListboxPrimitive from '../../primitives/Listbox2/Listbox2';\nimport { Select2OptionValue, Select2Value } from './types';\nimport { Option, Select2OptionProps } from './components/Option';\nimport { Group, Select2GroupProps } from './components/Group';\nimport { Select2TitleProps, Title } from './components/Title';\nimport { Select2Context } from './components/Context';\nimport { createCollectionClassName } from './utilities';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { useBoundingClientRectListener } from '../../hooks/useBoundingClientRectListener';\nimport { createCustomKeyboardEvent } from '../../utils/input';\nimport { Trigger } from './components/Trigger';\nimport { useIsFormControl } from '../../hooks/useIsFormControl';\nimport { BubbleSelect } from '../../primitives/BubbleSelect';\nimport { Search } from './components/Search';\nimport { useChildren } from './hooks/useChildren';\nimport { Color } from '../../utils/colors';\nimport { Create } from './components/Create';\nimport { Collection } from './components/Collection';\nimport { CollectionRef } from '../../primitives/Collection/Collection';\nimport { useLocalization } from '../Provider/Localization';\n//import { All } from './components/All';\n\ntype Select2Texts = {\n allSelect: string;\n allDeselect: string;\n cancel: string;\n chooseColor: string;\n create: string;\n delete: string;\n save: string;\n search: string;\n searchOrCreate: string;\n};\n\ntype Select2Props = Omit<React.HTMLAttributes<HTMLButtonElement>, 'children' | 'defaultValue' | 'onChange' | 'value'> & {\n autoFocus?: boolean;\n children: React.ReactElement<Select2OptionProps>[];\n defaultValue?: Select2Value;\n emptyValue?: Select2OptionValue;\n disabled?: boolean;\n disableSearch?: boolean;\n highlighted?: boolean;\n invalid?: boolean;\n multiple?: boolean;\n name?: string;\n onChange?: (value: Select2Value) => void;\n onCreate?: (name: string, color: Color | undefined) => Promise<Select2OptionProps>;\n onDelete?: (value: Select2OptionValue) => Promise<void>;\n onEdit?: (value: Select2OptionValue, text: string, color: Color | undefined) => Promise<void>;\n readOnly?: boolean;\n required?: boolean;\n tags?: boolean;\n value?: Select2Value;\n};\ntype Select2PropsWithStatics = React.ForwardRefExoticComponent<Select2Props & React.RefAttributes<HTMLButtonElement>> & {\n Option: React.ForwardRefExoticComponent<Select2OptionProps>;\n Group: React.ForwardRefExoticComponent<Select2GroupProps>;\n Title: React.ForwardRefExoticComponent<Select2TitleProps>;\n};\n\nconst Select2 = React.forwardRef<HTMLButtonElement, Select2Props>(function Select2(props, ref) {\n const {\n children: initialChildren,\n defaultValue: defaultProp,\n disabled = false,\n disableSearch = false,\n emptyValue = undefined,\n highlighted = false,\n invalid = false,\n multiple = false,\n name,\n onChange,\n onCreate,\n onDelete,\n onEdit,\n readOnly = false,\n tabIndex = 0,\n tags = false,\n value: prop,\n ...otherProps\n } = props;\n\n // refs\n const internalRef = useMergedRef<HTMLButtonElement>(ref);\n const listboxRef = React.useRef<CollectionRef>(null);\n const searchRef = React.useRef<HTMLInputElement>(null);\n const { texts } = useLocalization();\n // align the listbox min width with the width of the input - it should never be smaller\n const dimensions = useBoundingClientRectListener(internalRef);\n\n // state\n const [open, setOpen] = React.useState(false);\n const [value, _setValue] = useControllableState<Select2Value>({\n // uncontrolled\n defaultProp,\n // controlled\n onChange,\n prop,\n });\n const setValue = ListboxPrimitive.createListboxValueSetter(multiple, _setValue);\n const [validationError, setValidationError] = React.useState<Error | undefined>();\n\n const { allChildren, filteredChildren, searchQuery, setSearchQuery } = useChildren({\n children: initialChildren,\n emptyValue,\n multiple,\n open,\n setValue,\n value,\n });\n\n // context\n const context = {\n disabled,\n highlighted,\n invalid,\n listboxRef,\n multiple,\n onCreate,\n onDelete,\n onEdit,\n open,\n readOnly,\n ref: internalRef,\n searchQuery,\n searchRef,\n setOpen,\n setSearchQuery,\n setValidationError,\n setValue,\n tags,\n validationError,\n value,\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (open) {\n event.preventDefault();\n } else if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n setOpen(true);\n }\n\n // the focus should always remain on the input, so we forward events on to the listbox\n listboxRef.current?.dispatchEvent(createCustomKeyboardEvent(event as React.KeyboardEvent<HTMLInputElement>));\n };\n\n const className = cn('border-grey-300 rounded border bg-white py-1.5 shadow-md outline-none', createCollectionClassName());\n\n return (\n <Select2Context.Provider value={context}>\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <ControlledHiddenField\n emptyValue={emptyValue}\n multiple={multiple || tags}\n name={name}\n options={allChildren.map(child => child.props.value)}\n parentRef={internalRef}\n setValue={setValue}\n value={value}\n />\n <PopoverPrimitive.Trigger asChild data-taco=\"Select2\">\n <Trigger {...otherProps} aria-haspopup=\"listbox\" onKeyDown={handleKeyDown} ref={internalRef}>\n {allChildren}\n </Trigger>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n asChild\n align=\"start\"\n onOpenAutoFocus={event => {\n event.preventDefault();\n event.stopPropagation();\n internalRef.current?.focus();\n }}\n onCloseAutoFocus={event => {\n event.preventDefault();\n event.stopPropagation();\n internalRef.current?.focus();\n }}\n sideOffset={4}\n tabIndex={-1}>\n <div className={className} style={{ minWidth: dimensions?.width ? `${dimensions.width}px` : undefined }}>\n {!disableSearch && (allChildren.length > 0 || onCreate) ? (\n <Search\n placeholder={onCreate ? texts.select2.searchOrCreate : texts.select2.search}\n ref={searchRef}\n />\n ) : null}\n {allChildren.length <= 0 ? (\n <div className=\"text-grey-700 -mt-0.5 flex h-8 items-center px-2\" role=\"presentation\">\n No results found...\n </div>\n ) : (\n <ListboxPrimitive.Root\n className=\"flex flex-col gap-0.5\"\n customSelector=\":scope > button\"\n disabled={disabled}\n multiple={multiple}\n readOnly={readOnly}\n ref={listboxRef}\n setValue={setValue}\n tabIndex={-1}\n value={value}>\n {/*multiple && !searchQuery && Array.isArray(value) ? (\n <All\n children={allChildren}\n onToggle={_setValue}\n selected={value.length === allChildren.length}\n />\n ) : null*/}\n <Collection>{filteredChildren}</Collection>\n {onCreate ? <Create onCreate={onCreate} options={allChildren} /> : null}\n </ListboxPrimitive.Root>\n )}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n </Select2Context.Provider>\n );\n}) as Select2PropsWithStatics;\nSelect2.Option = Option;\nSelect2.Group = Group;\nSelect2.Title = Title;\n\nconst ControlledHiddenField = props => {\n const { emptyValue, multiple, name, options, parentRef, value, setValue } = props;\n const isFormControl = useIsFormControl(parentRef, () => setValue(multiple ? [] : undefined));\n\n let bubbleValue;\n\n if (isFormControl) {\n if (value !== undefined) {\n if (multiple) {\n bubbleValue = Array.isArray(value) ? value.map(String) : [value === null ? '' : String(value)];\n } else {\n bubbleValue = value === null ? '' : String(value);\n }\n }\n\n return (\n <BubbleSelect aria-hidden key={String(bubbleValue)} multiple={multiple} name={name} value={bubbleValue}>\n {emptyValue !== undefined ? <option value={emptyValue} /> : null}\n {options.map(option => (\n <option key={String(option)} value={String(option)} />\n ))}\n </BubbleSelect>\n );\n }\n\n return null;\n};\nSelect2.displayName = 'Select2';\n\nexport { Select2 };\n\nexport type {\n Select2Texts,\n Select2GroupProps,\n Select2OptionProps,\n Select2OptionValue,\n Select2Value,\n Select2Props,\n Select2TitleProps,\n};\n"],"names":["Select2","React","forwardRef","props","ref","children","initialChildren","defaultValue","defaultProp","disabled","disableSearch","emptyValue","undefined","highlighted","invalid","multiple","name","onChange","onCreate","onDelete","onEdit","readOnly","tabIndex","tags","value","prop","otherProps","internalRef","useMergedRef","listboxRef","useRef","searchRef","texts","useLocalization","dimensions","useBoundingClientRectListener","open","setOpen","useState","_setValue","useControllableState","setValue","ListboxPrimitive","validationError","setValidationError","allChildren","filteredChildren","searchQuery","setSearchQuery","useChildren","context","handleKeyDown","event","preventDefault","key","current","dispatchEvent","createCustomKeyboardEvent","className","cn","createCollectionClassName","Select2Context","Provider","PopoverPrimitive","onOpenChange","ControlledHiddenField","options","map","child","parentRef","asChild","Trigger","onKeyDown","align","onOpenAutoFocus","stopPropagation","focus","onCloseAutoFocus","sideOffset","style","minWidth","width","length","Search","placeholder","select2","searchOrCreate","search","role","customSelector","Collection","Create","Option","Group","Title","isFormControl","useIsFormControl","bubbleValue","Array","isArray","String","BubbleSelect","option","displayName"],"mappings":"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"}
@@ -6,7 +6,7 @@ const Collection = props => {
6
6
  children
7
7
  } = props;
8
8
  return /*#__PURE__*/React__default.createElement(ScrollArea, {
9
- className: "flex max-h-[10.25rem] w-full flex-col gap-y-0.5 px-1.5"
9
+ className: "flex max-h-[10.3rem] w-full flex-col gap-y-0.5 px-1.5"
10
10
  }, children);
11
11
  };
12
12
 
@@ -1 +1 @@
1
- {"version":3,"file":"Collection.js","sources":["../../../../../../../../src/components/Select2/components/Collection.tsx"],"sourcesContent":["import React from 'react';\nimport { ScrollArea } from '../../ScrollArea/ScrollArea';\nimport { Select2OptionProps } from './Option';\n\nexport type Select2CollectionProps = {\n children: React.ReactElement<Select2OptionProps>[];\n};\n\nexport const Collection = (props: Select2CollectionProps) => {\n const { children } = props;\n\n return <ScrollArea className=\"flex max-h-[10.25rem] w-full flex-col gap-y-0.5 px-1.5\">{children}</ScrollArea>;\n};\n"],"names":["Collection","props","children","React","ScrollArea","className"],"mappings":";;;MAQaA,UAAU,GAAIC,KAA6B;EACpD,MAAM;IAAEC;GAAU,GAAGD,KAAK;EAE1B,oBAAOE,6BAACC,UAAU;IAACC,SAAS,EAAC;KAA0DH,QAAQ,CAAc;AACjH;;;;"}
1
+ {"version":3,"file":"Collection.js","sources":["../../../../../../../../src/components/Select2/components/Collection.tsx"],"sourcesContent":["import React from 'react';\nimport { ScrollArea } from '../../ScrollArea/ScrollArea';\nimport { Select2OptionProps } from './Option';\n\nexport type Select2CollectionProps = {\n children: React.ReactElement<Select2OptionProps>[];\n};\n\nexport const Collection = (props: Select2CollectionProps) => {\n const { children } = props;\n\n return <ScrollArea className=\"flex max-h-[10.3rem] w-full flex-col gap-y-0.5 px-1.5\">{children}</ScrollArea>;\n};\n"],"names":["Collection","props","children","React","ScrollArea","className"],"mappings":";;;MAQaA,UAAU,GAAIC,KAA6B;EACpD,MAAM;IAAEC;GAAU,GAAGD,KAAK;EAE1B,oBAAOE,6BAACC,UAAU;IAACC,SAAS,EAAC;KAAyDH,QAAQ,CAAc;AAChH;;;;"}
@@ -146,7 +146,7 @@ const EditPopover = props => {
146
146
  appearance: "primary",
147
147
  onClick: handleSave(close)
148
148
  }, texts.select2.save))) : null, onEdit && onDelete ? /*#__PURE__*/React__default.createElement("hr", null) : null, onDelete ? /*#__PURE__*/React__default.createElement("button", {
149
- className: "hover:text-grey-darkest flex items-center justify-start gap-1",
149
+ className: "hover:text-grey-700 flex items-center justify-start gap-1",
150
150
  onClick: handleDelete(close),
151
151
  onKeyDown: preventKeyDownPropagation
152
152
  }, /*#__PURE__*/React__default.createElement(Icon, {
@@ -1 +1 @@
1
- {"version":3,"file":"Edit.js","sources":["../../../../../../../../src/components/Select2/components/Edit.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport * as RadioGroup from '@radix-ui/react-radio-group';\nimport { Color, colors } from '../../../utils/colors';\nimport { Button } from '../../Button/Button';\nimport { Input } from '../../Input/Input';\nimport { Popover, PopoverProps } from '../../Popover/Popover';\nimport { Icon } from '../../Icon/Icon';\nimport { Select2OptionValue } from '../types';\nimport { useSelect2Context } from './Context';\nimport { Field } from '../../Field/Field';\nimport { Group } from '../../Group/Group';\nimport { useLocalization } from '../../Provider/Localization';\n\nconst AVAILABLE_COLORS = Object.keys(colors);\n\nexport type EditPopoverProps = PopoverProps & {\n color?: Color;\n text: string;\n value: Select2OptionValue;\n};\n\nexport const EditPopover = (props: EditPopoverProps) => {\n const { color: initialColor, text: initialName, value, ...popoverProps } = props;\n const ref = React.useRef<HTMLInputElement>(null);\n const { onDelete, onEdit, searchRef, ref: selectRef } = useSelect2Context();\n const { texts } = useLocalization();\n const [name, setName] = React.useState(initialName);\n const [color, setColor] = React.useState(initialColor);\n const [validationError, setValidationError] = React.useState<Error | undefined>();\n\n const handleInputChange = event => {\n setName(event.target.value);\n setValidationError(undefined);\n };\n\n const handleInputKeyDown = close => async event => {\n event.stopPropagation();\n\n if (event.key === 'Escape') {\n close();\n } else if (event.key === 'Enter') {\n handleSave(close)(event);\n }\n };\n\n const handleDelete = close => async event => {\n event.stopPropagation();\n close();\n\n if (onDelete) {\n await onDelete(value);\n }\n };\n\n const handleSave = close => async event => {\n if (onEdit && (name !== initialName || color !== initialColor)) {\n try {\n await onEdit(value, name, color);\n close();\n } catch (error) {\n event.preventDefault();\n event.stopPropagation();\n setValidationError(error);\n ref.current?.focus();\n }\n } else {\n close();\n }\n };\n\n const handleCloseAutoFocus = event => {\n event.preventDefault();\n setName(initialName);\n setColor(initialColor);\n setValidationError(undefined);\n\n if (searchRef?.current) {\n searchRef.current?.focus();\n } else {\n selectRef.current?.focus();\n }\n };\n\n const handleInteractOutside = () => {\n setName(initialName);\n setColor(initialColor);\n };\n\n const preventKeyDownPropagation = event => {\n if (event.key !== 'Escape') {\n event.stopPropagation();\n }\n };\n\n return (\n <Popover {...popoverProps} modal>\n <Popover.Content\n onCloseAutoFocus={handleCloseAutoFocus}\n onInteractOutside={handleInteractOutside}\n onClick={event => event.stopPropagation()}\n placement=\"right\"\n tabIndex={-1}\n className=\"focus:!shadow-none\">\n {({ close }) => (\n <>\n <div className=\"flex w-32 flex-col space-y-2\">\n {onEdit ? (\n <>\n <Field\n className={cn('!min-h-fit', { '!pb-0': !validationError })}\n invalid={!!validationError}\n message={validationError?.message}>\n <Input\n invalid={!!validationError}\n onChange={handleInputChange}\n onKeyDown={handleInputKeyDown(close)}\n ref={ref}\n value={name}\n />\n </Field>\n {initialColor ? (\n <>\n <h5>Colours</h5>\n <Colours\n color={color}\n onChangeColor={setColor}\n onKeyDown={preventKeyDownPropagation}\n />\n </>\n ) : null}\n <Group>\n <Button onClick={close}>{texts.select2.cancel}</Button>\n <Button appearance=\"primary\" onClick={handleSave(close)}>\n {texts.select2.save}\n </Button>\n </Group>\n </>\n ) : null}\n {onEdit && onDelete ? <hr /> : null}\n {onDelete ? (\n <button\n className=\"hover:text-grey-darkest flex items-center justify-start gap-1\"\n onClick={handleDelete(close)}\n onKeyDown={preventKeyDownPropagation}>\n <Icon className=\"!h-5 !w-5\" name=\"delete-permanently\" /> {texts.select2.delete}\n </button>\n ) : null}\n </div>\n </>\n )}\n </Popover.Content>\n </Popover>\n );\n};\n\nconst Colours = props => {\n const { color, onChangeColor, onClick, onKeyDown } = props;\n const { texts } = useLocalization();\n\n return (\n <RadioGroup.Root\n aria-label={texts.select2.chooseColor}\n className=\"grid grid-cols-4 gap-2 focus:outline-none\"\n onClick={onClick}\n onKeyDown={onKeyDown}\n onValueChange={color => onChangeColor(color)}\n value={color}>\n {AVAILABLE_COLORS.map((availableColor: string) => (\n <RadioGroup.Item\n aria-label={color}\n className={cn('flex h-6 w-6 cursor-pointer items-center justify-center rounded', colors[availableColor])}\n key={availableColor}\n onFocus={() => onChangeColor(availableColor)}\n value={availableColor}>\n <RadioGroup.Indicator asChild>\n <Icon name=\"tick\" className=\"!h-5 !w-5\" />\n </RadioGroup.Indicator>\n </RadioGroup.Item>\n ))}\n </RadioGroup.Root>\n );\n};\n"],"names":["AVAILABLE_COLORS","Object","keys","colors","EditPopover","props","color","initialColor","text","initialName","value","popoverProps","ref","React","useRef","onDelete","onEdit","searchRef","selectRef","useSelect2Context","texts","useLocalization","name","setName","useState","setColor","validationError","setValidationError","handleInputChange","event","target","undefined","handleInputKeyDown","close","stopPropagation","key","handleSave","handleDelete","error","preventDefault","current","focus","handleCloseAutoFocus","handleInteractOutside","preventKeyDownPropagation","Popover","modal","Content","onCloseAutoFocus","onInteractOutside","onClick","placement","tabIndex","className","Field","cn","invalid","message","Input","onChange","onKeyDown","Colours","onChangeColor","Group","Button","select2","cancel","appearance","save","Icon","delete","RadioGroup","chooseColor","onValueChange","map","availableColor","onFocus","asChild"],"mappings":"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"}
1
+ {"version":3,"file":"Edit.js","sources":["../../../../../../../../src/components/Select2/components/Edit.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport * as RadioGroup from '@radix-ui/react-radio-group';\nimport { Color, colors } from '../../../utils/colors';\nimport { Button } from '../../Button/Button';\nimport { Input } from '../../Input/Input';\nimport { Popover, PopoverProps } from '../../Popover/Popover';\nimport { Icon } from '../../Icon/Icon';\nimport { Select2OptionValue } from '../types';\nimport { useSelect2Context } from './Context';\nimport { Field } from '../../Field/Field';\nimport { Group } from '../../Group/Group';\nimport { useLocalization } from '../../Provider/Localization';\n\nconst AVAILABLE_COLORS = Object.keys(colors);\n\nexport type EditPopoverProps = PopoverProps & {\n color?: Color;\n text: string;\n value: Select2OptionValue;\n};\n\nexport const EditPopover = (props: EditPopoverProps) => {\n const { color: initialColor, text: initialName, value, ...popoverProps } = props;\n const ref = React.useRef<HTMLInputElement>(null);\n const { onDelete, onEdit, searchRef, ref: selectRef } = useSelect2Context();\n const { texts } = useLocalization();\n const [name, setName] = React.useState(initialName);\n const [color, setColor] = React.useState(initialColor);\n const [validationError, setValidationError] = React.useState<Error | undefined>();\n\n const handleInputChange = event => {\n setName(event.target.value);\n setValidationError(undefined);\n };\n\n const handleInputKeyDown = close => async event => {\n event.stopPropagation();\n\n if (event.key === 'Escape') {\n close();\n } else if (event.key === 'Enter') {\n handleSave(close)(event);\n }\n };\n\n const handleDelete = close => async event => {\n event.stopPropagation();\n close();\n\n if (onDelete) {\n await onDelete(value);\n }\n };\n\n const handleSave = close => async event => {\n if (onEdit && (name !== initialName || color !== initialColor)) {\n try {\n await onEdit(value, name, color);\n close();\n } catch (error) {\n event.preventDefault();\n event.stopPropagation();\n setValidationError(error as Error);\n ref.current?.focus();\n }\n } else {\n close();\n }\n };\n\n const handleCloseAutoFocus = event => {\n event.preventDefault();\n setName(initialName);\n setColor(initialColor);\n setValidationError(undefined);\n\n if (searchRef?.current) {\n searchRef.current?.focus();\n } else {\n selectRef.current?.focus();\n }\n };\n\n const handleInteractOutside = () => {\n setName(initialName);\n setColor(initialColor);\n };\n\n const preventKeyDownPropagation = event => {\n if (event.key !== 'Escape') {\n event.stopPropagation();\n }\n };\n\n return (\n <Popover {...popoverProps} modal>\n <Popover.Content\n onCloseAutoFocus={handleCloseAutoFocus}\n onInteractOutside={handleInteractOutside}\n onClick={event => event.stopPropagation()}\n placement=\"right\"\n tabIndex={-1}\n className=\"focus:!shadow-none\">\n {({ close }) => (\n <>\n <div className=\"flex w-32 flex-col space-y-2\">\n {onEdit ? (\n <>\n <Field\n className={cn('!min-h-fit', { '!pb-0': !validationError })}\n invalid={!!validationError}\n message={validationError?.message}>\n <Input\n invalid={!!validationError}\n onChange={handleInputChange}\n onKeyDown={handleInputKeyDown(close)}\n ref={ref}\n value={name}\n />\n </Field>\n {initialColor ? (\n <>\n <h5>Colours</h5>\n <Colours\n color={color}\n onChangeColor={setColor}\n onKeyDown={preventKeyDownPropagation}\n />\n </>\n ) : null}\n <Group>\n <Button onClick={close}>{texts.select2.cancel}</Button>\n <Button appearance=\"primary\" onClick={handleSave(close)}>\n {texts.select2.save}\n </Button>\n </Group>\n </>\n ) : null}\n {onEdit && onDelete ? <hr /> : null}\n {onDelete ? (\n <button\n className=\"hover:text-grey-700 flex items-center justify-start gap-1\"\n onClick={handleDelete(close)}\n onKeyDown={preventKeyDownPropagation}>\n <Icon className=\"!h-5 !w-5\" name=\"delete-permanently\" /> {texts.select2.delete}\n </button>\n ) : null}\n </div>\n </>\n )}\n </Popover.Content>\n </Popover>\n );\n};\n\nconst Colours = props => {\n const { color, onChangeColor, onClick, onKeyDown } = props;\n const { texts } = useLocalization();\n\n return (\n <RadioGroup.Root\n aria-label={texts.select2.chooseColor}\n className=\"grid grid-cols-4 gap-2 focus:outline-none\"\n onClick={onClick}\n onKeyDown={onKeyDown}\n onValueChange={color => onChangeColor(color)}\n value={color}>\n {AVAILABLE_COLORS.map((availableColor: string) => (\n <RadioGroup.Item\n aria-label={color}\n className={cn('flex h-6 w-6 cursor-pointer items-center justify-center rounded', colors[availableColor])}\n key={availableColor}\n onFocus={() => onChangeColor(availableColor)}\n value={availableColor}>\n <RadioGroup.Indicator asChild>\n <Icon name=\"tick\" className=\"!h-5 !w-5\" />\n </RadioGroup.Indicator>\n </RadioGroup.Item>\n ))}\n </RadioGroup.Root>\n );\n};\n"],"names":["AVAILABLE_COLORS","Object","keys","colors","EditPopover","props","color","initialColor","text","initialName","value","popoverProps","ref","React","useRef","onDelete","onEdit","searchRef","selectRef","useSelect2Context","texts","useLocalization","name","setName","useState","setColor","validationError","setValidationError","handleInputChange","event","target","undefined","handleInputKeyDown","close","stopPropagation","key","handleSave","handleDelete","error","preventDefault","current","focus","handleCloseAutoFocus","handleInteractOutside","preventKeyDownPropagation","Popover","modal","Content","onCloseAutoFocus","onInteractOutside","onClick","placement","tabIndex","className","Field","cn","invalid","message","Input","onChange","onKeyDown","Colours","onChangeColor","Group","Button","select2","cancel","appearance","save","Icon","delete","RadioGroup","chooseColor","onValueChange","map","availableColor","onFocus","asChild"],"mappings":"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"}
@@ -4,6 +4,7 @@ import { Icon } from '../../Icon/Icon.js';
4
4
  import { Badge } from '../../Badge/Badge.js';
5
5
  import { Tooltip } from '../../Tooltip/Tooltip.js';
6
6
  import { getInputClasses } from '../../Input/util.js';
7
+ import { useMergedRef } from '../../../hooks/useMergedRef.js';
7
8
  import { Tag } from '../../Tag/Tag.js';
8
9
  import { useSelect2Context } from './Context.js';
9
10
  import { getIndexOfFirstChildOverflowingParent } from '../../../utils/dom.js';
@@ -47,7 +48,7 @@ const Button = /*#__PURE__*/React__default.forwardRef(function Select2TriggerBut
47
48
  highlighted,
48
49
  invalid,
49
50
  readOnly
50
- }).replace('w-full ', ''), {
51
+ }).replace('w-full', ''), {
51
52
  'w-full': !((_props$className = props.className) !== null && _props$className !== void 0 && _props$className.includes('w-'))
52
53
  }, props.className);
53
54
  const handleClick = event => {
@@ -110,6 +111,7 @@ const Single = /*#__PURE__*/React__default.forwardRef(function Select2TriggerSin
110
111
  }, output));
111
112
  });
112
113
  const Multiple = /*#__PURE__*/React__default.forwardRef(function Select2TriggerMultiple(props, ref) {
114
+ var _buttonRef$current;
113
115
  const {
114
116
  children,
115
117
  values = [],
@@ -122,9 +124,12 @@ const Multiple = /*#__PURE__*/React__default.forwardRef(function Select2TriggerM
122
124
  setValue,
123
125
  tags
124
126
  } = useSelect2Context();
127
+ const buttonRef = useMergedRef(ref);
125
128
  const valuesAsChildren = values.map(value => children.find(c => c.props.value === value));
126
129
  let content;
127
- let className = buttonProps.className;
130
+ let {
131
+ className
132
+ } = buttonProps;
128
133
  if (open) {
129
134
  className = cn('absolute z-20', buttonProps.className);
130
135
  content = /*#__PURE__*/React__default.createElement(ScrollArea, {
@@ -153,12 +158,15 @@ const Multiple = /*#__PURE__*/React__default.forwardRef(function Select2TriggerM
153
158
  });
154
159
  }
155
160
  return /*#__PURE__*/React__default.createElement("span", {
156
- className: cn({
157
- 'relative h-8': open
158
- })
161
+ className: cn('relative inline-flex flex-grow', {
162
+ 'h-8': open
163
+ }),
164
+ style: {
165
+ width: open ? (_buttonRef$current = buttonRef.current) === null || _buttonRef$current === void 0 ? void 0 : _buttonRef$current.offsetWidth : undefined
166
+ }
159
167
  }, /*#__PURE__*/React__default.createElement(Button, Object.assign({}, buttonProps, {
160
168
  className: className,
161
- ref: ref
169
+ ref: buttonRef
162
170
  }), content));
163
171
  });
164
172
  const MultipleValue = ({