@join-x5/react-data-grid 1.1.1-nightly → 1.1.2-nightly

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/dist/DataGrid.d.ts +3 -0
  2. package/dist/DataGrid.es.js +67 -0
  3. package/dist/DataGrid.es.js.map +1 -0
  4. package/dist/DataGridContext.d.ts +10 -0
  5. package/dist/DataGridContext.es.js +23 -0
  6. package/dist/DataGridContext.es.js.map +1 -0
  7. package/dist/Table/index.d.ts +25 -0
  8. package/dist/Table/index.es.js +93 -0
  9. package/dist/Table/index.es.js.map +1 -0
  10. package/dist/Table/types.d.ts +3 -0
  11. package/dist/TableBody/index.d.ts +11 -0
  12. package/dist/TableBody/index.es.js +26 -0
  13. package/dist/TableBody/index.es.js.map +1 -0
  14. package/dist/TableCell/hook.d.ts +4 -0
  15. package/dist/TableCell/hook.es.js +42 -0
  16. package/dist/TableCell/hook.es.js.map +1 -0
  17. package/dist/TableCell/index.d.ts +9 -0
  18. package/dist/TableCell/index.es.js +234 -0
  19. package/dist/TableCell/index.es.js.map +1 -0
  20. package/dist/TableCell/types.d.ts +46 -0
  21. package/dist/TableDropdown/index.d.ts +8 -0
  22. package/dist/TableDropdown/index.es.js +26 -0
  23. package/dist/TableDropdown/index.es.js.map +1 -0
  24. package/dist/TableHead/index.d.ts +6 -0
  25. package/dist/TableHead/index.es.js +31 -0
  26. package/dist/TableHead/index.es.js.map +1 -0
  27. package/dist/TableHeadCell/index.d.ts +14 -0
  28. package/dist/TableHeadCell/index.es.js +146 -0
  29. package/dist/TableHeadCell/index.es.js.map +1 -0
  30. package/dist/TableHeadCell/types.d.ts +37 -0
  31. package/dist/TableHeadCell/types.es.js +5 -0
  32. package/dist/TableHeadCell/types.es.js.map +1 -0
  33. package/dist/TableHeadRow/index.d.ts +3 -0
  34. package/dist/TableHeadRow/index.es.js +14 -0
  35. package/dist/TableHeadRow/index.es.js.map +1 -0
  36. package/dist/TableHeadRow/types.d.ts +2 -0
  37. package/dist/TableInputCell/button.d.ts +8 -0
  38. package/dist/TableInputCell/button.es.js +30 -0
  39. package/dist/TableInputCell/button.es.js.map +1 -0
  40. package/dist/TableInputCell/checkbox.d.ts +11 -0
  41. package/dist/TableInputCell/checkbox.es.js +32 -0
  42. package/dist/TableInputCell/checkbox.es.js.map +1 -0
  43. package/dist/TableInputCell/date.d.ts +18 -0
  44. package/dist/TableInputCell/date.es.js +40 -0
  45. package/dist/TableInputCell/date.es.js.map +1 -0
  46. package/dist/TableInputCell/dropdown.d.ts +19 -0
  47. package/dist/TableInputCell/dropdown.es.js +40 -0
  48. package/dist/TableInputCell/dropdown.es.js.map +1 -0
  49. package/dist/TableInputCell/expanding.d.ts +11 -0
  50. package/dist/TableInputCell/expanding.es.js +58 -0
  51. package/dist/TableInputCell/expanding.es.js.map +1 -0
  52. package/dist/TableInputCell/hook.d.ts +611 -0
  53. package/dist/TableInputCell/hook.es.js +52 -0
  54. package/dist/TableInputCell/hook.es.js.map +1 -0
  55. package/dist/TableInputCell/icon.d.ts +8 -0
  56. package/dist/TableInputCell/icon.es.js +30 -0
  57. package/dist/TableInputCell/icon.es.js.map +1 -0
  58. package/dist/TableInputCell/index.d.ts +10 -0
  59. package/dist/TableInputCell/label.d.ts +8 -0
  60. package/dist/TableInputCell/label.es.js +30 -0
  61. package/dist/TableInputCell/label.es.js.map +1 -0
  62. package/dist/TableInputCell/switch.d.ts +11 -0
  63. package/dist/TableInputCell/switch.es.js +32 -0
  64. package/dist/TableInputCell/switch.es.js.map +1 -0
  65. package/dist/TableInputCell/text.d.ts +22 -0
  66. package/dist/TableInputCell/text.es.js +91 -0
  67. package/dist/TableInputCell/text.es.js.map +1 -0
  68. package/dist/TableInputCell/textarea.d.ts +23 -0
  69. package/dist/TableInputCell/textarea.es.js +83 -0
  70. package/dist/TableInputCell/textarea.es.js.map +1 -0
  71. package/dist/TableInputCell/types.d.ts +4 -0
  72. package/dist/TableRow/index.d.ts +5 -0
  73. package/dist/TableRow/index.es.js +25 -0
  74. package/dist/TableRow/index.es.js.map +1 -0
  75. package/dist/TableRow/types.d.ts +2 -0
  76. package/dist/hook.d.ts +3 -0
  77. package/dist/hook.es.js +23 -0
  78. package/dist/hook.es.js.map +1 -0
  79. package/dist/index.cjs +2 -0
  80. package/dist/index.cjs.map +1 -0
  81. package/dist/index.d.ts +10 -0
  82. package/dist/index.es.js +72 -0
  83. package/dist/index.es.js.map +1 -0
  84. package/dist/types.d.ts +54 -0
  85. package/package.json +1 -1
  86. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/DataGridContext.tsx","../src/Table/index.tsx","../src/TableCell/hook.ts","../src/TableHeadCell/types.ts","../src/TableHeadCell/index.tsx","../src/TableHeadRow/index.tsx","../src/TableHead/index.tsx","../src/TableCell/index.tsx","../src/TableRow/index.tsx","../src/TableBody/index.tsx","../src/hook.ts","../src/DataGrid.tsx","../src/TableDropdown/index.tsx","../src/TableInputCell/hook.ts","../src/TableInputCell/button.tsx","../src/TableInputCell/checkbox.tsx","../src/TableInputCell/date.tsx","../src/TableInputCell/dropdown.tsx","../src/TableInputCell/expanding.tsx","../src/TableInputCell/icon.tsx","../src/TableInputCell/label.tsx","../src/TableInputCell/switch.tsx","../src/TableInputCell/text.tsx","../src/TableInputCell/textarea.tsx"],"sourcesContent":["'use client';\n\nimport {createContext, useState} from 'react';\n\nimport type {PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridProps} from 'types';\n\ntype CommonProps = Pick<\n DataGridProps,\n | 'isMultiline'\n | 'isShadowed'\n | 'qa'\n | 'isBordered'\n | 'size'\n | 'verticalAlign'\n | 'textAlign'\n | 'writingMode'\n | 'userSelect'\n | 'wordBreak'\n | 'whiteSpace'\n | 'cellProps'\n | 'headCellProps'\n>;\n\ntype DataGridContextProps = {\n activeCell: string | null;\n setActiveCell: (newActiveCell: string | null) => void;\n} & CommonProps;\n\nexport const DataGridContext = createContext<DataGridContextProps>({\n activeCell: null,\n setActiveCell: () => {},\n});\n\nexport const DataGridContextProvider: React.FC<PropsWithChildren & CommonProps> = ({children, ...rest}) => {\n const [activeCell, setActiveCell] = useState<string | null>(null);\n\n return <DataGridContext.Provider value={{activeCell, setActiveCell, ...rest}}>{children}</DataGridContext.Provider>;\n};\n","'use client';\n\nimport {useContext, useMemo} from 'react';\nimport styled from '@emotion/styled';\n\nimport baseTheme, {forwardRef} from '@join-x5/react-theme';\n\nimport {DataGridContext} from 'DataGridContext';\n\nimport type {Table as ReactTableTable} from '@tanstack/react-table';\nimport type {CSSProperties, FRC} from '@join-x5/react-theme';\nimport type {TableProps} from './types';\n\nexport const TableWrapper = styled.div`\n width: 100%;\n border-collapse: collapse;\n border-radius: 8px 8px 0 0;\n overflow: auto;\n\n ${baseTheme.scroll}\n\n ${props => ({\n border: `1px solid ${props => props.theme.colors.grey[10]}`,\n backgroundColor: props.theme.colors.white,\n })}\n`;\n\nexport const TableFooter = styled.div`\n display: flex;\n padding: 8px;\n align-items: center;\n justify-content: space-between;\n border-radius: 0 0 8px 8px;\n gap: 12px;\n\n ${props => ({\n border: `1px solid ${props => props.theme.colors.grey[10]}`,\n backgroundColor: props.theme.colors.white,\n })}\n`;\n\nexport const ControlPanel = styled.div`\n display: flex;\n padding: 8px;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n border-radius: 8px;\n background-color: ${props => props.theme.colors.white};\n`;\n\nexport const ControlPanelContent = styled.div`\n display: flex;\n gap: 8px;\n align-items: center;\n`;\n\nconst Container = styled.table`\n border-collapse: collapse;\n table-layout: fixed;\n\n &[data-is-resizing] {\n cursor: col-resize;\n }\n`;\n\nexport const Table: FRC<HTMLTableElement, TableProps> = forwardRef(({isResizing, ...rest}, ref) => {\n const resultProps = {\n ...rest,\n\n 'data-is-resizing': isResizing ? true : undefined,\n };\n\n return <Container ref={ref} {...resultProps}></Container>;\n});\n\ntype DataGridTableProps = {table: ReactTableTable<unknown>} & Omit<TableProps, 'isResizing'>;\n\nexport const DataGridTable: FRC<HTMLTableElement, DataGridTableProps> = forwardRef(({table, ...props}, ref) => {\n const context = useContext(DataGridContext);\n\n const columnSizeVars = useMemo(() => {\n const headers = table.getFlatHeaders();\n const colSizes: CSSProperties = {};\n\n for (const header of headers) {\n colSizes[`--header-${header.id}-size`] = header.getSize();\n colSizes[`--col-${header.column.id}-size`] = header.column.getSize();\n }\n\n return colSizes;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [table.getState().columnSizingInfo, table.getState().columnSizing]);\n\n const isResizing = !!table.getState().columnSizingInfo.isResizingColumn;\n\n const resultProps = {\n ...props,\n\n isResizing,\n\n style: {\n width: table.getTotalSize(),\n\n ...props.style,\n ...columnSizeVars,\n },\n\n 'data-qa': context.qa,\n };\n\n return <Table ref={ref} {...resultProps} />;\n});\n","'use client';\n\nimport {useContext} from 'react';\n\nimport {ColumnArea} from '@join-x5/react-data-grid-settings';\n\nimport {DataGridContext} from 'DataGridContext';\n\nimport type {Column, Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {TableCellProps} from './types';\n\nexport const areaProps = (column: Column<unknown>, props: TableCellProps): void => {\n const isPinned = column.getIsPinned();\n\n props.columnArea = (() => {\n switch (column.getIsPinned()) {\n case 'left':\n return ColumnArea.FixedLeft;\n case 'right':\n return ColumnArea.FixedRight;\n }\n\n return ColumnArea.Default;\n })();\n\n if (!isPinned) {\n return;\n }\n\n props.style ??= {};\n\n if (isPinned === 'left') {\n props.style.left = `${column.getStart('left')}px`;\n props.isLastFixed = column.getIsLastColumn('left');\n } else {\n props.style.right = `${column.getAfter('right')}px`;\n props.isLastFixed = column.getIsFirstColumn('right');\n }\n};\n\nexport const useDataGridTableCell = (cell: ReactTableCell<unknown, unknown>) => {\n const context = useContext(DataGridContext);\n\n const isMultiline = typeof context.isMultiline === 'boolean' ? context.isMultiline : context.isMultiline?.(cell);\n const width = `calc(var(--header-${cell.column?.id}-size) * 1px)`;\n\n const resultProps: TableCellProps = {\n isMultiline,\n\n qa: context.qa,\n isBordered: context.isBordered,\n isShadowed: context.isShadowed,\n size: context.size,\n verticalAlign: context.verticalAlign,\n writingMode: context.writingMode,\n userSelect: context.userSelect,\n wordBreak: context.wordBreak,\n whiteSpace: context.whiteSpace,\n\n isRowSelected: cell.row.getIsSelected(),\n isResizing: cell.column.getIsResizing(),\n\n style: {\n width,\n maxWidth: width,\n },\n };\n\n areaProps(cell.column, resultProps);\n\n if (context.cellProps) {\n Object.assign(resultProps, context.cellProps instanceof Function ? context.cellProps(cell) : context.cellProps);\n }\n\n return resultProps;\n};\n","// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport {SizeTokenValue} from '@join-x5/react-theme';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport {ColumnArea} from '@join-x5/react-data-grid-settings';\n\nimport type {ReactNode, ThHTMLAttributes} from 'react';\nimport type {CSSProperties, QA} from '@join-x5/react-theme';\nimport type {DropdownProps} from '@join-x5/react';\n\nexport enum TableHeadCellVariant {\n Default = 'default',\n Checkbox = 'checkbox',\n}\n\nexport type TableHeadCellProps = {\n /** Размер */\n size?: SizeTokenValue;\n\n /** Вариант */\n variant?: TableHeadCellVariant;\n\n /** Установка состояния \"Отключен\" */\n isDisabled?: boolean;\n /** Установка состояния \"Активен\" */\n isActive?: boolean;\n /** С границей */\n isBordered?: boolean;\n /** Показывать тень вместо границы, в закрепленных столбцах и шапке */\n isShadowed?: boolean;\n\n /** Расположение колонки */\n columnArea?: ColumnArea;\n /** Последняя закрепленная колонка\n *\n * Добавляет тень в зависимости от `columnArea`\n */\n isLastFixed?: boolean;\n\n /** Иконка | Контент слева */\n startAdornment?: ReactNode;\n /** Иконка | Контент справа */\n endAdornment?: ReactNode;\n\n /** Контрол смены размера */\n resizer?: ReactNode;\n\n /** Контент дропдауна */\n dropdown?: React.FC<DropdownProps>;\n} & QA &\n Pick<CSSProperties, 'verticalAlign' | 'textAlign' | 'writingMode' | 'userSelect'> &\n ThHTMLAttributes<HTMLTableCellElement>;\n","'use client';\n\nimport {useContext, useState} from 'react';\nimport styled from '@emotion/styled';\nimport {flexRender} from '@tanstack/react-table';\n\nimport {forwardRef, SizeTokenValue, useRefMerge} from '@join-x5/react-theme';\nimport {ColumnArea} from '@join-x5/react-data-grid-settings';\n\nimport {DataGridContext} from 'DataGridContext';\n\nimport {areaProps} from 'TableCell/hook';\n\nimport {TableHeadCellVariant} from './types';\n\nimport type {KeyboardEventHandler, MouseEventHandler} from 'react';\nimport type {Header} from '@tanstack/react-table';\nimport type {FRC} from '@join-x5/react-theme';\nimport type {TableHeadCellProps} from './types';\n\nexport const TableHeadCellResizer = styled.div`\n display: flex;\n position: absolute;\n align-items: center;\n justify-content: center;\n top: 0;\n right: -5px;\n width: 10px;\n height: 100%;\n cursor: col-resize;\n z-index: 1;\n\n ::before {\n content: '';\n display: block;\n width: 3px;\n height: 24px;\n border-radius: 8px;\n user-select: none;\n pointer-events: none;\n opacity: 0;\n\n background-color: ${props => props.theme.colors.accent[80]};\n }\n\n &[data-resizing]::before {\n opacity: 1;\n }\n`;\n\nconst Cell = styled.th`\n position: relative;\n box-sizing: border-box;\n\n ${props => ({\n color: props.theme.colors.grey[100],\n backgroundColor: props.theme.colors.white,\n\n '--border-color': props.theme.colors.grey[10],\n })};\n\n &[data-${SizeTokenValue.Large.toLocaleLowerCase()}] {\n padding: 12px;\n min-height: 44px;\n\n &[data-${TableHeadCellVariant.Checkbox.toLocaleLowerCase()}] {\n padding: 14px 12px;\n\n &[data-has-end-adornment] {\n padding-right: 8px;\n }\n }\n\n ${props => props.theme.typography.h4}\n }\n\n &[data-${SizeTokenValue.Medium.toLocaleLowerCase()}] {\n padding: 12px;\n min-height: 40px;\n\n &[data-${TableHeadCellVariant.Checkbox.toLocaleLowerCase()}] {\n padding: 12px;\n\n &[data-has-end-adornment] {\n padding-right: 8px;\n }\n }\n\n ${props => props.theme.typography.h5}\n }\n\n &[data-${SizeTokenValue.Small.toLocaleLowerCase()}] {\n padding: 8px;\n min-height: 32px;\n\n ${props => props.theme.typography.h5}\n }\n\n &[data-shadowed] {\n filter: drop-shadow(8px 0px 8px rgba(80, 86, 94, 0.08));\n\n &::before {\n border-bottom-width: 0;\n }\n }\n\n &[data-${ColumnArea.FixedLeft.toLocaleLowerCase()}] {\n position: sticky;\n z-index: 1;\n\n &[data-shadowed][data-last-fixed] {\n filter: drop-shadow(8px 0px 8px rgba(80, 86, 94, 0.08));\n }\n }\n\n &[data-${ColumnArea.FixedRight.toLocaleLowerCase()}] {\n position: sticky;\n z-index: 1;\n\n &[data-shadowed][data-last-fixed] {\n filter: drop-shadow(-8px 0px 8px rgba(80, 86, 94, 0.08));\n }\n }\n\n :hover {\n ${props => ({\n backgroundColor: props.theme.colors.grey[10],\n\n '--border-color': props.theme.colors.grey[20],\n })}\n }\n\n &[data-has-active] {\n cursor: pointer;\n\n &[data-active],\n :active {\n ${props => ({\n backgroundColor: props.theme.colors.grey[30],\n\n '--border-color': 'transparent',\n })}\n }\n }\n\n :focus {\n outline: none;\n }\n\n &[data-disabled] {\n :hover {\n ${props => ({\n backgroundColor: props.theme.colors.grey[10],\n\n '--border-color': props.theme.colors.grey[20],\n })}\n }\n\n ${props => ({\n color: props.theme.colors.grey[40],\n })}\n }\n\n ::before {\n content: '';\n display: block;\n position: absolute;\n box-sizing: border-box;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n user-select: none;\n pointer-events: none;\n border-width: 0 0 2px 0;\n border-style: solid;\n border-color: var(--border-color);\n }\n\n ::after {\n content: '';\n display: block;\n position: absolute;\n box-sizing: border-box;\n top: calc(50% - 8px);\n right: 0;\n width: 2px;\n height: 16px;\n user-select: none;\n pointer-events: none;\n background-color: var(--border-color, transparent);\n }\n\n &[data-bordered] {\n ::before {\n border-width: 0 1px 2px 0;\n }\n\n :last-of-type::before {\n border-width: 0 0 2px 0;\n }\n\n ::after {\n display: none;\n }\n }\n\n :last-of-type::after {\n display: none;\n }\n`;\n\nconst Container = styled.div`\n display: flex;\n position: relative;\n box-sizing: border-box;\n gap: 8px;\n`;\n\nconst Content = styled.div`\n flex-grow: 1;\n`;\n\nexport const TableHeadCell: FRC<HTMLTableCellElement, TableHeadCellProps> = forwardRef((props, baseRef) => {\n const {\n children,\n\n isDisabled,\n isActive,\n isBordered,\n isLastFixed,\n isShadowed,\n\n writingMode,\n verticalAlign = 'top',\n textAlign = 'left',\n userSelect = 'none',\n\n startAdornment,\n endAdornment,\n resizer,\n dropdown: Dropdown,\n\n variant = TableHeadCellVariant.Default,\n size = SizeTokenValue.Medium,\n columnArea = ColumnArea.Default,\n\n ...rest\n } = props;\n\n const ref = useRefMerge(baseRef);\n const [isDropdownOpen, setIsDropdownOpen] = useState<boolean>(false);\n\n const onKeyDown: KeyboardEventHandler<HTMLTableCellElement> = e => {\n if (e.code === 'Escape') {\n e.currentTarget.blur();\n }\n\n if (e.code === 'Enter' || e.code === 'NumpadEnter') {\n e.currentTarget.click();\n }\n\n props.onKeyDown?.(e);\n };\n\n const onClick: MouseEventHandler<HTMLTableCellElement> = e => {\n if (Dropdown && !isDropdownOpen) {\n setIsDropdownOpen(true);\n }\n\n props.onClick?.(e);\n };\n\n const dropdown = Dropdown ? <Dropdown targetRef={ref} isOpen={isDropdownOpen} setIsOpen={setIsDropdownOpen} /> : null;\n const hasActive = !!props.onClick || !!Dropdown || !!isActive;\n\n const cellProps = {\n ...rest,\n\n onClick,\n onKeyDown,\n\n style: {\n verticalAlign,\n textAlign,\n writingMode,\n userSelect,\n\n ...props.style,\n },\n\n 'data-cell': true,\n 'data-disabled': isDisabled ? true : undefined,\n 'data-active': isActive || isDropdownOpen ? true : undefined,\n 'data-bordered': isBordered ? true : undefined,\n 'data-shadowed': isShadowed ? true : undefined,\n 'data-has-active': hasActive ? true : undefined,\n 'data-has-end-adornment': endAdornment ? true : undefined,\n 'data-last-fixed': isLastFixed ? true : undefined,\n\n [`data-${size.toLowerCase()}`]: true,\n [`data-${variant.toLowerCase()}`]: true,\n [`data-${columnArea.toLowerCase()}`]: true,\n };\n\n return (\n <Cell ref={ref} tabIndex={0} {...cellProps}>\n <Container>\n {startAdornment}\n <Content>{children}</Content>\n {endAdornment}\n </Container>\n {resizer}\n {dropdown}\n </Cell>\n );\n});\n\ntype DataGridTableHeadCellProps = {\n header: Header<unknown, unknown>;\n};\n\nexport const DataGridTableHeadCell: React.FC<DataGridTableHeadCellProps> = ({header}) => {\n const context = useContext(DataGridContext);\n\n const resizer = (() => {\n if (header.column.getCanResize() === false) {\n return null;\n }\n\n return (\n <TableHeadCellResizer\n onDoubleClick={() => header.column.resetSize()}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n data-resizing={header.column.getIsResizing() ? true : undefined}\n />\n );\n })();\n\n const content = header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext());\n\n const resultProps: TableHeadCellProps = {\n resizer,\n\n qa: context.qa,\n isBordered: context.isBordered,\n isShadowed: context.isShadowed,\n size: context.size,\n verticalAlign: context.verticalAlign,\n\n colSpan: header.colSpan,\n rowSpan: header.rowSpan,\n\n style: {\n width: `calc(var(--header-${header?.id}-size) * 1px)`,\n },\n };\n\n areaProps(header.column, resultProps);\n\n if (context.headCellProps) {\n Object.assign(\n resultProps,\n context.headCellProps instanceof Function ? context.headCellProps(header) : context.headCellProps\n );\n }\n\n return (\n <TableHeadCell key={header.id} {...resultProps}>\n {content}\n </TableHeadCell>\n );\n};\n\nexport const getDataGridTableHeadCell = (header: DataGridTableHeadCellProps['header']) => {\n return <DataGridTableHeadCell key={header.id} header={header} />;\n};\n\nexport * from './types';\n","'use client';\n\nimport styled from '@emotion/styled';\n\nimport {forwardRef} from '@join-x5/react-theme';\n\nimport type {FRC} from '@join-x5/react-theme';\nimport type {TableHeadRowProps} from './types';\n\nconst Container = styled.tr``;\n\nexport const TableHeadRow: FRC<HTMLTableRowElement, TableHeadRowProps> = forwardRef((props, ref) => {\n return <Container ref={ref} {...props} />;\n});\n","'use client';\n\nimport {useContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport {DataGridContext} from 'DataGridContext';\nimport {getDataGridTableHeadCell} from 'TableHeadCell';\nimport {TableHeadRow} from 'TableHeadRow';\n\nimport type {Table} from '@tanstack/react-table';\n\nexport const TableHead = styled.thead`\n position: sticky;\n top: 0;\n z-index: 2;\n`;\n\ntype DataGridTableHeadProps = {\n table: Table<unknown>;\n};\n\nconst DataGridTableHead: React.FC<DataGridTableHeadProps> = props => {\n const context = useContext(DataGridContext);\n\n const content = props.table\n .getHeaderGroups()\n .map(headerGroup => (\n <TableHeadRow key={headerGroup.id}>\n {headerGroup.headers.map(header => getDataGridTableHeadCell(header))}\n </TableHeadRow>\n ));\n\n return <TableHead data-qa={`${context.qa}-head`}>{content}</TableHead>;\n};\n\nexport const getDataGridTableHead = (table: Table<unknown>) => {\n return <DataGridTableHead table={table} />;\n};\n","'use client';\n\nimport React from 'react';\nimport styled from '@emotion/styled';\nimport {flexRender} from '@tanstack/react-table';\n\nimport {forwardRef, SizeTokenValue, useRefMerge} from '@join-x5/react-theme';\nimport {EditOnIcon} from '@join-x5/react-icons';\nimport {ColumnArea} from '@join-x5/react-data-grid-settings';\n\nimport {useDataGridTableCell} from './hook';\n\nimport type {HTMLAttributes, KeyboardEventHandler} from 'react';\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from './types';\n\nconst sizePadding: Record<SizeTokenValue, number> = {\n [SizeTokenValue.XXSmall]: 8,\n [SizeTokenValue.XSmall]: 8,\n [SizeTokenValue.Small]: 8,\n [SizeTokenValue.Medium]: 12,\n [SizeTokenValue.Large]: 12,\n [SizeTokenValue.XLarge]: 12,\n};\n\nconst Cell = styled.td`\n position: relative;\n box-sizing: border-box;\n height: 1px;\n background-color: var(--background-color, transparent);\n\n ${props => ({\n color: props.theme.colors.grey[100],\n\n '--background-color': props.theme.colors.white,\n '--border-color': props.theme.colors.grey[10],\n })};\n\n &[data-${SizeTokenValue.Large.toLocaleLowerCase()}] {\n min-height: 44px;\n\n ${props => props.theme.typography.p1compact}\n }\n\n &[data-${SizeTokenValue.Medium.toLocaleLowerCase()}] {\n min-height: 40px;\n\n ${props => props.theme.typography.p2}\n }\n\n &[data-${SizeTokenValue.Small.toLocaleLowerCase()}] {\n min-height: 32px;\n\n ${props => props.theme.typography.p2}\n }\n\n &[data-${ColumnArea.FixedLeft.toLocaleLowerCase()}] {\n position: sticky;\n z-index: 1;\n\n &[data-shadowed][data-last-fixed] {\n filter: drop-shadow(8px 0px 8px rgba(80, 86, 94, 0.08));\n }\n }\n\n &[data-${ColumnArea.FixedRight.toLocaleLowerCase()}] {\n position: sticky;\n z-index: 1;\n\n &[data-shadowed][data-last-fixed] {\n filter: drop-shadow(-8px 0px 8px rgba(80, 86, 94, 0.08));\n }\n }\n\n &[data-row-hover] {\n ${props => ({\n '--background-color': props.theme.colors.grey[10],\n '--border-color': props.theme.colors.grey[20],\n })}\n }\n\n :hover {\n ${props => ({\n '--background-color': props.theme.colors.grey[10],\n '--border-color': props.theme.colors.grey[40],\n })}\n }\n\n :not([data-disabled]):hover::before {\n border-width: 1px;\n }\n\n &[data-disabled] {\n :hover {\n ${props => ({\n '--background-color': props.theme.colors.grey[10],\n '--border-color': props.theme.colors.grey[20],\n })}\n }\n\n ${props => ({\n color: props.theme.colors.grey[40],\n })}\n }\n\n &[data-row-selected] {\n ${props => ({\n '--background-color': props.theme.colors.accent[10],\n '--border-color': props.theme.colors.accent[20],\n })}\n }\n\n &[data-focused],\n :focus {\n outline: none;\n\n ::before {\n display: none;\n }\n\n ::after {\n display: block;\n }\n\n [data-edit-icon] {\n visibility: visible;\n }\n\n ${props => ({\n '--border-color': 'transparent',\n '--background-color': props.theme.colors.white,\n '--outline-color': props.theme.colors.accent[90],\n })}\n }\n\n &[data-active] {\n outline: none;\n\n ::before {\n display: none;\n }\n\n ::after {\n display: block;\n }\n\n [data-edit-icon] {\n visibility: hidden;\n }\n\n ${props => ({\n '--border-color': 'transparent',\n '--background-color': props.theme.colors.white,\n '--outline-color': props.theme.colors.accent[90],\n })}\n }\n\n &[data-error] {\n ::after {\n display: block;\n }\n\n ${props => ({\n caretColor: props.theme.colors.additional.red[80],\n\n '--background-color': props.theme.colors.white,\n '--border-color': 'transparent',\n '--outline-color': props.theme.colors.additional.red[80],\n })}\n }\n\n ::before {\n content: '';\n display: block;\n position: absolute;\n box-sizing: border-box;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n user-select: none;\n pointer-events: none;\n border-width: 0 0 1px 0;\n border-style: solid;\n border-color: var(--border-color);\n }\n\n &[data-bordered] {\n ::before {\n border-width: 0 1px 1px 0;\n }\n\n :last-of-type::before {\n border-width: 0 0 1px 0;\n }\n }\n\n &[data-resizing] {\n border-right: 1px solid ${props => props.theme.colors.accent[20]};\n }\n\n ::after {\n content: '';\n display: none;\n position: absolute;\n box-sizing: border-box;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n user-select: none;\n pointer-events: none;\n border-width: 2px;\n border-style: solid;\n border-radius: 4px;\n border-color: var(--outline-color, transparent);\n }\n\n [data-edit-icon] {\n display: none;\n position: absolute;\n visibility: hidden;\n right: 0;\n top: 0;\n background-color: var(--background-color, transparent);\n }\n\n &[data-editable] [data-edit-icon] {\n display: block;\n }\n`;\n\nconst Container = styled.div`\n display: flex;\n position: relative;\n box-sizing: border-box;\n gap: 8px;\n`;\n\nconst Content = styled.div`\n position: relative;\n flex-grow: 1;\n word-break: break-word;\n\n :not([data-is-multiline]) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n`;\n\nconst Caption = styled.div`\n padding: 4px 0 0;\n width: 100%;\n word-break: break-all;\n\n ${props => ({\n ...props.theme.typography.p3,\n\n color: props.theme.colors.additional.red[80],\n })}\n`;\n\ntype TableCellContentProps = Pick<TableCellProps, 'children' | 'isMultiline' | 'whiteSpace' | 'wordBreak'> &\n HTMLAttributes<HTMLDivElement>;\n\nexport const TableCellContent: FRC<HTMLDivElement, TableCellContentProps> = forwardRef((props, ref) => {\n const {children, style, isMultiline, whiteSpace, wordBreak = 'break-word', ...rest} = props;\n\n const contentProps = {\n ...rest,\n\n style: {\n whiteSpace,\n wordBreak,\n\n ...style,\n },\n\n 'data-content': true,\n 'data-is-multiline': isMultiline ? true : undefined,\n };\n\n return (\n <Content ref={ref} {...contentProps}>\n {children}\n </Content>\n );\n});\n\nexport const TableCell: FRC<HTMLTableCellElement, TableCellProps> = forwardRef((props, baseRef) => {\n const ref = useRefMerge(baseRef);\n\n const {\n children,\n\n isDisabled,\n isRowHover,\n isRowSelected,\n isBordered,\n isShadowed,\n isFocused,\n isActive,\n isResizing,\n isLastFixed,\n error,\n\n textAlign,\n writingMode,\n verticalAlign,\n padding,\n userSelect = 'none',\n\n startAdornment,\n endAdornment,\n\n size = SizeTokenValue.Medium,\n columnArea = ColumnArea.Default,\n\n ...rest\n } = props;\n\n const onKeyDown: KeyboardEventHandler<HTMLTableCellElement> = e => {\n props.onKeyDown?.(e);\n\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (isEnterCode) {\n const child = ref.current?.querySelector('[data-action]') as HTMLElement;\n\n if (isEnterCode && child) {\n child.click();\n }\n\n return;\n }\n\n if (e.code === 'Escape') {\n ref.current?.blur();\n return;\n }\n\n if (e.code === 'ArrowUp' || e.code === 'ArrowDown' || e.code === 'ArrowLeft' || e.code === 'ArrowRight') {\n const parent = ref.current?.parentElement as HTMLElement;\n const curIndex = Array.from(parent?.childNodes).indexOf(ref.current as HTMLElement);\n\n switch (e.code) {\n case 'ArrowUp':\n case 'ArrowDown':\n {\n const sibling = (\n e.code === 'ArrowUp' ? parent?.previousElementSibling : parent?.nextElementSibling\n ) as HTMLElement;\n\n if (parent?.nodeName === sibling?.nodeName) {\n const nextFocus = sibling?.children[curIndex] as HTMLElement;\n\n nextFocus?.focus();\n }\n }\n break;\n\n case 'ArrowLeft':\n if (curIndex > 0) {\n const prevSibling = parent?.children[curIndex - 1] as HTMLElement;\n prevSibling?.focus();\n } else {\n const prevRow = parent?.previousElementSibling as HTMLElement;\n if (parent?.nodeName === prevRow?.nodeName) {\n const lastCell = prevRow.lastElementChild as HTMLElement;\n lastCell?.focus();\n }\n }\n break;\n case 'ArrowRight':\n if (curIndex < parent?.children.length - 1) {\n const nextSibling = parent?.children[curIndex + 1] as HTMLElement;\n nextSibling?.focus();\n } else {\n const nextRow = parent?.nextElementSibling as HTMLElement;\n if (parent?.nodeName === nextRow?.nodeName) {\n const firstCell = nextRow.firstElementChild as HTMLElement;\n firstCell?.focus();\n }\n }\n break;\n }\n }\n };\n\n const cellProps = {\n ...rest,\n\n onKeyDown,\n\n style: {\n verticalAlign,\n textAlign,\n writingMode,\n userSelect,\n\n padding: padding ?? sizePadding[size],\n\n ...props.style,\n },\n\n 'data-cell': true,\n 'data-disabled': isDisabled ? true : undefined,\n 'data-focused': isFocused ? true : undefined,\n 'data-error': error ? true : undefined,\n 'data-row-hover': isRowHover ? true : undefined,\n 'data-row-selected': isRowSelected ? true : undefined,\n 'data-bordered': isBordered ? true : undefined,\n 'data-shadowed': isShadowed ? true : undefined,\n 'data-resizing': isResizing ? true : undefined,\n 'data-active': isActive ? true : undefined,\n 'data-last-fixed': isLastFixed ? true : undefined,\n\n [`data-${size.toLowerCase()}`]: true,\n [`data-${columnArea.toLowerCase()}`]: true,\n };\n\n const caption = typeof error === 'string' ? <Caption>{error}</Caption> : null;\n\n return (\n <Cell ref={ref} tabIndex={0} {...cellProps}>\n <Container>\n {startAdornment}\n {children}\n {endAdornment}\n <EditOnIcon data-edit-icon size={SizeTokenValue.Small} />\n </Container>\n {caption}\n </Cell>\n );\n});\n\nexport const DataGridTableCell: FRC<HTMLTableCellElement, DataGridTableCellProps & PropsWithChildren> = forwardRef(\n (props, ref) => {\n const resultProps = useDataGridTableCell(props.cell);\n\n const contentProps = {\n isMultiline: resultProps.isMultiline,\n whiteSpace: resultProps.whiteSpace,\n wordBreak: resultProps.wordBreak,\n };\n\n return (\n <TableCell ref={ref} {...resultProps}>\n <TableCellContent {...contentProps}>{props.children}</TableCellContent>\n </TableCell>\n );\n }\n);\n\nexport const getDataGridTableCell = (cell: DataGridTableCellProps['cell']) => {\n const content = flexRender(cell.column.columnDef.cell, cell.getContext());\n\n if (cell.column.columnDef.meta?.isCustom) {\n return <React.Fragment key={cell.id}>{content}</React.Fragment>;\n }\n\n return (\n <DataGridTableCell key={cell.id} cell={cell}>\n {content}\n </DataGridTableCell>\n );\n};\n\nexport * from './types';\n","'use client';\n\nimport styled from '@emotion/styled';\n\nimport {forwardRef} from '@join-x5/react-theme';\n\nimport {getDataGridTableCell} from 'TableCell';\n\nimport type {FRC} from '@join-x5/react-theme';\nimport type {Row} from '@tanstack/react-table';\nimport type {GetDataGridTableRow} from '../types';\nimport type {TableRowProps} from './types';\n\nconst Container = styled.tr`\n :hover [data-cell] {\n :not([data-focused], [data-active], [data-disabled]) [data-edit-icon] {\n visibility: visible;\n }\n\n :not([data-focused], [data-active]):not(:focus) {\n ${props => ({\n '--background-color': props.theme.colors.grey[10],\n '--border-color': props.theme.colors.grey[20],\n })}\n }\n }\n`;\n\nexport const TableRow: FRC<HTMLTableRowElement, TableRowProps> = forwardRef((props, ref) => {\n return <Container ref={ref} {...props} />;\n});\n\ntype DataGridTableRowProps = {row: Row<unknown>} & TableRowProps;\n\nconst DataGridTableRow: React.FC<DataGridTableRowProps> = props => {\n const {row, ...rest} = props;\n\n const content = row.getVisibleCells().map(getDataGridTableCell);\n\n return <TableRow {...rest}>{content}</TableRow>;\n};\n\nexport const getDataGridTableRow: GetDataGridTableRow = row => {\n return <DataGridTableRow key={row.id} row={row} />;\n};\n","'use client';\n\nimport {memo, useContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport {DataGridContext} from 'DataGridContext';\nimport {getDataGridTableRow} from 'TableRow';\n\nimport type {Table} from '@tanstack/react-table';\nimport type {DataGridProps} from 'types';\n\nexport const TableBody = styled.tbody``;\n\ntype DataGridTableBodyProps = {\n table: Table<unknown>;\n} & Pick<DataGridProps, 'components'>;\n\nconst DataGridTableBody: React.FC<DataGridTableBodyProps> = ({table, components}) => {\n const context = useContext(DataGridContext);\n const rows = table.getRowModel().rows;\n\n const iterator = components?.row ?? getDataGridTableRow;\n\n return <TableBody data-qa={`${context.qa}-body`}>{rows.map(iterator)}</TableBody>;\n};\n\nconst MemoizedDataGridTableBody = memo(\n DataGridTableBody,\n (prev, next) => prev.table.options.data === next.table.options.data\n);\n\nexport const getDataGridTableBody = (\n table: DataGridTableBodyProps['table'],\n components: DataGridProps['components']\n) => {\n const isResizing = table.getState().columnSizingInfo.isResizingColumn;\n const Component = isResizing ? MemoizedDataGridTableBody : DataGridTableBody;\n\n return <Component table={table} components={components} />;\n};\n","'use client';\n\nimport {useMemo, useState} from 'react';\n\nimport {useUpdateEffect} from '@join-x5/react-theme';\nimport {ColumnArea} from '@join-x5/react-data-grid-settings';\n\nimport type {ColumnOrderState, ColumnPinningState, TableState, VisibilityState} from '@tanstack/react-table';\nimport type {ColumnItem} from '@join-x5/react-data-grid-settings';\nimport type {DataGridProps} from 'types';\n\nconst convertVisibility = (settings?: ColumnItem[]): VisibilityState => {\n if (!settings || !settings.length) {\n return {};\n }\n\n return settings.reduce((acc, item) => {\n acc[item.id] = item.isVisible;\n return acc;\n }, {} as VisibilityState);\n};\n\nconst convertOrder = (settings?: ColumnItem[]): ColumnOrderState => {\n if (!settings || !settings.length) {\n return [];\n }\n\n return settings.sort((a, b) => a.sort - b.sort).map(item => String(item.id));\n};\n\nconst convertPinning = (settings?: ColumnItem[]): ColumnPinningState => {\n if (!settings || !settings.length) {\n return {};\n }\n\n return settings.reduce((acc, item) => {\n if (item.area === ColumnArea.FixedLeft) {\n acc.left ??= [];\n acc.left?.push(String(item.id));\n } else if (item.area === ColumnArea.FixedRight) {\n acc.right ??= [];\n acc.right?.push(String(item.id));\n }\n\n return acc;\n }, {} as ColumnPinningState);\n};\n\nexport const useDataGridColumnSettings = (\n settings?: DataGridProps['columnSettings'],\n tableProps?: DataGridProps['tableProps']\n) => {\n const [columnVisibility, onColumnVisibilityChange] = useState<VisibilityState>(convertVisibility(settings));\n const [columnOrder, onColumnOrderChange] = useState<ColumnOrderState>(convertOrder(settings));\n const [columnPinning, onColumnPinningChange] = useState<ColumnPinningState>(convertPinning(settings));\n\n const externalState = tableProps?.state;\n\n const state = useMemo((): Partial<TableState> => {\n return {columnVisibility, columnOrder, columnPinning, ...externalState};\n }, [externalState, columnVisibility, columnOrder, columnPinning]);\n\n useUpdateEffect(() => {\n const newVisibility = convertVisibility(settings);\n const newOrder = convertOrder(settings);\n const newPinning = convertPinning(settings);\n\n onColumnVisibilityChange(oldState =>\n JSON.stringify(oldState) === JSON.stringify(newVisibility) ? oldState : newVisibility\n );\n\n onColumnOrderChange(oldState => (JSON.stringify(oldState) === JSON.stringify(newOrder) ? oldState : newOrder));\n\n onColumnPinningChange(oldState =>\n JSON.stringify(oldState) === JSON.stringify(newPinning) ? oldState : newPinning\n );\n }, [settings]);\n\n return state;\n};\n","'use client';\n\nimport {getCoreRowModel, getExpandedRowModel, useReactTable} from '@tanstack/react-table';\n\nimport {forwardRef} from '@join-x5/react-theme';\n\nimport {DataGridTable} from 'Table';\n\nimport {DataGridContextProvider} from 'DataGridContext';\nimport {getDataGridTableHead} from 'TableHead';\nimport {getDataGridTableBody} from 'TableBody';\n\nimport {useDataGridColumnSettings} from './hook';\n\nimport type {FRC} from '@join-x5/react-theme';\nimport type {DataGridProps} from './types';\n\nexport const DataGrid: FRC<HTMLTableElement, DataGridProps> = forwardRef((props, ref) => {\n const {\n qa = 'datagrid',\n\n isBordered,\n isMultiline,\n isShadowed,\n\n size,\n textAlign,\n writingMode,\n userSelect,\n wordBreak,\n whiteSpace,\n\n cellProps,\n headCellProps,\n\n columns,\n data,\n tableProps,\n columnSettings,\n components,\n children,\n\n verticalAlign = props.isMultiline ? 'top' : 'center',\n\n ...rest\n } = props;\n\n const state = useDataGridColumnSettings(columnSettings, tableProps);\n\n const table = useReactTable({\n columns,\n data,\n state,\n\n manualSorting: true,\n manualFiltering: true,\n manualPagination: true,\n columnResizeMode: 'onChange',\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n\n ...tableProps,\n });\n\n const context = {\n size,\n verticalAlign,\n isBordered,\n isMultiline,\n isShadowed,\n textAlign,\n writingMode,\n userSelect,\n wordBreak,\n whiteSpace,\n\n cellProps,\n headCellProps,\n qa,\n };\n\n const head = getDataGridTableHead(table);\n const body = getDataGridTableBody(table, components);\n\n return (\n <DataGridContextProvider {...context}>\n <DataGridTable ref={ref} table={table} {...rest}>\n {head}\n {children}\n {body}\n </DataGridTable>\n </DataGridContextProvider>\n );\n});\n","import styled from '@emotion/styled';\n\nexport const TableDropdownHeader = styled.div`\n padding: 8px 12px 4px;\n user-select: none;\n\n ${props => ({\n ...props.theme.typography.h6,\n\n color: props.theme.colors.grey[70],\n })}\n`;\n\nexport const TableDropdownItem = styled.div`\n padding: 6px 12px;\n user-select: none;\n cursor: pointer;\n\n ${props => ({\n ...props.theme.typography.p1compact,\n\n color: props.theme.colors.grey[100],\n })}\n\n :hover {\n background-color: ${props => props.theme.colors.grey[10]};\n }\n\n &[data-checked] {\n ${props => ({\n color: props.theme.colors.white,\n backgroundColor: props.theme.colors.accent[90],\n })}\n }\n`;\n","'use client';\n\nimport {useContext, useRef} from 'react';\nimport {useRefMerge} from '@join-x5/react-theme';\n\nimport {DataGridContext} from '../DataGridContext';\nimport {useDataGridTableCell} from '../TableCell/hook';\n\nimport type {KeyboardEventHandler, MouseEventHandler, Ref} from 'react';\nimport type {Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {TableCellProps} from 'TableCell';\n\nexport const useTableCellTextInput = <T extends HTMLInputElement | HTMLTextAreaElement>(\n props: TableCellProps,\n baseRef: Ref<HTMLTableCellElement>\n) => {\n const {isDisabled, isActive, setIsActive} = props;\n\n const ref = useRefMerge(baseRef);\n const inputRef = useRef<T>(null);\n\n const onEdit = () => {\n const input = inputRef.current;\n if (isDisabled || !input) {\n return;\n }\n\n setIsActive?.(true);\n\n setTimeout(() => {\n input.selectionStart = input.value.length;\n input.focus();\n });\n };\n\n const onClick: MouseEventHandler<HTMLTableCellElement> = e => {\n if (!isActive) {\n e.currentTarget.focus();\n }\n\n props.onClick?.(e);\n };\n\n const onDoubleClick: MouseEventHandler<HTMLTableCellElement> = e => {\n onEdit();\n\n props.onDoubleClick?.(e);\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLTableCellElement> = e => {\n props.onKeyDown?.(e);\n\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (!isActive && isEnterCode) {\n onEdit();\n }\n };\n\n const cellProps = {\n ...props,\n\n ref,\n onClick,\n onDoubleClick,\n onKeyDown,\n\n 'data-editable': !isDisabled ? true : undefined,\n };\n\n return {cellProps, ref, inputRef};\n};\n\nexport const useDataGridInputCell = (cell: ReactTableCell<unknown, unknown>) => {\n const props = useDataGridTableCell(cell);\n const context = useContext(DataGridContext);\n\n const isActive = cell.id === context.activeCell;\n const setIsActive = newIsActive => context.setActiveCell(newIsActive ? cell.id : null);\n\n return {...props, isActive, setIsActive};\n};\n","'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {FRC, PropsWithChildren, CSSProperties} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TButtonCell = FRC<HTMLTableCellElement, TableCellProps>;\n\nconst sizePadding: Record<SizeTokenValue, CSSProperties['padding']> = {\n [SizeTokenValue.XXSmall]: 4,\n [SizeTokenValue.XSmall]: 4,\n [SizeTokenValue.Small]: 4,\n [SizeTokenValue.Medium]: 8,\n [SizeTokenValue.Large]: 6,\n [SizeTokenValue.XLarge]: 6,\n};\n\nexport const ButtonCell: TButtonCell = forwardRef((props, ref) => {\n const {padding = sizePadding[props.size ?? SizeTokenValue.Medium], ...rest} = props;\n\n return <TableCell ref={ref} padding={padding} {...rest} />;\n});\n\nexport type DataGridButtonCellProps<T = DefaultAny, V = DefaultAny> = DataGridTableCellProps<T, V> & PropsWithChildren;\n\nexport const DataGridButtonCell: FRC<HTMLTableCellElement, DataGridButtonCellProps> = forwardRef((props, ref) => {\n const {cell, children} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n return (\n <ButtonCell ref={ref} {...cellProps}>\n {children}\n </ButtonCell>\n );\n});\n","'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\nimport {Checkbox} from '@join-x5/react';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {FRC} from '@join-x5/react-theme';\nimport type {CheckboxProps} from '@join-x5/react';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TCheckboxCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: CheckboxProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nconst sizePadding: Record<SizeTokenValue, number> = {\n [SizeTokenValue.XXSmall]: 8,\n [SizeTokenValue.XSmall]: 8,\n [SizeTokenValue.Small]: 8,\n [SizeTokenValue.Medium]: 12,\n [SizeTokenValue.Large]: 14,\n [SizeTokenValue.XLarge]: 14,\n};\n\nexport const CheckboxCell: TCheckboxCell = forwardRef((props, ref) => {\n const {inputProps, padding = sizePadding[props.size ?? SizeTokenValue.Medium], ...rest} = props;\n\n return (\n <TableCell ref={ref} padding={padding} {...rest}>\n <Checkbox data-action tabIndex={-1} disabled={props.isDisabled} {...inputProps} />\n </TableCell>\n );\n});\n\nexport type DataGridCheckboxCellProps<T = DefaultAny, V = DefaultAny> = CheckboxProps & DataGridTableCellProps<T, V>;\n\nexport const DataGridCheckboxCell: FRC<HTMLTableCellElement, DataGridCheckboxCellProps> = forwardRef((props, ref) => {\n const {cell, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const inputProps = rest as CheckboxProps;\n\n return <CheckboxCell ref={ref} {...cellProps} inputProps={inputProps} />;\n});\n","'use client';\n\nimport {forwardRef} from '@join-x5/react-theme';\nimport {Datepicker} from '@join-x5/react';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {KeyboardEventHandler, MouseEventHandler} from 'react';\nimport type {Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {FRC} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\nimport type {ColumnDefTemplate} from './types';\nimport type {CalendarValue, DatepickerProps} from '@join-x5/react';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TDateCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: DatepickerProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nexport const DateCell: TDateCell = forwardRef(({inputProps, ...props}, ref) => {\n const setIsOpen: DatepickerProps['setIsOpen'] = newIsOpen => {\n props.setIsActive?.(newIsOpen);\n };\n\n const onClick: MouseEventHandler<HTMLTableCellElement> = e => {\n props.onClick?.(e);\n\n if (!props.isDisabled && !props.isActive) {\n props.setIsActive?.(true);\n }\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLTableCellElement> = e => {\n props.onKeyDown?.(e);\n\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (!props.isDisabled && !props.isActive && isEnterCode) {\n props.setIsActive?.(true);\n }\n };\n\n return (\n <TableCell ref={ref} padding={0} {...props} onKeyDown={onKeyDown} onClick={onClick}>\n <Datepicker\n isTable\n size={props.size}\n disabled={props.isDisabled}\n isOpen={props.isActive}\n setIsOpen={setIsOpen}\n {...inputProps}\n />\n </TableCell>\n );\n});\n\nexport type DataGridDateCellProps<T = DefaultAny, V = DefaultAny> = {\n getValue: (cell: ReactTableCell<T, V>) => CalendarValue;\n onChange: (cell: ReactTableCell<T, V>, newValue: CalendarValue) => void;\n} & Omit<DatepickerProps, 'value' | 'onChange'> &\n DataGridTableCellProps<T, V>;\n\nexport const DataGridDateCell: FRC<HTMLTableCellElement, DataGridDateCellProps> = forwardRef((props, ref) => {\n const {cell, getValue, onChange, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const inputProps = rest as DatepickerProps;\n inputProps.value = getValue(cell);\n inputProps.onChange = newValue => onChange(cell, newValue);\n\n return <DateCell ref={ref} {...cellProps} inputProps={inputProps} />;\n});\n\nexport type GetDataGridDateCellArgs<T = DefaultAny, V = DefaultAny> = Omit<DataGridDateCellProps<T, V>, 'cell'>;\n\nexport const getDataGridDateCell = <T, V>(args: GetDataGridDateCellArgs<T, V>): ColumnDefTemplate<T, V> => {\n return ({cell}) => <DataGridDateCell key={cell.id} cell={cell} {...args} />;\n};\n","'use client';\n\nimport {forwardRef} from '@join-x5/react-theme';\nimport {Select} from '@join-x5/react';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {ChangeEvent, KeyboardEventHandler, MouseEventHandler} from 'react';\nimport type {Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {FRC} from '@join-x5/react-theme';\nimport type {DatepickerProps, SelectOption, SelectProps} from '@join-x5/react';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\nimport type {ColumnDefTemplate} from './types';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TDropdownCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: SelectProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nexport const DropdownCell: TDropdownCell = forwardRef(({inputProps, ...props}, ref) => {\n const setIsOpen: DatepickerProps['setIsOpen'] = newIsOpen => {\n props.setIsActive?.(newIsOpen);\n };\n\n const onClick: MouseEventHandler<HTMLTableCellElement> = e => {\n props.onClick?.(e);\n\n if (!props.isDisabled && !props.isActive) {\n props.setIsActive?.(true);\n }\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLTableCellElement> = e => {\n props.onKeyDown?.(e);\n\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (!props.isDisabled && !props.isActive && isEnterCode) {\n props.setIsActive?.(true);\n }\n };\n\n return (\n <TableCell ref={ref} padding={0} {...props} onKeyDown={onKeyDown} onClick={onClick}>\n <Select\n isTable\n size={props.size}\n disabled={props.isDisabled}\n isOpen={props.isActive}\n setIsOpen={setIsOpen}\n {...inputProps}\n />\n </TableCell>\n );\n});\n\nexport type DataGridDropdownCellProps<T = DefaultAny, V = DefaultAny, O = unknown> = {\n getValue: (cell: ReactTableCell<T, V>) => SelectProps['value'];\n onChange: (\n cell: ReactTableCell<T, V>,\n newValue: SelectProps['value'],\n option?: SelectOption<O>,\n event?: ChangeEvent<HTMLInputElement>\n ) => void;\n} & Omit<SelectProps, 'value' | 'onChange'> &\n DataGridTableCellProps<T, V>;\n\nexport const DataGridDropdownCell: FRC<HTMLTableCellElement, DataGridDropdownCellProps> = forwardRef((props, ref) => {\n const {cell, getValue, onChange, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const inputProps = rest as SelectProps;\n inputProps.value = getValue(cell);\n inputProps.onChange = (...args) => onChange(cell, ...args);\n\n return <DropdownCell ref={ref} {...cellProps} inputProps={inputProps} />;\n});\n\nexport type GetDataGridDropdownCellArgs<T = DefaultAny, V = DefaultAny> = Omit<DataGridDropdownCellProps<T, V>, 'cell'>;\n\nexport const getDataGridDropdownCell = <T, V>(args: GetDataGridDropdownCellArgs<T, V>): ColumnDefTemplate<T, V> => {\n return ({cell}) => <DataGridDropdownCell key={cell.id} cell={cell} {...args} />;\n};\n","'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\nimport {ChevronDownIcon, ChevronRightIcon} from '@join-x5/react-icons';\nimport {IconButton, ButtonVariant} from '@join-x5/react';\n\nimport {TableCell, TableCellContent} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {FRC, PropsWithChildren, CSSProperties} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TExpandingCell = FRC<\n HTMLTableCellElement,\n {\n depth: number;\n isParent?: boolean;\n } & TableCellProps\n>;\n\nconst sizePadding = (depth: number, size?: SizeTokenValue, isParent?: boolean): CSSProperties['padding'] => {\n const paddingOffset = depth * 20 + (isParent ? 0 : 8);\n\n switch (size) {\n case SizeTokenValue.XXSmall:\n return `4px 8px 4px ${paddingOffset + 4}px`;\n case SizeTokenValue.XSmall:\n return `4px 8px 4px ${paddingOffset + 4}px`;\n case SizeTokenValue.Small:\n return `4px 8px 4px ${paddingOffset + 4}px`;\n case SizeTokenValue.Large:\n return `10px 12px 10px ${paddingOffset + 8}px`;\n case SizeTokenValue.XLarge:\n return `10px 12px 10px ${paddingOffset + 8}px`;\n default:\n return `8px 12px 8px ${paddingOffset + 8}px`;\n }\n};\n\nexport const ExpandingCell: TExpandingCell = forwardRef((props, ref) => {\n const {depth, isParent, padding, ...rest} = props;\n\n const resultPadding = padding ?? sizePadding(depth, props.size, isParent);\n\n return <TableCell ref={ref} padding={resultPadding} {...rest} />;\n});\n\nexport type DataGridExpandingCellProps<T = DefaultAny, V = DefaultAny> = DataGridTableCellProps<T, V> &\n PropsWithChildren;\n\nexport const DataGridExpandingCell: FRC<HTMLTableCellElement, DataGridExpandingCellProps> = forwardRef((props, ref) => {\n const {cell, children} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n if (!cell.row.getCanExpand()) {\n return (\n <ExpandingCell ref={ref} depth={cell.row.depth} {...cellProps}>\n <TableCellContent>{children}</TableCellContent>\n </ExpandingCell>\n );\n }\n\n const button = (() => {\n const Icon = cell.row.getIsExpanded() ? ChevronDownIcon : ChevronRightIcon;\n\n return (\n <IconButton\n data-action\n tabIndex={-1}\n variant={ButtonVariant.InnerInput}\n size={SizeTokenValue.XSmall}\n onClick={cell.row.getToggleExpandedHandler()}\n >\n <Icon size={SizeTokenValue.Small} />\n </IconButton>\n );\n })();\n\n const contentStyle = {\n display: 'flex',\n gap: '4px',\n width: '100%',\n height: '100%',\n alignItems: 'center',\n };\n\n return (\n <ExpandingCell isParent ref={ref} depth={cell.row.depth} {...cellProps}>\n <div style={contentStyle}>\n {button}\n <TableCellContent>{children}</TableCellContent>\n </div>\n </ExpandingCell>\n );\n});\n","'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TIconCell = FRC<HTMLTableCellElement, TableCellProps>;\n\nconst sizePadding: Record<SizeTokenValue, number> = {\n [SizeTokenValue.XXSmall]: 8,\n [SizeTokenValue.XSmall]: 8,\n [SizeTokenValue.Small]: 8,\n [SizeTokenValue.Medium]: 12,\n [SizeTokenValue.Large]: 14,\n [SizeTokenValue.XLarge]: 14,\n};\n\nexport const IconCell: TIconCell = forwardRef((props, ref) => {\n const {padding = sizePadding[props.size ?? SizeTokenValue.Medium], ...rest} = props;\n\n return <TableCell ref={ref} padding={padding} {...rest} />;\n});\n\nexport type DataGridIconCellProps<T = DefaultAny, V = DefaultAny> = DataGridTableCellProps<T, V> & PropsWithChildren;\n\nexport const DataGridIconCell: FRC<HTMLTableCellElement, DataGridIconCellProps> = forwardRef((props, ref) => {\n const {cell, children} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n return (\n <IconCell ref={ref} {...cellProps}>\n {children}\n </IconCell>\n );\n});\n","'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TLabelCell = FRC<HTMLTableCellElement, TableCellProps>;\n\nconst sizePadding: Record<SizeTokenValue, string> = {\n [SizeTokenValue.XXSmall]: '6px 8px',\n [SizeTokenValue.XSmall]: '6px 8px',\n [SizeTokenValue.Small]: '6px 8px',\n [SizeTokenValue.Medium]: '10px 12px',\n [SizeTokenValue.Large]: '12px',\n [SizeTokenValue.XLarge]: '12px',\n};\n\nexport const LabelCell: TLabelCell = forwardRef((props, ref) => {\n const {padding = sizePadding[props.size ?? SizeTokenValue.Medium], ...rest} = props;\n\n return <TableCell ref={ref} padding={padding} {...rest} />;\n});\n\nexport type DataGridLabelCellProps<T = DefaultAny, V = DefaultAny> = DataGridTableCellProps<T, V> & PropsWithChildren;\n\nexport const DataGridLabelCell: FRC<HTMLTableCellElement, DataGridLabelCellProps> = forwardRef((props, ref) => {\n const {cell, children} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n return (\n <LabelCell ref={ref} {...cellProps}>\n {children}\n </LabelCell>\n );\n});\n","'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\nimport {Switch} from '@join-x5/react';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {SwitchProps} from '@join-x5/react';\nimport type {FRC, CSSProperties} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TSwitchCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: SwitchProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nconst sizePadding: Record<SizeTokenValue, CSSProperties['padding']> = {\n [SizeTokenValue.XXSmall]: '8px',\n [SizeTokenValue.XSmall]: '8px',\n [SizeTokenValue.Small]: '8px',\n [SizeTokenValue.Medium]: '12px',\n [SizeTokenValue.Large]: '14px 12px 14px 14px',\n [SizeTokenValue.XLarge]: '14px 12px 14px 14px',\n};\n\nexport const SwitchCell: TSwitchCell = forwardRef((props, ref) => {\n const {inputProps, padding = sizePadding[props.size ?? SizeTokenValue.Medium], ...rest} = props;\n\n return (\n <TableCell ref={ref} padding={padding} {...rest}>\n <Switch data-action tabIndex={-1} disabled={props.isDisabled} size={SizeTokenValue.Small} {...inputProps} />\n </TableCell>\n );\n});\n\nexport type DataGridSwitchCellProps<T = DefaultAny, V = DefaultAny> = SwitchProps & DataGridTableCellProps<T, V>;\n\nexport const DataGridSwitchCell: FRC<HTMLTableCellElement, DataGridSwitchCellProps> = forwardRef((props, ref) => {\n const {cell, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const inputProps = rest as SwitchProps;\n\n return <SwitchCell ref={ref} {...cellProps} inputProps={inputProps} />;\n});\n","'use client';\n\nimport styled from '@emotion/styled';\n\nimport {useEffect, useState} from 'react';\nimport {forwardRef} from '@join-x5/react-theme';\n\nimport {TableCell, TableCellContent} from '../TableCell';\n\nimport {useDataGridInputCell, useTableCellTextInput} from './hook';\n\nimport type {\n ChangeEventHandler,\n FocusEvent,\n FocusEventHandler,\n InputHTMLAttributes,\n KeyboardEventHandler,\n ReactNode,\n} from 'react';\nimport type {Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\nimport type {ColumnDefTemplate} from './types';\n\nconst ChildContent = styled.div`\n &[data-hidden] {\n visibility: hidden;\n pointer-events: none;\n }\n`;\n\nconst Input = styled.input`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n min-width: 10px;\n padding: 0;\n background-color: transparent;\n border: none;\n outline: none;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n\n &[data-hidden] {\n visibility: hidden;\n pointer-events: none;\n }\n`;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\nexport type TextInputProps = {\n value: string;\n onChange: (newValue: string, e: FocusEvent<HTMLInputElement>) => void;\n} & Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'>;\n\ntype TTextInputCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: TextInputProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nexport const TextInputCell: TTextInputCell = forwardRef(({inputProps, ...props}, baseRef) => {\n const {cellProps, ref, inputRef} = useTableCellTextInput<HTMLInputElement>(props, baseRef);\n\n const [value, setValue] = useState(inputProps.value ?? '');\n\n const onChange: ChangeEventHandler<HTMLInputElement> = e => {\n setValue(e.target.value);\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLInputElement> = e => {\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (e.code === 'Escape' || isEnterCode) {\n props.setIsActive?.(false);\n e.currentTarget.blur();\n }\n };\n\n const onBlur: FocusEventHandler<HTMLInputElement> = e => {\n props.setIsActive?.(false);\n\n inputProps.onChange(value, e);\n inputProps.onBlur?.(e);\n ref.current?.blur();\n };\n\n const isChildHidden = props.isActive ? true : undefined;\n\n const resultProps = {\n ...inputProps,\n\n value,\n onChange,\n onKeyDown,\n onBlur,\n\n size: 0,\n 'data-hidden': props.isActive ? undefined : true,\n };\n\n const contentProps = {\n isMultiline: cellProps.isMultiline,\n whiteSpace: cellProps.whiteSpace,\n wordBreak: cellProps.wordBreak,\n };\n\n useEffect(() => {\n setValue(inputProps.value);\n }, [inputProps.value]);\n\n return (\n <TableCell {...cellProps}>\n <TableCellContent {...contentProps}>\n <ChildContent data-hidden={isChildHidden}>{props.children}</ChildContent>\n <Input ref={inputRef} {...resultProps} />\n </TableCellContent>\n </TableCell>\n );\n});\n\nexport type DataGridTextInputCellProps<T = DefaultAny, V = DefaultAny> = {\n getValue: (cell: ReactTableCell<T, V>) => string;\n onChange: (cell: ReactTableCell<T, V>, newValue: string, e: FocusEvent<HTMLInputElement>) => void;\n} & Omit<TextInputProps, 'value' | 'onChange'> &\n DataGridTableCellProps<T, V> &\n PropsWithChildren;\n\nexport const DataGridTextInputCell: FRC<HTMLTableCellElement, DataGridTextInputCellProps> = forwardRef((props, ref) => {\n const {cell, getValue, onChange, children, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const inputProps = rest as TextInputProps;\n inputProps.value = getValue(cell);\n inputProps.onChange = (newValue, e) => onChange(cell, newValue, e);\n\n return (\n <TextInputCell ref={ref} {...cellProps} inputProps={inputProps}>\n {children}\n </TextInputCell>\n );\n});\n\nexport type GetDataGridTextInputCellArgs<T = DefaultAny, V = DefaultAny> = Omit<\n DataGridTextInputCellProps<T, V>,\n 'cell' | 'children'\n>;\n\nexport const getDataGridTextInputCell = <T, V>(args: GetDataGridTextInputCellArgs<T, V>): ColumnDefTemplate<T, V> => {\n return ({cell}) => {\n const content = (cell.getValue() ?? null) as ReactNode;\n\n return (\n <DataGridTextInputCell key={cell.id} cell={cell} {...args}>\n {content}\n </DataGridTextInputCell>\n );\n };\n};\n","'use client';\n\nimport styled from '@emotion/styled';\n\nimport {useEffect, useState} from 'react';\nimport baseTheme, {forwardRef} from '@join-x5/react-theme';\n\nimport {TableCell, TableCellContent} from '../TableCell';\n\nimport {useDataGridInputCell, useTableCellTextInput} from './hook';\n\nimport type {\n ChangeEventHandler,\n FocusEvent,\n FocusEventHandler,\n InputHTMLAttributes,\n KeyboardEventHandler,\n ReactNode,\n} from 'react';\nimport type {Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\nimport type {ColumnDefTemplate} from './types';\n\nconst ChildContent = styled.div`\n min-height: 100%;\n &[data-hidden] {\n visibility: hidden;\n pointer-events: none;\n }\n`;\n\nconst TextArea = styled.textarea`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n min-width: 10px;\n padding: 0;\n background-color: transparent;\n border: none;\n outline: none;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n resize: none;\n\n ${baseTheme.scroll}\n\n &[data-hidden] {\n visibility: hidden;\n pointer-events: none;\n }\n`;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\nexport type TextAreaInputProps = {\n value: string;\n onChange: (newValue: string, e: FocusEvent<HTMLTextAreaElement>) => void;\n} & Omit<InputHTMLAttributes<HTMLTextAreaElement>, 'value' | 'onChange'>;\n\ntype TTextAreaInputCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: TextAreaInputProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nexport const TextAreaInputCell: TTextAreaInputCell = forwardRef(({inputProps, ...props}, baseRef) => {\n const {cellProps, ref, inputRef} = useTableCellTextInput<HTMLTextAreaElement>(props, baseRef);\n\n const [value, setValue] = useState(inputProps.value ?? '');\n\n const onChange: ChangeEventHandler<HTMLTextAreaElement> = e => {\n setValue(e.target.value);\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLTextAreaElement> = e => {\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (e.code === 'Escape' || (isEnterCode && e.ctrlKey)) {\n props.setIsActive?.(false);\n e.currentTarget.blur();\n }\n };\n\n const onBlur: FocusEventHandler<HTMLTextAreaElement> = e => {\n props.setIsActive?.(false);\n\n inputProps.onChange(value, e);\n inputProps.onBlur?.(e);\n ref.current?.blur();\n };\n\n const isChildHidden = props.isActive ? true : undefined;\n\n const resultProps = {\n ...inputProps,\n\n value,\n onChange,\n onKeyDown,\n onBlur,\n\n size: 0,\n 'data-hidden': props.isActive ? undefined : true,\n };\n\n const content = props.isActive ? value : props.children;\n\n const contentProps = {\n isMultiline: cellProps.isMultiline,\n whiteSpace: cellProps.whiteSpace,\n wordBreak: cellProps.wordBreak,\n };\n\n useEffect(() => {\n setValue(inputProps.value);\n }, [inputProps.value]);\n\n return (\n <TableCell {...cellProps}>\n <TableCellContent {...contentProps}>\n <ChildContent data-hidden={isChildHidden}>{content}</ChildContent>\n <TextArea ref={inputRef} {...resultProps} />\n </TableCellContent>\n </TableCell>\n );\n});\n\nexport type DataGridTextAreaInputCellProps<T = DefaultAny, V = DefaultAny> = {\n getValue: (cell: ReactTableCell<T, V>) => string;\n onChange: (cell: ReactTableCell<T, V>, newValue: string, e: FocusEvent<HTMLTextAreaElement>) => void;\n} & Omit<TextAreaInputProps, 'value' | 'onChange'> &\n DataGridTableCellProps<T, V> &\n PropsWithChildren;\n\ntype TDataGridTextAreaInputCell = FRC<HTMLTableCellElement, DataGridTextAreaInputCellProps>;\n\nexport const DataGridTextAreaInputCell: TDataGridTextAreaInputCell = forwardRef((props, ref) => {\n const {cell, getValue, onChange, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const content = (cell.getValue() ?? null) as ReactNode;\n\n const inputProps = rest as TextAreaInputProps;\n inputProps.value = getValue(cell);\n inputProps.onChange = (newValue, e) => onChange(cell, newValue, e);\n\n return (\n <TextAreaInputCell ref={ref} {...cellProps} inputProps={inputProps}>\n {content}\n </TextAreaInputCell>\n );\n});\n\nexport type GetDataGridTextAreaInputCellArgs<T = DefaultAny, V = DefaultAny> = Omit<\n DataGridTextAreaInputCellProps<T, V>,\n 'cell' | 'children'\n>;\n\nexport const getDataGridTextAreaInputCell = <T, V>(\n args: GetDataGridTextAreaInputCellArgs<T, V>\n): ColumnDefTemplate<T, V> => {\n return ({cell}) => {\n const content = (cell.getValue() ?? null) as ReactNode;\n\n return (\n <DataGridTextAreaInputCell key={cell.id} cell={cell} {...args}>\n {content}\n </DataGridTextAreaInputCell>\n );\n };\n};\n"],"names":["DataGridContext","createContext","activeCell","setActiveCell","DataGridContextProvider","children","rest","useState","jsx","_EMOTION_STRINGIFIED_CSS_ERROR__","TableWrapper","process","env","NODE_ENV","target","label","baseTheme","scroll","props","border","theme","colors","grey","backgroundColor","white","TableFooter","ControlPanel","ControlPanelContent","name","styles","toString","Container","_styled","Table","forwardRef","isResizing","ref","resultProps","undefined","DataGridTable","table","context","useContext","columnSizeVars","useMemo","headers","getFlatHeaders","colSizes","header","id","getSize","column","getState","columnSizingInfo","columnSizing","isResizingColumn","style","width","getTotalSize","qa","areaProps","isPinned","getIsPinned","columnArea","ColumnArea","FixedLeft","FixedRight","Default","left","getStart","isLastFixed","getIsLastColumn","right","getAfter","getIsFirstColumn","useDataGridTableCell","cell","isMultiline","isBordered","isShadowed","size","verticalAlign","writingMode","userSelect","wordBreak","whiteSpace","isRowSelected","row","getIsSelected","getIsResizing","maxWidth","cellProps","assign","Function","TableHeadCellVariant","Checkbox","TableHeadCellResizer","accent","Cell","color","SizeTokenValue","Large","toLocaleLowerCase","typography","h4","Medium","h5","Small","Content","TableHeadCell","baseRef","isDisabled","isActive","textAlign","startAdornment","endAdornment","resizer","dropdown","Dropdown","variant","useRefMerge","isDropdownOpen","setIsDropdownOpen","onKeyDown","e","code","currentTarget","blur","click","onClick","hasActive","toLowerCase","jsxs","DataGridTableHeadCell","getCanResize","resetSize","getResizeHandler","content","isPlaceholder","flexRender","columnDef","getContext","colSpan","rowSpan","headCellProps","getDataGridTableHeadCell","TableHeadRow","TableHead","DataGridTableHead","getHeaderGroups","map","headerGroup","getDataGridTableHead","sizePadding","XXSmall","XSmall","XLarge","p1compact","p2","caretColor","additional","red","Caption","p3","TableCellContent","contentProps","TableCell","isRowHover","isFocused","error","padding","isEnterCode","child","current","querySelector","parent","parentElement","curIndex","Array","from","childNodes","indexOf","sibling","previousElementSibling","nextElementSibling","nodeName","nextFocus","focus","prevSibling","prevRow","lastCell","lastElementChild","length","nextSibling","nextRow","firstCell","firstElementChild","caption","EditOnIcon","DataGridTableCell","getDataGridTableCell","meta","isCustom","React","TableRow","DataGridTableRow","getVisibleCells","getDataGridTableRow","TableBody","DataGridTableBody","components","rows","getRowModel","iterator","MemoizedDataGridTableBody","memo","prev","next","options","data","getDataGridTableBody","Component","convertVisibility","settings","reduce","acc","item","isVisible","convertOrder","sort","a","b","String","convertPinning","area","push","useDataGridColumnSettings","tableProps","columnVisibility","onColumnVisibilityChange","columnOrder","onColumnOrderChange","columnPinning","onColumnPinningChange","externalState","state","useUpdateEffect","newVisibility","newOrder","newPinning","oldState","JSON","stringify","DataGrid","columns","columnSettings","useReactTable","manualSorting","manualFiltering","manualPagination","columnResizeMode","getCoreRowModel","getExpandedRowModel","head","body","TableDropdownHeader","h6","TableDropdownItem","useTableCellTextInput","setIsActive","inputRef","useRef","onEdit","input","setTimeout","selectionStart","value","onDoubleClick","useDataGridInputCell","newIsActive","ButtonCell","DataGridButtonCell","CheckboxCell","inputProps","DataGridCheckboxCell","DateCell","setIsOpen","newIsOpen","Datepicker","DataGridDateCell","getValue","onChange","newValue","getDataGridDateCell","args","DropdownCell","Select","DataGridDropdownCell","getDataGridDropdownCell","depth","isParent","paddingOffset","ExpandingCell","resultPadding","DataGridExpandingCell","getCanExpand","button","Icon","getIsExpanded","ChevronDownIcon","ChevronRightIcon","IconButton","ButtonVariant","InnerInput","getToggleExpandedHandler","contentStyle","display","gap","height","alignItems","IconCell","DataGridIconCell","LabelCell","DataGridLabelCell","SwitchCell","Switch","DataGridSwitchCell","ChildContent","Input","TextInputCell","setValue","onBlur","isChildHidden","useEffect","DataGridTextInputCell","getDataGridTextInputCell","TextArea","TextAreaInputCell","ctrlKey","DataGridTextAreaInputCell","getDataGridTextAreaInputCell"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export * from './DataGrid';
2
+ export * from './Table';
3
+ export * from './TableBody';
4
+ export * from './TableCell';
5
+ export * from './TableDropdown';
6
+ export * from './TableHead';
7
+ export * from './TableHeadCell';
8
+ export * from './TableHeadRow';
9
+ export * from './TableInputCell';
10
+ export * from './TableRow';
@@ -0,0 +1,72 @@
1
+ import { DataGrid as a } from "./DataGrid.es.js";
2
+ import { ControlPanel as r, ControlPanelContent as o, DataGridTable as d, Table as C, TableFooter as p, TableWrapper as D } from "./Table/index.es.js";
3
+ import { TableBody as i, getDataGridTableBody as n } from "./TableBody/index.es.js";
4
+ import { DataGridTableCell as b, TableCell as G, TableCellContent as m, getDataGridTableCell as f } from "./TableCell/index.es.js";
5
+ import { TableDropdownHeader as w, TableDropdownItem as H } from "./TableDropdown/index.es.js";
6
+ import { TableHead as u, getDataGridTableHead as c } from "./TableHead/index.es.js";
7
+ import { DataGridTableHeadCell as B, TableHeadCell as R, TableHeadCellResizer as A, getDataGridTableHeadCell as k } from "./TableHeadCell/index.es.js";
8
+ import { TableHeadRow as E } from "./TableHeadRow/index.es.js";
9
+ import { ButtonCell as P, DataGridButtonCell as S } from "./TableInputCell/button.es.js";
10
+ import { CheckboxCell as z, DataGridCheckboxCell as F } from "./TableInputCell/checkbox.es.js";
11
+ import { DataGridDateCell as W, DateCell as j, getDataGridDateCell as q } from "./TableInputCell/date.es.js";
12
+ import { DataGridDropdownCell as J, DropdownCell as K, getDataGridDropdownCell as M } from "./TableInputCell/dropdown.es.js";
13
+ import { DataGridExpandingCell as O, ExpandingCell as Q } from "./TableInputCell/expanding.es.js";
14
+ import { DataGridIconCell as X, IconCell as Y } from "./TableInputCell/icon.es.js";
15
+ import { DataGridLabelCell as _, LabelCell as $ } from "./TableInputCell/label.es.js";
16
+ import { DataGridSwitchCell as le, SwitchCell as ae } from "./TableInputCell/switch.es.js";
17
+ import { DataGridTextInputCell as re, TextInputCell as oe, getDataGridTextInputCell as de } from "./TableInputCell/text.es.js";
18
+ import { DataGridTextAreaInputCell as pe, TextAreaInputCell as De, getDataGridTextAreaInputCell as xe } from "./TableInputCell/textarea.es.js";
19
+ import { TableRow as ne, getDataGridTableRow as Te } from "./TableRow/index.es.js";
20
+ import { TableHeadCellVariant as Ge } from "./TableHeadCell/types.es.js";
21
+ export {
22
+ P as ButtonCell,
23
+ z as CheckboxCell,
24
+ r as ControlPanel,
25
+ o as ControlPanelContent,
26
+ a as DataGrid,
27
+ S as DataGridButtonCell,
28
+ F as DataGridCheckboxCell,
29
+ W as DataGridDateCell,
30
+ J as DataGridDropdownCell,
31
+ O as DataGridExpandingCell,
32
+ X as DataGridIconCell,
33
+ _ as DataGridLabelCell,
34
+ le as DataGridSwitchCell,
35
+ d as DataGridTable,
36
+ b as DataGridTableCell,
37
+ B as DataGridTableHeadCell,
38
+ pe as DataGridTextAreaInputCell,
39
+ re as DataGridTextInputCell,
40
+ j as DateCell,
41
+ K as DropdownCell,
42
+ Q as ExpandingCell,
43
+ Y as IconCell,
44
+ $ as LabelCell,
45
+ ae as SwitchCell,
46
+ C as Table,
47
+ i as TableBody,
48
+ G as TableCell,
49
+ m as TableCellContent,
50
+ w as TableDropdownHeader,
51
+ H as TableDropdownItem,
52
+ p as TableFooter,
53
+ u as TableHead,
54
+ R as TableHeadCell,
55
+ A as TableHeadCellResizer,
56
+ Ge as TableHeadCellVariant,
57
+ E as TableHeadRow,
58
+ ne as TableRow,
59
+ D as TableWrapper,
60
+ De as TextAreaInputCell,
61
+ oe as TextInputCell,
62
+ q as getDataGridDateCell,
63
+ M as getDataGridDropdownCell,
64
+ n as getDataGridTableBody,
65
+ f as getDataGridTableCell,
66
+ c as getDataGridTableHead,
67
+ k as getDataGridTableHeadCell,
68
+ Te as getDataGridTableRow,
69
+ xe as getDataGridTextAreaInputCell,
70
+ de as getDataGridTextInputCell
71
+ };
72
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,54 @@
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
+ import { ColumnDef, RowData, TableOptions, Cell as ReactTableCell, Header, Row } from '@tanstack/react-table';
3
+ import { ColumnItem } from '@join-x5/react-data-grid-settings';
4
+ import { QA } from '@join-x5/react-theme';
5
+ import { TableCellProps } from 'TableCell/types';
6
+ import { TableHeadCellProps } from 'TableHeadCell/types';
7
+ type DefaultAny = any;
8
+ export type DataGridColumn<T = DefaultAny, V = DefaultAny> = ColumnDef<T, V>;
9
+ export type DataGridCellBooleanCallback<T = DefaultAny> = (cell: ReactTableCell<T, DefaultAny>) => boolean;
10
+ export type CellPropsCallback<T = DefaultAny> = (cell: ReactTableCell<T, DefaultAny>) => Partial<TableCellProps & {
11
+ ref?: React.Ref<HTMLTableCellElement>;
12
+ }>;
13
+ export type HeadCellPropsCallback<T = DefaultAny> = (cell: Header<T, DefaultAny>) => Partial<TableHeadCellProps & {
14
+ ref?: React.Ref<HTMLTableCellElement>;
15
+ }>;
16
+ export type GetDataGridTableRow<T = DefaultAny> = (row: Row<T>) => ReactNode;
17
+ export type TableComponents<T = DefaultAny> = {
18
+ row?: GetDataGridTableRow<T>;
19
+ };
20
+ export type DataGridProps<T = DefaultAny> = {
21
+ /** Столбцы */
22
+ columns: DataGridColumn<T>[];
23
+ /** Данные */
24
+ data: T[];
25
+ /** Настройки колонок таблицы
26
+ *
27
+ * Совместима с DataGridSettings[items] пакета @join-x5/react-data-grid-settings
28
+ */
29
+ columnSettings?: ColumnItem[];
30
+ /** Перегрузка свойств TanStack Table (https://tanstack.com/table/latest/docs/introduction) */
31
+ tableProps?: Partial<TableOptions<T>>;
32
+ /** Флаг многострочности ячеек
33
+ *
34
+ * Если передан `true`, то все ячейки будут многострочными.
35
+ * Если передана функция, то ячейка будет многострочной, если функция вернет `true`.
36
+ */
37
+ isMultiline?: boolean | DataGridCellBooleanCallback;
38
+ /** Свойства ячеек */
39
+ cellProps?: Partial<TableCellProps> | CellPropsCallback<T>;
40
+ /** Свойства ячеек */
41
+ headCellProps?: Partial<TableHeadCellProps> | HeadCellPropsCallback<T>;
42
+ /** Перегружаемые компоненты */
43
+ components?: TableComponents;
44
+ } & QA & Pick<TableCellProps, 'size' | 'isBordered' | 'isShadowed' | 'verticalAlign' | 'textAlign' | 'writingMode' | 'userSelect' | 'wordBreak' | 'whiteSpace'> & HTMLAttributes<HTMLTableElement>;
45
+ declare module '@tanstack/react-table' {
46
+ interface ColumnMeta<TData extends RowData, TValue> {
47
+ /** Не рендерить обертку
48
+ *
49
+ * Если передан `true`, то ячейка не будет обернута в компонент TableCell.
50
+ */
51
+ isCustom?: boolean;
52
+ }
53
+ }
54
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@join-x5/react-data-grid",
3
- "version": "1.1.1-nightly",
3
+ "version": "1.1.2-nightly",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",