@polygrid/angular 0.0.5 → 0.0.602

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { effect, input, inject, Injector, runInInjectionContext, ViewChild, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
2
+ import { effect, Directive, Injectable, inject, Injector, input, runInInjectionContext, ContentChild, ViewChild, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { PolyGrid } from '@polygrid/core/engine/core/grid';
5
5
 
@@ -24,30 +24,136 @@ function columnInputEffect(value, grid) {
24
24
  });
25
25
  }
26
26
 
27
+ function loadingInputEffect(value, grid) {
28
+ return effect(() => {
29
+ if (grid)
30
+ grid.api.setLoading(value());
31
+ });
32
+ }
33
+
34
+ class PolyGridNoDataTemplateDirective {
35
+ template;
36
+ constructor(template) {
37
+ this.template = template;
38
+ }
39
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: PolyGridNoDataTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
40
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.6", type: PolyGridNoDataTemplateDirective, isStandalone: true, selector: "[polyGridNoDataTemplate]", ngImport: i0 });
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: PolyGridNoDataTemplateDirective, decorators: [{
43
+ type: Directive,
44
+ args: [{
45
+ selector: "[polyGridNoDataTemplate]",
46
+ }]
47
+ }], ctorParameters: () => [{ type: i0.TemplateRef }] });
48
+
49
+ class TemplateMountService {
50
+ appRef;
51
+ constructor(appRef) {
52
+ this.appRef = appRef;
53
+ }
54
+ mount(template, container, context) {
55
+ const view = template.createEmbeddedView(context);
56
+ this.appRef.attachView(view);
57
+ view.detectChanges();
58
+ const frag = document.createDocumentFragment();
59
+ for (const node of view.rootNodes)
60
+ frag.appendChild(node);
61
+ container.appendChild(frag);
62
+ return {
63
+ update: (partial) => {
64
+ Object.assign(view.context, partial);
65
+ view.detectChanges();
66
+ },
67
+ destroy: () => {
68
+ this.appRef.detachView(view);
69
+ view.destroy();
70
+ },
71
+ };
72
+ }
73
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TemplateMountService, deps: [{ token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });
74
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TemplateMountService, providedIn: "root" });
75
+ }
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TemplateMountService, decorators: [{
77
+ type: Injectable,
78
+ args: [{ providedIn: "root" }]
79
+ }], ctorParameters: () => [{ type: i0.ApplicationRef }] });
80
+
81
+ function renderNoDataTemplate(req, template, templateMountService) {
82
+ if (!template)
83
+ return null;
84
+ const ctx = {
85
+ $implicit: req.context,
86
+ context: req.context,
87
+ };
88
+ return templateMountService.mount(template, req.container, ctx);
89
+ }
90
+
91
+ class RendererAdapterFactory {
92
+ templateMountService = inject(TemplateMountService);
93
+ buildAdapter(templates) {
94
+ return {
95
+ renderNoDataTemplate: (req) => renderNoDataTemplate(req, templates.noData, this.templateMountService),
96
+ };
97
+ }
98
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: RendererAdapterFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
99
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: RendererAdapterFactory, providedIn: "root" });
100
+ }
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: RendererAdapterFactory, decorators: [{
102
+ type: Injectable,
103
+ args: [{ providedIn: "root" }]
104
+ }] });
105
+
106
+ function extractNoDataTemplate(dir) {
107
+ return dir?.template;
108
+ }
109
+
110
+ class TemplateCollectorService {
111
+ collect(noDataTplDir) {
112
+ return {
113
+ noData: extractNoDataTemplate(noDataTplDir),
114
+ };
115
+ }
116
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TemplateCollectorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
117
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TemplateCollectorService, providedIn: "root" });
118
+ }
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TemplateCollectorService, decorators: [{
120
+ type: Injectable,
121
+ args: [{ providedIn: "root" }]
122
+ }] });
123
+
27
124
  class PolyGridComponent {
28
125
  grid = null;
126
+ injector = inject(Injector);
127
+ adapterFactory = inject(RendererAdapterFactory);
128
+ templateCollector = inject(TemplateCollectorService);
29
129
  hostRef;
130
+ noDataTemplateDir;
30
131
  // inputs
31
132
  id = input.required(...(ngDevMode ? [{ debugName: "id" }] : []));
32
133
  columns = input([], ...(ngDevMode ? [{ debugName: "columns" }] : []));
33
134
  data = input([], ...(ngDevMode ? [{ debugName: "data" }] : []));
135
+ loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
34
136
  // reactive effects
35
137
  gridIdEffect;
36
138
  dataEffect;
37
139
  columnEffect;
38
- injector = inject(Injector);
140
+ loadingEffect;
39
141
  ngAfterViewInit() {
40
142
  const host = this.hostRef.nativeElement;
143
+ const registry = this.templateCollector.collect(this.noDataTemplateDir);
144
+ const adapter = this.adapterFactory.buildAdapter(registry);
41
145
  const options = {
42
146
  id: this.id(),
43
147
  columns: this.columns(),
44
148
  data: this.data(),
149
+ rendererAdapter: adapter,
45
150
  };
46
151
  this.grid = new PolyGrid(host, options);
47
152
  runInInjectionContext(this.injector, () => {
48
153
  this.gridIdEffect = gridIdInputEffect(this.id, this.grid);
49
154
  this.dataEffect = dataInputEffect(this.data, this.grid);
50
155
  this.columnEffect = columnInputEffect(this.columns, this.grid);
156
+ this.loadingEffect = loadingInputEffect(this.loading, this.grid);
51
157
  });
52
158
  }
53
159
  ngOnDestroy() {
@@ -55,7 +161,7 @@ class PolyGridComponent {
55
161
  this.grid = null;
56
162
  }
57
163
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: PolyGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
58
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", type: PolyGridComponent, isStandalone: true, selector: "pg-grid", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "hostRef", first: true, predicate: ["host"], descendants: true, static: true }], ngImport: i0, template: "<div #host class=\"pg-host\"></div>\r\n", styles: [":host{display:block;width:100%;height:100%}.pg-host{width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
164
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", type: PolyGridComponent, isStandalone: true, selector: "pg-grid", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "noDataTemplateDir", first: true, predicate: PolyGridNoDataTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "hostRef", first: true, predicate: ["host"], descendants: true, static: true }], ngImport: i0, template: "<div #host class=\"pg-host\"></div>\r\n", styles: [":host{display:block;width:100%;height:100%}.pg-host{width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
59
165
  }
60
166
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: PolyGridComponent, decorators: [{
61
167
  type: Component,
@@ -63,18 +169,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
63
169
  }], propDecorators: { hostRef: [{
64
170
  type: ViewChild,
65
171
  args: ["host", { static: true }]
66
- }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: true }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }] } });
172
+ }], noDataTemplateDir: [{
173
+ type: ContentChild,
174
+ args: [PolyGridNoDataTemplateDirective]
175
+ }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: true }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }] } });
67
176
 
