@ishibashi0112/spreadsheet-grid 0.12.0 → 0.14.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.
@@ -0,0 +1,5 @@
1
+ export declare const shouldMarkCellOverflowTooltip: (params: {
2
+ enabled: boolean;
3
+ isAutoHeightCell: boolean;
4
+ hasRenderCell: boolean;
5
+ }) => boolean;
@@ -0,0 +1,22 @@
1
+ import type { CellCoord, GridColumn, GridSelection } from '../model/gridTypes';
2
+ type ClearTarget = {
3
+ startRow: number;
4
+ endRow: number;
5
+ startCol: number;
6
+ endCol: number;
7
+ };
8
+ export declare const resolveClearTarget: (selection: GridSelection, activeCell: CellCoord | null, viewRowCount: number, columnCount: number) => ClearTarget | null;
9
+ type ClearCellsArgs<T extends object> = {
10
+ rows: T[];
11
+ resolveSourceIndex: (viewIndex: number) => number | undefined;
12
+ columns: GridColumn<T>[];
13
+ selection: GridSelection;
14
+ activeCell: CellCoord | null;
15
+ viewRowCount: number;
16
+ canWriteCell: (originalRowIndex: number, colIndex: number, row: T, column: GridColumn<T>) => boolean;
17
+ };
18
+ export declare const clearCellsInSelection: <T extends object>({ rows, resolveSourceIndex, columns, selection, activeCell, viewRowCount, canWriteCell, }: ClearCellsArgs<T>) => {
19
+ nextRows: T[];
20
+ changed: boolean;
21
+ };
22
+ export {};
@@ -0,0 +1,16 @@
1
+ export type HistoryStack<S> = {
2
+ past: S[];
3
+ future: S[];
4
+ };
5
+ export declare const createHistoryStack: <S>() => HistoryStack<S>;
6
+ export declare const canUndoHistory: <S>(stack: HistoryStack<S>) => boolean;
7
+ export declare const canRedoHistory: <S>(stack: HistoryStack<S>) => boolean;
8
+ export declare const pushHistory: <S>(stack: HistoryStack<S>, snapshot: S, limit: number) => HistoryStack<S>;
9
+ export declare const undoHistory: <S>(stack: HistoryStack<S>, current: S) => {
10
+ stack: HistoryStack<S>;
11
+ snapshot: S;
12
+ } | null;
13
+ export declare const redoHistory: <S>(stack: HistoryStack<S>, current: S) => {
14
+ stack: HistoryStack<S>;
15
+ snapshot: S;
16
+ } | null;
@@ -0,0 +1,5 @@
1
+ export type ColumnFilterSetSelection = {
2
+ mode: 'include' | 'exclude';
3
+ values: ReadonlySet<string>;
4
+ };
5
+ export declare const isSetValueSelected: (selection: ColumnFilterSetSelection | null, value: string) => boolean;
@@ -35,6 +35,10 @@ export type CellRange = {
35
35
  start: CellCoord;
36
36
  end: CellCoord;
37
37
  };
