@xcelsior/ui-spreadsheets 1.0.11 → 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +21 -4
- package/dist/index.d.ts +21 -4
- package/dist/index.js +17 -14
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +17 -14
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/components/Spreadsheet.tsx +2 -1
- package/src/components/SpreadsheetCell.tsx +1 -1
- package/src/components/SpreadsheetToolbar.tsx +18 -9
- package/src/index.ts +1 -0
- package/src/types.ts +20 -2
package/dist/index.d.mts
CHANGED
|
@@ -297,6 +297,8 @@ interface SpreadsheetProps<T = any> {
|
|
|
297
297
|
cellComments?: CellComment[];
|
|
298
298
|
/** Custom row actions to display in the index column */
|
|
299
299
|
rowActions?: RowAction<T>[];
|
|
300
|
+
/** Custom menu items to display in the toolbar's "More" dropdown menu */
|
|
301
|
+
toolbarMenuItems?: ToolbarMenuItem[];
|
|
300
302
|
/**
|
|
301
303
|
* Enable server-side mode for filtering, sorting, and pagination.
|
|
302
304
|
* When enabled, the component will NOT perform client-side filtering, sorting, or pagination.
|
|
@@ -450,6 +452,21 @@ interface SpreadsheetFilterDropdownProps {
|
|
|
450
452
|
/** Custom className */
|
|
451
453
|
className?: string;
|
|
452
454
|
}
|
|
455
|
+
/**
|
|
456
|
+
* A menu item that can be added to the toolbar's "More" dropdown menu
|
|
457
|
+
*/
|
|
458
|
+
interface ToolbarMenuItem {
|
|
459
|
+
/** Unique identifier for the menu item */
|
|
460
|
+
id: string;
|
|
461
|
+
/** Display label for the menu item */
|
|
462
|
+
label: string;
|
|
463
|
+
/** Icon component to display (e.g., from react-icons) */
|
|
464
|
+
icon?: React$1.ReactNode;
|
|
465
|
+
/** Callback when menu item is clicked */
|
|
466
|
+
onClick: () => void;
|
|
467
|
+
/** Whether the menu item is disabled */
|
|
468
|
+
disabled?: boolean;
|
|
469
|
+
}
|
|
453
470
|
/**
|
|
454
471
|
* Props for SpreadsheetToolbar component
|
|
455
472
|
*/
|
|
@@ -492,8 +509,8 @@ interface SpreadsheetToolbarProps {
|
|
|
492
509
|
onClearSelection: () => void;
|
|
493
510
|
/** Callback for manual save */
|
|
494
511
|
onSave?: () => void;
|
|
495
|
-
/**
|
|
496
|
-
|
|
512
|
+
/** Custom menu items to display in the "More" dropdown menu */
|
|
513
|
+
menuItems?: ToolbarMenuItem[];
|
|
497
514
|
/** Callback for settings */
|
|
498
515
|
onSettings?: () => void;
|
|
499
516
|
/** Callback for keyboard shortcuts */
|
|
@@ -556,7 +573,7 @@ interface SpreadsheetColumnGroupHeaderProps {
|
|
|
556
573
|
* />
|
|
557
574
|
* ```
|
|
558
575
|
*/
|
|
559
|
-
declare function Spreadsheet<T extends Record<string, any>>({ data, columns, columnGroups, getRowId, onCellEdit, onSelectionChange, onSortChange, onFilterChange, onRowClick, onRowDoubleClick, onRowClone, onRowDelete, onAddCellComment, onRowHighlight, showToolbar, showPagination, showRowIndex, enableRowSelection, enableCellEditing, enableComments, enableHighlighting, enableUndoRedo, defaultPageSize, pageSizeOptions, defaultZoom, autoSave, compactMode, isLoading, className, emptyMessage, rowHighlights: externalRowHighlights, cellComments: externalCellComments, rowActions, serverSide, totalItems, currentPage: controlledCurrentPage, pageSize: controlledPageSize, onPageChange, sortConfig: controlledSortConfig, filters: controlledFilters, }: SpreadsheetProps<T>): react_jsx_runtime.JSX.Element;
|
|
576
|
+
declare function Spreadsheet<T extends Record<string, any>>({ data, columns, columnGroups, getRowId, onCellEdit, onSelectionChange, onSortChange, onFilterChange, onRowClick, onRowDoubleClick, onRowClone, onRowDelete, onAddCellComment, onRowHighlight, showToolbar, showPagination, showRowIndex, enableRowSelection, enableCellEditing, enableComments, enableHighlighting, enableUndoRedo, defaultPageSize, pageSizeOptions, defaultZoom, autoSave, compactMode, isLoading, className, emptyMessage, rowHighlights: externalRowHighlights, cellComments: externalCellComments, rowActions, toolbarMenuItems, serverSide, totalItems, currentPage: controlledCurrentPage, pageSize: controlledPageSize, onPageChange, sortConfig: controlledSortConfig, filters: controlledFilters, }: SpreadsheetProps<T>): react_jsx_runtime.JSX.Element;
|
|
560
577
|
declare namespace Spreadsheet {
|
|
561
578
|
var displayName: string;
|
|
562
579
|
}
|
|
@@ -672,4 +689,4 @@ interface SpreadsheetSettingsModalProps {
|
|
|
672
689
|
*/
|
|
673
690
|
declare const SpreadsheetSettingsModal: React.FC<SpreadsheetSettingsModalProps>;
|
|
674
691
|
|
|
675
|
-
export { type CellComment, type CellHighlight, type CellPosition, type PaginationState, type RowAction, type SelectionState, Spreadsheet, MemoizedSpreadsheetCell as SpreadsheetCell, type SpreadsheetCellProps, type SpreadsheetColumn, type SpreadsheetColumnFilter, type SpreadsheetColumnGroup, type SpreadsheetColumnGroupHeaderProps, SpreadsheetFilterDropdown, type SpreadsheetFilterDropdownProps, SpreadsheetHeader, type SpreadsheetHeaderProps, type SpreadsheetProps, type SpreadsheetSettings, SpreadsheetSettingsModal, type SpreadsheetSortConfig, type SpreadsheetState, SpreadsheetToolbar, type SpreadsheetToolbarProps };
|
|
692
|
+
export { type CellComment, type CellHighlight, type CellPosition, type PaginationState, type RowAction, type SelectionState, Spreadsheet, MemoizedSpreadsheetCell as SpreadsheetCell, type SpreadsheetCellProps, type SpreadsheetColumn, type SpreadsheetColumnFilter, type SpreadsheetColumnGroup, type SpreadsheetColumnGroupHeaderProps, SpreadsheetFilterDropdown, type SpreadsheetFilterDropdownProps, SpreadsheetHeader, type SpreadsheetHeaderProps, type SpreadsheetProps, type SpreadsheetSettings, SpreadsheetSettingsModal, type SpreadsheetSortConfig, type SpreadsheetState, SpreadsheetToolbar, type SpreadsheetToolbarProps, type ToolbarMenuItem };
|
package/dist/index.d.ts
CHANGED
|
@@ -297,6 +297,8 @@ interface SpreadsheetProps<T = any> {
|
|
|
297
297
|
cellComments?: CellComment[];
|
|
298
298
|
/** Custom row actions to display in the index column */
|
|
299
299
|
rowActions?: RowAction<T>[];
|
|
300
|
+
/** Custom menu items to display in the toolbar's "More" dropdown menu */
|
|
301
|
+
toolbarMenuItems?: ToolbarMenuItem[];
|
|
300
302
|
/**
|
|
301
303
|
* Enable server-side mode for filtering, sorting, and pagination.
|
|
302
304
|
* When enabled, the component will NOT perform client-side filtering, sorting, or pagination.
|
|
@@ -450,6 +452,21 @@ interface SpreadsheetFilterDropdownProps {
|
|
|
450
452
|
/** Custom className */
|
|
451
453
|
className?: string;
|
|
452
454
|
}
|
|
455
|
+
/**
|
|
456
|
+
* A menu item that can be added to the toolbar's "More" dropdown menu
|
|
457
|
+
*/
|
|
458
|
+
interface ToolbarMenuItem {
|
|
459
|
+
/** Unique identifier for the menu item */
|
|
460
|
+
id: string;
|
|
461
|
+
/** Display label for the menu item */
|
|
462
|
+
label: string;
|
|
463
|
+
/** Icon component to display (e.g., from react-icons) */
|
|
464
|
+
icon?: React$1.ReactNode;
|
|
465
|
+
/** Callback when menu item is clicked */
|
|
466
|
+
onClick: () => void;
|
|
467
|
+
/** Whether the menu item is disabled */
|
|
468
|
+
disabled?: boolean;
|
|
469
|
+
}
|
|
453
470
|
/**
|
|
454
471
|
* Props for SpreadsheetToolbar component
|
|
455
472
|
*/
|
|
@@ -492,8 +509,8 @@ interface SpreadsheetToolbarProps {
|
|
|
492
509
|
onClearSelection: () => void;
|
|
493
510
|
/** Callback for manual save */
|
|
494
511
|
onSave?: () => void;
|
|
495
|
-
/**
|
|
496
|
-
|
|
512
|
+
/** Custom menu items to display in the "More" dropdown menu */
|
|
513
|
+
menuItems?: ToolbarMenuItem[];
|
|
497
514
|
/** Callback for settings */
|
|
498
515
|
onSettings?: () => void;
|
|
499
516
|
/** Callback for keyboard shortcuts */
|
|
@@ -556,7 +573,7 @@ interface SpreadsheetColumnGroupHeaderProps {
|
|
|
556
573
|
* />
|
|
557
574
|
* ```
|
|
558
575
|
*/
|
|
559
|
-
declare function Spreadsheet<T extends Record<string, any>>({ data, columns, columnGroups, getRowId, onCellEdit, onSelectionChange, onSortChange, onFilterChange, onRowClick, onRowDoubleClick, onRowClone, onRowDelete, onAddCellComment, onRowHighlight, showToolbar, showPagination, showRowIndex, enableRowSelection, enableCellEditing, enableComments, enableHighlighting, enableUndoRedo, defaultPageSize, pageSizeOptions, defaultZoom, autoSave, compactMode, isLoading, className, emptyMessage, rowHighlights: externalRowHighlights, cellComments: externalCellComments, rowActions, serverSide, totalItems, currentPage: controlledCurrentPage, pageSize: controlledPageSize, onPageChange, sortConfig: controlledSortConfig, filters: controlledFilters, }: SpreadsheetProps<T>): react_jsx_runtime.JSX.Element;
|
|
576
|
+
declare function Spreadsheet<T extends Record<string, any>>({ data, columns, columnGroups, getRowId, onCellEdit, onSelectionChange, onSortChange, onFilterChange, onRowClick, onRowDoubleClick, onRowClone, onRowDelete, onAddCellComment, onRowHighlight, showToolbar, showPagination, showRowIndex, enableRowSelection, enableCellEditing, enableComments, enableHighlighting, enableUndoRedo, defaultPageSize, pageSizeOptions, defaultZoom, autoSave, compactMode, isLoading, className, emptyMessage, rowHighlights: externalRowHighlights, cellComments: externalCellComments, rowActions, toolbarMenuItems, serverSide, totalItems, currentPage: controlledCurrentPage, pageSize: controlledPageSize, onPageChange, sortConfig: controlledSortConfig, filters: controlledFilters, }: SpreadsheetProps<T>): react_jsx_runtime.JSX.Element;
|
|
560
577
|
declare namespace Spreadsheet {
|
|
561
578
|
var displayName: string;
|
|
562
579
|
}
|
|
@@ -672,4 +689,4 @@ interface SpreadsheetSettingsModalProps {
|
|
|
672
689
|
*/
|
|
673
690
|
declare const SpreadsheetSettingsModal: React.FC<SpreadsheetSettingsModalProps>;
|
|
674
691
|
|
|
675
|
-
export { type CellComment, type CellHighlight, type CellPosition, type PaginationState, type RowAction, type SelectionState, Spreadsheet, MemoizedSpreadsheetCell as SpreadsheetCell, type SpreadsheetCellProps, type SpreadsheetColumn, type SpreadsheetColumnFilter, type SpreadsheetColumnGroup, type SpreadsheetColumnGroupHeaderProps, SpreadsheetFilterDropdown, type SpreadsheetFilterDropdownProps, SpreadsheetHeader, type SpreadsheetHeaderProps, type SpreadsheetProps, type SpreadsheetSettings, SpreadsheetSettingsModal, type SpreadsheetSortConfig, type SpreadsheetState, SpreadsheetToolbar, type SpreadsheetToolbarProps };
|
|
692
|
+
export { type CellComment, type CellHighlight, type CellPosition, type PaginationState, type RowAction, type SelectionState, Spreadsheet, MemoizedSpreadsheetCell as SpreadsheetCell, type SpreadsheetCellProps, type SpreadsheetColumn, type SpreadsheetColumnFilter, type SpreadsheetColumnGroup, type SpreadsheetColumnGroupHeaderProps, SpreadsheetFilterDropdown, type SpreadsheetFilterDropdownProps, SpreadsheetHeader, type SpreadsheetHeaderProps, type SpreadsheetProps, type SpreadsheetSettings, SpreadsheetSettingsModal, type SpreadsheetSortConfig, type SpreadsheetState, SpreadsheetToolbar, type SpreadsheetToolbarProps, type ToolbarMenuItem };
|
package/dist/index.js
CHANGED
|
@@ -134,9 +134,6 @@ function HiCog(props) {
|
|
|
134
134
|
function HiDotsVertical(props) {
|
|
135
135
|
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 20 20", "fill": "currentColor", "aria-hidden": "true" }, "child": [{ "tag": "path", "attr": { "d": "M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" } }] })(props);
|
|
136
136
|
}
|
|
137
|
-
function HiDownload(props) {
|
|
138
|
-
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 20 20", "fill": "currentColor", "aria-hidden": "true" }, "child": [{ "tag": "path", "attr": { "fillRule": "evenodd", "d": "M3 17a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zm3.293-7.707a1 1 0 011.414 0L9 10.586V3a1 1 0 112 0v7.586l1.293-1.293a1 1 0 111.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z", "clipRule": "evenodd" } }] })(props);
|
|
139
|
-
}
|
|
140
137
|
function HiDuplicate(props) {
|
|
141
138
|
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 20 20", "fill": "currentColor", "aria-hidden": "true" }, "child": [{ "tag": "path", "attr": { "d": "M7 9a2 2 0 012-2h6a2 2 0 012 2v6a2 2 0 01-2 2H9a2 2 0 01-2-2V9z" } }, { "tag": "path", "attr": { "d": "M5 3a2 2 0 00-2 2v6a2 2 0 002 2V5h8a2 2 0 00-2-2H5z" } }] })(props);
|
|
142
139
|
}
|
|
@@ -375,7 +372,7 @@ var SpreadsheetCell = ({
|
|
|
375
372
|
{
|
|
376
373
|
className: cn(
|
|
377
374
|
"flex-1 truncate",
|
|
378
|
-
isEditable && "cursor-text hover:bg-gray-50 px-0.5 rounded min-h-[18px] flex items-center bg-
|
|
375
|
+
isEditable && "cursor-text hover:bg-gray-50 px-0.5 rounded min-h-[18px] flex items-center bg-yellow-50/50"
|
|
379
376
|
),
|
|
380
377
|
title: String(value ?? ""),
|
|
381
378
|
children: renderContent()
|
|
@@ -806,7 +803,7 @@ var SpreadsheetToolbar = ({
|
|
|
806
803
|
onRedo,
|
|
807
804
|
onClearSelection,
|
|
808
805
|
onSave,
|
|
809
|
-
|
|
806
|
+
menuItems,
|
|
810
807
|
onSettings,
|
|
811
808
|
onShowShortcuts,
|
|
812
809
|
hasActiveFilters,
|
|
@@ -1062,22 +1059,27 @@ var SpreadsheetToolbar = ({
|
|
|
1062
1059
|
]
|
|
1063
1060
|
}
|
|
1064
1061
|
),
|
|
1065
|
-
(onSettings || onShowShortcuts) &&
|
|
1066
|
-
|
|
1062
|
+
menuItems && menuItems.length > 0 && (onSettings || onShowShortcuts) && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "border-t border-gray-100 my-1" }),
|
|
1063
|
+
menuItems?.map((item) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
1067
1064
|
"button",
|
|
1068
1065
|
{
|
|
1069
1066
|
type: "button",
|
|
1067
|
+
disabled: item.disabled,
|
|
1070
1068
|
onClick: () => {
|
|
1071
|
-
|
|
1069
|
+
item.onClick();
|
|
1072
1070
|
setShowMoreMenu(false);
|
|
1073
1071
|
},
|
|
1074
|
-
className:
|
|
1072
|
+
className: cn(
|
|
1073
|
+
"w-full px-3 py-2 text-left hover:bg-gray-50 flex items-center gap-2 text-xs transition-colors",
|
|
1074
|
+
item.disabled && "opacity-50 cursor-not-allowed"
|
|
1075
|
+
),
|
|
1075
1076
|
children: [
|
|
1076
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
1077
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-gray-700", children:
|
|
1077
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "h-3.5 w-3.5 text-gray-500 flex items-center justify-center", children: item.icon }),
|
|
1078
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-gray-700", children: item.label })
|
|
1078
1079
|
]
|
|
1079
|
-
}
|
|
1080
|
-
|
|
1080
|
+
},
|
|
1081
|
+
item.id
|
|
1082
|
+
))
|
|
1081
1083
|
] })
|
|
1082
1084
|
] })
|
|
1083
1085
|
] })
|
|
@@ -2900,6 +2902,7 @@ function Spreadsheet({
|
|
|
2900
2902
|
rowHighlights: externalRowHighlights,
|
|
2901
2903
|
cellComments: externalCellComments,
|
|
2902
2904
|
rowActions,
|
|
2905
|
+
toolbarMenuItems,
|
|
2903
2906
|
// Server-side mode props
|
|
2904
2907
|
serverSide = false,
|
|
2905
2908
|
totalItems,
|
|
@@ -3304,7 +3307,7 @@ function Spreadsheet({
|
|
|
3304
3307
|
onSave: handleSave,
|
|
3305
3308
|
onSettings: () => setShowSettingsModal(true),
|
|
3306
3309
|
onShowShortcuts: () => setShowKeyboardShortcuts(true),
|
|
3307
|
-
|
|
3310
|
+
menuItems: toolbarMenuItems
|
|
3308
3311
|
}
|
|
3309
3312
|
),
|
|
3310
3313
|
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { ref: tableRef, className: "flex-1 overflow-auto border border-gray-200 rounded", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|