@guiexpert/angular-table 16.0.9 → 16.0.11
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 +3 -3
- package/esm2022/guiexpert-angular-table.mjs +2 -2
- package/esm2022/lib/component-renderer.if.mjs +2 -0
- package/esm2022/lib/service/dom-service.mjs +56 -0
- package/esm2022/lib/service/render-wrapper-factory.mjs +22 -0
- package/esm2022/lib/service/renderer-wrapper.mjs +44 -0
- package/esm2022/lib/table.component.mjs +101 -0
- package/esm2022/public-api.mjs +9 -0
- package/fesm2022/guiexpert-angular-table.mjs +38 -167
- package/fesm2022/guiexpert-angular-table.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/table.component.d.ts +39 -0
- package/package.json +8 -5
- package/public-api.d.ts +5 -0
- package/esm2022/index.mjs +0 -6
- package/esm2022/lib/angular-table/component-renderer.if.mjs +0 -2
- package/esm2022/lib/angular-table/service/dom-service.mjs +0 -57
- package/esm2022/lib/angular-table/service/render-wrapper-factory.mjs +0 -25
- package/esm2022/lib/angular-table/service/renderer-wrapper.mjs +0 -49
- package/esm2022/lib/angular-table/table.component.mjs +0 -225
- package/lib/angular-table/table.component.d.ts +0 -157
- /package/lib/{angular-table/component-renderer.if.d.ts → component-renderer.if.d.ts} +0 -0
- /package/lib/{angular-table/service → service}/dom-service.d.ts +0 -0
- /package/lib/{angular-table/service → service}/render-wrapper-factory.d.ts +0 -0
- /package/lib/{angular-table/service → service}/renderer-wrapper.d.ts +0 -0
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ This is the UI-agnostic table component for your next web app. 😊
|
|
|
17
17
|
| 16.x.x | ^16.0.7 |
|
|
18
18
|
| 15.x.x | ^15.0.2 |
|
|
19
19
|
| 14.x.x | ^14.0.3 |
|
|
20
|
-
|
|
20
|
+
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
### Features
|
|
@@ -80,7 +80,7 @@ Add guiexpert-table component to a template:
|
|
|
80
80
|
class="table-div"
|
|
81
81
|
></guiexpert-table>
|
|
82
82
|
```
|
|
83
|
-
|
|
83
|
+
|
|
84
84
|
|
|
85
85
|
Add two properties (tableModel and tableOptions) to the component:
|
|
86
86
|
|
|
@@ -113,5 +113,5 @@ tableOptions = {
|
|
|
113
113
|
|
|
114
114
|
```
|
|
115
115
|
|
|
116
|
-
There are numerous possibilities to create table models.
|
|
116
|
+
There are numerous possibilities to create table models.
|
|
117
117
|
Please refer to the [Documentation](https://gui.expert/doc) for further information or the [Demo](https://gui.expert/demos) section for examples.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generated bundle index. Do not edit.
|
|
3
3
|
*/
|
|
4
|
-
export * from './
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZXhwZXJ0LWFuZ3VsYXItdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRhYmxlL3NyYy9ndWlleHBlcnQtYW5ndWxhci10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LXJlbmRlcmVyLmlmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10YWJsZS9zcmMvbGliL2NvbXBvbmVudC1yZW5kZXJlci5pZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcmVhSWRlbnQsIEFyZWFNb2RlbElmLCBSZW5kZXJlckNsZWFudXBGblR5cGV9IGZyb20gXCJAZ3VpZXhwZXJ0L3RhYmxlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50UmVuZGVyZXJJZjxUPiB7XG5cbiAgc2V0RGF0YShcbiAgICByb3dJbmRleDogbnVtYmVyLFxuICAgIGNvbHVtbkluZGV4OiBudW1iZXIsXG4gICAgYXJlYUlkZW50OiBBcmVhSWRlbnQsXG4gICAgYXJlYU1vZGVsOiBBcmVhTW9kZWxJZixcbiAgICBjZWxsVmFsdWU6IGFueSk6IFJlbmRlcmVyQ2xlYW51cEZuVHlwZSB8IHVuZGVmaW5lZDtcblxufVxuIl19
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class DomService {
|
|
4
|
+
constructor(renderer) {
|
|
5
|
+
this.renderer = renderer;
|
|
6
|
+
}
|
|
7
|
+
setStyle(el, style, value) {
|
|
8
|
+
this.renderer.setStyle(el, style, value);
|
|
9
|
+
return el;
|
|
10
|
+
}
|
|
11
|
+
;
|
|
12
|
+
appendText(parent, text) {
|
|
13
|
+
const div = this.renderer.createText(text);
|
|
14
|
+
this.renderer.appendChild(parent, div);
|
|
15
|
+
return div;
|
|
16
|
+
}
|
|
17
|
+
addClass(div, clazz) {
|
|
18
|
+
if (clazz.includes(' ')) {
|
|
19
|
+
clazz.split(' ').forEach(c => this.renderer.addClass(div, c));
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
this.renderer.addClass(div, clazz);
|
|
23
|
+
}
|
|
24
|
+
return div;
|
|
25
|
+
}
|
|
26
|
+
removeClass(div, clazz) {
|
|
27
|
+
if (clazz.includes(" ")) {
|
|
28
|
+
clazz.split(" ").forEach(c => div.classList.remove(c));
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
div.classList.remove(clazz);
|
|
32
|
+
}
|
|
33
|
+
return div;
|
|
34
|
+
}
|
|
35
|
+
appendChild(parent, child) {
|
|
36
|
+
this.renderer.appendChild(parent, child);
|
|
37
|
+
}
|
|
38
|
+
createElement(name) {
|
|
39
|
+
return this.renderer.createElement(name);
|
|
40
|
+
}
|
|
41
|
+
createText(text) {
|
|
42
|
+
return this.renderer.createText(text);
|
|
43
|
+
}
|
|
44
|
+
setAttribute(ele, key, value) {
|
|
45
|
+
this.renderer.setAttribute(ele, key, value);
|
|
46
|
+
}
|
|
47
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DomService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
48
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DomService, providedIn: "root" }); }
|
|
49
|
+
}
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DomService, decorators: [{
|
|
51
|
+
type: Injectable,
|
|
52
|
+
args: [{
|
|
53
|
+
providedIn: "root"
|
|
54
|
+
}]
|
|
55
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }]; } });
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRhYmxlL3NyYy9saWIvc2VydmljZS9kb20tc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDOztBQU9wRCxNQUFNLE9BQU8sVUFBVTtJQUVyQixZQUNXLFFBQW1CO1FBQW5CLGFBQVEsR0FBUixRQUFRLENBQVc7SUFFOUIsQ0FBQztJQUVELFFBQVEsQ0FBQyxFQUFPLEVBQUUsS0FBYSxFQUFFLEtBQVU7UUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6QyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFBQSxDQUFDO0lBR0YsVUFBVSxDQUFDLE1BQXNCLEVBQUUsSUFBWTtRQUM3QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdkMsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBR0QsUUFBUSxDQUFDLEdBQW1CLEVBQUUsS0FBYTtRQUN6QyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdkIsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUM5RDthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3BDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQW1CLEVBQUUsS0FBYTtRQUM1QyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdkIsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hEO2FBQU07WUFDTCxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFtQixFQUFFLEtBQWtCO1FBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsYUFBYSxDQUFJLElBQVk7UUFDM0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQWdCLEVBQUUsR0FBVyxFQUFFLEtBQWE7UUFDdkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDOytHQXBEVSxVQUFVO21IQUFWLFVBQVUsY0FGVCxNQUFNOzs0RkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgUmVuZGVyZXIyfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtEb21TZXJ2aWNlSWZ9IGZyb20gXCJAZ3VpZXhwZXJ0L3RhYmxlXCI7XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIlxufSlcbmV4cG9ydCBjbGFzcyBEb21TZXJ2aWNlIGltcGxlbWVudHMgRG9tU2VydmljZUlmIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICApIHtcbiAgfVxuXG4gIHNldFN0eWxlKGVsOiBhbnksIHN0eWxlOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBhbnkge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWwsIHN0eWxlLCB2YWx1ZSk7XG4gICAgcmV0dXJuIGVsO1xuICB9O1xuXG5cbiAgYXBwZW5kVGV4dChwYXJlbnQ6IEhUTUxEaXZFbGVtZW50LCB0ZXh0OiBzdHJpbmcpOiBIVE1MRGl2RWxlbWVudCB7XG4gICAgY29uc3QgZGl2ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVUZXh0KHRleHQpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCBkaXYpO1xuICAgIHJldHVybiBkaXY7XG4gIH1cblxuXG4gIGFkZENsYXNzKGRpdjogSFRNTERpdkVsZW1lbnQsIGNsYXp6OiBzdHJpbmcpIHtcbiAgICBpZiAoY2xhenouaW5jbHVkZXMoJyAnKSkge1xuICAgICAgY2xhenouc3BsaXQoJyAnKS5mb3JFYWNoKGMgPT4gdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhkaXYsIGMpKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGRpdiwgY2xhenopO1xuICAgIH1cbiAgICByZXR1cm4gZGl2O1xuICB9XG5cbiAgcmVtb3ZlQ2xhc3MoZGl2OiBIVE1MRGl2RWxlbWVudCwgY2xheno6IHN0cmluZykge1xuICAgIGlmIChjbGF6ei5pbmNsdWRlcyhcIiBcIikpIHtcbiAgICAgIGNsYXp6LnNwbGl0KFwiIFwiKS5mb3JFYWNoKGMgPT4gZGl2LmNsYXNzTGlzdC5yZW1vdmUoYykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXYuY2xhc3NMaXN0LnJlbW92ZShjbGF6eik7XG4gICAgfVxuICAgIHJldHVybiBkaXY7XG4gIH1cblxuICBhcHBlbmRDaGlsZChwYXJlbnQ6IEhUTUxFbGVtZW50LCBjaGlsZDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHBhcmVudCwgY2hpbGQpO1xuICB9XG5cbiAgY3JlYXRlRWxlbWVudDxUPihuYW1lOiBzdHJpbmcpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KG5hbWUpO1xuICB9XG5cbiAgY3JlYXRlVGV4dCh0ZXh0OiBzdHJpbmcpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dCh0ZXh0KTtcbiAgfVxuXG4gIHNldEF0dHJpYnV0ZShlbGU6IEhUTUxFbGVtZW50LCBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZSwga2V5LCB2YWx1ZSk7XG4gIH1cblxuXG59XG4iXX0=
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { RendererWrapper } from "./renderer-wrapper";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class RenderWrapperFactory {
|
|
5
|
+
constructor(appRef, injector, zone) {
|
|
6
|
+
this.appRef = appRef;
|
|
7
|
+
this.injector = injector;
|
|
8
|
+
this.zone = zone;
|
|
9
|
+
}
|
|
10
|
+
create(componentType, cdr) {
|
|
11
|
+
return new RendererWrapper(componentType, this.appRef, this.injector, cdr, this.zone);
|
|
12
|
+
}
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RenderWrapperFactory, deps: [{ token: i0.ApplicationRef }, { token: i0.EnvironmentInjector }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
14
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RenderWrapperFactory, providedIn: "root" }); }
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RenderWrapperFactory, decorators: [{
|
|
17
|
+
type: Injectable,
|
|
18
|
+
args: [{
|
|
19
|
+
providedIn: "root"
|
|
20
|
+
}]
|
|
21
|
+
}], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.EnvironmentInjector }, { type: i0.NgZone }]; } });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLXdyYXBwZXItZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGFibGUvc3JjL2xpYi9zZXJ2aWNlL3JlbmRlci13cmFwcGVyLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF5RCxVQUFVLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFFL0csT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDOztBQUtuRCxNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLFlBQ21CLE1BQXNCLEVBQ3RCLFFBQTZCLEVBQzdCLElBQVk7UUFGWixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQUM3QixTQUFJLEdBQUosSUFBSSxDQUFRO0lBRS9CLENBQUM7SUFFRCxNQUFNLENBQ0osYUFBMkMsRUFDM0MsR0FBc0I7UUFFdEIsT0FBTyxJQUFJLGVBQWUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEYsQ0FBQzsrR0FkVSxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQUZuQixNQUFNOzs0RkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcHBsaWNhdGlvblJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVudmlyb25tZW50SW5qZWN0b3IsIEluamVjdGFibGUsIE5nWm9uZSwgVHlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7Q29tcG9uZW50UmVuZGVyZXJJZn0gZnJvbSBcIi4uL2NvbXBvbmVudC1yZW5kZXJlci5pZlwiO1xuaW1wb3J0IHtSZW5kZXJlcldyYXBwZXJ9IGZyb20gXCIuL3JlbmRlcmVyLXdyYXBwZXJcIjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIlxufSlcbmV4cG9ydCBjbGFzcyBSZW5kZXJXcmFwcGVyRmFjdG9yeSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZWFkb25seSB6b25lOiBOZ1pvbmVcbiAgKSB7XG4gIH1cblxuICBjcmVhdGU8VD4oXG4gICAgY29tcG9uZW50VHlwZTogVHlwZTxDb21wb25lbnRSZW5kZXJlcklmPFQ+PixcbiAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHJldHVybiBuZXcgUmVuZGVyZXJXcmFwcGVyKGNvbXBvbmVudFR5cGUsIHRoaXMuYXBwUmVmLCB0aGlzLmluamVjdG9yLCBjZHIsIHRoaXMuem9uZSk7XG4gIH1cblxufVxuIl19
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { createComponent, EventEmitter } from "@angular/core";
|
|
2
|
+
import { Subject, takeUntil } from "rxjs";
|
|
3
|
+
export class RendererWrapper {
|
|
4
|
+
constructor(componentType, appRef, injector, cdr, zone) {
|
|
5
|
+
this.componentType = componentType;
|
|
6
|
+
this.appRef = appRef;
|
|
7
|
+
this.injector = injector;
|
|
8
|
+
this.cdr = cdr;
|
|
9
|
+
this.zone = zone;
|
|
10
|
+
this.event$ = new EventEmitter();
|
|
11
|
+
this.closed$ = new Subject();
|
|
12
|
+
}
|
|
13
|
+
render(cellDiv, rowIndex, columnIndex, areaIdent, areaModel, cellValue, domService) {
|
|
14
|
+
const componentRef = createComponent(this.componentType, {
|
|
15
|
+
environmentInjector: this.injector
|
|
16
|
+
});
|
|
17
|
+
componentRef.instance.setData(rowIndex, columnIndex, areaIdent, areaModel, cellValue);
|
|
18
|
+
const emmiterNames = Object.keys(componentRef.instance)
|
|
19
|
+
.filter(key => {
|
|
20
|
+
// @ts-ignore
|
|
21
|
+
const t = componentRef.instance[key];
|
|
22
|
+
return t['subscribe'];
|
|
23
|
+
});
|
|
24
|
+
// @ts-ignore
|
|
25
|
+
const observables = (emmiterNames.map(key => componentRef.instance[key]));
|
|
26
|
+
observables.forEach(obs => obs
|
|
27
|
+
.pipe(takeUntil(this.closed$))
|
|
28
|
+
.subscribe((event) => {
|
|
29
|
+
console.info('RendererWrapper event >', event); // TODO hmm?
|
|
30
|
+
this.event$.next(event);
|
|
31
|
+
}));
|
|
32
|
+
cellDiv.appendChild(componentRef.location.nativeElement);
|
|
33
|
+
this.appRef.attachView(componentRef.hostView);
|
|
34
|
+
this.zone.run(() => {
|
|
35
|
+
this.cdr.detectChanges();
|
|
36
|
+
});
|
|
37
|
+
return () => {
|
|
38
|
+
// clean up:
|
|
39
|
+
this.appRef.detachView(componentRef.hostView);
|
|
40
|
+
this.closed$.next(Date.now());
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXItd3JhcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGFibGUvc3JjL2xpYi9zZXJ2aWNlL3JlbmRlcmVyLXdyYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUdMLGVBQWUsRUFFZixZQUFZLEVBR2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFJeEMsTUFBTSxPQUFPLGVBQWU7SUFNMUIsWUFDVSxhQUEyQyxFQUMzQyxNQUFzQixFQUN0QixRQUE2QixFQUM3QixHQUFzQixFQUNiLElBQVk7UUFKckIsa0JBQWEsR0FBYixhQUFhLENBQThCO1FBQzNDLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQXFCO1FBQzdCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ2IsU0FBSSxHQUFKLElBQUksQ0FBUTtRQVJmLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2hDLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBU2pELENBQUM7SUFFRCxNQUFNLENBQ0osT0FBdUIsRUFDdkIsUUFBZ0IsRUFDaEIsV0FBbUIsRUFDbkIsU0FBb0IsRUFDcEIsU0FBc0IsRUFDdEIsU0FBYyxFQUNkLFVBQXdCO1FBRXhCLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZELG1CQUFtQixFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ25DLENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUMzQixRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxDQUFDLENBQUM7UUFHYixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7YUFDcEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1osYUFBYTtZQUNiLE1BQU0sQ0FBQyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFTCxhQUFhO1FBQ2IsTUFBTSxXQUFXLEdBQWlCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFnQixDQUFDLENBQUMsQ0FBQztRQUN4RyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRzthQUMzQixJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FDeEI7YUFDQSxTQUFTLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWTtZQUM1RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXpELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sR0FBRyxFQUFFO1lBQ1YsWUFBWTtZQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FyZWFJZGVudCwgQXJlYU1vZGVsSWYsIENlbGxSZW5kZXJlcklmLCBEb21TZXJ2aWNlSWYsIFJlbmRlcmVyQ2xlYW51cEZuVHlwZX0gZnJvbSBcIkBndWlleHBlcnQvdGFibGVcIjtcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uUmVmLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgY3JlYXRlQ29tcG9uZW50LFxuICBFbnZpcm9ubWVudEluamVjdG9yLFxuICBFdmVudEVtaXR0ZXIsXG4gIE5nWm9uZSxcbiAgVHlwZVxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtDb21wb25lbnRSZW5kZXJlcklmfSBmcm9tIFwiLi4vY29tcG9uZW50LXJlbmRlcmVyLmlmXCI7XG5pbXBvcnQge1N1YmplY3QsIHRha2VVbnRpbH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSBcInJ4anMvaW50ZXJuYWwvT2JzZXJ2YWJsZVwiO1xuXG5cbmV4cG9ydCBjbGFzcyBSZW5kZXJlcldyYXBwZXI8VCBleHRlbmRzIENvbXBvbmVudFJlbmRlcmVySWY8VD4+XG4gIGltcGxlbWVudHMgQ2VsbFJlbmRlcmVySWYge1xuXG4gIHB1YmxpYyByZWFkb25seSBldmVudCQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjbG9zZWQkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29tcG9uZW50VHlwZTogVHlwZTxDb21wb25lbnRSZW5kZXJlcklmPFQ+PixcbiAgICBwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSB6b25lOiBOZ1pvbmVcbiAgKSB7XG4gIH1cblxuICByZW5kZXIoXG4gICAgY2VsbERpdjogSFRNTERpdkVsZW1lbnQsXG4gICAgcm93SW5kZXg6IG51bWJlcixcbiAgICBjb2x1bW5JbmRleDogbnVtYmVyLFxuICAgIGFyZWFJZGVudDogQXJlYUlkZW50LFxuICAgIGFyZWFNb2RlbDogQXJlYU1vZGVsSWYsXG4gICAgY2VsbFZhbHVlOiBhbnksXG4gICAgZG9tU2VydmljZTogRG9tU2VydmljZUlmKTogUmVuZGVyZXJDbGVhbnVwRm5UeXBlIHwgdW5kZWZpbmVkIHtcblxuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGNyZWF0ZUNvbXBvbmVudCh0aGlzLmNvbXBvbmVudFR5cGUsIHtcbiAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuaW5qZWN0b3JcbiAgICB9KTtcbiAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2V0RGF0YShcbiAgICAgIHJvd0luZGV4LFxuICAgICAgY29sdW1uSW5kZXgsXG4gICAgICBhcmVhSWRlbnQsXG4gICAgICBhcmVhTW9kZWwsXG4gICAgICBjZWxsVmFsdWUpO1xuXG5cbiAgICBjb25zdCBlbW1pdGVyTmFtZXMgPSBPYmplY3Qua2V5cyhjb21wb25lbnRSZWYuaW5zdGFuY2UpXG4gICAgICAuZmlsdGVyKGtleSA9PiB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgdCA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZVtrZXldO1xuICAgICAgICByZXR1cm4gdFsnc3Vic2NyaWJlJ11cbiAgICAgIH0pO1xuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IG9ic2VydmFibGVzOiBPYnNlcnZhYmxlW10gPSAoZW1taXRlck5hbWVzLm1hcChrZXkgPT4gKGNvbXBvbmVudFJlZi5pbnN0YW5jZVtrZXldIGFzIE9ic2VydmFibGUpKSk7XG4gICAgb2JzZXJ2YWJsZXMuZm9yRWFjaChvYnMgPT4gb2JzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY2xvc2VkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgY29uc29sZS5pbmZvKCdSZW5kZXJlcldyYXBwZXIgZXZlbnQgPicsIGV2ZW50KTsgLy8gVE9ETyBobW0/XG4gICAgICAgIHRoaXMuZXZlbnQkLm5leHQoZXZlbnQpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgY2VsbERpdi5hcHBlbmRDaGlsZChjb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG5cbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG5cbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAvLyBjbGVhbiB1cDpcbiAgICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICAgIHRoaXMuY2xvc2VkJC5uZXh0KERhdGUubm93KCkpO1xuICAgIH07XG4gIH1cblxuXG59XG4iXX0=
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, Output, ViewEncapsulation } from "@angular/core";
|
|
2
|
+
import { CommonModule } from "@angular/common";
|
|
3
|
+
import { debounceTime, Subject, takeWhile } from "rxjs";
|
|
4
|
+
import { TableOptions, TableScope } from "@guiexpert/table";
|
|
5
|
+
import { DomService } from "./service/dom-service";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "./service/dom-service";
|
|
8
|
+
export class TableComponent {
|
|
9
|
+
constructor(renderer, elementRef, zone, domService) {
|
|
10
|
+
this.renderer = renderer;
|
|
11
|
+
this.elementRef = elementRef;
|
|
12
|
+
this.zone = zone;
|
|
13
|
+
this.domService = domService;
|
|
14
|
+
this.tableReady = new Subject();
|
|
15
|
+
this.mouseMoved = new Subject();
|
|
16
|
+
this.mouseDragging = new Subject();
|
|
17
|
+
this.mouseDraggingEnded = new Subject();
|
|
18
|
+
this.contextmenu = new Subject();
|
|
19
|
+
this.mouseClicked = new Subject();
|
|
20
|
+
this.modelChanged = new Subject();
|
|
21
|
+
this.checkboxChanged = new Subject();
|
|
22
|
+
this.tableOptions = new TableOptions();
|
|
23
|
+
this.debounceMouseClickDelay = 150;
|
|
24
|
+
this.debounceMouseClick = new Subject();
|
|
25
|
+
this.alive = true;
|
|
26
|
+
}
|
|
27
|
+
onContextmenu(evt) {
|
|
28
|
+
this.contextmenu.next(evt);
|
|
29
|
+
}
|
|
30
|
+
onMouseMoved(evt) {
|
|
31
|
+
this.mouseMoved.next(evt);
|
|
32
|
+
}
|
|
33
|
+
// will be called by table-scope:
|
|
34
|
+
onMouseClicked(evt) {
|
|
35
|
+
this.debounceMouseClick.next(evt);
|
|
36
|
+
}
|
|
37
|
+
onCheckboxChanged(arr) {
|
|
38
|
+
this.checkboxChanged.next(arr);
|
|
39
|
+
}
|
|
40
|
+
onModelChanged(evt) {
|
|
41
|
+
this.modelChanged.next(evt);
|
|
42
|
+
}
|
|
43
|
+
ngOnInit() {
|
|
44
|
+
this.initModel();
|
|
45
|
+
this.debounceMouseClick
|
|
46
|
+
.pipe(debounceTime(this.debounceMouseClickDelay), takeWhile(() => this.alive))
|
|
47
|
+
.subscribe((value) => {
|
|
48
|
+
this.zone.run(() => {
|
|
49
|
+
this.mouseClicked.next(value);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
ngOnDestroy() {
|
|
54
|
+
this.alive = false;
|
|
55
|
+
}
|
|
56
|
+
onMouseDragging(evt) {
|
|
57
|
+
this.mouseDragging.next(evt);
|
|
58
|
+
}
|
|
59
|
+
onMouseDraggingEnd(evt) {
|
|
60
|
+
this.mouseDraggingEnded.next(evt);
|
|
61
|
+
}
|
|
62
|
+
initModel() {
|
|
63
|
+
this.zone.runOutsideAngular(this.init.bind(this));
|
|
64
|
+
}
|
|
65
|
+
init() {
|
|
66
|
+
if (this.tableModel) {
|
|
67
|
+
this.tableScope = new TableScope(this.elementRef.nativeElement, this.tableModel, this.domService, this.tableOptions, this);
|
|
68
|
+
this.tableScope.firstInit();
|
|
69
|
+
this.tableReady.next(this.tableScope.getApi());
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.DomService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
73
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableComponent, isStandalone: true, selector: "guiexpert-table", inputs: { tableModel: "tableModel", tableOptions: "tableOptions", debounceMouseClickDelay: "debounceMouseClickDelay" }, outputs: { tableReady: "tableReady", mouseMoved: "mouseMoved", mouseDragging: "mouseDragging", mouseDraggingEnded: "mouseDraggingEnded", contextmenu: "contextmenu", mouseClicked: "mouseClicked", modelChanged: "modelChanged", checkboxChanged: "checkboxChanged" }, providers: [DomService], ngImport: i0, template: "", isInline: true, styles: ["@import\"node_modules/@guiexpert/table/css/main.css\";\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
74
|
+
}
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, decorators: [{
|
|
76
|
+
type: Component,
|
|
77
|
+
args: [{ selector: "guiexpert-table", standalone: true, imports: [CommonModule], providers: [DomService], template: "", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@import\"node_modules/@guiexpert/table/css/main.css\";\n"] }]
|
|
78
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.DomService }]; }, propDecorators: { tableReady: [{
|
|
79
|
+
type: Output
|
|
80
|
+
}], mouseMoved: [{
|
|
81
|
+
type: Output
|
|
82
|
+
}], mouseDragging: [{
|
|
83
|
+
type: Output
|
|
84
|
+
}], mouseDraggingEnded: [{
|
|
85
|
+
type: Output
|
|
86
|
+
}], contextmenu: [{
|
|
87
|
+
type: Output
|
|
88
|
+
}], mouseClicked: [{
|
|
89
|
+
type: Output
|
|
90
|
+
}], modelChanged: [{
|
|
91
|
+
type: Output
|
|
92
|
+
}], checkboxChanged: [{
|
|
93
|
+
type: Output
|
|
94
|
+
}], tableModel: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}], tableOptions: [{
|
|
97
|
+
type: Input
|
|
98
|
+
}], debounceMouseClickDelay: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}] } });
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10YWJsZS9zcmMvbGliL3RhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxLQUFLLEVBSUwsTUFBTSxFQUVOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hELE9BQU8sRUFNTCxZQUFZLEVBRVosVUFBVSxFQUNYLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFlbkQsTUFBTSxPQUFPLGNBQWM7SUF5Q3pCLFlBQ21CLFFBQW1CLEVBQ25CLFVBQXNCLEVBQ3RCLElBQVksRUFDWixVQUFzQjtRQUh0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGVBQVUsR0FBVixVQUFVLENBQVk7UUExQ3pDLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBWSxDQUFDO1FBR3JDLGVBQVUsR0FBMEIsSUFBSSxPQUFPLEVBQWdCLENBQUM7UUFHaEUsa0JBQWEsR0FBMEIsSUFBSSxPQUFPLEVBQWdCLENBQUM7UUFHbkUsdUJBQWtCLEdBQTBCLElBQUksT0FBTyxFQUFnQixDQUFDO1FBR3hFLGdCQUFXLEdBQTBCLElBQUksT0FBTyxFQUFnQixDQUFDO1FBR2pFLGlCQUFZLEdBQTBCLElBQUksT0FBTyxFQUFnQixDQUFDO1FBR2xFLGlCQUFZLEdBQWdDLElBQUksT0FBTyxFQUFzQixDQUFDO1FBRzlFLG9C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cEIsdUJBQXVCLENBQUMsTUFBTTt1S0FLL0MsVUFBVTtzQkFEVCxNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxhQUFhO3NCQURaLE1BQU07Z0JBSVAsa0JBQWtCO3NCQURqQixNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxZQUFZO3NCQURYLE1BQU07Z0JBSVAsWUFBWTtzQkFEWCxNQUFNO2dCQUlQLGVBQWU7c0JBRGQsTUFBTTtnQkFJUCxVQUFVO3NCQURULEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLHVCQUF1QjtzQkFEdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgU3ViamVjdCwgdGFrZVdoaWxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7XG4gIEV2ZW50TGlzdGVuZXJJZixcbiAgR2VNb2RlbENoYW5nZUV2ZW50LFxuICBHZU1vdXNlRXZlbnQsXG4gIFRhYmxlQXBpLFxuICBUYWJsZU1vZGVsSWYsXG4gIFRhYmxlT3B0aW9ucyxcbiAgVGFibGVPcHRpb25zSWYsXG4gIFRhYmxlU2NvcGVcbn0gZnJvbSBcIkBndWlleHBlcnQvdGFibGVcIjtcbmltcG9ydCB7IERvbVNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlL2RvbS1zZXJ2aWNlXCI7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImd1aWV4cGVydC10YWJsZVwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbRG9tU2VydmljZV0sXG4gIHRlbXBsYXRlOiBcIlwiLFxuICBzdHlsZVVybHM6IFtcbiAgICBcIi4vdGFibGUuY29tcG9uZW50LmNzc1wiXG4gIF0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEV2ZW50TGlzdGVuZXJJZiB7XG5cbiAgQE91dHB1dCgpXG4gIHRhYmxlUmVhZHkgPSBuZXcgU3ViamVjdDxUYWJsZUFwaT4oKTtcblxuICBAT3V0cHV0KClcbiAgbW91c2VNb3ZlZDogU3ViamVjdDxHZU1vdXNlRXZlbnQ+ID0gbmV3IFN1YmplY3Q8R2VNb3VzZUV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBtb3VzZURyYWdnaW5nOiBTdWJqZWN0PEdlTW91c2VFdmVudD4gPSBuZXcgU3ViamVjdDxHZU1vdXNlRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG1vdXNlRHJhZ2dpbmdFbmRlZDogU3ViamVjdDxHZU1vdXNlRXZlbnQ+ID0gbmV3IFN1YmplY3Q8R2VNb3VzZUV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBjb250ZXh0bWVudTogU3ViamVjdDxHZU1vdXNlRXZlbnQ+ID0gbmV3IFN1YmplY3Q8R2VNb3VzZUV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBtb3VzZUNsaWNrZWQ6IFN1YmplY3Q8R2VNb3VzZUV2ZW50PiA9IG5ldyBTdWJqZWN0PEdlTW91c2VFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgbW9kZWxDaGFuZ2VkOiBTdWJqZWN0PEdlTW9kZWxDaGFuZ2VFdmVudD4gPSBuZXcgU3ViamVjdDxHZU1vZGVsQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGNoZWNrYm94Q2hhbmdlZDogU3ViamVjdDxhbnlbXT4gPSBuZXcgU3ViamVjdDxhbnlbXT4oKTtcblxuICBASW5wdXQoKVxuICB0YWJsZU1vZGVsPzogVGFibGVNb2RlbElmO1xuXG4gIEBJbnB1dCgpXG4gIHRhYmxlT3B0aW9uczogVGFibGVPcHRpb25zSWYgPSBuZXcgVGFibGVPcHRpb25zKCk7XG5cbiAgQElucHV0KClcbiAgZGVib3VuY2VNb3VzZUNsaWNrRGVsYXk6IG51bWJlciA9IDE1MDtcblxuICBwcml2YXRlIGRlYm91bmNlTW91c2VDbGljazogU3ViamVjdDxHZU1vdXNlRXZlbnQ+ID0gbmV3IFN1YmplY3Q8R2VNb3VzZUV2ZW50PigpO1xuXG4gIHByaXZhdGUgdGFibGVTY29wZT86IFRhYmxlU2NvcGU7XG4gIHByaXZhdGUgYWxpdmUgPSB0cnVlO1xuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHpvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvbVNlcnZpY2U6IERvbVNlcnZpY2VcbiAgKSB7XG4gIH1cblxuXG4gIG9uQ29udGV4dG1lbnUoZXZ0OiBHZU1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHRtZW51Lm5leHQoZXZ0KTtcbiAgfVxuXG4gIG9uTW91c2VNb3ZlZChldnQ6IEdlTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMubW91c2VNb3ZlZC5uZXh0KGV2dCk7XG4gIH1cblxuICAvLyB3aWxsIGJlIGNhbGxlZCBieSB0YWJsZS1zY29wZTpcbiAgb25Nb3VzZUNsaWNrZWQoZXZ0OiBHZU1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmRlYm91bmNlTW91c2VDbGljay5uZXh0KGV2dCk7XG4gIH1cblxuICBvbkNoZWNrYm94Q2hhbmdlZChhcnI6IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja2JveENoYW5nZWQubmV4dChhcnIpO1xuICB9XG5cbiAgb25Nb2RlbENoYW5nZWQoZXZ0OiBHZU1vZGVsQ2hhbmdlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsQ2hhbmdlZC5uZXh0KGV2dCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRNb2RlbCgpO1xuICAgIHRoaXMuZGVib3VuY2VNb3VzZUNsaWNrXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VNb3VzZUNsaWNrRGVsYXkpLFxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5hbGl2ZSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMubW91c2VDbGlja2VkLm5leHQodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5hbGl2ZSA9IGZhbHNlO1xuICB9XG5cblxuICBvbk1vdXNlRHJhZ2dpbmcoZXZ0OiBHZU1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm1vdXNlRHJhZ2dpbmcubmV4dChldnQpO1xuICB9XG5cbiAgb25Nb3VzZURyYWdnaW5nRW5kKGV2dDogR2VNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5tb3VzZURyYWdnaW5nRW5kZWQubmV4dChldnQpO1xuICB9XG5cblxuICBwcml2YXRlIGluaXRNb2RlbCgpIHtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIodGhpcy5pbml0LmJpbmQodGhpcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCkge1xuICAgIGlmICh0aGlzLnRhYmxlTW9kZWwpIHtcbiAgICAgIHRoaXMudGFibGVTY29wZSA9IG5ldyBUYWJsZVNjb3BlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy50YWJsZU1vZGVsLCB0aGlzLmRvbVNlcnZpY2UsIHRoaXMudGFibGVPcHRpb25zLCB0aGlzXG4gICAgICApO1xuICAgICAgdGhpcy50YWJsZVNjb3BlLmZpcnN0SW5pdCgpO1xuICAgICAgdGhpcy50YWJsZVJlYWR5Lm5leHQodGhpcy50YWJsZVNjb3BlLmdldEFwaSgpKTtcbiAgICB9XG4gIH1cblxuXG59XG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of angular-table
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/table.component';
|
|
5
|
+
export * from './lib/component-renderer.if';
|
|
6
|
+
export * from './lib/service/dom-service';
|
|
7
|
+
export * from './lib/service/renderer-wrapper';
|
|
8
|
+
export * from './lib/service/render-wrapper-factory';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGFibGUvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsc0NBQXNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGFuZ3VsYXItdGFibGVcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50LXJlbmRlcmVyLmlmJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvZG9tLXNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9yZW5kZXJlci13cmFwcGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvcmVuZGVyLXdyYXBwZXItZmFjdG9yeSc7XG4iXX0=
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Component, ViewEncapsulation, ChangeDetectionStrategy,
|
|
2
|
+
import { Injectable, Component, ViewEncapsulation, ChangeDetectionStrategy, Output, Input, EventEmitter, createComponent } from '@angular/core';
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
4
|
import { Subject, debounceTime, takeWhile, takeUntil } from 'rxjs';
|
|
5
|
-
import {
|
|
5
|
+
import { TableOptions, TableScope } from '@guiexpert/table';
|
|
6
6
|
|
|
7
7
|
class DomService {
|
|
8
|
-
renderer;
|
|
9
8
|
constructor(renderer) {
|
|
10
9
|
this.renderer = renderer;
|
|
11
10
|
}
|
|
@@ -49,160 +48,34 @@ class DomService {
|
|
|
49
48
|
setAttribute(ele, key, value) {
|
|
50
49
|
this.renderer.setAttribute(ele, key, value);
|
|
51
50
|
}
|
|
52
|
-
static
|
|
53
|
-
static
|
|
51
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DomService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
52
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DomService, providedIn: "root" }); }
|
|
54
53
|
}
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DomService, decorators: [{
|
|
56
55
|
type: Injectable,
|
|
57
56
|
args: [{
|
|
58
57
|
providedIn: "root"
|
|
59
58
|
}]
|
|
60
|
-
}], ctorParameters: ()
|
|
59
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }]; } });
|
|
61
60
|
|
|
62
|
-
/**
|
|
63
|
-
* TableComponent is a reusable GUI component that displays tabular data.
|
|
64
|
-
* It provides various event outputs for user interactions such as mouse movement, dragging, clicking, etc.
|
|
65
|
-
* It requires a TableModelIf instance to specify the data and TableOptionsIf instance to configure the appearance and behavior.
|
|
66
|
-
*
|
|
67
|
-
* @example
|
|
68
|
-
* <guiexpert-table
|
|
69
|
-
* [licenseKey]="licenseKey"
|
|
70
|
-
* [tableModel]="tableModel"
|
|
71
|
-
* [tableOptions]="tableOptions"
|
|
72
|
-
* [debounceMouseClickDelay]="150"
|
|
73
|
-
* (tableReady)="handleTableReady($event)"
|
|
74
|
-
* (mouseMoved)="handleMouseMoved($event)"
|
|
75
|
-
* (mouseDragging)="handleMouseDragging($event)"
|
|
76
|
-
* (mouseDraggingEnded)="handleMouseDraggingEnded($event)"
|
|
77
|
-
* (contextmenu)="handleContextMenu($event)"
|
|
78
|
-
* (mouseClicked)="handleMouseClicked($event)"
|
|
79
|
-
* (modelChanged)="handleModelChanged($event)"
|
|
80
|
-
* (checkboxChanged)="handleCheckboxChanged($event)">
|
|
81
|
-
* </guiexpert-table>
|
|
82
|
-
*
|
|
83
|
-
* @requires CommonModule from '@angular/common'
|
|
84
|
-
* @requires DomService
|
|
85
|
-
*
|
|
86
|
-
* @remarks
|
|
87
|
-
* This component is designed to be standalone and should not have any parent components wrapping it.
|
|
88
|
-
* It uses OnPush change detection strategy and has ViewEncapsulation.None encapsulation.
|
|
89
|
-
*
|
|
90
|
-
* @publicApi
|
|
91
|
-
*/
|
|
92
61
|
class TableComponent {
|
|
93
|
-
renderer;
|
|
94
|
-
elementRef;
|
|
95
|
-
zone;
|
|
96
|
-
domService;
|
|
97
|
-
/**
|
|
98
|
-
* Set the license key for the LicenseManager.
|
|
99
|
-
*
|
|
100
|
-
* @param {string} key - The license key to set.
|
|
101
|
-
* @returns {void}
|
|
102
|
-
*/
|
|
103
|
-
set licenseKey(key) {
|
|
104
|
-
LicenseManager.getInstance().setLicenseKey(key);
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Represents a Subject variable used to notify subscribers when a table is ready.
|
|
108
|
-
*
|
|
109
|
-
* @type {Subject<TableApi>}
|
|
110
|
-
*/
|
|
111
|
-
tableReady = new Subject();
|
|
112
|
-
/**
|
|
113
|
-
* Represents the event emitter for the mouse moved event.
|
|
114
|
-
*
|
|
115
|
-
* @type {Subject<GeMouseEvent>}
|
|
116
|
-
* @memberOf MyApplication
|
|
117
|
-
*/
|
|
118
|
-
mouseMoved = new Subject();
|
|
119
|
-
/**
|
|
120
|
-
* Represents a variable for tracking mouse dragging events.
|
|
121
|
-
*
|
|
122
|
-
* @type {Subject<GeMouseEvent>}
|
|
123
|
-
*/
|
|
124
|
-
mouseDragging = new Subject();
|
|
125
|
-
/**
|
|
126
|
-
* An instance of `Subject` that represents the event when mouse dragging has ended.
|
|
127
|
-
*
|
|
128
|
-
* @type {Subject<GeMouseEvent>}
|
|
129
|
-
* @memberof [Your Object/Class/Module]
|
|
130
|
-
*/
|
|
131
|
-
mouseDraggingEnded = new Subject();
|
|
132
|
-
/**
|
|
133
|
-
* Represents the context menu event subject.
|
|
134
|
-
*
|
|
135
|
-
* @name contextmenu
|
|
136
|
-
* @type {Subject<GeMouseEvent>}
|
|
137
|
-
*
|
|
138
|
-
* @description
|
|
139
|
-
* The `contextmenu` variable is an instance of the `Subject` class from the 'rxjs' library.
|
|
140
|
-
* It is used for broadcasting context menu events of type `GeMouseEvent`.
|
|
141
|
-
* Other parts of the code can subscribe to this subject to be notified when a context menu event occurs.
|
|
142
|
-
* The subject allows multiple observers to receive the event simultaneously.
|
|
143
|
-
*/
|
|
144
|
-
contextmenu = new Subject();
|
|
145
|
-
/**
|
|
146
|
-
* Represents a stream of mouse click events.
|
|
147
|
-
*
|
|
148
|
-
* @type {Subject<GeMouseEvent>}
|
|
149
|
-
*/
|
|
150
|
-
mouseClicked = new Subject();
|
|
151
|
-
/**
|
|
152
|
-
* A variable representing an observable subject for model change events.
|
|
153
|
-
*
|
|
154
|
-
* @type {Subject<GeModelChangeEvent>}
|
|
155
|
-
*/
|
|
156
|
-
modelChanged = new Subject();
|
|
157
|
-
/**
|
|
158
|
-
* Represents a Subject that emits an array of any type when a checkbox is changed.
|
|
159
|
-
*
|
|
160
|
-
* @type {Subject<any[]>}
|
|
161
|
-
*/
|
|
162
|
-
checkboxChanged = new Subject();
|
|
163
|
-
/**
|
|
164
|
-
* Represents a table model.
|
|
165
|
-
*
|
|
166
|
-
* @typedef {object} TableModel
|
|
167
|
-
* @property {any[]} [data] - An array containing the data for the table rows.
|
|
168
|
-
* @property {string[]} [headers] - An array containing the table column headers.
|
|
169
|
-
* @property {function} [updateData] - A function that updates the data in the table.
|
|
170
|
-
* @property {function} [updateHeaders] - A function that updates the column headers in the table.
|
|
171
|
-
* @property {function} [getData] - A function that retrieves the current data in the table.
|
|
172
|
-
* @property {function} [getHeaders] - A function that retrieves the column headers in the table.
|
|
173
|
-
*/
|
|
174
|
-
tableModel;
|
|
175
|
-
/**
|
|
176
|
-
* Represents the options for configuring a table.
|
|
177
|
-
*
|
|
178
|
-
* @typedef {Object} TableOptions
|
|
179
|
-
* @property {string} [option1] - Optional property to configure option1.
|
|
180
|
-
* @property {number} [option2] - Optional property to configure option2.
|
|
181
|
-
* @property {boolean} [option3] - Optional property to configure option3.
|
|
182
|
-
* @property {any[]} [option4] - Optional property to configure option4.
|
|
183
|
-
*
|
|
184
|
-
* @example
|
|
185
|
-
* const tableOptions: TableOptions = new TableOptions();
|
|
186
|
-
* tableOptions.option1 = 'value1';
|
|
187
|
-
* tableOptions.option2 = 5;
|
|
188
|
-
* tableOptions.option3 = true;
|
|
189
|
-
* tableOptions.option4 = [1, 2, 3];
|
|
190
|
-
*/
|
|
191
|
-
tableOptions = new TableOptions();
|
|
192
|
-
/**
|
|
193
|
-
* The debounceMouseClickDelay variable represents the delay in milliseconds for debouncing mouse clicks.
|
|
194
|
-
*
|
|
195
|
-
* @type {number}
|
|
196
|
-
*/
|
|
197
|
-
debounceMouseClickDelay = 150;
|
|
198
|
-
debounceMouseClick = new Subject();
|
|
199
|
-
tableScope;
|
|
200
|
-
alive = true;
|
|
201
62
|
constructor(renderer, elementRef, zone, domService) {
|
|
202
63
|
this.renderer = renderer;
|
|
203
64
|
this.elementRef = elementRef;
|
|
204
65
|
this.zone = zone;
|
|
205
66
|
this.domService = domService;
|
|
67
|
+
this.tableReady = new Subject();
|
|
68
|
+
this.mouseMoved = new Subject();
|
|
69
|
+
this.mouseDragging = new Subject();
|
|
70
|
+
this.mouseDraggingEnded = new Subject();
|
|
71
|
+
this.contextmenu = new Subject();
|
|
72
|
+
this.mouseClicked = new Subject();
|
|
73
|
+
this.modelChanged = new Subject();
|
|
74
|
+
this.checkboxChanged = new Subject();
|
|
75
|
+
this.tableOptions = new TableOptions();
|
|
76
|
+
this.debounceMouseClickDelay = 150;
|
|
77
|
+
this.debounceMouseClick = new Subject();
|
|
78
|
+
this.alive = true;
|
|
206
79
|
}
|
|
207
80
|
onContextmenu(evt) {
|
|
208
81
|
this.contextmenu.next(evt);
|
|
@@ -224,7 +97,11 @@ class TableComponent {
|
|
|
224
97
|
this.initModel();
|
|
225
98
|
this.debounceMouseClick
|
|
226
99
|
.pipe(debounceTime(this.debounceMouseClickDelay), takeWhile(() => this.alive))
|
|
227
|
-
.subscribe((value) =>
|
|
100
|
+
.subscribe((value) => {
|
|
101
|
+
this.zone.run(() => {
|
|
102
|
+
this.mouseClicked.next(value);
|
|
103
|
+
});
|
|
104
|
+
});
|
|
228
105
|
}
|
|
229
106
|
ngOnDestroy() {
|
|
230
107
|
this.alive = false;
|
|
@@ -245,15 +122,13 @@ class TableComponent {
|
|
|
245
122
|
this.tableReady.next(this.tableScope.getApi());
|
|
246
123
|
}
|
|
247
124
|
}
|
|
248
|
-
static
|
|
249
|
-
static
|
|
125
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: DomService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
126
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableComponent, isStandalone: true, selector: "guiexpert-table", inputs: { tableModel: "tableModel", tableOptions: "tableOptions", debounceMouseClickDelay: "debounceMouseClickDelay" }, outputs: { tableReady: "tableReady", mouseMoved: "mouseMoved", mouseDragging: "mouseDragging", mouseDraggingEnded: "mouseDraggingEnded", contextmenu: "contextmenu", mouseClicked: "mouseClicked", modelChanged: "modelChanged", checkboxChanged: "checkboxChanged" }, providers: [DomService], ngImport: i0, template: "", isInline: true, styles: ["@import\"node_modules/@guiexpert/table/css/main.css\";\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
250
127
|
}
|
|
251
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
128
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, decorators: [{
|
|
252
129
|
type: Component,
|
|
253
|
-
args: [{ selector: "guiexpert-table", standalone: true, imports: [CommonModule], providers: [DomService], template: "", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@import\"
|
|
254
|
-
}], ctorParameters: ()
|
|
255
|
-
type: Input
|
|
256
|
-
}], tableReady: [{
|
|
130
|
+
args: [{ selector: "guiexpert-table", standalone: true, imports: [CommonModule], providers: [DomService], template: "", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@import\"node_modules/@guiexpert/table/css/main.css\";\n"] }]
|
|
131
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: DomService }]; }, propDecorators: { tableReady: [{
|
|
257
132
|
type: Output
|
|
258
133
|
}], mouseMoved: [{
|
|
259
134
|
type: Output
|
|
@@ -278,19 +153,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
|
|
|
278
153
|
}] } });
|
|
279
154
|
|
|
280
155
|
class RendererWrapper {
|
|
281
|
-
componentType;
|
|
282
|
-
appRef;
|
|
283
|
-
injector;
|
|
284
|
-
cdr;
|
|
285
|
-
zone;
|
|
286
|
-
event$ = new EventEmitter();
|
|
287
|
-
closed$ = new Subject();
|
|
288
156
|
constructor(componentType, appRef, injector, cdr, zone) {
|
|
289
157
|
this.componentType = componentType;
|
|
290
158
|
this.appRef = appRef;
|
|
291
159
|
this.injector = injector;
|
|
292
160
|
this.cdr = cdr;
|
|
293
161
|
this.zone = zone;
|
|
162
|
+
this.event$ = new EventEmitter();
|
|
163
|
+
this.closed$ = new Subject();
|
|
294
164
|
}
|
|
295
165
|
render(cellDiv, rowIndex, columnIndex, areaIdent, areaModel, cellValue, domService) {
|
|
296
166
|
const componentRef = createComponent(this.componentType, {
|
|
@@ -325,9 +195,6 @@ class RendererWrapper {
|
|
|
325
195
|
}
|
|
326
196
|
|
|
327
197
|
class RenderWrapperFactory {
|
|
328
|
-
appRef;
|
|
329
|
-
injector;
|
|
330
|
-
zone;
|
|
331
198
|
constructor(appRef, injector, zone) {
|
|
332
199
|
this.appRef = appRef;
|
|
333
200
|
this.injector = injector;
|
|
@@ -336,15 +203,19 @@ class RenderWrapperFactory {
|
|
|
336
203
|
create(componentType, cdr) {
|
|
337
204
|
return new RendererWrapper(componentType, this.appRef, this.injector, cdr, this.zone);
|
|
338
205
|
}
|
|
339
|
-
static
|
|
340
|
-
static
|
|
206
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RenderWrapperFactory, deps: [{ token: i0.ApplicationRef }, { token: i0.EnvironmentInjector }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
207
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RenderWrapperFactory, providedIn: "root" }); }
|
|
341
208
|
}
|
|
342
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RenderWrapperFactory, decorators: [{
|
|
343
210
|
type: Injectable,
|
|
344
211
|
args: [{
|
|
345
212
|
providedIn: "root"
|
|
346
213
|
}]
|
|
347
|
-
}], ctorParameters: ()
|
|
214
|
+
}], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.EnvironmentInjector }, { type: i0.NgZone }]; } });
|
|
215
|
+
|
|
216
|
+
/*
|
|
217
|
+
* Public API Surface of angular-table
|
|
218
|
+
*/
|
|
348
219
|
|
|
349
220
|
/**
|
|
350
221
|
* Generated bundle index. Do not edit.
|