@salt-ds/data-grid 1.0.5 → 1.0.7
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/CHANGELOG.md +216 -0
- package/dist-cjs/BaseCell.js +50 -48
- package/dist-cjs/BaseCell.js.map +1 -1
- package/dist-cjs/CellEditor.js +0 -2
- package/dist-cjs/CellEditor.js.map +1 -1
- package/dist-cjs/CellFrame.js +25 -33
- package/dist-cjs/CellFrame.js.map +1 -1
- package/dist-cjs/ColumnDataContext.js +1 -3
- package/dist-cjs/ColumnDataContext.js.map +1 -1
- package/dist-cjs/ColumnDragContext.js +1 -3
- package/dist-cjs/ColumnDragContext.js.map +1 -1
- package/dist-cjs/ColumnGroup.js +2 -6
- package/dist-cjs/ColumnGroup.js.map +1 -1
- package/dist-cjs/ColumnSortContext.js +1 -3
- package/dist-cjs/ColumnSortContext.js.map +1 -1
- package/dist-cjs/CornerTag.js +7 -6
- package/dist-cjs/CornerTag.js.map +1 -1
- package/dist-cjs/CursorContext.js +1 -3
- package/dist-cjs/CursorContext.js.map +1 -1
- package/dist-cjs/DropdownCellEditor.js +25 -28
- package/dist-cjs/DropdownCellEditor.js.map +1 -1
- package/dist-cjs/EditorContext.js +1 -3
- package/dist-cjs/EditorContext.js.map +1 -1
- package/dist-cjs/Grid.css.js +1 -1
- package/dist-cjs/Grid.js +174 -183
- package/dist-cjs/Grid.js.map +1 -1
- package/dist-cjs/GridColumn.js +4 -8
- package/dist-cjs/GridColumn.js.map +1 -1
- package/dist-cjs/GridContext.js +1 -3
- package/dist-cjs/GridContext.js.map +1 -1
- package/dist-cjs/GroupHeaderCell.js +29 -30
- package/dist-cjs/GroupHeaderCell.js.map +1 -1
- package/dist-cjs/GroupHeaderCellValue.js +1 -5
- package/dist-cjs/GroupHeaderCellValue.js.map +1 -1
- package/dist-cjs/HeaderCell.js +94 -90
- package/dist-cjs/HeaderCell.js.map +1 -1
- package/dist-cjs/HeaderCellValue.js +1 -6
- package/dist-cjs/HeaderCellValue.js.map +1 -1
- package/dist-cjs/LayoutContext.js +0 -2
- package/dist-cjs/LayoutContext.js.map +1 -1
- package/dist-cjs/NumberRange.js +2 -4
- package/dist-cjs/NumberRange.js.map +1 -1
- package/dist-cjs/NumericColumn.css.js +1 -1
- package/dist-cjs/NumericColumn.js +31 -30
- package/dist-cjs/NumericColumn.js.map +1 -1
- package/dist-cjs/RowSelectionCheckboxCellValue.js +7 -10
- package/dist-cjs/RowSelectionCheckboxCellValue.js.map +1 -1
- package/dist-cjs/RowSelectionCheckboxColumn.js +14 -13
- package/dist-cjs/RowSelectionCheckboxColumn.js.map +1 -1
- package/dist-cjs/RowSelectionCheckboxHeaderCellValue.js +22 -18
- package/dist-cjs/RowSelectionCheckboxHeaderCellValue.js.map +1 -1
- package/dist-cjs/RowSelectionRadioCellValue.js +6 -8
- package/dist-cjs/RowSelectionRadioCellValue.js.map +1 -1
- package/dist-cjs/RowSelectionRadioColumn.js +12 -11
- package/dist-cjs/RowSelectionRadioColumn.js.map +1 -1
- package/dist-cjs/RowSelectionRadioHeaderCell.js +2 -10
- package/dist-cjs/RowSelectionRadioHeaderCell.js.map +1 -1
- package/dist-cjs/RowValidationStatus.js +0 -2
- package/dist-cjs/RowValidationStatus.js.map +1 -1
- package/dist-cjs/SelectionContext.js +1 -3
- package/dist-cjs/SelectionContext.js.map +1 -1
- package/dist-cjs/SizingContext.js +1 -3
- package/dist-cjs/SizingContext.js.map +1 -1
- package/dist-cjs/TextCellEditor.css.js +1 -1
- package/dist-cjs/TextCellEditor.js +14 -20
- package/dist-cjs/TextCellEditor.js.map +1 -1
- package/dist-cjs/index.js +0 -2
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/internal/CellMeasure.css.js +1 -1
- package/dist-cjs/internal/CellMeasure.js +3 -18
- package/dist-cjs/internal/CellMeasure.js.map +1 -1
- package/dist-cjs/internal/CellStatusIcons.js +41 -37
- package/dist-cjs/internal/CellStatusIcons.js.map +1 -1
- package/dist-cjs/internal/ColumnDropTarget.js +3 -8
- package/dist-cjs/internal/ColumnDropTarget.js.map +1 -1
- package/dist-cjs/internal/ColumnGhost.js +17 -29
- package/dist-cjs/internal/ColumnGhost.js.map +1 -1
- package/dist-cjs/internal/Cursor.js +3 -7
- package/dist-cjs/internal/Cursor.js.map +1 -1
- package/dist-cjs/internal/DefaultCellValue.js +11 -10
- package/dist-cjs/internal/DefaultCellValue.js.map +1 -1
- package/dist-cjs/internal/FakeCell.js +8 -16
- package/dist-cjs/internal/FakeCell.js.map +1 -1
- package/dist-cjs/internal/FakeGroupCell.js +0 -2
- package/dist-cjs/internal/FakeGroupCell.js.map +1 -1
- package/dist-cjs/internal/FakeHeaderCell.js +1 -5
- package/dist-cjs/internal/FakeHeaderCell.js.map +1 -1
- package/dist-cjs/internal/GroupHeaderRow.js +9 -20
- package/dist-cjs/internal/GroupHeaderRow.js.map +1 -1
- package/dist-cjs/internal/HeaderRow.js +17 -23
- package/dist-cjs/internal/HeaderRow.js.map +1 -1
- package/dist-cjs/internal/LeftPart.js +21 -27
- package/dist-cjs/internal/LeftPart.js.map +1 -1
- package/dist-cjs/internal/MiddlePart.js +19 -25
- package/dist-cjs/internal/MiddlePart.js.map +1 -1
- package/dist-cjs/internal/RightPart.js +21 -26
- package/dist-cjs/internal/RightPart.js.map +1 -1
- package/dist-cjs/internal/Scrollable.js +12 -13
- package/dist-cjs/internal/Scrollable.js.map +1 -1
- package/dist-cjs/internal/TableBody.js +17 -19
- package/dist-cjs/internal/TableBody.js.map +1 -1
- package/dist-cjs/internal/TableColGroup.js +7 -17
- package/dist-cjs/internal/TableColGroup.js.map +1 -1
- package/dist-cjs/internal/TableRow.js +87 -79
- package/dist-cjs/internal/TableRow.js.map +1 -1
- package/dist-cjs/internal/TopLeftPart.js +20 -31
- package/dist-cjs/internal/TopLeftPart.js.map +1 -1
- package/dist-cjs/internal/TopPart.js +20 -37
- package/dist-cjs/internal/TopPart.js.map +1 -1
- package/dist-cjs/internal/TopRightPart.js +26 -30
- package/dist-cjs/internal/TopRightPart.js.map +1 -1
- package/dist-cjs/internal/gridHooks.js +23 -25
- package/dist-cjs/internal/gridHooks.js.map +1 -1
- package/dist-cjs/internal/utils.js +5 -7
- package/dist-cjs/internal/utils.js.map +1 -1
- package/dist-es/BaseCell.js +50 -46
- package/dist-es/BaseCell.js.map +1 -1
- package/dist-es/CellEditor.js.map +1 -1
- package/dist-es/CellFrame.js +25 -31
- package/dist-es/CellFrame.js.map +1 -1
- package/dist-es/ColumnDataContext.js +1 -1
- package/dist-es/ColumnDataContext.js.map +1 -1
- package/dist-es/ColumnDragContext.js +1 -1
- package/dist-es/ColumnDragContext.js.map +1 -1
- package/dist-es/ColumnGroup.js +2 -4
- package/dist-es/ColumnGroup.js.map +1 -1
- package/dist-es/ColumnSortContext.js +1 -1
- package/dist-es/ColumnSortContext.js.map +1 -1
- package/dist-es/CornerTag.js +7 -4
- package/dist-es/CornerTag.js.map +1 -1
- package/dist-es/CursorContext.js +1 -1
- package/dist-es/CursorContext.js.map +1 -1
- package/dist-es/DropdownCellEditor.js +25 -26
- package/dist-es/DropdownCellEditor.js.map +1 -1
- package/dist-es/EditorContext.js +1 -1
- package/dist-es/EditorContext.js.map +1 -1
- package/dist-es/Grid.css.js +1 -1
- package/dist-es/Grid.js +174 -181
- package/dist-es/Grid.js.map +1 -1
- package/dist-es/GridColumn.js +4 -6
- package/dist-es/GridColumn.js.map +1 -1
- package/dist-es/GridContext.js +1 -1
- package/dist-es/GridContext.js.map +1 -1
- package/dist-es/GroupHeaderCell.js +29 -28
- package/dist-es/GroupHeaderCell.js.map +1 -1
- package/dist-es/GroupHeaderCellValue.js +1 -3
- package/dist-es/GroupHeaderCellValue.js.map +1 -1
- package/dist-es/HeaderCell.js +94 -88
- package/dist-es/HeaderCell.js.map +1 -1
- package/dist-es/HeaderCellValue.js +1 -4
- package/dist-es/HeaderCellValue.js.map +1 -1
- package/dist-es/LayoutContext.js.map +1 -1
- package/dist-es/NumberRange.js +2 -2
- package/dist-es/NumberRange.js.map +1 -1
- package/dist-es/NumericColumn.css.js +1 -1
- package/dist-es/NumericColumn.js +31 -28
- package/dist-es/NumericColumn.js.map +1 -1
- package/dist-es/RowSelectionCheckboxCellValue.js +7 -8
- package/dist-es/RowSelectionCheckboxCellValue.js.map +1 -1
- package/dist-es/RowSelectionCheckboxColumn.js +14 -11
- package/dist-es/RowSelectionCheckboxColumn.js.map +1 -1
- package/dist-es/RowSelectionCheckboxHeaderCellValue.js +22 -16
- package/dist-es/RowSelectionCheckboxHeaderCellValue.js.map +1 -1
- package/dist-es/RowSelectionRadioCellValue.js +6 -6
- package/dist-es/RowSelectionRadioCellValue.js.map +1 -1
- package/dist-es/RowSelectionRadioColumn.js +12 -9
- package/dist-es/RowSelectionRadioColumn.js.map +1 -1
- package/dist-es/RowSelectionRadioHeaderCell.js +2 -8
- package/dist-es/RowSelectionRadioHeaderCell.js.map +1 -1
- package/dist-es/RowValidationStatus.js.map +1 -1
- package/dist-es/SelectionContext.js +1 -1
- package/dist-es/SelectionContext.js.map +1 -1
- package/dist-es/SizingContext.js +1 -1
- package/dist-es/SizingContext.js.map +1 -1
- package/dist-es/TextCellEditor.css.js +1 -1
- package/dist-es/TextCellEditor.js +14 -18
- package/dist-es/TextCellEditor.js.map +1 -1
- package/dist-es/internal/CellMeasure.css.js +1 -1
- package/dist-es/internal/CellMeasure.js +3 -16
- package/dist-es/internal/CellMeasure.js.map +1 -1
- package/dist-es/internal/CellStatusIcons.js +41 -35
- package/dist-es/internal/CellStatusIcons.js.map +1 -1
- package/dist-es/internal/ColumnDropTarget.js +3 -6
- package/dist-es/internal/ColumnDropTarget.js.map +1 -1
- package/dist-es/internal/ColumnGhost.js +17 -27
- package/dist-es/internal/ColumnGhost.js.map +1 -1
- package/dist-es/internal/Cursor.js +3 -5
- package/dist-es/internal/Cursor.js.map +1 -1
- package/dist-es/internal/DefaultCellValue.js +11 -8
- package/dist-es/internal/DefaultCellValue.js.map +1 -1
- package/dist-es/internal/FakeCell.js +8 -14
- package/dist-es/internal/FakeCell.js.map +1 -1
- package/dist-es/internal/FakeGroupCell.js.map +1 -1
- package/dist-es/internal/FakeHeaderCell.js +1 -3
- package/dist-es/internal/FakeHeaderCell.js.map +1 -1
- package/dist-es/internal/GroupHeaderRow.js +9 -18
- package/dist-es/internal/GroupHeaderRow.js.map +1 -1
- package/dist-es/internal/HeaderRow.js +17 -21
- package/dist-es/internal/HeaderRow.js.map +1 -1
- package/dist-es/internal/LeftPart.js +21 -25
- package/dist-es/internal/LeftPart.js.map +1 -1
- package/dist-es/internal/MiddlePart.js +19 -23
- package/dist-es/internal/MiddlePart.js.map +1 -1
- package/dist-es/internal/RightPart.js +21 -24
- package/dist-es/internal/RightPart.js.map +1 -1
- package/dist-es/internal/Scrollable.js +12 -11
- package/dist-es/internal/Scrollable.js.map +1 -1
- package/dist-es/internal/TableBody.js +17 -17
- package/dist-es/internal/TableBody.js.map +1 -1
- package/dist-es/internal/TableColGroup.js +7 -15
- package/dist-es/internal/TableColGroup.js.map +1 -1
- package/dist-es/internal/TableRow.js +87 -77
- package/dist-es/internal/TableRow.js.map +1 -1
- package/dist-es/internal/TopLeftPart.js +20 -29
- package/dist-es/internal/TopLeftPart.js.map +1 -1
- package/dist-es/internal/TopPart.js +20 -35
- package/dist-es/internal/TopPart.js.map +1 -1
- package/dist-es/internal/TopRightPart.js +26 -28
- package/dist-es/internal/TopRightPart.js.map +1 -1
- package/dist-es/internal/gridHooks.js +23 -23
- package/dist-es/internal/gridHooks.js.map +1 -1
- package/dist-es/internal/utils.js +5 -5
- package/dist-es/internal/utils.js.map +1 -1
- package/dist-types/BaseCell.d.ts +3 -3
- package/dist-types/CellEditor.d.ts +1 -1
- package/dist-types/CellFrame.d.ts +2 -2
- package/dist-types/ColumnDragContext.d.ts +1 -1
- package/dist-types/ColumnGroup.d.ts +4 -4
- package/dist-types/ColumnSortContext.d.ts +5 -5
- package/dist-types/CornerTag.d.ts +1 -1
- package/dist-types/DropdownCellEditor.d.ts +2 -2
- package/dist-types/Grid.d.ts +4 -4
- package/dist-types/GridColumn.d.ts +3 -3
- package/dist-types/GridContext.d.ts +2 -2
- package/dist-types/GroupHeaderCell.d.ts +3 -3
- package/dist-types/GroupHeaderCellValue.d.ts +2 -2
- package/dist-types/HeaderCell.d.ts +5 -5
- package/dist-types/HeaderCellValue.d.ts +2 -2
- package/dist-types/NumericColumn.d.ts +6 -6
- package/dist-types/RowSelectionCheckboxCellValue.d.ts +2 -2
- package/dist-types/RowSelectionCheckboxColumn.d.ts +2 -2
- package/dist-types/RowSelectionCheckboxHeaderCellValue.d.ts +2 -2
- package/dist-types/RowSelectionRadioCellValue.d.ts +2 -2
- package/dist-types/RowSelectionRadioColumn.d.ts +2 -2
- package/dist-types/RowSelectionRadioHeaderCell.d.ts +2 -2
- package/dist-types/RowValidationStatus.d.ts +2 -2
- package/dist-types/SelectionContext.d.ts +1 -1
- package/dist-types/SizingContext.d.ts +3 -3
- package/dist-types/TextCellEditor.d.ts +2 -2
- package/dist-types/internal/CellMeasure.d.ts +1 -1
- package/dist-types/internal/CellStatusIcons.d.ts +3 -3
- package/dist-types/internal/ColumnDropTarget.d.ts +1 -1
- package/dist-types/internal/ColumnGhost.d.ts +3 -3
- package/dist-types/internal/Cursor.d.ts +1 -3
- package/dist-types/internal/DefaultCellValue.d.ts +2 -2
- package/dist-types/internal/FakeCell.d.ts +2 -2
- package/dist-types/internal/FakeGroupCell.d.ts +1 -1
- package/dist-types/internal/FakeHeaderCell.d.ts +1 -1
- package/dist-types/internal/GroupHeaderRow.d.ts +2 -2
- package/dist-types/internal/HeaderRow.d.ts +2 -2
- package/dist-types/internal/LeftPart.d.ts +4 -4
- package/dist-types/internal/MiddlePart.d.ts +4 -4
- package/dist-types/internal/RightPart.d.ts +4 -4
- package/dist-types/internal/Scrollable.d.ts +2 -2
- package/dist-types/internal/TableBody.d.ts +3 -3
- package/dist-types/internal/TableColGroup.d.ts +3 -3
- package/dist-types/internal/TableRow.d.ts +4 -4
- package/dist-types/internal/TopLeftPart.d.ts +2 -2
- package/dist-types/internal/TopPart.d.ts +3 -3
- package/dist-types/internal/TopRightPart.d.ts +2 -2
- package/dist-types/internal/gridHooks.d.ts +13 -13
- package/dist-types/internal/utils.d.ts +1 -1
- package/package.json +11 -8
- package/dist-cjs/internal/FakeCell.css.js +0 -6
- package/dist-cjs/internal/FakeCell.css.js.map +0 -1
- package/dist-es/internal/FakeCell.css.js +0 -4
- package/dist-es/internal/FakeCell.css.js.map +0 -1
package/dist-cjs/Grid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grid.js","sources":["../src/Grid.tsx"],"sourcesContent":["import React, {\n CSSProperties,\n KeyboardEvent,\n KeyboardEventHandler,\n MouseEventHandler,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { clsx } from \"clsx\";\nimport {\n CellMeasure,\n clamp,\n getFocusablePosition,\n LeftPart,\n MiddlePart,\n RightPart,\n Scrollable,\n ScrollableProps,\n TopLeftPart,\n TopPart,\n TopRightPart,\n useBodyVisibleAreaTop,\n useBodyVisibleColumnRange,\n useClientMidHeight,\n useClientMidWidth,\n useColumnMove,\n useColumnRange,\n useColumnRegistry,\n useColumnResize,\n useHeadVisibleColumnRange,\n useLeftScrolledOutWidth,\n useRangeSelection,\n useRowModels,\n useRowSelection,\n useScrollToCell,\n useSum,\n useSumRangeWidth,\n useSumWidth,\n useVisibleColumnGroupRange,\n useVisibleRowRange,\n} from \"./internal\";\nimport {\n CellValidationState,\n GridColumnInfo,\n GridColumnProps,\n} from \"./GridColumn\";\nimport { GridContext } from \"./GridContext\";\nimport { SelectionContext } from \"./SelectionContext\";\nimport { SizingContext } from \"./SizingContext\";\nimport { LayoutContext } from \"./LayoutContext\";\nimport { EditorContext } from \"./EditorContext\"; // TODO remove\nimport { CursorContext, FocusedPart } from \"./CursorContext\";\nimport { ColumnGroupProps } from \"./ColumnGroup\";\nimport { ColumnDragContext } from \"./ColumnDragContext\";\nimport { ColumnGhost } from \"./internal/ColumnGhost\";\nimport { ColumnDropTarget } from \"./internal/ColumnDropTarget\";\nimport { ColumnDataContext } from \"./ColumnDataContext\";\nimport { ColumnSortContext } from \"./ColumnSortContext\";\n\nimport gridCss from \"./Grid.css\";\n\nconst withBaseName = makePrefixer(\"saltGrid\");\n\nexport type ColumnSeparatorType = \"regular\" | \"none\" | \"groupEdge\" | \"pinned\";\nexport type ColumnGroupRowSeparatorType = \"first\" | \"regular\" | \"last\";\nexport type ColumnGroupColumnSeparatorType = \"regular\" | \"none\" | \"pinned\";\nexport type GridRowSelectionMode = \"single\" | \"multi\" | \"none\";\nexport type GridCellSelectionMode = \"range\" | \"none\";\n\nexport enum SortOrder {\n ASC = \"asc\",\n DESC = \"desc\",\n NONE = \"none\",\n}\n\nexport type RowKeyGetter<T> = (row: T, index: number) => string;\n\nexport type GridColumnMoveHandler = (\n columnId: string,\n fromIndex: number,\n toIndex: number\n) => void;\n\nexport interface GridProps<T = any> {\n /**\n * At least 1 children is expected, options are `ColumnGroup` or `GridColumn`.\n * */\n children: ReactNode;\n /**\n * If `true`, zebra stripes are enabled (odd/even rows have alternate colours)\n * */\n zebra?: boolean;\n /**\n * If `true`, grid header is hidden.\n * */\n hideHeader?: boolean;\n /**\n * If `true`, column separators are rendered.\n * */\n columnSeparators?: boolean;\n /**\n * If `true`, separators are rendered between pinned and unpinned columns.\n * */\n pinnedSeparators?: boolean;\n /**\n * Row data objects. Sparse arrays are supported.\n * */\n rowData: T[];\n /**\n * Should return unique string for a given row data object.\n * If rowData is sparse then this function should work with undefined row data\n * objects and create keys based on row index. `(row: T, index: number) => string`\n * */\n rowKeyGetter?: RowKeyGetter<T>;\n /**\n * Rows with these indices are selected by default.\n * */\n defaultSelectedRowIdxs?: number[];\n /**\n * Selected row indices for controlled mode.\n * */\n selectedRowIdxs?: number[];\n className?: string;\n style?: CSSProperties;\n /**\n * The variant to use. Options are `primary` and `secondary`. Default value is\n * `primary`. `secondary` variant changes grid background to reduce contrast.\n * */\n variant?: \"primary\" | \"secondary\";\n /**\n * Options are `single`, `multi` and `none`.\n * */\n rowSelectionMode?: GridRowSelectionMode;\n onRowSelected?: (selectedRowIdxs: number[]) => void;\n /**\n * If `true`, user will be able to move columns using drag and drop.\n * */\n columnMove?: boolean;\n /**\n * Accepts `(columnId: string, fromIndex: number, toIndex: number) => void`\n * */\n onColumnMoved?: GridColumnMoveHandler;\n /**\n * Options are `range` and `none`.\n * */\n cellSelectionMode?: GridCellSelectionMode;\n onVisibleRowRangeChange?: (start: number, end: number) => void;\n /**\n * If `true`, keyboard navigation is enabled for the header.\n * */\n headerIsFocusable?: boolean;\n\n getRowValidationStatus?: (\n row: GridRowModel<T>\n ) => CellValidationState | undefined;\n}\n\nexport interface GridRowModel<T> {\n key: string;\n index: number;\n data: T;\n}\n\nexport interface GridColumnModel<T> {\n index: number;\n separator: ColumnSeparatorType;\n\n info: GridColumnInfo<T>;\n}\n\nexport interface GridColumnGroupModel {\n index: number;\n data: ColumnGroupProps;\n childrenIds: string[];\n rowSeparator: ColumnGroupRowSeparatorType;\n columnSeparator: ColumnGroupColumnSeparatorType;\n colSpan: number;\n}\n\nfunction defaultRowKeyGetter<T>(row: T, index: number): string {\n return `${index}`;\n}\n\nexport const Grid = function Grid<T>(props: GridProps<T>) {\n const {\n rowData,\n zebra,\n hideHeader,\n columnSeparators,\n pinnedSeparators = true,\n className,\n style,\n rowKeyGetter = defaultRowKeyGetter,\n children,\n defaultSelectedRowIdxs,\n selectedRowIdxs,\n variant = \"primary\",\n rowSelectionMode = \"multi\",\n onRowSelected,\n columnMove,\n onColumnMoved,\n cellSelectionMode = \"none\",\n onVisibleRowRangeChange,\n headerIsFocusable,\n getRowValidationStatus,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-grid\",\n css: gridCss,\n window: targetWindow,\n });\n\n const rootRef = useRef<HTMLDivElement>(null);\n const scrollableRef = useRef<HTMLDivElement>(null);\n const middleRef = useRef<HTMLDivElement>(null);\n const topRef = useRef<HTMLDivElement>(null);\n const leftRef = useRef<HTMLDivElement>(null);\n const rightRef = useRef<HTMLDivElement>(null);\n const bottomRef = useRef<HTMLDivElement>(null);\n\n // What caused the latest scroll change. User means the UI (mouse events), table means the component initiated scrolling (scrollToCell was called for example)\n const [scrollSource, setScrollSource] = useState<\"user\" | \"table\">(\"user\");\n const [scrollLeft, setScrollLeft] = useState<number>(0);\n const [scrollTop, setScrollTop] = useState<number>(0);\n\n const [hoverRowKey, setHoverRowKey] = useState<string | undefined>(undefined);\n\n const [\n { clientWidth, clientHeight, scrollBarHeight, scrollBarWidth },\n setDimensions,\n ] = useState({\n clientWidth: 0,\n clientHeight: 0,\n scrollBarHeight: 0,\n scrollBarWidth: 0,\n });\n\n const [rowHeight, setRowHeight] = useState<number>(0);\n\n const [cursorRowIdx, setCursorRowIdx] = useState<number>(0);\n const [cursorColIdx, setCursorColIdx] = useState<number>(0);\n const [focusedPart, setFocusedPart] = useState<FocusedPart>(\n headerIsFocusable ? \"header\" : \"body\"\n );\n\n const [sortByColumnId, setSortByColumnId] =\n useState<GridColumnProps[\"id\"]>(\"\");\n const [sortOrder, setSortOrder] = useState<SortOrder>(SortOrder.NONE);\n\n const [editMode, setEditMode] = useState<boolean>(false);\n const [initialText, setInitialText] = useState<string | undefined>(undefined);\n\n const resizeClient: ScrollableProps<T>[\"resizeClient\"] = useCallback(\n (dimensions) => {\n setDimensions(dimensions);\n },\n []\n );\n\n const {\n leftCols, // Columns pinned to left\n midCols, // Scrollable columns\n rightCols, // Columns pinned to right\n leftGroups,\n midGroups,\n rightGroups,\n contextValue,\n } = useColumnRegistry<T>(children);\n\n const midColsById = useMemo(\n () =>\n new Map<string, GridColumnModel<T>>(\n midCols.map((c) => [c.info.props.id, c] as [string, GridColumnModel<T>])\n ),\n [midCols]\n );\n\n // Width of all columns pinned to left\n const leftWidth = useSumWidth(leftCols);\n // Width of all scrollable columns\n const midWidth = useSumWidth(midCols);\n // Width of all columns pinned to right\n const rightWidth = useSumWidth(rightCols);\n // Total width of all columns\n const totalWidth = useSum([leftWidth, midWidth, rightWidth]);\n\n const hasColumnGroups =\n leftGroups.length > 0 || midGroups.length > 0 || rightGroups.length > 0;\n\n const headRowCount = hideHeader ? 0 : hasColumnGroups ? 2 : 1; // TODO multiple group levels\n const rowCount = rowData.length;\n\n // Footer is not implemented yet.\n const botRowCount = 0; // TODO\n // Height of the header\n const topHeight = rowHeight * headRowCount;\n // Height of the middle part (virtual height)\n const midHeight = rowCount === 0 ? 0 : rowHeight * rowCount + 1;\n // Height of the footer\n const botHeight = botRowCount * rowHeight;\n // Total height of the grid (virtual)\n const totalHeight = useSum([topHeight, midHeight, botHeight]);\n // Client width of the middle part of the grid (viewport)\n const clientMidWidth = useClientMidWidth(clientWidth, leftWidth, rightWidth);\n // Unused width in the middle part, to be filled by an empty column with fake cells.\n const midGap = Math.max(0, Math.floor(clientMidWidth - midWidth));\n\n // Range of unpinned columns visible in the body of the grid (pinned columns are always visible).\n const bodyVisColRng = useBodyVisibleColumnRange(\n midCols,\n scrollLeft,\n clientMidWidth\n );\n\n const midGrpByColId = useMemo(() => {\n const m = new Map<string, GridColumnGroupModel>();\n for (const g of midGroups) {\n for (const c of g.childrenIds) {\n m.set(c, g);\n }\n }\n return m;\n }, [midGroups]);\n\n // Range of visible column groups.\n const visColGrpRng = useVisibleColumnGroupRange(\n bodyVisColRng,\n midCols,\n midGrpByColId,\n leftGroups.length\n );\n\n const visColGrps = useMemo(() => {\n return midGroups.slice(visColGrpRng.start, visColGrpRng.end);\n }, [visColGrpRng, midGroups]);\n\n const headVisColRng = useHeadVisibleColumnRange(\n bodyVisColRng,\n visColGrps,\n midColsById,\n leftCols.length\n );\n\n const bodyScrOutColWh = useLeftScrolledOutWidth(midCols, bodyVisColRng);\n const headScrOutColWh = useLeftScrolledOutWidth(midCols, headVisColRng);\n\n const bodyVisAreaLeft = useSum([leftWidth, bodyScrOutColWh]);\n const headVisAreaLeft = useSum([leftWidth, headScrOutColWh]);\n const clientMidHeight = useClientMidHeight(\n clientHeight,\n topHeight,\n botHeight\n );\n const visRowRng = useVisibleRowRange(\n scrollTop,\n clientMidHeight,\n rowHeight,\n rowCount\n );\n\n const bodyVisAreaTop = useBodyVisibleAreaTop(rowHeight, visRowRng, topHeight);\n\n const bodyVisibleColumns = useColumnRange(midCols, bodyVisColRng);\n const headVisibleColumns = useColumnRange(midCols, headVisColRng);\n const bodyVisColWh = useSumRangeWidth(midCols, bodyVisColRng);\n\n const headVisColWh = bodyVisColWh; // TODO implement groups\n\n const rootStyle = useMemo(\n () => ({\n ...style,\n \"--grid-total-width\": `${totalWidth}px`,\n \"--grid-total-height\": `${totalHeight}px`,\n \"--grid-topPart-height\": `${topHeight}px`,\n \"--grid-leftPart-width\": `${leftWidth}px`,\n \"--grid-rightPart-width\": `${rightWidth}px`,\n \"--grid-bodyVisibleColumns-width\": `${bodyVisColWh}px`,\n \"--grid-bodyVisibleArea-top\": `${bodyVisAreaTop}px`,\n \"--grid-bodyVisibleArea-left\": `${bodyVisAreaLeft}px`,\n \"--grid-bottomHeight\": `${botHeight}px`,\n \"--grid-headerVisibleColumns-width\": `${headVisColWh}px`,\n \"--grid-headerVisibleArea-left\": `${headVisAreaLeft}px`,\n \"--grid-scrollBar-height\": `${scrollBarHeight}px`,\n \"--grid-scrollBar-width\": `${scrollBarWidth}px`,\n }),\n [\n style,\n totalHeight,\n totalWidth,\n topHeight,\n leftWidth,\n rightWidth,\n botHeight,\n bodyVisColWh,\n bodyVisAreaLeft,\n bodyVisAreaTop,\n headVisColWh,\n headVisAreaLeft,\n scrollBarHeight,\n scrollBarWidth,\n ]\n );\n\n const onWheel: EventListener = useCallback(\n (event) => {\n let { deltaX, deltaY, shiftKey } = event as WheelEvent;\n if (deltaX === 0 && shiftKey) {\n deltaX = deltaY;\n deltaY = 0;\n }\n const s = scrollableRef.current;\n if (s) {\n s.scrollLeft += deltaX;\n s.scrollTop += deltaY;\n if (\n !(\n (\n Math.round(s.scrollHeight - s.scrollTop) === s.clientHeight || // reached the bottom\n (s.scrollTop === 0 && deltaY < 0)\n ) // reached the top (upward scroll)\n )\n ) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n },\n [scrollableRef.current]\n );\n\n const cols = useMemo(\n () => [...leftCols, ...midCols, ...rightCols],\n [leftCols, midCols, rightCols]\n );\n\n const colsById = useMemo(\n () =>\n new Map<string, GridColumnModel<T>>(\n cols.map((c) => [c.info.props.id, c] as [string, GridColumnModel<T>])\n ),\n [cols]\n );\n\n const getColById = useCallback(\n (id: string) => {\n return colsById.get(id);\n },\n [colsById]\n );\n\n const columnDataContext: ColumnDataContext<T> = useMemo(\n () => ({\n getColById,\n }),\n [getColById]\n );\n\n const isSortMode = sortByColumnId && sortOrder !== SortOrder.NONE;\n\n const onSortOrderChange =\n getColById(sortByColumnId)?.info.props.onSortOrderChange;\n\n const valueGetter =\n getColById(sortByColumnId)?.info.props.getValue ||\n ((r: T) => {\n return r[sortByColumnId as keyof typeof r];\n });\n\n const customSortingFn = getColById(sortByColumnId)?.info.props.customSort;\n\n const sortedRowData = useMemo(() => {\n if (!isSortMode || onSortOrderChange) return rowData;\n\n if (customSortingFn) {\n return customSortingFn({ rowData, sortOrder });\n }\n\n const sortedData = [...rowData].sort((a, b) =>\n valueGetter(a) < valueGetter(b) ? -1 : 1\n );\n\n if (sortOrder === SortOrder.DESC) {\n return sortedData.reverse();\n }\n\n return sortedData;\n }, [\n onSortOrderChange,\n valueGetter,\n customSortingFn,\n isSortMode,\n rowData,\n sortByColumnId,\n sortOrder,\n ]);\n\n const onClickSortColumn = useCallback(\n (colHeaderId: GridColumnProps[\"id\"]) => {\n if (sortByColumnId === colHeaderId) {\n switch (sortOrder) {\n case SortOrder.ASC:\n setSortOrder(SortOrder.DESC);\n break;\n case SortOrder.DESC:\n setSortOrder(SortOrder.NONE);\n break;\n default:\n setSortOrder(SortOrder.ASC);\n }\n } else {\n setSortByColumnId(colHeaderId);\n setSortOrder(SortOrder.ASC);\n }\n },\n [sortByColumnId, sortOrder]\n );\n\n const columnSortContext: ColumnSortContext = useMemo(\n () => ({\n sortByColumnId,\n setSortByColumnId,\n sortOrder,\n setSortOrder,\n onClickSortColumn,\n }),\n [\n sortByColumnId,\n setSortByColumnId,\n sortOrder,\n setSortOrder,\n onClickSortColumn,\n ]\n );\n\n const scroll = useCallback(\n (left?: number, top?: number, source?: \"user\" | \"table\") => {\n setScrollSource(source || \"user\");\n if (left !== undefined) {\n setScrollLeft(left);\n }\n if (top !== undefined) {\n setScrollTop(top);\n }\n },\n [setScrollLeft, setScrollTop, setScrollSource]\n );\n\n const scrollToCell = useScrollToCell(\n visRowRng,\n rowHeight,\n clientMidHeight,\n midCols,\n bodyVisColRng,\n clientMidWidth,\n scroll\n );\n\n const focusCellElement = (\n part: FocusedPart,\n rowIdx: number,\n colIdx: number\n ) => {\n setTimeout(() => {\n const selector =\n part === \"body\"\n ? `td[data-row-index=\"${rowIdx}\"][data-column-index=\"${colIdx}\"]`\n : `th[data-column-index=\"${colIdx}\"]`;\n const nodeToFocus = rootRef.current?.querySelector(selector);\n if (nodeToFocus) {\n (nodeToFocus as HTMLElement).focus({ preventScroll: true });\n } else {\n console.warn(`focusCellElement can't find the element`);\n }\n }, 0);\n };\n\n const startEditMode = (text?: string) => {\n if (editMode || cursorRowIdx == undefined || cursorColIdx == undefined) {\n return;\n }\n const c = cols[cursorColIdx];\n const isEditable = !!contextValue.getEditor(c.info.props.id);\n if (isEditable) {\n setInitialText(text);\n setEditMode(true);\n }\n };\n\n const endEditMode = (value: string) => {\n if (!editMode) {\n return;\n }\n if (cursorColIdx == undefined) {\n console.error(`endEditMode: cursorColIdx is undefined in edit mode`);\n return;\n }\n const c = cols[cursorColIdx];\n const handler = c.info.props.onChange;\n if (cursorRowIdx == undefined) {\n console.error(`endEditMode: cursorRowIdx is undefined in edit mode`);\n return;\n }\n if (!handler) {\n console.warn(\n `onChange is not specified for editable column \"${c.info.props.id}\".`\n );\n } else {\n handler(sortedRowData[cursorRowIdx], cursorRowIdx, value);\n }\n setEditMode(false);\n focusCellElement(focusedPart, cursorRowIdx, cursorColIdx);\n };\n\n const cancelEditMode = () => {\n if (!editMode) {\n return;\n }\n setEditMode(false);\n if (cursorRowIdx != null && cursorColIdx != null) {\n focusCellElement(focusedPart, cursorRowIdx, cursorColIdx);\n }\n };\n\n const {\n selRowIdxs,\n isAllSelected,\n isAnySelected,\n selectAll,\n selectRows,\n unselectAll,\n onMouseDown: onRowSelectionMouseDown,\n } = useRowSelection(\n rowKeyGetter,\n sortedRowData,\n defaultSelectedRowIdxs,\n selectedRowIdxs,\n rowSelectionMode,\n onRowSelected\n );\n\n const rangeSelection = useRangeSelection(cellSelectionMode);\n\n const moveCursor = useCallback(\n (part: FocusedPart, rowIdx: number, colIdx: number) => {\n if (!headerIsFocusable && part === \"header\") {\n console.warn(\n `Cannot move focus to the header. \"headerIsFocusable\" prop is false.`\n );\n return;\n }\n setFocusedPart(part);\n colIdx = clamp(colIdx, 0, cols.length - 1);\n if (part === \"body\") {\n if (sortedRowData.length < 1 || cols.length < 1) {\n return;\n }\n rowIdx = clamp(rowIdx, 0, sortedRowData.length - 1);\n } else if (part === \"header\") {\n rowIdx = 0; // There is only one row in the header currently\n }\n setCursorRowIdx(rowIdx);\n setCursorColIdx(colIdx);\n scrollToCell(part, rowIdx, colIdx);\n focusCellElement(part, rowIdx, colIdx);\n if (part === \"body\") {\n rangeSelection.onCursorMove({ rowIdx, colIdx });\n }\n },\n [\n setCursorRowIdx,\n setCursorColIdx,\n sortedRowData,\n rowKeyGetter,\n cols,\n rootRef.current,\n scrollToCell,\n endEditMode,\n rangeSelection.onCursorMove,\n focusedPart,\n headerIsFocusable,\n ]\n );\n\n const rows = useRowModels(rowKeyGetter, sortedRowData, visRowRng);\n\n const isLeftRaised = scrollLeft > 0;\n const isRightRaised = scrollLeft + clientMidWidth < midWidth;\n const isHeaderRaised = scrollTop > 0;\n\n const resizeColumn = useCallback(\n (colIdx: number, width: number) => {\n const col = cols[colIdx];\n col.info.onWidthChanged(width);\n },\n [cols]\n );\n\n const onResizeHandleMouseDown = useColumnResize(cols, resizeColumn);\n\n const sizingContext: SizingContext = useMemo(\n () => ({\n resizeColumn,\n rowHeight,\n onResizeHandleMouseDown,\n }),\n [resizeColumn, rowHeight, onResizeHandleMouseDown]\n );\n\n const layoutContext: LayoutContext = useMemo(\n () => ({\n totalHeight,\n totalWidth,\n clientWidth,\n clientHeight,\n }),\n [totalHeight, totalWidth]\n );\n\n const editorContext: EditorContext = useMemo(\n () => ({\n initialText,\n editMode,\n startEditMode,\n endEditMode,\n cancelEditMode,\n }),\n [editMode, startEditMode, endEditMode, cancelEditMode, initialText]\n );\n\n const [isFocused, setFocused] = useState<boolean>(false);\n\n const onFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n setFocused(true);\n },\n [setFocused]\n );\n\n const onBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n setFocused(false);\n },\n [setFocused]\n );\n\n const cursorContext: CursorContext = useMemo(\n () => ({\n isFocused,\n cursorRowIdx,\n cursorColIdx,\n moveCursor,\n focusedPart,\n headerIsFocusable: Boolean(headerIsFocusable),\n }),\n [\n cursorRowIdx,\n cursorColIdx,\n moveCursor,\n isFocused,\n focusedPart,\n headerIsFocusable,\n ]\n );\n\n const onColumnMove: GridColumnMoveHandler = (\n columnId,\n fromIndex,\n toIndex\n ) => {\n if (onColumnMoved && fromIndex !== toIndex) {\n onColumnMoved(columnId, fromIndex, toIndex);\n }\n };\n\n const {\n dragState,\n onColumnMoveHandleMouseDown,\n activeTarget,\n onColumnMoveCancel,\n } = useColumnMove(\n columnMove,\n rootRef,\n leftCols,\n midCols,\n rightCols,\n cols,\n scrollLeft,\n clientMidWidth,\n onColumnMove\n );\n\n const columnDragContext: ColumnDragContext = useMemo(\n () => ({\n columnMove,\n onColumnMoveHandleMouseDown,\n }),\n [columnMove, onColumnMoveHandleMouseDown]\n );\n\n const onMouseDown: MouseEventHandler<HTMLDivElement> = (event) => {\n onRowSelectionMouseDown(event);\n rangeSelection.onCellMouseDown(event);\n\n const target = event.target as HTMLElement;\n try {\n const { part, rowIndex, columnIndex } = getFocusablePosition(target);\n if (part === \"header\" && !headerIsFocusable) {\n return;\n }\n moveCursor(part, rowIndex, columnIndex);\n } catch (e) {\n // TODO\n }\n };\n\n const onKeyUp: KeyboardEventHandler<HTMLDivElement> = useCallback(\n (event) => {\n const { key } = event;\n if (key === \"Shift\") {\n rangeSelection.onKeyboardRangeSelectionEnd();\n }\n },\n [rangeSelection.onKeyboardRangeSelectionEnd]\n );\n\n const editModeKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n switch (key) {\n case \"F2\":\n case \"Enter\":\n startEditMode();\n break;\n case \"Backspace\":\n startEditMode(\"\");\n break;\n case \"Escape\":\n if (editMode) {\n cancelEditMode();\n break;\n } else {\n return false;\n }\n default:\n if (\n !editMode &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n /^[\\w\\d ]$/.test(key)\n ) {\n startEditMode(key);\n } else {\n return false;\n }\n }\n event.preventDefault();\n event.stopPropagation();\n return true;\n },\n [startEditMode, editMode, cancelEditMode]\n );\n\n const selectionKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n switch (key) {\n case \"Shift\":\n rangeSelection.onKeyboardRangeSelectionStart({\n rowIdx: cursorRowIdx || 0,\n colIdx: cursorColIdx || 0,\n });\n break;\n case \" \":\n if (focusedPart === \"body\") {\n if (event.ctrlKey) {\n if (cursorColIdx != undefined) {\n rangeSelection.selectRange({\n start: { rowIdx: 0, colIdx: cursorColIdx },\n end: { rowIdx: sortedRowData.length, colIdx: cursorColIdx },\n });\n }\n } else {\n if (cursorRowIdx != undefined) {\n selectRows({\n rowIndex: cursorRowIdx,\n isRange: false,\n incremental: true,\n unselectOtherRows: !event.shiftKey,\n });\n }\n }\n break;\n } else {\n return false;\n }\n case \"a\":\n if (event.ctrlKey || event.metaKey) {\n rangeSelection.selectRange({\n start: { rowIdx: 0, colIdx: 0 },\n end: { rowIdx: sortedRowData.length, colIdx: cols.length },\n });\n selectAll();\n return true;\n } else {\n return false;\n }\n default:\n return false;\n }\n event.preventDefault();\n event.stopPropagation();\n return true;\n },\n [\n rangeSelection.selectRange,\n rangeSelection.onKeyboardRangeSelectionStart,\n selectRows,\n selectAll,\n cursorColIdx,\n cursorRowIdx,\n sortedRowData.length,\n cols.length,\n focusedPart,\n ]\n );\n\n const clipboardKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n if (\n key === \"c\" &&\n (event.ctrlKey || event.metaKey) &&\n rangeSelection.selectedCellRange\n ) {\n const { start, end } = rangeSelection.selectedCellRange;\n const c = (x: number, y: number) => x - y;\n const [minRow, maxRow] = [start.rowIdx, end.rowIdx].sort(c);\n const [minCol, maxCol] = [start.colIdx, end.colIdx].sort(c);\n const text: string[] = [];\n for (let r = minRow; r <= maxRow; ++r) {\n const row = sortedRowData[r];\n const rowText: string[] = [];\n for (let c = minCol; c <= maxCol; ++c) {\n const col = cols[c]!;\n const cellValue = col.info.props.getValue!(row);\n rowText.push(cellValue);\n }\n text.push(rowText.join(\"\\t\"));\n }\n navigator.clipboard.writeText(text.join(\"\\n\"));\n event.preventDefault();\n event.stopPropagation();\n return true;\n }\n return false;\n },\n [rangeSelection.selectedCellRange]\n );\n\n const pageSize = Math.max(1, visRowRng.length - 1);\n\n const navigationKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n switch (key) {\n case \"ArrowLeft\":\n moveCursor(focusedPart, cursorRowIdx, (cursorColIdx || 0) - 1);\n break;\n case \"ArrowRight\":\n moveCursor(focusedPart, cursorRowIdx, (cursorColIdx || 0) + 1);\n break;\n case \"ArrowUp\":\n if (cursorRowIdx === 0 && headerIsFocusable) {\n moveCursor(\"header\", 0, cursorColIdx);\n } else {\n moveCursor(focusedPart, (cursorRowIdx || 0) - 1, cursorColIdx);\n }\n break;\n case \"ArrowDown\":\n if (focusedPart === \"header\") {\n moveCursor(\"body\", 0, cursorColIdx);\n } else {\n moveCursor(focusedPart, (cursorRowIdx || 0) + 1, cursorColIdx);\n }\n break;\n case \"PageUp\":\n if (cursorRowIdx === 0 && headerIsFocusable) {\n moveCursor(\"header\", 0, cursorColIdx);\n } else {\n moveCursor(\n focusedPart,\n (cursorRowIdx || 0) - pageSize,\n cursorColIdx\n );\n }\n break;\n case \"PageDown\":\n if (focusedPart === \"header\") {\n moveCursor(\"body\", 0, cursorColIdx);\n } else {\n moveCursor(\n focusedPart,\n (cursorRowIdx || 0) + pageSize,\n cursorColIdx\n );\n }\n break;\n case \"Home\":\n if (!event.ctrlKey) {\n moveCursor(focusedPart, cursorRowIdx, 0);\n } else {\n moveCursor(focusedPart, 0, 0);\n }\n break;\n case \"End\":\n if (!event.ctrlKey) {\n moveCursor(focusedPart, cursorRowIdx, cols.length - 1);\n } else {\n moveCursor(focusedPart, sortedRowData.length - 1, cols.length - 1);\n }\n break;\n case \"Tab\":\n if (\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n editMode &&\n cursorColIdx != null &&\n cursorRowIdx != null\n ) {\n if (!event.shiftKey) {\n if (cursorColIdx < cols.length - 1) {\n moveCursor(focusedPart, cursorRowIdx, cursorColIdx + 1);\n } else {\n if (cursorRowIdx < sortedRowData.length - 1) {\n moveCursor(focusedPart, cursorRowIdx + 1, 0);\n }\n }\n } else {\n if (cursorColIdx > 0) {\n moveCursor(focusedPart, cursorRowIdx, cursorColIdx - 1);\n } else {\n if (cursorRowIdx > 0) {\n moveCursor(focusedPart, cursorRowIdx - 1, cols.length - 1);\n }\n }\n }\n } else {\n return false;\n }\n break;\n case \"Enter\":\n if (\n editMode &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n !event.shiftKey\n ) {\n if (cursorRowIdx == undefined) {\n moveCursor(focusedPart, 0, 0);\n } else {\n moveCursor(focusedPart, cursorRowIdx + 1, cursorColIdx);\n }\n } else {\n return false;\n }\n break;\n default:\n return false;\n }\n event.preventDefault();\n event.stopPropagation();\n return true;\n },\n [\n moveCursor,\n cursorRowIdx,\n cursorRowIdx,\n cols.length,\n sortedRowData.length,\n headerIsFocusable,\n pageSize,\n ]\n );\n\n const columnMoveKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n if (key === \"Escape\") {\n onColumnMoveCancel();\n event.preventDefault();\n event.stopPropagation();\n return true;\n }\n return false;\n },\n []\n );\n\n const onKeyDown: KeyboardEventHandler<HTMLDivElement> = useCallback(\n (event) => {\n if (cursorColIdx != undefined && cursorRowIdx != undefined) {\n const column = cols[cursorColIdx];\n if (column.info.props.onKeyDown) {\n column.info.props.onKeyDown(event, cursorRowIdx);\n }\n }\n if (!event.isPropagationStopped()) {\n // each handler returns true or false\n // if the event is handled and should not be handled by anything else return true\n // if the event is not handled and we should keep trying other handlers return false\n [\n navigationKeyHandler,\n clipboardKeyHandler,\n selectionKeyHandler,\n editModeKeyHandler,\n columnMoveKeyHandler,\n ].find((handler) => {\n return handler(event);\n });\n }\n },\n [\n navigationKeyHandler,\n clipboardKeyHandler,\n selectionKeyHandler,\n editModeKeyHandler,\n columnMoveKeyHandler,\n ]\n );\n\n const selectionContext: SelectionContext = useMemo(\n () => ({\n selRowIdxs,\n selectRows,\n isAllSelected,\n isAnySelected,\n selectAll,\n unselectAll,\n selectedCellRange: rangeSelection?.selectedCellRange,\n }),\n [\n selRowIdxs,\n selectRows,\n isAllSelected,\n isAnySelected,\n selectAll,\n unselectAll,\n rangeSelection?.selectedCellRange,\n ]\n );\n\n useEffect(() => {\n if (onVisibleRowRangeChange) {\n onVisibleRowRangeChange(visRowRng.start, visRowRng.end);\n }\n }, [onVisibleRowRangeChange, visRowRng]);\n\n return (\n <GridContext.Provider value={contextValue}>\n <LayoutContext.Provider value={layoutContext}>\n <SelectionContext.Provider value={selectionContext}>\n <ColumnDragContext.Provider value={columnDragContext}>\n <CursorContext.Provider value={cursorContext}>\n <SizingContext.Provider value={sizingContext}>\n <EditorContext.Provider value={editorContext}>\n <ColumnDataContext.Provider value={columnDataContext}>\n <ColumnSortContext.Provider value={columnSortContext}>\n {props.children}\n <div\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"zebra\")]: zebra,\n [withBaseName(\"columnSeparators\")]:\n columnSeparators,\n [withBaseName(\"pinnedSeparators\")]:\n pinnedSeparators,\n [withBaseName(\"primaryBackground\")]:\n variant === \"primary\",\n [withBaseName(\"secondaryBackground\")]:\n variant === \"secondary\",\n },\n className\n )}\n style={rootStyle}\n ref={rootRef}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n onMouseDown={onMouseDown}\n onFocus={onFocus}\n onBlur={onBlur}\n data-name=\"grid-root\"\n role=\"grid\"\n aria-colcount={cols.length}\n aria-rowcount={rowCount + headRowCount}\n aria-multiselectable={rowSelectionMode === \"multi\"}\n >\n <CellMeasure setRowHeight={setRowHeight} />\n <Scrollable\n resizeClient={resizeClient}\n scrollLeft={scrollLeft}\n scrollTop={scrollTop}\n scrollSource={scrollSource}\n scroll={scroll}\n scrollerRef={scrollableRef}\n topRef={topRef}\n rightRef={rightRef}\n bottomRef={bottomRef}\n leftRef={leftRef}\n middleRef={middleRef}\n />\n {!hideHeader && leftCols.length > 0 && (\n <TopLeftPart\n onWheel={onWheel}\n columns={leftCols}\n columnGroups={leftGroups}\n rightShadow={isLeftRaised}\n bottomShadow={isHeaderRaised}\n />\n )}\n {!hideHeader && (\n <TopPart\n columns={headVisibleColumns}\n columnGroups={visColGrps}\n topRef={topRef}\n onWheel={onWheel}\n midGap={midGap}\n bottomShadow={isHeaderRaised}\n />\n )}\n {!hideHeader && rightCols.length > 0 && (\n <TopRightPart\n onWheel={onWheel}\n columns={rightCols}\n columnGroups={rightGroups}\n leftShadow={isRightRaised}\n bottomShadow={isHeaderRaised}\n />\n )}\n {leftCols.length > 0 && (\n <LeftPart\n leftRef={leftRef}\n onWheel={onWheel}\n columns={leftCols}\n rows={rows}\n rightShadow={isLeftRaised}\n hoverOverRowKey={hoverRowKey}\n setHoverOverRowKey={setHoverRowKey}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n )}\n <MiddlePart\n middleRef={middleRef}\n onWheel={onWheel}\n columns={bodyVisibleColumns}\n rows={rows}\n hoverOverRowKey={hoverRowKey}\n setHoverOverRowKey={setHoverRowKey}\n midGap={midGap}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n {rightCols.length > 0 && (\n <RightPart\n rightRef={rightRef}\n onWheel={onWheel}\n columns={rightCols}\n rows={rows}\n leftShadow={isRightRaised}\n hoverOverRowKey={hoverRowKey}\n setHoverOverRowKey={setHoverRowKey}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n )}\n <ColumnDropTarget x={activeTarget?.x} />\n <ColumnGhost\n columns={cols}\n rows={rows}\n dragState={dragState}\n zebra={zebra}\n />\n </div>\n </ColumnSortContext.Provider>\n </ColumnDataContext.Provider>\n </EditorContext.Provider>\n </SizingContext.Provider>\n </CursorContext.Provider>\n </ColumnDragContext.Provider>\n </SelectionContext.Provider>\n </LayoutContext.Provider>\n </GridContext.Provider>\n );\n};\n"],"names":["makePrefixer","SortOrder","Grid","useWindow","useComponentCssInjection","gridCss","useRef","useState","useCallback","useColumnRegistry","useMemo","useSumWidth","useSum","useClientMidWidth","useBodyVisibleColumnRange","useVisibleColumnGroupRange","useHeadVisibleColumnRange","useLeftScrolledOutWidth","useClientMidHeight","useVisibleRowRange","useBodyVisibleAreaTop","useColumnRange","useSumRangeWidth","useScrollToCell","_a","useRowSelection","useRangeSelection","clamp","useRowModels","useColumnResize","useColumnMove","getFocusablePosition","c","useEffect","jsx","GridContext","LayoutContext","SelectionContext","ColumnDragContext","CursorContext","SizingContext","EditorContext","ColumnDataContext","jsxs","ColumnSortContext","clsx","CellMeasure","Scrollable","TopLeftPart","TopPart","TopRightPart","LeftPart","MiddlePart","RightPart","ColumnDropTarget","ColumnGhost"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Grid.js","sources":["../src/Grid.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type CSSProperties,\n type KeyboardEvent,\n type KeyboardEventHandler,\n type MouseEventHandler,\n type ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { ColumnDataContext } from \"./ColumnDataContext\";\nimport { ColumnDragContext } from \"./ColumnDragContext\";\nimport type { ColumnGroupProps } from \"./ColumnGroup\";\nimport { ColumnSortContext } from \"./ColumnSortContext\";\nimport { CursorContext, type FocusedPart } from \"./CursorContext\";\nimport { EditorContext } from \"./EditorContext\"; // TODO remove\nimport type {\n CellValidationState,\n GridColumnInfo,\n GridColumnProps,\n} from \"./GridColumn\";\nimport { GridContext } from \"./GridContext\";\nimport { LayoutContext } from \"./LayoutContext\";\nimport { SelectionContext } from \"./SelectionContext\";\nimport { SizingContext } from \"./SizingContext\";\nimport {\n CellMeasure,\n LeftPart,\n MiddlePart,\n RightPart,\n Scrollable,\n type ScrollableProps,\n TopLeftPart,\n TopPart,\n TopRightPart,\n clamp,\n getFocusablePosition,\n useBodyVisibleAreaTop,\n useBodyVisibleColumnRange,\n useClientMidHeight,\n useClientMidWidth,\n useColumnMove,\n useColumnRange,\n useColumnRegistry,\n useColumnResize,\n useHeadVisibleColumnRange,\n useLeftScrolledOutWidth,\n useRangeSelection,\n useRowModels,\n useRowSelection,\n useScrollToCell,\n useSum,\n useSumRangeWidth,\n useSumWidth,\n useVisibleColumnGroupRange,\n useVisibleRowRange,\n} from \"./internal\";\nimport { ColumnDropTarget } from \"./internal/ColumnDropTarget\";\nimport { ColumnGhost } from \"./internal/ColumnGhost\";\n\nimport gridCss from \"./Grid.css\";\n\nconst withBaseName = makePrefixer(\"saltGrid\");\n\nexport type ColumnSeparatorType = \"regular\" | \"none\" | \"groupEdge\" | \"pinned\";\nexport type ColumnGroupRowSeparatorType = \"first\" | \"regular\" | \"last\";\nexport type ColumnGroupColumnSeparatorType = \"regular\" | \"none\" | \"pinned\";\nexport type GridRowSelectionMode = \"single\" | \"multi\" | \"none\";\nexport type GridCellSelectionMode = \"range\" | \"none\";\n\nexport enum SortOrder {\n ASC = \"asc\",\n DESC = \"desc\",\n NONE = \"none\",\n}\n\nexport type RowKeyGetter<T> = (row: T, index: number) => string;\n\nexport type GridColumnMoveHandler = (\n columnId: string,\n fromIndex: number,\n toIndex: number,\n) => void;\n\nexport interface GridProps<T = any> {\n /**\n * At least 1 children is expected, options are `ColumnGroup` or `GridColumn`.\n * */\n children: ReactNode;\n /**\n * If `true`, zebra stripes are enabled (odd/even rows have alternate colours)\n * */\n zebra?: boolean;\n /**\n * If `true`, grid header is hidden.\n * */\n hideHeader?: boolean;\n /**\n * If `true`, column separators are rendered.\n * */\n columnSeparators?: boolean;\n /**\n * If `true`, separators are rendered between pinned and unpinned columns.\n * */\n pinnedSeparators?: boolean;\n /**\n * Row data objects. Sparse arrays are supported.\n * */\n rowData: T[];\n /**\n * Should return unique string for a given row data object.\n * If rowData is sparse then this function should work with undefined row data\n * objects and create keys based on row index. `(row: T, index: number) => string`\n * */\n rowKeyGetter?: RowKeyGetter<T>;\n /**\n * Rows with these indices are selected by default.\n * */\n defaultSelectedRowIdxs?: number[];\n /**\n * Selected row indices for controlled mode.\n * */\n selectedRowIdxs?: number[];\n className?: string;\n style?: CSSProperties;\n /**\n * The variant to use. Options are `primary` and `secondary`. Default value is\n * `primary`. `secondary` variant changes grid background to reduce contrast.\n * */\n variant?: \"primary\" | \"secondary\";\n /**\n * Options are `single`, `multi` and `none`.\n * */\n rowSelectionMode?: GridRowSelectionMode;\n onRowSelected?: (selectedRowIdxs: number[]) => void;\n /**\n * If `true`, user will be able to move columns using drag and drop.\n * */\n columnMove?: boolean;\n /**\n * Accepts `(columnId: string, fromIndex: number, toIndex: number) => void`\n * */\n onColumnMoved?: GridColumnMoveHandler;\n /**\n * Options are `range` and `none`.\n * */\n cellSelectionMode?: GridCellSelectionMode;\n onVisibleRowRangeChange?: (start: number, end: number) => void;\n /**\n * If `true`, keyboard navigation is enabled for the header.\n * */\n headerIsFocusable?: boolean;\n\n getRowValidationStatus?: (\n row: GridRowModel<T>,\n ) => CellValidationState | undefined;\n}\n\nexport interface GridRowModel<T> {\n key: string;\n index: number;\n data: T;\n}\n\nexport interface GridColumnModel<T> {\n index: number;\n separator: ColumnSeparatorType;\n\n info: GridColumnInfo<T>;\n}\n\nexport interface GridColumnGroupModel {\n index: number;\n data: ColumnGroupProps;\n childrenIds: string[];\n rowSeparator: ColumnGroupRowSeparatorType;\n columnSeparator: ColumnGroupColumnSeparatorType;\n colSpan: number;\n}\n\nfunction defaultRowKeyGetter<T>(row: T, index: number): string {\n return `${index}`;\n}\n\nexport const Grid = function Grid<T>(props: GridProps<T>) {\n const {\n rowData,\n zebra,\n hideHeader,\n columnSeparators,\n pinnedSeparators = true,\n className,\n style,\n rowKeyGetter = defaultRowKeyGetter,\n children,\n defaultSelectedRowIdxs,\n selectedRowIdxs,\n variant = \"primary\",\n rowSelectionMode = \"multi\",\n onRowSelected,\n columnMove,\n onColumnMoved,\n cellSelectionMode = \"none\",\n onVisibleRowRangeChange,\n headerIsFocusable,\n getRowValidationStatus,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-grid\",\n css: gridCss,\n window: targetWindow,\n });\n\n const rootRef = useRef<HTMLDivElement>(null);\n const scrollableRef = useRef<HTMLDivElement>(null);\n const middleRef = useRef<HTMLDivElement>(null);\n const topRef = useRef<HTMLDivElement>(null);\n const leftRef = useRef<HTMLDivElement>(null);\n const rightRef = useRef<HTMLDivElement>(null);\n const bottomRef = useRef<HTMLDivElement>(null);\n\n // What caused the latest scroll change. User means the UI (mouse events), table means the component initiated scrolling (scrollToCell was called for example)\n const [scrollSource, setScrollSource] = useState<\"user\" | \"table\">(\"user\");\n const [scrollLeft, setScrollLeft] = useState<number>(0);\n const [scrollTop, setScrollTop] = useState<number>(0);\n\n const [hoverRowKey, setHoverRowKey] = useState<string | undefined>(undefined);\n\n const [\n { clientWidth, clientHeight, scrollBarHeight, scrollBarWidth },\n setDimensions,\n ] = useState({\n clientWidth: 0,\n clientHeight: 0,\n scrollBarHeight: 0,\n scrollBarWidth: 0,\n });\n\n const [rowHeight, setRowHeight] = useState<number>(0);\n\n const [cursorRowIdx, setCursorRowIdx] = useState<number>(0);\n const [cursorColIdx, setCursorColIdx] = useState<number>(0);\n const [focusedPart, setFocusedPart] = useState<FocusedPart>(\n headerIsFocusable ? \"header\" : \"body\",\n );\n\n const [sortByColumnId, setSortByColumnId] =\n useState<GridColumnProps[\"id\"]>(\"\");\n const [sortOrder, setSortOrder] = useState<SortOrder>(SortOrder.NONE);\n\n const [editMode, setEditMode] = useState<boolean>(false);\n const [initialText, setInitialText] = useState<string | undefined>(undefined);\n\n const resizeClient: ScrollableProps<T>[\"resizeClient\"] = useCallback(\n (dimensions) => {\n setDimensions(dimensions);\n },\n [],\n );\n\n const {\n leftCols, // Columns pinned to left\n midCols, // Scrollable columns\n rightCols, // Columns pinned to right\n leftGroups,\n midGroups,\n rightGroups,\n contextValue,\n } = useColumnRegistry<T>(children);\n\n const midColsById = useMemo(\n () =>\n new Map<string, GridColumnModel<T>>(\n midCols.map(\n (c) => [c.info.props.id, c] as [string, GridColumnModel<T>],\n ),\n ),\n [midCols],\n );\n\n // Width of all columns pinned to left\n const leftWidth = useSumWidth(leftCols);\n // Width of all scrollable columns\n const midWidth = useSumWidth(midCols);\n // Width of all columns pinned to right\n const rightWidth = useSumWidth(rightCols);\n // Total width of all columns\n const totalWidth = useSum([leftWidth, midWidth, rightWidth]);\n\n const hasColumnGroups =\n leftGroups.length > 0 || midGroups.length > 0 || rightGroups.length > 0;\n\n const headRowCount = hideHeader ? 0 : hasColumnGroups ? 2 : 1; // TODO multiple group levels\n const rowCount = rowData.length;\n\n // Footer is not implemented yet.\n const botRowCount = 0; // TODO\n // Height of the header\n const topHeight = rowHeight * headRowCount;\n // Height of the middle part (virtual height)\n const midHeight = rowCount === 0 ? 0 : rowHeight * rowCount + 1;\n // Height of the footer\n const botHeight = botRowCount * rowHeight;\n // Total height of the grid (virtual)\n const totalHeight = useSum([topHeight, midHeight, botHeight]);\n // Client width of the middle part of the grid (viewport)\n const clientMidWidth = useClientMidWidth(clientWidth, leftWidth, rightWidth);\n // Unused width in the middle part, to be filled by an empty column with fake cells.\n const midGap = Math.max(0, Math.floor(clientMidWidth - midWidth));\n\n // Range of unpinned columns visible in the body of the grid (pinned columns are always visible).\n const bodyVisColRng = useBodyVisibleColumnRange(\n midCols,\n scrollLeft,\n clientMidWidth,\n );\n\n const midGrpByColId = useMemo(() => {\n const m = new Map<string, GridColumnGroupModel>();\n for (const g of midGroups) {\n for (const c of g.childrenIds) {\n m.set(c, g);\n }\n }\n return m;\n }, [midGroups]);\n\n // Range of visible column groups.\n const visColGrpRng = useVisibleColumnGroupRange(\n bodyVisColRng,\n midCols,\n midGrpByColId,\n leftGroups.length,\n );\n\n const visColGrps = useMemo(() => {\n return midGroups.slice(visColGrpRng.start, visColGrpRng.end);\n }, [visColGrpRng, midGroups]);\n\n const headVisColRng = useHeadVisibleColumnRange(\n bodyVisColRng,\n visColGrps,\n midColsById,\n leftCols.length,\n );\n\n const bodyScrOutColWh = useLeftScrolledOutWidth(midCols, bodyVisColRng);\n const headScrOutColWh = useLeftScrolledOutWidth(midCols, headVisColRng);\n\n const bodyVisAreaLeft = useSum([leftWidth, bodyScrOutColWh]);\n const headVisAreaLeft = useSum([leftWidth, headScrOutColWh]);\n const clientMidHeight = useClientMidHeight(\n clientHeight,\n topHeight,\n botHeight,\n );\n const visRowRng = useVisibleRowRange(\n scrollTop,\n clientMidHeight,\n rowHeight,\n rowCount,\n );\n\n const bodyVisAreaTop = useBodyVisibleAreaTop(rowHeight, visRowRng, topHeight);\n\n const bodyVisibleColumns = useColumnRange(midCols, bodyVisColRng);\n const headVisibleColumns = useColumnRange(midCols, headVisColRng);\n const bodyVisColWh = useSumRangeWidth(midCols, bodyVisColRng);\n\n const headVisColWh = bodyVisColWh; // TODO implement groups\n\n const rootStyle = useMemo(\n () => ({\n ...style,\n \"--grid-total-width\": `${totalWidth}px`,\n \"--grid-total-height\": `${totalHeight}px`,\n \"--grid-topPart-height\": `${topHeight}px`,\n \"--grid-leftPart-width\": `${leftWidth}px`,\n \"--grid-rightPart-width\": `${rightWidth}px`,\n \"--grid-bodyVisibleColumns-width\": `${bodyVisColWh}px`,\n \"--grid-bodyVisibleArea-top\": `${bodyVisAreaTop}px`,\n \"--grid-bodyVisibleArea-left\": `${bodyVisAreaLeft}px`,\n \"--grid-bottomHeight\": `${botHeight}px`,\n \"--grid-headerVisibleColumns-width\": `${headVisColWh}px`,\n \"--grid-headerVisibleArea-left\": `${headVisAreaLeft}px`,\n \"--grid-scrollBar-height\": `${scrollBarHeight}px`,\n \"--grid-scrollBar-width\": `${scrollBarWidth}px`,\n }),\n [\n style,\n totalHeight,\n totalWidth,\n topHeight,\n leftWidth,\n rightWidth,\n botHeight,\n bodyVisColWh,\n bodyVisAreaLeft,\n bodyVisAreaTop,\n headVisColWh,\n headVisAreaLeft,\n scrollBarHeight,\n scrollBarWidth,\n ],\n );\n\n const onWheel: EventListener = useCallback(\n (event) => {\n let { deltaX, deltaY, shiftKey } = event as WheelEvent;\n if (deltaX === 0 && shiftKey) {\n deltaX = deltaY;\n deltaY = 0;\n }\n const s = scrollableRef.current;\n if (s) {\n s.scrollLeft += deltaX;\n s.scrollTop += deltaY;\n if (\n !(\n (\n Math.round(s.scrollHeight - s.scrollTop) === s.clientHeight || // reached the bottom\n (s.scrollTop === 0 && deltaY < 0)\n ) // reached the top (upward scroll)\n )\n ) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n },\n [scrollableRef.current],\n );\n\n const cols = useMemo(\n () => [...leftCols, ...midCols, ...rightCols],\n [leftCols, midCols, rightCols],\n );\n\n const colsById = useMemo(\n () =>\n new Map<string, GridColumnModel<T>>(\n cols.map((c) => [c.info.props.id, c] as [string, GridColumnModel<T>]),\n ),\n [cols],\n );\n\n const getColById = useCallback(\n (id: string) => {\n return colsById.get(id);\n },\n [colsById],\n );\n\n const columnDataContext: ColumnDataContext<T> = useMemo(\n () => ({\n getColById,\n }),\n [getColById],\n );\n\n const isSortMode = sortByColumnId && sortOrder !== SortOrder.NONE;\n\n const onSortOrderChange =\n getColById(sortByColumnId)?.info.props.onSortOrderChange;\n\n const valueGetter =\n getColById(sortByColumnId)?.info.props.getValue ||\n ((r: T) => {\n return r[sortByColumnId as keyof typeof r];\n });\n\n const customSortingFn = getColById(sortByColumnId)?.info.props.customSort;\n\n const sortedRowData = useMemo(() => {\n if (!isSortMode || onSortOrderChange) return rowData;\n\n if (customSortingFn) {\n return customSortingFn({ rowData, sortOrder });\n }\n\n const sortedData = [...rowData].sort((a, b) =>\n valueGetter(a) < valueGetter(b) ? -1 : 1,\n );\n\n if (sortOrder === SortOrder.DESC) {\n return sortedData.reverse();\n }\n\n return sortedData;\n }, [\n onSortOrderChange,\n valueGetter,\n customSortingFn,\n isSortMode,\n rowData,\n sortByColumnId,\n sortOrder,\n ]);\n\n const onClickSortColumn = useCallback(\n (colHeaderId: GridColumnProps[\"id\"]) => {\n if (sortByColumnId === colHeaderId) {\n switch (sortOrder) {\n case SortOrder.ASC:\n setSortOrder(SortOrder.DESC);\n break;\n case SortOrder.DESC:\n setSortOrder(SortOrder.NONE);\n break;\n default:\n setSortOrder(SortOrder.ASC);\n }\n } else {\n setSortByColumnId(colHeaderId);\n setSortOrder(SortOrder.ASC);\n }\n },\n [sortByColumnId, sortOrder],\n );\n\n const columnSortContext: ColumnSortContext = useMemo(\n () => ({\n sortByColumnId,\n setSortByColumnId,\n sortOrder,\n setSortOrder,\n onClickSortColumn,\n }),\n [\n sortByColumnId,\n setSortByColumnId,\n sortOrder,\n setSortOrder,\n onClickSortColumn,\n ],\n );\n\n const scroll = useCallback(\n (left?: number, top?: number, source?: \"user\" | \"table\") => {\n setScrollSource(source || \"user\");\n if (left !== undefined) {\n setScrollLeft(left);\n }\n if (top !== undefined) {\n setScrollTop(top);\n }\n },\n [setScrollLeft, setScrollTop, setScrollSource],\n );\n\n const scrollToCell = useScrollToCell(\n visRowRng,\n rowHeight,\n clientMidHeight,\n midCols,\n bodyVisColRng,\n clientMidWidth,\n scroll,\n );\n\n const focusCellElement = (\n part: FocusedPart,\n rowIdx: number,\n colIdx: number,\n ) => {\n setTimeout(() => {\n const selector =\n part === \"body\"\n ? `td[data-row-index=\"${rowIdx}\"][data-column-index=\"${colIdx}\"]`\n : `th[data-column-index=\"${colIdx}\"]`;\n const nodeToFocus = rootRef.current?.querySelector(selector);\n if (nodeToFocus) {\n (nodeToFocus as HTMLElement).focus({ preventScroll: true });\n } else {\n console.warn(`focusCellElement can't find the element`);\n }\n }, 0);\n };\n\n const startEditMode = (text?: string) => {\n if (editMode || cursorRowIdx === undefined || cursorColIdx === undefined) {\n return;\n }\n const c = cols[cursorColIdx];\n const isEditable = !!contextValue.getEditor(c.info.props.id);\n if (isEditable) {\n setInitialText(text);\n setEditMode(true);\n }\n };\n\n const endEditMode = (value: string) => {\n if (!editMode) {\n return;\n }\n if (cursorColIdx === undefined) {\n console.error(\"endEditMode: cursorColIdx is undefined in edit mode\");\n return;\n }\n const c = cols[cursorColIdx];\n const handler = c.info.props.onChange;\n if (cursorRowIdx === undefined) {\n console.error(\"endEditMode: cursorRowIdx is undefined in edit mode\");\n return;\n }\n if (!handler) {\n console.warn(\n `onChange is not specified for editable column \"${c.info.props.id}\".`,\n );\n } else {\n handler(sortedRowData[cursorRowIdx], cursorRowIdx, value);\n }\n setEditMode(false);\n focusCellElement(focusedPart, cursorRowIdx, cursorColIdx);\n };\n\n const cancelEditMode = () => {\n if (!editMode) {\n return;\n }\n setEditMode(false);\n if (cursorRowIdx != null && cursorColIdx != null) {\n focusCellElement(focusedPart, cursorRowIdx, cursorColIdx);\n }\n };\n\n const {\n selRowIdxs,\n isAllSelected,\n isAnySelected,\n selectAll,\n selectRows,\n unselectAll,\n onMouseDown: onRowSelectionMouseDown,\n } = useRowSelection(\n rowKeyGetter,\n sortedRowData,\n defaultSelectedRowIdxs,\n selectedRowIdxs,\n rowSelectionMode,\n onRowSelected,\n );\n\n const rangeSelection = useRangeSelection(cellSelectionMode);\n\n const moveCursor = useCallback(\n (part: FocusedPart, rowIdx: number, colIdx: number) => {\n if (!headerIsFocusable && part === \"header\") {\n console.warn(\n `Cannot move focus to the header. \"headerIsFocusable\" prop is false.`,\n );\n return;\n }\n setFocusedPart(part);\n colIdx = clamp(colIdx, 0, cols.length - 1);\n if (part === \"body\") {\n if (sortedRowData.length < 1 || cols.length < 1) {\n return;\n }\n rowIdx = clamp(rowIdx, 0, sortedRowData.length - 1);\n } else if (part === \"header\") {\n rowIdx = 0; // There is only one row in the header currently\n }\n setCursorRowIdx(rowIdx);\n setCursorColIdx(colIdx);\n scrollToCell(part, rowIdx, colIdx);\n focusCellElement(part, rowIdx, colIdx);\n if (part === \"body\") {\n rangeSelection.onCursorMove({ rowIdx, colIdx });\n }\n },\n [\n setCursorRowIdx,\n setCursorColIdx,\n sortedRowData,\n rowKeyGetter,\n cols,\n rootRef.current,\n scrollToCell,\n endEditMode,\n rangeSelection.onCursorMove,\n focusedPart,\n headerIsFocusable,\n ],\n );\n\n const rows = useRowModels(rowKeyGetter, sortedRowData, visRowRng);\n\n const isLeftRaised = scrollLeft > 0;\n const isRightRaised = scrollLeft + clientMidWidth < midWidth;\n const isHeaderRaised = scrollTop > 0;\n\n const resizeColumn = useCallback(\n (colIdx: number, width: number) => {\n const col = cols[colIdx];\n col.info.onWidthChanged(width);\n },\n [cols],\n );\n\n const onResizeHandleMouseDown = useColumnResize(cols, resizeColumn);\n\n const sizingContext: SizingContext = useMemo(\n () => ({\n resizeColumn,\n rowHeight,\n onResizeHandleMouseDown,\n }),\n [resizeColumn, rowHeight, onResizeHandleMouseDown],\n );\n\n const layoutContext: LayoutContext = useMemo(\n () => ({\n totalHeight,\n totalWidth,\n clientWidth,\n clientHeight,\n }),\n [totalHeight, totalWidth],\n );\n\n const editorContext: EditorContext = useMemo(\n () => ({\n initialText,\n editMode,\n startEditMode,\n endEditMode,\n cancelEditMode,\n }),\n [editMode, startEditMode, endEditMode, cancelEditMode, initialText],\n );\n\n const [isFocused, setFocused] = useState<boolean>(false);\n\n const onFocus = useCallback(() => {\n setFocused(true);\n }, []);\n\n const onBlur = useCallback(() => {\n setFocused(false);\n }, []);\n\n const cursorContext: CursorContext = useMemo(\n () => ({\n isFocused,\n cursorRowIdx,\n cursorColIdx,\n moveCursor,\n focusedPart,\n headerIsFocusable: Boolean(headerIsFocusable),\n }),\n [\n cursorRowIdx,\n cursorColIdx,\n moveCursor,\n isFocused,\n focusedPart,\n headerIsFocusable,\n ],\n );\n\n const onColumnMove: GridColumnMoveHandler = (\n columnId,\n fromIndex,\n toIndex,\n ) => {\n if (onColumnMoved && fromIndex !== toIndex) {\n onColumnMoved(columnId, fromIndex, toIndex);\n }\n };\n\n const {\n dragState,\n onColumnMoveHandleMouseDown,\n activeTarget,\n onColumnMoveCancel,\n } = useColumnMove(\n columnMove,\n rootRef,\n leftCols,\n midCols,\n rightCols,\n cols,\n scrollLeft,\n clientMidWidth,\n onColumnMove,\n );\n\n const columnDragContext: ColumnDragContext = useMemo(\n () => ({\n columnMove,\n onColumnMoveHandleMouseDown,\n }),\n [columnMove, onColumnMoveHandleMouseDown],\n );\n\n const onMouseDown: MouseEventHandler<HTMLDivElement> = (event) => {\n onRowSelectionMouseDown(event);\n rangeSelection.onCellMouseDown(event);\n\n const target = event.target as HTMLElement;\n try {\n const { part, rowIndex, columnIndex } = getFocusablePosition(target);\n if (part === \"header\" && !headerIsFocusable) {\n return;\n }\n moveCursor(part, rowIndex, columnIndex);\n } catch (e) {\n // TODO\n }\n };\n\n const onKeyUp: KeyboardEventHandler<HTMLDivElement> = useCallback(\n (event) => {\n const { key } = event;\n if (key === \"Shift\") {\n rangeSelection.onKeyboardRangeSelectionEnd();\n }\n },\n [rangeSelection.onKeyboardRangeSelectionEnd],\n );\n\n const editModeKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n switch (key) {\n case \"F2\":\n case \"Enter\":\n startEditMode();\n break;\n case \"Backspace\":\n startEditMode(\"\");\n break;\n case \"Escape\":\n if (editMode) {\n cancelEditMode();\n break;\n }\n return false;\n default:\n if (\n !editMode &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n /^[\\w\\d ]$/.test(key)\n ) {\n startEditMode(key);\n } else {\n return false;\n }\n }\n event.preventDefault();\n event.stopPropagation();\n return true;\n },\n [startEditMode, editMode, cancelEditMode],\n );\n\n const selectionKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n switch (key) {\n case \"Shift\":\n rangeSelection.onKeyboardRangeSelectionStart({\n rowIdx: cursorRowIdx || 0,\n colIdx: cursorColIdx || 0,\n });\n break;\n case \" \":\n if (focusedPart === \"body\") {\n if (event.ctrlKey) {\n if (cursorColIdx !== undefined) {\n rangeSelection.selectRange({\n start: { rowIdx: 0, colIdx: cursorColIdx },\n end: { rowIdx: sortedRowData.length, colIdx: cursorColIdx },\n });\n }\n } else {\n if (cursorRowIdx !== undefined) {\n selectRows({\n rowIndex: cursorRowIdx,\n isRange: false,\n incremental: true,\n unselectOtherRows: !event.shiftKey,\n });\n }\n }\n break;\n }\n return false;\n case \"a\":\n if (event.ctrlKey || event.metaKey) {\n rangeSelection.selectRange({\n start: { rowIdx: 0, colIdx: 0 },\n end: { rowIdx: sortedRowData.length, colIdx: cols.length },\n });\n selectAll();\n return true;\n }\n return false;\n default:\n return false;\n }\n event.preventDefault();\n event.stopPropagation();\n return true;\n },\n [\n rangeSelection.selectRange,\n rangeSelection.onKeyboardRangeSelectionStart,\n selectRows,\n selectAll,\n cursorColIdx,\n cursorRowIdx,\n sortedRowData.length,\n cols.length,\n focusedPart,\n ],\n );\n\n const clipboardKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n if (\n key === \"c\" &&\n (event.ctrlKey || event.metaKey) &&\n rangeSelection.selectedCellRange\n ) {\n const { start, end } = rangeSelection.selectedCellRange;\n const c = (x: number, y: number) => x - y;\n const [minRow, maxRow] = [start.rowIdx, end.rowIdx].sort(c);\n const [minCol, maxCol] = [start.colIdx, end.colIdx].sort(c);\n const text: string[] = [];\n for (let r = minRow; r <= maxRow; ++r) {\n const row = sortedRowData[r];\n const rowText: string[] = [];\n for (let c = minCol; c <= maxCol; ++c) {\n const col = cols[c];\n const cellValue = col?.info.props.getValue?.(row);\n rowText.push(cellValue);\n }\n text.push(rowText.join(\"\\t\"));\n }\n navigator.clipboard.writeText(text.join(\"\\n\"));\n event.preventDefault();\n event.stopPropagation();\n return true;\n }\n return false;\n },\n [rangeSelection.selectedCellRange],\n );\n\n const pageSize = Math.max(1, visRowRng.length - 1);\n\n const navigationKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n switch (key) {\n case \"ArrowLeft\":\n moveCursor(focusedPart, cursorRowIdx, (cursorColIdx || 0) - 1);\n break;\n case \"ArrowRight\":\n moveCursor(focusedPart, cursorRowIdx, (cursorColIdx || 0) + 1);\n break;\n case \"ArrowUp\":\n if (cursorRowIdx === 0 && headerIsFocusable) {\n moveCursor(\"header\", 0, cursorColIdx);\n } else {\n moveCursor(focusedPart, (cursorRowIdx || 0) - 1, cursorColIdx);\n }\n break;\n case \"ArrowDown\":\n if (focusedPart === \"header\") {\n moveCursor(\"body\", 0, cursorColIdx);\n } else {\n moveCursor(focusedPart, (cursorRowIdx || 0) + 1, cursorColIdx);\n }\n break;\n case \"PageUp\":\n if (cursorRowIdx === 0 && headerIsFocusable) {\n moveCursor(\"header\", 0, cursorColIdx);\n } else {\n moveCursor(\n focusedPart,\n (cursorRowIdx || 0) - pageSize,\n cursorColIdx,\n );\n }\n break;\n case \"PageDown\":\n if (focusedPart === \"header\") {\n moveCursor(\"body\", 0, cursorColIdx);\n } else {\n moveCursor(\n focusedPart,\n (cursorRowIdx || 0) + pageSize,\n cursorColIdx,\n );\n }\n break;\n case \"Home\":\n if (!event.ctrlKey) {\n moveCursor(focusedPart, cursorRowIdx, 0);\n } else {\n moveCursor(focusedPart, 0, 0);\n }\n break;\n case \"End\":\n if (!event.ctrlKey) {\n moveCursor(focusedPart, cursorRowIdx, cols.length - 1);\n } else {\n moveCursor(focusedPart, sortedRowData.length - 1, cols.length - 1);\n }\n break;\n case \"Tab\":\n if (\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n editMode &&\n cursorColIdx != null &&\n cursorRowIdx != null\n ) {\n if (!event.shiftKey) {\n if (cursorColIdx < cols.length - 1) {\n moveCursor(focusedPart, cursorRowIdx, cursorColIdx + 1);\n } else {\n if (cursorRowIdx < sortedRowData.length - 1) {\n moveCursor(focusedPart, cursorRowIdx + 1, 0);\n }\n }\n } else {\n if (cursorColIdx > 0) {\n moveCursor(focusedPart, cursorRowIdx, cursorColIdx - 1);\n } else {\n if (cursorRowIdx > 0) {\n moveCursor(focusedPart, cursorRowIdx - 1, cols.length - 1);\n }\n }\n }\n } else {\n return false;\n }\n break;\n case \"Enter\":\n if (\n editMode &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n !event.shiftKey\n ) {\n if (cursorRowIdx === undefined) {\n moveCursor(focusedPart, 0, 0);\n } else {\n moveCursor(focusedPart, cursorRowIdx + 1, cursorColIdx);\n }\n } else {\n return false;\n }\n break;\n default:\n return false;\n }\n event.preventDefault();\n event.stopPropagation();\n return true;\n },\n [\n moveCursor,\n cursorRowIdx,\n cursorRowIdx,\n cols.length,\n sortedRowData.length,\n headerIsFocusable,\n pageSize,\n ],\n );\n\n const columnMoveKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n if (key === \"Escape\") {\n onColumnMoveCancel();\n event.preventDefault();\n event.stopPropagation();\n return true;\n }\n return false;\n },\n [],\n );\n\n const onKeyDown: KeyboardEventHandler<HTMLDivElement> = useCallback(\n (event) => {\n if (cursorColIdx !== undefined && cursorRowIdx !== undefined) {\n const column = cols[cursorColIdx];\n if (column.info.props.onKeyDown) {\n column.info.props.onKeyDown(event, cursorRowIdx);\n }\n }\n if (!event.isPropagationStopped()) {\n // each handler returns true or false\n // if the event is handled and should not be handled by anything else return true\n // if the event is not handled and we should keep trying other handlers return false\n [\n navigationKeyHandler,\n clipboardKeyHandler,\n selectionKeyHandler,\n editModeKeyHandler,\n columnMoveKeyHandler,\n ].find((handler) => {\n return handler(event);\n });\n }\n },\n [\n navigationKeyHandler,\n clipboardKeyHandler,\n selectionKeyHandler,\n editModeKeyHandler,\n columnMoveKeyHandler,\n ],\n );\n\n const selectionContext: SelectionContext = useMemo(\n () => ({\n selRowIdxs,\n selectRows,\n isAllSelected,\n isAnySelected,\n selectAll,\n unselectAll,\n selectedCellRange: rangeSelection?.selectedCellRange,\n }),\n [\n selRowIdxs,\n selectRows,\n isAllSelected,\n isAnySelected,\n selectAll,\n unselectAll,\n rangeSelection?.selectedCellRange,\n ],\n );\n\n useEffect(() => {\n if (onVisibleRowRangeChange) {\n onVisibleRowRangeChange(visRowRng.start, visRowRng.end);\n }\n }, [onVisibleRowRangeChange, visRowRng]);\n\n return (\n <GridContext.Provider value={contextValue}>\n <LayoutContext.Provider value={layoutContext}>\n <SelectionContext.Provider value={selectionContext}>\n <ColumnDragContext.Provider value={columnDragContext}>\n <CursorContext.Provider value={cursorContext}>\n <SizingContext.Provider value={sizingContext}>\n <EditorContext.Provider value={editorContext}>\n <ColumnDataContext.Provider value={columnDataContext}>\n <ColumnSortContext.Provider value={columnSortContext}>\n {props.children}\n <div\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"zebra\")]: zebra,\n [withBaseName(\"columnSeparators\")]:\n columnSeparators,\n [withBaseName(\"pinnedSeparators\")]:\n pinnedSeparators,\n [withBaseName(\"primaryBackground\")]:\n variant === \"primary\",\n [withBaseName(\"secondaryBackground\")]:\n variant === \"secondary\",\n },\n className,\n )}\n style={rootStyle}\n ref={rootRef}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n onMouseDown={onMouseDown}\n onFocus={onFocus}\n onBlur={onBlur}\n data-name=\"grid-root\"\n role=\"grid\"\n aria-colcount={cols.length}\n aria-rowcount={rowCount + headRowCount}\n aria-multiselectable={rowSelectionMode === \"multi\"}\n >\n <CellMeasure setRowHeight={setRowHeight} />\n <Scrollable\n resizeClient={resizeClient}\n scrollLeft={scrollLeft}\n scrollTop={scrollTop}\n scrollSource={scrollSource}\n scroll={scroll}\n scrollerRef={scrollableRef}\n topRef={topRef}\n rightRef={rightRef}\n bottomRef={bottomRef}\n leftRef={leftRef}\n middleRef={middleRef}\n />\n {!hideHeader && leftCols.length > 0 && (\n <TopLeftPart\n onWheel={onWheel}\n columns={leftCols}\n columnGroups={leftGroups}\n rightShadow={isLeftRaised}\n bottomShadow={isHeaderRaised}\n />\n )}\n {!hideHeader && (\n <TopPart\n columns={headVisibleColumns}\n columnGroups={visColGrps}\n topRef={topRef}\n onWheel={onWheel}\n midGap={midGap}\n bottomShadow={isHeaderRaised}\n />\n )}\n {!hideHeader && rightCols.length > 0 && (\n <TopRightPart\n onWheel={onWheel}\n columns={rightCols}\n columnGroups={rightGroups}\n leftShadow={isRightRaised}\n bottomShadow={isHeaderRaised}\n />\n )}\n {leftCols.length > 0 && (\n <LeftPart\n leftRef={leftRef}\n onWheel={onWheel}\n columns={leftCols}\n rows={rows}\n rightShadow={isLeftRaised}\n hoverOverRowKey={hoverRowKey}\n setHoverOverRowKey={setHoverRowKey}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n )}\n <MiddlePart\n middleRef={middleRef}\n onWheel={onWheel}\n columns={bodyVisibleColumns}\n rows={rows}\n hoverOverRowKey={hoverRowKey}\n setHoverOverRowKey={setHoverRowKey}\n midGap={midGap}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n {rightCols.length > 0 && (\n <RightPart\n rightRef={rightRef}\n onWheel={onWheel}\n columns={rightCols}\n rows={rows}\n leftShadow={isRightRaised}\n hoverOverRowKey={hoverRowKey}\n setHoverOverRowKey={setHoverRowKey}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n )}\n <ColumnDropTarget x={activeTarget?.x} />\n <ColumnGhost\n columns={cols}\n rows={rows}\n dragState={dragState}\n zebra={zebra}\n />\n </div>\n </ColumnSortContext.Provider>\n </ColumnDataContext.Provider>\n </EditorContext.Provider>\n </SizingContext.Provider>\n </CursorContext.Provider>\n </ColumnDragContext.Provider>\n </SelectionContext.Provider>\n </LayoutContext.Provider>\n </GridContext.Provider>\n );\n};\n"],"names":["makePrefixer","SortOrder","Grid","useWindow","useComponentCssInjection","gridCss","useRef","useState","useCallback","useColumnRegistry","useMemo","useSumWidth","useSum","useClientMidWidth","useBodyVisibleColumnRange","useVisibleColumnGroupRange","useHeadVisibleColumnRange","useLeftScrolledOutWidth","useClientMidHeight","useVisibleRowRange","useBodyVisibleAreaTop","useColumnRange","useSumRangeWidth","useScrollToCell","_a","useRowSelection","useRangeSelection","clamp","useRowModels","useColumnResize","useColumnMove","getFocusablePosition","_b","c","useEffect","jsx","GridContext","LayoutContext","SelectionContext","ColumnDragContext","CursorContext","SizingContext","EditorContext","ColumnDataContext","jsxs","ColumnSortContext","clsx","CellMeasure","Scrollable","TopLeftPart","TopPart","TopRightPart","LeftPart","MiddlePart","RightPart","ColumnDropTarget","ColumnGhost"],"mappings":"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"}
|
package/dist-cjs/GridColumn.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
4
|
var react = require('react');
|
|
7
5
|
var GridContext = require('./GridContext.js');
|
|
@@ -31,12 +29,10 @@ const GridColumn = function GridColumn2(props) {
|
|
|
31
29
|
grid.onColumnRemoved(indexRef.current, info);
|
|
32
30
|
};
|
|
33
31
|
});
|
|
34
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {
|
|
35
|
-
children
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
)
|
|
39
|
-
});
|
|
32
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: react.Children.map(
|
|
33
|
+
props.children,
|
|
34
|
+
(ch) => react.isValidElement(ch) ? react.cloneElement(ch, { columnId: props.id }) : ch
|
|
35
|
+
) });
|
|
40
36
|
};
|
|
41
37
|
|
|
42
38
|
exports.GridColumn = GridColumn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridColumn.js","sources":["../src/GridColumn.tsx"],"sourcesContent":["import {\n
|
|
1
|
+
{"version":3,"file":"GridColumn.js","sources":["../src/GridColumn.tsx"],"sourcesContent":["import {\n type CSSProperties,\n Children,\n type ComponentType,\n type KeyboardEvent,\n type ReactNode,\n cloneElement,\n isValidElement,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport type { GridColumnModel, GridRowModel, SortOrder } from \"./Grid\";\nimport { useGridContext } from \"./GridContext\";\n\nexport type GridColumnPin = \"left\" | \"right\" | null;\n\nexport type CellValidationState = \"error\" | \"warning\" | \"success\";\ntype CellValidationType = \"strong\" | \"light\";\n\nexport interface GridCellProps<T, U = any> {\n row: GridRowModel<T>;\n column: GridColumnModel<T>;\n className?: string;\n style?: CSSProperties;\n isFocused?: boolean;\n isSelected?: boolean;\n isEditable?: boolean;\n children?: ReactNode;\n align?: GridColumnProps[\"align\"];\n value?: U;\n validationStatus?: CellValidationState;\n validationMessage?: string;\n validationType?: CellValidationType;\n}\n\nexport interface GridCellValueProps<T, U = any> {\n row: GridRowModel<T>;\n column: GridColumnModel<T>;\n isFocused?: boolean;\n value?: U;\n validationStatus?: CellValidationState;\n validationMessage?: string;\n validationType?: CellValidationType;\n}\n\nexport interface HeaderCellProps<T> {\n column: GridColumnModel<T>;\n children: ReactNode;\n isFocused?: boolean;\n}\n\nexport interface GridHeaderValueProps<T> {\n column: GridColumnModel<T>;\n isFocused?: boolean;\n}\n\nexport interface GridEditorProps<T> {\n row: GridRowModel<T>;\n column: GridColumnModel<T>;\n}\n\nexport interface GridColumnProps<T = any> {\n /**\n * Unique identifier of the column.\n * */\n id: string; // TODO make optional\n /**\n * Enables sorting (by sort order: `asc | desc | none`) for the column.\n * To enable column header's keyboard navigation on sort,\n * users need to set `headerIsFocusable` prop to `true` in Grid component.\n * To customise how GridColumn data sorts, use also `customSort` or `onSortOrderChanged`.\n * */\n sortable?: boolean;\n /**\n * Custom sorting function. Use for client side sorting.\n * */\n customSort?: (args: { rowData: T[]; sortOrder: SortOrder }) => T[];\n /**\n * Exposes GridColumn sort order. Use for server side sorting.\n * */\n onSortOrderChange?: (args: { sortOrder: SortOrder }) => void;\n /**\n * Name is displayed on the column header by default.\n * */\n name?: string;\n /**\n * Default width of the column in `px`.\n * */\n defaultWidth?: number;\n /**\n * Min width of the column.\n * */\n minWidth?: number;\n /**\n * Callback invoked when the user resizes the column.\n * */\n onWidthChanged?: (width: number) => void;\n /**\n * Whether the column should be pinned `left` or `right`. By default columns\n * are unpinned. Accepts `\"left\" | \"right\" | null`.\n * */\n pinned?: GridColumnPin;\n /**\n * Text align for the header and cells.\n * */\n align?: \"left\" | \"right\";\n /**\n * Component to render for every cell in the column. Useful when major\n * customization is needed. Use this only if `cellValueComponent` is not\n * sufficient. Default implementation of cell component takes care of\n * selection, hover, focus and other basic grid features.\n * */\n cellComponent?: ComponentType<GridCellProps<T>>;\n /**\n * Component to render inside every cell. This is the preferred way of\n * customizing grid cells.\n * */\n cellValueComponent?: ComponentType<GridCellValueProps<T>>;\n /**\n * Cell value getter. Should return the value to be displayed in the cell\n * for the given row data item.\n * */\n getValue?: (rowData: T) => any;\n /**\n * Cell validation status getter. Should return one of the known validation status names: \"none\" | \"error\" | \"warning\"\n * If you require a custom validation status, you can achieve that by providing a custom cell component.\n * */\n getValidationStatus?: (\n value: GridCellValueProps<T>,\n ) => CellValidationState | undefined;\n /**\n * Cell validation status message getter. Should return a string description of the validation state that can be used for the screen reader.\n * This prop is optional but if you don't provide a function a default message will be used.\n * */\n getValidationMessage?: (value: GridCellValueProps<T>) => string | undefined;\n /**\n * Cell validation type. Determines the visual style of the validation. The available values are \"strong\" and \"light\". Strong will display the icon\n * along side the background and border. Light will only affect border and background. Use light if you are validation the whole row, and optionally\n * strong on one of the columns, and strong if you are validating user input on a particular cell.\n * The default value is \"light\".\n * */\n validationType?: GridCellProps<T>[\"validationType\"];\n /**\n * CSS class to be applied to the column header.\n * Useful for minor customizations\n * */\n headerClassName?: string;\n /**\n * Custom header component. Use this when `headerValueComponent` doesn't\n * provide enough flexibility.\n * */\n headerComponent?: ComponentType<HeaderCellProps<T>>;\n /**\n * Renders the content of the column header. This is the preferred way of\n * customizing column headers.\n * */\n headerValueComponent?: ComponentType<GridHeaderValueProps<T>>;\n /**\n * A callback to be invoked when the user modifies a cell value.\n * */\n onChange?: (row: T, rowIndex: number, value: string) => void;\n /**\n * A callback to be invoked on key down when the focus is in this column.\n */\n onKeyDown?: (event: KeyboardEvent<HTMLDivElement>, rowIndex: number) => void;\n /**\n * Children is optional, and accepts non-rendered elements i.e. `CellEditor`\n */\n children?: ReactNode;\n /**\n * aria-label is optional, and accepts any string value\n */\n \"aria-label\"?: string;\n}\n\nexport interface GridColumnInfo<T> {\n width: number;\n onWidthChanged: (width: number) => void;\n props: GridColumnProps<T>;\n}\n\nexport const GridColumn = function GridColumn<T = any>(\n props: GridColumnProps<T>,\n) {\n const { defaultWidth } = props;\n const indexRef = useRef<number>();\n const [width, setWidth] = useState<number>(\n defaultWidth !== undefined ? defaultWidth : 100,\n );\n\n const grid = useGridContext();\n\n const onWidthChanged = (w: number) => {\n setWidth(w);\n if (props.onWidthChanged) {\n props.onWidthChanged(w);\n }\n };\n\n const info: GridColumnInfo<T> = {\n width,\n onWidthChanged,\n props,\n };\n\n useEffect(() => {\n indexRef.current = grid.getChildIndex(props.id);\n grid.onColumnAdded(info);\n return () => {\n grid.onColumnRemoved(indexRef.current!, info);\n };\n });\n\n return (\n <>\n {Children.map(props.children, (ch) =>\n isValidElement(ch)\n ? cloneElement(ch, { columnId: props.id } as any)\n : ch,\n )}\n </>\n );\n};\n"],"names":["GridColumn","useRef","useState","useGridContext","useEffect","Children","isValidElement","cloneElement"],"mappings":";;;;;;AAsLa,MAAA,UAAA,GAAa,SAASA,WAAAA,CACjC,KACA,EAAA;AACA,EAAM,MAAA,EAAE,cAAiB,GAAA,KAAA;AACzB,EAAA,MAAM,WAAWC,YAAe,EAAA;AAChC,EAAM,MAAA,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAAC,cAAA;AAAA,IACxB,YAAA,KAAiB,SAAY,YAAe,GAAA;AAAA,GAC9C;AAEA,EAAA,MAAM,OAAOC,0BAAe,EAAA;AAE5B,EAAM,MAAA,cAAA,GAAiB,CAAC,CAAc,KAAA;AACpC,IAAA,QAAA,CAAS,CAAC,CAAA;AACV,IAAA,IAAI,MAAM,cAAgB,EAAA;AACxB,MAAA,KAAA,CAAM,eAAe,CAAC,CAAA;AAAA;AACxB,GACF;AAEA,EAAA,MAAM,IAA0B,GAAA;AAAA,IAC9B,KAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,QAAA,CAAS,OAAU,GAAA,IAAA,CAAK,aAAc,CAAA,KAAA,CAAM,EAAE,CAAA;AAC9C,IAAA,IAAA,CAAK,cAAc,IAAI,CAAA;AACvB,IAAA,OAAO,MAAM;AACX,MAAK,IAAA,CAAA,eAAA,CAAgB,QAAS,CAAA,OAAA,EAAU,IAAI,CAAA;AAAA,KAC9C;AAAA,GACD,CAAA;AAED,EAAA,6DAEK,QAAS,EAAAC,cAAA,CAAA,GAAA;AAAA,IAAI,KAAM,CAAA,QAAA;AAAA,IAAU,CAAC,EAAA,KAC7BC,oBAAe,CAAA,EAAE,CACb,GAAAC,kBAAA,CAAa,EAAI,EAAA,EAAE,QAAU,EAAA,KAAA,CAAM,EAAG,EAAQ,CAC9C,GAAA;AAAA,GAER,EAAA,CAAA;AAEJ;;;;"}
|
package/dist-cjs/GridContext.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
var react = require('react');
|
|
6
4
|
|
|
7
5
|
const GridContext = react.createContext(
|
|
@@ -10,7 +8,7 @@ const GridContext = react.createContext(
|
|
|
10
8
|
const useGridContext = () => {
|
|
11
9
|
const c = react.useContext(GridContext);
|
|
12
10
|
if (!c) {
|
|
13
|
-
throw new Error(
|
|
11
|
+
throw new Error("useGridContext invoked outside of a Grid");
|
|
14
12
|
}
|
|
15
13
|
return c;
|
|
16
14
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridContext.js","sources":["../src/GridContext.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"GridContext.js","sources":["../src/GridContext.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { CellEditorInfo } from \"./CellEditor\";\nimport type { ColumnGroupProps } from \"./ColumnGroup\";\nimport type { GridColumnInfo } from \"./GridColumn\";\n\nexport interface GridContext<T> {\n getChildIndex: (columnId: string) => number;\n\n onColumnAdded: (columnInfo: GridColumnInfo<T>) => void;\n onColumnRemoved: (index: number, columnInfo: GridColumnInfo<T>) => void;\n onColumnGroupAdded: (colGroupProps: ColumnGroupProps) => void;\n onColumnGroupRemoved: (\n index: number,\n colGroupProps: ColumnGroupProps,\n ) => void;\n\n onEditorAdded: (editorInfo: CellEditorInfo<T>) => void;\n onEditorRemoved: (editorInfo: CellEditorInfo<T>) => void;\n\n getEditor: (columnId: string) => CellEditorInfo<T> | undefined;\n}\n\nexport const GridContext = createContext<GridContext<any> | undefined>(\n undefined,\n);\n\nexport const useGridContext = () => {\n const c = useContext(GridContext);\n if (!c) {\n throw new Error(\"useGridContext invoked outside of a Grid\");\n }\n return c;\n};\n"],"names":["createContext","useContext"],"mappings":";;;;AAsBO,MAAM,WAAc,GAAAA,mBAAA;AAAA,EACzB,KAAA;AACF;AAEO,MAAM,iBAAiB,MAAM;AAClC,EAAM,MAAA,CAAA,GAAIC,iBAAW,WAAW,CAAA;AAChC,EAAA,IAAI,CAAC,CAAG,EAAA;AACN,IAAM,MAAA,IAAI,MAAM,0CAA0C,CAAA;AAAA;AAE5D,EAAO,OAAA,CAAA;AACT;;;;;"}
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
-
var clsx = require('clsx');
|
|
7
4
|
var core = require('@salt-ds/core');
|
|
8
|
-
var window = require('@salt-ds/window');
|
|
9
5
|
var styles = require('@salt-ds/styles');
|
|
6
|
+
var window = require('@salt-ds/window');
|
|
7
|
+
var clsx = require('clsx');
|
|
10
8
|
var ColumnDataContext = require('./ColumnDataContext.js');
|
|
11
9
|
var GroupHeaderCell$1 = require('./GroupHeaderCell.css.js');
|
|
12
10
|
|
|
13
11
|
const withBaseName = core.makePrefixer("saltGridGroupHeaderCell");
|
|
14
12
|
function GroupHeaderCell(props) {
|
|
15
|
-
var _a;
|
|
16
13
|
const { group } = props;
|
|
17
14
|
const targetWindow = window.useWindow();
|
|
18
15
|
styles.useComponentCssInjection({
|
|
@@ -23,31 +20,33 @@ function GroupHeaderCell(props) {
|
|
|
23
20
|
const { colSpan, columnSeparator, rowSeparator } = group;
|
|
24
21
|
const { getColById } = ColumnDataContext.useColumnDataContext();
|
|
25
22
|
const firstChild = getColById(group.childrenIds[0]);
|
|
26
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
23
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
24
|
+
"th",
|
|
25
|
+
{
|
|
26
|
+
className: withBaseName(),
|
|
27
|
+
colSpan,
|
|
28
|
+
"aria-colspan": colSpan,
|
|
29
|
+
"aria-colindex": ((firstChild == null ? void 0 : firstChild.index) ?? 0) + 1,
|
|
30
|
+
"data-testid": "column-group-header",
|
|
31
|
+
"data-group-index": group.index,
|
|
32
|
+
role: "columnheader",
|
|
33
|
+
children: [
|
|
34
|
+
props.children,
|
|
35
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
36
|
+
"div",
|
|
37
|
+
{
|
|
38
|
+
className: clsx.clsx({
|
|
39
|
+
[withBaseName("rowSeparator")]: rowSeparator === "regular",
|
|
40
|
+
[withBaseName("firstGroupRowSeparator")]: rowSeparator === "first",
|
|
41
|
+
[withBaseName("lastGroupRowSeparator")]: rowSeparator === "last"
|
|
42
|
+
})
|
|
43
|
+
}
|
|
44
|
+
),
|
|
45
|
+
columnSeparator === "regular" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: withBaseName("columnSeparator") }) : null,
|
|
46
|
+
columnSeparator === "pinned" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: withBaseName("pinnedSeparator") }) : null
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
);
|
|
51
50
|
}
|
|
52
51
|
|
|
53
52
|
exports.GroupHeaderCell = GroupHeaderCell;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupHeaderCell.js","sources":["../src/GroupHeaderCell.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"GroupHeaderCell.js","sources":["../src/GroupHeaderCell.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport type { ReactNode } from \"react\";\n\nimport { useColumnDataContext } from \"./ColumnDataContext\";\nimport type { GridColumnGroupModel } from \"./Grid\";\n\nimport groupHeaderCellCss from \"./GroupHeaderCell.css\";\n\nconst withBaseName = makePrefixer(\"saltGridGroupHeaderCell\");\n\nexport interface GroupHeaderCellProps {\n group: GridColumnGroupModel;\n children: ReactNode;\n}\n\nexport function GroupHeaderCell(props: GroupHeaderCellProps) {\n const { group } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-group-header-cell\",\n css: groupHeaderCellCss,\n window: targetWindow,\n });\n\n const { colSpan, columnSeparator, rowSeparator } = group;\n const { getColById } = useColumnDataContext();\n const firstChild = getColById(group.childrenIds[0]);\n\n return (\n <th\n className={withBaseName()}\n colSpan={colSpan}\n aria-colspan={colSpan}\n aria-colindex={(firstChild?.index ?? 0) + 1}\n data-testid=\"column-group-header\"\n data-group-index={group.index}\n role=\"columnheader\"\n >\n {props.children}\n <div\n className={clsx({\n [withBaseName(\"rowSeparator\")]: rowSeparator === \"regular\",\n [withBaseName(\"firstGroupRowSeparator\")]: rowSeparator === \"first\",\n [withBaseName(\"lastGroupRowSeparator\")]: rowSeparator === \"last\",\n })}\n />\n {columnSeparator === \"regular\" ? (\n <div className={withBaseName(\"columnSeparator\")} />\n ) : null}\n {columnSeparator === \"pinned\" ? (\n <div className={withBaseName(\"pinnedSeparator\")} />\n ) : null}\n </th>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","groupHeaderCellCss","useColumnDataContext","jsxs","jsx","clsx"],"mappings":";;;;;;;;;;AAWA,MAAM,YAAA,GAAeA,kBAAa,yBAAyB,CAAA;AAOpD,SAAS,gBAAgB,KAA6B,EAAA;AAC3D,EAAM,MAAA,EAAE,OAAU,GAAA,KAAA;AAElB,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,wBAAA;AAAA,IACR,GAAK,EAAAC,iBAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,EAAE,OAAA,EAAS,eAAiB,EAAA,YAAA,EAAiB,GAAA,KAAA;AACnD,EAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,sCAAqB,EAAA;AAC5C,EAAA,MAAM,UAAa,GAAA,UAAA,CAAW,KAAM,CAAA,WAAA,CAAY,CAAC,CAAC,CAAA;AAElD,EACE,uBAAAC,eAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAW,YAAa,EAAA;AAAA,MACxB,OAAA;AAAA,MACA,cAAc,EAAA,OAAA;AAAA,MACd,eAAA,EAAA,CAAA,CAAgB,UAAY,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAA,KAAA,KAAS,CAAK,IAAA,CAAA;AAAA,MAC1C,aAAY,EAAA,qBAAA;AAAA,MACZ,oBAAkB,KAAM,CAAA,KAAA;AAAA,MACxB,IAAK,EAAA,cAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,QAAM,KAAA,CAAA,QAAA;AAAA,wBACPC,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,WAAWC,SAAK,CAAA;AAAA,cACd,CAAC,YAAA,CAAa,cAAc,CAAC,GAAG,YAAiB,KAAA,SAAA;AAAA,cACjD,CAAC,YAAA,CAAa,wBAAwB,CAAC,GAAG,YAAiB,KAAA,OAAA;AAAA,cAC3D,CAAC,YAAA,CAAa,uBAAuB,CAAC,GAAG,YAAiB,KAAA;AAAA,aAC3D;AAAA;AAAA,SACH;AAAA,QACC,eAAA,KAAoB,4BAClBD,cAAA,CAAA,KAAA,EAAA,EAAI,WAAW,YAAa,CAAA,iBAAiB,GAAG,CAC/C,GAAA,IAAA;AAAA,QACH,eAAA,KAAoB,2BAClBA,cAAA,CAAA,KAAA,EAAA,EAAI,WAAW,YAAa,CAAA,iBAAiB,GAAG,CAC/C,GAAA;AAAA;AAAA;AAAA,GACN;AAEJ;;;;"}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
4
|
|
|
7
5
|
function GroupHeaderCellValue(props) {
|
|
8
6
|
const { group } = props;
|
|
9
7
|
const title = group.data.name;
|
|
10
|
-
return /* @__PURE__ */ jsxRuntime.jsx("span", {
|
|
11
|
-
children: title
|
|
12
|
-
});
|
|
8
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { children: title });
|
|
13
9
|
}
|
|
14
10
|
|
|
15
11
|
exports.GroupHeaderCellValue = GroupHeaderCellValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupHeaderCellValue.js","sources":["../src/GroupHeaderCellValue.tsx"],"sourcesContent":["import { ColumnGroupCellValueProps } from \"./ColumnGroup\";\n\nexport function GroupHeaderCellValue(props: ColumnGroupCellValueProps) {\n const { group } = props;\n const title = group.data.name;\n return <span>{title}</span>;\n}\n"],"names":["jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"GroupHeaderCellValue.js","sources":["../src/GroupHeaderCellValue.tsx"],"sourcesContent":["import type { ColumnGroupCellValueProps } from \"./ColumnGroup\";\n\nexport function GroupHeaderCellValue(props: ColumnGroupCellValueProps) {\n const { group } = props;\n const title = group.data.name;\n return <span>{title}</span>;\n}\n"],"names":["jsx"],"mappings":";;;;AAEO,SAAS,qBAAqB,KAAkC,EAAA;AACrE,EAAM,MAAA,EAAE,OAAU,GAAA,KAAA;AAClB,EAAM,MAAA,KAAA,GAAQ,MAAM,IAAK,CAAA,IAAA;AACzB,EAAO,uBAAAA,cAAA,CAAC,UAAM,QAAM,EAAA,KAAA,EAAA,CAAA;AACtB;;;;"}
|