@tipolox/litgrid-angular 1.0.3 → 1.2.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/README.md CHANGED
@@ -43,6 +43,7 @@ Import `UsersGridComponent` into your application's standalone component and ren
43
43
 
44
44
  - [Live demo](https://tipolox.com/litgrid/demo)
45
45
  - [Repository](https://github.com/tipolox/litgrid)
46
+ - [v1.1.0 upgrade guide](https://github.com/tipolox/litgrid/blob/main/docs/installation.md#upgrading-to-v110)
46
47
  - [Angular guide](https://github.com/tipolox/litgrid/blob/main/docs/angular-guide.md)
47
48
  - [API reference](https://github.com/tipolox/litgrid/blob/main/docs/api-reference.md)
48
49
 
@@ -3,9 +3,14 @@ import * as i0 from '@angular/core';
3
3
  import { EventEmitter, ViewChild, Output, Input, CUSTOM_ELEMENTS_SCHEMA, Component } from '@angular/core';
4
4
 
5
5
  function syncGridInputs(grid, inputs) {
6
- grid.data = inputs.data;
7
6
  grid.columns = inputs.columns;
8
7
  grid.config = inputs.config;
8
+ if (inputs.config.queryMode === 'external') {
9
+ if (inputs.externalState)
10
+ grid.externalState = inputs.externalState;
11
+ }
12
+ else
13
+ grid.data = inputs.data;
9
14
  grid.theme = inputs.theme;
10
15
  grid.ariaLabel = inputs.ariaLabel;
11
16
  grid.ariaDescription = inputs.ariaDescription;
@@ -22,6 +27,7 @@ function syncGridInputs(grid, inputs) {
22
27
 
23
28
  class DataGridComponent {
24
29
  constructor() {
30
+ this.queryChange = new EventEmitter();
25
31
  this.data = [];
26
32
  this.columns = [];
27
33
  this.config = {};
@@ -37,9 +43,19 @@ class DataGridComponent {
37
43
  this.quickSearchDebounceThreshold = 10_000;
38
44
  this.quickSearchDebounceMs = 150;
39
45
  this.columnStateChange = new EventEmitter();
46
+ this.selectionChange = new EventEmitter();
40
47
  this.columnReorder = new EventEmitter();
41
48
  this.columnVisibilityChange = new EventEmitter();
42
49
  }
50
+ handleQueryChange(event) {
51
+ if (event.target === this.gridElement)
52
+ this.queryChange.emit(event.detail);
53
+ }
54
+ setExternalState(state) { return this.requireGridElement().setExternalState(state); }
55
+ getQuery() { return this.requireGridElement().getQuery(); }
56
+ refreshQuery() { this.requireGridElement().refreshQuery(); }
57
+ sortBy(key, direction) { this.requireGridElement().sortBy(key, direction); }
58
+ clearSort() { this.requireGridElement().clearSort(); }
43
59
  get gridElement() {
44
60
  return this.gridRef?.nativeElement ?? null;
45
61
  }
@@ -52,6 +68,15 @@ class DataGridComponent {
52
68
  handleColumnStateChange(event) {
53
69
  this.columnStateChange.emit(event.detail);
54
70
  }
71
+ handleSelectionChange(event) {
72
+ this.selectionChange.emit(event.detail);
73
+ }
74
+ getSelectionSnapshot() {
75
+ return this.requireGridElement().getSelectionSnapshot();
76
+ }
77
+ selectRowByKey(key, intent) {
78
+ return this.requireGridElement().selectRowByKey(key, intent);
79
+ }
55
80
  handleColumnReorder(event) {
56
81
  this.columnReorder.emit(event.detail);
57
82
  }
@@ -189,9 +214,11 @@ class DataGridComponent {
189
214
  return grid;
190
215
  }
191
216
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DataGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
192
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.3", type: DataGridComponent, isStandalone: true, selector: "litgrid-data-grid", inputs: { data: "data", columns: "columns", config: "config", theme: "theme", ariaLabel: "ariaLabel", ariaDescription: "ariaDescription", screenReaderAnnouncements: "screenReaderAnnouncements", height: "height", rowHeight: "rowHeight", overscan: "overscan", columnOverscan: "columnOverscan", bestFitSampleSize: "bestFitSampleSize", quickSearchDebounceThreshold: "quickSearchDebounceThreshold", quickSearchDebounceMs: "quickSearchDebounceMs", columnStateStorageKey: "columnStateStorageKey" }, outputs: { columnStateChange: "columnStateChange", columnReorder: "columnReorder", columnVisibilityChange: "columnVisibilityChange" }, viewQueries: [{ propertyName: "gridRef", first: true, predicate: ["grid"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `
217
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.3", type: DataGridComponent, isStandalone: true, selector: "litgrid-data-grid", inputs: { externalState: "externalState", data: "data", columns: "columns", config: "config", theme: "theme", ariaLabel: "ariaLabel", ariaDescription: "ariaDescription", screenReaderAnnouncements: "screenReaderAnnouncements", height: "height", rowHeight: "rowHeight", overscan: "overscan", columnOverscan: "columnOverscan", bestFitSampleSize: "bestFitSampleSize", quickSearchDebounceThreshold: "quickSearchDebounceThreshold", quickSearchDebounceMs: "quickSearchDebounceMs", columnStateStorageKey: "columnStateStorageKey" }, outputs: { queryChange: "queryChange", columnStateChange: "columnStateChange", selectionChange: "selectionChange", columnReorder: "columnReorder", columnVisibilityChange: "columnVisibilityChange" }, viewQueries: [{ propertyName: "gridRef", first: true, predicate: ["grid"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `
193
218
  <yc-grid
194
219
  #grid
220
+ (selection-change)="handleSelectionChange($event)"
221
+ (query-change)="handleQueryChange($event)"
195
222
  (column-state-change)="handleColumnStateChange($event)"
196
223
  (column-reorder)="handleColumnReorder($event)"
197
224
  (column-visibility-change)="handleColumnVisibilityChange($event)"
@@ -203,12 +230,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
203
230
  args: [{ selector: 'litgrid-data-grid', standalone: true, template: `
204
231
  <yc-grid
205
232
  #grid
233
+ (selection-change)="handleSelectionChange($event)"
234
+ (query-change)="handleQueryChange($event)"
206
235
  (column-state-change)="handleColumnStateChange($event)"
207
236
  (column-reorder)="handleColumnReorder($event)"
208
237
  (column-visibility-change)="handleColumnVisibilityChange($event)"
209
238
  ></yc-grid>
210
239
  `, schemas: [CUSTOM_ELEMENTS_SCHEMA], styles: [":host{display:block}\n"] }]
211
- }], propDecorators: { data: [{
240
+ }], propDecorators: { externalState: [{
241
+ type: Input
242
+ }], queryChange: [{
243
+ type: Output
244
+ }], data: [{
212
245
  type: Input
213
246
  }], columns: [{
214
247
  type: Input
@@ -240,6 +273,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
240
273
  type: Input
241
274
  }], columnStateChange: [{
242
275
  type: Output
276
+ }], selectionChange: [{
277
+ type: Output
243
278
  }], columnReorder: [{
244
279
  type: Output
245
280
  }], columnVisibilityChange: [{
@@ -1 +1 @@
1
- {"version":3,"file":"tipolox-litgrid-angular.mjs","sources":["../../../packages/grid-angular/src/gridBindings.ts","../../../packages/grid-angular/src/DataGridComponent.ts","../../../packages/grid-angular/src/tipolox-litgrid-angular.ts"],"sourcesContent":["import type {\n DataGridElement,\n GridColumn,\n GridConfig,\n GridTheme\n} from '@tipolox/litgrid-web'\n\nexport type AngularGridInputs = {\n data: unknown[]\n columns: GridColumn[]\n config: GridConfig\n theme: GridTheme\n ariaLabel: string\n ariaDescription: string\n screenReaderAnnouncements: boolean\n height: number\n rowHeight: number\n overscan: number\n columnOverscan: number\n bestFitSampleSize: number\n quickSearchDebounceThreshold: number\n quickSearchDebounceMs: number\n columnStateStorageKey?: string\n}\n\nexport function syncGridInputs(\n grid: DataGridElement,\n inputs: AngularGridInputs\n): void {\n grid.data = inputs.data\n grid.columns = inputs.columns\n grid.config = inputs.config\n grid.theme = inputs.theme\n grid.ariaLabel = inputs.ariaLabel\n grid.ariaDescription = inputs.ariaDescription\n grid.screenReaderAnnouncements = inputs.screenReaderAnnouncements\n grid.viewportHeight = inputs.height\n grid.virtualRowHeight = inputs.rowHeight\n grid.overscanCount = inputs.overscan\n grid.columnOverscanCount = inputs.columnOverscan\n grid.bestFitSampleSize = inputs.bestFitSampleSize\n grid.quickSearchDebounceThreshold = inputs.quickSearchDebounceThreshold\n grid.quickSearchDebounceMs = inputs.quickSearchDebounceMs\n grid.columnStateStorageKey = inputs.columnStateStorageKey ?? null\n}\n","import '@tipolox/litgrid-web'\nimport {\n AfterViewInit,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core'\nimport type {\n BestFitColumnWidth,\n ColumnReorderDetail,\n ColumnStateChangeDetail,\n ColumnVisibilityChangeDetail,\n DataGridElement,\n GridColumn,\n GridColumnState,\n GridConfig,\n GridFilter,\n GridPaginationState,\n GridSelection,\n GridTheme,\n SelectionIntent\n} from '@tipolox/litgrid-web'\nimport { syncGridInputs } from './gridBindings'\n\n@Component({\n selector: 'litgrid-data-grid',\n standalone: true,\n template: `\n <yc-grid\n #grid\n (column-state-change)=\"handleColumnStateChange($event)\"\n (column-reorder)=\"handleColumnReorder($event)\"\n (column-visibility-change)=\"handleColumnVisibilityChange($event)\"\n ></yc-grid>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class DataGridComponent implements AfterViewInit, OnChanges {\n @Input() data: unknown[] = []\n @Input() columns: GridColumn[] = []\n @Input() config: GridConfig = {}\n @Input() theme: GridTheme = 'light'\n @Input() ariaLabel = 'Data grid'\n @Input() ariaDescription = ''\n @Input() screenReaderAnnouncements = true\n @Input() height = 320\n @Input() rowHeight = 36\n @Input() overscan = 4\n @Input() columnOverscan = 2\n @Input() bestFitSampleSize = 10\n @Input() quickSearchDebounceThreshold = 10_000\n @Input() quickSearchDebounceMs = 150\n @Input() columnStateStorageKey?: string\n\n @Output() readonly columnStateChange = new EventEmitter<ColumnStateChangeDetail>()\n @Output() readonly columnReorder = new EventEmitter<ColumnReorderDetail>()\n @Output() readonly columnVisibilityChange = new EventEmitter<ColumnVisibilityChangeDetail>()\n\n @ViewChild('grid', { static: true }) private gridRef?: ElementRef<DataGridElement>\n\n get gridElement(): DataGridElement | null {\n return this.gridRef?.nativeElement ?? null\n }\n\n ngAfterViewInit(): void {\n this.syncInputs()\n }\n\n ngOnChanges(_changes: SimpleChanges): void {\n this.syncInputs()\n }\n\n handleColumnStateChange(event: Event): void {\n this.columnStateChange.emit((event as CustomEvent<ColumnStateChangeDetail>).detail)\n }\n\n handleColumnReorder(event: Event): void {\n this.columnReorder.emit((event as CustomEvent<ColumnReorderDetail>).detail)\n }\n\n handleColumnVisibilityChange(event: Event): void {\n this.columnVisibilityChange.emit(\n (event as CustomEvent<ColumnVisibilityChangeDetail>).detail\n )\n }\n\n getRowHeight(rowIndex: number): number {\n return this.requireGridElement().getRowHeight(rowIndex)\n }\n\n getColumnWidth(column: GridColumn): number {\n return this.requireGridElement().getColumnWidth(column)\n }\n\n setRowHeight(rowIndex: number, height: number): void {\n this.requireGridElement().setRowHeight(rowIndex, height)\n }\n\n resetRowHeight(rowIndex: number): void {\n this.requireGridElement().resetRowHeight(rowIndex)\n }\n\n resetAllRowHeights(): void {\n this.requireGridElement().resetAllRowHeights()\n }\n\n setColumnWidth(columnKey: string, width: number): void {\n this.requireGridElement().setColumnWidth(columnKey, width)\n }\n\n resetColumnWidth(columnKey: string): void {\n this.requireGridElement().resetColumnWidth(columnKey)\n }\n\n resetAllColumnWidths(): void {\n this.requireGridElement().resetAllColumnWidths()\n }\n\n moveColumn(columnKey: string, targetIndex: number): void {\n this.requireGridElement().moveColumn(columnKey, targetIndex)\n }\n\n getColumnOrder(): string[] {\n return this.requireGridElement().getColumnOrder()\n }\n\n setColumnOrder(columnKeys: string[]): void {\n this.requireGridElement().setColumnOrder(columnKeys)\n }\n\n resetColumnOrder(): void {\n this.requireGridElement().resetColumnOrder()\n }\n\n setColumnVisible(columnKey: string, visible: boolean): void {\n this.requireGridElement().setColumnVisible(columnKey, visible)\n }\n\n isColumnVisible(columnKey: string): boolean {\n return this.requireGridElement().isColumnVisible(columnKey)\n }\n\n getVisibleColumnKeys(): string[] {\n return this.requireGridElement().getVisibleColumnKeys()\n }\n\n resetColumnVisibility(): void {\n this.requireGridElement().resetColumnVisibility()\n }\n\n getColumnState(): GridColumnState {\n return this.requireGridElement().getColumnState()\n }\n\n setColumnState(state: GridColumnState): void {\n this.requireGridElement().setColumnState(state)\n }\n\n resetColumnState(): void {\n this.requireGridElement().resetColumnState()\n }\n\n bestFitColumn(columnKey: string): number | null {\n return this.requireGridElement().bestFitColumn(columnKey)\n }\n\n bestFitAllColumns(): BestFitColumnWidth[] {\n return this.requireGridElement().bestFitAllColumns()\n }\n\n copySelectedCells(): Promise<boolean> {\n return this.requireGridElement().copySelectedCells()\n }\n\n copySelectedRows(): Promise<boolean> {\n return this.requireGridElement().copySelectedRows()\n }\n\n setQuickSearch(query: string): void {\n this.requireGridElement().setQuickSearch(query)\n }\n\n clearQuickSearch(): void {\n this.requireGridElement().clearQuickSearch()\n }\n\n getQuickSearch(): string {\n return this.requireGridElement().getQuickSearch()\n }\n\n setFilter(filter: GridFilter): void {\n this.requireGridElement().setFilter(filter)\n }\n\n clearFilter(columnKey?: string): void {\n this.requireGridElement().clearFilter(columnKey)\n }\n\n getFilters(): GridFilter[] {\n return this.requireGridElement().getFilters()\n }\n\n setPage(pageIndex: number): void {\n this.requireGridElement().setPage(pageIndex)\n }\n\n setPageSize(pageSize: number): void {\n this.requireGridElement().setPageSize(pageSize)\n }\n\n getPagination(): GridPaginationState {\n return this.requireGridElement().getPagination()\n }\n\n getTotalRowCount(): number {\n return this.requireGridElement().getTotalRowCount()\n }\n\n selectRow(rowIndex: number, intent?: SelectionIntent): void {\n this.requireGridElement().selectRow(rowIndex, intent)\n }\n\n selectAllRows(): void {\n this.requireGridElement().selectAllRows()\n }\n\n clearSelection(): void {\n this.requireGridElement().clearSelection()\n }\n\n getSelection(): GridSelection {\n return this.requireGridElement().getSelection()\n }\n\n isRowSelected(rowIndex: number): boolean {\n return this.requireGridElement().isRowSelected(rowIndex)\n }\n\n isCellSelected(rowIndex: number, columnKey: string): boolean {\n return this.requireGridElement().isCellSelected(rowIndex, columnKey)\n }\n\n private syncInputs(): void {\n const grid = this.gridElement\n if (!grid) return\n\n syncGridInputs(grid, this)\n }\n\n private requireGridElement(): DataGridElement {\n const grid = this.gridElement\n if (!grid) {\n throw new Error('LitGrid is not available before the Angular view is initialized.')\n }\n return grid\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tipolox-litgrid-angular.mjs","sources":["../../../packages/grid-angular/src/gridBindings.ts","../../../packages/grid-angular/src/DataGridComponent.ts","../../../packages/grid-angular/src/tipolox-litgrid-angular.ts"],"sourcesContent":["import type {\n DataGridElement,\n GridColumn,\n GridConfig,\n GridExternalState,\n GridTheme\n} from '@tipolox/litgrid-web'\n\nexport type AngularGridInputs = {\n externalState?: GridExternalState\n data: unknown[]\n columns: GridColumn[]\n config: GridConfig\n theme: GridTheme\n ariaLabel: string\n ariaDescription: string\n screenReaderAnnouncements: boolean\n height: number\n rowHeight: number\n overscan: number\n columnOverscan: number\n bestFitSampleSize: number\n quickSearchDebounceThreshold: number\n quickSearchDebounceMs: number\n columnStateStorageKey?: string\n}\n\nexport function syncGridInputs(\n grid: DataGridElement,\n inputs: AngularGridInputs\n): void {\n grid.columns = inputs.columns\n grid.config = inputs.config\n if (inputs.config.queryMode === 'external') {\n if (inputs.externalState) grid.externalState = inputs.externalState\n } else grid.data = inputs.data\n grid.theme = inputs.theme\n grid.ariaLabel = inputs.ariaLabel\n grid.ariaDescription = inputs.ariaDescription\n grid.screenReaderAnnouncements = inputs.screenReaderAnnouncements\n grid.viewportHeight = inputs.height\n grid.virtualRowHeight = inputs.rowHeight\n grid.overscanCount = inputs.overscan\n grid.columnOverscanCount = inputs.columnOverscan\n grid.bestFitSampleSize = inputs.bestFitSampleSize\n grid.quickSearchDebounceThreshold = inputs.quickSearchDebounceThreshold\n grid.quickSearchDebounceMs = inputs.quickSearchDebounceMs\n grid.columnStateStorageKey = inputs.columnStateStorageKey ?? null\n}\n","import '@tipolox/litgrid-web'\nimport {\n AfterViewInit,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core'\nimport type {\n BestFitColumnWidth,\n ColumnReorderDetail,\n ColumnStateChangeDetail,\n ColumnVisibilityChangeDetail,\n DataGridElement,\n GridColumn,\n GridColumnState,\n GridConfig,\n GridFilter,\n GridPaginationState,\n GridSelection,\n GridRowKey,\n SelectionChangeDetail,\n GridExternalState,\n GridQueryChangeDetail,\n GridQuerySnapshot,\n SortDirection,\n GridTheme,\n SelectionIntent\n} from '@tipolox/litgrid-web'\nimport { syncGridInputs } from './gridBindings'\n\n@Component({\n selector: 'litgrid-data-grid',\n standalone: true,\n template: `\n <yc-grid\n #grid\n (selection-change)=\"handleSelectionChange($event)\"\n (query-change)=\"handleQueryChange($event)\"\n (column-state-change)=\"handleColumnStateChange($event)\"\n (column-reorder)=\"handleColumnReorder($event)\"\n (column-visibility-change)=\"handleColumnVisibilityChange($event)\"\n ></yc-grid>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class DataGridComponent implements AfterViewInit, OnChanges {\n @Input() externalState?: GridExternalState\n @Output() readonly queryChange = new EventEmitter<GridQueryChangeDetail>()\n\n handleQueryChange(event: Event): void {\n if (event.target === this.gridElement) this.queryChange.emit((event as CustomEvent<GridQueryChangeDetail>).detail)\n }\n setExternalState(state: GridExternalState): boolean { return this.requireGridElement().setExternalState!(state) }\n getQuery(): GridQuerySnapshot { return this.requireGridElement().getQuery!() }\n refreshQuery(): void { this.requireGridElement().refreshQuery!() }\n sortBy(key: string, direction: SortDirection): void { this.requireGridElement().sortBy!(key, direction) }\n clearSort(): void { this.requireGridElement().clearSort!() }\n @Input() data: unknown[] = []\n @Input() columns: GridColumn[] = []\n @Input() config: GridConfig = {}\n @Input() theme: GridTheme = 'light'\n @Input() ariaLabel = 'Data grid'\n @Input() ariaDescription = ''\n @Input() screenReaderAnnouncements = true\n @Input() height = 320\n @Input() rowHeight = 36\n @Input() overscan = 4\n @Input() columnOverscan = 2\n @Input() bestFitSampleSize = 10\n @Input() quickSearchDebounceThreshold = 10_000\n @Input() quickSearchDebounceMs = 150\n @Input() columnStateStorageKey?: string\n\n @Output() readonly columnStateChange = new EventEmitter<ColumnStateChangeDetail>()\n @Output() readonly selectionChange = new EventEmitter<SelectionChangeDetail>()\n @Output() readonly columnReorder = new EventEmitter<ColumnReorderDetail>()\n @Output() readonly columnVisibilityChange = new EventEmitter<ColumnVisibilityChangeDetail>()\n\n @ViewChild('grid', { static: true }) private gridRef?: ElementRef<DataGridElement>\n\n get gridElement(): DataGridElement | null {\n return this.gridRef?.nativeElement ?? null\n }\n\n ngAfterViewInit(): void {\n this.syncInputs()\n }\n\n ngOnChanges(_changes: SimpleChanges): void {\n this.syncInputs()\n }\n\n handleColumnStateChange(event: Event): void {\n this.columnStateChange.emit((event as CustomEvent<ColumnStateChangeDetail>).detail)\n }\n\n handleSelectionChange(event: Event): void {\n this.selectionChange.emit((event as CustomEvent<SelectionChangeDetail>).detail)\n }\n\n getSelectionSnapshot(): SelectionChangeDetail {\n return this.requireGridElement().getSelectionSnapshot()\n }\n\n selectRowByKey(key: GridRowKey, intent?: SelectionIntent): boolean {\n return this.requireGridElement().selectRowByKey(key, intent)\n }\n\n handleColumnReorder(event: Event): void {\n this.columnReorder.emit((event as CustomEvent<ColumnReorderDetail>).detail)\n }\n\n handleColumnVisibilityChange(event: Event): void {\n this.columnVisibilityChange.emit(\n (event as CustomEvent<ColumnVisibilityChangeDetail>).detail\n )\n }\n\n getRowHeight(rowIndex: number): number {\n return this.requireGridElement().getRowHeight(rowIndex)\n }\n\n getColumnWidth(column: GridColumn): number {\n return this.requireGridElement().getColumnWidth(column)\n }\n\n setRowHeight(rowIndex: number, height: number): void {\n this.requireGridElement().setRowHeight(rowIndex, height)\n }\n\n resetRowHeight(rowIndex: number): void {\n this.requireGridElement().resetRowHeight(rowIndex)\n }\n\n resetAllRowHeights(): void {\n this.requireGridElement().resetAllRowHeights()\n }\n\n setColumnWidth(columnKey: string, width: number): void {\n this.requireGridElement().setColumnWidth(columnKey, width)\n }\n\n resetColumnWidth(columnKey: string): void {\n this.requireGridElement().resetColumnWidth(columnKey)\n }\n\n resetAllColumnWidths(): void {\n this.requireGridElement().resetAllColumnWidths()\n }\n\n moveColumn(columnKey: string, targetIndex: number): void {\n this.requireGridElement().moveColumn(columnKey, targetIndex)\n }\n\n getColumnOrder(): string[] {\n return this.requireGridElement().getColumnOrder()\n }\n\n setColumnOrder(columnKeys: string[]): void {\n this.requireGridElement().setColumnOrder(columnKeys)\n }\n\n resetColumnOrder(): void {\n this.requireGridElement().resetColumnOrder()\n }\n\n setColumnVisible(columnKey: string, visible: boolean): void {\n this.requireGridElement().setColumnVisible(columnKey, visible)\n }\n\n isColumnVisible(columnKey: string): boolean {\n return this.requireGridElement().isColumnVisible(columnKey)\n }\n\n getVisibleColumnKeys(): string[] {\n return this.requireGridElement().getVisibleColumnKeys()\n }\n\n resetColumnVisibility(): void {\n this.requireGridElement().resetColumnVisibility()\n }\n\n getColumnState(): GridColumnState {\n return this.requireGridElement().getColumnState()\n }\n\n setColumnState(state: GridColumnState): void {\n this.requireGridElement().setColumnState(state)\n }\n\n resetColumnState(): void {\n this.requireGridElement().resetColumnState()\n }\n\n bestFitColumn(columnKey: string): number | null {\n return this.requireGridElement().bestFitColumn(columnKey)\n }\n\n bestFitAllColumns(): BestFitColumnWidth[] {\n return this.requireGridElement().bestFitAllColumns()\n }\n\n copySelectedCells(): Promise<boolean> {\n return this.requireGridElement().copySelectedCells()\n }\n\n copySelectedRows(): Promise<boolean> {\n return this.requireGridElement().copySelectedRows()\n }\n\n setQuickSearch(query: string): void {\n this.requireGridElement().setQuickSearch(query)\n }\n\n clearQuickSearch(): void {\n this.requireGridElement().clearQuickSearch()\n }\n\n getQuickSearch(): string {\n return this.requireGridElement().getQuickSearch()\n }\n\n setFilter(filter: GridFilter): void {\n this.requireGridElement().setFilter(filter)\n }\n\n clearFilter(columnKey?: string): void {\n this.requireGridElement().clearFilter(columnKey)\n }\n\n getFilters(): GridFilter[] {\n return this.requireGridElement().getFilters()\n }\n\n setPage(pageIndex: number): void {\n this.requireGridElement().setPage(pageIndex)\n }\n\n setPageSize(pageSize: number): void {\n this.requireGridElement().setPageSize(pageSize)\n }\n\n getPagination(): GridPaginationState {\n return this.requireGridElement().getPagination()\n }\n\n getTotalRowCount(): number {\n return this.requireGridElement().getTotalRowCount()\n }\n\n selectRow(rowIndex: number, intent?: SelectionIntent): void {\n this.requireGridElement().selectRow(rowIndex, intent)\n }\n\n selectAllRows(): void {\n this.requireGridElement().selectAllRows()\n }\n\n clearSelection(): void {\n this.requireGridElement().clearSelection()\n }\n\n getSelection(): GridSelection {\n return this.requireGridElement().getSelection()\n }\n\n isRowSelected(rowIndex: number): boolean {\n return this.requireGridElement().isRowSelected(rowIndex)\n }\n\n isCellSelected(rowIndex: number, columnKey: string): boolean {\n return this.requireGridElement().isCellSelected(rowIndex, columnKey)\n }\n\n private syncInputs(): void {\n const grid = this.gridElement\n if (!grid) return\n\n syncGridInputs(grid, this)\n }\n\n private requireGridElement(): DataGridElement {\n const grid = this.gridElement\n if (!grid) {\n throw new Error('LitGrid is not available before the Angular view is initialized.')\n }\n return grid\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tipolox/litgrid-angular",
3
- "version": "1.0.3",
3
+ "version": "1.2.0",
4
4
  "description": "Angular wrapper for LitGrid",
5
5
  "sideEffects": true,
6
6
  "peerDependencies": {
@@ -8,7 +8,7 @@
8
8
  "@angular/core": ">=17.0.0"
9
9
  },
10
10
  "dependencies": {
11
- "@tipolox/litgrid-web": "^1.0.3",
11
+ "@tipolox/litgrid-web": "^1.2.0",
12
12
  "tslib": "^2.8.1"
13
13
  },
14
14
  "keywords": [
@@ -1,9 +1,22 @@
1
- import { GridColumn, GridConfig, GridTheme, ColumnStateChangeDetail, ColumnReorderDetail, ColumnVisibilityChangeDetail, DataGridElement, GridColumnState, BestFitColumnWidth, GridFilter, GridPaginationState, SelectionIntent, GridSelection } from '@tipolox/litgrid-web';
2
- export { BestFitColumnWidth, ColumnReorderDetail, ColumnStateChangeDetail, ColumnVisibilityChangeDetail, DataGridElement, GridColumn, GridColumnState, GridConfig, GridFilter, GridPaginationState, GridSelection, GridTheme, SelectionIntent } from '@tipolox/litgrid-web';
1
+ import * as _tipolox_litgrid_core from '@tipolox/litgrid-core';
2
+ import { GridExternalState, GridQuerySnapshot, SortDirection, GridColumn, GridConfig, GridTheme, ColumnStateChangeDetail, ColumnReorderDetail, ColumnVisibilityChangeDetail, DataGridElement, SelectionChangeDetail, GridRowKey, SelectionIntent, GridColumnState, BestFitColumnWidth, GridFilter, GridPaginationState, GridSelection } from '@tipolox/litgrid-web';
3
+ export { BestFitColumnWidth, ColumnReorderDetail, ColumnStateChangeDetail, ColumnVisibilityChangeDetail, DataGridElement, GridColumn, GridColumnState, GridConfig, GridExternalState, GridExternalTotal, GridFilter, GridPaginationState, GridQuery, GridQueryChangeDetail, GridQueryFilter, GridQueryReason, GridQuerySnapshot, GridRowKey, GridSelection, GridTheme, SelectedRowSnapshot, SelectionChangeDetail, SelectionIntent, SortDirection } from '@tipolox/litgrid-web';
3
4
  import * as i0 from '@angular/core';
4
5
  import { AfterViewInit, OnChanges, EventEmitter, SimpleChanges } from '@angular/core';
5
6
 
6
7
  declare class DataGridComponent implements AfterViewInit, OnChanges {
8
+ externalState?: GridExternalState;
9
+ readonly queryChange: EventEmitter<Readonly<{
10
+ requestId: number;
11
+ reason: _tipolox_litgrid_core.GridQueryReason;
12
+ query: _tipolox_litgrid_core.GridQuery;
13
+ }>>;
14
+ handleQueryChange(event: Event): void;
15
+ setExternalState(state: GridExternalState): boolean;
16
+ getQuery(): GridQuerySnapshot;
17
+ refreshQuery(): void;
18
+ sortBy(key: string, direction: SortDirection): void;
19
+ clearSort(): void;
7
20
  data: unknown[];
8
21
  columns: GridColumn[];
9
22
  config: GridConfig;
@@ -20,6 +33,16 @@ declare class DataGridComponent implements AfterViewInit, OnChanges {
20
33
  quickSearchDebounceMs: number;
21
34
  columnStateStorageKey?: string;
22
35
  readonly columnStateChange: EventEmitter<ColumnStateChangeDetail>;
36
+ readonly selectionChange: EventEmitter<Readonly<{
37
+ scopeKey?: string | number;
38
+ mode: _tipolox_litgrid_core.SelectionMode;
39
+ rowIndex: number | null;
40
+ columnKey: string | null;
41
+ anchorRowIndex: number | null;
42
+ rowIndexes: readonly number[];
43
+ cells: readonly string[];
44
+ rows: readonly _tipolox_litgrid_core.SelectedRowSnapshot[];
45
+ }>>;
23
46
  readonly columnReorder: EventEmitter<ColumnReorderDetail>;
24
47
  readonly columnVisibilityChange: EventEmitter<ColumnVisibilityChangeDetail>;
25
48
  private gridRef?;
@@ -27,6 +50,9 @@ declare class DataGridComponent implements AfterViewInit, OnChanges {
27
50
  ngAfterViewInit(): void;
28
51
  ngOnChanges(_changes: SimpleChanges): void;
29
52
  handleColumnStateChange(event: Event): void;
53
+ handleSelectionChange(event: Event): void;
54
+ getSelectionSnapshot(): SelectionChangeDetail;
55
+ selectRowByKey(key: GridRowKey, intent?: SelectionIntent): boolean;
30
56
  handleColumnReorder(event: Event): void;
31
57
  handleColumnVisibilityChange(event: Event): void;
32
58
  getRowHeight(rowIndex: number): number;
@@ -71,7 +97,7 @@ declare class DataGridComponent implements AfterViewInit, OnChanges {
71
97
  private syncInputs;
72
98
  private requireGridElement;
73
99
  static ɵfac: i0.ɵɵFactoryDeclaration<DataGridComponent, never>;
74
- static ɵcmp: i0.ɵɵComponentDeclaration<DataGridComponent, "litgrid-data-grid", never, { "data": { "alias": "data"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "config": { "alias": "config"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaDescription": { "alias": "ariaDescription"; "required": false; }; "screenReaderAnnouncements": { "alias": "screenReaderAnnouncements"; "required": false; }; "height": { "alias": "height"; "required": false; }; "rowHeight": { "alias": "rowHeight"; "required": false; }; "overscan": { "alias": "overscan"; "required": false; }; "columnOverscan": { "alias": "columnOverscan"; "required": false; }; "bestFitSampleSize": { "alias": "bestFitSampleSize"; "required": false; }; "quickSearchDebounceThreshold": { "alias": "quickSearchDebounceThreshold"; "required": false; }; "quickSearchDebounceMs": { "alias": "quickSearchDebounceMs"; "required": false; }; "columnStateStorageKey": { "alias": "columnStateStorageKey"; "required": false; }; }, { "columnStateChange": "columnStateChange"; "columnReorder": "columnReorder"; "columnVisibilityChange": "columnVisibilityChange"; }, never, never, true, never>;
100
+ static ɵcmp: i0.ɵɵComponentDeclaration<DataGridComponent, "litgrid-data-grid", never, { "externalState": { "alias": "externalState"; "required": false; }; "data": { "alias": "data"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "config": { "alias": "config"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaDescription": { "alias": "ariaDescription"; "required": false; }; "screenReaderAnnouncements": { "alias": "screenReaderAnnouncements"; "required": false; }; "height": { "alias": "height"; "required": false; }; "rowHeight": { "alias": "rowHeight"; "required": false; }; "overscan": { "alias": "overscan"; "required": false; }; "columnOverscan": { "alias": "columnOverscan"; "required": false; }; "bestFitSampleSize": { "alias": "bestFitSampleSize"; "required": false; }; "quickSearchDebounceThreshold": { "alias": "quickSearchDebounceThreshold"; "required": false; }; "quickSearchDebounceMs": { "alias": "quickSearchDebounceMs"; "required": false; }; "columnStateStorageKey": { "alias": "columnStateStorageKey"; "required": false; }; }, { "queryChange": "queryChange"; "columnStateChange": "columnStateChange"; "selectionChange": "selectionChange"; "columnReorder": "columnReorder"; "columnVisibilityChange": "columnVisibilityChange"; }, never, never, true, never>;
75
101
  }
76
102
 
77
103
  export { DataGridComponent };
@@ -1 +1 @@
1
- {"version":3,"file":"tipolox-litgrid-angular.d.ts","sources":["../../../packages/grid-angular/src/DataGridComponent.ts"],"mappings":";;;;;AA8BA,cAkBa,iBAAkB,YAAW,aAAa,EAAE,SAAS;;aAE9C,UAAU;YACX,UAAU;WACX,SAAS;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;gCAG2B,YAAA,CAAA,uBAAA;4BACJ,YAAA,CAAA,mBAAA;qCACS,YAAA,CAAA,4BAAA;;AAIzC,uBAAmB,eAAe;AAIlC;AAIA,0BAAsB,aAAa;AAInC,mCAA+B,KAAK;AAIpC,+BAA2B,KAAK;AAIhC,wCAAoC,KAAK;AAMzC;AAIA,2BAAuB,UAAU;;AAQjC;AAIA;;AAQA;AAIA;;;AAYA;AAIA;;AAQA;;AAQA;AAIA,sBAAkB,eAAe;AAIjC,0BAAsB,eAAe;AAIrC;AAIA;yBAIqB,kBAAkB;AAIvC,yBAAqB,OAAO;AAI5B,wBAAoB,OAAO;AAI3B;AAIA;AAIA;AAIA,sBAAkB,UAAU;AAI5B;kBAIc,UAAU;AAIxB;AAIA;AAIA,qBAAiB,mBAAmB;AAIpC;yCAIqC,eAAe;AAIpD;AAIA;AAIA,oBAAgB,aAAa;AAI7B;;AAQA;AAOA;yCApNW,iBAAiB;2CAAjB,iBAAiB;AA2N7B;;;;","names":[]}
1
+ {"version":3,"file":"tipolox-litgrid-angular.d.ts","sources":["../../../packages/grid-angular/src/DataGridComponent.ts"],"mappings":";;;;;;AAoCA,cAoBa,iBAAkB,YAAW,aAAa,EAAE,SAAS;oBACvC,iBAAiB;AAChC,0BAAoB,YAAA,CAAA,QAAA;;;;AAA4C;AAE1E,6BAAyB,KAAK;AAG9B,4BAAwB,iBAAiB;AACzC,gBAAY,iBAAiB;AAC7B;mCAC+B,aAAa;AAC5C;;aAEkB,UAAU;YACX,UAAU;WACX,SAAS;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;gCAG2B,YAAA,CAAA,uBAAA;AAC1B,8BAAwB,YAAA,CAAA,QAAA;;;;;;;;;AAA4C;4BAC9C,YAAA,CAAA,mBAAA;qCACS,YAAA,CAAA,4BAAA;;AAIzC,uBAAmB,eAAe;AAIlC;AAIA,0BAAsB,aAAa;AAInC,mCAA+B,KAAK;AAIpC,iCAA6B,KAAK;AAIlC,4BAAwB,qBAAqB;wBAIzB,UAAU,WAAW,eAAe;AAIxD,+BAA2B,KAAK;AAIhC,wCAAoC,KAAK;AAMzC;AAIA,2BAAuB,UAAU;;AAQjC;AAIA;;AAQA;AAIA;;;AAYA;AAIA;;AAQA;;AAQA;AAIA,sBAAkB,eAAe;AAIjC,0BAAsB,eAAe;AAIrC;AAIA;yBAIqB,kBAAkB;AAIvC,yBAAqB,OAAO;AAI5B,wBAAoB,OAAO;AAI3B;AAIA;AAIA;AAIA,sBAAkB,UAAU;AAI5B;kBAIc,UAAU;AAIxB;AAIA;AAIA,qBAAiB,mBAAmB;AAIpC;yCAIqC,eAAe;AAIpD;AAIA;AAIA,oBAAgB,aAAa;AAI7B;;AAQA;AAOA;yCA5OW,iBAAiB;2CAAjB,iBAAiB;AAmP7B;;;;","names":[],"sourcesContent":["import '@tipolox/litgrid-web'\nimport {\n AfterViewInit,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core'\nimport type {\n BestFitColumnWidth,\n ColumnReorderDetail,\n ColumnStateChangeDetail,\n ColumnVisibilityChangeDetail,\n DataGridElement,\n GridColumn,\n GridColumnState,\n GridConfig,\n GridFilter,\n GridPaginationState,\n GridSelection,\n GridRowKey,\n SelectionChangeDetail,\n GridExternalState,\n GridQueryChangeDetail,\n GridQuerySnapshot,\n SortDirection,\n GridTheme,\n SelectionIntent\n} from '@tipolox/litgrid-web'\nimport { syncGridInputs } from './gridBindings'\n\n@Component({\n selector: 'litgrid-data-grid',\n standalone: true,\n template: `\n <yc-grid\n #grid\n (selection-change)=\"handleSelectionChange($event)\"\n (query-change)=\"handleQueryChange($event)\"\n (column-state-change)=\"handleColumnStateChange($event)\"\n (column-reorder)=\"handleColumnReorder($event)\"\n (column-visibility-change)=\"handleColumnVisibilityChange($event)\"\n ></yc-grid>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class DataGridComponent implements AfterViewInit, OnChanges {\n @Input() externalState?: GridExternalState\n @Output() readonly queryChange = new EventEmitter<GridQueryChangeDetail>()\n\n handleQueryChange(event: Event): void {\n if (event.target === this.gridElement) this.queryChange.emit((event as CustomEvent<GridQueryChangeDetail>).detail)\n }\n setExternalState(state: GridExternalState): boolean { return this.requireGridElement().setExternalState!(state) }\n getQuery(): GridQuerySnapshot { return this.requireGridElement().getQuery!() }\n refreshQuery(): void { this.requireGridElement().refreshQuery!() }\n sortBy(key: string, direction: SortDirection): void { this.requireGridElement().sortBy!(key, direction) }\n clearSort(): void { this.requireGridElement().clearSort!() }\n @Input() data: unknown[] = []\n @Input() columns: GridColumn[] = []\n @Input() config: GridConfig = {}\n @Input() theme: GridTheme = 'light'\n @Input() ariaLabel = 'Data grid'\n @Input() ariaDescription = ''\n @Input() screenReaderAnnouncements = true\n @Input() height = 320\n @Input() rowHeight = 36\n @Input() overscan = 4\n @Input() columnOverscan = 2\n @Input() bestFitSampleSize = 10\n @Input() quickSearchDebounceThreshold = 10_000\n @Input() quickSearchDebounceMs = 150\n @Input() columnStateStorageKey?: string\n\n @Output() readonly columnStateChange = new EventEmitter<ColumnStateChangeDetail>()\n @Output() readonly selectionChange = new EventEmitter<SelectionChangeDetail>()\n @Output() readonly columnReorder = new EventEmitter<ColumnReorderDetail>()\n @Output() readonly columnVisibilityChange = new EventEmitter<ColumnVisibilityChangeDetail>()\n\n @ViewChild('grid', { static: true }) private gridRef?: ElementRef<DataGridElement>\n\n get gridElement(): DataGridElement | null {\n return this.gridRef?.nativeElement ?? null\n }\n\n ngAfterViewInit(): void {\n this.syncInputs()\n }\n\n ngOnChanges(_changes: SimpleChanges): void {\n this.syncInputs()\n }\n\n handleColumnStateChange(event: Event): void {\n this.columnStateChange.emit((event as CustomEvent<ColumnStateChangeDetail>).detail)\n }\n\n handleSelectionChange(event: Event): void {\n this.selectionChange.emit((event as CustomEvent<SelectionChangeDetail>).detail)\n }\n\n getSelectionSnapshot(): SelectionChangeDetail {\n return this.requireGridElement().getSelectionSnapshot()\n }\n\n selectRowByKey(key: GridRowKey, intent?: SelectionIntent): boolean {\n return this.requireGridElement().selectRowByKey(key, intent)\n }\n\n handleColumnReorder(event: Event): void {\n this.columnReorder.emit((event as CustomEvent<ColumnReorderDetail>).detail)\n }\n\n handleColumnVisibilityChange(event: Event): void {\n this.columnVisibilityChange.emit(\n (event as CustomEvent<ColumnVisibilityChangeDetail>).detail\n )\n }\n\n getRowHeight(rowIndex: number): number {\n return this.requireGridElement().getRowHeight(rowIndex)\n }\n\n getColumnWidth(column: GridColumn): number {\n return this.requireGridElement().getColumnWidth(column)\n }\n\n setRowHeight(rowIndex: number, height: number): void {\n this.requireGridElement().setRowHeight(rowIndex, height)\n }\n\n resetRowHeight(rowIndex: number): void {\n this.requireGridElement().resetRowHeight(rowIndex)\n }\n\n resetAllRowHeights(): void {\n this.requireGridElement().resetAllRowHeights()\n }\n\n setColumnWidth(columnKey: string, width: number): void {\n this.requireGridElement().setColumnWidth(columnKey, width)\n }\n\n resetColumnWidth(columnKey: string): void {\n this.requireGridElement().resetColumnWidth(columnKey)\n }\n\n resetAllColumnWidths(): void {\n this.requireGridElement().resetAllColumnWidths()\n }\n\n moveColumn(columnKey: string, targetIndex: number): void {\n this.requireGridElement().moveColumn(columnKey, targetIndex)\n }\n\n getColumnOrder(): string[] {\n return this.requireGridElement().getColumnOrder()\n }\n\n setColumnOrder(columnKeys: string[]): void {\n this.requireGridElement().setColumnOrder(columnKeys)\n }\n\n resetColumnOrder(): void {\n this.requireGridElement().resetColumnOrder()\n }\n\n setColumnVisible(columnKey: string, visible: boolean): void {\n this.requireGridElement().setColumnVisible(columnKey, visible)\n }\n\n isColumnVisible(columnKey: string): boolean {\n return this.requireGridElement().isColumnVisible(columnKey)\n }\n\n getVisibleColumnKeys(): string[] {\n return this.requireGridElement().getVisibleColumnKeys()\n }\n\n resetColumnVisibility(): void {\n this.requireGridElement().resetColumnVisibility()\n }\n\n getColumnState(): GridColumnState {\n return this.requireGridElement().getColumnState()\n }\n\n setColumnState(state: GridColumnState): void {\n this.requireGridElement().setColumnState(state)\n }\n\n resetColumnState(): void {\n this.requireGridElement().resetColumnState()\n }\n\n bestFitColumn(columnKey: string): number | null {\n return this.requireGridElement().bestFitColumn(columnKey)\n }\n\n bestFitAllColumns(): BestFitColumnWidth[] {\n return this.requireGridElement().bestFitAllColumns()\n }\n\n copySelectedCells(): Promise<boolean> {\n return this.requireGridElement().copySelectedCells()\n }\n\n copySelectedRows(): Promise<boolean> {\n return this.requireGridElement().copySelectedRows()\n }\n\n setQuickSearch(query: string): void {\n this.requireGridElement().setQuickSearch(query)\n }\n\n clearQuickSearch(): void {\n this.requireGridElement().clearQuickSearch()\n }\n\n getQuickSearch(): string {\n return this.requireGridElement().getQuickSearch()\n }\n\n setFilter(filter: GridFilter): void {\n this.requireGridElement().setFilter(filter)\n }\n\n clearFilter(columnKey?: string): void {\n this.requireGridElement().clearFilter(columnKey)\n }\n\n getFilters(): GridFilter[] {\n return this.requireGridElement().getFilters()\n }\n\n setPage(pageIndex: number): void {\n this.requireGridElement().setPage(pageIndex)\n }\n\n setPageSize(pageSize: number): void {\n this.requireGridElement().setPageSize(pageSize)\n }\n\n getPagination(): GridPaginationState {\n return this.requireGridElement().getPagination()\n }\n\n getTotalRowCount(): number {\n return this.requireGridElement().getTotalRowCount()\n }\n\n selectRow(rowIndex: number, intent?: SelectionIntent): void {\n this.requireGridElement().selectRow(rowIndex, intent)\n }\n\n selectAllRows(): void {\n this.requireGridElement().selectAllRows()\n }\n\n clearSelection(): void {\n this.requireGridElement().clearSelection()\n }\n\n getSelection(): GridSelection {\n return this.requireGridElement().getSelection()\n }\n\n isRowSelected(rowIndex: number): boolean {\n return this.requireGridElement().isRowSelected(rowIndex)\n }\n\n isCellSelected(rowIndex: number, columnKey: string): boolean {\n return this.requireGridElement().isCellSelected(rowIndex, columnKey)\n }\n\n private syncInputs(): void {\n const grid = this.gridElement\n if (!grid) return\n\n syncGridInputs(grid, this)\n }\n\n private requireGridElement(): DataGridElement {\n const grid = this.gridElement\n if (!grid) {\n throw new Error('LitGrid is not available before the Angular view is initialized.')\n }\n return grid\n }\n}\n"]}