@coolon/angular-ui-powerups 13.1.7 → 13.3.0

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.
Files changed (114) hide show
  1. package/assets/table.scss +2 -2
  2. package/esm2020/lib/components/commands/command/command.component.mjs +18 -5
  3. package/esm2020/lib/components/components.module.mjs +22 -19
  4. package/esm2020/lib/components/exports.mjs +28 -21
  5. package/esm2020/lib/components/tables/abstract-table-model.mjs +70 -29
  6. package/esm2020/lib/components/tables/abstract-table.component.mjs +12 -10
  7. package/esm2020/lib/components/tables/column/column-list-model.mjs +39 -0
  8. package/esm2020/lib/components/tables/column/column-model.mjs +180 -0
  9. package/esm2020/lib/components/tables/column/column-template/column-template.directive.mjs +35 -0
  10. package/esm2020/lib/components/tables/column/column-text-properties.mjs +2 -0
  11. package/esm2020/lib/components/tables/column/custom-template-column-model.mjs +16 -0
  12. package/esm2020/lib/components/tables/column/custom-value-column-model.mjs +37 -0
  13. package/esm2020/lib/components/tables/column/editor-controls-column-model.mjs +21 -0
  14. package/esm2020/lib/components/tables/column/list-propery-column-model.mjs +48 -0
  15. package/esm2020/lib/components/tables/column/property-column-model.mjs +92 -0
  16. package/esm2020/lib/components/tables/column/selection-column-model.mjs +40 -0
  17. package/esm2020/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.mjs +55 -0
  18. package/esm2020/lib/components/tables/editor/edit-session.mjs +23 -0
  19. package/esm2020/lib/components/tables/editor/editable-cell-renderer.mjs +2 -0
  20. package/esm2020/lib/components/tables/{table/paginator → paginator}/paginator.component.mjs +4 -4
  21. package/esm2020/lib/components/tables/renderer/cell-editors.mjs +2 -0
  22. package/esm2020/lib/components/tables/renderer/cell-portal-ref.mjs +93 -0
  23. package/esm2020/lib/components/tables/renderer/cell-renderer.mjs +2 -0
  24. package/esm2020/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.mjs +30 -0
  25. package/esm2020/lib/components/tables/{table → renderer}/default-header-cell-renderer/default-header-cell-renderer.component.mjs +1 -1
  26. package/esm2020/lib/components/tables/renderer/default-list-cell-renderer/default-list-cell-renderer.component.mjs +40 -0
  27. package/esm2020/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.mjs +31 -0
  28. package/esm2020/lib/components/tables/renderer/selection-cell/selection-cell.component.mjs +26 -0
  29. package/esm2020/lib/components/tables/renderer/table-cell/table-cell.component.mjs +93 -0
  30. package/esm2020/lib/components/tables/renderer/table-header-cell/table-header-cell.component.mjs +32 -0
  31. package/esm2020/lib/components/tables/search/column-text-search-formatter.mjs +52 -0
  32. package/esm2020/lib/components/tables/search/enable-cell-text-search.decorator.mjs +30 -0
  33. package/esm2020/lib/components/tables/table/table-model.mjs +2 -10
  34. package/esm2020/lib/components/tables/table/table.component.mjs +12 -12
  35. package/esm2020/lib/components/tables/table-row-menu/table-row-menu.component.mjs +84 -0
  36. package/esm2020/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.mjs +1 -1
  37. package/esm2020/lib/components/tables/tree-table/tree-label-column-model.mjs +3 -3
  38. package/esm2020/lib/components/tables/tree-table/tree-table-component.mjs +10 -10
  39. package/esm2020/lib/components/tables/tree-table/tree-table-model.mjs +1 -1
  40. package/esm2020/lib/interaction/activity-ref.mjs +2 -2
  41. package/esm2020/lib/interaction/activity.mjs +36 -27
  42. package/esm2020/lib/interaction/components/abstract-confirm-dialog.component.mjs +1 -1
  43. package/esm2020/lib/interaction/components/abstract-dialog.component.mjs +6 -1
  44. package/esm2020/lib/interaction/components/activity-actions/activity-actions.component.mjs +18 -5
  45. package/esm2020/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.mjs +5 -2
  46. package/esm2020/lib/interaction/components/input-activities/input-activity.mjs +2 -4
  47. package/fesm2015/coolon-angular-ui-powerups.mjs +660 -460
  48. package/fesm2015/coolon-angular-ui-powerups.mjs.map +1 -1
  49. package/fesm2020/coolon-angular-ui-powerups.mjs +801 -602
  50. package/fesm2020/coolon-angular-ui-powerups.mjs.map +1 -1
  51. package/lib/components/commands/command/command.component.d.ts +5 -2
  52. package/lib/components/components.module.d.ts +55 -54
  53. package/lib/components/exports.d.ts +27 -20
  54. package/lib/components/tables/abstract-table-model.d.ts +24 -13
  55. package/lib/components/tables/abstract-table.component.d.ts +6 -5
  56. package/lib/components/tables/{column-list-model.d.ts → column/column-list-model.d.ts} +4 -4
  57. package/lib/components/tables/column/column-model.d.ts +77 -0
  58. package/lib/components/tables/column/custom-template-column-model.d.ts +8 -0
  59. package/lib/components/tables/column/custom-value-column-model.d.ts +10 -0
  60. package/lib/components/tables/column/editor-controls-column-model.d.ts +13 -0
  61. package/lib/components/tables/column/list-propery-column-model.d.ts +15 -0
  62. package/lib/components/tables/column/property-column-model.d.ts +24 -0
  63. package/lib/components/tables/column/selection-column-model.d.ts +12 -0
  64. package/lib/components/tables/{table → editor}/edit-row-controls/edit-row-controls.component.d.ts +1 -1
  65. package/lib/components/tables/{edit-session.d.ts → editor/edit-session.d.ts} +2 -2
  66. package/lib/components/tables/{table/mutable-cell-renderer.d.ts → editor/editable-cell-renderer.d.ts} +2 -2
  67. package/lib/components/tables/{table/paginator → paginator}/paginator.component.d.ts +1 -1
  68. package/lib/components/tables/{table → renderer}/cell-portal-ref.d.ts +18 -18
  69. package/lib/components/tables/renderer/cell-renderer.d.ts +3 -0
  70. package/lib/components/tables/{table → renderer}/default-cell-renderer/default-cell-renderer.component.d.ts +1 -1
  71. package/lib/components/tables/renderer/default-list-cell-renderer/default-list-cell-renderer.component.d.ts +12 -0
  72. package/lib/components/tables/{table/select-header-cell-renderer/select-header-cell-renderer.component.d.ts → renderer/select-header-cell/selection-header-cell.component.d.ts} +3 -3
  73. package/lib/components/tables/{table/select-cell-renderer/select-cell-renderer.component.d.ts → renderer/selection-cell/selection-cell.component.d.ts} +3 -3
  74. package/lib/components/tables/{table/table-cell-renderer/table-cell-renderer.component.d.ts → renderer/table-cell/table-cell.component.d.ts} +5 -5
  75. package/lib/components/tables/{table/table-header-cell-renderer/table-header-cell-renderer.component.d.ts → renderer/table-header-cell/table-header-cell.component.d.ts} +4 -4
  76. package/lib/components/tables/search/column-text-search-formatter.d.ts +28 -0
  77. package/lib/components/tables/search/enable-cell-text-search.decorator.d.ts +25 -0
  78. package/lib/components/tables/table/table-model.d.ts +3 -9
  79. package/lib/components/tables/table/table.component.d.ts +4 -4
  80. package/lib/components/tables/{table/table-row-menu → table-row-menu}/table-row-menu.component.d.ts +3 -3
  81. package/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +1 -1
  82. package/lib/components/tables/tree-table/tree-label-column-model.d.ts +1 -1
  83. package/lib/components/tables/tree-table/tree-table-component.d.ts +2 -2
  84. package/lib/components/tables/tree-table/tree-table-model.d.ts +1 -1
  85. package/lib/interaction/activity.d.ts +15 -10
  86. package/lib/interaction/components/activity-actions/activity-actions.component.d.ts +6 -1
  87. package/lib/interaction/components/input-activities/input-activity.d.ts +0 -1
  88. package/package.json +2 -1
  89. package/esm2020/lib/components/tables/column-list-model.mjs +0 -39
  90. package/esm2020/lib/components/tables/edit-session.mjs +0 -23
  91. package/esm2020/lib/components/tables/table/cell-editors.mjs +0 -2
  92. package/esm2020/lib/components/tables/table/cell-portal-ref.mjs +0 -93
  93. package/esm2020/lib/components/tables/table/cell-renderer.mjs +0 -2
  94. package/esm2020/lib/components/tables/table/column-model.mjs +0 -392
  95. package/esm2020/lib/components/tables/table/column-template/column-template.directive.mjs +0 -35
  96. package/esm2020/lib/components/tables/table/column-text-properties.mjs +0 -2
  97. package/esm2020/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.mjs +0 -22
  98. package/esm2020/lib/components/tables/table/edit-row-controls/edit-row-controls.component.mjs +0 -55
  99. package/esm2020/lib/components/tables/table/mutable-cell-renderer.mjs +0 -2
  100. package/esm2020/lib/components/tables/table/select-cell-renderer/select-cell-renderer.component.mjs +0 -26
  101. package/esm2020/lib/components/tables/table/select-header-cell-renderer/select-header-cell-renderer.component.mjs +0 -31
  102. package/esm2020/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.mjs +0 -93
  103. package/esm2020/lib/components/tables/table/table-def.mjs +0 -2
  104. package/esm2020/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.mjs +0 -32
  105. package/esm2020/lib/components/tables/table/table-row-menu/table-row-menu.component.mjs +0 -84
  106. package/esm2020/lib/components/tables/table/text-search-predicate.mjs +0 -2
  107. package/lib/components/tables/table/cell-renderer.d.ts +0 -5
  108. package/lib/components/tables/table/column-model.d.ts +0 -145
  109. package/lib/components/tables/table/table-def.d.ts +0 -7
  110. package/lib/components/tables/table/text-search-predicate.d.ts +0 -1
  111. /package/lib/components/tables/{table → column}/column-template/column-template.directive.d.ts +0 -0
  112. /package/lib/components/tables/{table → column}/column-text-properties.d.ts +0 -0
  113. /package/lib/components/tables/{table → renderer}/cell-editors.d.ts +0 -0
  114. /package/lib/components/tables/{table → renderer}/default-header-cell-renderer/default-header-cell-renderer.component.d.ts +0 -0
