@economic/taco 2.45.0-alpha.17 → 2.45.0-alpha.19

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 (126) hide show
  1. package/dist/components/Listbox/util.d.ts +1 -1
  2. package/dist/components/Report/Report.d.ts +2 -2
  3. package/dist/components/SearchInput2/SearchInput2.d.ts +2 -0
  4. package/dist/components/Table3/Table3.d.ts +5 -2
  5. package/dist/components/Table3/components/Row/Editing/CreateNewRow.d.ts +0 -1
  6. package/dist/components/Table3/features/useEditingState.d.ts +23 -18
  7. package/dist/components/Table3/features/useTableEditing.d.ts +24 -20
  8. package/dist/components/Table3/types.d.ts +2 -0
  9. package/dist/esm/index.css +6 -0
  10. package/dist/esm/packages/taco/src/charts/components/Donut/DonutChart.js.map +1 -1
  11. package/dist/esm/packages/taco/src/charts/components/Donut/Legend.js +1 -0
  12. package/dist/esm/packages/taco/src/charts/components/Donut/Legend.js.map +1 -1
  13. package/dist/esm/packages/taco/src/charts/components/Legend.js +1 -0
  14. package/dist/esm/packages/taco/src/charts/components/Legend.js.map +1 -1
  15. package/dist/esm/packages/taco/src/charts/components/Tooltip.js.map +1 -1
  16. package/dist/esm/packages/taco/src/charts/utils/color.js.map +1 -1
  17. package/dist/esm/packages/taco/src/components/Accordion/Accordion.js.map +1 -1
  18. package/dist/esm/packages/taco/src/components/Combobox/useCombobox.js.map +1 -1
  19. package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js +13 -0
  20. package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js.map +1 -1
  21. package/dist/esm/packages/taco/src/components/Dialog/components/Content.js +1 -1
  22. package/dist/esm/packages/taco/src/components/Dialog/components/Content.js.map +1 -1
  23. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js +2 -2
  24. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js.map +1 -1
  25. package/dist/esm/packages/taco/src/components/Listbox/util.js.map +1 -1
  26. package/dist/esm/packages/taco/src/components/RadioGroup/RadioGroup.js.map +1 -1
  27. package/dist/esm/packages/taco/src/components/Report/Report.js +4 -1
  28. package/dist/esm/packages/taco/src/components/Report/Report.js.map +1 -1
  29. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js +6 -3
  30. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js.map +1 -1
  31. package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
  32. package/dist/esm/packages/taco/src/components/Select2/components/Create.js.map +1 -1
  33. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js.map +1 -1
  34. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowActions.js +1 -1
  35. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowSelect.js.map +1 -1
  36. package/dist/esm/packages/taco/src/components/Table3/Table3.js +3 -2
  37. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  38. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js +12 -2
  39. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
  40. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js +15 -9
  41. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js.map +1 -1
  42. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateNewRow.js +2 -3
  43. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateNewRow.js.map +1 -1
  44. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/TemporaryRow.js +3 -2
  45. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/TemporaryRow.js.map +1 -1
  46. package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js +62 -70
  47. package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js.map +1 -1
  48. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js +24 -21
  49. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js.map +1 -1
  50. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js +15 -12
  51. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js.map +1 -1
  52. package/dist/esm/packages/taco/src/components/Table3/useTable3.js +2 -2
  53. package/dist/esm/packages/taco/src/components/Table3/useTable3.js.map +1 -1
  54. package/dist/esm/packages/taco/src/components/Tag/Tag.js +1 -1
  55. package/dist/esm/packages/taco/src/components/Tag/Tag.js.map +1 -1
  56. package/dist/esm/packages/taco/src/index.js +1 -0
  57. package/dist/esm/packages/taco/src/index.js.map +1 -1
  58. package/dist/esm/packages/taco/src/primitives/Collection/components/Root.js +5 -3
  59. package/dist/esm/packages/taco/src/primitives/Collection/components/Root.js.map +1 -1
  60. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js +7 -4
  61. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js.map +1 -1
  62. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Summary.js +7 -6
  63. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Summary.js.map +1 -1
  64. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js +24 -22
  65. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js.map +1 -1
  66. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/Row.js +41 -4
  67. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/Row.js.map +1 -1
  68. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Print/Print.js +3 -1
  69. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Print/Print.js.map +1 -1
  70. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Search/Search.js +26 -3
  71. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Search/Search.js.map +1 -1
  72. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableGlobalShortcuts.js +2 -2
  73. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableGlobalShortcuts.js.map +1 -1
  74. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js +40 -13
  75. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js.map +1 -1
  76. package/dist/esm/packages/taco/src/primitives/Table/Core/useTable.js +1 -1
  77. package/dist/esm/packages/taco/src/primitives/Table/Core/useTable.js.map +1 -1
  78. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  79. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader.js +13 -12
  80. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader.js.map +1 -1
  81. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader2.js +223 -0
  82. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader2.js.map +1 -0
  83. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActive.js +1 -1
  84. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActive.js.map +1 -1
  85. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableSearch.js +3 -2
  86. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableSearch.js.map +1 -1
  87. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableServerLoading.js +6 -2
  88. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableServerLoading.js.map +1 -1
  89. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableDataListener.js +3 -4
  90. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableDataListener.js.map +1 -1
  91. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFilterListener.js +3 -1
  92. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFilterListener.js.map +1 -1
  93. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js +4 -4
  94. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js.map +1 -1
  95. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js +14 -13
  96. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js.map +1 -1
  97. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js +7 -3
  98. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js.map +1 -1
  99. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js +4 -4
  100. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js.map +1 -1
  101. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/columns.js +4 -1
  102. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/columns.js.map +1 -1
  103. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js.map +1 -1
  104. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js +8 -2
  105. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
  106. package/dist/esm/packages/taco/src/utils/dom.js.map +1 -1
  107. package/dist/hooks/useLazyDebouncedEffect.d.ts +2 -0
  108. package/dist/index.css +6 -0
  109. package/dist/index.d.ts +1 -0
  110. package/dist/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.d.ts +2 -2
  111. package/dist/primitives/Table/Core/components/Row/Row.d.ts +2 -0
  112. package/dist/primitives/Table/Core/features/useTableRenderer.d.ts +1 -1
  113. package/dist/primitives/Table/types.d.ts +10 -6
  114. package/dist/primitives/Table/useTableDataLoader.d.ts +2 -2
  115. package/dist/primitives/Table/useTableDataLoader2.d.ts +23 -0
  116. package/dist/primitives/Table/useTableManager/features/useTableSearch.d.ts +4 -2
  117. package/dist/primitives/Table/useTableManager/features/useTableServerLoading.d.ts +4 -1
  118. package/dist/primitives/Table/useTableManager/listeners/useTableDataListener.d.ts +1 -1
  119. package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.d.ts +1 -2
  120. package/dist/primitives/Table/useTableManager/util/columns.d.ts +2 -1
  121. package/dist/taco.cjs.development.js +630 -267
  122. package/dist/taco.cjs.development.js.map +1 -1
  123. package/dist/taco.cjs.production.min.js +1 -1
  124. package/dist/taco.cjs.production.min.js.map +1 -1
  125. package/dist/utils/dom.d.ts +2 -2
  126. package/package.json +4 -4
