@ishibashi0112/spreadsheet-grid 0.33.0 → 0.34.0
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/README.md +5 -3
- package/dist/ActiveCellOverlay.d.ts +3 -1
- package/dist/CellEditorLayer.d.ts +3 -1
- package/dist/SelectionOverlay.d.ts +3 -1
- package/dist/SpreadsheetGrid.d.ts +1 -1
- package/dist/editors/CheckboxCell.d.ts +3 -1
- package/dist/editors/SelectCellEditor.d.ts +3 -1
- package/dist/hooks/useColumnHeaderDragController.d.ts +2 -0
- package/dist/hooks/useGridTooltip.d.ts +2 -1
- package/dist/hooks/useResolvedGridSlots.d.ts +3 -0
- package/dist/hooks/useRowDragController.d.ts +2 -0
- package/dist/index.cjs +8 -8
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3259 -3071
- package/dist/logic/slotDom.d.ts +8 -0
- package/dist/logic/slotProps.d.ts +18 -0
- package/dist/model/gridTypes.d.ts +40 -13
- package/dist/view/CellContextMenuPopover.d.ts +3 -2
- package/dist/view/ColumnFilterPopover.d.ts +3 -1
- package/dist/view/ColumnMenuPopover.d.ts +3 -1
- package/dist/view/DefaultGridBottomBar.d.ts +3 -1
- package/dist/view/DefaultGridTopBar.d.ts +3 -1
- package/dist/view/GridBodyLayer.d.ts +4 -5
- package/dist/view/GridDetailLayer.d.ts +4 -2
- package/dist/view/GridFilterChipBar.d.ts +3 -1
- package/dist/view/GridHeaderRow.d.ts +3 -5
- package/dist/view/GridScrollHint.d.ts +3 -1
- package/dist/view/RowSelectionCheckbox.d.ts +3 -1
- package/dist/view/ToolPanel.d.ts +3 -1
- package/package.json +5 -5
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type SlotPropsLike<S> = string | {
|
|
2
|
+
className?: string;
|
|
3
|
+
style?: S;
|
|
4
|
+
};
|
|
5
|
+
export type ResolvedSlotProps<S> = {
|
|
6
|
+
className?: string;
|
|
7
|
+
style?: S;
|
|
8
|
+
};
|
|
9
|
+
export declare function resolveSlotProps<S>(slot: SlotPropsLike<S> | null | undefined | false): ResolvedSlotProps<S>;
|
|
10
|
+
export declare function slotClassName<S>(slot: SlotPropsLike<S> | null | undefined | false): string | undefined;
|
|
11
|
+
export declare function slotStyle<S>(slot: SlotPropsLike<S> | null | undefined | false): S | undefined;
|
|
12
|
+
export declare function mergeStyles<S extends object>(...styles: Array<S | undefined | null | false>): S | undefined;
|
|
13
|
+
export declare function shallowEqualStyle<S extends object>(a: S | undefined, b: S | undefined): boolean;
|
|
14
|
+
export declare function arePropsEqualWithStyleKeys<P extends object>(prev: P, next: P, styleKeys: ReadonlySet<keyof P>): boolean;
|
|
15
|
+
export declare function resolveSlotMap<K extends string, S>(map: Partial<Record<K, SlotPropsLike<S> | undefined>> | null | undefined): Partial<Record<K, ResolvedSlotProps<S>>>;
|
|
16
|
+
export declare function serializeSlotValue(value: unknown): string;
|
|
17
|
+
export declare function resolveSlotMapFromSignature<K extends string, S>(signature: string): Partial<Record<K, ResolvedSlotProps<S>>>;
|
|
18
|
+
export declare function resolveSlotFromSignature<S>(signature: string): ResolvedSlotProps<S>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ReactNode, Ref } from 'react';
|
|
1
|
+
import type { CSSProperties, ReactNode, Ref } from 'react';
|
|
2
2
|
export type GridRowKey = string | number;
|
|
3
3
|
export type RowModel<T> = {
|
|
4
4
|
getRowCount: () => number;
|
|
@@ -248,7 +248,7 @@ export type DetailRowOptions<T> = {
|
|
|
248
248
|
sourceRowIndex: number;
|
|
249
249
|
}) => boolean;
|
|
250
250
|
showToggleColumn?: boolean;
|
|
251
|
-
className?:
|
|
251
|
+
className?: GridSlotProps;
|
|
252
252
|
};
|
|
253
253
|
export type RowDragContext = {
|
|
254
254
|
rowKey: GridRowKey;
|
|
@@ -398,7 +398,7 @@ export type GridColumn<T> = {
|
|
|
398
398
|
getValue?: (row: T) => unknown;
|
|
399
399
|
setValue?: (row: T, value: unknown) => T;
|
|
400
400
|
renderCell?: (ctx: CellRenderContext<T>) => ReactNode;
|
|
401
|
-
cellClassName?:
|
|
401
|
+
cellClassName?: GridSlotProps | ((ctx: CellStyleContext<T>) => GridSlotProps | undefined);
|
|
402
402
|
align?: 'left' | 'center' | 'right';
|
|
403
403
|
valueFormatter?: CellValueFormatter<T>;
|
|
404
404
|
renderHeader?: (ctx: HeaderRenderContext<T>) => ReactNode;
|
|
@@ -532,16 +532,42 @@ export type GridContextMenuCustomItem = {
|
|
|
532
532
|
}) => ReactNode;
|
|
533
533
|
};
|
|
534
534
|
export type GridContextMenuItem = GridContextMenuActionItem | GridContextMenuLabelItem | GridContextMenuSeparatorItem | GridContextMenuCustomItem;
|
|
535
|
+
export type GridSlotProps = string | {
|
|
536
|
+
className?: string;
|
|
537
|
+
style?: CSSProperties;
|
|
538
|
+
};
|
|
539
|
+
export type GridResolvedSlot = {
|
|
540
|
+
className?: string;
|
|
541
|
+
style?: CSSProperties;
|
|
542
|
+
};
|
|
543
|
+
export type GridResolvedSlots = Partial<Record<keyof GridClassNames, GridResolvedSlot>>;
|
|
535
544
|
export type GridClassNames = {
|
|
536
|
-
root?:
|
|
537
|
-
toolbar?:
|
|
538
|
-
statusBar?:
|
|
539
|
-
headerRow?:
|
|
540
|
-
headerCell?:
|
|
541
|
-
bodyRow?:
|
|
542
|
-
bodyCell?:
|
|
543
|
-
rowHeaderCell?:
|
|
544
|
-
iconButton?:
|
|
545
|
+
root?: GridSlotProps;
|
|
546
|
+
toolbar?: GridSlotProps;
|
|
547
|
+
statusBar?: GridSlotProps;
|
|
548
|
+
headerRow?: GridSlotProps;
|
|
549
|
+
headerCell?: GridSlotProps;
|
|
550
|
+
bodyRow?: GridSlotProps;
|
|
551
|
+
bodyCell?: GridSlotProps;
|
|
552
|
+
rowHeaderCell?: GridSlotProps;
|
|
553
|
+
iconButton?: GridSlotProps;
|
|
554
|
+
cornerCell?: GridSlotProps;
|
|
555
|
+
groupRow?: GridSlotProps;
|
|
556
|
+
groupCell?: GridSlotProps;
|
|
557
|
+
detailBand?: GridSlotProps;
|
|
558
|
+
detailCard?: GridSlotProps;
|
|
559
|
+
popover?: GridSlotProps;
|
|
560
|
+
menuItem?: GridSlotProps;
|
|
561
|
+
tooltip?: GridSlotProps;
|
|
562
|
+
dragGhost?: GridSlotProps;
|
|
563
|
+
checkbox?: GridSlotProps;
|
|
564
|
+
cellEditor?: GridSlotProps;
|
|
565
|
+
emptyState?: GridSlotProps;
|
|
566
|
+
filterChipBar?: GridSlotProps;
|
|
567
|
+
errorBar?: GridSlotProps;
|
|
568
|
+
scrollHint?: GridSlotProps;
|
|
569
|
+
activeCellOverlay?: GridSlotProps;
|
|
570
|
+
selectionOverlay?: GridSlotProps;
|
|
545
571
|
};
|
|
546
572
|
export type ScrollAlign = 'auto' | 'start' | 'center' | 'end';
|
|
547
573
|
export type GridScrollPosition = {
|
|
@@ -753,8 +779,9 @@ export type SpreadsheetGridProps<T> = {
|
|
|
753
779
|
renderTopBar?: (context: SpreadsheetGridSlotContext<T>) => ReactNode;
|
|
754
780
|
renderBottomBar?: (context: SpreadsheetGridSlotContext<T>) => ReactNode;
|
|
755
781
|
className?: string;
|
|
782
|
+
style?: CSSProperties;
|
|
756
783
|
classNames?: GridClassNames;
|
|
757
|
-
getRowClassName?: (row: T, rowIndex: number, ctx: RowStyleContext<T>) =>
|
|
784
|
+
getRowClassName?: (row: T, rowIndex: number, ctx: RowStyleContext<T>) => GridSlotProps | undefined;
|
|
758
785
|
detailRow?: DetailRowOptions<T>;
|
|
759
786
|
onExpandedDetailRowKeysChange?: (keys: GridRowKey[]) => void;
|
|
760
787
|
enableRowDrag?: boolean;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import type { RefObject } from 'react';
|
|
2
|
-
import type { GridContextMenuItem } from '../model/gridTypes';
|
|
2
|
+
import type { GridContextMenuItem, GridResolvedSlots } from '../model/gridTypes';
|
|
3
3
|
import type { CellContextMenuLayout } from '../hooks/useCellContextMenuController';
|
|
4
4
|
type CellContextMenuPopoverProps = {
|
|
5
5
|
isOpen: boolean;
|
|
6
6
|
themeClassName?: string;
|
|
7
|
+
slots?: GridResolvedSlots;
|
|
7
8
|
items: GridContextMenuItem[];
|
|
8
9
|
layout: CellContextMenuLayout | null;
|
|
9
10
|
popoverRef: RefObject<HTMLDivElement | null>;
|
|
10
11
|
onRequestClose: () => void;
|
|
11
12
|
};
|
|
12
|
-
export declare function CellContextMenuPopover({ isOpen, themeClassName, items, layout, popoverRef, onRequestClose, }: CellContextMenuPopoverProps): import("react").ReactPortal | null;
|
|
13
|
+
export declare function CellContextMenuPopover({ isOpen, themeClassName, slots, items, layout, popoverRef, onRequestClose, }: CellContextMenuPopoverProps): import("react").ReactPortal | null;
|
|
13
14
|
export default CellContextMenuPopover;
|
|
@@ -6,6 +6,7 @@ import { type NumberFilterConditionDraft } from '../logic/numberFilterCondition'
|
|
|
6
6
|
import { type TextFilterConditionDraft } from '../logic/textFilterCondition';
|
|
7
7
|
import { type DateFilterConditionDraft } from '../logic/dateFilterCondition';
|
|
8
8
|
import { type NormalizedDateFilterPreset } from '../logic/dateFilterPresets';
|
|
9
|
+
import type { GridResolvedSlot } from '../model/gridTypes';
|
|
9
10
|
export type ColumnFilterPopoverLayout = {
|
|
10
11
|
top: number;
|
|
11
12
|
left: number;
|
|
@@ -19,6 +20,7 @@ export type ColumnFilterPopoverOption = {
|
|
|
19
20
|
type ColumnFilterPopoverProps = {
|
|
20
21
|
isOpen: boolean;
|
|
21
22
|
themeClassName?: string;
|
|
23
|
+
popoverSlot?: GridResolvedSlot;
|
|
22
24
|
title: string;
|
|
23
25
|
filterType: ColumnFilterUiType;
|
|
24
26
|
draftValue: string;
|
|
@@ -52,5 +54,5 @@ type ColumnFilterPopoverProps = {
|
|
|
52
54
|
onSetReplaceSelection: (values: string[]) => void;
|
|
53
55
|
isServerSide?: boolean;
|
|
54
56
|
};
|
|
55
|
-
export declare function ColumnFilterPopover({ isOpen, themeClassName, title, filterType, draftValue, numberConditionDraft, onNumberConditionDraftChange, textConditionDraft, onTextConditionDraftChange, dateConditionDraft, onDateConditionDraftChange, datePresets, renderDateInput, onComboConditionClear, onComboSelectionClear, comboSummaryText, currentValueText, layout, selectOptions, optionsStatus, optionsProgress, setSelection, popoverRef, textInputRef, selectRef, onRequestClose, onDraftChange, onApply, onClear, onSetValueToggle, onSetSelectAllChange, onSetClear, onSetReplaceSelection, isServerSide, }: ColumnFilterPopoverProps): import("react").ReactPortal | null;
|
|
57
|
+
export declare function ColumnFilterPopover({ isOpen, themeClassName, popoverSlot, title, filterType, draftValue, numberConditionDraft, onNumberConditionDraftChange, textConditionDraft, onTextConditionDraftChange, dateConditionDraft, onDateConditionDraftChange, datePresets, renderDateInput, onComboConditionClear, onComboSelectionClear, comboSummaryText, currentValueText, layout, selectOptions, optionsStatus, optionsProgress, setSelection, popoverRef, textInputRef, selectRef, onRequestClose, onDraftChange, onApply, onClear, onSetValueToggle, onSetSelectAllChange, onSetClear, onSetReplaceSelection, isServerSide, }: ColumnFilterPopoverProps): import("react").ReactPortal | null;
|
|
56
58
|
export default ColumnFilterPopover;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { RefObject } from 'react';
|
|
2
2
|
import type { GridColumnPinned, GridSortDirection } from '../model/gridTypes';
|
|
3
3
|
import type { ColumnMenuLayout } from '../hooks/useColumnMenuController';
|
|
4
|
+
import type { GridResolvedSlots } from '../model/gridTypes';
|
|
4
5
|
type ColumnMenuPopoverProps = {
|
|
5
6
|
isOpen: boolean;
|
|
6
7
|
themeClassName?: string;
|
|
8
|
+
slots?: GridResolvedSlots;
|
|
7
9
|
title: string;
|
|
8
10
|
columnKey: string;
|
|
9
11
|
canFilter: boolean;
|
|
@@ -26,5 +28,5 @@ type ColumnMenuPopoverProps = {
|
|
|
26
28
|
onResetColumns: () => void;
|
|
27
29
|
onRequestClose: () => void;
|
|
28
30
|
};
|
|
29
|
-
export declare function ColumnMenuPopover({ isOpen, themeClassName, title, columnKey, canFilter, onOpenFilter, canSort, sortDirection, onSortChange, onOpenSortManager, canManageFilters, onOpenFilterManager, pinned, canChangePinned, layout, popoverRef, onPinnedChange, onAutosizeColumn, onAutosizeAllColumns, onOpenColumnChooser, canResetColumns, onResetColumns, onRequestClose, }: ColumnMenuPopoverProps): import("react").ReactPortal | null;
|
|
31
|
+
export declare function ColumnMenuPopover({ isOpen, themeClassName, slots, title, columnKey, canFilter, onOpenFilter, canSort, sortDirection, onSortChange, onOpenSortManager, canManageFilters, onOpenFilterManager, pinned, canChangePinned, layout, popoverRef, onPinnedChange, onAutosizeColumn, onAutosizeAllColumns, onOpenColumnChooser, canResetColumns, onResetColumns, onRequestClose, }: ColumnMenuPopoverProps): import("react").ReactPortal | null;
|
|
30
32
|
export default ColumnMenuPopover;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { SpreadsheetGridSlotContext } from '../model/gridTypes';
|
|
2
|
+
import type { GridResolvedSlot } from '../model/gridTypes';
|
|
2
3
|
type DefaultGridBottomBarProps<T> = {
|
|
3
4
|
context: SpreadsheetGridSlotContext<T>;
|
|
4
5
|
showCounts?: boolean;
|
|
6
|
+
slot?: GridResolvedSlot;
|
|
5
7
|
};
|
|
6
|
-
export declare function DefaultGridBottomBar<T>({ context, showCounts, }: DefaultGridBottomBarProps<T>): import("react").JSX.Element;
|
|
8
|
+
export declare function DefaultGridBottomBar<T>({ context, showCounts, slot, }: DefaultGridBottomBarProps<T>): import("react").JSX.Element;
|
|
7
9
|
export default DefaultGridBottomBar;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
import type { SpreadsheetGridSlotContext } from '../model/gridTypes';
|
|
3
|
+
import type { GridResolvedSlot } from '../model/gridTypes';
|
|
3
4
|
type DefaultGridTopBarProps<T> = {
|
|
4
5
|
context: SpreadsheetGridSlotContext<T>;
|
|
5
6
|
showSummary?: boolean;
|
|
@@ -8,6 +9,7 @@ type DefaultGridTopBarProps<T> = {
|
|
|
8
9
|
globalFilterPlaceholder?: string;
|
|
9
10
|
globalFilterIcon?: ReactNode;
|
|
10
11
|
onFilterSummaryClick?: () => void;
|
|
12
|
+
slot?: GridResolvedSlot;
|
|
11
13
|
};
|
|
12
|
-
export declare function DefaultGridTopBar<T>({ context, showSummary, showFilter, showCounts, globalFilterPlaceholder, globalFilterIcon, onFilterSummaryClick, }: DefaultGridTopBarProps<T>): import("react").JSX.Element;
|
|
14
|
+
export declare function DefaultGridTopBar<T>({ context, showSummary, showFilter, showCounts, globalFilterPlaceholder, globalFilterIcon, onFilterSummaryClick, slot, }: DefaultGridTopBarProps<T>): import("react").JSX.Element;
|
|
13
15
|
export default DefaultGridTopBar;
|
|
@@ -3,6 +3,7 @@ import type { SelectionSnapshot } from '../model/gridSelectors';
|
|
|
3
3
|
import type { CellCoord, CellRenderState, GridColumn, RowModel, RowSelectionState, RowStyleContext, SpreadsheetGridProps } from '../model/gridTypes';
|
|
4
4
|
import type { PaneColumnEntry } from '../logic/geometry';
|
|
5
5
|
import type { GridPaneKind } from './GridHeaderRow';
|
|
6
|
+
import type { GridResolvedSlots, GridSlotProps } from '../model/gridTypes';
|
|
6
7
|
type VirtualRowLike = {
|
|
7
8
|
index: number;
|
|
8
9
|
start: number;
|
|
@@ -40,10 +41,8 @@ type GridBodyLayerProps<T> = {
|
|
|
40
41
|
onCellPointerEnter: (cell: CellCoord, event: PointerEvent<HTMLDivElement>) => void;
|
|
41
42
|
onCellDoubleClick: (cell: CellCoord) => void;
|
|
42
43
|
renderCellContent: (row: T, rowIndex: number, column: GridColumn<T>, colIndex: number, cellState: CellRenderState) => ReactNode;
|
|
43
|
-
getRowClassName?: (row: T, rowIndex: number, ctx: RowStyleContext<T>) =>
|
|
44
|
-
|
|
45
|
-
bodyRowClassName?: string;
|
|
46
|
-
rowHeaderCellClassName?: string;
|
|
44
|
+
getRowClassName?: (row: T, rowIndex: number, ctx: RowStyleContext<T>) => GridSlotProps | undefined;
|
|
45
|
+
slots?: GridResolvedSlots;
|
|
47
46
|
};
|
|
48
|
-
export declare function GridBodyLayer<T>({ pane, ownsRowHeader, leadingWidth, rowModel, virtualRows, virtualRowIndexes, renderEntries, rowHeight, autoHeight, showCellOverflowTooltip, showValidationMarks, isServerSide, collapsedGroupKeys, onGroupToggle, rowHeaderCellStyle, hoveredRowIndex, isWholeGridSelected, enableRowSelection, rowSelectionState, activeCell, editingCell, selectionSnapshot, readOnly, canEditCell, onRowHeaderPointerDown, onRowHeaderPointerEnter, onRowHeaderPointerLeave, onCellPointerDown, onCellPointerEnter, onCellDoubleClick, renderCellContent, getRowClassName,
|
|
47
|
+
export declare function GridBodyLayer<T>({ pane, ownsRowHeader, leadingWidth, rowModel, virtualRows, virtualRowIndexes, renderEntries, rowHeight, autoHeight, showCellOverflowTooltip, showValidationMarks, isServerSide, collapsedGroupKeys, onGroupToggle, rowHeaderCellStyle, hoveredRowIndex, isWholeGridSelected, enableRowSelection, rowSelectionState, activeCell, editingCell, selectionSnapshot, readOnly, canEditCell, onRowHeaderPointerDown, onRowHeaderPointerEnter, onRowHeaderPointerLeave, onCellPointerDown, onCellPointerEnter, onCellDoubleClick, renderCellContent, getRowClassName, slots, }: GridBodyLayerProps<T>): import("react").JSX.Element;
|
|
49
48
|
export default GridBodyLayer;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
import type { VerticalRow } from '../logic/verticalGeometry';
|
|
3
|
+
import type { GridResolvedSlot, GridResolvedSlots } from '../model/gridTypes';
|
|
3
4
|
export type GridDetailLayerEntry = {
|
|
4
5
|
rowKey: string | number;
|
|
5
6
|
virtualRow: VerticalRow;
|
|
@@ -11,9 +12,10 @@ type GridDetailLayerProps = {
|
|
|
11
12
|
baseOffset: number;
|
|
12
13
|
cardStickyLeft: number;
|
|
13
14
|
cardWidth: number;
|
|
14
|
-
|
|
15
|
+
cardSlot?: GridResolvedSlot;
|
|
16
|
+
slots?: GridResolvedSlots;
|
|
15
17
|
renderCard: (entry: GridDetailLayerEntry) => ReactNode;
|
|
16
18
|
};
|
|
17
|
-
declare function GridDetailLayerInner({ entries, mode, paneWidth, baseOffset, cardStickyLeft, cardWidth,
|
|
19
|
+
declare function GridDetailLayerInner({ entries, mode, paneWidth, baseOffset, cardStickyLeft, cardWidth, cardSlot, slots, renderCard, }: GridDetailLayerProps): import("react").JSX.Element | null;
|
|
18
20
|
export declare const GridDetailLayer: import("react").MemoExoticComponent<typeof GridDetailLayerInner>;
|
|
19
21
|
export default GridDetailLayer;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { FilterManagementEntry } from './FilterManagementPanel';
|
|
2
|
+
import type { GridResolvedSlot } from '../model/gridTypes';
|
|
2
3
|
type GridFilterChipBarProps = {
|
|
3
4
|
entries: FilterManagementEntry[];
|
|
4
5
|
canFilter: boolean;
|
|
5
6
|
onEditFilter: (columnKey: string) => void;
|
|
6
7
|
onClearFilter: (columnKey: string) => void;
|
|
7
8
|
onClearAllFilters: () => void;
|
|
9
|
+
slot?: GridResolvedSlot;
|
|
8
10
|
};
|
|
9
|
-
export declare function GridFilterChipBar({ entries, canFilter, onEditFilter, onClearFilter, onClearAllFilters, }: GridFilterChipBarProps): import("react").JSX.Element | null;
|
|
11
|
+
export declare function GridFilterChipBar({ entries, canFilter, onEditFilter, onClearFilter, onClearAllFilters, slot, }: GridFilterChipBarProps): import("react").JSX.Element | null;
|
|
10
12
|
export default GridFilterChipBar;
|
|
@@ -2,6 +2,7 @@ import { type CSSProperties, type MouseEvent, type PointerEvent } from 'react';
|
|
|
2
2
|
import type { SelectionSnapshot } from '../model/gridSelectors';
|
|
3
3
|
import type { ColumnFilterValue, GridColumn, GridSortState, SelectAllState } from '../model/gridTypes';
|
|
4
4
|
import type { PaneColumnEntry } from '../logic/geometry';
|
|
5
|
+
import type { GridResolvedSlots } from '../model/gridTypes';
|
|
5
6
|
export type GridPaneKind = 'left' | 'center' | 'right';
|
|
6
7
|
type GridHeaderRowProps<T> = {
|
|
7
8
|
pane: GridPaneKind;
|
|
@@ -9,9 +10,7 @@ type GridHeaderRowProps<T> = {
|
|
|
9
10
|
leadingWidth: number;
|
|
10
11
|
headerHeight: number;
|
|
11
12
|
rowHeaderCellStyle: CSSProperties;
|
|
12
|
-
|
|
13
|
-
headerCellClassName?: string;
|
|
14
|
-
rowHeaderCellClassName?: string;
|
|
13
|
+
slots?: GridResolvedSlots;
|
|
15
14
|
isCornerHovered: boolean;
|
|
16
15
|
isWholeGridSelected: boolean;
|
|
17
16
|
showSelectAllCheckbox: boolean;
|
|
@@ -23,7 +22,6 @@ type GridHeaderRowProps<T> = {
|
|
|
23
22
|
selectionSnapshot: SelectionSnapshot;
|
|
24
23
|
columnFilterValues: Record<string, ColumnFilterValue>;
|
|
25
24
|
sortState: GridSortState;
|
|
26
|
-
iconButtonClassName?: string;
|
|
27
25
|
onCornerPointerDown: (event: PointerEvent<HTMLDivElement>) => void;
|
|
28
26
|
onCornerPointerEnter: () => void;
|
|
29
27
|
onCornerPointerLeave: () => void;
|
|
@@ -39,6 +37,6 @@ type GridHeaderRowProps<T> = {
|
|
|
39
37
|
onColumnHeaderContextMenu: (column: GridColumn<T>, event: MouseEvent<HTMLDivElement>) => void;
|
|
40
38
|
onColumnDragHandlePointerDown?: (column: GridColumn<T>, event: PointerEvent<HTMLSpanElement>) => void;
|
|
41
39
|
};
|
|
42
|
-
declare function GridHeaderRowInner<T>({ pane, ownsRowHeader, leadingWidth, headerHeight, rowHeaderCellStyle,
|
|
40
|
+
declare function GridHeaderRowInner<T>({ pane, ownsRowHeader, leadingWidth, headerHeight, rowHeaderCellStyle, slots, isCornerHovered, isWholeGridSelected, showSelectAllCheckbox, selectAllState, filteredRowsLength, visibleColumnsLength, renderEntries, hoveredColumnIndex, selectionSnapshot, columnFilterValues, sortState, onCornerPointerDown, onCornerPointerEnter, onCornerPointerLeave, onColumnHeaderPointerDown, onColumnHeaderPointerEnter, onColumnHeaderPointerLeave, onColumnResizePointerDown, enableColumnResize, enableColumnMenu, openedMenuColumnKey, onColumnMenuButtonPointerDown, onColumnMenuButtonClick, onColumnHeaderContextMenu, onColumnDragHandlePointerDown, }: GridHeaderRowProps<T>): import("react").JSX.Element;
|
|
43
41
|
export declare const GridHeaderRow: typeof GridHeaderRowInner;
|
|
44
42
|
export default GridHeaderRow;
|
|
@@ -2,6 +2,7 @@ import type { RefObject } from 'react';
|
|
|
2
2
|
import type { RowModel } from '../model/gridTypes';
|
|
3
3
|
import type { RowMetrics } from '../logic/verticalGeometry';
|
|
4
4
|
import type { ResolvedScrollHintOptions } from '../logic/scrollHint';
|
|
5
|
+
import type { GridResolvedSlot } from '../model/gridTypes';
|
|
5
6
|
export declare const SCROLL_HINT_GUTTER_WIDTH_PX = 14;
|
|
6
7
|
export type GridScrollHintProps<T> = {
|
|
7
8
|
options: ResolvedScrollHintOptions<T>;
|
|
@@ -13,5 +14,6 @@ export type GridScrollHintProps<T> = {
|
|
|
13
14
|
verticalScaleFactor: number;
|
|
14
15
|
rowMetrics: RowMetrics;
|
|
15
16
|
rowModel: RowModel<T>;
|
|
17
|
+
slot?: GridResolvedSlot;
|
|
16
18
|
};
|
|
17
|
-
export declare function GridScrollHint<T>({ options, scrollContainerRef, scrollTop, viewportHeight, headerHeight, physicalBodyHeight, verticalScaleFactor, rowMetrics, rowModel, }: GridScrollHintProps<T>): import("react").JSX.Element | null;
|
|
19
|
+
export declare function GridScrollHint<T>({ options, scrollContainerRef, scrollTop, viewportHeight, headerHeight, physicalBodyHeight, verticalScaleFactor, rowMetrics, rowModel, slot, }: GridScrollHintProps<T>): import("react").JSX.Element | null;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import type { GridResolvedSlot } from '../model/gridTypes';
|
|
1
2
|
export type RowCheckboxState = 'unchecked' | 'checked' | 'indeterminate';
|
|
2
3
|
type RowSelectionCheckboxProps = {
|
|
3
4
|
state: RowCheckboxState;
|
|
4
5
|
disabled?: boolean;
|
|
6
|
+
slot?: GridResolvedSlot;
|
|
5
7
|
};
|
|
6
|
-
declare function RowSelectionCheckboxInner({ state, disabled, }: RowSelectionCheckboxProps): import("react").JSX.Element;
|
|
8
|
+
declare function RowSelectionCheckboxInner({ state, disabled, slot, }: RowSelectionCheckboxProps): import("react").JSX.Element;
|
|
7
9
|
export declare const RowSelectionCheckbox: import("react").MemoExoticComponent<typeof RowSelectionCheckboxInner>;
|
|
8
10
|
export default RowSelectionCheckbox;
|
package/dist/view/ToolPanel.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ReactNode, RefObject } from 'react';
|
|
2
2
|
import type { ToolPanelLayout, ToolPanelTab } from '../hooks/useToolPanelController';
|
|
3
|
+
import type { GridResolvedSlot } from '../model/gridTypes';
|
|
3
4
|
export type ToolPanelTabDescriptor = {
|
|
4
5
|
tab: ToolPanelTab;
|
|
5
6
|
label: string;
|
|
@@ -7,6 +8,7 @@ export type ToolPanelTabDescriptor = {
|
|
|
7
8
|
};
|
|
8
9
|
type ToolPanelProps = {
|
|
9
10
|
themeClassName?: string;
|
|
11
|
+
popoverSlot?: GridResolvedSlot;
|
|
10
12
|
activeTab: ToolPanelTab | null;
|
|
11
13
|
flashTick: number;
|
|
12
14
|
tabs: ToolPanelTabDescriptor[];
|
|
@@ -17,5 +19,5 @@ type ToolPanelProps = {
|
|
|
17
19
|
onPanelMove: (top: number, left: number) => void;
|
|
18
20
|
children: ReactNode;
|
|
19
21
|
};
|
|
20
|
-
export declare function ToolPanel({ themeClassName, activeTab, flashTick, tabs, layout, panelRef, onSelectTab, onRequestClose, onPanelMove, children, }: ToolPanelProps): import("react").ReactPortal | null;
|
|
22
|
+
export declare function ToolPanel({ themeClassName, popoverSlot, activeTab, flashTick, tabs, layout, panelRef, onSelectTab, onRequestClose, onPanelMove, children, }: ToolPanelProps): import("react").ReactPortal | null;
|
|
21
23
|
export default ToolPanel;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ishibashi0112/spreadsheet-grid",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.34.0",
|
|
4
4
|
"description": "React 19 製のカスタム仮想化データグリッド。100 万行対応の仮想化・3 ペイン固定列・ソート/フィルター・クライアント/サーバーサイド行モデル対応。",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -66,16 +66,16 @@
|
|
|
66
66
|
"@testing-library/dom": "^10.4.1",
|
|
67
67
|
"@testing-library/react": "^16.3.2",
|
|
68
68
|
"@types/node": "^24.12.3",
|
|
69
|
-
"@types/react": "^19.
|
|
70
|
-
"@types/react-dom": "^19.
|
|
69
|
+
"@types/react": "^19.3.0",
|
|
70
|
+
"@types/react-dom": "^19.3.0",
|
|
71
71
|
"@vitejs/plugin-react": "^6.0.1",
|
|
72
72
|
"eslint": "^10.3.0",
|
|
73
73
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
74
74
|
"eslint-plugin-react-refresh": "^0.5.2",
|
|
75
75
|
"globals": "^17.6.0",
|
|
76
76
|
"jsdom": "^29.1.1",
|
|
77
|
-
"react": "^19.
|
|
78
|
-
"react-dom": "^19.
|
|
77
|
+
"react": "^19.3.0",
|
|
78
|
+
"react-dom": "^19.3.0",
|
|
79
79
|
"typescript": "~6.0.2",
|
|
80
80
|
"typescript-eslint": "^8.59.2",
|
|
81
81
|
"vite": "^8.0.12",
|