@economic/taco 2.27.0 → 2.27.1

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.
@@ -30,6 +30,8 @@ declare type Select2Props = Omit<React.HTMLAttributes<HTMLButtonElement>, 'child
30
30
  emptyValue?: Select2OptionValue;
31
31
  /** Whether the Select2 is in a disabled state **/
32
32
  disabled?: boolean;
33
+ /** Font size of text in Select2 **/
34
+ fontSize?: FontSize;
33
35
  /** Draws attention to the Select2 by changing its style and making it visually prominent */
34
36
  highlighted?: boolean;
35
37
  /** Whether the Select2 is in an invalid state **/
@@ -48,6 +50,8 @@ declare type Select2Props = Omit<React.HTMLAttributes<HTMLButtonElement>, 'child
48
50
  onDelete?: Select2DeleteHandler;
49
51
  /** Handler called when user edits an option **/
50
52
  onEdit?: Select2EditHandler;
53
+ /** Placeholder showed when nothing is selected **/
54
+ placeholder?: string;
51
55
  /** Whether the Select2 is in a readonly state **/
52
56
  readOnly?: boolean;
53
57
  required?: boolean;
@@ -55,10 +59,6 @@ declare type Select2Props = Omit<React.HTMLAttributes<HTMLButtonElement>, 'child
55
59
  tags?: boolean;
56
60
  /** Value of the input in select2 */
57
61
  value?: Select2Value;
58
- /** Font size of text in Select2 **/
59
- fontSize?: FontSize;
60
- /** Placeholder showed when nothing is selected **/
61
- placeholder?: string;
62
62
  };
63
63
  declare type Select2PropsWithStatics = React.ForwardRefExoticComponent<Select2Props & React.RefAttributes<HTMLButtonElement>> & {
64
64
  Option: React.ForwardRefExoticComponent<Select2OptionProps>;
@@ -4,5 +4,4 @@ export declare const Trigger: React.ForwardRefExoticComponent<Pick<React.HTMLAtt
4
4
  emptyValue?: string | number | boolean | null | undefined;
5
5
  placeholder?: string | undefined;
6
6
  children: React.ReactElement<Select2OptionProps>[];
7
- fontSize?: "small" | "medium" | "large" | undefined;
8
7
  } & React.RefAttributes<HTMLButtonElement>>;
@@ -1,4 +1,3 @@
1
- import { FontSize } from '../../types';
2
1
  export declare const createOptionClassName: (shouldPauseHoverState?: boolean) => string;
3
2
  export declare const createCollectionClassName: () => string;
4
- export declare const getFontSize: (fontSize: FontSize) => "text-xs" | "text-sm" | "text-base";
3
+ export declare const getFontSize: (fontSize?: "small" | "medium" | "large" | undefined) => "text-xs" | "text-base" | "text-sm";
@@ -35,20 +35,20 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
35
35
  defaultValue: defaultProp,
36
36
  disabled = false,
37
37
  emptyValue = undefined,
38
- placeholder,
38
+ fontSize,
39
39
  highlighted = false,
40
40
  invalid = false,
41
+ loading,
41
42
  multiple = false,
42
43
  name,
43
44
  onChange,
44
45
  onCreate,
45
46
  onDelete,
46
47
  onEdit,
48
+ placeholder,
47
49
  readOnly = false,
48
50
  tags = false,
49
51
  value: prop,
50
- fontSize,
51
- loading,
52
52
  ...otherProps
53
53
  } = props;