@@ -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 Select2CreateDialogRenderer,\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, filterOption, 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, isElementInsideTable3OrReport } from '../../utils/dom';\nimport { FontSize, FontSizes } from '../../types';\nimport { Button } from '../Button/Button';\nimport { Spinner } from '../Spinner/Spinner';\nimport { debounce } from '../../utils/debounce';\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 /** Create dialog component, if specified, then create button will become always visible in the bottom of options dropdown,\n * when clicked, it will open create dialog and wait for 'onCreate' handler to be triggered from the dialog */\n createDialog?: Select2CreateDialogRenderer;\n /** Create button text */\n createTriggerText?: 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 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 createDialog,\n createTriggerText,\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 [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 createDialog,\n createTriggerText,\n };\n\n const hasInlineCreation = onCreate && !createDialog;\n const hasSearch = flattenedChildren.length > 5 || hasInlineCreation;\n const visibleChildren = searchQuery === '' ? initialChildren : filteredChildren;\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 // support typeahead functionality when search isn't available\n const queryTimeoutRef = React.useRef('');\n\n const typeahead = debounce(function () {\n if (!queryTimeoutRef.current) {\n return;\n }\n\n const matchedValueIndex = visibleChildren.findIndex(child =>\n filterOption(child as React.ReactElement<Select2OptionProps>, queryTimeoutRef.current)\n );\n\n if (matchedValueIndex > -1) {\n setValue(selectOptions[matchedValueIndex]);\n }\n\n queryTimeoutRef.current = '';\n }, 200);\n\n const setValueIfMatched = (query: string) => {\n queryTimeoutRef.current = queryTimeoutRef.current + query;\n typeahead();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (open) {\n event.preventDefault();\n } else if (isElementInsideTable3OrReport(event.currentTarget) && isAriaDirectionKey(event)) {\n return;\n } else if (!event.ctrlKey && !event.metaKey && (event.key === 'ArrowDown' || /^[a-z0-9]$/i.test(event.key))) {\n setOpen(true);\n\n if (!hasSearch) {\n setValueIfMatched(event.key);\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 shouldFocusNextRef = React.useRef<boolean>(false);\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (isAriaDirectionKey(event)) {\n setShouldPauseHoverState(true);\n return;\n }\n\n if (event.key === 'Tab') {\n shouldFocusNextRef.current = true;\n setOpen(false);\n return;\n }\n\n // support typeahead to set the value by typing its text\n if (!hasSearch && /^[a-z0-9]$/i.test(event.key)) {\n setValueIfMatched(event.key);\n return;\n }\n };\n\n // popover closes and unmounts before any event can be used to focus next, so prevent focusing the trigger and focus next\n const handleCloseAutoFocus = event => {\n if (shouldFocusNextRef.current) {\n event.preventDefault();\n shouldFocusNextRef.current = false;\n otherProps.onBlur?.(event as any);\n getNextFocussableElement(internalRef.current)?.focus();\n return;\n }\n };\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(\n 'border-grey-300 rounded border bg-white py-1.5 shadow-md ',\n {\n 'focus-within:yt-focus': !hasSearch,\n 'outline-none': hasSearch,\n },\n createCollectionClassName()\n );\n\n return (\n <Select2Context.Provider value={context}>\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger asChild data-taco=\"Select2\">\n <Trigger\n {...otherProps}\n aria-haspopup=\"listbox\"\n emptyValue={emptyValue}\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 onCloseAutoFocus={handleCloseAutoFocus}\n onPointerDownOutside={otherProps.onBlur as any}\n sideOffset={4}\n tabIndex={-1}>\n <div className={className} style={{ minWidth: dimensions?.width ? `${dimensions.width}px` : undefined }}>\n {hasSearch ? (\n <>\n <Search\n placeholder={hasInlineCreation ? texts.select2.searchOrCreate : texts.select2.search}\n ref={searchRef}\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 {texts.listbox.empty}\n </div>\n ) : (\n <ListboxPrimitive.Root\n className=\"flex flex-col gap-0.5 focus-visible:outline-none\"\n customSelector=\":scope > button\"\n disabled={disabled}\n multiple={multiple}\n onKeyDown={handleListboxKeyDown}\n readOnly={readOnly}\n ref={listboxRef}\n setValue={setValue}\n value={value}>\n <Collection>{visibleChildren}</Collection>\n {onCreate ? <Create onCreate={onCreate} options={flattenedChildren} /> : null}\n </ListboxPrimitive.Root>\n )}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\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.Root>\n </Select2Context.Provider>\n );\n}) as Select2PropsWithStatics;\nSelect2.Option = Option;\nSelect2.Group = Group;\nSelect2.Title = Title;\n\ntype ControlledHiddenFieldProps = {\n emptyValue: ListboxPrimitive.Listbox2OptionValue | undefined;\n multiple: boolean;\n name: string | undefined;\n options: Array<any>;\n parentRef: React.RefObject<HTMLButtonElement>;\n setValue: (nextValue: any) => void;\n value: Select2Value | undefined;\n};\n\nconst ControlledHiddenField = (props: ControlledHiddenFieldProps) => {\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} tabIndex={-1} value={bubbleValue}>\n {emptyValue !== undefined ? <option value={emptyValue as string} /> : 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","createDialog","createTriggerText","otherProps","emptyOption","useMemo","Option","key","className","initialChildren","internalRef","useMergedRef","listboxRef","useRef","searchRef","texts","useLocalization","dimensions","useBoundingClientRectListener","open","setOpen","useState","_setValue","useControllableState","setValue","ListboxPrimitive","validationError","setValidationError","shouldPauseHoverState","setShouldPauseHoverState","useIsHoverStatePaused","flattenedChildren","filteredChildren","searchQuery","setSearchQuery","useChildren","context","hasInlineCreation","hasSearch","length","visibleChildren","selectOptions","map","child","isGroup","Array","isArray","subChild","flatMap","c","queryTimeoutRef","typeahead","debounce","current","matchedValueIndex","findIndex","filterOption","setValueIfMatched","query","handleKeyDown","event","preventDefault","isElementInsideTable3OrReport","currentTarget","isAriaDirectionKey","ctrlKey","metaKey","test","_listboxRef$current","dispatchEvent","createCustomKeyboardEvent","shouldFocusNextRef","handleListboxKeyDown","handleCloseAutoFocus","_otherProps$onBlur","_getNextFocussableEle","onBlur","call","getNextFocussableElement","focus","areAllSelected","every","option","includes","selectAllText","select2","deselectAll","selectAll","deselectAllResults","selectAllResults","preselectedValues","filter","nextValue","subValue","cn","createCollectionClassName","Select2Context","Provider","PopoverPrimitive","onOpenChange","asChild","Trigger","onKeyDown","align","onCloseAutoFocus","onPointerDownOutside","sideOffset","tabIndex","style","minWidth","width","Search","searchOrCreate","search","Button","appearance","onClick","getFontSize","Spinner","delay","FontSizes","small","medium","large","listbox","role","empty","customSelector","Collection","Create","options","ControlledHiddenField","parentRef","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 Select2CreateDialogRenderer,\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, filterOption, 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, isElementInsideTable3OrReport } from '../../utils/dom';\nimport { FontSize, FontSizes } from '../../types';\nimport { Button } from '../Button/Button';\nimport { Spinner } from '../Spinner/Spinner';\nimport { debounce } from '../../utils/debounce';\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 /** Create dialog component, if specified, then create button will become always visible in the bottom of options dropdown,\n * when clicked, it will open create dialog and wait for 'onCreate' handler to be triggered from the dialog */\n createDialog?: Select2CreateDialogRenderer;\n /** Create button text */\n createTriggerText?: 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 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 createDialog,\n createTriggerText,\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 [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 createDialog,\n createTriggerText,\n };\n\n const hasInlineCreation = onCreate && !createDialog;\n const hasSearch = flattenedChildren.length > 5 || hasInlineCreation;\n const visibleChildren = searchQuery === '' ? initialChildren : filteredChildren;\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 // support typeahead functionality when search isn't available\n const queryTimeoutRef = React.useRef('');\n\n const typeahead = debounce(function () {\n if (!queryTimeoutRef.current) {\n return;\n }\n\n const matchedValueIndex = visibleChildren.findIndex(child =>\n filterOption(child as React.ReactElement<Select2OptionProps>, queryTimeoutRef.current)\n );\n\n if (matchedValueIndex > -1) {\n setValue(selectOptions[matchedValueIndex]);\n }\n\n queryTimeoutRef.current = '';\n }, 200);\n\n const setValueIfMatched = (query: string) => {\n queryTimeoutRef.current = queryTimeoutRef.current + query;\n typeahead();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (open) {\n event.preventDefault();\n } else if (isElementInsideTable3OrReport(event.currentTarget) && isAriaDirectionKey(event)) {\n return;\n } else if (!event.ctrlKey && !event.metaKey && (event.key === 'ArrowDown' || /^[a-z0-9]$/i.test(event.key))) {\n setOpen(true);\n\n if (!hasSearch) {\n setValueIfMatched(event.key);\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 shouldFocusNextRef = React.useRef<boolean>(false);\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (isAriaDirectionKey(event)) {\n setShouldPauseHoverState(true);\n return;\n }\n\n if (event.key === 'Tab') {\n shouldFocusNextRef.current = true;\n setOpen(false);\n return;\n }\n\n // support typeahead to set the value by typing its text\n if (!hasSearch && /^[a-z0-9]$/i.test(event.key)) {\n setValueIfMatched(event.key);\n return;\n }\n };\n\n // popover closes and unmounts before any event can be used to focus next, so prevent focusing the trigger and focus next\n const handleCloseAutoFocus = (event: any) => {\n if (shouldFocusNextRef.current) {\n event.preventDefault();\n shouldFocusNextRef.current = false;\n otherProps.onBlur?.(event as any);\n getNextFocussableElement(internalRef.current)?.focus();\n return;\n }\n };\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(\n 'border-grey-300 rounded border bg-white py-1.5 shadow-md ',\n {\n 'focus-within:yt-focus': !hasSearch,\n 'outline-none': hasSearch,\n },\n createCollectionClassName()\n );\n\n return (\n <Select2Context.Provider value={context}>\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger asChild data-taco=\"Select2\">\n <Trigger\n {...otherProps}\n aria-haspopup=\"listbox\"\n emptyValue={emptyValue}\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 onCloseAutoFocus={handleCloseAutoFocus}\n onPointerDownOutside={otherProps.onBlur as any}\n sideOffset={4}\n tabIndex={-1}>\n <div className={className} style={{ minWidth: dimensions?.width ? `${dimensions.width}px` : undefined }}>\n {hasSearch ? (\n <>\n <Search\n placeholder={hasInlineCreation ? texts.select2.searchOrCreate : texts.select2.search}\n ref={searchRef}\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 {texts.listbox.empty}\n </div>\n ) : (\n <ListboxPrimitive.Root\n className=\"flex flex-col gap-0.5 focus-visible:outline-none\"\n customSelector=\":scope > button\"\n disabled={disabled}\n multiple={multiple}\n onKeyDown={handleListboxKeyDown}\n readOnly={readOnly}\n ref={listboxRef}\n setValue={setValue}\n value={value}>\n <Collection>{visibleChildren}</Collection>\n {onCreate ? <Create onCreate={onCreate} options={flattenedChildren} /> : null}\n </ListboxPrimitive.Root>\n )}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\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.Root>\n </Select2Context.Provider>\n );\n}) as Select2PropsWithStatics;\nSelect2.Option = Option;\nSelect2.Group = Group;\nSelect2.Title = Title;\n\ntype ControlledHiddenFieldProps = {\n emptyValue: ListboxPrimitive.Listbox2OptionValue | undefined;\n multiple: boolean;\n name: string | undefined;\n options: Array<any>;\n parentRef: React.RefObject<HTMLButtonElement>;\n setValue: (nextValue: any) => void;\n value: Select2Value | undefined;\n};\n\nconst ControlledHiddenField = (props: ControlledHiddenFieldProps) => {\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} tabIndex={-1} value={bubbleValue}>\n {emptyValue !== undefined ? <option value={emptyValue as string} /> : 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","createDialog","createTriggerText","otherProps","emptyOption","useMemo","Option","key","className","initialChildren","internalRef","useMergedRef","listboxRef","useRef","searchRef","texts","useLocalization","dimensions","useBoundingClientRectListener","open","setOpen","useState","_setValue","useControllableState","setValue","ListboxPrimitive","validationError","setValidationError","shouldPauseHoverState","setShouldPauseHoverState","useIsHoverStatePaused","flattenedChildren","filteredChildren","searchQuery","setSearchQuery","useChildren","context","hasInlineCreation","hasSearch","length","visibleChildren","selectOptions","map","child","isGroup","Array","isArray","subChild","flatMap","c","queryTimeoutRef","typeahead","debounce","current","matchedValueIndex","findIndex","filterOption","setValueIfMatched","query","handleKeyDown","event","preventDefault","isElementInsideTable3OrReport","currentTarget","isAriaDirectionKey","ctrlKey","metaKey","test","_listboxRef$current","dispatchEvent","createCustomKeyboardEvent","shouldFocusNextRef","handleListboxKeyDown","handleCloseAutoFocus","_otherProps$onBlur","_getNextFocussableEle","onBlur","call","getNextFocussableElement","focus","areAllSelected","every","option","includes","selectAllText","select2","deselectAll","selectAll","deselectAllResults","selectAllResults","preselectedValues","filter","nextValue","subValue","cn","createCollectionClassName","Select2Context","Provider","PopoverPrimitive","onOpenChange","asChild","Trigger","onKeyDown","align","onCloseAutoFocus","onPointerDownOutside","sideOffset","tabIndex","style","minWidth","width","Search","searchOrCreate","search","Button","appearance","onClick","getFontSize","Spinner","delay","FontSizes","small","medium","large","listbox","role","empty","customSelector","Collection","Create","options","ControlledHiddenField","parentRef","Group","Title","isFormControl","useIsFormControl","bubbleValue","String","BubbleSelect","displayName"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Create.js","sources":["../../../../../../../../src/components/Select2/components/Create.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { isAriaSelectionKey } from '../../../utils/aria';\nimport { Tag } from '../../Tag/Tag';\nimport { createOptionClassName } from '../utilities';\nimport { useSelect2Context } from './Context';\nimport { Select2OptionProps } from './Option';\nimport { useLocalization } from '../../Provider/Localization';\nimport { Color } from '../../../types';\nimport { AVAILABLE_COLORS } from '../../../utils/tailwind';\nimport { Select2CreateHandler } from '../types';\nimport { Icon } from '../../Icon/Icon';\nimport { Button } from '../../Button/Button';\n\nexport type CreateProps = {\n onCreate: Select2CreateHandler;\n options: React.ReactElement<Select2OptionProps>[];\n};\n\nexport const getNextColor = (options: React.ReactElement<Select2OptionProps>[]): Color | undefined => {\n let occurrences = {};\n AVAILABLE_COLORS.filter(color => color !== 'transparent').forEach((color: Color) => {\n occurrences = { ...occurrences, [color]: 0 };\n });\n\n options.reduce((occurrences, option) => {\n if (option.props.color) {\n occurrences[option.props.color] = occurrences[option.props.color] ? occurrences[option.props.color] + 1 : 1;\n }\n return occurrences;\n }, occurrences);\n\n const colors = Object.keys(occurrences);\n\n if (colors.length) {\n return colors.sort((a, b) => occurrences[a] - occurrences[b])[0] as Color;\n }\n\n return undefined;\n};\n\nexport const Create = (props: CreateProps) => {\n const { onCreate: handleCreate, options } = props;\n const { multiple, searchQuery, setOpen, setSearchQuery, setValidationError, setValue, createDialog, createTriggerText } =\n useSelect2Context();\n const { texts } = useLocalization();\n\n // determine what the next color tag should be based on color occurences\n const nextColor = React.useMemo(() => getNextColor(options), [options]);\n\n const onCreateDialogClose = React.useCallback(() => {\n setOpen(false);\n }, [setOpen]);\n\n if (!createDialog && !searchQuery) {\n return null;\n }\n\n const create = async (value?: string | unknown) => {\n try {\n const item = await handleCreate(value, nextColor);\n setValue(item.value);\n\n if (multiple) {\n setSearchQuery('');\n } else {\n setOpen(false);\n }\n } catch (error) {\n setValidationError(error as Error);\n }\n };\n\n const handleKeyDown = event => {\n if (isAriaSelectionKey(event)) {\n event.currentTarget.click();\n }\n };\n\n const className = cn(createOptionClassName(), {\n '!w-[calc(100%_-_theme(spacing.3))] ml-1.5': !createDialog,\n 'leading-normal border-grey-300 h-9 border-t py-2.5 px-4 !-mb-1.5': !!createDialog,\n });\n\n const creationOptions = createDialog\n ? {\n dialog: props => createDialog({ ...props, onClose: onCreateDialogClose }, searchQuery, create),\n }\n : {\n onClick: () => create(searchQuery),\n };\n\n const createText = createTriggerText || texts.select2.create;\n\n return (\n <Button\n className={className}\n {...creationOptions}\n onKeyDown={handleKeyDown}\n appearance={createDialog ? 'discrete' : 'default'}>\n <span className=\"flex items-center gap-1.5\">\n {createDialog ? (\n <>\n <Icon className=\"text-xs\" name=\"circle-plus\" /> {createText}\n </>\n ) : (\n <>\n {createText}\n <Tag color={nextColor} className=\"cursor-pointer\">\n {searchQuery}\n </Tag>\n </>\n )}\n </span>\n </Button>\n );\n};\n"],"names":["getNextColor","options","occurrences","AVAILABLE_COLORS","filter","color","forEach","reduce","option","props","colors","Object","keys","length","sort","a","b","undefined","Create","onCreate","handleCreate","multiple","searchQuery","setOpen","setSearchQuery","setValidationError","setValue","createDialog","createTriggerText","useSelect2Context","texts","useLocalization","nextColor","React","useMemo","onCreateDialogClose","useCallback","create","value","Promise","resolve","then","item","error","_temp","e","reject","handleKeyDown","event","isAriaSelectionKey","currentTarget","click","className","cn","createOptionClassName","creationOptions","dialog","onClose","onClick","createText","select2","Button","onKeyDown","appearance","Icon","name","Tag"],"mappings":"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"}
1
+ {"version":3,"file":"Create.js","sources":["../../../../../../../../src/components/Select2/components/Create.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { isAriaSelectionKey } from '../../../utils/aria';\nimport { Tag } from '../../Tag/Tag';\nimport { createOptionClassName } from '../utilities';\nimport { useSelect2Context } from './Context';\nimport { Select2OptionProps } from './Option';\nimport { useLocalization } from '../../Provider/Localization';\nimport { Color } from '../../../types';\nimport { AVAILABLE_COLORS } from '../../../utils/tailwind';\nimport { Select2CreateHandler } from '../types';\nimport { Icon } from '../../Icon/Icon';\nimport { Button } from '../../Button/Button';\nimport { DialogProps } from '../../Dialog/Dialog';\n\nexport type CreateProps = {\n onCreate: Select2CreateHandler;\n options: React.ReactElement<Select2OptionProps>[];\n};\n\nexport const getNextColor = (options: React.ReactElement<Select2OptionProps>[]): Color | undefined => {\n let occurrences = {} as Record<Color, number>;\n AVAILABLE_COLORS.filter(color => color !== 'transparent').forEach((color: Color) => {\n occurrences = { ...occurrences, [color]: 0 };\n });\n\n options.reduce((occurrences, option) => {\n if (option.props.color) {\n occurrences[option.props.color] = occurrences[option.props.color] ? occurrences[option.props.color] + 1 : 1;\n }\n return occurrences;\n }, occurrences);\n\n const colors = Object.keys(occurrences);\n\n if (colors.length) {\n return colors.sort((a: string, b: string) => occurrences[a as Color] - occurrences[b as Color])[0] as Color;\n }\n\n return undefined;\n};\n\nexport const Create = (props: CreateProps) => {\n const { onCreate: handleCreate, options } = props;\n const { multiple, searchQuery, setOpen, setSearchQuery, setValidationError, setValue, createDialog, createTriggerText } =\n useSelect2Context();\n const { texts } = useLocalization();\n\n // determine what the next color tag should be based on color occurences\n const nextColor = React.useMemo(() => getNextColor(options), [options]);\n\n const onCreateDialogClose = React.useCallback(() => {\n setOpen(false);\n }, [setOpen]);\n\n if (!createDialog && !searchQuery) {\n return null;\n }\n\n const create = async (value?: string | unknown) => {\n try {\n const item = await handleCreate(value, nextColor);\n setValue(item.value);\n\n if (multiple) {\n setSearchQuery('');\n } else {\n setOpen(false);\n }\n } catch (error) {\n setValidationError(error as Error);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (isAriaSelectionKey(event)) {\n event.currentTarget.click();\n }\n };\n\n const className = cn(createOptionClassName(), {\n '!w-[calc(100%_-_theme(spacing.3))] ml-1.5': !createDialog,\n 'leading-normal border-grey-300 h-9 border-t py-2.5 px-4 !-mb-1.5': !!createDialog,\n });\n\n const creationOptions = createDialog\n ? {\n dialog: (props: Partial<DialogProps>) =>\n createDialog({ ...props, onClose: onCreateDialogClose }, searchQuery, create),\n }\n : {\n onClick: () => create(searchQuery),\n };\n\n const createText = createTriggerText || texts.select2.create;\n\n return (\n <Button\n className={className}\n {...creationOptions}\n onKeyDown={handleKeyDown}\n appearance={createDialog ? 'discrete' : 'default'}>\n <span className=\"flex items-center gap-1.5\">\n {createDialog ? (\n <>\n <Icon className=\"text-xs\" name=\"circle-plus\" /> {createText}\n </>\n ) : (\n <>\n {createText}\n <Tag color={nextColor} className=\"cursor-pointer\">\n {searchQuery}\n </Tag>\n </>\n )}\n </span>\n </Button>\n );\n};\n"],"names":["getNextColor","options","occurrences","AVAILABLE_COLORS","filter","color","forEach","reduce","option","props","colors","Object","keys","length","sort","a","b","undefined","Create","onCreate","handleCreate","multiple","searchQuery","setOpen","setSearchQuery","setValidationError","setValue","createDialog","createTriggerText","useSelect2Context","texts","useLocalization","nextColor","React","useMemo","onCreateDialogClose","useCallback","create","value","Promise","resolve","then","item","error","_temp","e","reject","handleKeyDown","event","isAriaSelectionKey","currentTarget","click","className","cn","createOptionClassName","creationOptions","dialog","onClose","onClick","createText","select2","Button","onKeyDown","appearance","Icon","name","Tag"],"mappings":"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"}
@@ -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, BadgeProps } from '../../Badge/Badge';\nimport { getInputClasses } from '../../Input/util';\nimport { Select2OptionValue } from '../types';\nimport { useSelect2Context } from './Context';\nimport { Select2OptionProps } from './Option';\nimport { getIndexOfFirstChildOverflowingParent, isElementInsideOrTriggeredFromContainer } 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, readOnly, ...props }: { disabled: boolean; readOnly: boolean; children: React.ReactNode }) => {\n if (readOnly) {\n return null;\n }\n return <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, onBlur, onClick, onFocus, tabIndex = 0, ...otherProps } = props;\n const { disabled, fontSize, highlighted, invalid, open, readOnly } = useSelect2Context();\n\n const className = cn(\n '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 'select-text': readOnly,\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 let handleBlur;\n\n if (typeof onBlur === 'function') {\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 if (isElementInsideOrTriggeredFromContainer(event.relatedTarget, event.currentTarget)) {\n return;\n }\n\n onBlur(event);\n };\n }\n\n // select the value text if the select is readonly\n const handleFocus = (event: React.FocusEvent<HTMLButtonElement>) => {\n if (readOnly) {\n const value = event.currentTarget.querySelector(':first-child');\n\n if (value) {\n window.getSelection()?.selectAllChildren?.(value);\n }\n }\n\n if (typeof onFocus === 'function') {\n onFocus(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 onBlur={handleBlur}\n onFocus={handleFocus}\n ref={ref}\n role=\"combobox\"\n tabIndex={disabled ? -1 : tabIndex}\n type=\"button\">\n {children}\n {readOnly ? null : <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 flex items-center gap-1');\n\n const currentValue = children.find(matchesValue(value));\n\n let output;\n\n if (placeholder && currentValue === undefined) {\n output = (\n <Placeholder disabled={disabled} readOnly={readOnly}>\n {placeholder}\n </Placeholder>\n );\n } else if (currentValue) {\n if (tags && emptyValue !== value) {\n if (typeof currentValue.props.children === 'string')\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 output = currentValue.props.children;\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 const forwardClick = (event: React.MouseEvent) => {\n event.preventDefault();\n buttonRef.current?.click();\n };\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\" onClick={forwardClick}>\n <div className=\"flex flex-wrap gap-1\">\n {valuesAsChildren.length === 0 ? (\n <Placeholder disabled={disabled} readOnly={readOnly}>\n {placeholder}\n </Placeholder>\n ) : (\n valuesAsChildren.map(child =>\n typeof child.props.children === 'string' ? (\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 React.cloneElement(\n child.props.children as React.ReactElement<\n typeof Badge & {\n children: BadgeProps['children'];\n className: BadgeProps['className'];\n }\n >,\n {\n key: String(child.props.value),\n className: '!pr-0 !pl-1.5',\n children: (\n <span className=\"flex items-center\">\n {(child.props.children as React.ReactElement).props.children}\n <Icon\n name=\"close\"\n onClick={event => {\n event?.stopPropagation();\n event?.preventDefault();\n\n if (!disabled && !readOnly) {\n setValue(child.props.value);\n }\n }}\n className=\"ml-0.5 !h-5 !w-5 shrink-0 cursor-pointer rounded-r p-0.5 hover:bg-black/5\"\n />\n </span>\n ),\n }\n )\n )\n )\n )}\n </div>\n </ScrollArea>\n );\n } else {\n content = <MultipleValue onClick={forwardClick} 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 onClick?: (event: any) => void;\n};\n\nconst MultipleValue = ({ onClick, valuesAsChildren, placeholder }: MultipleValueProps) => {\n const { disabled, readOnly, tags } = useSelect2Context();\n const [contentRef, setContentRef] = React.useState<HTMLDivElement | null>(null);\n const boundaryIndex = contentRef ? getIndexOfFirstChildOverflowingParent(contentRef, 30) : undefined;\n\n // Retrieves the relevant text content from any JSX.Element passed as a select option, handling nested elements, arrays, and direct text\n const getTooltipTitle = (child: React.ReactElement): string | string[] => {\n const children = child.props.children;\n\n if (typeof children === 'string') return children;\n if (typeof children.props.children === 'string') {\n return children.props.children;\n }\n\n if (Array.isArray(children.props.children)) {\n return children.props.children.filter(item => typeof item === 'string');\n }\n\n return '';\n };\n\n return (\n <div className=\"relative flex w-full items-center gap-1 overflow-hidden\" onClick={onClick}>\n <div className=\"flex flex-1 gap-1 truncate\" ref={ref => setContentRef(ref)}>\n {valuesAsChildren.length === 0 ? (\n <Placeholder disabled={disabled} readOnly={readOnly}>\n {placeholder}\n </Placeholder>\n ) : (\n valuesAsChildren.map((child, index) => {\n const classNames = {\n truncate: index === boundaryIndex,\n hidden: boundaryIndex !== undefined && boundaryIndex !== null ? index > boundaryIndex : false,\n };\n let output;\n if (typeof child.props.children === 'string') {\n output = (\n <Tag\n key={String(child.props.value)}\n className={cn('cursor-pointer', classNames)}\n color={tags ? child.props.color : undefined}\n disabled={disabled}\n icon={child.props.prefix}\n readOnly={readOnly}>\n {child.props.children}\n </Tag>\n );\n } else\n output = React.cloneElement(\n child.props.children as React.ReactElement<\n typeof Badge & {\n className: BadgeProps['className'];\n }\n >,\n {\n className: cn('cursor-pointer', { 'shrink-0': index !== boundaryIndex }, classNames),\n key: String(child.props.value),\n }\n );\n\n if (index === boundaryIndex) {\n return (\n <Tooltip key={String(child.props.value)} title={String(getTooltipTitle(child))}>\n {output}\n </Tooltip>\n );\n }\n\n return output;\n })\n )}\n </div>\n\n {boundaryIndex !== undefined && boundaryIndex !== null && boundaryIndex < valuesAsChildren.length - 1 ? (\n <Tooltip\n title={valuesAsChildren\n .slice(boundaryIndex + 1)\n .map(child => (child ? String(getTooltipTitle(child)) : ''))\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","readOnly","props","React","className","cn","Trigger","forwardRef","Select2Trigger","ref","multiple","value","useSelect2Context","Array","isArray","values","undefined","Multiple","Single","Button","Select2TriggerButton","children","onBlur","onClick","onFocus","tabIndex","otherProps","fontSize","highlighted","invalid","open","getInputClasses","replace","getFontSize","_props$className","includes","handleClick","event","preventDefault","handleBlur","isElementInsideOrTriggeredFromContainer","relatedTarget","currentTarget","handleFocus","querySelector","_window$getSelection","_window$getSelection$","window","getSelection","selectAllChildren","call","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","forwardClick","_buttonRef$current","current","click","content","ScrollArea","length","child","key","String","onDelete","stopPropagation","cloneElement","MultipleValue","style","width","_buttonRef$current2","offsetWidth","contentRef","setContentRef","useState","boundaryIndex","getIndexOfFirstChildOverflowingParent","getTooltipTitle","item","index","classNames","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, BadgeProps } from '../../Badge/Badge';\nimport { getInputClasses } from '../../Input/util';\nimport { Select2OptionValue } from '../types';\nimport { useSelect2Context } from './Context';\nimport { Select2OptionProps } from './Option';\nimport { getIndexOfFirstChildOverflowingParent, isElementInsideOrTriggeredFromContainer } 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, readOnly, ...props }: { disabled: boolean; readOnly: boolean; children: React.ReactNode }) => {\n if (readOnly) {\n return null;\n }\n return <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, onBlur, onClick, onFocus, tabIndex = 0, ...otherProps } = props;\n const { disabled, fontSize, highlighted, invalid, open, readOnly } = useSelect2Context();\n\n const className = cn(\n '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 'select-text': readOnly,\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 let handleBlur;\n\n if (typeof onBlur === 'function') {\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 if (isElementInsideOrTriggeredFromContainer(event.relatedTarget, event.currentTarget)) {\n return;\n }\n\n onBlur(event);\n };\n }\n\n // select the value text if the select is readonly\n const handleFocus = (event: React.FocusEvent<HTMLButtonElement>) => {\n if (readOnly) {\n const value = event.currentTarget.querySelector(':first-child');\n\n if (value) {\n window.getSelection()?.selectAllChildren?.(value);\n }\n }\n\n if (typeof onFocus === 'function') {\n onFocus(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 onBlur={handleBlur}\n onFocus={handleFocus}\n ref={ref}\n role=\"combobox\"\n tabIndex={disabled ? -1 : tabIndex}\n type=\"button\">\n {children}\n {readOnly ? null : <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 flex items-center gap-1');\n\n const currentValue = children.find(matchesValue(value));\n\n let output;\n\n if (placeholder && currentValue === undefined) {\n output = (\n <Placeholder disabled={disabled} readOnly={readOnly}>\n {placeholder}\n </Placeholder>\n );\n } else if (currentValue) {\n if (tags && emptyValue !== value) {\n if (typeof currentValue.props.children === 'string')\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 output = currentValue.props.children;\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 const forwardClick = (event: React.MouseEvent) => {\n event.preventDefault();\n buttonRef.current?.click();\n };\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\" onClick={forwardClick}>\n <div className=\"flex flex-wrap gap-1\">\n {valuesAsChildren.length === 0 ? (\n <Placeholder disabled={disabled} readOnly={readOnly}>\n {placeholder}\n </Placeholder>\n ) : (\n valuesAsChildren.map(child =>\n typeof child.props.children === 'string' ? (\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 React.cloneElement(\n child.props.children as React.ReactElement<\n typeof Badge & {\n children: BadgeProps['children'];\n className: BadgeProps['className'];\n }\n >,\n {\n key: String(child.props.value),\n className: '!pr-0 !pl-1.5',\n children: (\n <span className=\"flex items-center\">\n {(child.props.children as React.ReactElement).props.children}\n <Icon\n name=\"close\"\n onClick={event => {\n event?.stopPropagation();\n event?.preventDefault();\n\n if (!disabled && !readOnly) {\n setValue(child.props.value);\n }\n }}\n className=\"ml-0.5 !h-5 !w-5 shrink-0 cursor-pointer rounded-r p-0.5 hover:bg-black/5\"\n />\n </span>\n ),\n }\n )\n )\n )\n )}\n </div>\n </ScrollArea>\n );\n } else {\n content = <MultipleValue onClick={forwardClick} 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 onClick?: (event: any) => void;\n};\n\nconst MultipleValue = ({ onClick, valuesAsChildren, placeholder }: MultipleValueProps) => {\n const { disabled, readOnly, tags } = useSelect2Context();\n const [contentRef, setContentRef] = React.useState<HTMLDivElement | null>(null);\n const boundaryIndex = contentRef ? getIndexOfFirstChildOverflowingParent(contentRef, 30) : undefined;\n\n // Retrieves the relevant text content from any JSX.Element passed as a select option, handling nested elements, arrays, and direct text\n const getTooltipTitle = (child: React.ReactElement): string | string[] => {\n const children = child.props.children;\n\n if (typeof children === 'string') return children;\n if (typeof children.props.children === 'string') {\n return children.props.children;\n }\n\n if (Array.isArray(children.props.children)) {\n return children.props.children.filter((item: any) => typeof item === 'string');\n }\n\n return '';\n };\n\n return (\n <div className=\"relative flex w-full items-center gap-1 overflow-hidden\" onClick={onClick}>\n <div className=\"flex flex-1 gap-1 truncate\" ref={ref => setContentRef(ref)}>\n {valuesAsChildren.length === 0 ? (\n <Placeholder disabled={disabled} readOnly={readOnly}>\n {placeholder}\n </Placeholder>\n ) : (\n valuesAsChildren.map((child, index) => {\n const classNames = {\n truncate: index === boundaryIndex,\n hidden: boundaryIndex !== undefined && boundaryIndex !== null ? index > boundaryIndex : false,\n };\n let output;\n if (typeof child.props.children === 'string') {\n output = (\n <Tag\n key={String(child.props.value)}\n className={cn('cursor-pointer', classNames)}\n color={tags ? child.props.color : undefined}\n disabled={disabled}\n icon={child.props.prefix}\n readOnly={readOnly}>\n {child.props.children}\n </Tag>\n );\n } else\n output = React.cloneElement(\n child.props.children as React.ReactElement<\n typeof Badge & {\n className: BadgeProps['className'];\n }\n >,\n {\n className: cn('cursor-pointer', { 'shrink-0': index !== boundaryIndex }, classNames),\n key: String(child.props.value),\n }\n );\n\n if (index === boundaryIndex) {\n return (\n <Tooltip key={String(child.props.value)} title={String(getTooltipTitle(child))}>\n {output}\n </Tooltip>\n );\n }\n\n return output;\n })\n )}\n </div>\n\n {boundaryIndex !== undefined && boundaryIndex !== null && boundaryIndex < valuesAsChildren.length - 1 ? (\n <Tooltip\n title={valuesAsChildren\n .slice(boundaryIndex + 1)\n .map(child => (child ? String(getTooltipTitle(child)) : ''))\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","readOnly","props","React","className","cn","Trigger","forwardRef","Select2Trigger","ref","multiple","value","useSelect2Context","Array","isArray","values","undefined","Multiple","Single","Button","Select2TriggerButton","children","onBlur","onClick","onFocus","tabIndex","otherProps","fontSize","highlighted","invalid","open","getInputClasses","replace","getFontSize","_props$className","includes","handleClick","event","preventDefault","handleBlur","isElementInsideOrTriggeredFromContainer","relatedTarget","currentTarget","handleFocus","querySelector","_window$getSelection","_window$getSelection$","window","getSelection","selectAllChildren","call","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","forwardClick","_buttonRef$current","current","click","content","ScrollArea","length","child","key","String","onDelete","stopPropagation","cloneElement","MultipleValue","style","width","_buttonRef$current2","offsetWidth","contentRef","setContentRef","useState","boundaryIndex","getIndexOfFirstChildOverflowingParent","getTooltipTitle","item","index","classNames","truncate","hidden","Tooltip","title","slice","join","Badge"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import React__default from 'react';
2
2
  import { IconButton } from '../../../IconButton/IconButton.js';
3
3
  import { Menu } from '../../../Menu/Menu.js';
4
- import { InView } from 'react-intersection-observer';
5
4
  import { sanitizeRowProps } from '../../util.js';
5
+ import { InView } from 'react-intersection-observer';
6
6
 
7
7
  const actionGroupClassName = '-mt-1 -mb-1 h-8 flex';
8
8
  const hasActions = (inlineEditingUniqueId, handlers, actions) => {
@@ -1 +1 @@
1
- {"version":3,"file":"useRowSelect.js","sources":["../../../../../../../../../src/components/Table/hooks/plugins/useRowSelect.tsx"],"sourcesContent":["// this wraps react-table's internal useRowSelect hook\nimport React from 'react';\nimport { useRowSelect as useBaseRowSelect, Row, PluginHook } from 'react-table';\nimport { Checkbox } from '../../../Checkbox/Checkbox';\nimport { SelectedRowsHandler } from '../../types';\n\nconst toggleBetween = (fromRowIndex: number, toRowIndex: number): [number, number] => {\n const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;\n const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;\n\n return [fromIndex, toIndex];\n};\n\n// react-table calls \"index paths\" row ids. we named them indexPaths to reduce confusion with natural ids\n// the selection hook usess react-table's row selection, so this hok references row.id - it is the index path\n\nexport const useRowSelect = (onSelectedRows: SelectedRowsHandler | undefined): PluginHook<{}> => {\n const plugin = (hooks: any): void => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useBaseRowSelect(hooks);\n\n if (onSelectedRows) {\n const toggleRowSelected = (indexPath: string, checked: boolean): void =>\n onSelectedRows(state => {\n const nextState = { ...state };\n\n if (checked) {\n nextState[indexPath] = true;\n } else {\n delete nextState[indexPath];\n }\n\n return nextState;\n });\n\n const prepareRow = (row: any) => {\n row.toggleRowSelected = () => toggleRowSelected(row.id, !row.isSelected);\n };\n\n hooks.prepareRow.push(prepareRow);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const lastSelectedSortedIndex = React.useRef();\n\n hooks.visibleColumns.push((columns: any) => [\n {\n id: 'selection',\n Header: ({ getToggleAllRowsSelectedProps, rows }: any) => {\n const { onChange: _, ...props } = getToggleAllRowsSelectedProps();\n\n const onChange = (checked: boolean): void => {\n if (checked) {\n // this intentionally only selects top level rows - sub rows add too much complexity\n onSelectedRows(Object.assign({}, Array(rows.length).fill(true)));\n } else {\n onSelectedRows({});\n }\n };\n\n return <Checkbox {...props} onChange={onChange} />;\n },\n Cell: ({ row, rows }: any) => {\n const { onChange: _, ...props } = row.getToggleRowSelectedProps();\n // row.index refers to the index in the original data, not the current index\n const sortedIndex = rows.findIndex((r: Row) => r.index === row.index);\n\n const onClick = (event: React.MouseEvent): void => {\n if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(lastSelectedSortedIndex.current || 0, sortedIndex);\n\n for (let i = fromIndex; i <= toIndex; i++) {\n toggleRowSelected(rows[i].id, true);\n }\n } else {\n toggleRowSelected(row.id, !props.checked);\n }\n\n lastSelectedSortedIndex.current = sortedIndex;\n };\n\n return (\n <Checkbox\n {...props}\n className=\"!mt-2.5\"\n onClick={onClick}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n />\n );\n },\n flex: '0 0 36px',\n className: 'flex-col justify-start !py-0',\n },\n ...columns,\n ]);\n }\n };\n plugin.pluginName = 'useRowSelect';\n return plugin;\n};\n"],"names":["toggleBetween","fromRowIndex","toRowIndex","fromIndex","toIndex","useRowSelect","onSelectedRows","plugin","hooks","useBaseRowSelect","toggleRowSelected","indexPath","checked","state","nextState","prepareRow","row","id","isSelected","push","lastSelectedSortedIndex","React","useRef","visibleColumns","columns","Header","getToggleAllRowsSelectedProps","rows","onChange","_","props","Object","assign","Array","length","fill","Checkbox","Cell","getToggleRowSelectedProps","sortedIndex","findIndex","r","index","onClick","event","shiftKey","current","i","className","flex","pluginName"],"mappings":";;;;AAAA;AAMA,MAAMA,aAAa,GAAGA,CAACC,YAAoB,EAAEC,UAAkB;EAC3D,MAAMC,SAAS,GAAGD,UAAU,GAAGD,YAAY,GAAGC,UAAU,GAAGD,YAAY;EACvE,MAAMG,OAAO,GAAGF,UAAU,GAAGD,YAAY,GAAGC,UAAU,GAAGD,YAAY;EAErE,OAAO,CAACE,SAAS,EAAEC,OAAO,CAAC;AAC/B,CAAC;AAED;AACA;MAEaC,YAAY,GAAIC,cAA+C;EACxE,MAAMC,MAAM,GAAIC,KAAU;;IAEtBC,cAAgB,CAACD,KAAK,CAAC;IAEvB,IAAIF,cAAc,EAAE;MAChB,MAAMI,iBAAiB,GAAGA,CAACC,SAAiB,EAAEC,OAAgB,KAC1DN,cAAc,CAACO,KAAK;QAChB,MAAMC,SAAS,GAAG;UAAE,GAAGD;SAAO;QAE9B,IAAID,OAAO,EAAE;UACTE,SAAS,CAACH,SAAS,CAAC,GAAG,IAAI;SAC9B,MAAM;UACH,OAAOG,SAAS,CAACH,SAAS,CAAC;;QAG/B,OAAOG,SAAS;OACnB,CAAC;MAEN,MAAMC,UAAU,GAAIC,GAAQ;QACxBA,GAAG,CAACN,iBAAiB,GAAG,MAAMA,iBAAiB,CAACM,GAAG,CAACC,EAAE,EAAE,CAACD,GAAG,CAACE,UAAU,CAAC;OAC3E;MAEDV,KAAK,CAACO,UAAU,CAACI,IAAI,CAACJ,UAAU,CAAC;;MAGjC,MAAMK,uBAAuB,GAAGC,cAAK,CAACC,MAAM,EAAE;MAE9Cd,KAAK,CAACe,cAAc,CAACJ,IAAI,CAAEK,OAAY,IAAK,CACxC;QACIP,EAAE,EAAE,WAAW;QACfQ,MAAM,EAAEA,CAAC;UAAEC,6BAA6B;UAAEC;SAAW;UACjD,MAAM;YAAEC,QAAQ,EAAEC,CAAC;YAAE,GAAGC;WAAO,GAAGJ,6BAA6B,EAAE;UAEjE,MAAME,QAAQ,GAAIhB,OAAgB;YAC9B,IAAIA,OAAO,EAAE;;cAETN,cAAc,CAACyB,MAAM,CAACC,MAAM,CAAC,EAAE,EAAEC,KAAK,CAACN,IAAI,CAACO,MAAM,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACnE,MAAM;cACH7B,cAAc,CAAC,EAAE,CAAC;;WAEzB;UAED,oBAAOe,6BAACe,QAAQ,oBAAKN,KAAK;YAAEF,QAAQ,EAAEA;aAAY;SACrD;QACDS,IAAI,EAAEA,CAAC;UAAErB,GAAG;UAAEW;SAAW;UACrB,MAAM;YAAEC,QAAQ,EAAEC,CAAC;YAAE,GAAGC;WAAO,GAAGd,GAAG,CAACsB,yBAAyB,EAAE;;UAEjE,MAAMC,WAAW,GAAGZ,IAAI,CAACa,SAAS,CAAEC,CAAM,IAAKA,CAAC,CAACC,KAAK,KAAK1B,GAAG,CAAC0B,KAAK,CAAC;UAErE,MAAMC,OAAO,GAAIC,KAAuB;YACpC,IAAIA,KAAK,CAACC,QAAQ,EAAE;cAChB,MAAM,CAAC1C,SAAS,EAAEC,OAAO,CAAC,GAAGJ,aAAa,CAACoB,uBAAuB,CAAC0B,OAAO,IAAI,CAAC,EAAEP,WAAW,CAAC;cAE7F,KAAK,IAAIQ,CAAC,GAAG5C,SAAS,EAAE4C,CAAC,IAAI3C,OAAO,EAAE2C,CAAC,EAAE,EAAE;gBACvCrC,iBAAiB,CAACiB,IAAI,CAACoB,CAAC,CAAC,CAAC9B,EAAE,EAAE,IAAI,CAAC;;aAE1C,MAAM;cACHP,iBAAiB,CAACM,GAAG,CAACC,EAAE,EAAE,CAACa,KAAK,CAAClB,OAAO,CAAC;;YAG7CQ,uBAAuB,CAAC0B,OAAO,GAAGP,WAAW;WAChD;UAED,oBACIlB,6BAACe,QAAQ,oBACDN,KAAK;YACTkB,SAAS,EAAC,SAAS;YACnBL,OAAO,EAAEA,OAAO;;YAEhBf,QAAQ,EAAEA,MAAM;aAClB;SAET;QACDqB,IAAI,EAAE,UAAU;QAChBD,SAAS,EAAE;OACd,EACD,GAAGxB,OAAO,CACb,CAAC;;GAET;EACDjB,MAAM,CAAC2C,UAAU,GAAG,cAAc;EAClC,OAAO3C,MAAM;AACjB;;;;"}
1
+ {"version":3,"file":"useRowSelect.js","sources":["../../../../../../../../../src/components/Table/hooks/plugins/useRowSelect.tsx"],"sourcesContent":["// this wraps react-table's internal useRowSelect hook\nimport React from 'react';\nimport { useRowSelect as useBaseRowSelect, Row, PluginHook } from 'react-table';\nimport { Checkbox } from '../../../Checkbox/Checkbox';\nimport { SelectedRowsHandler } from '../../types';\n\nconst toggleBetween = (fromRowIndex: number, toRowIndex: number): [number, number] => {\n const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;\n const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;\n\n return [fromIndex, toIndex];\n};\n\n// react-table calls \"index paths\" row ids. we named them indexPaths to reduce confusion with natural ids\n// the selection hook usess react-table's row selection, so this hok references row.id - it is the index path\n\nexport const useRowSelect = (onSelectedRows: SelectedRowsHandler | undefined): PluginHook<{}> => {\n const plugin = (hooks: any): void => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useBaseRowSelect(hooks);\n\n if (onSelectedRows) {\n const toggleRowSelected = (indexPath: string, checked: boolean): void =>\n onSelectedRows(state => {\n const nextState = { ...state };\n\n if (checked) {\n nextState[indexPath as any] = true;\n } else {\n delete nextState[indexPath as any];\n }\n\n return nextState;\n });\n\n const prepareRow = (row: any) => {\n row.toggleRowSelected = () => toggleRowSelected(row.id, !row.isSelected);\n };\n\n hooks.prepareRow.push(prepareRow);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const lastSelectedSortedIndex = React.useRef();\n\n hooks.visibleColumns.push((columns: any) => [\n {\n id: 'selection',\n Header: ({ getToggleAllRowsSelectedProps, rows }: any) => {\n const { onChange: _, ...props } = getToggleAllRowsSelectedProps();\n\n const onChange = (checked: boolean): void => {\n if (checked) {\n // this intentionally only selects top level rows - sub rows add too much complexity\n onSelectedRows(Object.assign({}, Array(rows.length).fill(true)));\n } else {\n onSelectedRows({});\n }\n };\n\n return <Checkbox {...props} onChange={onChange} />;\n },\n Cell: ({ row, rows }: any) => {\n const { onChange: _, ...props } = row.getToggleRowSelectedProps();\n // row.index refers to the index in the original data, not the current index\n const sortedIndex = rows.findIndex((r: Row) => r.index === row.index);\n\n const onClick = (event: React.MouseEvent): void => {\n if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(lastSelectedSortedIndex.current || 0, sortedIndex);\n\n for (let i = fromIndex; i <= toIndex; i++) {\n toggleRowSelected(rows[i].id, true);\n }\n } else {\n toggleRowSelected(row.id, !props.checked);\n }\n\n lastSelectedSortedIndex.current = sortedIndex;\n };\n\n return (\n <Checkbox\n {...props}\n className=\"!mt-2.5\"\n onClick={onClick}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n />\n );\n },\n flex: '0 0 36px',\n className: 'flex-col justify-start !py-0',\n },\n ...columns,\n ]);\n }\n };\n plugin.pluginName = 'useRowSelect';\n return plugin;\n};\n"],"names":["toggleBetween","fromRowIndex","toRowIndex","fromIndex","toIndex","useRowSelect","onSelectedRows","plugin","hooks","useBaseRowSelect","toggleRowSelected","indexPath","checked","state","nextState","prepareRow","row","id","isSelected","push","lastSelectedSortedIndex","React","useRef","visibleColumns","columns","Header","getToggleAllRowsSelectedProps","rows","onChange","_","props","Object","assign","Array","length","fill","Checkbox","Cell","getToggleRowSelectedProps","sortedIndex","findIndex","r","index","onClick","event","shiftKey","current","i","className","flex","pluginName"],"mappings":"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"}
@@ -10,7 +10,9 @@ import { TemporaryRow } from './components/Row/Editing/TemporaryRow.js';
10
10
 
11
11
  const Column = () => null;
12
12
  Column.displayName = 'Table3Column';
13
- const Group = () => null;
13
+ function Group(_) {
14
+ return null;
15
+ }
14
16
  Group.displayName = 'Table3Group';
15
17
  const BaseTable3 = /*#__PURE__*/fixedForwardRef(function BaseTable3(props, ref) {
16
18
  var _table3$meta$editing, _table3$meta$editing2;
@@ -27,7 +29,6 @@ const BaseTable3 = /*#__PURE__*/fixedForwardRef(function BaseTable3(props, ref)
27
29
  createWorkflow = /*#__PURE__*/React__default.createElement(CreateNewRow, {
28
30
  buttonRef: table3.meta.editing.createRowButtonRef,
29
31
  isScrolled: isScrolled,
30
- scrollToIndex: table3.renderer.scrollToIndex,
31
32
  table: table3.instance,
32
33
  tableMeta: table3.meta
33
34
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Table3.js","sources":["../../../../../../../src/components/Table3/Table3.tsx"],"sourcesContent":["import React from 'react';\nimport { fixedForwardRef } from '../../types';\nimport { useTable3 } from './useTable3';\nimport { Table } from '../../primitives/Table/Core/Table';\nimport { Alert } from './components/Editing/Alert';\nimport { Table3Props, Table3Ref, Table3ColumnProps, Table3GroupProps } from './types';\nimport { Editing } from './components/Toolbar/Editing/Editing';\nimport { CreateNewRow } from './components/Row/Editing/CreateNewRow';\nimport { TemporaryRow } from './components/Row/Editing/TemporaryRow';\nimport './style.css';\nimport { isTableScrolled } from './util/editing';\n\nconst Column: React.FC<Table3ColumnProps<unknown>> & {\n <TType = unknown>(_: Table3ColumnProps<TType>): null;\n} = () => null;\nColumn.displayName = 'Table3Column';\n\nconst Group: React.FC<Table3GroupProps> = () => null;\nGroup.displayName = 'Table3Group';\n\nconst BaseTable3 = fixedForwardRef(function BaseTable3<TType = unknown>(props: Table3Props<TType>, ref: React.Ref<Table3Ref>) {\n const table3 = useTable3<TType>(props, ref);\n\n const gridAttributes = {\n 'data-table-editing-mode': table3.meta.editing?.isEditing\n ? table3.meta.editing?.isDetailedMode\n ? 'detailed'\n : 'normal'\n : undefined,\n enableHorizontalArrowKeyNavigation: table3.meta.editing.isEditing,\n };\n\n const hasAlertErrors = table3.meta.editing.getErrorsShownInAlert().length;\n const hasCreateWorkflow = table3.meta.editing.isEnabled && props.onEditingCreate;\n const isScrolled = isTableScrolled(table3.ref);\n\n let createWorkflow;\n\n if (hasCreateWorkflow) {\n createWorkflow = (\n <CreateNewRow\n buttonRef={table3.meta.editing.createRowButtonRef}\n isScrolled={isScrolled}\n scrollToIndex={table3.renderer.scrollToIndex}\n table={table3.instance}\n tableMeta={table3.meta}\n />\n );\n }\n\n return (\n <Table>\n <Table.Toolbar<TType> table={table3}>\n {table3.meta.editing.isEnabled ? (\n <Editing scrollToIndex={table3.renderer.scrollToIndex} table={table3.instance} />\n ) : null}\n </Table.Toolbar>\n {hasAlertErrors ? (\n <Alert\n className=\"mb-4\"\n scrollToIndex={table3.renderer.scrollToIndex}\n table={table3.instance}\n tableRef={table3.ref}\n />\n ) : null}\n <Table.Grid<TType>\n {...gridAttributes}\n data-taco=\"table3\"\n footerRows={hasCreateWorkflow && isScrolled ? createWorkflow : undefined}\n table={table3}>\n {hasCreateWorkflow ? (\n <>\n <TemporaryRow\n createRowButtonRef={table3.meta.editing.createRowButtonRef}\n isScrolled={isScrolled}\n table={table3.instance}\n tableMeta={table3.meta}\n tableRef={table3.ref}\n />\n {!isScrolled ? createWorkflow : null}\n </>\n ) : null}\n </Table.Grid>\n </Table>\n );\n});\n\nexport const Table3 = fixedForwardRef(function Table3<TType = unknown>(props: Table3Props<TType>, ref: React.Ref<Table3Ref>) {\n const stringifiedChildren = String(props.children);\n // we force a remount (using key) when the child columns change because there are too many places to add children as an effect\n // this is cheaper from a complexity perspective, and probably performance wise as well\n const key = React.useMemo(() => String('tableKey_' + stringifiedChildren), [stringifiedChildren]);\n return <BaseTable3<TType> {...props} key={key} ref={ref} />;\n}) as (<TType = unknown>(props: Table3Props<TType> & React.RefAttributes<Table3Ref>) => JSX.Element) & {\n Column: typeof Column;\n Group: typeof Group;\n};\nTable3.Column = Column;\nTable3.Group = Group;\n\nexport type {\n Table3Ref,\n Table3Props,\n Table3ColumnProps,\n Table3GroupProps,\n Table3EditingSaveHandler,\n Table3EditingValidatorFn,\n Table3Texts,\n Table3FeatureProps,\n Table3CommonProps,\n Table3WithoutEditingWithClientProps,\n Table3WithoutEditingWithServerProps,\n Table3WithEditingProps,\n Table3WithEditingWithClientProps,\n Table3WithEditingWithServerProps,\n Table3EditingChangeHandler,\n Table3EditingCreateHandler,\n} from './types';\n"],"names":["Column","displayName","Group","BaseTable3","fixedForwardRef","props","ref","table3","useTable3","gridAttributes","_table3$meta$editing","meta","editing","isEditing","_table3$meta$editing2","isDetailedMode","undefined","enableHorizontalArrowKeyNavigation","hasAlertErrors","getErrorsShownInAlert","length","hasCreateWorkflow","isEnabled","onEditingCreate","isScrolled","isTableScrolled","createWorkflow","React","CreateNewRow","buttonRef","createRowButtonRef","scrollToIndex","renderer","table","instance","tableMeta","Table","Toolbar","Editing","Alert","className","tableRef","Grid","footerRows","TemporaryRow","Table3","stringifiedChildren","String","children","key","useMemo"],"mappings":";;;;;;;;;;AAYA,MAAMA,MAAM,GAERA,MAAM,IAAI;AACdA,MAAM,CAACC,WAAW,GAAG,cAAc;AAEnC,MAAMC,KAAK,GAA+BA,MAAM,IAAI;AACpDA,KAAK,CAACD,WAAW,GAAG,aAAa;AAEjC,MAAME,UAAU,gBAAGC,eAAe,CAAC,SAASD,UAAUA,CAAkBE,KAAyB,EAAEC,GAAyB;;EACxH,MAAMC,MAAM,GAAGC,SAAS,CAAQH,KAAK,EAAEC,GAAG,CAAC;EAE3C,MAAMG,cAAc,GAAG;IACnB,yBAAyB,EAAE,CAAAC,oBAAA,GAAAH,MAAM,CAACI,IAAI,CAACC,OAAO,cAAAF,oBAAA,eAAnBA,oBAAA,CAAqBG,SAAS,GACnD,CAAAC,qBAAA,GAAAP,MAAM,CAACI,IAAI,CAACC,OAAO,cAAAE,qBAAA,eAAnBA,qBAAA,CAAqBC,cAAc,GAC/B,UAAU,GACV,QAAQ,GACZC,SAAS;IACfC,kCAAkC,EAAEV,MAAM,CAACI,IAAI,CAACC,OAAO,CAACC;GAC3D;EAED,MAAMK,cAAc,GAAGX,MAAM,CAACI,IAAI,CAACC,OAAO,CAACO,qBAAqB,EAAE,CAACC,MAAM;EACzE,MAAMC,iBAAiB,GAAGd,MAAM,CAACI,IAAI,CAACC,OAAO,CAACU,SAAS,IAAIjB,KAAK,CAACkB,eAAe;EAChF,MAAMC,UAAU,GAAGC,eAAe,CAAClB,MAAM,CAACD,GAAG,CAAC;EAE9C,IAAIoB,cAAc;EAElB,IAAIL,iBAAiB,EAAE;IACnBK,cAAc,gBACVC,6BAACC,YAAY;MACTC,SAAS,EAAEtB,MAAM,CAACI,IAAI,CAACC,OAAO,CAACkB,kBAAkB;MACjDN,UAAU,EAAEA,UAAU;MACtBO,aAAa,EAAExB,MAAM,CAACyB,QAAQ,CAACD,aAAa;MAC5CE,KAAK,EAAE1B,MAAM,CAAC2B,QAAQ;MACtBC,SAAS,EAAE5B,MAAM,CAACI;MAEzB;;EAGL,oBACIgB,6BAACS,KAAK,qBACFT,6BAACS,KAAK,CAACC,OAAO;IAAQJ,KAAK,EAAE1B;KACxBA,MAAM,CAACI,IAAI,CAACC,OAAO,CAACU,SAAS,iBAC1BK,6BAACW,OAAO;IAACP,aAAa,EAAExB,MAAM,CAACyB,QAAQ,CAACD,aAAa;IAAEE,KAAK,EAAE1B,MAAM,CAAC2B;IAAY,IACjF,IAAI,CACI,EACfhB,cAAc,iBACXS,6BAACY,KAAK;IACFC,SAAS,EAAC,MAAM;IAChBT,aAAa,EAAExB,MAAM,CAACyB,QAAQ,CAACD,aAAa;IAC5CE,KAAK,EAAE1B,MAAM,CAAC2B,QAAQ;IACtBO,QAAQ,EAAElC,MAAM,CAACD;IACnB,IACF,IAAI,eACRqB,6BAACS,KAAK,CAACM,IAAI,oBACHjC,cAAc;iBACR,QAAQ;IAClBkC,UAAU,EAAEtB,iBAAiB,IAAIG,UAAU,GAAGE,cAAc,GAAGV,SAAS;IACxEiB,KAAK,EAAE1B;MACNc,iBAAiB,iBACdM,yEACIA,6BAACiB,YAAY;IACTd,kBAAkB,EAAEvB,MAAM,CAACI,IAAI,CAACC,OAAO,CAACkB,kBAAkB;IAC1DN,UAAU,EAAEA,UAAU;IACtBS,KAAK,EAAE1B,MAAM,CAAC2B,QAAQ;IACtBC,SAAS,EAAE5B,MAAM,CAACI,IAAI;IACtB8B,QAAQ,EAAElC,MAAM,CAACD;IACnB,EACD,CAACkB,UAAU,GAAGE,cAAc,GAAG,IAAI,CACrC,IACH,IAAI,CACC,CACT;AAEhB,CAAC,CAAC;MAEWmB,MAAM,gBAAGzC,eAAe,CAAC,SAASyC,MAAMA,CAAkBxC,KAAyB,EAAEC,GAAyB;EACvH,MAAMwC,mBAAmB,GAAGC,MAAM,CAAC1C,KAAK,CAAC2C,QAAQ,CAAC;;;EAGlD,MAAMC,GAAG,GAAGtB,cAAK,CAACuB,OAAO,CAAC,MAAMH,MAAM,CAAC,WAAW,GAAGD,mBAAmB,CAAC,EAAE,CAACA,mBAAmB,CAAC,CAAC;EACjG,oBAAOnB,6BAACxB,UAAU,oBAAYE,KAAK;IAAE4C,GAAG,EAAEA,GAAG;IAAE3C,GAAG,EAAEA;KAAO;AAC/D,CAAC;AAIDuC,MAAM,CAAC7C,MAAM,GAAGA,MAAM;AACtB6C,MAAM,CAAC3C,KAAK,GAAGA,KAAK;;;;"}
1
+ {"version":3,"file":"Table3.js","sources":["../../../../../../../src/components/Table3/Table3.tsx"],"sourcesContent":["import React from 'react';\nimport { fixedForwardRef } from '../../types';\nimport { useTable3 } from './useTable3';\nimport { Table } from '../../primitives/Table/Core/Table';\nimport { Alert } from './components/Editing/Alert';\nimport { Table3Props, Table3Ref, Table3ColumnProps, Table3GroupProps } from './types';\nimport { Editing } from './components/Toolbar/Editing/Editing';\nimport { CreateNewRow } from './components/Row/Editing/CreateNewRow';\nimport { TemporaryRow } from './components/Row/Editing/TemporaryRow';\nimport './style.css';\nimport { isTableScrolled } from './util/editing';\n\nconst Column: React.FC<Table3ColumnProps<unknown>> & {\n <TType = unknown>(_: Table3ColumnProps<TType>): null;\n} = () => null;\n\nColumn.displayName = 'Table3Column';\n\nfunction Group(_: Table3GroupProps) {\n return null;\n}\nGroup.displayName = 'Table3Group';\n\nconst BaseTable3 = fixedForwardRef(function BaseTable3<TType = unknown>(props: Table3Props<TType>, ref: React.Ref<Table3Ref>) {\n const table3 = useTable3<TType>(props, ref);\n\n const gridAttributes = {\n 'data-table-editing-mode': table3.meta.editing?.isEditing\n ? table3.meta.editing?.isDetailedMode\n ? 'detailed'\n : 'normal'\n : undefined,\n enableHorizontalArrowKeyNavigation: table3.meta.editing.isEditing,\n };\n\n const hasAlertErrors = table3.meta.editing.getErrorsShownInAlert().length;\n const hasCreateWorkflow = table3.meta.editing.isEnabled && props.onEditingCreate;\n const isScrolled = isTableScrolled(table3.ref);\n\n let createWorkflow;\n\n if (hasCreateWorkflow) {\n createWorkflow = (\n <CreateNewRow\n buttonRef={table3.meta.editing.createRowButtonRef}\n isScrolled={isScrolled}\n table={table3.instance}\n tableMeta={table3.meta}\n />\n );\n }\n\n return (\n <Table>\n <Table.Toolbar<TType> table={table3}>\n {table3.meta.editing.isEnabled ? (\n <Editing scrollToIndex={table3.renderer.scrollToIndex} table={table3.instance} />\n ) : null}\n </Table.Toolbar>\n {hasAlertErrors ? (\n <Alert\n className=\"mb-4\"\n scrollToIndex={table3.renderer.scrollToIndex}\n table={table3.instance}\n tableRef={table3.ref}\n />\n ) : null}\n <Table.Grid<TType>\n {...gridAttributes}\n data-taco=\"table3\"\n footerRows={hasCreateWorkflow && isScrolled ? createWorkflow : undefined}\n table={table3}>\n {hasCreateWorkflow ? (\n <>\n <TemporaryRow\n createRowButtonRef={table3.meta.editing.createRowButtonRef}\n isScrolled={isScrolled}\n table={table3.instance}\n tableMeta={table3.meta}\n tableRef={table3.ref}\n />\n {!isScrolled ? createWorkflow : null}\n </>\n ) : null}\n </Table.Grid>\n </Table>\n );\n});\n\nexport const Table3 = fixedForwardRef(function Table3<TType = unknown>(props: Table3Props<TType>, ref: React.Ref<Table3Ref>) {\n const stringifiedChildren = String(props.children);\n // we force a remount (using key) when the child columns change because there are too many places to add children as an effect\n // this is cheaper from a complexity perspective, and probably performance wise as well\n const key = React.useMemo(() => String('tableKey_' + stringifiedChildren), [stringifiedChildren]);\n return <BaseTable3<TType> {...props} key={key} ref={ref} />;\n}) as (<TType = unknown>(props: Table3Props<TType> & React.RefAttributes<Table3Ref>) => React.JSX.Element) & {\n Column: typeof Column;\n Group: typeof Group;\n};\nTable3.Column = Column;\nTable3.Group = Group;\n\nexport type {\n Table3Ref,\n Table3Props,\n Table3ColumnProps,\n Table3GroupProps,\n Table3EditingSaveHandler,\n Table3EditingValidatorFn,\n Table3Texts,\n Table3FeatureProps,\n Table3CommonProps,\n Table3WithoutEditingWithClientProps,\n Table3WithoutEditingWithServerProps,\n Table3WithEditingProps,\n Table3WithEditingWithClientProps,\n Table3WithEditingWithServerProps,\n Table3EditingChangeHandler,\n Table3EditingCreateHandler,\n} from './types';\n"],"names":["Column","displayName","Group","_","BaseTable3","fixedForwardRef","props","ref","table3","useTable3","gridAttributes","_table3$meta$editing","meta","editing","isEditing","_table3$meta$editing2","isDetailedMode","undefined","enableHorizontalArrowKeyNavigation","hasAlertErrors","getErrorsShownInAlert","length","hasCreateWorkflow","isEnabled","onEditingCreate","isScrolled","isTableScrolled","createWorkflow","React","CreateNewRow","buttonRef","createRowButtonRef","table","instance","tableMeta","Table","Toolbar","Editing","scrollToIndex","renderer","Alert","className","tableRef","Grid","footerRows","TemporaryRow","Table3","stringifiedChildren","String","children","key","useMemo"],"mappings":"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"}
@@ -41,7 +41,7 @@ function EditingControlCell(props) {
41
41
  }, [cellRef.current]);
42
42
  const handleChange = React__default.useCallback(nextValue => {
43
43
  if (nextValue !== value) {
44
- tableMeta.editing.setCellValue(cell, nextValue);
44
+ tableMeta.editing.setCellValue(cell, rowIndex, nextValue);
45
45
  if (hasNonTextControl) {
46
46
  requestAnimationFrame(() => tableMeta.editing.onCellChanged(cell, rowIndex, nextValue));
47
47
  }
@@ -210,11 +210,21 @@ const MemoedEditingCell = /*#__PURE__*/React__default.memo(function MemoedEditin
210
210
  props.onChange(newDate);
211
211
  }
212
212
  };
213
+ const handleDatepickerInputKeyDown = event => {
214
+ // When in detailed mode, we want to handle the change, when 'Enter' is pressed.
215
+ // To make it possible, we just need to prevent handleInputKeyDown from being executed, and give the full control to Datepicker,
216
+ // by doing this, Datepicker will exit "detailed mode" by itself when a valid date change event is triggered.
217
+ // In any other cases we'll just execute the "handleInputKeyDown" handler.
218
+ if (isDetailedMode && event.key === 'Enter' && event.target.value !== '') {
219
+ return;
220
+ }
221
+ handleInputKeyDown(event);
222
+ };
213
223
  return /*#__PURE__*/React__default.createElement(Datepicker, Object.assign({}, commonProps, {
214
224
  invalid: invalid,
215
225
  onChange: handleChange,
216
226
  onFocus: handleFocus,
217
- onKeyDown: handleInputKeyDown,
227
+ onKeyDown: handleDatepickerInputKeyDown,
218
228
  ref: controlRef,
219
229
  value: valueAsDate
220
230
  }));