@freegridjs/angular 1.6.0 → 1.7.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.
package/README.md CHANGED
@@ -33,6 +33,7 @@ Add `@import '@freegridjs/core/styles.css';` to your global styles (or list it u
33
33
  Every grid event is an output with the same name (`(sortChange)`, `(cellValueChanged)`, …); `paste` and `scroll`
34
34
  are `(gridPaste)` and `(gridScroll)`. `columns`, `data`, `theme`, `locale`, `summary`, `groupBy`, `pivot`,
35
35
  `fontSize` and `fontFamily` update the grid when they change; other options go in `[options]` and apply at creation.
36
+ Passing a new array or object with the same content (an inline literal re-created on every render) does not reset anything: columns keep the widths, order and visibility the user changed, and `groupBy` and `pivot` are applied again only when their content changes; to undo what the user changed, call the API (`resetColumnState()`, `setGroupBy()`).
36
37
  The grid runs outside the Angular zone, so scrolling does not trigger change detection.
37
38
 
38
39
  Docs: https://freegrid.app/docs/#angular
@@ -1,6 +1,6 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, NgZone, Output, inject } from "@angular/core";
3
- import { createGrid } from "@freegridjs/core";
3
+ import { changeTracker, createGrid } from "@freegridjs/core";
4
4
  const OUTPUTS = {
5
5
  cellClick: "cellClick",
6
6
  cellDoubleClick: "cellDoubleClick",
@@ -92,6 +92,7 @@ var FreeGridComponent = class FreeGridComponent {
92
92
  this.beforeEdit = new EventEmitter();
93
93
  this.beforeCellChange = new EventEmitter();
94
94
  this.api = null;
95
+ this.content = null;
95
96
  this.host = inject(ElementRef).nativeElement;
96
97
  this.zone = inject(NgZone);
97
98
  }
@@ -121,20 +122,25 @@ var FreeGridComponent = class FreeGridComponent {
121
122
  if (out.observed) this.zone.run(() => out.emit(payload));
122
123
  });
123
124
  }
125
+ this.content = {
126
+ groupBy: changeTracker(this.groupBy),
127
+ pivot: changeTracker(this.pivot)
128
+ };
124
129
  this.api = api;
125
130
  this.ready.emit(api);
126
131
  }
