@coolon/angular-ui-powerups 16.1.0-aplpha.9 → 16.1.0-aplpha.90
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/activities/input-activities.scss +10 -2
- package/assets/form.scss +62 -27
- package/assets/table.scss +13 -24
- package/assets/tabs.scss +2 -6
- package/esm2022/lib/animations/slide-animations.mjs +6 -1
- package/esm2022/lib/components/cards/card-container/card-container.component.mjs +4 -4
- package/esm2022/lib/components/commands/command/command.component.mjs +24 -10
- package/esm2022/lib/components/commands/command-face/command-face.component.mjs +11 -3
- package/esm2022/lib/components/commands/command-face.mjs +11 -11
- package/esm2022/lib/components/commands/group/popup-menu/abstract-popup-menu.component.mjs +11 -11
- package/esm2022/lib/components/commands/group/tool-bar/tool-bar.component.mjs +6 -4
- package/esm2022/lib/components/components.module.mjs +22 -8
- package/esm2022/lib/components/disposable-component.mjs +19 -37
- package/esm2022/lib/components/exports.mjs +6 -2
- package/esm2022/lib/components/forms/abstract-input.component.mjs +55 -12
- package/esm2022/lib/components/forms/autocomplete-input/autocomplete-input.component.mjs +2 -2
- package/esm2022/lib/components/forms/checkbox-input/checkbox-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/form-field.mjs +2 -0
- package/esm2022/lib/components/forms/multiple-select-input/multiple-select-input.component.mjs +2 -2
- package/esm2022/lib/components/forms/number-input/number-input.component.mjs +49 -10
- package/esm2022/lib/components/forms/password-input/password-input.component.mjs +40 -3
- package/esm2022/lib/components/forms/search-input/search-input.component.mjs +33 -0
- package/esm2022/lib/components/forms/select-input/select-input.component.mjs +11 -10
- package/esm2022/lib/components/forms/string-input/string-input.component.mjs +21 -9
- package/esm2022/lib/components/icon/icon.component.mjs +7 -4
- package/esm2022/lib/components/loadable-component.mjs +49 -0
- package/esm2022/lib/components/resize-aware.component.mjs +61 -24
- package/esm2022/lib/components/switch-case/switch-case.component.mjs +5 -7
- package/esm2022/lib/components/tables/abstract-table-model.mjs +42 -25
- package/esm2022/lib/components/tables/abstract-table.component.mjs +19 -5
- package/esm2022/lib/components/tables/column/column-manager.mjs +81 -0
- package/esm2022/lib/components/tables/column/column-model.mjs +13 -3
- package/esm2022/lib/components/tables/column/column-order-manager.mjs +19 -0
- package/esm2022/lib/components/tables/column/custom-template-column-model.mjs +3 -3
- package/esm2022/lib/components/tables/column/custom-value-column-model.mjs +3 -3
- package/esm2022/lib/components/tables/column/editor-controls-column-model.mjs +3 -3
- package/esm2022/lib/components/tables/column/list-propery-column-model.mjs +3 -3
- package/esm2022/lib/components/tables/column/property-column-model.mjs +3 -3
- package/esm2022/lib/components/tables/column/selection-column-model.mjs +3 -3
- package/esm2022/lib/components/tables/editor/edit-session.mjs +4 -2
- package/esm2022/lib/components/tables/filter/table-filter-model.mjs +4 -2
- package/esm2022/lib/components/tables/filter/text-search-predicate.mjs +16 -2
- package/esm2022/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.mjs +3 -3
- package/esm2022/lib/components/tables/renderer/table-body/table-body.component.mjs +132 -41
- package/esm2022/lib/components/tables/renderer/table-more-menu/table-more-menu.component.mjs +7 -2
- package/esm2022/lib/components/tables/table/table.component.mjs +19 -68
- package/esm2022/lib/components/tables/tree-table/decorated-tree-node.mjs +5 -4
- package/esm2022/lib/components/tables/tree-table/tree-label-column-model.mjs +3 -3
- package/esm2022/lib/components/tables/tree-table/tree-table-component.mjs +7 -4
- package/esm2022/lib/components/tables/tree-table/tree-table-model.mjs +3 -3
- package/esm2022/lib/components/text/markdown/markdown.component.mjs +2 -2
- package/esm2022/lib/directives/directives.module.mjs +1 -1
- package/esm2022/lib/directives/exports.mjs +2 -1
- package/esm2022/lib/directives/highlight.pipe.mjs +2 -2
- package/esm2022/lib/directives/resize-observer.directive.mjs +40 -0
- package/esm2022/lib/interaction/activity.mjs +3 -4
- package/esm2022/lib/interaction/alert.mjs +2 -2
- package/esm2022/lib/interaction/components/abstract-confirm-dialog.component.mjs +8 -4
- package/esm2022/lib/interaction/components/activity-actions/activity-actions.component.mjs +7 -9
- package/esm2022/lib/interaction/components/activity-container/activity-container.component.mjs +28 -11
- package/esm2022/lib/interaction/components/activity-title/activity-title.component.mjs +4 -4
- package/esm2022/lib/interaction/components/editors/edit-context.mjs +1 -1
- package/esm2022/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.mjs +2 -2
- package/esm2022/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.mjs +3 -3
- package/esm2022/lib/interaction/components/input-activities/input-activity.mjs +2 -2
- package/esm2022/lib/interaction/components/input-activities/select-input-activity.mjs +3 -1
- package/esm2022/lib/interaction/components/input-activities/string-input-activity.mjs +8 -4
- package/esm2022/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.mjs +129 -0
- package/esm2022/lib/interaction/directives/interaction-context-trigger-for.directive.mjs +2 -2
- package/esm2022/lib/interaction/exports.mjs +2 -1
- package/esm2022/lib/interaction/interaction.module.mjs +7 -9
- package/esm2022/lib/place/components/list-place-nav/list-place-nav.component.mjs +3 -4
- package/esm2022/lib/place/components/place-outlet/place-outlet.component.mjs +7 -9
- package/esm2022/lib/place/components/side-place-navigation/side-place-navigation.component.mjs +2 -2
- package/esm2022/lib/place/guards/consolidated-param-map.mjs +4 -4
- package/esm2022/lib/place/navigation/place-component-deactivation-handler.mjs +2 -2
- package/esm2022/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.mjs +3 -6
- package/esm2022/lib/place/place-component.mjs +7 -7
- package/esm2022/lib/place/place-definition.mjs +3 -3
- package/esm2022/lib/place/place-history.mjs +2 -2
- package/esm2022/lib/place/place.decorator.mjs +2 -2
- package/esm2022/lib/place/place.module.mjs +1 -5
- package/esm2022/lib/place/route/formatter.mjs +2 -2
- package/esm2022/lib/place/route/parameter-decorators.mjs +54 -50
- package/esm2022/lib/place/route/parameter-definition.mjs +2 -2
- package/esm2022/lib/place/url-snapshot.mjs +3 -3
- package/esm2022/lib/place/visit-segment.mjs +2 -2
- package/esm2022/lib/place/visit.mjs +2 -2
- package/fesm2022/coolon-angular-ui-powerups.mjs +1075 -485
- package/fesm2022/coolon-angular-ui-powerups.mjs.map +1 -1
- package/lib/animations/slide-animations.d.ts +1 -0
- package/lib/components/cards/card-container/card-container.component.d.ts +1 -1
- package/lib/components/commands/command/command.component.d.ts +2 -1
- package/lib/components/commands/command-face/command-face.component.d.ts +2 -0
- package/lib/components/commands/command-face.d.ts +5 -7
- package/lib/components/commands/group/popup-menu/abstract-popup-menu.component.d.ts +2 -2
- package/lib/components/commands/group/tool-bar/tool-bar.component.d.ts +1 -1
- package/lib/components/components.module.d.ts +55 -53
- package/lib/components/disposable-component.d.ts +11 -8
- package/lib/components/exports.d.ts +5 -1
- package/lib/components/forms/abstract-input.component.d.ts +13 -5
- package/lib/components/forms/form-field.d.ts +5 -0
- package/lib/components/forms/number-input/number-input.component.d.ts +8 -4
- package/lib/components/forms/password-input/password-input.component.d.ts +7 -1
- package/lib/components/forms/search-input/search-input.component.d.ts +10 -0
- package/lib/components/forms/select-input/select-input.component.d.ts +4 -3
- package/lib/components/forms/string-input/string-input.component.d.ts +3 -1
- package/lib/components/loadable-component.d.ts +17 -0
- package/lib/components/resize-aware.component.d.ts +24 -5
- package/lib/components/switch-case/switch-case.component.d.ts +2 -3
- package/lib/components/tables/abstract-table-model.d.ts +10 -5
- package/lib/components/tables/abstract-table.component.d.ts +3 -2
- package/lib/components/tables/column/column-manager.d.ts +19 -0
- package/lib/components/tables/column/column-model.d.ts +5 -1
- package/lib/components/tables/column/column-order-manager.d.ts +20 -0
- package/lib/components/tables/column/custom-template-column-model.d.ts +2 -1
- package/lib/components/tables/column/custom-value-column-model.d.ts +2 -1
- package/lib/components/tables/column/editor-controls-column-model.d.ts +2 -1
- package/lib/components/tables/column/list-propery-column-model.d.ts +2 -1
- package/lib/components/tables/column/property-column-model.d.ts +2 -1
- package/lib/components/tables/column/selection-column-model.d.ts +2 -1
- package/lib/components/tables/filter/text-search-predicate.d.ts +9 -0
- package/lib/components/tables/renderer/table-body/table-body.component.d.ts +35 -16
- package/lib/components/tables/renderer/table-more-menu/table-more-menu.component.d.ts +2 -1
- package/lib/components/tables/table/table.component.d.ts +5 -10
- package/lib/components/tables/tree-table/tree-label-column-model.d.ts +2 -1
- package/lib/components/tables/tree-table/tree-table-component.d.ts +3 -0
- package/lib/directives/exports.d.ts +1 -0
- package/lib/directives/resize-observer.directive.d.ts +16 -0
- package/lib/interaction/activity.d.ts +2 -2
- package/lib/interaction/components/abstract-confirm-dialog.component.d.ts +1 -0
- package/lib/interaction/components/activity-actions/activity-actions.component.d.ts +1 -3
- package/lib/interaction/components/activity-container/activity-container.component.d.ts +7 -3
- package/lib/interaction/components/activity-title/activity-title.component.d.ts +1 -1
- package/lib/interaction/components/editors/edit-context.d.ts +1 -1
- package/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.d.ts +1 -1
- package/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.d.ts +53 -0
- package/lib/interaction/exports.d.ts +1 -0
- package/lib/interaction/interaction.module.d.ts +28 -28
- package/lib/place/components/place-outlet/place-outlet.component.d.ts +3 -4
- package/lib/place/place-component.d.ts +4 -4
- package/lib/place/place.module.d.ts +4 -5
- package/package.json +7 -5
- package/esm2022/lib/components/tables/column/column-list-model.mjs +0 -44
- package/lib/components/tables/column/column-list-model.d.ts +0 -13
|
@@ -2,7 +2,7 @@ import { ObserversModule } from '@angular/cdk/observers';
|
|
|
2
2
|
import * as i1$1 from '@angular/common';
|
|
3
3
|
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { ElementRef, Directive, Inject, Host, Optional, Input, HostListener, inject, NgZone, Injectable, Pipe, NgModule, Component, ContentChild, HostBinding, ViewEncapsulation, InjectionToken, ViewChild, ViewChildren, EventEmitter, Output, SkipSelf, Self, ContentChildren, ComponentRef, Injector, PLATFORM_ID } from '@angular/core';
|
|
5
|
+
import { ElementRef, Directive, Inject, Host, Optional, Input, HostListener, ChangeDetectorRef, inject, NgZone, Injectable, Pipe, NgModule, Component, ContentChild, HostBinding, ChangeDetectionStrategy, ViewEncapsulation, InjectionToken, ViewChild, ViewChildren, EventEmitter, Output, SkipSelf, Self, ContentChildren, ComponentRef, Injector, PLATFORM_ID } from '@angular/core';
|
|
6
6
|
import * as i2$4 from '@angular/forms';
|
|
7
7
|
import { FormsModule } from '@angular/forms';
|
|
8
8
|
import * as i4$2 from '@angular/material/form-field';
|
|
@@ -17,7 +17,7 @@ import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
|
17
17
|
import * as i3$2 from '@angular/cdk/portal';
|
|
18
18
|
import { ComponentPortal, TemplatePortal, PortalModule } from '@angular/cdk/portal';
|
|
19
19
|
import * as i1$2 from '@angular/cdk/scrolling';
|
|
20
|
-
import { CdkScrollableModule } from '@angular/cdk/scrolling';
|
|
20
|
+
import { CdkVirtualScrollViewport, CdkScrollableModule, ScrollingModule } from '@angular/cdk/scrolling';
|
|
21
21
|
import * as i7 from '@angular/material/autocomplete';
|
|
22
22
|
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
23
23
|
import * as i2 from '@angular/material/button';
|
|
@@ -38,35 +38,34 @@ import * as i2$6 from '@angular/material/table';
|
|
|
38
38
|
import { MatTableModule } from '@angular/material/table';
|
|
39
39
|
import * as i4$1 from '@angular/material/tooltip';
|
|
40
40
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
41
|
+
import * as i4$5 from 'ng-table-virtual-scroll';
|
|
42
|
+
import { TableVirtualScrollDataSource, TableVirtualScrollModule } from 'ng-table-virtual-scroll';
|
|
41
43
|
import * as i1$3 from '@coolon/pectin';
|
|
42
|
-
import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl,
|
|
44
|
+
import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl, Logger, proxify, ValueModel, Proxify, StoreInValueModel, Command, MutableListModel, StoreInListModel, Disposable, DelegatingListModel, MutableValueModel, DelegateToValueModel, FocusManager, EventListenerList, Guard, DelegatingFormListModel, Binding, DebugContext, DelegateToListModel, DelegatingFormValueModel, ListModel, Functions, PageController, SelectionModel, CanProxy, MultipleSelectionModel, WatchList, DirtyTrackingForm, ProxyRegistry, DelegatingCommand, ComputedListModel, Deferred, ReducingValueModel, AndValueModel } from '@coolon/pectin';
|
|
43
45
|
import { __decorate, __param, __metadata } from 'tslib';
|
|
44
46
|
import * as i1 from '@angular/platform-browser';
|
|
45
47
|
import escapeStringRegexp from 'escape-string-regexp';
|
|
46
|
-
import { isEmpty, isString, isFunction, isNil, isInteger, isObject, isEqual, join, first, uniq,
|
|
48
|
+
import { isEmpty, isString, isFunction, isNil, isInteger, isObject, isEqual, join, last, first, uniq, findLast, isNumber, isNaN as isNaN$1 } from 'lodash-es';
|
|
47
49
|
import { marked } from 'marked';
|
|
48
|
-
import {
|
|
50
|
+
import { MemoizeGet, lang as lang$1, assert as assert$1, Stringy, Klass, Opts } from '@coolon/typescript-utilities';
|
|
49
51
|
import { Enum } from 'typescript-string-enums';
|
|
50
|
-
import { lang as lang$1, assert as assert$1, Stringy, Klass, Opts } from '@coolon/typescript-utilities';
|
|
51
52
|
import * as i5 from '@angular/material/core';
|
|
52
|
-
import
|
|
53
|
+
import { Memoize } from 'fast-typescript-memoize';
|
|
54
|
+
import { produce } from 'immer';
|
|
53
55
|
import ResizeObserver from 'resize-observer-polyfill';
|
|
54
|
-
import {
|
|
56
|
+
import { generateKeyBetween } from 'fractional-indexing';
|
|
55
57
|
import * as i5$1 from '@angular/cdk/a11y';
|
|
56
58
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
57
|
-
import * as i7$1 from '@angular/flex-layout';
|
|
58
|
-
import { FlexModule, GridModule } from '@angular/flex-layout';
|
|
59
59
|
import * as i1$6 from '@angular/material/dialog';
|
|
60
60
|
import { MatDialogModule, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';
|
|
61
61
|
import * as i1$4 from '@angular/router';
|
|
62
62
|
import { ActivatedRouteSnapshot, UrlSegment, NavigationStart, NavigationEnd, NavigationError, NavigationCancel, RouterModule } from '@angular/router';
|
|
63
|
-
import { Memoize as Memoize$1 } from 'typescript-memoize';
|
|
64
63
|
import 'reflect-metadata';
|
|
65
64
|
import * as i1$5 from '@angular/cdk/overlay';
|
|
65
|
+
import { style, trigger, transition, animate, group, query } from '@angular/animations';
|
|
66
66
|
import { MatCardModule } from '@angular/material/card';
|
|
67
67
|
import * as i3$3 from '@angular/material/list';
|
|
68
68
|
import { MatListModule } from '@angular/material/list';
|
|
69
|
-
import { style, query, group, animate, trigger, transition } from '@angular/animations';
|
|
70
69
|
|
|
71
70
|
class CommandDirective extends GarbageCollector {
|
|
72
71
|
elementRef;
|
|
@@ -213,11 +212,12 @@ var Track;
|
|
|
213
212
|
|
|
214
213
|
class DisposableComponent extends GarbageCollector {
|
|
215
214
|
trackById = Track.byId();
|
|
216
|
-
#_loaded$ = new MutableValueModel();
|
|
217
|
-
#asyncLoadables = [];
|
|
218
|
-
#awaitedLoadables = [];
|
|
215
|
+
// #_loaded$ = new MutableValueModel<boolean>();
|
|
216
|
+
// #asyncLoadables: Loadable[] = [];
|
|
217
|
+
// #awaitedLoadables: Loadable[] = [];
|
|
219
218
|
#initCallbacks = [];
|
|
220
219
|
#initialised = false;
|
|
220
|
+
cdr = this.inject(ChangeDetectorRef);
|
|
221
221
|
onInit(callback) {
|
|
222
222
|
if (this.#initialised) {
|
|
223
223
|
callback();
|
|
@@ -226,44 +226,25 @@ class DisposableComponent extends GarbageCollector {
|
|
|
226
226
|
this.#initCallbacks.push(callback);
|
|
227
227
|
}
|
|
228
228
|
}
|
|
229
|
-
get loaded$() {
|
|
230
|
-
return this.#_loaded$.readonly$;
|
|
231
|
-
}
|
|
232
229
|
ngOnInit() {
|
|
233
230
|
this.#initCallbacks.forEach(it => it());
|
|
234
|
-
this.#asyncLoadables.forEach(it => it.ensureLoaded());
|
|
235
|
-
if (this.#awaitedLoadables.length > 0) {
|
|
236
|
-
Promise.all(this.#awaitedLoadables.map(it => {
|
|
237
|
-
return it.ensureLoaded(); //.then(() => console.log(`${it.constructor.name} loaded`));
|
|
238
|
-
})).then(() => {
|
|
239
|
-
this.#_loaded$.value = true;
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
else {
|
|
243
|
-
this.#_loaded$.value = true;
|
|
244
|
-
}
|
|
245
231
|
this.#initialised = true;
|
|
246
232
|
}
|
|
233
|
+
ngOnDestroy() {
|
|
234
|
+
this.dispose();
|
|
235
|
+
}
|
|
247
236
|
inject(token) {
|
|
248
237
|
return inject(token);
|
|
249
238
|
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
else {
|
|
260
|
-
this.#asyncLoadables.push(loadable);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
return loadable;
|
|
264
|
-
}
|
|
265
|
-
ngOnDestroy() {
|
|
266
|
-
this.dispose();
|
|
239
|
+
/**
|
|
240
|
+
* Monitors the specified models for any change and triggers and angular change detect cycle. This is intended for use
|
|
241
|
+
* when the component uses the ON_PUSH change detection strategy.
|
|
242
|
+
* @param models
|
|
243
|
+
* @protected
|
|
244
|
+
*/
|
|
245
|
+
trackChangesAndMarkForCheck(...models) {
|
|
246
|
+
const { when } = Dsl.disposeWith(this);
|
|
247
|
+
when.anyOf(...models).changes(() => this.cdr.markForCheck());
|
|
267
248
|
}
|
|
268
249
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DisposableComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
269
250
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: DisposableComponent, usesInheritance: true, ngImport: i0 });
|
|
@@ -736,42 +717,42 @@ var CommandFace;
|
|
|
736
717
|
}
|
|
737
718
|
}
|
|
738
719
|
__decorate([
|
|
739
|
-
|
|
720
|
+
MemoizeGet(),
|
|
740
721
|
__metadata("design:type", Object),
|
|
741
722
|
__metadata("design:paramtypes", [])
|
|
742
723
|
], Adapter.prototype, "text", null);
|
|
743
724
|
__decorate([
|
|
744
|
-
|
|
725
|
+
MemoizeGet(),
|
|
745
726
|
__metadata("design:type", Object),
|
|
746
727
|
__metadata("design:paramtypes", [])
|
|
747
728
|
], Adapter.prototype, "icon", null);
|
|
748
729
|
__decorate([
|
|
749
|
-
|
|
730
|
+
MemoizeGet(),
|
|
750
731
|
__metadata("design:type", Object),
|
|
751
732
|
__metadata("design:paramtypes", [])
|
|
752
733
|
], Adapter.prototype, "iconPosition", null);
|
|
753
734
|
__decorate([
|
|
754
|
-
|
|
735
|
+
MemoizeGet(),
|
|
755
736
|
__metadata("design:type", Object),
|
|
756
737
|
__metadata("design:paramtypes", [])
|
|
757
738
|
], Adapter.prototype, "tooltip", null);
|
|
758
739
|
__decorate([
|
|
759
|
-
|
|
740
|
+
MemoizeGet(),
|
|
760
741
|
__metadata("design:type", Boolean),
|
|
761
742
|
__metadata("design:paramtypes", [])
|
|
762
743
|
], Adapter.prototype, "iconPositionStart", null);
|
|
763
744
|
__decorate([
|
|
764
|
-
|
|
745
|
+
MemoizeGet(),
|
|
765
746
|
__metadata("design:type", Boolean),
|
|
766
747
|
__metadata("design:paramtypes", [])
|
|
767
748
|
], Adapter.prototype, "iconPositionEnd", null);
|
|
768
749
|
__decorate([
|
|
769
|
-
|
|
750
|
+
MemoizeGet(),
|
|
770
751
|
__metadata("design:type", String),
|
|
771
752
|
__metadata("design:paramtypes", [])
|
|
772
753
|
], Adapter.prototype, "color", null);
|
|
773
754
|
__decorate([
|
|
774
|
-
|
|
755
|
+
MemoizeGet(),
|
|
775
756
|
__metadata("design:type", String),
|
|
776
757
|
__metadata("design:paramtypes", [])
|
|
777
758
|
], Adapter.prototype, "style", null);
|
|
@@ -842,6 +823,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
842
823
|
args: ["class.disable-scroll"]
|
|
843
824
|
}] } });
|
|
844
825
|
|
|
826
|
+
/* eslint-disable @angular-eslint/no-host-metadata-property */
|
|
845
827
|
class IconComponent {
|
|
846
828
|
_icon;
|
|
847
829
|
prefix;
|
|
@@ -873,11 +855,13 @@ class IconComponent {
|
|
|
873
855
|
return `fa-${this.suffix}`;
|
|
874
856
|
}
|
|
875
857
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
876
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: IconComponent, selector: "aup-icon", inputs: { icon: "icon" }, host: { properties: { "attr.icon": "this.icon" } }, ngImport: i0, template: "<ng-container [ngSwitch]=\"prefix\">\n\n <mat-icon *ngSwitchCase=\"iconPrefix.SVG\"\n [svgIcon]=\"suffix\"\n class=\"svgIcon\">\n </mat-icon>\n\n <mat-icon *ngSwitchCase=\"iconPrefix.MATERIAL\">\n {{suffix}}\n </mat-icon>\n\n <div *ngSwitchCase=\"iconPrefix.FONT_AWESOME\" class=\"faIconWrapper\">\n <i class=\"fa-solid\" [class]=\"faIcon\"></i>\n </div>\n\n <mat-icon *ngSwitchDefault\n [matTooltip]=\"errorMessage\">\n bug_report\n </mat-icon>\n\n</ng-container>\n\n", styles: [":host{display:inline-flex;--resolved-size: var(--aup-icon-size, 24px);width:var(--resolved-size) fa-icon
|
|
858
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: IconComponent, selector: "aup-icon", inputs: { icon: "icon" }, host: { properties: { "attr.icon": "this.icon" }, classAttribute: "mat-icon" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"prefix\">\n\n <mat-icon *ngSwitchCase=\"iconPrefix.SVG\"\n [svgIcon]=\"suffix\"\n class=\"svgIcon\">\n </mat-icon>\n\n <mat-icon *ngSwitchCase=\"iconPrefix.MATERIAL\">\n {{suffix}}\n </mat-icon>\n\n <div *ngSwitchCase=\"iconPrefix.FONT_AWESOME\" class=\"faIconWrapper\">\n <i class=\"fa-solid\" [class]=\"faIcon\"></i>\n </div>\n\n <mat-icon *ngSwitchDefault\n [matTooltip]=\"errorMessage\">\n bug_report\n </mat-icon>\n\n</ng-container>\n\n", styles: [":host{display:inline-flex;--resolved-size: var(--aup-icon-size, 24px);width:var(--resolved-size)!important;min-width:var(--resolved-size)!important;height:var(--resolved-size)!important;min-height:var(--resolved-size)!important}:host fa-icon{vertical-align:middle}:host .faIconWrapper{display:flex;flex-direction:row;align-items:center;justify-content:center;width:var(--resolved-size)!important;height:var(--resolved-size)!important}:host .svgIcon{width:var(--resolved-size)!important;height:var(--resolved-size)!important}:host :host(.mat-chip-remove){--aup-icon-size: 18px}:host mat-icon{font-size:var(--resolved-size)!important;width:var(--resolved-size)!important;height:var(--resolved-size)!important;margin-right:0!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
877
859
|
}
|
|
878
860
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: IconComponent, decorators: [{
|
|
879
861
|
type: Component,
|
|
880
|
-
args: [{ selector: 'aup-icon',
|
|
862
|
+
args: [{ selector: 'aup-icon', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
863
|
+
class: "mat-icon" // this ensures angular form styles that target mat icon also work with us
|
|
864
|
+
}, template: "<ng-container [ngSwitch]=\"prefix\">\n\n <mat-icon *ngSwitchCase=\"iconPrefix.SVG\"\n [svgIcon]=\"suffix\"\n class=\"svgIcon\">\n </mat-icon>\n\n <mat-icon *ngSwitchCase=\"iconPrefix.MATERIAL\">\n {{suffix}}\n </mat-icon>\n\n <div *ngSwitchCase=\"iconPrefix.FONT_AWESOME\" class=\"faIconWrapper\">\n <i class=\"fa-solid\" [class]=\"faIcon\"></i>\n </div>\n\n <mat-icon *ngSwitchDefault\n [matTooltip]=\"errorMessage\">\n bug_report\n </mat-icon>\n\n</ng-container>\n\n", styles: [":host{display:inline-flex;--resolved-size: var(--aup-icon-size, 24px);width:var(--resolved-size)!important;min-width:var(--resolved-size)!important;height:var(--resolved-size)!important;min-height:var(--resolved-size)!important}:host fa-icon{vertical-align:middle}:host .faIconWrapper{display:flex;flex-direction:row;align-items:center;justify-content:center;width:var(--resolved-size)!important;height:var(--resolved-size)!important}:host .svgIcon{width:var(--resolved-size)!important;height:var(--resolved-size)!important}:host :host(.mat-chip-remove){--aup-icon-size: 18px}:host mat-icon{font-size:var(--resolved-size)!important;width:var(--resolved-size)!important;height:var(--resolved-size)!important;margin-right:0!important}\n"] }]
|
|
881
865
|
}], propDecorators: { icon: [{
|
|
882
866
|
type: Input
|
|
883
867
|
}, {
|
|
@@ -908,6 +892,7 @@ class CommandFaceComponent extends DisposableComponent {
|
|
|
908
892
|
// tslint:disable-next-line:no-input-rename
|
|
909
893
|
get _rawFaces() { return this.#_rawFaces_accessor_storage; }
|
|
910
894
|
set _rawFaces(value) { this.#_rawFaces_accessor_storage = value; }
|
|
895
|
+
hasTextAndLeadingIcon$;
|
|
911
896
|
set face(face) {
|
|
912
897
|
this.faces$.value = [face];
|
|
913
898
|
}
|
|
@@ -927,6 +912,7 @@ class CommandFaceComponent extends DisposableComponent {
|
|
|
927
912
|
const activeFace = this.faceAdapters.first();
|
|
928
913
|
this.activeIcon = activeFace.pluck("icon");
|
|
929
914
|
this.activeColor = activeFace.pluck("color");
|
|
915
|
+
this.hasTextAndLeadingIcon$ = valueOf.all(this.activeIcon.isNotNil(), activeFace.pluckString('text').isNotBlank(), activeFace.pluck("iconPosition").doesNotEqual(CommandFace.Position.END)).areTruthy();
|
|
930
916
|
}
|
|
931
917
|
shouldIncludeIcon(face) {
|
|
932
918
|
return (!this.ignoreIcon && face.icon) || this.includeMissingIconInLayout;
|
|
@@ -940,8 +926,11 @@ class CommandFaceComponent extends DisposableComponent {
|
|
|
940
926
|
get color() {
|
|
941
927
|
return this.activeColor.value;
|
|
942
928
|
}
|
|
929
|
+
get hasTextAndIcon() {
|
|
930
|
+
return this.hasTextAndLeadingIcon$.value;
|
|
931
|
+
}
|
|
943
932
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: CommandFaceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
944
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: CommandFaceComponent, selector: "aup-command-face", inputs: { _rawFaces: ["faces", "_rawFaces"], face: "face", ignoreIcon: "ignoreIcon", ignoreText: "ignoreText", includeMissingIconInLayout: "includeMissingIconInLayout" }, host: { properties: { "class.hide-icon": "this.requiresMissingIconInLayout", "attr.color": "this.color" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"face-container\" *ngFor=\"let face of faceAdapters.value\">\n <aup-icon *ngIf=\"hasIconStart(face)\" [icon]=\"face.icon\"></aup-icon>\n <span *ngIf=\"face.text\">{{face.text}}</span>\n <aup-icon *ngIf=\"hasIconEnd(face)\" [icon]=\"face.icon\"></aup-icon>\n</div>\n", styles: ["aup-command-face{--icon-gap: var(--aup-command-face-icon-gap);display:inline-grid}aup-command-face>.face-container{grid-column:1;grid-row:1;display:inline-flex;flex-direction:row;align-items:center}aup-command-face>.face-container:not(:first-child){visibility:hidden}aup-command-face>.face-container *+*{margin-left:var(--icon-gap)}aup-command-face.hide-icon aup-icon{visibility:hidden}aup-command-face.centered{justify-items:center}aup-command-face.start{justify-items:self-start}aup-command-face.end{justify-items:self-end}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
933
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: CommandFaceComponent, selector: "aup-command-face", inputs: { _rawFaces: ["faces", "_rawFaces"], face: "face", ignoreIcon: "ignoreIcon", ignoreText: "ignoreText", includeMissingIconInLayout: "includeMissingIconInLayout" }, host: { properties: { "class.hide-icon": "this.requiresMissingIconInLayout", "attr.color": "this.color", "class.has-text-and-leading-icon": "this.hasTextAndIcon" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"face-container\" *ngFor=\"let face of faceAdapters.value\">\n <aup-icon *ngIf=\"hasIconStart(face)\" [icon]=\"face.icon\"></aup-icon>\n <span *ngIf=\"face.text\">{{face.text}}</span>\n <aup-icon *ngIf=\"hasIconEnd(face)\" [icon]=\"face.icon\"></aup-icon>\n</div>\n", styles: ["aup-command-face{--icon-gap: var(--aup-command-face-icon-gap);display:inline-grid}aup-command-face>.face-container{grid-column:1;grid-row:1;display:inline-flex;flex-direction:row;align-items:center}aup-command-face>.face-container>span{white-space:nowrap}aup-command-face>.face-container:not(:first-child){visibility:hidden}aup-command-face>.face-container *+*{margin-left:var(--icon-gap)}aup-command-face.hide-icon aup-icon{visibility:hidden}aup-command-face.centered{justify-items:center}aup-command-face.start{justify-items:self-start}aup-command-face.end{justify-items:self-end}aup-command-face.has-text-and-leading-icon{margin-top:4px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
945
934
|
}
|
|
946
935
|
__decorate([
|
|
947
936
|
StoreInListModel("faces$"),
|
|
@@ -949,7 +938,7 @@ __decorate([
|
|
|
949
938
|
], CommandFaceComponent.prototype, "_rawFaces", null);
|
|
950
939
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: CommandFaceComponent, decorators: [{
|
|
951
940
|
type: Component,
|
|
952
|
-
args: [{ selector: 'aup-command-face', encapsulation: ViewEncapsulation.None, template: "<div class=\"face-container\" *ngFor=\"let face of faceAdapters.value\">\n <aup-icon *ngIf=\"hasIconStart(face)\" [icon]=\"face.icon\"></aup-icon>\n <span *ngIf=\"face.text\">{{face.text}}</span>\n <aup-icon *ngIf=\"hasIconEnd(face)\" [icon]=\"face.icon\"></aup-icon>\n</div>\n", styles: ["aup-command-face{--icon-gap: var(--aup-command-face-icon-gap);display:inline-grid}aup-command-face>.face-container{grid-column:1;grid-row:1;display:inline-flex;flex-direction:row;align-items:center}aup-command-face>.face-container:not(:first-child){visibility:hidden}aup-command-face>.face-container *+*{margin-left:var(--icon-gap)}aup-command-face.hide-icon aup-icon{visibility:hidden}aup-command-face.centered{justify-items:center}aup-command-face.start{justify-items:self-start}aup-command-face.end{justify-items:self-end}\n"] }]
|
|
941
|
+
args: [{ selector: 'aup-command-face', encapsulation: ViewEncapsulation.None, template: "<div class=\"face-container\" *ngFor=\"let face of faceAdapters.value\">\n <aup-icon *ngIf=\"hasIconStart(face)\" [icon]=\"face.icon\"></aup-icon>\n <span *ngIf=\"face.text\">{{face.text}}</span>\n <aup-icon *ngIf=\"hasIconEnd(face)\" [icon]=\"face.icon\"></aup-icon>\n</div>\n", styles: ["aup-command-face{--icon-gap: var(--aup-command-face-icon-gap);display:inline-grid}aup-command-face>.face-container{grid-column:1;grid-row:1;display:inline-flex;flex-direction:row;align-items:center}aup-command-face>.face-container>span{white-space:nowrap}aup-command-face>.face-container:not(:first-child){visibility:hidden}aup-command-face>.face-container *+*{margin-left:var(--icon-gap)}aup-command-face.hide-icon aup-icon{visibility:hidden}aup-command-face.centered{justify-items:center}aup-command-face.start{justify-items:self-start}aup-command-face.end{justify-items:self-end}aup-command-face.has-text-and-leading-icon{margin-top:4px}\n"] }]
|
|
953
942
|
}], ctorParameters: function () { return []; }, propDecorators: { _rawFaces: [{
|
|
954
943
|
type: Input,
|
|
955
944
|
args: ['faces']
|
|
@@ -967,6 +956,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
967
956
|
}], color: [{
|
|
968
957
|
type: HostBinding,
|
|
969
958
|
args: ['attr.color']
|
|
959
|
+
}], hasTextAndIcon: [{
|
|
960
|
+
type: HostBinding,
|
|
961
|
+
args: ['class.has-text-and-leading-icon']
|
|
970
962
|
}] } });
|
|
971
963
|
|
|
972
964
|
/**
|
|
@@ -1070,11 +1062,11 @@ class CardContainerComponent extends AbstractCardContainerComponent {
|
|
|
1070
1062
|
}
|
|
1071
1063
|
}
|
|
1072
1064
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: CardContainerComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1073
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: CardContainerComponent, selector: "aup-card-container", inputs: { columnCount: "columnCount", enableScroll: "enableScroll" }, host: { properties: { "class.auto-columns": "this.isAutoColumns", "class.single-column": "this.isSingleColumn" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"header-container\">\n <ng-content select=\"[card-container-header]\"></ng-content>\n</div>\n\n<ng-template #content>\n <div class=\"card-container\">\n <ng-content></ng-content>\n\n <div class=\"add-card-container\" *ngIf=\"addCardCommand.enabled$.value\" [pectinCommand]=\"addCardCommand\">\n <aup-command-face *ngIf=\"addCardFace\" [faces]=\"[addCardFace]\"></aup-command-face>\n <aup-icon *ngIf=\"!addCardFace\" icon=\"mat:add\"></aup-icon>\n </div>\n\n <div class=\"add-card-template\" *ngIf=\"addCardTemplate\">\n <ng-container [ngTemplateOutlet]=\"addCardTemplate\"></ng-container>\n </div>\n </div>\n</ng-template>\n\n<div class=\"no-scroll-container\" *ngIf=\"!enableScroll\">\n
|
|
1065
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: CardContainerComponent, selector: "aup-card-container", inputs: { columnCount: "columnCount", enableScroll: "enableScroll" }, host: { properties: { "class.auto-columns": "this.isAutoColumns", "class.single-column": "this.isSingleColumn" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"header-container\">\n <ng-content select=\"[card-container-header], [slot=header]\"></ng-content>\n</div>\n\n<ng-template #content>\n <div class=\"card-container\">\n <ng-content></ng-content>\n\n <div class=\"add-card-container\" *ngIf=\"addCardCommand.enabled$.value\" [pectinCommand]=\"addCardCommand\">\n <aup-command-face *ngIf=\"addCardFace\" [faces]=\"[addCardFace]\"></aup-command-face>\n <aup-icon *ngIf=\"!addCardFace\" icon=\"mat:add\"></aup-icon>\n </div>\n\n <div class=\"add-card-template\" *ngIf=\"addCardTemplate\">\n <ng-container [ngTemplateOutlet]=\"addCardTemplate\"></ng-container>\n </div>\n </div>\n</ng-template>\n\n<div class=\"no-scroll-container\" *ngIf=\"!enableScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</div>\n\n<aup-scroll-container *ngIf=\"enableScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</aup-scroll-container>\n\n<div class=\"footer-container\">\n <ng-content select=\"[card-container-footer], [slot=footer]\"></ng-content>\n</div>\n\n", styles: [":host{--resolved-card-gap: var(--card-gap, 16px);--resolved-card-width: var(--card-width, 300px);--resolved-card-min-width: var(--card-min-width, var(--card-width, var(--card-max-width)));--resolved-card-max-width: var(--card-max-width, var(--card-width, var(--card-min-width)));--resolved-card-height: var(--card-height, auto);--resolved-card-min-height: var(--card-min-height, auto);--resolved-card-background: var(--card-background, var(--aup-card-container-default-background-color));flex:1;display:flex;flex-direction:column;align-items:stretch;background:var(--resolved-card-background)}:host.auto-columns>*>.card-container{grid-template-columns:repeat(auto-fill,minmax(var(--resolved-card-min-width),var(--resolved-card-max-width)))}:host:not(.auto-columns)>*>.card-container{grid-template-columns:repeat(var(--aup-card-container-column-count),1fr)}.card-container{display:grid;box-sizing:border-box;padding:var(--resolved-card-gap);min-height:calc(var(--resolved-card-height) + 2 * var(--resolved-card-gap));max-width:100%;grid-auto-rows:minmax(var(--resolved-card-min-height),var(--resolved-card-height));grid-gap:var(--resolved-card-gap)}aup-scroll-container,.no-scroll-container{flex:1}.add-card-container{height:var(--resolved-card-height);min-height:var(--resolved-card-min-height);display:flex;flex-direction:column;align-items:center;justify-content:center;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}.add-card-container mat-icon{font-size:200%}.add-card-container:hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.add-card-container:hover{border-color:transparent;background-color:#fff;color:#0000008a}.add-card-template-container{height:var(--resolved-card-height);min-height:var(--resolved-card-min-height);display:flex;flex-direction:column;align-items:stretch;justify-content:stretch}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "component", type: ScrollContainerComponent, selector: "aup-scroll-container", inputs: ["disableScroll$", "disableScroll"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }, { kind: "component", type: CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }] });
|
|
1074
1066
|
}
|
|
1075
1067
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: CardContainerComponent, decorators: [{
|
|
1076
1068
|
type: Component,
|
|
1077
|
-
args: [{ selector: 'aup-card-container', template: "<div class=\"header-container\">\n <ng-content select=\"[card-container-header]\"></ng-content>\n</div>\n\n<ng-template #content>\n <div class=\"card-container\">\n <ng-content></ng-content>\n\n <div class=\"add-card-container\" *ngIf=\"addCardCommand.enabled$.value\" [pectinCommand]=\"addCardCommand\">\n <aup-command-face *ngIf=\"addCardFace\" [faces]=\"[addCardFace]\"></aup-command-face>\n <aup-icon *ngIf=\"!addCardFace\" icon=\"mat:add\"></aup-icon>\n </div>\n\n <div class=\"add-card-template\" *ngIf=\"addCardTemplate\">\n <ng-container [ngTemplateOutlet]=\"addCardTemplate\"></ng-container>\n </div>\n </div>\n</ng-template>\n\n<div class=\"no-scroll-container\" *ngIf=\"!enableScroll\">\n
|
|
1069
|
+
args: [{ selector: 'aup-card-container', template: "<div class=\"header-container\">\n <ng-content select=\"[card-container-header], [slot=header]\"></ng-content>\n</div>\n\n<ng-template #content>\n <div class=\"card-container\">\n <ng-content></ng-content>\n\n <div class=\"add-card-container\" *ngIf=\"addCardCommand.enabled$.value\" [pectinCommand]=\"addCardCommand\">\n <aup-command-face *ngIf=\"addCardFace\" [faces]=\"[addCardFace]\"></aup-command-face>\n <aup-icon *ngIf=\"!addCardFace\" icon=\"mat:add\"></aup-icon>\n </div>\n\n <div class=\"add-card-template\" *ngIf=\"addCardTemplate\">\n <ng-container [ngTemplateOutlet]=\"addCardTemplate\"></ng-container>\n </div>\n </div>\n</ng-template>\n\n<div class=\"no-scroll-container\" *ngIf=\"!enableScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</div>\n\n<aup-scroll-container *ngIf=\"enableScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</aup-scroll-container>\n\n<div class=\"footer-container\">\n <ng-content select=\"[card-container-footer], [slot=footer]\"></ng-content>\n</div>\n\n", styles: [":host{--resolved-card-gap: var(--card-gap, 16px);--resolved-card-width: var(--card-width, 300px);--resolved-card-min-width: var(--card-min-width, var(--card-width, var(--card-max-width)));--resolved-card-max-width: var(--card-max-width, var(--card-width, var(--card-min-width)));--resolved-card-height: var(--card-height, auto);--resolved-card-min-height: var(--card-min-height, auto);--resolved-card-background: var(--card-background, var(--aup-card-container-default-background-color));flex:1;display:flex;flex-direction:column;align-items:stretch;background:var(--resolved-card-background)}:host.auto-columns>*>.card-container{grid-template-columns:repeat(auto-fill,minmax(var(--resolved-card-min-width),var(--resolved-card-max-width)))}:host:not(.auto-columns)>*>.card-container{grid-template-columns:repeat(var(--aup-card-container-column-count),1fr)}.card-container{display:grid;box-sizing:border-box;padding:var(--resolved-card-gap);min-height:calc(var(--resolved-card-height) + 2 * var(--resolved-card-gap));max-width:100%;grid-auto-rows:minmax(var(--resolved-card-min-height),var(--resolved-card-height));grid-gap:var(--resolved-card-gap)}aup-scroll-container,.no-scroll-container{flex:1}.add-card-container{height:var(--resolved-card-height);min-height:var(--resolved-card-min-height);display:flex;flex-direction:column;align-items:center;justify-content:center;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}.add-card-container mat-icon{font-size:200%}.add-card-container:hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.add-card-container:hover{border-color:transparent;background-color:#fff;color:#0000008a}.add-card-template-container{height:var(--resolved-card-height);min-height:var(--resolved-card-min-height);display:flex;flex-direction:column;align-items:stretch;justify-content:stretch}\n"] }]
|
|
1078
1070
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { columnCount: [{
|
|
1079
1071
|
type: Input
|
|
1080
1072
|
}], enableScroll: [{
|
|
@@ -1150,14 +1142,24 @@ class CommandComponent extends PopupAwareComponent {
|
|
|
1150
1142
|
activeFace$;
|
|
1151
1143
|
iconOnly$;
|
|
1152
1144
|
tooltip$;
|
|
1145
|
+
visible$;
|
|
1153
1146
|
constructor(element, parent) {
|
|
1154
1147
|
super(element, parent);
|
|
1155
1148
|
const { chain, switchOn } = Dsl.disposeWith(this);
|
|
1156
|
-
this.faces$ = chain(this.command.busy$)
|
|
1149
|
+
this.faces$ = chain(this.command.busy$)
|
|
1150
|
+
.mapToList(busy => {
|
|
1157
1151
|
return busy ?
|
|
1158
|
-
[this.busyFace$.value, this.face$.value] :
|
|
1159
|
-
[this.face$.value, this.busyFace$.value];
|
|
1160
|
-
}, {
|
|
1152
|
+
[this.busyFace$.value ?? this.command.busyFace$.value, this.face$.value ?? this.command.defaultFace$.value] :
|
|
1153
|
+
[this.face$.value ?? this.command.defaultFace$.value, this.busyFace$.value ?? this.command.busyFace$.value];
|
|
1154
|
+
}, {
|
|
1155
|
+
allowNil: true,
|
|
1156
|
+
dependsOn: [
|
|
1157
|
+
this.face$,
|
|
1158
|
+
this.busyFace$,
|
|
1159
|
+
this.command.defaultFace$,
|
|
1160
|
+
this.command.busyFace$
|
|
1161
|
+
]
|
|
1162
|
+
})
|
|
1161
1163
|
.rejectNil();
|
|
1162
1164
|
this.activeFace$ = this.faces$.first();
|
|
1163
1165
|
this.buttonStyle$ = chain(this.activeFace$).map(f => CommandFace.getStyleOf(f));
|
|
@@ -1166,18 +1168,19 @@ class CommandComponent extends PopupAwareComponent {
|
|
|
1166
1168
|
this.iconOnly$ = this.faces$.select(face => {
|
|
1167
1169
|
return isEmpty(CommandFace.getTextOf(face)) && !isEmpty(CommandFace.getIconOf(face));
|
|
1168
1170
|
}).count().equals(this.faces$.count());
|
|
1171
|
+
this.visible$ = chain(this.command.visible$);
|
|
1172
|
+
}
|
|
1173
|
+
get cssDisplayProperty() {
|
|
1174
|
+
return this.visible$.value ? undefined : 'none';
|
|
1169
1175
|
}
|
|
1170
1176
|
isActive(face) {
|
|
1171
1177
|
return this.activeFace$.query().equals(face);
|
|
1172
1178
|
}
|
|
1173
|
-
getFace() {
|
|
1174
|
-
return this.face;
|
|
1175
|
-
}
|
|
1176
1179
|
requestFocus() {
|
|
1177
1180
|
this.button.focus();
|
|
1178
1181
|
}
|
|
1179
1182
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: CommandComponent, deps: [{ token: i0.ElementRef }, { token: POPUP_CONTAINER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
1180
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: CommandComponent, selector: "aup-command", inputs: { command: "command", face$: "face$", face: "face", busyFace$: "busyFace$", 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"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }] });
|
|
1183
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: CommandComponent, selector: "aup-command", inputs: { command: "command", face$: "face$", face: "face", busyFace$: "busyFace$", busyFace: "busyFace", alignFace: "alignFace" }, host: { properties: { "class": "this.alignFace", "style.display": "this.cssDisplayProperty" } }, 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"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }] });
|
|
1181
1184
|
}
|
|
1182
1185
|
__decorate([
|
|
1183
1186
|
Proxify(),
|
|
@@ -1225,6 +1228,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
1225
1228
|
}], button: [{
|
|
1226
1229
|
type: ViewChild,
|
|
1227
1230
|
args: [MatButton]
|
|
1231
|
+
}], cssDisplayProperty: [{
|
|
1232
|
+
type: HostBinding,
|
|
1233
|
+
args: ["style.display"]
|
|
1228
1234
|
}] } });
|
|
1229
1235
|
|
|
1230
1236
|
/**
|
|
@@ -1252,12 +1258,12 @@ class AbstractPopupMenuComponent extends PopupAwareComponent {
|
|
|
1252
1258
|
xPosition = 'after';
|
|
1253
1259
|
yPosition = 'below';
|
|
1254
1260
|
triggers;
|
|
1255
|
-
#enabled_accessor_storage;
|
|
1256
|
-
get enabled() { return this.#enabled_accessor_storage; }
|
|
1257
|
-
set enabled(value) { this.#enabled_accessor_storage = value; }
|
|
1258
1261
|
#enabled$_accessor_storage = proxify((ValueModel));
|
|
1259
1262
|
get enabled$() { return this.#enabled$_accessor_storage; }
|
|
1260
1263
|
set enabled$(value) { this.#enabled$_accessor_storage = value; }
|
|
1264
|
+
#enabled_accessor_storage = true;
|
|
1265
|
+
get enabled() { return this.#enabled_accessor_storage; }
|
|
1266
|
+
set enabled(value) { this.#enabled_accessor_storage = value; }
|
|
1261
1267
|
children;
|
|
1262
1268
|
faces$;
|
|
1263
1269
|
constructor(element, parent) {
|
|
@@ -1299,16 +1305,16 @@ class AbstractPopupMenuComponent extends PopupAwareComponent {
|
|
|
1299
1305
|
return this.faceAdapter.face;
|
|
1300
1306
|
}
|
|
1301
1307
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractPopupMenuComponent, deps: [{ token: i0.ElementRef }, { token: POPUP_CONTAINER }], target: i0.ɵɵFactoryTarget.Component });
|
|
1302
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractPopupMenuComponent, selector: "aup-abstract-popup-menu", inputs: { xPosition: "xPosition", yPosition: "yPosition", enabled
|
|
1308
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractPopupMenuComponent, selector: "aup-abstract-popup-menu", inputs: { xPosition: "xPosition", yPosition: "yPosition", enabled$: "enabled$", enabled: "enabled" }, viewQueries: [{ propertyName: "triggers", predicate: MatMenuTrigger, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
1303
1309
|
}
|
|
1304
|
-
__decorate([
|
|
1305
|
-
StoreInValueModel(),
|
|
1306
|
-
__metadata("design:type", Boolean)
|
|
1307
|
-
], AbstractPopupMenuComponent.prototype, "enabled", null);
|
|
1308
1310
|
__decorate([
|
|
1309
1311
|
Proxify(),
|
|
1310
1312
|
__metadata("design:type", Object)
|
|
1311
1313
|
], AbstractPopupMenuComponent.prototype, "enabled$", null);
|
|
1314
|
+
__decorate([
|
|
1315
|
+
StoreInValueModel(),
|
|
1316
|
+
__metadata("design:type", Object)
|
|
1317
|
+
], AbstractPopupMenuComponent.prototype, "enabled", null);
|
|
1312
1318
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractPopupMenuComponent, decorators: [{
|
|
1313
1319
|
type: Component,
|
|
1314
1320
|
args: [{ selector: 'aup-abstract-popup-menu', template: '' }]
|
|
@@ -1322,10 +1328,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
1322
1328
|
}], triggers: [{
|
|
1323
1329
|
type: ViewChildren,
|
|
1324
1330
|
args: [MatMenuTrigger]
|
|
1325
|
-
}], enabled: [{
|
|
1326
|
-
type: Input
|
|
1327
1331
|
}], enabled$: [{
|
|
1328
1332
|
type: Input
|
|
1333
|
+
}], enabled: [{
|
|
1334
|
+
type: Input
|
|
1329
1335
|
}] } });
|
|
1330
1336
|
|
|
1331
1337
|
class CommandContainer extends GarbageCollector {
|
|
@@ -1358,13 +1364,15 @@ class ToolBarComponent extends CommandContainer {
|
|
|
1358
1364
|
get orientation() {
|
|
1359
1365
|
return CommandContainer.Orientation.HORIZONTAL;
|
|
1360
1366
|
}
|
|
1361
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ToolBarComponent, deps: [{ token: CommandContainer }], target: i0.ɵɵFactoryTarget.Component });
|
|
1367
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ToolBarComponent, deps: [{ token: CommandContainer, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
1362
1368
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ToolBarComponent, selector: "aup-tool-bar", usesInheritance: true, ngImport: i0, template: '<div class="toolbar-content"><ng-content></ng-content></div>', isInline: true, styles: [":host{display:inline-block}.toolbar-content{display:inline-flex;flex-direction:row;align-items:center}.toolbar-content>aup-separator{align-self:stretch;margin:4px 0 4px 8px}.toolbar-content>aup-flex{flex:1}.toolbar-content>*+*{margin-left:8px}\n"], encapsulation: i0.ViewEncapsulation.None });
|
|
1363
1369
|
}
|
|
1364
1370
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ToolBarComponent, decorators: [{
|
|
1365
1371
|
type: Component,
|
|
1366
1372
|
args: [{ selector: 'aup-tool-bar', template: '<div class="toolbar-content"><ng-content></ng-content></div>', encapsulation: ViewEncapsulation.None, styles: [":host{display:inline-block}.toolbar-content{display:inline-flex;flex-direction:row;align-items:center}.toolbar-content>aup-separator{align-self:stretch;margin:4px 0 4px 8px}.toolbar-content>aup-flex{flex:1}.toolbar-content>*+*{margin-left:8px}\n"] }]
|
|
1367
|
-
}], ctorParameters: function () { return [{ type: CommandContainer
|
|
1373
|
+
}], ctorParameters: function () { return [{ type: CommandContainer, decorators: [{
|
|
1374
|
+
type: Optional
|
|
1375
|
+
}] }]; } });
|
|
1368
1376
|
|
|
1369
1377
|
/**
|
|
1370
1378
|
*
|
|
@@ -1675,7 +1683,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
1675
1683
|
args: ['blur']
|
|
1676
1684
|
}] } });
|
|
1677
1685
|
|
|
1678
|
-
/* tslint:disable:no-input-rename */
|
|
1679
1686
|
const INPUT_TOKEN_HACK = new InjectionToken("INPUT_TOKEN_HACK");
|
|
1680
1687
|
class AbstractInputComponent extends DisposableComponent {
|
|
1681
1688
|
onValueEditedListeners = new EventListenerList();
|
|
@@ -1690,11 +1697,16 @@ class AbstractInputComponent extends DisposableComponent {
|
|
|
1690
1697
|
* gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).
|
|
1691
1698
|
*/
|
|
1692
1699
|
formValue$;
|
|
1693
|
-
|
|
1694
|
-
|
|
1700
|
+
#i18n$_accessor_storage = proxify((MutableValueModel));
|
|
1701
|
+
get i18n$() { return this.#i18n$_accessor_storage; }
|
|
1702
|
+
set i18n$(value) { this.#i18n$_accessor_storage = value; }
|
|
1703
|
+
#i18n_accessor_storage;
|
|
1704
|
+
get i18n() { return this.#i18n_accessor_storage; }
|
|
1705
|
+
set i18n(value) { this.#i18n_accessor_storage = value; }
|
|
1706
|
+
_label;
|
|
1695
1707
|
userFloatLabel = 'always'; // TODO: make this an injectable default
|
|
1696
|
-
|
|
1697
|
-
|
|
1708
|
+
_hint;
|
|
1709
|
+
_placeholder;
|
|
1698
1710
|
dense = false;
|
|
1699
1711
|
_enabled$ = this.registerDisposable(new DelegatingValueModel());
|
|
1700
1712
|
set enabled$(condition$) {
|
|
@@ -1761,6 +1773,9 @@ class AbstractInputComponent extends DisposableComponent {
|
|
|
1761
1773
|
isEnabled() {
|
|
1762
1774
|
return this.enabled$.value;
|
|
1763
1775
|
}
|
|
1776
|
+
get disabled() {
|
|
1777
|
+
return !this.isEnabled();
|
|
1778
|
+
}
|
|
1764
1779
|
hasErrors() {
|
|
1765
1780
|
return !this.errorList$.query().isEmpty();
|
|
1766
1781
|
}
|
|
@@ -1773,6 +1788,15 @@ class AbstractInputComponent extends DisposableComponent {
|
|
|
1773
1788
|
get focusContext() {
|
|
1774
1789
|
return this.formValue$.focusContext;
|
|
1775
1790
|
}
|
|
1791
|
+
get label() {
|
|
1792
|
+
return this._label ?? this.i18n?.label();
|
|
1793
|
+
}
|
|
1794
|
+
get hint() {
|
|
1795
|
+
return this._hint ?? this.hackyGetI18n("hint");
|
|
1796
|
+
}
|
|
1797
|
+
get placeholder() {
|
|
1798
|
+
return this._placeholder ?? this.hackyGetI18n("placeholder");
|
|
1799
|
+
}
|
|
1776
1800
|
get floatLabel() {
|
|
1777
1801
|
// return this.dense ? 'never' : this.userFloatLabel;
|
|
1778
1802
|
return this.userFloatLabel;
|
|
@@ -1787,24 +1811,45 @@ class AbstractInputComponent extends DisposableComponent {
|
|
|
1787
1811
|
onValueEdited(callback) {
|
|
1788
1812
|
return this.onValueEditedListeners.add(callback);
|
|
1789
1813
|
}
|
|
1814
|
+
hackyGetI18n(key) {
|
|
1815
|
+
// TODO: update I18n to make it possible to get an optional value with return the missing key message.
|
|
1816
|
+
const i18nFn = this.i18n ? this.i18n[key] : undefined;
|
|
1817
|
+
const i18nValue = i18nFn && i18nFn();
|
|
1818
|
+
return i18nValue?.startsWith("missing key") ? undefined : i18nValue;
|
|
1819
|
+
}
|
|
1790
1820
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractInputComponent, deps: [{ token: INPUT_TOKEN_HACK }], target: i0.ɵɵFactoryTarget.Component });
|
|
1791
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractInputComponent, selector: "ng-component", inputs: {
|
|
1821
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractInputComponent, selector: "ng-component", inputs: { i18n$: "i18n$", i18n: "i18n", _label: ["label", "_label"], userFloatLabel: ["floatLabel", "userFloatLabel"], _hint: ["hint", "_hint"], _placeholder: ["placeholder", "_placeholder"], dense: "dense", enabled$: "enabled$", focusCommand: ["command.focus", "focusCommand"], blurCommand: ["command.blur", "blurCommand"], enterCommand: ["command.enter", "enterCommand"], escapeCommand: ["command.escape", "escapeCommand"], clickCommand: ["command.click", "clickCommand"] }, outputs: { focus: "focus", blur: "blur", enterKey: "enterKey", escapeKey: "escapeKey" }, host: { listeners: { "click": "notifyClick()", "focusin": "notifyFocusIn()", "focusout": "notifyFocusOut()" }, properties: { "class.dense": "this.dense", "class": "this.baseClassName", "class.disabled": "this.disabled" } }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
1792
1822
|
}
|
|
1823
|
+
__decorate([
|
|
1824
|
+
Proxify(),
|
|
1825
|
+
__metadata("design:type", Object)
|
|
1826
|
+
], AbstractInputComponent.prototype, "i18n$", null);
|
|
1827
|
+
__decorate([
|
|
1828
|
+
StoreInValueModel(),
|
|
1829
|
+
__metadata("design:type", Object)
|
|
1830
|
+
], AbstractInputComponent.prototype, "i18n", null);
|
|
1793
1831
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractInputComponent, decorators: [{
|
|
1794
1832
|
type: Component,
|
|
1795
1833
|
args: [{ template: '' }]
|
|
1796
1834
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
1797
1835
|
type: Inject,
|
|
1798
1836
|
args: [INPUT_TOKEN_HACK]
|
|
1799
|
-
}] }]; }, propDecorators: {
|
|
1837
|
+
}] }]; }, propDecorators: { i18n$: [{
|
|
1800
1838
|
type: Input
|
|
1839
|
+
}], i18n: [{
|
|
1840
|
+
type: Input
|
|
1841
|
+
}], _label: [{
|
|
1842
|
+
type: Input,
|
|
1843
|
+
args: ["label"]
|
|
1801
1844
|
}], userFloatLabel: [{
|
|
1802
1845
|
type: Input,
|
|
1803
1846
|
args: ['floatLabel']
|
|
1804
|
-
}],
|
|
1805
|
-
type: Input
|
|
1806
|
-
|
|
1807
|
-
|
|
1847
|
+
}], _hint: [{
|
|
1848
|
+
type: Input,
|
|
1849
|
+
args: ['hint']
|
|
1850
|
+
}], _placeholder: [{
|
|
1851
|
+
type: Input,
|
|
1852
|
+
args: ['placeholder']
|
|
1808
1853
|
}], dense: [{
|
|
1809
1854
|
type: HostBinding,
|
|
1810
1855
|
args: ['class.dense']
|
|
@@ -1847,6 +1892,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
1847
1892
|
}], notifyFocusOut: [{
|
|
1848
1893
|
type: HostListener,
|
|
1849
1894
|
args: ['focusout']
|
|
1895
|
+
}], disabled: [{
|
|
1896
|
+
type: HostBinding,
|
|
1897
|
+
args: ["class.disabled"]
|
|
1850
1898
|
}] } });
|
|
1851
1899
|
|
|
1852
1900
|
class AbstractListInputComponent extends AbstractInputComponent {
|
|
@@ -2085,11 +2133,11 @@ class CheckboxInputComponent extends AbstractValueInputComponent {
|
|
|
2085
2133
|
super();
|
|
2086
2134
|
}
|
|
2087
2135
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: CheckboxInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2088
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: CheckboxInputComponent, selector: "aup-checkbox-input", inputs: { color: "color", labelPosition: "labelPosition" }, usesInheritance: true, ngImport: i0, template: "<!-- TODO: add focus binding -->\n<mat-checkbox\n [(ngModel)]=\"componentValue$.value\"\n [color]=\"color\"\n [labelPosition]=\"labelPosition\"\n [disabled]=\"!isEnabled()\"\n>{{label}}</mat-checkbox>\n<mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n<mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n", styles: [":host{display:inline-flex;flex-direction:column;padding:
|
|
2136
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: CheckboxInputComponent, selector: "aup-checkbox-input", inputs: { color: "color", labelPosition: "labelPosition" }, usesInheritance: true, ngImport: i0, template: "<!-- TODO: add focus binding -->\n<mat-checkbox\n [(ngModel)]=\"componentValue$.value\"\n [color]=\"color\"\n [labelPosition]=\"labelPosition\"\n [disabled]=\"!isEnabled()\"\n>{{ label }}\n</mat-checkbox>\n<ng-container *ngIf=\"!dense\">\n <mat-hint *ngIf=\"showHint\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{ firstError }}</mat-error>\n</ng-container>\n", styles: [":host{display:inline-flex;flex-direction:column;padding:10px 0 0}:host.dense{padding:4px 0 2px}mat-hint,mat-error{margin-top:4px;margin-left:24px;font-size:12px;font-weight:400;line-height:13.5px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i4$3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }] });
|
|
2089
2137
|
}
|
|
2090
2138
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: CheckboxInputComponent, decorators: [{
|
|
2091
2139
|
type: Component,
|
|
2092
|
-
args: [{ selector: 'aup-checkbox-input', template: "<!-- TODO: add focus binding -->\n<mat-checkbox\n [(ngModel)]=\"componentValue$.value\"\n [color]=\"color\"\n [labelPosition]=\"labelPosition\"\n [disabled]=\"!isEnabled()\"\n>{{label}}</mat-checkbox>\n<mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n<mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n", styles: [":host{display:inline-flex;flex-direction:column;padding:
|
|
2140
|
+
args: [{ selector: 'aup-checkbox-input', template: "<!-- TODO: add focus binding -->\n<mat-checkbox\n [(ngModel)]=\"componentValue$.value\"\n [color]=\"color\"\n [labelPosition]=\"labelPosition\"\n [disabled]=\"!isEnabled()\"\n>{{ label }}\n</mat-checkbox>\n<ng-container *ngIf=\"!dense\">\n <mat-hint *ngIf=\"showHint\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{ firstError }}</mat-error>\n</ng-container>\n", styles: [":host{display:inline-flex;flex-direction:column;padding:10px 0 0}:host.dense{padding:4px 0 2px}mat-hint,mat-error{margin-top:4px;margin-left:24px;font-size:12px;font-weight:400;line-height:13.5px}\n"] }]
|
|
2093
2141
|
}], ctorParameters: function () { return []; }, propDecorators: { color: [{
|
|
2094
2142
|
type: Input
|
|
2095
2143
|
}], labelPosition: [{
|
|
@@ -2128,7 +2176,7 @@ class MultipleSelectInputComponent extends AbstractListInputComponent {
|
|
|
2128
2176
|
const self = this;
|
|
2129
2177
|
this.registerDisposable(new Binding(this.componentList$, this.ids$, {
|
|
2130
2178
|
toLeft(selectedItems, currentLeftValue) {
|
|
2131
|
-
const newValues = selectedItems.map(it => lookup.get(it)).filter(it =>
|
|
2179
|
+
const newValues = selectedItems.map(it => lookup.get(it)).filter(it => !!it);
|
|
2132
2180
|
// if our lookup didn't find anything then we return the previous values so we don't clobber selections when the options go empty
|
|
2133
2181
|
return newValues.length < 1 && selectedItems.length > 0 ? currentLeftValue : newValues;
|
|
2134
2182
|
},
|
|
@@ -2167,48 +2215,142 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
2167
2215
|
|
|
2168
2216
|
class NumberInputComponent extends AbstractValueInputComponent {
|
|
2169
2217
|
autocomplete;
|
|
2170
|
-
min =
|
|
2171
|
-
|
|
2172
|
-
|
|
2218
|
+
#min$_accessor_storage = proxify((ValueModel));
|
|
2219
|
+
get min$() { return this.#min$_accessor_storage; }
|
|
2220
|
+
set min$(value) { this.#min$_accessor_storage = value; }
|
|
2221
|
+
#min_accessor_storage = Number.MIN_SAFE_INTEGER;
|
|
2222
|
+
get min() { return this.#min_accessor_storage; }
|
|
2223
|
+
set min(value) { this.#min_accessor_storage = value; }
|
|
2224
|
+
#max$_accessor_storage = proxify((ValueModel));
|
|
2225
|
+
get max$() { return this.#max$_accessor_storage; }
|
|
2226
|
+
set max$(value) { this.#max$_accessor_storage = value; }
|
|
2227
|
+
#max_accessor_storage = Number.MAX_SAFE_INTEGER;
|
|
2228
|
+
get max() { return this.#max_accessor_storage; }
|
|
2229
|
+
set max(value) { this.#max_accessor_storage = value; }
|
|
2230
|
+
incrementCommand;
|
|
2231
|
+
decrementCommand;
|
|
2173
2232
|
constructor() {
|
|
2174
2233
|
super();
|
|
2234
|
+
const { chain } = Dsl.disposeWith(this);
|
|
2235
|
+
const normalisedValue$ = chain(this.value$).otherwise(0);
|
|
2236
|
+
this.incrementCommand = Command.create(() => {
|
|
2237
|
+
this.value$.value = normalisedValue$.value + 1;
|
|
2238
|
+
}).enableWhile(chain.numericValue(normalisedValue$).isLessThan(this.max$).and(this.enabled$));
|
|
2239
|
+
this.decrementCommand = Command.create(() => {
|
|
2240
|
+
this.value$.value = normalisedValue$.value - 1;
|
|
2241
|
+
}).enableWhile(chain.numericValue(normalisedValue$).isGreaterThan(this.min$).and(this.enabled$));
|
|
2175
2242
|
}
|
|
2176
2243
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2177
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: NumberInputComponent, selector: "aup-number-input", inputs: { autocomplete: "autocomplete", min: "min", max
|
|
2244
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: NumberInputComponent, selector: "aup-number-input", inputs: { autocomplete: "autocomplete", min$: "min$", min: "min", max$: "max$", max: "max" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field floatLabel=\"always\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [min]=\"min\"\n [max]=\"max\"\n [size]=\"4\">\n <section matIconSuffix>\n <button [pectinCommand]=\"decrementCommand\">-</button>\n <button [pectinCommand]=\"incrementCommand\">+</button>\n </section>\n <mat-hint *ngIf=\"hint && !dense\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{ firstError }}</mat-error>\n</mat-form-field>\n", styles: [":host{--width: 56px;--height: 42px;--margin-right: 1px;--border-radius: 3px;--border-color:#d5d5d5;--button-background: #fafafa;--button-background-hover: #efefef}:host input[type=number]{appearance:textfield}:host input[type=number]::-webkit-inner-spin-button,:host input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}:host:focus-within:has(section:not(:focus-within)){--height: 40px;--margin-right: 2px;--border-radius: 2px}:host section[maticonsuffix]{display:flex;flex-direction:row;align-items:stretch;gap:1px;background-color:var(--border-color);border-left:1px solid var(--border-color);width:var(--width);min-width:var(--width);height:var(--height);min-height:var(--height);margin-right:var(--margin-right);border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius);overflow:hidden}:host button{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:center;font-weight:600;border-style:none;background-color:var(--button-background)}:host button:hover{background-color:var(--button-background-hover)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2$4.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }] });
|
|
2178
2245
|
}
|
|
2246
|
+
__decorate([
|
|
2247
|
+
Proxify(),
|
|
2248
|
+
__metadata("design:type", ValueModel)
|
|
2249
|
+
], NumberInputComponent.prototype, "min$", null);
|
|
2250
|
+
__decorate([
|
|
2251
|
+
StoreInValueModel(),
|
|
2252
|
+
__metadata("design:type", Object)
|
|
2253
|
+
], NumberInputComponent.prototype, "min", null);
|
|
2254
|
+
__decorate([
|
|
2255
|
+
Proxify(),
|
|
2256
|
+
__metadata("design:type", ValueModel)
|
|
2257
|
+
], NumberInputComponent.prototype, "max$", null);
|
|
2258
|
+
__decorate([
|
|
2259
|
+
StoreInValueModel(),
|
|
2260
|
+
__metadata("design:type", Object)
|
|
2261
|
+
], NumberInputComponent.prototype, "max", null);
|
|
2179
2262
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NumberInputComponent, decorators: [{
|
|
2180
2263
|
type: Component,
|
|
2181
|
-
args: [{ selector: 'aup-number-input', template: "<mat-form-field
|
|
2264
|
+
args: [{ selector: 'aup-number-input', template: "<mat-form-field floatLabel=\"always\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [min]=\"min\"\n [max]=\"max\"\n [size]=\"4\">\n <section matIconSuffix>\n <button [pectinCommand]=\"decrementCommand\">-</button>\n <button [pectinCommand]=\"incrementCommand\">+</button>\n </section>\n <mat-hint *ngIf=\"hint && !dense\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{ firstError }}</mat-error>\n</mat-form-field>\n", styles: [":host{--width: 56px;--height: 42px;--margin-right: 1px;--border-radius: 3px;--border-color:#d5d5d5;--button-background: #fafafa;--button-background-hover: #efefef}:host input[type=number]{appearance:textfield}:host input[type=number]::-webkit-inner-spin-button,:host input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}:host:focus-within:has(section:not(:focus-within)){--height: 40px;--margin-right: 2px;--border-radius: 2px}:host section[maticonsuffix]{display:flex;flex-direction:row;align-items:stretch;gap:1px;background-color:var(--border-color);border-left:1px solid var(--border-color);width:var(--width);min-width:var(--width);height:var(--height);min-height:var(--height);margin-right:var(--margin-right);border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius);overflow:hidden}:host button{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:center;font-weight:600;border-style:none;background-color:var(--button-background)}:host button:hover{background-color:var(--button-background-hover)}\n"] }]
|
|
2182
2265
|
}], ctorParameters: function () { return []; }, propDecorators: { autocomplete: [{
|
|
2183
2266
|
type: Input
|
|
2267
|
+
}], min$: [{
|
|
2268
|
+
type: Input
|
|
2184
2269
|
}], min: [{
|
|
2185
2270
|
type: Input
|
|
2186
|
-
}], max
|
|
2271
|
+
}], max$: [{
|
|
2187
2272
|
type: Input
|
|
2188
|
-
}],
|
|
2273
|
+
}], max: [{
|
|
2189
2274
|
type: Input
|
|
2190
2275
|
}] } });
|
|
2191
2276
|
|
|
2192
2277
|
class PasswordInputComponent extends AbstractValueInputComponent {
|
|
2193
2278
|
autocomplete;
|
|
2279
|
+
#enableShowPassword$_accessor_storage = proxify((ValueModel));
|
|
2280
|
+
get enableShowPassword$() { return this.#enableShowPassword$_accessor_storage; }
|
|
2281
|
+
set enableShowPassword$(value) { this.#enableShowPassword$_accessor_storage = value; }
|
|
2282
|
+
#enableShowPassword_accessor_storage = false;
|
|
2283
|
+
get enableShowPassword() { return this.#enableShowPassword_accessor_storage; }
|
|
2284
|
+
set enableShowPassword(value) { this.#enableShowPassword_accessor_storage = value; }
|
|
2285
|
+
showPassword$ = new MutableValueModel(false);
|
|
2286
|
+
toggleShowPasswordCommand;
|
|
2194
2287
|
constructor() {
|
|
2195
2288
|
super();
|
|
2289
|
+
const { chain, valueOf } = Dsl.disposeWith(this);
|
|
2290
|
+
const face$ = chain(this.showPassword$).map(show => {
|
|
2291
|
+
return {
|
|
2292
|
+
icon: () => show ? "mat:visibility_off" : "mat:visibility"
|
|
2293
|
+
};
|
|
2294
|
+
});
|
|
2295
|
+
this.toggleShowPasswordCommand = Command.create(() => {
|
|
2296
|
+
this.showPassword$.value = !this.showPassword$.value;
|
|
2297
|
+
})
|
|
2298
|
+
.withFace(face$)
|
|
2299
|
+
.enableWhile(chain.stringValue(this.componentValue$).isNotBlank());
|
|
2300
|
+
}
|
|
2301
|
+
get fieldType() {
|
|
2302
|
+
return this.showPassword$.value ? "text" : "password";
|
|
2196
2303
|
}
|
|
2197
2304
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PasswordInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2198
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: PasswordInputComponent, selector: "aup-password-input", inputs: { autocomplete: "autocomplete" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"
|
|
2305
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: PasswordInputComponent, selector: "aup-password-input", inputs: { autocomplete: "autocomplete", enableShowPassword$: "enableShowPassword$", enableShowPassword: "enableShowPassword" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input [type]=\"fieldType\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n <span matSuffix *ngIf=\"enableShowPassword$.value\">\n <aup-command [command]=\"toggleShowPasswordCommand\" data-cy=\"showPassword\"></aup-command>\n </span>\n</mat-form-field>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }, { kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }] });
|
|
2199
2306
|
}
|
|
2307
|
+
__decorate([
|
|
2308
|
+
Proxify(),
|
|
2309
|
+
__metadata("design:type", Object)
|
|
2310
|
+
], PasswordInputComponent.prototype, "enableShowPassword$", null);
|
|
2311
|
+
__decorate([
|
|
2312
|
+
StoreInValueModel(),
|
|
2313
|
+
__metadata("design:type", Object)
|
|
2314
|
+
], PasswordInputComponent.prototype, "enableShowPassword", null);
|
|
2200
2315
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PasswordInputComponent, decorators: [{
|
|
2201
2316
|
type: Component,
|
|
2202
|
-
args: [{ selector: 'aup-password-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"
|
|
2317
|
+
args: [{ selector: 'aup-password-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input [type]=\"fieldType\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n <span matSuffix *ngIf=\"enableShowPassword$.value\">\n <aup-command [command]=\"toggleShowPasswordCommand\" data-cy=\"showPassword\"></aup-command>\n </span>\n</mat-form-field>\n\n" }]
|
|
2318
|
+
}], ctorParameters: function () { return []; }, propDecorators: { autocomplete: [{
|
|
2319
|
+
type: Input
|
|
2320
|
+
}], enableShowPassword$: [{
|
|
2321
|
+
type: Input
|
|
2322
|
+
}], enableShowPassword: [{
|
|
2323
|
+
type: Input
|
|
2324
|
+
}] } });
|
|
2325
|
+
|
|
2326
|
+
class SearchInputComponent extends AbstractValueInputComponent {
|
|
2327
|
+
autocomplete;
|
|
2328
|
+
clearCommand;
|
|
2329
|
+
constructor() {
|
|
2330
|
+
super();
|
|
2331
|
+
this.dense = true;
|
|
2332
|
+
const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
|
|
2333
|
+
this.clearCommand = Command.create(() => {
|
|
2334
|
+
this.componentValue$.value = "";
|
|
2335
|
+
});
|
|
2336
|
+
this.clearCommand.disableWhile(chain.stringValue(this.componentValue$).isBlank());
|
|
2337
|
+
}
|
|
2338
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2339
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SearchInputComponent, selector: "aup-search-input", inputs: { autocomplete: "autocomplete" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <aup-icon matPrefix icon=\"mat:search\"></aup-icon>\n <button mat-icon-button matSuffix [pectinCommand]=\"clearCommand\">\n <aup-icon icon=\"mat:close\"></aup-icon>\n </button>\n</mat-form-field>\n\n", styles: ["button[disabled]{visibility:hidden}\n"], dependencies: [{ kind: "directive", type: i2$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }] });
|
|
2340
|
+
}
|
|
2341
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
2342
|
+
type: Component,
|
|
2343
|
+
args: [{ selector: 'aup-search-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <aup-icon matPrefix icon=\"mat:search\"></aup-icon>\n <button mat-icon-button matSuffix [pectinCommand]=\"clearCommand\">\n <aup-icon icon=\"mat:close\"></aup-icon>\n </button>\n</mat-form-field>\n\n", styles: ["button[disabled]{visibility:hidden}\n"] }]
|
|
2203
2344
|
}], ctorParameters: function () { return []; }, propDecorators: { autocomplete: [{
|
|
2204
2345
|
type: Input
|
|
2205
2346
|
}] } });
|
|
2206
2347
|
|
|
2207
2348
|
/**
|
|
2208
2349
|
* Using templates:
|
|
2209
|
-
* <aup-select-input [
|
|
2350
|
+
* <aup-select-input [value$]="myModel" [options]="myOptions">
|
|
2210
2351
|
* <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
|
|
2211
|
-
* <ng-template #
|
|
2352
|
+
* <ng-template #selectedOptionTemplate let-option>{{option.thePropertyYouWant}} note, not used for nils (the placeholder is used)</ng-template>
|
|
2353
|
+
* <ng-template #nilOptionTemplate>Uses the placeholder by default but you can customise it</ng-template>
|
|
2212
2354
|
* </aup-select_input>
|
|
2213
2355
|
*/
|
|
2214
2356
|
class SelectInputComponent extends AbstractValueInputComponent {
|
|
@@ -2233,7 +2375,7 @@ class SelectInputComponent extends AbstractValueInputComponent {
|
|
|
2233
2375
|
super();
|
|
2234
2376
|
const { chain } = Dsl.disposeWith(this);
|
|
2235
2377
|
this.cookedOptions$ = chain(this.options$)
|
|
2236
|
-
.
|
|
2378
|
+
.mapAll(options => {
|
|
2237
2379
|
return options.length < 1 && !isNil(this.componentValue$.value) ? [this.componentValue$.value] : options;
|
|
2238
2380
|
}, {
|
|
2239
2381
|
dependsOn: this.componentValue$
|
|
@@ -2272,21 +2414,21 @@ class SelectInputComponent extends AbstractValueInputComponent {
|
|
|
2272
2414
|
id: this.delegatedIdentityOf(value)
|
|
2273
2415
|
});
|
|
2274
2416
|
let lastIdSnapshot = snapshotValueAndId(this.componentValue$.value);
|
|
2275
|
-
console.log(lastIdSnapshot)
|
|
2417
|
+
// console.log(lastIdSnapshot)
|
|
2276
2418
|
before(this.options$).changes(() => {
|
|
2277
2419
|
lastIdSnapshot = snapshotValueAndId(this.componentValue$.value);
|
|
2278
|
-
console.log(lastIdSnapshot)
|
|
2420
|
+
// console.log(lastIdSnapshot)
|
|
2279
2421
|
});
|
|
2280
2422
|
when(this.options$).changes((is, was) => {
|
|
2281
2423
|
const newIdSnapshot = snapshotValueAndId(lastIdSnapshot.value);
|
|
2282
|
-
console.log(lastIdSnapshot, newIdSnapshot)
|
|
2424
|
+
// console.log(lastIdSnapshot, newIdSnapshot)
|
|
2283
2425
|
if (newIdSnapshot !== lastIdSnapshot.id) {
|
|
2284
2426
|
this.id$.value = this.delegatedIdentityOf(this.componentValue$.value);
|
|
2285
2427
|
}
|
|
2286
2428
|
});
|
|
2287
2429
|
}
|
|
2288
2430
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SelectInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2289
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SelectInputComponent, selector: "aup-select-input", inputs: { options$: "options$", options: "options", optionLabel: "optionLabel", allowNil: "allowNil", optionLabelFormat: "optionLabelFormat" }, queries: [{ propertyName: "selectedOptionTemplateRef", first: true, predicate: ["selectedOptionTemplate"], descendants: true }, { propertyName: "optionTemplateRef", first: true, predicate: ["optionTemplate"], descendants: true }, { propertyName: "nilOptionTemplateRef", first: true, predicate: ["nilOptionTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValue$.value\"\n (ngModelChange)=\"select($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n\n <!--\n TODO: dave has a scenario where the selected item isn't rendering that I can't reproduce so we explicity render it..\n It typically happens because the ngModel value isn't the one contained in the list - this means our source model\n identifyOf function has changed and our id$/lookup$/componentValue$ are out of sync.\n We get around this for now by explicity rendering the component value.\n Please Note: I haven't been able to reproduce this\n -->\n <mat-select-trigger *ngIf=\"!selectedOptionTemplateRef\">\n {{optionLabelFormat(componentValue$.value)}}\n </mat-select-trigger>\n\n <mat-select-trigger *ngIf=\"selectedOptionTemplateRef\">\n <ng-container [ngTemplateOutlet]=\"selectedOptionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: componentValue$.value}\"></ng-container>\n </mat-select-trigger>\n\n <mat-option *ngIf=\"allowNil\">\n <ng-container *ngIf=\"!nilOptionTemplateRef\">{{placeholder}}</ng-container>\n <ng-container *ngIf=\"nilOptionTemplateRef\" [ngTemplateOutlet]=\"nilOptionTemplateRef\"></ng-container>\n </mat-option>\n <mat-option *ngFor=\"let option of cookedOptions$.value; trackBy: trackByIdentity;let i = index\"\n [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(option)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, index: i }\"\n >\n </ng-container>\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div class=\"item\" *ngFor=\"let item of cookedOptions$.value\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(item)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, index: 0 }\"\n >\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:inline-block}mat-form-field{width:100%}.width-strut{display:block;height:0;max-height:0;width:auto;visibility:hidden;overflow:hidden;padding-right:35px}.width-strut mat-label{font-size:75%}.width-strut>.item{font-size:16px;padding-left:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i4$4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "directive", type: i4$4.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }] });
|
|
2431
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SelectInputComponent, selector: "aup-select-input", inputs: { options$: "options$", options: "options", optionLabel: "optionLabel", allowNil: "allowNil", optionLabelFormat: "optionLabelFormat" }, queries: [{ propertyName: "selectedOptionTemplateRef", first: true, predicate: ["selectedOptionTemplate"], descendants: true }, { propertyName: "optionTemplateRef", first: true, predicate: ["optionTemplate"], descendants: true }, { propertyName: "nilOptionTemplateRef", first: true, predicate: ["nilOptionTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValue$.value\"\n (ngModelChange)=\"select($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n\n <!--\n TODO: dave has a scenario where the selected item isn't rendering that I can't reproduce so we explicity render it..\n It typically happens because the ngModel value isn't the one contained in the list - this means our source model\n identifyOf function has changed and our id$/lookup$/componentValue$ are out of sync.\n We get around this for now by explicity rendering the component value.\n Please Note: I haven't been able to reproduce this\n -->\n <mat-select-trigger *ngIf=\"!selectedOptionTemplateRef\">\n {{optionLabelFormat(componentValue$.value)}}\n </mat-select-trigger>\n\n <mat-select-trigger *ngIf=\"selectedOptionTemplateRef\">\n <ng-container [ngTemplateOutlet]=\"selectedOptionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: componentValue$.value}\"></ng-container>\n </mat-select-trigger>\n\n <mat-option *ngIf=\"allowNil\">\n <ng-container *ngIf=\"!nilOptionTemplateRef\">{{placeholder}}</ng-container>\n <ng-container *ngIf=\"nilOptionTemplateRef\" [ngTemplateOutlet]=\"nilOptionTemplateRef\"></ng-container>\n </mat-option>\n <mat-option *ngFor=\"let option of cookedOptions$.value; trackBy: trackByIdentity;let i = index\"\n [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(option)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, index: i }\"\n >\n </ng-container>\n </mat-option>\n <ng-content select=\"[select-option-footer]\"></ng-content>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div class=\"item\" *ngFor=\"let item of cookedOptions$.value\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(item)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, index: 0 }\"\n >\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:inline-block}mat-form-field{width:100%}.width-strut{display:block;height:0;max-height:0;width:auto;visibility:hidden;overflow:hidden;padding-right:35px}.width-strut mat-label{font-size:75%}.width-strut>.item{font-size:16px;padding-left:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i4$4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "directive", type: i4$4.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }] });
|
|
2290
2432
|
}
|
|
2291
2433
|
__decorate([
|
|
2292
2434
|
Proxify(),
|
|
@@ -2298,7 +2440,7 @@ __decorate([
|
|
|
2298
2440
|
], SelectInputComponent.prototype, "options", null);
|
|
2299
2441
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SelectInputComponent, decorators: [{
|
|
2300
2442
|
type: Component,
|
|
2301
|
-
args: [{ selector: 'aup-select-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValue$.value\"\n (ngModelChange)=\"select($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n\n <!--\n TODO: dave has a scenario where the selected item isn't rendering that I can't reproduce so we explicity render it..\n It typically happens because the ngModel value isn't the one contained in the list - this means our source model\n identifyOf function has changed and our id$/lookup$/componentValue$ are out of sync.\n We get around this for now by explicity rendering the component value.\n Please Note: I haven't been able to reproduce this\n -->\n <mat-select-trigger *ngIf=\"!selectedOptionTemplateRef\">\n {{optionLabelFormat(componentValue$.value)}}\n </mat-select-trigger>\n\n <mat-select-trigger *ngIf=\"selectedOptionTemplateRef\">\n <ng-container [ngTemplateOutlet]=\"selectedOptionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: componentValue$.value}\"></ng-container>\n </mat-select-trigger>\n\n <mat-option *ngIf=\"allowNil\">\n <ng-container *ngIf=\"!nilOptionTemplateRef\">{{placeholder}}</ng-container>\n <ng-container *ngIf=\"nilOptionTemplateRef\" [ngTemplateOutlet]=\"nilOptionTemplateRef\"></ng-container>\n </mat-option>\n <mat-option *ngFor=\"let option of cookedOptions$.value; trackBy: trackByIdentity;let i = index\"\n [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(option)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, index: i }\"\n >\n </ng-container>\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div class=\"item\" *ngFor=\"let item of cookedOptions$.value\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(item)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, index: 0 }\"\n >\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:inline-block}mat-form-field{width:100%}.width-strut{display:block;height:0;max-height:0;width:auto;visibility:hidden;overflow:hidden;padding-right:35px}.width-strut mat-label{font-size:75%}.width-strut>.item{font-size:16px;padding-left:0}\n"] }]
|
|
2443
|
+
args: [{ selector: 'aup-select-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValue$.value\"\n (ngModelChange)=\"select($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n\n <!--\n TODO: dave has a scenario where the selected item isn't rendering that I can't reproduce so we explicity render it..\n It typically happens because the ngModel value isn't the one contained in the list - this means our source model\n identifyOf function has changed and our id$/lookup$/componentValue$ are out of sync.\n We get around this for now by explicity rendering the component value.\n Please Note: I haven't been able to reproduce this\n -->\n <mat-select-trigger *ngIf=\"!selectedOptionTemplateRef\">\n {{optionLabelFormat(componentValue$.value)}}\n </mat-select-trigger>\n\n <mat-select-trigger *ngIf=\"selectedOptionTemplateRef\">\n <ng-container [ngTemplateOutlet]=\"selectedOptionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: componentValue$.value}\"></ng-container>\n </mat-select-trigger>\n\n <mat-option *ngIf=\"allowNil\">\n <ng-container *ngIf=\"!nilOptionTemplateRef\">{{placeholder}}</ng-container>\n <ng-container *ngIf=\"nilOptionTemplateRef\" [ngTemplateOutlet]=\"nilOptionTemplateRef\"></ng-container>\n </mat-option>\n <mat-option *ngFor=\"let option of cookedOptions$.value; trackBy: trackByIdentity;let i = index\"\n [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(option)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, index: i }\"\n >\n </ng-container>\n </mat-option>\n <ng-content select=\"[select-option-footer]\"></ng-content>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div class=\"item\" *ngFor=\"let item of cookedOptions$.value\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(item)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, index: 0 }\"\n >\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:inline-block}mat-form-field{width:100%}.width-strut{display:block;height:0;max-height:0;width:auto;visibility:hidden;overflow:hidden;padding-right:35px}.width-strut mat-label{font-size:75%}.width-strut>.item{font-size:16px;padding-left:0}\n"] }]
|
|
2302
2444
|
}], ctorParameters: function () { return []; }, propDecorators: { options$: [{
|
|
2303
2445
|
type: Input
|
|
2304
2446
|
}], options: [{
|
|
@@ -2329,17 +2471,24 @@ class StringInputComponent extends AbstractValueInputComponent {
|
|
|
2329
2471
|
get enableClear() { return this.#enableClear_accessor_storage; }
|
|
2330
2472
|
set enableClear(value) { this.#enableClear_accessor_storage = value; }
|
|
2331
2473
|
iconPrefix;
|
|
2474
|
+
#suffixCommand_accessor_storage = proxify(Command);
|
|
2475
|
+
get suffixCommand() { return this.#suffixCommand_accessor_storage; }
|
|
2476
|
+
set suffixCommand(value) { this.#suffixCommand_accessor_storage = value; }
|
|
2332
2477
|
clearCommand;
|
|
2333
2478
|
constructor() {
|
|
2334
2479
|
super();
|
|
2335
2480
|
const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
|
|
2336
2481
|
this.clearCommand = Command.create(() => {
|
|
2337
2482
|
this.componentValue$.value = "";
|
|
2338
|
-
})
|
|
2339
|
-
|
|
2483
|
+
})
|
|
2484
|
+
.withFace({ icon: () => "mat:clear" })
|
|
2485
|
+
.enableWhile(chain.stringValue(this.componentValue$).isNotBlank());
|
|
2486
|
+
}
|
|
2487
|
+
get hasSuffixCommand() {
|
|
2488
|
+
return Proxify.hasTarget(this.suffixCommand);
|
|
2340
2489
|
}
|
|
2341
2490
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: StringInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2342
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: StringInputComponent, selector: "aup-string-input", inputs: { autocomplete: "autocomplete", enableClear$: "enableClear$", enableClear: "enableClear", iconPrefix: "iconPrefix" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n <
|
|
2491
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: StringInputComponent, selector: "aup-string-input", inputs: { autocomplete: "autocomplete", enableClear$: "enableClear$", enableClear: "enableClear", iconPrefix: "iconPrefix", suffixCommand: "suffixCommand" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n <span matSuffix>\n <aup-command *ngIf=\"enableClear\" [command]=\"clearCommand\" data-cy=\"clearCommand\"></aup-command>\n <aup-command *ngIf=\"hasSuffixCommand\" [command]=\"suffixCommand\" data-cy=\"suffixCommand\"></aup-command>\n </span>\n</mat-form-field>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4$2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }, { kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }] });
|
|
2343
2492
|
}
|
|
2344
2493
|
__decorate([
|
|
2345
2494
|
Proxify(),
|
|
@@ -2349,9 +2498,13 @@ __decorate([
|
|
|
2349
2498
|
StoreInValueModel(),
|
|
2350
2499
|
__metadata("design:type", Object)
|
|
2351
2500
|
], StringInputComponent.prototype, "enableClear", null);
|
|
2501
|
+
__decorate([
|
|
2502
|
+
Proxify(),
|
|
2503
|
+
__metadata("design:type", Command)
|
|
2504
|
+
], StringInputComponent.prototype, "suffixCommand", null);
|
|
2352
2505
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: StringInputComponent, decorators: [{
|
|
2353
2506
|
type: Component,
|
|
2354
|
-
args: [{ selector: 'aup-string-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n <
|
|
2507
|
+
args: [{ selector: 'aup-string-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n <span matSuffix>\n <aup-command *ngIf=\"enableClear\" [command]=\"clearCommand\" data-cy=\"clearCommand\"></aup-command>\n <aup-command *ngIf=\"hasSuffixCommand\" [command]=\"suffixCommand\" data-cy=\"suffixCommand\"></aup-command>\n </span>\n</mat-form-field>\n\n" }]
|
|
2355
2508
|
}], ctorParameters: function () { return []; }, propDecorators: { autocomplete: [{
|
|
2356
2509
|
type: Input
|
|
2357
2510
|
}], enableClear$: [{
|
|
@@ -2360,6 +2513,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
2360
2513
|
type: Input
|
|
2361
2514
|
}], iconPrefix: [{
|
|
2362
2515
|
type: Input
|
|
2516
|
+
}], suffixCommand: [{
|
|
2517
|
+
type: Input
|
|
2363
2518
|
}] } });
|
|
2364
2519
|
|
|
2365
2520
|
class TextInputComponent extends AbstractValueInputComponent {
|
|
@@ -2547,7 +2702,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
2547
2702
|
* </aup-switch-case>
|
|
2548
2703
|
*/
|
|
2549
2704
|
class SwitchCaseComponent extends DisposableComponent {
|
|
2550
|
-
cdr;
|
|
2551
2705
|
#switch$_accessor_storage = proxify((ValueModel));
|
|
2552
2706
|
get switch$() { return this.#switch$_accessor_storage; }
|
|
2553
2707
|
set switch$(value) { this.#switch$_accessor_storage = value; }
|
|
@@ -2556,9 +2710,8 @@ class SwitchCaseComponent extends DisposableComponent {
|
|
|
2556
2710
|
set switch(value) { this.#switch_accessor_storage = value; }
|
|
2557
2711
|
switchCaseOptions;
|
|
2558
2712
|
selectedIndex = 0;
|
|
2559
|
-
constructor(
|
|
2713
|
+
constructor() {
|
|
2560
2714
|
super();
|
|
2561
|
-
this.cdr = cdr;
|
|
2562
2715
|
}
|
|
2563
2716
|
ngAfterContentInit() {
|
|
2564
2717
|
const subscription = this.switchCaseOptions.changes.subscribe(change => this.updateSelection());
|
|
@@ -2595,7 +2748,7 @@ class SwitchCaseComponent extends DisposableComponent {
|
|
|
2595
2748
|
this.selectedIndex = -1;
|
|
2596
2749
|
}
|
|
2597
2750
|
}
|
|
2598
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SwitchCaseComponent, deps: [
|
|
2751
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SwitchCaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2599
2752
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SwitchCaseComponent, selector: "aup-switch-case", inputs: { switch$: "switch$", switch: "switch" }, queries: [{ propertyName: "switchCaseOptions", predicate: SwitchCaseOption }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group class=\"content-wrapper\" no-tab-header full-height-tabs [selectedIndex]=\"selectedIndex\">\n <mat-tab *ngFor=\"let option of switchCaseOptions\">\n <ng-template [ngTemplateOutlet]=\"option.templateRef\"></ng-template>\n </mat-tab>\n</mat-tab-group>\n\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}mat-tab-group{flex:1}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i3$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }] });
|
|
2600
2753
|
}
|
|
2601
2754
|
__decorate([
|
|
@@ -2609,7 +2762,7 @@ __decorate([
|
|
|
2609
2762
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SwitchCaseComponent, decorators: [{
|
|
2610
2763
|
type: Component,
|
|
2611
2764
|
args: [{ selector: 'aup-switch-case', template: "<mat-tab-group class=\"content-wrapper\" no-tab-header full-height-tabs [selectedIndex]=\"selectedIndex\">\n <mat-tab *ngFor=\"let option of switchCaseOptions\">\n <ng-template [ngTemplateOutlet]=\"option.templateRef\"></ng-template>\n </mat-tab>\n</mat-tab-group>\n\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}mat-tab-group{flex:1}\n"] }]
|
|
2612
|
-
}], ctorParameters: function () { return [
|
|
2765
|
+
}], ctorParameters: function () { return []; }, propDecorators: { switch$: [{
|
|
2613
2766
|
type: Input
|
|
2614
2767
|
}], switch: [{
|
|
2615
2768
|
type: Input
|
|
@@ -2806,6 +2959,7 @@ class ColumnTextSearchWrapper extends ColumnTextSearchFormatter.Delegate {
|
|
|
2806
2959
|
}
|
|
2807
2960
|
class ColumnModel extends GarbageCollector {
|
|
2808
2961
|
columnId;
|
|
2962
|
+
order;
|
|
2809
2963
|
textPropertiesProvider;
|
|
2810
2964
|
_columnTextProperties;
|
|
2811
2965
|
_columnHeaderPortalRef;
|
|
@@ -2819,9 +2973,10 @@ class ColumnModel extends GarbageCollector {
|
|
|
2819
2973
|
dasherisedColumnId;
|
|
2820
2974
|
textSearchDelegate = new ColumnTextSearchWrapper();
|
|
2821
2975
|
visible$;
|
|
2822
|
-
constructor(columnId, textPropertiesProvider) {
|
|
2976
|
+
constructor(columnId, order, textPropertiesProvider) {
|
|
2823
2977
|
super();
|
|
2824
2978
|
this.columnId = columnId;
|
|
2979
|
+
this.order = order;
|
|
2825
2980
|
this.textPropertiesProvider = textPropertiesProvider;
|
|
2826
2981
|
const { valueOf } = Dsl.disposeWith(this);
|
|
2827
2982
|
this.installHeaderRenderer();
|
|
@@ -2866,6 +3021,14 @@ class ColumnModel extends GarbageCollector {
|
|
|
2866
3021
|
this._columnTextProperties = columnTextProperties;
|
|
2867
3022
|
return this;
|
|
2868
3023
|
}
|
|
3024
|
+
positionAfter(column) {
|
|
3025
|
+
this.order.position(this, { after: column });
|
|
3026
|
+
return this;
|
|
3027
|
+
}
|
|
3028
|
+
positionBefore(column) {
|
|
3029
|
+
this.order.position(this, { before: column });
|
|
3030
|
+
return this;
|
|
3031
|
+
}
|
|
2869
3032
|
getSearchTextFor(row) {
|
|
2870
3033
|
return this.textSearchDelegate.format(row);
|
|
2871
3034
|
}
|
|
@@ -2967,8 +3130,8 @@ __decorate([
|
|
|
2967
3130
|
|
|
2968
3131
|
class CustomTemplateColumnModel extends ColumnModel {
|
|
2969
3132
|
config = new TemplateCellRendererPortalRef();
|
|
2970
|
-
constructor(columnId, defaults) {
|
|
2971
|
-
super(columnId, defaults);
|
|
3133
|
+
constructor(columnId, order, defaults) {
|
|
3134
|
+
super(columnId, order, defaults);
|
|
2972
3135
|
this.configureCellRenderer(this.config);
|
|
2973
3136
|
}
|
|
2974
3137
|
setTemplate(templateRef, viewContainer, fillCell, padChild) {
|
|
@@ -3046,12 +3209,17 @@ class AbstractTableComponent extends DisposableComponent {
|
|
|
3046
3209
|
#showHeader_accessor_storage = true;
|
|
3047
3210
|
get showHeader() { return this.#showHeader_accessor_storage; }
|
|
3048
3211
|
set showHeader(value) { this.#showHeader_accessor_storage = value; }
|
|
3212
|
+
#enableScrolling$_accessor_storage = proxify((ValueModel));
|
|
3049
3213
|
/**
|
|
3050
3214
|
* Set to true to enable scrolling. Once enabled the table will have 0 implicit height. You will either
|
|
3051
3215
|
* need to set it explicitly e.g. height: 400px; or by using flex or grid layout to make it fill it's
|
|
3052
3216
|
* containment area.
|
|
3053
3217
|
*/
|
|
3054
|
-
enableScrolling
|
|
3218
|
+
get enableScrolling$() { return this.#enableScrolling$_accessor_storage; }
|
|
3219
|
+
set enableScrolling$(value) { this.#enableScrolling$_accessor_storage = value; }
|
|
3220
|
+
#enableScrolling_accessor_storage = false;
|
|
3221
|
+
get enableScrolling() { return this.#enableScrolling_accessor_storage; }
|
|
3222
|
+
set enableScrolling(value) { this.#enableScrolling_accessor_storage = value; }
|
|
3055
3223
|
columns;
|
|
3056
3224
|
columnIds;
|
|
3057
3225
|
columnsById;
|
|
@@ -3070,7 +3238,6 @@ class AbstractTableComponent extends DisposableComponent {
|
|
|
3070
3238
|
super();
|
|
3071
3239
|
this.injector = injector;
|
|
3072
3240
|
const { chain, when } = Dsl.disposeWith(this);
|
|
3073
|
-
this._visibleRows$.setDelegate(this._dataSource$);
|
|
3074
3241
|
when(chain(this._dataSource$).first()).becomesTruthy(it => {
|
|
3075
3242
|
if (it === this.identityOf(it)) {
|
|
3076
3243
|
console.warn("Table model identity function is using reference equality. This can cause lots of table re-rendering", {
|
|
@@ -3089,7 +3256,7 @@ class AbstractTableComponent extends DisposableComponent {
|
|
|
3089
3256
|
if (!model) {
|
|
3090
3257
|
lang$1.illegalState("aup-table tableModel is nil");
|
|
3091
3258
|
}
|
|
3092
|
-
this.columnsById = chain(model.columns).indexBy('columnId');
|
|
3259
|
+
this.columnsById = chain(model.columns$).indexBy('columnId');
|
|
3093
3260
|
this._dataSource$.setDelegate(model.dataSource$);
|
|
3094
3261
|
model.initialise(this.injector, (row) => this.identityOf(row));
|
|
3095
3262
|
}
|
|
@@ -3106,7 +3273,7 @@ class AbstractTableComponent extends DisposableComponent {
|
|
|
3106
3273
|
}
|
|
3107
3274
|
}
|
|
3108
3275
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractTableComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
3109
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractTableComponent, selector: "aup-abstract-table", inputs: { showHeader$: "showHeader$", showHeader: "showHeader", enableScrolling: "enableScrolling" }, host: { properties: { "class": "this.baseCssClass" } }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
3276
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractTableComponent, selector: "aup-abstract-table", inputs: { showHeader$: "showHeader$", showHeader: "showHeader", enableScrolling$: "enableScrolling$", enableScrolling: "enableScrolling" }, host: { properties: { "class": "this.baseCssClass" } }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
3110
3277
|
}
|
|
3111
3278
|
__decorate([
|
|
3112
3279
|
Proxify(),
|
|
@@ -3116,6 +3283,14 @@ __decorate([
|
|
|
3116
3283
|
StoreInValueModel(),
|
|
3117
3284
|
__metadata("design:type", Object)
|
|
3118
3285
|
], AbstractTableComponent.prototype, "showHeader", null);
|
|
3286
|
+
__decorate([
|
|
3287
|
+
Proxify(),
|
|
3288
|
+
__metadata("design:type", ValueModel)
|
|
3289
|
+
], AbstractTableComponent.prototype, "enableScrolling$", null);
|
|
3290
|
+
__decorate([
|
|
3291
|
+
StoreInValueModel(),
|
|
3292
|
+
__metadata("design:type", Boolean)
|
|
3293
|
+
], AbstractTableComponent.prototype, "enableScrolling", null);
|
|
3119
3294
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractTableComponent, decorators: [{
|
|
3120
3295
|
type: Component,
|
|
3121
3296
|
args: [{
|
|
@@ -3126,6 +3301,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
3126
3301
|
type: Input
|
|
3127
3302
|
}], showHeader: [{
|
|
3128
3303
|
type: Input
|
|
3304
|
+
}], enableScrolling$: [{
|
|
3305
|
+
type: Input
|
|
3129
3306
|
}], enableScrolling: [{
|
|
3130
3307
|
type: Input
|
|
3131
3308
|
}], baseCssClass: [{
|
|
@@ -3186,6 +3363,8 @@ class EditSession extends GarbageCollector {
|
|
|
3186
3363
|
// console.warn()
|
|
3187
3364
|
// }
|
|
3188
3365
|
this._liveRowValue$.value = produce(this._liveRowValue$.value, draft => {
|
|
3366
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
3367
|
+
// @ts-ignore
|
|
3189
3368
|
this.form.writeDirtyStateTo(draft);
|
|
3190
3369
|
});
|
|
3191
3370
|
});
|
|
@@ -3288,11 +3467,11 @@ class DefaultCellRendererComponent {
|
|
|
3288
3467
|
return this._value;
|
|
3289
3468
|
}
|
|
3290
3469
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DefaultCellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3291
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: DefaultCellRendererComponent, selector: "aup-default-cell-renderer", inputs: { value: "value" }, ngImport: i0, template: "<span [innerHTML]=\"value| aupHighlight\"></span>\n", styles: [""], dependencies: [{ kind: "pipe", type: HighlightPipe, name: "aupHighlight" }] });
|
|
3470
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: DefaultCellRendererComponent, selector: "aup-default-cell-renderer", inputs: { value: "value" }, ngImport: i0, template: "<span [innerHTML]=\"value?.toString()| aupHighlight\"></span>\n", styles: [""], dependencies: [{ kind: "pipe", type: HighlightPipe, name: "aupHighlight" }] });
|
|
3292
3471
|
}
|
|
3293
3472
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DefaultCellRendererComponent, decorators: [{
|
|
3294
3473
|
type: Component,
|
|
3295
|
-
args: [{ selector: "aup-default-cell-renderer", template: "<span [innerHTML]=\"value| aupHighlight\"></span>\n" }]
|
|
3474
|
+
args: [{ selector: "aup-default-cell-renderer", template: "<span [innerHTML]=\"value?.toString()| aupHighlight\"></span>\n" }]
|
|
3296
3475
|
}], propDecorators: { value: [{
|
|
3297
3476
|
type: Input
|
|
3298
3477
|
}] } });
|
|
@@ -3430,25 +3609,14 @@ class Bounds extends Dimension {
|
|
|
3430
3609
|
})(Bounds || (Bounds = {}));
|
|
3431
3610
|
|
|
3432
3611
|
class ResizeAwareComponent extends DisposableComponent {
|
|
3433
|
-
elementRef;
|
|
3434
|
-
ngZone;
|
|
3435
|
-
|
|
3436
|
-
constructor(elementRef, ngZone) {
|
|
3437
|
-
super();
|
|
3438
|
-
this.elementRef = elementRef;
|
|
3439
|
-
this.ngZone = ngZone;
|
|
3440
|
-
}
|
|
3612
|
+
elementRef = this.inject(ElementRef);
|
|
3613
|
+
ngZone = this.inject(NgZone);
|
|
3614
|
+
boundsTracker = new ResizeAwareComponent.ResizeTracker(this.elementRef, this.ngZone);
|
|
3441
3615
|
ngAfterViewInit() {
|
|
3442
|
-
|
|
3443
|
-
const ro = new ResizeObserver((entries, observer) => {
|
|
3444
|
-
this.ngZone.run(() => this._updateBounds());
|
|
3445
|
-
});
|
|
3446
|
-
ro.observe(element);
|
|
3447
|
-
this.onDispose(() => ro.disconnect());
|
|
3448
|
-
setTimeout(() => this._updateBounds());
|
|
3616
|
+
this.boundsTracker.notifyViewReady();
|
|
3449
3617
|
}
|
|
3450
3618
|
get bounds$() {
|
|
3451
|
-
return this.
|
|
3619
|
+
return this.boundsTracker.bounds$;
|
|
3452
3620
|
}
|
|
3453
3621
|
get nativeElement() {
|
|
3454
3622
|
return this.elementRef.nativeElement;
|
|
@@ -3458,57 +3626,160 @@ class ResizeAwareComponent extends DisposableComponent {
|
|
|
3458
3626
|
return this.bounds.relativePositionOf(point);
|
|
3459
3627
|
}
|
|
3460
3628
|
get bounds() {
|
|
3461
|
-
return this.
|
|
3462
|
-
}
|
|
3463
|
-
_updateBounds() {
|
|
3464
|
-
this._bounds$.value = Bounds.ofElement(this.nativeElement);
|
|
3629
|
+
return this.bounds$.value;
|
|
3465
3630
|
}
|
|
3466
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ResizeAwareComponent, deps:
|
|
3631
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ResizeAwareComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
3467
3632
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ResizeAwareComponent, usesInheritance: true, ngImport: i0 });
|
|
3468
3633
|
}
|
|
3469
3634
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ResizeAwareComponent, decorators: [{
|
|
3470
3635
|
type: Directive
|
|
3471
|
-
}]
|
|
3636
|
+
}] });
|
|
3637
|
+
(function (ResizeAwareComponent) {
|
|
3638
|
+
class ResizeTracker extends GarbageCollector {
|
|
3639
|
+
elementRef;
|
|
3640
|
+
ngZone;
|
|
3641
|
+
_bounds$ = new MutableValueModel(new Bounds(0, 0, 0, 0));
|
|
3642
|
+
width$;
|
|
3643
|
+
height$;
|
|
3644
|
+
top$;
|
|
3645
|
+
left$;
|
|
3646
|
+
bottom$;
|
|
3647
|
+
right$;
|
|
3648
|
+
constructor(elementRef, ngZone) {
|
|
3649
|
+
super();
|
|
3650
|
+
this.elementRef = elementRef;
|
|
3651
|
+
this.ngZone = ngZone;
|
|
3652
|
+
const { chain } = Dsl.disposeWith(this);
|
|
3653
|
+
this.width$ = chain(this.bounds$).pluck("width");
|
|
3654
|
+
this.height$ = chain(this.bounds$).pluck("height");
|
|
3655
|
+
this.top$ = chain(this.bounds$).pluck("top");
|
|
3656
|
+
this.left$ = chain(this.bounds$).pluck("left");
|
|
3657
|
+
this.bottom$ = chain.numericValue(this.top$).add(this.height$);
|
|
3658
|
+
this.right$ = chain.numericValue(this.left$).add(this.width$);
|
|
3659
|
+
}
|
|
3660
|
+
notifyViewReady() {
|
|
3661
|
+
const element = this.elementRef.nativeElement;
|
|
3662
|
+
const ro = new ResizeObserver((entries, observer) => {
|
|
3663
|
+
this.ngZone.run(() => this._updateBounds());
|
|
3664
|
+
});
|
|
3665
|
+
ro.observe(element);
|
|
3666
|
+
this.onDispose(() => ro.disconnect());
|
|
3667
|
+
setTimeout(() => this._updateBounds());
|
|
3668
|
+
}
|
|
3669
|
+
get bounds$() {
|
|
3670
|
+
return this._bounds$.readonly$;
|
|
3671
|
+
}
|
|
3672
|
+
get nativeElement() {
|
|
3673
|
+
return this.elementRef.nativeElement;
|
|
3674
|
+
}
|
|
3675
|
+
// TODO: Make this handle body scroll
|
|
3676
|
+
relativePositionOf(point) {
|
|
3677
|
+
return this.bounds.relativePositionOf(point);
|
|
3678
|
+
}
|
|
3679
|
+
get bounds() {
|
|
3680
|
+
return this._bounds$.value;
|
|
3681
|
+
}
|
|
3682
|
+
_updateBounds() {
|
|
3683
|
+
this._bounds$.value = Bounds.ofElement(this.nativeElement);
|
|
3684
|
+
}
|
|
3685
|
+
}
|
|
3686
|
+
ResizeAwareComponent.ResizeTracker = ResizeTracker;
|
|
3687
|
+
})(ResizeAwareComponent || (ResizeAwareComponent = {}));
|
|
3472
3688
|
|
|
3473
|
-
|
|
3474
|
-
|
|
3475
|
-
|
|
3689
|
+
var ColumnOrderManager;
|
|
3690
|
+
(function (ColumnOrderManager) {
|
|
3691
|
+
function processPosition(position, callback) {
|
|
3692
|
+
if (position) {
|
|
3693
|
+
const keys = Object.keys(position);
|
|
3694
|
+
if (keys.includes("before")) {
|
|
3695
|
+
return position["before"] ? callback.before(position["before"]) : callback.first();
|
|
3696
|
+
}
|
|
3697
|
+
else {
|
|
3698
|
+
return position["after"] ? callback.after(position["after"]) : callback.last();
|
|
3699
|
+
}
|
|
3700
|
+
}
|
|
3701
|
+
else {
|
|
3702
|
+
return callback.last();
|
|
3703
|
+
}
|
|
3704
|
+
}
|
|
3705
|
+
ColumnOrderManager.processPosition = processPosition;
|
|
3706
|
+
})(ColumnOrderManager || (ColumnOrderManager = {}));
|
|
3707
|
+
|
|
3708
|
+
class ColumnRef {
|
|
3709
|
+
column;
|
|
3710
|
+
position;
|
|
3711
|
+
constructor(column, position) {
|
|
3712
|
+
this.column = column;
|
|
3713
|
+
this.position = position;
|
|
3714
|
+
}
|
|
3715
|
+
}
|
|
3716
|
+
class ColumnManager extends GarbageCollector {
|
|
3717
|
+
_columnRefs$ = new MutableListModel();
|
|
3718
|
+
orderedColumnRefs$;
|
|
3719
|
+
_columnsById$;
|
|
3720
|
+
allColumns$;
|
|
3721
|
+
columnVisibilities$ = new WatchList();
|
|
3722
|
+
visibleColumns$;
|
|
3476
3723
|
constructor() {
|
|
3477
3724
|
super();
|
|
3478
3725
|
const { chain } = Dsl.disposeWith(this);
|
|
3479
|
-
this.
|
|
3726
|
+
this.orderedColumnRefs$ = chain(this._columnRefs$).orderBy("position", "asc");
|
|
3727
|
+
this.allColumns$ = this.orderedColumnRefs$.pluck("column");
|
|
3728
|
+
this._columnsById$ = chain(this.allColumns$).indexBy('columnId');
|
|
3729
|
+
this.visibleColumns$ = chain(this.allColumns$).select(it => it.visible$.value, {
|
|
3730
|
+
dependsOn: this.columnVisibilities$
|
|
3731
|
+
});
|
|
3480
3732
|
}
|
|
3481
|
-
|
|
3482
|
-
|
|
3733
|
+
position(column, newPosition) {
|
|
3734
|
+
const target = this._columnRefs$.query().findMatching(it => it.column === column);
|
|
3735
|
+
const position = this.computePosition(newPosition);
|
|
3736
|
+
this._columnRefs$.replace(target, { with: new ColumnRef(target.column, position) });
|
|
3483
3737
|
}
|
|
3484
3738
|
getColumn(id) {
|
|
3485
|
-
return this.
|
|
3739
|
+
return this._columnsById$.get(id);
|
|
3486
3740
|
}
|
|
3487
3741
|
hasColumn(id) {
|
|
3488
|
-
return !!this.
|
|
3742
|
+
return !!this._columnsById$.get(id);
|
|
3489
3743
|
}
|
|
3490
3744
|
hasMatchingColumn(row, regex) {
|
|
3491
3745
|
// only search the visible columns
|
|
3492
|
-
return !!this.value.find(c => regex.test(c.getSearchTextFor(row)));
|
|
3746
|
+
return !!this.visibleColumns$.value.find(c => regex.test(c.getSearchTextFor(row)));
|
|
3493
3747
|
}
|
|
3494
|
-
addColumn(column,
|
|
3748
|
+
addColumn(column, position) {
|
|
3495
3749
|
if (this.hasColumn(column.columnId)) {
|
|
3496
3750
|
lang.illegalState(`Column with id=${column.columnId} already exists`);
|
|
3497
3751
|
}
|
|
3498
3752
|
this.registerDisposable(column);
|
|
3499
|
-
this.
|
|
3500
|
-
|
|
3501
|
-
|
|
3502
|
-
|
|
3503
|
-
|
|
3504
|
-
|
|
3753
|
+
this._columnRefs$.push(new ColumnRef(column, this.computePosition(position)));
|
|
3754
|
+
this.columnVisibilities$.add(column.visible$);
|
|
3755
|
+
return column;
|
|
3756
|
+
}
|
|
3757
|
+
computePosition(position) {
|
|
3758
|
+
const q = this.orderedColumnRefs$.query();
|
|
3759
|
+
return ColumnOrderManager.processPosition(position, {
|
|
3760
|
+
before(col) {
|
|
3761
|
+
const index = q.findIndex(ref => ref.column === col);
|
|
3762
|
+
const beforeCol = q.value[index];
|
|
3763
|
+
const afterCol = index - 1 >= 0 ? q.value[index - 1] : undefined;
|
|
3764
|
+
return generateKeyBetween(afterCol?.position, beforeCol.position);
|
|
3765
|
+
},
|
|
3766
|
+
after(col) {
|
|
3767
|
+
const index = q.findIndex(ref => ref.column === col);
|
|
3768
|
+
const afterCol = q.value[index];
|
|
3769
|
+
const beforeCol = index + 1 < q.length ? q.value[index + 1] : undefined;
|
|
3770
|
+
return generateKeyBetween(afterCol.position, beforeCol?.position);
|
|
3771
|
+
},
|
|
3772
|
+
first() {
|
|
3773
|
+
return generateKeyBetween(null, q.first()?.position);
|
|
3774
|
+
},
|
|
3775
|
+
last() {
|
|
3776
|
+
// add it to the end of the list
|
|
3777
|
+
return generateKeyBetween(q.last()?.position, null);
|
|
3505
3778
|
}
|
|
3506
|
-
this.registerDisposable(this.trackSource(column.visible$));
|
|
3507
3779
|
});
|
|
3508
|
-
return column;
|
|
3509
3780
|
}
|
|
3510
3781
|
doComputeValue() {
|
|
3511
|
-
return this.
|
|
3782
|
+
return this.allColumns$.value.filter(c => c.visible$.value);
|
|
3512
3783
|
}
|
|
3513
3784
|
}
|
|
3514
3785
|
|
|
@@ -3542,8 +3813,8 @@ function EnableCellTextSearch(options) {
|
|
|
3542
3813
|
|
|
3543
3814
|
class CustomValueColumnModel extends ColumnModel {
|
|
3544
3815
|
getValue;
|
|
3545
|
-
constructor(columnId, defaults, getValue) {
|
|
3546
|
-
super(columnId, defaults);
|
|
3816
|
+
constructor(columnId, order, defaults, getValue) {
|
|
3817
|
+
super(columnId, order, defaults);
|
|
3547
3818
|
this.getValue = getValue;
|
|
3548
3819
|
this.cellRenderer(DefaultCellRendererComponent);
|
|
3549
3820
|
}
|
|
@@ -3551,17 +3822,17 @@ class CustomValueColumnModel extends ColumnModel {
|
|
|
3551
3822
|
this.configureColumnTextSearch(EnableCellTextSearch.getFormatter(componentType, () => new ColumnTextSearchFormatter.Null()), row => this.getValue(row));
|
|
3552
3823
|
this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
|
|
3553
3824
|
if (firstTime) {
|
|
3554
|
-
if (isFunction
|
|
3825
|
+
if (isFunction(onComponentInitOrOptions)) {
|
|
3555
3826
|
onComponentInitOrOptions(component);
|
|
3556
3827
|
}
|
|
3557
3828
|
else {
|
|
3558
|
-
if (isFunction
|
|
3829
|
+
if (isFunction(onComponentInitOrOptions?.onComponentInit)) {
|
|
3559
3830
|
onComponentInitOrOptions.onComponentInit(component);
|
|
3560
3831
|
}
|
|
3561
3832
|
}
|
|
3562
3833
|
}
|
|
3563
3834
|
component.value = this.getValue(rowData.row);
|
|
3564
|
-
if (!isFunction
|
|
3835
|
+
if (!isFunction(onComponentInitOrOptions) && isFunction(onComponentInitOrOptions?.onRowUpdate)) {
|
|
3565
3836
|
onComponentInitOrOptions.onRowUpdate(component, rowData.row);
|
|
3566
3837
|
}
|
|
3567
3838
|
}));
|
|
@@ -3573,8 +3844,8 @@ class CustomValueColumnModel extends ColumnModel {
|
|
|
3573
3844
|
}
|
|
3574
3845
|
|
|
3575
3846
|
class EditorControlColumnModel extends ColumnModel {
|
|
3576
|
-
constructor(columnId, saveCommandFactory, defaults) {
|
|
3577
|
-
super(columnId, defaults);
|
|
3847
|
+
constructor(columnId, order, saveCommandFactory, defaults) {
|
|
3848
|
+
super(columnId, order, defaults);
|
|
3578
3849
|
this.cellRenderer(EditRowControlsComponent);
|
|
3579
3850
|
}
|
|
3580
3851
|
cellRenderer(componentType) {
|
|
@@ -3599,8 +3870,8 @@ class ListPropertyColumnModel extends ColumnModel {
|
|
|
3599
3870
|
intermediate.map(v => v?.toString()).join(", ") :
|
|
3600
3871
|
intermediate?.toString();
|
|
3601
3872
|
};
|
|
3602
|
-
constructor(id, property, defaults) {
|
|
3603
|
-
super(id, defaults);
|
|
3873
|
+
constructor(id, order, property, defaults) {
|
|
3874
|
+
super(id, order, defaults);
|
|
3604
3875
|
this.property = property;
|
|
3605
3876
|
this.cellRenderer(DefaultCellRendererComponent);
|
|
3606
3877
|
}
|
|
@@ -3616,7 +3887,7 @@ class ListPropertyColumnModel extends ColumnModel {
|
|
|
3616
3887
|
}
|
|
3617
3888
|
cellEditor(editor, validatorsOrInitialiser, initialiseComponent) {
|
|
3618
3889
|
const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
|
|
3619
|
-
const initialiser = isFunction
|
|
3890
|
+
const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
|
|
3620
3891
|
this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
|
|
3621
3892
|
const formListModel = editSession.form.pluckList(this.property);
|
|
3622
3893
|
if (validators) {
|
|
@@ -3645,8 +3916,8 @@ class PropertyColumnModel extends ColumnModel {
|
|
|
3645
3916
|
_defaultSearchTextFormatter = (value) => {
|
|
3646
3917
|
return (this._userFormat ?? Functions.identity)(value)?.toString();
|
|
3647
3918
|
};
|
|
3648
|
-
constructor(id, property, defaults) {
|
|
3649
|
-
super(id, defaults);
|
|
3919
|
+
constructor(id, order, property, defaults) {
|
|
3920
|
+
super(id, order, defaults);
|
|
3650
3921
|
this.property = property;
|
|
3651
3922
|
this.cellRenderer(DefaultCellRendererComponent);
|
|
3652
3923
|
}
|
|
@@ -3654,11 +3925,11 @@ class PropertyColumnModel extends ColumnModel {
|
|
|
3654
3925
|
this.configureColumnTextSearch(EnableCellTextSearch.getFormatter(componentType, () => ColumnTextSearchFormatter.forFormatter(this._defaultSearchTextFormatter)), row => row[this.property]);
|
|
3655
3926
|
this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
|
|
3656
3927
|
if (firstTime) {
|
|
3657
|
-
if (isFunction
|
|
3928
|
+
if (isFunction(onComponentInitOrOptions)) {
|
|
3658
3929
|
onComponentInitOrOptions(component);
|
|
3659
3930
|
}
|
|
3660
3931
|
else {
|
|
3661
|
-
if (isFunction
|
|
3932
|
+
if (isFunction(onComponentInitOrOptions?.onComponentInit)) {
|
|
3662
3933
|
onComponentInitOrOptions.onComponentInit(component);
|
|
3663
3934
|
}
|
|
3664
3935
|
}
|
|
@@ -3683,7 +3954,7 @@ class PropertyColumnModel extends ColumnModel {
|
|
|
3683
3954
|
component[ColumnModel.CELL_RENDERER_COMPONENT_ROW_CACHE] = rowData.row;
|
|
3684
3955
|
let disableEditCallback = false;
|
|
3685
3956
|
if (firstTime) {
|
|
3686
|
-
if (isFunction
|
|
3957
|
+
if (isFunction(options?.onComponentInit)) {
|
|
3687
3958
|
options.onComponentInit(component);
|
|
3688
3959
|
}
|
|
3689
3960
|
// install our edit callback
|
|
@@ -3698,7 +3969,7 @@ class PropertyColumnModel extends ColumnModel {
|
|
|
3698
3969
|
disableEditCallback = true;
|
|
3699
3970
|
component.value = rowData.row[this.property];
|
|
3700
3971
|
disableEditCallback = false;
|
|
3701
|
-
if (!isFunction
|
|
3972
|
+
if (!isFunction(options) && isFunction(options?.onRowUpdate)) {
|
|
3702
3973
|
options.onRowUpdate(component, rowData.row);
|
|
3703
3974
|
}
|
|
3704
3975
|
}));
|
|
@@ -3706,7 +3977,7 @@ class PropertyColumnModel extends ColumnModel {
|
|
|
3706
3977
|
}
|
|
3707
3978
|
cellEditor(editor, validatorsOrInitialiser, onComponentInit) {
|
|
3708
3979
|
const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
|
|
3709
|
-
const initialiser = isFunction
|
|
3980
|
+
const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
|
|
3710
3981
|
this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
|
|
3711
3982
|
const formValueModel = editSession.form.pluck(this.property);
|
|
3712
3983
|
if (validators) {
|
|
@@ -3733,8 +4004,8 @@ class SelectionColumnModel extends ColumnModel {
|
|
|
3733
4004
|
selectionModel;
|
|
3734
4005
|
_enableHeaderControls = true;
|
|
3735
4006
|
_color = "accent";
|
|
3736
|
-
constructor(columnId, defaults, selectionModel) {
|
|
3737
|
-
super(columnId, defaults);
|
|
4007
|
+
constructor(columnId, order, defaults, selectionModel) {
|
|
4008
|
+
super(columnId, order, defaults);
|
|
3738
4009
|
this.selectionModel = selectionModel;
|
|
3739
4010
|
const { chain } = Dsl.disposeWith(this);
|
|
3740
4011
|
this._selectRowOnClick(false);
|
|
@@ -3784,13 +4055,15 @@ class TableMoreMenuComponent extends DisposableComponent {
|
|
|
3784
4055
|
popupType$ = new MutableValueModel();
|
|
3785
4056
|
popupComponentPortal$;
|
|
3786
4057
|
_visible$ = this.registerDisposable(new DelegatingValueModel());
|
|
4058
|
+
initialiseCallback;
|
|
3787
4059
|
constructor() {
|
|
3788
4060
|
super();
|
|
3789
4061
|
const { chain } = Dsl.disposeWith(this);
|
|
3790
4062
|
this.popupComponentPortal$ = chain(this.popupType$).map(type => new ComponentPortal(type));
|
|
3791
4063
|
}
|
|
3792
|
-
configurePopupComponentType(popupComponentType) {
|
|
4064
|
+
configurePopupComponentType(popupComponentType, configureCallback) {
|
|
3793
4065
|
this.popupType$.value = popupComponentType;
|
|
4066
|
+
this.initialiseCallback = configureCallback;
|
|
3794
4067
|
}
|
|
3795
4068
|
// Stops tree selection when clicking the menu button
|
|
3796
4069
|
preventDefault($event) {
|
|
@@ -3801,6 +4074,9 @@ class TableMoreMenuComponent extends DisposableComponent {
|
|
|
3801
4074
|
const component = $event.instance;
|
|
3802
4075
|
component.initialise(this.value$, Command.create(() => this.matMenuTrigger.closeMenu()));
|
|
3803
4076
|
this._visible$.setDelegate(component.visible$);
|
|
4077
|
+
if (this.initialiseCallback) {
|
|
4078
|
+
this.initialiseCallback(component);
|
|
4079
|
+
}
|
|
3804
4080
|
}
|
|
3805
4081
|
get visible$() {
|
|
3806
4082
|
return this._visible$.readonly$;
|
|
@@ -3835,16 +4111,25 @@ class RowClass {
|
|
|
3835
4111
|
this.matches = matches;
|
|
3836
4112
|
}
|
|
3837
4113
|
}
|
|
4114
|
+
class RowAttribute {
|
|
4115
|
+
attributeName;
|
|
4116
|
+
getValue;
|
|
4117
|
+
constructor(attributeName, getValue) {
|
|
4118
|
+
this.attributeName = attributeName;
|
|
4119
|
+
this.getValue = getValue;
|
|
4120
|
+
}
|
|
4121
|
+
}
|
|
3838
4122
|
class AbstractTableModel extends GarbageCollector {
|
|
3839
4123
|
_dataSource$ = this.registerDisposable(new DelegatingListModel());
|
|
3840
4124
|
_filteredRows$ = this.registerDisposable(new DelegatingListModel());
|
|
3841
4125
|
_visibleRows$ = this.registerDisposable(new DelegatingListModel());
|
|
3842
|
-
|
|
4126
|
+
columnManager = this.registerDisposable(new ColumnManager());
|
|
3843
4127
|
_editorSessions = new MutableListModel();
|
|
3844
4128
|
_rowsBeingEdited$;
|
|
3845
4129
|
saveCommandFactory;
|
|
3846
4130
|
_editorSessionByRowId;
|
|
3847
4131
|
rowClassNamePredicates = [];
|
|
4132
|
+
rowAttributeGenerators = [];
|
|
3848
4133
|
_columnTextPropertiesLookup;
|
|
3849
4134
|
editing$;
|
|
3850
4135
|
firstEditableColumn$;
|
|
@@ -3869,15 +4154,15 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
3869
4154
|
});
|
|
3870
4155
|
this._editorSessionByRowId = chain(this._editorSessions).indexBy("rowId");
|
|
3871
4156
|
this.editing$ = chain(this._editorSessions).count().isGreaterThan(0);
|
|
3872
|
-
this.textSearchPredicate$ = chain(this.visibleColumns).
|
|
4157
|
+
this.textSearchPredicate$ = chain(this.visibleColumns$).reduceAll(columns => {
|
|
3873
4158
|
return (row, regex) => {
|
|
3874
4159
|
return (!regex || !!columns.find(c => regex.test(c.getSearchTextFor(row))));
|
|
3875
4160
|
};
|
|
3876
4161
|
});
|
|
3877
|
-
this.firstEditableColumn$ = chain(this.columns).select(c => c.hasEditorPortal()).first();
|
|
3878
|
-
this.firstVisibleColumn$ = chain(this.
|
|
3879
|
-
this.lastVisibleColumn$ = chain(this.
|
|
3880
|
-
this.rowSelectionDisabledOnAllColumns$ = chain(this.
|
|
4162
|
+
this.firstEditableColumn$ = chain(this.columns$).select(c => c.hasEditorPortal()).first();
|
|
4163
|
+
this.firstVisibleColumn$ = chain(this.visibleColumns$).first();
|
|
4164
|
+
this.lastVisibleColumn$ = chain(this.visibleColumns$).last();
|
|
4165
|
+
this.rowSelectionDisabledOnAllColumns$ = chain(this.columnManager.visibleColumns$).select(column => column.isRowSelectionEnabled()).count().equals(0);
|
|
3881
4166
|
this.dataSourceEmpty$ = chain(this.dataSource$).isEmpty();
|
|
3882
4167
|
this.selectedItems$ = this.selectionModelProxy.selectedItems$;
|
|
3883
4168
|
this.leadSelection$ = this.selectionModelProxy.leadSelection$;
|
|
@@ -3901,7 +4186,7 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
3901
4186
|
],
|
|
3902
4187
|
parent: injector
|
|
3903
4188
|
});
|
|
3904
|
-
this.columns
|
|
4189
|
+
this.columns$.value.forEach(c => c.initialise(customInjector));
|
|
3905
4190
|
this.identityOf = identityOf;
|
|
3906
4191
|
}
|
|
3907
4192
|
get dataSource$() {
|
|
@@ -3954,19 +4239,19 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
3954
4239
|
});
|
|
3955
4240
|
});
|
|
3956
4241
|
}
|
|
3957
|
-
get columns() {
|
|
3958
|
-
return this.
|
|
4242
|
+
get columns$() {
|
|
4243
|
+
return this.columnManager.allColumns$;
|
|
3959
4244
|
}
|
|
3960
|
-
get visibleColumns() {
|
|
3961
|
-
return this.
|
|
4245
|
+
get visibleColumns$() {
|
|
4246
|
+
return this.columnManager.visibleColumns$;
|
|
3962
4247
|
}
|
|
3963
4248
|
pluck(property, options) {
|
|
3964
4249
|
const columnId = options?.columnId || property.toString();
|
|
3965
|
-
return this.addColumn(new PropertyColumnModel(columnId, property, () => this.getColumnTextProperties(columnId)));
|
|
4250
|
+
return this.addColumn(new PropertyColumnModel(columnId, this.columnManager, property, () => this.getColumnTextProperties(columnId)));
|
|
3966
4251
|
}
|
|
3967
4252
|
pluckList(property, options) {
|
|
3968
4253
|
const columnId = options?.columnId || property.toString();
|
|
3969
|
-
return this.addColumn(new ListPropertyColumnModel(columnId, property, () => this.getColumnTextProperties(columnId)));
|
|
4254
|
+
return this.addColumn(new ListPropertyColumnModel(columnId, this.columnManager, property, () => this.getColumnTextProperties(columnId)));
|
|
3970
4255
|
}
|
|
3971
4256
|
// TODO: clean this up and assign the selection model on teh table directly.
|
|
3972
4257
|
// tableModel.useSelectionModel(model) and have the seleciton column automatically
|
|
@@ -3975,32 +4260,32 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
3975
4260
|
_addSelectionColumn(selectionModel, visible) {
|
|
3976
4261
|
assert.isNil(this.selectionColumnModel);
|
|
3977
4262
|
const columnId = "selection-column";
|
|
3978
|
-
this.selectionColumnModel = new SelectionColumnModel(columnId, () => this.getColumnTextProperties(columnId), this.selectionModelProxy);
|
|
4263
|
+
this.selectionColumnModel = new SelectionColumnModel(columnId, this.columnManager, () => this.getColumnTextProperties(columnId), this.selectionModelProxy);
|
|
3979
4264
|
this.selectionColumnModel.useSelectionModel(selectionModel);
|
|
3980
4265
|
this.addRowClass("aup-row-selected", row => this.selectionColumnModel.isSelected(row));
|
|
3981
|
-
const selectionColumnModel = this.addColumn(this.selectionColumnModel,
|
|
3982
|
-
if (!isNil
|
|
4266
|
+
const selectionColumnModel = this.addColumn(this.selectionColumnModel, { before: null }); // first column
|
|
4267
|
+
if (!isNil(visible)) {
|
|
3983
4268
|
selectionColumnModel.visibleWhile(visible instanceof ValueModel ? visible : ValueModel.constant(visible));
|
|
3984
4269
|
}
|
|
3985
4270
|
return selectionColumnModel;
|
|
3986
4271
|
}
|
|
3987
4272
|
addEditControls(saveCommandFactory, formFactory) {
|
|
3988
4273
|
this.saveCommandFactory = saveCommandFactory;
|
|
3989
|
-
if (isFunction
|
|
4274
|
+
if (isFunction(formFactory)) {
|
|
3990
4275
|
this._createForm = formFactory;
|
|
3991
4276
|
}
|
|
3992
4277
|
const columnId = "editControls";
|
|
3993
|
-
return this.addColumn(new EditorControlColumnModel(columnId, saveCommandFactory, () => this.getColumnTextProperties(columnId)));
|
|
4278
|
+
return this.addColumn(new EditorControlColumnModel(columnId, this.columnManager, saveCommandFactory, () => this.getColumnTextProperties(columnId)));
|
|
3994
4279
|
}
|
|
3995
4280
|
addCustomColumn(columnId, dataAccessor) {
|
|
3996
|
-
return this.addColumn(new CustomValueColumnModel(columnId, () => this.getColumnTextProperties(columnId), dataAccessor));
|
|
4281
|
+
return this.addColumn(new CustomValueColumnModel(columnId, this.columnManager, () => this.getColumnTextProperties(columnId), dataAccessor));
|
|
3997
4282
|
}
|
|
3998
4283
|
addComponentColumn(columnId, component, onComponentInitOrOptions) {
|
|
3999
|
-
return this.addColumn(new CustomValueColumnModel(columnId, () => this.getColumnTextProperties(columnId), row => row)).cellRenderer(component, onComponentInitOrOptions);
|
|
4284
|
+
return this.addColumn(new CustomValueColumnModel(columnId, this.columnManager, () => this.getColumnTextProperties(columnId), row => row)).cellRenderer(component, onComponentInitOrOptions);
|
|
4000
4285
|
}
|
|
4001
|
-
addMoreMenu(componentClass) {
|
|
4286
|
+
addMoreMenu(componentClass, initialiseCallback) {
|
|
4002
4287
|
return this.addComponentColumn("more-menu", TableMoreMenuComponent, (component) => {
|
|
4003
|
-
component.configurePopupComponentType(componentClass);
|
|
4288
|
+
component.configurePopupComponentType(componentClass, initialiseCallback);
|
|
4004
4289
|
}).columnTextProperties({
|
|
4005
4290
|
headerText() {
|
|
4006
4291
|
return "";
|
|
@@ -4008,11 +4293,14 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
4008
4293
|
});
|
|
4009
4294
|
}
|
|
4010
4295
|
addTemplateColumn(columnId) {
|
|
4011
|
-
return this.addColumn(new CustomTemplateColumnModel(columnId, () => this.getColumnTextProperties(columnId)));
|
|
4296
|
+
return this.addColumn(new CustomTemplateColumnModel(columnId, this.columnManager, () => this.getColumnTextProperties(columnId)));
|
|
4012
4297
|
}
|
|
4013
4298
|
addRowClass(className, predicate) {
|
|
4014
4299
|
this.rowClassNamePredicates.push(new RowClass(className, predicate));
|
|
4015
4300
|
}
|
|
4301
|
+
addRowAttribute(attributeName, getValue) {
|
|
4302
|
+
this.rowAttributeGenerators.push(new RowAttribute(attributeName, getValue));
|
|
4303
|
+
}
|
|
4016
4304
|
getRowClasses(row) {
|
|
4017
4305
|
const classNames = [];
|
|
4018
4306
|
this.rowClassNamePredicates.forEach(i => {
|
|
@@ -4022,8 +4310,13 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
4022
4310
|
});
|
|
4023
4311
|
return classNames;
|
|
4024
4312
|
}
|
|
4025
|
-
|
|
4026
|
-
return this.
|
|
4313
|
+
getRowAttributes(row) {
|
|
4314
|
+
return this.rowAttributeGenerators.reduce((result, generator) => {
|
|
4315
|
+
return { ...result, [generator.attributeName]: generator.getValue(row) };
|
|
4316
|
+
}, {});
|
|
4317
|
+
}
|
|
4318
|
+
addColumn(column, position) {
|
|
4319
|
+
return this.columnManager.addColumn(column, position);
|
|
4027
4320
|
}
|
|
4028
4321
|
columnTextProperties(columnTextProperties) {
|
|
4029
4322
|
this._columnTextPropertiesLookup = columnTextProperties;
|
|
@@ -4191,7 +4484,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
4191
4484
|
args: ['class']
|
|
4192
4485
|
}] } });
|
|
4193
4486
|
|
|
4487
|
+
const AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER = new InjectionToken("AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER");
|
|
4488
|
+
class TableRowAttributesDirective {
|
|
4489
|
+
elementRef;
|
|
4490
|
+
aupTableRowAttributes;
|
|
4491
|
+
constructor(elementRef) {
|
|
4492
|
+
this.elementRef = elementRef;
|
|
4493
|
+
}
|
|
4494
|
+
ngOnInit() {
|
|
4495
|
+
for (const attr in this.aupTableRowAttributes) {
|
|
4496
|
+
this.elementRef.nativeElement.setAttribute(attr, this.aupTableRowAttributes[attr]);
|
|
4497
|
+
}
|
|
4498
|
+
}
|
|
4499
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableRowAttributesDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
4500
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: TableRowAttributesDirective, selector: "[aupTableRowAttributes]", inputs: { aupTableRowAttributes: "aupTableRowAttributes" }, ngImport: i0 });
|
|
4501
|
+
}
|
|
4502
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableRowAttributesDirective, decorators: [{
|
|
4503
|
+
type: Directive,
|
|
4504
|
+
args: [{
|
|
4505
|
+
selector: "[aupTableRowAttributes]",
|
|
4506
|
+
}]
|
|
4507
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { aupTableRowAttributes: [{
|
|
4508
|
+
type: Input
|
|
4509
|
+
}] } });
|
|
4194
4510
|
class TableBodyComponent extends ResizeAwareComponent {
|
|
4511
|
+
bufferMultiplier;
|
|
4195
4512
|
#data$_accessor_storage = proxify((ListModel));
|
|
4196
4513
|
get data$() { return this.#data$_accessor_storage; }
|
|
4197
4514
|
set data$(value) { this.#data$_accessor_storage = value; }
|
|
@@ -4204,51 +4521,66 @@ class TableBodyComponent extends ResizeAwareComponent {
|
|
|
4204
4521
|
#showHeader_accessor_storage = true;
|
|
4205
4522
|
get showHeader() { return this.#showHeader_accessor_storage; }
|
|
4206
4523
|
set showHeader(value) { this.#showHeader_accessor_storage = value; }
|
|
4207
|
-
visibleRowCount = new EventEmitter();
|
|
4208
4524
|
trackBy;
|
|
4209
|
-
|
|
4210
|
-
|
|
4211
|
-
|
|
4212
|
-
|
|
4213
|
-
|
|
4214
|
-
|
|
4525
|
+
#scrollMode$_accessor_storage = proxify((ValueModel));
|
|
4526
|
+
get scrollMode$() { return this.#scrollMode$_accessor_storage; }
|
|
4527
|
+
set scrollMode$(value) { this.#scrollMode$_accessor_storage = value; }
|
|
4528
|
+
#scrollMode_accessor_storage = "none";
|
|
4529
|
+
get scrollMode() { return this.#scrollMode_accessor_storage; }
|
|
4530
|
+
set scrollMode(value) { this.#scrollMode_accessor_storage = value; }
|
|
4531
|
+
scrollViewport;
|
|
4215
4532
|
columns$;
|
|
4216
4533
|
columnIds$;
|
|
4217
4534
|
columnsById$;
|
|
4218
|
-
_visibleRowCount$;
|
|
4219
4535
|
// TODO: support user defined header and row heights via css vars.
|
|
4220
|
-
headerHeight$ = new MutableValueModel(
|
|
4221
|
-
rowHeight$ = new MutableValueModel(
|
|
4536
|
+
headerHeight$ = new MutableValueModel(48);
|
|
4537
|
+
rowHeight$ = new MutableValueModel(44);
|
|
4222
4538
|
baseCssClass = "aup-table-component";
|
|
4223
|
-
|
|
4224
|
-
|
|
4225
|
-
|
|
4539
|
+
virtualScrollDataSource = new TableVirtualScrollDataSource();
|
|
4540
|
+
virtualScrollActive$ = new MutableValueModel(false);
|
|
4541
|
+
scrollTimeout;
|
|
4542
|
+
constructor(bufferMultiplier = 1) {
|
|
4543
|
+
super();
|
|
4544
|
+
this.bufferMultiplier = bufferMultiplier;
|
|
4545
|
+
const { chain, when, observe } = Dsl.disposeWith(this);
|
|
4226
4546
|
const actualHeaderHeight$ = chain(this.showHeader$).map(show => {
|
|
4227
4547
|
return show ? this.headerHeight$.value : 0;
|
|
4228
4548
|
}, { dependsOn: this.headerHeight$ });
|
|
4229
|
-
|
|
4230
|
-
|
|
4231
|
-
|
|
4232
|
-
|
|
4233
|
-
|
|
4234
|
-
|
|
4235
|
-
|
|
4236
|
-
});
|
|
4237
|
-
when(this._visibleRowCount$).changes(visibleRows => {
|
|
4238
|
-
this.visibleRowCount.emit(visibleRows);
|
|
4239
|
-
}, { initialValue: "triggerChangeUnlessNil" });
|
|
4549
|
+
// performance is terrible if the data changes while we're scrolling, so we postpone updates until
|
|
4550
|
+
// scrolling stops.
|
|
4551
|
+
const delayedDatea$ = chain(this.data$).postponeWhile(this.virtualScrollActive$);
|
|
4552
|
+
when(delayedDatea$).changes(delatedData => {
|
|
4553
|
+
this.virtualScrollDataSource.data = delatedData;
|
|
4554
|
+
this.scheduleTableHeightCheck();
|
|
4555
|
+
}, { initialValue: "evaluate" });
|
|
4240
4556
|
this.onInit(() => {
|
|
4241
|
-
this.columns$ = chain(this.tableModel.
|
|
4557
|
+
this.columns$ = chain(this.tableModel.visibleColumns$);
|
|
4242
4558
|
this.columnIds$ = chain(this.columns$).pluck("columnId");
|
|
4243
4559
|
this.columnsById$ = chain(this.columns$).indexBy('columnId');
|
|
4244
4560
|
});
|
|
4245
|
-
const txo = new TransactionObserver().onEvent(e => console.log(e.name, e.payload));
|
|
4246
|
-
txo.observe('this.
|
|
4247
|
-
txo.observe('this.
|
|
4561
|
+
// const txo = new TransactionObserver({verbose: false}).onEvent(e => console.log(e.name, e.payload));
|
|
4562
|
+
// txo.observe('this.virtualScrollRowRange$', this.virtualScrollRowRange$);
|
|
4563
|
+
// txo.observe('this.virtualScrollSpacerSize$', this.virtualScrollSpacerSize$);
|
|
4564
|
+
// txo.observe('this.virtualRows$', this.virtualRows$);
|
|
4565
|
+
// txo.observe('this.tableBodyHeight$', this.tableBodyHeight$);
|
|
4566
|
+
// txo.observe('this.virtualScrollActive$', this.virtualScrollActive$);
|
|
4567
|
+
}
|
|
4568
|
+
ngAfterViewInit() {
|
|
4569
|
+
super.ngAfterViewInit();
|
|
4570
|
+
if (this.scrollViewport) {
|
|
4571
|
+
const { observe } = Dsl.disposeWith(this);
|
|
4572
|
+
this.scrollViewport.elementScrolled().subscribe(() => this.notifyScrolled());
|
|
4573
|
+
}
|
|
4248
4574
|
}
|
|
4249
4575
|
get hideHeader() {
|
|
4250
4576
|
return !this.showHeader;
|
|
4251
4577
|
}
|
|
4578
|
+
get headerHeightCssVar() {
|
|
4579
|
+
return `${this.headerHeight$.value}px`;
|
|
4580
|
+
}
|
|
4581
|
+
get rowHeightCssVar() {
|
|
4582
|
+
return `${this.rowHeight$.value}px`;
|
|
4583
|
+
}
|
|
4252
4584
|
isEditing(row) {
|
|
4253
4585
|
return !!this.tableModel.getEditSessionFor(row);
|
|
4254
4586
|
}
|
|
@@ -4273,8 +4605,34 @@ class TableBodyComponent extends ResizeAwareComponent {
|
|
|
4273
4605
|
}
|
|
4274
4606
|
return classes;
|
|
4275
4607
|
}
|
|
4276
|
-
|
|
4277
|
-
|
|
4608
|
+
scheduleTableHeightCheck(waitMillis = 50) {
|
|
4609
|
+
setTimeout(() => {
|
|
4610
|
+
const tbody = this.elementRef.nativeElement.querySelector("tbody");
|
|
4611
|
+
const bodyHeight = tbody.offsetHeight;
|
|
4612
|
+
if (this.data$.length > 0 && bodyHeight < this.rowHeight$.value) {
|
|
4613
|
+
// Hacks to get our virtual scroll to repaint
|
|
4614
|
+
// Logger.get(this).log(`rowCount=${this.data$.length}, bodyHeight=${bodyHeight} -> virtual table not rendering, triggering resize to force repaint`)
|
|
4615
|
+
window.dispatchEvent(new Event('resize'));
|
|
4616
|
+
if (waitMillis < 500) {
|
|
4617
|
+
this.scheduleTableHeightCheck(waitMillis + 50);
|
|
4618
|
+
}
|
|
4619
|
+
}
|
|
4620
|
+
}, waitMillis);
|
|
4621
|
+
}
|
|
4622
|
+
notifyScrolled() {
|
|
4623
|
+
this.virtualScrollActive$.value = true;
|
|
4624
|
+
this.clearScrollTimeout();
|
|
4625
|
+
this.scrollTimeout = setTimeout(() => {
|
|
4626
|
+
return this.virtualScrollActive$.value = false;
|
|
4627
|
+
}, 200);
|
|
4628
|
+
}
|
|
4629
|
+
clearScrollTimeout() {
|
|
4630
|
+
if (this.scrollTimeout) {
|
|
4631
|
+
clearTimeout(this.scrollTimeout);
|
|
4632
|
+
}
|
|
4633
|
+
}
|
|
4634
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableBodyComponent, deps: [{ token: AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
4635
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableBodyComponent, selector: "aup-table-body", inputs: { data$: "data$", tableModel: "tableModel", showHeader$: "showHeader$", showHeader: "showHeader", trackBy: "trackBy", scrollMode$: "scrollMode$", scrollMode: "scrollMode" }, host: { properties: { "attr.scrollMode": "this.scrollMode", "class": "this.baseCssClass", "class.hide-header": "this.hideHeader", "style.--aup-table-header-height": "this.headerHeightCssVar", "style.--aup-table-row-height": "this.rowHeightCssVar" } }, viewQueries: [{ propertyName: "scrollViewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesInheritance: true, ngImport: i0, template: "\n<div class=\"classic-scroll-container\" *ngIf=\"scrollMode$.value !== 'virtual'\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\" [multiTemplateDataRows]>\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]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.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; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n<cdk-virtual-scroll-viewport *ngIf=\"scrollMode$.value === 'virtual'\"\n [tvsItemSize]=\"rowHeight$.value\"\n [headerHeight]=\"headerHeight$.value\"\n [bufferMultiplier]=\"bufferMultiplier\"\n>\n <table mat-table [dataSource]=\"virtualScrollDataSource\" [trackBy]=\"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]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.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; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</cdk-virtual-scroll-viewport>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host[scrollMode=virtual] cdk-virtual-scroll-viewport{flex:1}:host[scrollMode=virtual] table th{height:var(--aup-table-header-height);max-height:var(--aup-table-header-height);min-height:var(--aup-table-header-height)}:host[scrollMode=virtual] table td{height:var(--aup-table-row-height);max-height:var(--aup-table-row-height);min-height:var(--aup-table-row-height)}:host[scrollMode=classic]{min-height:0}:host[scrollMode=classic] .classic-scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$6.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2$6.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$6.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2$6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i1$2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i4$5.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "directive", type: TableRowAttributesDirective, selector: "[aupTableRowAttributes]", inputs: ["aupTableRowAttributes"] }, { kind: "component", type: TableCellComponent, selector: "aup-table-cell", inputs: ["row", "column", "editSession", "tableModel"] }, { kind: "component", type: TableHeaderCellComponent, selector: "aup-table-header-cell", inputs: ["column"] }] });
|
|
4278
4636
|
}
|
|
4279
4637
|
__decorate([
|
|
4280
4638
|
Proxify(),
|
|
@@ -4292,10 +4650,23 @@ __decorate([
|
|
|
4292
4650
|
StoreInValueModel(),
|
|
4293
4651
|
__metadata("design:type", Object)
|
|
4294
4652
|
], TableBodyComponent.prototype, "showHeader", null);
|
|
4653
|
+
__decorate([
|
|
4654
|
+
Proxify(),
|
|
4655
|
+
__metadata("design:type", ValueModel)
|
|
4656
|
+
], TableBodyComponent.prototype, "scrollMode$", null);
|
|
4657
|
+
__decorate([
|
|
4658
|
+
StoreInValueModel(),
|
|
4659
|
+
__metadata("design:type", String)
|
|
4660
|
+
], TableBodyComponent.prototype, "scrollMode", null);
|
|
4295
4661
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableBodyComponent, decorators: [{
|
|
4296
4662
|
type: Component,
|
|
4297
|
-
args: [{ selector: "aup-table-body", template: "<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"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]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"column\"\n [row]=\"row\"\n [tableModel]=\"tableModel\"\n [editSession]=\"tableModel.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; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host
|
|
4298
|
-
}], ctorParameters: function () { return [{ type:
|
|
4663
|
+
args: [{ selector: "aup-table-body", template: "\n<div class=\"classic-scroll-container\" *ngIf=\"scrollMode$.value !== 'virtual'\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\" [multiTemplateDataRows]>\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]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.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; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n<cdk-virtual-scroll-viewport *ngIf=\"scrollMode$.value === 'virtual'\"\n [tvsItemSize]=\"rowHeight$.value\"\n [headerHeight]=\"headerHeight$.value\"\n [bufferMultiplier]=\"bufferMultiplier\"\n>\n <table mat-table [dataSource]=\"virtualScrollDataSource\" [trackBy]=\"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]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.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; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</cdk-virtual-scroll-viewport>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host[scrollMode=virtual] cdk-virtual-scroll-viewport{flex:1}:host[scrollMode=virtual] table th{height:var(--aup-table-header-height);max-height:var(--aup-table-header-height);min-height:var(--aup-table-header-height)}:host[scrollMode=virtual] table td{height:var(--aup-table-row-height);max-height:var(--aup-table-row-height);min-height:var(--aup-table-row-height)}:host[scrollMode=classic]{min-height:0}:host[scrollMode=classic] .classic-scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"] }]
|
|
4664
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
4665
|
+
type: Inject,
|
|
4666
|
+
args: [AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER]
|
|
4667
|
+
}, {
|
|
4668
|
+
type: Optional
|
|
4669
|
+
}] }]; }, propDecorators: { data$: [{
|
|
4299
4670
|
type: Input
|
|
4300
4671
|
}], tableModel: [{
|
|
4301
4672
|
type: Input
|
|
@@ -4303,21 +4674,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
4303
4674
|
type: Input
|
|
4304
4675
|
}], showHeader: [{
|
|
4305
4676
|
type: Input
|
|
4306
|
-
}], visibleRowCount: [{
|
|
4307
|
-
type: Output
|
|
4308
4677
|
}], trackBy: [{
|
|
4309
4678
|
type: Input
|
|
4310
|
-
}],
|
|
4679
|
+
}], scrollMode$: [{
|
|
4680
|
+
type: Input
|
|
4681
|
+
}], scrollMode: [{
|
|
4311
4682
|
type: Input
|
|
4312
4683
|
}, {
|
|
4313
4684
|
type: HostBinding,
|
|
4314
|
-
args: ["
|
|
4685
|
+
args: ["attr.scrollMode"]
|
|
4686
|
+
}], scrollViewport: [{
|
|
4687
|
+
type: ViewChild,
|
|
4688
|
+
args: [CdkVirtualScrollViewport]
|
|
4315
4689
|
}], baseCssClass: [{
|
|
4316
4690
|
type: HostBinding,
|
|
4317
4691
|
args: ["class"]
|
|
4318
4692
|
}], hideHeader: [{
|
|
4319
4693
|
type: HostBinding,
|
|
4320
4694
|
args: ["class.hide-header"]
|
|
4695
|
+
}], headerHeightCssVar: [{
|
|
4696
|
+
type: HostBinding,
|
|
4697
|
+
args: ["style.--aup-table-header-height"]
|
|
4698
|
+
}], rowHeightCssVar: [{
|
|
4699
|
+
type: HostBinding,
|
|
4700
|
+
args: ["style.--aup-table-row-height"]
|
|
4321
4701
|
}] } });
|
|
4322
4702
|
|
|
4323
4703
|
class TableMoreMenuPopupComponent extends DisposableComponent {
|
|
@@ -4438,8 +4818,10 @@ class TableFilterModel extends GarbageCollector {
|
|
|
4438
4818
|
this.useSearchText(options.searchText$);
|
|
4439
4819
|
this.useRowPredicate(options.predicate$);
|
|
4440
4820
|
const { chain } = Dsl.disposeWith(this);
|
|
4441
|
-
const textSearchRegex$ = chain(this._searchText$)
|
|
4442
|
-
|
|
4821
|
+
const textSearchRegex$ = chain(this._searchText$)
|
|
4822
|
+
.debounce(250)
|
|
4823
|
+
.map(text => {
|
|
4824
|
+
return isEmpty(text) ? undefined : new RegExp(escapeStringRegexp(text), "i");
|
|
4443
4825
|
}, { allowNil: true });
|
|
4444
4826
|
this._rowPredicate = chain(this._rowPredicate$)
|
|
4445
4827
|
.map(predicate => {
|
|
@@ -4647,28 +5029,14 @@ class TableComponent extends AbstractTableComponent {
|
|
|
4647
5029
|
#filterModel_accessor_storage = proxify((TableFilterModel));
|
|
4648
5030
|
get filterModel() { return this.#filterModel_accessor_storage; }
|
|
4649
5031
|
set filterModel(value) { this.#filterModel_accessor_storage = value; }
|
|
4650
|
-
|
|
4651
|
-
get enablePaging$() { return this.#enablePaging$_accessor_storage; }
|
|
4652
|
-
set enablePaging$(value) { this.#enablePaging$_accessor_storage = value; }
|
|
4653
|
-
#enablePaging_accessor_storage = false;
|
|
4654
|
-
get enablePaging() { return this.#enablePaging_accessor_storage; }
|
|
4655
|
-
set enablePaging(value) { this.#enablePaging_accessor_storage = value; }
|
|
4656
|
-
// enablePaging() {
|
|
4657
|
-
// if (isNil(this.pageController)) {
|
|
4658
|
-
// const pagedListModel = this.registerDisposable(PagedListModel.create(this._visibleRows$.getDelegate(), this._pageSize));
|
|
4659
|
-
// this._visibleRows$.setDelegate(pagedListModel);
|
|
4660
|
-
// this._pageController = pagedListModel.pageController;
|
|
4661
|
-
// }
|
|
4662
|
-
// }
|
|
5032
|
+
tableBody;
|
|
4663
5033
|
_footerContentAdded = false;
|
|
4664
5034
|
_filteredRows$ = this.registerDisposable(new DelegatingListModel());
|
|
4665
|
-
|
|
4666
|
-
pagedListModel;
|
|
5035
|
+
scrollMode$;
|
|
4667
5036
|
constructor(injector) {
|
|
4668
5037
|
super(injector);
|
|
4669
|
-
const { when } = Dsl.disposeWith(this);
|
|
4670
|
-
this.
|
|
4671
|
-
when(this.enablePaging$).changes(enabled => this.configurePaging(enabled));
|
|
5038
|
+
const { chain, when } = Dsl.disposeWith(this);
|
|
5039
|
+
this.scrollMode$ = chain(this.enableScrolling$).map(enabled => enabled ? "virtual" : "none");
|
|
4672
5040
|
}
|
|
4673
5041
|
ngOnInit() {
|
|
4674
5042
|
super.ngOnInit();
|
|
@@ -4680,76 +5048,42 @@ class TableComponent extends AbstractTableComponent {
|
|
|
4680
5048
|
else {
|
|
4681
5049
|
this._filteredRows$.setDelegate(this._dataSource$);
|
|
4682
5050
|
}
|
|
4683
|
-
this.
|
|
5051
|
+
this._visibleRows$.setDelegate(this._filteredRows$);
|
|
5052
|
+
// let users of the model know what the current visible and filtered rows are for selection models and what not
|
|
4684
5053
|
this.tableModel.bindToTable(this._filteredRows$, this._visibleRows$);
|
|
4685
5054
|
}
|
|
4686
5055
|
getModel() {
|
|
4687
5056
|
return this.tableModel;
|
|
4688
5057
|
}
|
|
4689
|
-
get pageController() {
|
|
4690
|
-
// TODO: need to support external page controllers if the paging occurs to our primary data source.
|
|
4691
|
-
return this.pagedListModel.pageController;
|
|
4692
|
-
}
|
|
4693
|
-
configurePaging(enable) {
|
|
4694
|
-
if (enable) {
|
|
4695
|
-
if (!this.pagedListModel) {
|
|
4696
|
-
this.pagedListModel = PagedListModel.create(this._filteredRows$, this._pageSize);
|
|
4697
|
-
}
|
|
4698
|
-
this._visibleRows$.setDelegate(this.pagedListModel);
|
|
4699
|
-
}
|
|
4700
|
-
else {
|
|
4701
|
-
this.disposeOfPagedListModel();
|
|
4702
|
-
this._visibleRows$.setDelegate(this._filteredRows$);
|
|
4703
|
-
}
|
|
4704
|
-
}
|
|
4705
|
-
disposeOfPagedListModel() {
|
|
4706
|
-
if (this.pagedListModel) {
|
|
4707
|
-
this.pagedListModel.dispose();
|
|
4708
|
-
this.pagedListModel = null;
|
|
4709
|
-
}
|
|
4710
|
-
}
|
|
4711
5058
|
footerContentChanged($event) {
|
|
4712
5059
|
// console.log($event);
|
|
4713
5060
|
this._footerContentAdded = true;
|
|
4714
5061
|
}
|
|
4715
|
-
//@Trace()
|
|
4716
|
-
updatePageSize(count) {
|
|
4717
|
-
this._pageSize.value = count;
|
|
4718
|
-
}
|
|
4719
5062
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
4720
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableComponent, selector: "aup-table", inputs: { tableModel: "tableModel", filterModel: "filterModel"
|
|
5063
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableComponent, selector: "aup-table", inputs: { tableModel: "tableModel", filterModel: "filterModel" }, providers: [
|
|
4721
5064
|
{ provide: AbstractTableComponent, useExisting: TableComponent }
|
|
4722
|
-
], usesInheritance: true, ngImport: i0, template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"tableModel\"\n [showHeader$]=\"showHeader$\"\n [
|
|
5065
|
+
], viewQueries: [{ propertyName: "tableBody", first: true, predicate: TableBodyComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"tableModel\"\n [showHeader$]=\"showHeader$\"\n [scrollMode$]=\"scrollMode$\"\n [trackBy]=\"trackBy\"\n [aupHighlightTextModel]=\"highlightText$\"\n></aup-table-body>\n<section class=\"table-footer\">\n <div class=\"footer-content\"><ng-content select=\"[footer], [slot=footer]\"></ng-content></div>\n</section>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}aup-table-body{flex:1}.table-footer{display:flex;flex-direction:row;align-items:center}.table-footer .footer-content{flex:1}\n"], dependencies: [{ kind: "directive", type: HighlightTextModelDirective, selector: "[aupHighlightTextModel]", inputs: ["aupHighlightTextModel"] }, { kind: "component", type: TableBodyComponent, selector: "aup-table-body", inputs: ["data$", "tableModel", "showHeader$", "showHeader", "trackBy", "scrollMode$", "scrollMode"] }] });
|
|
4723
5066
|
}
|
|
4724
5067
|
__decorate([
|
|
4725
5068
|
Proxify(),
|
|
4726
|
-
__metadata("design:type",
|
|
5069
|
+
__metadata("design:type", TableModel)
|
|
4727
5070
|
], TableComponent.prototype, "tableModel", null);
|
|
4728
5071
|
__decorate([
|
|
4729
5072
|
Proxify(),
|
|
4730
5073
|
__metadata("design:type", Object)
|
|
4731
5074
|
], TableComponent.prototype, "filterModel", null);
|
|
4732
|
-
__decorate([
|
|
4733
|
-
Proxify(),
|
|
4734
|
-
__metadata("design:type", Object)
|
|
4735
|
-
], TableComponent.prototype, "enablePaging$", null);
|
|
4736
|
-
__decorate([
|
|
4737
|
-
StoreInValueModel(),
|
|
4738
|
-
__metadata("design:type", Object)
|
|
4739
|
-
], TableComponent.prototype, "enablePaging", null);
|
|
4740
5075
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableComponent, decorators: [{
|
|
4741
5076
|
type: Component,
|
|
4742
5077
|
args: [{ selector: 'aup-table', providers: [
|
|
4743
5078
|
{ provide: AbstractTableComponent, useExisting: TableComponent }
|
|
4744
|
-
], template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"tableModel\"\n [showHeader$]=\"showHeader$\"\n [
|
|
5079
|
+
], template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"tableModel\"\n [showHeader$]=\"showHeader$\"\n [scrollMode$]=\"scrollMode$\"\n [trackBy]=\"trackBy\"\n [aupHighlightTextModel]=\"highlightText$\"\n></aup-table-body>\n<section class=\"table-footer\">\n <div class=\"footer-content\"><ng-content select=\"[footer], [slot=footer]\"></ng-content></div>\n</section>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}aup-table-body{flex:1}.table-footer{display:flex;flex-direction:row;align-items:center}.table-footer .footer-content{flex:1}\n"] }]
|
|
4745
5080
|
}], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { tableModel: [{
|
|
4746
5081
|
type: Input
|
|
4747
5082
|
}], filterModel: [{
|
|
4748
5083
|
type: Input
|
|
4749
|
-
}],
|
|
4750
|
-
type:
|
|
4751
|
-
|
|
4752
|
-
type: Input
|
|
5084
|
+
}], tableBody: [{
|
|
5085
|
+
type: ViewChild,
|
|
5086
|
+
args: [TableBodyComponent]
|
|
4753
5087
|
}] } });
|
|
4754
5088
|
|
|
4755
5089
|
const SVG_HEIGHT = 60;
|
|
@@ -4930,7 +5264,7 @@ var DecoratedTreeNode;
|
|
|
4930
5264
|
}
|
|
4931
5265
|
}
|
|
4932
5266
|
__decorate([
|
|
4933
|
-
|
|
5267
|
+
MemoizeGet(),
|
|
4934
5268
|
__metadata("design:type", Array),
|
|
4935
5269
|
__metadata("design:paramtypes", [])
|
|
4936
5270
|
], Decorator.prototype, "children", null);
|
|
@@ -4983,7 +5317,7 @@ var DecoratedTreeNode;
|
|
|
4983
5317
|
__metadata("design:returntype", Array)
|
|
4984
5318
|
], Decorator.prototype, "ancestors", null);
|
|
4985
5319
|
__decorate([
|
|
4986
|
-
|
|
5320
|
+
MemoizeGet(),
|
|
4987
5321
|
__metadata("design:type", Number),
|
|
4988
5322
|
__metadata("design:paramtypes", [])
|
|
4989
5323
|
], Decorator.prototype, "depth", null);
|
|
@@ -4994,8 +5328,8 @@ class TreeLabelColumnModel extends ColumnModel {
|
|
|
4994
5328
|
expansionModel;
|
|
4995
5329
|
labelFactory = () => undefined;
|
|
4996
5330
|
iconFactory;
|
|
4997
|
-
constructor(columnId, textPropertiesProvider, expansionModel) {
|
|
4998
|
-
super(columnId, textPropertiesProvider);
|
|
5331
|
+
constructor(columnId, order, textPropertiesProvider, expansionModel) {
|
|
5332
|
+
super(columnId, order, textPropertiesProvider);
|
|
4999
5333
|
this.expansionModel = expansionModel;
|
|
5000
5334
|
this.cellRenderer(TreeLabelCellRendererComponent);
|
|
5001
5335
|
}
|
|
@@ -5063,7 +5397,7 @@ class TreeTableModel extends AbstractTableModel {
|
|
|
5063
5397
|
}
|
|
5064
5398
|
treeControlColumn(builder) {
|
|
5065
5399
|
const columnId = 'tree-label';
|
|
5066
|
-
const column = new TreeLabelColumnModel(columnId, () => this.getColumnTextProperties(columnId), this);
|
|
5400
|
+
const column = new TreeLabelColumnModel(columnId, this.columnManager, () => this.getColumnTextProperties(columnId), this);
|
|
5067
5401
|
builder(column);
|
|
5068
5402
|
this.addColumn(column);
|
|
5069
5403
|
}
|
|
@@ -5389,8 +5723,11 @@ class TreeTableComponent extends AbstractTableComponent {
|
|
|
5389
5723
|
#expansionModel_accessor_storage = proxify((TreeExpansionModel));
|
|
5390
5724
|
get expansionModel() { return this.#expansionModel_accessor_storage; }
|
|
5391
5725
|
set expansionModel(value) { this.#expansionModel_accessor_storage = value; }
|
|
5726
|
+
scrollMode$;
|
|
5392
5727
|
constructor(injector) {
|
|
5393
5728
|
super(injector);
|
|
5729
|
+
const { chain } = Dsl.disposeWith(this);
|
|
5730
|
+
this.scrollMode$ = chain(this.enableScrolling$).map(enabled => enabled ? "virtual" : "none");
|
|
5394
5731
|
}
|
|
5395
5732
|
ngOnInit() {
|
|
5396
5733
|
super.ngOnInit();
|
|
@@ -5410,7 +5747,7 @@ class TreeTableComponent extends AbstractTableComponent {
|
|
|
5410
5747
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TreeTableComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
5411
5748
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TreeTableComponent, selector: "aup-tree-table", inputs: { treeTableModel: "treeTableModel", expansionModel: "expansionModel" }, providers: [
|
|
5412
5749
|
{ provide: AbstractTableComponent, useExisting: TreeTableComponent }
|
|
5413
|
-
], usesInheritance: true, ngImport: i0, template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"treeTableModel\"\n [showHeader$]=\"showHeader$\"\n [
|
|
5750
|
+
], usesInheritance: true, ngImport: i0, template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"treeTableModel\"\n [showHeader$]=\"showHeader$\"\n [scrollMode$]=\"scrollMode$\"\n [aupHighlightTextModel]=\"highlightText$\"\n [trackBy]=\"trackBy\"\n></aup-table-body>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host::ng-deep td.mat-mdc-cell{border-top-width:0!important;border-bottom-width:0!important}:host::ng-deep td.mat-column-tree-label{width:1px}:host::ng-deep aup-table-cell-renderer[column-id=tree-label]{padding-left:8px!important}:host::ng-deep aup-tree-label-cell-renderer{flex:1}aup-table-body{flex:1}\n"], dependencies: [{ kind: "directive", type: HighlightTextModelDirective, selector: "[aupHighlightTextModel]", inputs: ["aupHighlightTextModel"] }, { kind: "component", type: TableBodyComponent, selector: "aup-table-body", inputs: ["data$", "tableModel", "showHeader$", "showHeader", "trackBy", "scrollMode$", "scrollMode"] }] });
|
|
5414
5751
|
}
|
|
5415
5752
|
__decorate([
|
|
5416
5753
|
Proxify(),
|
|
@@ -5424,7 +5761,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
5424
5761
|
type: Component,
|
|
5425
5762
|
args: [{ selector: 'aup-tree-table', providers: [
|
|
5426
5763
|
{ provide: AbstractTableComponent, useExisting: TreeTableComponent }
|
|
5427
|
-
], template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"treeTableModel\"\n [showHeader$]=\"showHeader$\"\n [
|
|
5764
|
+
], template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"treeTableModel\"\n [showHeader$]=\"showHeader$\"\n [scrollMode$]=\"scrollMode$\"\n [aupHighlightTextModel]=\"highlightText$\"\n [trackBy]=\"trackBy\"\n></aup-table-body>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host::ng-deep td.mat-mdc-cell{border-top-width:0!important;border-bottom-width:0!important}:host::ng-deep td.mat-column-tree-label{width:1px}:host::ng-deep aup-table-cell-renderer[column-id=tree-label]{padding-left:8px!important}:host::ng-deep aup-tree-label-cell-renderer{flex:1}aup-table-body{flex:1}\n"] }]
|
|
5428
5765
|
}], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { treeTableModel: [{
|
|
5429
5766
|
type: Input
|
|
5430
5767
|
}], expansionModel: [{
|
|
@@ -5606,6 +5943,7 @@ class ComponentsModule {
|
|
|
5606
5943
|
FocusableComponent,
|
|
5607
5944
|
CardContainerComponent,
|
|
5608
5945
|
TableComponent,
|
|
5946
|
+
TableRowAttributesDirective,
|
|
5609
5947
|
EditRowControlsComponent,
|
|
5610
5948
|
ColumnTemplateDirective,
|
|
5611
5949
|
DefaultCellRendererComponent,
|
|
@@ -5639,7 +5977,8 @@ class ComponentsModule {
|
|
|
5639
5977
|
MarkdownComponent,
|
|
5640
5978
|
TableBodyComponent,
|
|
5641
5979
|
TableMoreMenuComponent,
|
|
5642
|
-
TableMoreMenuPopupComponent
|
|
5980
|
+
TableMoreMenuPopupComponent,
|
|
5981
|
+
SearchInputComponent], imports: [CommonModule,
|
|
5643
5982
|
BrowserAnimationsModule,
|
|
5644
5983
|
FormsModule,
|
|
5645
5984
|
MatInputModule,
|
|
@@ -5658,7 +5997,9 @@ class ComponentsModule {
|
|
|
5658
5997
|
MatMenuModule,
|
|
5659
5998
|
MatDividerModule,
|
|
5660
5999
|
MatProgressSpinnerModule,
|
|
5661
|
-
MatProgressBarModule
|
|
6000
|
+
MatProgressBarModule,
|
|
6001
|
+
ScrollingModule,
|
|
6002
|
+
TableVirtualScrollModule], exports: [NumberInputComponent,
|
|
5662
6003
|
StringInputComponent,
|
|
5663
6004
|
TextInputComponent,
|
|
5664
6005
|
PasswordInputComponent,
|
|
@@ -5696,7 +6037,8 @@ class ComponentsModule {
|
|
|
5696
6037
|
LoadingContainerComponent,
|
|
5697
6038
|
MarkdownComponent,
|
|
5698
6039
|
TableMoreMenuComponent,
|
|
5699
|
-
TableMoreMenuPopupComponent
|
|
6040
|
+
TableMoreMenuPopupComponent,
|
|
6041
|
+
SearchInputComponent] });
|
|
5700
6042
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ComponentsModule, providers: [
|
|
5701
6043
|
FocusBindingFactory,
|
|
5702
6044
|
MarkdownService
|
|
@@ -5719,7 +6061,9 @@ class ComponentsModule {
|
|
|
5719
6061
|
MatMenuModule,
|
|
5720
6062
|
MatDividerModule,
|
|
5721
6063
|
MatProgressSpinnerModule,
|
|
5722
|
-
MatProgressBarModule
|
|
6064
|
+
MatProgressBarModule,
|
|
6065
|
+
ScrollingModule,
|
|
6066
|
+
TableVirtualScrollModule] });
|
|
5723
6067
|
}
|
|
5724
6068
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ComponentsModule, decorators: [{
|
|
5725
6069
|
type: NgModule,
|
|
@@ -5744,7 +6088,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
5744
6088
|
MatMenuModule,
|
|
5745
6089
|
MatDividerModule,
|
|
5746
6090
|
MatProgressSpinnerModule,
|
|
5747
|
-
MatProgressBarModule
|
|
6091
|
+
MatProgressBarModule,
|
|
6092
|
+
ScrollingModule,
|
|
6093
|
+
TableVirtualScrollModule
|
|
5748
6094
|
],
|
|
5749
6095
|
declarations: [
|
|
5750
6096
|
AbstractInputComponent,
|
|
@@ -5768,6 +6114,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
5768
6114
|
FocusableComponent,
|
|
5769
6115
|
CardContainerComponent,
|
|
5770
6116
|
TableComponent,
|
|
6117
|
+
TableRowAttributesDirective,
|
|
5771
6118
|
EditRowControlsComponent,
|
|
5772
6119
|
ColumnTemplateDirective,
|
|
5773
6120
|
DefaultCellRendererComponent,
|
|
@@ -5802,6 +6149,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
5802
6149
|
TableBodyComponent,
|
|
5803
6150
|
TableMoreMenuComponent,
|
|
5804
6151
|
TableMoreMenuPopupComponent,
|
|
6152
|
+
SearchInputComponent
|
|
5805
6153
|
],
|
|
5806
6154
|
exports: [
|
|
5807
6155
|
NumberInputComponent,
|
|
@@ -5843,6 +6191,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
5843
6191
|
MarkdownComponent,
|
|
5844
6192
|
TableMoreMenuComponent,
|
|
5845
6193
|
TableMoreMenuPopupComponent,
|
|
6194
|
+
SearchInputComponent
|
|
5846
6195
|
],
|
|
5847
6196
|
providers: [
|
|
5848
6197
|
FocusBindingFactory,
|
|
@@ -5851,6 +6200,67 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
5851
6200
|
}]
|
|
5852
6201
|
}] });
|
|
5853
6202
|
|
|
6203
|
+
class LoadableComponent extends DisposableComponent {
|
|
6204
|
+
#_loaded$ = new MutableValueModel();
|
|
6205
|
+
#asyncLoadables = [];
|
|
6206
|
+
#awaitedLoadables = [];
|
|
6207
|
+
get loaded$() {
|
|
6208
|
+
return this.#_loaded$.readonly$;
|
|
6209
|
+
}
|
|
6210
|
+
ngOnInit() {
|
|
6211
|
+
super.ngOnInit();
|
|
6212
|
+
this.#asyncLoadables.forEach(it => it.ensureLoaded());
|
|
6213
|
+
if (this.#awaitedLoadables.length > 0) {
|
|
6214
|
+
Promise.all(this.#awaitedLoadables.map(it => {
|
|
6215
|
+
return it.ensureLoaded(); //.then(() => console.log(`${it.constructor.name} loaded`));
|
|
6216
|
+
})).then(() => {
|
|
6217
|
+
this.#_loaded$.value = true;
|
|
6218
|
+
});
|
|
6219
|
+
}
|
|
6220
|
+
else {
|
|
6221
|
+
this.#_loaded$.value = true;
|
|
6222
|
+
}
|
|
6223
|
+
}
|
|
6224
|
+
injectLoadable(token, options) {
|
|
6225
|
+
return this.registerLoadable(inject(token), options);
|
|
6226
|
+
}
|
|
6227
|
+
registerLoadable(loadable, options) {
|
|
6228
|
+
if (this.loaded$.value) {
|
|
6229
|
+
loadable.ensureLoaded();
|
|
6230
|
+
}
|
|
6231
|
+
else {
|
|
6232
|
+
if (!options || options.wait === true) {
|
|
6233
|
+
this.#awaitedLoadables.push(loadable);
|
|
6234
|
+
}
|
|
6235
|
+
else {
|
|
6236
|
+
this.#asyncLoadables.push(loadable);
|
|
6237
|
+
}
|
|
6238
|
+
}
|
|
6239
|
+
return loadable;
|
|
6240
|
+
}
|
|
6241
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: LoadableComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
6242
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: LoadableComponent, usesInheritance: true, ngImport: i0 });
|
|
6243
|
+
}
|
|
6244
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: LoadableComponent, decorators: [{
|
|
6245
|
+
type: Directive
|
|
6246
|
+
}] });
|
|
6247
|
+
|
|
6248
|
+
class TextSearchContext {
|
|
6249
|
+
row;
|
|
6250
|
+
searchText;
|
|
6251
|
+
searchRegex;
|
|
6252
|
+
constructor(row, searchText, searchRegex) {
|
|
6253
|
+
this.row = row;
|
|
6254
|
+
this.searchText = searchText;
|
|
6255
|
+
this.searchRegex = searchRegex;
|
|
6256
|
+
}
|
|
6257
|
+
getOrCreate(type, create) {
|
|
6258
|
+
}
|
|
6259
|
+
matchesText(text) {
|
|
6260
|
+
return this.searchRegex.test(text);
|
|
6261
|
+
}
|
|
6262
|
+
}
|
|
6263
|
+
|
|
5854
6264
|
/**
|
|
5855
6265
|
* @file Automatically generated by barrelsby.
|
|
5856
6266
|
*/
|
|
@@ -5877,7 +6287,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
5877
6287
|
* </aup-activity-actions>
|
|
5878
6288
|
*/
|
|
5879
6289
|
class ActivityActionsComponent extends DisposableComponent {
|
|
5880
|
-
cdr;
|
|
5881
6290
|
confirmCommandComponent;
|
|
5882
6291
|
cancelCommandComponent;
|
|
5883
6292
|
#confirmCommand_accessor_storage = proxify((Command));
|
|
@@ -5906,9 +6315,8 @@ class ActivityActionsComponent extends DisposableComponent {
|
|
|
5906
6315
|
}
|
|
5907
6316
|
layout = ActivityActionsComponent.Layout.BLOCK;
|
|
5908
6317
|
align = ActivityActionsComponent.Align.STRETCH;
|
|
5909
|
-
constructor(
|
|
6318
|
+
constructor() {
|
|
5910
6319
|
super();
|
|
5911
|
-
this.cdr = cdr;
|
|
5912
6320
|
}
|
|
5913
6321
|
hasConfirmFace() {
|
|
5914
6322
|
return !!this.confirmFace;
|
|
@@ -5927,8 +6335,8 @@ class ActivityActionsComponent extends DisposableComponent {
|
|
|
5927
6335
|
focusCancel() {
|
|
5928
6336
|
this.cancelCommandComponent.requestFocus();
|
|
5929
6337
|
}
|
|
5930
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityActionsComponent, deps: [
|
|
5931
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", 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=\"
|
|
6338
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6339
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", 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=\"hasCancelFace()\">\n <aup-command #cancelCommandComponent class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\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", 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"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }] });
|
|
5932
6340
|
}
|
|
5933
6341
|
__decorate([
|
|
5934
6342
|
Proxify(),
|
|
@@ -5940,8 +6348,8 @@ __decorate([
|
|
|
5940
6348
|
], ActivityActionsComponent.prototype, "cancelCommand", null);
|
|
5941
6349
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityActionsComponent, decorators: [{
|
|
5942
6350
|
type: Component,
|
|
5943
|
-
args: [{ selector: 'aup-activity-actions', template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"
|
|
5944
|
-
}], ctorParameters: function () { return [
|
|
6351
|
+
args: [{ selector: 'aup-activity-actions', template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\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<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command #confirmCommandComponent class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-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"] }]
|
|
6352
|
+
}], ctorParameters: function () { return []; }, propDecorators: { confirmCommandComponent: [{
|
|
5945
6353
|
type: ViewChild,
|
|
5946
6354
|
args: ["confirmCommandComponent"]
|
|
5947
6355
|
}], cancelCommandComponent: [{
|
|
@@ -5984,7 +6392,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
5984
6392
|
|
|
5985
6393
|
const ACTIVITY_DATA = new InjectionToken("InteractionActivityData");
|
|
5986
6394
|
// eslint-disable-next-line @angular-eslint/component-class-suffix
|
|
5987
|
-
class Activity extends
|
|
6395
|
+
class Activity extends LoadableComponent {
|
|
5988
6396
|
activityData = inject(ACTIVITY_DATA);
|
|
5989
6397
|
activityReadyListeners = new EventListenerList();
|
|
5990
6398
|
_busy$ = this.registerDisposable(new DelegatingValueModel().withDefault(false));
|
|
@@ -6039,7 +6447,6 @@ class Activity extends DisposableComponent {
|
|
|
6039
6447
|
notifyActivityReady() {
|
|
6040
6448
|
this.activityReadyListeners.fire(l => l(this));
|
|
6041
6449
|
this._ready$.value = true;
|
|
6042
|
-
console.log("ready");
|
|
6043
6450
|
}
|
|
6044
6451
|
onActivityReady(callback) {
|
|
6045
6452
|
return this.activityReadyListeners.add(callback);
|
|
@@ -6159,7 +6566,7 @@ class AbstractDialogComponent extends Activity {
|
|
|
6159
6566
|
}
|
|
6160
6567
|
}
|
|
6161
6568
|
isDestructive() {
|
|
6162
|
-
return isFunction
|
|
6569
|
+
return isFunction(this.config['destructive']) && this.config["destructive"]();
|
|
6163
6570
|
}
|
|
6164
6571
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractDialogComponent, deps: [{ token: ALERT_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
|
|
6165
6572
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractDialogComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
@@ -6176,6 +6583,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
6176
6583
|
|
|
6177
6584
|
class AbstractConfirmDialogComponent extends AbstractDialogComponent {
|
|
6178
6585
|
cancelFace;
|
|
6586
|
+
confirmClass = "aup-confirm-activity";
|
|
6179
6587
|
constructor(config) {
|
|
6180
6588
|
super(config);
|
|
6181
6589
|
this.cancelFace = {
|
|
@@ -6186,7 +6594,7 @@ class AbstractConfirmDialogComponent extends AbstractDialogComponent {
|
|
|
6186
6594
|
});
|
|
6187
6595
|
}
|
|
6188
6596
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractConfirmDialogComponent, deps: [{ token: ALERT_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
|
|
6189
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractConfirmDialogComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
6597
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractConfirmDialogComponent, selector: "ng-component", host: { properties: { "class": "this.confirmClass" } }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
6190
6598
|
}
|
|
6191
6599
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractConfirmDialogComponent, decorators: [{
|
|
6192
6600
|
type: Component,
|
|
@@ -6196,7 +6604,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
6196
6604
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
6197
6605
|
type: Inject,
|
|
6198
6606
|
args: [ALERT_CONFIG]
|
|
6199
|
-
}] }]; }
|
|
6607
|
+
}] }]; }, propDecorators: { confirmClass: [{
|
|
6608
|
+
type: HostBinding,
|
|
6609
|
+
args: ["class"]
|
|
6610
|
+
}] } });
|
|
6200
6611
|
|
|
6201
6612
|
class ActivityBodyComponent extends DisposableComponent {
|
|
6202
6613
|
fullWidth = false;
|
|
@@ -6735,7 +7146,7 @@ const ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');
|
|
|
6735
7146
|
// return true;
|
|
6736
7147
|
// }
|
|
6737
7148
|
// }
|
|
6738
|
-
class PlaceComponent extends
|
|
7149
|
+
class PlaceComponent extends LoadableComponent {
|
|
6739
7150
|
_placeReadyCallbacks = [];
|
|
6740
7151
|
visitModel = new MutableValueModel();
|
|
6741
7152
|
_inVisitUpdate = new Guard();
|
|
@@ -6792,6 +7203,7 @@ class PlaceComponent extends DisposableComponent {
|
|
|
6792
7203
|
*/
|
|
6793
7204
|
installAndInitialiseBinding(initialVisit, parameterDef) {
|
|
6794
7205
|
const model = this[parameterDef.propertyName];
|
|
7206
|
+
assert.notNil(model);
|
|
6795
7207
|
DebugContext.tag(model, `${this.placeDefinition.component.name}.${parameterDef.propertyName}`);
|
|
6796
7208
|
const binding = this.registerDisposable(new Binding(this.visitModel, model, {
|
|
6797
7209
|
toRight(visit) {
|
|
@@ -6876,7 +7288,7 @@ class PlaceComponent extends DisposableComponent {
|
|
|
6876
7288
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: PlaceComponent, usesInheritance: true, ngImport: i0 });
|
|
6877
7289
|
}
|
|
6878
7290
|
__decorate([
|
|
6879
|
-
|
|
7291
|
+
MemoizeGet(),
|
|
6880
7292
|
__metadata("design:type", PlaceDefinition),
|
|
6881
7293
|
__metadata("design:paramtypes", [])
|
|
6882
7294
|
], PlaceComponent.prototype, "placeDefinition", null);
|
|
@@ -7066,7 +7478,7 @@ class Visit {
|
|
|
7066
7478
|
getRouterCommands() {
|
|
7067
7479
|
return this.segments.reduce((result, v) => {
|
|
7068
7480
|
const path = v.placeDefinition.path;
|
|
7069
|
-
return isEmpty
|
|
7481
|
+
return isEmpty(path) ?
|
|
7070
7482
|
[...result, path] : // Angular doesn't support route params on empty path segments
|
|
7071
7483
|
[...result, path, ...v.createRouterCommands()];
|
|
7072
7484
|
}, []);
|
|
@@ -7082,7 +7494,7 @@ class Visit {
|
|
|
7082
7494
|
}
|
|
7083
7495
|
}
|
|
7084
7496
|
__decorate([
|
|
7085
|
-
Memoize
|
|
7497
|
+
Memoize(),
|
|
7086
7498
|
__metadata("design:type", Function),
|
|
7087
7499
|
__metadata("design:paramtypes", [PlaceDefinition]),
|
|
7088
7500
|
__metadata("design:returntype", VisitSegment)
|
|
@@ -7463,10 +7875,7 @@ class SynchroniseInteractionContextIdsWithRoute extends NavigationSession {
|
|
|
7463
7875
|
return true;
|
|
7464
7876
|
}
|
|
7465
7877
|
notifyActive() {
|
|
7466
|
-
|
|
7467
|
-
setTimeout(() => {
|
|
7468
|
-
this.syncInteractionIdsWithRouter();
|
|
7469
|
-
});
|
|
7878
|
+
this.syncInteractionIdsWithRouter();
|
|
7470
7879
|
}
|
|
7471
7880
|
// @Trace()
|
|
7472
7881
|
onRouterEnd(event) {
|
|
@@ -8209,7 +8618,7 @@ class ConsolidatedParameterMap {
|
|
|
8209
8618
|
}
|
|
8210
8619
|
}
|
|
8211
8620
|
__decorate([
|
|
8212
|
-
|
|
8621
|
+
MemoizeGet(),
|
|
8213
8622
|
__metadata("design:type", Array),
|
|
8214
8623
|
__metadata("design:paramtypes", [])
|
|
8215
8624
|
], ConsolidatedParameterMap.prototype, "keys", null);
|
|
@@ -8287,7 +8696,7 @@ class UrlSnapshot {
|
|
|
8287
8696
|
return this.getPrimaryUrlSegments().find(s => s.path === placeDef.path);
|
|
8288
8697
|
}
|
|
8289
8698
|
isLastPlaceInUrl(placeDef) {
|
|
8290
|
-
return last
|
|
8699
|
+
return last(this.getPrimaryUrlSegments()).path === placeDef.path;
|
|
8291
8700
|
}
|
|
8292
8701
|
createVisitSegmentFor(placeDef) {
|
|
8293
8702
|
return new VisitSegment(placeDef, new ConsolidatedParameterMap(this.getPrimaryUrlSegments()));
|
|
@@ -8743,11 +9152,11 @@ class ActivityTitleComponent extends DisposableComponent {
|
|
|
8743
9152
|
return this._color;
|
|
8744
9153
|
}
|
|
8745
9154
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityTitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
8746
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ActivityTitleComponent, selector: "aup-activity-title", inputs: { hasTransparentBackground: "hasTransparentBackground", color: "color" }, host: { properties: { "class.transparent-background": "this.hasTransparentBackground", "attr.color": "this.color" } }, usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:
|
|
9155
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ActivityTitleComponent, selector: "aup-activity-title", inputs: { hasTransparentBackground: "hasTransparentBackground", color: "color" }, host: { properties: { "class.transparent-background": "this.hasTransparentBackground", "attr.color": "this.color" } }, usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n<span style=\"flex:1\"></span>\n<ng-content select=\"[slot='title-end']\"></ng-content>\n", styles: [":host{display:flex;flex-direction:row;align-items:center}\n"] });
|
|
8747
9156
|
}
|
|
8748
9157
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityTitleComponent, decorators: [{
|
|
8749
9158
|
type: Component,
|
|
8750
|
-
args: [{ selector: 'aup-activity-title', template: "<ng-content></ng-content>\n", styles: [":host{display:
|
|
9159
|
+
args: [{ selector: 'aup-activity-title', template: "<ng-content></ng-content>\n<span style=\"flex:1\"></span>\n<ng-content select=\"[slot='title-end']\"></ng-content>\n", styles: [":host{display:flex;flex-direction:row;align-items:center}\n"] }]
|
|
8751
9160
|
}], propDecorators: { hasTransparentBackground: [{
|
|
8752
9161
|
type: Input
|
|
8753
9162
|
}, {
|
|
@@ -9012,6 +9421,7 @@ class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
9012
9421
|
tabs;
|
|
9013
9422
|
activityOutlets;
|
|
9014
9423
|
activityRefs = [];
|
|
9424
|
+
animationDuration = "500ms";
|
|
9015
9425
|
_identifier;
|
|
9016
9426
|
_deferredCleanUp;
|
|
9017
9427
|
interactionServiceApi;
|
|
@@ -9024,6 +9434,7 @@ class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
9024
9434
|
busy = this.registerDisposable(new DelegatingValueModel().withDefault(false));
|
|
9025
9435
|
syncTabsJob = undefined;
|
|
9026
9436
|
stable$;
|
|
9437
|
+
wasActive = false;
|
|
9027
9438
|
constructor(placeRouter) {
|
|
9028
9439
|
super();
|
|
9029
9440
|
this.placeRouter = placeRouter;
|
|
@@ -9060,7 +9471,12 @@ class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
9060
9471
|
* Returns true if an activity is currently running.
|
|
9061
9472
|
*/
|
|
9062
9473
|
isActive() {
|
|
9063
|
-
|
|
9474
|
+
const isActive = this.getActiveActivityCount() > 0;
|
|
9475
|
+
// if (this.wasActive !== isActive) {
|
|
9476
|
+
// console.log({was: this.wasActive, is: isActive});
|
|
9477
|
+
// }
|
|
9478
|
+
// this.wasActive = isActive
|
|
9479
|
+
return isActive;
|
|
9064
9480
|
}
|
|
9065
9481
|
registerDisposable(disposable) {
|
|
9066
9482
|
return this.garbage.registerDisposable(disposable);
|
|
@@ -9143,7 +9559,7 @@ class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
9143
9559
|
// by activity index)
|
|
9144
9560
|
setTimeout(() => {
|
|
9145
9561
|
this.activityRefs = []; // we have to do it after the animation timeout or the activity disappears before the animatin finsihes
|
|
9146
|
-
}, this.
|
|
9562
|
+
}, this.getTabAnimationDurationInMillis());
|
|
9147
9563
|
const promise = this.interactionServiceApi.notifyFinished(this);
|
|
9148
9564
|
this._deferredCleanUp = promise
|
|
9149
9565
|
.finally(() => {
|
|
@@ -9169,7 +9585,6 @@ class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
9169
9585
|
/**
|
|
9170
9586
|
* Synchronises the selected tab index.
|
|
9171
9587
|
*/
|
|
9172
|
-
// @Trace()
|
|
9173
9588
|
synchroniseSelectedTabIndex() {
|
|
9174
9589
|
assert.isTruthy(this.isActive());
|
|
9175
9590
|
const previousIndex = this.tabs.selectedIndex;
|
|
@@ -9181,10 +9596,10 @@ class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
9181
9596
|
activityRef.setFocused(false);
|
|
9182
9597
|
this.busy.setDelegate(activityRef.activityBusy);
|
|
9183
9598
|
this.tabs.selectedIndex = newIndex;
|
|
9184
|
-
if (this.ready$.value) {
|
|
9185
|
-
|
|
9186
|
-
|
|
9187
|
-
}
|
|
9599
|
+
// if (this.ready$.value) {
|
|
9600
|
+
// // Note: We're not using the animation done event as it's firing almost immeadiately.
|
|
9601
|
+
// setTimeout(() => this.finaliseActivityStates(), animate ? this.getTabAnimationDurationInMillis() : 0);
|
|
9602
|
+
// }
|
|
9188
9603
|
}
|
|
9189
9604
|
}
|
|
9190
9605
|
finaliseActivityStates() {
|
|
@@ -9198,7 +9613,12 @@ class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
9198
9613
|
return this.activityOutlets.toArray()[this.tabs.selectedIndex];
|
|
9199
9614
|
}
|
|
9200
9615
|
getTabAnimationDuration() {
|
|
9201
|
-
const
|
|
9616
|
+
// const s = this._started$.value ? this.animationDuration : "0";
|
|
9617
|
+
// return s
|
|
9618
|
+
return this.animationDuration;
|
|
9619
|
+
}
|
|
9620
|
+
getTabAnimationDurationInMillis() {
|
|
9621
|
+
const match = this.animationDuration.match(/(\d+)(.*)/);
|
|
9202
9622
|
const numericValue = parseFloat(match[1]);
|
|
9203
9623
|
switch (match[2].trim()) {
|
|
9204
9624
|
case "ms":
|
|
@@ -9224,12 +9644,16 @@ class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
9224
9644
|
}
|
|
9225
9645
|
}, 75);
|
|
9226
9646
|
}
|
|
9647
|
+
onAnimationDone() {
|
|
9648
|
+
this._started$.value = true;
|
|
9649
|
+
this.finaliseActivityStates();
|
|
9650
|
+
}
|
|
9227
9651
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityContainerComponent, deps: [{ token: PlaceRouter }], target: i0.ɵɵFactoryTarget.Component });
|
|
9228
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ActivityContainerComponent, selector: "aup-activity-container", inputs: { dynamicHeight: "dynamicHeight" }, viewQueries: [{ propertyName: "tabs", first: true, predicate: ["tabs"], descendants: true, static: true }, { propertyName: "activityOutlets", predicate: ActivityOutletComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busy$]=\"busy\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}.activity-outlet-wrapper{flex:1}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3$1.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i3$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "component", type: BusyOverlayComponent, selector: "aup-busy-overlay", inputs: ["busy$", "busy"] }, { kind: "directive", type: i5$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: ActivityOutletComponent, selector: "aup-activity-outlet", inputs: ["nestedInteractionContext", "activityRef"] }] });
|
|
9652
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ActivityContainerComponent, selector: "aup-activity-container", inputs: { dynamicHeight: "dynamicHeight", animationDuration: "animationDuration" }, viewQueries: [{ propertyName: "tabs", first: true, predicate: ["tabs"], descendants: true, static: true }, { propertyName: "activityOutlets", predicate: ActivityOutletComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\"\n [animationDuration]=\"getTabAnimationDuration()\"\n (animationDone)=\"onAnimationDone()\"\n>\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busy$]=\"busy\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}.activity-outlet-wrapper{flex:1}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3$1.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i3$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "component", type: BusyOverlayComponent, selector: "aup-busy-overlay", inputs: ["busy$", "busy"] }, { kind: "directive", type: i5$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: ActivityOutletComponent, selector: "aup-activity-outlet", inputs: ["nestedInteractionContext", "activityRef"] }] });
|
|
9229
9653
|
}
|
|
9230
9654
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityContainerComponent, decorators: [{
|
|
9231
9655
|
type: Component,
|
|
9232
|
-
args: [{ selector: "aup-activity-container", template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busy$]=\"busy\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}.activity-outlet-wrapper{flex:1}\n"] }]
|
|
9656
|
+
args: [{ selector: "aup-activity-container", template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\"\n [animationDuration]=\"getTabAnimationDuration()\"\n (animationDone)=\"onAnimationDone()\"\n>\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busy$]=\"busy\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}.activity-outlet-wrapper{flex:1}\n"] }]
|
|
9233
9657
|
}], ctorParameters: function () { return [{ type: PlaceRouter }]; }, propDecorators: { dynamicHeight: [{
|
|
9234
9658
|
type: Input
|
|
9235
9659
|
}], tabs: [{
|
|
@@ -9238,6 +9662,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
9238
9662
|
}], activityOutlets: [{
|
|
9239
9663
|
type: ViewChildren,
|
|
9240
9664
|
args: [ActivityOutletComponent]
|
|
9665
|
+
}], animationDuration: [{
|
|
9666
|
+
type: Input
|
|
9241
9667
|
}] } });
|
|
9242
9668
|
|
|
9243
9669
|
class AbstractActivityTriggerComponent extends DisposableComponent {
|
|
@@ -9338,14 +9764,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
9338
9764
|
args: ['class.active']
|
|
9339
9765
|
}] } });
|
|
9340
9766
|
|
|
9341
|
-
const cssDurationRegex = /(\d+)(m?s)/;
|
|
9767
|
+
const cssDurationRegex$1 = /(\d+)(m?s)/;
|
|
9342
9768
|
/**
|
|
9343
9769
|
* @example
|
|
9344
9770
|
* <aup-in-place-interaction-context #inPlaceInteractionContext>
|
|
9345
9771
|
* </aup-in-place-interaction-context>
|
|
9346
9772
|
*
|
|
9347
9773
|
* in your component
|
|
9348
|
-
* @ViewChild(
|
|
9774
|
+
* @ViewChild(InPlaceInteractionContextComponent)
|
|
9349
9775
|
* interactionContext: InteractionContext;
|
|
9350
9776
|
*
|
|
9351
9777
|
*
|
|
@@ -9368,7 +9794,7 @@ class InPlaceInteractionContextComponent extends DisposableComponent {
|
|
|
9368
9794
|
return this.animateFirstActivity ? (this.tabConfig?.animationDuration || "500ms") : "0ms";
|
|
9369
9795
|
}
|
|
9370
9796
|
get animationDurationMillis() {
|
|
9371
|
-
const result = cssDurationRegex.exec(this.animationDuration);
|
|
9797
|
+
const result = cssDurationRegex$1.exec(this.animationDuration);
|
|
9372
9798
|
if (!result) {
|
|
9373
9799
|
lang.illegalState(`unsupported css duration: ${this.animationDuration}`);
|
|
9374
9800
|
}
|
|
@@ -9441,7 +9867,7 @@ class InPlaceInteractionContextComponent extends DisposableComponent {
|
|
|
9441
9867
|
}
|
|
9442
9868
|
}
|
|
9443
9869
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InPlaceInteractionContextComponent, deps: [{ token: MAT_TABS_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
9444
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: { animateFirstActivity: "animateFirstActivity", syncWithRoutes: "syncWithRoutes" }, host: { properties: { "class.active": "this.active" } }, viewQueries: [{ propertyName: "activityContainerComponent", first: true, predicate: ["activityContainer"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group no-tab-header [selectedIndex]=\"isActive() ? 1 : 0\" full-height-tabs\n (selectedTabChange)=\"onTabChanged($event)\"\n [dynamicHeight]=\"false\"\n [animationDuration]=\"animationDuration\">\n <mat-tab>\n <ng-content></ng-content>\n </mat-tab>\n <mat-tab>\n <aup-activity-container #activityContainer [dynamicHeight]=\"false\"></aup-activity-container>\n </mat-tab>\n</mat-tab-group>\n\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-activity-container{flex:1}\n"], dependencies: [{ kind: "component", type: i3$1.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i3$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "component", type: ActivityContainerComponent, selector: "aup-activity-container", inputs: ["dynamicHeight"] }] });
|
|
9870
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: { animateFirstActivity: "animateFirstActivity", syncWithRoutes: "syncWithRoutes" }, host: { properties: { "class.active": "this.active" } }, viewQueries: [{ propertyName: "activityContainerComponent", first: true, predicate: ["activityContainer"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group no-tab-header [selectedIndex]=\"isActive() ? 1 : 0\" full-height-tabs\n (selectedTabChange)=\"onTabChanged($event)\"\n [dynamicHeight]=\"false\"\n [animationDuration]=\"animationDuration\">\n <mat-tab>\n <ng-content></ng-content>\n </mat-tab>\n <mat-tab>\n <aup-activity-container #activityContainer [dynamicHeight]=\"false\"></aup-activity-container>\n </mat-tab>\n</mat-tab-group>\n\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-activity-container{flex:1}\n"], dependencies: [{ kind: "component", type: i3$1.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i3$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "component", type: ActivityContainerComponent, selector: "aup-activity-container", inputs: ["dynamicHeight", "animationDuration"] }] });
|
|
9445
9871
|
}
|
|
9446
9872
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InPlaceInteractionContextComponent, decorators: [{
|
|
9447
9873
|
type: Component,
|
|
@@ -9910,12 +10336,14 @@ class StringInputActivity extends InputActivity {
|
|
|
9910
10336
|
[label]="activityData.label"
|
|
9911
10337
|
[placeholder]="activityData.placeholder"
|
|
9912
10338
|
[command.enter]="confirmCommand"
|
|
9913
|
-
[command.escape]="cancelCommand"
|
|
10339
|
+
[command.escape]="cancelCommand"
|
|
10340
|
+
[dense]="true"
|
|
10341
|
+
></aup-string-input>
|
|
9914
10342
|
<aup-activity-actions [layout]="layout" align="end"
|
|
9915
10343
|
[confirmFace]="confirmFace"
|
|
9916
10344
|
[cancelFace]="cancelFace"
|
|
9917
10345
|
></aup-activity-actions>
|
|
9918
|
-
`, isInline: true, dependencies: [{ kind: "component", type: StringInputComponent, selector: "aup-string-input", inputs: ["autocomplete", "enableClear$", "enableClear", "iconPrefix"] }, { kind: "component", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: ["confirmCommand", "cancelCommand", "faces", "confirmFace", "cancelFace", "style", "layout", "align"] }] });
|
|
10346
|
+
`, isInline: true, dependencies: [{ kind: "component", type: StringInputComponent, selector: "aup-string-input", inputs: ["autocomplete", "enableClear$", "enableClear", "iconPrefix", "suffixCommand"] }, { kind: "component", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: ["confirmCommand", "cancelCommand", "faces", "confirmFace", "cancelFace", "style", "layout", "align"] }] });
|
|
9919
10347
|
}
|
|
9920
10348
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: StringInputActivity, decorators: [{
|
|
9921
10349
|
type: Component,
|
|
@@ -9926,7 +10354,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
9926
10354
|
[label]="activityData.label"
|
|
9927
10355
|
[placeholder]="activityData.placeholder"
|
|
9928
10356
|
[command.enter]="confirmCommand"
|
|
9929
|
-
[command.escape]="cancelCommand"
|
|
10357
|
+
[command.escape]="cancelCommand"
|
|
10358
|
+
[dense]="true"
|
|
10359
|
+
></aup-string-input>
|
|
9930
10360
|
<aup-activity-actions [layout]="layout" align="end"
|
|
9931
10361
|
[confirmFace]="confirmFace"
|
|
9932
10362
|
[cancelFace]="cancelFace"
|
|
@@ -10192,6 +10622,7 @@ class SelectInputActivity extends InputActivity {
|
|
|
10192
10622
|
[options]="options"
|
|
10193
10623
|
[optionLabelFormat]="optionLabelFormat"
|
|
10194
10624
|
[allowNil]="activityData.allowNil"
|
|
10625
|
+
[dense]="true"
|
|
10195
10626
|
>
|
|
10196
10627
|
<ng-template #nilOptionTemplate>{{activityData.nilLabel}}</ng-template>
|
|
10197
10628
|
</aup-select-input>
|
|
@@ -10214,6 +10645,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
10214
10645
|
[options]="options"
|
|
10215
10646
|
[optionLabelFormat]="optionLabelFormat"
|
|
10216
10647
|
[allowNil]="activityData.allowNil"
|
|
10648
|
+
[dense]="true"
|
|
10217
10649
|
>
|
|
10218
10650
|
<ng-template #nilOptionTemplate>{{activityData.nilLabel}}</ng-template>
|
|
10219
10651
|
</aup-select-input>
|
|
@@ -10225,6 +10657,182 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
10225
10657
|
}]
|
|
10226
10658
|
}] });
|
|
10227
10659
|
|
|
10660
|
+
const slideDownOnEnterDef = style({
|
|
10661
|
+
opacity: 0,
|
|
10662
|
+
'height': '0',
|
|
10663
|
+
'max-height': '0',
|
|
10664
|
+
paddingTop: '0',
|
|
10665
|
+
paddingBottom: '0'
|
|
10666
|
+
});
|
|
10667
|
+
// TODO: params aren't getting customised in the view. Need to figure out the correct approach.
|
|
10668
|
+
const slideDownOnEnterAnimation = trigger('slideDownOnEnter', [
|
|
10669
|
+
transition(':enter', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
10670
|
+
transition(':leave', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })
|
|
10671
|
+
]);
|
|
10672
|
+
const slideDownWhenOpenAnimation = trigger('slideDownWhenOpen', [
|
|
10673
|
+
transition('closed => open', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
10674
|
+
transition('open => closed', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })
|
|
10675
|
+
]);
|
|
10676
|
+
const slideLeftOnEnterDef = style({
|
|
10677
|
+
opacity: 0,
|
|
10678
|
+
'width': '0',
|
|
10679
|
+
paddingLeft: '0',
|
|
10680
|
+
paddingRight: '0'
|
|
10681
|
+
});
|
|
10682
|
+
const slideRightOnEnterAnimation = trigger('slideRightOnEnter', [
|
|
10683
|
+
transition(':enter', [slideLeftOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
10684
|
+
transition(':leave', [animate('{{duration}}', slideLeftOnEnterDef)], { params: { duration: '100ms' } })
|
|
10685
|
+
]);
|
|
10686
|
+
const ZERO_WIDTH = {
|
|
10687
|
+
opacity: 0,
|
|
10688
|
+
width: '0',
|
|
10689
|
+
paddingLeft: '0',
|
|
10690
|
+
paddingRight: '0',
|
|
10691
|
+
};
|
|
10692
|
+
const ZERO_HEIGHT = {
|
|
10693
|
+
opacity: 0,
|
|
10694
|
+
height: '0',
|
|
10695
|
+
paddingTop: '0',
|
|
10696
|
+
paddingBottom: '0',
|
|
10697
|
+
};
|
|
10698
|
+
const slideDownAndRightOnEnterAnimation = trigger('slideDownAndRightOnEnter', [
|
|
10699
|
+
transition(':enter', [
|
|
10700
|
+
style({ overflow: "hidden", whiteSpace: "nowrap", ...ZERO_WIDTH, ...ZERO_HEIGHT }),
|
|
10701
|
+
animate('{{duration}}')
|
|
10702
|
+
], { params: { duration: '100ms' } }),
|
|
10703
|
+
transition(':leave', [
|
|
10704
|
+
style({ overflow: "hidden", whiteSpace: "nowrap" }),
|
|
10705
|
+
group([
|
|
10706
|
+
animate('{{duration}}', style(ZERO_HEIGHT)),
|
|
10707
|
+
// Hack: 100ms is too quick as it animates from * - 0 as we only see it animate the width is greater than the parent.
|
|
10708
|
+
// Not sure how to animate from * to natural new width of parent. This hack won't work for text that's just a little
|
|
10709
|
+
// bit wider than the parent as it'll fall within the parent bounds very early in the animation cycle.
|
|
10710
|
+
animate('300ms', style(ZERO_WIDTH)),
|
|
10711
|
+
])
|
|
10712
|
+
], { params: { duration: '100ms' } })
|
|
10713
|
+
]);
|
|
10714
|
+
|
|
10715
|
+
const cssDurationRegex = /(\d+)(m?s)/;
|
|
10716
|
+
/**
|
|
10717
|
+
* This interaction context remains hidden (height: 0) until it is active.
|
|
10718
|
+
* @example
|
|
10719
|
+
* <aup-slide-down-interaction-context #inPlaceInteractionContext>
|
|
10720
|
+
* </aup-slide-down-interaction-context>
|
|
10721
|
+
*
|
|
10722
|
+
* in your component
|
|
10723
|
+
* @ViewChild(SlideDownInteractionContextComponent)
|
|
10724
|
+
* interactionContext: InteractionContext;
|
|
10725
|
+
*
|
|
10726
|
+
*
|
|
10727
|
+
*/
|
|
10728
|
+
class SlideDownInteractionContextComponent extends DisposableComponent {
|
|
10729
|
+
tabConfig;
|
|
10730
|
+
activityContainerComponent;
|
|
10731
|
+
// NOTE: disabling this as I'm using the initialise callback to release the hacky height clamp.
|
|
10732
|
+
// The whole registration thing is a bit naf so I should really clean that up at some point.
|
|
10733
|
+
// /**
|
|
10734
|
+
// * If true the activity will sync with the router to enable back button support. This is a work around for
|
|
10735
|
+
// * deeply nested activities that can't be linked with the root place interactionContext hook for cancelling
|
|
10736
|
+
// * active interactions.
|
|
10737
|
+
// */
|
|
10738
|
+
// @Input()
|
|
10739
|
+
// syncWithRoutes = true;
|
|
10740
|
+
dynamicHeight = true;
|
|
10741
|
+
get active() {
|
|
10742
|
+
return this.isActive();
|
|
10743
|
+
}
|
|
10744
|
+
// Horrible hack to stop the div and activity container bouncing back for a bit in after closing. No idea why it's doing that.
|
|
10745
|
+
clampShut = true;
|
|
10746
|
+
interactionService = this.inject(InteractionService);
|
|
10747
|
+
constructor(tabConfig) {
|
|
10748
|
+
super();
|
|
10749
|
+
this.tabConfig = tabConfig;
|
|
10750
|
+
}
|
|
10751
|
+
ngAfterViewInit() {
|
|
10752
|
+
// NOTE: this is a temp work around to detach inplace contexts from the router until AUP-88 is implemented.
|
|
10753
|
+
// https://coolon.atlassian.net/browse/AUP-88?atlOrigin=eyJpIjoiOTg5YjEzZGUzZjRmNDg0NmExOWU3ZGJmMzJiNTRmNGYiLCJwIjoiaiJ9
|
|
10754
|
+
const self = this;
|
|
10755
|
+
this.activityContainerComponent.initialise("dont-care", {
|
|
10756
|
+
async notifyActive(interactionContext) {
|
|
10757
|
+
self.clampShut = false;
|
|
10758
|
+
return undefined;
|
|
10759
|
+
},
|
|
10760
|
+
async notifyFinished(interactionContext) {
|
|
10761
|
+
return undefined;
|
|
10762
|
+
}
|
|
10763
|
+
});
|
|
10764
|
+
// if (this.syncWithRoutes) {
|
|
10765
|
+
// this.interactionService.registerInplaceInteractionContext(this);
|
|
10766
|
+
// }
|
|
10767
|
+
}
|
|
10768
|
+
getAnimationState() {
|
|
10769
|
+
return {
|
|
10770
|
+
value: this.isActive() ? "open" : "closed",
|
|
10771
|
+
params: { duration: "200ms" }
|
|
10772
|
+
};
|
|
10773
|
+
}
|
|
10774
|
+
// this is a regsitration callback from the interaction service
|
|
10775
|
+
// @Trace() // webstorm says no usages... but I'm not sure.
|
|
10776
|
+
onInplaceInteractionContextRegistered(id, api) {
|
|
10777
|
+
this.activityContainerComponent.initialise(id, api);
|
|
10778
|
+
}
|
|
10779
|
+
get identifier() {
|
|
10780
|
+
return this.activityContainerComponent.identifier;
|
|
10781
|
+
}
|
|
10782
|
+
alert(alert) {
|
|
10783
|
+
return this.activityContainerComponent.alert(alert);
|
|
10784
|
+
}
|
|
10785
|
+
cancelActiveActivity() {
|
|
10786
|
+
return this.activityContainerComponent.cancelActiveActivity();
|
|
10787
|
+
}
|
|
10788
|
+
confirm(confirm) {
|
|
10789
|
+
return this.activityContainerComponent.confirm(confirm);
|
|
10790
|
+
}
|
|
10791
|
+
confirmOrReject(confirm) {
|
|
10792
|
+
return this.activityContainerComponent.confirmOrReject(confirm);
|
|
10793
|
+
}
|
|
10794
|
+
confirmThen(confirm, activityType, data) {
|
|
10795
|
+
return this.activityContainerComponent.confirmThen(confirm, activityType);
|
|
10796
|
+
}
|
|
10797
|
+
confirmThenExecute(confirm, operation) {
|
|
10798
|
+
return this.activityContainerComponent.confirmThenExecute(confirm, operation);
|
|
10799
|
+
}
|
|
10800
|
+
isActive() {
|
|
10801
|
+
return this.activityContainerComponent.isActive();
|
|
10802
|
+
}
|
|
10803
|
+
startActivity(activityType, data, options) {
|
|
10804
|
+
return this.activityContainerComponent.startActivity(activityType, data, options);
|
|
10805
|
+
}
|
|
10806
|
+
onAnimationDone() {
|
|
10807
|
+
if (!this.isActive()) {
|
|
10808
|
+
this.clampShut = true;
|
|
10809
|
+
}
|
|
10810
|
+
}
|
|
10811
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SlideDownInteractionContextComponent, deps: [{ token: MAT_TABS_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
10812
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SlideDownInteractionContextComponent, selector: "aup-slide-down-interaction-context", inputs: { dynamicHeight: "dynamicHeight" }, host: { properties: { "class.active": "this.active" } }, viewQueries: [{ propertyName: "activityContainerComponent", first: true, predicate: ["activityContainer"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div [@slideDownWhenOpen]=\"getAnimationState()\" (@slideDownWhenOpen.done)=\"onAnimationDone()\" [style.max-height.px]=\"clampShut ? 0 : undefined\">\n <aup-activity-container #activityContainer [dynamicHeight]=\"dynamicHeight\"></aup-activity-container>\n</div>\n\n", styles: [":host{display:flex;flex-direction:column}:host>div{overflow:hidden}\n"], dependencies: [{ kind: "component", type: ActivityContainerComponent, selector: "aup-activity-container", inputs: ["dynamicHeight", "animationDuration"] }], animations: [
|
|
10813
|
+
slideDownWhenOpenAnimation
|
|
10814
|
+
] });
|
|
10815
|
+
}
|
|
10816
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SlideDownInteractionContextComponent, decorators: [{
|
|
10817
|
+
type: Component,
|
|
10818
|
+
args: [{ selector: "aup-slide-down-interaction-context", animations: [
|
|
10819
|
+
slideDownWhenOpenAnimation
|
|
10820
|
+
], template: "<div [@slideDownWhenOpen]=\"getAnimationState()\" (@slideDownWhenOpen.done)=\"onAnimationDone()\" [style.max-height.px]=\"clampShut ? 0 : undefined\">\n <aup-activity-container #activityContainer [dynamicHeight]=\"dynamicHeight\"></aup-activity-container>\n</div>\n\n", styles: [":host{display:flex;flex-direction:column}:host>div{overflow:hidden}\n"] }]
|
|
10821
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
10822
|
+
type: Inject,
|
|
10823
|
+
args: [MAT_TABS_CONFIG]
|
|
10824
|
+
}, {
|
|
10825
|
+
type: Optional
|
|
10826
|
+
}] }]; }, propDecorators: { activityContainerComponent: [{
|
|
10827
|
+
type: ViewChild,
|
|
10828
|
+
args: ["activityContainer", { static: true }]
|
|
10829
|
+
}], dynamicHeight: [{
|
|
10830
|
+
type: Input
|
|
10831
|
+
}], active: [{
|
|
10832
|
+
type: HostBinding,
|
|
10833
|
+
args: ["class.active"]
|
|
10834
|
+
}] } });
|
|
10835
|
+
|
|
10228
10836
|
class InteractionContextTriggerForDirective extends GarbageCollector {
|
|
10229
10837
|
aupInteractionContextTriggerFor;
|
|
10230
10838
|
activityClass;
|
|
@@ -10307,6 +10915,7 @@ class InteractionModule {
|
|
|
10307
10915
|
AlertDialogComponent,
|
|
10308
10916
|
ActivityOutletComponent,
|
|
10309
10917
|
InPlaceInteractionContextComponent,
|
|
10918
|
+
SlideDownInteractionContextComponent,
|
|
10310
10919
|
AddItemInteractionContextComponent,
|
|
10311
10920
|
ActivityActionsComponent,
|
|
10312
10921
|
PopupInteractionContextComponent,
|
|
@@ -10333,8 +10942,6 @@ class InteractionModule {
|
|
|
10333
10942
|
RouterModule,
|
|
10334
10943
|
MatIconModule,
|
|
10335
10944
|
DirectivesModule,
|
|
10336
|
-
FlexModule,
|
|
10337
|
-
GridModule,
|
|
10338
10945
|
ComponentsModule,
|
|
10339
10946
|
FormsModule,
|
|
10340
10947
|
MatInputModule,
|
|
@@ -10354,7 +10961,8 @@ class InteractionModule {
|
|
|
10354
10961
|
InlineActivityTriggerComponent,
|
|
10355
10962
|
ModalActivityTriggerComponent,
|
|
10356
10963
|
AddCardActivityComponent,
|
|
10357
|
-
InlineStringEditorComponent
|
|
10964
|
+
InlineStringEditorComponent,
|
|
10965
|
+
SlideDownInteractionContextComponent] });
|
|
10358
10966
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InteractionModule, providers: [
|
|
10359
10967
|
InteractionService
|
|
10360
10968
|
// {
|
|
@@ -10368,8 +10976,6 @@ class InteractionModule {
|
|
|
10368
10976
|
RouterModule,
|
|
10369
10977
|
MatIconModule,
|
|
10370
10978
|
DirectivesModule,
|
|
10371
|
-
FlexModule,
|
|
10372
|
-
GridModule,
|
|
10373
10979
|
ComponentsModule,
|
|
10374
10980
|
FormsModule,
|
|
10375
10981
|
MatInputModule,
|
|
@@ -10388,8 +10994,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
10388
10994
|
RouterModule,
|
|
10389
10995
|
MatIconModule,
|
|
10390
10996
|
DirectivesModule,
|
|
10391
|
-
FlexModule,
|
|
10392
|
-
GridModule,
|
|
10393
10997
|
ComponentsModule,
|
|
10394
10998
|
FormsModule,
|
|
10395
10999
|
MatInputModule,
|
|
@@ -10404,6 +11008,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
10404
11008
|
AlertDialogComponent,
|
|
10405
11009
|
ActivityOutletComponent,
|
|
10406
11010
|
InPlaceInteractionContextComponent,
|
|
11011
|
+
SlideDownInteractionContextComponent,
|
|
10407
11012
|
AddItemInteractionContextComponent,
|
|
10408
11013
|
ActivityActionsComponent,
|
|
10409
11014
|
PopupInteractionContextComponent,
|
|
@@ -10441,6 +11046,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
10441
11046
|
ModalActivityTriggerComponent,
|
|
10442
11047
|
AddCardActivityComponent,
|
|
10443
11048
|
InlineStringEditorComponent,
|
|
11049
|
+
SlideDownInteractionContextComponent,
|
|
10444
11050
|
],
|
|
10445
11051
|
providers: [
|
|
10446
11052
|
InteractionService
|
|
@@ -10511,7 +11117,6 @@ class PlaceOutletComponent extends DisposableComponent {
|
|
|
10511
11117
|
router;
|
|
10512
11118
|
placeRouter;
|
|
10513
11119
|
placeConfig;
|
|
10514
|
-
cdr;
|
|
10515
11120
|
#animate$_accessor_storage = proxify((ValueModel));
|
|
10516
11121
|
get animate$() { return this.#animate$_accessor_storage; }
|
|
10517
11122
|
set animate$(value) { this.#animate$_accessor_storage = value; }
|
|
@@ -10545,12 +11150,11 @@ class PlaceOutletComponent extends DisposableComponent {
|
|
|
10545
11150
|
animationEnabled;
|
|
10546
11151
|
authorised;
|
|
10547
11152
|
notAuthorisedNoticePortal;
|
|
10548
|
-
constructor(router, placeRouter, placeConfig, unauthorisedPlaceNotice, parentOutlet
|
|
11153
|
+
constructor(router, placeRouter, placeConfig, unauthorisedPlaceNotice, parentOutlet) {
|
|
10549
11154
|
super();
|
|
10550
11155
|
this.router = router;
|
|
10551
11156
|
this.placeRouter = placeRouter;
|
|
10552
11157
|
this.placeConfig = placeConfig;
|
|
10553
|
-
this.cdr = cdr;
|
|
10554
11158
|
const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
|
|
10555
11159
|
this.parentOutletModel = new MutableValueModel(parentOutlet);
|
|
10556
11160
|
const defaultPlaceAnimationOrder = chain(this.parentOutletModel)
|
|
@@ -10562,7 +11166,7 @@ class PlaceOutletComponent extends DisposableComponent {
|
|
|
10562
11166
|
this.placesInAnimationOrder = chain(this.customPlaceAnimationOrder$)
|
|
10563
11167
|
.otherwise(defaultPlaceAnimationOrder);
|
|
10564
11168
|
this.activePlaceAnimationPosition = this.placesInAnimationOrder
|
|
10565
|
-
.
|
|
11169
|
+
.reduceAll((placesInOrder) => {
|
|
10566
11170
|
let placeIndex = 0;
|
|
10567
11171
|
if (activatePlaceType.value) {
|
|
10568
11172
|
placeIndex = placesInOrder.indexOf(activatePlaceType.value);
|
|
@@ -10716,7 +11320,7 @@ class PlaceOutletComponent extends DisposableComponent {
|
|
|
10716
11320
|
this.onAnimationFinishedJob = undefined;
|
|
10717
11321
|
}
|
|
10718
11322
|
}
|
|
10719
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceOutletComponent, deps: [{ token: i1$4.Router }, { token: PlaceRouter }, { token: AUP_PLACE_CONFIG, optional: true }, { token: AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT, optional: true }, { token: PlaceOutletComponent, optional: true, skipSelf: true }
|
|
11323
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceOutletComponent, deps: [{ token: i1$4.Router }, { token: PlaceRouter }, { token: AUP_PLACE_CONFIG, optional: true }, { token: AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT, optional: true }, { token: PlaceOutletComponent, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
10720
11324
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: PlaceOutletComponent, selector: "aup-place-outlet", inputs: { animate$: "animate$", animate: "animate", customPlaceAnimationOrder$: ["placeAnimationOrderModel", "customPlaceAnimationOrder$"], customPlaceAnimationOrder: ["placeAnimationOrder", "customPlaceAnimationOrder"] }, outputs: { placeChanged: "placeChanged" }, host: { properties: { "class.authorised": "this.isAuthorised" } }, viewQueries: [{ propertyName: "routerOut", first: true, predicate: ["routeOutlet"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"animationEnabled.value\">\n <div class=\"router-outlet-container\"\n cdkScrollable\n [@routeAnimations]=\"{value: getAnimationOrder(), params:{duration: animationDuration}}\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n >\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!animationEnabled.value\">\n <div class=\"router-outlet-container\"\n cdkScrollable>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n<div class=\"not-authorised-component-container\" *ngIf=\"!authorised.value\">\n <ng-template [cdkPortalOutlet]=\"notAuthorisedNoticePortal\"></ng-template>\n</div>\n", styles: [":host{display:flex;flex-direction:column;min-height:0}:host:not(.authorised) .router-outlet-container{display:none}.router-outlet-container{flex:1;display:block;position:relative;min-height:0;overflow-x:hidden;overflow-y:auto}router-outlet{display:none}.not-authorised-component-container{flex:1;display:grid;grid-template-columns:1fr;grid-template-rows:1fr}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1$2.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "directive", type: i3$2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], animations: [LEFT_RIGHT_PLACE_ANIMATION] });
|
|
10721
11325
|
}
|
|
10722
11326
|
__decorate([
|
|
@@ -10752,7 +11356,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
10752
11356
|
type: SkipSelf
|
|
10753
11357
|
}, {
|
|
10754
11358
|
type: Optional
|
|
10755
|
-
}] }
|
|
11359
|
+
}] }]; }, propDecorators: { animate$: [{
|
|
10756
11360
|
type: Input
|
|
10757
11361
|
}], animate: [{
|
|
10758
11362
|
type: Input
|
|
@@ -10885,7 +11489,7 @@ class ListPlaceNavComponent extends AbstractPlaceNavigationComponent {
|
|
|
10885
11489
|
super(router);
|
|
10886
11490
|
}
|
|
10887
11491
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ListPlaceNavComponent, deps: [{ token: PlaceRouter }], target: i0.ɵɵFactoryTarget.Component });
|
|
10888
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ListPlaceNavComponent, selector: "aup-list-place-nav", usesInheritance: true, ngImport: i0, template: "<mat-nav-list fxFlex>\n <a mat-list-item *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n aup-gc #gc=\"aup-gc\"\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\n [class.active]=\"item.active\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\">\n <aup-command-face [faces]=\"[getNavigationFace(item.place)]\"></aup-command-face>\n </a>\n</mat-nav-list>\n", styles: [":host{display:flex;flex-direction:column;--selected-border-color: #838383;--selected-color: inherit;--selected-background: #f1f1f1}mat-nav-list{padding-top:0}a{border-right:2px solid transparent}a.active{border-right:2px solid var(--selected-border-color);background:var(--selected-background);color:var(--selected-color)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3$3.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i3$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "directive", type: GarbageCollectorDirective, selector: "[aup-gc]", exportAs: ["aup-gc"] }, { kind: "
|
|
11492
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ListPlaceNavComponent, selector: "aup-list-place-nav", usesInheritance: true, ngImport: i0, template: "<mat-nav-list fxFlex>\n <a mat-list-item *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n aup-gc #gc=\"aup-gc\"\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\n [class.active]=\"item.active\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\">\n <aup-command-face [faces]=\"[getNavigationFace(item.place)]\"></aup-command-face>\n </a>\n</mat-nav-list>\n", styles: [":host{display:flex;flex-direction:column;--selected-border-color: #838383;--selected-color: inherit;--selected-background: #f1f1f1}mat-nav-list{padding-top:0}a{border-right:2px solid transparent}a.active{border-right:2px solid var(--selected-border-color);background:var(--selected-background);color:var(--selected-color)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3$3.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i3$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "directive", type: GarbageCollectorDirective, selector: "[aup-gc]", exportAs: ["aup-gc"] }, { kind: "component", type: CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }] });
|
|
10889
11493
|
}
|
|
10890
11494
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ListPlaceNavComponent, decorators: [{
|
|
10891
11495
|
type: Component,
|
|
@@ -10960,7 +11564,7 @@ class SidePlaceNavigationComponent extends AbstractPlaceNavigationComponent {
|
|
|
10960
11564
|
this.expanded = !this.expanded;
|
|
10961
11565
|
}
|
|
10962
11566
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SidePlaceNavigationComponent, deps: [{ token: PlaceRouter }], target: i0.ɵɵFactoryTarget.Component });
|
|
10963
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SidePlaceNavigationComponent, selector: "aup-side-place-navigation", inputs: { expanded$: "expanded$", expanded: "expanded" }, host: { properties: { "class.expanded": "this.expanded" } }, queries: [{ propertyName: "navEndTemplate", first: true, predicate: ["navEndTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-nav-list>\n <a mat-list-item (click)=\"toggleMenu()\">\n <aup-icon matListItemIcon [icon]=\"homeIcon$.value\"></aup-icon>\n <span matListItemTitle class=\"expanded-only\">Menu</span>\n </a>\n <a *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n mat-list-item\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\n [activated]=\"item.active\"\n aup-gc #gc=\"aup-gc\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\"\n >\n <aup-icon matListItemIcon *ngIf=\"getNavigationFace(item.place).icon()\" [icon]=\"getNavigationFace(item.place).icon()\"></aup-icon>\n <span matListItemTitle class=\"expanded-only\">{{getNavigationFace(item.place).text()}}</span>\n </a>\n <span [style.flex]=\"1\"></span>\n <ng-container *ngIf=\"navEndTemplate\" [ngTemplateOutlet]=\"navEndTemplate\"></ng-container>\n</mat-nav-list>\n", styles: [":host{display:flex;flex-direction:column;--resolved-nav-item-width: var(--nav-width, 56px);--resolved-expanded-width: var(--nav-expanded-width, 235px);--resolved-color: var(--nav-color, rgba(255, 255, 255, .9));--resolved-background-color: var(--nav-background-color, #555);color:var(--resolved-color);background-color:var(--resolved-background-color);width:var(--resolved-nav-item-width);transition:width 125ms linear}:host.expanded{width:var(--resolved-expanded-width);max-width:var(--resolved-expanded-width)}:host aup-icon{margin-right:12px}:host>mat-nav-list{flex:1;display:flex;flex-direction:column;padding:0}:host .mat-mdc-list-item,:host .mat-mdc-list-item-icon,:host .mat-mdc-list-item-icon.activated,:host .mdc-list-item__primary-text{color:var(--resolved-color)}:host .mdc-list-item--activated .mdc-list-item__primary-text,:host .mdc-list-item--activated .mat-mdc-list-item-icon{color:var(--resolved-color)}:host .mdc-list-item--activated{background-color:#444}:host *.flip-horizontal{transform:scaleX(-1)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$3.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i3$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i3$3.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i3$3.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "directive", type: GarbageCollectorDirective, selector: "[aup-gc]", exportAs: ["aup-gc"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }] });
|
|
11567
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SidePlaceNavigationComponent, selector: "aup-side-place-navigation", inputs: { expanded$: "expanded$", expanded: "expanded" }, host: { properties: { "class.expanded": "this.expanded" } }, queries: [{ propertyName: "navEndTemplate", first: true, predicate: ["navEndTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-nav-list>\n <a mat-list-item (click)=\"toggleMenu()\">\n <aup-icon matListItemIcon [icon]=\"homeIcon$.value\"></aup-icon>\n <span matListItemTitle class=\"expanded-only\">Menu</span>\n </a>\n <a *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n mat-list-item\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\n [activated]=\"item.active\"\n aup-gc #gc=\"aup-gc\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\"\n >\n <aup-icon matListItemIcon *ngIf=\"getNavigationFace(item.place).icon()\" [icon]=\"getNavigationFace(item.place).icon()\"></aup-icon>\n <span matListItemTitle class=\"expanded-only\">{{getNavigationFace(item.place).text()}}</span>\n </a>\n <span [style.flex]=\"1\"></span>\n <ng-container *ngIf=\"navEndTemplate\" [ngTemplateOutlet]=\"navEndTemplate\"></ng-container>\n</mat-nav-list>\n", styles: [":host{display:flex;flex-direction:column;--resolved-nav-item-width: var(--nav-width, 56px);--resolved-expanded-width: var(--nav-expanded-width, 235px);--resolved-color: var(--nav-color, rgba(255, 255, 255, .9));--resolved-background-color: var(--nav-background-color, #555);color:var(--resolved-color);background-color:var(--resolved-background-color);width:var(--resolved-nav-item-width);transition:width 125ms linear}:host.expanded{width:var(--resolved-expanded-width);max-width:var(--resolved-expanded-width)}:host aup-icon{margin-right:12px}:host>mat-nav-list{flex:1;display:flex;flex-direction:column;padding:0}:host .mat-mdc-list-item,:host .mat-mdc-list-item-icon,:host .mat-mdc-list-item-icon.activated,:host .mdc-list-item--with-leading-icon:hover .mdc-list-item__start,:host .mdc-list-item__primary-text{color:var(--resolved-color)}:host .mdc-list-item--activated .mdc-list-item__primary-text,:host .mdc-list-item--activated .mat-mdc-list-item-icon{color:var(--resolved-color)}:host .mdc-list-item:hover{background-color:#444}:host .mdc-list-item:hover .mdc-list-item__primary-text{color:var(--resolved-color)}:host .mdc-list-item--activated{background-color:#444}:host *.flip-horizontal{transform:scaleX(-1)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$3.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i3$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i3$3.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i3$3.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "directive", type: GarbageCollectorDirective, selector: "[aup-gc]", exportAs: ["aup-gc"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }] });
|
|
10964
11568
|
}
|
|
10965
11569
|
__decorate([
|
|
10966
11570
|
Proxify(),
|
|
@@ -10972,7 +11576,7 @@ __decorate([
|
|
|
10972
11576
|
], SidePlaceNavigationComponent.prototype, "expanded", null);
|
|
10973
11577
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SidePlaceNavigationComponent, decorators: [{
|
|
10974
11578
|
type: Component,
|
|
10975
|
-
args: [{ selector: 'aup-side-place-navigation', template: "<mat-nav-list>\n <a mat-list-item (click)=\"toggleMenu()\">\n <aup-icon matListItemIcon [icon]=\"homeIcon$.value\"></aup-icon>\n <span matListItemTitle class=\"expanded-only\">Menu</span>\n </a>\n <a *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n mat-list-item\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\n [activated]=\"item.active\"\n aup-gc #gc=\"aup-gc\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\"\n >\n <aup-icon matListItemIcon *ngIf=\"getNavigationFace(item.place).icon()\" [icon]=\"getNavigationFace(item.place).icon()\"></aup-icon>\n <span matListItemTitle class=\"expanded-only\">{{getNavigationFace(item.place).text()}}</span>\n </a>\n <span [style.flex]=\"1\"></span>\n <ng-container *ngIf=\"navEndTemplate\" [ngTemplateOutlet]=\"navEndTemplate\"></ng-container>\n</mat-nav-list>\n", styles: [":host{display:flex;flex-direction:column;--resolved-nav-item-width: var(--nav-width, 56px);--resolved-expanded-width: var(--nav-expanded-width, 235px);--resolved-color: var(--nav-color, rgba(255, 255, 255, .9));--resolved-background-color: var(--nav-background-color, #555);color:var(--resolved-color);background-color:var(--resolved-background-color);width:var(--resolved-nav-item-width);transition:width 125ms linear}:host.expanded{width:var(--resolved-expanded-width);max-width:var(--resolved-expanded-width)}:host aup-icon{margin-right:12px}:host>mat-nav-list{flex:1;display:flex;flex-direction:column;padding:0}:host .mat-mdc-list-item,:host .mat-mdc-list-item-icon,:host .mat-mdc-list-item-icon.activated,:host .mdc-list-item__primary-text{color:var(--resolved-color)}:host .mdc-list-item--activated .mdc-list-item__primary-text,:host .mdc-list-item--activated .mat-mdc-list-item-icon{color:var(--resolved-color)}:host .mdc-list-item--activated{background-color:#444}:host *.flip-horizontal{transform:scaleX(-1)}\n"] }]
|
|
11579
|
+
args: [{ selector: 'aup-side-place-navigation', template: "<mat-nav-list>\n <a mat-list-item (click)=\"toggleMenu()\">\n <aup-icon matListItemIcon [icon]=\"homeIcon$.value\"></aup-icon>\n <span matListItemTitle class=\"expanded-only\">Menu</span>\n </a>\n <a *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n mat-list-item\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\n [activated]=\"item.active\"\n aup-gc #gc=\"aup-gc\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\"\n >\n <aup-icon matListItemIcon *ngIf=\"getNavigationFace(item.place).icon()\" [icon]=\"getNavigationFace(item.place).icon()\"></aup-icon>\n <span matListItemTitle class=\"expanded-only\">{{getNavigationFace(item.place).text()}}</span>\n </a>\n <span [style.flex]=\"1\"></span>\n <ng-container *ngIf=\"navEndTemplate\" [ngTemplateOutlet]=\"navEndTemplate\"></ng-container>\n</mat-nav-list>\n", styles: [":host{display:flex;flex-direction:column;--resolved-nav-item-width: var(--nav-width, 56px);--resolved-expanded-width: var(--nav-expanded-width, 235px);--resolved-color: var(--nav-color, rgba(255, 255, 255, .9));--resolved-background-color: var(--nav-background-color, #555);color:var(--resolved-color);background-color:var(--resolved-background-color);width:var(--resolved-nav-item-width);transition:width 125ms linear}:host.expanded{width:var(--resolved-expanded-width);max-width:var(--resolved-expanded-width)}:host aup-icon{margin-right:12px}:host>mat-nav-list{flex:1;display:flex;flex-direction:column;padding:0}:host .mat-mdc-list-item,:host .mat-mdc-list-item-icon,:host .mat-mdc-list-item-icon.activated,:host .mdc-list-item--with-leading-icon:hover .mdc-list-item__start,:host .mdc-list-item__primary-text{color:var(--resolved-color)}:host .mdc-list-item--activated .mdc-list-item__primary-text,:host .mdc-list-item--activated .mat-mdc-list-item-icon{color:var(--resolved-color)}:host .mdc-list-item:hover{background-color:#444}:host .mdc-list-item:hover .mdc-list-item__primary-text{color:var(--resolved-color)}:host .mdc-list-item--activated{background-color:#444}:host *.flip-horizontal{transform:scaleX(-1)}\n"] }]
|
|
10976
11580
|
}], ctorParameters: function () { return [{ type: PlaceRouter }]; }, propDecorators: { expanded$: [{
|
|
10977
11581
|
type: Input
|
|
10978
11582
|
}], expanded: [{
|
|
@@ -11013,7 +11617,6 @@ class PlaceModule {
|
|
|
11013
11617
|
MatTooltipModule,
|
|
11014
11618
|
MatIconModule,
|
|
11015
11619
|
DirectivesModule,
|
|
11016
|
-
FlexModule,
|
|
11017
11620
|
ComponentsModule,
|
|
11018
11621
|
PortalModule,
|
|
11019
11622
|
MatCardModule], exports: [PlaceOutletComponent,
|
|
@@ -11030,7 +11633,6 @@ class PlaceModule {
|
|
|
11030
11633
|
MatTooltipModule,
|
|
11031
11634
|
MatIconModule,
|
|
11032
11635
|
DirectivesModule,
|
|
11033
|
-
FlexModule,
|
|
11034
11636
|
ComponentsModule,
|
|
11035
11637
|
PortalModule,
|
|
11036
11638
|
MatCardModule] });
|
|
@@ -11048,7 +11650,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
11048
11650
|
MatTooltipModule,
|
|
11049
11651
|
MatIconModule,
|
|
11050
11652
|
DirectivesModule,
|
|
11051
|
-
FlexModule,
|
|
11052
11653
|
ComponentsModule,
|
|
11053
11654
|
PortalModule,
|
|
11054
11655
|
MatCardModule
|
|
@@ -11138,60 +11739,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
11138
11739
|
}]
|
|
11139
11740
|
}] });
|
|
11140
11741
|
|
|
11141
|
-
const slideDownOnEnterDef = style({
|
|
11142
|
-
opacity: 0,
|
|
11143
|
-
'height': '0',
|
|
11144
|
-
paddingTop: '0',
|
|
11145
|
-
paddingBottom: '0'
|
|
11146
|
-
});
|
|
11147
|
-
// TODO: params aren't getting customised in the view. Need to figure out the correct approach.
|
|
11148
|
-
const slideDownOnEnterAnimation = trigger('slideDownOnEnter', [
|
|
11149
|
-
transition(':enter', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
11150
|
-
transition(':leave', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })
|
|
11151
|
-
]);
|
|
11152
|
-
const slideLeftOnEnterDef = style({
|
|
11153
|
-
opacity: 0,
|
|
11154
|
-
'width': '0',
|
|
11155
|
-
paddingLeft: '0',
|
|
11156
|
-
paddingRight: '0'
|
|
11157
|
-
});
|
|
11158
|
-
const slideRightOnEnterAnimation = trigger('slideRightOnEnter', [
|
|
11159
|
-
transition(':enter', [slideLeftOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
11160
|
-
transition(':leave', [animate('{{duration}}', slideLeftOnEnterDef)], { params: { duration: '100ms' } })
|
|
11161
|
-
]);
|
|
11162
|
-
const ZERO_WIDTH = {
|
|
11163
|
-
opacity: 0,
|
|
11164
|
-
width: '0',
|
|
11165
|
-
paddingLeft: '0',
|
|
11166
|
-
paddingRight: '0',
|
|
11167
|
-
};
|
|
11168
|
-
const ZERO_HEIGHT = {
|
|
11169
|
-
opacity: 0,
|
|
11170
|
-
height: '0',
|
|
11171
|
-
paddingTop: '0',
|
|
11172
|
-
paddingBottom: '0',
|
|
11173
|
-
};
|
|
11174
|
-
const slideDownAndRightOnEnterAnimation = trigger('slideDownAndRightOnEnter', [
|
|
11175
|
-
transition(':enter', [
|
|
11176
|
-
style({ overflow: "hidden", whiteSpace: "nowrap", ...ZERO_WIDTH, ...ZERO_HEIGHT }),
|
|
11177
|
-
animate('{{duration}}')
|
|
11178
|
-
], { params: { duration: '100ms' } }),
|
|
11179
|
-
transition(':leave', [
|
|
11180
|
-
style({ overflow: "hidden", whiteSpace: "nowrap" }),
|
|
11181
|
-
group([
|
|
11182
|
-
animate('{{duration}}', style(ZERO_HEIGHT)),
|
|
11183
|
-
// Hack: 100ms is too quick as it animates from * - 0 as we only see it animate the width is greater than the parent.
|
|
11184
|
-
// Not sure how to animate from * to natural new width of parent. This hack won't work for text that's just a little
|
|
11185
|
-
// bit wider than the parent as it'll fall within the parent bounds very early in the animation cycle.
|
|
11186
|
-
animate('300ms', style(ZERO_WIDTH)),
|
|
11187
|
-
])
|
|
11188
|
-
], { params: { duration: '100ms' } })
|
|
11189
|
-
]);
|
|
11190
|
-
|
|
11191
11742
|
/**
|
|
11192
11743
|
* @file Automatically generated by barrelsby.
|
|
11193
11744
|
*/
|
|
11194
11745
|
|
|
11746
|
+
class ResizeObserverDirective extends DisposableComponent {
|
|
11747
|
+
aupOnResize = new EventEmitter();
|
|
11748
|
+
elementRef = this.inject(ElementRef);
|
|
11749
|
+
ngZone = this.inject(NgZone);
|
|
11750
|
+
_bounds$ = new MutableValueModel();
|
|
11751
|
+
ngAfterViewInit() {
|
|
11752
|
+
const element = this.elementRef.nativeElement;
|
|
11753
|
+
const ro = new ResizeObserver((entries, observer) => {
|
|
11754
|
+
this.ngZone.run(() => this._updateBounds());
|
|
11755
|
+
});
|
|
11756
|
+
ro.observe(element);
|
|
11757
|
+
this.onDispose(() => ro.disconnect());
|
|
11758
|
+
setTimeout(() => this._updateBounds());
|
|
11759
|
+
}
|
|
11760
|
+
get bounds$() {
|
|
11761
|
+
return this._bounds$.readonly$;
|
|
11762
|
+
}
|
|
11763
|
+
_updateBounds() {
|
|
11764
|
+
this._bounds$.value = Bounds.ofElement(this.elementRef.nativeElement);
|
|
11765
|
+
this.aupOnResize.emit(this._bounds$.value);
|
|
11766
|
+
}
|
|
11767
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ResizeObserverDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
11768
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ResizeObserverDirective, isStandalone: true, selector: "[aupOnResize]", outputs: { aupOnResize: "aupOnResize" }, usesInheritance: true, ngImport: i0 });
|
|
11769
|
+
}
|
|
11770
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ResizeObserverDirective, decorators: [{
|
|
11771
|
+
type: Directive,
|
|
11772
|
+
args: [{
|
|
11773
|
+
selector: "[aupOnResize]",
|
|
11774
|
+
standalone: true
|
|
11775
|
+
}]
|
|
11776
|
+
}], propDecorators: { aupOnResize: [{
|
|
11777
|
+
type: Output
|
|
11778
|
+
}] } });
|
|
11779
|
+
|
|
11195
11780
|
/**
|
|
11196
11781
|
* @file Automatically generated by barrelsby.
|
|
11197
11782
|
*/
|
|
@@ -11567,69 +12152,74 @@ var Formatter;
|
|
|
11567
12152
|
Formatter.BOOLEAN = new BooleanType();
|
|
11568
12153
|
})(Formatter || (Formatter = {}));
|
|
11569
12154
|
|
|
11570
|
-
function installMechanics(parameterDef
|
|
11571
|
-
|
|
11572
|
-
|
|
11573
|
-
|
|
11574
|
-
|
|
11575
|
-
|
|
11576
|
-
|
|
11577
|
-
|
|
11578
|
-
|
|
11579
|
-
|
|
11580
|
-
|
|
11581
|
-
|
|
11582
|
-
|
|
11583
|
-
|
|
11584
|
-
|
|
11585
|
-
|
|
11586
|
-
|
|
11587
|
-
|
|
11588
|
-
|
|
11589
|
-
|
|
11590
|
-
|
|
11591
|
-
|
|
11592
|
-
|
|
11593
|
-
|
|
11594
|
-
|
|
11595
|
-
|
|
11596
|
-
|
|
11597
|
-
|
|
11598
|
-
|
|
11599
|
-
|
|
11600
|
-
|
|
11601
|
-
|
|
11602
|
-
|
|
11603
|
-
|
|
11604
|
-
|
|
11605
|
-
|
|
11606
|
-
|
|
11607
|
-
|
|
11608
|
-
|
|
11609
|
-
|
|
11610
|
-
|
|
11611
|
-
|
|
11612
|
-
|
|
11613
|
-
|
|
11614
|
-
}
|
|
12155
|
+
// function installMechanics<M extends HasValue<any>>(parameterDef: ParameterDefinition<any>, prototype: object, propertyKey: string | symbol, tagPrefix: string) {
|
|
12156
|
+
//
|
|
12157
|
+
// Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);
|
|
12158
|
+
//
|
|
12159
|
+
// function getMechanics(instance: M, propertyName: string | symbol) {
|
|
12160
|
+
// const key = `__mechanics_${propertyName.toString()}`;
|
|
12161
|
+
// if (!instance[key]) {
|
|
12162
|
+
// const backingModel = parameterDef.createBackingModel();
|
|
12163
|
+
// instance[key] = {
|
|
12164
|
+
// backingModel: backingModel,
|
|
12165
|
+
// binding: null as Binding<any, any>
|
|
12166
|
+
// };
|
|
12167
|
+
// const tag = `${tagPrefix}(${prototype.constructor.name}.${propertyKey.toString()})`;
|
|
12168
|
+
// DebugContext.getOrCreate(instance[key].backingModel).tag(tag);
|
|
12169
|
+
// }
|
|
12170
|
+
// return instance[key];
|
|
12171
|
+
// }
|
|
12172
|
+
//
|
|
12173
|
+
// Object.defineProperty(prototype, propertyKey, {
|
|
12174
|
+
// get: function() {
|
|
12175
|
+
// return getMechanics(this, propertyKey).backingModel;
|
|
12176
|
+
// },
|
|
12177
|
+
// set: function(userModel: M) {
|
|
12178
|
+
// const mechanics = getMechanics(this, propertyKey);
|
|
12179
|
+
// // This handles the scenario where we want to push an existing value model (such as a form model)
|
|
12180
|
+
// // to and from the route.
|
|
12181
|
+
// if (mechanics.binding) {
|
|
12182
|
+
// mechanics.binding.dispose();
|
|
12183
|
+
// }
|
|
12184
|
+
// if (userModel) {
|
|
12185
|
+
// mechanics.binding = new Binding(mechanics.backingModel, userModel, {
|
|
12186
|
+
// toLeft: Functions.identity,
|
|
12187
|
+
// toRight: Functions.identity
|
|
12188
|
+
// });
|
|
12189
|
+
// if (parameterDef.isEmptyValue(userModel.value)) {
|
|
12190
|
+
// // console.log(`Push visit to model for ${tag}`, {value: mechanics.backingModel.value});
|
|
12191
|
+
// mechanics.binding.writeRight(); // push the visit into the user model;
|
|
12192
|
+
// } else {
|
|
12193
|
+
// if (!parameterDef.isEmptyValue(mechanics.backingModel.value)) {
|
|
12194
|
+
// console.warn('Assigning a visit model with an existing value to a visit parameter with an existing value. Visit parameter will be overridden');
|
|
12195
|
+
// }
|
|
12196
|
+
// mechanics.binding.writeLeft(); // push the user model into the visit
|
|
12197
|
+
// }
|
|
12198
|
+
// }
|
|
12199
|
+
// }
|
|
12200
|
+
// });
|
|
12201
|
+
// }
|
|
11615
12202
|
function RouteId(formatter, options) {
|
|
11616
12203
|
return (prototype, propertyKey) => {
|
|
11617
12204
|
const parameterDef = new ParameterDefinition.RouteId(propertyKey.toString(), options, formatter);
|
|
11618
|
-
installMechanics(parameterDef, prototype, propertyKey, '@RouteId');
|
|
12205
|
+
// installMechanics(parameterDef, prototype, propertyKey, '@RouteId');
|
|
12206
|
+
Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);
|
|
11619
12207
|
};
|
|
11620
12208
|
}
|
|
11621
12209
|
function VisitParameter(options) {
|
|
11622
12210
|
const opts = Opts.get(options);
|
|
11623
12211
|
return (prototype, propertyKey) => {
|
|
11624
12212
|
const parameterDef = new ParameterDefinition.ValueParameter(propertyKey.toString(), options, opts.getOptional('storeInUrl', null));
|
|
11625
|
-
|
|
12213
|
+
Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);
|
|
12214
|
+
// installMechanics(parameterDef, prototype, propertyKey, '@VisitParameter');
|
|
11626
12215
|
};
|
|
11627
12216
|
}
|
|
11628
12217
|
function VisitParameterList(options) {
|
|
11629
12218
|
const opts = Opts.get(options);
|
|
11630
12219
|
return (prototype, propertyKey) => {
|
|
11631
12220
|
const parameterDef = new ParameterDefinition.ArrayParameter(propertyKey.toString(), options, opts.getOptional('storeInUrl', null));
|
|
11632
|
-
|
|
12221
|
+
Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);
|
|
12222
|
+
// installMechanics(parameterDef, prototype, propertyKey, '@VisitParameterList');
|
|
11633
12223
|
};
|
|
11634
12224
|
}
|
|
11635
12225
|
|
|
@@ -11723,5 +12313,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
11723
12313
|
* Generated bundle index. Do not edit.
|
|
11724
12314
|
*/
|
|
11725
12315
|
|
|
11726
|
-
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, CellEditorPortalRef, CellHeaderPortalRef, CellPortalRef, CellRendererPortalRef, CheckboxInputComponent,
|
|
12316
|
+
export { ACTIVITY_DATA, ALERT_CONFIG, AUP_PLACE_CONFIG, AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER, 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, CellEditorPortalRef, CellHeaderPortalRef, CellPortalRef, CellRendererPortalRef, CheckboxInputComponent, ColumnManager, ColumnModel, ColumnOrderManager, 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, DialogInteractionContext, DialogInteractionContextFactory, Dimension, DirectivesModule, DisposableComponent, EditRowControlsComponent, EditSession, EditorControlColumnModel, EmptyStateComponent, EnableCellTextSearch, EventCleanUpSession, FlattenedTreeListModel, FlexComponent, FocusBinding, FocusBindingDirective, FocusBindingFactory, FocusContainerComponent, FocusableComponent, Formatter, GarbageCollectorDirective, HEADER_CELL_RENDERER_PORTAL, HighlightPipe, HighlightTextModelDirective, HorizontalAlignment, IconComponent, InPlaceInteractionContextComponent, InlineActivityTriggerComponent, InlineEditorModel, InlineStringEditorComponent, InputActivity, InteractionContextTriggerForDirective, InteractionModule, InteractionService, InteractionServiceRoutingAdapter, Keys, LEFT_RIGHT_PLACE_ANIMATION, LabelledValueComponent, ListPlaceNavComponent, ListPropertyColumnModel, LoadableComponent, 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, PlaceAuthService, PlaceComponent, PlaceComponentDeactivationHandler, PlaceDefinition, PlaceGuard, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, PopStateDuringInteractionNavigation, PopStateNavigation, PopupActivityTriggerComponent, PopupAwareComponent, PopupInteractionContextComponent, PopupMenuComponent, PopupMenuRendererComponent, PropertyColumnModel, ROUTE_PARAMETER_LIST_KEY, RemoveLastInteractionFromUrlNavigationSession, ResizeAwareComponent, ResizeObserverDirective, RouteId, ScrollContainerComponent, SearchInputComponent, SectionHeaderComponent, SelectInputActivity, SelectInputComponent, SelectionCellComponent, SelectionColumnModel, SelectionHeaderCellComponent, SeparatorComponent, SidePlaceNavigationComponent, SlideDownInteractionContextComponent, StringInputActivity, StringInputComponent, SwitchCaseComponent, SwitchCaseDefaultDirective, SwitchCaseOption, SwitchCaseWhenDirective, SynchroniseInteractionContextIdsWithRoute, TabbedPlaceNavigationComponent, TableBodyComponent, TableCellComponent, TableComponent, TableFilterModel, TableHeaderCellComponent, TableModel, TableMoreMenuComponent, TableMoreMenuPopupComponent, TableRowAttributesDirective, TableRowMenuComponent, TemplateCellRendererPortalRef, TextInputComponent, TextSearchContext, ToolBarComponent, Track, TreeExpansionModel, TreeInheritanceIconComponent, TreeLabelCellRendererComponent, TreeLabelColumnModel, TreeTableComponent, TreeTableModel, UrlService, UrlSnapshot, VerticalFocusContainerComponent, VisibilityService, Visit, VisitParameter, VisitParameterList, VisitSegment, VisitSegmentSanitiser, WaitUntilLeavingInteractionTransitionCancelled, WaitUntilLinkTriggeredNavigationInteractionCancellationTypeDetermined, WaitUntilPopStateDuringCanDeactivateInteractionFinishes, leftRightPlaceAnimation, markdownPillExtension, slideDownAndRightOnEnterAnimation, slideDownOnEnterAnimation, slideDownWhenOpenAnimation, slideRightOnEnterAnimation, treeNodeDecorator };
|
|
11727
12317
|
//# sourceMappingURL=coolon-angular-ui-powerups.mjs.map
|