68
177
  class POLY_GRID {
69
178
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: POLY_GRID, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
70
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: POLY_GRID, imports: [PolyGridComponent], exports: [PolyGridComponent] });
179
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: POLY_GRID, imports: [PolyGridComponent, PolyGridNoDataTemplateDirective], exports: [PolyGridComponent, PolyGridNoDataTemplateDirective] });
71
180
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: POLY_GRID, imports: [PolyGridComponent] });
72
181
  }
73
182
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: POLY_GRID, decorators: [{
74
183
  type: NgModule,
75
184
  args: [{
76
- imports: [PolyGridComponent],
77
- exports: [PolyGridComponent],
185
+ imports: [PolyGridComponent, PolyGridNoDataTemplateDirective],
186
+ exports: [PolyGridComponent, PolyGridNoDataTemplateDirective],
78
187
  providers: [],
79
188
  }]
80
189
  }] });
@@ -83,5 +192,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
83
192
  * Generated bundle index. Do not edit.
84
193
  */
85
194
 
86
- export { POLY_GRID, PolyGridComponent };
195
+ export { POLY_GRID, PolyGridComponent, PolyGridNoDataTemplateDirective };
87
196
  //# sourceMappingURL=polygrid-angular.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"polygrid-angular.mjs","sources":["../../src/lib/effects/grid-id.ts","../../src/lib/effects/data.ts","../../src/lib/effects/column.ts","../../src/lib/components/grid/poly-grid.ts","../../src/lib/components/grid/poly-grid.html","../../src/lib/modules/poly-grid.ts","../../src/polygrid-angular.ts"],"sourcesContent":["import { effect, EffectRef, Signal } from \"@angular/core\";\r\nimport { PolyGrid } from \"@polygrid/core/engine/core/grid\";\r\n\r\nexport function gridIdInputEffect(\r\n value: Signal<string>,\r\n grid: PolyGrid\r\n): EffectRef {\r\n return effect(() => {\r\n if (grid) grid.api.setGridId(value());\r\n });\r\n}\r\n","import { effect, EffectRef, Signal } from \"@angular/core\";\r\nimport { PolyGrid } from \"@polygrid/core/engine/core/grid\";\r\n\r\nexport function dataInputEffect(\r\n value: Signal<any[]>,\r\n grid: PolyGrid\r\n): EffectRef {\r\n return effect(() => {\r\n if (grid) grid.api.setData(value());\r\n });\r\n}\r\n","import { effect, EffectRef, Signal } from \"@angular/core\";\r\nimport { PolyGrid } from \"@polygrid/core/engine/core/grid\";\r\nimport { PolyGridColumn } from \"@polygrid/core/engine/services/column/interfaces/column\";\r\n\r\nexport function columnInputEffect(\r\n value: Signal<PolyGridColumn[]>,\r\n grid: PolyGrid\r\n): EffectRef {\r\n return effect(() => {\r\n if (grid) grid.api.setColumns(value());\r\n });\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n EffectRef,\r\n ElementRef,\r\n inject,\r\n Injector,\r\n input,\r\n OnDestroy,\r\n runInInjectionContext,\r\n ViewChild,\r\n} from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport * as effects from \"../../effects/index\";\r\nimport { PolyGrid } from \"@polygrid/core/engine/core/grid\";\r\nimport { PolyGridColumn } from \"@polygrid/core/engine/services/column/interfaces/column\";\r\nimport { PolyGridOptions } from \"@polygrid/core/engine/core/interfaces/grid-options\";\r\n\r\n@Component({\r\n selector: \"pg-grid\",\r\n imports: [CommonModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: \"./poly-grid.html\",\r\n styleUrl: \"./poly-grid.css\",\r\n})\r\nexport class PolyGridComponent implements AfterViewInit, OnDestroy {\r\n private grid: PolyGrid | null = null;\r\n\r\n @ViewChild(\"host\", { static: true }) hostRef!: ElementRef<HTMLDivElement>;\r\n\r\n // inputs\r\n id = input.required<string>();\r\n columns = input<PolyGridColumn[]>([]);\r\n data = input<any[]>([]);\r\n\r\n // reactive effects\r\n gridIdEffect!: EffectRef;\r\n dataEffect!: EffectRef;\r\n columnEffect!: EffectRef;\r\n\r\n private injector = inject(Injector);\r\n\r\n ngAfterViewInit(): void {\r\n const host = this.hostRef.nativeElement;\r\n\r\n const options: PolyGridOptions = {\r\n id: this.id(),\r\n columns: this.columns(),\r\n data: this.data(),\r\n };\r\n\r\n this.grid = new PolyGrid(host, options);\r\n\r\n runInInjectionContext(this.injector, () => {\r\n this.gridIdEffect = effects.gridIdInputEffect(this.id, this.grid!);\r\n this.dataEffect = effects.dataInputEffect(this.data, this.grid!);\r\n this.columnEffect = effects.columnInputEffect(this.columns, this.grid!);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.grid?.destroy();\r\n this.grid = null;\r\n }\r\n}\r\n","<div #host class=\"pg-host\"></div>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { PolyGridComponent } from \"../../public-api\";\r\n\r\n@NgModule({\r\n imports: [PolyGridComponent],\r\n exports: [PolyGridComponent],\r\n providers: [],\r\n})\r\nexport class POLY_GRID {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["effects.gridIdInputEffect","effects.dataInputEffect","effects.columnInputEffect"],"mappings":"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"}
