Implement Excel-style drag-to-fill via a fill handle at the bottom-right
corner of the selection. Supports numeric arithmetic series, date series,
formula reference adjustment, format copying, and plain value cycling as
a fallback. The fill handle and drag preview are frozen-pane aware.
Add sheet tab bar at the bottom of the spreadsheet using RadzenTabs with
RadzenSplitButton templates for per-sheet operations. Each tab provides
Rename, Delete, Move Left, and Move Right actions via a dropdown menu.
- Add RemoveSheet, IndexOf, and MoveSheet methods to Workbook
- Make Worksheet.Name publicly settable for rename support
- Add ScrollLeft/ScrollTop to SheetView for per-sheet scroll preservation
- Save/restore scroll position in VirtualGrid on sheet switch
- Add RenameSheetDialog with duplicate name validation
- Disable Delete when only one sheet remains
- Disable Move Left/Right at boundary positions
The premium themes were missing image, hyperlink, and input-prompt
rules that were added in recent spreadsheet commits. Appended the
compiled CSS for these selectors to all four premium theme files.
Render 8 resize handles (corners + edge midpoints) on selected images.
JS detects pointerdown on handles, registers global pointermove/pointerup,
and calls C# via JSInvokable. Image dimensions update live during drag,
with ResizeImageCommand executed on pointer up for undo/redo support.
Fix CellEditor crash when Selection.Clear() sets cell to invalid.
Add SelectedImageChanged event to Sheet for proper re-render on deselect.
XLSX round-trip (import/export) for TwoCellAnchor and OneCellAnchor images
with media deduplication. Rendering via ImageOverlay component with correct
positioning, frozen pane z-index, and data URI caching. Insert image toolbar
button, select/delete via click and Delete key, undo/redo for all operations.
Fix downloadFile JS function to handle DotNetStreamReference properly.
Move the input prompt from a fixed bottom-right corner position into
the VirtualGrid ChildContent so it renders adjacent to the selected
cell. Extract all prompt state and rendering into a new InputPrompt
component. Replace hardcoded inline styles with theme-aware SCSS rules.
The .rz-spreadsheet-cell-invalid CSS rule had position: relative which
overrode position: absolute from .rz-spreadsheet-cell. This caused
the invalid cell to participate in normal document flow, shifting all
subsequently rendered cells down by one row and breaking frozen area
clipping.
- Add DataValidationRule with support for WholeNumber, Decimal, List, Date,
Time, and TextLength validation types with all comparison operators
- Rename ICellVaidator to ICellValidator (fix typo)
- Extend ValidationStore with Remove, GetValidators, GetValidatorsForCell,
RemoveAll, and Ranges
- Add DataValidationCommand and ClearValidationCommand with undo/redo support
- Add Data Validation dialog and toolbar split button in Data tab
- Add red triangle error indicator (::after pseudo-element) and tooltip on
invalid cells
- Add list validation dropdown popup with chevron button
- Add XLSX import/export for dataValidation elements
- Add validation CSS to premium themes (material3, fluent)
- Add 40 tests covering validators, commands, undo/redo, and XLSX round-trips