@trsys-tech/matrix-library 1.1.8-alpha.2 → 1.1.8-alpha.4
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/data-table/DataTable.d.ts.map +1 -1
- package/dist/components/data-table/DataTable.types.d.ts +3 -3
- package/dist/components/data-table/DataTable.types.d.ts.map +1 -1
- package/dist/components/data-table/DataTableAlignment.d.ts.map +1 -1
- package/dist/components/data-table/DataTableContent.d.ts.map +1 -1
- package/dist/components/data-table/DataTableContext.d.ts +1 -0
- package/dist/components/data-table/DataTableContext.d.ts.map +1 -1
- package/dist/components/data-table/DataTableHeader.d.ts.map +1 -1
- package/dist/components/data-table/DataTableRowView.d.ts.map +1 -1
- package/dist/datatable.es.js +10 -13
- package/dist/datatable.es.js.map +1 -1
- package/dist/datatablealignment.es.js +5 -5
- package/dist/datatablealignment.es.js.map +1 -1
- package/dist/datatablecontent.es.js +297 -282
- package/dist/datatablecontent.es.js.map +1 -1
- package/dist/datatablecontext.es.js.map +1 -1
- package/dist/datatableheader.es.js +61 -53
- package/dist/datatableheader.es.js.map +1 -1
- package/dist/datatablerowview.es.js +33 -34
- package/dist/datatablerowview.es.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datatablecontent.es.js","sources":["../src/components/data-table/DataTableContent.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { DragDropProvider, DragOverlay } from \"@dnd-kit/react\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../button/Button\";\nimport { DataTableAlignmentContext, useDataTable } from \"./DataTableContext\";\nimport { dataTableColumnSensors } from \"./dataTableColumnDrag\";\nimport { getActiveDataTableCell } from \"./dataTableModel\";\nimport { useDataTableInstance } from \"./useDataTableInstance\";\nimport { DataTableHeader } from \"./DataTableHeader\";\nimport { DataTablePagination } from \"./DataTablePagination\";\nimport { DataTableRowView } from \"./DataTableRowView\";\nimport { useDataTableColumnDrag } from \"./useDataTableColumnDrag\";\nimport { useDataTableMotion } from \"./useDataTableMotion\";\nimport { useDataTableApi, type DataTableRuntime } from \"./useDataTableApi\";\nimport type { DataTableEditSession } from \"./dataTableEditing\";\nimport type { DataTableApi, DataTableContentProps, DataTableFeatures, DataTableRow } from \"./DataTable.types\";\n\nconst emptyRows: never[] = [];\nconst emptyColumn: Record<string, never> = {};\n\nfunction DataTableContentInner<T extends object>(\n {\n rowData,\n columnDefs,\n defaultColDef = emptyColumn,\n getRowId,\n onReady,\n rowSelection,\n renderSubComponent,\n getRowCanExpand,\n onSelectionChanged,\n quickFilterText,\n onQuickFilterTextChange,\n externalFilter,\n loading = false,\n emptyContent = \"No rows to display\",\n loadingContent = \"Loading…\",\n rowHeight = 36,\n headerHeight = 40,\n getRowClass,\n rowClassRules,\n pinnedTopRowData = emptyRows,\n pinnedBottomRowData = emptyRows,\n pagination = false,\n paginationPageSize = 25,\n paginationPageSizeSelector = [10, 25, 50, 100],\n virtualize = true,\n overscan = 8,\n domLayout = \"normal\",\n suppressHorizontalScroll = false,\n editType = \"cell\",\n suppressClickEdit = false,\n readOnlyEdit = false,\n validateRow,\n onEditCommit,\n onEditRequest,\n onEditCancel,\n onRowClick,\n tableOptions,\n containerStyle,\n className,\n style,\n ...props\n }: DataTableContentProps<T>,\n forwardedRef: React.ForwardedRef<DataTableApi<T>>,\n) {\n \"use no memo\";\n const { setApi, search, hasSearch, setSearch, setCounts } = useDataTable<T>();\n const alignment = React.useContext(DataTableAlignmentContext);\n const detailId = React.useId();\n const viewportRef = React.useRef<HTMLDivElement>(null);\n const contentRef = React.useRef<HTMLDivElement>(null);\n const [viewportWidth, setViewportWidth] = React.useState(0);\n const [printing, setPrinting] = React.useState(false);\n const [columnDrag, setColumnDrag] = React.useState<{ sourceId: string; targetId: string } | null>(null);\n const [focusedCell, setFocusedCell] = React.useState<{ rowId: string; columnId: string } | null>(null);\n const [patches, setPatches] = React.useState<Record<string, { source: T; data: T }>>({});\n const [edit, setEdit] = React.useState<DataTableEditSession<T> | null>(null);\n const [initialSearch] = React.useState(() => tableOptions?.initialState?.globalFilter ?? \"\");\n const editRef = React.useRef(edit);\n const configRef = React.useRef({ columnDefs, validateRow, readOnlyEdit, onEditCommit, onEditRequest, onEditCancel });\n configRef.current = { columnDefs, validateRow, readOnlyEdit, onEditCommit, onEditRequest, onEditCancel };\n const updateEdit = React.useCallback((next: DataTableEditSession<T> | null) => {\n editRef.current = next;\n setEdit(next);\n }, []);\n const isPrinting = printing || domLayout === \"print\";\n const naturalHeight = isPrinting || domLayout === \"autoHeight\";\n const searchText = quickFilterText ?? tableOptions?.state?.globalFilter ?? (hasSearch ? search : initialSearch);\n const showCheckboxes = !!rowSelection && rowSelection.checkboxes !== false && !isPrinting;\n const showExpanders = !!renderSubComponent && !isPrinting;\n const expanderWidth = showExpanders ? 44 : 0;\n const selectionWidth = (showCheckboxes ? 44 : 0) + expanderWidth;\n const { table, definitionsById, sourcesById, data, rowIndices, resolveId } = useDataTableInstance({\n rowData,\n columnDefs,\n defaultColDef,\n getRowId,\n paginationPageSize,\n tableOptions,\n externalFilter,\n rowSelection,\n pagination,\n renderSubComponent,\n getRowCanExpand,\n onQuickFilterTextChange,\n patches,\n alignment,\n isPrinting,\n viewportWidth,\n selectionWidth,\n searchText,\n setSearch,\n });\n\n const visibleColumns = [...table.getStartVisibleLeafColumns(), ...table.getCenterVisibleLeafColumns(), ...table.getEndVisibleLeafColumns()].filter(\n column => column.id !== \"__external\" && (!isPrinting || !definitionsById.get(column.id)?.hideInPrint),\n );\n // Preview locally so canceled drags never update controlled or aligned table state.\n if (columnDrag) {\n const from = visibleColumns.findIndex(column => column.id === columnDrag.sourceId);\n const to = visibleColumns.findIndex(column => column.id === columnDrag.targetId);\n if (from >= 0 && to >= 0) visibleColumns.splice(to, 0, visibleColumns.splice(from, 1)[0]);\n }\n const widths = new Map(visibleColumns.map(column => [column.id, column.getSize()]));\n const totalWidth = selectionWidth + visibleColumns.reduce((sum, column) => sum + widths.get(column.id)!, 0);\n const topRows = table.getTopRows();\n const bottomRows = table.getBottomRows();\n const pinnedIds = new Set([...topRows, ...bottomRows].map(row => row.id));\n const centerRows = (isPrinting ? table.getPrePaginatedRowModel().rows : table.getRowModel().rows).filter(row => !pinnedIds.has(row.id));\n const isDetailExpanded = (row: DataTableRow<T>) => !!renderSubComponent && row.getCanExpand() && row.getIsExpanded();\n // Detail panels can have arbitrary height. Resume fixed-height virtualization when all visible panels close.\n const hasExpandedDetails = [...topRows, ...centerRows, ...bottomRows].some(isDetailExpanded);\n const useVirtualRows = virtualize && !naturalHeight && !hasExpandedDetails;\n const topHeight = (topRows.length + pinnedTopRowData.length) * rowHeight;\n // This renderer opts out of React Compiler above; Virtual exposes a mutable measurement instance.\n // eslint-disable-next-line react-hooks/incompatible-library\n const virtualizer = useVirtualizer({\n count: centerRows.length,\n getScrollElement: () => viewportRef.current,\n estimateSize: () => rowHeight,\n getItemKey: index => centerRows[index].id,\n overscan,\n scrollMargin: headerHeight + topHeight,\n enabled: useVirtualRows,\n useFlushSync: false,\n });\n\n const runtime = React.useRef<DataTableRuntime<T>>({\n table,\n definitionsById,\n centerRows,\n virtualizer,\n resolveId,\n rowIndices,\n sourcesById,\n useVirtualRows,\n pagination,\n serverPagination: tableOptions?.manualPagination === true,\n });\n runtime.current = {\n table,\n definitionsById,\n centerRows,\n virtualizer,\n resolveId,\n rowIndices,\n sourcesById,\n useVirtualRows,\n pagination,\n serverPagination: tableOptions?.manualPagination === true,\n };\n const columnDragHandlers = useDataTableColumnDrag({ runtime, viewportRef, contentRef, setColumnDrag });\n const api = useDataTableApi({ runtime, editRef, configRef, updateEdit, setPatches, contentRef, viewportRef, setPrinting });\n React.useImperativeHandle(forwardedRef, () => api, [api]);\n\n React.useEffect(() => {\n setApi(api);\n return () => setApi(previous => (previous === api ? null : previous));\n }, [api, setApi]);\n const readyRef = React.useRef(onReady);\n readyRef.current = onReady;\n React.useEffect(() => {\n readyRef.current?.(api);\n }, [api]);\n const selectionCallback = React.useRef(onSelectionChanged);\n selectionCallback.current = onSelectionChanged;\n React.useEffect(() => {\n const current = runtime.current.table;\n const selected = current.getSelectedRowModel().rows.map(row => row.original);\n selectionCallback.current?.(selected, current.getSelectedRowIds());\n }, [table.state.rowSelection, data]);\n React.useEffect(() => {\n const current = runtime.current.table;\n const selectedCount = current.getSelectedRowIds().length;\n const pinnedCount = (current.state.rowPinning.top?.length ?? 0) + (current.state.rowPinning.bottom?.length ?? 0);\n setCounts(previous =>\n previous.selectedCount === selectedCount && previous.pinnedCount === pinnedCount ? previous : { selectedCount, pinnedCount },\n );\n }, [table.state.rowSelection, table.state.rowPinning, setCounts]);\n React.useEffect(() => {\n const element = viewportRef.current;\n if (!element) return;\n const resize = () => setViewportWidth(element.clientWidth);\n resize();\n const observer = new ResizeObserver(resize);\n observer.observe(element);\n return () => observer.disconnect();\n }, []);\n React.useEffect(() => {\n const element = viewportRef.current;\n const viewports = alignment?.viewports.current;\n if (!element || !viewports) return;\n viewports.add(element);\n return () => {\n viewports.delete(element);\n };\n }, [alignment?.viewports]);\n React.useEffect(() => {\n if (editRef.current && sourcesById.get(editRef.current.rowId) !== editRef.current.source) {\n api.stopEditing(true);\n }\n setPatches(previous => {\n const entries = Object.entries(previous).filter(([id, patch]) => sourcesById.get(id) === patch.source);\n return entries.length === Object.keys(previous).length ? previous : Object.fromEntries(entries);\n });\n const current = runtime.current.table;\n if (!runtime.current.serverPagination) {\n // Locally owned datasets can discard deleted identities. Server pages retain unloaded selection IDs.\n const selection = current.atoms.rowSelection.get();\n const entries = Object.entries(selection).filter(([id]) => sourcesById.has(id));\n if (entries.length !== Object.keys(selection).length) current.setRowSelection(Object.fromEntries(entries));\n const pinning = current.atoms.rowPinning.get();\n const top = pinning.top?.filter(id => sourcesById.has(id));\n const bottom = pinning.bottom?.filter(id => sourcesById.has(id));\n if (top?.length !== pinning.top?.length || bottom?.length !== pinning.bottom?.length) current.setRowPinning({ top, bottom });\n }\n }, [sourcesById, api]);\n\n const navigableRows = [...topRows, ...centerRows, ...bottomRows];\n const displayedIds = [\n ...pinnedTopRowData.map((_, index) => `__summary_top_${index}`),\n ...topRows.map(row => row.id),\n ...centerRows.map(row => row.id),\n ...bottomRows.map(row => row.id),\n ...pinnedBottomRowData.map((_, index) => `__summary_bottom_${index}`),\n ];\n const expandedIds = new Set(navigableRows.filter(isDetailExpanded).map(row => row.id));\n let displayedRowCount = 0;\n const displayedIndices = new Map(\n displayedIds.map(id => {\n const index = displayedRowCount;\n displayedRowCount += expandedIds.has(id) ? 2 : 1;\n return [id, index];\n }),\n );\n const virtualItems = useVirtualRows ? virtualizer.getVirtualItems() : [];\n const renderedIds = useVirtualRows\n ? [\n ...displayedIds.slice(0, pinnedTopRowData.length + topRows.length),\n ...virtualItems.map(item => centerRows[item.index].id),\n ...bottomRows.map(row => row.id),\n ...pinnedBottomRowData.map((_, index) => `__summary_bottom_${index}`),\n ]\n : displayedIds;\n const activeCell = getActiveDataTableCell(\n focusedCell,\n renderedIds,\n visibleColumns.map(column => column.id),\n );\n\n useDataTableMotion(viewportRef, JSON.stringify(centerRows.map(row => row.id)), JSON.stringify(visibleColumns.map(column => column.id)), isPrinting);\n\n const columnStyle = (column: Column<DataTableFeatures, T>, header = false): React.CSSProperties => {\n const pinned = isPrinting ? false : column.getIsPinned();\n const region = visibleColumns.filter(item => item.getIsPinned() === pinned);\n const index = region.findIndex(item => item.id === column.id);\n const start = region.slice(0, index).reduce((sum, item) => sum + widths.get(item.id)!, selectionWidth);\n const end = region.slice(index + 1).reduce((sum, item) => sum + widths.get(item.id)!, 0);\n return {\n width: widths.get(column.id),\n flexShrink: 0,\n position: pinned ? \"sticky\" : \"relative\",\n insetInlineStart: pinned === \"start\" ? start : undefined,\n insetInlineEnd: pinned === \"end\" ? end : undefined,\n zIndex: pinned ? 2 : undefined,\n background: pinned ? (header ? \"oklch(var(--mtx-primary-50))\" : \"inherit\") : undefined,\n };\n };\n\n const handleCellKeyDown = (event: React.KeyboardEvent, row: DataTableRow<T>, column: Column<DataTableFeatures, T>) => {\n if (event.defaultPrevented) return;\n if (event.key === \"Escape\" && editRef.current) {\n event.preventDefault();\n api.stopEditing(true);\n return;\n }\n if (event.key === \"Enter\" && editRef.current) {\n // Editors own activation and multiline input; plain text/number inputs still commit on Enter.\n if ((event.target as HTMLElement).closest(\"button,select,textarea,[contenteditable=true],[role=combobox],[role=listbox]\")) return;\n event.preventDefault();\n api.stopEditing();\n return;\n }\n const target = event.target as HTMLElement;\n if (target.closest(\"input,select,textarea,button,[contenteditable=true]\")) return;\n if (event.key === \"Enter\" || event.key === \"F2\") {\n event.preventDefault();\n if (editType === \"fullRow\") api.startEditingRow(row.id);\n else api.startEditingCell({ rowId: row.id, columnId: column.id });\n return;\n }\n const rowIndex = navigableRows.findIndex(item => item.id === row.id);\n const columnIndex = visibleColumns.findIndex(item => item.id === column.id);\n const nextRow = event.key === \"ArrowDown\" ? rowIndex + 1 : event.key === \"ArrowUp\" ? rowIndex - 1 : rowIndex;\n const horizontalStep = getComputedStyle(event.currentTarget).direction === \"rtl\" ? -1 : 1;\n const nextColumn =\n event.key === \"ArrowRight\" ? columnIndex + horizontalStep : event.key === \"ArrowLeft\" ? columnIndex - horizontalStep : columnIndex;\n if ([\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"].includes(event.key) && navigableRows[nextRow] && visibleColumns[nextColumn]) {\n event.preventDefault();\n const targetRow = navigableRows[nextRow];\n if (!pinnedIds.has(targetRow.id)) api.scrollToRow(targetRow.id);\n api.focusCell(targetRow.id, visibleColumns[nextColumn].id);\n }\n };\n\n const renderRow = (data: T, rowId: string, index: number, row?: DataTableRow<T>, pinned?: \"top\" | \"bottom\") => (\n <DataTableRowView\n key={rowId}\n {...{\n data,\n rowId,\n index,\n row,\n pinned,\n edit,\n editRef,\n updateEdit,\n api,\n table,\n detailId,\n displayedIndices,\n rowSelection,\n rowHeight,\n totalWidth,\n getRowClass,\n rowClassRules,\n onRowClick,\n showExpanders,\n expanderWidth,\n showCheckboxes,\n visibleColumns,\n definitionsById,\n activeCell,\n setFocusedCell,\n columnStyle,\n handleCellKeyDown,\n suppressClickEdit,\n editType,\n renderSubComponent,\n isDetailExpanded,\n }}\n />\n );\n\n const selectionRows = (\n rowSelection?.selectAll === \"all\"\n ? table.getCoreRowModel()\n : rowSelection?.selectAll === \"currentPage\"\n ? table.getRowModel()\n : table.getFilteredRowModel()\n ).rows.filter(row => row.getCanSelect());\n const selectedInScope = selectionRows.filter(row => row.getIsSelected()).length;\n return (\n <DragDropProvider sensors={dataTableColumnSensors} {...columnDragHandlers}>\n <DragOverlay dropAnimation={null} style={{ position: \"fixed\", pointerEvents: \"none\" }}>\n {source => {\n const definition = definitionsById.get(source.data.columnId);\n return (\n <div className=\"mtx-rounded-sm mtx-border mtx-border-gray-200 mtx-bg-primary-50 mtx-px-3 mtx-py-2 mtx-text-xs mtx-font-bold mtx-shadow-md\">\n {definition?.headerName ?? source.data.columnId}\n </div>\n );\n }}\n </DragOverlay>\n <div\n ref={contentRef}\n data-data-table-content=\"\"\n data-print-layout={isPrinting || undefined}\n className={cn(\"mtx-relative mtx-flex mtx-min-h-0 mtx-flex-1 mtx-flex-col mtx-rounded-b-lg\", className)}\n style={style}\n {...props}\n >\n {edit && (\n <div data-print-hidden=\"\" className=\"mtx-flex mtx-shrink-0 mtx-items-center mtx-gap-2 mtx-border-b mtx-border-gray-200 mtx-p-2\">\n <Button type=\"button\" size=\"sm\" onClick={() => api.stopEditing()}>\n Save\n </Button>\n <Button type=\"button\" size=\"sm\" variant=\"text\" onClick={() => api.stopEditing(true)}>\n Cancel\n </Button>\n {edit.errors.length > 0 && (\n <span role=\"alert\" className=\"mtx-text-danger\">\n {edit.errors.join(\". \")}\n </span>\n )}\n </div>\n )}\n <div\n ref={viewportRef}\n data-data-table-viewport=\"\"\n role=\"grid\"\n aria-label={props[\"aria-label\"] ?? \"Data table\"}\n aria-busy={loading}\n aria-rowcount={displayedRowCount + 1}\n aria-colcount={visibleColumns.length + (showCheckboxes ? 1 : 0) + (showExpanders ? 1 : 0)}\n aria-multiselectable={rowSelection?.mode === \"multiRow\" || undefined}\n className=\"mtx-relative mtx-min-h-0 mtx-flex-1 mtx-rounded-b-lg\"\n style={{\n ...containerStyle,\n overflow: naturalHeight ? \"visible\" : (containerStyle?.overflow ?? \"auto\"),\n overflowX: isPrinting ? \"visible\" : suppressHorizontalScroll ? \"hidden\" : containerStyle?.overflowX,\n }}\n onScroll={event => {\n if (alignment && !isPrinting)\n for (const element of alignment.viewports.current) {\n if (element !== event.currentTarget && element.scrollLeft !== event.currentTarget.scrollLeft)\n element.scrollLeft = event.currentTarget.scrollLeft;\n }\n }}\n >\n <DataTableHeader\n {...{\n table,\n api,\n headerHeight,\n totalWidth,\n isPrinting,\n showExpanders,\n expanderWidth,\n showCheckboxes,\n rowSelection,\n selectionRows,\n selectedInScope,\n visibleColumns,\n definitionsById,\n columnStyle,\n widths,\n }}\n />\n {(topRows.length > 0 || pinnedTopRowData.length > 0) && (\n <div\n role=\"rowgroup\"\n className=\"mtx-sticky mtx-z-20\"\n style={{ top: isPrinting ? undefined : headerHeight, position: isPrinting ? \"relative\" : \"sticky\" }}\n >\n {pinnedTopRowData.map((row, index) => renderRow(row, `__summary_top_${index}`, index, undefined, \"top\"))}\n {topRows.map(row => renderRow(row.original, row.id, row.index, row, \"top\"))}\n </div>\n )}\n <div role=\"rowgroup\">\n {useVirtualRows ? (\n <div style={{ height: virtualizer.getTotalSize(), position: \"relative\", width: totalWidth, minWidth: \"100%\" }}>\n {virtualItems.map(item => {\n const row = centerRows[item.index];\n return (\n <div\n key={row.id}\n style={{ position: \"absolute\", top: 0, width: \"100%\", transform: `translateY(${item.start - headerHeight - topHeight}px)` }}\n >\n {renderRow(row.original, row.id, rowIndices.get(row.original) ?? row.index, row)}\n </div>\n );\n })}\n </div>\n ) : (\n centerRows.map(row => renderRow(row.original, row.id, rowIndices.get(row.original) ?? row.index, row))\n )}\n </div>\n {(bottomRows.length > 0 || pinnedBottomRowData.length > 0) && (\n <div role=\"rowgroup\" className=\"mtx-sticky mtx-bottom-0 mtx-z-20\" style={{ position: isPrinting ? \"relative\" : \"sticky\" }}>\n {bottomRows.map(row => renderRow(row.original, row.id, row.index, row, \"bottom\"))}\n {pinnedBottomRowData.map((row, index) => renderRow(row, `__summary_bottom_${index}`, index, undefined, \"bottom\"))}\n </div>\n )}\n {(loading || (!centerRows.length && !topRows.length && !bottomRows.length)) && (\n <div\n role=\"status\"\n className={cn(\n \"mtx-flex mtx-items-center mtx-justify-center mtx-p-6 mtx-text-text-300\",\n loading && \"mtx-absolute mtx-top-0 mtx-start-0 mtx-z-50 mtx-h-full mtx-w-full mtx-bg-gray-100/25\",\n )}\n >\n {loading ? loadingContent : emptyContent}\n </div>\n )}\n </div>\n {pagination && !isPrinting && <DataTablePagination table={table} paginationPageSizeSelector={paginationPageSizeSelector} />}\n </div>\n </DragDropProvider>\n );\n}\n\nconst DataTableContent = React.forwardRef(DataTableContentInner) as <T extends object>(\n props: DataTableContentProps<T> & { ref?: React.ForwardedRef<DataTableApi<T>> },\n) => React.ReactElement;\n(DataTableContent as { displayName?: string }).displayName = \"DataTableContent\";\n\nexport { DataTableContent };\n"],"names":["emptyRows","emptyColumn","DataTableContentInner","rowData","columnDefs","defaultColDef","getRowId","onReady","rowSelection","renderSubComponent","getRowCanExpand","onSelectionChanged","quickFilterText","onQuickFilterTextChange","externalFilter","loading","emptyContent","loadingContent","rowHeight","headerHeight","getRowClass","rowClassRules","pinnedTopRowData","pinnedBottomRowData","pagination","paginationPageSize","paginationPageSizeSelector","virtualize","overscan","domLayout","suppressHorizontalScroll","editType","suppressClickEdit","readOnlyEdit","validateRow","onEditCommit","onEditRequest","onEditCancel","onRowClick","tableOptions","containerStyle","className","style","props","forwardedRef","setApi","search","hasSearch","setSearch","setCounts","useDataTable","alignment","React","DataTableAlignmentContext","detailId","viewportRef","contentRef","viewportWidth","setViewportWidth","printing","setPrinting","columnDrag","setColumnDrag","focusedCell","setFocusedCell","patches","setPatches","edit","setEdit","initialSearch","editRef","configRef","updateEdit","next","isPrinting","naturalHeight","searchText","showCheckboxes","showExpanders","expanderWidth","selectionWidth","table","definitionsById","sourcesById","data","rowIndices","resolveId","useDataTableInstance","visibleColumns","column","from","to","widths","totalWidth","sum","topRows","bottomRows","pinnedIds","row","centerRows","isDetailExpanded","hasExpandedDetails","useVirtualRows","topHeight","virtualizer","useVirtualizer","index","runtime","columnDragHandlers","useDataTableColumnDrag","api","useDataTableApi","previous","readyRef","selectionCallback","current","selected","selectedCount","pinnedCount","element","resize","observer","viewports","entries","id","patch","selection","pinning","top","bottom","navigableRows","displayedIds","_","expandedIds","displayedRowCount","displayedIndices","virtualItems","renderedIds","item","activeCell","getActiveDataTableCell","useDataTableMotion","columnStyle","header","pinned","region","start","end","handleCellKeyDown","event","rowIndex","columnIndex","nextRow","horizontalStep","nextColumn","targetRow","renderRow","rowId","jsx","DataTableRowView","selectionRows","selectedInScope","jsxs","DragDropProvider","dataTableColumnSensors","DragOverlay","source","definition","cn","Button","DataTableHeader","DataTablePagination","DataTableContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"datatablecontent.es.js","sources":["../src/components/data-table/DataTableContent.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { DragDropProvider, DragOverlay } from \"@dnd-kit/react\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../button/Button\";\nimport { DataTableAlignmentContext, useDataTable } from \"./DataTableContext\";\nimport { dataTableColumnSensors } from \"./dataTableColumnDrag\";\nimport { getActiveDataTableCell } from \"./dataTableModel\";\nimport { useDataTableInstance } from \"./useDataTableInstance\";\nimport { DataTableHeader } from \"./DataTableHeader\";\nimport { DataTablePagination } from \"./DataTablePagination\";\nimport { DataTableRowView } from \"./DataTableRowView\";\nimport { useDataTableColumnDrag } from \"./useDataTableColumnDrag\";\nimport { useDataTableMotion } from \"./useDataTableMotion\";\nimport { useDataTableApi, type DataTableRuntime } from \"./useDataTableApi\";\nimport type { DataTableEditSession } from \"./dataTableEditing\";\nimport type { DataTableApi, DataTableContentProps, DataTableFeatures, DataTableRow } from \"./DataTable.types\";\n\nconst emptyRows: never[] = [];\nconst emptyColumn: Record<string, never> = {};\n\nfunction DataTableContentInner<T extends object>(\n {\n rowData,\n columnDefs,\n defaultColDef = emptyColumn,\n getRowId,\n onReady,\n rowSelection,\n renderSubComponent,\n getRowCanExpand,\n onSelectionChanged,\n quickFilterText,\n onQuickFilterTextChange,\n externalFilter,\n loading = false,\n emptyContent = \"No rows to display\",\n loadingContent = \"Loading…\",\n rowHeight = 40,\n headerHeight = 40,\n getRowClass,\n rowClassRules,\n pinnedTopRowData = emptyRows,\n pinnedBottomRowData = emptyRows,\n pagination = false,\n paginationPageSize = 25,\n paginationPageSizeSelector = [10, 25, 50, 100],\n virtualize = true,\n overscan = 8,\n domLayout = \"normal\",\n suppressHorizontalScroll = false,\n editType = \"cell\",\n suppressClickEdit = false,\n readOnlyEdit = false,\n validateRow,\n onEditCommit,\n onEditRequest,\n onEditCancel,\n onRowClick,\n tableOptions,\n containerStyle,\n className,\n style,\n ...props\n }: DataTableContentProps<T>,\n forwardedRef: React.ForwardedRef<DataTableApi<T>>,\n) {\n \"use no memo\";\n const { setApi, search, hasSearch, setSearch, setCounts } = useDataTable<T>();\n const alignment = React.useContext(DataTableAlignmentContext);\n const detailId = React.useId();\n const viewportRef = React.useRef<HTMLDivElement>(null);\n const headerViewportRef = React.useRef<HTMLDivElement>(null);\n const synchronizedHeaderScroll = React.useRef<number | null>(null);\n const contentRef = React.useRef<HTMLDivElement>(null);\n const [viewportWidth, setViewportWidth] = React.useState(0);\n const [printing, setPrinting] = React.useState(false);\n const [columnDrag, setColumnDrag] = React.useState<{ sourceId: string; targetId: string } | null>(null);\n const [focusedCell, setFocusedCell] = React.useState<{ rowId: string; columnId: string } | null>(null);\n const [patches, setPatches] = React.useState<Record<string, { source: T; data: T }>>({});\n const [edit, setEdit] = React.useState<DataTableEditSession<T> | null>(null);\n const [initialSearch] = React.useState(() => tableOptions?.initialState?.globalFilter ?? \"\");\n const editRef = React.useRef(edit);\n const configRef = React.useRef({ columnDefs, validateRow, readOnlyEdit, onEditCommit, onEditRequest, onEditCancel });\n configRef.current = { columnDefs, validateRow, readOnlyEdit, onEditCommit, onEditRequest, onEditCancel };\n const updateEdit = React.useCallback((next: DataTableEditSession<T> | null) => {\n editRef.current = next;\n setEdit(next);\n }, []);\n const isPrinting = printing || domLayout === \"print\";\n const naturalHeight = isPrinting || domLayout === \"autoHeight\";\n const searchText = quickFilterText ?? tableOptions?.state?.globalFilter ?? (hasSearch ? search : initialSearch);\n const showCheckboxes = !!rowSelection && rowSelection.checkboxes !== false && !isPrinting;\n const showExpanders = !!renderSubComponent && !isPrinting;\n const expanderWidth = showExpanders ? 44 : 0;\n const selectionWidth = (showCheckboxes ? 44 : 0) + expanderWidth;\n const { table, definitionsById, sourcesById, data, rowIndices, resolveId } = useDataTableInstance({\n rowData,\n columnDefs,\n defaultColDef,\n getRowId,\n paginationPageSize,\n tableOptions,\n externalFilter,\n rowSelection,\n pagination,\n renderSubComponent,\n getRowCanExpand,\n onQuickFilterTextChange,\n patches,\n alignment,\n isPrinting,\n viewportWidth,\n selectionWidth,\n searchText,\n setSearch,\n });\n\n const visibleColumns = [...table.getStartVisibleLeafColumns(), ...table.getCenterVisibleLeafColumns(), ...table.getEndVisibleLeafColumns()].filter(\n column => column.id !== \"__external\" && (!isPrinting || !definitionsById.get(column.id)?.hideInPrint),\n );\n // Preview locally so canceled drags never update controlled or aligned table state.\n if (columnDrag) {\n const from = visibleColumns.findIndex(column => column.id === columnDrag.sourceId);\n const to = visibleColumns.findIndex(column => column.id === columnDrag.targetId);\n if (from >= 0 && to >= 0) visibleColumns.splice(to, 0, visibleColumns.splice(from, 1)[0]);\n }\n const widths = new Map(visibleColumns.map(column => [column.id, column.getSize()]));\n const totalWidth = selectionWidth + visibleColumns.reduce((sum, column) => sum + widths.get(column.id)!, 0);\n const topRows = table.getTopRows();\n const bottomRows = table.getBottomRows();\n const pinnedIds = new Set([...topRows, ...bottomRows].map(row => row.id));\n const centerRows = (isPrinting ? table.getPrePaginatedRowModel().rows : table.getRowModel().rows).filter(row => !pinnedIds.has(row.id));\n const isDetailExpanded = (row: DataTableRow<T>) => !!renderSubComponent && row.getCanExpand() && row.getIsExpanded();\n // Detail panels can have arbitrary height. Resume fixed-height virtualization when all visible panels close.\n const hasExpandedDetails = [...topRows, ...centerRows, ...bottomRows].some(isDetailExpanded);\n const useVirtualRows = virtualize && !naturalHeight && !hasExpandedDetails;\n const topHeight = (topRows.length + pinnedTopRowData.length) * rowHeight;\n // This renderer opts out of React Compiler above; Virtual exposes a mutable measurement instance.\n // eslint-disable-next-line react-hooks/incompatible-library\n const virtualizer = useVirtualizer({\n count: centerRows.length,\n getScrollElement: () => viewportRef.current,\n estimateSize: () => rowHeight,\n getItemKey: index => centerRows[index].id,\n overscan,\n scrollMargin: topHeight,\n enabled: useVirtualRows,\n useFlushSync: false,\n });\n\n const runtime = React.useRef<DataTableRuntime<T>>({\n table,\n definitionsById,\n centerRows,\n virtualizer,\n resolveId,\n rowIndices,\n sourcesById,\n useVirtualRows,\n pagination,\n serverPagination: tableOptions?.manualPagination === true,\n });\n runtime.current = {\n table,\n definitionsById,\n centerRows,\n virtualizer,\n resolveId,\n rowIndices,\n sourcesById,\n useVirtualRows,\n pagination,\n serverPagination: tableOptions?.manualPagination === true,\n };\n const columnDragHandlers = useDataTableColumnDrag({ runtime, viewportRef, contentRef, setColumnDrag });\n const api = useDataTableApi({ runtime, editRef, configRef, updateEdit, setPatches, contentRef, viewportRef, setPrinting });\n React.useImperativeHandle(forwardedRef, () => api, [api]);\n\n React.useEffect(() => {\n setApi(api);\n return () => setApi(previous => (previous === api ? null : previous));\n }, [api, setApi]);\n const readyRef = React.useRef(onReady);\n readyRef.current = onReady;\n React.useEffect(() => {\n readyRef.current?.(api);\n }, [api]);\n const selectionCallback = React.useRef(onSelectionChanged);\n selectionCallback.current = onSelectionChanged;\n React.useEffect(() => {\n const current = runtime.current.table;\n const selected = current.getSelectedRowModel().rows.map(row => row.original);\n selectionCallback.current?.(selected, current.getSelectedRowIds());\n }, [table.state.rowSelection, data]);\n React.useEffect(() => {\n const current = runtime.current.table;\n const selectedCount = current.getSelectedRowIds().length;\n const pinnedCount = (current.state.rowPinning.top?.length ?? 0) + (current.state.rowPinning.bottom?.length ?? 0);\n setCounts(previous =>\n previous.selectedCount === selectedCount && previous.pinnedCount === pinnedCount ? previous : { selectedCount, pinnedCount },\n );\n }, [table.state.rowSelection, table.state.rowPinning, setCounts]);\n React.useEffect(() => {\n const element = viewportRef.current;\n if (!element) return;\n const resize = () => setViewportWidth(element.clientWidth);\n resize();\n const observer = new ResizeObserver(resize);\n observer.observe(element);\n return () => observer.disconnect();\n }, []);\n React.useEffect(() => {\n const element = viewportRef.current;\n const viewports = alignment?.viewports.current;\n if (!element || !viewports) return;\n viewports.add(element);\n return () => {\n viewports.delete(element);\n };\n }, [alignment?.viewports]);\n React.useEffect(() => {\n if (editRef.current && sourcesById.get(editRef.current.rowId) !== editRef.current.source) {\n api.stopEditing(true);\n }\n setPatches(previous => {\n const entries = Object.entries(previous).filter(([id, patch]) => sourcesById.get(id) === patch.source);\n return entries.length === Object.keys(previous).length ? previous : Object.fromEntries(entries);\n });\n const current = runtime.current.table;\n if (!runtime.current.serverPagination) {\n // Locally owned datasets can discard deleted identities. Server pages retain unloaded selection IDs.\n const selection = current.atoms.rowSelection.get();\n const entries = Object.entries(selection).filter(([id]) => sourcesById.has(id));\n if (entries.length !== Object.keys(selection).length) current.setRowSelection(Object.fromEntries(entries));\n const pinning = current.atoms.rowPinning.get();\n const top = pinning.top?.filter(id => sourcesById.has(id));\n const bottom = pinning.bottom?.filter(id => sourcesById.has(id));\n if (top?.length !== pinning.top?.length || bottom?.length !== pinning.bottom?.length) current.setRowPinning({ top, bottom });\n }\n }, [sourcesById, api]);\n\n const navigableRows = [...topRows, ...centerRows, ...bottomRows];\n const displayedIds = [\n ...pinnedTopRowData.map((_, index) => `__summary_top_${index}`),\n ...topRows.map(row => row.id),\n ...centerRows.map(row => row.id),\n ...bottomRows.map(row => row.id),\n ...pinnedBottomRowData.map((_, index) => `__summary_bottom_${index}`),\n ];\n const expandedIds = new Set(navigableRows.filter(isDetailExpanded).map(row => row.id));\n let displayedRowCount = 0;\n const displayedIndices = new Map(\n displayedIds.map(id => {\n const index = displayedRowCount;\n displayedRowCount += expandedIds.has(id) ? 2 : 1;\n return [id, index];\n }),\n );\n const virtualItems = useVirtualRows ? virtualizer.getVirtualItems() : [];\n const renderedIds = useVirtualRows\n ? [\n ...displayedIds.slice(0, pinnedTopRowData.length + topRows.length),\n ...virtualItems.map(item => centerRows[item.index].id),\n ...bottomRows.map(row => row.id),\n ...pinnedBottomRowData.map((_, index) => `__summary_bottom_${index}`),\n ]\n : displayedIds;\n const activeCell = getActiveDataTableCell(\n focusedCell,\n renderedIds,\n visibleColumns.map(column => column.id),\n );\n\n useDataTableMotion(viewportRef, JSON.stringify(centerRows.map(row => row.id)), JSON.stringify(visibleColumns.map(column => column.id)), isPrinting);\n\n const columnStyle = (column: Column<DataTableFeatures, T>, header = false): React.CSSProperties => {\n const pinned = isPrinting ? false : column.getIsPinned();\n const region = visibleColumns.filter(item => item.getIsPinned() === pinned);\n const index = region.findIndex(item => item.id === column.id);\n const start = region.slice(0, index).reduce((sum, item) => sum + widths.get(item.id)!, selectionWidth);\n const end = region.slice(index + 1).reduce((sum, item) => sum + widths.get(item.id)!, 0);\n return {\n width: widths.get(column.id),\n flexShrink: 0,\n position: pinned ? \"sticky\" : \"relative\",\n insetInlineStart: pinned === \"start\" ? start : undefined,\n insetInlineEnd: pinned === \"end\" ? end : undefined,\n zIndex: pinned ? 2 : undefined,\n background: pinned ? (header ? \"oklch(var(--mtx-primary-50))\" : \"inherit\") : undefined,\n };\n };\n\n const handleCellKeyDown = (event: React.KeyboardEvent, row: DataTableRow<T>, column: Column<DataTableFeatures, T>) => {\n if (event.defaultPrevented) return;\n if (event.key === \"Escape\" && editRef.current) {\n event.preventDefault();\n api.stopEditing(true);\n return;\n }\n if (event.key === \"Enter\" && editRef.current) {\n // Editors own activation and multiline input; plain text/number inputs still commit on Enter.\n if ((event.target as HTMLElement).closest(\"button,select,textarea,[contenteditable=true],[role=combobox],[role=listbox]\")) return;\n event.preventDefault();\n api.stopEditing();\n return;\n }\n const target = event.target as HTMLElement;\n if (target.closest(\"input,select,textarea,button,[contenteditable=true]\")) return;\n if (event.key === \"Enter\" || event.key === \"F2\") {\n event.preventDefault();\n if (editType === \"fullRow\") api.startEditingRow(row.id);\n else api.startEditingCell({ rowId: row.id, columnId: column.id });\n return;\n }\n const rowIndex = navigableRows.findIndex(item => item.id === row.id);\n const columnIndex = visibleColumns.findIndex(item => item.id === column.id);\n const nextRow = event.key === \"ArrowDown\" ? rowIndex + 1 : event.key === \"ArrowUp\" ? rowIndex - 1 : rowIndex;\n const horizontalStep = getComputedStyle(event.currentTarget).direction === \"rtl\" ? -1 : 1;\n const nextColumn =\n event.key === \"ArrowRight\" ? columnIndex + horizontalStep : event.key === \"ArrowLeft\" ? columnIndex - horizontalStep : columnIndex;\n if ([\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"].includes(event.key) && navigableRows[nextRow] && visibleColumns[nextColumn]) {\n event.preventDefault();\n const targetRow = navigableRows[nextRow];\n if (!pinnedIds.has(targetRow.id)) api.scrollToRow(targetRow.id);\n api.focusCell(targetRow.id, visibleColumns[nextColumn].id);\n }\n };\n\n const renderRow = (data: T, rowId: string, index: number, row?: DataTableRow<T>, pinned?: \"top\" | \"bottom\") => (\n <DataTableRowView\n key={rowId}\n {...{\n data,\n rowId,\n index,\n row,\n pinned,\n edit,\n editRef,\n updateEdit,\n api,\n table,\n detailId,\n displayedIndices,\n rowSelection,\n rowHeight,\n totalWidth,\n getRowClass,\n rowClassRules,\n onRowClick,\n showExpanders,\n expanderWidth,\n showCheckboxes,\n visibleColumns,\n definitionsById,\n activeCell,\n setFocusedCell,\n columnStyle,\n handleCellKeyDown,\n suppressClickEdit,\n editType,\n renderSubComponent,\n isDetailExpanded,\n }}\n />\n );\n\n const selectionRows = (\n rowSelection?.selectAll === \"all\"\n ? table.getCoreRowModel()\n : rowSelection?.selectAll === \"currentPage\"\n ? table.getRowModel()\n : table.getFilteredRowModel()\n ).rows.filter(row => row.getCanSelect());\n const selectedInScope = selectionRows.filter(row => row.getIsSelected()).length;\n return (\n <DragDropProvider sensors={dataTableColumnSensors} {...columnDragHandlers}>\n <DragOverlay dropAnimation={null} style={{ position: \"fixed\", pointerEvents: \"none\" }}>\n {source => {\n const definition = definitionsById.get(source.data.columnId);\n return (\n <div className=\"mtx-rounded-sm mtx-border mtx-border-gray-200 mtx-bg-primary-50 mtx-px-3 mtx-py-2 mtx-text-xs mtx-font-bold mtx-shadow-md\">\n {definition?.headerName ?? source.data.columnId}\n </div>\n );\n }}\n </DragOverlay>\n <div\n ref={contentRef}\n data-data-table-content=\"\"\n data-print-layout={isPrinting || undefined}\n className={cn(\"mtx-relative mtx-flex mtx-min-h-0 mtx-flex-1 mtx-flex-col mtx-rounded-b-lg\", className)}\n style={style}\n {...props}\n >\n {edit && (\n <div data-print-hidden=\"\" className=\"mtx-flex mtx-shrink-0 mtx-items-center mtx-gap-2 mtx-border-b mtx-border-gray-200 mtx-p-2\">\n <Button type=\"button\" size=\"sm\" onClick={() => api.stopEditing()}>\n Save\n </Button>\n <Button type=\"button\" size=\"sm\" variant=\"text\" onClick={() => api.stopEditing(true)}>\n Cancel\n </Button>\n {edit.errors.length > 0 && (\n <span role=\"alert\" className=\"mtx-text-danger\">\n {edit.errors.join(\". \")}\n </span>\n )}\n </div>\n )}\n <div\n role=\"grid\"\n aria-label={props[\"aria-label\"] ?? \"Data table\"}\n aria-busy={loading}\n aria-rowcount={displayedRowCount + 1}\n aria-colcount={visibleColumns.length + (showCheckboxes ? 1 : 0) + (showExpanders ? 1 : 0)}\n aria-multiselectable={rowSelection?.mode === \"multiRow\" || undefined}\n className=\"mtx-flex mtx-min-h-0 mtx-flex-1 mtx-flex-col\"\n >\n <div className=\"mtx-shrink-0 mtx-bg-primary-50\">\n <div\n ref={headerViewportRef}\n style={{ overflow: isPrinting ? \"visible\" : \"hidden\", width: isPrinting ? \"100%\" : viewportWidth || \"100%\" }}\n onScroll={event => {\n const synchronized = synchronizedHeaderScroll.current === event.currentTarget.scrollLeft;\n synchronizedHeaderScroll.current = null;\n if (synchronized) return;\n if (!isPrinting && viewportRef.current) viewportRef.current.scrollLeft = event.currentTarget.scrollLeft;\n }}\n >\n <DataTableHeader\n {...{\n table,\n api,\n headerHeight,\n totalWidth,\n isPrinting,\n showExpanders,\n expanderWidth,\n showCheckboxes,\n rowSelection,\n selectionRows,\n selectedInScope,\n visibleColumns,\n definitionsById,\n columnStyle,\n widths,\n }}\n />\n </div>\n </div>\n <div\n ref={viewportRef}\n data-data-table-viewport=\"\"\n className=\"mtx-relative mtx-min-h-0 mtx-flex-1 mtx-rounded-b-lg\"\n style={{\n ...containerStyle,\n overflow: naturalHeight ? \"visible\" : (containerStyle?.overflow ?? \"auto\"),\n overflowX: isPrinting ? \"visible\" : suppressHorizontalScroll ? \"hidden\" : containerStyle?.overflowX,\n }}\n onScroll={event => {\n const viewport = event.currentTarget;\n const header = headerViewportRef.current;\n if (header && header.scrollLeft !== viewport.scrollLeft) {\n header.scrollLeft = viewport.scrollLeft;\n synchronizedHeaderScroll.current = header.scrollLeft;\n }\n const synchronized = alignment?.synchronizedScrolls.current.get(viewport) === viewport.scrollLeft;\n alignment?.synchronizedScrolls.current.delete(viewport);\n if (alignment && !isPrinting && !synchronized)\n for (const element of alignment.viewports.current) {\n if (element !== viewport && element.scrollLeft !== viewport.scrollLeft) {\n element.scrollLeft = viewport.scrollLeft;\n alignment.synchronizedScrolls.current.set(element, element.scrollLeft);\n }\n }\n }}\n >\n {(topRows.length > 0 || pinnedTopRowData.length > 0) && (\n <div\n role=\"rowgroup\"\n className=\"mtx-sticky mtx-z-20\"\n style={{ top: isPrinting ? undefined : 0, position: isPrinting ? \"relative\" : \"sticky\" }}\n >\n {pinnedTopRowData.map((row, index) => renderRow(row, `__summary_top_${index}`, index, undefined, \"top\"))}\n {topRows.map(row => renderRow(row.original, row.id, row.index, row, \"top\"))}\n </div>\n )}\n <div role=\"rowgroup\">\n {useVirtualRows ? (\n <div style={{ height: virtualizer.getTotalSize(), position: \"relative\", width: totalWidth, minWidth: \"100%\" }}>\n {virtualItems.map(item => {\n const row = centerRows[item.index];\n return (\n <div key={row.id} style={{ position: \"absolute\", top: 0, width: \"100%\", transform: `translateY(${item.start - topHeight}px)` }}>\n {renderRow(row.original, row.id, rowIndices.get(row.original) ?? row.index, row)}\n </div>\n );\n })}\n </div>\n ) : (\n centerRows.map(row => renderRow(row.original, row.id, rowIndices.get(row.original) ?? row.index, row))\n )}\n </div>\n {(bottomRows.length > 0 || pinnedBottomRowData.length > 0) && (\n <div role=\"rowgroup\" className=\"mtx-sticky mtx-bottom-0 mtx-z-20\" style={{ position: isPrinting ? \"relative\" : \"sticky\" }}>\n {bottomRows.map(row => renderRow(row.original, row.id, row.index, row, \"bottom\"))}\n {pinnedBottomRowData.map((row, index) => renderRow(row, `__summary_bottom_${index}`, index, undefined, \"bottom\"))}\n </div>\n )}\n {(loading || (!centerRows.length && !topRows.length && !bottomRows.length)) && (\n <div\n role=\"status\"\n className={cn(\n \"mtx-flex mtx-items-center mtx-justify-center mtx-p-6 mtx-text-text-300\",\n loading && \"mtx-absolute mtx-top-0 mtx-start-0 mtx-z-50 mtx-h-full mtx-w-full mtx-bg-gray-100/25\",\n )}\n >\n {loading ? loadingContent : emptyContent}\n </div>\n )}\n </div>\n </div>\n {pagination && !isPrinting && <DataTablePagination table={table} paginationPageSizeSelector={paginationPageSizeSelector} />}\n </div>\n </DragDropProvider>\n );\n}\n\nconst DataTableContent = React.forwardRef(DataTableContentInner) as <T extends object>(\n props: DataTableContentProps<T> & { ref?: React.ForwardedRef<DataTableApi<T>> },\n) => React.ReactElement;\n(DataTableContent as { displayName?: string }).displayName = \"DataTableContent\";\n\nexport { DataTableContent };\n"],"names":["emptyRows","emptyColumn","DataTableContentInner","rowData","columnDefs","defaultColDef","getRowId","onReady","rowSelection","renderSubComponent","getRowCanExpand","onSelectionChanged","quickFilterText","onQuickFilterTextChange","externalFilter","loading","emptyContent","loadingContent","rowHeight","headerHeight","getRowClass","rowClassRules","pinnedTopRowData","pinnedBottomRowData","pagination","paginationPageSize","paginationPageSizeSelector","virtualize","overscan","domLayout","suppressHorizontalScroll","editType","suppressClickEdit","readOnlyEdit","validateRow","onEditCommit","onEditRequest","onEditCancel","onRowClick","tableOptions","containerStyle","className","style","props","forwardedRef","setApi","search","hasSearch","setSearch","setCounts","useDataTable","alignment","React","DataTableAlignmentContext","detailId","viewportRef","headerViewportRef","synchronizedHeaderScroll","contentRef","viewportWidth","setViewportWidth","printing","setPrinting","columnDrag","setColumnDrag","focusedCell","setFocusedCell","patches","setPatches","edit","setEdit","initialSearch","editRef","configRef","updateEdit","next","isPrinting","naturalHeight","searchText","showCheckboxes","showExpanders","expanderWidth","selectionWidth","table","definitionsById","sourcesById","data","rowIndices","resolveId","useDataTableInstance","visibleColumns","column","from","to","widths","totalWidth","sum","topRows","bottomRows","pinnedIds","row","centerRows","isDetailExpanded","hasExpandedDetails","useVirtualRows","topHeight","virtualizer","useVirtualizer","index","runtime","columnDragHandlers","useDataTableColumnDrag","api","useDataTableApi","previous","readyRef","selectionCallback","current","selected","selectedCount","pinnedCount","element","resize","observer","viewports","entries","id","patch","selection","pinning","top","bottom","navigableRows","displayedIds","_","expandedIds","displayedRowCount","displayedIndices","virtualItems","renderedIds","item","activeCell","getActiveDataTableCell","useDataTableMotion","columnStyle","header","pinned","region","start","end","handleCellKeyDown","event","rowIndex","columnIndex","nextRow","horizontalStep","nextColumn","targetRow","renderRow","rowId","jsx","DataTableRowView","selectionRows","selectedInScope","jsxs","DragDropProvider","dataTableColumnSensors","DragOverlay","source","definition","cn","Button","synchronized","DataTableHeader","viewport","DataTablePagination","DataTableContent"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datatablecontext.es.js","sources":["../src/components/data-table/DataTableContext.ts"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\n\nimport type { DataTableApi, DataTableState } from \"./DataTable.types\";\n\ntype DataTableContextValue = {\n api: DataTableApi<any> | null;\n setApi: React.Dispatch<React.SetStateAction<DataTableApi<any> | null>>;\n search: string | undefined;\n setSearch: (value: string) => void;\n selectedCount: number;\n pinnedCount: number;\n setCounts: React.Dispatch<React.SetStateAction<{ selectedCount: number; pinnedCount: number }>>;\n};\n\nexport const DataTableContext = React.createContext<DataTableContextValue | null>(null);\n\nexport function useDataTable<T extends object = Record<string, unknown>>() {\n const context = React.useContext(DataTableContext);\n if (!context) throw new Error(\"DataTable components must be used within <DataTable>.\");\n // An untouched search can use the content's initial filter; an explicit empty search clears it.\n return { ...context, search: context.search ?? \"\", hasSearch: context.search !== undefined, api: context.api as DataTableApi<T> | null };\n}\n\nexport type AlignmentState = Pick<DataTableState, \"columnSizing\" | \"columnOrder\" | \"columnPinning\" | \"columnVisibility\">;\ntype AlignmentContextValue = {\n state: Partial<AlignmentState>;\n setState: React.Dispatch<React.SetStateAction<Partial<AlignmentState>>>;\n viewports: React.MutableRefObject<Set<HTMLDivElement>>;\n};\n\nexport const DataTableAlignmentContext = React.createContext<AlignmentContextValue | null>(null);\n"],"names":["DataTableContext","React","useDataTable","context","DataTableAlignmentContext"],"mappings":";AAgBO,MAAMA,IAAmBC,EAAM,cAA4C,IAAI;AAE/E,SAASC,IAA2D;AACzE,QAAMC,IAAUF,EAAM,WAAWD,CAAgB;AACjD,MAAI,CAACG,EAAS,OAAM,IAAI,MAAM,uDAAuD;AAErF,SAAO,EAAE,GAAGA,GAAS,QAAQA,EAAQ,UAAU,IAAI,WAAWA,EAAQ,WAAW,QAAW,KAAKA,EAAQ,IAAA;AAC3G;
|
|
1
|
+
{"version":3,"file":"datatablecontext.es.js","sources":["../src/components/data-table/DataTableContext.ts"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\n\nimport type { DataTableApi, DataTableState } from \"./DataTable.types\";\n\ntype DataTableContextValue = {\n api: DataTableApi<any> | null;\n setApi: React.Dispatch<React.SetStateAction<DataTableApi<any> | null>>;\n search: string | undefined;\n setSearch: (value: string) => void;\n selectedCount: number;\n pinnedCount: number;\n setCounts: React.Dispatch<React.SetStateAction<{ selectedCount: number; pinnedCount: number }>>;\n};\n\nexport const DataTableContext = React.createContext<DataTableContextValue | null>(null);\n\nexport function useDataTable<T extends object = Record<string, unknown>>() {\n const context = React.useContext(DataTableContext);\n if (!context) throw new Error(\"DataTable components must be used within <DataTable>.\");\n // An untouched search can use the content's initial filter; an explicit empty search clears it.\n return { ...context, search: context.search ?? \"\", hasSearch: context.search !== undefined, api: context.api as DataTableApi<T> | null };\n}\n\nexport type AlignmentState = Pick<DataTableState, \"columnSizing\" | \"columnOrder\" | \"columnPinning\" | \"columnVisibility\">;\ntype AlignmentContextValue = {\n state: Partial<AlignmentState>;\n setState: React.Dispatch<React.SetStateAction<Partial<AlignmentState>>>;\n viewports: React.MutableRefObject<Set<HTMLDivElement>>;\n synchronizedScrolls: React.MutableRefObject<WeakMap<HTMLDivElement, number>>;\n};\n\nexport const DataTableAlignmentContext = React.createContext<AlignmentContextValue | null>(null);\n"],"names":["DataTableContext","React","useDataTable","context","DataTableAlignmentContext"],"mappings":";AAgBO,MAAMA,IAAmBC,EAAM,cAA4C,IAAI;AAE/E,SAASC,IAA2D;AACzE,QAAMC,IAAUF,EAAM,WAAWD,CAAgB;AACjD,MAAI,CAACG,EAAS,OAAM,IAAI,MAAM,uDAAuD;AAErF,SAAO,EAAE,GAAGA,GAAS,QAAQA,EAAQ,UAAU,IAAI,WAAWA,EAAQ,WAAW,QAAW,KAAKA,EAAQ,IAAA;AAC3G;AAUO,MAAMC,IAA4BH,EAAM,cAA4C,IAAI;"}
|
|
@@ -1,97 +1,105 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { Checkbox as
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
1
|
+
import { jsxs as x, jsx as i } from "react/jsx-runtime";
|
|
2
|
+
import { Checkbox as C } from "./checkbox.es.js";
|
|
3
|
+
import { cn as f } from "./utils.es.js";
|
|
4
|
+
import { DataTableColumnHeader as S } from "./datatablecolumnheader.es.js";
|
|
5
|
+
import { DataTableColumnMenu as v } from "./datatablecolumnmenu.es.js";
|
|
6
|
+
function I({
|
|
6
7
|
table: d,
|
|
7
|
-
api:
|
|
8
|
+
api: h,
|
|
8
9
|
headerHeight: c,
|
|
9
|
-
totalWidth:
|
|
10
|
-
isPrinting:
|
|
11
|
-
showExpanders:
|
|
12
|
-
expanderWidth:
|
|
13
|
-
showCheckboxes:
|
|
14
|
-
rowSelection:
|
|
15
|
-
selectionRows:
|
|
16
|
-
selectedInScope:
|
|
17
|
-
visibleColumns:
|
|
10
|
+
totalWidth: b,
|
|
11
|
+
isPrinting: m,
|
|
12
|
+
showExpanders: y,
|
|
13
|
+
expanderWidth: n,
|
|
14
|
+
showCheckboxes: p,
|
|
15
|
+
rowSelection: o,
|
|
16
|
+
selectionRows: s,
|
|
17
|
+
selectedInScope: g,
|
|
18
|
+
visibleColumns: u,
|
|
18
19
|
definitionsById: k,
|
|
19
|
-
columnStyle:
|
|
20
|
-
widths:
|
|
20
|
+
columnStyle: w,
|
|
21
|
+
widths: N
|
|
21
22
|
}) {
|
|
22
|
-
return /* @__PURE__ */
|
|
23
|
+
return /* @__PURE__ */ x(
|
|
23
24
|
"div",
|
|
24
25
|
{
|
|
25
26
|
role: "row",
|
|
26
27
|
className: "mtx-sticky mtx-top-0 mtx-z-30 mtx-flex mtx-rounded-t-[inherit] mtx-border-b mtx-border-gray-200 mtx-bg-primary-50 mtx-font-bold",
|
|
27
|
-
style: { height: c, width:
|
|
28
|
+
style: { height: c, width: b, minWidth: "100%", position: m ? "relative" : "sticky" },
|
|
28
29
|
children: [
|
|
29
|
-
|
|
30
|
+
y && /* @__PURE__ */ i(
|
|
30
31
|
"div",
|
|
31
32
|
{
|
|
32
33
|
role: "columnheader",
|
|
33
34
|
"aria-label": "Row details",
|
|
34
35
|
className: "mtx-sticky mtx-start-0 mtx-z-10 mtx-shrink-0 mtx-bg-primary-50",
|
|
35
|
-
style: { width:
|
|
36
|
+
style: { width: n }
|
|
36
37
|
}
|
|
37
38
|
),
|
|
38
|
-
|
|
39
|
+
p && /* @__PURE__ */ i(
|
|
39
40
|
"div",
|
|
40
41
|
{
|
|
41
42
|
role: "columnheader",
|
|
42
43
|
className: "mtx-sticky mtx-start-0 mtx-z-10 mtx-flex mtx-shrink-0 mtx-items-center mtx-justify-center mtx-bg-primary-50",
|
|
43
|
-
style: { width: 44, insetInlineStart:
|
|
44
|
-
children:
|
|
45
|
-
|
|
44
|
+
style: { width: 44, insetInlineStart: n },
|
|
45
|
+
children: o?.mode === "multiRow" && /* @__PURE__ */ i(
|
|
46
|
+
C,
|
|
46
47
|
{
|
|
47
48
|
"aria-label": "Select all rows",
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
className: "mtx-bg-gray-0",
|
|
50
|
+
disabled: !s.length,
|
|
51
|
+
checked: s.length > 0 && g === s.length ? !0 : g > 0 ? "indeterminate" : !1,
|
|
50
52
|
onCheckedChange: (e) => {
|
|
51
|
-
e === !0 ?
|
|
52
|
-
(
|
|
53
|
+
e === !0 ? h.selectAll(o.selectAll) : d.setRowSelection(
|
|
54
|
+
(t) => Object.fromEntries(Object.entries(t).filter(([l]) => !s.some((a) => a.id === l)))
|
|
53
55
|
);
|
|
54
56
|
}
|
|
55
57
|
}
|
|
56
58
|
)
|
|
57
59
|
}
|
|
58
60
|
),
|
|
59
|
-
|
|
60
|
-
const
|
|
61
|
-
return /* @__PURE__ */
|
|
62
|
-
|
|
61
|
+
u.map((e) => {
|
|
62
|
+
const t = k.get(e.id), l = d.getFlatHeaders().find((r) => r.column.id === e.id), a = e.getIsSorted();
|
|
63
|
+
return /* @__PURE__ */ x(
|
|
64
|
+
S,
|
|
63
65
|
{
|
|
64
66
|
columnId: e.id,
|
|
65
|
-
label: typeof
|
|
67
|
+
label: typeof t.headerName == "string" ? t.headerName : e.id,
|
|
66
68
|
region: e.getIsPinned(),
|
|
67
|
-
disabled:
|
|
69
|
+
disabled: m,
|
|
68
70
|
"aria-sort": a === "asc" ? "ascending" : a === "desc" ? "descending" : "none",
|
|
69
|
-
className:
|
|
70
|
-
|
|
71
|
+
className: f(
|
|
72
|
+
"mtx-relative mtx-flex mtx-min-w-0 mtx-items-center mtx-gap-1 mtx-px-3",
|
|
73
|
+
t.align === "end" && "mtx-flex-row-reverse"
|
|
74
|
+
),
|
|
75
|
+
style: w(e, !0),
|
|
71
76
|
children: [
|
|
72
|
-
/* @__PURE__ */
|
|
77
|
+
/* @__PURE__ */ x(
|
|
73
78
|
"button",
|
|
74
79
|
{
|
|
75
80
|
type: "button",
|
|
76
81
|
"data-column-sort": "",
|
|
77
|
-
disabled:
|
|
82
|
+
disabled: m,
|
|
78
83
|
"aria-disabled": !e.getCanSort() || void 0,
|
|
79
|
-
onClick: (
|
|
80
|
-
!
|
|
84
|
+
onClick: (r) => {
|
|
85
|
+
!r.defaultPrevented && e.getCanSort() && e.getToggleSortingHandler()?.(r);
|
|
81
86
|
},
|
|
82
|
-
className:
|
|
83
|
-
|
|
87
|
+
className: f(
|
|
88
|
+
"mtx-flex mtx-min-w-0 mtx-flex-1 mtx-cursor-inherit mtx-items-center mtx-gap-1 mtx-text-start disabled:mtx-cursor-default",
|
|
89
|
+
t.align === "end" && "mtx-flex-row-reverse mtx-text-end"
|
|
90
|
+
),
|
|
91
|
+
"aria-label": `Sort ${typeof t.headerName == "string" ? t.headerName : e.id}`,
|
|
84
92
|
children: [
|
|
85
|
-
/* @__PURE__ */ i("span", { className: "mtx-truncate", children:
|
|
86
|
-
a && /* @__PURE__ */
|
|
93
|
+
/* @__PURE__ */ i("span", { className: "mtx-truncate", children: t.headerName ?? e.id }),
|
|
94
|
+
a && /* @__PURE__ */ x("span", { "aria-hidden": "true", children: [
|
|
87
95
|
a === "asc" ? "↑" : "↓",
|
|
88
96
|
d.state.sorting.length > 1 ? e.getSortIndex() + 1 : ""
|
|
89
97
|
] })
|
|
90
98
|
]
|
|
91
99
|
}
|
|
92
100
|
),
|
|
93
|
-
!
|
|
94
|
-
!
|
|
101
|
+
!m && /* @__PURE__ */ i(v, { table: d, column: e, definition: t }),
|
|
102
|
+
!m && e.getCanResize() && /* @__PURE__ */ i(
|
|
95
103
|
"div",
|
|
96
104
|
{
|
|
97
105
|
role: "separator",
|
|
@@ -99,14 +107,14 @@ function j({
|
|
|
99
107
|
"aria-label": `Resize ${e.id}`,
|
|
100
108
|
"aria-orientation": "vertical",
|
|
101
109
|
tabIndex: 0,
|
|
102
|
-
className: "mtx-absolute mtx-inset-y-
|
|
110
|
+
className: "mtx-absolute mtx-inset-y-3 mtx-end-0 mtx-w-2 mtx-cursor-col-resize mtx-touch-none after:mtx-bg-gray-400/70 after:mtx-w-0.5 after:mtx-h-full after:mtx-block after:mtx-absolute after:mtx-start-1/2 after:-mtx-translate-x-1/2",
|
|
103
111
|
onMouseDown: l.getResizeHandler(),
|
|
104
112
|
onTouchStart: l.getResizeHandler(),
|
|
105
113
|
onDoubleClick: () => e.resetSize(),
|
|
106
|
-
onKeyDown: (
|
|
107
|
-
(
|
|
108
|
-
...
|
|
109
|
-
[e.id]: (
|
|
114
|
+
onKeyDown: (r) => {
|
|
115
|
+
(r.key === "ArrowRight" || r.key === "ArrowLeft") && (r.preventDefault(), d.setColumnSizing((z) => ({
|
|
116
|
+
...z,
|
|
117
|
+
[e.id]: (N.get(e.id) ?? e.getSize()) + (r.key === "ArrowRight" ? 10 : -10)
|
|
110
118
|
})));
|
|
111
119
|
}
|
|
112
120
|
}
|
|
@@ -121,6 +129,6 @@ function j({
|
|
|
121
129
|
);
|
|
122
130
|
}
|
|
123
131
|
export {
|
|
124
|
-
|
|
132
|
+
I as DataTableHeader
|
|
125
133
|
};
|
|
126
134
|
//# sourceMappingURL=datatableheader.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datatableheader.es.js","sources":["../src/components/data-table/DataTableHeader.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { Checkbox } from \"../checkbox/Checkbox\";\nimport { DataTableColumnHeader } from \"./DataTableColumnHeader\";\nimport { DataTableColumnMenu } from \"./DataTableColumnMenu\";\nimport type { DataTableApi, DataTableColumnDef, DataTableContentProps, DataTableFeatures, DataTableInstance, DataTableRow } from \"./DataTable.types\";\n\ntype DataTableHeaderProps<T extends object> = Pick<DataTableContentProps<T>, \"rowSelection\"> & {\n table: DataTableInstance<T>;\n api: DataTableApi<T>;\n headerHeight: number;\n totalWidth: number;\n isPrinting: boolean;\n showExpanders: boolean;\n expanderWidth: number;\n showCheckboxes: boolean;\n selectionRows: DataTableRow<T>[];\n selectedInScope: number;\n visibleColumns: Column<DataTableFeatures, T>[];\n definitionsById: Map<string, DataTableColumnDef<T>>;\n columnStyle: (column: Column<DataTableFeatures, T>, header?: boolean) => React.CSSProperties;\n widths: Map<string, number>;\n};\n\nexport function DataTableHeader<T extends object>({\n table,\n api,\n headerHeight,\n totalWidth,\n isPrinting,\n showExpanders,\n expanderWidth,\n showCheckboxes,\n rowSelection,\n selectionRows,\n selectedInScope,\n visibleColumns,\n definitionsById,\n columnStyle,\n widths,\n}: DataTableHeaderProps<T>) {\n return (\n <div\n role=\"row\"\n className=\"mtx-sticky mtx-top-0 mtx-z-30 mtx-flex mtx-rounded-t-[inherit] mtx-border-b mtx-border-gray-200 mtx-bg-primary-50 mtx-font-bold\"\n style={{ height: headerHeight, width: totalWidth, minWidth: \"100%\", position: isPrinting ? \"relative\" : \"sticky\" }}\n >\n {showExpanders && (\n <div\n role=\"columnheader\"\n aria-label=\"Row details\"\n className=\"mtx-sticky mtx-start-0 mtx-z-10 mtx-shrink-0 mtx-bg-primary-50\"\n style={{ width: expanderWidth }}\n />\n )}\n {showCheckboxes && (\n <div\n role=\"columnheader\"\n className=\"mtx-sticky mtx-start-0 mtx-z-10 mtx-flex mtx-shrink-0 mtx-items-center mtx-justify-center mtx-bg-primary-50\"\n style={{ width: 44, insetInlineStart: expanderWidth }}\n >\n {rowSelection?.mode === \"multiRow\" && (\n <Checkbox\n aria-label=\"Select all rows\"\n disabled={!selectionRows.length}\n checked={selectionRows.length > 0 && selectedInScope === selectionRows.length ? true : selectedInScope > 0 ? \"indeterminate\" : false}\n onCheckedChange={checked => {\n if (checked === true) api.selectAll(rowSelection.selectAll);\n else\n table.setRowSelection(previous =>\n Object.fromEntries(Object.entries(previous).filter(([id]) => !selectionRows.some(row => row.id === id))),\n );\n }}\n />\n )}\n </div>\n )}\n {visibleColumns.map(column => {\n const definition = definitionsById.get(column.id)!;\n const header = table.getFlatHeaders().find(item => item.column.id === column.id)!;\n const sorted = column.getIsSorted();\n return (\n <DataTableColumnHeader\n key={column.id}\n columnId={column.id}\n label={typeof definition.headerName === \"string\" ? definition.headerName : column.id}\n region={column.getIsPinned()}\n disabled={isPrinting}\n aria-sort={sorted === \"asc\" ? \"ascending\" : sorted === \"desc\" ? \"descending\" : \"none\"}\n className=\"mtx-relative mtx-flex mtx-min-w-0 mtx-items-center mtx-gap-1 mtx-px-3\"\n style={columnStyle(column, true)}\n >\n <button\n type=\"button\"\n data-column-sort=\"\"\n disabled={isPrinting}\n aria-disabled={!column.getCanSort() || undefined}\n onClick={event => {\n if (!event.defaultPrevented && column.getCanSort()) column.getToggleSortingHandler()?.(event);\n }}\n className=\"mtx-flex mtx-min-w-0 mtx-flex-1 mtx-cursor-inherit mtx-items-center mtx-gap-1 mtx-text-start disabled:mtx-cursor-default\"\n aria-label={`Sort ${typeof definition.headerName === \"string\" ? definition.headerName : column.id}`}\n >\n <span className=\"mtx-truncate\">{definition.headerName ?? column.id}</span>\n {sorted && (\n <span aria-hidden=\"true\">\n {sorted === \"asc\" ? \"↑\" : \"↓\"}\n {table.state.sorting.length > 1 ? column.getSortIndex() + 1 : \"\"}\n </span>\n )}\n </button>\n {!isPrinting && <DataTableColumnMenu table={table} column={column} definition={definition} />}\n {!isPrinting && column.getCanResize() && (\n <div\n role=\"separator\"\n data-column-drag-ignore=\"\"\n aria-label={`Resize ${column.id}`}\n aria-orientation=\"vertical\"\n tabIndex={0}\n className=\"mtx-absolute mtx-inset-y-0 mtx-end-0 mtx-w-1 mtx-cursor-col-resize mtx-touch-none hover:mtx-bg-primary-300\"\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n onDoubleClick={() => column.resetSize()}\n onKeyDown={event => {\n if (event.key === \"ArrowRight\" || event.key === \"ArrowLeft\") {\n event.preventDefault();\n table.setColumnSizing(previous => ({\n ...previous,\n [column.id]: (widths.get(column.id) ?? column.getSize()) + (event.key === \"ArrowRight\" ? 10 : -10),\n }));\n }\n }}\n />\n )}\n </DataTableColumnHeader>\n );\n })}\n </div>\n );\n}\n"],"names":["DataTableHeader","table","api","headerHeight","totalWidth","isPrinting","showExpanders","expanderWidth","showCheckboxes","rowSelection","selectionRows","selectedInScope","visibleColumns","definitionsById","columnStyle","widths","jsxs","jsx","Checkbox","checked","previous","id","row","column","definition","header","item","sorted","DataTableColumnHeader","event","DataTableColumnMenu"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"datatableheader.es.js","sources":["../src/components/data-table/DataTableHeader.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { Checkbox } from \"../checkbox/Checkbox\";\nimport { cn } from \"../../lib/utils\";\nimport { DataTableColumnHeader } from \"./DataTableColumnHeader\";\nimport { DataTableColumnMenu } from \"./DataTableColumnMenu\";\nimport type { DataTableApi, DataTableColumnDef, DataTableContentProps, DataTableFeatures, DataTableInstance, DataTableRow } from \"./DataTable.types\";\n\ntype DataTableHeaderProps<T extends object> = Pick<DataTableContentProps<T>, \"rowSelection\"> & {\n table: DataTableInstance<T>;\n api: DataTableApi<T>;\n headerHeight: number;\n totalWidth: number;\n isPrinting: boolean;\n showExpanders: boolean;\n expanderWidth: number;\n showCheckboxes: boolean;\n selectionRows: DataTableRow<T>[];\n selectedInScope: number;\n visibleColumns: Column<DataTableFeatures, T>[];\n definitionsById: Map<string, DataTableColumnDef<T>>;\n columnStyle: (column: Column<DataTableFeatures, T>, header?: boolean) => React.CSSProperties;\n widths: Map<string, number>;\n};\n\nexport function DataTableHeader<T extends object>({\n table,\n api,\n headerHeight,\n totalWidth,\n isPrinting,\n showExpanders,\n expanderWidth,\n showCheckboxes,\n rowSelection,\n selectionRows,\n selectedInScope,\n visibleColumns,\n definitionsById,\n columnStyle,\n widths,\n}: DataTableHeaderProps<T>) {\n return (\n <div\n role=\"row\"\n className=\"mtx-sticky mtx-top-0 mtx-z-30 mtx-flex mtx-rounded-t-[inherit] mtx-border-b mtx-border-gray-200 mtx-bg-primary-50 mtx-font-bold\"\n style={{ height: headerHeight, width: totalWidth, minWidth: \"100%\", position: isPrinting ? \"relative\" : \"sticky\" }}\n >\n {showExpanders && (\n <div\n role=\"columnheader\"\n aria-label=\"Row details\"\n className=\"mtx-sticky mtx-start-0 mtx-z-10 mtx-shrink-0 mtx-bg-primary-50\"\n style={{ width: expanderWidth }}\n />\n )}\n {showCheckboxes && (\n <div\n role=\"columnheader\"\n className=\"mtx-sticky mtx-start-0 mtx-z-10 mtx-flex mtx-shrink-0 mtx-items-center mtx-justify-center mtx-bg-primary-50\"\n style={{ width: 44, insetInlineStart: expanderWidth }}\n >\n {rowSelection?.mode === \"multiRow\" && (\n <Checkbox\n aria-label=\"Select all rows\"\n className=\"mtx-bg-gray-0\"\n disabled={!selectionRows.length}\n checked={selectionRows.length > 0 && selectedInScope === selectionRows.length ? true : selectedInScope > 0 ? \"indeterminate\" : false}\n onCheckedChange={checked => {\n if (checked === true) api.selectAll(rowSelection.selectAll);\n else\n table.setRowSelection(previous =>\n Object.fromEntries(Object.entries(previous).filter(([id]) => !selectionRows.some(row => row.id === id))),\n );\n }}\n />\n )}\n </div>\n )}\n {visibleColumns.map(column => {\n const definition = definitionsById.get(column.id)!;\n const header = table.getFlatHeaders().find(item => item.column.id === column.id)!;\n const sorted = column.getIsSorted();\n return (\n <DataTableColumnHeader\n key={column.id}\n columnId={column.id}\n label={typeof definition.headerName === \"string\" ? definition.headerName : column.id}\n region={column.getIsPinned()}\n disabled={isPrinting}\n aria-sort={sorted === \"asc\" ? \"ascending\" : sorted === \"desc\" ? \"descending\" : \"none\"}\n className={cn(\n \"mtx-relative mtx-flex mtx-min-w-0 mtx-items-center mtx-gap-1 mtx-px-3\",\n definition.align === \"end\" && \"mtx-flex-row-reverse\",\n )}\n style={columnStyle(column, true)}\n >\n <button\n type=\"button\"\n data-column-sort=\"\"\n disabled={isPrinting}\n aria-disabled={!column.getCanSort() || undefined}\n onClick={event => {\n if (!event.defaultPrevented && column.getCanSort()) column.getToggleSortingHandler()?.(event);\n }}\n className={cn(\n \"mtx-flex mtx-min-w-0 mtx-flex-1 mtx-cursor-inherit mtx-items-center mtx-gap-1 mtx-text-start disabled:mtx-cursor-default\",\n definition.align === \"end\" && \"mtx-flex-row-reverse mtx-text-end\",\n )}\n aria-label={`Sort ${typeof definition.headerName === \"string\" ? definition.headerName : column.id}`}\n >\n <span className=\"mtx-truncate\">{definition.headerName ?? column.id}</span>\n {sorted && (\n <span aria-hidden=\"true\">\n {sorted === \"asc\" ? \"↑\" : \"↓\"}\n {table.state.sorting.length > 1 ? column.getSortIndex() + 1 : \"\"}\n </span>\n )}\n </button>\n {!isPrinting && <DataTableColumnMenu table={table} column={column} definition={definition} />}\n {!isPrinting && column.getCanResize() && (\n <div\n role=\"separator\"\n data-column-drag-ignore=\"\"\n aria-label={`Resize ${column.id}`}\n aria-orientation=\"vertical\"\n tabIndex={0}\n className=\"mtx-absolute mtx-inset-y-3 mtx-end-0 mtx-w-2 mtx-cursor-col-resize mtx-touch-none after:mtx-bg-gray-400/70 after:mtx-w-0.5 after:mtx-h-full after:mtx-block after:mtx-absolute after:mtx-start-1/2 after:-mtx-translate-x-1/2\"\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n onDoubleClick={() => column.resetSize()}\n onKeyDown={event => {\n if (event.key === \"ArrowRight\" || event.key === \"ArrowLeft\") {\n event.preventDefault();\n table.setColumnSizing(previous => ({\n ...previous,\n [column.id]: (widths.get(column.id) ?? column.getSize()) + (event.key === \"ArrowRight\" ? 10 : -10),\n }));\n }\n }}\n />\n )}\n </DataTableColumnHeader>\n );\n })}\n </div>\n );\n}\n"],"names":["DataTableHeader","table","api","headerHeight","totalWidth","isPrinting","showExpanders","expanderWidth","showCheckboxes","rowSelection","selectionRows","selectedInScope","visibleColumns","definitionsById","columnStyle","widths","jsxs","jsx","Checkbox","checked","previous","id","row","column","definition","header","item","sorted","DataTableColumnHeader","cn","event","DataTableColumnMenu"],"mappings":";;;;;AA2BO,SAASA,EAAkC;AAAA,EAChD,OAAAC;AAAA,EACA,KAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,eAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,QAAAC;AACF,GAA4B;AAC1B,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MACV,OAAO,EAAE,QAAQb,GAAc,OAAOC,GAAY,UAAU,QAAQ,UAAUC,IAAa,aAAa,SAAA;AAAA,MAEvG,UAAA;AAAA,QAAAC,KACC,gBAAAW;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAW;AAAA,YACX,WAAU;AAAA,YACV,OAAO,EAAE,OAAOV,EAAA;AAAA,UAAc;AAAA,QAAA;AAAA,QAGjCC,KACC,gBAAAS;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,OAAO,EAAE,OAAO,IAAI,kBAAkBV,EAAA;AAAA,YAErC,UAAAE,GAAc,SAAS,cACtB,gBAAAQ;AAAA,cAACC;AAAA,cAAA;AAAA,gBACC,cAAW;AAAA,gBACX,WAAU;AAAA,gBACV,UAAU,CAACR,EAAc;AAAA,gBACzB,SAASA,EAAc,SAAS,KAAKC,MAAoBD,EAAc,SAAS,KAAOC,IAAkB,IAAI,kBAAkB;AAAA,gBAC/H,iBAAiB,CAAAQ,MAAW;AAC1B,kBAAIA,MAAY,KAAMjB,EAAI,UAAUO,EAAa,SAAS,IAExDR,EAAM;AAAA,oBAAgB,CAAAmB,MACpB,OAAO,YAAY,OAAO,QAAQA,CAAQ,EAAE,OAAO,CAAC,CAACC,CAAE,MAAM,CAACX,EAAc,KAAK,CAAAY,MAAOA,EAAI,OAAOD,CAAE,CAAC,CAAC;AAAA,kBAAA;AAAA,gBAE7G;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,QAILT,EAAe,IAAI,CAAAW,MAAU;AAC5B,gBAAMC,IAAaX,EAAgB,IAAIU,EAAO,EAAE,GAC1CE,IAASxB,EAAM,eAAA,EAAiB,KAAK,OAAQyB,EAAK,OAAO,OAAOH,EAAO,EAAE,GACzEI,IAASJ,EAAO,YAAA;AACtB,iBACE,gBAAAP;AAAA,YAACY;AAAA,YAAA;AAAA,cAEC,UAAUL,EAAO;AAAA,cACjB,OAAO,OAAOC,EAAW,cAAe,WAAWA,EAAW,aAAaD,EAAO;AAAA,cAClF,QAAQA,EAAO,YAAA;AAAA,cACf,UAAUlB;AAAA,cACV,aAAWsB,MAAW,QAAQ,cAAcA,MAAW,SAAS,eAAe;AAAA,cAC/E,WAAWE;AAAA,gBACT;AAAA,gBACAL,EAAW,UAAU,SAAS;AAAA,cAAA;AAAA,cAEhC,OAAOV,EAAYS,GAAQ,EAAI;AAAA,cAE/B,UAAA;AAAA,gBAAA,gBAAAP;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,oBAAiB;AAAA,oBACjB,UAAUX;AAAA,oBACV,iBAAe,CAACkB,EAAO,WAAA,KAAgB;AAAA,oBACvC,SAAS,CAAAO,MAAS;AAChB,sBAAI,CAACA,EAAM,oBAAoBP,EAAO,gBAAcA,EAAO,wBAAA,IAA4BO,CAAK;AAAA,oBAC9F;AAAA,oBACA,WAAWD;AAAA,sBACT;AAAA,sBACAL,EAAW,UAAU,SAAS;AAAA,oBAAA;AAAA,oBAEhC,cAAY,QAAQ,OAAOA,EAAW,cAAe,WAAWA,EAAW,aAAaD,EAAO,EAAE;AAAA,oBAEjG,UAAA;AAAA,sBAAA,gBAAAN,EAAC,UAAK,WAAU,gBAAgB,UAAAO,EAAW,cAAcD,EAAO,IAAG;AAAA,sBAClEI,KACC,gBAAAX,EAAC,QAAA,EAAK,eAAY,QACf,UAAA;AAAA,wBAAAW,MAAW,QAAQ,MAAM;AAAA,wBACzB1B,EAAM,MAAM,QAAQ,SAAS,IAAIsB,EAAO,aAAA,IAAiB,IAAI;AAAA,sBAAA,EAAA,CAChE;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGH,CAAClB,KAAc,gBAAAY,EAACc,GAAA,EAAoB,OAAA9B,GAAc,QAAAsB,GAAgB,YAAAC,GAAwB;AAAA,gBAC1F,CAACnB,KAAckB,EAAO,aAAA,KACrB,gBAAAN;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,2BAAwB;AAAA,oBACxB,cAAY,UAAUM,EAAO,EAAE;AAAA,oBAC/B,oBAAiB;AAAA,oBACjB,UAAU;AAAA,oBACV,WAAU;AAAA,oBACV,aAAaE,EAAO,iBAAA;AAAA,oBACpB,cAAcA,EAAO,iBAAA;AAAA,oBACrB,eAAe,MAAMF,EAAO,UAAA;AAAA,oBAC5B,WAAW,CAAAO,MAAS;AAClB,uBAAIA,EAAM,QAAQ,gBAAgBA,EAAM,QAAQ,iBAC9CA,EAAM,eAAA,GACN7B,EAAM,gBAAgB,CAAAmB,OAAa;AAAA,wBACjC,GAAGA;AAAA,wBACH,CAACG,EAAO,EAAE,IAAIR,EAAO,IAAIQ,EAAO,EAAE,KAAKA,EAAO,QAAA,MAAcO,EAAM,QAAQ,eAAe,KAAK;AAAA,sBAAA,EAC9F;AAAA,oBAEN;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACF;AAAA,YAAA;AAAA,YAvDGP,EAAO;AAAA,UAAA;AAAA,QA2DlB,CAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;"}
|