38
+ export type UndoRedoState = {
39
+ canUndo: boolean;
40
+ canRedo: boolean;
41
+ };
38
42
  export type GridSelection = {
39
43
  type: 'cell';
40
44
  range: CellRange;
@@ -159,6 +163,8 @@ export type GridColumn<T> = {
159
163
  width: number;
160
164
  minWidth?: number;
161
165
  maxWidth?: number;
166
+ wordBreak?: 'normal' | 'break-all' | 'keep-all' | 'break-word' | 'auto-phrase';
167
+ lineBreak?: 'auto' | 'loose' | 'normal' | 'strict' | 'anywhere';
162
168
  flex?: number;
163
169
  resizable?: boolean;
164
170
  suppressAutoSize?: boolean;
@@ -397,6 +403,11 @@ export type SpreadsheetGridHandle<T> = {
397
403
  isRowSelected: (rowKey: GridRowKey) => boolean;
398
404
  selectAllRows: () => void;
399
405
  clearRowSelection: () => void;
406
+ undo: () => void;
407
+ redo: () => void;
408
+ canUndo: () => boolean;
409
+ canRedo: () => boolean;
410
+ clearUndoHistory: () => void;
400
411
  openFilterManager: () => void;
401
412
  closeFilterManager: () => void;
402
413
  };
@@ -427,6 +438,9 @@ export type SpreadsheetGridProps<T> = {
427
438
  readOnly?: boolean;
428
439
  dimReadOnlyCells?: boolean;
429
440
  canEditCell?: (rowIndex: number, colIndex: number, row: T, column: GridColumn<T>) => boolean;
441
+ enableUndoRedo?: boolean;
442
+ undoHistoryLimit?: number;
443
+ onUndoRedoStateChange?: (state: UndoRedoState) => void;
430
444
  enableRangeSelection?: boolean;
431
445
  enableRowSelection?: boolean;
432
446
  rowSelectionMode?: RowSelectionMode;
@@ -439,6 +453,7 @@ export type SpreadsheetGridProps<T> = {
439
453
  enableSorting?: boolean;
440
454
  enableColumnResize?: boolean;
441
455
  autoSizeColumns?: AutoSizeColumnsMode;
456
+ showCellOverflowTooltip?: boolean;
442
457
  enableRowHover?: boolean;
443
458
  enableColumnHeaderHover?: boolean;
444
459
  enableColumnMenu?: boolean;
@@ -1,4 +1,5 @@
1
1
  import { type RefObject } from 'react';
2
+ import { type ColumnFilterSetSelection } from '../logic/setFilterSelection';
2
3
  export type ColumnFilterPopoverLayout = {
3
4
  top: number;
4
5
  left: number;
@@ -8,11 +9,6 @@ export type ColumnFilterPopoverOption = {
8
9
  label: string;
9
10
  value: string;
10
11
  };
11
- export type ColumnFilterSetSelection = {
12
- mode: 'include' | 'exclude';
13
- values: ReadonlySet<string>;
14
- };
15
- export declare const isSetValueSelected: (selection: ColumnFilterSetSelection | null, value: string) => boolean;
16
12
  type ColumnFilterPopoverProps = {
17
13
  isOpen: boolean;
18
14
  themeClassName?: string;
@@ -18,6 +18,7 @@ type GridBodyLayerProps<T> = {
18
18
  renderEntries: PaneColumnEntry<T>[];
19
19
  rowHeight: number;
20
20
  autoHeight?: boolean;
21
+ showCellOverflowTooltip?: boolean;
21
22
  isServerSide?: boolean;
22
23
  rowHeaderCellStyle: CSSProperties;
23
24
  hoveredRowIndex: number | null;
@@ -41,5 +42,5 @@ type GridBodyLayerProps<T> = {
41
42
  bodyRowClassName?: string;
42
43
  rowHeaderCellClassName?: string;
43
44
  };
44
- export declare function GridBodyLayer<T>({ pane, ownsRowHeader, leadingWidth, rowModel, virtualRows, virtualRowIndexes, renderEntries, rowHeight, autoHeight, isServerSide, rowHeaderCellStyle, hoveredRowIndex, isWholeGridSelected, enableRowSelection, rowSelectionState, activeCell, editingCell, selectionSnapshot, readOnly, canEditCell, onRowHeaderPointerDown, onRowHeaderPointerEnter, onRowHeaderPointerLeave, onCellPointerDown, onCellPointerEnter, onCellDoubleClick, renderCellContent, getRowClassName, bodyCellClassName, bodyRowClassName, rowHeaderCellClassName, }: GridBodyLayerProps<T>): import("react").JSX.Element;
45
+ export declare function GridBodyLayer<T>({ pane, ownsRowHeader, leadingWidth, rowModel, virtualRows, virtualRowIndexes, renderEntries, rowHeight, autoHeight, showCellOverflowTooltip, isServerSide, rowHeaderCellStyle, hoveredRowIndex, isWholeGridSelected, enableRowSelection, rowSelectionState, activeCell, editingCell, selectionSnapshot, readOnly, canEditCell, onRowHeaderPointerDown, onRowHeaderPointerEnter, onRowHeaderPointerLeave, onCellPointerDown, onCellPointerEnter, onCellDoubleClick, renderCellContent, getRowClassName, bodyCellClassName, bodyRowClassName, rowHeaderCellClassName, }: GridBodyLayerProps<T>): import("react").JSX.Element;
45
46
  export default GridBodyLayer;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ishibashi0112/spreadsheet-grid",
3
- "version": "0.12.0",
3
+ "version": "0.14.0",
4
4
  "description": "React 19 製のカスタム仮想化データグリッド。100 万行対応の仮想化・3 ペイン固定列・ソート/フィルター・クライアント/サーバーサイド行モデル対応。",
5
5
  "keywords": [
6
6
  "react",
@@ -46,6 +46,13 @@
46
46
  "engines": {
47
47
  "node": ">=18"
48
48
  },
49
+ "devEngines": {
50
+ "packageManager": {
51
+ "name": "pnpm",
52
+ "version": "11.12.0",
53
+ "onFail": "download"
54
+ }
55
+ },
49
56
  "publishConfig": {
50
57
  "access": "public"
51
58
  },
@@ -74,15 +81,16 @@
74
81
  "typescript": "~6.0.2",
75
82
  "typescript-eslint": "^8.59.2",
76
83
  "vite": "^8.0.12",
84
+ "vite-plus": "^0.2.4",
77
85
  "vitest": "^4.1.9"
78
86
  },
79
87
  "scripts": {
80
- "dev": "vite",
81
- "build": "tsc -b && vite build",
82
- "build:lib": "vite build --config vite.lib.config.ts && tsc -p tsconfig.lib.json && node scripts/emit-layer-css.mjs",
88
+ "dev": "vp dev",
89
+ "build": "tsc -b && vp build",
90
+ "build:lib": "vp build --config vite.lib.config.ts && tsc -p tsconfig.lib.json && node scripts/emit-layer-css.mjs",
83
91
  "build:types": "tsc -p tsconfig.lib.json",
84
92
  "lint": "eslint .",
85
- "preview": "vite preview",
93
+ "preview": "vp preview",
86
94
  "test": "vitest run",
87
95
  "test:watch": "vitest",
88
96
  "typecheck:test": "tsc --noEmit -p tsconfig.vitest.json"