54
54
  const emptyOption = React__default.useMemo(() => {
@@ -233,9 +233,8 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
233
233
  emptyValue: emptyValue,
234
234
  onBlur: handleBlur,
235
235
  onKeyDown: handleKeyDown,
236
- ref: internalRef,
237
- fontSize: fontSize,
238
- placeholder: placeholder
236
+ placeholder: placeholder,
237
+ ref: internalRef
239
238
  }), flattenedChildren)), /*#__PURE__*/React__default.createElement(Portal, null, /*#__PURE__*/React__default.createElement(Content, {
240
239
  asChild: true,
241
240
  align: "start",
@@ -1 +1 @@
1
- {"version":3,"file":"Select2.js","sources":["../../../../../../../src/components/Select2/Select2.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\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 {\n Select2Children,\n Select2CreateHandler,\n Select2DeleteHandler,\n Select2EditHandler,\n Select2OptionValue,\n Select2Value,\n} 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, getFontSize } 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 { isGroup, useChildren } from './hooks/useChildren';\n\nimport { Create } from './components/Create';\nimport { Collection } from './components/Collection';\nimport { CollectionRef } from '../../primitives/Collection/Collection';\nimport { useLocalization } from '../Provider/Localization';\nimport { useIsHoverStatePaused } from '../../hooks/useIsHoverStatePaused';\nimport { isAriaDirectionKey } from '../../utils/aria';\nimport { getNextFocussableElement } from '../../utils/dom';\nimport { FontSize, FontSizes } from '../../types';\nimport { Button } from '../Button/Button';\nimport { Spinner } from '../Spinner/Spinner';\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 selectAll: string;\n selectAllResults: string;\n deselectAll: string;\n deselectAllResults: string;\n};\n\ntype Select2Props = Omit<React.HTMLAttributes<HTMLButtonElement>, 'children' | 'defaultValue' | 'onChange' | 'value'> & {\n /** Autofocus Select2 when loaded **/\n autoFocus?: boolean;\n /** Array of options in Select2 */\n children: Select2Children;\n /** Initial value of the input in Select2 */\n defaultValue?: Select2Value;\n /** Set what value should have an empty option in Select2 */\n emptyValue?: Select2OptionValue;\n /** Whether the Select2 is in a disabled state **/\n disabled?: boolean;\n /** Draws attention to the Select2 by changing its style and making it visually prominent */\n highlighted?: boolean;\n /** Whether the Select2 is in an invalid state **/\n invalid?: boolean;\n /** Whether the Select2 is loading the data **/\n loading?: boolean;\n /** Whether the Select2 allows selecting multiple values **/\n multiple?: boolean;\n /** Whether the Select2 is in an invalid state **/\n name?: string;\n /** Handler called when user chooses an option from the provided options **/\n onChange?: (value: Select2Value) => void;\n /** Handler called when user creates a new option **/\n onCreate?: Select2CreateHandler;\n /** Handler called when user deletes an option **/\n onDelete?: Select2DeleteHandler;\n /** Handler called when user edits an option **/\n onEdit?: Select2EditHandler;\n /** Whether the Select2 is in a readonly state **/\n readOnly?: boolean;\n required?: boolean;\n /** Renders select options as tags **/\n tags?: boolean;\n /** Value of the input in select2 */\n value?: Select2Value;\n /** Font size of text in Select2 **/\n fontSize?: FontSize;\n /** Placeholder showed when nothing is selected **/\n placeholder?: string;\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: initChildren,\n defaultValue: defaultProp,\n disabled = false,\n emptyValue = undefined,\n placeholder,\n highlighted = false,\n invalid = false,\n multiple = false,\n name,\n onChange,\n onCreate,\n onDelete,\n onEdit,\n readOnly = false,\n tags = false,\n value: prop,\n fontSize,\n loading,\n ...otherProps\n } = props;\n\n const emptyOption: React.ReactElement<Select2OptionProps> | undefined = React.useMemo(() => {\n if (emptyValue !== undefined && !multiple) {\n // Empty option has 0px height, because it's empty, so need to apply height manually\n return <Option key=\"__empty\" children=\"\" value={emptyValue} className=\"h-8\" />;\n }\n return;\n }, [emptyValue, multiple]);\n\n const initialChildren = React.useMemo(() => {\n if (emptyOption) {\n return [emptyOption, ...initChildren] as Select2Children;\n }\n return initChildren;\n }, [emptyOption, initChildren]);\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 [tabTriggeredClose, setTabTriggeredClose] = React.useState(false);\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 const [shouldPauseHoverState, setShouldPauseHoverState] = useIsHoverStatePaused();\n\n const { flattenedChildren, 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 shouldPauseHoverState,\n setShouldPauseHoverState,\n tags,\n fontSize,\n validationError,\n value,\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (open) {\n event.preventDefault();\n } else if (!event.ctrlKey && !event.metaKey && (event.key === 'ArrowDown' || /^[a-z0-9]$/i.test(event.key))) {\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 let handleBlur;\n\n if (otherProps.onBlur) {\n // we might be focusing on an input or something inside the dropdown that was triggered by the select\n // so see if the element gaining focus is inside a portal and look up its controller\n // if we don't do this, things like validate on blur occur while simply opening the select\n handleBlur = (event: React.FocusEvent<HTMLButtonElement>) => {\n const elementGainingFocus = event.relatedTarget;\n\n if (elementGainingFocus === undefined) {\n return;\n }\n\n const portalId = elementGainingFocus?.closest('[data-radix-popper-content-wrapper] > :first-child')?.id;\n\n if (!portalId || event.currentTarget.getAttribute(`aria-controls`) !== portalId) {\n otherProps.onBlur?.(event);\n }\n };\n }\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (isAriaDirectionKey(event)) {\n setShouldPauseHoverState(true);\n }\n };\n\n const handleCloseAutoFocus = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (tabTriggeredClose) {\n const nextFocussableElement = getNextFocussableElement(internalRef.current);\n\n if (nextFocussableElement) {\n // UX requirement: move focus to the next focussable element when tab key is pressed to select the value\n nextFocussableElement.focus();\n // Reset the tabTriggeredClose state\n setTabTriggeredClose(false);\n }\n } else {\n internalRef.current?.focus();\n }\n };\n\n const selectOptions =\n searchQuery === ''\n ? flattenedChildren.map(child => child.props.value)\n : filteredChildren\n .map(child =>\n isGroup(child)\n ? Array.isArray(child.props.children) && child.props.children.map(subChild => subChild.props.value)\n : child.props.value\n )\n .flatMap(c => c) || [];\n\n const areAllSelected = Array.isArray(value) && selectOptions.every(option => value.includes(option as string));\n\n const selectAllText = React.useMemo(() => {\n if (searchQuery === '') {\n if (areAllSelected) {\n return texts.select2.deselectAll;\n } else {\n return texts.select2.selectAll;\n }\n } else if (areAllSelected) {\n return texts.select2.deselectAllResults;\n } else {\n return texts.select2.selectAllResults;\n }\n }, [areAllSelected, searchQuery]);\n\n const selectAll = () => {\n if (!Array.isArray(value) || value.length === 0) {\n setValue(selectOptions);\n } else {\n // array of all available options which are not selected\n const preselectedValues = selectOptions.filter(option => !value.includes(option));\n setValue([...value, ...preselectedValues]);\n }\n };\n\n const deselectAll = () => {\n if (searchQuery === '') {\n setValue([]);\n } else {\n const nextValue = Array.isArray(value) && value.filter(subValue => !selectOptions.includes(subValue as string));\n setValue(nextValue);\n }\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={flattenedChildren.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 emptyValue={emptyValue}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n ref={internalRef}\n fontSize={fontSize}\n placeholder={placeholder}>\n {flattenedChildren}\n </Trigger>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n asChild\n align=\"start\"\n onOpenAutoFocus={() => {\n internalRef.current?.focus();\n }}\n onCloseAutoFocus={handleCloseAutoFocus}\n sideOffset={4}\n tabIndex={-1}>\n <div className={className} style={{ minWidth: dimensions?.width ? `${dimensions.width}px` : undefined }}>\n {flattenedChildren.length > 0 || onCreate ? (\n <>\n <Search\n placeholder={onCreate ? texts.select2.searchOrCreate : texts.select2.search}\n ref={searchRef}\n onTabKeyPress={() => setTabTriggeredClose(true)}\n />\n {multiple && selectOptions.length > 1 && (\n <>\n <Button\n className=\"!justify-start\"\n appearance=\"discrete\"\n onClick={areAllSelected ? deselectAll : selectAll}>\n {selectAllText}\n </Button>\n <div className=\"border-grey-300 mx-3 rounded border-t\" />\n </>\n )}\n </>\n ) : null}\n {loading ? (\n <span className={cn('text-grey-700 flex items-center italic', fontSize && getFontSize(fontSize))}>\n <span>\n <Spinner\n delay={0}\n className={cn('ml-3 mr-2 mt-1.5 h-5 w-5', {\n '!mt-1 !h-3.5 !w-3.5': fontSize === FontSizes.small,\n '!h-4 !w-4': fontSize === FontSizes.medium,\n '!h-5 !w-5': fontSize === FontSizes.large,\n })}\n />\n </span>\n <span>{texts.listbox.loading}</span>\n </span>\n ) : flattenedChildren.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 onKeyDown={handleListboxKeyDown}\n readOnly={readOnly}\n ref={listboxRef}\n setValue={setValue}\n tabIndex={-1}\n value={value}>\n {searchQuery === '' ? (\n <Collection>{initialChildren}</Collection>\n ) : (\n <Collection>{filteredChildren}</Collection>\n )}\n {onCreate ? <Create onCreate={onCreate} options={flattenedChildren} /> : 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","initChildren","defaultValue","defaultProp","disabled","emptyValue","undefined","placeholder","highlighted","invalid","multiple","name","onChange","onCreate","onDelete","onEdit","readOnly","tags","value","prop","fontSize","loading","otherProps","emptyOption","useMemo","Option","key","className","initialChildren","internalRef","useMergedRef","listboxRef","useRef","searchRef","texts","useLocalization","dimensions","useBoundingClientRectListener","tabTriggeredClose","setTabTriggeredClose","useState","open","setOpen","_setValue","useControllableState","setValue","ListboxPrimitive","validationError","setValidationError","shouldPauseHoverState","setShouldPauseHoverState","useIsHoverStatePaused","flattenedChildren","filteredChildren","searchQuery","setSearchQuery","useChildren","context","handleKeyDown","event","preventDefault","ctrlKey","metaKey","test","_listboxRef$current","current","dispatchEvent","createCustomKeyboardEvent","handleBlur","onBlur","elementGainingFocus","relatedTarget","portalId","_elementGainingFocus$","closest","id","currentTarget","getAttribute","_otherProps$onBlur","call","handleListboxKeyDown","isAriaDirectionKey","handleCloseAutoFocus","stopPropagation","nextFocussableElement","getNextFocussableElement","focus","_internalRef$current","selectOptions","map","child","isGroup","Array","isArray","subChild","flatMap","c","areAllSelected","every","option","includes","selectAllText","select2","deselectAll","selectAll","deselectAllResults","selectAllResults","length","preselectedValues","filter","nextValue","subValue","cn","createCollectionClassName","Select2Context","Provider","PopoverPrimitive","onOpenChange","ControlledHiddenField","options","parentRef","asChild","Trigger","onKeyDown","align","onOpenAutoFocus","_internalRef$current2","onCloseAutoFocus","sideOffset","tabIndex","style","minWidth","width","Search","searchOrCreate","search","onTabKeyPress","Button","appearance","onClick","getFontSize","Spinner","delay","FontSizes","small","medium","large","listbox","role","customSelector","Collection","Create","Group","Title","isFormControl","useIsFormControl","bubbleValue","String","BubbleSelect","displayName"],"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 'clsx';\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 {\n Select2Children,\n Select2CreateHandler,\n Select2DeleteHandler,\n Select2EditHandler,\n Select2OptionValue,\n Select2Value,\n} 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, getFontSize } 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 { isGroup, useChildren } from './hooks/useChildren';\n\nimport { Create } from './components/Create';\nimport { Collection } from './components/Collection';\nimport { CollectionRef } from '../../primitives/Collection/Collection';\nimport { useLocalization } from '../Provider/Localization';\nimport { useIsHoverStatePaused } from '../../hooks/useIsHoverStatePaused';\nimport { isAriaDirectionKey } from '../../utils/aria';\nimport { getNextFocussableElement } from '../../utils/dom';\nimport { FontSize, FontSizes } from '../../types';\nimport { Button } from '../Button/Button';\nimport { Spinner } from '../Spinner/Spinner';\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 selectAll: string;\n selectAllResults: string;\n deselectAll: string;\n deselectAllResults: string;\n};\n\ntype Select2Props = Omit<React.HTMLAttributes<HTMLButtonElement>, 'children' | 'defaultValue' | 'onChange' | 'value'> & {\n /** Autofocus Select2 when loaded **/\n autoFocus?: boolean;\n /** Array of options in Select2 */\n children: Select2Children;\n /** Initial value of the input in Select2 */\n defaultValue?: Select2Value;\n /** Set what value should have an empty option in Select2 */\n emptyValue?: Select2OptionValue;\n /** Whether the Select2 is in a disabled state **/\n disabled?: boolean;\n /** Font size of text in Select2 **/\n fontSize?: FontSize;\n /** Draws attention to the Select2 by changing its style and making it visually prominent */\n highlighted?: boolean;\n /** Whether the Select2 is in an invalid state **/\n invalid?: boolean;\n /** Whether the Select2 is loading the data **/\n loading?: boolean;\n /** Whether the Select2 allows selecting multiple values **/\n multiple?: boolean;\n /** Whether the Select2 is in an invalid state **/\n name?: string;\n /** Handler called when user chooses an option from the provided options **/\n onChange?: (value: Select2Value) => void;\n /** Handler called when user creates a new option **/\n onCreate?: Select2CreateHandler;\n /** Handler called when user deletes an option **/\n onDelete?: Select2DeleteHandler;\n /** Handler called when user edits an option **/\n onEdit?: Select2EditHandler;\n /** Placeholder showed when nothing is selected **/\n placeholder?: string;\n /** Whether the Select2 is in a readonly state **/\n readOnly?: boolean;\n required?: boolean;\n /** Renders select options as tags **/\n tags?: boolean;\n /** Value of the input in select2 */\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: initChildren,\n defaultValue: defaultProp,\n disabled = false,\n emptyValue = undefined,\n fontSize,\n highlighted = false,\n invalid = false,\n loading,\n multiple = false,\n name,\n onChange,\n onCreate,\n onDelete,\n onEdit,\n placeholder,\n readOnly = false,\n tags = false,\n value: prop,\n ...otherProps\n } = props;\n\n const emptyOption: React.ReactElement<Select2OptionProps> | undefined = React.useMemo(() => {\n if (emptyValue !== undefined && !multiple) {\n // Empty option has 0px height, because it's empty, so need to apply height manually\n return <Option key=\"__empty\" children=\"\" value={emptyValue} className=\"h-8\" />;\n }\n return;\n }, [emptyValue, multiple]);\n\n const initialChildren = React.useMemo(() => {\n if (emptyOption) {\n return [emptyOption, ...initChildren] as Select2Children;\n }\n return initChildren;\n }, [emptyOption, initChildren]);\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 [tabTriggeredClose, setTabTriggeredClose] = React.useState(false);\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 const [shouldPauseHoverState, setShouldPauseHoverState] = useIsHoverStatePaused();\n\n const { flattenedChildren, 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 shouldPauseHoverState,\n setShouldPauseHoverState,\n tags,\n fontSize,\n validationError,\n value,\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (open) {\n event.preventDefault();\n } else if (!event.ctrlKey && !event.metaKey && (event.key === 'ArrowDown' || /^[a-z0-9]$/i.test(event.key))) {\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 let handleBlur;\n\n if (otherProps.onBlur) {\n // we might be focusing on an input or something inside the dropdown that was triggered by the select\n // so see if the element gaining focus is inside a portal and look up its controller\n // if we don't do this, things like validate on blur occur while simply opening the select\n handleBlur = (event: React.FocusEvent<HTMLButtonElement>) => {\n const elementGainingFocus = event.relatedTarget;\n\n if (elementGainingFocus === undefined) {\n return;\n }\n\n const portalId = elementGainingFocus?.closest('[data-radix-popper-content-wrapper] > :first-child')?.id;\n\n if (!portalId || event.currentTarget.getAttribute(`aria-controls`) !== portalId) {\n otherProps.onBlur?.(event);\n }\n };\n }\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (isAriaDirectionKey(event)) {\n setShouldPauseHoverState(true);\n }\n };\n\n const handleCloseAutoFocus = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (tabTriggeredClose) {\n const nextFocussableElement = getNextFocussableElement(internalRef.current);\n\n if (nextFocussableElement) {\n // UX requirement: move focus to the next focussable element when tab key is pressed to select the value\n nextFocussableElement.focus();\n // Reset the tabTriggeredClose state\n setTabTriggeredClose(false);\n }\n } else {\n internalRef.current?.focus();\n }\n };\n\n const selectOptions =\n searchQuery === ''\n ? flattenedChildren.map(child => child.props.value)\n : filteredChildren\n .map(child =>\n isGroup(child)\n ? Array.isArray(child.props.children) && child.props.children.map(subChild => subChild.props.value)\n : child.props.value\n )\n .flatMap(c => c) || [];\n\n const areAllSelected = Array.isArray(value) && selectOptions.every(option => value.includes(option as string));\n\n const selectAllText = React.useMemo(() => {\n if (searchQuery === '') {\n if (areAllSelected) {\n return texts.select2.deselectAll;\n } else {\n return texts.select2.selectAll;\n }\n } else if (areAllSelected) {\n return texts.select2.deselectAllResults;\n } else {\n return texts.select2.selectAllResults;\n }\n }, [areAllSelected, searchQuery]);\n\n const selectAll = () => {\n if (!Array.isArray(value) || value.length === 0) {\n setValue(selectOptions);\n } else {\n // array of all available options which are not selected\n const preselectedValues = selectOptions.filter(option => !value.includes(option));\n setValue([...value, ...preselectedValues]);\n }\n };\n\n const deselectAll = () => {\n if (searchQuery === '') {\n setValue([]);\n } else {\n const nextValue = Array.isArray(value) && value.filter(subValue => !selectOptions.includes(subValue as string));\n setValue(nextValue);\n }\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={flattenedChildren.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 emptyValue={emptyValue}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n ref={internalRef}>\n {flattenedChildren}\n </Trigger>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n asChild\n align=\"start\"\n onOpenAutoFocus={() => {\n internalRef.current?.focus();\n }}\n onCloseAutoFocus={handleCloseAutoFocus}\n sideOffset={4}\n tabIndex={-1}>\n <div className={className} style={{ minWidth: dimensions?.width ? `${dimensions.width}px` : undefined }}>\n {flattenedChildren.length > 0 || onCreate ? (\n <>\n <Search\n placeholder={onCreate ? texts.select2.searchOrCreate : texts.select2.search}\n ref={searchRef}\n onTabKeyPress={() => setTabTriggeredClose(true)}\n />\n {multiple && selectOptions.length > 1 && (\n <>\n <Button\n className=\"!justify-start\"\n appearance=\"discrete\"\n onClick={areAllSelected ? deselectAll : selectAll}>\n {selectAllText}\n </Button>\n <div className=\"border-grey-300 mx-3 rounded border-t\" />\n </>\n )}\n </>\n ) : null}\n {loading ? (\n <span className={cn('text-grey-700 flex items-center italic', fontSize && getFontSize(fontSize))}>\n <span>\n <Spinner\n delay={0}\n className={cn('ml-3 mr-2 mt-1.5 h-5 w-5', {\n '!mt-1 !h-3.5 !w-3.5': fontSize === FontSizes.small,\n '!h-4 !w-4': fontSize === FontSizes.medium,\n '!h-5 !w-5': fontSize === FontSizes.large,\n })}\n />\n </span>\n <span>{texts.listbox.loading}</span>\n </span>\n ) : flattenedChildren.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 onKeyDown={handleListboxKeyDown}\n readOnly={readOnly}\n ref={listboxRef}\n setValue={setValue}\n tabIndex={-1}\n value={value}>\n {searchQuery === '' ? (\n <Collection>{initialChildren}</Collection>\n ) : (\n <Collection>{filteredChildren}</Collection>\n )}\n {onCreate ? <Create onCreate={onCreate} options={flattenedChildren} /> : 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","initChildren","defaultValue","defaultProp","disabled","emptyValue","undefined","fontSize","highlighted","invalid","loading","multiple","name","onChange","onCreate","onDelete","onEdit","placeholder","readOnly","tags","value","prop","otherProps","emptyOption","useMemo","Option","key","className","initialChildren","internalRef","useMergedRef","listboxRef","useRef","searchRef","texts","useLocalization","dimensions","useBoundingClientRectListener","tabTriggeredClose","setTabTriggeredClose","useState","open","setOpen","_setValue","useControllableState","setValue","ListboxPrimitive","validationError","setValidationError","shouldPauseHoverState","setShouldPauseHoverState","useIsHoverStatePaused","flattenedChildren","filteredChildren","searchQuery","setSearchQuery","useChildren","context","handleKeyDown","event","preventDefault","ctrlKey","metaKey","test","_listboxRef$current","current","dispatchEvent","createCustomKeyboardEvent","handleBlur","onBlur","elementGainingFocus","relatedTarget","portalId","_elementGainingFocus$","closest","id","currentTarget","getAttribute","_otherProps$onBlur","call","handleListboxKeyDown","isAriaDirectionKey","handleCloseAutoFocus","stopPropagation","nextFocussableElement","getNextFocussableElement","focus","_internalRef$current","selectOptions","map","child","isGroup","Array","isArray","subChild","flatMap","c","areAllSelected","every","option","includes","selectAllText","select2","deselectAll","selectAll","deselectAllResults","selectAllResults","length","preselectedValues","filter","nextValue","subValue","cn","createCollectionClassName","Select2Context","Provider","PopoverPrimitive","onOpenChange","ControlledHiddenField","options","parentRef","asChild","Trigger","onKeyDown","align","onOpenAutoFocus","_internalRef$current2","onCloseAutoFocus","sideOffset","tabIndex","style","minWidth","width","Search","searchOrCreate","search","onTabKeyPress","Button","appearance","onClick","getFontSize","Spinner","delay","FontSizes","small","medium","large","listbox","role","customSelector","Collection","Create","Group","Title","isFormControl","useIsFormControl","bubbleValue","String","BubbleSelect","displayName"],"mappings":"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"}
@@ -2,7 +2,6 @@ import React__default from 'react';
2
2
  import cn from 'clsx';
3
3
  import { Icon } from '../../Icon/Icon.js';
4
4
  import { IconButton } from '../../IconButton/IconButton.js';
5
- import { FontSizes } from '../../../types.js';
6
5
  import { isAriaSelectionKey } from '../../../utils/aria.js';
7
6
  import '../../../primitives/Listbox2/components/Root.js';
8
7
  import { Option as Option$1 } from '../../../primitives/Listbox2/components/Option.js';
@@ -26,18 +25,18 @@ const Option = /*#__PURE__*/React__default.forwardRef(function Select2Option(pro
26
25
  ...otherProps
27
26
  } = props;
28
27
  const {
29
- onDelete,
30
- onEdit,
28
+ fontSize,
31
29
  listboxRef,
32
30
  multiple,
31
+ onDelete,
32
+ onEdit,
33
33
  ref: selectRef,
34
34
  setOpen,
35
35
  shouldPauseHoverState,
36
36
  tags,
37
- value,
38
- fontSize = FontSizes.medium
37
+ value
39
38
  } = useSelect2Context();
40
- const className = cn(createOptionClassName(shouldPauseHoverState), fontSize && getFontSize(fontSize), cName);
39
+ const className = cn(createOptionClassName(shouldPauseHoverState), getFontSize(fontSize), cName);
41
40
  const hasValue = Array.isArray(value) ? !!value.length : value !== undefined;
42
41
  const isTag = tags && !!color;
43
42
  const handleClick = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"Option.js","sources":["../../../../../../../../src/components/Select2/components/Option.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { Icon, IconName } from '../../Icon/Icon';\nimport { Tag } from '../../Tag/Tag';\nimport { isAriaSelectionKey } from '../../../utils/aria';\nimport * as ListboxPrimitive from '../../../primitives/Listbox2/Listbox2';\nimport { createOptionClassName, getFontSize } from '../utilities';\nimport { useSelect2Context } from './Context';\nimport { IconButton } from '../../IconButton/IconButton';\nimport { EditPopover } from './Edit';\nimport { isMobileDevice } from '../../../utils/device';\nimport { Color } from '../../../types';\nimport { FontSize, FontSizes } from '../../../types';\n\nexport type Select2OptionProps = Omit<ListboxPrimitive.Listbox2OptionProps, 'children' | 'prefix'> & {\n children: string;\n color?: Color;\n description?: string;\n fontSize?: FontSize;\n prefix?: IconName | JSX.Element;\n postfix?: IconName | JSX.Element;\n textValue?: string;\n};\n\nexport const Option = React.forwardRef<HTMLDivElement, Select2OptionProps>(function Select2Option(props, ref) {\n const { children, color, description, prefix, postfix, className: cName, ...otherProps } = props;\n const {\n onDelete,\n onEdit,\n listboxRef,\n multiple,\n ref: selectRef,\n setOpen,\n shouldPauseHoverState,\n tags,\n value,\n fontSize = FontSizes.medium,\n } = useSelect2Context();\n const className = cn(createOptionClassName(shouldPauseHoverState), fontSize && getFontSize(fontSize), cName);\n\n const hasValue = Array.isArray(value) ? !!value.length : value !== undefined;\n const isTag = tags && !!color;\n\n const handleClick = () => {\n if (!multiple) {\n setOpen(false);\n } else {\n selectRef.current?.focus();\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (isAriaSelectionKey(event)) {\n if (!multiple || event.key === 'Tab') {\n setOpen(false);\n }\n }\n };\n\n const isEmptyOption = children !== '';\n\n const popover =\n isEmptyOption && (onEdit || onDelete)\n ? popoverProps => (\n <EditPopover\n {...popoverProps}\n color={props.color}\n key={props.textValue ?? String(props.children)}\n text={props.textValue ?? String(props.children)}\n value={props.value}\n />\n )\n : undefined;\n\n return (\n <ListboxPrimitive.Option {...otherProps} className={className} onClick={handleClick} onKeyDown={handleKeyDown} ref={ref}>\n {hasValue ? (\n <Icon name=\"tick\" className=\"pointer-events-none invisible -mx-0.5 !h-4 !w-4 group-aria-selected:visible\" />\n ) : null}\n\n {isTag ? (\n <Tag className=\"pointer-events-none my-1\" color={color} icon={prefix}>\n {children}\n </Tag>\n ) : (\n <>\n {prefix ? typeof prefix === 'string' ? <Icon name={prefix} /> : prefix : null}\n <span className=\"flex w-full justify-between\">\n <span className=\"flex flex-col\">\n <span>{children}</span>\n {description ? <span className=\"text-grey-700 -mt-1.5 mb-1.5 text-xs\">{description}</span> : null}\n </span>\n <span className=\"flex flex-col self-center\">\n {postfix ? typeof postfix === 'string' ? <Icon name={postfix} /> : postfix : null}\n </span>\n </span>\n </>\n )}\n {popover ? (\n <IconButton\n icon=\"ellipsis-vertical\"\n appearance=\"discrete\"\n className={cn(\n 'group-aria-current:visible invisible -mr-1 ml-auto !h-5 min-h-[theme(spacing.6)] !w-5 min-w-[theme(spacing.6)] hover:!bg-black/[.08] focus:!shadow-none group-hover:visible',\n {\n '!visible': isMobileDevice(window?.navigator),\n }\n )}\n onClick={event => {\n event.stopPropagation();\n listboxRef?.current?.setActiveIndex(event.currentTarget.parentElement as HTMLDivElement);\n }}\n popover={popover}\n tabIndex={-1}\n />\n ) : null}\n </ListboxPrimitive.Option>\n );\n});\n"],"names":["Option","React","forwardRef","Select2Option","props","ref","children","color","description","prefix","postfix","className","cName","otherProps","onDelete","onEdit","listboxRef","multiple","selectRef","setOpen","shouldPauseHoverState","tags","value","fontSize","FontSizes","medium","useSelect2Context","cn","createOptionClassName","getFontSize","hasValue","Array","isArray","length","undefined","isTag","handleClick","_selectRef$current","current","focus","handleKeyDown","event","isAriaSelectionKey","key","isEmptyOption","popover","popoverProps","_props$textValue","_props$textValue2","EditPopover","textValue","String","text","ListboxPrimitive","onClick","onKeyDown","Icon","name","Tag","icon","IconButton","appearance","isMobileDevice","_window","window","navigator","stopPropagation","_listboxRef$current","setActiveIndex","currentTarget","parentElement","tabIndex"],"mappings":"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"}
1
+ {"version":3,"file":"Option.js","sources":["../../../../../../../../src/components/Select2/components/Option.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { Icon, IconName } from '../../Icon/Icon';\nimport { Tag } from '../../Tag/Tag';\nimport { isAriaSelectionKey } from '../../../utils/aria';\nimport * as ListboxPrimitive from '../../../primitives/Listbox2/Listbox2';\nimport { createOptionClassName, getFontSize } from '../utilities';\nimport { useSelect2Context } from './Context';\nimport { IconButton } from '../../IconButton/IconButton';\nimport { EditPopover } from './Edit';\nimport { isMobileDevice } from '../../../utils/device';\nimport { Color } from '../../../types';\nimport { FontSize } from '../../../types';\n\nexport type Select2OptionProps = Omit<ListboxPrimitive.Listbox2OptionProps, 'children' | 'prefix'> & {\n children: string;\n color?: Color;\n description?: string;\n fontSize?: FontSize;\n prefix?: IconName | JSX.Element;\n postfix?: IconName | JSX.Element;\n textValue?: string;\n};\n\nexport const Option = React.forwardRef<HTMLDivElement, Select2OptionProps>(function Select2Option(props, ref) {\n const { children, color, description, prefix, postfix, className: cName, ...otherProps } = props;\n const {\n fontSize,\n listboxRef,\n multiple,\n onDelete,\n onEdit,\n ref: selectRef,\n setOpen,\n shouldPauseHoverState,\n tags,\n value,\n } = useSelect2Context();\n const className = cn(createOptionClassName(shouldPauseHoverState), getFontSize(fontSize), cName);\n\n const hasValue = Array.isArray(value) ? !!value.length : value !== undefined;\n const isTag = tags && !!color;\n\n const handleClick = () => {\n if (!multiple) {\n setOpen(false);\n } else {\n selectRef.current?.focus();\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (isAriaSelectionKey(event)) {\n if (!multiple || event.key === 'Tab') {\n setOpen(false);\n }\n }\n };\n\n const isEmptyOption = children !== '';\n\n const popover =\n isEmptyOption && (onEdit || onDelete)\n ? popoverProps => (\n <EditPopover\n {...popoverProps}\n color={props.color}\n key={props.textValue ?? String(props.children)}\n text={props.textValue ?? String(props.children)}\n value={props.value}\n />\n )\n : undefined;\n\n return (\n <ListboxPrimitive.Option {...otherProps} className={className} onClick={handleClick} onKeyDown={handleKeyDown} ref={ref}>\n {hasValue ? (\n <Icon name=\"tick\" className=\"pointer-events-none invisible -mx-0.5 !h-4 !w-4 group-aria-selected:visible\" />\n ) : null}\n\n {isTag ? (\n <Tag className=\"pointer-events-none my-1\" color={color} icon={prefix}>\n {children}\n </Tag>\n ) : (\n <>\n {prefix ? typeof prefix === 'string' ? <Icon name={prefix} /> : prefix : null}\n <span className=\"flex w-full justify-between\">\n <span className=\"flex flex-col\">\n <span>{children}</span>\n {description ? <span className=\"text-grey-700 -mt-1.5 mb-1.5 text-xs\">{description}</span> : null}\n </span>\n <span className=\"flex flex-col self-center\">\n {postfix ? typeof postfix === 'string' ? <Icon name={postfix} /> : postfix : null}\n </span>\n </span>\n </>\n )}\n {popover ? (\n <IconButton\n icon=\"ellipsis-vertical\"\n appearance=\"discrete\"\n className={cn(\n 'group-aria-current:visible invisible -mr-1 ml-auto !h-5 min-h-[theme(spacing.6)] !w-5 min-w-[theme(spacing.6)] hover:!bg-black/[.08] focus:!shadow-none group-hover:visible',\n {\n '!visible': isMobileDevice(window?.navigator),\n }\n )}\n onClick={event => {\n event.stopPropagation();\n listboxRef?.current?.setActiveIndex(event.currentTarget.parentElement as HTMLDivElement);\n }}\n popover={popover}\n tabIndex={-1}\n />\n ) : null}\n </ListboxPrimitive.Option>\n );\n});\n"],"names":["Option","React","forwardRef","Select2Option","props","ref","children","color","description","prefix","postfix","className","cName","otherProps","fontSize","listboxRef","multiple","onDelete","onEdit","selectRef","setOpen","shouldPauseHoverState","tags","value","useSelect2Context","cn","createOptionClassName","getFontSize","hasValue","Array","isArray","length","undefined","isTag","handleClick","_selectRef$current","current","focus","handleKeyDown","event","isAriaSelectionKey","key","isEmptyOption","popover","popoverProps","_props$textValue","_props$textValue2","EditPopover","textValue","String","text","ListboxPrimitive","onClick","onKeyDown","Icon","name","Tag","icon","IconButton","appearance","isMobileDevice","_window","window","navigator","stopPropagation","_listboxRef$current","setActiveIndex","currentTarget","parentElement","tabIndex"],"mappings":"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"}
@@ -11,6 +11,15 @@ import { Tag } from '../../Tag/Tag.js';
11
11
  import { getFontSize } from '../utilities.js';
12
12
  import { useSelect2Context } from './Context.js';
13
13
 
14
+ const Placeholder = ({
15
+ disabled,
16
+ ...props
17
+ }) => ( /*#__PURE__*/React__default.createElement("div", Object.assign({}, props, {
18
+ className: cn({
19
+ 'text-grey-700': disabled,
20
+ 'text-grey-500': !disabled
21
+ })
22
+ })));
14
23
  const Trigger = /*#__PURE__*/React__default.forwardRef(function Select2Trigger(props, ref) {
15
24
  const {
16
25
  multiple,
@@ -34,11 +43,11 @@ const Button = /*#__PURE__*/React__default.forwardRef(function Select2TriggerBut
34
43
  children,
35
44
  onClick,
36
45
  tabIndex = 0,
37
- fontSize,
38
46
  ...otherProps
39
47
  } = props;
40
48
  const {
41
49
  disabled,
50
+ fontSize,
42
51
  highlighted,
43
52
  invalid,
44
53
  open,
@@ -50,7 +59,7 @@ const Button = /*#__PURE__*/React__default.forwardRef(function Select2TriggerBut
50
59
  highlighted,
51
60
  invalid,
52
61
  readOnly
53
- }).replace('w-full', '').replace('px-2', ''), fontSize && getFontSize(fontSize), {
62
+ }).replace('w-full', '').replace('px-2', ''), getFontSize(fontSize), {
54
63
  'w-full': !((_props$className = props.className) !== null && _props$className !== void 0 && _props$className.includes('w-'))
55
64
  }, props.className);
56
65
  const handleClick = event => {
@@ -94,11 +103,8 @@ const Single = /*#__PURE__*/React__default.forwardRef(function Select2TriggerSin
94
103
  const currentValue = children.find(matchesValue(value));
95
104
  let output;
96
105
  if (placeholder && currentValue === undefined) {
97
- output = /*#__PURE__*/React__default.createElement("div", {
98
- className: cn({
99
- 'text-grey-700': disabled,
100
- 'text-grey-500': !disabled
101
- })
106
+ output = /*#__PURE__*/React__default.createElement(Placeholder, {
107
+ disabled: disabled
102
108
  }, placeholder);
103
109
  } else if (currentValue) {
104
110
  if (tags && emptyValue !== value) {
@@ -150,11 +156,8 @@ const Multiple = /*#__PURE__*/React__default.forwardRef(function Select2TriggerM
150
156
  className: "my-1 flex max-h-[5.5rem] flex-col"
151
157
  }, /*#__PURE__*/React__default.createElement("div", {
152
158
  className: "flex flex-wrap gap-1"
153
- }, valuesAsChildren.length === 0 ? ( /*#__PURE__*/React__default.createElement("div", {
154
- className: cn({
155
- 'text-grey-700': disabled,
156
- 'text-grey-500': !disabled
157
- })
159
+ }, valuesAsChildren.length === 0 ? ( /*#__PURE__*/React__default.createElement(Placeholder, {
160
+ disabled: disabled
158
161
  }, placeholder)) : valuesAsChildren.map(child => ( /*#__PURE__*/React__default.createElement(Tag, {
159
162
  key: String(child.props.value),
160
163
  className: "truncate",
@@ -213,11 +216,8 @@ const MultipleValue = ({
213
216
  }, /*#__PURE__*/React__default.createElement("div", {
214
217
  className: "flex gap-1 truncate",
215
218
  ref: el => setContentRef(el)
216
- }, valuesAsChildren.length === 0 ? ( /*#__PURE__*/React__default.createElement("div", {
217
- className: cn({
218
- 'text-grey-700': disabled,
219
- 'text-grey-500': !disabled
220
- })
219
+ }, valuesAsChildren.length === 0 ? ( /*#__PURE__*/React__default.createElement(Placeholder, {
220
+ disabled: disabled
221
221
  }, placeholder)) : valuesAsChildren.map((child, index) => {
222
222
  const tag = /*#__PURE__*/React__default.createElement(Tag, {
223
223
  key: String(child.props.value),
@@ -1 +1 @@
1
- {"version":3,"file":"Trigger.js","sources":["../../../../../../../../src/components/Select2/components/Trigger.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { Tag } from '../../Tag/Tag';\nimport { Tooltip } from '../../Tooltip/Tooltip';\nimport { Icon } from '../../Icon/Icon';\nimport { Badge } from '../../Badge/Badge';\nimport { getInputClasses } from '../../Input/util';\nimport { Select2OptionValue } from '../types';\nimport { useSelect2Context } from './Context';\nimport { Select2OptionProps } from './Option';\nimport { getIndexOfFirstChildOverflowingParent } from '../../../utils/dom';\nimport { ScrollArea } from '../../ScrollArea/ScrollArea';\nimport { useMergedRef } from '../../../hooks/useMergedRef';\nimport { FontSize } from '../../../types';\nimport { getFontSize } from '../utilities';\n\ntype Select2TriggerProps = Omit<React.HTMLAttributes<HTMLButtonElement>, 'children' | 'defaultValue' | 'onChange' | 'value'> & {\n emptyValue?: Select2OptionValue;\n placeholder?: string;\n children: React.ReactElement<Select2OptionProps>[];\n fontSize?: FontSize;\n};\n\nexport const Trigger = React.forwardRef<HTMLButtonElement, Select2TriggerProps>(function Select2Trigger(props, ref) {\n const { multiple, value } = useSelect2Context();\n\n if (Array.isArray(value) || multiple) {\n const values = Array.isArray(value) ? value : value !== undefined ? [value] : undefined;\n return <Multiple {...props} ref={ref} values={values} />;\n }\n\n return <Single {...props} ref={ref} value={value} />;\n});\n\ntype ButtonProps = React.HTMLAttributes<HTMLButtonElement> &\n Omit<Select2TriggerProps, 'children' | 'open' | 'setValue' | 'value'>;\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Select2TriggerButton(props, ref) {\n const { children, onClick, tabIndex = 0, fontSize, ...otherProps } = props;\n const { disabled, highlighted, invalid, open, readOnly } = useSelect2Context();\n\n const className = cn(\n 'cursor-pointer px-1.5 h-fit',\n getInputClasses({ ...props, disabled, highlighted, invalid, readOnly })\n .replace('w-full', '')\n .replace('px-2', ''),\n fontSize && getFontSize(fontSize),\n {\n 'w-full': !props.className?.includes('w-'),\n },\n props.className\n );\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled || readOnly) {\n event.preventDefault();\n return;\n }\n\n if (typeof onClick === 'function') {\n onClick(event);\n }\n };\n\n return (\n <button\n {...otherProps}\n aria-invalid={invalid ? true : undefined}\n aria-readonly={readOnly ? true : undefined}\n className={className}\n disabled={disabled}\n onClick={handleClick}\n ref={ref}\n role=\"combobox\"\n tabIndex={disabled || readOnly ? -1 : tabIndex}\n type=\"button\">\n {children}\n <Icon name={open ? 'chevron-up' : 'chevron-down'} className=\"pointer-events-none -mr-1 ml-auto\" />\n </button>\n );\n});\n\ntype SingleProps = Omit<Select2TriggerProps, 'value'> & { value?: Select2OptionValue; placeholder?: string };\n\nconst Single = React.forwardRef<HTMLButtonElement, SingleProps>(function Select2TriggerSingle(props, ref) {\n const { children, emptyValue, value, placeholder, ...buttonProps } = props;\n const { disabled, readOnly, tags } = useSelect2Context();\n const contentClassName = cn('truncate items-center gap-1');\n\n const currentValue = children.find(matchesValue(value));\n\n let output;\n\n if (placeholder && currentValue === undefined) {\n output = <div className={cn({ 'text-grey-700': disabled, 'text-grey-500': !disabled })}>{placeholder}</div>;\n } else if (currentValue) {\n if (tags && emptyValue !== value) {\n output = (\n <Tag\n className=\"truncate\"\n color={currentValue.props.color}\n disabled={disabled}\n icon={currentValue.props.prefix}\n readOnly={readOnly}>\n {currentValue.props.children}\n </Tag>\n );\n } else {\n output = (\n <>\n {currentValue.props.prefix ? (\n typeof currentValue.props.prefix === 'string' ? (\n <Icon name={currentValue.props.prefix} className=\"mr-1 !h-5 !w-5\" />\n ) : (\n currentValue.props.prefix\n )\n ) : null}\n {currentValue.props.children}\n </>\n );\n }\n }\n\n return (\n <Button {...buttonProps} ref={ref}>\n <div className={contentClassName}>{output}</div>\n </Button>\n );\n});\n\ntype MultipleProps = Omit<Select2TriggerProps, 'value'> & {\n values?: Select2OptionValue[];\n};\n\nconst Multiple = React.forwardRef<HTMLButtonElement, MultipleProps>(function Select2TriggerMultiple(props, ref) {\n const { children, emptyValue: _, values = [], placeholder, ...buttonProps } = props;\n const { disabled, open, readOnly, setValue, tags } = useSelect2Context();\n const buttonRef = useMergedRef<HTMLButtonElement>(ref);\n\n const valuesAsChildren = values\n .map(value => children.find(c => c.props.value === value))\n .filter(c => !!c) as React.ReactElement<Select2OptionProps>[];\n\n let content;\n let { className } = buttonProps;\n\n if (open) {\n className = cn('!absolute z-20 !h-fit', buttonProps.className);\n content = (\n <ScrollArea className=\"my-1 flex max-h-[5.5rem] flex-col\">\n <div className=\"flex flex-wrap gap-1\">\n {valuesAsChildren.length === 0 ? (\n <div className={cn({ 'text-grey-700': disabled, 'text-grey-500': !disabled })}>{placeholder}</div>\n ) : (\n valuesAsChildren.map(child => (\n <Tag\n key={String(child.props.value)}\n className=\"truncate\"\n color={tags ? child.props.color : undefined}\n disabled={disabled}\n icon={child.props.prefix}\n onDelete={event => {\n event?.stopPropagation();\n event?.preventDefault();\n\n if (!disabled && !readOnly) {\n setValue(child.props.value);\n }\n }}\n readOnly={readOnly}>\n {child.props.children}\n </Tag>\n ))\n )}\n </div>\n </ScrollArea>\n );\n } else {\n content = <MultipleValue key={String(open)} valuesAsChildren={valuesAsChildren} placeholder={placeholder} />;\n }\n\n return (\n <div\n className=\"relative inline-flex h-fit flex-grow\"\n data-taco=\"select2-container\"\n style={{ width: open ? buttonRef.current?.offsetWidth : undefined }}>\n <Button {...buttonProps} className={className} ref={buttonRef}>\n {content}\n </Button>\n </div>\n );\n});\n\ntype MultipleValueProps = Omit<Select2TriggerProps, 'value' | 'children'> & {\n valuesAsChildren: React.ReactElement<Select2OptionProps>[];\n placeholder?: string;\n};\n\nconst MultipleValue = ({ valuesAsChildren, placeholder }: MultipleValueProps) => {\n const { disabled, open, readOnly, setValue, tags } = useSelect2Context();\n const [contentRef, setContentRef] = React.useState<HTMLDivElement | null>(null);\n const boundaryIndex = contentRef ? getIndexOfFirstChildOverflowingParent(contentRef, 30) : undefined;\n\n const createClickHandler = tagValue => event => {\n event?.stopPropagation();\n event?.preventDefault();\n\n if (!disabled && !readOnly) {\n setValue(tagValue);\n }\n };\n\n return (\n <div className=\"relative flex items-center gap-1 overflow-hidden\">\n <div className=\"flex gap-1 truncate\" ref={el => setContentRef(el)}>\n {valuesAsChildren.length === 0 ? (\n <div className={cn({ 'text-grey-700': disabled, 'text-grey-500': !disabled })}>{placeholder}</div>\n ) : (\n valuesAsChildren.map((child, index) => {\n const tag = (\n <Tag\n key={String(child.props.value)}\n className={cn('cursor-pointer', {\n truncate: index === boundaryIndex,\n hidden: boundaryIndex !== undefined && boundaryIndex !== null ? index > boundaryIndex : false,\n })}\n color={tags ? child.props.color : undefined}\n disabled={disabled}\n icon={child.props.prefix}\n onDelete={open ? createClickHandler(child.props.value) : undefined}\n readOnly={readOnly}>\n {child.props.children}\n </Tag>\n );\n\n if (index === boundaryIndex) {\n return (\n <Tooltip key={String(child.props.value)} title={String(child.props.children)}>\n {tag}\n </Tooltip>\n );\n }\n\n return tag;\n })\n )}\n </div>\n {boundaryIndex !== undefined && boundaryIndex !== null && boundaryIndex < valuesAsChildren.length - 1 ? (\n <Tooltip\n title={valuesAsChildren\n .slice(boundaryIndex + 1)\n .map(child => (child ? String(child.props.children) : ''))\n .join(', ')}>\n <Badge className=\"flex-shrink-0\">+{valuesAsChildren.length - (boundaryIndex + 1)}</Badge>\n </Tooltip>\n ) : null}\n </div>\n );\n};\n\nconst matchesValue = (value: undefined | any | any[]) => (child: React.ReactElement<any>) => {\n if (Array.isArray(value)) {\n return value.includes(child.props.value);\n }\n\n return child.props.value === value;\n};\n"],"names":["Trigger","React","forwardRef","Select2Trigger","props","ref","multiple","value","useSelect2Context","Array","isArray","values","undefined","Multiple","Single","Button","Select2TriggerButton","children","onClick","tabIndex","fontSize","otherProps","disabled","highlighted","invalid","open","readOnly","className","cn","getInputClasses","replace","getFontSize","_props$className","includes","handleClick","event","preventDefault","role","type","Icon","name","Select2TriggerSingle","emptyValue","placeholder","buttonProps","tags","contentClassName","currentValue","find","matchesValue","output","Tag","color","icon","prefix","Select2TriggerMultiple","_","setValue","buttonRef","useMergedRef","valuesAsChildren","map","c","filter","content","ScrollArea","length","child","key","String","onDelete","stopPropagation","MultipleValue","style","width","_buttonRef$current","current","offsetWidth","contentRef","setContentRef","useState","boundaryIndex","getIndexOfFirstChildOverflowingParent","createClickHandler","tagValue","el","index","tag","truncate","hidden","Tooltip","title","slice","join","Badge"],"mappings":"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"}
1
+ {"version":3,"file":"Trigger.js","sources":["../../../../../../../../src/components/Select2/components/Trigger.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { Tag } from '../../Tag/Tag';\nimport { Tooltip } from '../../Tooltip/Tooltip';\nimport { Icon } from '../../Icon/Icon';\nimport { Badge } from '../../Badge/Badge';\nimport { getInputClasses } from '../../Input/util';\nimport { Select2OptionValue } from '../types';\nimport { useSelect2Context } from './Context';\nimport { Select2OptionProps } from './Option';\nimport { getIndexOfFirstChildOverflowingParent } from '../../../utils/dom';\nimport { ScrollArea } from '../../ScrollArea/ScrollArea';\nimport { useMergedRef } from '../../../hooks/useMergedRef';\nimport { getFontSize } from '../utilities';\n\ntype Select2TriggerProps = Omit<React.HTMLAttributes<HTMLButtonElement>, 'children' | 'defaultValue' | 'onChange' | 'value'> & {\n emptyValue?: Select2OptionValue;\n placeholder?: string;\n children: React.ReactElement<Select2OptionProps>[];\n};\n\nconst Placeholder = ({ disabled, ...props }) => (\n <div {...props} className={cn({ 'text-grey-700': disabled, 'text-grey-500': !disabled })} />\n);\n\nexport const Trigger = React.forwardRef<HTMLButtonElement, Select2TriggerProps>(function Select2Trigger(props, ref) {\n const { multiple, value } = useSelect2Context();\n\n if (Array.isArray(value) || multiple) {\n const values = Array.isArray(value) ? value : value !== undefined ? [value] : undefined;\n return <Multiple {...props} ref={ref} values={values} />;\n }\n\n return <Single {...props} ref={ref} value={value} />;\n});\n\ntype ButtonProps = React.HTMLAttributes<HTMLButtonElement> &\n Omit<Select2TriggerProps, 'children' | 'open' | 'setValue' | 'value'>;\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Select2TriggerButton(props, ref) {\n const { children, onClick, tabIndex = 0, ...otherProps } = props;\n const { disabled, fontSize, highlighted, invalid, open, readOnly } = useSelect2Context();\n\n const className = cn(\n 'cursor-pointer px-1.5 h-fit',\n getInputClasses({ ...props, disabled, highlighted, invalid, readOnly })\n .replace('w-full', '')\n .replace('px-2', ''),\n getFontSize(fontSize),\n {\n 'w-full': !props.className?.includes('w-'),\n },\n props.className\n );\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled || readOnly) {\n event.preventDefault();\n return;\n }\n\n if (typeof onClick === 'function') {\n onClick(event);\n }\n };\n\n return (\n <button\n {...otherProps}\n aria-invalid={invalid ? true : undefined}\n aria-readonly={readOnly ? true : undefined}\n className={className}\n disabled={disabled}\n onClick={handleClick}\n ref={ref}\n role=\"combobox\"\n tabIndex={disabled || readOnly ? -1 : tabIndex}\n type=\"button\">\n {children}\n <Icon name={open ? 'chevron-up' : 'chevron-down'} className=\"pointer-events-none -mr-1 ml-auto\" />\n </button>\n );\n});\n\ntype SingleProps = Omit<Select2TriggerProps, 'value'> & { value?: Select2OptionValue; placeholder?: string };\n\nconst Single = React.forwardRef<HTMLButtonElement, SingleProps>(function Select2TriggerSingle(props, ref) {\n const { children, emptyValue, value, placeholder, ...buttonProps } = props;\n const { disabled, readOnly, tags } = useSelect2Context();\n const contentClassName = cn('truncate items-center gap-1');\n\n const currentValue = children.find(matchesValue(value));\n\n let output;\n\n if (placeholder && currentValue === undefined) {\n output = <Placeholder disabled={disabled}>{placeholder}</Placeholder>;\n } else if (currentValue) {\n if (tags && emptyValue !== value) {\n output = (\n <Tag\n className=\"truncate\"\n color={currentValue.props.color}\n disabled={disabled}\n icon={currentValue.props.prefix}\n readOnly={readOnly}>\n {currentValue.props.children}\n </Tag>\n );\n } else {\n output = (\n <>\n {currentValue.props.prefix ? (\n typeof currentValue.props.prefix === 'string' ? (\n <Icon name={currentValue.props.prefix} className=\"mr-1 !h-5 !w-5\" />\n ) : (\n currentValue.props.prefix\n )\n ) : null}\n {currentValue.props.children}\n </>\n );\n }\n }\n\n return (\n <Button {...buttonProps} ref={ref}>\n <div className={contentClassName}>{output}</div>\n </Button>\n );\n});\n\ntype MultipleProps = Omit<Select2TriggerProps, 'value'> & {\n values?: Select2OptionValue[];\n};\n\nconst Multiple = React.forwardRef<HTMLButtonElement, MultipleProps>(function Select2TriggerMultiple(props, ref) {\n const { children, emptyValue: _, values = [], placeholder, ...buttonProps } = props;\n const { disabled, open, readOnly, setValue, tags } = useSelect2Context();\n const buttonRef = useMergedRef<HTMLButtonElement>(ref);\n\n const valuesAsChildren = values\n .map(value => children.find(c => c.props.value === value))\n .filter(c => !!c) as React.ReactElement<Select2OptionProps>[];\n\n let content;\n let { className } = buttonProps;\n\n if (open) {\n className = cn('!absolute z-20 !h-fit', buttonProps.className);\n content = (\n <ScrollArea className=\"my-1 flex max-h-[5.5rem] flex-col\">\n <div className=\"flex flex-wrap gap-1\">\n {valuesAsChildren.length === 0 ? (\n <Placeholder disabled={disabled}>{placeholder}</Placeholder>\n ) : (\n valuesAsChildren.map(child => (\n <Tag\n key={String(child.props.value)}\n className=\"truncate\"\n color={tags ? child.props.color : undefined}\n disabled={disabled}\n icon={child.props.prefix}\n onDelete={event => {\n event?.stopPropagation();\n event?.preventDefault();\n\n if (!disabled && !readOnly) {\n setValue(child.props.value);\n }\n }}\n readOnly={readOnly}>\n {child.props.children}\n </Tag>\n ))\n )}\n </div>\n </ScrollArea>\n );\n } else {\n content = <MultipleValue key={String(open)} valuesAsChildren={valuesAsChildren} placeholder={placeholder} />;\n }\n\n return (\n <div\n className=\"relative inline-flex h-fit flex-grow\"\n data-taco=\"select2-container\"\n style={{ width: open ? buttonRef.current?.offsetWidth : undefined }}>\n <Button {...buttonProps} className={className} ref={buttonRef}>\n {content}\n </Button>\n </div>\n );\n});\n\ntype MultipleValueProps = Omit<Select2TriggerProps, 'value' | 'children'> & {\n valuesAsChildren: React.ReactElement<Select2OptionProps>[];\n placeholder?: string;\n};\n\nconst MultipleValue = ({ valuesAsChildren, placeholder }: MultipleValueProps) => {\n const { disabled, open, readOnly, setValue, tags } = useSelect2Context();\n const [contentRef, setContentRef] = React.useState<HTMLDivElement | null>(null);\n const boundaryIndex = contentRef ? getIndexOfFirstChildOverflowingParent(contentRef, 30) : undefined;\n\n const createClickHandler = tagValue => event => {\n event?.stopPropagation();\n event?.preventDefault();\n\n if (!disabled && !readOnly) {\n setValue(tagValue);\n }\n };\n\n return (\n <div className=\"relative flex items-center gap-1 overflow-hidden\">\n <div className=\"flex gap-1 truncate\" ref={el => setContentRef(el)}>\n {valuesAsChildren.length === 0 ? (\n <Placeholder disabled={disabled}>{placeholder}</Placeholder>\n ) : (\n valuesAsChildren.map((child, index) => {\n const tag = (\n <Tag\n key={String(child.props.value)}\n className={cn('cursor-pointer', {\n truncate: index === boundaryIndex,\n hidden: boundaryIndex !== undefined && boundaryIndex !== null ? index > boundaryIndex : false,\n })}\n color={tags ? child.props.color : undefined}\n disabled={disabled}\n icon={child.props.prefix}\n onDelete={open ? createClickHandler(child.props.value) : undefined}\n readOnly={readOnly}>\n {child.props.children}\n </Tag>\n );\n\n if (index === boundaryIndex) {\n return (\n <Tooltip key={String(child.props.value)} title={String(child.props.children)}>\n {tag}\n </Tooltip>\n );\n }\n\n return tag;\n })\n )}\n </div>\n {boundaryIndex !== undefined && boundaryIndex !== null && boundaryIndex < valuesAsChildren.length - 1 ? (\n <Tooltip\n title={valuesAsChildren\n .slice(boundaryIndex + 1)\n .map(child => (child ? String(child.props.children) : ''))\n .join(', ')}>\n <Badge className=\"flex-shrink-0\">+{valuesAsChildren.length - (boundaryIndex + 1)}</Badge>\n </Tooltip>\n ) : null}\n </div>\n );\n};\n\nconst matchesValue = (value: undefined | any | any[]) => (child: React.ReactElement<any>) => {\n if (Array.isArray(value)) {\n return value.includes(child.props.value);\n }\n\n return child.props.value === value;\n};\n"],"names":["Placeholder","disabled","props","React","className","cn","Trigger","forwardRef","Select2Trigger","ref","multiple","value","useSelect2Context","Array","isArray","values","undefined","Multiple","Single","Button","Select2TriggerButton","children","onClick","tabIndex","otherProps","fontSize","highlighted","invalid","open","readOnly","getInputClasses","replace","getFontSize","_props$className","includes","handleClick","event","preventDefault","role","type","Icon","name","Select2TriggerSingle","emptyValue","placeholder","buttonProps","tags","contentClassName","currentValue","find","matchesValue","output","Tag","color","icon","prefix","Select2TriggerMultiple","_","setValue","buttonRef","useMergedRef","valuesAsChildren","map","c","filter","content","ScrollArea","length","child","key","String","onDelete","stopPropagation","MultipleValue","style","width","_buttonRef$current","current","offsetWidth","contentRef","setContentRef","useState","boundaryIndex","getIndexOfFirstChildOverflowingParent","createClickHandler","tagValue","el","index","tag","truncate","hidden","Tooltip","title","slice","join","Badge"],"mappings":"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"}
@@ -9,10 +9,9 @@ const getFontSize = fontSize => {
9
9
  switch (fontSize) {
10
10
  case FontSizes.small:
11
11
  return 'text-xs';
12
- case FontSizes.medium:
13
- return 'text-sm';
14
12
  case FontSizes.large:
15
13
  return 'text-base';
14
+ case FontSizes.medium:
16
15
  default:
17
16
  return 'text-sm';
18
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.js","sources":["../../../../../../../src/components/Select2/utilities.ts"],"sourcesContent":["import cn from 'clsx';\nimport { FontSize, FontSizes } from '../../types';\n\nexport const createOptionClassName = (shouldPauseHoverState = false) =>\n cn(\n 'group mb-px flex w-full text-sm flex-shrink-0 font-normal cursor-pointer items-center rounded bg-white px-2 leading-8 text-black aria-hidden:hidden gap-1.5 bg-white aria-current:wcag-grey-200 aria-disabled:text-black/25 aria-disabled:pointer-events-none',\n\n {\n 'hover:wcag-grey-200': !shouldPauseHoverState,\n }\n );\n\nexport const createCollectionClassName = () => 'flex flex-col gap-px';\n\nexport const getFontSize = (fontSize: FontSize) => {\n switch (fontSize) {\n case FontSizes.small:\n return 'text-xs';\n case FontSizes.medium:\n return 'text-sm';\n case FontSizes.large:\n return 'text-base';\n default:\n return 'text-sm';\n }\n};\n"],"names":["createOptionClassName","shouldPauseHoverState","cn","createCollectionClassName","getFontSize","fontSize","FontSizes","small","medium","large"],"mappings":";;;MAGaA,qBAAqB,GAAGA,CAACC,qBAAqB,GAAG,KAAK,KAC/DC,EAAE,CACE,+PAA+P,EAE/P;EACI,qBAAqB,EAAE,CAACD;CAC3B;MAGIE,yBAAyB,GAAGA,MAAM;MAElCC,WAAW,GAAIC,QAAkB;EAC1C,QAAQA,QAAQ;IACZ,KAAKC,SAAS,CAACC,KAAK;MAChB,OAAO,SAAS;IACpB,KAAKD,SAAS,CAACE,MAAM;MACjB,OAAO,SAAS;IACpB,KAAKF,SAAS,CAACG,KAAK;MAChB,OAAO,WAAW;IACtB;MACI,OAAO,SAAS;;AAE5B;;;;"}
1
+ {"version":3,"file":"utilities.js","sources":["../../../../../../../src/components/Select2/utilities.ts"],"sourcesContent":["import cn from 'clsx';\nimport { FontSize, FontSizes } from '../../types';\n\nexport const createOptionClassName = (shouldPauseHoverState = false) =>\n cn(\n 'group mb-px flex w-full text-sm flex-shrink-0 font-normal cursor-pointer items-center rounded bg-white px-2 leading-8 text-black aria-hidden:hidden gap-1.5 bg-white aria-current:wcag-grey-200 aria-disabled:text-black/25 aria-disabled:pointer-events-none',\n\n {\n 'hover:wcag-grey-200': !shouldPauseHoverState,\n }\n );\n\nexport const createCollectionClassName = () => 'flex flex-col gap-px';\n\nexport const getFontSize = (fontSize?: FontSize) => {\n switch (fontSize) {\n case FontSizes.small:\n return 'text-xs';\n\n case FontSizes.large:\n return 'text-base';\n\n case FontSizes.medium:\n default:\n return 'text-sm';\n }\n};\n"],"names":["createOptionClassName","shouldPauseHoverState","cn","createCollectionClassName","getFontSize","fontSize","FontSizes","small","large","medium"],"mappings":";;;MAGaA,qBAAqB,GAAGA,CAACC,qBAAqB,GAAG,KAAK,KAC/DC,EAAE,CACE,+PAA+P,EAE/P;EACI,qBAAqB,EAAE,CAACD;CAC3B;MAGIE,yBAAyB,GAAGA,MAAM;MAElCC,WAAW,GAAIC,QAAmB;EAC3C,QAAQA,QAAQ;IACZ,KAAKC,SAAS,CAACC,KAAK;MAChB,OAAO,SAAS;IAEpB,KAAKD,SAAS,CAACE,KAAK;MAChB,OAAO,WAAW;IAEtB,KAAKF,SAAS,CAACG,MAAM;IACrB;MACI,OAAO,SAAS;;AAE5B;;;;"}
@@ -79,13 +79,18 @@ function ensureOrdering(columns, settingsOrder, internalColumnsPinnedToTheRight
79
79
  });
80
80
  });
81
81
  if (settingsOrder && settingsOrder.length > 0) {
82
+ const columnsAbsentInSettingsOrder = [];
82
83
  orderingEnabled = orderingEnabled.reduce((acc, column) => {
83
84
  const index = settingsOrder.indexOf(column);
84
85
  if (index > -1) {
85
86
  acc[index] = column;
87
+ } else {
88
+ columnsAbsentInSettingsOrder.push(column);
86
89
  }
87
90
  return acc;
88
- }, []).filter(column => !!column);
91
+ }, []).filter(column => !!column)
92
+ // Append absent columns at the end
93
+ .concat(columnsAbsentInSettingsOrder);
89
94
  }
90
95
  const order = [...internalColumns, ...orderingDisabled, ...orderingEnabled];
91
96
  // actions should always be last, enforce that
@@ -1 +1 @@
1
- {"version":3,"file":"columns.js","sources":["../../../../../../../../../src/primitives/Table/useTableManager/util/columns.ts"],"sourcesContent":["import { ColumnDef as ReactTableColumnDef, GroupColumnDef as ReactTableGroupColumnDef } from '@tanstack/react-table';\nimport { isDate } from 'date-fns';\nimport { FontSize, FontSizes } from '../../../../types';\nimport { format, parseFromISOString } from '../../../../utils/date';\nimport { TableColumnDataType } from '../../types';\n\nexport function isInternalColumn(id: string | undefined) {\n return id?.startsWith('__');\n}\n\n// column widths\nexport const getCellMinWidth = (fontSize: FontSize = 'medium') => {\n switch (fontSize) {\n case FontSizes.small:\n return 57;\n\n case FontSizes.large:\n return 83;\n\n default:\n case FontSizes.medium:\n return 72;\n }\n};\n\n// highlighting\nexport function isCellHighlighted(query: string, value: unknown, dataType?: TableColumnDataType) {\n if (value === undefined || value === null) {\n return false;\n }\n\n return String(getCellValueAsString(value, dataType)).toLocaleLowerCase().includes(query.toLocaleLowerCase());\n}\n\nexport function getCellValueAsString(value: unknown, dataType?: TableColumnDataType): string {\n if (value === undefined || value === null) {\n return '';\n } else if (isDate(value)) {\n return format(value as Date) ?? '';\n } else if (dataType === 'datetime' && typeof value === 'string') {\n return format(parseFromISOString(value as string)) ?? '';\n }\n\n return String(value);\n}\n\nfunction orderColumn<TType = unknown>(\n column: ReactTableColumnDef<TType>,\n { orderingDisabled, orderingEnabled }: { orderingDisabled: string[]; orderingEnabled: string[] }\n) {\n const groupedColumn = column as ReactTableGroupColumnDef<TType>;\n\n if (Array.isArray(groupedColumn.columns) && groupedColumn.columns.length > 0) {\n groupedColumn.columns.forEach((subcolumn: ReactTableColumnDef<TType>) =>\n orderColumn(subcolumn, { orderingDisabled, orderingEnabled })\n );\n } else {\n if (column.meta?.enableOrdering) {\n orderingEnabled.push(column.id as string);\n } else {\n orderingDisabled.push(column.id as string);\n }\n }\n}\n\n// ordering\nexport function ensureOrdering<TType = unknown>(\n columns: ReactTableColumnDef<TType>[],\n settingsOrder: string[] | undefined,\n internalColumnsPinnedToTheRight: string[] = ['__actions']\n): string[] {\n // internal columns come with a defined order\n const internalColumns = columns\n .filter(column => isInternalColumn(column.id) && !internalColumnsPinnedToTheRight.includes(String(column.id)))\n .map(column => column.id) as string[];\n\n // columns with ordering disabled should be moved to the front\n const orderingDisabled: string[] = [];\n let orderingEnabled: string[] = [];\n\n let orderedColumns = columns;\n\n // if settings is defined, make sure the columns that are actual children are sorted by it\n if (Array.isArray(settingsOrder)) {\n orderedColumns = columns.slice().sort(\n // the magic >>> 0 here ensures that columns that aren't found in settings, but are children, are pushed to the end\n (a, b) => (settingsOrder.indexOf(a.id as string) >>> 0) - (settingsOrder.indexOf(b.id as string) >>> 0)\n );\n }\n\n orderedColumns.forEach(column => {\n if (isInternalColumn(column.id)) {\n return;\n }\n\n orderColumn(column, { orderingDisabled, orderingEnabled });\n });\n\n if (settingsOrder && settingsOrder.length > 0) {\n orderingEnabled = orderingEnabled\n .reduce((acc, column) => {\n const index = settingsOrder.indexOf(column);\n if (index > -1) {\n acc[index] = column;\n }\n\n return acc;\n }, [] as string[])\n .filter(column => !!column);\n }\n\n const order = [...internalColumns, ...orderingDisabled, ...orderingEnabled];\n\n // actions should always be last, enforce that\n internalColumnsPinnedToTheRight.forEach(id => {\n if (columns.findIndex(column => column.id === id) > -1) {\n order.push(id);\n }\n });\n\n return order;\n}\n\n// freezing - we use the react-table pinning state, but that requires some mapping between them\nexport function unfreezeAllExternalColumns(leftPinnedState?: string[]): string[] {\n return leftPinnedState?.filter(id => isInternalColumn(id) && id !== '__actions') ?? [];\n}\n\nexport function freezeUptoExternalColumn(index: number, columns: string[]): string[] {\n return columns.slice(0, index + 1);\n}\n"],"names":["isInternalColumn","id","startsWith","getCellMinWidth","fontSize","FontSizes","small","large","medium","isCellHighlighted","query","value","dataType","undefined","String","getCellValueAsString","toLocaleLowerCase","includes","isDate","_format","format","_format2","parseFromISOString","orderColumn","column","orderingDisabled","orderingEnabled","groupedColumn","Array","isArray","columns","length","forEach","subcolumn","_column$meta","meta","enableOrdering","push","ensureOrdering","settingsOrder","internalColumnsPinnedToTheRight","internalColumns","filter","map","orderedColumns","slice","sort","a","b","indexOf","reduce","acc","index","order","findIndex","unfreezeAllExternalColumns","leftPinnedState","_leftPinnedState$filt","freezeUptoExternalColumn"],"mappings":"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"}
1
+ {"version":3,"file":"columns.js","sources":["../../../../../../../../../src/primitives/Table/useTableManager/util/columns.ts"],"sourcesContent":["import { ColumnDef as ReactTableColumnDef, GroupColumnDef as ReactTableGroupColumnDef } from '@tanstack/react-table';\nimport { isDate } from 'date-fns';\nimport { FontSize, FontSizes } from '../../../../types';\nimport { format, parseFromISOString } from '../../../../utils/date';\nimport { TableColumnDataType } from '../../types';\n\nexport function isInternalColumn(id: string | undefined) {\n return id?.startsWith('__');\n}\n\n// column widths\nexport const getCellMinWidth = (fontSize: FontSize = 'medium') => {\n switch (fontSize) {\n case FontSizes.small:\n return 57;\n\n case FontSizes.large:\n return 83;\n\n default:\n case FontSizes.medium:\n return 72;\n }\n};\n\n// highlighting\nexport function isCellHighlighted(query: string, value: unknown, dataType?: TableColumnDataType) {\n if (value === undefined || value === null) {\n return false;\n }\n\n return String(getCellValueAsString(value, dataType)).toLocaleLowerCase().includes(query.toLocaleLowerCase());\n}\n\nexport function getCellValueAsString(value: unknown, dataType?: TableColumnDataType): string {\n if (value === undefined || value === null) {\n return '';\n } else if (isDate(value)) {\n return format(value as Date) ?? '';\n } else if (dataType === 'datetime' && typeof value === 'string') {\n return format(parseFromISOString(value as string)) ?? '';\n }\n\n return String(value);\n}\n\nfunction orderColumn<TType = unknown>(\n column: ReactTableColumnDef<TType>,\n { orderingDisabled, orderingEnabled }: { orderingDisabled: string[]; orderingEnabled: string[] }\n) {\n const groupedColumn = column as ReactTableGroupColumnDef<TType>;\n\n if (Array.isArray(groupedColumn.columns) && groupedColumn.columns.length > 0) {\n groupedColumn.columns.forEach((subcolumn: ReactTableColumnDef<TType>) =>\n orderColumn(subcolumn, { orderingDisabled, orderingEnabled })\n );\n } else {\n if (column.meta?.enableOrdering) {\n orderingEnabled.push(column.id as string);\n } else {\n orderingDisabled.push(column.id as string);\n }\n }\n}\n\n// ordering\nexport function ensureOrdering<TType = unknown>(\n columns: ReactTableColumnDef<TType>[],\n settingsOrder: string[] | undefined,\n internalColumnsPinnedToTheRight: string[] = ['__actions']\n): string[] {\n // internal columns come with a defined order\n const internalColumns = columns\n .filter(column => isInternalColumn(column.id) && !internalColumnsPinnedToTheRight.includes(String(column.id)))\n .map(column => column.id) as string[];\n\n // columns with ordering disabled should be moved to the front\n const orderingDisabled: string[] = [];\n let orderingEnabled: string[] = [];\n\n let orderedColumns = columns;\n\n // if settings is defined, make sure the columns that are actual children are sorted by it\n if (Array.isArray(settingsOrder)) {\n orderedColumns = columns.slice().sort(\n // the magic >>> 0 here ensures that columns that aren't found in settings, but are children, are pushed to the end\n (a, b) => (settingsOrder.indexOf(a.id as string) >>> 0) - (settingsOrder.indexOf(b.id as string) >>> 0)\n );\n }\n\n orderedColumns.forEach(column => {\n if (isInternalColumn(column.id)) {\n return;\n }\n\n orderColumn(column, { orderingDisabled, orderingEnabled });\n });\n\n if (settingsOrder && settingsOrder.length > 0) {\n const columnsAbsentInSettingsOrder: string[] = [];\n\n orderingEnabled = orderingEnabled\n .reduce((acc, column) => {\n const index = settingsOrder.indexOf(column);\n if (index > -1) {\n acc[index] = column;\n } else {\n columnsAbsentInSettingsOrder.push(column);\n }\n\n return acc;\n }, [] as string[])\n .filter(column => !!column)\n // Append absent columns at the end\n .concat(columnsAbsentInSettingsOrder);\n }\n\n const order = [...internalColumns, ...orderingDisabled, ...orderingEnabled];\n\n // actions should always be last, enforce that\n internalColumnsPinnedToTheRight.forEach(id => {\n if (columns.findIndex(column => column.id === id) > -1) {\n order.push(id);\n }\n });\n\n return order;\n}\n\n// freezing - we use the react-table pinning state, but that requires some mapping between them\nexport function unfreezeAllExternalColumns(leftPinnedState?: string[]): string[] {\n return leftPinnedState?.filter(id => isInternalColumn(id) && id !== '__actions') ?? [];\n}\n\nexport function freezeUptoExternalColumn(index: number, columns: string[]): string[] {\n return columns.slice(0, index + 1);\n}\n"],"names":["isInternalColumn","id","startsWith","getCellMinWidth","fontSize","FontSizes","small","large","medium","isCellHighlighted","query","value","dataType","undefined","String","getCellValueAsString","toLocaleLowerCase","includes","isDate","_format","format","_format2","parseFromISOString","orderColumn","column","orderingDisabled","orderingEnabled","groupedColumn","Array","isArray","columns","length","forEach","subcolumn","_column$meta","meta","enableOrdering","push","ensureOrdering","settingsOrder","internalColumnsPinnedToTheRight","internalColumns","filter","map","orderedColumns","slice","sort","a","b","indexOf","columnsAbsentInSettingsOrder","reduce","acc","index","concat","order","findIndex","unfreezeAllExternalColumns","leftPinnedState","_leftPinnedState$filt","freezeUptoExternalColumn"],"mappings":"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"}