@rowsncolumns/spreadsheet 10.2.76 → 10.3.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/dist/cjs/api/insert-options.d.ts +67 -0
- package/dist/cjs/api/insert-options.d.ts.map +1 -0
- package/dist/cjs/api/insert-options.js +104 -0
- package/dist/cjs/api/move-overwrite.d.ts +14 -0
- package/dist/cjs/api/move-overwrite.d.ts.map +1 -0
- package/dist/cjs/api/move-overwrite.js +29 -0
- package/dist/cjs/api/multi-selection.d.ts +59 -0
- package/dist/cjs/api/multi-selection.d.ts.map +1 -0
- package/dist/cjs/api/multi-selection.js +166 -0
- package/dist/cjs/atoms/index.d.ts +3 -0
- package/dist/cjs/atoms/index.d.ts.map +1 -1
- package/dist/cjs/atoms/index.js +3 -0
- package/dist/cjs/atoms/insert-cells-dialog.atom.d.ts +36 -0
- package/dist/cjs/atoms/insert-cells-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/insert-cells-dialog.atom.js +34 -0
- package/dist/cjs/atoms/insert-options.atom.d.ts +21 -0
- package/dist/cjs/atoms/insert-options.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/insert-options.atom.js +11 -0
- package/dist/cjs/atoms/move-overwrite-confirm.atom.d.ts +24 -0
- package/dist/cjs/atoms/move-overwrite-confirm.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/move-overwrite-confirm.atom.js +42 -0
- package/dist/cjs/atoms/sheet-context.atom.d.ts +2 -0
- package/dist/cjs/atoms/sheet-context.atom.d.ts.map +1 -1
- package/dist/cjs/atoms/sheet-context.atom.js +15 -2
- package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/cjs/components/canvas-grid/index.js +284 -63
- package/dist/cjs/components/canvas-grid/typings.d.ts +47 -5
- package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/formula-result-preview.d.ts +4 -1
- package/dist/cjs/components/cell-editor/formula-result-preview.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/formula-result-preview.js +2 -2
- package/dist/cjs/components/cell-editor/index.d.ts +7 -1
- package/dist/cjs/components/cell-editor/index.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/index.js +3 -3
- package/dist/cjs/components/cell-input/cell-input.d.ts +13 -0
- package/dist/cjs/components/cell-input/cell-input.d.ts.map +1 -1
- package/dist/cjs/components/cell-input/cell-input.js +8 -3
- package/dist/cjs/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
- package/dist/cjs/components/cell-input/formula-bar-cell-input.js +3 -1
- package/dist/cjs/components/context-menu/index.d.ts +16 -1
- package/dist/cjs/components/context-menu/index.d.ts.map +1 -1
- package/dist/cjs/components/context-menu/index.js +245 -24
- package/dist/cjs/components/floating-cell-editor/index.d.ts.map +1 -1
- package/dist/cjs/components/floating-cell-editor/index.js +13 -5
- package/dist/cjs/components/insert-cells-dialog/index.d.ts +35 -0
- package/dist/cjs/components/insert-cells-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/insert-cells-dialog/index.js +84 -0
- package/dist/cjs/components/insert-options-smart-tag/index.d.ts +25 -0
- package/dist/cjs/components/insert-options-smart-tag/index.d.ts.map +1 -0
- package/dist/cjs/components/insert-options-smart-tag/index.js +41 -0
- package/dist/cjs/components/move-overwrite-confirm-dialog/index.d.ts +8 -0
- package/dist/cjs/components/move-overwrite-confirm-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/move-overwrite-confirm-dialog/index.js +34 -0
- package/dist/cjs/components/selection/index.d.ts +1 -1
- package/dist/cjs/components/selection/index.d.ts.map +1 -1
- package/dist/cjs/components/selection/index.js +4 -2
- package/dist/cjs/components/selection/types.d.ts +8 -0
- package/dist/cjs/components/selection/types.d.ts.map +1 -1
- package/dist/cjs/config.d.ts +6 -0
- package/dist/cjs/config.d.ts.map +1 -1
- package/dist/cjs/config.js +7 -1
- package/dist/cjs/hooks/use-cell-renderer.d.ts +7 -1
- package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-cell-renderer.js +8 -3
- package/dist/cjs/hooks/use-context-setter.d.ts.map +1 -1
- package/dist/cjs/hooks/use-context-setter.js +5 -1
- package/dist/cjs/hooks/use-copy-paste-cut.d.ts +5 -0
- package/dist/cjs/hooks/use-copy-paste-cut.d.ts.map +1 -1
- package/dist/cjs/hooks/use-copy-paste-cut.js +19 -0
- package/dist/cjs/hooks/use-editor-change.d.ts +4 -1
- package/dist/cjs/hooks/use-editor-change.d.ts.map +1 -1
- package/dist/cjs/hooks/use-editor-change.js +4 -3
- package/dist/cjs/hooks/use-editor-submit.d.ts +8 -1
- package/dist/cjs/hooks/use-editor-submit.d.ts.map +1 -1
- package/dist/cjs/hooks/use-editor-submit.js +9 -1
- package/dist/cjs/hooks/use-move-columns-rows.d.ts.map +1 -1
- package/dist/cjs/hooks/use-move-columns-rows.js +6 -0
- package/dist/cjs/hooks/use-selection-renderer.d.ts +9 -1
- package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection-renderer.js +26 -2
- package/dist/cjs/hooks/use-selection.d.ts +13 -5
- package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection.js +48 -6
- package/dist/cjs/index.d.ts +7 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +7 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/types.d.ts +8 -0
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/esm/api/insert-options.d.ts +67 -0
- package/dist/esm/api/insert-options.d.ts.map +1 -0
- package/dist/esm/api/insert-options.js +91 -0
- package/dist/esm/api/move-overwrite.d.ts +14 -0
- package/dist/esm/api/move-overwrite.d.ts.map +1 -0
- package/dist/esm/api/move-overwrite.js +25 -0
- package/dist/esm/api/multi-selection.d.ts +59 -0
- package/dist/esm/api/multi-selection.d.ts.map +1 -0
- package/dist/esm/api/multi-selection.js +92 -0
- package/dist/esm/atoms/index.d.ts +3 -0
- package/dist/esm/atoms/index.d.ts.map +1 -1
- package/dist/esm/atoms/index.js +3 -0
- package/dist/esm/atoms/insert-cells-dialog.atom.d.ts +36 -0
- package/dist/esm/atoms/insert-cells-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/insert-cells-dialog.atom.js +25 -0
- package/dist/esm/atoms/insert-options.atom.d.ts +21 -0
- package/dist/esm/atoms/insert-options.atom.d.ts.map +1 -0
- package/dist/esm/atoms/insert-options.atom.js +5 -0
- package/dist/esm/atoms/move-overwrite-confirm.atom.d.ts +24 -0
- package/dist/esm/atoms/move-overwrite-confirm.atom.d.ts.map +1 -0
- package/dist/esm/atoms/move-overwrite-confirm.atom.js +29 -0
- package/dist/esm/atoms/sheet-context.atom.d.ts +2 -0
- package/dist/esm/atoms/sheet-context.atom.d.ts.map +1 -1
- package/dist/esm/atoms/sheet-context.atom.js +10 -0
- package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/esm/components/canvas-grid/index.js +236 -19
- package/dist/esm/components/canvas-grid/typings.d.ts +47 -5
- package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/formula-result-preview.d.ts +4 -1
- package/dist/esm/components/cell-editor/formula-result-preview.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/formula-result-preview.js +3 -3
- package/dist/esm/components/cell-editor/index.d.ts +7 -1
- package/dist/esm/components/cell-editor/index.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/index.js +3 -3
- package/dist/esm/components/cell-input/cell-input.d.ts +13 -0
- package/dist/esm/components/cell-input/cell-input.d.ts.map +1 -1
- package/dist/esm/components/cell-input/cell-input.js +10 -5
- package/dist/esm/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
- package/dist/esm/components/cell-input/formula-bar-cell-input.js +3 -1
- package/dist/esm/components/context-menu/index.d.ts +16 -1
- package/dist/esm/components/context-menu/index.d.ts.map +1 -1
- package/dist/esm/components/context-menu/index.js +193 -16
- package/dist/esm/components/floating-cell-editor/index.d.ts.map +1 -1
- package/dist/esm/components/floating-cell-editor/index.js +12 -6
- package/dist/esm/components/insert-cells-dialog/index.d.ts +35 -0
- package/dist/esm/components/insert-cells-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/insert-cells-dialog/index.js +79 -0
- package/dist/esm/components/insert-options-smart-tag/index.d.ts +25 -0
- package/dist/esm/components/insert-options-smart-tag/index.d.ts.map +1 -0
- package/dist/esm/components/insert-options-smart-tag/index.js +35 -0
- package/dist/esm/components/move-overwrite-confirm-dialog/index.d.ts +8 -0
- package/dist/esm/components/move-overwrite-confirm-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/move-overwrite-confirm-dialog/index.js +30 -0
- package/dist/esm/components/selection/index.d.ts +1 -1
- package/dist/esm/components/selection/index.d.ts.map +1 -1
- package/dist/esm/components/selection/index.js +4 -2
- package/dist/esm/components/selection/types.d.ts +8 -0
- package/dist/esm/components/selection/types.d.ts.map +1 -1
- package/dist/esm/config.d.ts +6 -0
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +6 -0
- package/dist/esm/hooks/use-cell-renderer.d.ts +7 -1
- package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-cell-renderer.js +9 -4
- package/dist/esm/hooks/use-context-setter.d.ts.map +1 -1
- package/dist/esm/hooks/use-context-setter.js +5 -1
- package/dist/esm/hooks/use-copy-paste-cut.d.ts +5 -0
- package/dist/esm/hooks/use-copy-paste-cut.d.ts.map +1 -1
- package/dist/esm/hooks/use-copy-paste-cut.js +19 -0
- package/dist/esm/hooks/use-editor-change.d.ts +4 -1
- package/dist/esm/hooks/use-editor-change.d.ts.map +1 -1
- package/dist/esm/hooks/use-editor-change.js +5 -4
- package/dist/esm/hooks/use-editor-submit.d.ts +8 -1
- package/dist/esm/hooks/use-editor-submit.d.ts.map +1 -1
- package/dist/esm/hooks/use-editor-submit.js +10 -2
- package/dist/esm/hooks/use-move-columns-rows.d.ts.map +1 -1
- package/dist/esm/hooks/use-move-columns-rows.js +6 -0
- package/dist/esm/hooks/use-selection-renderer.d.ts +9 -1
- package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection-renderer.js +26 -2
- package/dist/esm/hooks/use-selection.d.ts +13 -5
- package/dist/esm/hooks/use-selection.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection.js +39 -3
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +7 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types.d.ts +8 -0
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/spreadsheet.min.css +1 -1
- package/package.json +8 -7
|
@@ -7,28 +7,245 @@ var icons_1 = require("@rowsncolumns/icons");
|
|
|
7
7
|
var ui_1 = require("@rowsncolumns/ui");
|
|
8
8
|
var utils_1 = require("@rowsncolumns/utils");
|
|
9
9
|
var react_1 = tslib_1.__importStar(require("react"));
|
|
10
|
+
var multi_selection_1 = require("../../api/multi-selection");
|
|
10
11
|
var validation_1 = require("../../api/validation");
|
|
11
12
|
var atoms_1 = require("../../atoms");
|
|
12
13
|
var advanced_filter_dialog_atom_1 = require("../../atoms/advanced-filter-dialog.atom");
|
|
13
14
|
var goal_seek_dialog_atom_1 = require("../../atoms/goal-seek-dialog.atom");
|
|
15
|
+
var insert_cells_dialog_atom_1 = require("../../atoms/insert-cells-dialog.atom");
|
|
14
16
|
var remove_duplicates_dialog_atom_1 = require("../../atoms/remove-duplicates-dialog.atom");
|
|
15
17
|
var subtotal_dialog_atom_1 = require("../../atoms/subtotal-dialog.atom");
|
|
16
18
|
var text_to_columns_dialog_atom_1 = require("../../atoms/text-to-columns-dialog.atom");
|
|
19
|
+
var validation_alert_atom_1 = require("../../atoms/validation-alert.atom");
|
|
17
20
|
var config_1 = require("../../config");
|
|
18
21
|
var helpers_1 = require("../../helpers");
|
|
19
22
|
var total_row_functions_1 = require("./total-row-functions");
|
|
20
23
|
var ContextMenu = function (_a) {
|
|
21
|
-
var _b;
|
|
22
|
-
var isRowHeader = _a.isRowHeader, isColumnHeader = _a.isColumnHeader, activeCell = _a.activeCell, selections = _a.selections, basicFilter = _a.basicFilter, isTableHeader = _a.isTableHeader, onClearContents = _a.onClearContents, onHideColumn = _a.onHideColumn, onHideRow = _a.onHideRow, onGroupRows = _a.onGroupRows, onUngroupRows = _a.onUngroupRows, onGroupColumns = _a.onGroupColumns, onUngroupColumns = _a.onUngroupColumns, onDeleteRow = _a.onDeleteRow, onDeleteColumn = _a.onDeleteColumn, onInsertColumn = _a.onInsertColumn, onInsertRow = _a.onInsertRow, onInsertCellsShiftDown = _a.onInsertCellsShiftDown, onInsertCellsShiftRight = _a.onInsertCellsShiftRight, onDeleteCellsShiftLeft = _a.onDeleteCellsShiftLeft, onDeleteCellsShiftUp = _a.onDeleteCellsShiftUp, onFreezeRow = _a.onFreezeRow, onFreezeColumn = _a.onFreezeColumn, onCopy = _a.onCopy, onCut = _a.onCut, onPaste = _a.onPaste, onRequestPasteSpecial = _a.onRequestPasteSpecial, onRequestEvaluateFormula = _a.onRequestEvaluateFormula, onRequestAddWatch = _a.onRequestAddWatch, isActiveCellFormula = _a.isActiveCellFormula, onInsertNote = _a.onInsertNote, onProtectRange = _a.onProtectRange, onUnProtectRange = _a.onUnProtectRange, onSortRange = _a.onSortRange, onSortColumn = _a.onSortColumn, onRequestDefineNamedRange = _a.onRequestDefineNamedRange, onRequestResize = _a.onRequestResize, onRequestEditTable = _a.onRequestEditTable, onRequestEditPivotTable = _a.onRequestEditPivotTable, onRequestDeletePivotTable = _a.onRequestDeletePivotTable, onPivotDrillDown = _a.onPivotDrillDown, onRequestFormatCells = _a.onRequestFormatCells, onRequestConditionalFormat = _a.onRequestConditionalFormat, onRequestDataValidation = _a.onRequestDataValidation, onRemoveTable = _a.onRemoveTable, onClearFormatting = _a.onClearFormatting, onCreateTable = _a.onCreateTable, onCreateBasicFilter = _a.onCreateBasicFilter, onFilterTable = _a.onFilterTable, onSortTable = _a.onSortTable, getFormattedValuesFromRange = _a.getFormattedValuesFromRange, focusSheet = _a.focusSheet, isSheetFocused = _a.isSheetFocused, getFormattedValue = _a.getFormattedValue, onInsertTableColumn = _a.onInsertTableColumn, onDeleteTableColumn = _a.onDeleteTableColumn, onInsertTableRow = _a.onInsertTableRow, onDeleteTableRow = _a.onDeleteTableRow, onSplitTextToColumns = _a.onSplitTextToColumns, onRemoveDuplicates = _a.onRemoveDuplicates, onGoalSeek = _a.onGoalSeek, onSubtotal = _a.onSubtotal, onAdvancedFilter = _a.onAdvancedFilter, onChange = _a.onChange, getCellData = _a.getCellData, isHiddenColumn = _a.isHiddenColumn, isHiddenRow = _a.isHiddenRow, onShowColumn = _a.onShowColumn, onShowRow = _a.onShowRow, tables = _a.tables, pivotTables = _a.pivotTables, protectedRanges = _a.protectedRanges, sheetId = _a.sheetId, frozenRows = _a.frozenRows, frozenColumns = _a.frozenColumns, selectedRowHeadersIds = _a.selectedRowHeadersIds, selectedColumnHeadersIds = _a.selectedColumnHeadersIds,
|
|
24
|
+
var _b, _c, _d;
|
|
25
|
+
var isRowHeader = _a.isRowHeader, isColumnHeader = _a.isColumnHeader, activeCell = _a.activeCell, selections = _a.selections, basicFilter = _a.basicFilter, isTableHeader = _a.isTableHeader, onClearContents = _a.onClearContents, onHideColumn = _a.onHideColumn, onHideRow = _a.onHideRow, onGroupRows = _a.onGroupRows, onUngroupRows = _a.onUngroupRows, onGroupColumns = _a.onGroupColumns, onUngroupColumns = _a.onUngroupColumns, onDeleteRow = _a.onDeleteRow, onDeleteColumn = _a.onDeleteColumn, onInsertColumn = _a.onInsertColumn, onInsertRow = _a.onInsertRow, onInsertCellsShiftDown = _a.onInsertCellsShiftDown, onInsertCellsShiftRight = _a.onInsertCellsShiftRight, onDeleteCellsShiftLeft = _a.onDeleteCellsShiftLeft, onDeleteCellsShiftUp = _a.onDeleteCellsShiftUp, onFreezeRow = _a.onFreezeRow, onFreezeColumn = _a.onFreezeColumn, onCopy = _a.onCopy, onCut = _a.onCut, hasCutSelection = _a.hasCutSelection, onInsertCutCells = _a.onInsertCutCells, onPaste = _a.onPaste, onRequestPasteSpecial = _a.onRequestPasteSpecial, onRequestEvaluateFormula = _a.onRequestEvaluateFormula, onRequestAddWatch = _a.onRequestAddWatch, isActiveCellFormula = _a.isActiveCellFormula, onInsertNote = _a.onInsertNote, onProtectRange = _a.onProtectRange, onUnProtectRange = _a.onUnProtectRange, onSortRange = _a.onSortRange, onSortColumn = _a.onSortColumn, onRequestDefineNamedRange = _a.onRequestDefineNamedRange, onRequestResize = _a.onRequestResize, onRequestEditTable = _a.onRequestEditTable, onRequestEditPivotTable = _a.onRequestEditPivotTable, onRequestDeletePivotTable = _a.onRequestDeletePivotTable, onPivotDrillDown = _a.onPivotDrillDown, onRequestFormatCells = _a.onRequestFormatCells, onRequestConditionalFormat = _a.onRequestConditionalFormat, onRequestDataValidation = _a.onRequestDataValidation, onRemoveTable = _a.onRemoveTable, onClearFormatting = _a.onClearFormatting, onCreateTable = _a.onCreateTable, onCreateBasicFilter = _a.onCreateBasicFilter, onFilterTable = _a.onFilterTable, onSortTable = _a.onSortTable, getFormattedValuesFromRange = _a.getFormattedValuesFromRange, focusSheet = _a.focusSheet, isSheetFocused = _a.isSheetFocused, getFormattedValue = _a.getFormattedValue, onInsertTableColumn = _a.onInsertTableColumn, onDeleteTableColumn = _a.onDeleteTableColumn, onInsertTableRow = _a.onInsertTableRow, onDeleteTableRow = _a.onDeleteTableRow, onSplitTextToColumns = _a.onSplitTextToColumns, onRemoveDuplicates = _a.onRemoveDuplicates, onGoalSeek = _a.onGoalSeek, onSubtotal = _a.onSubtotal, onAdvancedFilter = _a.onAdvancedFilter, onChange = _a.onChange, getCellData = _a.getCellData, isHiddenColumn = _a.isHiddenColumn, isHiddenRow = _a.isHiddenRow, onShowColumn = _a.onShowColumn, onShowRow = _a.onShowRow, tables = _a.tables, pivotTables = _a.pivotTables, protectedRanges = _a.protectedRanges, sheetId = _a.sheetId, frozenRows = _a.frozenRows, frozenColumns = _a.frozenColumns, selectedRowHeadersIds = _a.selectedRowHeadersIds, selectedColumnHeadersIds = _a.selectedColumnHeadersIds, rowCount = _a.rowCount, columnCount = _a.columnCount, _e = _a.readonly, readonly = _e === void 0 ? false : _e, onAddQuickEdit = _a.onAddQuickEdit, enableMagicFill = _a.enableMagicFill;
|
|
23
26
|
var isHeader = isColumnHeader || isRowHeader;
|
|
24
27
|
var shouldFocusSheetRef = (0, react_1.useRef)(true);
|
|
25
28
|
var multiColumnTitle = (0, helpers_1.generateMultiDimTitle)(selectedColumnHeadersIds, "y");
|
|
26
|
-
var
|
|
27
|
-
? selections
|
|
28
|
-
: (0, grid_1.selectionFromActiveCell)(activeCell)
|
|
29
|
+
var selectionAreas = selections.length
|
|
30
|
+
? selections
|
|
31
|
+
: (0, grid_1.selectionFromActiveCell)(activeCell);
|
|
32
|
+
var selection = selectionAreas[0];
|
|
29
33
|
var multiRowTitle = (0, helpers_1.generateMultiDimTitle)(selectedRowHeadersIds, "x");
|
|
30
|
-
|
|
31
|
-
var
|
|
34
|
+
// Every Ctrl-click area counts, not just the first (Excel INS-08 / UI-07).
|
|
35
|
+
var selectedRowIndexes = (0, multi_selection_1.indexesForAreas)(selectionAreas, "row");
|
|
36
|
+
var selectedColumnIndexes = (0, multi_selection_1.indexesForAreas)(selectionAreas, "column");
|
|
37
|
+
var isWholeRow = columnCount != null
|
|
38
|
+
? (0, multi_selection_1.wholeRowPredicate)(columnCount)
|
|
39
|
+
: (0, multi_selection_1.wholeRowPredicateFromHeaderIds)(selectedRowHeadersIds);
|
|
40
|
+
var isWholeColumn = rowCount != null
|
|
41
|
+
? (0, multi_selection_1.wholeColumnPredicate)(rowCount)
|
|
42
|
+
: (0, multi_selection_1.wholeColumnPredicateFromHeaderIds)(selectedColumnHeadersIds);
|
|
43
|
+
var multiSelectionKind = (0, multi_selection_1.classifyMultiSelection)(selectionAreas, {
|
|
44
|
+
isWholeRow: isWholeRow,
|
|
45
|
+
isWholeColumn: isWholeColumn,
|
|
46
|
+
});
|
|
47
|
+
var showValidationAlert = (0, validation_alert_atom_1.useShowValidationAlert)();
|
|
48
|
+
var isInsertCellsDialogMounted = (0, insert_cells_dialog_atom_1.useIsInsertCellsDialogMounted)();
|
|
49
|
+
var openInsertCellsDialog = (0, insert_cells_dialog_atom_1.useOpenInsertCellsDialog)();
|
|
50
|
+
/** Excel: "That command cannot be used on multiple selections." */
|
|
51
|
+
var refuseMultipleSelections = function (title) {
|
|
52
|
+
shouldFocusSheetRef.current = false;
|
|
53
|
+
void showValidationAlert({
|
|
54
|
+
style: "stop",
|
|
55
|
+
title: title,
|
|
56
|
+
message: config_1.MULTIPLE_SELECTIONS_ERROR,
|
|
57
|
+
confirm: false,
|
|
58
|
+
}).then(function () { return focusSheet(); });
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* The entire-row bands a row insert / delete acts on — one per selected
|
|
62
|
+
* area, bottom-up, so inserting above each band never shifts a band still
|
|
63
|
+
* to be processed (Excel INS-08). Falls back to the header bookkeeping, then
|
|
64
|
+
* to the active row, when no area is a whole row.
|
|
65
|
+
*/
|
|
66
|
+
var rowBands = function () {
|
|
67
|
+
var areas = selectionAreas.filter(function (_a) {
|
|
68
|
+
var range = _a.range;
|
|
69
|
+
return isWholeRow(range);
|
|
70
|
+
});
|
|
71
|
+
var bands = areas.length
|
|
72
|
+
? (0, multi_selection_1.bandsForAreas)(areas, "row")
|
|
73
|
+
: (0, multi_selection_1.bandsFromIndexes)(selectedRowHeadersIds);
|
|
74
|
+
return bands.length
|
|
75
|
+
? bands
|
|
76
|
+
: [{ start: activeCell.rowIndex, end: activeCell.rowIndex }];
|
|
77
|
+
};
|
|
78
|
+
var columnBands = function () {
|
|
79
|
+
var areas = selectionAreas.filter(function (_a) {
|
|
80
|
+
var range = _a.range;
|
|
81
|
+
return isWholeColumn(range);
|
|
82
|
+
});
|
|
83
|
+
var bands = areas.length
|
|
84
|
+
? (0, multi_selection_1.bandsForAreas)(areas, "column")
|
|
85
|
+
: (0, multi_selection_1.bandsFromIndexes)(selectedColumnHeadersIds);
|
|
86
|
+
return bands.length
|
|
87
|
+
? bands
|
|
88
|
+
: [{ start: activeCell.columnIndex, end: activeCell.columnIndex }];
|
|
89
|
+
};
|
|
90
|
+
var bandSize = function (band) { return band.end - band.start + 1; };
|
|
91
|
+
var insertRowsAbove = function () {
|
|
92
|
+
var e_1, _a;
|
|
93
|
+
try {
|
|
94
|
+
for (var _b = tslib_1.__values(rowBands()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
95
|
+
var band = _c.value;
|
|
96
|
+
onInsertRow === null || onInsertRow === void 0 ? void 0 : onInsertRow(sheetId, band.start, bandSize(band));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
100
|
+
finally {
|
|
101
|
+
try {
|
|
102
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
103
|
+
}
|
|
104
|
+
finally { if (e_1) throw e_1.error; }
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
var insertRowsBelow = function () {
|
|
108
|
+
var e_2, _a;
|
|
109
|
+
try {
|
|
110
|
+
for (var _b = tslib_1.__values(rowBands()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
111
|
+
var band = _c.value;
|
|
112
|
+
onInsertRow === null || onInsertRow === void 0 ? void 0 : onInsertRow(sheetId, band.end + 1, bandSize(band));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
116
|
+
finally {
|
|
117
|
+
try {
|
|
118
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
119
|
+
}
|
|
120
|
+
finally { if (e_2) throw e_2.error; }
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
var insertColumnsLeft = function () {
|
|
124
|
+
var e_3, _a;
|
|
125
|
+
try {
|
|
126
|
+
for (var _b = tslib_1.__values(columnBands()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
127
|
+
var band = _c.value;
|
|
128
|
+
onInsertColumn === null || onInsertColumn === void 0 ? void 0 : onInsertColumn(sheetId, band.start, bandSize(band));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
132
|
+
finally {
|
|
133
|
+
try {
|
|
134
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
135
|
+
}
|
|
136
|
+
finally { if (e_3) throw e_3.error; }
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
var insertColumnsRight = function () {
|
|
140
|
+
var e_4, _a;
|
|
141
|
+
try {
|
|
142
|
+
for (var _b = tslib_1.__values(columnBands()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
143
|
+
var band = _c.value;
|
|
144
|
+
onInsertColumn === null || onInsertColumn === void 0 ? void 0 : onInsertColumn(sheetId, band.end + 1, bandSize(band));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
148
|
+
finally {
|
|
149
|
+
try {
|
|
150
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
151
|
+
}
|
|
152
|
+
finally { if (e_4) throw e_4.error; }
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
var isSingleWholeRow = multiSelectionKind === "single" && isWholeRow(selection.range);
|
|
156
|
+
var isSingleWholeColumn = multiSelectionKind === "single" && isWholeColumn(selection.range);
|
|
157
|
+
/**
|
|
158
|
+
* Excel's cell-menu Insert: entire rows / columns insert directly, a
|
|
159
|
+
* multi-area selection inserts per area or is refused, and a plain cell
|
|
160
|
+
* range opens the Insert dialog (UI-06 / UI-07). The direct submenu remains
|
|
161
|
+
* only while no `InsertCellsDialogHost` is mounted.
|
|
162
|
+
*/
|
|
163
|
+
var usesDirectInsertSubmenu = multiSelectionKind === "single" &&
|
|
164
|
+
!isSingleWholeRow &&
|
|
165
|
+
!isSingleWholeColumn &&
|
|
166
|
+
!isInsertCellsDialogMounted;
|
|
167
|
+
var handleInsertCells = function () {
|
|
168
|
+
if (multiSelectionKind === "mixed") {
|
|
169
|
+
refuseMultipleSelections("Insert");
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
if (multiSelectionKind === "all-rows" || isSingleWholeRow) {
|
|
173
|
+
insertRowsAbove();
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
if (multiSelectionKind === "all-columns" || isSingleWholeColumn) {
|
|
177
|
+
insertColumnsLeft();
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
shouldFocusSheetRef.current = false;
|
|
181
|
+
openInsertCellsDialog({
|
|
182
|
+
mode: "insert",
|
|
183
|
+
defaultChoice: (0, multi_selection_1.defaultInsertCellsChoice)(selection.range),
|
|
184
|
+
onApply: function (choice) {
|
|
185
|
+
switch (choice) {
|
|
186
|
+
case "shift-right":
|
|
187
|
+
onInsertCellsShiftRight === null || onInsertCellsShiftRight === void 0 ? void 0 : onInsertCellsShiftRight(sheetId, activeCell, selections);
|
|
188
|
+
break;
|
|
189
|
+
case "shift-down":
|
|
190
|
+
onInsertCellsShiftDown === null || onInsertCellsShiftDown === void 0 ? void 0 : onInsertCellsShiftDown(sheetId, activeCell, selections);
|
|
191
|
+
break;
|
|
192
|
+
case "entire-row":
|
|
193
|
+
onInsertRow === null || onInsertRow === void 0 ? void 0 : onInsertRow(sheetId, selection.range.startRowIndex, selectedRowIndexes.length);
|
|
194
|
+
break;
|
|
195
|
+
case "entire-column":
|
|
196
|
+
onInsertColumn === null || onInsertColumn === void 0 ? void 0 : onInsertColumn(sheetId, selection.range.startColumnIndex, selectedColumnIndexes.length);
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
focusSheet();
|
|
200
|
+
},
|
|
201
|
+
});
|
|
202
|
+
};
|
|
203
|
+
var handleDeleteCells = function () {
|
|
204
|
+
if (multiSelectionKind === "mixed") {
|
|
205
|
+
refuseMultipleSelections("Delete");
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
if (multiSelectionKind === "all-rows" || isSingleWholeRow) {
|
|
209
|
+
onDeleteRow === null || onDeleteRow === void 0 ? void 0 : onDeleteRow(sheetId, selectedRowIndexes);
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
if (multiSelectionKind === "all-columns" || isSingleWholeColumn) {
|
|
213
|
+
onDeleteColumn === null || onDeleteColumn === void 0 ? void 0 : onDeleteColumn(sheetId, selectedColumnIndexes);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
shouldFocusSheetRef.current = false;
|
|
217
|
+
openInsertCellsDialog({
|
|
218
|
+
mode: "delete",
|
|
219
|
+
defaultChoice: (0, multi_selection_1.defaultDeleteCellsChoice)(selection.range),
|
|
220
|
+
onApply: function (choice) {
|
|
221
|
+
switch (choice) {
|
|
222
|
+
case "shift-left":
|
|
223
|
+
onDeleteCellsShiftLeft === null || onDeleteCellsShiftLeft === void 0 ? void 0 : onDeleteCellsShiftLeft(sheetId, activeCell, selections);
|
|
224
|
+
break;
|
|
225
|
+
case "shift-up":
|
|
226
|
+
onDeleteCellsShiftUp === null || onDeleteCellsShiftUp === void 0 ? void 0 : onDeleteCellsShiftUp(sheetId, activeCell, selections);
|
|
227
|
+
break;
|
|
228
|
+
case "entire-row":
|
|
229
|
+
onDeleteRow === null || onDeleteRow === void 0 ? void 0 : onDeleteRow(sheetId, selectedRowIndexes);
|
|
230
|
+
break;
|
|
231
|
+
case "entire-column":
|
|
232
|
+
onDeleteColumn === null || onDeleteColumn === void 0 ? void 0 : onDeleteColumn(sheetId, selectedColumnIndexes);
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
focusSheet();
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
};
|
|
239
|
+
var insertCellsLabel = multiSelectionKind === "all-rows" || isSingleWholeRow
|
|
240
|
+
? "Insert ".concat(selectedRowIndexes.length, " row above")
|
|
241
|
+
: multiSelectionKind === "all-columns" || isSingleWholeColumn
|
|
242
|
+
? "Insert ".concat(selectedColumnIndexes.length, " column left")
|
|
243
|
+
: "Insert…";
|
|
244
|
+
var deleteCellsLabel = multiSelectionKind === "all-rows" || isSingleWholeRow
|
|
245
|
+
? "Delete row ".concat((_b = (0, helpers_1.generateMultiDimTitle)(selectedRowIndexes, "x")) !== null && _b !== void 0 ? _b : "")
|
|
246
|
+
: multiSelectionKind === "all-columns" || isSingleWholeColumn
|
|
247
|
+
? "Delete column ".concat((_c = (0, helpers_1.generateMultiDimTitle)(selectedColumnIndexes, "y")) !== null && _c !== void 0 ? _c : "")
|
|
248
|
+
: "Delete…";
|
|
32
249
|
var hiddenColumns = selectedColumnIndexes.filter(function (index) {
|
|
33
250
|
return isHiddenColumn(index);
|
|
34
251
|
});
|
|
@@ -349,6 +566,12 @@ var ContextMenu = function (_a) {
|
|
|
349
566
|
react_1.default.createElement(icons_1.ClipboardIcon, null)),
|
|
350
567
|
"Paste ",
|
|
351
568
|
react_1.default.createElement(ui_1.DropdownRightSlot, null, "\u2318V")),
|
|
569
|
+
onInsertCutCells ? (react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () {
|
|
570
|
+
return onInsertCutCells(isRowHeader ? "rows" : isColumnHeader ? "columns" : "cells");
|
|
571
|
+
}, disabled: readonly || !hasCutSelection },
|
|
572
|
+
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
573
|
+
react_1.default.createElement(icons_1.ClipboardIcon, null)),
|
|
574
|
+
"Insert Cut Cells")) : null,
|
|
352
575
|
react_1.default.createElement(ui_1.DropdownMenuSub, null,
|
|
353
576
|
react_1.default.createElement(ui_1.DropdownMenuSubTrigger, { disabled: readonly },
|
|
354
577
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
@@ -394,17 +617,13 @@ var ContextMenu = function (_a) {
|
|
|
394
617
|
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () { return onClearContents === null || onClearContents === void 0 ? void 0 : onClearContents(sheetId, activeCell, selections); }, disabled: readonly }, "Clear contents"))),
|
|
395
618
|
react_1.default.createElement(ui_1.DropdownMenuSeparator, null),
|
|
396
619
|
isColumnHeader ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
397
|
-
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick:
|
|
398
|
-
return onInsertColumn === null || onInsertColumn === void 0 ? void 0 : onInsertColumn(sheetId, activeCell.columnIndex, selectedColumnHeadersIds.length);
|
|
399
|
-
}, disabled: readonly },
|
|
620
|
+
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: insertColumnsLeft, disabled: readonly },
|
|
400
621
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
401
622
|
react_1.default.createElement(icons_1.PlusIcon, null)),
|
|
402
623
|
"Insert ",
|
|
403
624
|
selectedColumnHeadersIds.length,
|
|
404
625
|
" column left"),
|
|
405
|
-
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick:
|
|
406
|
-
return onInsertColumn === null || onInsertColumn === void 0 ? void 0 : onInsertColumn(sheetId, activeCell.columnIndex + selectedColumnHeadersIds.length, selectedColumnHeadersIds.length);
|
|
407
|
-
}, disabled: readonly },
|
|
626
|
+
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: insertColumnsRight, disabled: readonly },
|
|
408
627
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
409
628
|
react_1.default.createElement(icons_1.PlusIcon, null)),
|
|
410
629
|
"Insert ",
|
|
@@ -470,17 +689,13 @@ var ContextMenu = function (_a) {
|
|
|
470
689
|
react_1.default.createElement(icons_1.SortUpIcon, null)),
|
|
471
690
|
"Sort sheet Z to A"))) : null,
|
|
472
691
|
isRowHeader ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
473
|
-
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick:
|
|
474
|
-
return onInsertRow === null || onInsertRow === void 0 ? void 0 : onInsertRow(sheetId, activeCell.rowIndex, selectedRowHeadersIds.length);
|
|
475
|
-
}, disabled: readonly },
|
|
692
|
+
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: insertRowsAbove, disabled: readonly },
|
|
476
693
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
477
694
|
react_1.default.createElement(icons_1.PlusIcon, null)),
|
|
478
695
|
"Insert ",
|
|
479
696
|
selectedRowHeadersIds.length,
|
|
480
697
|
" row above"),
|
|
481
|
-
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick:
|
|
482
|
-
return onInsertRow === null || onInsertRow === void 0 ? void 0 : onInsertRow(sheetId, activeCell.rowIndex + selectedRowHeadersIds.length, selectedRowHeadersIds.length);
|
|
483
|
-
}, disabled: readonly },
|
|
698
|
+
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: insertRowsBelow, disabled: readonly },
|
|
484
699
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
485
700
|
react_1.default.createElement(icons_1.PlusIcon, null)),
|
|
486
701
|
"Insert ",
|
|
@@ -555,7 +770,7 @@ var ContextMenu = function (_a) {
|
|
|
555
770
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
556
771
|
react_1.default.createElement(icons_1.MdOutlineFactCheck, null)),
|
|
557
772
|
"Data validation")) : null)) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
558
|
-
react_1.default.createElement(ui_1.DropdownMenuSub, null,
|
|
773
|
+
activeTable || usesDirectInsertSubmenu ? (react_1.default.createElement(ui_1.DropdownMenuSub, null,
|
|
559
774
|
react_1.default.createElement(ui_1.DropdownMenuSubTrigger, { disabled: readonly },
|
|
560
775
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
561
776
|
react_1.default.createElement(icons_1.PlusIcon, null)),
|
|
@@ -611,8 +826,11 @@ var ContextMenu = function (_a) {
|
|
|
611
826
|
}, disabled: readonly },
|
|
612
827
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
613
828
|
react_1.default.createElement(icons_1.PlusIcon, null)),
|
|
614
|
-
"Insert cells and shift cells down"))))),
|
|
615
|
-
|
|
829
|
+
"Insert cells and shift cells down")))))) : (react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: handleInsertCells, disabled: readonly },
|
|
830
|
+
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
831
|
+
react_1.default.createElement(icons_1.PlusIcon, null)),
|
|
832
|
+
insertCellsLabel)),
|
|
833
|
+
activeTable || usesDirectInsertSubmenu ? (react_1.default.createElement(ui_1.DropdownMenuSub, null,
|
|
616
834
|
react_1.default.createElement(ui_1.DropdownMenuSubTrigger, { disabled: readonly },
|
|
617
835
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
618
836
|
react_1.default.createElement(icons_1.TrashIcon, null)),
|
|
@@ -658,7 +876,10 @@ var ContextMenu = function (_a) {
|
|
|
658
876
|
}, disabled: readonly },
|
|
659
877
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
660
878
|
react_1.default.createElement(icons_1.TrashIcon, null)),
|
|
661
|
-
"Delete cells and shift cells up"))))),
|
|
879
|
+
"Delete cells and shift cells up")))))) : (react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: handleDeleteCells, disabled: readonly },
|
|
880
|
+
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
881
|
+
react_1.default.createElement(icons_1.TrashIcon, null)),
|
|
882
|
+
deleteCellsLabel)),
|
|
662
883
|
react_1.default.createElement(ui_1.DropdownMenuSeparator, null),
|
|
663
884
|
react_1.default.createElement(ui_1.DropdownMenuSub, null,
|
|
664
885
|
react_1.default.createElement(ui_1.DropdownMenuSubTrigger, { disabled: readonly },
|
|
@@ -671,7 +892,7 @@ var ContextMenu = function (_a) {
|
|
|
671
892
|
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () {
|
|
672
893
|
onFilterTableOrFilterView(sheetId, activeCell.rowIndex, activeCell.columnIndex);
|
|
673
894
|
}, disabled: readonly },
|
|
674
|
-
"Cell value \"", (
|
|
895
|
+
"Cell value \"", (_d = getFormattedValue(sheetId, activeCell.rowIndex, activeCell.columnIndex)) !== null && _d !== void 0 ? _d : config_1.BLANK_LABEL,
|
|
675
896
|
"\""))),
|
|
676
897
|
react_1.default.createElement(ui_1.DropdownMenuSub, null,
|
|
677
898
|
react_1.default.createElement(ui_1.DropdownMenuSubTrigger, { disabled: readonly },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/floating-cell-editor/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGvE,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/floating-cell-editor/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGvE,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAU3C,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAgBrD,MAAM,MAAM,uBAAuB,GAAG;IACpC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,qBAAqB,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAC/C;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,UAAU,EAAE,aAAa,CAAC;IAC1B;;OAEG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;IAClD;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B;;OAEG;IACH,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,oBAAoB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC5C;;;;;OAKG;IACH,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IACtC;;OAEG;IACH,kBAAkB,CAAC,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC3D;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IAC7C;;OAEG;IACH,cAAc,CAAC,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAEnD;;OAEG;IACH,+BAA+B,CAAC,EAAE,eAAe,CAAC,iCAAiC,CAAC,CAAC;IACrF;;OAEG;IACH,6BAA6B,CAAC,EAAE,eAAe,CAAC,+BAA+B,CAAC,CAAC;IACjF;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CACnD,CAAC;AAEF,eAAO,MAAM,kBAAkB,mRAkB1B,uBAAuB,uBAwW3B,CAAC"}
|
|
@@ -5,6 +5,7 @@ var tslib_1 = require("tslib");
|
|
|
5
5
|
var grid_1 = require("@rowsncolumns/grid");
|
|
6
6
|
var icons_1 = require("@rowsncolumns/icons");
|
|
7
7
|
var ui_1 = require("@rowsncolumns/ui");
|
|
8
|
+
var utils_1 = require("@rowsncolumns/utils");
|
|
8
9
|
var use_selection_aware_formatting_1 = require("../../hooks/use-selection-aware-formatting");
|
|
9
10
|
var react_1 = require("react");
|
|
10
11
|
var react_2 = tslib_1.__importDefault(require("react"));
|
|
@@ -17,7 +18,12 @@ exports.FloatingCellEditor = (0, react_1.memo)(function (_a) {
|
|
|
17
18
|
var _b, _c, _d, _e, _f, _g, _h;
|
|
18
19
|
var initialValue = _a.initialValue, initialTextFormatRuns = _a.initialTextFormatRuns, className = _a.className, activeCell = _a.activeCell, sheetId = _a.sheetId, cellFormat = _a.cellFormat, theme = _a.theme, isDarkMode = _a.isDarkMode, functionDescriptions = _a.functionDescriptions, _j = _a.selections, selections = _j === void 0 ? config_1.DEFAULT_ARRAY : _j, onChange = _a.onChange, onChangeFormattingProp = _a.onChangeFormatting, onInsertRow = _a.onInsertRow, onInsertColumn = _a.onInsertColumn, ColorSelector = _a.ColorSelector, props = tslib_1.__rest(_a, ["initialValue", "initialTextFormatRuns", "className", "activeCell", "sheetId", "cellFormat", "theme", "isDarkMode", "functionDescriptions", "selections", "onChange", "onChangeFormatting", "onInsertRow", "onInsertColumn", "ColorSelector"]);
|
|
19
20
|
var formulaInputRef = (0, react_1.useRef)(null);
|
|
20
|
-
|
|
21
|
+
// The stored (canonical) entry is shown and edited in the grid's formula locale; the commit
|
|
22
|
+
// below hands the canonical text back to the host.
|
|
23
|
+
var formulaLocale = (0, atoms_1.useFormulaLocale)();
|
|
24
|
+
var _k = tslib_1.__read((0, react_1.useState)(function () {
|
|
25
|
+
return (0, utils_1.localizeCellInput)(initialValue !== null && initialValue !== void 0 ? initialValue : "", formulaLocale);
|
|
26
|
+
}), 2), value = _k[0], setValue = _k[1];
|
|
21
27
|
var _l = tslib_1.__read((0, react_1.useState)(initialTextFormatRuns), 2), textFormatRuns = _l[0], setTextFormatRuns = _l[1];
|
|
22
28
|
var setFormulaMode = (0, atoms_1.useSetFormulaMode)();
|
|
23
29
|
var formulaMode = (0, atoms_1.useFormulaModeValue)();
|
|
@@ -60,15 +66,16 @@ exports.FloatingCellEditor = (0, react_1.memo)(function (_a) {
|
|
|
60
66
|
// Set value when not editing, or when editing but not in formula mode
|
|
61
67
|
if (!isEditing || !formulaMode) {
|
|
62
68
|
var currentValue = (_a = formulaInputRef.current) === null || _a === void 0 ? void 0 : _a.getValue();
|
|
63
|
-
var newValue = initialValue !== null && initialValue !== void 0 ? initialValue : "";
|
|
69
|
+
var newValue = (0, utils_1.localizeCellInput)(initialValue !== null && initialValue !== void 0 ? initialValue : "", formulaLocale);
|
|
64
70
|
if (currentValue !== newValue && (currentValue || newValue)) {
|
|
65
71
|
setValue(newValue);
|
|
66
72
|
}
|
|
67
73
|
}
|
|
68
|
-
}, [initialValue, isEditing, formulaMode]);
|
|
74
|
+
}, [initialValue, isEditing, formulaMode, formulaLocale]);
|
|
69
75
|
var handleSubmit = (0, react_1.useCallback)(function (value, textFormatRuns) {
|
|
70
76
|
if (editingCellCoordinate) {
|
|
71
|
-
|
|
77
|
+
var canonicalValue = (0, utils_1.canonicalizeCellInput)(value, formulaLocale);
|
|
78
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(editingCellCoordinate.sheetId, editingCellCoordinate, canonicalValue, textFormatRuns, initialValue, initialValue !== canonicalValue, initialTextFormatRuns);
|
|
72
79
|
if (!(0, grid_1.isEqualCells)(editingCellCoordinate, activeCell)) {
|
|
73
80
|
setActiveCell === null || setActiveCell === void 0 ? void 0 : setActiveCell(editingCellCoordinate.sheetId, editingCellCoordinate, false);
|
|
74
81
|
}
|
|
@@ -82,6 +89,7 @@ exports.FloatingCellEditor = (0, react_1.memo)(function (_a) {
|
|
|
82
89
|
stopEditing,
|
|
83
90
|
focusSheet,
|
|
84
91
|
onChange,
|
|
92
|
+
formulaLocale,
|
|
85
93
|
]);
|
|
86
94
|
var onFocus = (0, react_1.useCallback)(function () {
|
|
87
95
|
if (!isEditing) {
|
|
@@ -103,7 +111,7 @@ exports.FloatingCellEditor = (0, react_1.memo)(function (_a) {
|
|
|
103
111
|
lineHeight: "normal",
|
|
104
112
|
fontSize: "1rem",
|
|
105
113
|
minHeight: 44,
|
|
106
|
-
}, functionDescriptions: functionDescriptions, getMentions: getMentions }, props))),
|
|
114
|
+
}, functionDescriptions: functionDescriptions, getMentions: getMentions, formulaLocale: formulaLocale }, props))),
|
|
107
115
|
isEditing ? (react_2.default.createElement(react_2.default.Fragment, null,
|
|
108
116
|
react_2.default.createElement(ui_1.IconButton, { tooltip: "Save", variant: "primary", type: "submit", className: "min-w-8 min-h-8" },
|
|
109
117
|
react_2.default.createElement(icons_1.CheckIcon, null)),
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { DeleteCellsChoice, InsertCellsChoice } from "../../api/multi-selection";
|
|
3
|
+
export type InsertCellsDialogProps = {
|
|
4
|
+
mode: "insert";
|
|
5
|
+
/** Controls visibility. */
|
|
6
|
+
open: boolean;
|
|
7
|
+
onOpenChange(open: boolean): void;
|
|
8
|
+
/** Pre-selected entry — Excel derives it from the selection shape (UI-06). */
|
|
9
|
+
defaultChoice: InsertCellsChoice;
|
|
10
|
+
onApply(choice: InsertCellsChoice): void;
|
|
11
|
+
} | {
|
|
12
|
+
mode: "delete";
|
|
13
|
+
open: boolean;
|
|
14
|
+
onOpenChange(open: boolean): void;
|
|
15
|
+
defaultChoice: DeleteCellsChoice;
|
|
16
|
+
onApply(choice: DeleteCellsChoice): void;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Excel's Insert / Delete cells dialog (right-click a cell → "Insert…" /
|
|
20
|
+
* "Delete…"): Shift cells right|down (left|up for Delete), Entire row, Entire
|
|
21
|
+
* column. UI-only — the opener turns the choice into the matching structural
|
|
22
|
+
* command. Header menus never show it: entire rows / columns insert directly.
|
|
23
|
+
*/
|
|
24
|
+
export declare const InsertCellsDialog: React.MemoExoticComponent<(props: InsertCellsDialogProps) => React.JSX.Element>;
|
|
25
|
+
/**
|
|
26
|
+
* Host-mounted, atom-driven wrapper around {@link InsertCellsDialog}. Mount it
|
|
27
|
+
* once in the host alongside the other editor dialogs; the grid opens it from
|
|
28
|
+
* the cell context menu. Remounted per request so each opening starts from the
|
|
29
|
+
* request's default.
|
|
30
|
+
*/
|
|
31
|
+
export declare const InsertCellsDialogHost: {
|
|
32
|
+
(): React.JSX.Element | null;
|
|
33
|
+
displayName: string;
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/insert-cells-dialog/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AAoBnC,MAAM,MAAM,sBAAsB,GAC9B;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,2BAA2B;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,8EAA8E;IAC9E,aAAa,EAAE,iBAAiB,CAAC;IACjC,OAAO,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC1C,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,aAAa,EAAE,iBAAiB,CAAC;IACjC,OAAO,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEN;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,oCAAgB,sBAAsB,uBA0ElE,CAAC;AAIH;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;CAyBjC,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InsertCellsDialogHost = exports.InsertCellsDialog = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var ui_1 = require("@rowsncolumns/ui");
|
|
6
|
+
var react_1 = tslib_1.__importStar(require("react"));
|
|
7
|
+
var insert_cells_dialog_atom_1 = require("../../atoms/insert-cells-dialog.atom");
|
|
8
|
+
var INSERT_CHOICES = [
|
|
9
|
+
{ value: "shift-right", label: "Shift cells right" },
|
|
10
|
+
{ value: "shift-down", label: "Shift cells down" },
|
|
11
|
+
{ value: "entire-row", label: "Entire row" },
|
|
12
|
+
{ value: "entire-column", label: "Entire column" },
|
|
13
|
+
];
|
|
14
|
+
var DELETE_CHOICES = [
|
|
15
|
+
{ value: "shift-left", label: "Shift cells left" },
|
|
16
|
+
{ value: "shift-up", label: "Shift cells up" },
|
|
17
|
+
{ value: "entire-row", label: "Entire row" },
|
|
18
|
+
{ value: "entire-column", label: "Entire column" },
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* Excel's Insert / Delete cells dialog (right-click a cell → "Insert…" /
|
|
22
|
+
* "Delete…"): Shift cells right|down (left|up for Delete), Entire row, Entire
|
|
23
|
+
* column. UI-only — the opener turns the choice into the matching structural
|
|
24
|
+
* command. Header menus never show it: entire rows / columns insert directly.
|
|
25
|
+
*/
|
|
26
|
+
exports.InsertCellsDialog = (0, react_1.memo)(function (props) {
|
|
27
|
+
var mode = props.mode, open = props.open, onOpenChange = props.onOpenChange, defaultChoice = props.defaultChoice;
|
|
28
|
+
var _a = tslib_1.__read((0, react_1.useState)(defaultChoice), 2), choice = _a[0], setChoice = _a[1];
|
|
29
|
+
// Re-seed on every open (the request decides the default).
|
|
30
|
+
(0, react_1.useEffect)(function () {
|
|
31
|
+
if (open)
|
|
32
|
+
setChoice(defaultChoice);
|
|
33
|
+
}, [open, defaultChoice]);
|
|
34
|
+
var commit = (0, react_1.useCallback)(function () {
|
|
35
|
+
if (props.mode === "insert") {
|
|
36
|
+
props.onApply(choice);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
props.onApply(choice);
|
|
40
|
+
}
|
|
41
|
+
onOpenChange(false);
|
|
42
|
+
}, [props, choice, onOpenChange]);
|
|
43
|
+
var title = mode === "insert" ? "Insert" : "Delete";
|
|
44
|
+
var choices = mode === "insert" ? INSERT_CHOICES : DELETE_CHOICES;
|
|
45
|
+
return (react_1.default.createElement(ui_1.Dialog, { open: open, onOpenChange: onOpenChange, modal: true },
|
|
46
|
+
react_1.default.createElement(ui_1.DialogContent, { className: "w-[300px] max-w-[92vw] pointer-events-auto" },
|
|
47
|
+
react_1.default.createElement(ui_1.DialogTitle, null, title),
|
|
48
|
+
react_1.default.createElement(ui_1.DialogCloseButton, null),
|
|
49
|
+
react_1.default.createElement(ui_1.DialogBody, { className: "flex flex-col gap-4" },
|
|
50
|
+
react_1.default.createElement("form", { className: "flex flex-col gap-4", onSubmit: function (e) {
|
|
51
|
+
e.preventDefault();
|
|
52
|
+
commit();
|
|
53
|
+
} },
|
|
54
|
+
react_1.default.createElement("fieldset", { className: "flex flex-col gap-1 min-w-0 border-0 p-0 m-0" },
|
|
55
|
+
react_1.default.createElement("legend", { className: "text-xs font-medium mb-1" }, title),
|
|
56
|
+
choices.map(function (entry) { return (react_1.default.createElement("label", { key: entry.value, className: "flex items-center gap-2 text-xs py-0.5 cursor-pointer" },
|
|
57
|
+
react_1.default.createElement("input", { type: "radio", name: "".concat(mode, "-cells-choice"), value: entry.value, checked: choice === entry.value, onChange: function () { return setChoice(entry.value); } }),
|
|
58
|
+
entry.label)); })),
|
|
59
|
+
react_1.default.createElement(ui_1.Separator, null),
|
|
60
|
+
react_1.default.createElement("div", { className: "flex justify-end gap-2" },
|
|
61
|
+
react_1.default.createElement(ui_1.Button, { type: "button", variant: "outline", size: "sm", onClick: function () { return onOpenChange(false); } }, "Cancel"),
|
|
62
|
+
react_1.default.createElement(ui_1.Button, { type: "submit", size: "sm", autoFocus: true }, "OK")))))));
|
|
63
|
+
});
|
|
64
|
+
exports.InsertCellsDialog.displayName = "InsertCellsDialog";
|
|
65
|
+
/**
|
|
66
|
+
* Host-mounted, atom-driven wrapper around {@link InsertCellsDialog}. Mount it
|
|
67
|
+
* once in the host alongside the other editor dialogs; the grid opens it from
|
|
68
|
+
* the cell context menu. Remounted per request so each opening starts from the
|
|
69
|
+
* request's default.
|
|
70
|
+
*/
|
|
71
|
+
var InsertCellsDialogHost = function () {
|
|
72
|
+
(0, insert_cells_dialog_atom_1.useRegisterInsertCellsDialogHost)();
|
|
73
|
+
var _a = tslib_1.__read((0, insert_cells_dialog_atom_1.useInsertCellsDialogState)(), 2), request = _a[0], setRequest = _a[1];
|
|
74
|
+
var close = (0, react_1.useCallback)(function () { return setRequest(null); }, [setRequest]);
|
|
75
|
+
if (!request)
|
|
76
|
+
return null;
|
|
77
|
+
var onOpenChange = function (open) {
|
|
78
|
+
if (!open)
|
|
79
|
+
close();
|
|
80
|
+
};
|
|
81
|
+
return request.mode === "insert" ? (react_1.default.createElement(exports.InsertCellsDialog, { mode: "insert", open: true, onOpenChange: onOpenChange, defaultChoice: request.defaultChoice, onApply: request.onApply })) : (react_1.default.createElement(exports.InsertCellsDialog, { mode: "delete", open: true, onOpenChange: onOpenChange, defaultChoice: request.defaultChoice, onApply: request.onApply }));
|
|
82
|
+
};
|
|
83
|
+
exports.InsertCellsDialogHost = InsertCellsDialogHost;
|
|
84
|
+
exports.InsertCellsDialogHost.displayName = "InsertCellsDialogHost";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { InsertFormatOption, InsertOptionsAxis } from "../../api/insert-options";
|
|
3
|
+
export type InsertOptionsSmartTagProps = {
|
|
4
|
+
/** Position/size of the selection the tag is anchored to (bottom-left). */
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
axis: InsertOptionsAxis;
|
|
10
|
+
/** The entry currently applied to the inserted band. */
|
|
11
|
+
option: InsertFormatOption;
|
|
12
|
+
onChooseOption(option: InsertFormatOption): void;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Excel's Insert Options smart tag: the small paintbrush button that appears at
|
|
16
|
+
* the inserted rows / columns right after an insert and offers "Format Same As
|
|
17
|
+
* Above / Below / Clear Formatting" (Left / Right for columns). The insert
|
|
18
|
+
* already applied "Same As Above / Left"; picking another entry re-formats the
|
|
19
|
+
* band. Same skin as the Auto Fill Options tag.
|
|
20
|
+
*/
|
|
21
|
+
export declare const InsertOptionsSmartTag: {
|
|
22
|
+
({ x, y, width: _width, height, axis, option, onChooseOption, }: InsertOptionsSmartTagProps): React.JSX.Element;
|
|
23
|
+
displayName: string;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/insert-options-smart-tag/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,0BAA0B,GAAG;IACvC,2EAA2E;IAC3E,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,iBAAiB,CAAC;IACxB,wDAAwD;IACxD,MAAM,EAAE,kBAAkB,CAAC;IAC3B,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAClD,CAAC;AAgBF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB;qEAQ/B,0BAA0B;;CA0C5B,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InsertOptionsSmartTag = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var icons_1 = require("@rowsncolumns/icons");
|
|
6
|
+
var ui_1 = require("@rowsncolumns/ui");
|
|
7
|
+
var react_1 = tslib_1.__importStar(require("react"));
|
|
8
|
+
var ROW_ENTRIES = [
|
|
9
|
+
{ option: "before", label: "Format Same As Above" },
|
|
10
|
+
{ option: "after", label: "Format Same As Below" },
|
|
11
|
+
{ option: "clear", label: "Clear Formatting" },
|
|
12
|
+
];
|
|
13
|
+
var COLUMN_ENTRIES = [
|
|
14
|
+
{ option: "before", label: "Format Same As Left" },
|
|
15
|
+
{ option: "after", label: "Format Same As Right" },
|
|
16
|
+
{ option: "clear", label: "Clear Formatting" },
|
|
17
|
+
];
|
|
18
|
+
/**
|
|
19
|
+
* Excel's Insert Options smart tag: the small paintbrush button that appears at
|
|
20
|
+
* the inserted rows / columns right after an insert and offers "Format Same As
|
|
21
|
+
* Above / Below / Clear Formatting" (Left / Right for columns). The insert
|
|
22
|
+
* already applied "Same As Above / Left"; picking another entry re-formats the
|
|
23
|
+
* band. Same skin as the Auto Fill Options tag.
|
|
24
|
+
*/
|
|
25
|
+
var InsertOptionsSmartTag = function (_a) {
|
|
26
|
+
var x = _a.x, y = _a.y, _width = _a.width, height = _a.height, axis = _a.axis, option = _a.option, onChooseOption = _a.onChooseOption;
|
|
27
|
+
var _b = tslib_1.__read((0, react_1.useState)(false), 2), open = _b[0], setOpen = _b[1];
|
|
28
|
+
var entries = axis === "row" ? ROW_ENTRIES : COLUMN_ENTRIES;
|
|
29
|
+
return (react_1.default.createElement("div", { className: "absolute pointer-events-auto flex items-start justify-start", style: { left: x, top: y + height }, onMouseDown: function (e) { return e.stopPropagation(); }, "data-testid": "insert-options" },
|
|
30
|
+
react_1.default.createElement(ui_1.DropdownMenu, { modal: false, open: open, onOpenChange: setOpen },
|
|
31
|
+
react_1.default.createElement(ui_1.DropdownMenuTrigger, { asChild: true },
|
|
32
|
+
react_1.default.createElement(ui_1.IconButton, { tooltip: "Insert Options", "aria-label": "Insert Options", className: "shadow-sm bg-rnc-background border-rnc-border border border-solid rounded-md" },
|
|
33
|
+
react_1.default.createElement(icons_1.PaintBrush, null))),
|
|
34
|
+
react_1.default.createElement(ui_1.DropdownMenuPortal, null,
|
|
35
|
+
react_1.default.createElement(ui_1.DropdownMenuContent, { align: "start", onCloseAutoFocus: function (event) { return event.preventDefault(); } }, entries.map(function (entry) { return (react_1.default.createElement(ui_1.DropdownMenuCheckboxItem, { key: entry.option, checked: option === entry.option, onSelect: function () { return onChooseOption(entry.option); } },
|
|
36
|
+
react_1.default.createElement(ui_1.DropdownMenuItemIndicator, null,
|
|
37
|
+
react_1.default.createElement(icons_1.CheckIcon, null)),
|
|
38
|
+
entry.label)); }))))));
|
|
39
|
+
};
|
|
40
|
+
exports.InsertOptionsSmartTag = InsertOptionsSmartTag;
|
|
41
|
+
exports.InsertOptionsSmartTag.displayName = "InsertOptionsSmartTag";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Excel's drag-move overwrite prompt ("There's already data here. Do you want to
|
|
4
|
+
* replace it?"). Mount once next to the grid; while mounted, a plain drag-move
|
|
5
|
+
* onto non-empty cells waits for OK / Cancel here instead of `window.confirm`.
|
|
6
|
+
*/
|
|
7
|
+
export declare const MoveOverwriteConfirmDialogHost: React.MemoExoticComponent<() => React.JSX.Element>;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|