@alaarab/ogrid-vue 2.4.2 → 2.5.1

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.
@@ -270,6 +270,7 @@
270
270
  z-index: var(--ogrid-z-active-cell, 2);
271
271
  position: relative;
272
272
  overflow: visible;
273
+ contain: none;
273
274
  }
274
275
 
275
276
  /* Active cell inside a selection range: suppress outline (Excel behavior).
@@ -310,9 +311,21 @@
310
311
  border-radius: 1px;
311
312
  cursor: crosshair;
312
313
  pointer-events: auto;
314
+ touch-action: none; /* Prevent browser scroll/zoom during fill handle drag */
313
315
  z-index: var(--ogrid-z-fill-handle, 3);
314
316
  }
315
317
 
318
+ /* Increase touch target on touch-capable devices */
319
+ @media (pointer: coarse) {
320
+ .ogrid-fill-handle {
321
+ width: 14px;
322
+ height: 14px;
323
+ right: -7px;
324
+ bottom: -7px;
325
+ border-radius: 2px;
326
+ }
327
+ }
328
+
316
329
  /* === Resize handle === */
317
330
 
318
331
  .ogrid-resize-handle {
@@ -323,6 +336,15 @@
323
336
  width: 8px;
324
337
  cursor: col-resize;
325
338
  user-select: none;
339
+ touch-action: none; /* Prevent browser scroll/zoom during column resize drag */
340
+ }
341
+
342
+ /* Increase touch target on touch-capable devices */
343
+ @media (pointer: coarse) {
344
+ .ogrid-resize-handle {
345
+ width: 16px;
346
+ right: -8px;
347
+ }
326
348
  }
327
349
 
328
350
  /* === Drop indicator === */
@@ -391,3 +413,30 @@
391
413
  min-height: 100%;
392
414
  min-width: 40px;
393
415
  }
416
+
417
+ /* === Responsive Layout === */
418
+
419
+ /* Compact pagination on small screens */
420
+ @media (max-width: 576px) {
421
+ .ogrid-pagination {
422
+ flex-direction: column;
423
+ align-items: stretch;
424
+ gap: 8px;
425
+ padding: 6px 8px;
426
+ }
427
+
428
+ .ogrid-pagination-nav {
429
+ order: -1;
430
+ justify-content: center;
431
+ }
432
+
433
+ .ogrid-pagination-info {
434
+ font-size: 11px;
435
+ text-align: center;
436
+ }
437
+
438
+ .ogrid-pagination-size {
439
+ font-size: 11px;
440
+ justify-content: center;
441
+ }
442
+ }
@@ -5,7 +5,7 @@
5
5
  * Port of React's FormulaRefOverlay component.
6
6
  */
7
7
  import { type PropType } from 'vue';
8
- import { type FormulaReference } from '@alaarab/ogrid-core';
8
+ import { type FormulaReference } from '@alaarab/ogrid-core/formula';
9
9
  export declare const FormulaRefOverlay: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
