@keenmate/web-grid 1.0.0-rc14 → 1.0.0-rc15

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/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  A feature-rich, framework-agnostic data grid web component built with TypeScript. Sorting, filtering, pagination, inline editing (8 editor types), cell range selection, clipboard support, row toolbar, context menus, frozen columns, column reorder/resize, fill handle, virtual scroll, dark mode, and full CSS variable theming — all in a Shadow DOM encapsulated `<web-grid>` element.
4
4
 
5
+ > **RC15 Note:** This release includes a complete rewrite of how the component handles user input and renders content, based on an action pipeline architecture. All DOM events are now translated into typed actions and dispatched through a centralized pipeline with specialized executors, replacing the previous scattered event handler approach. See [Architecture](#architecture) for details.
6
+
5
7
  ## Installation
6
8
 
7
9
  ```bash
@@ -47,6 +47,12 @@ export declare function tryStartEdit<T>(ctx: GridContext<T>, rowIndex: number, c
47
47
  * Calculate cursor position from a click event using binary search (v3 pattern)
48
48
  */
49
49
  export declare function getCursorPositionFromClick(event: MouseEvent, cell: HTMLElement): number | null;
50
+ /**
51
+ * Centralized cleanup of edit/dropdown/focus state.
52
+ * Call this from any focus-changing path that bypasses the action pipeline
53
+ * (e.g. column selection, row selection) to ensure consistent cleanup.
54
+ */
55
+ export declare function cleanupEditState<T>(ctx: GridContext<T>): void;
50
56
  /**
51
57
  * Handle focus leaving the table
52
58
  * Defers cleanup to allow focus transitions to complete
@@ -1 +1 @@
1
- export { focusCellElement, updateFocusVisual, clearEditingVisual, restoreEditingCellToDisplayMode, handleCellFocus, moveFocus, tryStartEdit, getCursorPositionFromClick, handleTableFocusOut, scrollToRowPosition } from './focus.js';
1
+ export { focusCellElement, updateFocusVisual, clearEditingVisual, cleanupEditState, restoreEditingCellToDisplayMode, handleCellFocus, moveFocus, tryStartEdit, getCursorPositionFromClick, handleTableFocusOut, scrollToRowPosition } from './focus.js';
@@ -17,6 +17,7 @@ export interface GridContext<T = unknown> {
17
17
  isUserFiltering: boolean;
18
18
  justSelected: boolean;
19
19
  isOpeningDropdown: boolean;
20
+ dropdownUserInteracted: boolean;
20
21
  isCommittingFromKeyboard: boolean;
21
22
  isTransitioningCells: boolean;
22
23
  contextMenuElement: HTMLElement | null;
@@ -47,6 +47,7 @@ export declare class GridElement<T = unknown> extends HTMLElement implements Gri
47
47
  isUserFiltering: boolean;
48
48
  justSelected: boolean;
49
49
  isOpeningDropdown: boolean;
50
+ dropdownUserInteracted: boolean;
50
51
  isClosingViaToggle: boolean;
51
52
  private isProgrammaticScroll;
52
53
  searchDebounceTimer: ReturnType<typeof setTimeout> | null;