@zengrid/angular 1.2.1 → 1.2.2
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/ng-package.json +11 -0
- package/package.json +5 -16
- package/src/lib/components/zen-column.component.ts +105 -0
- package/src/lib/components/zen-grid.component.ts +962 -0
- package/src/lib/directives/zen-cell-template.directive.ts +10 -0
- package/src/lib/directives/zen-editor-template.directive.ts +10 -0
- package/src/lib/directives/zen-grid-value-accessor.directive.ts +41 -0
- package/src/lib/directives/zen-header-template.directive.ts +10 -0
- package/src/lib/plugins/angular-plugin-wrapper.ts +40 -0
- package/src/lib/services/template-bridge.service.ts +341 -0
- package/src/lib/services/zen-grid-config.token.ts +11 -0
- package/src/lib/types.ts +107 -0
- package/src/lib/utils/event-map.ts +98 -0
- package/src/lib/utils/signal-bridge.ts +17 -0
- package/src/lib/utils/ssr-guard.ts +7 -0
- package/src/public-api.ts +383 -0
- package/tsconfig.lib.json +31 -0
- package/tsconfig.lib.prod.json +9 -0
- package/fesm2022/zengrid-angular.mjs +0 -1441
- package/fesm2022/zengrid-angular.mjs.map +0 -1
- package/types/zengrid-angular.d.ts +0 -654
package/ng-package.json
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zengrid/angular",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "Angular wrapper for ZenGrid high-performance data grid",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -24,26 +24,15 @@
|
|
|
24
24
|
"@angular/core": ">=18.0.0",
|
|
25
25
|
"@angular/common": ">=18.0.0",
|
|
26
26
|
"@angular/forms": ">=18.0.0",
|
|
27
|
-
"@zengrid/core": ">=1.2.
|
|
27
|
+
"@zengrid/core": ">=1.2.2"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@zengrid/core": "
|
|
31
|
-
"@zengrid/shared": "
|
|
30
|
+
"@zengrid/core": "1.2.2",
|
|
31
|
+
"@zengrid/shared": "1.2.2",
|
|
32
32
|
"tslib": "^2.3.0"
|
|
33
33
|
},
|
|
34
34
|
"sideEffects": false,
|
|
35
35
|
"publishConfig": {
|
|
36
36
|
"access": "public"
|
|
37
|
-
},
|
|
38
|
-
"module": "fesm2022/zengrid-angular.mjs",
|
|
39
|
-
"typings": "types/zengrid-angular.d.ts",
|
|
40
|
-
"exports": {
|
|
41
|
-
"./package.json": {
|
|
42
|
-
"default": "./package.json"
|
|
43
|
-
},
|
|
44
|
-
".": {
|
|
45
|
-
"types": "./types/zengrid-angular.d.ts",
|
|
46
|
-
"default": "./fesm2022/zengrid-angular.mjs"
|
|
47
|
-
}
|
|
48
37
|
}
|
|
49
|
-
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Component,
|
|
3
|
+
input,
|
|
4
|
+
contentChild,
|
|
5
|
+
} from '@angular/core';
|
|
6
|
+
import type { ColumnDef, CellOverflowConfig } from '@zengrid/core';
|
|
7
|
+
import { ZenCellTemplateDirective } from '../directives/zen-cell-template.directive';
|
|
8
|
+
import { ZenEditorTemplateDirective } from '../directives/zen-editor-template.directive';
|
|
9
|
+
import { ZenHeaderTemplateDirective } from '../directives/zen-header-template.directive';
|
|
10
|
+
import type { TemplateBridgeService } from '../services/template-bridge.service';
|
|
11
|
+
import type { RendererInput, EditorInput } from '../types';
|
|
12
|
+
|
|
13
|
+
@Component({
|
|
14
|
+
selector: 'zen-column',
|
|
15
|
+
standalone: true,
|
|
16
|
+
template: `<ng-content></ng-content>`,
|
|
17
|
+
})
|
|
18
|
+
export class ZenColumnComponent {
|
|
19
|
+
readonly field = input.required<string>();
|
|
20
|
+
readonly header = input.required<string>();
|
|
21
|
+
readonly width = input<number | undefined>(undefined);
|
|
22
|
+
readonly renderer = input<RendererInput | undefined>(undefined);
|
|
23
|
+
readonly sortable = input<boolean | undefined>(undefined);
|
|
24
|
+
readonly editable = input<boolean | undefined>(undefined);
|
|
25
|
+
readonly editor = input<EditorInput | undefined>(undefined);
|
|
26
|
+
readonly editorOptions = input<any>(undefined);
|
|
27
|
+
readonly filterable = input<boolean | undefined>(undefined);
|
|
28
|
+
readonly resizable = input<boolean | undefined>(undefined);
|
|
29
|
+
readonly reorderable = input<boolean | undefined>(undefined);
|
|
30
|
+
readonly minWidth = input<number | undefined>(undefined);
|
|
31
|
+
readonly maxWidth = input<number | undefined>(undefined);
|
|
32
|
+
readonly overflow = input<CellOverflowConfig | undefined>(undefined);
|
|
33
|
+
readonly autoHeight = input<boolean | undefined>(undefined);
|
|
34
|
+
readonly id = input<string | undefined>(undefined);
|
|
35
|
+
|
|
36
|
+
readonly cellTemplate = contentChild(ZenCellTemplateDirective);
|
|
37
|
+
readonly editorTemplate = contentChild(ZenEditorTemplateDirective);
|
|
38
|
+
readonly headerTemplate = contentChild(ZenHeaderTemplateDirective);
|
|
39
|
+
|
|
40
|
+
toColumnDef(bridge: TemplateBridgeService): ColumnDef {
|
|
41
|
+
const def: ColumnDef = {
|
|
42
|
+
field: this.field(),
|
|
43
|
+
header: this.header(),
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const colId = this.id();
|
|
47
|
+
const w = this.width();
|
|
48
|
+
const sort = this.sortable();
|
|
49
|
+
const edit = this.editable();
|
|
50
|
+
const edOpts = this.editorOptions();
|
|
51
|
+
const filter = this.filterable();
|
|
52
|
+
const resize = this.resizable();
|
|
53
|
+
const reorder = this.reorderable();
|
|
54
|
+
const minW = this.minWidth();
|
|
55
|
+
const maxW = this.maxWidth();
|
|
56
|
+
const ov = this.overflow();
|
|
57
|
+
const autoH = this.autoHeight();
|
|
58
|
+
|
|
59
|
+
if (colId !== undefined) def.id = colId;
|
|
60
|
+
if (w !== undefined) def.width = w;
|
|
61
|
+
if (sort !== undefined) def.sortable = sort;
|
|
62
|
+
if (edit !== undefined) def.editable = edit;
|
|
63
|
+
if (edOpts !== undefined) def.editorOptions = edOpts;
|
|
64
|
+
if (filter !== undefined) def.filterable = filter;
|
|
65
|
+
if (resize !== undefined) def.resizable = resize;
|
|
66
|
+
if (reorder !== undefined) def.reorderable = reorder;
|
|
67
|
+
if (minW !== undefined) def.minWidth = minW;
|
|
68
|
+
if (maxW !== undefined) def.maxWidth = maxW;
|
|
69
|
+
if (ov !== undefined) def.overflow = ov;
|
|
70
|
+
if (autoH !== undefined) def.autoHeight = autoH;
|
|
71
|
+
|
|
72
|
+
// Resolve renderer: template > component/renderer input > none
|
|
73
|
+
const cellTpl = this.cellTemplate();
|
|
74
|
+
const rendererInput = this.renderer();
|
|
75
|
+
if (cellTpl) {
|
|
76
|
+
def.renderer = bridge.createTemplateRenderer(cellTpl.templateRef);
|
|
77
|
+
} else if (rendererInput !== undefined) {
|
|
78
|
+
if (typeof rendererInput === 'string') {
|
|
79
|
+
def.renderer = rendererInput;
|
|
80
|
+
} else if ('render' in rendererInput && typeof rendererInput.render === 'function') {
|
|
81
|
+
def.renderer = rendererInput as any;
|
|
82
|
+
} else {
|
|
83
|
+
// It's a Component type
|
|
84
|
+
def.renderer = bridge.createComponentRenderer(rendererInput as any);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Resolve editor: template > component/editor input > none
|
|
89
|
+
const edTpl = this.editorTemplate();
|
|
90
|
+
const editorInput = this.editor();
|
|
91
|
+
if (edTpl) {
|
|
92
|
+
def.editor = bridge.createTemplateEditor(edTpl.templateRef);
|
|
93
|
+
} else if (editorInput !== undefined) {
|
|
94
|
+
if (typeof editorInput === 'string') {
|
|
95
|
+
def.editor = editorInput;
|
|
96
|
+
} else if ('init' in editorInput && typeof editorInput.init === 'function') {
|
|
97
|
+
def.editor = editorInput as any;
|
|
98
|
+
} else {
|
|
99
|
+
def.editor = bridge.createComponentEditor(editorInput as any);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return def;
|
|
104
|
+
}
|
|
105
|
+
}
|