@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.
- package/assets/table.scss +2 -2
- package/esm2020/lib/components/commands/command/command.component.mjs +18 -5
- package/esm2020/lib/components/components.module.mjs +22 -19
- package/esm2020/lib/components/exports.mjs +28 -21
- package/esm2020/lib/components/tables/abstract-table-model.mjs +70 -29
- package/esm2020/lib/components/tables/abstract-table.component.mjs +12 -10
- package/esm2020/lib/components/tables/column/column-list-model.mjs +39 -0
- package/esm2020/lib/components/tables/column/column-model.mjs +180 -0
- package/esm2020/lib/components/tables/column/column-template/column-template.directive.mjs +35 -0
- package/esm2020/lib/components/tables/column/column-text-properties.mjs +2 -0
- package/esm2020/lib/components/tables/column/custom-template-column-model.mjs +16 -0
- package/esm2020/lib/components/tables/column/custom-value-column-model.mjs +37 -0
- package/esm2020/lib/components/tables/column/editor-controls-column-model.mjs +21 -0
- package/esm2020/lib/components/tables/column/list-propery-column-model.mjs +48 -0
- package/esm2020/lib/components/tables/column/property-column-model.mjs +92 -0
- package/esm2020/lib/components/tables/column/selection-column-model.mjs +40 -0
- package/esm2020/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.mjs +55 -0
- package/esm2020/lib/components/tables/editor/edit-session.mjs +23 -0
- package/esm2020/lib/components/tables/editor/editable-cell-renderer.mjs +2 -0
- package/esm2020/lib/components/tables/{table/paginator → paginator}/paginator.component.mjs +4 -4
- package/esm2020/lib/components/tables/renderer/cell-editors.mjs +2 -0
- package/esm2020/lib/components/tables/renderer/cell-portal-ref.mjs +93 -0
- package/esm2020/lib/components/tables/renderer/cell-renderer.mjs +2 -0
- package/esm2020/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.mjs +30 -0
- package/esm2020/lib/components/tables/{table → renderer}/default-header-cell-renderer/default-header-cell-renderer.component.mjs +1 -1
- package/esm2020/lib/components/tables/renderer/default-list-cell-renderer/default-list-cell-renderer.component.mjs +40 -0
- package/esm2020/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.mjs +31 -0
- package/esm2020/lib/components/tables/renderer/selection-cell/selection-cell.component.mjs +26 -0
- package/esm2020/lib/components/tables/renderer/table-cell/table-cell.component.mjs +93 -0
- package/esm2020/lib/components/tables/renderer/table-header-cell/table-header-cell.component.mjs +32 -0
- package/esm2020/lib/components/tables/search/column-text-search-formatter.mjs +52 -0
- package/esm2020/lib/components/tables/search/enable-cell-text-search.decorator.mjs +30 -0
- package/esm2020/lib/components/tables/table/table-model.mjs +2 -10
- package/esm2020/lib/components/tables/table/table.component.mjs +12 -12
- package/esm2020/lib/components/tables/table-row-menu/table-row-menu.component.mjs +84 -0
- package/esm2020/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.mjs +1 -1
- package/esm2020/lib/components/tables/tree-table/tree-label-column-model.mjs +3 -3
- package/esm2020/lib/components/tables/tree-table/tree-table-component.mjs +10 -10
- package/esm2020/lib/components/tables/tree-table/tree-table-model.mjs +1 -1
- package/esm2020/lib/interaction/activity-ref.mjs +2 -2
- package/esm2020/lib/interaction/activity.mjs +36 -27
- package/esm2020/lib/interaction/components/abstract-confirm-dialog.component.mjs +1 -1
- package/esm2020/lib/interaction/components/abstract-dialog.component.mjs +6 -1
- package/esm2020/lib/interaction/components/activity-actions/activity-actions.component.mjs +18 -5
- package/esm2020/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.mjs +5 -2
- package/esm2020/lib/interaction/components/input-activities/input-activity.mjs +2 -4
- package/fesm2015/coolon-angular-ui-powerups.mjs +660 -460
- package/fesm2015/coolon-angular-ui-powerups.mjs.map +1 -1
- package/fesm2020/coolon-angular-ui-powerups.mjs +801 -602
- package/fesm2020/coolon-angular-ui-powerups.mjs.map +1 -1
- package/lib/components/commands/command/command.component.d.ts +5 -2
- package/lib/components/components.module.d.ts +55 -54
- package/lib/components/exports.d.ts +27 -20
- package/lib/components/tables/abstract-table-model.d.ts +24 -13
- package/lib/components/tables/abstract-table.component.d.ts +6 -5
- package/lib/components/tables/{column-list-model.d.ts → column/column-list-model.d.ts} +4 -4
- package/lib/components/tables/column/column-model.d.ts +77 -0
- package/lib/components/tables/column/custom-template-column-model.d.ts +8 -0
- package/lib/components/tables/column/custom-value-column-model.d.ts +10 -0
- package/lib/components/tables/column/editor-controls-column-model.d.ts +13 -0
- package/lib/components/tables/column/list-propery-column-model.d.ts +15 -0
- package/lib/components/tables/column/property-column-model.d.ts +24 -0
- package/lib/components/tables/column/selection-column-model.d.ts +12 -0
- package/lib/components/tables/{table → editor}/edit-row-controls/edit-row-controls.component.d.ts +1 -1
- package/lib/components/tables/{edit-session.d.ts → editor/edit-session.d.ts} +2 -2
- package/lib/components/tables/{table/mutable-cell-renderer.d.ts → editor/editable-cell-renderer.d.ts} +2 -2
- package/lib/components/tables/{table/paginator → paginator}/paginator.component.d.ts +1 -1
- package/lib/components/tables/{table → renderer}/cell-portal-ref.d.ts +18 -18
- package/lib/components/tables/renderer/cell-renderer.d.ts +3 -0
- package/lib/components/tables/{table → renderer}/default-cell-renderer/default-cell-renderer.component.d.ts +1 -1
- package/lib/components/tables/renderer/default-list-cell-renderer/default-list-cell-renderer.component.d.ts +12 -0
- 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
- package/lib/components/tables/{table/select-cell-renderer/select-cell-renderer.component.d.ts → renderer/selection-cell/selection-cell.component.d.ts} +3 -3
- package/lib/components/tables/{table/table-cell-renderer/table-cell-renderer.component.d.ts → renderer/table-cell/table-cell.component.d.ts} +5 -5
- 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
- package/lib/components/tables/search/column-text-search-formatter.d.ts +28 -0
- package/lib/components/tables/search/enable-cell-text-search.decorator.d.ts +25 -0
- package/lib/components/tables/table/table-model.d.ts +3 -9
- package/lib/components/tables/table/table.component.d.ts +4 -4
- package/lib/components/tables/{table/table-row-menu → table-row-menu}/table-row-menu.component.d.ts +3 -3
- package/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +1 -1
- package/lib/components/tables/tree-table/tree-label-column-model.d.ts +1 -1
- package/lib/components/tables/tree-table/tree-table-component.d.ts +2 -2
- package/lib/components/tables/tree-table/tree-table-model.d.ts +1 -1
- package/lib/interaction/activity.d.ts +15 -10
- package/lib/interaction/components/activity-actions/activity-actions.component.d.ts +6 -1
- package/lib/interaction/components/input-activities/input-activity.d.ts +0 -1
- package/package.json +2 -1
- package/esm2020/lib/components/tables/column-list-model.mjs +0 -39
- package/esm2020/lib/components/tables/edit-session.mjs +0 -23
- package/esm2020/lib/components/tables/table/cell-editors.mjs +0 -2
- package/esm2020/lib/components/tables/table/cell-portal-ref.mjs +0 -93
- package/esm2020/lib/components/tables/table/cell-renderer.mjs +0 -2
- package/esm2020/lib/components/tables/table/column-model.mjs +0 -392
- package/esm2020/lib/components/tables/table/column-template/column-template.directive.mjs +0 -35
- package/esm2020/lib/components/tables/table/column-text-properties.mjs +0 -2
- package/esm2020/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.mjs +0 -22
- package/esm2020/lib/components/tables/table/edit-row-controls/edit-row-controls.component.mjs +0 -55
- package/esm2020/lib/components/tables/table/mutable-cell-renderer.mjs +0 -2
- package/esm2020/lib/components/tables/table/select-cell-renderer/select-cell-renderer.component.mjs +0 -26
- package/esm2020/lib/components/tables/table/select-header-cell-renderer/select-header-cell-renderer.component.mjs +0 -31
- package/esm2020/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.mjs +0 -93
- package/esm2020/lib/components/tables/table/table-def.mjs +0 -2
- package/esm2020/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.mjs +0 -32
- package/esm2020/lib/components/tables/table/table-row-menu/table-row-menu.component.mjs +0 -84
- package/esm2020/lib/components/tables/table/text-search-predicate.mjs +0 -2
- package/lib/components/tables/table/cell-renderer.d.ts +0 -5
- package/lib/components/tables/table/column-model.d.ts +0 -145
- package/lib/components/tables/table/table-def.d.ts +0 -7
- package/lib/components/tables/table/text-search-predicate.d.ts +0 -1
- /package/lib/components/tables/{table → column}/column-template/column-template.directive.d.ts +0 -0
- /package/lib/components/tables/{table → column}/column-text-properties.d.ts +0 -0
- /package/lib/components/tables/{table → renderer}/cell-editors.d.ts +0 -0
- /package/lib/components/tables/{table → renderer}/default-header-cell-renderer/default-header-cell-renderer.component.d.ts +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i4 from '@angular/common';
|
|
2
2
|
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { ElementRef, Directive, Inject, Host, Optional, Input, HostListener, NgZone, Injectable, Pipe, NgModule, Component, ContentChild, ViewEncapsulation, HostBinding, InjectionToken, ViewChildren, EventEmitter,
|
|
4
|
+
import { ElementRef, Directive, Inject, Host, Optional, Input, HostListener, NgZone, Injectable, Pipe, NgModule, Component, ContentChild, ViewEncapsulation, HostBinding, InjectionToken, ViewChild, ViewChildren, EventEmitter, Output, SkipSelf, Self, ContentChildren, ComponentRef, Injector, PLATFORM_ID } from '@angular/core';
|
|
5
5
|
import * as i4$1 from '@angular/forms';
|
|
6
6
|
import { FormsModule } from '@angular/forms';
|
|
7
7
|
import * as i1$8 from '@angular/material/form-field';
|
|
@@ -20,7 +20,7 @@ import { CdkScrollableModule } from '@angular/cdk/scrolling';
|
|
|
20
20
|
import * as i2$1 from '@angular/material/autocomplete';
|
|
21
21
|
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
22
22
|
import * as i1 from '@angular/material/button';
|
|
23
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
23
|
+
import { MatButton, MatButtonModule } from '@angular/material/button';
|
|
24
24
|
import * as i1$9 from '@angular/material/checkbox';
|
|
25
25
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
26
26
|
import * as i2 from '@angular/material/divider';
|
|
@@ -40,17 +40,19 @@ import { MatTooltipModule } from '@angular/material/tooltip';
|
|
|
40
40
|
import * as i1$5 from '@fortawesome/angular-fontawesome';
|
|
41
41
|
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
|
|
42
42
|
import * as i1$7 from '@coolon/pectin';
|
|
43
|
-
import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl, Logger, TrackExternal, ValueModel, StoreInValueModel, Command, MutableListModel, StoreInListModel, Disposable, DelegatingListModel, MutableValueModel, FocusManager, EventListenerList, Form, Guard, Binding, DebugContext, ListModel,
|
|
43
|
+
import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl, Logger, TrackExternal, ValueModel, StoreInValueModel, Command, MutableListModel, StoreInListModel, Trace, Disposable, DelegatingListModel, MutableValueModel, FocusManager, EventListenerList, Form, Guard, Binding, DebugContext, ListModel, Functions, MultipleSelectionModel, AbstractComputedListModel, DelegatingSelectionModel, DirtyTrackingForm, ComputedListModel, PageController, Deferred } from '@coolon/pectin';
|
|
44
44
|
import { __decorate, __param, __metadata } from 'tslib';
|
|
45
45
|
import * as i1$2 from '@angular/platform-browser';
|
|
46
|
+
import * as _ from 'lodash';
|
|
46
47
|
import { isEmpty, isString, isFunction, isNil, isInteger, isEqual, first, uniq, findLast, isObject, isNumber, isNaN as isNaN$1 } from 'lodash';
|
|
47
48
|
import { marked } from 'marked';
|
|
48
49
|
import { Memoize } from '@typescript-plus/fast-memoize-decorator';
|
|
49
50
|
import { Enum } from 'typescript-string-enums';
|
|
50
|
-
import { lang as lang$1, assert as assert$1, Stringy,
|
|
51
|
+
import { lang as lang$1, assert as assert$1, Stringy, Klass, Opts } from '@coolon/typescript-utilities';
|
|
51
52
|
import * as i3 from '@angular/material/core';
|
|
52
53
|
import ResizeObserver from 'resize-observer-polyfill';
|
|
53
54
|
import produce from 'immer';
|
|
55
|
+
import escapeStringRegexp from 'escape-string-regexp';
|
|
54
56
|
import { fas } from '@fortawesome/free-solid-svg-icons';
|
|
55
57
|
import * as i6$1 from '@angular/cdk/a11y';
|
|
56
58
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
@@ -1073,9 +1075,12 @@ class CommandComponent extends PopupAwareComponent {
|
|
|
1073
1075
|
getFace() {
|
|
1074
1076
|
return this.face;
|
|
1075
1077
|
}
|
|
1078
|
+
tryAndFocus() {
|
|
1079
|
+
this.button.focus();
|
|
1080
|
+
}
|
|
1076
1081
|
}
|
|
1077
1082
|
CommandComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CommandComponent, deps: [{ token: i0.ElementRef }, { token: POPUP_CONTAINER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
1078
|
-
CommandComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: CommandComponent, selector: "aup-command", inputs: { command: "command", faceModel: "faceModel", face: "face", busyFaceModel: "busyFaceModel", busyFace: "busyFace", alignFace: "alignFace" }, host: { properties: { "class": "this.alignFace" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"iconOnly$.value\">\n <button mat-icon-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n</ng-container>\n<ng-container *ngIf=\"!iconOnly$.value\">\n <ng-container [ngSwitch]=\"buttonStyle$.value\">\n <ng-container *ngSwitchCase=\"CommandFace.Style.STROKED\">\n <button mat-stroked-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"CommandFace.Style.RAISED\">\n <button mat-raised-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <button mat-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:inline-flex;flex-direction:row;justify-content:stretch}:host.centered button{text-align:center}:host.start button{text-align:start}:host.end button{text-align:end}button{flex:1}\n"], components: [{ type: i1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
|
|
1083
|
+
CommandComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: CommandComponent, selector: "aup-command", inputs: { command: "command", faceModel: "faceModel", face: "face", busyFaceModel: "busyFaceModel", busyFace: "busyFace", alignFace: "alignFace" }, host: { properties: { "class": "this.alignFace" } }, viewQueries: [{ propertyName: "button", first: true, predicate: MatButton, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"iconOnly$.value\">\n <button mat-icon-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n</ng-container>\n<ng-container *ngIf=\"!iconOnly$.value\">\n <ng-container [ngSwitch]=\"buttonStyle$.value\">\n <ng-container *ngSwitchCase=\"CommandFace.Style.STROKED\">\n <button mat-stroked-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"CommandFace.Style.RAISED\">\n <button mat-raised-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <button mat-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:inline-flex;flex-direction:row;justify-content:stretch}:host.centered button{text-align:center}:host.start button{text-align:start}:host.end button{text-align:end}button{flex:1}\n"], components: [{ type: i1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
|
|
1079
1084
|
__decorate([
|
|
1080
1085
|
TrackExternal(),
|
|
1081
1086
|
__metadata("design:type", Command)
|
|
@@ -1096,6 +1101,12 @@ __decorate([
|
|
|
1096
1101
|
StoreInValueModel('busyFaceModel'),
|
|
1097
1102
|
__metadata("design:type", Object)
|
|
1098
1103
|
], CommandComponent.prototype, "busyFace", void 0);
|
|
1104
|
+
__decorate([
|
|
1105
|
+
Trace(),
|
|
1106
|
+
__metadata("design:type", Function),
|
|
1107
|
+
__metadata("design:paramtypes", []),
|
|
1108
|
+
__metadata("design:returntype", void 0)
|
|
1109
|
+
], CommandComponent.prototype, "tryAndFocus", null);
|
|
1099
1110
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CommandComponent, decorators: [{
|
|
1100
1111
|
type: Component,
|
|
1101
1112
|
args: [{ selector: 'aup-command', template: "<ng-container *ngIf=\"iconOnly$.value\">\n <button mat-icon-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n</ng-container>\n<ng-container *ngIf=\"!iconOnly$.value\">\n <ng-container [ngSwitch]=\"buttonStyle$.value\">\n <ng-container *ngSwitchCase=\"CommandFace.Style.STROKED\">\n <button mat-stroked-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"CommandFace.Style.RAISED\">\n <button mat-raised-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <button mat-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:inline-flex;flex-direction:row;justify-content:stretch}:host.centered button{text-align:center}:host.start button{text-align:start}:host.end button{text-align:end}button{flex:1}\n"] }]
|
|
@@ -1119,7 +1130,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
1119
1130
|
}, {
|
|
1120
1131
|
type: HostBinding,
|
|
1121
1132
|
args: ["class"]
|
|
1122
|
-
}]
|
|
1133
|
+
}], button: [{
|
|
1134
|
+
type: ViewChild,
|
|
1135
|
+
args: [MatButton]
|
|
1136
|
+
}], tryAndFocus: [] } });
|
|
1123
1137
|
|
|
1124
1138
|
/**
|
|
1125
1139
|
*
|
|
@@ -2510,25 +2524,6 @@ class TemplateCellRendererPortalRef extends CellRendererPortalRef {
|
|
|
2510
2524
|
}
|
|
2511
2525
|
}
|
|
2512
2526
|
|
|
2513
|
-
class DefaultCellRendererComponent {
|
|
2514
|
-
constructor() {
|
|
2515
|
-
}
|
|
2516
|
-
set value(value) {
|
|
2517
|
-
this._value = value;
|
|
2518
|
-
}
|
|
2519
|
-
get value() {
|
|
2520
|
-
return this._value;
|
|
2521
|
-
}
|
|
2522
|
-
}
|
|
2523
|
-
DefaultCellRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DefaultCellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2524
|
-
DefaultCellRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: DefaultCellRendererComponent, selector: "aup-default-cell-renderer", inputs: { value: "value" }, ngImport: i0, template: "<span [innerHTML]=\"value| aupHighlight\"></span>\n", styles: [""], pipes: { "aupHighlight": HighlightPipe } });
|
|
2525
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DefaultCellRendererComponent, decorators: [{
|
|
2526
|
-
type: Component,
|
|
2527
|
-
args: [{ selector: 'aup-default-cell-renderer', template: "<span [innerHTML]=\"value| aupHighlight\"></span>\n", styles: [""] }]
|
|
2528
|
-
}], ctorParameters: function () { return []; }, propDecorators: { value: [{
|
|
2529
|
-
type: Input
|
|
2530
|
-
}] } });
|
|
2531
|
-
|
|
2532
2527
|
class DefaultHeaderCellRendererComponent {
|
|
2533
2528
|
constructor() {
|
|
2534
2529
|
}
|
|
@@ -2542,120 +2537,81 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
2542
2537
|
type: Input
|
|
2543
2538
|
}] } });
|
|
2544
2539
|
|
|
2545
|
-
class
|
|
2546
|
-
constructor(rowId, row, form, saveCommand) {
|
|
2547
|
-
super();
|
|
2548
|
-
this.rowId = rowId;
|
|
2549
|
-
this.form = form;
|
|
2550
|
-
this.saveCommand = saveCommand;
|
|
2551
|
-
this._liveRowValue = new MutableValueModel();
|
|
2552
|
-
this.liveRowValue = this._liveRowValue.readonly;
|
|
2553
|
-
this.form.load(row);
|
|
2554
|
-
this._liveRowValue.value = row;
|
|
2555
|
-
this.form.onEdit(() => {
|
|
2556
|
-
// if (!this._liveRowValue.value[immerable]) {
|
|
2557
|
-
// console.warn()
|
|
2558
|
-
// }
|
|
2559
|
-
this._liveRowValue.value = produce(this._liveRowValue.value, draft => {
|
|
2560
|
-
this.form.writeDirtyStateTo(draft);
|
|
2561
|
-
});
|
|
2562
|
-
});
|
|
2563
|
-
}
|
|
2540
|
+
class ColumnTextSearchFormatter {
|
|
2564
2541
|
}
|
|
2565
|
-
|
|
2566
|
-
class
|
|
2567
|
-
constructor() {
|
|
2568
|
-
super();
|
|
2569
|
-
this.saveCommand = Command.create(async () => {
|
|
2570
|
-
const finished = await this.editSession.saveCommand.execute();
|
|
2571
|
-
if (finished) {
|
|
2572
|
-
this.editSession.dispose();
|
|
2573
|
-
}
|
|
2574
|
-
});
|
|
2575
|
-
this.cancelCommand = Command.create(() => {
|
|
2576
|
-
this.editSession.dispose();
|
|
2577
|
-
}).disableWhile(this.saveCommand.busy);
|
|
2542
|
+
(function (ColumnTextSearchFormatter) {
|
|
2543
|
+
class Delegate extends ColumnTextSearchFormatter {
|
|
2578
2544
|
}
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2545
|
+
ColumnTextSearchFormatter.Delegate = Delegate;
|
|
2546
|
+
class Delegating extends ColumnTextSearchFormatter.Delegate {
|
|
2547
|
+
constructor(delegateClass) {
|
|
2548
|
+
super();
|
|
2549
|
+
this.delegateClass = delegateClass;
|
|
2550
|
+
}
|
|
2551
|
+
initialise(injector) {
|
|
2552
|
+
this._delegate = injector.get(this.delegateClass);
|
|
2553
|
+
if (this._delegate instanceof Delegating) {
|
|
2554
|
+
this._delegate.initialise(injector);
|
|
2555
|
+
}
|
|
2556
|
+
}
|
|
2557
|
+
format(row) {
|
|
2558
|
+
return this._delegate ? this._delegate.format(row) : "";
|
|
2582
2559
|
}
|
|
2583
|
-
this._session = session;
|
|
2584
|
-
}
|
|
2585
|
-
get editSession() {
|
|
2586
|
-
return this._session;
|
|
2587
2560
|
}
|
|
2588
|
-
|
|
2561
|
+
ColumnTextSearchFormatter.Delegating = Delegating;
|
|
2562
|
+
function forFormatter(formatter) {
|
|
2563
|
+
return new class extends ColumnTextSearchFormatter {
|
|
2564
|
+
format(value) {
|
|
2565
|
+
return formatter(value);
|
|
2566
|
+
}
|
|
2567
|
+
};
|
|
2589
2568
|
}
|
|
2590
|
-
|
|
2591
|
-
|
|
2569
|
+
ColumnTextSearchFormatter.forFormatter = forFormatter;
|
|
2570
|
+
class Null extends ColumnTextSearchFormatter {
|
|
2571
|
+
format(value) {
|
|
2572
|
+
return "";
|
|
2573
|
+
}
|
|
2592
2574
|
}
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
2600
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: EditRowControls, decorators: [{
|
|
2601
|
-
type: Component,
|
|
2602
|
-
args: [{ selector: 'aup-row-editor-controls', template: "<button *ngIf=\"!editSession\" mat-icon-button [pectinCommand]=\"editRowCommand\" class=\"edit-button\"><aup-icon icon=\"mat:edit\"></aup-icon></button>\n<button *ngIf=\"editSession\" mat-icon-button [pectinCommand]=\"saveCommand\"><aup-icon icon=\"mat:done\"></aup-icon></button>\n<button *ngIf=\"editSession\" mat-icon-button [pectinCommand]=\"cancelCommand\"><aup-icon icon=\"mat:clear\"></aup-icon></button>\n", styles: [":host{display:block;width:80px}.edit-button{visibility:hidden}:host-context(tr:hover) .edit-button{visibility:visible}\n"] }]
|
|
2603
|
-
}], ctorParameters: function () { return []; }, propDecorators: { row: [{
|
|
2604
|
-
type: Input
|
|
2605
|
-
}], editRowCommand: [{
|
|
2606
|
-
type: Input
|
|
2607
|
-
}], editSession: [{
|
|
2608
|
-
type: Input
|
|
2609
|
-
}] } });
|
|
2610
|
-
|
|
2611
|
-
class SelectCellRendererComponent extends DisposableComponent {
|
|
2612
|
-
constructor() {
|
|
2613
|
-
super();
|
|
2614
|
-
this.selectCommand = Command.create(() => {
|
|
2615
|
-
this.selectionModel?.selectCommand.execute(this.row);
|
|
2616
|
-
});
|
|
2575
|
+
ColumnTextSearchFormatter.Null = Null;
|
|
2576
|
+
class DefaultValueFormatter extends ColumnTextSearchFormatter {
|
|
2577
|
+
format(value) {
|
|
2578
|
+
let s = value?.toString() ?? "";
|
|
2579
|
+
console.log("DefaultValueFormatter", { value, text: s });
|
|
2580
|
+
return s;
|
|
2581
|
+
}
|
|
2617
2582
|
}
|
|
2618
|
-
|
|
2619
|
-
|
|
2583
|
+
ColumnTextSearchFormatter.DefaultValueFormatter = DefaultValueFormatter;
|
|
2584
|
+
class DefaultArrayFormatter extends ColumnTextSearchFormatter {
|
|
2585
|
+
format(value) {
|
|
2586
|
+
return value ? value.map(it => it?.toString()).join(",") : "";
|
|
2587
|
+
}
|
|
2620
2588
|
}
|
|
2621
|
-
|
|
2622
|
-
|
|
2623
|
-
SelectCellRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: SelectCellRendererComponent, selector: "aup-select-cell-renderer", inputs: { row: "row" }, usesInheritance: true, ngImport: i0, template: "<mat-checkbox [pectinCommand]=\"selectCommand\" [checked]=\"isSelected()\"></mat-checkbox>\n", styles: [""], components: [{ type: i1$9.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }] });
|
|
2624
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SelectCellRendererComponent, decorators: [{
|
|
2625
|
-
type: Component,
|
|
2626
|
-
args: [{ selector: 'aup-select-cell-renderer', template: "<mat-checkbox [pectinCommand]=\"selectCommand\" [checked]=\"isSelected()\"></mat-checkbox>\n", styles: [""] }]
|
|
2627
|
-
}], ctorParameters: function () { return []; }, propDecorators: { row: [{
|
|
2628
|
-
type: Input
|
|
2629
|
-
}] } });
|
|
2589
|
+
ColumnTextSearchFormatter.DefaultArrayFormatter = DefaultArrayFormatter;
|
|
2590
|
+
})(ColumnTextSearchFormatter || (ColumnTextSearchFormatter = {}));
|
|
2630
2591
|
|
|
2631
|
-
|
|
2592
|
+
const noop = () => {
|
|
2593
|
+
};
|
|
2594
|
+
class ColumnTextSearchWrapper extends ColumnTextSearchFormatter.Delegate {
|
|
2632
2595
|
constructor() {
|
|
2633
|
-
super();
|
|
2634
|
-
this.
|
|
2635
|
-
this.selectionModel.toggleAllCommand.execute();
|
|
2636
|
-
});
|
|
2596
|
+
super(...arguments);
|
|
2597
|
+
this._map = Functions.identity;
|
|
2637
2598
|
}
|
|
2638
|
-
|
|
2639
|
-
|
|
2599
|
+
initialise(injector) {
|
|
2600
|
+
if (this._delegate instanceof ColumnTextSearchFormatter.Delegate) {
|
|
2601
|
+
this._delegate.initialise(injector);
|
|
2602
|
+
}
|
|
2640
2603
|
}
|
|
2641
|
-
|
|
2642
|
-
|
|
2604
|
+
format(row) {
|
|
2605
|
+
let value = this._map(row);
|
|
2606
|
+
let result = this._delegate ? this._delegate.format(value) : "";
|
|
2607
|
+
console.log({ format: row, value, text: result });
|
|
2608
|
+
return result;
|
|
2643
2609
|
}
|
|
2644
|
-
|
|
2645
|
-
|
|
2610
|
+
setDelegate(formatter, mapper) {
|
|
2611
|
+
this._delegate = formatter;
|
|
2612
|
+
this._map = mapper ?? Functions.identity;
|
|
2646
2613
|
}
|
|
2647
2614
|
}
|
|
2648
|
-
SelectHeaderCellRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SelectHeaderCellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2649
|
-
SelectHeaderCellRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: SelectHeaderCellRendererComponent, selector: "aup-select-header-cell-renderer", usesInheritance: true, ngImport: i0, template: "<mat-checkbox *ngIf=\"isVisible()\" [pectinCommand]=\"selectCommand\" [checked]=\"isSelected()\" [indeterminate]=\"this.isIntermediate()\"></mat-checkbox>\n", styles: [""], components: [{ type: i1$9.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }] });
|
|
2650
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SelectHeaderCellRendererComponent, decorators: [{
|
|
2651
|
-
type: Component,
|
|
2652
|
-
args: [{ selector: 'aup-select-header-cell-renderer', template: "<mat-checkbox *ngIf=\"isVisible()\" [pectinCommand]=\"selectCommand\" [checked]=\"isSelected()\" [indeterminate]=\"this.isIntermediate()\"></mat-checkbox>\n", styles: [""] }]
|
|
2653
|
-
}], ctorParameters: function () { return []; } });
|
|
2654
|
-
|
|
2655
|
-
const noop = () => {
|
|
2656
|
-
};
|
|
2657
|
-
const CELL_RENDERER_COMPONENT_ROW_CACHE = Symbol('aup-cell-renderer:row-data-cache');
|
|
2658
|
-
const DEFAULT_TEXT_SEARCH_PREDICATE = (row, text) => false;
|
|
2659
2615
|
class ColumnModel extends GarbageCollector {
|
|
2660
2616
|
constructor(columnId, textPropertiesProvider) {
|
|
2661
2617
|
super();
|
|
@@ -2663,10 +2619,9 @@ class ColumnModel extends GarbageCollector {
|
|
|
2663
2619
|
this.textPropertiesProvider = textPropertiesProvider;
|
|
2664
2620
|
this._enableRowSelection = true;
|
|
2665
2621
|
this._flex = false;
|
|
2666
|
-
this._defaultVisibility = this.registerDisposable(new DelegatingValueModel().withDefault(true));
|
|
2667
|
-
this._visible = this.registerDisposable(new DelegatingValueModel().withDefault(this._defaultVisibility));
|
|
2668
|
-
this.
|
|
2669
|
-
this._cellRendererTextSearchPredicate = undefined;
|
|
2622
|
+
this._defaultVisibility$ = this.registerDisposable(new DelegatingValueModel().withDefault(true));
|
|
2623
|
+
this._visible$ = this.registerDisposable(new DelegatingValueModel().withDefault(this._defaultVisibility$));
|
|
2624
|
+
this.textSearchDelegate = new ColumnTextSearchWrapper();
|
|
2670
2625
|
this.installHeaderRenderer();
|
|
2671
2626
|
this.dasherisedColumnId = Stringy.from(columnId).dasherize().toString();
|
|
2672
2627
|
}
|
|
@@ -2679,32 +2634,21 @@ class ColumnModel extends GarbageCollector {
|
|
|
2679
2634
|
return this.getColumnTextProperties()?.headerText() || this.getDefaultHeaderText();
|
|
2680
2635
|
}
|
|
2681
2636
|
isVisible() {
|
|
2682
|
-
return this.visible
|
|
2637
|
+
return this.visible$.value;
|
|
2683
2638
|
}
|
|
2684
|
-
get visible() {
|
|
2685
|
-
return this._visible
|
|
2639
|
+
get visible$() {
|
|
2640
|
+
return this._visible$.readonly;
|
|
2686
2641
|
}
|
|
2687
2642
|
visibleWhile(visible) {
|
|
2688
|
-
this._visible
|
|
2643
|
+
this._visible$.setDelegate(visible);
|
|
2689
2644
|
return this;
|
|
2690
2645
|
}
|
|
2691
2646
|
setDefaultVisibility(visible) {
|
|
2692
|
-
this._defaultVisibility
|
|
2647
|
+
this._defaultVisibility$.setDelegate(visible);
|
|
2693
2648
|
}
|
|
2694
2649
|
getDefaultHeaderText() {
|
|
2695
2650
|
return this.columnId;
|
|
2696
2651
|
}
|
|
2697
|
-
get isTextMatch() {
|
|
2698
|
-
return this._columnModelTextSearchPredicate || this._cellRendererTextSearchPredicate || DEFAULT_TEXT_SEARCH_PREDICATE;
|
|
2699
|
-
}
|
|
2700
|
-
/**
|
|
2701
|
-
* Sets the predicate to use when checking if the specified row is a text match for this column.
|
|
2702
|
-
* @param predicate
|
|
2703
|
-
*/
|
|
2704
|
-
useTextSearchPredicate(predicate) {
|
|
2705
|
-
this._columnModelTextSearchPredicate = predicate;
|
|
2706
|
-
return this;
|
|
2707
|
-
}
|
|
2708
2652
|
getColumnTextProperties() {
|
|
2709
2653
|
return this._columnTextProperties || this.textPropertiesProvider();
|
|
2710
2654
|
}
|
|
@@ -2719,6 +2663,14 @@ class ColumnModel extends GarbageCollector {
|
|
|
2719
2663
|
this._columnTextProperties = columnTextProperties;
|
|
2720
2664
|
return this;
|
|
2721
2665
|
}
|
|
2666
|
+
getSearchTextFor(row) {
|
|
2667
|
+
return this.textSearchDelegate.format(row);
|
|
2668
|
+
}
|
|
2669
|
+
configureColumnTextSearch(formatter, mapper) {
|
|
2670
|
+
assert$1.notNil(formatter);
|
|
2671
|
+
console.log({ col: this.columnId, formatter });
|
|
2672
|
+
this.textSearchDelegate.setDelegate(formatter, mapper);
|
|
2673
|
+
}
|
|
2722
2674
|
configureHeaderRenderer(config) {
|
|
2723
2675
|
this._columnHeaderPortalRef = config;
|
|
2724
2676
|
}
|
|
@@ -2757,12 +2709,6 @@ class ColumnModel extends GarbageCollector {
|
|
|
2757
2709
|
onRendererAttached(host, ref) {
|
|
2758
2710
|
const component = this.getComponentOrEmbeddedView(ref);
|
|
2759
2711
|
this._cellRendererPortalRef.onPortalAttached(host, component);
|
|
2760
|
-
if (isFunction(component?.matches)) {
|
|
2761
|
-
this._cellRendererTextSearchPredicate = (row, text) => component.matches(row, text);
|
|
2762
|
-
}
|
|
2763
|
-
else {
|
|
2764
|
-
this._cellRendererTextSearchPredicate = undefined;
|
|
2765
|
-
}
|
|
2766
2712
|
}
|
|
2767
2713
|
// @Trace()
|
|
2768
2714
|
onEditorAttached(host, ref) {
|
|
@@ -2795,6 +2741,9 @@ class ColumnModel extends GarbageCollector {
|
|
|
2795
2741
|
return ref;
|
|
2796
2742
|
}
|
|
2797
2743
|
}
|
|
2744
|
+
initialise(injector) {
|
|
2745
|
+
this.textSearchDelegate.initialise(injector);
|
|
2746
|
+
}
|
|
2798
2747
|
}
|
|
2799
2748
|
__decorate([
|
|
2800
2749
|
Memoize(),
|
|
@@ -2808,136 +2757,445 @@ __decorate([
|
|
|
2808
2757
|
__metadata("design:paramtypes", []),
|
|
2809
2758
|
__metadata("design:returntype", Object)
|
|
2810
2759
|
], ColumnModel.prototype, "getColumnTextProperties", null);
|
|
2811
|
-
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
}
|
|
2821
|
-
cellRenderer(componentType, onComponentInitOrOptions) {
|
|
2822
|
-
this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
|
|
2823
|
-
if (firstTime) {
|
|
2824
|
-
if (isFunction(onComponentInitOrOptions)) {
|
|
2825
|
-
onComponentInitOrOptions(component);
|
|
2826
|
-
}
|
|
2827
|
-
else {
|
|
2828
|
-
if (isFunction(onComponentInitOrOptions?.onComponentInit)) {
|
|
2829
|
-
onComponentInitOrOptions.onComponentInit(component);
|
|
2830
|
-
}
|
|
2831
|
-
}
|
|
2832
|
-
}
|
|
2833
|
-
component.value = this._format(rowData.row[this.property]);
|
|
2834
|
-
}));
|
|
2835
|
-
return this;
|
|
2836
|
-
}
|
|
2837
|
-
liveEditCellRenderer(componentType, options) {
|
|
2838
|
-
return this.mutableCellRenderer(componentType, options);
|
|
2839
|
-
}
|
|
2840
|
-
/**
|
|
2841
|
-
* Deprecated. Use #liveEditCellRenderer instead.
|
|
2842
|
-
* @param componentType
|
|
2843
|
-
* @param options
|
|
2844
|
-
*/
|
|
2845
|
-
mutableCellRenderer(componentType, options) {
|
|
2846
|
-
this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
|
|
2847
|
-
// keep a local copy most recent row value so it's available to teh
|
|
2848
|
-
// edit callback without having to add/remove subscribers all the time.
|
|
2849
|
-
component[CELL_RENDERER_COMPONENT_ROW_CACHE] = rowData.row;
|
|
2850
|
-
let disableEditCallback = false;
|
|
2851
|
-
if (firstTime) {
|
|
2852
|
-
if (isFunction(options?.onComponentInit)) {
|
|
2853
|
-
options.onComponentInit(component);
|
|
2854
|
-
}
|
|
2855
|
-
// install our edit callback
|
|
2856
|
-
component.onValueEdited((is, was) => {
|
|
2857
|
-
if (!disableEditCallback) {
|
|
2858
|
-
options.onValueEdit(component[CELL_RENDERER_COMPONENT_ROW_CACHE], is, was);
|
|
2859
|
-
}
|
|
2860
|
-
});
|
|
2861
|
-
}
|
|
2862
|
-
// now push the value the component and disable the callback just incase the component misbehaves
|
|
2863
|
-
// and fires a value change during the operation.
|
|
2864
|
-
disableEditCallback = true;
|
|
2865
|
-
component.value = rowData.row[this.property];
|
|
2866
|
-
disableEditCallback = false;
|
|
2867
|
-
if (!isFunction(options) && isFunction(options?.onRowUpdate)) {
|
|
2868
|
-
options.onRowUpdate(component, rowData.row);
|
|
2869
|
-
}
|
|
2870
|
-
}));
|
|
2871
|
-
return this;
|
|
2872
|
-
}
|
|
2873
|
-
cellEditor(editor, validatorsOrInitialiser, onComponentInit) {
|
|
2874
|
-
const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
|
|
2875
|
-
const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
|
|
2876
|
-
this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
|
|
2877
|
-
const formValueModel = editSession.form.pluck(this.property);
|
|
2878
|
-
if (validators) {
|
|
2879
|
-
formValueModel.validateUsing(validators);
|
|
2880
|
-
}
|
|
2881
|
-
component.valueModel = formValueModel;
|
|
2882
|
-
if (initialiser) {
|
|
2883
|
-
initialiser(component);
|
|
2884
|
-
}
|
|
2885
|
-
}));
|
|
2886
|
-
return this;
|
|
2760
|
+
(function (ColumnModel) {
|
|
2761
|
+
ColumnModel.CELL_RENDERER_COMPONENT_ROW_CACHE = Symbol('aup-cell-renderer:row-data-cache');
|
|
2762
|
+
})(ColumnModel || (ColumnModel = {}));
|
|
2763
|
+
|
|
2764
|
+
class CustomTemplateColumnModel extends ColumnModel {
|
|
2765
|
+
constructor(columnId, defaults) {
|
|
2766
|
+
super(columnId, defaults);
|
|
2767
|
+
this.config = new TemplateCellRendererPortalRef();
|
|
2768
|
+
this.configureCellRenderer(this.config);
|
|
2887
2769
|
}
|
|
2888
|
-
|
|
2889
|
-
|
|
2890
|
-
this._format = formatter;
|
|
2891
|
-
return this;
|
|
2770
|
+
setTemplate(templateRef, viewContainer, fillCell, padChild) {
|
|
2771
|
+
this.config.registerPortal(templateRef, viewContainer, fillCell, padChild);
|
|
2892
2772
|
}
|
|
2893
2773
|
selectRowOnClick(selectOnRowClick) {
|
|
2894
2774
|
return this._selectRowOnClick(selectOnRowClick);
|
|
2895
2775
|
}
|
|
2896
2776
|
}
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
|
|
2907
|
-
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
|
|
2917
|
-
|
|
2918
|
-
|
|
2919
|
-
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
|
|
2925
|
-
|
|
2926
|
-
|
|
2927
|
-
|
|
2928
|
-
|
|
2929
|
-
|
|
2930
|
-
|
|
2931
|
-
|
|
2932
|
-
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
|
|
2777
|
+
|
|
2778
|
+
/**
|
|
2779
|
+
* Create your model:
|
|
2780
|
+
* @example
|
|
2781
|
+
* this.heroTableModel = new TableModel(heroList, table => {
|
|
2782
|
+
* table.pluck("firstName");
|
|
2783
|
+
* table.pluck("lastName");
|
|
2784
|
+
* table.addCustomColumn("fullName", hero => `${hero.firstName} ${hero.lastName}`);
|
|
2785
|
+
* });
|
|
2786
|
+
*
|
|
2787
|
+
* Create your table
|
|
2788
|
+
* @example
|
|
2789
|
+
* <aup-table [tableModel]="heroTableModel"></aup-table>
|
|
2790
|
+
*
|
|
2791
|
+
* Column templates
|
|
2792
|
+
* @example
|
|
2793
|
+
* this.heroTableModel = new TableModel(heroList, table => {
|
|
2794
|
+
* table.pluck("firstName");
|
|
2795
|
+
* table.pluck("lastName");
|
|
2796
|
+
* table.addTemplateColumn("specialColumn");
|
|
2797
|
+
* });
|
|
2798
|
+
* <aup-table [tableModel]="heroTableModel">
|
|
2799
|
+
* <div *aupColumnTemplate="let hero; columnId: 'specialColumn'; fillCell: true; padChild:false">
|
|
2800
|
+
* {{hero.name}}
|
|
2801
|
+
* </div>
|
|
2802
|
+
* </aup-table>
|
|
2803
|
+
*
|
|
2804
|
+
* Styling
|
|
2805
|
+
* @example
|
|
2806
|
+
* // global settings
|
|
2807
|
+
* :root {
|
|
2808
|
+
* --aup-table-column-gap: 10px; // defaults to 24px
|
|
2809
|
+
* --aup-table-row-hover-background-color, rgba(0, 0, 0, 0.05)
|
|
2810
|
+
* --aup-table-row-selected-background-color: rebeccapurple; // defaults to transparent
|
|
2811
|
+
* --aup-table-first-column-padding-left: 18px // defaults to --column-gap
|
|
2812
|
+
* --aup-table-last-column-padding-right: 18px // defaults to --column-gap
|
|
2813
|
+
* }
|
|
2814
|
+
*
|
|
2815
|
+
* // per table settings.
|
|
2816
|
+
* aup-table {
|
|
2817
|
+
* --column-gap: 10px; // defaults to 24px
|
|
2818
|
+
* --row-hover-background-color, rgba(0, 0, 0, 0.05)
|
|
2819
|
+
* --row-selected-background-color: rebeccapurple; // defaults to transparent
|
|
2820
|
+
* --first-column-padding-left: 18px // defaults to --column-gap
|
|
2821
|
+
* --last-column-padding-right: 18px // defaults to --column-gap
|
|
2822
|
+
*
|
|
2823
|
+
* aup-table-header-cell-renderer,
|
|
2824
|
+
* aup-table-cell-renderer {
|
|
2825
|
+
* &.aup-col-my-dasherised-column-id {
|
|
2826
|
+
* // do stuff
|
|
2827
|
+
* }
|
|
2828
|
+
* &.first-visible-column {
|
|
2829
|
+
* // do stuff
|
|
2830
|
+
* }
|
|
2831
|
+
* &.last-visible-column {
|
|
2832
|
+
* // do stuff
|
|
2833
|
+
* }
|
|
2834
|
+
* }
|
|
2835
|
+
* }
|
|
2836
|
+
*/
|
|
2837
|
+
class AbstractTableComponent extends ResizeAwareComponent {
|
|
2838
|
+
constructor(elementRef, ngZone, injector) {
|
|
2839
|
+
super(elementRef, ngZone);
|
|
2840
|
+
this.injector = injector;
|
|
2841
|
+
/**
|
|
2842
|
+
* Set to true to enable scrolling. Once enabled the table will have 0 implicit height. You will either
|
|
2843
|
+
* need to set it explicitly e.g. height: 400px; or by using flex or grid layout to make it fill it's
|
|
2844
|
+
* containment area.
|
|
2845
|
+
*/
|
|
2846
|
+
this.enableScrolling = false;
|
|
2847
|
+
// TODO: support user defined header and row heights via css vars.
|
|
2848
|
+
this.headerHeight = new MutableValueModel(56);
|
|
2849
|
+
this.rowHeight = new MutableValueModel(48);
|
|
2850
|
+
this.baseCssClass = 'aup-table-component';
|
|
2851
|
+
const { chain, when } = Dsl.disposeWith(this);
|
|
2852
|
+
const actualHeaderHeight = chain(this.showHeaderModel).map(show => {
|
|
2853
|
+
return show ? this.headerHeight.value : 0;
|
|
2854
|
+
}, { dependsOn: this.headerHeight });
|
|
2855
|
+
this.visibleRowCount = chain(this.boundsModel).map(bounds => {
|
|
2856
|
+
// TODO: this doesn't take into account any css styling adjustments etc. Will investigate if it's an issue.
|
|
2857
|
+
const rawRowCount = (bounds.height - actualHeaderHeight.value) / this.rowHeight.value;
|
|
2858
|
+
return rawRowCount < 1 ? 0 : Math.floor(rawRowCount);
|
|
2859
|
+
}, {
|
|
2860
|
+
dependsOn: [actualHeaderHeight, this.rowHeight],
|
|
2861
|
+
postponeWhile: chain(this.boundsModel).pluckNumeric('height').isLessThan(1)
|
|
2862
|
+
});
|
|
2936
2863
|
}
|
|
2937
|
-
|
|
2938
|
-
return this.
|
|
2864
|
+
get hideHeader() {
|
|
2865
|
+
return !this.showHeader;
|
|
2866
|
+
}
|
|
2867
|
+
getModel() {
|
|
2868
|
+
return lang$1.abstractMethod(this.constructor);
|
|
2869
|
+
}
|
|
2870
|
+
ngOnInit() {
|
|
2871
|
+
const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
|
|
2872
|
+
this.getModel().initialise(this.injector);
|
|
2873
|
+
this.columns = chain(this.getModel().columns);
|
|
2874
|
+
this.columnIds = chain(this.columns).pluck('columnId');
|
|
2875
|
+
this.columnsById = chain(this.columns).indexBy('columnId');
|
|
2876
|
+
}
|
|
2877
|
+
isEditing(row) {
|
|
2878
|
+
return !!this.getModel().getEditSessionFor(row);
|
|
2879
|
+
}
|
|
2880
|
+
registerColumnTemplate(columnId, templateRef, viewContainer, fillCell, padChild) {
|
|
2881
|
+
const column = this.columnsById.get(columnId);
|
|
2882
|
+
if (column instanceof CustomTemplateColumnModel) {
|
|
2883
|
+
column.setTemplate(templateRef, viewContainer, fillCell, padChild);
|
|
2884
|
+
}
|
|
2885
|
+
}
|
|
2886
|
+
notifyCellClicked(columnModel, row) {
|
|
2887
|
+
this.getModel()._notifyCellClicked(columnModel, row);
|
|
2888
|
+
}
|
|
2889
|
+
// @Trace()
|
|
2890
|
+
isFirstVisibleColumn(columnId) {
|
|
2891
|
+
return this.getModel().firstVisibleColumn$.query().value?.columnId === columnId;
|
|
2892
|
+
}
|
|
2893
|
+
// @Trace()
|
|
2894
|
+
isLastVisibleColumn(columnId) {
|
|
2895
|
+
return this.getModel().lastVisibleColumn$.query().value?.columnId === columnId;
|
|
2896
|
+
}
|
|
2897
|
+
getColumnClasses(columnId) {
|
|
2898
|
+
const classes = [`aup-col-${this.columnsById.get(columnId).dasherisedColumnId}`];
|
|
2899
|
+
if (this.isFirstVisibleColumn(columnId)) {
|
|
2900
|
+
classes.push('first-visible-column');
|
|
2901
|
+
}
|
|
2902
|
+
if (this.isLastVisibleColumn(columnId)) {
|
|
2903
|
+
classes.push('last-visible-column');
|
|
2904
|
+
}
|
|
2905
|
+
return classes;
|
|
2939
2906
|
}
|
|
2940
2907
|
}
|
|
2908
|
+
AbstractTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AbstractTableComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
2909
|
+
AbstractTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AbstractTableComponent, selector: "aup-abstract-table", inputs: { showHeaderModel: "showHeaderModel", showHeader: "showHeader", enableScrolling: "enableScrolling" }, host: { properties: { "class.enable-scrolling": "this.enableScrolling", "class": "this.baseCssClass", "class.hide-header": "this.hideHeader" } }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
2910
|
+
__decorate([
|
|
2911
|
+
TrackExternal({ defaultValue: true }),
|
|
2912
|
+
__metadata("design:type", ValueModel)
|
|
2913
|
+
], AbstractTableComponent.prototype, "showHeaderModel", void 0);
|
|
2914
|
+
__decorate([
|
|
2915
|
+
StoreInValueModel('showHeaderModel'),
|
|
2916
|
+
__metadata("design:type", Boolean)
|
|
2917
|
+
], AbstractTableComponent.prototype, "showHeader", void 0);
|
|
2918
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AbstractTableComponent, decorators: [{
|
|
2919
|
+
type: Component,
|
|
2920
|
+
args: [{
|
|
2921
|
+
selector: 'aup-abstract-table',
|
|
2922
|
+
template: ''
|
|
2923
|
+
}]
|
|
2924
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Injector }]; }, propDecorators: { showHeaderModel: [{
|
|
2925
|
+
type: Input
|
|
2926
|
+
}], showHeader: [{
|
|
2927
|
+
type: Input
|
|
2928
|
+
}], enableScrolling: [{
|
|
2929
|
+
type: Input
|
|
2930
|
+
}, {
|
|
2931
|
+
type: HostBinding,
|
|
2932
|
+
args: ['class.enable-scrolling']
|
|
2933
|
+
}], baseCssClass: [{
|
|
2934
|
+
type: HostBinding,
|
|
2935
|
+
args: ['class']
|
|
2936
|
+
}], hideHeader: [{
|
|
2937
|
+
type: HostBinding,
|
|
2938
|
+
args: ['class.hide-header']
|
|
2939
|
+
}] } });
|
|
2940
|
+
|
|
2941
|
+
class ColumnTemplateDirective {
|
|
2942
|
+
constructor(host, templateRef, viewContainer) {
|
|
2943
|
+
this.host = host;
|
|
2944
|
+
this.templateRef = templateRef;
|
|
2945
|
+
this.viewContainer = viewContainer;
|
|
2946
|
+
this.aupColumnTemplateFillCell = false;
|
|
2947
|
+
this.aupColumnTemplateAutoPadChild = undefined;
|
|
2948
|
+
}
|
|
2949
|
+
ngOnInit() {
|
|
2950
|
+
assert.isTruthy(this.aupColumnTemplateColumnId);
|
|
2951
|
+
this.host.registerColumnTemplate(this.aupColumnTemplateColumnId, this.templateRef, this.viewContainer, this.aupColumnTemplateFillCell, this.aupColumnTemplateAutoPadChild ?? this.aupColumnTemplateFillCell);
|
|
2952
|
+
}
|
|
2953
|
+
}
|
|
2954
|
+
ColumnTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ColumnTemplateDirective, deps: [{ token: AbstractTableComponent }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
2955
|
+
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 });
|
|
2956
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ColumnTemplateDirective, decorators: [{
|
|
2957
|
+
type: Directive,
|
|
2958
|
+
args: [{
|
|
2959
|
+
selector: '[aupColumnTemplate]'
|
|
2960
|
+
}]
|
|
2961
|
+
}], ctorParameters: function () { return [{ type: AbstractTableComponent }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { aupColumnTemplate: [{
|
|
2962
|
+
type: Input
|
|
2963
|
+
}], aupColumnTemplateColumnId: [{
|
|
2964
|
+
type: Input
|
|
2965
|
+
}], aupColumnTemplateFillCell: [{
|
|
2966
|
+
type: Input
|
|
2967
|
+
}], aupColumnTemplateAutoPadChild: [{
|
|
2968
|
+
type: Input
|
|
2969
|
+
}] } });
|
|
2970
|
+
|
|
2971
|
+
const TEXT_SEARCH_FORMATTER_KEY = `aup:table:textSearchFormatter`;
|
|
2972
|
+
const Keys = Enum("useFunction", "useInstance", "useClass");
|
|
2973
|
+
function EnableCellTextSearch(options) {
|
|
2974
|
+
assert$1.notNil(options);
|
|
2975
|
+
return (constructor) => {
|
|
2976
|
+
const klass = Klass.get(constructor);
|
|
2977
|
+
assert$1.isFalsey(klass.hasOwnMetadata(TEXT_SEARCH_FORMATTER_KEY), "class already decorated with @EnableCellTextSearch");
|
|
2978
|
+
klass.defineMetadata(TEXT_SEARCH_FORMATTER_KEY, options);
|
|
2979
|
+
};
|
|
2980
|
+
}
|
|
2981
|
+
(function (EnableCellTextSearch) {
|
|
2982
|
+
function getFormatter(renderer, useDefault) {
|
|
2983
|
+
const options = Klass.get(renderer).getMetadata(TEXT_SEARCH_FORMATTER_KEY) ?? {};
|
|
2984
|
+
if (options[Keys.useFunction]) {
|
|
2985
|
+
return ColumnTextSearchFormatter.forFormatter(options[Keys.useFunction]);
|
|
2986
|
+
}
|
|
2987
|
+
if (options[Keys.useInstance]) {
|
|
2988
|
+
return options[Keys.useInstance];
|
|
2989
|
+
}
|
|
2990
|
+
if (options[Keys.useClass]) {
|
|
2991
|
+
return new ColumnTextSearchFormatter.Delegating(options[Keys.useClass]);
|
|
2992
|
+
}
|
|
2993
|
+
return useDefault();
|
|
2994
|
+
}
|
|
2995
|
+
EnableCellTextSearch.getFormatter = getFormatter;
|
|
2996
|
+
})(EnableCellTextSearch || (EnableCellTextSearch = {}));
|
|
2997
|
+
|
|
2998
|
+
let DefaultCellRendererComponent = class DefaultCellRendererComponent {
|
|
2999
|
+
constructor() {
|
|
3000
|
+
}
|
|
3001
|
+
set value(value) {
|
|
3002
|
+
this._value = value;
|
|
3003
|
+
}
|
|
3004
|
+
get value() {
|
|
3005
|
+
return this._value;
|
|
3006
|
+
}
|
|
3007
|
+
};
|
|
3008
|
+
DefaultCellRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DefaultCellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3009
|
+
DefaultCellRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: DefaultCellRendererComponent, selector: "aup-default-cell-renderer", inputs: { value: "value" }, ngImport: i0, template: "<span [innerHTML]=\"value| aupHighlight\"></span>\n", styles: [""], pipes: { "aupHighlight": HighlightPipe } });
|
|
3010
|
+
DefaultCellRendererComponent = __decorate([
|
|
3011
|
+
EnableCellTextSearch({ useClass: ColumnTextSearchFormatter.DefaultValueFormatter }),
|
|
3012
|
+
__metadata("design:paramtypes", [])
|
|
3013
|
+
], DefaultCellRendererComponent);
|
|
3014
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DefaultCellRendererComponent, decorators: [{
|
|
3015
|
+
type: Component,
|
|
3016
|
+
args: [{ selector: "aup-default-cell-renderer", template: "<span [innerHTML]=\"value| aupHighlight\"></span>\n", styles: [""] }]
|
|
3017
|
+
}], ctorParameters: function () { return []; }, propDecorators: { value: [{
|
|
3018
|
+
type: Input
|
|
3019
|
+
}] } });
|
|
3020
|
+
|
|
3021
|
+
class EditSession extends GarbageCollector {
|
|
3022
|
+
constructor(rowId, row, form, saveCommand) {
|
|
3023
|
+
super();
|
|
3024
|
+
this.rowId = rowId;
|
|
3025
|
+
this.form = form;
|
|
3026
|
+
this.saveCommand = saveCommand;
|
|
3027
|
+
this._liveRowValue$ = new MutableValueModel();
|
|
3028
|
+
this.liveRowValue$ = this._liveRowValue$.readonly;
|
|
3029
|
+
this.form.load(row);
|
|
3030
|
+
this._liveRowValue$.value = row;
|
|
3031
|
+
this.form.onEdit(() => {
|
|
3032
|
+
// if (!this._liveRowValue.value[immerable]) {
|
|
3033
|
+
// console.warn()
|
|
3034
|
+
// }
|
|
3035
|
+
this._liveRowValue$.value = produce(this._liveRowValue$.value, draft => {
|
|
3036
|
+
this.form.writeDirtyStateTo(draft);
|
|
3037
|
+
});
|
|
3038
|
+
});
|
|
3039
|
+
}
|
|
3040
|
+
}
|
|
3041
|
+
|
|
3042
|
+
class EditRowControls extends DisposableComponent {
|
|
3043
|
+
constructor() {
|
|
3044
|
+
super();
|
|
3045
|
+
this.saveCommand = Command.create(async () => {
|
|
3046
|
+
const finished = await this.editSession.saveCommand.execute();
|
|
3047
|
+
if (finished) {
|
|
3048
|
+
this.editSession.dispose();
|
|
3049
|
+
}
|
|
3050
|
+
});
|
|
3051
|
+
this.cancelCommand = Command.create(() => {
|
|
3052
|
+
this.editSession.dispose();
|
|
3053
|
+
}).disableWhile(this.saveCommand.busy);
|
|
3054
|
+
}
|
|
3055
|
+
set editSession(session) {
|
|
3056
|
+
if (session) {
|
|
3057
|
+
session.form.disableWhile(this.saveCommand.busy);
|
|
3058
|
+
}
|
|
3059
|
+
this._session = session;
|
|
3060
|
+
}
|
|
3061
|
+
get editSession() {
|
|
3062
|
+
return this._session;
|
|
3063
|
+
}
|
|
3064
|
+
ngOnInit() {
|
|
3065
|
+
}
|
|
3066
|
+
get form() {
|
|
3067
|
+
return this.editSession?.form;
|
|
3068
|
+
}
|
|
3069
|
+
}
|
|
3070
|
+
EditRowControls.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: EditRowControls, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3071
|
+
EditRowControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: EditRowControls, selector: "aup-row-editor-controls", inputs: { row: "row", editRowCommand: "editRowCommand", editSession: "editSession" }, usesInheritance: true, ngImport: i0, template: "<button *ngIf=\"!editSession\" mat-icon-button [pectinCommand]=\"editRowCommand\" class=\"edit-button\"><aup-icon icon=\"mat:edit\"></aup-icon></button>\n<button *ngIf=\"editSession\" mat-icon-button [pectinCommand]=\"saveCommand\"><aup-icon icon=\"mat:done\"></aup-icon></button>\n<button *ngIf=\"editSession\" mat-icon-button [pectinCommand]=\"cancelCommand\"><aup-icon icon=\"mat:clear\"></aup-icon></button>\n", styles: [":host{display:block;width:80px}.edit-button{visibility:hidden}:host-context(tr:hover) .edit-button{visibility:visible}\n"], components: [{ type: i1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: IconComponent, selector: "aup-icon", inputs: ["icon"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }] });
|
|
3072
|
+
__decorate([
|
|
3073
|
+
TrackExternal(),
|
|
3074
|
+
__metadata("design:type", Command)
|
|
3075
|
+
], EditRowControls.prototype, "editRowCommand", void 0);
|
|
3076
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: EditRowControls, decorators: [{
|
|
3077
|
+
type: Component,
|
|
3078
|
+
args: [{ selector: 'aup-row-editor-controls', template: "<button *ngIf=\"!editSession\" mat-icon-button [pectinCommand]=\"editRowCommand\" class=\"edit-button\"><aup-icon icon=\"mat:edit\"></aup-icon></button>\n<button *ngIf=\"editSession\" mat-icon-button [pectinCommand]=\"saveCommand\"><aup-icon icon=\"mat:done\"></aup-icon></button>\n<button *ngIf=\"editSession\" mat-icon-button [pectinCommand]=\"cancelCommand\"><aup-icon icon=\"mat:clear\"></aup-icon></button>\n", styles: [":host{display:block;width:80px}.edit-button{visibility:hidden}:host-context(tr:hover) .edit-button{visibility:visible}\n"] }]
|
|
3079
|
+
}], ctorParameters: function () { return []; }, propDecorators: { row: [{
|
|
3080
|
+
type: Input
|
|
3081
|
+
}], editRowCommand: [{
|
|
3082
|
+
type: Input
|
|
3083
|
+
}], editSession: [{
|
|
3084
|
+
type: Input
|
|
3085
|
+
}] } });
|
|
3086
|
+
|
|
3087
|
+
let formatter = (row) => row.map(e => e?.toString()).join(", ");
|
|
3088
|
+
let DefaultListCellRendererComponent = class DefaultListCellRendererComponent extends DisposableComponent {
|
|
3089
|
+
constructor() {
|
|
3090
|
+
super();
|
|
3091
|
+
const { chain } = Dsl.disposeWith(this);
|
|
3092
|
+
this.text$ = chain(this.value$).reduce(formatter);
|
|
3093
|
+
}
|
|
3094
|
+
};
|
|
3095
|
+
DefaultListCellRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DefaultListCellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3096
|
+
DefaultListCellRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: DefaultListCellRendererComponent, selector: "aup-default-list-cell-renderer", inputs: { value$: "value$", value: "value" }, usesInheritance: true, ngImport: i0, template: "<span [innerHTML]=\"text$.value| aupHighlight\"></span>\n", styles: [""], pipes: { "aupHighlight": HighlightPipe } });
|
|
3097
|
+
__decorate([
|
|
3098
|
+
TrackExternal(),
|
|
3099
|
+
__metadata("design:type", ListModel)
|
|
3100
|
+
], DefaultListCellRendererComponent.prototype, "value$", void 0);
|
|
3101
|
+
__decorate([
|
|
3102
|
+
StoreInListModel("value$"),
|
|
3103
|
+
__metadata("design:type", Array)
|
|
3104
|
+
], DefaultListCellRendererComponent.prototype, "value", void 0);
|
|
3105
|
+
DefaultListCellRendererComponent = __decorate([
|
|
3106
|
+
EnableCellTextSearch({ useClass: ColumnTextSearchFormatter.DefaultArrayFormatter }),
|
|
3107
|
+
__metadata("design:paramtypes", [])
|
|
3108
|
+
], DefaultListCellRendererComponent);
|
|
3109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DefaultListCellRendererComponent, decorators: [{
|
|
3110
|
+
type: Component,
|
|
3111
|
+
args: [{ selector: "aup-default-list-cell-renderer", template: "<span [innerHTML]=\"text$.value| aupHighlight\"></span>\n", styles: [""] }]
|
|
3112
|
+
}], ctorParameters: function () { return []; }, propDecorators: { value$: [{
|
|
3113
|
+
type: Input
|
|
3114
|
+
}], value: [{
|
|
3115
|
+
type: Input
|
|
3116
|
+
}] } });
|
|
3117
|
+
|
|
3118
|
+
class SelectionCellComponent extends DisposableComponent {
|
|
3119
|
+
constructor() {
|
|
3120
|
+
super();
|
|
3121
|
+
this.selectCommand = Command.create(() => {
|
|
3122
|
+
this.selectionModel?.selectCommand.execute(this.row);
|
|
3123
|
+
});
|
|
3124
|
+
}
|
|
3125
|
+
isSelected() {
|
|
3126
|
+
return this.selectionModel?.isSelected(this.row);
|
|
3127
|
+
}
|
|
3128
|
+
}
|
|
3129
|
+
SelectionCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SelectionCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3130
|
+
SelectionCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: SelectionCellComponent, selector: "aup-selection-cell", inputs: { row: "row" }, usesInheritance: true, ngImport: i0, template: "<mat-checkbox [pectinCommand]=\"selectCommand\" [checked]=\"isSelected()\"></mat-checkbox>\n", styles: [""], components: [{ type: i1$9.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }] });
|
|
3131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SelectionCellComponent, decorators: [{
|
|
3132
|
+
type: Component,
|
|
3133
|
+
args: [{ selector: 'aup-selection-cell', template: "<mat-checkbox [pectinCommand]=\"selectCommand\" [checked]=\"isSelected()\"></mat-checkbox>\n", styles: [""] }]
|
|
3134
|
+
}], ctorParameters: function () { return []; }, propDecorators: { row: [{
|
|
3135
|
+
type: Input
|
|
3136
|
+
}] } });
|
|
3137
|
+
|
|
3138
|
+
class SelectionHeaderCellComponent extends DisposableComponent {
|
|
3139
|
+
constructor() {
|
|
3140
|
+
super();
|
|
3141
|
+
this.selectCommand = Command.create(() => {
|
|
3142
|
+
this.selectionModel.toggleAllCommand.execute();
|
|
3143
|
+
});
|
|
3144
|
+
}
|
|
3145
|
+
isSelected() {
|
|
3146
|
+
return this.selectionModel?.allSelected.value || false;
|
|
3147
|
+
}
|
|
3148
|
+
isIntermediate() {
|
|
3149
|
+
return this.selectionModel?.someSelected.value || false;
|
|
3150
|
+
}
|
|
3151
|
+
isVisible() {
|
|
3152
|
+
return this.enableHeaderControls && this.selectionModel.getDelegate() instanceof MultipleSelectionModel;
|
|
3153
|
+
}
|
|
3154
|
+
}
|
|
3155
|
+
SelectionHeaderCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SelectionHeaderCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3156
|
+
SelectionHeaderCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: SelectionHeaderCellComponent, selector: "aup-selection-header-cell", usesInheritance: true, ngImport: i0, template: "<mat-checkbox *ngIf=\"isVisible()\" [pectinCommand]=\"selectCommand\" [checked]=\"isSelected()\" [indeterminate]=\"this.isIntermediate()\"></mat-checkbox>\n", styles: [""], components: [{ type: i1$9.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }] });
|
|
3157
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SelectionHeaderCellComponent, decorators: [{
|
|
3158
|
+
type: Component,
|
|
3159
|
+
args: [{ selector: 'aup-selection-header-cell', template: "<mat-checkbox *ngIf=\"isVisible()\" [pectinCommand]=\"selectCommand\" [checked]=\"isSelected()\" [indeterminate]=\"this.isIntermediate()\"></mat-checkbox>\n", styles: [""] }]
|
|
3160
|
+
}], ctorParameters: function () { return []; } });
|
|
3161
|
+
|
|
3162
|
+
class ColumnListModel extends AbstractComputedListModel {
|
|
3163
|
+
constructor() {
|
|
3164
|
+
super();
|
|
3165
|
+
this._allColumns$ = new MutableListModel();
|
|
3166
|
+
const { chain } = Dsl.disposeWith(this);
|
|
3167
|
+
this.columnsById$ = chain(this._allColumns$).indexBy('columnId');
|
|
3168
|
+
}
|
|
3169
|
+
get allColumns$() {
|
|
3170
|
+
return this._allColumns$.readonly;
|
|
3171
|
+
}
|
|
3172
|
+
getColumn(id) {
|
|
3173
|
+
return this.columnsById$.get(id);
|
|
3174
|
+
}
|
|
3175
|
+
hasColumn(id) {
|
|
3176
|
+
return !!this.columnsById$.get(id);
|
|
3177
|
+
}
|
|
3178
|
+
addColumn(column, index) {
|
|
3179
|
+
if (this.hasColumn(column.columnId)) {
|
|
3180
|
+
lang.illegalState(`Column with id=${column.columnId} already exists`);
|
|
3181
|
+
}
|
|
3182
|
+
this.registerDisposable(column);
|
|
3183
|
+
this.runInTransaction(() => {
|
|
3184
|
+
if (!isNil(index)) {
|
|
3185
|
+
this._allColumns$.insert(index, column);
|
|
3186
|
+
}
|
|
3187
|
+
else {
|
|
3188
|
+
this._allColumns$.push(column);
|
|
3189
|
+
}
|
|
3190
|
+
this.registerDisposable(this.trackSource(column.visible$));
|
|
3191
|
+
});
|
|
3192
|
+
return column;
|
|
3193
|
+
}
|
|
3194
|
+
doComputeValue() {
|
|
3195
|
+
return this._allColumns$.value.filter(c => c.visible$.value);
|
|
3196
|
+
}
|
|
3197
|
+
}
|
|
3198
|
+
|
|
2941
3199
|
class CustomValueColumnModel extends ColumnModel {
|
|
2942
3200
|
constructor(columnId, defaults, getValue) {
|
|
2943
3201
|
super(columnId, defaults);
|
|
@@ -2945,6 +3203,7 @@ class CustomValueColumnModel extends ColumnModel {
|
|
|
2945
3203
|
this.cellRenderer(DefaultCellRendererComponent);
|
|
2946
3204
|
}
|
|
2947
3205
|
cellRenderer(componentType, onComponentInitOrOptions) {
|
|
3206
|
+
this.configureColumnTextSearch(EnableCellTextSearch.getFormatter(componentType, () => new ColumnTextSearchFormatter.Null()), row => this.getValue(row));
|
|
2948
3207
|
this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
|
|
2949
3208
|
if (firstTime) {
|
|
2950
3209
|
if (isFunction(onComponentInitOrOptions)) {
|
|
@@ -2967,6 +3226,7 @@ class CustomValueColumnModel extends ColumnModel {
|
|
|
2967
3226
|
return this._selectRowOnClick(selectOnRowClick);
|
|
2968
3227
|
}
|
|
2969
3228
|
}
|
|
3229
|
+
|
|
2970
3230
|
class EditorControlColumnModel extends ColumnModel {
|
|
2971
3231
|
constructor(columnId, saveCommandFactory, defaults) {
|
|
2972
3232
|
super(columnId, defaults);
|
|
@@ -2984,30 +3244,144 @@ class EditorControlColumnModel extends ColumnModel {
|
|
|
2984
3244
|
return '';
|
|
2985
3245
|
}
|
|
2986
3246
|
}
|
|
2987
|
-
|
|
2988
|
-
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
this.
|
|
3247
|
+
|
|
3248
|
+
class ListPropertyColumnModel extends ColumnModel {
|
|
3249
|
+
constructor(id, property, defaults) {
|
|
3250
|
+
super(id, defaults);
|
|
3251
|
+
this.property = property;
|
|
3252
|
+
this._format = (value) => value.map(v => v?.toString()).join(", ");
|
|
3253
|
+
this.cellRenderer(DefaultListCellRendererComponent);
|
|
2992
3254
|
}
|
|
2993
|
-
|
|
2994
|
-
this.
|
|
3255
|
+
cellRenderer(componentType) {
|
|
3256
|
+
this.configureColumnTextSearch(EnableCellTextSearch.getFormatter(componentType, () => new ColumnTextSearchFormatter.DefaultArrayFormatter()), row => row[this.property]);
|
|
3257
|
+
this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
|
|
3258
|
+
let rowElement = rowData.row[this.property];
|
|
3259
|
+
// @ts-ignore Started complaining in ts 4.5.. but I think my logic is correct...
|
|
3260
|
+
component.value = this._format(rowElement);
|
|
3261
|
+
}));
|
|
3262
|
+
return this;
|
|
3263
|
+
}
|
|
3264
|
+
cellEditor(editor, validatorsOrInitialiser, initialiseComponent) {
|
|
3265
|
+
const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
|
|
3266
|
+
const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
|
|
3267
|
+
this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
|
|
3268
|
+
const formListModel = editSession.form.pluckList(this.property);
|
|
3269
|
+
if (validators) {
|
|
3270
|
+
formListModel.validateUsing(validators);
|
|
3271
|
+
}
|
|
3272
|
+
component.listModel = formListModel;
|
|
3273
|
+
if (initialiser) {
|
|
3274
|
+
initialiser(component);
|
|
3275
|
+
}
|
|
3276
|
+
}));
|
|
3277
|
+
return this;
|
|
3278
|
+
}
|
|
3279
|
+
format(formatter) {
|
|
3280
|
+
assert$1.isFunction(formatter);
|
|
3281
|
+
this._format = formatter;
|
|
3282
|
+
return this;
|
|
3283
|
+
}
|
|
3284
|
+
selectRowOnClick(selectRowOnClick) {
|
|
3285
|
+
return this._selectRowOnClick(selectRowOnClick);
|
|
3286
|
+
}
|
|
3287
|
+
}
|
|
3288
|
+
|
|
3289
|
+
class PropertyColumnModel extends ColumnModel {
|
|
3290
|
+
constructor(id, property, defaults) {
|
|
3291
|
+
super(id, defaults);
|
|
3292
|
+
this.property = property;
|
|
3293
|
+
this._format = (value) => value?.toString();
|
|
3294
|
+
this.cellRenderer(DefaultCellRendererComponent);
|
|
3295
|
+
}
|
|
3296
|
+
cellRenderer(componentType, onComponentInitOrOptions) {
|
|
3297
|
+
this.configureColumnTextSearch(EnableCellTextSearch.getFormatter(componentType, () => new ColumnTextSearchFormatter.DefaultValueFormatter()), row => row[this.property]);
|
|
3298
|
+
this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
|
|
3299
|
+
if (firstTime) {
|
|
3300
|
+
if (isFunction(onComponentInitOrOptions)) {
|
|
3301
|
+
onComponentInitOrOptions(component);
|
|
3302
|
+
}
|
|
3303
|
+
else {
|
|
3304
|
+
if (isFunction(onComponentInitOrOptions?.onComponentInit)) {
|
|
3305
|
+
onComponentInitOrOptions.onComponentInit(component);
|
|
3306
|
+
}
|
|
3307
|
+
}
|
|
3308
|
+
}
|
|
3309
|
+
component.value = this._format(rowData.row[this.property]);
|
|
3310
|
+
}));
|
|
3311
|
+
return this;
|
|
3312
|
+
}
|
|
3313
|
+
liveEditCellRenderer(componentType, options) {
|
|
3314
|
+
return this.mutableCellRenderer(componentType, options);
|
|
3315
|
+
}
|
|
3316
|
+
/**
|
|
3317
|
+
* Deprecated. Use #liveEditCellRenderer instead.
|
|
3318
|
+
* @param componentType
|
|
3319
|
+
* @param options
|
|
3320
|
+
*/
|
|
3321
|
+
mutableCellRenderer(componentType, options) {
|
|
3322
|
+
this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
|
|
3323
|
+
// keep a local copy most recent row value so it's available to teh
|
|
3324
|
+
// edit callback without having to add/remove subscribers all the time.
|
|
3325
|
+
component[ColumnModel.CELL_RENDERER_COMPONENT_ROW_CACHE] = rowData.row;
|
|
3326
|
+
let disableEditCallback = false;
|
|
3327
|
+
if (firstTime) {
|
|
3328
|
+
if (isFunction(options?.onComponentInit)) {
|
|
3329
|
+
options.onComponentInit(component);
|
|
3330
|
+
}
|
|
3331
|
+
// install our edit callback
|
|
3332
|
+
component.onValueEdited((is, was) => {
|
|
3333
|
+
if (!disableEditCallback) {
|
|
3334
|
+
options.onValueEdit(component[ColumnModel.CELL_RENDERER_COMPONENT_ROW_CACHE], is, was);
|
|
3335
|
+
}
|
|
3336
|
+
});
|
|
3337
|
+
}
|
|
3338
|
+
// now push the value the component and disable the callback just incase the component misbehaves
|
|
3339
|
+
// and fires a value change during the operation.
|
|
3340
|
+
disableEditCallback = true;
|
|
3341
|
+
component.value = rowData.row[this.property];
|
|
3342
|
+
disableEditCallback = false;
|
|
3343
|
+
if (!isFunction(options) && isFunction(options?.onRowUpdate)) {
|
|
3344
|
+
options.onRowUpdate(component, rowData.row);
|
|
3345
|
+
}
|
|
3346
|
+
}));
|
|
3347
|
+
return this;
|
|
3348
|
+
}
|
|
3349
|
+
cellEditor(editor, validatorsOrInitialiser, onComponentInit) {
|
|
3350
|
+
const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
|
|
3351
|
+
const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
|
|
3352
|
+
this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
|
|
3353
|
+
const formValueModel = editSession.form.pluck(this.property);
|
|
3354
|
+
if (validators) {
|
|
3355
|
+
formValueModel.validateUsing(validators);
|
|
3356
|
+
}
|
|
3357
|
+
component.valueModel = formValueModel;
|
|
3358
|
+
if (initialiser) {
|
|
3359
|
+
initialiser(component);
|
|
3360
|
+
}
|
|
3361
|
+
}));
|
|
3362
|
+
return this;
|
|
3363
|
+
}
|
|
3364
|
+
format(formatter) {
|
|
3365
|
+
assert$1.isFunction(formatter);
|
|
3366
|
+
this._format = formatter;
|
|
3367
|
+
return this;
|
|
2995
3368
|
}
|
|
2996
3369
|
selectRowOnClick(selectOnRowClick) {
|
|
2997
3370
|
return this._selectRowOnClick(selectOnRowClick);
|
|
2998
3371
|
}
|
|
2999
3372
|
}
|
|
3373
|
+
|
|
3000
3374
|
class SelectionColumnModel extends ColumnModel {
|
|
3001
3375
|
constructor(columnId, defaults, selectionModel) {
|
|
3002
3376
|
super(columnId, defaults);
|
|
3003
3377
|
this._enableHeaderControls = true;
|
|
3004
3378
|
this.selectionModel = DelegatingSelectionModel.createDelegate();
|
|
3005
3379
|
this._selectRowOnClick(false);
|
|
3006
|
-
this.cellHeaderRenderer(
|
|
3380
|
+
this.cellHeaderRenderer(SelectionHeaderCellComponent, (component) => {
|
|
3007
3381
|
component.selectionModel = this.selectionModel;
|
|
3008
3382
|
component.enableHeaderControls = this._enableHeaderControls;
|
|
3009
3383
|
});
|
|
3010
|
-
this.configureCellRenderer(new ComponentCellRendererPortalRef(
|
|
3384
|
+
this.configureCellRenderer(new ComponentCellRendererPortalRef(SelectionCellComponent, (component, rowData) => {
|
|
3011
3385
|
component.row = rowData.row;
|
|
3012
3386
|
component.selectionModel = this.selectionModel;
|
|
3013
3387
|
}));
|
|
@@ -3032,234 +3406,8 @@ class SelectionColumnModel extends ColumnModel {
|
|
|
3032
3406
|
}
|
|
3033
3407
|
}
|
|
3034
3408
|
|
|
3035
|
-
|
|
3036
|
-
|
|
3037
|
-
* @example
|
|
3038
|
-
* this.heroTableModel = TableModel.fromList(heroList, table => {
|
|
3039
|
-
* table.pluck("firstName");
|
|
3040
|
-
* table.pluck("lastName");
|
|
3041
|
-
* table.addCustomColumn("fullName", hero => `${hero.firstName} ${hero.lastName}`);
|
|
3042
|
-
* });
|
|
3043
|
-
*
|
|
3044
|
-
* Create your table
|
|
3045
|
-
* @example
|
|
3046
|
-
* <aup-table [tableModel]="heroTableModel"></aup-table>
|
|
3047
|
-
*
|
|
3048
|
-
* Column templates
|
|
3049
|
-
* @example
|
|
3050
|
-
* this.heroTableModel = TableModel.fromList(heroList, table => {
|
|
3051
|
-
* table.pluck("firstName");
|
|
3052
|
-
* table.pluck("lastName");
|
|
3053
|
-
* table.addTemplateColumn("specialColumn");
|
|
3054
|
-
* });
|
|
3055
|
-
* <aup-table [tableModel]="heroTableModel">
|
|
3056
|
-
* <div *aupColumnTemplate="let hero; columnId: 'specialColumn'; fillCell: true; padChild:false">
|
|
3057
|
-
* {{hero.name}}
|
|
3058
|
-
* </div>
|
|
3059
|
-
* </aup-table>
|
|
3060
|
-
*
|
|
3061
|
-
* Styling
|
|
3062
|
-
* @example
|
|
3063
|
-
* // global settings
|
|
3064
|
-
* :root {
|
|
3065
|
-
* --aup-table-column-gap: 10px; // defaults to 24px
|
|
3066
|
-
* --aup-table-row-hover-background-color, rgba(0, 0, 0, 0.05)
|
|
3067
|
-
* --aup-table-row-selected-background-color: rebeccapurple; // defaults to transparent
|
|
3068
|
-
* --aup-table-first-column-padding-left: 18px // defaults to --column-gap
|
|
3069
|
-
* --aup-table-last-column-padding-right: 18px // defaults to --column-gap
|
|
3070
|
-
* }
|
|
3071
|
-
*
|
|
3072
|
-
* // per table settings.
|
|
3073
|
-
* aup-table {
|
|
3074
|
-
* --column-gap: 10px; // defaults to 24px
|
|
3075
|
-
* --row-hover-background-color, rgba(0, 0, 0, 0.05)
|
|
3076
|
-
* --row-selected-background-color: rebeccapurple; // defaults to transparent
|
|
3077
|
-
* --first-column-padding-left: 18px // defaults to --column-gap
|
|
3078
|
-
* --last-column-padding-right: 18px // defaults to --column-gap
|
|
3079
|
-
*
|
|
3080
|
-
* aup-table-header-cell-renderer,
|
|
3081
|
-
* aup-table-cell-renderer {
|
|
3082
|
-
* &.aup-col-my-dasherised-column-id {
|
|
3083
|
-
* // do stuff
|
|
3084
|
-
* }
|
|
3085
|
-
* &.first-visible-column {
|
|
3086
|
-
* // do stuff
|
|
3087
|
-
* }
|
|
3088
|
-
* &.last-visible-column {
|
|
3089
|
-
* // do stuff
|
|
3090
|
-
* }
|
|
3091
|
-
* }
|
|
3092
|
-
* }
|
|
3093
|
-
*/
|
|
3094
|
-
class AbstractTableComponent extends ResizeAwareComponent {
|
|
3095
|
-
constructor(elementRef, ngZone) {
|
|
3096
|
-
super(elementRef, ngZone);
|
|
3097
|
-
/**
|
|
3098
|
-
* Set to true to enable scrolling. Once enabled the table will have 0 implicit height. You will either
|
|
3099
|
-
* need to set it explicitly e.g. height: 400px; or by using flex or grid layout to make it fill it's
|
|
3100
|
-
* containment area.
|
|
3101
|
-
*/
|
|
3102
|
-
this.enableScrolling = false;
|
|
3103
|
-
// TODO: support user defined header and row heights via css vars.
|
|
3104
|
-
this.headerHeight = new MutableValueModel(56);
|
|
3105
|
-
this.rowHeight = new MutableValueModel(48);
|
|
3106
|
-
this.baseCssClass = 'aup-table-component';
|
|
3107
|
-
const { chain, when } = Dsl.disposeWith(this);
|
|
3108
|
-
const actualHeaderHeight = chain(this.showHeaderModel).map(show => {
|
|
3109
|
-
return show ? this.headerHeight.value : 0;
|
|
3110
|
-
}, { dependsOn: this.headerHeight });
|
|
3111
|
-
this.visibleRowCount = chain(this.boundsModel).map(bounds => {
|
|
3112
|
-
// TODO: this doesn't take into account any css styling adjustments etc. Will investigate if it's an issue.
|
|
3113
|
-
const rawRowCount = (bounds.height - actualHeaderHeight.value) / this.rowHeight.value;
|
|
3114
|
-
return rawRowCount < 1 ? 0 : Math.floor(rawRowCount);
|
|
3115
|
-
}, {
|
|
3116
|
-
dependsOn: [actualHeaderHeight, this.rowHeight],
|
|
3117
|
-
postponeWhile: chain(this.boundsModel).pluckNumeric('height').isLessThan(1)
|
|
3118
|
-
});
|
|
3119
|
-
}
|
|
3120
|
-
get hideHeader() {
|
|
3121
|
-
return !this.showHeader;
|
|
3122
|
-
}
|
|
3123
|
-
getModel() {
|
|
3124
|
-
return lang$1.abstractMethod(this.constructor);
|
|
3125
|
-
}
|
|
3126
|
-
ngOnInit() {
|
|
3127
|
-
const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
|
|
3128
|
-
this.columns = chain(this.getModel().columns);
|
|
3129
|
-
this.columnIds = chain(this.columns).pluck('columnId');
|
|
3130
|
-
this.columnsById = chain(this.columns).indexBy('columnId');
|
|
3131
|
-
}
|
|
3132
|
-
isEditing(row) {
|
|
3133
|
-
return !!this.getModel().getEditSessionFor(row);
|
|
3134
|
-
}
|
|
3135
|
-
registerColumnTemplate(columnId, templateRef, viewContainer, fillCell, padChild) {
|
|
3136
|
-
const column = this.columnsById.get(columnId);
|
|
3137
|
-
if (column instanceof CustomTemplateColumnModel) {
|
|
3138
|
-
column.setTemplate(templateRef, viewContainer, fillCell, padChild);
|
|
3139
|
-
}
|
|
3140
|
-
}
|
|
3141
|
-
notifyCellClicked(columnModel, row) {
|
|
3142
|
-
this.getModel()._notifyCellClicked(columnModel, row);
|
|
3143
|
-
}
|
|
3144
|
-
// @Trace()
|
|
3145
|
-
isFirstVisibleColumn(columnId) {
|
|
3146
|
-
return this.getModel().firstVisibleColumn.query().value?.columnId === columnId;
|
|
3147
|
-
}
|
|
3148
|
-
// @Trace()
|
|
3149
|
-
isLastVisibleColumn(columnId) {
|
|
3150
|
-
return this.getModel().lastVisibleColumn.query().value?.columnId === columnId;
|
|
3151
|
-
}
|
|
3152
|
-
getColumnClasses(columnId) {
|
|
3153
|
-
const classes = [`aup-col-${this.columnsById.get(columnId).dasherisedColumnId}`];
|
|
3154
|
-
if (this.isFirstVisibleColumn(columnId)) {
|
|
3155
|
-
classes.push('first-visible-column');
|
|
3156
|
-
}
|
|
3157
|
-
if (this.isLastVisibleColumn(columnId)) {
|
|
3158
|
-
classes.push('last-visible-column');
|
|
3159
|
-
}
|
|
3160
|
-
return classes;
|
|
3161
|
-
}
|
|
3162
|
-
}
|
|
3163
|
-
AbstractTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AbstractTableComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
3164
|
-
AbstractTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AbstractTableComponent, selector: "aup-abstract-table", inputs: { showHeaderModel: "showHeaderModel", showHeader: "showHeader", enableScrolling: "enableScrolling" }, host: { properties: { "class.enable-scrolling": "this.enableScrolling", "class": "this.baseCssClass", "class.hide-header": "this.hideHeader" } }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
3165
|
-
__decorate([
|
|
3166
|
-
TrackExternal({ defaultValue: true }),
|
|
3167
|
-
__metadata("design:type", ValueModel)
|
|
3168
|
-
], AbstractTableComponent.prototype, "showHeaderModel", void 0);
|
|
3169
|
-
__decorate([
|
|
3170
|
-
StoreInValueModel('showHeaderModel'),
|
|
3171
|
-
__metadata("design:type", Boolean)
|
|
3172
|
-
], AbstractTableComponent.prototype, "showHeader", void 0);
|
|
3173
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AbstractTableComponent, decorators: [{
|
|
3174
|
-
type: Component,
|
|
3175
|
-
args: [{
|
|
3176
|
-
selector: 'aup-abstract-table',
|
|
3177
|
-
template: ''
|
|
3178
|
-
}]
|
|
3179
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { showHeaderModel: [{
|
|
3180
|
-
type: Input
|
|
3181
|
-
}], showHeader: [{
|
|
3182
|
-
type: Input
|
|
3183
|
-
}], enableScrolling: [{
|
|
3184
|
-
type: Input
|
|
3185
|
-
}, {
|
|
3186
|
-
type: HostBinding,
|
|
3187
|
-
args: ['class.enable-scrolling']
|
|
3188
|
-
}], baseCssClass: [{
|
|
3189
|
-
type: HostBinding,
|
|
3190
|
-
args: ['class']
|
|
3191
|
-
}], hideHeader: [{
|
|
3192
|
-
type: HostBinding,
|
|
3193
|
-
args: ['class.hide-header']
|
|
3194
|
-
}] } });
|
|
3195
|
-
|
|
3196
|
-
class ColumnTemplateDirective {
|
|
3197
|
-
constructor(host, templateRef, viewContainer) {
|
|
3198
|
-
this.host = host;
|
|
3199
|
-
this.templateRef = templateRef;
|
|
3200
|
-
this.viewContainer = viewContainer;
|
|
3201
|
-
this.aupColumnTemplateFillCell = false;
|
|
3202
|
-
this.aupColumnTemplateAutoPadChild = undefined;
|
|
3203
|
-
}
|
|
3204
|
-
ngOnInit() {
|
|
3205
|
-
assert.isTruthy(this.aupColumnTemplateColumnId);
|
|
3206
|
-
this.host.registerColumnTemplate(this.aupColumnTemplateColumnId, this.templateRef, this.viewContainer, this.aupColumnTemplateFillCell, this.aupColumnTemplateAutoPadChild ?? this.aupColumnTemplateFillCell);
|
|
3207
|
-
}
|
|
3208
|
-
}
|
|
3209
|
-
ColumnTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ColumnTemplateDirective, deps: [{ token: AbstractTableComponent }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3210
|
-
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 });
|
|
3211
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ColumnTemplateDirective, decorators: [{
|
|
3212
|
-
type: Directive,
|
|
3213
|
-
args: [{
|
|
3214
|
-
selector: '[aupColumnTemplate]'
|
|
3215
|
-
}]
|
|
3216
|
-
}], ctorParameters: function () { return [{ type: AbstractTableComponent }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { aupColumnTemplate: [{
|
|
3217
|
-
type: Input
|
|
3218
|
-
}], aupColumnTemplateColumnId: [{
|
|
3219
|
-
type: Input
|
|
3220
|
-
}], aupColumnTemplateFillCell: [{
|
|
3221
|
-
type: Input
|
|
3222
|
-
}], aupColumnTemplateAutoPadChild: [{
|
|
3223
|
-
type: Input
|
|
3224
|
-
}] } });
|
|
3225
|
-
|
|
3226
|
-
class ColumnListModel extends AbstractComputedListModel {
|
|
3227
|
-
constructor() {
|
|
3228
|
-
super();
|
|
3229
|
-
this._allColumns = new MutableListModel();
|
|
3230
|
-
const { chain } = Dsl.disposeWith(this);
|
|
3231
|
-
this.columnsById = chain(this._allColumns).indexBy('columnId');
|
|
3232
|
-
}
|
|
3233
|
-
get allColumns() {
|
|
3234
|
-
return this._allColumns.readonly;
|
|
3235
|
-
}
|
|
3236
|
-
getColumn(id) {
|
|
3237
|
-
return this.columnsById.get(id);
|
|
3238
|
-
}
|
|
3239
|
-
hasColumn(id) {
|
|
3240
|
-
return !!this.columnsById.get(id);
|
|
3241
|
-
}
|
|
3242
|
-
addColumn(column, index) {
|
|
3243
|
-
if (this.hasColumn(column.columnId)) {
|
|
3244
|
-
lang.illegalState(`Column with id=${column.columnId} already exists`);
|
|
3245
|
-
}
|
|
3246
|
-
this.registerDisposable(column);
|
|
3247
|
-
this.runInTransaction(() => {
|
|
3248
|
-
if (!isNil(index)) {
|
|
3249
|
-
this._allColumns.insert(index, column);
|
|
3250
|
-
}
|
|
3251
|
-
else {
|
|
3252
|
-
this._allColumns.push(column);
|
|
3253
|
-
}
|
|
3254
|
-
this.registerDisposable(this.trackSource(column.visible));
|
|
3255
|
-
});
|
|
3256
|
-
return column;
|
|
3257
|
-
}
|
|
3258
|
-
doComputeValue() {
|
|
3259
|
-
return this._allColumns.value.filter(c => c.visible.value);
|
|
3260
|
-
}
|
|
3261
|
-
}
|
|
3262
|
-
|
|
3409
|
+
var DefaultValueFormatter = ColumnTextSearchFormatter.DefaultValueFormatter;
|
|
3410
|
+
var DefaultArrayFormatter = ColumnTextSearchFormatter.DefaultArrayFormatter;
|
|
3263
3411
|
// export type StringPropertiesOf<T> = { [K in keyof T]: T[K] extends string ? K : never }[keyof T];
|
|
3264
3412
|
// export type NumberPropertiesOf<T> = { [K in keyof T]: T[K] extends number ? K : never }[keyof T];
|
|
3265
3413
|
class RowClass {
|
|
@@ -3276,39 +3424,69 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
3276
3424
|
this._editorSessions = new MutableListModel();
|
|
3277
3425
|
this.rowClassNamePredicates = [];
|
|
3278
3426
|
this.rowClickListeners = new EventListenerList();
|
|
3427
|
+
this._searchText$ = new DelegatingValueModel();
|
|
3279
3428
|
this._createForm = (row) => new DirtyTrackingForm();
|
|
3280
3429
|
this.trackBy = (index, item) => {
|
|
3281
3430
|
return this.identityOf ? this.identityOf(item) : index;
|
|
3282
3431
|
};
|
|
3283
3432
|
const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
|
|
3284
|
-
this._rowsBeingEdited = new MutableListModel([], {
|
|
3433
|
+
this._rowsBeingEdited$ = new MutableListModel([], {
|
|
3285
3434
|
identifiedWith: row => this.identityOf(row)
|
|
3286
3435
|
});
|
|
3287
|
-
this._editorSessionByRowId = chain(this._editorSessions).indexBy(
|
|
3288
|
-
this.editing = chain(this._editorSessions).count().isGreaterThan(0);
|
|
3289
|
-
this.
|
|
3290
|
-
|
|
3291
|
-
|
|
3292
|
-
|
|
3293
|
-
|
|
3436
|
+
this._editorSessionByRowId = chain(this._editorSessions).indexBy("rowId");
|
|
3437
|
+
this.editing$ = chain(this._editorSessions).count().isGreaterThan(0);
|
|
3438
|
+
this._textSearchPredicate$ = chain(this._searchText$).map(text => {
|
|
3439
|
+
return _.isEmpty(text) ? Functions.identity : (rows) => {
|
|
3440
|
+
const regex = new RegExp(escapeStringRegexp(text), "i");
|
|
3441
|
+
return rows.filter(row => this.hasMatchingColumn(row, regex));
|
|
3442
|
+
};
|
|
3443
|
+
}, {
|
|
3444
|
+
allowNil: true,
|
|
3445
|
+
dependsOn: this.columns
|
|
3446
|
+
});
|
|
3447
|
+
this.dataSource = chain(this._dataSource)
|
|
3448
|
+
.reduceToList(items => this._textSearchPredicate$.value(items), {
|
|
3449
|
+
dependsOn: this._textSearchPredicate$
|
|
3450
|
+
})
|
|
3451
|
+
.replaceAll(this.rowsBeingEdited$);
|
|
3452
|
+
this.firstEditableColumn$ = chain(this.columns).select(c => c.hasEditorPortal()).first();
|
|
3453
|
+
this.firstVisibleColumn$ = chain(this._columnList).first();
|
|
3454
|
+
this.lastVisibleColumn$ = chain(this._columnList).last();
|
|
3455
|
+
this.rowSelectionDisabledOnAllColumns$ = chain(this._columnList).select(column => column.isRowSelectionEnabled()).count().equals(0);
|
|
3294
3456
|
}
|
|
3295
3457
|
findMatchingColumns(row, regex) {
|
|
3296
|
-
return this.columns.value.filter(c => c.
|
|
3458
|
+
return this.columns.value.filter(c => regex.test(c.getSearchTextFor(row)));
|
|
3297
3459
|
}
|
|
3460
|
+
// @Trace()
|
|
3298
3461
|
hasMatchingColumn(row, regex) {
|
|
3299
|
-
return !!this.columns.value.find(c => c.
|
|
3462
|
+
return !!this.columns.value.find(c => regex.test(c.getSearchTextFor(row)));
|
|
3463
|
+
}
|
|
3464
|
+
initialise(injector) {
|
|
3465
|
+
// not sure if I should define these at the module level or not...
|
|
3466
|
+
const customInjector = Injector.create({
|
|
3467
|
+
providers: [
|
|
3468
|
+
{ provide: DefaultValueFormatter },
|
|
3469
|
+
{ provide: DefaultArrayFormatter }
|
|
3470
|
+
],
|
|
3471
|
+
parent: injector
|
|
3472
|
+
});
|
|
3473
|
+
this.columns.value.forEach(c => c.initialise(customInjector));
|
|
3300
3474
|
}
|
|
3301
3475
|
setDataSource(sourceOfTruth) {
|
|
3302
3476
|
this._dataSource.setDelegate(sourceOfTruth);
|
|
3303
3477
|
}
|
|
3478
|
+
setTextSearch(searchText$, throttleDelayMilliseconds = 100) {
|
|
3479
|
+
const { chain } = Dsl.disposeWith(this);
|
|
3480
|
+
this._searchText$.setDelegate(chain(searchText$).throttle(throttleDelayMilliseconds));
|
|
3481
|
+
}
|
|
3304
3482
|
identityOf(row) {
|
|
3305
3483
|
return this._dataSource.identityOf(row);
|
|
3306
3484
|
}
|
|
3307
|
-
get rowsBeingEdited() {
|
|
3308
|
-
return this._rowsBeingEdited
|
|
3485
|
+
get rowsBeingEdited$() {
|
|
3486
|
+
return this._rowsBeingEdited$.readonly;
|
|
3309
3487
|
}
|
|
3310
3488
|
get columns() {
|
|
3311
|
-
return this._columnList.allColumns
|
|
3489
|
+
return this._columnList.allColumns$;
|
|
3312
3490
|
}
|
|
3313
3491
|
get visibleColumns() {
|
|
3314
3492
|
return this._columnList.readonly;
|
|
@@ -3323,9 +3501,9 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
3323
3501
|
}
|
|
3324
3502
|
_addSelectionColumn(selectionModel, visible) {
|
|
3325
3503
|
assert.isNil(this.selectionColumnModel);
|
|
3326
|
-
const columnId =
|
|
3504
|
+
const columnId = "selection-column";
|
|
3327
3505
|
this.selectionColumnModel = new SelectionColumnModel(columnId, () => this.getColumnTextProperties(columnId), selectionModel);
|
|
3328
|
-
this.addRowClass(
|
|
3506
|
+
this.addRowClass("aup-row-selected", row => this.selectionColumnModel.isSelected(row));
|
|
3329
3507
|
const selectionColumnModel = this.addColumn(this.selectionColumnModel, 0);
|
|
3330
3508
|
if (!isNil(visible)) {
|
|
3331
3509
|
selectionColumnModel.visibleWhile(visible instanceof ValueModel ? visible : ValueModel.constant(visible));
|
|
@@ -3337,7 +3515,7 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
3337
3515
|
if (isFunction(formFactory)) {
|
|
3338
3516
|
this._createForm = formFactory;
|
|
3339
3517
|
}
|
|
3340
|
-
const columnId =
|
|
3518
|
+
const columnId = "editControls";
|
|
3341
3519
|
return this.addColumn(new EditorControlColumnModel(columnId, saveCommandFactory, () => this.getColumnTextProperties(columnId)));
|
|
3342
3520
|
}
|
|
3343
3521
|
addCustomColumn(columnId, dataAccessor) {
|
|
@@ -3379,7 +3557,7 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
3379
3557
|
}
|
|
3380
3558
|
startEditSession(row) {
|
|
3381
3559
|
const rowId = this.identityOf(row);
|
|
3382
|
-
if (this._rowsBeingEdited
|
|
3560
|
+
if (this._rowsBeingEdited$.query().indexOf(row) > -1) {
|
|
3383
3561
|
return lang.illegalState(`Row with id=${rowId} already being edited`);
|
|
3384
3562
|
}
|
|
3385
3563
|
// todo: pass the factories to the edit session so we can make the whole lot pluggable?
|
|
@@ -3387,12 +3565,12 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
3387
3565
|
const saveCommand = this.saveCommandFactory.create(form);
|
|
3388
3566
|
const editSession = new EditSession(rowId, row, form, saveCommand);
|
|
3389
3567
|
const { when } = Dsl.disposeWith(editSession);
|
|
3390
|
-
when(editSession.liveRowValue).changes((editedValue) => {
|
|
3391
|
-
this._rowsBeingEdited
|
|
3392
|
-
}, { initialValue:
|
|
3568
|
+
when(editSession.liveRowValue$).changes((editedValue) => {
|
|
3569
|
+
this._rowsBeingEdited$.replaceOrPush(editedValue);
|
|
3570
|
+
}, { initialValue: "triggerChangeUnlessNil" });
|
|
3393
3571
|
this._editorSessions.push(editSession);
|
|
3394
3572
|
editSession.onDispose(() => {
|
|
3395
|
-
this._rowsBeingEdited
|
|
3573
|
+
this._rowsBeingEdited$.remove(editSession.liveRowValue$.value);
|
|
3396
3574
|
this._editorSessions.remove(editSession);
|
|
3397
3575
|
});
|
|
3398
3576
|
return editSession;
|
|
@@ -3402,7 +3580,7 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
3402
3580
|
}
|
|
3403
3581
|
cancelAllEditorSessions() {
|
|
3404
3582
|
this._editorSessions.runInTransaction((draft) => {
|
|
3405
|
-
this._rowsBeingEdited
|
|
3583
|
+
this._rowsBeingEdited$.runInTransaction(() => {
|
|
3406
3584
|
draft.value.forEach(session => session.dispose());
|
|
3407
3585
|
});
|
|
3408
3586
|
});
|
|
@@ -3411,7 +3589,7 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
3411
3589
|
return this.isRowSelectionEnabled() && column.isRowSelectionEnabled();
|
|
3412
3590
|
}
|
|
3413
3591
|
isRowSelectionEnabled() {
|
|
3414
|
-
return this.hasUserSelectionModel() && !this.rowSelectionDisabledOnAllColumns
|
|
3592
|
+
return this.hasUserSelectionModel() && !this.rowSelectionDisabledOnAllColumns$.value;
|
|
3415
3593
|
}
|
|
3416
3594
|
hasUserSelectionModel() {
|
|
3417
3595
|
return !!this.selectionColumnModel?.selectionModel.getDelegate();
|
|
@@ -3440,7 +3618,7 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
3440
3618
|
}
|
|
3441
3619
|
TrackExternal.oneTimeBinding(AbstractTableModel);
|
|
3442
3620
|
|
|
3443
|
-
class
|
|
3621
|
+
class TableCellComponent extends DisposableComponent {
|
|
3444
3622
|
constructor() {
|
|
3445
3623
|
super();
|
|
3446
3624
|
this.defaultClassNames = 'aup-cell-renderer';
|
|
@@ -3452,7 +3630,7 @@ class TableCellRendererComponent extends DisposableComponent {
|
|
|
3452
3630
|
}
|
|
3453
3631
|
ngOnInit() {
|
|
3454
3632
|
const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
|
|
3455
|
-
this.firstEditableColumn = chain(this.tableModel.firstEditableColumn).equals(this.column); // this would break if the column changed.
|
|
3633
|
+
this.firstEditableColumn = chain(this.tableModel.firstEditableColumn$).equals(this.column); // this would break if the column changed.
|
|
3456
3634
|
this.column.attachCell(this);
|
|
3457
3635
|
}
|
|
3458
3636
|
hasActiveEditor() {
|
|
@@ -3499,11 +3677,11 @@ class TableCellRendererComponent extends DisposableComponent {
|
|
|
3499
3677
|
};
|
|
3500
3678
|
}
|
|
3501
3679
|
}
|
|
3502
|
-
|
|
3503
|
-
|
|
3504
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type:
|
|
3680
|
+
TableCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: TableCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3681
|
+
TableCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: TableCellComponent, selector: "aup-table-cell", inputs: { row: "row", column: "column", editSession: "editSession", tableModel: "tableModel" }, host: { properties: { "class": "this.defaultClassNames", "class.fillCell": "this.fillCell", "class.padChild": "this.padChild" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!hasActiveEditor()\" [cdkPortalOutlet]=\"getRendererPortal()\" (attached)=\"initialiseRenderer($event)\"></ng-container>\n<ng-container *ngIf=\"hasActiveEditor()\" [cdkPortalOutlet]=\"getEditorPortal()\" (attached)=\"initialiseEditor($event)\"></ng-container>\n", styles: [""], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$4.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }] });
|
|
3682
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: TableCellComponent, decorators: [{
|
|
3505
3683
|
type: Component,
|
|
3506
|
-
args: [{ selector: 'aup-table-cell
|
|
3684
|
+
args: [{ selector: 'aup-table-cell', template: "<ng-container *ngIf=\"!hasActiveEditor()\" [cdkPortalOutlet]=\"getRendererPortal()\" (attached)=\"initialiseRenderer($event)\"></ng-container>\n<ng-container *ngIf=\"hasActiveEditor()\" [cdkPortalOutlet]=\"getEditorPortal()\" (attached)=\"initialiseEditor($event)\"></ng-container>\n", styles: [""] }]
|
|
3507
3685
|
}], ctorParameters: function () { return []; }, propDecorators: { row: [{
|
|
3508
3686
|
type: Input
|
|
3509
3687
|
}], column: [{
|
|
@@ -3523,7 +3701,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
3523
3701
|
args: ['class.padChild']
|
|
3524
3702
|
}] } });
|
|
3525
3703
|
|
|
3526
|
-
class
|
|
3704
|
+
class TableHeaderCellComponent {
|
|
3527
3705
|
constructor() {
|
|
3528
3706
|
this.defaultClassNames = 'aup-header-cell-renderer';
|
|
3529
3707
|
}
|
|
@@ -3538,11 +3716,11 @@ class TableHeaderCellRendererComponent {
|
|
|
3538
3716
|
return this[HEADER_CELL_RENDERER_PORTAL];
|
|
3539
3717
|
}
|
|
3540
3718
|
}
|
|
3541
|
-
|
|
3542
|
-
|
|
3543
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type:
|
|
3719
|
+
TableHeaderCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: TableHeaderCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3720
|
+
TableHeaderCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: TableHeaderCellComponent, selector: "aup-table-header-cell", inputs: { column: "column" }, host: { properties: { "class": "this.defaultClassNames" } }, ngImport: i0, template: "<ng-container [cdkPortalOutlet]=\"getPortal()\" (attached)=\"initialiseHeader($event)\"></ng-container>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%}\n"], directives: [{ type: i2$4.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }] });
|
|
3721
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: TableHeaderCellComponent, decorators: [{
|
|
3544
3722
|
type: Component,
|
|
3545
|
-
args: [{ selector: 'aup-table-header-cell
|
|
3723
|
+
args: [{ selector: 'aup-table-header-cell', template: "<ng-container [cdkPortalOutlet]=\"getPortal()\" (attached)=\"initialiseHeader($event)\"></ng-container>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%}\n"] }]
|
|
3546
3724
|
}], ctorParameters: function () { return []; }, propDecorators: { column: [{
|
|
3547
3725
|
type: Input
|
|
3548
3726
|
}], defaultClassNames: [{
|
|
@@ -3628,7 +3806,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
3628
3806
|
/**
|
|
3629
3807
|
* Create your model:
|
|
3630
3808
|
* @example
|
|
3631
|
-
* this.heroTableModel = TableModel
|
|
3809
|
+
* this.heroTableModel = new TableModel(heroList, table => {
|
|
3632
3810
|
* table.pluck("firstName");
|
|
3633
3811
|
* table.pluck("lastName");
|
|
3634
3812
|
* table.addCustomColumn("fullName", hero => `${hero.firstName} ${hero.lastName}`);
|
|
@@ -3640,7 +3818,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
3640
3818
|
*
|
|
3641
3819
|
* Column templates
|
|
3642
3820
|
* @example
|
|
3643
|
-
* this.heroTableModel = TableModel
|
|
3821
|
+
* this.heroTableModel = new TableModel(heroList, table => {
|
|
3644
3822
|
* table.pluck("firstName");
|
|
3645
3823
|
* table.pluck("lastName");
|
|
3646
3824
|
* table.addTemplateColumn("specialColumn");
|
|
@@ -3686,17 +3864,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
3686
3864
|
* }
|
|
3687
3865
|
*/
|
|
3688
3866
|
class TableComponent extends AbstractTableComponent {
|
|
3689
|
-
constructor(elementRef, ngZone) {
|
|
3690
|
-
super(elementRef, ngZone);
|
|
3867
|
+
constructor(elementRef, ngZone, injector) {
|
|
3868
|
+
super(elementRef, ngZone, injector);
|
|
3691
3869
|
}
|
|
3692
3870
|
getModel() {
|
|
3693
3871
|
return this.tableModel;
|
|
3694
3872
|
}
|
|
3695
3873
|
}
|
|
3696
|
-
TableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: TableComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
3874
|
+
TableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: TableComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
3697
3875
|
TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: TableComponent, selector: "aup-table", inputs: { tableModel: "tableModel" }, providers: [
|
|
3698
3876
|
{ provide: AbstractTableComponent, useExisting: TableComponent }
|
|
3699
|
-
], usesInheritance: true, ngImport: i0, template: "<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"getModel().dataSource.value\" [trackBy]=\"getModel().trackBy\">\n\n <ng-container *ngFor=\"let column of columns.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell
|
|
3877
|
+
], usesInheritance: true, ngImport: i0, template: "<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"getModel().dataSource.value\" [trackBy]=\"getModel().trackBy\">\n\n <ng-container *ngFor=\"let column of columns.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"getModel().isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"column\"\n [row]=\"row\"\n [tableModel]=\"getModel()\"\n [editSession]=\"getModel().getEditSessionFor(row)\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds.value\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds.value; let i = index\"\n [ngClass]=\"getModel().getRowClasses(row)\" [class.enable-hover]=\"getModel().isHoverEnabled()\"\n [attr.aup-row-id]=\"getModel().trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host.enable-scrolling{min-height:0}:host.enable-scrolling .scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"], components: [{ type: i1$b.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: TableHeaderCellComponent, selector: "aup-table-header-cell", inputs: ["column"] }, { type: TableCellComponent, selector: "aup-table-cell", inputs: ["row", "column", "editSession", "tableModel"] }, { type: i1$b.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i1$b.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$b.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i1$b.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i1$b.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i1$b.MatCellDef, selector: "[matCellDef]" }, { type: i1$b.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i1$b.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i1$b.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
3700
3878
|
__decorate([
|
|
3701
3879
|
TrackExternal(),
|
|
3702
3880
|
__metadata("design:type", AbstractTableModel)
|
|
@@ -3705,8 +3883,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
3705
3883
|
type: Component,
|
|
3706
3884
|
args: [{ selector: 'aup-table', providers: [
|
|
3707
3885
|
{ provide: AbstractTableComponent, useExisting: TableComponent }
|
|
3708
|
-
], template: "<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"getModel().dataSource.value\" [trackBy]=\"getModel().trackBy\">\n\n <ng-container *ngFor=\"let column of columns.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell
|
|
3709
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { tableModel: [{
|
|
3886
|
+
], template: "<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"getModel().dataSource.value\" [trackBy]=\"getModel().trackBy\">\n\n <ng-container *ngFor=\"let column of columns.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"getModel().isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"column\"\n [row]=\"row\"\n [tableModel]=\"getModel()\"\n [editSession]=\"getModel().getEditSessionFor(row)\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds.value\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds.value; let i = index\"\n [ngClass]=\"getModel().getRowClasses(row)\" [class.enable-hover]=\"getModel().isHoverEnabled()\"\n [attr.aup-row-id]=\"getModel().trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host.enable-scrolling{min-height:0}:host.enable-scrolling .scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"] }]
|
|
3887
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Injector }]; }, propDecorators: { tableModel: [{
|
|
3710
3888
|
type: Input
|
|
3711
3889
|
}] } });
|
|
3712
3890
|
|
|
@@ -4285,17 +4463,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
4285
4463
|
* }
|
|
4286
4464
|
*/
|
|
4287
4465
|
class TreeTableComponent extends AbstractTableComponent {
|
|
4288
|
-
constructor(elementRef, ngZone) {
|
|
4289
|
-
super(elementRef, ngZone);
|
|
4466
|
+
constructor(elementRef, ngZone, injector) {
|
|
4467
|
+
super(elementRef, ngZone, injector);
|
|
4290
4468
|
}
|
|
4291
4469
|
getModel() {
|
|
4292
4470
|
return this.treeTableModel;
|
|
4293
4471
|
}
|
|
4294
4472
|
}
|
|
4295
|
-
TreeTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: TreeTableComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
4473
|
+
TreeTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: TreeTableComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
4296
4474
|
TreeTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: TreeTableComponent, selector: "aup-tree-table", inputs: { treeTableModel: "treeTableModel" }, providers: [
|
|
4297
4475
|
{ provide: AbstractTableComponent, useExisting: TreeTableComponent }
|
|
4298
|
-
], usesInheritance: true, ngImport: i0, template: "<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"getModel().dataSource.value\" [trackBy]=\"getModel().trackBy\">\n\n <ng-container *ngFor=\"let column of columns.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell
|
|
4476
|
+
], usesInheritance: true, ngImport: i0, template: "<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"getModel().dataSource.value\" [trackBy]=\"getModel().trackBy\">\n\n <ng-container *ngFor=\"let column of columns.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"getModel().isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"column\"\n [row]=\"row\"\n [tableModel]=\"getModel()\"\n [editSession]=\"getModel().getEditSessionFor(row)\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds.value\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds.value; let i = index\"\n [ngClass]=\"getModel().getRowClasses(row)\" [class.enable-hover]=\"getModel().isHoverEnabled()\"\n [attr.aup-row-id]=\"getModel().trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host.enable-scrolling{min-height:0}:host.enable-scrolling .scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n", "td.mat-cell{border-top-width:0!important;border-bottom-width:0!important}td.mat-column-tree-label,td.mat-column-tree-label{width:1px}aup-table-cell-renderer[column-id=tree-label]{padding-left:8px!important}aup-tree-label-cell-renderer{flex:1}\n"], components: [{ type: i1$b.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: TableHeaderCellComponent, selector: "aup-table-header-cell", inputs: ["column"] }, { type: TableCellComponent, selector: "aup-table-cell", inputs: ["row", "column", "editSession", "tableModel"] }, { type: i1$b.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i1$b.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$b.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i1$b.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i1$b.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i1$b.MatCellDef, selector: "[matCellDef]" }, { type: i1$b.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i1$b.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i1$b.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
4299
4477
|
__decorate([
|
|
4300
4478
|
TrackExternal(),
|
|
4301
4479
|
__metadata("design:type", TreeTableModel)
|
|
@@ -4304,8 +4482,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
4304
4482
|
type: Component,
|
|
4305
4483
|
args: [{ selector: 'aup-tree-table', providers: [
|
|
4306
4484
|
{ provide: AbstractTableComponent, useExisting: TreeTableComponent }
|
|
4307
|
-
], template: "<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"getModel().dataSource.value\" [trackBy]=\"getModel().trackBy\">\n\n <ng-container *ngFor=\"let column of columns.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell
|
|
4308
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { treeTableModel: [{
|
|
4485
|
+
], template: "<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"getModel().dataSource.value\" [trackBy]=\"getModel().trackBy\">\n\n <ng-container *ngFor=\"let column of columns.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"getModel().isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"column\"\n [row]=\"row\"\n [tableModel]=\"getModel()\"\n [editSession]=\"getModel().getEditSessionFor(row)\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds.value\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds.value; let i = index\"\n [ngClass]=\"getModel().getRowClasses(row)\" [class.enable-hover]=\"getModel().isHoverEnabled()\"\n [attr.aup-row-id]=\"getModel().trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host.enable-scrolling{min-height:0}:host.enable-scrolling .scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n", "td.mat-cell{border-top-width:0!important;border-bottom-width:0!important}td.mat-column-tree-label,td.mat-column-tree-label{width:1px}aup-table-cell-renderer[column-id=tree-label]{padding-left:8px!important}aup-tree-label-cell-renderer{flex:1}\n"] }]
|
|
4486
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Injector }]; }, propDecorators: { treeTableModel: [{
|
|
4309
4487
|
type: Input
|
|
4310
4488
|
}] } });
|
|
4311
4489
|
|
|
@@ -4529,11 +4707,12 @@ ComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
|
|
|
4529
4707
|
EditRowControls,
|
|
4530
4708
|
ColumnTemplateDirective,
|
|
4531
4709
|
DefaultCellRendererComponent,
|
|
4532
|
-
|
|
4533
|
-
|
|
4534
|
-
|
|
4710
|
+
DefaultListCellRendererComponent,
|
|
4711
|
+
TableCellComponent,
|
|
4712
|
+
SelectionCellComponent,
|
|
4713
|
+
SelectionHeaderCellComponent,
|
|
4535
4714
|
DefaultHeaderCellRendererComponent,
|
|
4536
|
-
|
|
4715
|
+
TableHeaderCellComponent,
|
|
4537
4716
|
IconComponent,
|
|
4538
4717
|
SectionHeaderComponent,
|
|
4539
4718
|
TableRowMenuComponent,
|
|
@@ -4692,11 +4871,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
4692
4871
|
EditRowControls,
|
|
4693
4872
|
ColumnTemplateDirective,
|
|
4694
4873
|
DefaultCellRendererComponent,
|
|
4695
|
-
|
|
4696
|
-
|
|
4697
|
-
|
|
4874
|
+
DefaultListCellRendererComponent,
|
|
4875
|
+
TableCellComponent,
|
|
4876
|
+
SelectionCellComponent,
|
|
4877
|
+
SelectionHeaderCellComponent,
|
|
4698
4878
|
DefaultHeaderCellRendererComponent,
|
|
4699
|
-
|
|
4879
|
+
TableHeaderCellComponent,
|
|
4700
4880
|
IconComponent,
|
|
4701
4881
|
SectionHeaderComponent,
|
|
4702
4882
|
TableRowMenuComponent,
|
|
@@ -4820,9 +5000,15 @@ class ActivityActionsComponent extends DisposableComponent {
|
|
|
4820
5000
|
this.cancelCommand = activity.cancelCommand;
|
|
4821
5001
|
this.cdr.detectChanges();
|
|
4822
5002
|
}
|
|
5003
|
+
focusConfirm() {
|
|
5004
|
+
this.confirmCommandComponent.tryAndFocus();
|
|
5005
|
+
}
|
|
5006
|
+
focusCancel() {
|
|
5007
|
+
this.cancelCommandComponent.tryAndFocus();
|
|
5008
|
+
}
|
|
4823
5009
|
}
|
|
4824
5010
|
ActivityActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ActivityActionsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
4825
|
-
ActivityActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: { confirmCommand: "confirmCommand", cancelCommand: "cancelCommand", faces: "faces", confirmFace: "confirmFace", cancelFace: "cancelFace", style: "style", layout: "layout", align: "align" }, host: { properties: { "attr.layout": "this.layout", "attr.align": "this.align" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n", styles: [":host{display:grid;grid-template-rows:auto;align-items:center;justify-content:end;--resolved-activity-actions-gap: var(--activity-actions-gap, 8px)}:host[layout=block][align=start]{grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr}:host[layout=block][align=start] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=end]{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host[layout=block][align=end] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=stretch]{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}:host[layout=inline]{grid-template-areas:\"confirm cancel content\";grid-template-columns:auto auto 1fr}:host[layout=inline] .cancel{margin-left:var(--resolved-activity-actions-gap)}.cancel{grid-area:cancel}.confirm{grid-area:confirm}.content{grid-area:content;text-align:left}\n"], components: [{ type: CommandComponent, selector: "aup-command", inputs: ["command", "faceModel", "face", "busyFaceModel", "busyFace", "alignFace"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
5011
|
+
ActivityActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: { confirmCommand: "confirmCommand", cancelCommand: "cancelCommand", faces: "faces", confirmFace: "confirmFace", cancelFace: "cancelFace", style: "style", layout: "layout", align: "align" }, host: { properties: { "attr.layout": "this.layout", "attr.align": "this.align" } }, viewQueries: [{ propertyName: "confirmCommandComponent", first: true, predicate: ["confirmCommandComponent"], descendants: true }, { propertyName: "cancelCommandComponent", first: true, predicate: ["cancelCommandComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command #confirmCommandComponent class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command #cancelCommandComponent class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n", styles: [":host{display:grid;grid-template-rows:auto;align-items:center;justify-content:end;--resolved-activity-actions-gap: var(--activity-actions-gap, 8px)}:host[layout=block][align=start]{grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr}:host[layout=block][align=start] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=end]{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host[layout=block][align=end] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=stretch]{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}:host[layout=inline]{grid-template-areas:\"confirm cancel content\";grid-template-columns:auto auto 1fr}:host[layout=inline] .cancel{margin-left:var(--resolved-activity-actions-gap)}.cancel{grid-area:cancel}.confirm{grid-area:confirm}.content{grid-area:content;text-align:left}\n"], components: [{ type: CommandComponent, selector: "aup-command", inputs: ["command", "faceModel", "face", "busyFaceModel", "busyFace", "alignFace"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
4826
5012
|
__decorate([
|
|
4827
5013
|
TrackExternal(),
|
|
4828
5014
|
__metadata("design:type", Command)
|
|
@@ -4833,8 +5019,14 @@ __decorate([
|
|
|
4833
5019
|
], ActivityActionsComponent.prototype, "cancelCommand", void 0);
|
|
4834
5020
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ActivityActionsComponent, decorators: [{
|
|
4835
5021
|
type: Component,
|
|
4836
|
-
args: [{ selector: 'aup-activity-actions', template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n", styles: [":host{display:grid;grid-template-rows:auto;align-items:center;justify-content:end;--resolved-activity-actions-gap: var(--activity-actions-gap, 8px)}:host[layout=block][align=start]{grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr}:host[layout=block][align=start] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=end]{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host[layout=block][align=end] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=stretch]{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}:host[layout=inline]{grid-template-areas:\"confirm cancel content\";grid-template-columns:auto auto 1fr}:host[layout=inline] .cancel{margin-left:var(--resolved-activity-actions-gap)}.cancel{grid-area:cancel}.confirm{grid-area:confirm}.content{grid-area:content;text-align:left}\n"] }]
|
|
4837
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: {
|
|
5022
|
+
args: [{ selector: 'aup-activity-actions', template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command #confirmCommandComponent class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command #cancelCommandComponent class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n", styles: [":host{display:grid;grid-template-rows:auto;align-items:center;justify-content:end;--resolved-activity-actions-gap: var(--activity-actions-gap, 8px)}:host[layout=block][align=start]{grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr}:host[layout=block][align=start] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=end]{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host[layout=block][align=end] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=stretch]{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}:host[layout=inline]{grid-template-areas:\"confirm cancel content\";grid-template-columns:auto auto 1fr}:host[layout=inline] .cancel{margin-left:var(--resolved-activity-actions-gap)}.cancel{grid-area:cancel}.confirm{grid-area:confirm}.content{grid-area:content;text-align:left}\n"] }]
|
|
5023
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { confirmCommandComponent: [{
|
|
5024
|
+
type: ViewChild,
|
|
5025
|
+
args: ["confirmCommandComponent"]
|
|
5026
|
+
}], cancelCommandComponent: [{
|
|
5027
|
+
type: ViewChild,
|
|
5028
|
+
args: ["cancelCommandComponent"]
|
|
5029
|
+
}], confirmCommand: [{
|
|
4838
5030
|
type: Input
|
|
4839
5031
|
}], cancelCommand: [{
|
|
4840
5032
|
type: Input
|
|
@@ -4869,30 +5061,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
4869
5061
|
});
|
|
4870
5062
|
})(ActivityActionsComponent || (ActivityActionsComponent = {}));
|
|
4871
5063
|
|
|
4872
|
-
const ACTIVITY_DATA = new InjectionToken(
|
|
5064
|
+
const ACTIVITY_DATA = new InjectionToken("InteractionActivityData");
|
|
4873
5065
|
class Activity extends DisposableComponent {
|
|
4874
5066
|
constructor() {
|
|
4875
5067
|
super();
|
|
4876
|
-
this.
|
|
4877
|
-
this.
|
|
4878
|
-
this.
|
|
5068
|
+
this.activityReadyListeners = new EventListenerList();
|
|
5069
|
+
this._busy$ = this.registerDisposable(new DelegatingValueModel().withDefault(false));
|
|
5070
|
+
this._focused$ = this.registerDisposable(new DelegatingValueModel());
|
|
5071
|
+
this.class = "aup-activity";
|
|
4879
5072
|
this.busyWhile(this.confirmCommand.busy);
|
|
4880
5073
|
}
|
|
4881
5074
|
get isFocused() {
|
|
4882
|
-
return this.
|
|
5075
|
+
return this._focused$.value;
|
|
4883
5076
|
}
|
|
4884
5077
|
initialise(nestedInteractionContext, activityContext) {
|
|
4885
5078
|
const { chain, when } = Dsl.disposeWith(this);
|
|
4886
5079
|
assert$1.isNil(this._activityContext);
|
|
4887
5080
|
this._activityContext = activityContext;
|
|
4888
5081
|
this._interactionContext = nestedInteractionContext;
|
|
4889
|
-
this.
|
|
4890
|
-
when(this.
|
|
4891
|
-
this.
|
|
5082
|
+
this._focused$.setDelegate(activityContext.focused);
|
|
5083
|
+
when(this._focused$).becomesTruthy(() => {
|
|
5084
|
+
this.notifyActivityReady();
|
|
4892
5085
|
});
|
|
4893
5086
|
}
|
|
4894
5087
|
ngAfterViewInit() {
|
|
4895
|
-
this.activityActions
|
|
5088
|
+
if (this.activityActions) {
|
|
5089
|
+
this.initialiseActivityAction(this.activityActions);
|
|
5090
|
+
}
|
|
5091
|
+
}
|
|
5092
|
+
initialiseActivityAction(activityActions) {
|
|
5093
|
+
activityActions.initCommands(this);
|
|
4896
5094
|
}
|
|
4897
5095
|
get interactionContext() {
|
|
4898
5096
|
assert$1.isTruthy(this.isInitialised());
|
|
@@ -4904,27 +5102,30 @@ class Activity extends DisposableComponent {
|
|
|
4904
5102
|
cancel(error) {
|
|
4905
5103
|
this._activityContext.onCancel(error);
|
|
4906
5104
|
}
|
|
4907
|
-
|
|
4908
|
-
|
|
5105
|
+
notifyActivityReady() {
|
|
5106
|
+
this.activityReadyListeners.fire(l => l(this));
|
|
4909
5107
|
}
|
|
4910
|
-
|
|
4911
|
-
return this.
|
|
5108
|
+
onActivityReady(callback) {
|
|
5109
|
+
return this.activityReadyListeners.add(callback);
|
|
4912
5110
|
}
|
|
4913
|
-
get
|
|
4914
|
-
return this.
|
|
5111
|
+
get busy$() {
|
|
5112
|
+
return this._busy$.readonly;
|
|
5113
|
+
}
|
|
5114
|
+
get focused$() {
|
|
5115
|
+
return this._focused$.readonly;
|
|
4915
5116
|
}
|
|
4916
5117
|
busyWhile(busyModel) {
|
|
4917
|
-
this.
|
|
5118
|
+
this._busy$.setDelegate(busyModel);
|
|
4918
5119
|
}
|
|
4919
5120
|
isBusy() {
|
|
4920
|
-
return this.
|
|
5121
|
+
return this._busy$.value;
|
|
4921
5122
|
}
|
|
4922
5123
|
isInitialised() {
|
|
4923
5124
|
return !!this._activityContext;
|
|
4924
5125
|
}
|
|
4925
5126
|
}
|
|
4926
5127
|
Activity.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: Activity, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4927
|
-
Activity.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: Activity, selector: "ng-component", host: { properties: { "class": "this.class", "attr.focused": "this.isFocused" } }, viewQueries: [{ propertyName: "activityActions", first: true, predicate: ActivityActionsComponent, descendants: true }], usesInheritance: true, ngImport: i0, template:
|
|
5128
|
+
Activity.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: Activity, selector: "ng-component", host: { properties: { "class": "this.class", "attr.focused": "this.isFocused" } }, viewQueries: [{ propertyName: "activityActions", first: true, predicate: ActivityActionsComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "", isInline: true });
|
|
4928
5129
|
__decorate([
|
|
4929
5130
|
TrackExternal(),
|
|
4930
5131
|
__metadata("design:type", Command)
|
|
@@ -4936,17 +5137,17 @@ __decorate([
|
|
|
4936
5137
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: Activity, decorators: [{
|
|
4937
5138
|
type: Component,
|
|
4938
5139
|
args: [{
|
|
4939
|
-
template:
|
|
5140
|
+
template: ""
|
|
4940
5141
|
}]
|
|
4941
5142
|
}], ctorParameters: function () { return []; }, propDecorators: { activityActions: [{
|
|
4942
5143
|
type: ViewChild,
|
|
4943
5144
|
args: [ActivityActionsComponent]
|
|
4944
5145
|
}], confirmCommand: [], cancelCommand: [], class: [{
|
|
4945
5146
|
type: HostBinding,
|
|
4946
|
-
args: [
|
|
5147
|
+
args: ["class"]
|
|
4947
5148
|
}], isFocused: [{
|
|
4948
5149
|
type: HostBinding,
|
|
4949
|
-
args: [
|
|
5150
|
+
args: ["attr.focused"]
|
|
4950
5151
|
}] } });
|
|
4951
5152
|
|
|
4952
5153
|
var Alert;
|
|
@@ -4980,6 +5181,11 @@ class AbstractDialogComponent extends Activity {
|
|
|
4980
5181
|
color: () => this.color || 'primary',
|
|
4981
5182
|
style: () => 'raised'
|
|
4982
5183
|
};
|
|
5184
|
+
this.onActivityReady(() => {
|
|
5185
|
+
if (this.activityActions) {
|
|
5186
|
+
this.isDestructive() ? this.activityActions.focusCancel() : this.activityActions.focusConfirm();
|
|
5187
|
+
}
|
|
5188
|
+
});
|
|
4983
5189
|
}
|
|
4984
5190
|
getConfig() {
|
|
4985
5191
|
return lang$1.abstractMethod(this.constructor);
|
|
@@ -6962,7 +7168,7 @@ class ActivityRef {
|
|
|
6962
7168
|
},
|
|
6963
7169
|
focused: this.focusedModel.readonly
|
|
6964
7170
|
});
|
|
6965
|
-
this._activityBusy.setDelegate(this._activity.busy);
|
|
7171
|
+
this._activityBusy.setDelegate(this._activity.busy$);
|
|
6966
7172
|
}
|
|
6967
7173
|
finishActivity(resolveOrReject) {
|
|
6968
7174
|
assert.isFalsey(this.isComplete());
|
|
@@ -7014,7 +7220,10 @@ class ActivityOutletComponent {
|
|
|
7014
7220
|
loadActivity(activityRef) {
|
|
7015
7221
|
const injector = Injector.create({
|
|
7016
7222
|
providers: [
|
|
7017
|
-
{
|
|
7223
|
+
{
|
|
7224
|
+
provide: ACTIVITY_DATA,
|
|
7225
|
+
useValue: activityRef.activityData
|
|
7226
|
+
}
|
|
7018
7227
|
],
|
|
7019
7228
|
parent: this.injector
|
|
7020
7229
|
});
|
|
@@ -7823,13 +8032,11 @@ class InputActivity extends Activity {
|
|
|
7823
8032
|
this.cancel();
|
|
7824
8033
|
});
|
|
7825
8034
|
this.busyWhile(this.confirmCommand.busy);
|
|
8035
|
+
this.onActivityReady(() => this.valueModel.focusContext.requestFocus());
|
|
7826
8036
|
}
|
|
7827
8037
|
get layout() {
|
|
7828
8038
|
return this.data?.layout ?? InputActivity.Layout.BLOCK;
|
|
7829
8039
|
}
|
|
7830
|
-
onActivityReady() {
|
|
7831
|
-
this.valueModel.focusContext.requestFocus();
|
|
7832
|
-
}
|
|
7833
8040
|
get additionalCssClassName() {
|
|
7834
8041
|
return this.data.cssClassName ?? '';
|
|
7835
8042
|
}
|
|
@@ -8042,14 +8249,6 @@ class TableModel extends AbstractTableModel {
|
|
|
8042
8249
|
}
|
|
8043
8250
|
this.setDataSource(sourceOfTruth);
|
|
8044
8251
|
}
|
|
8045
|
-
/**
|
|
8046
|
-
* @deprecated use new TableModel(sourceOfTruth, table => {...}); instead.
|
|
8047
|
-
* @param sourceOfTruth
|
|
8048
|
-
* @param builder
|
|
8049
|
-
*/
|
|
8050
|
-
static fromList(sourceOfTruth, builder) {
|
|
8051
|
-
return new TableModel(sourceOfTruth, builder);
|
|
8052
|
-
}
|
|
8053
8252
|
addSelectionColumn(selectionModel, showSelectionColumn) {
|
|
8054
8253
|
return this._addSelectionColumn(selectionModel, showSelectionColumn);
|
|
8055
8254
|
}
|
|
@@ -9991,5 +10190,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
9991
10190
|
* Generated bundle index. Do not edit.
|
|
9992
10191
|
*/
|
|
9993
10192
|
|
|
9994
|
-
export { ACTIVITY_DATA, ALERT_CONFIG, AUP_PLACE_CONFIG, AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT, AbstractActivityTriggerComponent, AbstractCardContainerComponent, AbstractConfirmDialogComponent, AbstractDialogComponent, AbstractInputComponent, AbstractInteractionContext, AbstractListInputComponent, AbstractPlaceNavigationComponent, AbstractPopStateNavigation, AbstractPopupMenuComponent, AbstractTableComponent, AbstractTableModel, AbstractValueInputComponent, Activity, ActivityActionsComponent, ActivityBodyComponent, ActivityContainerComponent, ActivityOutletComponent, ActivityRef, ActivityTitleComponent, AddCardActivityComponent, AddItemInteractionContextComponent, Alert, AlertDialogComponent, AngularUiPowerupsModule, AutocompleteInputComponent, Bounds, BusyOverlayComponent, CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL, CardContainerComponent, CardStackComponent, CellEditorPortalRef, CellHeaderPortalRef, CellPortalRef, CellRendererPortalRef, CheckboxInputComponent, ColumnListModel, ColumnModel, ColumnTemplateDirective, CommandComponent, CommandContainer, CommandDirective, CommandFace, CommandFaceComponent, ComponentCellRendererPortalRef, ComponentsModule, ConfirmThenDialogComponent, ConfirmThenExecuteDialogComponent, ConfirmationDialogComponent, ConsolidatedParameterMap, CustomTemplateColumnModel, CustomValueColumnModel, DEFINITION_META_DATA_KEY, DIALOG_INTERACTION_SERVICE_DEFAULTS, DecoratedTreeNode, DefaultCellRendererComponent, DefaultHeaderCellRendererComponent, DialogInteractionContext, DialogInteractionContextFactory, Dimension, DirectivesModule, DisposableComponent, EditRowControls, EditSession, EditorControlColumnModel, EmptyStateComponent, EventCleanUpSession, FlattenedTreeListModel, FlexComponent, FocusBinding, FocusBindingDirective, FocusBindingFactory, FocusContainerComponent, FocusableComponent, Formatter, HEADER_CELL_RENDERER_PORTAL, HighlightPipe, HighlightTextModelDirective, HorizontalAlignment, IconComponent, InPlaceInteractionContextComponent, InlineActivityTriggerComponent, InlineEditorModel, InlineStringEditorComponent, InputActivity, InteractionContextTriggerFor, InteractionModule, InteractionService, InteractionServiceRoutingAdapter, LEFT_RIGHT_PLACE_ANIMATION, LabelledValueComponent, ListPlaceNavComponent, ListPropertyColumnModel, LoadingContainerComponent, MarkdownComponent, MarkdownService, ModalActivityTriggerComponent, ModalInteractionContextFactory, MoreMenuComponent, MultipleSelectInputComponent, Navigating, NavigatingDuringInteraction, NavigationContext, NavigationSession, NoopAuthGuard, NoopComponent, NotAuthorisedNoticeComponent, NumberInputComponent, POPUP_CONTAINER, PORTAL_EDITOR_COMPONENT, PORTAL_RENDERER_COMPONENT, PaginatorComponent, ParameterDefinition, PasswordInputComponent, Place, PlaceAccessGuard, PlaceComponent, PlaceComponentDeactivationHandler, PlaceDefinition, PlaceGuard, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, PopStateDuringInteractionNavigation, PopStateNavigation, PopupActivityTriggerComponent, PopupAwareComponent, PopupInteractionContextComponent, PopupMenuComponent, PopupMenuRendererComponent, PropertyColumnModel, ROUTE_PARAMETER_LIST_KEY, RemoveLastInteractionFromUrlNavigationSession, ResizeAwareComponent, RouteId, ScrollContainerComponent, SectionHeaderComponent,
|
|
10193
|
+
export { ACTIVITY_DATA, ALERT_CONFIG, AUP_PLACE_CONFIG, AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT, AbstractActivityTriggerComponent, AbstractCardContainerComponent, AbstractConfirmDialogComponent, AbstractDialogComponent, AbstractInputComponent, AbstractInteractionContext, AbstractListInputComponent, AbstractPlaceNavigationComponent, AbstractPopStateNavigation, AbstractPopupMenuComponent, AbstractTableComponent, AbstractTableModel, AbstractValueInputComponent, Activity, ActivityActionsComponent, ActivityBodyComponent, ActivityContainerComponent, ActivityOutletComponent, ActivityRef, ActivityTitleComponent, AddCardActivityComponent, AddItemInteractionContextComponent, Alert, AlertDialogComponent, AngularUiPowerupsModule, AutocompleteInputComponent, Bounds, BusyOverlayComponent, CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL, CardContainerComponent, CardStackComponent, CellEditorPortalRef, CellHeaderPortalRef, CellPortalRef, CellRendererPortalRef, CheckboxInputComponent, ColumnListModel, ColumnModel, ColumnTemplateDirective, ColumnTextSearchFormatter, CommandComponent, CommandContainer, CommandDirective, CommandFace, CommandFaceComponent, ComponentCellRendererPortalRef, ComponentsModule, ConfirmThenDialogComponent, ConfirmThenExecuteDialogComponent, ConfirmationDialogComponent, ConsolidatedParameterMap, CustomTemplateColumnModel, CustomValueColumnModel, DEFINITION_META_DATA_KEY, DIALOG_INTERACTION_SERVICE_DEFAULTS, DecoratedTreeNode, DefaultCellRendererComponent, DefaultHeaderCellRendererComponent, DefaultListCellRendererComponent, DialogInteractionContext, DialogInteractionContextFactory, Dimension, DirectivesModule, DisposableComponent, EditRowControls, EditSession, EditorControlColumnModel, EmptyStateComponent, EnableCellTextSearch, EventCleanUpSession, FlattenedTreeListModel, FlexComponent, FocusBinding, FocusBindingDirective, FocusBindingFactory, FocusContainerComponent, FocusableComponent, Formatter, HEADER_CELL_RENDERER_PORTAL, HighlightPipe, HighlightTextModelDirective, HorizontalAlignment, IconComponent, InPlaceInteractionContextComponent, InlineActivityTriggerComponent, InlineEditorModel, InlineStringEditorComponent, InputActivity, InteractionContextTriggerFor, InteractionModule, InteractionService, InteractionServiceRoutingAdapter, Keys, LEFT_RIGHT_PLACE_ANIMATION, LabelledValueComponent, ListPlaceNavComponent, ListPropertyColumnModel, LoadingContainerComponent, MarkdownComponent, MarkdownService, ModalActivityTriggerComponent, ModalInteractionContextFactory, MoreMenuComponent, MultipleSelectInputComponent, Navigating, NavigatingDuringInteraction, NavigationContext, NavigationSession, NoopAuthGuard, NoopComponent, NotAuthorisedNoticeComponent, NumberInputComponent, POPUP_CONTAINER, PORTAL_EDITOR_COMPONENT, PORTAL_RENDERER_COMPONENT, PaginatorComponent, ParameterDefinition, PasswordInputComponent, Place, PlaceAccessGuard, PlaceComponent, PlaceComponentDeactivationHandler, PlaceDefinition, PlaceGuard, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, PopStateDuringInteractionNavigation, PopStateNavigation, PopupActivityTriggerComponent, PopupAwareComponent, PopupInteractionContextComponent, PopupMenuComponent, PopupMenuRendererComponent, PropertyColumnModel, ROUTE_PARAMETER_LIST_KEY, RemoveLastInteractionFromUrlNavigationSession, ResizeAwareComponent, RouteId, ScrollContainerComponent, SectionHeaderComponent, SelectInputActivity, SelectInputComponent, SelectionCellComponent, SelectionColumnModel, SelectionHeaderCellComponent, SeparatorComponent, SidePlaceNavigationComponent, StringInputActivity, StringInputComponent, SwitchCaseComponent, SwitchCaseDefaultDirective, SwitchCaseOption, SwitchCaseWhenDirective, SynchroniseInteractionContextIdsWithRoute, TabbedPlaceNavigationComponent, TableCellComponent, TableComponent, TableHeaderCellComponent, TableModel, TableRowMenuComponent, TemplateCellRendererPortalRef, TextInputComponent, ToolBarComponent, TrackBy, TreeExpansionModel, TreeInheritanceIconComponent, TreeLabelCellRendererComponent, TreeLabelColumnModel, TreeTableComponent, TreeTableModel, UrlService, UrlSnapshot, VerticalFocusContainerComponent, VisibilityService, Visit, VisitParameter, VisitParameterList, VisitSanitiser, WaitUntilLeavingInteractionTransitionCancelled, WaitUntilLinkTriggeredNavigationInteractionCancellationTypeDetermined, WaitUntilPopStateDuringCanDeactivateInteractionFinishes, leftRightPlaceAnimation, markdownPillExtension, slideDownOnEnterAnimation, slideRightOnEnterAnimation, treeNodeDecorator };
|
|
9995
10194
|
//# sourceMappingURL=coolon-angular-ui-powerups.mjs.map
|