127
132
  ngOnChanges(changes) {
128
133
  const api = this.api;
129
- if (!api) return;
134
+ const c = this.content;
135
+ if (!api || !c) return;
130
136
  this.zone.runOutsideAngular(() => {
131
137
  if (changes["columns"]) api.setColumns(this.columns);
132
138
  if (changes["data"]) api.setData(this.data ?? []);
133
139
  if (changes["theme"] && this.theme) api.setTheme(this.theme);
134
140
  if (changes["locale"] && this.locale !== void 0) api.setLocale(this.locale);
135
141
  if (changes["summary"]) api.setSummary(this.summary ?? null);
136
- if (changes["groupBy"]) api.setGroupBy(this.groupBy ?? []);
137
- if (changes["pivot"]) api.setPivot(this.pivot ?? null);
142
+ if (changes["groupBy"] && c.groupBy(this.groupBy)) api.setGroupBy(this.groupBy ?? []);
143
+ if (changes["pivot"] && c.pivot(this.pivot)) api.setPivot(this.pivot ?? null);
138
144
  if (changes["fontSize"] || changes["fontFamily"]) api.setFont({
139
145
  size: this.fontSize,
140
146
  family: this.fontFamily ?? null
@@ -1 +1 @@
1
- {"version":3,"file":"freegridjs-angular.mjs","names":[],"sources":["../../src/free-grid.component.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, NgZone, Output, inject,\n type AfterViewInit, type OnChanges, type OnDestroy, type SimpleChanges,\n} from '@angular/core';\nimport { createGrid, type ColumnDef, type GridApi, type GridEvents, type GridOptions, type LocalePack, type Row } from '@freegridjs/core';\n\n/** Grid event → output name. `paste` and `scroll` are prefixed so they don't clash with the DOM events of the host. */\nconst OUTPUTS = {\n cellClick: 'cellClick',\n cellDoubleClick: 'cellDoubleClick',\n selectionChange: 'selectionChange',\n sortChange: 'sortChange',\n filterChange: 'filterChange',\n columnResize: 'columnResize',\n columnMove: 'columnMove',\n focusChange: 'focusChange',\n columnVisible: 'columnVisible',\n rangeChange: 'rangeChange',\n cellValueChanged: 'cellValueChanged',\n paste: 'gridPaste',\n editStart: 'editStart',\n editStop: 'editStop',\n validationFailed: 'validationFailed',\n rowsAdded: 'rowsAdded',\n rowsRemoved: 'rowsRemoved',\n groupChange: 'groupChange',\n groupToggle: 'groupToggle',\n detailToggle: 'detailToggle',\n rowDragEnd: 'rowDragEnd',\n pageChange: 'pageChange',\n rowsLoaded: 'rowsLoaded',\n rowsLoadFailed: 'rowsLoadFailed',\n pivotChange: 'pivotChange',\n rowDrop: 'rowDrop',\n transactionApplied: 'transactionApplied',\n conditionalFormatsChange: 'conditionalFormatsChange',\n assistantAnswer: 'assistantAnswer',\n rowEditStart: 'rowEditStart',\n columnGroupOpened: 'columnGroupOpened',\n advancedFilterChange: 'advancedFilterChange',\n rowEditStop: 'rowEditStop',\n childrenLoaded: 'childrenLoaded',\n childrenLoadFailed: 'childrenLoadFailed',\n scroll: 'gridScroll',\n beforeSort: 'beforeSort',\n beforeFilter: 'beforeFilter',\n beforePageChange: 'beforePageChange',\n beforeEdit: 'beforeEdit',\n beforeCellChange: 'beforeCellChange',\n} as const satisfies Record<keyof GridEvents, string>;\n\n/**\n * `<free-grid [columns]=\"columns\" [data]=\"rows\" (cellClick)=\"…\" />`\n *\n * Inputs listed here update the grid when they change; anything else goes in `[options]` and applies at creation.\n * The grid runs outside Angular's zone; outputs re-enter it only when someone listens.\n */\n@Component({\n selector: 'free-grid',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[style.display]': '\"block\"', '[style.height]': 'hostHeight' },\n})\nexport class FreeGridComponent implements AfterViewInit, OnChanges, OnDestroy {\n @Input() columns: ColumnDef[] = [];\n @Input() data: Row[] = [];\n /** Any other grid option (rowDrag, treeData, pagination, …), applied at creation. */\n @Input() options?: Partial<GridOptions>;\n @Input() rowSelection?: GridOptions['rowSelection'];\n @Input() getRowId?: GridOptions['getRowId'];\n @Input() rowHeight?: number;\n @Input() headerHeight?: number;\n @Input() theme?: string;\n @Input() locale?: string | Partial<LocalePack>;\n @Input() summary?: GridOptions['summary'];\n @Input() groupBy?: string[];\n @Input() pivot?: GridOptions['pivot'];\n @Input() fontSize?: number;\n @Input() fontFamily?: string;\n /** Host height; number = px. */\n @Input() height: number | string = 400;\n\n /** The grid API once the view is ready. */\n @Output() readonly ready = new EventEmitter<GridApi>();\n @Output() readonly cellClick = new EventEmitter<GridEvents['cellClick']>();\n @Output() readonly cellDoubleClick = new EventEmitter<GridEvents['cellDoubleClick']>();\n @Output() readonly selectionChange = new EventEmitter<GridEvents['selectionChange']>();\n @Output() readonly sortChange = new EventEmitter<GridEvents['sortChange']>();\n @Output() readonly filterChange = new EventEmitter<GridEvents['filterChange']>();\n @Output() readonly columnResize = new EventEmitter<GridEvents['columnResize']>();\n @Output() readonly columnMove = new EventEmitter<GridEvents['columnMove']>();\n @Output() readonly focusChange = new EventEmitter<GridEvents['focusChange']>();\n @Output() readonly columnVisible = new EventEmitter<GridEvents['columnVisible']>();\n @Output() readonly rangeChange = new EventEmitter<GridEvents['rangeChange']>();\n @Output() readonly cellValueChanged = new EventEmitter<GridEvents['cellValueChanged']>();\n @Output() readonly gridPaste = new EventEmitter<GridEvents['paste']>();\n @Output() readonly editStart = new EventEmitter<GridEvents['editStart']>();\n @Output() readonly editStop = new EventEmitter<GridEvents['editStop']>();\n @Output() readonly validationFailed = new EventEmitter<GridEvents['validationFailed']>();\n @Output() readonly rowsAdded = new EventEmitter<GridEvents['rowsAdded']>();\n @Output() readonly rowsRemoved = new EventEmitter<GridEvents['rowsRemoved']>();\n @Output() readonly groupChange = new EventEmitter<GridEvents['groupChange']>();\n @Output() readonly groupToggle = new EventEmitter<GridEvents['groupToggle']>();\n @Output() readonly detailToggle = new EventEmitter<GridEvents['detailToggle']>();\n @Output() readonly rowDragEnd = new EventEmitter<GridEvents['rowDragEnd']>();\n @Output() readonly pageChange = new EventEmitter<GridEvents['pageChange']>();\n @Output() readonly rowsLoaded = new EventEmitter<GridEvents['rowsLoaded']>();\n @Output() readonly rowsLoadFailed = new EventEmitter<GridEvents['rowsLoadFailed']>();\n @Output() readonly pivotChange = new EventEmitter<GridEvents['pivotChange']>();\n @Output() readonly rowDrop = new EventEmitter<GridEvents['rowDrop']>();\n @Output() readonly transactionApplied = new EventEmitter<GridEvents['transactionApplied']>();\n @Output() readonly conditionalFormatsChange = new EventEmitter<GridEvents['conditionalFormatsChange']>();\n @Output() readonly assistantAnswer = new EventEmitter<GridEvents['assistantAnswer']>();\n @Output() readonly rowEditStart = new EventEmitter<GridEvents['rowEditStart']>();\n @Output() readonly columnGroupOpened = new EventEmitter<GridEvents['columnGroupOpened']>();\n @Output() readonly advancedFilterChange = new EventEmitter<GridEvents['advancedFilterChange']>();\n @Output() readonly rowEditStop = new EventEmitter<GridEvents['rowEditStop']>();\n @Output() readonly childrenLoaded = new EventEmitter<GridEvents['childrenLoaded']>();\n @Output() readonly childrenLoadFailed = new EventEmitter<GridEvents['childrenLoadFailed']>();\n @Output() readonly gridScroll = new EventEmitter<GridEvents['scroll']>();\n @Output() readonly beforeSort = new EventEmitter<GridEvents['beforeSort']>();\n @Output() readonly beforeFilter = new EventEmitter<GridEvents['beforeFilter']>();\n @Output() readonly beforePageChange = new EventEmitter<GridEvents['beforePageChange']>();\n @Output() readonly beforeEdit = new EventEmitter<GridEvents['beforeEdit']>();\n @Output() readonly beforeCellChange = new EventEmitter<GridEvents['beforeCellChange']>();\n\n /** The grid API (null before the view is ready and after destroy). */\n api: GridApi | null = null;\n\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n private readonly zone = inject(NgZone);\n\n get hostHeight(): string {\n return typeof this.height === 'number' ? `${this.height}px` : this.height;\n }\n\n ngAfterViewInit(): void {\n const api = this.zone.runOutsideAngular(() => createGrid(this.host, {\n ...this.options,\n columns: this.columns, data: this.data, rowSelection: this.rowSelection, getRowId: this.getRowId,\n rowHeight: this.rowHeight, headerHeight: this.headerHeight, theme: this.theme, locale: this.locale,\n summary: this.summary, groupBy: this.groupBy, pivot: this.pivot, fontSize: this.fontSize, fontFamily: this.fontFamily,\n }));\n for (const [type, name] of Object.entries(OUTPUTS)) {\n const out = (this as unknown as Record<string, EventEmitter<unknown>>)[name];\n api.on(type as keyof GridEvents, payload => {\n if (out.observed) this.zone.run(() => out.emit(payload));\n });\n }\n this.api = api;\n this.ready.emit(api);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const api = this.api;\n if (!api) return;\n this.zone.runOutsideAngular(() => {\n if (changes['columns']) api.setColumns(this.columns);\n if (changes['data']) api.setData(this.data ?? []);\n if (changes['theme'] && this.theme) api.setTheme(this.theme);\n if (changes['locale'] && this.locale !== undefined) api.setLocale(this.locale);\n if (changes['summary']) api.setSummary(this.summary ?? null);\n if (changes['groupBy']) api.setGroupBy(this.groupBy ?? []);\n if (changes['pivot']) api.setPivot(this.pivot ?? null);\n if (changes['fontSize'] || changes['fontFamily']) api.setFont({ size: this.fontSize, family: this.fontFamily ?? null });\n });\n }\n\n ngOnDestroy(): void {\n this.api?.destroy();\n this.api = null;\n }\n}\n"],"mappings":";;;AAOA,MAAM,UAAU;CACd,WAAW;CACX,iBAAiB;CACjB,iBAAiB;CACjB,YAAY;CACZ,cAAc;CACd,cAAc;CACd,YAAY;CACZ,aAAa;CACb,eAAe;CACf,aAAa;CACb,kBAAkB;CAClB,OAAO;CACP,WAAW;CACX,UAAU;CACV,kBAAkB;CAClB,WAAW;CACX,aAAa;CACb,aAAa;CACb,aAAa;CACb,cAAc;CACd,YAAY;CACZ,YAAY;CACZ,YAAY;CACZ,gBAAgB;CAChB,aAAa;CACb,SAAS;CACT,oBAAoB;CACpB,0BAA0B;CAC1B,iBAAiB;CACjB,cAAc;CACd,mBAAmB;CACnB,sBAAsB;CACtB,aAAa;CACb,gBAAgB;CAChB,oBAAoB;CACpB,QAAQ;CACR,YAAY;CACZ,cAAc;CACd,kBAAkB;CAClB,YAAY;CACZ,kBAAkB;AACiC;AAerD,IAAa,oBAAb,MAAa,kBAAiB;CAP9B,cAAA;EAQW,KAAA,UAAuB,CAAA;EACvB,KAAA,OAAc,CAAA;EAed,KAAA,SAA0B;EAGhB,KAAA,QAAQ,IAAI,aAAY;EACxB,KAAA,YAAY,IAAI,aAAY;EAC5B,KAAA,kBAAkB,IAAI,aAAY;EAClC,KAAA,kBAAkB,IAAI,aAAY;EAClC,KAAA,aAAa,IAAI,aAAY;EAC7B,KAAA,eAAe,IAAI,aAAY;EAC/B,KAAA,eAAe,IAAI,aAAY;EAC/B,KAAA,aAAa,IAAI,aAAY;EAC7B,KAAA,cAAc,IAAI,aAAY;EAC9B,KAAA,gBAAgB,IAAI,aAAY;EAChC,KAAA,cAAc,IAAI,aAAY;EAC9B,KAAA,mBAAmB,IAAI,aAAY;EACnC,KAAA,YAAY,IAAI,aAAY;EAC5B,KAAA,YAAY,IAAI,aAAY;EAC5B,KAAA,WAAW,IAAI,aAAY;EAC3B,KAAA,mBAAmB,IAAI,aAAY;EACnC,KAAA,YAAY,IAAI,aAAY;EAC5B,KAAA,cAAc,IAAI,aAAY;EAC9B,KAAA,cAAc,IAAI,aAAY;EAC9B,KAAA,cAAc,IAAI,aAAY;EAC9B,KAAA,eAAe,IAAI,aAAY;EAC/B,KAAA,aAAa,IAAI,aAAY;EAC7B,KAAA,aAAa,IAAI,aAAY;EAC7B,KAAA,aAAa,IAAI,aAAY;EAC7B,KAAA,iBAAiB,IAAI,aAAY;EACjC,KAAA,cAAc,IAAI,aAAY;EAC9B,KAAA,UAAU,IAAI,aAAY;EAC1B,KAAA,qBAAqB,IAAI,aAAY;EACrC,KAAA,2BAA2B,IAAI,aAAY;EAC3C,KAAA,kBAAkB,IAAI,aAAY;EAClC,KAAA,eAAe,IAAI,aAAY;EAC/B,KAAA,oBAAoB,IAAI,aAAY;EACpC,KAAA,uBAAuB,IAAI,aAAY;EACvC,KAAA,cAAc,IAAI,aAAY;EAC9B,KAAA,iBAAiB,IAAI,aAAY;EACjC,KAAA,qBAAqB,IAAI,aAAY;EACrC,KAAA,aAAa,IAAI,aAAY;EAC7B,KAAA,aAAa,IAAI,aAAY;EAC7B,KAAA,eAAe,IAAI,aAAY;EAC/B,KAAA,mBAAmB,IAAI,aAAY;EACnC,KAAA,aAAa,IAAI,aAAY;EAC7B,KAAA,mBAAmB,IAAI,aAAY;EAGtD,KAAA,MAAsB;EAEL,KAAA,OAAoB,OAAO,UAAU,CAAC,CAAC;EACvC,KAAA,OAAO,OAAO,MAAM;CA0CtC;CAxCC,IAAI,aAAU;EACZ,OAAO,OAAO,KAAK,WAAW,WAAW,GAAG,KAAK,OAAM,MAAO,KAAK;CACrE;CAEA,kBAAe;EACb,MAAM,MAAM,KAAK,KAAK,wBAAwB,WAAW,KAAK,MAAM;GAClE,GAAG,KAAK;GACR,SAAS,KAAK;GAAS,MAAM,KAAK;GAAM,cAAc,KAAK;GAAc,UAAU,KAAK;GACxF,WAAW,KAAK;GAAW,cAAc,KAAK;GAAc,OAAO,KAAK;GAAO,QAAQ,KAAK;GAC5F,SAAS,KAAK;GAAS,SAAS,KAAK;GAAS,OAAO,KAAK;GAAO,UAAU,KAAK;GAAU,YAAY,KAAK;EAC5G,CAAA,CAAC;EACF,KAAK,MAAM,CAAC,MAAM,SAAS,OAAO,QAAQ,OAAO,GAAG;GAClD,MAAM,MAAO,KAA0D;GACvE,IAAI,GAAG,OAA0B,YAAU;IACzC,IAAI,IAAI,UAAU,KAAK,KAAK,UAAU,IAAI,KAAK,OAAO,CAAC;GACzD,CAAC;EACH;EACA,KAAK,MAAM;EACX,KAAK,MAAM,KAAK,GAAG;CACrB;CAEA,YAAY,SAAsB;EAChC,MAAM,MAAM,KAAK;EACjB,IAAI,CAAC,KAAK;EACV,KAAK,KAAK,wBAAuB;GAC/B,IAAI,QAAQ,YAAY,IAAI,WAAW,KAAK,OAAO;GACnD,IAAI,QAAQ,SAAS,IAAI,QAAQ,KAAK,QAAQ,CAAA,CAAE;GAChD,IAAI,QAAQ,YAAY,KAAK,OAAO,IAAI,SAAS,KAAK,KAAK;GAC3D,IAAI,QAAQ,aAAa,KAAK,WAAW,QAAW,IAAI,UAAU,KAAK,MAAM;GAC7E,IAAI,QAAQ,YAAY,IAAI,WAAW,KAAK,WAAW,IAAI;GAC3D,IAAI,QAAQ,YAAY,IAAI,WAAW,KAAK,WAAW,CAAA,CAAE;GACzD,IAAI,QAAQ,UAAU,IAAI,SAAS,KAAK,SAAS,IAAI;GACrD,IAAI,QAAQ,eAAe,QAAQ,eAAe,IAAI,QAAQ;IAAE,MAAM,KAAK;IAAU,QAAQ,KAAK,cAAc;GAAI,CAAE;EACxH,CAAC;CACH;CAEA,cAAW;EACT,KAAK,KAAK,QAAO;EACjB,KAAK,MAAM;CACb;CA5GW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAiB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAjB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAiB,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,SAAA;IAAA,MAAA;IAAA,SAAA;IAAA,cAAA;IAAA,UAAA;IAAA,WAAA;IAAA,cAAA;IAAA,OAAA;IAAA,QAAA;IAAA,SAAA;IAAA,SAAA;IAAA,OAAA;IAAA,UAAA;IAAA,YAAA;IAAA,QAAA;GAAA;GAAA,SAAA;IAAA,OAAA;IAAA,WAAA;IAAA,iBAAA;IAAA,iBAAA;IAAA,YAAA;IAAA,cAAA;IAAA,cAAA;IAAA,YAAA;IAAA,aAAA;IAAA,eAAA;IAAA,aAAA;IAAA,kBAAA;IAAA,WAAA;IAAA,WAAA;IAAA,UAAA;IAAA,kBAAA;IAAA,WAAA;IAAA,aAAA;IAAA,aAAA;IAAA,aAAA;IAAA,cAAA;IAAA,YAAA;IAAA,YAAA;IAAA,YAAA;IAAA,gBAAA;IAAA,aAAA;IAAA,SAAA;IAAA,oBAAA;IAAA,0BAAA;IAAA,iBAAA;IAAA,cAAA;IAAA,mBAAA;IAAA,sBAAA;IAAA,aAAA;IAAA,gBAAA;IAAA,oBAAA;IAAA,YAAA;IAAA,YAAA;IAAA,cAAA;IAAA,kBAAA;IAAA,YAAA;IAAA,kBAAA;GAAA;GAAA,MAAA,EAAA,YAAA;IAAA,iBAAA;IAAA,gBAAA;GAAA,EAAA;GAAA,eAAA;GAAA,UAAA;GAAA,UAJlB;GAAE,UAAA;GAAA,iBAAA,GAAA,wBAAA;EAAA,CAAA;CAAA;;AAID,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAiB,YAAA,CAAA;EAP7B,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,YAAY;GACZ,UAAU;GACV,iBAAiB,wBAAwB;GACzC,MAAM;IAAE,mBAAmB;IAAW,kBAAkB;GAAY;EACrE,CAAA;;;EAEE,SAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,MAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAEA,SAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,cAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,UAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,WAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,cAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,OAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,QAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,SAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,SAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,OAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,UAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,YAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAEA,QAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAGA,OAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,WAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,iBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,iBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,YAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,cAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,cAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,YAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,aAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,eAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,aAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,kBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,WAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,WAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,UAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,kBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,WAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,aAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,aAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,aAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,cAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,YAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,YAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,YAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,gBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,aAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,SAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,oBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,0BAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,iBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,cAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,mBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,sBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,aAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,gBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,oBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,YAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,YAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,cAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,kBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,YAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,kBAAA,CAAA,EAAA,MAAA,OAAA,CAAA"}
1
+ {"version":3,"file":"freegridjs-angular.mjs","names":[],"sources":["../../src/free-grid.component.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, NgZone, Output, inject,\n type AfterViewInit, type OnChanges, type OnDestroy, type SimpleChanges,\n} from '@angular/core';\nimport { changeTracker, createGrid, type ColumnDef, type GridApi, type GridEvents, type GridOptions, type LocalePack, type Row } from '@freegridjs/core';\n\n/** Grid event → output name. `paste` and `scroll` are prefixed so they don't clash with the DOM events of the host. */\nconst OUTPUTS = {\n cellClick: 'cellClick',\n cellDoubleClick: 'cellDoubleClick',\n selectionChange: 'selectionChange',\n sortChange: 'sortChange',\n filterChange: 'filterChange',\n columnResize: 'columnResize',\n columnMove: 'columnMove',\n focusChange: 'focusChange',\n columnVisible: 'columnVisible',\n rangeChange: 'rangeChange',\n cellValueChanged: 'cellValueChanged',\n paste: 'gridPaste',\n editStart: 'editStart',\n editStop: 'editStop',\n validationFailed: 'validationFailed',\n rowsAdded: 'rowsAdded',\n rowsRemoved: 'rowsRemoved',\n groupChange: 'groupChange',\n groupToggle: 'groupToggle',\n detailToggle: 'detailToggle',\n rowDragEnd: 'rowDragEnd',\n pageChange: 'pageChange',\n rowsLoaded: 'rowsLoaded',\n rowsLoadFailed: 'rowsLoadFailed',\n pivotChange: 'pivotChange',\n rowDrop: 'rowDrop',\n transactionApplied: 'transactionApplied',\n conditionalFormatsChange: 'conditionalFormatsChange',\n assistantAnswer: 'assistantAnswer',\n rowEditStart: 'rowEditStart',\n columnGroupOpened: 'columnGroupOpened',\n advancedFilterChange: 'advancedFilterChange',\n rowEditStop: 'rowEditStop',\n childrenLoaded: 'childrenLoaded',\n childrenLoadFailed: 'childrenLoadFailed',\n scroll: 'gridScroll',\n beforeSort: 'beforeSort',\n beforeFilter: 'beforeFilter',\n beforePageChange: 'beforePageChange',\n beforeEdit: 'beforeEdit',\n beforeCellChange: 'beforeCellChange',\n} as const satisfies Record<keyof GridEvents, string>;\n\n/**\n * `<free-grid [columns]=\"columns\" [data]=\"rows\" (cellClick)=\"…\" />`\n *\n * Inputs listed here update the grid when they change; anything else goes in `[options]` and applies at creation.\n * The grid runs outside Angular's zone; outputs re-enter it only when someone listens.\n */\n@Component({\n selector: 'free-grid',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[style.display]': '\"block\"', '[style.height]': 'hostHeight' },\n})\nexport class FreeGridComponent implements AfterViewInit, OnChanges, OnDestroy {\n @Input() columns: ColumnDef[] = [];\n @Input() data: Row[] = [];\n /** Any other grid option (rowDrag, treeData, pagination, …), applied at creation. */\n @Input() options?: Partial<GridOptions>;\n @Input() rowSelection?: GridOptions['rowSelection'];\n @Input() getRowId?: GridOptions['getRowId'];\n @Input() rowHeight?: number;\n @Input() headerHeight?: number;\n @Input() theme?: string;\n @Input() locale?: string | Partial<LocalePack>;\n @Input() summary?: GridOptions['summary'];\n @Input() groupBy?: string[];\n @Input() pivot?: GridOptions['pivot'];\n @Input() fontSize?: number;\n @Input() fontFamily?: string;\n /** Host height; number = px. */\n @Input() height: number | string = 400;\n\n /** The grid API once the view is ready. */\n @Output() readonly ready = new EventEmitter<GridApi>();\n @Output() readonly cellClick = new EventEmitter<GridEvents['cellClick']>();\n @Output() readonly cellDoubleClick = new EventEmitter<GridEvents['cellDoubleClick']>();\n @Output() readonly selectionChange = new EventEmitter<GridEvents['selectionChange']>();\n @Output() readonly sortChange = new EventEmitter<GridEvents['sortChange']>();\n @Output() readonly filterChange = new EventEmitter<GridEvents['filterChange']>();\n @Output() readonly columnResize = new EventEmitter<GridEvents['columnResize']>();\n @Output() readonly columnMove = new EventEmitter<GridEvents['columnMove']>();\n @Output() readonly focusChange = new EventEmitter<GridEvents['focusChange']>();\n @Output() readonly columnVisible = new EventEmitter<GridEvents['columnVisible']>();\n @Output() readonly rangeChange = new EventEmitter<GridEvents['rangeChange']>();\n @Output() readonly cellValueChanged = new EventEmitter<GridEvents['cellValueChanged']>();\n @Output() readonly gridPaste = new EventEmitter<GridEvents['paste']>();\n @Output() readonly editStart = new EventEmitter<GridEvents['editStart']>();\n @Output() readonly editStop = new EventEmitter<GridEvents['editStop']>();\n @Output() readonly validationFailed = new EventEmitter<GridEvents['validationFailed']>();\n @Output() readonly rowsAdded = new EventEmitter<GridEvents['rowsAdded']>();\n @Output() readonly rowsRemoved = new EventEmitter<GridEvents['rowsRemoved']>();\n @Output() readonly groupChange = new EventEmitter<GridEvents['groupChange']>();\n @Output() readonly groupToggle = new EventEmitter<GridEvents['groupToggle']>();\n @Output() readonly detailToggle = new EventEmitter<GridEvents['detailToggle']>();\n @Output() readonly rowDragEnd = new EventEmitter<GridEvents['rowDragEnd']>();\n @Output() readonly pageChange = new EventEmitter<GridEvents['pageChange']>();\n @Output() readonly rowsLoaded = new EventEmitter<GridEvents['rowsLoaded']>();\n @Output() readonly rowsLoadFailed = new EventEmitter<GridEvents['rowsLoadFailed']>();\n @Output() readonly pivotChange = new EventEmitter<GridEvents['pivotChange']>();\n @Output() readonly rowDrop = new EventEmitter<GridEvents['rowDrop']>();\n @Output() readonly transactionApplied = new EventEmitter<GridEvents['transactionApplied']>();\n @Output() readonly conditionalFormatsChange = new EventEmitter<GridEvents['conditionalFormatsChange']>();\n @Output() readonly assistantAnswer = new EventEmitter<GridEvents['assistantAnswer']>();\n @Output() readonly rowEditStart = new EventEmitter<GridEvents['rowEditStart']>();\n @Output() readonly columnGroupOpened = new EventEmitter<GridEvents['columnGroupOpened']>();\n @Output() readonly advancedFilterChange = new EventEmitter<GridEvents['advancedFilterChange']>();\n @Output() readonly rowEditStop = new EventEmitter<GridEvents['rowEditStop']>();\n @Output() readonly childrenLoaded = new EventEmitter<GridEvents['childrenLoaded']>();\n @Output() readonly childrenLoadFailed = new EventEmitter<GridEvents['childrenLoadFailed']>();\n @Output() readonly gridScroll = new EventEmitter<GridEvents['scroll']>();\n @Output() readonly beforeSort = new EventEmitter<GridEvents['beforeSort']>();\n @Output() readonly beforeFilter = new EventEmitter<GridEvents['beforeFilter']>();\n @Output() readonly beforePageChange = new EventEmitter<GridEvents['beforePageChange']>();\n @Output() readonly beforeEdit = new EventEmitter<GridEvents['beforeEdit']>();\n @Output() readonly beforeCellChange = new EventEmitter<GridEvents['beforeCellChange']>();\n\n /** The grid API (null before the view is ready and after destroy). */\n api: GridApi | null = null;\n /** groupBy and pivot can also be changed by the user in the grid: re-apply them only when the input's content changes. */\n private content: Record<'groupBy' | 'pivot', (next: unknown) => boolean> | null = null;\n\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n private readonly zone = inject(NgZone);\n\n get hostHeight(): string {\n return typeof this.height === 'number' ? `${this.height}px` : this.height;\n }\n\n ngAfterViewInit(): void {\n const api = this.zone.runOutsideAngular(() => createGrid(this.host, {\n ...this.options,\n columns: this.columns, data: this.data, rowSelection: this.rowSelection, getRowId: this.getRowId,\n rowHeight: this.rowHeight, headerHeight: this.headerHeight, theme: this.theme, locale: this.locale,\n summary: this.summary, groupBy: this.groupBy, pivot: this.pivot, fontSize: this.fontSize, fontFamily: this.fontFamily,\n }));\n for (const [type, name] of Object.entries(OUTPUTS)) {\n const out = (this as unknown as Record<string, EventEmitter<unknown>>)[name];\n api.on(type as keyof GridEvents, payload => {\n if (out.observed) this.zone.run(() => out.emit(payload));\n });\n }\n this.content = { groupBy: changeTracker(this.groupBy), pivot: changeTracker(this.pivot) };\n this.api = api;\n this.ready.emit(api);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const api = this.api;\n const c = this.content;\n if (!api || !c) return;\n this.zone.runOutsideAngular(() => {\n if (changes['columns']) api.setColumns(this.columns);\n if (changes['data']) api.setData(this.data ?? []);\n if (changes['theme'] && this.theme) api.setTheme(this.theme);\n if (changes['locale'] && this.locale !== undefined) api.setLocale(this.locale);\n if (changes['summary']) api.setSummary(this.summary ?? null);\n if (changes['groupBy'] && c.groupBy(this.groupBy)) api.setGroupBy(this.groupBy ?? []);\n if (changes['pivot'] && c.pivot(this.pivot)) api.setPivot(this.pivot ?? null);\n if (changes['fontSize'] || changes['fontFamily']) api.setFont({ size: this.fontSize, family: this.fontFamily ?? null });\n });\n }\n\n ngOnDestroy(): void {\n this.api?.destroy();\n this.api = null;\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@freegridjs/angular",
3
- "version": "1.6.0",
3
+ "version": "1.7.1",
4
4
  "description": "Angular component for FreeGrid, the fast data grid (free for personal use).",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "peerDependencies": {
7
7
  "@angular/core": ">=17.0.0",
8
- "@freegridjs/core": "^1.6.0"
8
+ "@freegridjs/core": "^1.7.1"
9
9
  },
10
10
  "sideEffects": false,
11
11
  "keywords": [
@@ -199,6 +199,8 @@ export declare class FreeGridComponent implements AfterViewInit, OnChanges, OnDe
199
199
  }>;
200
200
  /** The grid API (null before the view is ready and after destroy). */
201
201
  api: GridApi | null;
202
+ /** groupBy and pivot can also be changed by the user in the grid: re-apply them only when the input's content changes. */
203
+ private content;
202
204
  private readonly host;
203
205
  private readonly zone;
204
206
  get hostHeight(): string;