1
+ {"version":3,"file":"polygrid-angular.mjs","sources":["../../src/lib/effects/grid-id.ts","../../src/lib/effects/data.ts","../../src/lib/effects/column.ts","../../src/lib/effects/loading.ts","../../src/lib/directives/no-data.ts","../../src/lib/services/templates/template-mount.ts","../../src/lib/services/renderer-adapter/no-data.ts","../../src/lib/services/renderer-adapter/renderer-adapter-factory.ts","../../src/lib/services/template-collector/extract-no-data.ts","../../src/lib/services/template-collector/template-collector.ts","../../src/lib/components/grid/poly-grid.ts","../../src/lib/components/grid/poly-grid.html","../../src/lib/modules/poly-grid.ts","../../src/polygrid-angular.ts"],"sourcesContent":["import { effect, EffectRef, Signal } from \"@angular/core\";\r\nimport { PolyGrid } from \"@polygrid/core/engine/core/grid\";\r\n\r\nexport function gridIdInputEffect(\r\n value: Signal<string>,\r\n grid: PolyGrid\r\n): EffectRef {\r\n return effect(() => {\r\n if (grid) grid.api.setGridId(value());\r\n });\r\n}\r\n","import { effect, EffectRef, Signal } from \"@angular/core\";\r\nimport { PolyGrid } from \"@polygrid/core/engine/core/grid\";\r\n\r\nexport function dataInputEffect(\r\n value: Signal<any[]>,\r\n grid: PolyGrid\r\n): EffectRef {\r\n return effect(() => {\r\n if (grid) grid.api.setData(value());\r\n });\r\n}\r\n","import { effect, EffectRef, Signal } from \"@angular/core\";\r\nimport { PolyGrid } from \"@polygrid/core/engine/core/grid\";\r\nimport { PolyGridColumn } from \"@polygrid/core/engine/services/column/interfaces/column\";\r\n\r\nexport function columnInputEffect(\r\n value: Signal<PolyGridColumn[]>,\r\n grid: PolyGrid\r\n): EffectRef {\r\n return effect(() => {\r\n if (grid) grid.api.setColumns(value());\r\n });\r\n}\r\n","import { effect, EffectRef, Signal } from \"@angular/core\";\r\nimport { PolyGrid } from \"@polygrid/core/engine/core/grid\";\r\n\r\nexport function loadingInputEffect(\r\n value: Signal<boolean>,\r\n grid: PolyGrid\r\n): EffectRef {\r\n return effect(() => {\r\n if (grid) grid.api.setLoading(value());\r\n });\r\n}\r\n","import { Directive, TemplateRef } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[polyGridNoDataTemplate]\",\r\n})\r\nexport class PolyGridNoDataTemplateDirective {\r\n constructor(public template: TemplateRef<any>) {}\r\n}\r\n","import { ApplicationRef, Injectable, TemplateRef } from \"@angular/core\";\r\nimport { RendererHandle } from \"@polygrid/core/engine/services/renderer/interfaces/renderer-handle\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class TemplateMountService {\r\n constructor(private appRef: ApplicationRef) {}\r\n\r\n mount<T>(\r\n template: TemplateRef<T>,\r\n container: HTMLElement,\r\n context: T\r\n ): RendererHandle {\r\n const view = template.createEmbeddedView(context);\r\n this.appRef.attachView(view);\r\n view.detectChanges();\r\n\r\n const frag = document.createDocumentFragment();\r\n for (const node of view.rootNodes) frag.appendChild(node);\r\n container.appendChild(frag);\r\n\r\n return {\r\n update: (partial: Partial<T>) => {\r\n Object.assign(view.context as any, partial);\r\n view.detectChanges();\r\n },\r\n destroy: () => {\r\n this.appRef.detachView(view);\r\n view.destroy();\r\n },\r\n };\r\n }\r\n}\r\n","import { TemplateRef } from \"@angular/core\";\r\nimport { TemplateMountService } from \"../templates/template-mount\";\r\nimport { RendererHandle } from \"@polygrid/core/engine/services/renderer/interfaces/renderer-handle\";\r\nimport { NoDataMount } from \"@polygrid/core/engine/services/renderer/interfaces/template-mounts/no-data-mount\";\r\n\r\nexport function renderNoDataTemplate(\r\n req: NoDataMount,\r\n template: TemplateRef<any> | undefined,\r\n templateMountService: TemplateMountService\r\n): RendererHandle | null {\r\n if (!template) return null;\r\n\r\n const ctx = {\r\n $implicit: req.context,\r\n context: req.context,\r\n };\r\n\r\n return templateMountService.mount(template, req.container, ctx);\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { TemplateMountService } from \"../templates/template-mount\";\r\nimport { TemplateRegistry } from \"../templates/interfaces/template-registry\";\r\nimport { RendererAdapter } from \"@polygrid/core/engine/services/renderer/interfaces/renderer-adapter\";\r\nimport { renderNoDataTemplate } from \"./no-data\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class RendererAdapterFactory {\r\n private templateMountService = inject(TemplateMountService);\r\n\r\n buildAdapter(templates: TemplateRegistry): RendererAdapter {\r\n return {\r\n renderNoDataTemplate: (req) =>\r\n renderNoDataTemplate(req, templates.noData, this.templateMountService),\r\n };\r\n }\r\n}\r\n","import { TemplateRef } from \"@angular/core\";\r\nimport { PolyGridNoDataTemplateDirective } from \"../../directives/no-data\";\r\n\r\nexport function extractNoDataTemplate(\r\n dir?: PolyGridNoDataTemplateDirective\r\n): TemplateRef<any> | undefined {\r\n return dir?.template;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { PolyGridNoDataTemplateDirective } from \"../../directives/no-data\";\r\nimport { TemplateRegistry } from \"../templates/interfaces/template-registry\";\r\nimport { extractNoDataTemplate } from \"./extract-no-data\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class TemplateCollectorService {\r\n collect(noDataTplDir?: PolyGridNoDataTemplateDirective): TemplateRegistry {\r\n return {\r\n noData: extractNoDataTemplate(noDataTplDir),\r\n };\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n EffectRef,\r\n ElementRef,\r\n inject,\r\n Injector,\r\n input,\r\n OnDestroy,\r\n runInInjectionContext,\r\n ViewChild,\r\n} from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport * as effects from \"../../effects/index\";\r\nimport { PolyGrid } from \"@polygrid/core/engine/core/grid\";\r\nimport { PolyGridColumn } from \"@polygrid/core/engine/services/column/interfaces/column\";\r\nimport { PolyGridOptions } from \"@polygrid/core/engine/core/interfaces/grid-options\";\r\nimport { PolyGridNoDataTemplateDirective } from \"../../directives/no-data\";\r\nimport { RendererAdapterFactory } from \"../../services/renderer-adapter/renderer-adapter-factory\";\r\nimport { TemplateCollectorService } from \"../../services/template-collector/template-collector\";\r\n\r\n@Component({\r\n selector: \"pg-grid\",\r\n imports: [CommonModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: \"./poly-grid.html\",\r\n styleUrl: \"./poly-grid.css\",\r\n})\r\nexport class PolyGridComponent implements AfterViewInit, OnDestroy {\r\n private grid: PolyGrid | null = null;\r\n private injector = inject(Injector);\r\n private adapterFactory = inject(RendererAdapterFactory);\r\n private templateCollector = inject(TemplateCollectorService);\r\n\r\n @ViewChild(\"host\", { static: true }) hostRef!: ElementRef<HTMLDivElement>;\r\n @ContentChild(PolyGridNoDataTemplateDirective)\r\n noDataTemplateDir?: PolyGridNoDataTemplateDirective;\r\n\r\n // inputs\r\n id = input.required<string>();\r\n columns = input<PolyGridColumn[]>([]);\r\n data = input<any[]>([]);\r\n loading = input<boolean>(false);\r\n\r\n // reactive effects\r\n gridIdEffect!: EffectRef;\r\n dataEffect!: EffectRef;\r\n columnEffect!: EffectRef;\r\n loadingEffect!: EffectRef;\r\n\r\n ngAfterViewInit(): void {\r\n const host = this.hostRef.nativeElement;\r\n const registry = this.templateCollector.collect(this.noDataTemplateDir);\r\n const adapter = this.adapterFactory.buildAdapter(registry);\r\n\r\n const options: PolyGridOptions = {\r\n id: this.id(),\r\n columns: this.columns(),\r\n data: this.data(),\r\n rendererAdapter: adapter,\r\n };\r\n\r\n this.grid = new PolyGrid(host, options);\r\n\r\n runInInjectionContext(this.injector, () => {\r\n this.gridIdEffect = effects.gridIdInputEffect(this.id, this.grid!);\r\n this.dataEffect = effects.dataInputEffect(this.data, this.grid!);\r\n this.columnEffect = effects.columnInputEffect(this.columns, this.grid!);\r\n this.loadingEffect = effects.loadingInputEffect(this.loading, this.grid!);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.grid?.destroy();\r\n this.grid = null;\r\n }\r\n}\r\n","<div #host class=\"pg-host\"></div>\r\n","import { NgModule } from \"@angular/core\";\r\nimport {\r\n PolyGridComponent,\r\n PolyGridNoDataTemplateDirective,\r\n} from \"../../public-api\";\r\n\r\n@NgModule({\r\n imports: [PolyGridComponent, PolyGridNoDataTemplateDirective],\r\n exports: [PolyGridComponent, PolyGridNoDataTemplateDirective],\r\n providers: [],\r\n})\r\nexport class POLY_GRID {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["effects.gridIdInputEffect","effects.dataInputEffect","effects.columnInputEffect","effects.loadingInputEffect"],"mappings":"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"}
@@ -1,27 +1,39 @@
1
1
  import * as i0 from '@angular/core';
2
- import { AfterViewInit, OnDestroy, ElementRef, EffectRef } from '@angular/core';
2
+ import { TemplateRef, AfterViewInit, OnDestroy, ElementRef, EffectRef } from '@angular/core';
3
3
  import { PolyGridColumn } from '@polygrid/core/engine/services/column/interfaces/column';
4
4
 
5
+ declare class PolyGridNoDataTemplateDirective {
6
+ template: TemplateRef<any>;
7
+ constructor(template: TemplateRef<any>);
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<PolyGridNoDataTemplateDirective, never>;
9
+ static ɵdir: i0.ɵɵDirectiveDeclaration<PolyGridNoDataTemplateDirective, "[polyGridNoDataTemplate]", never, {}, {}, never, never, true, never>;
10
+ }
11
+
5
12
  declare class PolyGridComponent implements AfterViewInit, OnDestroy {
6
13
  private grid;
14
+ private injector;
15
+ private adapterFactory;
16
+ private templateCollector;
7
17
  hostRef: ElementRef<HTMLDivElement>;
18
+ noDataTemplateDir?: PolyGridNoDataTemplateDirective;
8
19
  id: i0.InputSignal<string>;
9
20
  columns: i0.InputSignal<PolyGridColumn[]>;
10
21
  data: i0.InputSignal<any[]>;
22
+ loading: i0.InputSignal<boolean>;
11
23
  gridIdEffect: EffectRef;
12
24
  dataEffect: EffectRef;
13
25
  columnEffect: EffectRef;
14
- private injector;
26
+ loadingEffect: EffectRef;
15
27
  ngAfterViewInit(): void;
16
28
  ngOnDestroy(): void;
17
29
  static ɵfac: i0.ɵɵFactoryDeclaration<PolyGridComponent, never>;
18
- static ɵcmp: i0.ɵɵComponentDeclaration<PolyGridComponent, "pg-grid", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
30
+ static ɵcmp: i0.ɵɵComponentDeclaration<PolyGridComponent, "pg-grid", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, ["noDataTemplateDir"], never, true, never>;
19
31
  }
20
32
 
21
33
  declare class POLY_GRID {
22
34
  static ɵfac: i0.ɵɵFactoryDeclaration<POLY_GRID, never>;
23
- static ɵmod: i0.ɵɵNgModuleDeclaration<POLY_GRID, never, [typeof PolyGridComponent], [typeof PolyGridComponent]>;
35
+ static ɵmod: i0.ɵɵNgModuleDeclaration<POLY_GRID, never, [typeof PolyGridComponent, typeof PolyGridNoDataTemplateDirective], [typeof PolyGridComponent, typeof PolyGridNoDataTemplateDirective]>;
24
36
  static ɵinj: i0.ɵɵInjectorDeclaration<POLY_GRID>;
25
37
  }
26
38
 
27
- export { POLY_GRID, PolyGridComponent };
39
+ export { POLY_GRID, PolyGridComponent, PolyGridNoDataTemplateDirective };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polygrid/angular",
3
- "version": "0.0.5",
3
+ "version": "0.0.602",
4
4
  "peerDependencies": {
5
5
  "@angular/core": "^21.0.6",
6
6
  "@angular/common": "^21.0.6",