@@ -0,0 +1,180 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { ComponentRef } from "@angular/core";
3
+ import { DelegatingValueModel, Functions, GarbageCollector } from "@coolon/pectin";
4
+ import { lang, assert, Stringy } from "@coolon/typescript-utilities";
5
+ import { Memoize } from "@typescript-plus/fast-memoize-decorator";
6
+ import { CellHeaderPortalRef } from "../renderer/cell-portal-ref";
7
+ import { DefaultHeaderCellRendererComponent } from "../renderer/default-header-cell-renderer/default-header-cell-renderer.component";
8
+ import { ColumnTextSearchFormatter } from "../search/column-text-search-formatter";
9
+ const noop = () => {
10
+ };
11
+ class ColumnTextSearchWrapper extends ColumnTextSearchFormatter.Delegate {
12
+ constructor() {
13
+ super(...arguments);
14
+ this._map = Functions.identity;
15
+ }
16
+ initialise(injector) {
17
+ if (this._delegate instanceof ColumnTextSearchFormatter.Delegate) {
18
+ this._delegate.initialise(injector);
19
+ }
20
+ }
21
+ format(row) {
22
+ let value = this._map(row);
23
+ let result = this._delegate ? this._delegate.format(value) : "";
24
+ console.log({ format: row, value, text: result });
25
+ return result;
26
+ }
27
+ setDelegate(formatter, mapper) {
28
+ this._delegate = formatter;
29
+ this._map = mapper ?? Functions.identity;
30
+ }
31
+ }
32
+ export class ColumnModel extends GarbageCollector {
33
+ constructor(columnId, textPropertiesProvider) {
34
+ super();
35
+ this.columnId = columnId;
36
+ this.textPropertiesProvider = textPropertiesProvider;
37
+ this._enableRowSelection = true;
38
+ this._flex = false;
39
+ this._defaultVisibility$ = this.registerDisposable(new DelegatingValueModel().withDefault(true));
40
+ this._visible$ = this.registerDisposable(new DelegatingValueModel().withDefault(this._defaultVisibility$));
41
+ this.textSearchDelegate = new ColumnTextSearchWrapper();
42
+ this.installHeaderRenderer();
43
+ this.dasherisedColumnId = Stringy.from(columnId).dasherize().toString();
44
+ }
45
+ installHeaderRenderer() {
46
+ this.cellHeaderRenderer(DefaultHeaderCellRendererComponent, (component, column) => {
47
+ component.headerText = column.getHeaderText();
48
+ });
49
+ }
50
+ getHeaderText() {
51
+ return this.getColumnTextProperties()?.headerText() || this.getDefaultHeaderText();
52
+ }
53
+ isVisible() {
54
+ return this.visible$.value;
55
+ }
56
+ get visible$() {
57
+ return this._visible$.readonly;
58
+ }
59
+ visibleWhile(visible) {
60
+ this._visible$.setDelegate(visible);
61
+ return this;
62
+ }
63
+ setDefaultVisibility(visible) {
64
+ this._defaultVisibility$.setDelegate(visible);
65
+ }
66
+ getDefaultHeaderText() {
67
+ return this.columnId;
68
+ }
69
+ getColumnTextProperties() {
70
+ return this._columnTextProperties || this.textPropertiesProvider();
71
+ }
72
+ /**
73
+ * @deprecated use #columnTextProperties instead
74
+ * @param columnTextProperties
75
+ */
76
+ textProperties(columnTextProperties) {
77
+ return this.columnTextProperties(columnTextProperties);
78
+ }
79
+ columnTextProperties(columnTextProperties) {
80
+ this._columnTextProperties = columnTextProperties;
81
+ return this;
82
+ }
83
+ getSearchTextFor(row) {
84
+ return this.textSearchDelegate.format(row);
85
+ }
86
+ configureColumnTextSearch(formatter, mapper) {
87
+ assert.notNil(formatter);
88
+ console.log({ col: this.columnId, formatter });
89
+ this.textSearchDelegate.setDelegate(formatter, mapper);
90
+ }
91
+ configureHeaderRenderer(config) {
92
+ this._columnHeaderPortalRef = config;
93
+ }
94
+ configureCellRenderer(config) {
95
+ this._cellRendererPortalRef = config;
96
+ }
97
+ configureCellEditor(cellEditor) {
98
+ this._cellEditorPortalRef = cellEditor;
99
+ }
100
+ cellHeaderRenderer(componentType, initialiser) {
101
+ this.configureHeaderRenderer(new CellHeaderPortalRef(componentType, initialiser));
102
+ return this;
103
+ }
104
+ flex(flex = true) {
105
+ this._flex = flex;
106
+ }
107
+ isFlex() {
108
+ return this._flex;
109
+ }
110
+ hasEditorPortal() {
111
+ return !!this._cellEditorPortalRef;
112
+ }
113
+ attachHeaderCell(host) {
114
+ this._columnHeaderPortalRef.initialiseHost(host, this);
115
+ }
116
+ attachCell(host) {
117
+ this._cellRendererPortalRef.initialiseHost(host, this);
118
+ if (this.hasEditorPortal()) {
119
+ this._cellEditorPortalRef.initialiseHost(host, this);
120
+ }
121
+ }
122
+ onHeaderAttached(host, ref) {
123
+ const component = this.getComponent(ref);
124
+ this._columnHeaderPortalRef.onPortalAttached(host, component);
125
+ }
126
+ onRendererAttached(host, ref) {
127
+ const component = this.getComponentOrEmbeddedView(ref);
128
+ this._cellRendererPortalRef.onPortalAttached(host, component);
129
+ }
130
+ // @Trace()
131
+ onEditorAttached(host, ref) {
132
+ this._cellEditorPortalRef.onPortalAttached(host, this.getComponent(ref));
133
+ }
134
+ updatePortalContent(host) {
135
+ this._cellRendererPortalRef.pushState(host);
136
+ }
137
+ _selectRowOnClick(selectRowOnClick) {
138
+ this._enableRowSelection = selectRowOnClick;
139
+ return this;
140
+ }
141
+ isRowSelectionEnabled() {
142
+ return this._enableRowSelection;
143
+ }
144
+ getComponent(ref) {
145
+ if (ref instanceof ComponentRef) {
146
+ return ref.instance;
147
+ }
148
+ else {
149
+ console.error("headers only support component portals, got", ref);
150
+ lang.illegalState(`headers only support component portals, got ${ref}`);
151
+ }
152
+ }
153
+ getComponentOrEmbeddedView(ref) {
154
+ if (ref instanceof ComponentRef) {
155
+ return ref.instance;
156
+ }
157
+ else {
158
+ return ref;
159
+ }
160
+ }
161
+ initialise(injector) {
162
+ this.textSearchDelegate.initialise(injector);
163
+ }
164
+ }
165
+ __decorate([
166
+ Memoize(),
167
+ __metadata("design:type", Function),
168
+ __metadata("design:paramtypes", []),
169
+ __metadata("design:returntype", String)
170
+ ], ColumnModel.prototype, "getHeaderText", null);
171
+ __decorate([
172
+ Memoize(),
173
+ __metadata("design:type", Function),
174
+ __metadata("design:paramtypes", []),
175
+ __metadata("design:returntype", Object)
176
+ ], ColumnModel.prototype, "getColumnTextProperties", null);
177
+ (function (ColumnModel) {
178
+ ColumnModel.CELL_RENDERER_COMPONENT_ROW_CACHE = Symbol('aup-cell-renderer:row-data-cache');
179
+ })(ColumnModel || (ColumnModel = {}));
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvY29sdW1uL2NvbHVtbi1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQVcsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFxQixNQUFNLGdCQUFnQixDQUFDO0FBQy9HLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVsRSxPQUFPLEVBQXVCLG1CQUFtQixFQUF5QixNQUFNLDZCQUE2QixDQUFDO0FBQzlHLE9BQU8sRUFDTCxrQ0FBa0MsRUFDbkMsTUFBTSxpRkFBaUYsQ0FBQztBQUd6RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUluRixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7QUFDbEIsQ0FBQyxDQUFDO0FBb0JGLE1BQU0sdUJBQTZCLFNBQVEseUJBQXlCLENBQUMsUUFBYTtJQUFsRjs7UUFFVSxTQUFJLEdBQXFCLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFtQnRELENBQUM7SUFqQkMsVUFBVSxDQUFDLFFBQWtCO1FBQzNCLElBQUksSUFBSSxDQUFDLFNBQVMsWUFBWSx5QkFBeUIsQ0FBQyxRQUFRLEVBQUU7WUFDaEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVE7UUFDYixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFD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QXlCO1FBQ25ELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUVTLFlBQVksQ0FBQyxHQUErQjtRQUNwRCxJQUFJLEdBQUcsWUFBWSxZQUFZLEVBQUU7WUFDL0IsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDO1NBQ3JCO2FBQU07WUFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLDZDQUE2QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxZQUFZLENBQUMsK0NBQStDLEdBQUcsRUFBRSxDQUFDLENBQUE7U0FDeEU7SUFDSCxDQUFDO0lBQ1MsMEJBQTBCLENBQUMsR0FBK0I7UUFDbEUsSUFBSSxHQUFHLFlBQVksWUFBWSxFQUFFO1lBQy9CLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQztTQUNyQjthQUFNO1lBQ0wsT0FBTyxHQUFHLENBQUM7U0FDWjtJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsUUFBa0I7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0Y7QUEvSUM7SUFEQyxPQUFPLEVBQUU7Ozs7Z0RBR1Q7QUF3QkQ7SUFEQyxPQUFPLEVBQUU7Ozs7MERBR1Q7QUFxSEgsV0FBaUIsV0FBVztJQUNiLDZDQUFpQyxHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0FBRTlGLENBQUMsRUFIZ0IsV0FBVyxLQUFYLFdBQVcsUUFHM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XG5pbXBvcnQgeyBDZGtQb3J0YWxPdXRsZXRBdHRhY2hlZFJlZiB9IGZyb20gXCJAYW5ndWxhci9jZGsvcG9ydGFsL3BvcnRhbC1kaXJlY3RpdmVzXCI7XG5pbXBvcnQgeyBDb21wb25lbnRSZWYsIEluamVjdG9yIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1hbmQsIERlbGVnYXRpbmdWYWx1ZU1vZGVsLCBGdW5jdGlvbnMsIEdhcmJhZ2VDb2xsZWN0b3IsIFRyYWNlLCBWYWx1ZU1vZGVsIH0gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQgeyBsYW5nLCBhc3NlcnQsIFN0cmluZ3kgfSBmcm9tIFwiQGNvb2xvbi90eXBlc2NyaXB0LXV0aWxpdGllc1wiO1xuaW1wb3J0IHsgTWVtb2l6ZSB9IGZyb20gXCJAdHlwZXNjcmlwdC1wbHVzL2Zhc3QtbWVtb2l6ZS1kZWNvcmF0b3JcIjtcbmltcG9ydCB7IEVkaXRTZXNzaW9uIH0gZnJvbSBcIi4uL2VkaXRvci9lZGl0LXNlc3Npb25cIjtcbmltcG9ydCB7IENlbGxFZGl0b3JQb3J0YWxSZWYsIENlbGxIZWFkZXJQb3J0YWxSZWYsIENlbGxSZW5kZXJlclBvcnRhbFJlZiB9IGZyb20gXCIuLi9yZW5kZXJlci9jZWxsLXBvcnRhbC1yZWZcIjtcbmltcG9ydCB7XG4gIERlZmF1bHRIZWFkZXJDZWxsUmVuZGVyZXJDb21wb25lbnRcbn0gZnJvbSBcIi4uL3JlbmRlcmVyL2RlZmF1bHQtaGVhZGVyLWNlbGwtcmVuZGVyZXIvZGVmYXVsdC1oZWFkZXItY2VsbC1yZW5kZXJlci5jb21wb25lbnRcIjtcbmltcG9ydCB7IFRhYmxlQ2VsbENvbXBvbmVudCB9IGZyb20gXCIuLi9yZW5kZXJlci90YWJsZS1jZWxsL3RhYmxlLWNlbGwuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBUYWJsZUhlYWRlckNlbGxDb21wb25lbnQgfSBmcm9tIFwiLi4vcmVuZGVyZXIvdGFibGUtaGVhZGVyLWNlbGwvdGFibGUtaGVhZGVyLWNlbGwuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDb2x1bW5UZXh0U2VhcmNoRm9ybWF0dGVyIH0gZnJvbSBcIi4uL3NlYXJjaC9jb2x1bW4tdGV4dC1zZWFyY2gtZm9ybWF0dGVyXCI7XG5pbXBvcnQgeyBDb2x1bW5UZXh0UHJvcGVydGllcyB9IGZyb20gXCIuL2NvbHVtbi10ZXh0LXByb3BlcnRpZXNcIjtcblxuXG5jb25zdCBub29wID0gKCkgPT4ge1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBSb3dEYXRhPFJvdz4ge1xuICByb3c6IFJvdztcbiAgZWRpdFNlc3Npb24/OiBFZGl0U2Vzc2lvbjxSb3c+O1xuICBlZGl0Um93Q29tbWFuZDogQ29tbWFuZDx2b2lkPjtcbn1cblxuZXhwb3J0IHR5cGUgT25Db21wb25lbnRJbml0PEM+ID0gKGNvbXBvbmVudDogQykgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBDZWxsUmVuZGVyZXJPcHRpb25zPFJvdywgRT4ge1xuICBvbkNvbXBvbmVudEluaXQ/OiAoY29tcG9uZW50OiBFKSA9PiB2b2lkO1xuICBvblJvd1VwZGF0ZT86IChjb21wb25lbnQ6IEUsIHJvdzogUm93KSA9PiB2b2lkO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgTXV0YWJsZUNlbGxSZW5kZXJlck9wdGlvbnM8Um93LCBFLCBQIGV4dGVuZHMga2V5b2YgUm93PiBleHRlbmRzIENlbGxSZW5kZXJlck9wdGlvbnM8Um93LCBFPiB7XG4gIG9uVmFsdWVFZGl0OiAocm93OiBSb3csIGlzOiBSb3dbUF0sIHdhczogUm93W1BdKSA9PiB2b2lkO1xufVxuXG5jbGFzcyBDb2x1bW5UZXh0U2VhcmNoV3JhcHBlcjxSb3c+IGV4dGVuZHMgQ29sdW1uVGV4dFNlYXJjaEZvcm1hdHRlci5EZWxlZ2F0ZTxSb3c+e1xuICBwcml2YXRlIF9kZWxlZ2F0ZTogQ29sdW1uVGV4dFNlYXJjaEZvcm1hdHRlcjxhbnk+O1xuICBwcml2YXRlIF9tYXA6IChyb3c6Um93KSA9PiBhbnkgPSBGdW5jdGlvbnMuaWRlbnRpdHk7XG5cbiAgaW5pdGlhbGlzZShpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBpZiAodGhpcy5fZGVsZWdhdGUgaW5zdGFuY2VvZiBDb2x1bW5UZXh0U2VhcmNoRm9ybWF0dGVyLkRlbGVnYXRlKSB7XG4gICAgICB0aGlzLl9kZWxlZ2F0ZS5pbml0aWFsaXNlKGluamVjdG9yKTtcbiAgICB9XG4gIH1cblxuICBmb3JtYXQocm93OiBSb3cpOiBzdHJpbmcge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuX21hcChyb3cpO1xuICAgIGxldCByZXN1bHQgPSB0aGlzLl9kZWxlZ2F0ZSA/IHRoaXMuX2RlbGVnYXRlLmZvcm1hdCh2YWx1ZSkgOiBcIlwiO1xuICAgIGNvbnNvbGUubG9nKHtmb3JtYXQ6IHJvdywgdmFsdWUsIHRleHQ6cmVzdWx0fSlcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc2V0RGVsZWdhdGU8VD4oZm9ybWF0dGVyOiBDb2x1bW5UZXh0U2VhcmNoRm9ybWF0dGVyPFQ+LCBtYXBwZXI/OiAocm93OlJvdykgPT4gVCkge1xuICAgIHRoaXMuX2RlbGVnYXRlID0gZm9ybWF0dGVyO1xuICAgIHRoaXMuX21hcCA9IG1hcHBlciA/PyBGdW5jdGlvbnMuaWRlbnRpdHk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbHVtbk1vZGVsPFJvdz4gZXh0ZW5kcyBHYXJiYWdlQ29sbGVjdG9yIHtcblxuICBwcml2YXRlIF9jb2x1bW5UZXh0UHJvcGVydGllczogQ29sdW1uVGV4dFByb3BlcnRpZXM7XG5cbiAgcHJpdmF0ZSBfY29sdW1uSGVhZGVyUG9ydGFsUmVmOiBDZWxsSGVhZGVyUG9ydGFsUmVmPFJvdywgYW55PjtcbiAgcHJpdmF0ZSBfY2VsbFJlbmRlcmVyUG9ydGFsUmVmOiBDZWxsUmVuZGVyZXJQb3J0YWxSZWY8Um93LCBhbnk+O1xuICBwcml2YXRlIF9jZWxsRWRpdG9yUG9ydGFsUmVmOiBDZWxsRWRpdG9yUG9ydGFsUmVmPFJvdywgYW55PjtcblxuICBwcml2YXRlIF9lbmFibGVSb3dTZWxlY3Rpb24gPSB0cnVlO1xuICBwcml2YXRlIF9mbGV4ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfZGVmYXVsdFZpc2liaWxpdHkkID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IERlbGVnYXRpbmdWYWx1ZU1vZGVsPGJvb2xlYW4+KCkud2l0aERlZmF1bHQodHJ1ZSkpO1xuICBwcml2YXRlIF92aXNpYmxlJCA9IHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBEZWxlZ2F0aW5nVmFsdWVNb2RlbDxib29sZWFuPigpLndpdGhEZWZhdWx0KHRoaXMuX2RlZmF1bHRWaXNpYmlsaXR5JCkpO1xuICByZWFkb25seSBkYXNoZXJpc2VkQ29sdW1uSWQ6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHRleHRTZWFyY2hEZWxlZ2F0ZSA9IG5ldyBDb2x1bW5UZXh0U2VhcmNoV3JhcHBlcjxSb3c+KCk7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgY29sdW1uSWQ6IHN0cmluZywgcHJpdmF0ZSB0ZXh0UHJvcGVydGllc1Byb3ZpZGVyOiBDb2x1bW5Nb2RlbC5UZXh0UHJvcGVydGllc1Byb3ZpZGVyKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmluc3RhbGxIZWFkZXJSZW5kZXJlcigpO1xuICAgIHRoaXMuZGFzaGVyaXNlZENvbHVtbklkID0gU3RyaW5neS5mcm9tKGNvbHVtbklkKS5kYXNoZXJpemUoKS50b1N0cmluZygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc3RhbGxIZWFkZXJSZW5kZXJlcigpIHtcbiAgICB0aGlzLmNlbGxIZWFkZXJSZW5kZXJlcihEZWZhdWx0SGVhZGVyQ2VsbFJlbmRlcmVyQ29tcG9uZW50LCAoY29tcG9uZW50LCBjb2x1bW4pID0+IHtcbiAgICAgIGNvbXBvbmVudC5oZWFkZXJUZXh0ID0gY29sdW1uLmdldEhlYWRlclRleHQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgZ2V0SGVhZGVyVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldENvbHVtblRleHRQcm9wZXJ0aWVzKCk/LmhlYWRlclRleHQoKSB8fCB0aGlzLmdldERlZmF1bHRIZWFkZXJUZXh0KCk7XG4gIH1cblxuICBpc1Zpc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZSQudmFsdWU7XG4gIH1cblxuICBnZXQgdmlzaWJsZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGUkLnJlYWRvbmx5O1xuICB9XG5cbiAgdmlzaWJsZVdoaWxlKHZpc2libGU6IFZhbHVlTW9kZWw8Ym9vbGVhbj4pOiB0aGlzIHtcbiAgICB0aGlzLl92aXNpYmxlJC5zZXREZWxlZ2F0ZSh2aXNpYmxlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXREZWZhdWx0VmlzaWJpbGl0eSh2aXNpYmxlOiBWYWx1ZU1vZGVsPGJvb2xlYW4+KSB7XG4gICAgdGhpcy5fZGVmYXVsdFZpc2liaWxpdHkkLnNldERlbGVnYXRlKHZpc2libGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERlZmF1bHRIZWFkZXJUZXh0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbklkO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXRDb2x1bW5UZXh0UHJvcGVydGllcygpOiBDb2x1bW5UZXh0UHJvcGVydGllcyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtblRleHRQcm9wZXJ0aWVzIHx8IHRoaXMudGV4dFByb3BlcnRpZXNQcm92aWRlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSAjY29sdW1uVGV4dFByb3BlcnRpZXMgaW5zdGVhZFxuICAgKiBAcGFyYW0gY29sdW1uVGV4dFByb3BlcnRpZXNcbiAgICovXG4gIHRleHRQcm9wZXJ0aWVzKGNvbHVtblRleHRQcm9wZXJ0aWVzOiBDb2x1bW5UZXh0UHJvcGVydGllcyk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLmNvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtblRleHRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIGNvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtblRleHRQcm9wZXJ0aWVzOiBDb2x1bW5UZXh0UHJvcGVydGllcyk6IHRoaXMge1xuICAgIHRoaXMuX2NvbHVtblRleHRQcm9wZXJ0aWVzID0gY29sdW1uVGV4dFByb3BlcnRpZXM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXRTZWFyY2hUZXh0Rm9yKHJvdzogUm93KTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHRTZWFyY2hEZWxlZ2F0ZS5mb3JtYXQocm93KVxuICB9XG5cbiAgcHJvdGVjdGVkIGNvbmZpZ3VyZUNvbHVtblRleHRTZWFyY2goZm9ybWF0dGVyOiBDb2x1bW5UZXh0U2VhcmNoRm9ybWF0dGVyPFJvdz4pXG4gIHByb3RlY3RlZCBjb25maWd1cmVDb2x1bW5UZXh0U2VhcmNoPFQ+KGZvcm1hdHRlcjogQ29sdW1uVGV4dFNlYXJjaEZvcm1hdHRlcjxUPiwgbWFwcGVyOiAocm93OlJvdykgPT4gVClcbiAgcHJvdGVjdGVkIGNvbmZpZ3VyZUNvbHVtblRleHRTZWFyY2goZm9ybWF0dGVyOiBDb2x1bW5UZXh0U2VhcmNoRm9ybWF0dGVyPGFueT4sIG1hcHBlcj86IChyb3c6Um93KSA9PiBhbnkpIHtcbiAgICBhc3NlcnQubm90TmlsKGZvcm1hdHRlcik7XG4gICAgY29uc29sZS5sb2coe2NvbDogdGhpcy5jb2x1bW5JZCwgZm9ybWF0dGVyfSk7XG4gICAgdGhpcy50ZXh0U2VhcmNoRGVsZWdhdGUuc2V0RGVsZWdhdGUoZm9ybWF0dGVyLCBtYXBwZXIpO1xuICB9XG5cblxuICBwcm90ZWN0ZWQgY29uZmlndXJlSGVhZGVyUmVuZGVyZXI8Qz4oY29uZmlnOiBDZWxsSGVhZGVyUG9ydGFsUmVmPFJvdywgYW55Pik6IHZvaWQge1xuICAgIHRoaXMuX2NvbHVtbkhlYWRlclBvcnRhbFJlZiA9IGNvbmZpZztcbiAgfVxuXG4gIHByb3RlY3RlZCBjb25maWd1cmVDZWxsUmVuZGVyZXI8Qz4oY29uZmlnOiBDZWxsUmVuZGVyZXJQb3J0YWxSZWY8Um93LCBhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5fY2VsbFJlbmRlcmVyUG9ydGFsUmVmID0gY29uZmlnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbmZpZ3VyZUNlbGxFZGl0b3I8RT4oY2VsbEVkaXRvcjogQ2VsbEVkaXRvclBvcnRhbFJlZjxSb3csIEU+KTogdm9pZCB7XG4gICAgdGhpcy5fY2VsbEVkaXRvclBvcnRhbFJlZiA9IGNlbGxFZGl0b3I7XG4gIH1cblxuICBjZWxsSGVhZGVyUmVuZGVyZXI8Qz4oY29tcG9uZW50VHlwZTogQ29tcG9uZW50VHlwZTxDPiwgaW5pdGlhbGlzZXI6IChjb21wb25lbnQ6IEMsIGNvbHVtbjogQ29sdW1uTW9kZWw8Um93PikgPT4gdm9pZCk6IHRoaXMge1xuICAgIHRoaXMuY29uZmlndXJlSGVhZGVyUmVuZGVyZXIobmV3IENlbGxIZWFkZXJQb3J0YWxSZWY8Um93LCBDPihjb21wb25lbnRUeXBlLCBpbml0aWFsaXNlcikpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZmxleChmbGV4ID0gdHJ1ZSkge1xuICAgIHRoaXMuX2ZsZXggPSBmbGV4O1xuICB9XG5cbiAgaXNGbGV4KCkge1xuICAgIHJldHVybiB0aGlzLl9mbGV4O1xuICB9XG5cbiAgaGFzRWRpdG9yUG9ydGFsKCkge1xuICAgIHJldHVybiAhIXRoaXMuX2NlbGxFZGl0b3JQb3J0YWxSZWY7XG4gIH1cblxuICBhdHRhY2hIZWFkZXJDZWxsKGhvc3Q6IGFueSkge1xuICAgIHRoaXMuX2NvbHVtbkhlYWRlclBvcnRhbFJlZi5pbml0aWFsaXNlSG9zdChob3N0LCB0aGlzKTtcbiAgfVxuXG4gIGF0dGFjaENlbGwoaG9zdDogYW55KSB7XG4gICAgdGhpcy5fY2VsbFJlbmRlcmVyUG9ydGFsUmVmLmluaXRpYWxpc2VIb3N0KGhvc3QsIHRoaXMpO1xuICAgIGlmICh0aGlzLmhhc0VkaXRvclBvcnRhbCgpKSB7XG4gICAgICB0aGlzLl9jZWxsRWRpdG9yUG9ydGFsUmVmLmluaXRpYWxpc2VIb3N0KGhvc3QsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIG9uSGVhZGVyQXR0YWNoZWQoaG9zdDogVGFibGVIZWFkZXJDZWxsQ29tcG9uZW50LCByZWY6IENka1BvcnRhbE91dGxldEF0dGFjaGVkUmVmKSB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5nZXRDb21wb25lbnQocmVmKTtcbiAgICB0aGlzLl9jb2x1bW5IZWFkZXJQb3J0YWxSZWYub25Qb3J0YWxBdHRhY2hlZChob3N0LCBjb21wb25lbnQpO1xuICB9XG5cbiAgb25SZW5kZXJlckF0dGFjaGVkKGhvc3Q6IFRhYmxlQ2VsbENvbXBvbmVudDxSb3c+LCByZWY6IENka1BvcnRhbE91dGxldEF0dGFjaGVkUmVmKSB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5nZXRDb21wb25lbnRPckVtYmVkZGVkVmlldyhyZWYpO1xuICAgIHRoaXMuX2NlbGxSZW5kZXJlclBvcnRhbFJlZi5vblBvcnRhbEF0dGFjaGVkKGhvc3QsIGNvbXBvbmVudCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvbkVkaXRvckF0dGFjaGVkKGhvc3Q6IFRhYmxlQ2VsbENvbXBvbmVudDxSb3c+LCByZWY6IENka1BvcnRhbE91dGxldEF0dGFjaGVkUmVmKSB7XG4gICAgdGhpcy5fY2VsbEVkaXRvclBvcnRhbFJlZi5vblBvcnRhbEF0dGFjaGVkKGhvc3QsIHRoaXMuZ2V0Q29tcG9uZW50KHJlZikpO1xuICB9XG5cbiAgdXBkYXRlUG9ydGFsQ29udGVudChob3N0OiBUYWJsZUNlbGxDb21wb25lbnQ8Um93Pikge1xuICAgIHRoaXMuX2NlbGxSZW5kZXJlclBvcnRhbFJlZi5wdXNoU3RhdGUoaG9zdCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3NlbGVjdFJvd09uQ2xpY2soc2VsZWN0Um93T25DbGljazogYm9vbGVhbik6IHRoaXMge1xuICAgIHRoaXMuX2VuYWJsZVJvd1NlbGVjdGlvbiA9IHNlbGVjdFJvd09uQ2xpY2s7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpc1Jvd1NlbGVjdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZVJvd1NlbGVjdGlvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb21wb25lbnQocmVmOiBDZGtQb3J0YWxPdXRsZXRBdHRhY2hlZFJlZik6IGFueSB7XG4gICAgaWYgKHJlZiBpbnN0YW5jZW9mIENvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuIHJlZi5pbnN0YW5jZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihcImhlYWRlcnMgb25seSBzdXBwb3J0IGNvbXBvbmVudCBwb3J0YWxzLCBnb3RcIiwgcmVmKTtcbiAgICAgIGxhbmcuaWxsZWdhbFN0YXRlKGBoZWFkZXJzIG9ubHkgc3VwcG9ydCBjb21wb25lbnQgcG9ydGFscywgZ290ICR7cmVmfWApXG4gICAgfVxuICB9XG4gIHByb3RlY3RlZCBnZXRDb21wb25lbnRPckVtYmVkZGVkVmlldyhyZWY6IENka1BvcnRhbE91dGxldEF0dGFjaGVkUmVmKTogYW55IHtcbiAgICBpZiAocmVmIGluc3RhbmNlb2YgQ29tcG9uZW50UmVmKSB7XG4gICAgICByZXR1cm4gcmVmLmluc3RhbmNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVmO1xuICAgIH1cbiAgfVxuXG4gIGluaXRpYWxpc2UoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy50ZXh0U2VhcmNoRGVsZWdhdGUuaW5pdGlhbGlzZShpbmplY3Rvcik7XG4gIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBDb2x1bW5Nb2RlbCB7XG4gIGV4cG9ydCBjb25zdCBDRUxMX1JFTkRFUkVSX0NPTVBPTkVOVF9ST1dfQ0FDSEUgPSBTeW1ib2woJ2F1cC1jZWxsLXJlbmRlcmVyOnJvdy1kYXRhLWNhY2hlJyk7XG4gIGV4cG9ydCB0eXBlIFRleHRQcm9wZXJ0aWVzUHJvdmlkZXIgPSAoKSA9PiBDb2x1bW5UZXh0UHJvcGVydGllc1xufVxuXG4iXX0=
@@ -0,0 +1,35 @@
1
+ import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
2
+ import { assert } from '@coolon/pectin';
3
+ import { AbstractTableComponent } from '../../abstract-table.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../abstract-table.component";
6
+ export class ColumnTemplateDirective {
7
+ constructor(host, templateRef, viewContainer) {
8
+ this.host = host;
9
+ this.templateRef = templateRef;
10
+ this.viewContainer = viewContainer;
11
+ this.aupColumnTemplateFillCell = false;
12
+ this.aupColumnTemplateAutoPadChild = undefined;
13
+ }
14
+ ngOnInit() {
15
+ assert.isTruthy(this.aupColumnTemplateColumnId);
16
+ this.host.registerColumnTemplate(this.aupColumnTemplateColumnId, this.templateRef, this.viewContainer, this.aupColumnTemplateFillCell, this.aupColumnTemplateAutoPadChild ?? this.aupColumnTemplateFillCell);
17
+ }
18
+ }
19
+ ColumnTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ColumnTemplateDirective, deps: [{ token: i1.AbstractTableComponent }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
20
+ ColumnTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.3", type: ColumnTemplateDirective, selector: "[aupColumnTemplate]", inputs: { aupColumnTemplate: "aupColumnTemplate", aupColumnTemplateColumnId: "aupColumnTemplateColumnId", aupColumnTemplateFillCell: "aupColumnTemplateFillCell", aupColumnTemplateAutoPadChild: "aupColumnTemplateAutoPadChild" }, ngImport: i0 });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ColumnTemplateDirective, decorators: [{
22
+ type: Directive,
23
+ args: [{
24
+ selector: '[aupColumnTemplate]'
25
+ }]
26
+ }], ctorParameters: function () { return [{ type: i1.AbstractTableComponent }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { aupColumnTemplate: [{
27
+ type: Input
28
+ }], aupColumnTemplateColumnId: [{
29
+ type: Input
30
+ }], aupColumnTemplateFillCell: [{
31
+ type: Input
32
+ }], aupColumnTemplateAutoPadChild: [{
33
+ type: Input
34
+ }] } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXRlbXBsYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL2NvbHVtbi9jb2x1bW4tdGVtcGxhdGUvY29sdW1uLXRlbXBsYXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7QUFLeEUsTUFBTSxPQUFPLHVCQUF1QjtJQWNsQyxZQUFxQixJQUFpQyxFQUNsQyxXQUE2QixFQUM3QixhQUErQjtRQUY5QixTQUFJLEdBQUosSUFBSSxDQUE2QjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBUG5ELDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQUdsQyxrQ0FBNkIsR0FBRyxTQUFTLENBQUM7SUFLMUMsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUM3RCxJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsYUFBYSxFQUNsQixJQUFJLENBQUMseUJBQXlCLEVBQzlCLElBQUksQ0FBQyw2QkFBNkIsSUFBSSxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMxRSxDQUFDOztvSEExQlUsdUJBQXVCO3dHQUF2Qix1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFIbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO2lCQUNoQztzS0FJQyxpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBSU4seUJBQXlCO3NCQUR4QixLQUFLO2dCQUlOLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFJTiw2QkFBNkI7c0JBRDVCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBBYnN0cmFjdFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYWJzdHJhY3QtdGFibGUuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2F1cENvbHVtblRlbXBsYXRlXSdcbn0pXG5leHBvcnQgY2xhc3MgQ29sdW1uVGVtcGxhdGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpXG4gIGF1cENvbHVtblRlbXBsYXRlOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgYXVwQ29sdW1uVGVtcGxhdGVDb2x1bW5JZDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGF1cENvbHVtblRlbXBsYXRlRmlsbENlbGwgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBhdXBDb2x1bW5UZW1wbGF0ZUF1dG9QYWRDaGlsZCA9IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBob3N0OiBBYnN0cmFjdFRhYmxlQ29tcG9uZW50PGFueT4sXG4gICAgICAgICAgICAgIHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgICAgICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZikge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KHRoaXMuYXVwQ29sdW1uVGVtcGxhdGVDb2x1bW5JZCk7XG4gICAgdGhpcy5ob3N0LnJlZ2lzdGVyQ29sdW1uVGVtcGxhdGUodGhpcy5hdXBDb2x1bW5UZW1wbGF0ZUNvbHVtbklkLFxuICAgICAgdGhpcy50ZW1wbGF0ZVJlZixcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lcixcbiAgICAgIHRoaXMuYXVwQ29sdW1uVGVtcGxhdGVGaWxsQ2VsbCxcbiAgICAgIHRoaXMuYXVwQ29sdW1uVGVtcGxhdGVBdXRvUGFkQ2hpbGQgPz8gdGhpcy5hdXBDb2x1bW5UZW1wbGF0ZUZpbGxDZWxsKTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXRleHQtcHJvcGVydGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL2NvbHVtbi9jb2x1bW4tdGV4dC1wcm9wZXJ0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENvbHVtblRleHRQcm9wZXJ0aWVzIHtcbiAgaGVhZGVyVGV4dD8oKTogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { TemplateCellRendererPortalRef } from "../renderer/cell-portal-ref";
2
+ import { ColumnModel } from "./column-model";
3
+ export class CustomTemplateColumnModel extends ColumnModel {
4
+ constructor(columnId, defaults) {
5
+ super(columnId, defaults);
6
+ this.config = new TemplateCellRendererPortalRef();
7
+ this.configureCellRenderer(this.config);
8
+ }
9
+ setTemplate(templateRef, viewContainer, fillCell, padChild) {
10
+ this.config.registerPortal(templateRef, viewContainer, fillCell, padChild);
11
+ }
12
+ selectRowOnClick(selectOnRowClick) {
13
+ return this._selectRowOnClick(selectOnRowClick);
14
+ }
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXRlbXBsYXRlLWNvbHVtbi1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL2NvbHVtbi9jdXN0b20tdGVtcGxhdGUtY29sdW1uLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxNQUFNLE9BQU8seUJBQStCLFNBQVEsV0FBZ0I7SUFHbEUsWUFBWSxRQUFnQixFQUFFLFFBQTRDO1FBQ3hFLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFIWCxXQUFNLEdBQUcsSUFBSSw2QkFBNkIsRUFBTyxDQUFDO1FBSWpFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELFdBQVcsQ0FBQyxXQUE2QixFQUFFLGFBQStCLEVBQUUsUUFBaUIsRUFBRSxRQUFpQjtRQUM5RyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsZ0JBQXlCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVGVtcGxhdGVDZWxsUmVuZGVyZXJQb3J0YWxSZWYgfSBmcm9tIFwiLi4vcmVuZGVyZXIvY2VsbC1wb3J0YWwtcmVmXCI7XG5pbXBvcnQgeyBDb2x1bW5Nb2RlbCB9IGZyb20gXCIuL2NvbHVtbi1tb2RlbFwiO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tVGVtcGxhdGVDb2x1bW5Nb2RlbDxSb3c+IGV4dGVuZHMgQ29sdW1uTW9kZWw8Um93PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gbmV3IFRlbXBsYXRlQ2VsbFJlbmRlcmVyUG9ydGFsUmVmPFJvdz4oKTtcblxuICBjb25zdHJ1Y3Rvcihjb2x1bW5JZDogc3RyaW5nLCBkZWZhdWx0czogQ29sdW1uTW9kZWwuVGV4dFByb3BlcnRpZXNQcm92aWRlcikge1xuICAgIHN1cGVyKGNvbHVtbklkLCBkZWZhdWx0cyk7XG4gICAgdGhpcy5jb25maWd1cmVDZWxsUmVuZGVyZXIodGhpcy5jb25maWcpO1xuICB9XG5cbiAgc2V0VGVtcGxhdGUodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsIGZpbGxDZWxsOiBib29sZWFuLCBwYWRDaGlsZDogYm9vbGVhbikge1xuICAgIHRoaXMuY29uZmlnLnJlZ2lzdGVyUG9ydGFsKHRlbXBsYXRlUmVmLCB2aWV3Q29udGFpbmVyLCBmaWxsQ2VsbCwgcGFkQ2hpbGQpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdFJvd09uQ2xpY2soc2VsZWN0T25Sb3dDbGljazogYm9vbGVhbik6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RSb3dPbkNsaWNrKHNlbGVjdE9uUm93Q2xpY2spO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,37 @@
1
+ import { isFunction } from "lodash";
2
+ import { ComponentCellRendererPortalRef } from "../renderer/cell-portal-ref";
3
+ import { DefaultCellRendererComponent } from "../renderer/default-cell-renderer/default-cell-renderer.component";
4
+ import { ColumnTextSearchFormatter } from "../search/column-text-search-formatter";
5
+ import { EnableCellTextSearch } from "../search/enable-cell-text-search.decorator";
6
+ import { ColumnModel } from "./column-model";
7
+ export class CustomValueColumnModel extends ColumnModel {
8
+ constructor(columnId, defaults, getValue) {
9
+ super(columnId, defaults);
10
+ this.getValue = getValue;
11
+ this.cellRenderer(DefaultCellRendererComponent);
12
+ }
13
+ cellRenderer(componentType, onComponentInitOrOptions) {
14
+ this.configureColumnTextSearch(EnableCellTextSearch.getFormatter(componentType, () => new ColumnTextSearchFormatter.Null()), row => this.getValue(row));
15
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
16
+ if (firstTime) {
17
+ if (isFunction(onComponentInitOrOptions)) {
18
+ onComponentInitOrOptions(component);
19
+ }
20
+ else {
21
+ if (isFunction(onComponentInitOrOptions?.onComponentInit)) {
22
+ onComponentInitOrOptions.onComponentInit(component);
23
+ }
24
+ }
25
+ }
26
+ component.value = this.getValue(rowData.row);
27
+ if (!isFunction(onComponentInitOrOptions) && isFunction(onComponentInitOrOptions?.onRowUpdate)) {
28
+ onComponentInitOrOptions.onRowUpdate(component, rowData.row);
29
+ }
30
+ }));
31
+ return this;
32
+ }
33
+ selectRowOnClick(selectOnRowClick) {
34
+ return this._selectRowOnClick(selectOnRowClick);
35
+ }
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXZhbHVlLWNvbHVtbi1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL2NvbHVtbi9jdXN0b20tdmFsdWUtY29sdW1uLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDcEMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0UsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDakgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDbkYsT0FBTyxFQUF1QixXQUFXLEVBQW1CLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkYsTUFBTSxPQUFPLHNCQUErQixTQUFRLFdBQWdCO0lBRWxFLFlBQVksUUFBZ0IsRUFBRSxRQUE0QyxFQUFVLFFBQXlCO1FBQzNHLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFEd0QsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFFM0csSUFBSSxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxZQUFZLENBQWtDLGFBQStCLEVBQUUsd0JBQTJFO1FBQ3hKLElBQUksQ0FBQyx5QkFBeUIsQ0FDNUIsb0JBQW9CLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLHlCQUF5QixDQUFDLElBQUksRUFBRSxDQUFDLEVBQzVGLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FDMUIsQ0FBQztRQUNGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLDhCQUE4QixDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUU7WUFDN0csSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsSUFBSSxVQUFVLENBQUMsd0JBQXdCLENBQUMsRUFBRTtvQkFDeEMsd0JBQXdCLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3JDO3FCQUFNO29CQUNMLElBQUksVUFBVSxDQUFDLHdCQUF3QixFQUFFLGVBQWUsQ0FBQyxFQUFFO3dCQUN6RCx3QkFBd0IsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7cUJBQ3JEO2lCQUNGO2FBQ0Y7WUFDRCxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRTdDLElBQUksQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsSUFBSSxVQUFVLENBQUMsd0JBQXdCLEVBQUUsV0FBVyxDQUFDLEVBQUU7Z0JBQzlGLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzlEO1FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNKLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLGdCQUFnQixDQUFDLGdCQUF5QjtRQUMvQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcblxuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7IENvbXBvbmVudENlbGxSZW5kZXJlclBvcnRhbFJlZiB9IGZyb20gXCIuLi9yZW5kZXJlci9jZWxsLXBvcnRhbC1yZWZcIjtcbmltcG9ydCB7IERlZmF1bHRDZWxsUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vcmVuZGVyZXIvZGVmYXVsdC1jZWxsLXJlbmRlcmVyL2RlZmF1bHQtY2VsbC1yZW5kZXJlci5jb21wb25lbnRcIjtcbmltcG9ydCB7IENvbHVtblRleHRTZWFyY2hGb3JtYXR0ZXIgfSBmcm9tIFwiLi4vc2VhcmNoL2NvbHVtbi10ZXh0LXNlYXJjaC1mb3JtYXR0ZXJcIjtcbmltcG9ydCB7IEVuYWJsZUNlbGxUZXh0U2VhcmNoIH0gZnJvbSBcIi4uL3NlYXJjaC9lbmFibGUtY2VsbC10ZXh0LXNlYXJjaC5kZWNvcmF0b3JcIjtcbmltcG9ydCB7IENlbGxSZW5kZXJlck9wdGlvbnMsIENvbHVtbk1vZGVsLCBPbkNvbXBvbmVudEluaXQgfSBmcm9tIFwiLi9jb2x1bW4tbW9kZWxcIjtcblxuZXhwb3J0IGNsYXNzIEN1c3RvbVZhbHVlQ29sdW1uTW9kZWw8Um93LCBWPiBleHRlbmRzIENvbHVtbk1vZGVsPFJvdz4ge1xuXG4gIGNvbnN0cnVjdG9yKGNvbHVtbklkOiBzdHJpbmcsIGRlZmF1bHRzOiBDb2x1bW5Nb2RlbC5UZXh0UHJvcGVydGllc1Byb3ZpZGVyLCBwcml2YXRlIGdldFZhbHVlOiAocm93OiBSb3cpID0+IFYpIHtcbiAgICBzdXBlcihjb2x1bW5JZCwgZGVmYXVsdHMpO1xuICAgIHRoaXMuY2VsbFJlbmRlcmVyKERlZmF1bHRDZWxsUmVuZGVyZXJDb21wb25lbnQpO1xuICB9XG5cbiAgY2VsbFJlbmRlcmVyPEMgZXh0ZW5kcyB7IHZhbHVlOiBQYXJ0aWFsPFY+IH0+KGNvbXBvbmVudFR5cGU6IENvbXBvbmVudFR5cGU8Qz4sIG9uQ29tcG9uZW50SW5pdE9yT3B0aW9ucz86IENlbGxSZW5kZXJlck9wdGlvbnM8Um93LCBDPiB8IE9uQ29tcG9uZW50SW5pdDxDPik6IHRoaXMge1xuICAgIHRoaXMuY29uZmlndXJlQ29sdW1uVGV4dFNlYXJjaChcbiAgICAgIEVuYWJsZUNlbGxUZXh0U2VhcmNoLmdldEZvcm1hdHRlcihjb21wb25lbnRUeXBlLCAoKSA9PiBuZXcgQ29sdW1uVGV4dFNlYXJjaEZvcm1hdHRlci5OdWxsKCkpLFxuICAgICAgcm93ID0+IHRoaXMuZ2V0VmFsdWUocm93KVxuICAgICk7XG4gICAgdGhpcy5jb25maWd1cmVDZWxsUmVuZGVyZXIobmV3IENvbXBvbmVudENlbGxSZW5kZXJlclBvcnRhbFJlZihjb21wb25lbnRUeXBlLCAoY29tcG9uZW50LCByb3dEYXRhLCBmaXJzdFRpbWUpID0+IHtcbiAgICAgIGlmIChmaXJzdFRpbWUpIHtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24ob25Db21wb25lbnRJbml0T3JPcHRpb25zKSkge1xuICAgICAgICAgIG9uQ29tcG9uZW50SW5pdE9yT3B0aW9ucyhjb21wb25lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKG9uQ29tcG9uZW50SW5pdE9yT3B0aW9ucz8ub25Db21wb25lbnRJbml0KSkge1xuICAgICAgICAgICAgb25Db21wb25lbnRJbml0T3JPcHRpb25zLm9uQ29tcG9uZW50SW5pdChjb21wb25lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29tcG9uZW50LnZhbHVlID0gdGhpcy5nZXRWYWx1ZShyb3dEYXRhLnJvdyk7XG5cbiAgICAgIGlmICghaXNGdW5jdGlvbihvbkNvbXBvbmVudEluaXRPck9wdGlvbnMpICYmIGlzRnVuY3Rpb24ob25Db21wb25lbnRJbml0T3JPcHRpb25zPy5vblJvd1VwZGF0ZSkpIHtcbiAgICAgICAgb25Db21wb25lbnRJbml0T3JPcHRpb25zLm9uUm93VXBkYXRlKGNvbXBvbmVudCwgcm93RGF0YS5yb3cpO1xuICAgICAgfVxuICAgIH0pKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RSb3dPbkNsaWNrKHNlbGVjdE9uUm93Q2xpY2s6IGJvb2xlYW4pOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0Um93T25DbGljayhzZWxlY3RPblJvd0NsaWNrKTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { EditRowControls } from "../editor/edit-row-controls/edit-row-controls.component";
2
+ import { ComponentCellRendererPortalRef } from "../renderer/cell-portal-ref";
3
+ import { ColumnModel } from "./column-model";
4
+ export class EditorControlColumnModel extends ColumnModel {
5
+ constructor(columnId, saveCommandFactory, defaults) {
6
+ super(columnId, defaults);
7
+ this.cellRenderer(EditRowControls);
8
+ }
9
+ cellRenderer(componentType) {
10
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
11
+ component.row = rowData.row;
12
+ component.editSession = rowData.editSession;
13
+ component.editRowCommand = rowData.editRowCommand;
14
+ }));
15
+ return this;
16
+ }
17
+ getDefaultHeaderText() {
18
+ return '';
19
+ }
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWNvbnRyb2xzLWNvbHVtbi1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL2NvbHVtbi9lZGl0b3ItY29udHJvbHMtY29sdW1uLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUUxRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsV0FBVyxFQUFXLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsTUFBTSxPQUFPLHdCQUE4QixTQUFRLFdBQWdCO0lBRWpFLFlBQVksUUFBZ0IsRUFBRSxrQkFBdUYsRUFBRSxRQUE0QztRQUNqSyxLQUFLLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFlBQVksQ0FBQyxhQUF3RztRQUNuSCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSw4QkFBOEIsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLEVBQUUsT0FBcUIsRUFBRSxFQUFFO1lBQ2hILFNBQVMsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUM1QixTQUFTLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7WUFDNUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDSixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFUyxvQkFBb0I7UUFDNUIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XG5pbXBvcnQgeyBDb21tYW5kLCBEaXJ0eVRyYWNraW5nRm9ybSB9IGZyb20gXCJAY29vbG9uL3BlY3RpblwiO1xuaW1wb3J0IHsgRWRpdFJvd0NvbnRyb2xzIH0gZnJvbSBcIi4uL2VkaXRvci9lZGl0LXJvdy1jb250cm9scy9lZGl0LXJvdy1jb250cm9scy5jb21wb25lbnRcIjtcbmltcG9ydCB7IEVkaXRTZXNzaW9uIH0gZnJvbSBcIi4uL2VkaXRvci9lZGl0LXNlc3Npb25cIjtcbmltcG9ydCB7IENvbXBvbmVudENlbGxSZW5kZXJlclBvcnRhbFJlZiB9IGZyb20gXCIuLi9yZW5kZXJlci9jZWxsLXBvcnRhbC1yZWZcIjtcbmltcG9ydCB7IENvbHVtbk1vZGVsLCBSb3dEYXRhIH0gZnJvbSBcIi4vY29sdW1uLW1vZGVsXCI7XG5cbmV4cG9ydCBjbGFzcyBFZGl0b3JDb250cm9sQ29sdW1uTW9kZWw8Um93PiBleHRlbmRzIENvbHVtbk1vZGVsPFJvdz4ge1xuXG4gIGNvbnN0cnVjdG9yKGNvbHVtbklkOiBzdHJpbmcsIHNhdmVDb21tYW5kRmFjdG9yeTogQ29tbWFuZC5GYWN0b3J5PERpcnR5VHJhY2tpbmdGb3JtPFJvdz4sIGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+PiwgZGVmYXVsdHM6IENvbHVtbk1vZGVsLlRleHRQcm9wZXJ0aWVzUHJvdmlkZXIpIHtcbiAgICBzdXBlcihjb2x1bW5JZCwgZGVmYXVsdHMpO1xuICAgIHRoaXMuY2VsbFJlbmRlcmVyKEVkaXRSb3dDb250cm9scyk7XG4gIH1cblxuICBjZWxsUmVuZGVyZXIoY29tcG9uZW50VHlwZTogQ29tcG9uZW50VHlwZTx7IHJvdzogUm93LCBlZGl0U2Vzc2lvbjogRWRpdFNlc3Npb248Um93PiwgZWRpdFJvd0NvbW1hbmQ6IENvbW1hbmQ8dm9pZD4gfT4pOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZ3VyZUNlbGxSZW5kZXJlcihuZXcgQ29tcG9uZW50Q2VsbFJlbmRlcmVyUG9ydGFsUmVmKGNvbXBvbmVudFR5cGUsIChjb21wb25lbnQsIHJvd0RhdGE6IFJvd0RhdGE8Um93PikgPT4ge1xuICAgICAgY29tcG9uZW50LnJvdyA9IHJvd0RhdGEucm93O1xuICAgICAgY29tcG9uZW50LmVkaXRTZXNzaW9uID0gcm93RGF0YS5lZGl0U2Vzc2lvbjtcbiAgICAgIGNvbXBvbmVudC5lZGl0Um93Q29tbWFuZCA9IHJvd0RhdGEuZWRpdFJvd0NvbW1hbmQ7XG4gICAgfSkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERlZmF1bHRIZWFkZXJUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcnO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,48 @@
1
+ import { assert } from "@coolon/typescript-utilities";
2
+ import { isFunction } from "lodash";
3
+ import { CellEditorPortalRef, ComponentCellRendererPortalRef } from "../renderer/cell-portal-ref";
4
+ import { DefaultListCellRendererComponent } from "../renderer/default-list-cell-renderer/default-list-cell-renderer.component";
5
+ import { ColumnTextSearchFormatter } from "../search/column-text-search-formatter";
6
+ import { EnableCellTextSearch } from "../search/enable-cell-text-search.decorator";
7
+ import { ColumnModel } from "./column-model";
8
+ export class ListPropertyColumnModel extends ColumnModel {
9
+ constructor(id, property, defaults) {
10
+ super(id, defaults);
11
+ this.property = property;
12
+ this._format = (value) => value.map(v => v?.toString()).join(", ");
13
+ this.cellRenderer(DefaultListCellRendererComponent);
14
+ }
15
+ cellRenderer(componentType) {
16
+ this.configureColumnTextSearch(EnableCellTextSearch.getFormatter(componentType, () => new ColumnTextSearchFormatter.DefaultArrayFormatter()), row => row[this.property]);
17
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
18
+ let rowElement = rowData.row[this.property];
19
+ // @ts-ignore Started complaining in ts 4.5.. but I think my logic is correct...
20
+ component.value = this._format(rowElement);
21
+ }));
22
+ return this;
23
+ }
24
+ cellEditor(editor, validatorsOrInitialiser, initialiseComponent) {
25
+ const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
26
+ const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
27
+ this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
28
+ const formListModel = editSession.form.pluckList(this.property);
29
+ if (validators) {
30
+ formListModel.validateUsing(validators);
31
+ }
32
+ component.listModel = formListModel;
33
+ if (initialiser) {
34
+ initialiser(component);
35
+ }
36
+ }));
37
+ return this;
38
+ }
39
+ format(formatter) {
40
+ assert.isFunction(formatter);
41
+ this._format = formatter;
42
+ return this;
43
+ }
44
+ selectRowOnClick(selectRowOnClick) {
45
+ return this._selectRowOnClick(selectRowOnClick);
46
+ }
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1wcm9wZXJ5LWNvbHVtbi1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL2NvbHVtbi9saXN0LXByb3BlcnktY29sdW1uLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBR3BDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR2xHLE9BQU8sRUFDTCxnQ0FBZ0MsRUFDakMsTUFBTSw2RUFBNkUsQ0FBQztBQUNyRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsTUFBTSxPQUFPLHVCQUFxRSxTQUFRLFdBQWdCO0lBSXhHLFlBQVksRUFBVSxFQUFXLFFBQVcsRUFBRSxRQUE0QztRQUN4RixLQUFLLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRFcsYUFBUSxHQUFSLFFBQVEsQ0FBRztRQUZwQyxZQUFPLEdBQXFELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBSXRILElBQUksQ0FBQyxZQUFZLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsWUFBWSxDQUFDLGFBQTRFO1FBQ3ZGLElBQUksQ0FBQyx5QkFBeUIsQ0FDNUIsb0JBQW9CLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLHlCQUF5QixDQUFDLHFCQUFxQixFQUFFLENBQUMsRUFDN0csR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUMxQixDQUFDO1FBQ0YsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksOEJBQThCLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2xHLElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVDLGdGQUFnRjtZQUNoRixTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNKLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUlELFVBQVUsQ0FBb0UsTUFBd0IsRUFBRSx1QkFBa0csRUFBRSxtQkFBNEM7UUFDdFAsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2hHLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUM7UUFFeEcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBWSxFQUFFLFdBQTZCLEVBQUUsRUFBRTtZQUN2RyxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEUsSUFBSSxVQUFVLEVBQUU7Z0JBQ2QsYUFBYSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QztZQUNELFNBQVMsQ0FBQyxTQUFTLEdBQUcsYUFBYSxDQUFDO1lBQ3BDLElBQUksV0FBVyxFQUFFO2dCQUNmLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUN4QjtRQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDSixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBMkQ7UUFDaEUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxnQkFBeUI7UUFDL0MsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XG5pbXBvcnQgeyBUeXBlcywgVmFsaWRhdG9yIH0gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiQGNvb2xvbi90eXBlc2NyaXB0LXV0aWxpdGllc1wiO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7IEVkaXRTZXNzaW9uIH0gZnJvbSBcIi4uL2VkaXRvci9lZGl0LXNlc3Npb25cIjtcbmltcG9ydCB7IENlbGxMaXN0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSBcIi4uL3JlbmRlcmVyL2NlbGwtZWRpdG9yc1wiO1xuaW1wb3J0IHsgQ2VsbEVkaXRvclBvcnRhbFJlZiwgQ29tcG9uZW50Q2VsbFJlbmRlcmVyUG9ydGFsUmVmIH0gZnJvbSBcIi4uL3JlbmRlcmVyL2NlbGwtcG9ydGFsLXJlZlwiO1xuaW1wb3J0IHsgQ2VsbFJlbmRlcmVyIH0gZnJvbSBcIi4uL3JlbmRlcmVyL2NlbGwtcmVuZGVyZXJcIjtcbmltcG9ydCB7IERlZmF1bHRDZWxsUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vcmVuZGVyZXIvZGVmYXVsdC1jZWxsLXJlbmRlcmVyL2RlZmF1bHQtY2VsbC1yZW5kZXJlci5jb21wb25lbnRcIjtcbmltcG9ydCB7XG4gIERlZmF1bHRMaXN0Q2VsbFJlbmRlcmVyQ29tcG9uZW50XG59IGZyb20gXCIuLi9yZW5kZXJlci9kZWZhdWx0LWxpc3QtY2VsbC1yZW5kZXJlci9kZWZhdWx0LWxpc3QtY2VsbC1yZW5kZXJlci5jb21wb25lbnRcIjtcbmltcG9ydCB7IENvbHVtblRleHRTZWFyY2hGb3JtYXR0ZXIgfSBmcm9tIFwiLi4vc2VhcmNoL2NvbHVtbi10ZXh0LXNlYXJjaC1mb3JtYXR0ZXJcIjtcbmltcG9ydCB7IEVuYWJsZUNlbGxUZXh0U2VhcmNoIH0gZnJvbSBcIi4uL3NlYXJjaC9lbmFibGUtY2VsbC10ZXh0LXNlYXJjaC5kZWNvcmF0b3JcIjtcbmltcG9ydCB7IENvbHVtbk1vZGVsIH0gZnJvbSBcIi4vY29sdW1uLW1vZGVsXCI7XG5cbmV4cG9ydCBjbGFzcyBMaXN0UHJvcGVydHlDb2x1bW5Nb2RlbDxSb3csIFAgZXh0ZW5kcyBUeXBlcy5BcnJheVByb3BlcnRpZXNPZjxSb3c+PiBleHRlbmRzIENvbHVtbk1vZGVsPFJvdz4ge1xuXG4gIHByaXZhdGUgX2Zvcm1hdDogKHZhbHVlOiBUeXBlcy5BcnJheUVsZW1lbnRUeXBlPFJvdywgUD5bXSkgPT4gYW55ID0gKHZhbHVlKSA9PiB2YWx1ZS5tYXAodiA9PiB2Py50b1N0cmluZygpKS5qb2luKFwiLCBcIik7XG5cbiAgY29uc3RydWN0b3IoaWQ6IHN0cmluZywgcmVhZG9ubHkgcHJvcGVydHk6IFAsIGRlZmF1bHRzOiBDb2x1bW5Nb2RlbC5UZXh0UHJvcGVydGllc1Byb3ZpZGVyKSB7XG4gICAgc3VwZXIoaWQsIGRlZmF1bHRzKTtcbiAgICB0aGlzLmNlbGxSZW5kZXJlcihEZWZhdWx0TGlzdENlbGxSZW5kZXJlckNvbXBvbmVudCk7XG4gIH1cblxuICBjZWxsUmVuZGVyZXIoY29tcG9uZW50VHlwZTogQ29tcG9uZW50VHlwZTxDZWxsUmVuZGVyZXI8VHlwZXMuQXJyYXlFbGVtZW50VHlwZTxSb3csIFA+W10+Pik6IHRoaXMge1xuICAgIHRoaXMuY29uZmlndXJlQ29sdW1uVGV4dFNlYXJjaChcbiAgICAgIEVuYWJsZUNlbGxUZXh0U2VhcmNoLmdldEZvcm1hdHRlcihjb21wb25lbnRUeXBlLCAoKSA9PiBuZXcgQ29sdW1uVGV4dFNlYXJjaEZvcm1hdHRlci5EZWZhdWx0QXJyYXlGb3JtYXR0ZXIoKSksXG4gICAgICByb3cgPT4gcm93W3RoaXMucHJvcGVydHldXG4gICAgKTtcbiAgICB0aGlzLmNvbmZpZ3VyZUNlbGxSZW5kZXJlcihuZXcgQ29tcG9uZW50Q2VsbFJlbmRlcmVyUG9ydGFsUmVmKGNvbXBvbmVudFR5cGUsIChjb21wb25lbnQsIHJvd0RhdGEpID0+IHtcbiAgICAgIGxldCByb3dFbGVtZW50ID0gcm93RGF0YS5yb3dbdGhpcy5wcm9wZXJ0eV07XG4gICAgICAvLyBAdHMtaWdub3JlIFN0YXJ0ZWQgY29tcGxhaW5pbmcgaW4gdHMgNC41Li4gYnV0IEkgdGhpbmsgbXkgbG9naWMgaXMgY29ycmVjdC4uLlxuICAgICAgY29tcG9uZW50LnZhbHVlID0gdGhpcy5fZm9ybWF0KHJvd0VsZW1lbnQpO1xuICAgIH0pKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNlbGxFZGl0b3I8QyBleHRlbmRzIENlbGxMaXN0RWRpdG9yQ29tcG9uZW50PFR5cGVzLkFycmF5RWxlbWVudFR5cGU8Um93LCBQPj4+KGVkaXRvcjogQ29tcG9uZW50VHlwZTxDPiwgdmFsaWRhdG9ycz86IFZhbGlkYXRvcjxUeXBlcy5BcnJheUVsZW1lbnRUeXBlPFJvdywgUD5bXT5bXSwgaW5pdGlhbGlzZUNvbXBvbmVudD86IChjb21wb25lbnQ6IEMpID0+IHZvaWQpOiB0aGlzXG4gIGNlbGxFZGl0b3I8QyBleHRlbmRzIENlbGxMaXN0RWRpdG9yQ29tcG9uZW50PFR5cGVzLkFycmF5RWxlbWVudFR5cGU8Um93LCBQPj4+KGVkaXRvcjogQ29tcG9uZW50VHlwZTxDPiwgaW5pdGlhbGlzZUNvbXBvbmVudD86IChjb21wb25lbnQ6IEMpID0+IHZvaWQpOiB0aGlzXG4gIGNlbGxFZGl0b3I8QyBleHRlbmRzIENlbGxMaXN0RWRpdG9yQ29tcG9uZW50PFR5cGVzLkFycmF5RWxlbWVudFR5cGU8Um93LCBQPj4+KGVkaXRvcjogQ29tcG9uZW50VHlwZTxDPiwgdmFsaWRhdG9yc09ySW5pdGlhbGlzZXI/OiBWYWxpZGF0b3I8VHlwZXMuQXJyYXlFbGVtZW50VHlwZTxSb3csIFA+W10+W10gfCAoKGNvbXBvbmVudDogQykgPT4gdm9pZCksIGluaXRpYWxpc2VDb21wb25lbnQ/OiAoY29tcG9uZW50OiBDKSA9PiB2b2lkKTogdGhpcyB7XG4gICAgY29uc3QgdmFsaWRhdG9ycyA9IEFycmF5LmlzQXJyYXkodmFsaWRhdG9yc09ySW5pdGlhbGlzZXIpID8gdmFsaWRhdG9yc09ySW5pdGlhbGlzZXIgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgaW5pdGlhbGlzZXIgPSBpc0Z1bmN0aW9uKHZhbGlkYXRvcnNPckluaXRpYWxpc2VyKSA/IHZhbGlkYXRvcnNPckluaXRpYWxpc2VyIDogaW5pdGlhbGlzZUNvbXBvbmVudDtcblxuICAgIHRoaXMuY29uZmlndXJlQ2VsbEVkaXRvcihuZXcgQ2VsbEVkaXRvclBvcnRhbFJlZihlZGl0b3IsIChjb21wb25lbnQ6IEMsIGVkaXRTZXNzaW9uOiBFZGl0U2Vzc2lvbjxSb3c+KSA9PiB7XG4gICAgICBjb25zdCBmb3JtTGlzdE1vZGVsID0gZWRpdFNlc3Npb24uZm9ybS5wbHVja0xpc3QodGhpcy5wcm9wZXJ0eSk7XG4gICAgICBpZiAodmFsaWRhdG9ycykge1xuICAgICAgICBmb3JtTGlzdE1vZGVsLnZhbGlkYXRlVXNpbmcodmFsaWRhdG9ycyk7XG4gICAgICB9XG4gICAgICBjb21wb25lbnQubGlzdE1vZGVsID0gZm9ybUxpc3RNb2RlbDtcbiAgICAgIGlmIChpbml0aWFsaXNlcikge1xuICAgICAgICBpbml0aWFsaXNlcihjb21wb25lbnQpO1xuICAgICAgfVxuICAgIH0pKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZvcm1hdChmb3JtYXR0ZXI6ICh2YWx1ZTogVHlwZXMuQXJyYXlFbGVtZW50VHlwZTxSb3csIFA+W10pID0+IGFueSk6IHRoaXMge1xuICAgIGFzc2VydC5pc0Z1bmN0aW9uKGZvcm1hdHRlcik7XG4gICAgdGhpcy5fZm9ybWF0ID0gZm9ybWF0dGVyO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdFJvd09uQ2xpY2soc2VsZWN0Um93T25DbGljazogYm9vbGVhbik6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RSb3dPbkNsaWNrKHNlbGVjdFJvd09uQ2xpY2spO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,92 @@
1
+ import { assert } from "@coolon/typescript-utilities";
2
+ import { isFunction } from "lodash";
3
+ import { CellEditorPortalRef, ComponentCellRendererPortalRef } from "../renderer/cell-portal-ref";
4
+ import { DefaultCellRendererComponent } from "../renderer/default-cell-renderer/default-cell-renderer.component";
5
+ import { ColumnTextSearchFormatter } from "../search/column-text-search-formatter";
6
+ import { EnableCellTextSearch } from "../search/enable-cell-text-search.decorator";
7
+ import { ColumnModel } from "./column-model";
8
+ export class PropertyColumnModel extends ColumnModel {
9
+ constructor(id, property, defaults) {
10
+ super(id, defaults);
11
+ this.property = property;
12
+ this._format = (value) => value?.toString();
13
+ this.cellRenderer(DefaultCellRendererComponent);
14
+ }
15
+ cellRenderer(componentType, onComponentInitOrOptions) {
16
+ this.configureColumnTextSearch(EnableCellTextSearch.getFormatter(componentType, () => new ColumnTextSearchFormatter.DefaultValueFormatter()), row => row[this.property]);
17
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
18
+ if (firstTime) {
19
+ if (isFunction(onComponentInitOrOptions)) {
20
+ onComponentInitOrOptions(component);
21
+ }
22
+ else {
23
+ if (isFunction(onComponentInitOrOptions?.onComponentInit)) {
24
+ onComponentInitOrOptions.onComponentInit(component);
25
+ }
26
+ }
27
+ }
28
+ component.value = this._format(rowData.row[this.property]);
29
+ }));
30
+ return this;
31
+ }
32
+ liveEditCellRenderer(componentType, options) {
33
+ return this.mutableCellRenderer(componentType, options);
34
+ }
35
+ /**
36
+ * Deprecated. Use #liveEditCellRenderer instead.
37
+ * @param componentType
38
+ * @param options
39
+ */
40
+ mutableCellRenderer(componentType, options) {
41
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
42
+ // keep a local copy most recent row value so it's available to teh
43
+ // edit callback without having to add/remove subscribers all the time.
44
+ component[ColumnModel.CELL_RENDERER_COMPONENT_ROW_CACHE] = rowData.row;
45
+ let disableEditCallback = false;
46
+ if (firstTime) {
47
+ if (isFunction(options?.onComponentInit)) {
48
+ options.onComponentInit(component);
49
+ }
50
+ // install our edit callback
51
+ component.onValueEdited((is, was) => {
52
+ if (!disableEditCallback) {
53
+ options.onValueEdit(component[ColumnModel.CELL_RENDERER_COMPONENT_ROW_CACHE], is, was);
54
+ }
55
+ });
56
+ }
57
+ // now push the value the component and disable the callback just incase the component misbehaves
58
+ // and fires a value change during the operation.
59
+ disableEditCallback = true;
60
+ component.value = rowData.row[this.property];
61
+ disableEditCallback = false;
62
+ if (!isFunction(options) && isFunction(options?.onRowUpdate)) {
63
+ options.onRowUpdate(component, rowData.row);
64
+ }
65
+ }));
66
+ return this;
67
+ }
68
+ cellEditor(editor, validatorsOrInitialiser, onComponentInit) {
69
+ const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
70
+ const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
71
+ this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
72
+ const formValueModel = editSession.form.pluck(this.property);
73
+ if (validators) {
74
+ formValueModel.validateUsing(validators);
75
+ }
76
+ component.valueModel = formValueModel;
77
+ if (initialiser) {
78
+ initialiser(component);
79
+ }
80
+ }));
81
+ return this;
82
+ }
83
+ format(formatter) {
84
+ assert.isFunction(formatter);
85
+ this._format = formatter;
86
+ return this;
87
+ }
88
+ selectRowOnClick(selectOnRowClick) {
89
+ return this._selectRowOnClick(selectOnRowClick);
90
+ }
91
+ }
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktY29sdW1uLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvY29sdW1uL3Byb3BlcnR5LWNvbHVtbi1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUlwQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVsRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUNqSCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRixPQUFPLEVBQXVCLFdBQVcsRUFBK0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRyxNQUFNLE9BQU8sbUJBQWlFLFNBQVEsV0FBZ0I7SUFJcEcsWUFBWSxFQUFVLEVBQVcsUUFBVyxFQUFFLFFBQTRDO1FBQ3hGLEtBQUssQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFEVyxhQUFRLEdBQVIsUUFBUSxDQUFHO1FBRnBDLFlBQU8sR0FBMkIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUlyRSxJQUFJLENBQUMsWUFBWSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUlELFlBQVksQ0FBaUMsYUFBK0IsRUFBRSx3QkFBMkU7UUFDdkosSUFBSSxDQUFDLHlCQUF5QixDQUM1QixvQkFBb0IsQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUks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QyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO1FBQ3BHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVksRUFBRSxXQUE2QixFQUFFLEVBQUU7WUFDdkcsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdELElBQUksVUFBVSxFQUFFO2dCQUNkLGNBQWMsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDMUM7WUFDRCxTQUFTLENBQUMsVUFBVSxHQUFHLGNBQWMsQ0FBQztZQUN0QyxJQUFJLFdBQVcsRUFBRTtnQkFDZixXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDeEI7UUFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQWlDO1FBQ3RDLE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsZ0JBQXlCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHsgVHlwZXMsIFZhbGlkYXRvciB9IGZyb20gXCJAY29vbG9uL3BlY3RpblwiO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIkBjb29sb24vdHlwZXNjcmlwdC11dGlsaXRpZXNcIjtcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgeyBFZGl0U2Vzc2lvbiB9IGZyb20gXCIuLi9lZGl0b3IvZWRpdC1zZXNzaW9uXCI7XG5pbXBvcnQgeyBFZGl0YWJsZUNlbGxSZW5kZXJlciB9IGZyb20gXCIuLi9lZGl0b3IvZWRpdGFibGUtY2VsbC1yZW5kZXJlclwiO1xuaW1wb3J0IHsgQ2VsbEVkaXRvckNvbXBvbmVudCB9IGZyb20gXCIuLi9yZW5kZXJlci9jZWxsLWVkaXRvcnNcIjtcbmltcG9ydCB7IENlbGxFZGl0b3JQb3J0YWxSZWYsIENvbXBvbmVudENlbGxSZW5kZXJlclBvcnRhbFJlZiB9IGZyb20gXCIuLi9yZW5kZXJlci9jZWxsLXBvcnRhbC1yZWZcIjtcbmltcG9ydCB7IENlbGxSZW5kZXJlciB9IGZyb20gXCIuLi9yZW5kZXJlci9jZWxsLXJlbmRlcmVyXCI7XG5pbXBvcnQgeyBEZWZhdWx0Q2VsbFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSBcIi4uL3JlbmRlcmVyL2RlZmF1bHQtY2VsbC1yZW5kZXJlci9kZWZhdWx0LWNlbGwtcmVuZGVyZXIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDb2x1bW5UZXh0U2VhcmNoRm9ybWF0dGVyIH0gZnJvbSBcIi4uL3NlYXJjaC9jb2x1bW4tdGV4dC1zZWFyY2gtZm9ybWF0dGVyXCI7XG5pbXBvcnQgeyBFbmFibGVDZWxsVGV4dFNlYXJjaCB9IGZyb20gXCIuLi9zZWFyY2gvZW5hYmxlLWNlbGwtdGV4dC1zZWFyY2guZGVjb3JhdG9yXCI7XG5pbXBvcnQgeyBDZWxsUmVuZGVyZXJPcHRpb25zLCBDb2x1bW5Nb2RlbCwgTXV0YWJsZUNlbGxSZW5kZXJlck9wdGlvbnMsIE9uQ29tcG9uZW50SW5pdCB9IGZyb20gXCIuL2NvbHVtbi1tb2RlbFwiO1xuXG5leHBvcnQgY2xhc3MgUHJvcGVydHlDb2x1bW5Nb2RlbDxSb3csIFAgZXh0ZW5kcyBUeXBlcy5WYWx1ZVByb3BlcnRpZXNPZjxSb3c+PiBleHRlbmRzIENvbHVtbk1vZGVsPFJvdz4ge1xuXG4gIHByaXZhdGUgX2Zvcm1hdDogKHZhbHVlOiBSb3dbUF0pID0+IGFueSA9ICh2YWx1ZSkgPT4gdmFsdWU/LnRvU3RyaW5nKCk7XG5cbiAgY29uc3RydWN0b3IoaWQ6IHN0cmluZywgcmVhZG9ubHkgcHJvcGVydHk6IFAsIGRlZmF1bHRzOiBDb2x1bW5Nb2RlbC5UZXh0UHJvcGVydGllc1Byb3ZpZGVyKSB7XG4gICAgc3VwZXIoaWQsIGRlZmF1bHRzKTtcbiAgICB0aGlzLmNlbGxSZW5kZXJlcihEZWZhdWx0Q2VsbFJlbmRlcmVyQ29tcG9uZW50KTtcbiAgfVxuXG4gIGNlbGxSZW5kZXJlcjxFIGV4dGVuZHMgQ2VsbFJlbmRlcmVyPFJvd1tQXT4+KGNvbXBvbmVudFR5cGU6IENvbXBvbmVudFR5cGU8RT4sIG9wdGlvbnM/OiBDZWxsUmVuZGVyZXJPcHRpb25zPFJvdywgRT4pOiB0aGlzXG4gIGNlbGxSZW5kZXJlcjxFIGV4dGVuZHMgQ2VsbFJlbmRlcmVyPFJvd1tQXT4+KGNvbXBvbmVudFR5cGU6IENvbXBvbmVudFR5cGU8RT4sIG9uQ29tcG9uZW50SW5pdD86IE9uQ29tcG9uZW50SW5pdDxFPik6IHRoaXNcbiAgY2VsbFJlbmRlcmVyPEUgZXh0ZW5kcyBDZWxsUmVuZGVyZXI8Um93W1BdPj4oY29tcG9uZW50VHlwZTogQ29tcG9uZW50VHlwZTxFPiwgb25Db21wb25lbnRJbml0T3JPcHRpb25zPzogQ2VsbFJlbmRlcmVyT3B0aW9uczxSb3csIEU+IHwgT25Db21wb25lbnRJbml0PEU+KTogdGhpcyB7XG4gICAgdGhpcy5jb25maWd1cmVDb2x1bW5UZXh0U2VhcmNoKFxuICAgICAgRW5hYmxlQ2VsbFRleHRTZWFyY2guZ2V0Rm9ybWF0dGVyKGNvbXBvbmVudFR5cGUsICgpID0+IG5ldyBDb2x1bW5UZXh0U2VhcmNoRm9ybWF0dGVyLkRlZmF1bHRWYWx1ZUZvcm1hdHRlcigpKSxcbiAgICAgIHJvdyA9PiByb3dbdGhpcy5wcm9wZXJ0eV1cbiAgICApO1xuICAgIHRoaXMuY29uZmlndXJlQ2VsbFJlbmRlcmVyKG5ldyBDb21wb25lbnRDZWxsUmVuZGVyZXJQb3J0YWxSZWYoY29tcG9uZW50VHlwZSwgKGNvbXBvbmVudCwgcm93RGF0YSwgZmlyc3RUaW1lKSA9PiB7XG4gICAgICBpZiAoZmlyc3RUaW1lKSB7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKG9uQ29tcG9uZW50SW5pdE9yT3B0aW9ucykpIHtcbiAgICAgICAgICBvbkNvbXBvbmVudEluaXRPck9wdGlvbnMoY29tcG9uZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaXNGdW5jdGlvbihvbkNvbXBvbmVudEluaXRPck9wdGlvbnM/Lm9uQ29tcG9uZW50SW5pdCkpIHtcbiAgICAgICAgICAgIG9uQ29tcG9uZW50SW5pdE9yT3B0aW9ucy5vbkNvbXBvbmVudEluaXQoY29tcG9uZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbXBvbmVudC52YWx1ZSA9IHRoaXMuX2Zvcm1hdChyb3dEYXRhLnJvd1t0aGlzLnByb3BlcnR5XSk7XG4gICAgfSkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbGl2ZUVkaXRDZWxsUmVuZGVyZXI8RSBleHRlbmRzIEVkaXRhYmxlQ2VsbFJlbmRlcmVyPFJvd1tQXT4+KGNvbXBvbmVudFR5cGU6IENvbXBvbmVudFR5cGU8RT4sIG9wdGlvbnM6IE11dGFibGVDZWxsUmVuZGVyZXJPcHRpb25zPFJvdywgRSwgUD4pOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhYmxlQ2VsbFJlbmRlcmVyKGNvbXBvbmVudFR5cGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWQuICBVc2UgI2xpdmVFZGl0Q2VsbFJlbmRlcmVyIGluc3RlYWQuXG4gICAqIEBwYXJhbSBjb21wb25lbnRUeXBlXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqL1xuICBtdXRhYmxlQ2VsbFJlbmRlcmVyPEUgZXh0ZW5kcyBFZGl0YWJsZUNlbGxSZW5kZXJlcjxSb3dbUF0+Pihjb21wb25lbnRUeXBlOiBDb21wb25lbnRUeXBlPEU+LCBvcHRpb25zOiBNdXRhYmxlQ2VsbFJlbmRlcmVyT3B0aW9uczxSb3csIEUsIFA+KTogdGhpcyB7XG5cbiAgICB0aGlzLmNvbmZpZ3VyZUNlbGxSZW5kZXJlcihuZXcgQ29tcG9uZW50Q2VsbFJlbmRlcmVyUG9ydGFsUmVmKGNvbXBvbmVudFR5cGUsIChjb21wb25lbnQsIHJvd0RhdGEsIGZpcnN0VGltZSkgPT4ge1xuXG4gICAgICAvLyBrZWVwIGEgbG9jYWwgY29weSBtb3N0IHJlY2VudCByb3cgdmFsdWUgc28gaXQncyBhdmFpbGFibGUgdG8gdGVoXG4gICAgICAvLyBlZGl0IGNhbGxiYWNrIHdpdGhvdXQgaGF2aW5nIHRvIGFkZC9yZW1vdmUgc3Vic2NyaWJlcnMgYWxsIHRoZSB0aW1lLlxuICAgICAgY29tcG9uZW50W0NvbHVtbk1vZGVsLkNFTExfUkVOREVSRVJfQ09NUE9ORU5UX1JPV19DQUNIRV0gPSByb3dEYXRhLnJvdztcbiAgICAgIGxldCBkaXNhYmxlRWRpdENhbGxiYWNrID0gZmFsc2U7XG5cbiAgICAgIGlmIChmaXJzdFRpbWUpIHtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24ob3B0aW9ucz8ub25Db21wb25lbnRJbml0KSkge1xuICAgICAgICAgIG9wdGlvbnMub25Db21wb25lbnRJbml0KGNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaW5zdGFsbCBvdXIgZWRpdCBjYWxsYmFja1xuICAgICAgICBjb21wb25lbnQub25WYWx1ZUVkaXRlZCgoaXMsIHdhcykgPT4ge1xuICAgICAgICAgIGlmICghZGlzYWJsZUVkaXRDYWxsYmFjaykge1xuICAgICAgICAgICAgb3B0aW9ucy5vblZhbHVlRWRpdChjb21wb25lbnRbQ29sdW1uTW9kZWwuQ0VMTF9SRU5ERVJFUl9DT01QT05FTlRfUk9XX0NBQ0hFXSwgaXMsIHdhcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgfVxuXG4gICAgICAvLyBub3cgcHVzaCB0aGUgdmFsdWUgdGhlIGNvbXBvbmVudCBhbmQgZGlzYWJsZSB0aGUgY2FsbGJhY2sganVzdCBpbmNhc2UgdGhlIGNvbXBvbmVudCBtaXNiZWhhdmVzXG4gICAgICAvLyBhbmQgZmlyZXMgYSB2YWx1ZSBjaGFuZ2UgZHVyaW5nIHRoZSBvcGVyYXRpb24uXG4gICAgICBkaXNhYmxlRWRpdENhbGxiYWNrID0gdHJ1ZTtcbiAgICAgIGNvbXBvbmVudC52YWx1ZSA9IHJvd0RhdGEucm93W3RoaXMucHJvcGVydHldO1xuICAgICAgZGlzYWJsZUVkaXRDYWxsYmFjayA9IGZhbHNlO1xuXG4gICAgICBpZiAoIWlzRnVuY3Rpb24ob3B0aW9ucykgJiYgaXNGdW5jdGlvbihvcHRpb25zPy5vblJvd1VwZGF0ZSkpIHtcbiAgICAgICAgb3B0aW9ucy5vblJvd1VwZGF0ZShjb21wb25lbnQsIHJvd0RhdGEucm93KTtcbiAgICAgIH1cblxuICAgIH0pKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNlbGxFZGl0b3I8RSBleHRlbmRzIENlbGxFZGl0b3JDb21wb25lbnQ8Um93W1BdPj4oZWRpdG9yOiBDb21wb25lbnRUeXBlPEU+LCB2YWxpZGF0b3JzPzogVmFsaWRhdG9yPFJvd1tQXT5bXSwgaW5pdGlhbGlzZUNvbXBvbmVudD86IChjb21wb25lbnQ6IEUpID0+IHZvaWQpOiB0aGlzXG4gIGNlbGxFZGl0b3I8RSBleHRlbmRzIENlbGxFZGl0b3JDb21wb25lbnQ8Um93W1BdPj4oZWRpdG9yOiBDb21wb25lbnRUeXBlPEU+LCBpbml0aWFsaXNlQ29tcG9uZW50PzogKGNvbXBvbmVudDogRSkgPT4gdm9pZCk6IHRoaXNcbiAgY2VsbEVkaXRvcjxFIGV4dGVuZHMgQ2VsbEVkaXRvckNvbXBvbmVudDxSb3dbUF0+PihlZGl0b3I6IENvbXBvbmVudFR5cGU8RT4sIHZhbGlkYXRvcnNPckluaXRpYWxpc2VyPzogVmFsaWRhdG9yPFJvd1tQXT5bXSB8ICgoY29tcG9uZW50OiBFKSA9PiB2b2lkKSwgb25Db21wb25lbnRJbml0PzogKGNvbXBvbmVudDogRSkgPT4gdm9pZCk6IHRoaXMge1xuICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBBcnJheS5pc0FycmF5KHZhbGlkYXRvcnNPckluaXRpYWxpc2VyKSA/IHZhbGlkYXRvcnNPckluaXRpYWxpc2VyIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGluaXRpYWxpc2VyID0gaXNGdW5jdGlvbih2YWxpZGF0b3JzT3JJbml0aWFsaXNlcikgPyB2YWxpZGF0b3JzT3JJbml0aWFsaXNlciA6IG9uQ29tcG9uZW50SW5pdDtcbiAgICB0aGlzLmNvbmZpZ3VyZUNlbGxFZGl0b3IobmV3IENlbGxFZGl0b3JQb3J0YWxSZWYoZWRpdG9yLCAoY29tcG9uZW50OiBFLCBlZGl0U2Vzc2lvbjogRWRpdFNlc3Npb248Um93PikgPT4ge1xuICAgICAgY29uc3QgZm9ybVZhbHVlTW9kZWwgPSBlZGl0U2Vzc2lvbi5mb3JtLnBsdWNrKHRoaXMucHJvcGVydHkpO1xuICAgICAgaWYgKHZhbGlkYXRvcnMpIHtcbiAgICAgICAgZm9ybVZhbHVlTW9kZWwudmFsaWRhdGVVc2luZyh2YWxpZGF0b3JzKTtcbiAgICAgIH1cbiAgICAgIGNvbXBvbmVudC52YWx1ZU1vZGVsID0gZm9ybVZhbHVlTW9kZWw7XG4gICAgICBpZiAoaW5pdGlhbGlzZXIpIHtcbiAgICAgICAgaW5pdGlhbGlzZXIoY29tcG9uZW50KTtcbiAgICAgIH1cbiAgICB9KSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBmb3JtYXQoZm9ybWF0dGVyOiAodmFsdWU6IFJvd1tQXSkgPT4gYW55KTogdGhpcyB7XG4gICAgYXNzZXJ0LmlzRnVuY3Rpb24oZm9ybWF0dGVyKTtcbiAgICB0aGlzLl9mb3JtYXQgPSBmb3JtYXR0ZXI7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0Um93T25DbGljayhzZWxlY3RPblJvd0NsaWNrOiBib29sZWFuKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdFJvd09uQ2xpY2soc2VsZWN0T25Sb3dDbGljayk7XG4gIH1cblxufVxuIl19
@@ -0,0 +1,40 @@
1
+ import { DelegatingSelectionModel, MultipleSelectionModel, ValueModel } from "@coolon/pectin";
2
+ import { ComponentCellRendererPortalRef } from "../renderer/cell-portal-ref";
3
+ import { SelectionHeaderCellComponent } from "../renderer/select-header-cell/selection-header-cell.component";
4
+ import { SelectionCellComponent } from "../renderer/selection-cell/selection-cell.component";
5
+ import { ColumnModel } from "./column-model";
6
+ export class SelectionColumnModel extends ColumnModel {
7
+ constructor(columnId, defaults, selectionModel) {
8
+ super(columnId, defaults);
9
+ this._enableHeaderControls = true;
10
+ this.selectionModel = DelegatingSelectionModel.createDelegate();
11
+ this._selectRowOnClick(false);
12
+ this.cellHeaderRenderer(SelectionHeaderCellComponent, (component) => {
13
+ component.selectionModel = this.selectionModel;
14
+ component.enableHeaderControls = this._enableHeaderControls;
15
+ });
16
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(SelectionCellComponent, (component, rowData) => {
17
+ component.row = rowData.row;
18
+ component.selectionModel = this.selectionModel;
19
+ }));
20
+ this.setSelectionModel(selectionModel);
21
+ }
22
+ setSelectionModel(selectionModel) {
23
+ this.selectionModel.setDelegate(selectionModel);
24
+ this.setDefaultVisibility(selectionModel instanceof MultipleSelectionModel ? ValueModel.TRUE : ValueModel.FALSE);
25
+ }
26
+ getDefaultHeaderText() {
27
+ return '';
28
+ }
29
+ enableHeaderControls(enable) {
30
+ this._enableHeaderControls = enable;
31
+ return this;
32
+ }
33
+ selectRow(row) {
34
+ this.selectionModel.selectCommand.execute(row);
35
+ }
36
+ isSelected(row) {
37
+ return this.selectionModel.isSelected(row);
38
+ }
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWNvbHVtbi1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL2NvbHVtbi9zZWxlY3Rpb24tY29sdW1uLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxzQkFBc0IsRUFBa0IsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0UsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDOUcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDN0YsT0FBTyxFQUFFLFdBQVcsRUFBVyxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE1BQU0sT0FBTyxvQkFBMEIsU0FBUSxXQUFnQjtJQUs3RCxZQUFZLFFBQWdCLEVBQUUsUUFBNEMsRUFBRSxjQUFtQztRQUM3RyxLQUFLLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBSnBCLDBCQUFxQixHQUFHLElBQUksQ0FBQztRQUM1QixtQkFBYyxHQUFHLHdCQUF3QixDQUFDLGNBQWMsRUFBZ0IsQ0FBQztRQUloRixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDRCQUE0QixFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDbEUsU0FBUyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQy9DLFNBQVMsQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSw4QkFBOEIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLFNBQVMsRUFBRSxPQUFxQixFQUFFLEVBQUU7WUFDekgsU0FBUyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQzVCLFNBQVMsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxjQUFtQztRQUNuRCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxZQUFZLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkgsQ0FBQztJQUVTLG9CQUFvQjtRQUM1QixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxNQUFlO1FBQ2xDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVE7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxVQUFVLENBQUMsR0FBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgRGVsZWdhdGluZ1NlbGVjdGlvbk1vZGVsLCBNdWx0aXBsZVNlbGVjdGlvbk1vZGVsLCBTZWxlY3Rpb25Nb2RlbCwgVmFsdWVNb2RlbCB9IGZyb20gXCJAY29vbG9uL3BlY3RpblwiO1xuaW1wb3J0IHsgQ29tcG9uZW50Q2VsbFJlbmRlcmVyUG9ydGFsUmVmIH0gZnJvbSBcIi4uL3JlbmRlcmVyL2NlbGwtcG9ydGFsLXJlZlwiO1xuaW1wb3J0IHsgU2VsZWN0aW9uSGVhZGVyQ2VsbENvbXBvbmVudCB9IGZyb20gXCIuLi9yZW5kZXJlci9zZWxlY3QtaGVhZGVyLWNlbGwvc2VsZWN0aW9uLWhlYWRlci1jZWxsLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgU2VsZWN0aW9uQ2VsbENvbXBvbmVudCB9IGZyb20gXCIuLi9yZW5kZXJlci9zZWxlY3Rpb24tY2VsbC9zZWxlY3Rpb24tY2VsbC5jb21wb25lbnRcIjtcbmltcG9ydCB7IENvbHVtbk1vZGVsLCBSb3dEYXRhIH0gZnJvbSBcIi4vY29sdW1uLW1vZGVsXCI7XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25Db2x1bW5Nb2RlbDxSb3c+IGV4dGVuZHMgQ29sdW1uTW9kZWw8Um93PiB7XG5cbiAgcHJpdmF0ZSBfZW5hYmxlSGVhZGVyQ29udHJvbHMgPSB0cnVlO1xuICByZWFkb25seSBzZWxlY3Rpb25Nb2RlbCA9IERlbGVnYXRpbmdTZWxlY3Rpb25Nb2RlbC5jcmVhdGVEZWxlZ2F0ZTxSb3csIHVua25vd24+KCk7XG5cbiAgY29uc3RydWN0b3IoY29sdW1uSWQ6IHN0cmluZywgZGVmYXVsdHM6IENvbHVtbk1vZGVsLlRleHRQcm9wZXJ0aWVzUHJvdmlkZXIsIHNlbGVjdGlvbk1vZGVsOiBTZWxlY3Rpb25Nb2RlbDxSb3c+KSB7XG4gICAgc3VwZXIoY29sdW1uSWQsIGRlZmF1bHRzKTtcbiAgICB0aGlzLl9zZWxlY3RSb3dPbkNsaWNrKGZhbHNlKTtcbiAgICB0aGlzLmNlbGxIZWFkZXJSZW5kZXJlcihTZWxlY3Rpb25IZWFkZXJDZWxsQ29tcG9uZW50LCAoY29tcG9uZW50KSA9PiB7XG4gICAgICBjb21wb25lbnQuc2VsZWN0aW9uTW9kZWwgPSB0aGlzLnNlbGVjdGlvbk1vZGVsO1xuICAgICAgY29tcG9uZW50LmVuYWJsZUhlYWRlckNvbnRyb2xzID0gdGhpcy5fZW5hYmxlSGVhZGVyQ29udHJvbHM7XG4gICAgfSk7XG4gICAgdGhpcy5jb25maWd1cmVDZWxsUmVuZGVyZXIobmV3IENvbXBvbmVudENlbGxSZW5kZXJlclBvcnRhbFJlZihTZWxlY3Rpb25DZWxsQ29tcG9uZW50LCAoY29tcG9uZW50LCByb3dEYXRhOiBSb3dEYXRhPFJvdz4pID0+IHtcbiAgICAgIGNvbXBvbmVudC5yb3cgPSByb3dEYXRhLnJvdztcbiAgICAgIGNvbXBvbmVudC5zZWxlY3Rpb25Nb2RlbCA9IHRoaXMuc2VsZWN0aW9uTW9kZWw7XG4gICAgfSkpO1xuICAgIHRoaXMuc2V0U2VsZWN0aW9uTW9kZWwoc2VsZWN0aW9uTW9kZWwpO1xuICB9XG5cbiAgc2V0U2VsZWN0aW9uTW9kZWwoc2VsZWN0aW9uTW9kZWw6IFNlbGVjdGlvbk1vZGVsPFJvdz4pIHtcbiAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLnNldERlbGVnYXRlKHNlbGVjdGlvbk1vZGVsKTtcbiAgICB0aGlzLnNldERlZmF1bHRWaXNpYmlsaXR5KHNlbGVjdGlvbk1vZGVsIGluc3RhbmNlb2YgTXVsdGlwbGVTZWxlY3Rpb25Nb2RlbCA/IFZhbHVlTW9kZWwuVFJVRSA6IFZhbHVlTW9kZWwuRkFMU0UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERlZmF1bHRIZWFkZXJUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgZW5hYmxlSGVhZGVyQ29udHJvbHMoZW5hYmxlOiBib29sZWFuKTogdGhpcyB7XG4gICAgdGhpcy5fZW5hYmxlSGVhZGVyQ29udHJvbHMgPSBlbmFibGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZWxlY3RSb3cocm93OiBSb3cpIHtcbiAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdENvbW1hbmQuZXhlY3V0ZShyb3cpO1xuICB9XG5cbiAgaXNTZWxlY3RlZChyb3c6IFJvdykge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQocm93KTtcbiAgfVxufVxuIl19