|
| 1 | +# OpenGridX — Changelog |
| 2 | + |
| 3 | +**Package**: `@opencorestack/opengridx` |
| 4 | +**License**: MIT © 2026 Open Core Stack |
| 5 | + |
| 6 | +--- |
| 7 | + |
| 8 | +## [0.1.1] — March 6, 2026 🔧 |
| 9 | + |
| 10 | +### Fixed |
| 11 | +- ExcelJS correctly marked as external in Vite build config (consistent with `peerDependencies`) |
| 12 | +- Clipboard programmatic copy button now correctly reads live selection state via `apiRef.getSelectedRows()` |
| 13 | +- `Ctrl+C` keyboard shortcut now works when grid checkboxes are focused |
| 14 | + |
| 15 | +### Improved |
| 16 | +- Package size reduced from 8.4 MB → 1.8 MB unpacked (ExcelJS no longer bundled) |
| 17 | +- README rewritten with Getting Started first, basic example, and full API reference table |
| 18 | +- Cleaned devDependencies (removed unused `strip-comment`, `strip-comments`) |
| 19 | + |
| 20 | +--- |
| 21 | + |
| 22 | +## [0.1.0] — March 6, 2026 🚀 |
| 23 | + |
| 24 | +> **Status: ✅ RELEASE READY — 100% feature-complete for v0.1.0 scope** |
| 25 | +
|
| 26 | +This is the initial public release of OpenGridX. All planned v0.1.0 features are implemented, tested, and included in the production bundle. |
| 27 | + |
| 28 | +### âś… Core Features |
| 29 | +- **High-Performance Virtualization** — Custom row + column virtual scrolling engine, 60fps at 100k+ rows |
| 30 | +- **Multi-Column Sorting** — Client-side and server-side; stable multi-field sort |
| 31 | +- **Advanced Filtering** — 11+ operators (contains, equals, startsWith, etc.) with AND/OR filter builder UI |
| 32 | +- **Pagination** — Client-side and server-side modes with configurable page sizes |
| 33 | +- **Row Selection** — Single and multi-row checkbox selection with `rowSelectionModel` controlled/uncontrolled API |
| 34 | + |
| 35 | +### âś… Advanced UI & Layout |
| 36 | +- **Column Pinning** — Left and right sticky columns with correct z-index layering |
| 37 | +- **Row Pinning** — Top and bottom pinned rows with visual separation |
| 38 | +- **Column Resizing** — Throttled drag-to-resize at 60fps with minimum width enforcement |
| 39 | +- **Column Reordering** — Drag-and-drop column reorder |
| 40 | +- **Row Reordering** — Drag-and-drop row reorder with `onRowOrderChange` callback |
| 41 | +- **Detail Panels** — Expandable master-detail rows via `getDetailPanelContent` |
| 42 | +- **Cell & Row Spanning** — `colSpan` and `rowSpan` support for merged-cell layouts |
| 43 | +- **List View Mode** — Card-based responsive layout via `listView` / `listViewColumn` |
| 44 | +- **Column Grouping** — Multi-level column header groups via `columnGroupingModel` |
| 45 | +- **Toolbar** — Built-in toolbar with column visibility, filter, and density controls; fully replaceable via `slots` |
| 46 | + |
| 47 | +### âś… Data Management |
| 48 | +- **Inline Cell Editing** — Double-click or Enter to edit; `editable` per column; `processRowUpdate` callback |
| 49 | +- **Tree Data** — Client-side hierarchical rows via `treeData` + `getTreeDataPath` |
| 50 | +- **Row Grouping** — Group rows by column value with collapsible groups and aggregation summaries |
| 51 | +- **Aggregation** — SUM, AVG, COUNT, MIN, MAX in group footers and global sticky footer |
| 52 | +- **Pivot Mode** — Multidimensional data pivoting via `pivotMode` + `pivotModel` |
| 53 | + |
| 54 | +### âś… Server-Side Integration |
| 55 | +- **Data Source API** — `useGridDataSource` hook for unified server-side fetching |
| 56 | +- **Server-Side Sorting, Filtering & Pagination** — All offloaded cleanly to the backend |
| 57 | +- **Infinite Scroll** — Viewport-triggered batch-loading (`paginationMode="infinite"`) |
| 58 | +- **Server-Side Tree Data** — Lazy children loading via `dataSource.getChildren` |
| 59 | +- **Server-Side Aggregation** — Fetch summary totals directly from API responses |
| 60 | + |
| 61 | +### âś… Export |
| 62 | +- **CSV Export** — `exportToCsv()` utility, respects `valueFormatter` |
| 63 | +- **Excel Export** — Basic `.xlsx` via `exportToExcel()`; advanced pixel-perfect image-embedded export via `exportToExcelAdvanced()` (lazy-loads ExcelJS) |
| 64 | +- **JSON Export** — `exportToJson()` |
| 65 | +- **Print** — `printGrid()` with print-optimised CSS |
| 66 | + |
| 67 | +### âś… Clipboard |
| 68 | +- **Keyboard Copy** — `Ctrl+C` / `Cmd+C` copies selected rows as TSV (tab-separated values) |
| 69 | +- **Programmatic Copy** — `apiRef.current.copySelectedRows()` for button-triggered copying |
| 70 | +- **Excel/Sheets Compatible** — TSV output pastes cleanly into any spreadsheet app |
| 71 | +- **Smart Focus Handling** — Does not intercept `Ctrl+C` in text inputs; correctly handles checkbox-focused grid cells |
| 72 | + |
| 73 | +### âś… Theming |
| 74 | +- **`DataGridThemeProvider`** — React context-based global theming |
| 75 | +- **5 Built-in Themes** — `darkTheme`, `roseTheme`, `emeraldTheme`, `amberTheme`, `compactTheme` |
| 76 | +- **CSS Variables** — Full `--ogx-*` token system; Shadow DOM compatible |
| 77 | +- **`cellClassName` / `headerClassName`** — Per-column custom class injection |
| 78 | + |
| 79 | +### âś… Accessibility (WCAG 2.1 AA) |
| 80 | +- Semantic ARIA roles: `grid`, `row`, `gridcell`, `columnheader` |
| 81 | +- `aria-sort`, `aria-selected`, `aria-expanded`, `aria-readonly`, `aria-label` throughout |
| 82 | +- Full keyboard navigation: Arrow keys, Tab, Enter, Escape, Home/End, PageUp/PageDown |
| 83 | +- Visible focus ring in keyboard mode (CSS classname-toggled, zero React state overhead) |
| 84 | + |
| 85 | +### âś… State Persistence |
| 86 | +- **`initialState` prop** — Restore column widths, visibility, sort, and filter on mount |
| 87 | +- **`useGridStateStorage(key)` hook** — Auto-saves to `localStorage`; pluggable storage backend |
| 88 | + |
| 89 | +### âś… Developer Experience |
| 90 | +- **`apiRef`** — Full imperative API: `getSelectedRows`, `copySelectedRows`, `selectRow`, `sortColumn`, `setFilterModel`, `getVisibleRows`, `scrollToIndexes`, and more |
| 91 | +- **`slots` System** — Replace Toolbar, Pagination, NoRowsOverlay, LoadingOverlay, Footer |
| 92 | +- **`slotProps`** — Pass custom props to slot components |
| 93 | +- **TypeScript** — 100% typed; full `index.d.ts` output via `vite-plugin-dts` |
| 94 | +- **Zero UI Dependencies** — No Ant Design, MUI, or Radix. Pure React + vanilla CSS (BEM) |
| 95 | + |
| 96 | +### 📦 Bundle |
| 97 | +| Artifact | Minified | Gzipped | |
| 98 | +|---|---|---| |
| 99 | +| `opengridx.es.js` (ES Module) | 226 KB | **52 KB** | |
| 100 | +| `opengridx.umd.js` (UMD) | 1,089 KB | 315 KB | |
| 101 | +| `opengridx.css` | 59 KB | **10 KB** | |
| 102 | +| `exceljs` (lazy, Excel export only) | 1,385 KB | 302 KB | |
| 103 | + |
| 104 | +--- |
| 105 | + |
| 106 | +## 🗺️ Planned for v0.2.0 |
| 107 | + |
| 108 | +- **Rich Excel Styling** — Bold headers, background fill, border styles natively via ExcelJS (no post-processing) |
| 109 | +- **Cell Range Clipboard** — Select a rectangular cell region (mouse drag), copy to clipboard, paste from Excel back into editable cells |
| 110 | + |
| 111 | +--- |
| 112 | + |
| 113 | +*Last Updated: March 6, 2026* |
0 commit comments