10
10
  containerEl: {
11
11
  type: PropType<HTMLElement | null>;
@@ -10,7 +10,7 @@ export interface UseCellSelectionParams {
10
10
  export interface UseCellSelectionResult {
11
11
  selectionRange: ShallowRef<ISelectionRange | null>;
12
12
  setSelectionRange: (range: ISelectionRange | null) => void;
13
- handleCellMouseDown: (e: MouseEvent, rowIndex: number, globalColIndex: number) => void;
13
+ handleCellMouseDown: (e: PointerEvent, rowIndex: number, globalColIndex: number) => void;
14
14
  handleSelectAllCells: () => void;
15
15
  isDragging: Ref<boolean>;
16
16
  }
@@ -11,10 +11,10 @@ export interface UseColumnReorderParams {
11
11
  export interface UseColumnReorderResult {
12
12
  isDragging: Ref<boolean>;
13
13
  dropIndicatorX: Ref<number | null>;
14
- handleHeaderMouseDown: (columnId: string, event: MouseEvent) => void;
14
+ handleHeaderMouseDown: (columnId: string, event: PointerEvent) => void;
15
15
  }
16
16
  /**
17
17
  * Manages column reordering via drag-and-drop on header cells.
18
- * Uses RAF-throttled mouse tracking and core's calculateDropTarget/reorderColumnArray.
18
+ * Uses RAF-throttled pointer tracking and core's calculateDropTarget/reorderColumnArray.
19
19
  */
20
20
  export declare function useColumnReorder(params: UseColumnReorderParams): UseColumnReorderResult;
@@ -12,8 +12,8 @@ export interface UseColumnResizeParams {
12
12
  onColumnResized?: (columnId: string, width: number) => void;
13
13
  }
14
14
  export interface UseColumnResizeResult<T> {
15
- handleResizeStart: (e: MouseEvent, col: IColumnDef<T>) => void;
16
- handleResizeDoubleClick: (e: MouseEvent, col: IColumnDef<T>) => void;
15
+ handleResizeStart: (e: PointerEvent, col: IColumnDef<T>) => void;
16
+ handleResizeDoubleClick: (e: PointerEvent, col: IColumnDef<T>) => void;
17
17
  getColumnWidth: (col: IColumnDef<T>) => number;
18
18
  }
19
19
  /**
@@ -70,11 +70,11 @@ export interface DataGridCellInteractionState {
70
70
  endCol: number;
71
71
  } | null;
72
72
  setSelectionRange: (range: DataGridCellInteractionState['selectionRange']) => void;
73
- handleCellMouseDown: (e: MouseEvent, rowIndex: number, globalColIndex: number) => void;
73
+ handleCellMouseDown: (e: PointerEvent, rowIndex: number, globalColIndex: number) => void;
74
74
  handleSelectAllCells: () => void;
75
75
  hasCellSelection: boolean;
76
76
  handleGridKeyDown: (e: KeyboardEvent) => void;
77
- handleFillHandleMouseDown: (e: MouseEvent) => void;
77
+ handleFillHandleMouseDown: (e: PointerEvent) => void;
78
78
  handleCopy: () => void;
79
79
  handleCut: () => void;
80
80
  handlePaste: () => Promise<void>;
@@ -24,7 +24,7 @@ export interface UseFillHandleResult {
24
24
  startRow: number;
25
25
  startCol: number;
26
26
  } | null) => void;
27
- handleFillHandleMouseDown: (e: MouseEvent) => void;
27
+ handleFillHandleMouseDown: (e: PointerEvent) => void;
28
28
  /** Fill the current selection down from the top row (Ctrl+D). No-op if no selection or editable=false. */
29
29
  fillDown: () => void;
30
30
  }
@@ -4,7 +4,7 @@
4
4
  * Manages the formula bar text, editing mode, and reference extraction.
5
5
  */
6
6
  import { type Ref } from 'vue';
7
- import { type FormulaReference } from '@alaarab/ogrid-core';
7
+ import { type FormulaReference } from '@alaarab/ogrid-core/formula';
8
8
  export interface UseFormulaBarParams {
9
9
  /** Active cell column index (0-based). */
10
10
  activeCol: Ref<number | null>;
@@ -1,4 +1,7 @@
1
- export * from '@alaarab/ogrid-core';
1
+ export type { ISheetDef, IColumnReorderConfig, CsvColumn, FormulaExportOptions, StatusBarPart, StatusBarPartsInput, PaginationViewModel, GridContextMenuItem, IColumnHeaderMenuItem, GridContextMenuHandlerProps, ColumnHeaderMenuInput, ColumnHeaderMenuHandlers, ParseValueResult, AggregationResult, GridRowComparatorProps, ColumnPinState, IDropTarget, ICalculateDropTargetParams, IVisibleRange, IVisibleColumnRange, SortFilterRequest, SortFilterResponse, OverlayRect, ISortState, ArrowNavigationContext, ArrowNavigationResult, IFillFormulaOptions, FormulaReference, IResponsiveColumnsConfig, ZIndexKey, ICellAddress, ICellRange, CellKey, FormulaErrorType, TokenType, Token, ASTNode, BinaryOp, IFormulaContext, IFormulaFunction, IEvaluator, IRecalcResult, IFormulaEngineConfig, IGridDataAccessor, INamedRange, IAuditEntry, IAuditTrail, } from '@alaarab/ogrid-core';
2
+ export { escapeCsvValue, buildCsvHeader, buildCsvRows, exportToCsv, triggerCsvDownload, getCellValue, isColumnEditable, createGridDataAccessor, flattenColumns, buildHeaderRows, isFilterConfig, getFilterField, mergeFilter, deriveFilterOptionsFromData, getMultiSelectFilterFields, getStatusBarParts, getDataGridStatusBarConfig, getPaginationViewModel, PAGE_SIZE_OPTIONS, MAX_PAGE_BUTTONS, GRID_CONTEXT_MENU_ITEMS, COLUMN_HEADER_MENU_ITEMS, getContextMenuHandlers, getColumnHeaderMenuItems, formatShortcut, parseValue, numberParser, currencyParser, dateParser, emailParser, booleanParser, computeAggregations, processClientSideData, areGridRowPropsEqual, isRowInRange, getPinStateForColumn, reorderColumnArray, calculateDropTarget, computeVisibleRange, computeTotalHeight, getScrollTopForRow, computeVisibleColumnRange, partitionColumnsForVirtualization, createSortFilterWorker, terminateSortFilterWorker, extractValueMatrix, processClientSideDataAsync, CellDescriptorCache, debounce, measureRange, buildCellIndex, injectGlobalStyles, computeNextSortState, measureColumnContentWidth, AUTOSIZE_EXTRA_PX, AUTOSIZE_MAX_PX, findCtrlArrowTarget, computeTabNavigation, computeArrowNavigation, applyCellDeletion, rangesEqual, clampSelectionToBounds, computeAutoScrollSpeed, applyRangeRowSelection, computeRowSelectionState, formatCellValueForTsv, formatSelectionAsTsv, parseTsvClipboard, applyPastedValues, applyCutClear, applyFillValues, UndoRedoStack, validateColumns, validateRowIds, validateVirtualScrollConfig, indexToColumnLetter, columnLetterToIndex, formatCellReference, getResponsiveHiddenColumns, RESPONSIVE_BREAKPOINTS, resolveResponsiveConfig, applyResponsiveHiding, } from '@alaarab/ogrid-core';
3
+ export { CHECKBOX_COLUMN_WIDTH, ROW_NUMBER_COLUMN_WIDTH, ROW_NUMBER_COLUMN_ID, ROW_NUMBER_COLUMN_MIN_WIDTH, DEFAULT_MIN_COLUMN_WIDTH, CELL_PADDING, GRID_BORDER_RADIUS, DEFAULT_DEBOUNCE_MS, PEOPLE_SEARCH_DEBOUNCE_MS, SIDEBAR_TRANSITION_MS, Z_INDEX, } from '@alaarab/ogrid-core';
4
+ export { FormulaError, FormulaEngine, FormulaEvaluator, DependencyGraph, tokenize, parse, createBuiltInFunctions, parseCellRef, parseRange, formatAddress, toCellKey, fromCellKey, adjustFormulaReferences, toNumber, formulaToString, toBoolean, flattenArgs, isFormulaError, REF_ERROR, DIV_ZERO_ERROR, VALUE_ERROR, NAME_ERROR, CIRC_ERROR, GENERAL_ERROR, NA_ERROR, extractFormulaReferences, processFormulaBarCommit, deriveFormulaBarText, handleFormulaBarKeyDown, canInsertReference, insertReferenceAtCursor, FORMULA_REF_COLORS, FORMULA_BAR_CSS, FORMULA_BAR_STYLES, } from '@alaarab/ogrid-core/formula';
2
5
  export type { IColumnDef, ICellEditorProps, IOGridProps, IOGridClientProps, IOGridServerProps, IOGridDataGridProps, } from './types';
3
6
  export type { ColumnFilterType, IColumnFilterDef, IColumnMeta, IColumnGroupDef, IColumnDefinition, ICellValueChangedEvent, CellEditorParams, IValueParserParams, IDateFilterValue, HeaderCell, HeaderRow, RowId, UserLike, UserLikeInput, FilterValue, IFilters, IFetchParams, IPageResult, IDataSource, IGridColumnState, IOGridApi, RowSelectionMode, IRowSelectionChangeEvent, StatusBarPanel, IStatusBarProps, IActiveCell, ISelectionRange, SideBarPanelId, ISideBarDef, IVirtualScrollConfig, } from './types';
4
7
  export { toUserLike, isInSelectionRange, normalizeSelectionRange } from './types';
@@ -1,7 +1,7 @@
1
1
  import type { IColumnDef, IColumnGroupDef, ICellValueChangedEvent } from './columnTypes';
2
- export type { RowId, UserLike, UserLikeInput, FilterValue, IFilters, IFetchParams, IPageResult, IDataSource, IGridColumnState, RowSelectionMode, IRowSelectionChangeEvent, StatusBarPanel, IStatusBarProps, IActiveCell, ISelectionRange, SideBarPanelId, ISideBarDef, IOGridApi, IVirtualScrollConfig, IFormulaFunction, IRecalcResult, IGridDataAccessor, IAuditEntry, IAuditTrail, ISheetDef, FormulaReference, } from '@alaarab/ogrid-core';
2
+ export type { RowId, UserLike, UserLikeInput, FilterValue, IFilters, IFetchParams, IPageResult, IDataSource, IGridColumnState, RowSelectionMode, IRowSelectionChangeEvent, StatusBarPanel, IStatusBarProps, IActiveCell, ISelectionRange, SideBarPanelId, ISideBarDef, IOGridApi, IVirtualScrollConfig, IResponsiveColumnsConfig, IFormulaFunction, IRecalcResult, IGridDataAccessor, IAuditEntry, IAuditTrail, ISheetDef, FormulaReference, } from '@alaarab/ogrid-core';
3
3
  export { toUserLike, isInSelectionRange, normalizeSelectionRange } from '@alaarab/ogrid-core';
4
- import type { RowId, UserLike, IFilters, FilterValue, RowSelectionMode, IRowSelectionChangeEvent, IStatusBarProps, IDataSource, ISideBarDef, IVirtualScrollConfig, IFormulaFunction, IRecalcResult, IGridDataAccessor, IAuditEntry, IAuditTrail, ISheetDef, FormulaReference } from '@alaarab/ogrid-core';
4
+ import type { RowId, UserLike, IFilters, FilterValue, RowSelectionMode, IRowSelectionChangeEvent, IStatusBarProps, IDataSource, ISideBarDef, IVirtualScrollConfig, IResponsiveColumnsConfig, IFormulaFunction, IRecalcResult, IGridDataAccessor, IAuditEntry, IAuditTrail, ISheetDef, FormulaReference } from '@alaarab/ogrid-core';
5
5
  /** Base props shared by both client-side and server-side OGrid modes. */
6
6
  interface IOGridBaseProps<T> {
7
7
  columns: (IColumnDef<T> | IColumnGroupDef<T>)[];
@@ -81,6 +81,13 @@ interface IOGridBaseProps<T> {
81
81
  onCellError?: (error: Error, info: unknown) => void;
82
82
  /** Enable column reordering via drag-and-drop on header cells. Default: false. */
83
83
  columnReorder?: boolean;
84
+ /**
85
+ * Responsive column hiding. Columns with `responsivePriority` are hidden at narrower widths.
86
+ * - `true`: enable with default breakpoints
87
+ * - `IResponsiveColumnsConfig`: custom breakpoints
88
+ * - `false` / omitted: disabled
89
+ */
90
+ responsiveColumns?: boolean | IResponsiveColumnsConfig;
84
91
  /** Virtual scrolling configuration. Set `enabled: true` with a fixed `rowHeight` to virtualize large datasets. */
85
92
  virtualScroll?: IVirtualScrollConfig;
86
93
  /** Offload sort/filter to a Web Worker for large datasets. Falls back to sync when sort column has a custom compare. */
@@ -195,6 +202,8 @@ export interface IOGridDataGridProps<T> {
195
202
  onCellError?: (error: Error, info: unknown) => void;
196
203
  /** Enable column reordering via drag-and-drop on header cells. Default: false. */
197
204
  columnReorder?: boolean;
205
+ /** Responsive column hiding config (passed from IOGridBaseProps). */
206
+ responsiveColumns?: boolean | IResponsiveColumnsConfig;
198
207
  /** Virtual scrolling configuration. */
199
208
  virtualScroll?: IVirtualScrollConfig;
200
209
  /** Fixed row height in pixels. Overrides default row height (36px). */
@@ -8,7 +8,7 @@ export { getHeaderFilterConfig, getCellRenderDescriptor, resolveCellDisplayConte
8
8
  export type { HeaderFilterConfigInput, HeaderFilterConfig, CellRenderDescriptorInput, CellRenderDescriptor, CellRenderMode, } from '@alaarab/ogrid-core';
9
9
  import type { CellRenderDescriptor } from '@alaarab/ogrid-core';
10
10
  export interface CellInteractionHandlers {
11
- handleCellMouseDown: (e: MouseEvent, rowIndex: number, colIndex: number) => void;
11
+ handleCellMouseDown: (e: PointerEvent, rowIndex: number, colIndex: number) => void;
12
12
  setActiveCell: (cell: {
13
13
  rowIndex: number;
14
14
  columnIndex: number;
@@ -30,7 +30,7 @@ export interface CellInteractionProps {
30
30
  'data-in-range'?: 'true';
31
31
  tabindex: number;
32
32
  role?: 'button';
33
- onMousedown: (e: MouseEvent) => void;
33
+ onPointerdown: (e: PointerEvent) => void;
34
34
  onClick: () => void;
35
35
  onContextmenu: (e: MouseEvent) => void;
36
36
  onDblclick?: () => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alaarab/ogrid-vue",
3
- "version": "2.4.2",
3
+ "version": "2.5.1",
4
4
  "description": "OGrid Vue – Vue 3 composables, headless components, and utilities for OGrid data grids.",
5
5
  "main": "dist/esm/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -36,7 +36,7 @@
36
36
  "node": ">=18"
37
37
  },
38
38
  "dependencies": {
39
- "@alaarab/ogrid-core": "2.4.2"
39
+ "@alaarab/ogrid-core": "2.5.1"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "vue": "^3.3.0"