@freegridjs/angular 1.9.0 → 1.9.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
@@ -59,3 +59,10 @@ See https://freegrid.app/pricing/ and the LICENSE file.
59
59
  기본 기능은 회사를 포함해 누구나 무료입니다. 유료 기능은 도메인마다 30일 체험 뒤 키가 필요합니다.
60
60
  개인·교육·비영리 프로젝트는 무료 개인 키(6개월, 언제든 갱신)를, 회사는 도메인당 연 20만 원 또는 영구 40만 원
61
61
  라이선스를 쓰며, 키 하나로 서브도메인까지 모두 쓸 수 있습니다. 자세한 내용은 https://freegrid.app/pricing/
62
+
63
+ ```ts
64
+ import { setLicenseKey } from '@freegridjs/core';
65
+ setLicenseKey('FG1....'); // once for every grid on the page
66
+ ```
67
+
68
+ or per grid: `<free-grid licenseKey="FG1...." [columns]="columns" [data]="rows" />`
@@ -100,8 +100,7 @@ var FreeGridComponent = class FreeGridComponent {
100
100
  return typeof this.height === "number" ? `${this.height}px` : this.height;
101
101
  }
102
102
  ngAfterViewInit() {
103
- const api = this.zone.runOutsideAngular(() => createGrid(this.host, {
104
- ...this.options,
103
+ const explicit = {
105
104
  columns: this.columns,
106
105
  data: this.data,
107
106
  rowSelection: this.rowSelection,
@@ -114,7 +113,12 @@ var FreeGridComponent = class FreeGridComponent {
114
113
  groupBy: this.groupBy,
115
114
  pivot: this.pivot,
116
115
  fontSize: this.fontSize,
117
- fontFamily: this.fontFamily
116
+ fontFamily: this.fontFamily,
117
+ licenseKey: this.licenseKey
118
+ };
119
+ const api = this.zone.runOutsideAngular(() => createGrid(this.host, {
120
+ ...this.options,
121
+ ...Object.fromEntries(Object.entries(explicit).filter(([, v]) => v !== void 0))
118
122
  }));
119
123
  for (const [type, name] of Object.entries(OUTPUTS)) {
120
124
  const out = this[name];
@@ -183,6 +187,7 @@ var FreeGridComponent = class FreeGridComponent {
183
187
  pivot: "pivot",
184
188
  fontSize: "fontSize",
185
189
  fontFamily: "fontFamily",
190
+ licenseKey: "licenseKey",
186
191
  height: "height"
187
192
  },
188
193
  outputs: {
@@ -274,6 +279,7 @@ i0.ɵɵngDeclareClassMetadata({
274
279
  pivot: [{ type: Input }],
275
280
  fontSize: [{ type: Input }],
276
281
  fontFamily: [{ type: Input }],
282
+ licenseKey: [{ type: Input }],
277
283
  height: [{ type: Input }],
278
284
  ready: [{ type: Output }],
279
285
  cellClick: [{ type: Output }],
@@ -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 { 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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"}
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 /** License key for paid features (or call `setLicenseKey` once for every grid); applied at creation. */\n @Input() licenseKey?: 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 // inputs left unset do not override the same option given in [options]\n const explicit: Partial<GridOptions> = {\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 licenseKey: this.licenseKey,\n };\n const api = this.zone.runOutsideAngular(() => createGrid(this.host, {\n ...this.options,\n ...Object.fromEntries(Object.entries(explicit).filter(([, v]) => v !== undefined)),\n } as GridOptions));\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.9.0",
3
+ "version": "1.9.1",
4
4
  "description": "Angular component for FreeGrid, the fast data grid. Free core; paid features free with a personal key.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "peerDependencies": {
7
7
  "@angular/core": ">=17.0.0",
8
- "@freegridjs/core": "^1.9.0"
8
+ "@freegridjs/core": "^1.9.1"
9
9
  },
10
10
  "sideEffects": false,
11
11
  "keywords": [
@@ -23,6 +23,8 @@ export declare class FreeGridComponent implements AfterViewInit, OnChanges, OnDe
23
23
  pivot?: GridOptions['pivot'];
24
24
  fontSize?: number;
25
25
  fontFamily?: string;
26
+ /** License key for paid features (or call `setLicenseKey` once for every grid); applied at creation. */
27
+ licenseKey?: string;
26
28
  /** Host height; number = px. */
27
29
  height: number | string;
28
30
  /** The grid API once the view is ready. */
@@ -265,6 +267,10 @@ export declare class FreeGridComponent implements AfterViewInit, OnChanges, OnDe
265
267
  "alias": "fontFamily";
266
268
  "required": false;
267
269
  };
270
+ "licenseKey": {
271
+ "alias": "licenseKey";
272
+ "required": false;
273
+ };
268
274
  "height": {
269
275
  "alias": "height";
270
276
  "required": false;