@economic/taco 1.1.5-alpha.108 → 1.1.5-alpha.127
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.
- package/dist/components/Accordion/Accordion.stories.d.ts +26 -0
- package/dist/components/Backdrop/Backdrop.stories.d.ts +7 -0
- package/dist/components/Badge/Badge.stories.d.ts +15 -0
- package/dist/components/Banner/Banner.stories.d.ts +23 -0
- package/dist/components/Button/Button.stories.d.ts +69 -0
- package/dist/components/Calendar/Calendar.d.ts +3 -1
- package/dist/components/Calendar/Calendar.stories.d.ts +13 -0
- package/dist/components/Card/Card.stories.d.ts +12 -0
- package/dist/components/Datepicker/Datepicker.stories.d.ts +43 -0
- package/dist/components/Dialog/Dialog.d.ts +1 -1
- package/dist/components/Dialog/Dialog.stories.d.ts +54 -0
- package/dist/components/Field/Field.stories.d.ts +14 -0
- package/dist/components/Form/Form.stories.d.ts +14 -0
- package/dist/components/Group/Group.d.ts +11 -1
- package/dist/components/Group/Group.stories.d.ts +23 -0
- package/dist/components/Hanger/Hanger.stories.d.ts +11 -0
- package/dist/components/HoverCard/HoverCard.stories.d.ts +28 -0
- package/dist/components/Icon/Icon.stories.d.ts +24 -0
- package/dist/components/Icon/components/ChevronLeftSolid.d.ts +3 -0
- package/dist/components/Icon/components/ChevronRightSolid.d.ts +3 -0
- package/dist/components/Icon/components/index.d.ts +1 -1
- package/dist/components/IconButton/IconButton.stories.d.ts +45 -0
- package/dist/components/Input/Input.d.ts +1 -1
- package/dist/components/Input/Input.stories.d.ts +43 -0
- package/dist/components/Listbox/Listbox.stories.d.ts +44 -0
- package/dist/components/Menu/Menu.d.ts +2 -2
- package/dist/components/Menu/Menu.stories.d.ts +93 -0
- package/dist/components/Menu/components/Item.d.ts +1 -1
- package/dist/components/Menu/components/Link.d.ts +1 -1
- package/dist/components/Navigation/Navigation.stories.d.ts +7 -0
- package/dist/components/Pagination/Pagination.stories.d.ts +28 -0
- package/dist/components/Popover/Popover.stories.d.ts +14 -0
- package/dist/components/Progress/Progress.stories.d.ts +8 -0
- package/dist/components/RadioGroup/RadioGroup.stories.d.ts +49 -0
- package/dist/components/SearchInput/SearchInput.stories.d.ts +41 -0
- package/dist/components/Select/Select.stories.d.ts +35 -0
- package/dist/components/Spinner/Spinner.stories.d.ts +15 -0
- package/dist/components/Table/Table.stories.d.ts +32 -0
- package/dist/components/Table/util/rowIndexPath.d.ts +2 -2
- package/dist/components/Tabs/Tabs.stories.d.ts +19 -0
- package/dist/components/Textarea/Textarea.stories.d.ts +40 -0
- package/dist/components/Toast/Toast.d.ts +2 -2
- package/dist/components/Toast/Toast.stories.d.ts +12 -0
- package/dist/components/Toast/Toaster.d.ts +2 -2
- package/dist/components/Tooltip/Tooltip.stories.d.ts +25 -0
- package/dist/components/Tour/Tour.stories.d.ts +11 -0
- package/dist/css/Typography.stories.d.ts +6 -0
- package/dist/esm/components/Badge/Badge.js +1 -1
- package/dist/esm/components/Badge/Badge.js.map +1 -1
- package/dist/esm/components/Calendar/Calendar.js +4 -11
- package/dist/esm/components/Calendar/Calendar.js.map +1 -1
- package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/components/Combobox/Combobox.js.map +1 -1
- package/dist/esm/components/Combobox/useCombobox.js +12 -13
- package/dist/esm/components/Combobox/useCombobox.js.map +1 -1
- package/dist/esm/components/Datepicker/Datepicker.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.js +39 -58
- package/dist/esm/components/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/Dialog/components/Content.js.map +1 -1
- package/dist/esm/components/Dialog/components/Drawer.js.map +1 -1
- package/dist/esm/components/Field/Field.js +10 -12
- package/dist/esm/components/Field/Field.js.map +1 -1
- package/dist/esm/components/Form/Form.js +6 -8
- package/dist/esm/components/Form/Form.js.map +1 -1
- package/dist/esm/components/Group/Group.js +9 -8
- package/dist/esm/components/Group/Group.js.map +1 -1
- package/dist/esm/components/Hanger/Hanger.js +27 -35
- package/dist/esm/components/Hanger/Hanger.js.map +1 -1
- package/dist/esm/components/HoverCard/HoverCard.js +8 -9
- package/dist/esm/components/HoverCard/HoverCard.js.map +1 -1
- package/dist/esm/components/Icon/components/ChevronLeftSolid.js +20 -0
- package/dist/esm/components/Icon/components/ChevronLeftSolid.js.map +1 -0
- package/dist/esm/components/Icon/components/ChevronRightSolid.js +20 -0
- package/dist/esm/components/Icon/components/ChevronRightSolid.js.map +1 -0
- package/dist/esm/components/Icon/components/index.js +4 -0
- package/dist/esm/components/Icon/components/index.js.map +1 -1
- package/dist/esm/components/Listbox/ScrollableList.js +2 -2
- package/dist/esm/components/Listbox/ScrollableList.js.map +1 -1
- package/dist/esm/components/Listbox/useListbox.js +3 -2
- package/dist/esm/components/Listbox/useListbox.js.map +1 -1
- package/dist/esm/components/Listbox/useMultiListbox.js +7 -7
- package/dist/esm/components/Listbox/useMultiListbox.js.map +1 -1
- package/dist/esm/components/Menu/components/Content.js.map +1 -1
- package/dist/esm/components/Menu/components/RadioGroup.js.map +1 -1
- package/dist/esm/components/Navigation/Navigation.js +2 -1
- package/dist/esm/components/Navigation/Navigation.js.map +1 -1
- package/dist/esm/components/Pagination/PageNumbers.js.map +1 -1
- package/dist/esm/components/Pagination/usePaginationShortcuts.js +4 -5
- package/dist/esm/components/Pagination/usePaginationShortcuts.js.map +1 -1
- package/dist/esm/components/Popover/Primitives.js.map +1 -1
- package/dist/esm/components/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/esm/components/SearchInput/SearchInput.js +1 -2
- package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/esm/components/Select/useSelect.js +6 -7
- package/dist/esm/components/Select/useSelect.js.map +1 -1
- package/dist/esm/components/Spinner/Spinner.js.map +1 -1
- package/dist/esm/components/Table/components/BaseTable.js.map +1 -1
- package/dist/esm/components/Table/components/WindowedTable.js.map +1 -1
- package/dist/esm/components/Table/hooks/plugins/useRowActions.js +2 -3
- package/dist/esm/components/Table/hooks/plugins/useRowActions.js.map +1 -1
- package/dist/esm/components/Table/hooks/useTable.js +5 -1
- package/dist/esm/components/Table/hooks/useTable.js.map +1 -1
- package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js +18 -13
- package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js.map +1 -1
- package/dist/esm/components/Table/util/rowIndexPath.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.js.map +1 -1
- package/dist/esm/components/Toast/Toast.js +6 -1
- package/dist/esm/components/Toast/Toast.js.map +1 -1
- package/dist/esm/components/Toast/Toaster.js.map +1 -1
- package/dist/esm/components/Toast/util.js.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/Tour/Tour.js +1 -2
- package/dist/esm/components/Tour/Tour.js.map +1 -1
- package/dist/esm/index.css +623 -635
- package/dist/esm/index.js +1 -1
- package/dist/esm/primitives/Button.js.map +1 -1
- package/dist/esm/utils/hooks/useListKeyboardNavigation.js +10 -11
- package/dist/esm/utils/hooks/useListKeyboardNavigation.js.map +1 -1
- package/dist/esm/utils/input.js +1 -1
- package/dist/esm/utils/input.js.map +1 -1
- package/dist/index.css +623 -635
- package/dist/primitives/Button.d.ts +2 -1
- package/dist/taco.cjs.development.js +201 -164
- package/dist/taco.cjs.development.js.map +1 -1
- package/dist/taco.cjs.production.min.js +1 -1
- package/dist/taco.cjs.production.min.js.map +1 -1
- package/dist/utils/hooks/useListKeyboardNavigation.d.ts +1 -1
- package/dist/utils/tailwind.d.ts +1 -1
- package/package.json +5 -6
- package/types.json +18 -4
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useSelect.js","sources":["../../../../src/components/Select/useSelect.tsx"],"sourcesContent":["import * as React from 'react';\nimport keycode from 'keycode';\nimport cn from 'classnames';\nimport { v4 as uuid } from 'uuid';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { useLocalization } from '../Provider/Provider';\nimport { SelectProps } from './Select';\nimport { ListboxProps } from '../Listbox/Listbox';\nimport { useProxiedRef } from '../../utils/hooks/useProxiedRef';\nimport { setInputValueByRef, findByValue, useFlattenedData, sanitizeItem } from '../Listbox/util';\nimport { ScrollableListItemValue } from '../Listbox/ScrollableList';\nimport { createCustomEvent } from '../../utils/input';\n\ntype InternalButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement>;\ntype InternalListboxProps = ListboxProps & { ref: React.ForwardedRef<HTMLInputElement> };\ntype InternalInputProps = React.InputHTMLAttributes<HTMLInputElement> & { ref: React.ForwardedRef<HTMLInputElement> };\n\ntype useSelect = React.HtmlHTMLAttributes<HTMLDivElement> & {\n button: InternalButtonProps;\n listbox: InternalListboxProps;\n input: InternalInputProps;\n popover: Pick<PopoverPrimitive.PopoverProps, 'onOpenChange' | 'open'>;\n text: string | JSX.Element;\n more?: number;\n};\n\nexport const useSelect = (\n {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n data = [],\n defaultValue,\n disabled,\n emptyValue,\n id: nativeId,\n multiselect,\n onBlur,\n onClick,\n onChange,\n readOnly,\n value,\n ...otherProps\n }: SelectProps,\n ref: React.Ref<HTMLInputElement>\n): useSelect => {\n const { texts } = useLocalization();\n const flattenedData = useFlattenedData(data);\n const listboxInputRef = useProxiedRef<HTMLInputElement>(ref);\n const [open, setOpen] = React.useState(false);\n const id = React.useMemo(() => nativeId || `select_${uuid()}`, [nativeId]);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const buttonId = `${id}-button`;\n // support 'escape' resetting to the value that was set when the listbox opened\n const [lastValue, setLastValue] = React.useState<ScrollableListItemValue | undefined>(value);\n\n React.useEffect(() => {\n setLastValue(value);\n }, [open]);\n\n React.useEffect(() => {\n if (value === undefined) {\n if (defaultValue !== undefined && findByValue(flattenedData, defaultValue)) {\n setInputValueByRef(inputRef.current, defaultValue);\n } else {\n if (emptyValue !== undefined) {\n setInputValueByRef(inputRef.current, emptyValue);\n } else if (data.length > 0) {\n setInputValueByRef(inputRef.current, data[0].value);\n }\n }\n } else {\n if (!multiselect && !findByValue(flattenedData, value)) {\n if (emptyValue !== undefined) {\n setInputValueByRef(inputRef.current, emptyValue);\n } else if (data.length > 0) {\n setInputValueByRef(inputRef.current, data[0].value);\n }\n }\n }\n }, []);\n\n // event handlers\n const handleButtonKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>): void => {\n if (event.keyCode === keycode('up') || event.keyCode === keycode('down')) {\n event.preventDefault();\n setOpen(true);\n }\n };\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>): void => {\n switch (event.keyCode) {\n case keycode('escape'): {\n event.preventDefault();\n if (lastValue !== undefined) {\n setInputValueByRef(listboxInputRef.current, lastValue);\n }\n\n setOpen(false);\n break;\n }\n\n case keycode('tab'):\n case keycode('enter'): {\n if (event.keyCode !== keycode('tab')) {\n event.preventDefault();\n }\n setOpen(false);\n break;\n }\n\n default:\n }\n\n if (otherProps.onKeyDown) {\n otherProps.onKeyDown(event);\n }\n };\n\n const handleListboxClick = (event: React.MouseEvent<HTMLLIElement>): void => {\n event.preventDefault();\n if (!multiselect) {\n setOpen(false);\n if (onBlur) {\n onBlur(createCustomEvent('blur'));\n }\n }\n };\n\n let text: string | JSX.Element = '';\n let more = 0;\n\n if (value !== undefined) {\n if (multiselect) {\n const selectedValues = value?.toString().split(',') || [];\n\n if (selectedValues.length === flattenedData.filter(item => !item.disabled).length) {\n text = texts.select.allOptionsSelected;\n } else {\n text = findByValue(flattenedData, selectedValues[0])?.text ?? '';\n more = selectedValues.length > 1 ? selectedValues.length - 1 : 0;\n }\n } else {\n const item = findByValue(flattenedData, value);\n\n if (item) {\n text = item.icon ? (\n <>\n {React.cloneElement(item.icon, {\n className: cn(item.icon.props.className, 'mr-1 -mt-px'),\n })}\n {item.text}\n </>\n ) : (\n item.text\n );\n }\n }\n }\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n event.persist();\n\n if (onChange) {\n const item = findByValue(flattenedData, event.target.value);\n (event as any).detail = sanitizeItem(item);\n\n const indexes = item?.path?.split('.') ?? [];\n\n if (indexes.length > 1) {\n // we don't want to map the current item\n indexes.pop();\n // we need to rebuild the path as we map\n let lastPath: string;\n\n (event as any).detail.parents = indexes.map(i => {\n lastPath = lastPath ? [lastPath, i].join('.') : i;\n return sanitizeItem(flattenedData.find(i => i.path === lastPath));\n });\n }\n\n onChange(event);\n }\n };\n\n const button: InternalButtonProps = {\n 'aria-haspopup': 'listbox' as const,\n 'aria-label': ariaLabel ? `${ariaLabel} ${text}` : undefined,\n 'aria-labelledby': ariaLabelledBy ? `${ariaLabelledBy} ${buttonId}` : undefined,\n disabled: disabled || readOnly,\n id: buttonId,\n onKeyDown: !disabled && !readOnly ? handleButtonKeyDown : undefined,\n type: 'button',\n };\n\n const listbox: InternalListboxProps = {\n ...otherProps,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n data,\n disabled,\n emptyValue,\n onBlur,\n onClick: handleListboxClick,\n onChange: event => {\n setInputValueByRef(inputRef.current, event.target.value);\n },\n onKeyDown: handleListboxKeyDown,\n ref: listboxInputRef,\n value,\n };\n\n const input: InternalInputProps = {\n onChange: handleInputChange,\n ref: inputRef,\n value: String(value ?? ''),\n };\n\n return {\n button,\n listbox,\n input,\n popover: {\n open,\n onOpenChange: open => {\n if (!open && onBlur) {\n onBlur(createCustomEvent('blur'));\n }\n setOpen(open);\n },\n },\n text,\n more,\n };\n};\n"],"names":["useSelect","ariaLabel","ariaLabelledBy","data","defaultValue","disabled","emptyValue","id","nativeId","multiselect","onBlur","onClick","onChange","readOnly","value","otherProps","ref","texts","useLocalization","flattenedData","useFlattenedData","listboxInputRef","useProxiedRef","open","setOpen","React","uuid","inputRef","buttonId","lastValue","setLastValue","undefined","findByValue","setInputValueByRef","current","length","handleButtonKeyDown","event","keyCode","keycode","preventDefault","handleListboxKeyDown","onKeyDown","handleListboxClick","createCustomEvent","text","more","selectedValues","toString","split","filter","item","select","allOptionsSelected","icon","className","cn","props","handleInputChange","persist","target","detail","sanitizeItem","indexes","path","pop","lastPath","parents","map","i","join","find","button","type","listbox","input","String","popover","onOpenChange"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"useSelect.js","sources":["../../../../src/components/Select/useSelect.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\nimport { v4 as uuid } from 'uuid';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { useLocalization } from '../Provider/Provider';\nimport { SelectProps } from './Select';\nimport { ListboxProps } from '../Listbox/Listbox';\nimport { useProxiedRef } from '../../utils/hooks/useProxiedRef';\nimport { setInputValueByRef, findByValue, useFlattenedData, sanitizeItem } from '../Listbox/util';\nimport { ScrollableListItemValue } from '../Listbox/ScrollableList';\nimport { createCustomEvent } from '../../utils/input';\n\ntype InternalButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement>;\ntype InternalListboxProps = ListboxProps & { ref: React.ForwardedRef<HTMLInputElement> };\ntype InternalInputProps = React.InputHTMLAttributes<HTMLInputElement> & { ref: React.ForwardedRef<HTMLInputElement> };\n\ntype useSelect = React.HtmlHTMLAttributes<HTMLDivElement> & {\n button: InternalButtonProps;\n listbox: InternalListboxProps;\n input: InternalInputProps;\n popover: Pick<PopoverPrimitive.PopoverProps, 'onOpenChange' | 'open'>;\n text: string | JSX.Element;\n more?: number;\n};\n\nexport const useSelect = (\n {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n data = [],\n defaultValue,\n disabled,\n emptyValue,\n id: nativeId,\n multiselect,\n onBlur,\n onClick,\n onChange,\n readOnly,\n value,\n ...otherProps\n }: SelectProps,\n ref: React.Ref<HTMLInputElement>\n): useSelect => {\n const { texts } = useLocalization();\n const flattenedData = useFlattenedData(data);\n const listboxInputRef = useProxiedRef<HTMLInputElement>(ref);\n const [open, setOpen] = React.useState(false);\n const id = React.useMemo(() => nativeId || `select_${uuid()}`, [nativeId]);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const buttonId = `${id}-button`;\n // support 'escape' resetting to the value that was set when the listbox opened\n const [lastValue, setLastValue] = React.useState<ScrollableListItemValue | undefined>(value);\n\n React.useEffect(() => {\n setLastValue(value);\n }, [open]);\n\n React.useEffect(() => {\n if (value === undefined) {\n if (defaultValue !== undefined && findByValue(flattenedData, defaultValue)) {\n setInputValueByRef(inputRef.current, defaultValue);\n } else {\n if (emptyValue !== undefined) {\n setInputValueByRef(inputRef.current, emptyValue);\n } else if (data.length > 0) {\n setInputValueByRef(inputRef.current, data[0].value);\n }\n }\n } else {\n if (!multiselect && !findByValue(flattenedData, value)) {\n if (emptyValue !== undefined) {\n setInputValueByRef(inputRef.current, emptyValue);\n } else if (data.length > 0) {\n setInputValueByRef(inputRef.current, data[0].value);\n }\n }\n }\n }, []);\n\n // event handlers\n const handleButtonKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>): void => {\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n event.preventDefault();\n setOpen(true);\n }\n };\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>): void => {\n switch (event.key) {\n case 'Escape': {\n event.preventDefault();\n if (lastValue !== undefined) {\n setInputValueByRef(listboxInputRef.current, lastValue);\n }\n\n setOpen(false);\n break;\n }\n\n case 'Tab':\n case 'Enter': {\n if (event.key !== 'Tab') {\n event.preventDefault();\n }\n setOpen(false);\n break;\n }\n\n default:\n }\n\n if (otherProps.onKeyDown) {\n otherProps.onKeyDown(event);\n }\n };\n\n const handleListboxClick = (event: React.MouseEvent<HTMLLIElement>): void => {\n event.preventDefault();\n if (!multiselect) {\n setOpen(false);\n if (onBlur) {\n onBlur(createCustomEvent('blur'));\n }\n }\n };\n\n let text: string | JSX.Element = '';\n let more = 0;\n\n if (value !== undefined) {\n if (multiselect) {\n const selectedValues = value?.toString().split(',') || [];\n\n if (selectedValues.length === flattenedData.filter(item => !item.disabled).length) {\n text = texts.select.allOptionsSelected;\n } else {\n text = findByValue(flattenedData, selectedValues[0])?.text ?? '';\n more = selectedValues.length > 1 ? selectedValues.length - 1 : 0;\n }\n } else {\n const item = findByValue(flattenedData, value);\n\n if (item) {\n text = item.icon ? (\n <>\n {React.cloneElement(item.icon, {\n className: cn(item.icon.props.className, 'mr-1 -mt-px'),\n })}\n {item.text}\n </>\n ) : (\n item.text\n );\n }\n }\n }\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n event.persist();\n\n if (onChange) {\n const item = findByValue(flattenedData, event.target.value);\n (event as any).detail = sanitizeItem(item);\n\n const indexes = item?.path?.split('.') ?? [];\n\n if (indexes.length > 1) {\n // we don't want to map the current item\n indexes.pop();\n // we need to rebuild the path as we map\n let lastPath: string;\n\n (event as any).detail.parents = indexes.map(i => {\n lastPath = lastPath ? [lastPath, i].join('.') : i;\n return sanitizeItem(flattenedData.find(i => i.path === lastPath));\n });\n }\n\n onChange(event);\n }\n };\n\n const button: InternalButtonProps = {\n 'aria-haspopup': 'listbox' as const,\n 'aria-label': ariaLabel ? `${ariaLabel} ${text}` : undefined,\n 'aria-labelledby': ariaLabelledBy ? `${ariaLabelledBy} ${buttonId}` : undefined,\n disabled: disabled || readOnly,\n id: buttonId,\n onKeyDown: !disabled && !readOnly ? handleButtonKeyDown : undefined,\n type: 'button',\n };\n\n const listbox: InternalListboxProps = {\n ...otherProps,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n data,\n disabled,\n emptyValue,\n onBlur,\n onClick: handleListboxClick,\n onChange: event => {\n setInputValueByRef(inputRef.current, event.target.value);\n },\n onKeyDown: handleListboxKeyDown,\n ref: listboxInputRef,\n value,\n };\n\n const input: InternalInputProps = {\n onChange: handleInputChange,\n ref: inputRef,\n value: String(value ?? ''),\n };\n\n return {\n button,\n listbox,\n input,\n popover: {\n open,\n onOpenChange: open => {\n if (!open && onBlur) {\n onBlur(createCustomEvent('blur'));\n }\n setOpen(open);\n },\n },\n text,\n more,\n };\n};\n"],"names":["useSelect","ariaLabel","ariaLabelledBy","data","defaultValue","disabled","emptyValue","id","nativeId","multiselect","onBlur","onClick","onChange","readOnly","value","otherProps","ref","texts","useLocalization","flattenedData","useFlattenedData","listboxInputRef","useProxiedRef","open","setOpen","React","uuid","inputRef","buttonId","lastValue","setLastValue","undefined","findByValue","setInputValueByRef","current","length","handleButtonKeyDown","event","key","preventDefault","handleListboxKeyDown","onKeyDown","handleListboxClick","createCustomEvent","text","more","selectedValues","toString","split","filter","item","select","allOptionsSelected","icon","className","cn","props","handleInputChange","persist","target","detail","sanitizeItem","indexes","path","pop","lastPath","parents","map","i","join","find","button","type","listbox","input","String","popover","onOpenChange"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Spinner.js","sources":["../../../../src/components/Spinner/Spinner.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport './Spinner.css';\n\nexport type SpinnerProps = React.HTMLAttributes<HTMLDivElement> & {\n /**\n * Define a delay in milliseconds after which the spinner is shown.\n * Default value is `500`ms\n */\n delay?: number;\n /** Define a text that will be displayed below spinner */\n label?: string;\n};\n\nexport const Spinner = React.forwardRef(function Spinner(props: SpinnerProps, ref: React.Ref<HTMLDivElement>) {\n const { delay = 500, label, ...otherProps } = props;\n const [visible, setVisibility] = React.useState(!delay);\n\n React.useEffect(() => {\n let timeout: number;\n\n if (delay) {\n timeout = window.setTimeout(() => setVisibility(true), delay);\n }\n\n return () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n };\n }, [delay]);\n\n if (!visible) {\n return null;\n }\n\n const className = cn('inline-flex flex-col relative items-center', otherProps.className);\n\n return (\n <div {...otherProps} className={className} data-taco=\"spinner\" ref={ref}>\n <svg\n className=\"h-10 w-10 animate-[spinnerRotation_2s_linear_infinite]\"\n viewBox=\"0 0 100 100\"\n xmlns=\"http://www.w3.org/2000/svg\"
|
1
|
+
{"version":3,"file":"Spinner.js","sources":["../../../../src/components/Spinner/Spinner.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport './Spinner.css';\n\nexport type SpinnerProps = React.HTMLAttributes<HTMLDivElement> & {\n /**\n * Define a delay in milliseconds after which the spinner is shown.\n * Default value is `500`ms\n */\n delay?: number;\n /** Define a text that will be displayed below spinner */\n label?: string;\n};\n\nexport const Spinner = React.forwardRef(function Spinner(props: SpinnerProps, ref: React.Ref<HTMLDivElement>) {\n const { delay = 500, label, ...otherProps } = props;\n const [visible, setVisibility] = React.useState(!delay);\n\n React.useEffect(() => {\n let timeout: number;\n\n if (delay) {\n timeout = window.setTimeout(() => setVisibility(true), delay);\n }\n\n return () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n };\n }, [delay]);\n\n if (!visible) {\n return null;\n }\n\n const className = cn('inline-flex flex-col relative items-center', otherProps.className);\n\n return (\n <div {...otherProps} className={className} data-taco=\"spinner\" ref={ref}>\n <svg\n className=\"h-10 w-10 animate-[spinnerRotation_2s_linear_infinite]\"\n viewBox=\"0 0 100 100\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"50\" cy=\"50\" r=\"45\"></circle>\n </svg>\n {label && <span className=\"mt-4\">{label}</span>}\n </div>\n );\n});\n"],"names":["Spinner","React","forwardRef","props","ref","delay","label","otherProps","visible","setVisibility","useState","useEffect","timeout","window","setTimeout","clearTimeout","className","cn","viewBox","xmlns","cx","cy","r"],"mappings":";;;MAcaA,OAAO,gBAAGC,cAAK,CAACC,UAAN,CAAiB,SAASF,OAAT,CAAiBG,KAAjB,EAAsCC,GAAtC;EACpC,MAAM;IAAEC,KAAK,GAAG,GAAV;IAAeC,KAAf;IAAsB,GAAGC;MAAeJ,KAA9C;EACA,MAAM,CAACK,OAAD,EAAUC,aAAV,IAA2BR,cAAK,CAACS,QAAN,CAAe,CAACL,KAAhB,CAAjC;EAEAJ,cAAK,CAACU,SAAN,CAAgB;IACZ,IAAIC,OAAJ;;IAEA,IAAIP,KAAJ,EAAW;MACPO,OAAO,GAAGC,MAAM,CAACC,UAAP,CAAkB,MAAML,aAAa,CAAC,IAAD,CAArC,EAA6CJ,KAA7C,CAAV;;;IAGJ,OAAO;MACH,IAAIO,OAAJ,EAAa;QACTG,YAAY,CAACH,OAAD,CAAZ;;KAFR;GAPJ,EAYG,CAACP,KAAD,CAZH;;EAcA,IAAI,CAACG,OAAL,EAAc;IACV,OAAO,IAAP;;;EAGJ,MAAMQ,SAAS,GAAGC,EAAE,CAAC,4CAAD,EAA+CV,UAAU,CAACS,SAA1D,CAApB;EAEA,OACIf,4BAAA,MAAA,oBAASM;IAAYS,SAAS,EAAEA;iBAAqB;IAAUZ,GAAG,EAAEA;IAApE,EACIH,4BAAA,MAAA;IACIe,SAAS,EAAC;IACVE,OAAO,EAAC;IACRC,KAAK,EAAC;GAHV,EAIIlB,4BAAA,SAAA;IAAQmB,EAAE,EAAC;IAAKC,EAAE,EAAC;IAAKC,CAAC,EAAC;GAA1B,CAJJ,CADJ,EAOKhB,KAAK,IAAIL,4BAAA,OAAA;IAAMe,SAAS,EAAC;GAAhB,EAAwBV,KAAxB,CAPd,CADJ;AAWH,CAnCsB;;;;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"BaseTable.js","sources":["../../../../../src/components/Table/components/BaseTable.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { HeaderGroup } from 'react-table';\nimport { useProxiedRef } from '../../../utils/hooks/useProxiedRef';\nimport { InternalBaseTable } from '../types';\nimport './Table.css';\nimport { Column } from '../util/renderColumn';\n\nexport const DefaultEmptyState = (): React.ReactNode => null;\n\nexport const BaseTable = React.forwardRef(function BaseTable(props: InternalBaseTable, ref: React.Ref<HTMLDivElement>) {\n const tableRef = useProxiedRef<HTMLDivElement>(ref);\n const { autoFocus, children, disableSorting: _, headerGroups, headerRef, bodyRef, ...otherProps } = props;\n\n React.useEffect(() => {\n if (autoFocus && tableRef.current) {\n tableRef.current.focus();\n }\n }, []);\n\n const className = cn('yt-table flex flex-col focus:yt-focus focus:rounded-sm', props.className);\n\n return (\n <div {...otherProps} role=\"table\" className={className} ref={tableRef}>\n <div role=\"rowgroup\" className=\"yt-table__head\" ref={headerRef}>\n {headerGroups?.map((headerGroup: HeaderGroup<object>, index: number) => (\n <div\n key={index}\n role=\"row\"\n className=\"border-grey-light flex h-auto min-h-[2.5rem] w-full select-none border-t-0 border-b-2 font-bold\"
|
1
|
+
{"version":3,"file":"BaseTable.js","sources":["../../../../../src/components/Table/components/BaseTable.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { HeaderGroup } from 'react-table';\nimport { useProxiedRef } from '../../../utils/hooks/useProxiedRef';\nimport { InternalBaseTable } from '../types';\nimport './Table.css';\nimport { Column } from '../util/renderColumn';\n\nexport const DefaultEmptyState = (): React.ReactNode => null;\n\nexport const BaseTable = React.forwardRef(function BaseTable(props: InternalBaseTable, ref: React.Ref<HTMLDivElement>) {\n const tableRef = useProxiedRef<HTMLDivElement>(ref);\n const { autoFocus, children, disableSorting: _, headerGroups, headerRef, bodyRef, ...otherProps } = props;\n\n React.useEffect(() => {\n if (autoFocus && tableRef.current) {\n tableRef.current.focus();\n }\n }, []);\n\n const className = cn('yt-table flex flex-col focus:yt-focus focus:rounded-sm', props.className);\n\n return (\n <div {...otherProps} role=\"table\" className={className} ref={tableRef}>\n <div role=\"rowgroup\" className=\"yt-table__head\" ref={headerRef}>\n {headerGroups?.map((headerGroup: HeaderGroup<object>, index: number) => (\n <div\n key={index}\n role=\"row\"\n className=\"border-grey-light flex h-auto min-h-[2.5rem] w-full select-none border-t-0 border-b-2 font-bold\">\n {headerGroup.headers.map((cell: any, index: number) => (\n <Column key={index} index={index} cell={cell} />\n ))}\n </div>\n ))}\n </div>\n\n <div role=\"rowgroup\" className=\"yt-table__body\" ref={bodyRef}>\n {children}\n </div>\n </div>\n );\n});\n"],"names":["DefaultEmptyState","BaseTable","React","forwardRef","props","ref","tableRef","useProxiedRef","autoFocus","children","disableSorting","_","headerGroups","headerRef","bodyRef","otherProps","useEffect","current","focus","className","cn","role","map","headerGroup","index","key","headers","cell","Column"],"mappings":";;;;;MAQaA,iBAAiB,GAAG,MAAuB;MAE3CC,SAAS,gBAAGC,cAAK,CAACC,UAAN,CAAiB,SAASF,SAAT,CAAmBG,KAAnB,EAA6CC,GAA7C;EACtC,MAAMC,QAAQ,GAAGC,aAAa,CAAiBF,GAAjB,CAA9B;EACA,MAAM;IAAEG,SAAF;IAAaC,QAAb;IAAuBC,cAAc,EAAEC,CAAvC;IAA0CC,YAA1C;IAAwDC,SAAxD;IAAmEC,OAAnE;IAA4E,GAAGC;MAAeX,KAApG;EAEAF,cAAK,CAACc,SAAN,CAAgB;IACZ,IAAIR,SAAS,IAAIF,QAAQ,CAACW,OAA1B,EAAmC;MAC/BX,QAAQ,CAACW,OAAT,CAAiBC,KAAjB;;GAFR,EAIG,EAJH;EAMA,MAAMC,SAAS,GAAGC,EAAE,CAAC,wDAAD,EAA2DhB,KAAK,CAACe,SAAjE,CAApB;EAEA,OACIjB,4BAAA,MAAA,oBAASa;IAAYM,IAAI,EAAC;IAAQF,SAAS,EAAEA;IAAWd,GAAG,EAAEC;IAA7D,EACIJ,4BAAA,MAAA;IAAKmB,IAAI,EAAC;IAAWF,SAAS,EAAC;IAAiBd,GAAG,EAAEQ;GAArD,EACKD,YADL,aACKA,YADL,uBACKA,YAAY,CAAEU,GAAd,CAAkB,CAACC,WAAD,EAAmCC,KAAnC,KACftB,4BAAA,MAAA;IACIuB,GAAG,EAAED;IACLH,IAAI,EAAC;IACLF,SAAS,EAAC;GAHd,EAIKI,WAAW,CAACG,OAAZ,CAAoBJ,GAApB,CAAwB,CAACK,IAAD,EAAYH,KAAZ,KACrBtB,4BAAA,CAAC0B,MAAD;IAAQH,GAAG,EAAED;IAAOA,KAAK,EAAEA;IAAOG,IAAI,EAAEA;GAAxC,CADH,CAJL,CADH,CADL,CADJ,EAcIzB,4BAAA,MAAA;IAAKmB,IAAI,EAAC;IAAWF,SAAS,EAAC;IAAiBd,GAAG,EAAES;GAArD,EACKL,QADL,CAdJ,CADJ;AAoBH,CAhCwB;;;;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"WindowedTable.js","sources":["../../../../../src/components/Table/components/WindowedTable.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { PluginHook } from 'react-table';\nimport { areEqual, VariableSizeList } from 'react-window';\nimport InfiniteLoader from 'react-window-infinite-loader';\nimport { TableProps, ForwardedGenericTableWithStatics, TableRef } from '../types';\nimport { useTable } from '../hooks/useTable';\nimport { useBoundingClientRectListener } from '../../../utils/hooks/useBoundingClientRectListener';\nimport { useProxiedRef } from '../../../utils/hooks/useProxiedRef';\nimport { Row } from '../util/renderRow';\nimport { DefaultEmptyState, BaseTable } from './BaseTable';\nimport { useLocalization } from '../../Provider/Provider';\n\nconst ROW_HEIGHT = 40;\n\nconst VariableRow = React.memo(({ data, index, style: { height: _, ...style } }: any) => {\n const { texts } = useLocalization();\n const { rows, setRowHeight, rowProps, tableProps, instance, prepareRow, rowHeights } = data;\n const row = rows[index];\n const ref = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (ref?.current) {\n setRowHeight(index, ref.current.getBoundingClientRect().height);\n }\n }, [rowHeights[index]]);\n\n if (row) {\n prepareRow(row, index);\n\n return (\n <Row\n {...rowProps}\n style={style}\n key={index}\n index={index}\n row={row}\n instance={instance}\n headerGroups={tableProps.headerGroups}\n setRowHeight={setRowHeight}\n ref={ref}\n />\n );\n }\n\n return (\n <div className=\"yt-table__row\" role=\"row\" style={style}>\n <div className=\"yt-table__cell text-grey-dark\">{texts.table.loading}</div>\n </div>\n );\n}, areEqual);\n\nconst getAverageRowHeight = (rowHeights = {}) => {\n const keys = Object.keys(rowHeights);\n const estimatedHeight = keys.reduce((p, i) => p + rowHeights[i], 0);\n return estimatedHeight / keys.length;\n};\n\nexport const WindowedTable = React.forwardRef(function WindowedTable<T>(\n props: TableProps<T> & { plugins: PluginHook<{}>[] },\n ref: React.Ref<TableRef>\n) {\n const tableRef: any = useProxiedRef<HTMLDivElement>(ref);\n const { emptyStateRenderer = DefaultEmptyState, length, loadMore, ...otherProps } = props;\n const { rowProps, tableProps, rows, prepareRow, instance, state } = useTable<T>({ ...otherProps, windowed: true }, tableRef);\n\n // determine heights for windowing calculations\n const headerRef = React.useRef<HTMLDivElement>(null);\n const [rowsRef, setRowsRef] = React.useState<any>(null);\n const tableDimensions = useBoundingClientRectListener(tableRef);\n const headerDimensions = useBoundingClientRectListener(headerRef);\n const height = tableDimensions && headerDimensions ? tableDimensions.height - headerDimensions.height : null;\n\n // variable row height calculations\n const estimatedRowHeight = rowProps.rowHeight || ROW_HEIGHT;\n const rowHeights = React.useRef<Record<string, number>>({});\n const setRowHeight = React.useCallback((index: number, size: number) => {\n if (rowHeights.current[index] !== size) {\n rowHeights.current = {\n ...rowHeights.current,\n [index]: size,\n };\n\n if (rowsRef) {\n rowsRef.resetAfterIndex(0);\n }\n }\n }, []);\n const getRowHeight = React.useCallback(index => rowHeights.current[index] || estimatedRowHeight, []);\n\n React.useEffect(() => {\n if (rowsRef && rowProps.activeIndex !== undefined) {\n rowsRef.scrollToItem(rowProps.activeIndex, 'start');\n }\n }, [rowsRef, rowProps.activeIndex]);\n\n // trigger recalculation of variable row heights if the data changes\n React.useEffect(() => {\n rowHeights.current = {};\n\n if (rowsRef) {\n rowsRef.resetAfterIndex(0);\n }\n }, [rows.length]);\n\n const contentHeight = estimatedRowHeight * props.data.length || 0;\n const isScrollbarVisible = height !== null ? contentHeight > height : false;\n\n const className = cn(tableProps.className, 'yt-table--windowed', { 'table-with-scrollbar': isScrollbarVisible });\n\n let list;\n\n const itemData = {\n rows,\n setRowHeight,\n rowProps,\n tableProps,\n instance,\n prepareRow,\n state,\n rowHeights: rowHeights.current,\n };\n\n if (height && rows.length) {\n const listProps = {\n height,\n itemData,\n estimatedItemSize: getAverageRowHeight(rowHeights.current),\n itemSize: getRowHeight,\n width: '100%',\n };\n\n if (loadMore && length) {\n const isLoaded = (index: number) => !!rows[index];\n\n list = (\n <InfiniteLoader isItemLoaded={isLoaded} itemCount={length} loadMoreItems={loadMore as any}>\n {({ onItemsRendered, ref }: any) => (\n <VariableSizeList\n {...listProps}\n itemCount={length}\n onItemsRendered={onItemsRendered}\n ref={list => {\n ref(list);\n setRowsRef(list);\n }}\n >\n {VariableRow}\n </VariableSizeList>\n )}\n </InfiniteLoader>\n );\n } else {\n list = (\n <VariableSizeList\n {...listProps}\n itemCount={rows.length}\n ref={ref => {\n setRowsRef(ref);\n }}\n >\n {VariableRow}\n </VariableSizeList>\n );\n }\n }\n\n return (\n <BaseTable {...tableProps} className={className} headerRef={headerRef} ref={tableRef}>\n {list ? list : emptyStateRenderer()}\n </BaseTable>\n );\n}) as ForwardedGenericTableWithStatics;\n\nWindowedTable.Column = () => null;\nWindowedTable.Group = () => null;\n"],"names":["ROW_HEIGHT","VariableRow","React","memo","data","index","style","height","_","texts","useLocalization","rows","setRowHeight","rowProps","tableProps","instance","prepareRow","rowHeights","row","ref","useRef","useEffect","current","getBoundingClientRect","Row","key","headerGroups","className","role","table","loading","areEqual","getAverageRowHeight","keys","Object","estimatedHeight","reduce","p","i","length","WindowedTable","forwardRef","props","tableRef","useProxiedRef","emptyStateRenderer","DefaultEmptyState","loadMore","otherProps","state","useTable","windowed","headerRef","rowsRef","setRowsRef","useState","tableDimensions","useBoundingClientRectListener","headerDimensions","estimatedRowHeight","rowHeight","useCallback","size","resetAfterIndex","getRowHeight","activeIndex","undefined","scrollToItem","contentHeight","isScrollbarVisible","cn","list","itemData","listProps","estimatedItemSize","itemSize","width","isLoaded","InfiniteLoader","isItemLoaded","itemCount","loadMoreItems","onItemsRendered","VariableSizeList","BaseTable","Column","Group"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"WindowedTable.js","sources":["../../../../../src/components/Table/components/WindowedTable.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { PluginHook } from 'react-table';\nimport { areEqual, VariableSizeList } from 'react-window';\nimport InfiniteLoader from 'react-window-infinite-loader';\nimport { TableProps, ForwardedGenericTableWithStatics, TableRef } from '../types';\nimport { useTable } from '../hooks/useTable';\nimport { useBoundingClientRectListener } from '../../../utils/hooks/useBoundingClientRectListener';\nimport { useProxiedRef } from '../../../utils/hooks/useProxiedRef';\nimport { Row } from '../util/renderRow';\nimport { DefaultEmptyState, BaseTable } from './BaseTable';\nimport { useLocalization } from '../../Provider/Provider';\n\nconst ROW_HEIGHT = 40;\n\nconst VariableRow = React.memo(({ data, index, style: { height: _, ...style } }: any) => {\n const { texts } = useLocalization();\n const { rows, setRowHeight, rowProps, tableProps, instance, prepareRow, rowHeights } = data;\n const row = rows[index];\n const ref = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (ref?.current) {\n setRowHeight(index, ref.current.getBoundingClientRect().height);\n }\n }, [rowHeights[index]]);\n\n if (row) {\n prepareRow(row, index);\n\n return (\n <Row\n {...rowProps}\n style={style}\n key={index}\n index={index}\n row={row}\n instance={instance}\n headerGroups={tableProps.headerGroups}\n setRowHeight={setRowHeight}\n ref={ref}\n />\n );\n }\n\n return (\n <div className=\"yt-table__row\" role=\"row\" style={style}>\n <div className=\"yt-table__cell text-grey-dark\">{texts.table.loading}</div>\n </div>\n );\n}, areEqual);\n\nconst getAverageRowHeight = (rowHeights = {}) => {\n const keys = Object.keys(rowHeights);\n const estimatedHeight = keys.reduce((p, i) => p + rowHeights[i], 0);\n return estimatedHeight / keys.length;\n};\n\nexport const WindowedTable = React.forwardRef(function WindowedTable<T>(\n props: TableProps<T> & { plugins: PluginHook<{}>[] },\n ref: React.Ref<TableRef>\n) {\n const tableRef: any = useProxiedRef<HTMLDivElement>(ref);\n const { emptyStateRenderer = DefaultEmptyState, length, loadMore, ...otherProps } = props;\n const { rowProps, tableProps, rows, prepareRow, instance, state } = useTable<T>({ ...otherProps, windowed: true }, tableRef);\n\n // determine heights for windowing calculations\n const headerRef = React.useRef<HTMLDivElement>(null);\n const [rowsRef, setRowsRef] = React.useState<any>(null);\n const tableDimensions = useBoundingClientRectListener(tableRef);\n const headerDimensions = useBoundingClientRectListener(headerRef);\n const height = tableDimensions && headerDimensions ? tableDimensions.height - headerDimensions.height : null;\n\n // variable row height calculations\n const estimatedRowHeight = rowProps.rowHeight || ROW_HEIGHT;\n const rowHeights = React.useRef<Record<string, number>>({});\n const setRowHeight = React.useCallback((index: number, size: number) => {\n if (rowHeights.current[index] !== size) {\n rowHeights.current = {\n ...rowHeights.current,\n [index]: size,\n };\n\n if (rowsRef) {\n rowsRef.resetAfterIndex(0);\n }\n }\n }, []);\n const getRowHeight = React.useCallback(index => rowHeights.current[index] || estimatedRowHeight, []);\n\n React.useEffect(() => {\n if (rowsRef && rowProps.activeIndex !== undefined) {\n rowsRef.scrollToItem(rowProps.activeIndex, 'start');\n }\n }, [rowsRef, rowProps.activeIndex]);\n\n // trigger recalculation of variable row heights if the data changes\n React.useEffect(() => {\n rowHeights.current = {};\n\n if (rowsRef) {\n rowsRef.resetAfterIndex(0);\n }\n }, [rows.length]);\n\n const contentHeight = estimatedRowHeight * props.data.length || 0;\n const isScrollbarVisible = height !== null ? contentHeight > height : false;\n\n const className = cn(tableProps.className, 'yt-table--windowed', { 'table-with-scrollbar': isScrollbarVisible });\n\n let list;\n\n const itemData = {\n rows,\n setRowHeight,\n rowProps,\n tableProps,\n instance,\n prepareRow,\n state,\n rowHeights: rowHeights.current,\n };\n\n if (height && rows.length) {\n const listProps = {\n height,\n itemData,\n estimatedItemSize: getAverageRowHeight(rowHeights.current),\n itemSize: getRowHeight,\n width: '100%',\n };\n\n if (loadMore && length) {\n const isLoaded = (index: number) => !!rows[index];\n\n list = (\n <InfiniteLoader isItemLoaded={isLoaded} itemCount={length} loadMoreItems={loadMore as any}>\n {({ onItemsRendered, ref }: any) => (\n <VariableSizeList\n {...listProps}\n itemCount={length}\n onItemsRendered={onItemsRendered}\n ref={list => {\n ref(list);\n setRowsRef(list);\n }}>\n {VariableRow}\n </VariableSizeList>\n )}\n </InfiniteLoader>\n );\n } else {\n list = (\n <VariableSizeList\n {...listProps}\n itemCount={rows.length}\n ref={ref => {\n setRowsRef(ref);\n }}>\n {VariableRow}\n </VariableSizeList>\n );\n }\n }\n\n return (\n <BaseTable {...tableProps} className={className} headerRef={headerRef} ref={tableRef}>\n {list ? list : emptyStateRenderer()}\n </BaseTable>\n );\n}) as ForwardedGenericTableWithStatics;\n\nWindowedTable.Column = () => null;\nWindowedTable.Group = () => null;\n"],"names":["ROW_HEIGHT","VariableRow","React","memo","data","index","style","height","_","texts","useLocalization","rows","setRowHeight","rowProps","tableProps","instance","prepareRow","rowHeights","row","ref","useRef","useEffect","current","getBoundingClientRect","Row","key","headerGroups","className","role","table","loading","areEqual","getAverageRowHeight","keys","Object","estimatedHeight","reduce","p","i","length","WindowedTable","forwardRef","props","tableRef","useProxiedRef","emptyStateRenderer","DefaultEmptyState","loadMore","otherProps","state","useTable","windowed","headerRef","rowsRef","setRowsRef","useState","tableDimensions","useBoundingClientRectListener","headerDimensions","estimatedRowHeight","rowHeight","useCallback","size","resetAfterIndex","getRowHeight","activeIndex","undefined","scrollToItem","contentHeight","isScrollbarVisible","cn","list","itemData","listProps","estimatedItemSize","itemSize","width","isLoaded","InfiniteLoader","isItemLoaded","itemCount","loadMoreItems","onItemsRendered","VariableSizeList","BaseTable","Column","Group"],"mappings":"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"}
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import React__default from 'react';
|
2
2
|
import { IconButton } from '../../../IconButton/IconButton.js';
|
3
|
-
import keycode from 'keycode';
|
4
3
|
import { Menu } from '../../../Menu/Menu.js';
|
5
4
|
import { sanitizeRowProps } from '../../util.js';
|
6
5
|
import { InView } from 'react-intersection-observer';
|
@@ -16,7 +15,7 @@ const getActions = (actions, row = undefined) => {
|
|
16
15
|
const secondary = [];
|
17
16
|
|
18
17
|
if (actions) {
|
19
|
-
let visibleActions = actions.filter(x => !!x);
|
18
|
+
let visibleActions = actions.filter(x => !!x && typeof x !== 'boolean');
|
20
19
|
|
21
20
|
if (row) {
|
22
21
|
visibleActions = visibleActions.filter(action => {
|
@@ -86,7 +85,7 @@ const EditModeActions = () => {
|
|
86
85
|
const listener = event => {
|
87
86
|
var _event$target, _event$target$form;
|
88
87
|
|
89
|
-
if (event.
|
88
|
+
if (event.key === 'Escape' && (_event$target = event.target) !== null && _event$target !== void 0 && (_event$target$form = _event$target.form) !== null && _event$target$form !== void 0 && _event$target$form.reset) {
|
90
89
|
event.preventDefault();
|
91
90
|
event.target.form.reset();
|
92
91
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useRowActions.js","sources":["../../../../../../src/components/Table/hooks/plugins/useRowActions.tsx"],"sourcesContent":["import React from 'react';\nimport { PluginHook } from 'react-table';\nimport { InView } from 'react-intersection-observer';\nimport keycode from 'keycode';\nimport { sanitizeRowProps } from '../../util';\nimport { IconButton } from '../../../IconButton/IconButton';\nimport { LocalizationTexts } from '../../../Provider/Provider';\nimport { Menu } from '../../../Menu/Menu';\nimport { RowAction, RowActionHandler, TableRow } from '../../types';\n\nconst actionGroupClassName = '-mt-1 -mb-1 h-8 flex';\n\nconst hasActions = (inlineEditingUniqueId: any, handlers: any, actions: RowActionHandler<any>[] | undefined): number => {\n return (\n !!actions ||\n handlers.onRowCreate ||\n handlers.onRowCopy ||\n handlers.onRowDelete ||\n !!inlineEditingUniqueId ||\n handlers.onRowEdit\n );\n};\n\nconst getActions = (\n actions: RowActionHandler<any>[] | undefined,\n row: TableRow<any> | undefined = undefined\n): [RowAction<any>[], RowAction<any>[]] => {\n const primary: RowAction<any>[] = [];\n const secondary: RowAction<any>[] = [];\n\n if (actions) {\n let visibleActions = actions.filter(x => !!x);\n\n if (row) {\n visibleActions = visibleActions.filter((action: RowAction<any>) => {\n if (action.visible !== undefined) {\n if (typeof action.visible === 'function') {\n return action.visible(row);\n }\n\n return action.visible;\n }\n\n return true;\n });\n }\n\n visibleActions.forEach((action: RowAction<any>) => {\n if (action.showOnRow) {\n primary.push(action);\n } else {\n secondary.push(action);\n }\n });\n }\n\n return [primary, secondary];\n};\n\nconst getLength = (inlineEditingUniqueId: any, handlers: any, actions: RowActionHandler<any>[] | undefined): number => {\n const [primaryActions, secondaryActions] = getActions(actions);\n\n let length = primaryActions.length + (secondaryActions.length ? 1 : 0);\n\n if (handlers.onRowCreate) {\n length++;\n }\n\n if (handlers.onRowCopy) {\n length++;\n }\n\n if (handlers.onRowDelete) {\n length++;\n }\n\n if (!!inlineEditingUniqueId || handlers.onRowEdit) {\n length++;\n\n if (length < 2) {\n length++;\n }\n }\n\n return length;\n};\n\nconst getActionProps = (action: RowAction<any>, row: TableRow<any>) => {\n return {\n 'aria-label': typeof action.tooltip === 'function' ? action.tooltip(row) : action.tooltip,\n disabled: typeof action.disabled === 'function' ? action.disabled(row) : action.disabled,\n onClick: (event: React.MouseEvent<HTMLElement>) => {\n action.onClick(row, event);\n },\n };\n};\n\nconst EditModeActions = () => {\n React.useEffect(() => {\n const listener = (event: any) => {\n if (event.keyCode === keycode('escape') && event.target?.form?.reset) {\n event.preventDefault();\n event.target.form.reset();\n }\n };\n\n document.addEventListener('keydown', listener);\n\n return () => {\n document.removeEventListener('keydown', listener);\n };\n }, []);\n\n return (\n <div className={actionGroupClassName}>\n <IconButton appearance=\"primary\" icon=\"tick\" type=\"submit\" className=\"mr-2\" />\n <IconButton appearance=\"ghost\" icon=\"close\" type=\"reset\" />\n </div>\n );\n};\n\nexport const useRowActions = <T extends {}>(\n inlineEditingUniqueId: keyof T | undefined,\n handlers: any,\n actions: RowActionHandler<T>[] | undefined,\n rowExpansionRenderer: any,\n texts: LocalizationTexts,\n windowed = false\n): PluginHook<{}> => {\n const inlineEditing = !!inlineEditingUniqueId;\n const actionsLength = getLength(inlineEditingUniqueId, handlers, actions);\n\n const plugin = (hooks: any): void => {\n if (hasActions(inlineEditingUniqueId, handlers, actions)) {\n hooks.visibleColumns.push((columns: any) => [\n ...columns,\n {\n id: '_actions',\n className: 'flex justify-end px-1 overflow-visible',\n flex: `0 0 calc((${actionsLength} * 2rem) + .5rem)`,\n Cell: ({ row }: any) => {\n if (row.isEditing) {\n return <EditModeActions />;\n }\n\n const sanitizedRow = sanitizeRowProps(row, rowExpansionRenderer);\n const [primaryActions, secondaryActions] = getActions(actions, sanitizedRow);\n\n const output = (\n <>\n {handlers.onRowCreate && (\n <IconButton\n appearance=\"discrete\"\n icon=\"circle-plus\"\n aria-label={texts.table.newSubRow}\n tooltip={texts.table.newSubRow}\n disabled={inlineEditing && !row.canEdit}\n onClick={(event: React.MouseEvent) => {\n event.stopPropagation();\n event.persist();\n row.setActive();\n\n if (!row.isExpanded) {\n row.toggleRowExpanded();\n }\n\n handlers.onRowCreate(sanitizedRow, event);\n }}\n />\n )}\n {(inlineEditing || handlers.onRowEdit) && (\n <IconButton\n appearance=\"discrete\"\n icon=\"edit\"\n aria-label={texts.table.edit}\n tooltip={texts.table.edit}\n disabled={inlineEditing && !row.canEdit}\n onClick={(event: React.MouseEvent) => {\n event.stopPropagation();\n row.setActive();\n\n if (inlineEditing) {\n row.toggleRowEditing();\n } else if (handlers.onRowEdit) {\n event.persist();\n handlers.onRowEdit(sanitizedRow, event);\n }\n }}\n />\n )}\n {handlers.onRowCopy && (\n <IconButton\n appearance=\"discrete\"\n icon=\"copy\"\n aria-label={texts.table.copy}\n tooltip={texts.table.copy}\n disabled={inlineEditing && !row.canEdit}\n onClick={(event: React.MouseEvent) => {\n event.stopPropagation();\n event.persist();\n row.setActive();\n handlers.onRowCopy(sanitizedRow, event);\n }}\n />\n )}\n {handlers.onRowDelete && (\n <IconButton\n appearance=\"discrete\"\n icon=\"delete\"\n aria-label={texts.table.del}\n tooltip={texts.table.del}\n disabled={inlineEditing && !row.canEdit}\n onClick={(event: React.MouseEvent) => {\n event.stopPropagation();\n event.persist();\n row.setActive();\n handlers.onRowDelete(sanitizedRow, event);\n }}\n />\n )}\n {primaryActions.map((action: RowAction<T>, index: number) => (\n <IconButton\n {...getActionProps(action, sanitizedRow)}\n key={index}\n appearance=\"discrete\"\n icon={typeof action.icon === 'function' ? action.icon(sanitizedRow) : action.icon}\n tooltip={\n typeof action.tooltip === 'function' ? action.tooltip(sanitizedRow) : action.tooltip\n }\n />\n ))}\n {secondaryActions.length ? (\n <Menu>\n <Menu.Trigger>\n <IconButton\n appearance=\"discrete\"\n icon=\"ellipsis-vertical\"\n aria-label={texts.table.actions}\n tooltip={texts.table.actions}\n disabled={inlineEditing && !row.canEdit}\n onClick={(event: React.MouseEvent) => {\n event.stopPropagation();\n row.setActive();\n }}\n />\n </Menu.Trigger>\n <Menu.Content>\n {secondaryActions.map((action: RowAction<T>, index: number) => (\n <Menu.Item\n key={index}\n icon={\n typeof action.icon === 'function'\n ? action.icon(sanitizedRow)\n : action.icon\n }\n {...getActionProps(action, sanitizedRow)}\n >\n {typeof action.text === 'function' ? action.text(sanitizedRow) : action.text}\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu>\n ) : null}\n </>\n );\n\n if (windowed) {\n return <div className={actionGroupClassName}>{output}</div>;\n }\n\n return (\n <InView rootMargin=\"100px 0px\">\n {({ inView, ref }) => (\n <div className={actionGroupClassName} ref={ref}>\n {inView ? output : null}\n </div>\n )}\n </InView>\n );\n },\n },\n ]);\n }\n };\n plugin.pluginName = 'useRowActions';\n return plugin;\n};\n"],"names":["actionGroupClassName","hasActions","inlineEditingUniqueId","handlers","actions","onRowCreate","onRowCopy","onRowDelete","onRowEdit","getActions","row","undefined","primary","secondary","visibleActions","filter","x","action","visible","forEach","showOnRow","push","getLength","primaryActions","secondaryActions","length","getActionProps","tooltip","disabled","onClick","event","EditModeActions","React","useEffect","listener","keyCode","keycode","target","form","reset","preventDefault","document","addEventListener","removeEventListener","className","IconButton","appearance","icon","type","useRowActions","rowExpansionRenderer","texts","windowed","inlineEditing","actionsLength","plugin","hooks","visibleColumns","columns","id","flex","Cell","isEditing","sanitizedRow","sanitizeRowProps","output","table","newSubRow","canEdit","stopPropagation","persist","setActive","isExpanded","toggleRowExpanded","edit","toggleRowEditing","copy","del","map","index","key","Menu","Trigger","Content","Item","text","InView","rootMargin","inView","ref","pluginName"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"useRowActions.js","sources":["../../../../../../src/components/Table/hooks/plugins/useRowActions.tsx"],"sourcesContent":["import React from 'react';\r\nimport { PluginHook } from 'react-table';\r\nimport { InView } from 'react-intersection-observer';\r\nimport { sanitizeRowProps } from '../../util';\r\nimport { IconButton } from '../../../IconButton/IconButton';\r\nimport { LocalizationTexts } from '../../../Provider/Provider';\r\nimport { Menu } from '../../../Menu/Menu';\r\nimport { RowAction, RowActionHandler, TableRow } from '../../types';\r\n\r\nconst actionGroupClassName = '-mt-1 -mb-1 h-8 flex';\r\n\r\nconst hasActions = (inlineEditingUniqueId: any, handlers: any, actions: RowActionHandler<any>[] | undefined): number => {\r\n return (\r\n !!actions ||\r\n handlers.onRowCreate ||\r\n handlers.onRowCopy ||\r\n handlers.onRowDelete ||\r\n !!inlineEditingUniqueId ||\r\n handlers.onRowEdit\r\n );\r\n};\r\n\r\nconst getActions = (\r\n actions: RowActionHandler<any>[] | undefined,\r\n row: TableRow<any> | undefined = undefined\r\n): [RowAction<any>[], RowAction<any>[]] => {\r\n const primary: RowAction<any>[] = [];\r\n const secondary: RowAction<any>[] = [];\r\n\r\n if (actions) {\r\n let visibleActions = actions.filter(x => !!x && typeof x !== 'boolean') as RowAction<any>[];\r\n\r\n if (row) {\r\n visibleActions = visibleActions.filter(action => {\r\n if (action.visible !== undefined) {\r\n if (typeof action.visible === 'function') {\r\n return action.visible(row);\r\n }\r\n\r\n return action.visible;\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n visibleActions.forEach(action => {\r\n if (action.showOnRow) {\r\n primary.push(action);\r\n } else {\r\n secondary.push(action);\r\n }\r\n });\r\n }\r\n\r\n return [primary, secondary];\r\n};\r\n\r\nconst getLength = (inlineEditingUniqueId: any, handlers: any, actions: RowActionHandler<any>[] | undefined): number => {\r\n const [primaryActions, secondaryActions] = getActions(actions);\r\n\r\n let length = primaryActions.length + (secondaryActions.length ? 1 : 0);\r\n\r\n if (handlers.onRowCreate) {\r\n length++;\r\n }\r\n\r\n if (handlers.onRowCopy) {\r\n length++;\r\n }\r\n\r\n if (handlers.onRowDelete) {\r\n length++;\r\n }\r\n\r\n if (!!inlineEditingUniqueId || handlers.onRowEdit) {\r\n length++;\r\n\r\n if (length < 2) {\r\n length++;\r\n }\r\n }\r\n\r\n return length;\r\n};\r\n\r\nconst getActionProps = (action: RowAction<any>, row: TableRow<any>) => {\r\n return {\r\n 'aria-label': typeof action.tooltip === 'function' ? action.tooltip(row) : action.tooltip,\r\n disabled: typeof action.disabled === 'function' ? action.disabled(row) : action.disabled,\r\n onClick: (event: React.MouseEvent<HTMLElement>) => {\r\n action.onClick(row, event);\r\n },\r\n };\r\n};\r\n\r\nconst EditModeActions = () => {\r\n React.useEffect(() => {\r\n const listener = (event: any) => {\r\n if (event.key === 'Escape' && event.target?.form?.reset) {\r\n event.preventDefault();\r\n event.target.form.reset();\r\n }\r\n };\r\n\r\n document.addEventListener('keydown', listener);\r\n\r\n return () => {\r\n document.removeEventListener('keydown', listener);\r\n };\r\n }, []);\r\n\r\n return (\r\n <div className={actionGroupClassName}>\r\n <IconButton appearance=\"primary\" icon=\"tick\" type=\"submit\" className=\"mr-2\" />\r\n <IconButton appearance=\"ghost\" icon=\"close\" type=\"reset\" />\r\n </div>\r\n );\r\n};\r\n\r\nexport const useRowActions = <T extends {}>(\r\n inlineEditingUniqueId: keyof T | undefined,\r\n handlers: any,\r\n actions: RowActionHandler<T>[] | undefined,\r\n rowExpansionRenderer: any,\r\n texts: LocalizationTexts,\r\n windowed = false\r\n): PluginHook<{}> => {\r\n const inlineEditing = !!inlineEditingUniqueId;\r\n const actionsLength = getLength(inlineEditingUniqueId, handlers, actions);\r\n\r\n const plugin = (hooks: any): void => {\r\n if (hasActions(inlineEditingUniqueId, handlers, actions)) {\r\n hooks.visibleColumns.push((columns: any) => [\r\n ...columns,\r\n {\r\n id: '_actions',\r\n className: 'flex justify-end px-1 overflow-visible',\r\n flex: `0 0 calc((${actionsLength} * 2rem) + .5rem)`,\r\n Cell: ({ row }: any) => {\r\n if (row.isEditing) {\r\n return <EditModeActions />;\r\n }\r\n\r\n const sanitizedRow = sanitizeRowProps(row, rowExpansionRenderer);\r\n const [primaryActions, secondaryActions] = getActions(actions, sanitizedRow);\r\n\r\n const output = (\r\n <>\r\n {handlers.onRowCreate && (\r\n <IconButton\r\n appearance=\"discrete\"\r\n icon=\"circle-plus\"\r\n aria-label={texts.table.newSubRow}\r\n tooltip={texts.table.newSubRow}\r\n disabled={inlineEditing && !row.canEdit}\r\n onClick={(event: React.MouseEvent) => {\r\n event.stopPropagation();\r\n event.persist();\r\n row.setActive();\r\n\r\n if (!row.isExpanded) {\r\n row.toggleRowExpanded();\r\n }\r\n\r\n handlers.onRowCreate(sanitizedRow, event);\r\n }}\r\n />\r\n )}\r\n {(inlineEditing || handlers.onRowEdit) && (\r\n <IconButton\r\n appearance=\"discrete\"\r\n icon=\"edit\"\r\n aria-label={texts.table.edit}\r\n tooltip={texts.table.edit}\r\n disabled={inlineEditing && !row.canEdit}\r\n onClick={(event: React.MouseEvent) => {\r\n event.stopPropagation();\r\n row.setActive();\r\n\r\n if (inlineEditing) {\r\n row.toggleRowEditing();\r\n } else if (handlers.onRowEdit) {\r\n event.persist();\r\n handlers.onRowEdit(sanitizedRow, event);\r\n }\r\n }}\r\n />\r\n )}\r\n {handlers.onRowCopy && (\r\n <IconButton\r\n appearance=\"discrete\"\r\n icon=\"copy\"\r\n aria-label={texts.table.copy}\r\n tooltip={texts.table.copy}\r\n disabled={inlineEditing && !row.canEdit}\r\n onClick={(event: React.MouseEvent) => {\r\n event.stopPropagation();\r\n event.persist();\r\n row.setActive();\r\n handlers.onRowCopy(sanitizedRow, event);\r\n }}\r\n />\r\n )}\r\n {handlers.onRowDelete && (\r\n <IconButton\r\n appearance=\"discrete\"\r\n icon=\"delete\"\r\n aria-label={texts.table.del}\r\n tooltip={texts.table.del}\r\n disabled={inlineEditing && !row.canEdit}\r\n onClick={(event: React.MouseEvent) => {\r\n event.stopPropagation();\r\n event.persist();\r\n row.setActive();\r\n handlers.onRowDelete(sanitizedRow, event);\r\n }}\r\n />\r\n )}\r\n {primaryActions.map((action: RowAction<T>, index: number) => (\r\n <IconButton\r\n {...getActionProps(action, sanitizedRow)}\r\n key={index}\r\n appearance=\"discrete\"\r\n icon={typeof action.icon === 'function' ? action.icon(sanitizedRow) : action.icon}\r\n tooltip={\r\n typeof action.tooltip === 'function' ? action.tooltip(sanitizedRow) : action.tooltip\r\n }\r\n />\r\n ))}\r\n {secondaryActions.length ? (\r\n <Menu>\r\n <Menu.Trigger>\r\n <IconButton\r\n appearance=\"discrete\"\r\n icon=\"ellipsis-vertical\"\r\n aria-label={texts.table.actions}\r\n tooltip={texts.table.actions}\r\n disabled={inlineEditing && !row.canEdit}\r\n onClick={(event: React.MouseEvent) => {\r\n event.stopPropagation();\r\n row.setActive();\r\n }}\r\n />\r\n </Menu.Trigger>\r\n <Menu.Content>\r\n {secondaryActions.map((action: RowAction<T>, index: number) => (\r\n <Menu.Item\r\n key={index}\r\n icon={\r\n typeof action.icon === 'function'\r\n ? action.icon(sanitizedRow)\r\n : action.icon\r\n }\r\n {...getActionProps(action, sanitizedRow)}>\r\n {typeof action.text === 'function' ? action.text(sanitizedRow) : action.text}\r\n </Menu.Item>\r\n ))}\r\n </Menu.Content>\r\n </Menu>\r\n ) : null}\r\n </>\r\n );\r\n\r\n if (windowed) {\r\n return <div className={actionGroupClassName}>{output}</div>;\r\n }\r\n\r\n return (\r\n <InView rootMargin=\"100px 0px\">\r\n {({ inView, ref }) => (\r\n <div className={actionGroupClassName} ref={ref}>\r\n {inView ? output : null}\r\n </div>\r\n )}\r\n </InView>\r\n );\r\n },\r\n },\r\n ]);\r\n }\r\n };\r\n plugin.pluginName = 'useRowActions';\r\n return plugin;\r\n};\r\n"],"names":["actionGroupClassName","hasActions","inlineEditingUniqueId","handlers","actions","onRowCreate","onRowCopy","onRowDelete","onRowEdit","getActions","row","undefined","primary","secondary","visibleActions","filter","x","action","visible","forEach","showOnRow","push","getLength","primaryActions","secondaryActions","length","getActionProps","tooltip","disabled","onClick","event","EditModeActions","React","useEffect","listener","key","target","form","reset","preventDefault","document","addEventListener","removeEventListener","className","IconButton","appearance","icon","type","useRowActions","rowExpansionRenderer","texts","windowed","inlineEditing","actionsLength","plugin","hooks","visibleColumns","columns","id","flex","Cell","isEditing","sanitizedRow","sanitizeRowProps","output","table","newSubRow","canEdit","stopPropagation","persist","setActive","isExpanded","toggleRowExpanded","edit","toggleRowEditing","copy","del","map","index","Menu","Trigger","Content","Item","text","InView","rootMargin","inView","ref","pluginName"],"mappings":"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"}
|
@@ -79,7 +79,7 @@ const useTable = (props, ref) => {
|
|
79
79
|
const {
|
80
80
|
children,
|
81
81
|
data,
|
82
|
-
dangerouslyHijackGlobalKeyboardNavigation:
|
82
|
+
dangerouslyHijackGlobalKeyboardNavigation: _,
|
83
83
|
onRowClick,
|
84
84
|
onRowDrag,
|
85
85
|
onSelectedRows,
|
@@ -92,6 +92,10 @@ const useTable = (props, ref) => {
|
|
92
92
|
manualSorting,
|
93
93
|
onSort,
|
94
94
|
sortRules,
|
95
|
+
//index
|
96
|
+
activeIndex: _1,
|
97
|
+
defaultActiveIndex: _2,
|
98
|
+
onChangeActiveIndex: _3,
|
95
99
|
// pagination
|
96
100
|
disablePagination = true,
|
97
101
|
length,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useTable.js","sources":["../../../../../src/components/Table/hooks/useTable.tsx"],"sourcesContent":["import React from 'react';\nimport { useTable as useReactTable, useExpanded, useSortBy, usePagination, useRowState } from 'react-table';\nimport { getColumnsFromChildren, getInternalSortRules } from '../util';\nimport { sortTypes } from '../util/sortTypes';\nimport { useRowEditing } from './plugins/useRowEditing';\nimport { useRowActions } from './plugins/useRowActions';\nimport { useRowSelect } from './plugins/useRowSelect';\nimport {\n InternalTable,\n InternalTableRow,\n PaginationHandler,\n RowActiveHandler,\n SortHandler,\n TableProps,\n TableRef,\n} from '../types';\nimport { useTableKeyboardNavigation } from './useTableKeyboardNavigation';\nimport { useLocalization } from '../../Provider/Provider';\nimport { useRowDraggable } from './plugins/useRowDraggable';\nimport { sanitizeRowProps } from '../util';\n\nconst useTableRowActive = (\n activeIndex: number | undefined,\n rows: InternalTableRow[],\n rowExpansionRenderer: TableProps<any>['rowExpansionRenderer'],\n handleonRowActive: RowActiveHandler<any> | undefined\n) => {\n React.useEffect(() => {\n if (activeIndex !== undefined && rows.length && handleonRowActive) {\n const focusedRow = rows[activeIndex];\n if (focusedRow) {\n const sanitizedFocusedRow = sanitizeRowProps(focusedRow, rowExpansionRenderer);\n handleonRowActive(sanitizedFocusedRow);\n }\n }\n }, [activeIndex, rows]);\n};\n\nconst useTableInstance = (instance: any, ref: React.RefObject<TableRef>): object => {\n const sanitizedInstance = React.useMemo(\n () => ({\n toggleAllRowsExpanded: instance.toggleAllRowsExpanded,\n toggleHideAllColumns: instance.toggleHideAllColumns,\n toggleHideColumn: instance.toggleHideColumn,\n toggleEditing: instance.toggleEditing,\n toggleRowEditing: instance.toggleRowEditing,\n resetRowEditing: instance.resetRowEditing,\n toggleRowExpanded: instance.toggleRowExpanded,\n toggleSortBy: instance.toggleSortBy,\n }),\n []\n );\n\n React.useEffect(() => {\n if (ref?.current) {\n ref.current.instance = sanitizedInstance;\n }\n }, [ref]);\n\n return sanitizedInstance;\n};\n\nconst useTablePaginationListener = (disablePagination: boolean, onPaginate: PaginationHandler | undefined, state: any): void => {\n React.useEffect(() => {\n if (!disablePagination && onPaginate) {\n onPaginate(state.pageIndex, state.pageSize);\n }\n }, [state.pageIndex, state.pageSize]);\n};\n\nconst useTableSortingListener = (\n data: any[],\n sortedRows: any[],\n onSort: SortHandler<any> | undefined,\n manualSorting: boolean,\n state: any\n): void => {\n React.useEffect(() => {\n if (onSort) {\n const sortRules = state.sortBy.map((rule: any) => ({ accessor: rule.id, desc: rule.desc }));\n\n if (manualSorting) {\n onSort(sortRules);\n } else {\n let sortedData;\n\n if (sortRules.length && sortedRows?.length) {\n sortedData = sortedRows.map((row: any) => row.original);\n }\n\n onSort(sortRules, sortedData || data);\n }\n }\n }, [onSort && JSON.stringify(state.sortBy), manualSorting]);\n};\n\nconst DEFAULT_PAGE_SIZE = 10;\n\nexport const useTable = <T extends {}>(\n props: TableProps<T> & { windowed?: boolean },\n ref: React.RefObject<TableRef>\n): InternalTable => {\n const {\n children,\n data,\n dangerouslyHijackGlobalKeyboardNavigation: _1,\n onRowClick,\n onRowDrag,\n onSelectedRows,\n rowClassName,\n rowExpansionRenderer,\n rowHeight,\n selectedRows,\n\n // sorting\n disableSorting,\n manualSorting,\n onSort,\n sortRules,\n\n // pagination\n disablePagination = true,\n length,\n onPaginate,\n pageSize = DEFAULT_PAGE_SIZE,\n pageIndex = 0,\n\n // row editing\n inlineEditingUniqueId = undefined,\n onRowCreate,\n\n // actions\n actions,\n onRowEdit,\n onRowCopy,\n onRowDelete,\n onRowActive,\n\n windowed = false,\n\n ...otherProps\n } = props;\n\n if ((onSelectedRows && !selectedRows) || (!onSelectedRows && selectedRows)) {\n throw new Error(\n 'Selected rows in a Table component are fully controlled - you must pass both the `onSelectedRows` and `selectedRows` props when using row selection'\n );\n }\n\n const { texts } = useLocalization();\n const { columns, sortRules: defaultSortRules } = React.useMemo(\n () => getColumnsFromChildren(children, rowExpansionRenderer),\n [children, rowExpansionRenderer]\n );\n\n const manualPagination = !disablePagination && !!onPaginate && !!length;\n\n const {\n headerGroups,\n rows,\n sortedRows,\n prepareRow: prepareBaseRow,\n state,\n // pagination\n page,\n gotoPage,\n setPageSize,\n ...instance\n }: any = useReactTable(\n {\n columns,\n data,\n initialState: {\n // eslint-disable-next-line\n // @ts-ignore: not sure how to type this correctly right now\n sortBy: getInternalSortRules(sortRules) || defaultSortRules,\n pageSize: !disablePagination ? pageSize : undefined,\n pageIndex: !disablePagination ? pageIndex : undefined,\n },\n manualPagination,\n pageCount: manualPagination && length ? Math.ceil(length / pageSize) : -1,\n manualSortBy: manualSorting,\n disableSortBy: disableSorting,\n // most of these resets preventions are needed for editing mode\n autoResetExpanded: false,\n autoResetSelectedRows: false,\n autoResetSortBy: false,\n autoResetPage: false,\n sortTypes: React.useMemo(() => sortTypes, []),\n useControlledState: currentState => {\n return React.useMemo(\n () => ({\n ...currentState,\n selectedRowIds: selectedRows || [],\n }),\n [currentState, selectedRows]\n );\n },\n },\n useRowState,\n useSortBy,\n useExpanded,\n usePagination,\n useRowSelect(onSelectedRows),\n useRowDraggable(onRowDrag),\n useRowEditing(inlineEditingUniqueId),\n useRowActions(\n inlineEditingUniqueId,\n { onRowCreate, onRowEdit, onRowCopy, onRowDelete },\n actions,\n rowExpansionRenderer,\n texts,\n windowed\n )\n );\n\n useTablePaginationListener(disablePagination, onPaginate, state);\n useTableSortingListener(data, sortedRows, onSort, !!manualSorting, state);\n\n const sanitizedInstance = useTableInstance(instance, ref);\n\n const visibleRows = !disablePagination && !manualPagination ? page : rows;\n\n const [activeIndex, setActiveIndex, handleKeyDown, handleFocus] = useTableKeyboardNavigation<T>(\n props,\n visibleRows,\n { onRowClick, onRowCreate, onRowEdit, onRowCopy, onRowDelete, rowExpansionRenderer },\n ref\n );\n\n useTableRowActive(activeIndex, rows, rowExpansionRenderer, onRowActive);\n\n const prepareRow = React.useCallback(\n (row: any, index: number) => {\n prepareBaseRow(row);\n row.setActive = () => setActiveIndex(index);\n },\n [prepareBaseRow, setActiveIndex]\n );\n\n return {\n rowProps: {\n activeIndex,\n setActiveIndex,\n onRowClick,\n rowClassName,\n rowExpansionRenderer,\n rowHeight,\n inlineEditingUniqueId,\n },\n tableProps: {\n ...otherProps,\n headerGroups,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n tabIndex: otherProps.tabIndex ?? 0,\n },\n state,\n pagination: !disablePagination\n ? {\n length: manualPagination && length ? length : data.length,\n pageIndex: state.pageIndex,\n pageSize: state.pageSize,\n setPageIndex: gotoPage,\n setPageSize: setPageSize,\n }\n : null,\n rows: visibleRows,\n prepareRow,\n instance: sanitizedInstance,\n };\n};\n"],"names":["useTableRowActive","activeIndex","rows","rowExpansionRenderer","handleonRowActive","React","useEffect","undefined","length","focusedRow","sanitizedFocusedRow","sanitizeRowProps","useTableInstance","instance","ref","sanitizedInstance","useMemo","toggleAllRowsExpanded","toggleHideAllColumns","toggleHideColumn","toggleEditing","toggleRowEditing","resetRowEditing","toggleRowExpanded","toggleSortBy","current","useTablePaginationListener","disablePagination","onPaginate","state","pageIndex","pageSize","useTableSortingListener","data","sortedRows","onSort","manualSorting","sortRules","sortBy","map","rule","accessor","id","desc","sortedData","row","original","JSON","stringify","DEFAULT_PAGE_SIZE","useTable","props","children","dangerouslyHijackGlobalKeyboardNavigation","_1","onRowClick","onRowDrag","onSelectedRows","rowClassName","rowHeight","selectedRows","disableSorting","inlineEditingUniqueId","onRowCreate","actions","onRowEdit","onRowCopy","onRowDelete","onRowActive","windowed","otherProps","Error","texts","useLocalization","columns","defaultSortRules","getColumnsFromChildren","manualPagination","headerGroups","prepareRow","prepareBaseRow","page","gotoPage","setPageSize","useReactTable","initialState","getInternalSortRules","pageCount","Math","ceil","manualSortBy","disableSortBy","autoResetExpanded","autoResetSelectedRows","autoResetSortBy","autoResetPage","sortTypes","useControlledState","currentState","selectedRowIds","useRowState","useSortBy","useExpanded","usePagination","useRowSelect","useRowDraggable","useRowEditing","useRowActions","visibleRows","setActiveIndex","handleKeyDown","handleFocus","useTableKeyboardNavigation","useCallback","index","setActive","rowProps","tableProps","onFocus","onKeyDown","tabIndex","pagination","setPageIndex"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"useTable.js","sources":["../../../../../src/components/Table/hooks/useTable.tsx"],"sourcesContent":["import React from 'react';\nimport { useTable as useReactTable, useExpanded, useSortBy, usePagination, useRowState } from 'react-table';\nimport { getColumnsFromChildren, getInternalSortRules } from '../util';\nimport { sortTypes } from '../util/sortTypes';\nimport { useRowEditing } from './plugins/useRowEditing';\nimport { useRowActions } from './plugins/useRowActions';\nimport { useRowSelect } from './plugins/useRowSelect';\nimport {\n InternalTable,\n InternalTableRow,\n PaginationHandler,\n RowActiveHandler,\n SortHandler,\n TableProps,\n TableRef,\n} from '../types';\nimport { useTableKeyboardNavigation } from './useTableKeyboardNavigation';\nimport { useLocalization } from '../../Provider/Provider';\nimport { useRowDraggable } from './plugins/useRowDraggable';\nimport { sanitizeRowProps } from '../util';\n\nconst useTableRowActive = (\n activeIndex: number | undefined,\n rows: InternalTableRow[],\n rowExpansionRenderer: TableProps<any>['rowExpansionRenderer'],\n handleonRowActive: RowActiveHandler<any> | undefined\n) => {\n React.useEffect(() => {\n if (activeIndex !== undefined && rows.length && handleonRowActive) {\n const focusedRow = rows[activeIndex];\n if (focusedRow) {\n const sanitizedFocusedRow = sanitizeRowProps(focusedRow, rowExpansionRenderer);\n handleonRowActive(sanitizedFocusedRow);\n }\n }\n }, [activeIndex, rows]);\n};\n\nconst useTableInstance = (instance: any, ref: React.RefObject<TableRef>): object => {\n const sanitizedInstance = React.useMemo(\n () => ({\n toggleAllRowsExpanded: instance.toggleAllRowsExpanded,\n toggleHideAllColumns: instance.toggleHideAllColumns,\n toggleHideColumn: instance.toggleHideColumn,\n toggleEditing: instance.toggleEditing,\n toggleRowEditing: instance.toggleRowEditing,\n resetRowEditing: instance.resetRowEditing,\n toggleRowExpanded: instance.toggleRowExpanded,\n toggleSortBy: instance.toggleSortBy,\n }),\n []\n );\n\n React.useEffect(() => {\n if (ref?.current) {\n ref.current.instance = sanitizedInstance;\n }\n }, [ref]);\n\n return sanitizedInstance;\n};\n\nconst useTablePaginationListener = (disablePagination: boolean, onPaginate: PaginationHandler | undefined, state: any): void => {\n React.useEffect(() => {\n if (!disablePagination && onPaginate) {\n onPaginate(state.pageIndex, state.pageSize);\n }\n }, [state.pageIndex, state.pageSize]);\n};\n\nconst useTableSortingListener = (\n data: any[],\n sortedRows: any[],\n onSort: SortHandler<any> | undefined,\n manualSorting: boolean,\n state: any\n): void => {\n React.useEffect(() => {\n if (onSort) {\n const sortRules = state.sortBy.map((rule: any) => ({ accessor: rule.id, desc: rule.desc }));\n\n if (manualSorting) {\n onSort(sortRules);\n } else {\n let sortedData;\n\n if (sortRules.length && sortedRows?.length) {\n sortedData = sortedRows.map((row: any) => row.original);\n }\n\n onSort(sortRules, sortedData || data);\n }\n }\n }, [onSort && JSON.stringify(state.sortBy), manualSorting]);\n};\n\nconst DEFAULT_PAGE_SIZE = 10;\n\nexport const useTable = <T extends {}>(\n props: TableProps<T> & { windowed?: boolean },\n ref: React.RefObject<TableRef>\n): InternalTable => {\n const {\n children,\n data,\n dangerouslyHijackGlobalKeyboardNavigation: _,\n onRowClick,\n onRowDrag,\n onSelectedRows,\n rowClassName,\n rowExpansionRenderer,\n rowHeight,\n selectedRows,\n\n // sorting\n disableSorting,\n manualSorting,\n onSort,\n sortRules,\n\n //index\n activeIndex: _1,\n defaultActiveIndex: _2,\n onChangeActiveIndex: _3,\n\n // pagination\n disablePagination = true,\n length,\n onPaginate,\n pageSize = DEFAULT_PAGE_SIZE,\n pageIndex = 0,\n\n // row editing\n inlineEditingUniqueId = undefined,\n onRowCreate,\n\n // actions\n actions,\n onRowEdit,\n onRowCopy,\n onRowDelete,\n onRowActive,\n\n windowed = false,\n\n ...otherProps\n } = props;\n\n if ((onSelectedRows && !selectedRows) || (!onSelectedRows && selectedRows)) {\n throw new Error(\n 'Selected rows in a Table component are fully controlled - you must pass both the `onSelectedRows` and `selectedRows` props when using row selection'\n );\n }\n\n const { texts } = useLocalization();\n const { columns, sortRules: defaultSortRules } = React.useMemo(\n () => getColumnsFromChildren(children, rowExpansionRenderer),\n [children, rowExpansionRenderer]\n );\n\n const manualPagination = !disablePagination && !!onPaginate && !!length;\n\n const {\n headerGroups,\n rows,\n sortedRows,\n prepareRow: prepareBaseRow,\n state,\n // pagination\n page,\n gotoPage,\n setPageSize,\n ...instance\n }: any = useReactTable(\n {\n columns,\n data,\n initialState: {\n // eslint-disable-next-line\n // @ts-ignore: not sure how to type this correctly right now\n sortBy: getInternalSortRules(sortRules) || defaultSortRules,\n pageSize: !disablePagination ? pageSize : undefined,\n pageIndex: !disablePagination ? pageIndex : undefined,\n },\n manualPagination,\n pageCount: manualPagination && length ? Math.ceil(length / pageSize) : -1,\n manualSortBy: manualSorting,\n disableSortBy: disableSorting,\n // most of these resets preventions are needed for editing mode\n autoResetExpanded: false,\n autoResetSelectedRows: false,\n autoResetSortBy: false,\n autoResetPage: false,\n sortTypes: React.useMemo(() => sortTypes, []),\n useControlledState: currentState => {\n return React.useMemo(\n () => ({\n ...currentState,\n selectedRowIds: selectedRows || [],\n }),\n [currentState, selectedRows]\n );\n },\n },\n useRowState,\n useSortBy,\n useExpanded,\n usePagination,\n useRowSelect(onSelectedRows),\n useRowDraggable(onRowDrag),\n useRowEditing(inlineEditingUniqueId),\n useRowActions(\n inlineEditingUniqueId,\n { onRowCreate, onRowEdit, onRowCopy, onRowDelete },\n actions,\n rowExpansionRenderer,\n texts,\n windowed\n )\n );\n\n useTablePaginationListener(disablePagination, onPaginate, state);\n useTableSortingListener(data, sortedRows, onSort, !!manualSorting, state);\n\n const sanitizedInstance = useTableInstance(instance, ref);\n\n const visibleRows = !disablePagination && !manualPagination ? page : rows;\n\n const [activeIndex, setActiveIndex, handleKeyDown, handleFocus] = useTableKeyboardNavigation<T>(\n props,\n visibleRows,\n { onRowClick, onRowCreate, onRowEdit, onRowCopy, onRowDelete, rowExpansionRenderer },\n ref\n );\n\n useTableRowActive(activeIndex, rows, rowExpansionRenderer, onRowActive);\n\n const prepareRow = React.useCallback(\n (row: any, index: number) => {\n prepareBaseRow(row);\n row.setActive = () => setActiveIndex(index);\n },\n [prepareBaseRow, setActiveIndex]\n );\n\n return {\n rowProps: {\n activeIndex,\n setActiveIndex,\n onRowClick,\n rowClassName,\n rowExpansionRenderer,\n rowHeight,\n inlineEditingUniqueId,\n },\n tableProps: {\n ...otherProps,\n headerGroups,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n tabIndex: otherProps.tabIndex ?? 0,\n },\n state,\n pagination: !disablePagination\n ? {\n length: manualPagination && length ? length : data.length,\n pageIndex: state.pageIndex,\n pageSize: state.pageSize,\n setPageIndex: gotoPage,\n setPageSize: setPageSize,\n }\n : null,\n rows: visibleRows,\n prepareRow,\n instance: sanitizedInstance,\n };\n};\n"],"names":["useTableRowActive","activeIndex","rows","rowExpansionRenderer","handleonRowActive","React","useEffect","undefined","length","focusedRow","sanitizedFocusedRow","sanitizeRowProps","useTableInstance","instance","ref","sanitizedInstance","useMemo","toggleAllRowsExpanded","toggleHideAllColumns","toggleHideColumn","toggleEditing","toggleRowEditing","resetRowEditing","toggleRowExpanded","toggleSortBy","current","useTablePaginationListener","disablePagination","onPaginate","state","pageIndex","pageSize","useTableSortingListener","data","sortedRows","onSort","manualSorting","sortRules","sortBy","map","rule","accessor","id","desc","sortedData","row","original","JSON","stringify","DEFAULT_PAGE_SIZE","useTable","props","children","dangerouslyHijackGlobalKeyboardNavigation","_","onRowClick","onRowDrag","onSelectedRows","rowClassName","rowHeight","selectedRows","disableSorting","_1","defaultActiveIndex","_2","onChangeActiveIndex","_3","inlineEditingUniqueId","onRowCreate","actions","onRowEdit","onRowCopy","onRowDelete","onRowActive","windowed","otherProps","Error","texts","useLocalization","columns","defaultSortRules","getColumnsFromChildren","manualPagination","headerGroups","prepareRow","prepareBaseRow","page","gotoPage","setPageSize","useReactTable","initialState","getInternalSortRules","pageCount","Math","ceil","manualSortBy","disableSortBy","autoResetExpanded","autoResetSelectedRows","autoResetSortBy","autoResetPage","sortTypes","useControlledState","currentState","selectedRowIds","useRowState","useSortBy","useExpanded","usePagination","useRowSelect","useRowDraggable","useRowEditing","useRowActions","visibleRows","setActiveIndex","handleKeyDown","handleFocus","useTableKeyboardNavigation","useCallback","index","setActive","rowProps","tableProps","onFocus","onKeyDown","tabIndex","pagination","setPageIndex"],"mappings":"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"}
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import React__default from 'react';
|
2
|
-
import
|
3
|
-
import { getNextIndexFromKeycode } from '../../../utils/hooks/useListKeyboardNavigation.js';
|
2
|
+
import { getNextIndexFromKey } from '../../../utils/hooks/useListKeyboardNavigation.js';
|
4
3
|
import { sanitizeRowProps } from '../util.js';
|
5
4
|
import { useControllableState } from '@radix-ui/react-use-controllable-state';
|
6
5
|
|
@@ -9,7 +8,13 @@ const useTableKeyboardNavigation = (props, rows, rowProps, ref) => {
|
|
9
8
|
const [activeIndex, setActiveIndex] = useControllableState({
|
10
9
|
prop: props.activeIndex,
|
11
10
|
defaultProp: props.defaultActiveIndex !== undefined ? props.defaultActiveIndex : useGlobalKeyboardNavigation ? 0 : undefined,
|
12
|
-
onChange:
|
11
|
+
onChange: index => {
|
12
|
+
if (index !== undefined) {
|
13
|
+
var _props$onChangeActive;
|
14
|
+
|
15
|
+
(_props$onChangeActive = props.onChangeActiveIndex) === null || _props$onChangeActive === void 0 ? void 0 : _props$onChangeActive.call(props, index);
|
16
|
+
}
|
17
|
+
}
|
13
18
|
});
|
14
19
|
|
15
20
|
const onKeyDown = event => {
|
@@ -32,24 +37,24 @@ const useTableKeyboardNavigation = (props, rows, rowProps, ref) => {
|
|
32
37
|
if (currentRow) {
|
33
38
|
const sanitizedRow = sanitizeRowProps(currentRow, rowProps.rowExpansionRenderer);
|
34
39
|
|
35
|
-
if (rowProps.onRowClick && event.
|
40
|
+
if (rowProps.onRowClick && event.key === 'Enter') {
|
36
41
|
event.preventDefault();
|
37
42
|
rowProps.onRowClick(sanitizedRow);
|
38
43
|
return;
|
39
44
|
}
|
40
45
|
|
41
|
-
if (currentRow.toggleRowSelected && event.
|
46
|
+
if (currentRow.toggleRowSelected && event.key === ' ') {
|
42
47
|
event.preventDefault();
|
43
48
|
currentRow.toggleRowSelected();
|
44
49
|
return;
|
45
50
|
}
|
46
51
|
|
47
52
|
if (currentRow.toggleRowExpanded) {
|
48
|
-
if (currentRow.isExpanded && event.
|
53
|
+
if (currentRow.isExpanded && event.key === 'ArrowLeft') {
|
49
54
|
event.preventDefault();
|
50
55
|
currentRow.toggleRowExpanded();
|
51
56
|
return;
|
52
|
-
} else if (!currentRow.isExpanded && event.
|
57
|
+
} else if (!currentRow.isExpanded && event.key === 'ArrowRight') {
|
53
58
|
event.preventDefault();
|
54
59
|
currentRow.toggleRowExpanded();
|
55
60
|
return;
|
@@ -59,7 +64,7 @@ const useTableKeyboardNavigation = (props, rows, rowProps, ref) => {
|
|
59
64
|
|
60
65
|
if (currentRow.toggleRowEditing) {
|
61
66
|
if (currentRow.canEdit && !currentRow.isEditing) {
|
62
|
-
if (rowProps.onRowCreate && event.shiftKey && event.
|
67
|
+
if (rowProps.onRowCreate && event.shiftKey && event.key === 'n') {
|
63
68
|
event.preventDefault();
|
64
69
|
|
65
70
|
if (!currentRow.isExpanded) {
|
@@ -70,7 +75,7 @@ const useTableKeyboardNavigation = (props, rows, rowProps, ref) => {
|
|
70
75
|
return;
|
71
76
|
}
|
72
77
|
|
73
|
-
if (event.
|
78
|
+
if (event.key === 'e') {
|
74
79
|
event.preventDefault();
|
75
80
|
currentRow.toggleRowEditing();
|
76
81
|
return;
|
@@ -78,19 +83,19 @@ const useTableKeyboardNavigation = (props, rows, rowProps, ref) => {
|
|
78
83
|
}
|
79
84
|
}
|
80
85
|
|
81
|
-
if (rowProps.onRowEdit && event.
|
86
|
+
if (rowProps.onRowEdit && event.key === 'e' && !isModifierKeyPressed) {
|
82
87
|
event.preventDefault();
|
83
88
|
rowProps.onRowEdit(sanitizedRow, event);
|
84
89
|
return;
|
85
90
|
}
|
86
91
|
|
87
|
-
if (rowProps.onRowCopy && event.
|
92
|
+
if (rowProps.onRowCopy && event.key === 'c' && !isModifierKeyPressed) {
|
88
93
|
event.preventDefault();
|
89
94
|
rowProps.onRowCopy(sanitizedRow, event);
|
90
95
|
return;
|
91
96
|
}
|
92
97
|
|
93
|
-
if (rowProps.onRowDelete && event.
|
98
|
+
if (rowProps.onRowDelete && event.key === 'Delete' && !isModifierKeyPressed) {
|
94
99
|
event.preventDefault();
|
95
100
|
rowProps.onRowDelete(sanitizedRow, event);
|
96
101
|
return;
|
@@ -98,7 +103,7 @@ const useTableKeyboardNavigation = (props, rows, rowProps, ref) => {
|
|
98
103
|
}
|
99
104
|
}
|
100
105
|
|
101
|
-
const nextIndex =
|
106
|
+
const nextIndex = getNextIndexFromKey(event.key, rows.length, activeIndex);
|
102
107
|
|
103
108
|
if (nextIndex !== undefined) {
|
104
109
|
event.preventDefault();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useTableKeyboardNavigation.js","sources":["../../../../../src/components/Table/hooks/useTableKeyboardNavigation.ts"],"sourcesContent":["import React from 'react';\r\nimport keycode from 'keycode';\r\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\r\nimport { getNextIndexFromKeycode } from '../../../utils/hooks/useListKeyboardNavigation';\r\nimport { sanitizeRowProps } from '../util';\r\nimport { TableProps } from '../types';\r\n\r\nexport const useTableKeyboardNavigation = <T extends {}>(\r\n props: TableProps<T>,\r\n rows: any[],\r\n rowProps: any,\r\n ref: React.RefObject<HTMLDivElement>\r\n): [\r\n number | undefined,\r\n (index: number) => void,\r\n (event: React.KeyboardEvent<HTMLElement>) => void,\r\n (event: React.FocusEvent<HTMLElement>) => void\r\n] => {\r\n const useGlobalKeyboardNavigation = props.dangerouslyHijackGlobalKeyboardNavigation;\r\n\r\n const [activeIndex, setActiveIndex] = useControllableState<number | undefined>({\r\n prop: props.activeIndex,\r\n defaultProp:\r\n props.defaultActiveIndex !== undefined ? props.defaultActiveIndex : useGlobalKeyboardNavigation ? 0 : undefined,\r\n onChange: props.onChangeActiveIndex,\r\n });\r\n\r\n const onKeyDown = (event: KeyboardEvent): void => {\r\n const isModifierKeyPressed = event.metaKey || event.ctrlKey || event.altKey || event.shiftKey;\r\n\r\n if (\r\n useGlobalKeyboardNavigation &&\r\n document.activeElement !== ref.current &&\r\n document.activeElement?.getAttribute('type') !== 'search' &&\r\n document.activeElement !== document.body\r\n ) {\r\n return;\r\n }\r\n // abort key handling if other elements inside table are focused and we don't use global keyboard navigation\r\n if (!useGlobalKeyboardNavigation && document.activeElement !== ref.current) {\r\n return;\r\n }\r\n\r\n if (activeIndex !== undefined) {\r\n const currentRow = rows[activeIndex];\r\n\r\n if (currentRow) {\r\n const sanitizedRow = sanitizeRowProps(currentRow, rowProps.rowExpansionRenderer);\r\n\r\n if (rowProps.onRowClick && event.keyCode === keycode('enter')) {\r\n event.preventDefault();\r\n rowProps.onRowClick(sanitizedRow);\r\n return;\r\n }\r\n\r\n if (currentRow.toggleRowSelected && event.keyCode === keycode('space')) {\r\n event.preventDefault();\r\n currentRow.toggleRowSelected();\r\n return;\r\n }\r\n\r\n if (currentRow.toggleRowExpanded) {\r\n if (currentRow.isExpanded && event.keyCode === keycode('left')) {\r\n event.preventDefault();\r\n currentRow.toggleRowExpanded();\r\n return;\r\n } else if (!currentRow.isExpanded && event.keyCode === keycode('right')) {\r\n event.preventDefault();\r\n currentRow.toggleRowExpanded();\r\n return;\r\n }\r\n }\r\n\r\n // inline editing\r\n if (currentRow.toggleRowEditing) {\r\n if (currentRow.canEdit && !currentRow.isEditing) {\r\n if (rowProps.onRowCreate && event.shiftKey && event.keyCode === keycode('n')) {\r\n event.preventDefault();\r\n\r\n if (!currentRow.isExpanded) {\r\n currentRow.toggleRowExpanded();\r\n }\r\n\r\n rowProps.onRowCreate(sanitizedRow, event);\r\n return;\r\n }\r\n\r\n if (event.keyCode === keycode('e')) {\r\n event.preventDefault();\r\n currentRow.toggleRowEditing();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if (rowProps.onRowEdit && event.keyCode === keycode('e') && !isModifierKeyPressed) {\r\n event.preventDefault();\r\n rowProps.onRowEdit(sanitizedRow, event);\r\n return;\r\n }\r\n\r\n if (rowProps.onRowCopy && event.keyCode === keycode('c') && !isModifierKeyPressed) {\r\n event.preventDefault();\r\n rowProps.onRowCopy(sanitizedRow, event);\r\n return;\r\n }\r\n\r\n if (rowProps.onRowDelete && event.keyCode === keycode('delete') && !isModifierKeyPressed) {\r\n event.preventDefault();\r\n rowProps.onRowDelete(sanitizedRow, event);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n const nextIndex = getNextIndexFromKeycode(event.keyCode, rows.length, activeIndex);\r\n\r\n if (nextIndex !== undefined) {\r\n event.preventDefault();\r\n setActiveIndex(nextIndex);\r\n }\r\n };\r\n\r\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>): void => {\r\n if (!useGlobalKeyboardNavigation) {\r\n onKeyDown(event.nativeEvent);\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n if (useGlobalKeyboardNavigation) {\r\n window.addEventListener('keydown', onKeyDown);\r\n }\r\n\r\n return () => {\r\n if (useGlobalKeyboardNavigation) {\r\n window.removeEventListener('keydown', onKeyDown);\r\n }\r\n };\r\n }, [onKeyDown]);\r\n\r\n const handleFocus = (): void => {\r\n if (activeIndex === undefined && rows.length) {\r\n setActiveIndex(0);\r\n }\r\n };\r\n\r\n return [activeIndex, setActiveIndex, handleKeyDown, handleFocus];\r\n};\r\n"],"names":["useTableKeyboardNavigation","props","rows","rowProps","ref","useGlobalKeyboardNavigation","dangerouslyHijackGlobalKeyboardNavigation","activeIndex","setActiveIndex","useControllableState","prop","defaultProp","defaultActiveIndex","undefined","onChange","onChangeActiveIndex","onKeyDown","event","isModifierKeyPressed","metaKey","ctrlKey","altKey","shiftKey","document","activeElement","current","getAttribute","body","currentRow","sanitizedRow","sanitizeRowProps","rowExpansionRenderer","onRowClick","keyCode","keycode","preventDefault","toggleRowSelected","toggleRowExpanded","isExpanded","toggleRowEditing","canEdit","isEditing","onRowCreate","onRowEdit","onRowCopy","onRowDelete","nextIndex","getNextIndexFromKeycode","length","handleKeyDown","nativeEvent","React","useEffect","window","addEventListener","removeEventListener","handleFocus"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"useTableKeyboardNavigation.js","sources":["../../../../../src/components/Table/hooks/useTableKeyboardNavigation.ts"],"sourcesContent":["import React from 'react';\r\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\r\nimport { getNextIndexFromKey } from '../../../utils/hooks/useListKeyboardNavigation';\r\nimport { sanitizeRowProps } from '../util';\r\nimport { TableProps } from '../types';\r\n\r\nexport const useTableKeyboardNavigation = <T extends {}>(\r\n props: TableProps<T>,\r\n rows: any[],\r\n rowProps: any,\r\n ref: React.RefObject<HTMLDivElement>\r\n): [\r\n number | undefined,\r\n (index: number) => void,\r\n (event: React.KeyboardEvent<HTMLElement>) => void,\r\n (event: React.FocusEvent<HTMLElement>) => void\r\n] => {\r\n const useGlobalKeyboardNavigation = props.dangerouslyHijackGlobalKeyboardNavigation;\r\n\r\n const [activeIndex, setActiveIndex] = useControllableState<number | undefined>({\r\n prop: props.activeIndex,\r\n defaultProp:\r\n props.defaultActiveIndex !== undefined ? props.defaultActiveIndex : useGlobalKeyboardNavigation ? 0 : undefined,\r\n onChange: index => {\r\n if (index !== undefined) {\r\n props.onChangeActiveIndex?.(index);\r\n }\r\n },\r\n });\r\n\r\n const onKeyDown = (event: KeyboardEvent): void => {\r\n const isModifierKeyPressed = event.metaKey || event.ctrlKey || event.altKey || event.shiftKey;\r\n\r\n if (\r\n useGlobalKeyboardNavigation &&\r\n document.activeElement !== ref.current &&\r\n document.activeElement?.getAttribute('type') !== 'search' &&\r\n document.activeElement !== document.body\r\n ) {\r\n return;\r\n }\r\n // abort key handling if other elements inside table are focused and we don't use global keyboard navigation\r\n if (!useGlobalKeyboardNavigation && document.activeElement !== ref.current) {\r\n return;\r\n }\r\n\r\n if (activeIndex !== undefined) {\r\n const currentRow = rows[activeIndex];\r\n\r\n if (currentRow) {\r\n const sanitizedRow = sanitizeRowProps(currentRow, rowProps.rowExpansionRenderer);\r\n\r\n if (rowProps.onRowClick && event.key === 'Enter') {\r\n event.preventDefault();\r\n rowProps.onRowClick(sanitizedRow);\r\n return;\r\n }\r\n\r\n if (currentRow.toggleRowSelected && event.key === ' ') {\r\n event.preventDefault();\r\n currentRow.toggleRowSelected();\r\n return;\r\n }\r\n\r\n if (currentRow.toggleRowExpanded) {\r\n if (currentRow.isExpanded && event.key === 'ArrowLeft') {\r\n event.preventDefault();\r\n currentRow.toggleRowExpanded();\r\n return;\r\n } else if (!currentRow.isExpanded && event.key === 'ArrowRight') {\r\n event.preventDefault();\r\n currentRow.toggleRowExpanded();\r\n return;\r\n }\r\n }\r\n\r\n // inline editing\r\n if (currentRow.toggleRowEditing) {\r\n if (currentRow.canEdit && !currentRow.isEditing) {\r\n if (rowProps.onRowCreate && event.shiftKey && event.key === 'n') {\r\n event.preventDefault();\r\n\r\n if (!currentRow.isExpanded) {\r\n currentRow.toggleRowExpanded();\r\n }\r\n\r\n rowProps.onRowCreate(sanitizedRow, event);\r\n return;\r\n }\r\n\r\n if (event.key === 'e') {\r\n event.preventDefault();\r\n currentRow.toggleRowEditing();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if (rowProps.onRowEdit && event.key === 'e' && !isModifierKeyPressed) {\r\n event.preventDefault();\r\n rowProps.onRowEdit(sanitizedRow, event);\r\n return;\r\n }\r\n\r\n if (rowProps.onRowCopy && event.key === 'c' && !isModifierKeyPressed) {\r\n event.preventDefault();\r\n rowProps.onRowCopy(sanitizedRow, event);\r\n return;\r\n }\r\n\r\n if (rowProps.onRowDelete && event.key === 'Delete' && !isModifierKeyPressed) {\r\n event.preventDefault();\r\n rowProps.onRowDelete(sanitizedRow, event);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n const nextIndex = getNextIndexFromKey(event.key, rows.length, activeIndex);\r\n\r\n if (nextIndex !== undefined) {\r\n event.preventDefault();\r\n setActiveIndex(nextIndex);\r\n }\r\n };\r\n\r\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>): void => {\r\n if (!useGlobalKeyboardNavigation) {\r\n onKeyDown(event.nativeEvent);\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n if (useGlobalKeyboardNavigation) {\r\n window.addEventListener('keydown', onKeyDown);\r\n }\r\n\r\n return () => {\r\n if (useGlobalKeyboardNavigation) {\r\n window.removeEventListener('keydown', onKeyDown);\r\n }\r\n };\r\n }, [onKeyDown]);\r\n\r\n const handleFocus = (): void => {\r\n if (activeIndex === undefined && rows.length) {\r\n setActiveIndex(0);\r\n }\r\n };\r\n\r\n return [activeIndex, setActiveIndex, handleKeyDown, handleFocus];\r\n};\r\n"],"names":["useTableKeyboardNavigation","props","rows","rowProps","ref","useGlobalKeyboardNavigation","dangerouslyHijackGlobalKeyboardNavigation","activeIndex","setActiveIndex","useControllableState","prop","defaultProp","defaultActiveIndex","undefined","onChange","index","onChangeActiveIndex","onKeyDown","event","isModifierKeyPressed","metaKey","ctrlKey","altKey","shiftKey","document","activeElement","current","getAttribute","body","currentRow","sanitizedRow","sanitizeRowProps","rowExpansionRenderer","onRowClick","key","preventDefault","toggleRowSelected","toggleRowExpanded","isExpanded","toggleRowEditing","canEdit","isEditing","onRowCreate","onRowEdit","onRowCopy","onRowDelete","nextIndex","getNextIndexFromKey","length","handleKeyDown","nativeEvent","React","useEffect","window","addEventListener","removeEventListener","handleFocus"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rowIndexPath.js","sources":["../../../../../src/components/Table/util/rowIndexPath.ts"],"sourcesContent":["import set from 'lodash/set';\r\nimport { Row, RowIndexPath } from '../types';\r\n\r\nexport const convertRowIndexPathToNumberArray = (rowIndexPath: RowIndexPath): number[] =>\r\n rowIndexPath?.split('.').map(Number) ?? [];\r\n\r\nexport const getByRowIndexPath = <TRow>(data: Row<TRow>[], rowIndexPath: RowIndexPath): Row<TRow> | undefined => {\r\n if (!rowIndexPath) {\r\n return undefined;\r\n }\r\n\r\n const currenTRow = [...data];\r\n const indexes = convertRowIndexPathToNumberArray(String(rowIndexPath));\r\n\r\n if (indexes.length) {\r\n const startIndex = indexes.shift() as number;\r\n return indexes.reduce((value, index) => value?.subRows?.[index]
|
1
|
+
{"version":3,"file":"rowIndexPath.js","sources":["../../../../../src/components/Table/util/rowIndexPath.ts"],"sourcesContent":["import set from 'lodash/set';\r\nimport { Row, RowIndexPath } from '../types';\r\n\r\nexport const convertRowIndexPathToNumberArray = (rowIndexPath: RowIndexPath): number[] =>\r\n rowIndexPath?.split('.').map(Number) ?? [];\r\n\r\nexport const getByRowIndexPath = <TRow extends {}>(data: Row<TRow>[], rowIndexPath: RowIndexPath): Row<TRow> | undefined => {\r\n if (!rowIndexPath) {\r\n return undefined;\r\n }\r\n\r\n const currenTRow = [...data];\r\n const indexes = convertRowIndexPathToNumberArray(String(rowIndexPath));\r\n\r\n if (indexes.length) {\r\n const startIndex = indexes.shift() as number;\r\n return indexes.reduce((value, index) => value?.subRows?.[index] as Row<TRow>, currenTRow[startIndex]);\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const setByRowIndexPath = <TRow extends {}>(data: Row<TRow>[], rowIndexPath: RowIndexPath, values: any): Row<TRow>[] => {\r\n const nexTRow = [...data];\r\n\r\n const rowIndexes = convertRowIndexPathToNumberArray(rowIndexPath);\r\n const rootIndex = rowIndexes.shift() as number;\r\n\r\n if (rowIndexes.length) {\r\n const path = rowIndexes.map(index => `subRows[${index}]`).join('.');\r\n set(nexTRow[rootIndex], path, values);\r\n } else {\r\n nexTRow[rootIndex] = values;\r\n }\r\n\r\n return nexTRow;\r\n};\r\n\r\nexport const getParentRowIndexPath = (rowIndexPath: RowIndexPath): RowIndexPath => {\r\n let parentIndexPath;\r\n\r\n if (rowIndexPath) {\r\n const rowIndexes = convertRowIndexPathToNumberArray(rowIndexPath);\r\n rowIndexes.pop();\r\n\r\n if (rowIndexes.length) {\r\n parentIndexPath = rowIndexes.join('.');\r\n }\r\n }\r\n\r\n return parentIndexPath;\r\n};\r\n"],"names":["convertRowIndexPathToNumberArray","rowIndexPath","split","map","Number","getByRowIndexPath","data","undefined","currenTRow","indexes","String","length","startIndex","shift","reduce","value","index","subRows","setByRowIndexPath","values","nexTRow","rowIndexes","rootIndex","path","join","set","getParentRowIndexPath","parentIndexPath","pop"],"mappings":";;MAGaA,gCAAgC,GAAIC,YAAD;EAAA;;EAAA,gCAC5CA,YAD4C,aAC5CA,YAD4C,uBAC5CA,YAAY,CAAEC,KAAd,CAAoB,GAApB,EAAyBC,GAAzB,CAA6BC,MAA7B,CAD4C,yEACJ,EADI;AAAA;MAGnCC,iBAAiB,GAAG,CAAkBC,IAAlB,EAAqCL,YAArC;EAC7B,IAAI,CAACA,YAAL,EAAmB;IACf,OAAOM,SAAP;;;EAGJ,MAAMC,UAAU,GAAG,CAAC,GAAGF,IAAJ,CAAnB;EACA,MAAMG,OAAO,GAAGT,gCAAgC,CAACU,MAAM,CAACT,YAAD,CAAP,CAAhD;;EAEA,IAAIQ,OAAO,CAACE,MAAZ,EAAoB;IAChB,MAAMC,UAAU,GAAGH,OAAO,CAACI,KAAR,EAAnB;IACA,OAAOJ,OAAO,CAACK,MAAR,CAAe,CAACC,KAAD,EAAQC,KAAR;MAAA;;MAAA,OAAkBD,KAAlB,aAAkBA,KAAlB,yCAAkBA,KAAK,CAAEE,OAAzB,mDAAkB,eAAiBD,KAAjB,CAAlB;KAAf,EAAuER,UAAU,CAACI,UAAD,CAAjF,CAAP;;;EAGJ,OAAOL,SAAP;AACH;MAEYW,iBAAiB,GAAG,CAAkBZ,IAAlB,EAAqCL,YAArC,EAAiEkB,MAAjE;EAC7B,MAAMC,OAAO,GAAG,CAAC,GAAGd,IAAJ,CAAhB;EAEA,MAAMe,UAAU,GAAGrB,gCAAgC,CAACC,YAAD,CAAnD;EACA,MAAMqB,SAAS,GAAGD,UAAU,CAACR,KAAX,EAAlB;;EAEA,IAAIQ,UAAU,CAACV,MAAf,EAAuB;IACnB,MAAMY,IAAI,GAAGF,UAAU,CAAClB,GAAX,CAAea,KAAK,eAAeA,QAAnC,EAA6CQ,IAA7C,CAAkD,GAAlD,CAAb;IACAC,GAAG,CAACL,OAAO,CAACE,SAAD,CAAR,EAAqBC,IAArB,EAA2BJ,MAA3B,CAAH;GAFJ,MAGO;IACHC,OAAO,CAACE,SAAD,CAAP,GAAqBH,MAArB;;;EAGJ,OAAOC,OAAP;AACH;MAEYM,qBAAqB,GAAIzB,YAAD;EACjC,IAAI0B,eAAJ;;EAEA,IAAI1B,YAAJ,EAAkB;IACd,MAAMoB,UAAU,GAAGrB,gCAAgC,CAACC,YAAD,CAAnD;IACAoB,UAAU,CAACO,GAAX;;IAEA,IAAIP,UAAU,CAACV,MAAf,EAAuB;MACnBgB,eAAe,GAAGN,UAAU,CAACG,IAAX,CAAgB,GAAhB,CAAlB;;;;EAIR,OAAOG,eAAP;AACH;;;;"}
|