@coolon/angular-ui-powerups 16.1.0-aplpha.10 → 16.1.0-aplpha.100
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 +74 -27
- package/assets/table.scss +33 -23
- 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 +27 -8
- package/esm2022/lib/components/disposable-component.mjs +19 -37
- package/esm2022/lib/components/exports.mjs +8 -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 +49 -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-row-controls/edit-row-controls.component.mjs +1 -1
- 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/footer/footer-row-model.mjs +38 -0
- package/esm2022/lib/components/tables/renderer/cell-portal-ref.mjs +19 -1
- package/esm2022/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.mjs +3 -3
- package/esm2022/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.mjs +3 -2
- package/esm2022/lib/components/tables/renderer/table-body/table-body.component.mjs +150 -40
- package/esm2022/lib/components/tables/renderer/table-cell/table-cell.component.mjs +1 -1
- package/esm2022/lib/components/tables/renderer/table-footer-row/table-footer-row.component.mjs +30 -0
- package/esm2022/lib/components/tables/renderer/table-more-menu/table-more-menu.component.mjs +7 -2
- package/esm2022/lib/components/tables/table/table-model.mjs +1 -1
- package/esm2022/lib/components/tables/table/table.component.mjs +36 -61
- package/esm2022/lib/components/tables/tree-table/decorated-tree-node.mjs +5 -4
- package/esm2022/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.mjs +1 -1
- 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/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.mjs +1 -1
- package/esm2022/lib/interaction/components/add-card-activity/add-card-activity.component.mjs +1 -1
- package/esm2022/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.mjs +1 -1
- 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 +3 -3
- package/esm2022/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.mjs +15 -4
- 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/guards/place.guard.mjs +2 -1
- 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-router.mjs +20 -18
- 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 +1256 -520
- 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 +56 -53
- package/lib/components/disposable-component.d.ts +11 -8
- package/lib/components/exports.d.ts +7 -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 +14 -6
- package/lib/components/tables/abstract-table.component.d.ts +4 -3
- package/lib/components/tables/column/column-manager.d.ts +19 -0
- package/lib/components/tables/column/column-model.d.ts +7 -3
- package/lib/components/tables/column/column-order-manager.d.ts +20 -0
- package/lib/components/tables/column/custom-template-column-model.d.ts +3 -2
- package/lib/components/tables/column/custom-value-column-model.d.ts +3 -2
- package/lib/components/tables/column/editor-controls-column-model.d.ts +3 -2
- package/lib/components/tables/column/list-propery-column-model.d.ts +3 -2
- package/lib/components/tables/column/property-column-model.d.ts +3 -2
- package/lib/components/tables/column/selection-column-model.d.ts +3 -2
- package/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.d.ts +1 -1
- package/lib/components/tables/editor/edit-session.d.ts +1 -1
- package/lib/components/tables/filter/text-search-predicate.d.ts +9 -0
- package/lib/components/tables/footer/footer-row-model.d.ts +22 -0
- package/lib/components/tables/renderer/cell-portal-ref.d.ts +14 -6
- package/lib/components/tables/renderer/table-body/table-body.component.d.ts +40 -16
- package/lib/components/tables/renderer/table-cell/table-cell.component.d.ts +1 -1
- package/lib/components/tables/renderer/table-footer-row/table-footer-row.component.d.ts +11 -0
- package/lib/components/tables/renderer/table-more-menu/table-more-menu.component.d.ts +2 -1
- package/lib/components/tables/table/table-model.d.ts +1 -1
- package/lib/components/tables/table/table.component.d.ts +14 -10
- package/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +1 -1
- package/lib/components/tables/tree-table/tree-label-column-model.d.ts +3 -2
- package/lib/components/tables/tree-table/tree-table-component.d.ts +3 -0
- package/lib/components/tables/tree-table/tree-table-model.d.ts +1 -1
- 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 +5 -3
- 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-router.d.ts +4 -0
- 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';
|
|
@@ -14,10 +14,10 @@ import { MatSelectModule } from '@angular/material/select';
|
|
|
14
14
|
import * as i3$1 from '@angular/material/tabs';
|
|
15
15
|
import { MatTabsModule, MAT_TABS_CONFIG } from '@angular/material/tabs';
|
|
16
16
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
17
|
-
import * as
|
|
17
|
+
import * as i1$4 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, ProxyRegistry, DirtyTrackingForm, 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
|
|
58
|
-
import { FlexModule, GridModule } from '@angular/flex-layout';
|
|
59
|
-
import * as i1$6 from '@angular/material/dialog';
|
|
59
|
+
import * as i1$7 from '@angular/material/dialog';
|
|
60
60
|
import { MatDialogModule, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';
|
|
61
|
-
import * as i1$
|
|
61
|
+
import * as i1$5 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
|
-
import * as i1$
|
|
64
|
+
import * as i1$6 from '@angular/cdk/overlay';
|
|
65
|
+
import { style, trigger, transition, animate, group, query } from '@angular/animations';
|
|
66
66
|
import { MatCardModule } from '@angular/material/card';
|
|
67
|
-
import * as i3$
|
|
67
|
+
import * as i3$2 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$: [{
|
|
1838
|
+
type: Input
|
|
1839
|
+
}], i18n: [{
|
|
1800
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
|
|
@@ -2619,6 +2772,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
2619
2772
|
}] } });
|
|
2620
2773
|
|
|
2621
2774
|
const HEADER_CELL_RENDERER_PORTAL = Symbol('aup-cell-header-renderer-component-ref');
|
|
2775
|
+
const FOOTER_CELL_RENDERER_PORTAL = Symbol('aup-cell-footer-renderer-component-ref');
|
|
2622
2776
|
const CELL_RENDERER_PORTAL = Symbol('aup-cell-renderer-component-ref');
|
|
2623
2777
|
const CELL_EDITOR_PORTAL = Symbol('aup-cell-editor-component-ref');
|
|
2624
2778
|
const PORTAL_RENDERER_COMPONENT = Symbol('aup-cell-renderer-portal-component');
|
|
@@ -2716,6 +2870,23 @@ class TemplateCellRendererPortalRef extends CellRendererPortalRef {
|
|
|
2716
2870
|
return new TemplatePortal(this.templateRef, this.viewContainer, { ...(data), $implicit: data.row });
|
|
2717
2871
|
}
|
|
2718
2872
|
}
|
|
2873
|
+
class CellFooterPortalRef extends CellPortalRef {
|
|
2874
|
+
componentType;
|
|
2875
|
+
initialiseHeader;
|
|
2876
|
+
constructor(componentType, initialiseHeader) {
|
|
2877
|
+
super();
|
|
2878
|
+
this.componentType = componentType;
|
|
2879
|
+
this.initialiseHeader = initialiseHeader;
|
|
2880
|
+
}
|
|
2881
|
+
initialiseHost(host, columnModel) {
|
|
2882
|
+
assert$1.isTruthy(host);
|
|
2883
|
+
host[HEADER_CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
|
|
2884
|
+
}
|
|
2885
|
+
// @Trace()
|
|
2886
|
+
onPortalAttached(host, portalComponent) {
|
|
2887
|
+
this.initialiseHeader(portalComponent, host.column);
|
|
2888
|
+
}
|
|
2889
|
+
}
|
|
2719
2890
|
|
|
2720
2891
|
class ColumnTextSearchFormatter {
|
|
2721
2892
|
}
|
|
@@ -2806,6 +2977,7 @@ class ColumnTextSearchWrapper extends ColumnTextSearchFormatter.Delegate {
|
|
|
2806
2977
|
}
|
|
2807
2978
|
class ColumnModel extends GarbageCollector {
|
|
2808
2979
|
columnId;
|
|
2980
|
+
order;
|
|
2809
2981
|
textPropertiesProvider;
|
|
2810
2982
|
_columnTextProperties;
|
|
2811
2983
|
_columnHeaderPortalRef;
|
|
@@ -2819,9 +2991,10 @@ class ColumnModel extends GarbageCollector {
|
|
|
2819
2991
|
dasherisedColumnId;
|
|
2820
2992
|
textSearchDelegate = new ColumnTextSearchWrapper();
|
|
2821
2993
|
visible$;
|
|
2822
|
-
constructor(columnId, textPropertiesProvider) {
|
|
2994
|
+
constructor(columnId, order, textPropertiesProvider) {
|
|
2823
2995
|
super();
|
|
2824
2996
|
this.columnId = columnId;
|
|
2997
|
+
this.order = order;
|
|
2825
2998
|
this.textPropertiesProvider = textPropertiesProvider;
|
|
2826
2999
|
const { valueOf } = Dsl.disposeWith(this);
|
|
2827
3000
|
this.installHeaderRenderer();
|
|
@@ -2866,6 +3039,14 @@ class ColumnModel extends GarbageCollector {
|
|
|
2866
3039
|
this._columnTextProperties = columnTextProperties;
|
|
2867
3040
|
return this;
|
|
2868
3041
|
}
|
|
3042
|
+
positionAfter(column) {
|
|
3043
|
+
this.order.position(this, { after: column });
|
|
3044
|
+
return this;
|
|
3045
|
+
}
|
|
3046
|
+
positionBefore(column) {
|
|
3047
|
+
this.order.position(this, { before: column });
|
|
3048
|
+
return this;
|
|
3049
|
+
}
|
|
2869
3050
|
getSearchTextFor(row) {
|
|
2870
3051
|
return this.textSearchDelegate.format(row);
|
|
2871
3052
|
}
|
|
@@ -2967,8 +3148,8 @@ __decorate([
|
|
|
2967
3148
|
|
|
2968
3149
|
class CustomTemplateColumnModel extends ColumnModel {
|
|
2969
3150
|
config = new TemplateCellRendererPortalRef();
|
|
2970
|
-
constructor(columnId, defaults) {
|
|
2971
|
-
super(columnId, defaults);
|
|
3151
|
+
constructor(columnId, order, defaults) {
|
|
3152
|
+
super(columnId, order, defaults);
|
|
2972
3153
|
this.configureCellRenderer(this.config);
|
|
2973
3154
|
}
|
|
2974
3155
|
setTemplate(templateRef, viewContainer, fillCell, padChild) {
|
|
@@ -3046,12 +3227,17 @@ class AbstractTableComponent extends DisposableComponent {
|
|
|
3046
3227
|
#showHeader_accessor_storage = true;
|
|
3047
3228
|
get showHeader() { return this.#showHeader_accessor_storage; }
|
|
3048
3229
|
set showHeader(value) { this.#showHeader_accessor_storage = value; }
|
|
3230
|
+
#enableScrolling$_accessor_storage = proxify((ValueModel));
|
|
3049
3231
|
/**
|
|
3050
3232
|
* Set to true to enable scrolling. Once enabled the table will have 0 implicit height. You will either
|
|
3051
3233
|
* need to set it explicitly e.g. height: 400px; or by using flex or grid layout to make it fill it's
|
|
3052
3234
|
* containment area.
|
|
3053
3235
|
*/
|
|
3054
|
-
enableScrolling
|
|
3236
|
+
get enableScrolling$() { return this.#enableScrolling$_accessor_storage; }
|
|
3237
|
+
set enableScrolling$(value) { this.#enableScrolling$_accessor_storage = value; }
|
|
3238
|
+
#enableScrolling_accessor_storage = false;
|
|
3239
|
+
get enableScrolling() { return this.#enableScrolling_accessor_storage; }
|
|
3240
|
+
set enableScrolling(value) { this.#enableScrolling_accessor_storage = value; }
|
|
3055
3241
|
columns;
|
|
3056
3242
|
columnIds;
|
|
3057
3243
|
columnsById;
|
|
@@ -3070,7 +3256,6 @@ class AbstractTableComponent extends DisposableComponent {
|
|
|
3070
3256
|
super();
|
|
3071
3257
|
this.injector = injector;
|
|
3072
3258
|
const { chain, when } = Dsl.disposeWith(this);
|
|
3073
|
-
this._visibleRows$.setDelegate(this._dataSource$);
|
|
3074
3259
|
when(chain(this._dataSource$).first()).becomesTruthy(it => {
|
|
3075
3260
|
if (it === this.identityOf(it)) {
|
|
3076
3261
|
console.warn("Table model identity function is using reference equality. This can cause lots of table re-rendering", {
|
|
@@ -3089,7 +3274,7 @@ class AbstractTableComponent extends DisposableComponent {
|
|
|
3089
3274
|
if (!model) {
|
|
3090
3275
|
lang$1.illegalState("aup-table tableModel is nil");
|
|
3091
3276
|
}
|
|
3092
|
-
this.columnsById = chain(model.columns).indexBy('columnId');
|
|
3277
|
+
this.columnsById = chain(model.columns$).indexBy('columnId');
|
|
3093
3278
|
this._dataSource$.setDelegate(model.dataSource$);
|
|
3094
3279
|
model.initialise(this.injector, (row) => this.identityOf(row));
|
|
3095
3280
|
}
|
|
@@ -3106,7 +3291,7 @@ class AbstractTableComponent extends DisposableComponent {
|
|
|
3106
3291
|
}
|
|
3107
3292
|
}
|
|
3108
3293
|
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 });
|
|
3294
|
+
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
3295
|
}
|
|
3111
3296
|
__decorate([
|
|
3112
3297
|
Proxify(),
|
|
@@ -3116,6 +3301,14 @@ __decorate([
|
|
|
3116
3301
|
StoreInValueModel(),
|
|
3117
3302
|
__metadata("design:type", Object)
|
|
3118
3303
|
], AbstractTableComponent.prototype, "showHeader", null);
|
|
3304
|
+
__decorate([
|
|
3305
|
+
Proxify(),
|
|
3306
|
+
__metadata("design:type", ValueModel)
|
|
3307
|
+
], AbstractTableComponent.prototype, "enableScrolling$", null);
|
|
3308
|
+
__decorate([
|
|
3309
|
+
StoreInValueModel(),
|
|
3310
|
+
__metadata("design:type", Boolean)
|
|
3311
|
+
], AbstractTableComponent.prototype, "enableScrolling", null);
|
|
3119
3312
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractTableComponent, decorators: [{
|
|
3120
3313
|
type: Component,
|
|
3121
3314
|
args: [{
|
|
@@ -3126,6 +3319,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
3126
3319
|
type: Input
|
|
3127
3320
|
}], showHeader: [{
|
|
3128
3321
|
type: Input
|
|
3322
|
+
}], enableScrolling$: [{
|
|
3323
|
+
type: Input
|
|
3129
3324
|
}], enableScrolling: [{
|
|
3130
3325
|
type: Input
|
|
3131
3326
|
}], baseCssClass: [{
|
|
@@ -3186,6 +3381,8 @@ class EditSession extends GarbageCollector {
|
|
|
3186
3381
|
// console.warn()
|
|
3187
3382
|
// }
|
|
3188
3383
|
this._liveRowValue$.value = produce(this._liveRowValue$.value, draft => {
|
|
3384
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
3385
|
+
// @ts-ignore
|
|
3189
3386
|
this.form.writeDirtyStateTo(draft);
|
|
3190
3387
|
});
|
|
3191
3388
|
});
|
|
@@ -3288,11 +3485,11 @@ class DefaultCellRendererComponent {
|
|
|
3288
3485
|
return this._value;
|
|
3289
3486
|
}
|
|
3290
3487
|
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" }] });
|
|
3488
|
+
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
3489
|
}
|
|
3293
3490
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DefaultCellRendererComponent, decorators: [{
|
|
3294
3491
|
type: Component,
|
|
3295
|
-
args: [{ selector: "aup-default-cell-renderer", template: "<span [innerHTML]=\"value| aupHighlight\"></span>\n" }]
|
|
3492
|
+
args: [{ selector: "aup-default-cell-renderer", template: "<span [innerHTML]=\"value?.toString()| aupHighlight\"></span>\n" }]
|
|
3296
3493
|
}], propDecorators: { value: [{
|
|
3297
3494
|
type: Input
|
|
3298
3495
|
}] } });
|
|
@@ -3308,7 +3505,8 @@ class SelectionHeaderCellComponent extends DisposableComponent {
|
|
|
3308
3505
|
super();
|
|
3309
3506
|
this.selectCommand = Command.create(() => {
|
|
3310
3507
|
this.selectionModel.toggleAllCommand.execute();
|
|
3311
|
-
})
|
|
3508
|
+
}).visibleWhile(this.selectionModel.toggleAllCommand.visible$)
|
|
3509
|
+
.enableWhile(this.selectionModel.toggleAllCommand.enabled$);
|
|
3312
3510
|
}
|
|
3313
3511
|
isSelected() {
|
|
3314
3512
|
return this.ifMultiSelectionModel(m => m.allSelected$.value, false);
|
|
@@ -3430,25 +3628,14 @@ class Bounds extends Dimension {
|
|
|
3430
3628
|
})(Bounds || (Bounds = {}));
|
|
3431
3629
|
|
|
3432
3630
|
class ResizeAwareComponent extends DisposableComponent {
|
|
3433
|
-
elementRef;
|
|
3434
|
-
ngZone;
|
|
3435
|
-
|
|
3436
|
-
constructor(elementRef, ngZone) {
|
|
3437
|
-
super();
|
|
3438
|
-
this.elementRef = elementRef;
|
|
3439
|
-
this.ngZone = ngZone;
|
|
3440
|
-
}
|
|
3631
|
+
elementRef = this.inject(ElementRef);
|
|
3632
|
+
ngZone = this.inject(NgZone);
|
|
3633
|
+
boundsTracker = new ResizeAwareComponent.ResizeTracker(this.elementRef, this.ngZone);
|
|
3441
3634
|
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());
|
|
3635
|
+
this.boundsTracker.notifyViewReady();
|
|
3449
3636
|
}
|
|
3450
3637
|
get bounds$() {
|
|
3451
|
-
return this.
|
|
3638
|
+
return this.boundsTracker.bounds$;
|
|
3452
3639
|
}
|
|
3453
3640
|
get nativeElement() {
|
|
3454
3641
|
return this.elementRef.nativeElement;
|
|
@@ -3458,57 +3645,160 @@ class ResizeAwareComponent extends DisposableComponent {
|
|
|
3458
3645
|
return this.bounds.relativePositionOf(point);
|
|
3459
3646
|
}
|
|
3460
3647
|
get bounds() {
|
|
3461
|
-
return this.
|
|
3462
|
-
}
|
|
3463
|
-
_updateBounds() {
|
|
3464
|
-
this._bounds$.value = Bounds.ofElement(this.nativeElement);
|
|
3648
|
+
return this.bounds$.value;
|
|
3465
3649
|
}
|
|
3466
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ResizeAwareComponent, deps:
|
|
3650
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ResizeAwareComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
3467
3651
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ResizeAwareComponent, usesInheritance: true, ngImport: i0 });
|
|
3468
3652
|
}
|
|
3469
3653
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ResizeAwareComponent, decorators: [{
|
|
3470
3654
|
type: Directive
|
|
3471
|
-
}]
|
|
3655
|
+
}] });
|
|
3656
|
+
(function (ResizeAwareComponent) {
|
|
3657
|
+
class ResizeTracker extends GarbageCollector {
|
|
3658
|
+
elementRef;
|
|
3659
|
+
ngZone;
|
|
3660
|
+
_bounds$ = new MutableValueModel(new Bounds(0, 0, 0, 0));
|
|
3661
|
+
width$;
|
|
3662
|
+
height$;
|
|
3663
|
+
top$;
|
|
3664
|
+
left$;
|
|
3665
|
+
bottom$;
|
|
3666
|
+
right$;
|
|
3667
|
+
constructor(elementRef, ngZone) {
|
|
3668
|
+
super();
|
|
3669
|
+
this.elementRef = elementRef;
|
|
3670
|
+
this.ngZone = ngZone;
|
|
3671
|
+
const { chain } = Dsl.disposeWith(this);
|
|
3672
|
+
this.width$ = chain(this.bounds$).pluck("width");
|
|
3673
|
+
this.height$ = chain(this.bounds$).pluck("height");
|
|
3674
|
+
this.top$ = chain(this.bounds$).pluck("top");
|
|
3675
|
+
this.left$ = chain(this.bounds$).pluck("left");
|
|
3676
|
+
this.bottom$ = chain.numericValue(this.top$).add(this.height$);
|
|
3677
|
+
this.right$ = chain.numericValue(this.left$).add(this.width$);
|
|
3678
|
+
}
|
|
3679
|
+
notifyViewReady() {
|
|
3680
|
+
const element = this.elementRef.nativeElement;
|
|
3681
|
+
const ro = new ResizeObserver((entries, observer) => {
|
|
3682
|
+
this.ngZone.run(() => this._updateBounds());
|
|
3683
|
+
});
|
|
3684
|
+
ro.observe(element);
|
|
3685
|
+
this.onDispose(() => ro.disconnect());
|
|
3686
|
+
setTimeout(() => this._updateBounds());
|
|
3687
|
+
}
|
|
3688
|
+
get bounds$() {
|
|
3689
|
+
return this._bounds$.readonly$;
|
|
3690
|
+
}
|
|
3691
|
+
get nativeElement() {
|
|
3692
|
+
return this.elementRef.nativeElement;
|
|
3693
|
+
}
|
|
3694
|
+
// TODO: Make this handle body scroll
|
|
3695
|
+
relativePositionOf(point) {
|
|
3696
|
+
return this.bounds.relativePositionOf(point);
|
|
3697
|
+
}
|
|
3698
|
+
get bounds() {
|
|
3699
|
+
return this._bounds$.value;
|
|
3700
|
+
}
|
|
3701
|
+
_updateBounds() {
|
|
3702
|
+
this._bounds$.value = Bounds.ofElement(this.nativeElement);
|
|
3703
|
+
}
|
|
3704
|
+
}
|
|
3705
|
+
ResizeAwareComponent.ResizeTracker = ResizeTracker;
|
|
3706
|
+
})(ResizeAwareComponent || (ResizeAwareComponent = {}));
|
|
3472
3707
|
|
|
3473
|
-
|
|
3474
|
-
|
|
3475
|
-
|
|
3708
|
+
var ColumnOrderManager;
|
|
3709
|
+
(function (ColumnOrderManager) {
|
|
3710
|
+
function processPosition(position, callback) {
|
|
3711
|
+
if (position) {
|
|
3712
|
+
const keys = Object.keys(position);
|
|
3713
|
+
if (keys.includes("before")) {
|
|
3714
|
+
return position["before"] ? callback.before(position["before"]) : callback.first();
|
|
3715
|
+
}
|
|
3716
|
+
else {
|
|
3717
|
+
return position["after"] ? callback.after(position["after"]) : callback.last();
|
|
3718
|
+
}
|
|
3719
|
+
}
|
|
3720
|
+
else {
|
|
3721
|
+
return callback.last();
|
|
3722
|
+
}
|
|
3723
|
+
}
|
|
3724
|
+
ColumnOrderManager.processPosition = processPosition;
|
|
3725
|
+
})(ColumnOrderManager || (ColumnOrderManager = {}));
|
|
3726
|
+
|
|
3727
|
+
class ColumnRef {
|
|
3728
|
+
column;
|
|
3729
|
+
position;
|
|
3730
|
+
constructor(column, position) {
|
|
3731
|
+
this.column = column;
|
|
3732
|
+
this.position = position;
|
|
3733
|
+
}
|
|
3734
|
+
}
|
|
3735
|
+
class ColumnManager extends GarbageCollector {
|
|
3736
|
+
_columnRefs$ = new MutableListModel();
|
|
3737
|
+
orderedColumnRefs$;
|
|
3738
|
+
_columnsById$;
|
|
3739
|
+
allColumns$;
|
|
3740
|
+
columnVisibilities$ = new WatchList();
|
|
3741
|
+
visibleColumns$;
|
|
3476
3742
|
constructor() {
|
|
3477
3743
|
super();
|
|
3478
3744
|
const { chain } = Dsl.disposeWith(this);
|
|
3479
|
-
this.
|
|
3745
|
+
this.orderedColumnRefs$ = chain(this._columnRefs$).orderBy("position", "asc");
|
|
3746
|
+
this.allColumns$ = this.orderedColumnRefs$.pluck("column");
|
|
3747
|
+
this._columnsById$ = chain(this.allColumns$).indexBy('columnId');
|
|
3748
|
+
this.visibleColumns$ = chain(this.allColumns$).select(it => it.visible$.value, {
|
|
3749
|
+
dependsOn: this.columnVisibilities$
|
|
3750
|
+
});
|
|
3480
3751
|
}
|
|
3481
|
-
|
|
3482
|
-
|
|
3752
|
+
position(column, newPosition) {
|
|
3753
|
+
const target = this._columnRefs$.query().findMatching(it => it.column === column);
|
|
3754
|
+
const position = this.computePosition(newPosition);
|
|
3755
|
+
this._columnRefs$.replace(target, { with: new ColumnRef(target.column, position) });
|
|
3483
3756
|
}
|
|
3484
3757
|
getColumn(id) {
|
|
3485
|
-
return this.
|
|
3758
|
+
return this._columnsById$.get(id);
|
|
3486
3759
|
}
|
|
3487
3760
|
hasColumn(id) {
|
|
3488
|
-
return !!this.
|
|
3761
|
+
return !!this._columnsById$.get(id);
|
|
3489
3762
|
}
|
|
3490
3763
|
hasMatchingColumn(row, regex) {
|
|
3491
3764
|
// only search the visible columns
|
|
3492
|
-
return !!this.value.find(c => regex.test(c.getSearchTextFor(row)));
|
|
3765
|
+
return !!this.visibleColumns$.value.find(c => regex.test(c.getSearchTextFor(row)));
|
|
3493
3766
|
}
|
|
3494
|
-
addColumn(column,
|
|
3767
|
+
addColumn(column, position) {
|
|
3495
3768
|
if (this.hasColumn(column.columnId)) {
|
|
3496
3769
|
lang.illegalState(`Column with id=${column.columnId} already exists`);
|
|
3497
3770
|
}
|
|
3498
3771
|
this.registerDisposable(column);
|
|
3499
|
-
this.
|
|
3500
|
-
|
|
3501
|
-
|
|
3502
|
-
|
|
3503
|
-
|
|
3504
|
-
|
|
3772
|
+
this._columnRefs$.push(new ColumnRef(column, this.computePosition(position)));
|
|
3773
|
+
this.columnVisibilities$.add(column.visible$);
|
|
3774
|
+
return column;
|
|
3775
|
+
}
|
|
3776
|
+
computePosition(position) {
|
|
3777
|
+
const q = this.orderedColumnRefs$.query();
|
|
3778
|
+
return ColumnOrderManager.processPosition(position, {
|
|
3779
|
+
before(col) {
|
|
3780
|
+
const index = q.findIndex(ref => ref.column === col);
|
|
3781
|
+
const beforeCol = q.value[index];
|
|
3782
|
+
const afterCol = index - 1 >= 0 ? q.value[index - 1] : undefined;
|
|
3783
|
+
return generateKeyBetween(afterCol?.position, beforeCol.position);
|
|
3784
|
+
},
|
|
3785
|
+
after(col) {
|
|
3786
|
+
const index = q.findIndex(ref => ref.column === col);
|
|
3787
|
+
const afterCol = q.value[index];
|
|
3788
|
+
const beforeCol = index + 1 < q.length ? q.value[index + 1] : undefined;
|
|
3789
|
+
return generateKeyBetween(afterCol.position, beforeCol?.position);
|
|
3790
|
+
},
|
|
3791
|
+
first() {
|
|
3792
|
+
return generateKeyBetween(null, q.first()?.position);
|
|
3793
|
+
},
|
|
3794
|
+
last() {
|
|
3795
|
+
// add it to the end of the list
|
|
3796
|
+
return generateKeyBetween(q.last()?.position, null);
|
|
3505
3797
|
}
|
|
3506
|
-
this.registerDisposable(this.trackSource(column.visible$));
|
|
3507
3798
|
});
|
|
3508
|
-
return column;
|
|
3509
3799
|
}
|
|
3510
3800
|
doComputeValue() {
|
|
3511
|
-
return this.
|
|
3801
|
+
return this.allColumns$.value.filter(c => c.visible$.value);
|
|
3512
3802
|
}
|
|
3513
3803
|
}
|
|
3514
3804
|
|
|
@@ -3542,8 +3832,8 @@ function EnableCellTextSearch(options) {
|
|
|
3542
3832
|
|
|
3543
3833
|
class CustomValueColumnModel extends ColumnModel {
|
|
3544
3834
|
getValue;
|
|
3545
|
-
constructor(columnId, defaults, getValue) {
|
|
3546
|
-
super(columnId, defaults);
|
|
3835
|
+
constructor(columnId, order, defaults, getValue) {
|
|
3836
|
+
super(columnId, order, defaults);
|
|
3547
3837
|
this.getValue = getValue;
|
|
3548
3838
|
this.cellRenderer(DefaultCellRendererComponent);
|
|
3549
3839
|
}
|
|
@@ -3551,17 +3841,17 @@ class CustomValueColumnModel extends ColumnModel {
|
|
|
3551
3841
|
this.configureColumnTextSearch(EnableCellTextSearch.getFormatter(componentType, () => new ColumnTextSearchFormatter.Null()), row => this.getValue(row));
|
|
3552
3842
|
this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
|
|
3553
3843
|
if (firstTime) {
|
|
3554
|
-
if (isFunction
|
|
3844
|
+
if (isFunction(onComponentInitOrOptions)) {
|
|
3555
3845
|
onComponentInitOrOptions(component);
|
|
3556
3846
|
}
|
|
3557
3847
|
else {
|
|
3558
|
-
if (isFunction
|
|
3848
|
+
if (isFunction(onComponentInitOrOptions?.onComponentInit)) {
|
|
3559
3849
|
onComponentInitOrOptions.onComponentInit(component);
|
|
3560
3850
|
}
|
|
3561
3851
|
}
|
|
3562
3852
|
}
|
|
3563
3853
|
component.value = this.getValue(rowData.row);
|
|
3564
|
-
if (!isFunction
|
|
3854
|
+
if (!isFunction(onComponentInitOrOptions) && isFunction(onComponentInitOrOptions?.onRowUpdate)) {
|
|
3565
3855
|
onComponentInitOrOptions.onRowUpdate(component, rowData.row);
|
|
3566
3856
|
}
|
|
3567
3857
|
}));
|
|
@@ -3573,8 +3863,8 @@ class CustomValueColumnModel extends ColumnModel {
|
|
|
3573
3863
|
}
|
|
3574
3864
|
|
|
3575
3865
|
class EditorControlColumnModel extends ColumnModel {
|
|
3576
|
-
constructor(columnId, saveCommandFactory, defaults) {
|
|
3577
|
-
super(columnId, defaults);
|
|
3866
|
+
constructor(columnId, order, saveCommandFactory, defaults) {
|
|
3867
|
+
super(columnId, order, defaults);
|
|
3578
3868
|
this.cellRenderer(EditRowControlsComponent);
|
|
3579
3869
|
}
|
|
3580
3870
|
cellRenderer(componentType) {
|
|
@@ -3599,8 +3889,8 @@ class ListPropertyColumnModel extends ColumnModel {
|
|
|
3599
3889
|
intermediate.map(v => v?.toString()).join(", ") :
|
|
3600
3890
|
intermediate?.toString();
|
|
3601
3891
|
};
|
|
3602
|
-
constructor(id, property, defaults) {
|
|
3603
|
-
super(id, defaults);
|
|
3892
|
+
constructor(id, order, property, defaults) {
|
|
3893
|
+
super(id, order, defaults);
|
|
3604
3894
|
this.property = property;
|
|
3605
3895
|
this.cellRenderer(DefaultCellRendererComponent);
|
|
3606
3896
|
}
|
|
@@ -3616,7 +3906,7 @@ class ListPropertyColumnModel extends ColumnModel {
|
|
|
3616
3906
|
}
|
|
3617
3907
|
cellEditor(editor, validatorsOrInitialiser, initialiseComponent) {
|
|
3618
3908
|
const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
|
|
3619
|
-
const initialiser = isFunction
|
|
3909
|
+
const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
|
|
3620
3910
|
this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
|
|
3621
3911
|
const formListModel = editSession.form.pluckList(this.property);
|
|
3622
3912
|
if (validators) {
|
|
@@ -3645,8 +3935,8 @@ class PropertyColumnModel extends ColumnModel {
|
|
|
3645
3935
|
_defaultSearchTextFormatter = (value) => {
|
|
3646
3936
|
return (this._userFormat ?? Functions.identity)(value)?.toString();
|
|
3647
3937
|
};
|
|
3648
|
-
constructor(id, property, defaults) {
|
|
3649
|
-
super(id, defaults);
|
|
3938
|
+
constructor(id, order, property, defaults) {
|
|
3939
|
+
super(id, order, defaults);
|
|
3650
3940
|
this.property = property;
|
|
3651
3941
|
this.cellRenderer(DefaultCellRendererComponent);
|
|
3652
3942
|
}
|
|
@@ -3654,11 +3944,11 @@ class PropertyColumnModel extends ColumnModel {
|
|
|
3654
3944
|
this.configureColumnTextSearch(EnableCellTextSearch.getFormatter(componentType, () => ColumnTextSearchFormatter.forFormatter(this._defaultSearchTextFormatter)), row => row[this.property]);
|
|
3655
3945
|
this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
|
|
3656
3946
|
if (firstTime) {
|
|
3657
|
-
if (isFunction
|
|
3947
|
+
if (isFunction(onComponentInitOrOptions)) {
|
|
3658
3948
|
onComponentInitOrOptions(component);
|
|
3659
3949
|
}
|
|
3660
3950
|
else {
|
|
3661
|
-
if (isFunction
|
|
3951
|
+
if (isFunction(onComponentInitOrOptions?.onComponentInit)) {
|
|
3662
3952
|
onComponentInitOrOptions.onComponentInit(component);
|
|
3663
3953
|
}
|
|
3664
3954
|
}
|
|
@@ -3683,7 +3973,7 @@ class PropertyColumnModel extends ColumnModel {
|
|
|
3683
3973
|
component[ColumnModel.CELL_RENDERER_COMPONENT_ROW_CACHE] = rowData.row;
|
|
3684
3974
|
let disableEditCallback = false;
|
|
3685
3975
|
if (firstTime) {
|
|
3686
|
-
if (isFunction
|
|
3976
|
+
if (isFunction(options?.onComponentInit)) {
|
|
3687
3977
|
options.onComponentInit(component);
|
|
3688
3978
|
}
|
|
3689
3979
|
// install our edit callback
|
|
@@ -3698,7 +3988,7 @@ class PropertyColumnModel extends ColumnModel {
|
|
|
3698
3988
|
disableEditCallback = true;
|
|
3699
3989
|
component.value = rowData.row[this.property];
|
|
3700
3990
|
disableEditCallback = false;
|
|
3701
|
-
if (!isFunction
|
|
3991
|
+
if (!isFunction(options) && isFunction(options?.onRowUpdate)) {
|
|
3702
3992
|
options.onRowUpdate(component, rowData.row);
|
|
3703
3993
|
}
|
|
3704
3994
|
}));
|
|
@@ -3706,7 +3996,7 @@ class PropertyColumnModel extends ColumnModel {
|
|
|
3706
3996
|
}
|
|
3707
3997
|
cellEditor(editor, validatorsOrInitialiser, onComponentInit) {
|
|
3708
3998
|
const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
|
|
3709
|
-
const initialiser = isFunction
|
|
3999
|
+
const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
|
|
3710
4000
|
this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
|
|
3711
4001
|
const formValueModel = editSession.form.pluck(this.property);
|
|
3712
4002
|
if (validators) {
|
|
@@ -3733,8 +4023,8 @@ class SelectionColumnModel extends ColumnModel {
|
|
|
3733
4023
|
selectionModel;
|
|
3734
4024
|
_enableHeaderControls = true;
|
|
3735
4025
|
_color = "accent";
|
|
3736
|
-
constructor(columnId, defaults, selectionModel) {
|
|
3737
|
-
super(columnId, defaults);
|
|
4026
|
+
constructor(columnId, order, defaults, selectionModel) {
|
|
4027
|
+
super(columnId, order, defaults);
|
|
3738
4028
|
this.selectionModel = selectionModel;
|
|
3739
4029
|
const { chain } = Dsl.disposeWith(this);
|
|
3740
4030
|
this._selectRowOnClick(false);
|
|
@@ -3775,6 +4065,42 @@ class SelectionColumnModel extends ColumnModel {
|
|
|
3775
4065
|
}
|
|
3776
4066
|
}
|
|
3777
4067
|
|
|
4068
|
+
let RowClass$1 = class RowClass {
|
|
4069
|
+
className;
|
|
4070
|
+
matches;
|
|
4071
|
+
constructor(className, matches) {
|
|
4072
|
+
this.className = className;
|
|
4073
|
+
this.matches = matches;
|
|
4074
|
+
}
|
|
4075
|
+
};
|
|
4076
|
+
class FooterRowModel {
|
|
4077
|
+
_rowClasses = [];
|
|
4078
|
+
noPadding() {
|
|
4079
|
+
this.addClass("no-padding");
|
|
4080
|
+
}
|
|
4081
|
+
addClass(className, condition) {
|
|
4082
|
+
this._rowClasses.push(new RowClass$1(className, condition ?? (() => true)));
|
|
4083
|
+
}
|
|
4084
|
+
}
|
|
4085
|
+
(function (FooterRowModel) {
|
|
4086
|
+
class Impl extends FooterRowModel {
|
|
4087
|
+
component;
|
|
4088
|
+
onInit;
|
|
4089
|
+
portal;
|
|
4090
|
+
constructor(component, onInit) {
|
|
4091
|
+
super();
|
|
4092
|
+
this.component = component;
|
|
4093
|
+
this.onInit = onInit;
|
|
4094
|
+
this.portal = new ComponentPortal(component);
|
|
4095
|
+
}
|
|
4096
|
+
getActiveRowClasses() {
|
|
4097
|
+
return this._rowClasses.filter(c => c.matches()).map(c => c.className).join(" ");
|
|
4098
|
+
}
|
|
4099
|
+
}
|
|
4100
|
+
FooterRowModel.Impl = Impl;
|
|
4101
|
+
})(FooterRowModel || (FooterRowModel = {}));
|
|
4102
|
+
ProxyRegistry.registerOneTimeBinding(FooterRowModel);
|
|
4103
|
+
|
|
3778
4104
|
class TableMoreMenuComponent extends DisposableComponent {
|
|
3779
4105
|
value$ = new MutableValueModel();
|
|
3780
4106
|
#value_accessor_storage;
|
|
@@ -3784,13 +4110,15 @@ class TableMoreMenuComponent extends DisposableComponent {
|
|
|
3784
4110
|
popupType$ = new MutableValueModel();
|
|
3785
4111
|
popupComponentPortal$;
|
|
3786
4112
|
_visible$ = this.registerDisposable(new DelegatingValueModel());
|
|
4113
|
+
initialiseCallback;
|
|
3787
4114
|
constructor() {
|
|
3788
4115
|
super();
|
|
3789
4116
|
const { chain } = Dsl.disposeWith(this);
|
|
3790
4117
|
this.popupComponentPortal$ = chain(this.popupType$).map(type => new ComponentPortal(type));
|
|
3791
4118
|
}
|
|
3792
|
-
configurePopupComponentType(popupComponentType) {
|
|
4119
|
+
configurePopupComponentType(popupComponentType, configureCallback) {
|
|
3793
4120
|
this.popupType$.value = popupComponentType;
|
|
4121
|
+
this.initialiseCallback = configureCallback;
|
|
3794
4122
|
}
|
|
3795
4123
|
// Stops tree selection when clicking the menu button
|
|
3796
4124
|
preventDefault($event) {
|
|
@@ -3801,12 +4129,15 @@ class TableMoreMenuComponent extends DisposableComponent {
|
|
|
3801
4129
|
const component = $event.instance;
|
|
3802
4130
|
component.initialise(this.value$, Command.create(() => this.matMenuTrigger.closeMenu()));
|
|
3803
4131
|
this._visible$.setDelegate(component.visible$);
|
|
4132
|
+
if (this.initialiseCallback) {
|
|
4133
|
+
this.initialiseCallback(component);
|
|
4134
|
+
}
|
|
3804
4135
|
}
|
|
3805
4136
|
get visible$() {
|
|
3806
4137
|
return this._visible$.readonly$;
|
|
3807
4138
|
}
|
|
3808
4139
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableMoreMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3809
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableMoreMenuComponent, selector: "aup-table-more-menu", host: { listeners: { "click": "preventDefault($event)" } }, viewQueries: [{ propertyName: "matMenuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <ng-template matMenuContent [cdkPortalOutlet]=\"popupComponentPortal$.value\"\n (attached)=\"initialise($event)\"></ng-template>\n</mat-menu>\n\n<button mat-icon-button [matMenuTriggerFor]=\"menu\" data-cy=\"more-menu-trigger\" *ngIf=\"visible$.value\">\n <aup-icon icon=\"mat:more_vert\"></aup-icon>\n</button>\n", styles: [":host{display:inline;text-align:end}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type:
|
|
4140
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableMoreMenuComponent, selector: "aup-table-more-menu", host: { listeners: { "click": "preventDefault($event)" } }, viewQueries: [{ propertyName: "matMenuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <ng-template matMenuContent [cdkPortalOutlet]=\"popupComponentPortal$.value\"\n (attached)=\"initialise($event)\"></ng-template>\n</mat-menu>\n\n<button mat-icon-button [matMenuTriggerFor]=\"menu\" data-cy=\"more-menu-trigger\" *ngIf=\"visible$.value\">\n <aup-icon icon=\"mat:more_vert\"></aup-icon>\n</button>\n", styles: [":host{display:inline;text-align:end}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1$4.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "directive", type: i4.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }] });
|
|
3810
4141
|
}
|
|
3811
4142
|
__decorate([
|
|
3812
4143
|
StoreInValueModel(),
|
|
@@ -3835,16 +4166,25 @@ class RowClass {
|
|
|
3835
4166
|
this.matches = matches;
|
|
3836
4167
|
}
|
|
3837
4168
|
}
|
|
4169
|
+
class RowAttribute {
|
|
4170
|
+
attributeName;
|
|
4171
|
+
getValue;
|
|
4172
|
+
constructor(attributeName, getValue) {
|
|
4173
|
+
this.attributeName = attributeName;
|
|
4174
|
+
this.getValue = getValue;
|
|
4175
|
+
}
|
|
4176
|
+
}
|
|
3838
4177
|
class AbstractTableModel extends GarbageCollector {
|
|
3839
4178
|
_dataSource$ = this.registerDisposable(new DelegatingListModel());
|
|
3840
4179
|
_filteredRows$ = this.registerDisposable(new DelegatingListModel());
|
|
3841
4180
|
_visibleRows$ = this.registerDisposable(new DelegatingListModel());
|
|
3842
|
-
|
|
4181
|
+
columnManager = this.registerDisposable(new ColumnManager());
|
|
3843
4182
|
_editorSessions = new MutableListModel();
|
|
3844
4183
|
_rowsBeingEdited$;
|
|
3845
4184
|
saveCommandFactory;
|
|
3846
4185
|
_editorSessionByRowId;
|
|
3847
4186
|
rowClassNamePredicates = [];
|
|
4187
|
+
rowAttributeGenerators = [];
|
|
3848
4188
|
_columnTextPropertiesLookup;
|
|
3849
4189
|
editing$;
|
|
3850
4190
|
firstEditableColumn$;
|
|
@@ -3861,6 +4201,7 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
3861
4201
|
selectedItems$;
|
|
3862
4202
|
leadSelection$;
|
|
3863
4203
|
hasSelection$;
|
|
4204
|
+
footerRowModel;
|
|
3864
4205
|
constructor() {
|
|
3865
4206
|
super();
|
|
3866
4207
|
const { chain } = Dsl.disposeWith(this);
|
|
@@ -3869,15 +4210,15 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
3869
4210
|
});
|
|
3870
4211
|
this._editorSessionByRowId = chain(this._editorSessions).indexBy("rowId");
|
|
3871
4212
|
this.editing$ = chain(this._editorSessions).count().isGreaterThan(0);
|
|
3872
|
-
this.textSearchPredicate$ = chain(this.visibleColumns).
|
|
4213
|
+
this.textSearchPredicate$ = chain(this.visibleColumns$).reduceAll(columns => {
|
|
3873
4214
|
return (row, regex) => {
|
|
3874
4215
|
return (!regex || !!columns.find(c => regex.test(c.getSearchTextFor(row))));
|
|
3875
4216
|
};
|
|
3876
4217
|
});
|
|
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.
|
|
4218
|
+
this.firstEditableColumn$ = chain(this.columns$).select(c => c.hasEditorPortal()).first();
|
|
4219
|
+
this.firstVisibleColumn$ = chain(this.visibleColumns$).first();
|
|
4220
|
+
this.lastVisibleColumn$ = chain(this.visibleColumns$).last();
|
|
4221
|
+
this.rowSelectionDisabledOnAllColumns$ = chain(this.columnManager.visibleColumns$).select(column => column.isRowSelectionEnabled()).count().equals(0);
|
|
3881
4222
|
this.dataSourceEmpty$ = chain(this.dataSource$).isEmpty();
|
|
3882
4223
|
this.selectedItems$ = this.selectionModelProxy.selectedItems$;
|
|
3883
4224
|
this.leadSelection$ = this.selectionModelProxy.leadSelection$;
|
|
@@ -3901,7 +4242,7 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
3901
4242
|
],
|
|
3902
4243
|
parent: injector
|
|
3903
4244
|
});
|
|
3904
|
-
this.columns
|
|
4245
|
+
this.columns$.value.forEach(c => c.initialise(customInjector));
|
|
3905
4246
|
this.identityOf = identityOf;
|
|
3906
4247
|
}
|
|
3907
4248
|
get dataSource$() {
|
|
@@ -3954,19 +4295,19 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
3954
4295
|
});
|
|
3955
4296
|
});
|
|
3956
4297
|
}
|
|
3957
|
-
get columns() {
|
|
3958
|
-
return this.
|
|
4298
|
+
get columns$() {
|
|
4299
|
+
return this.columnManager.allColumns$;
|
|
3959
4300
|
}
|
|
3960
|
-
get visibleColumns() {
|
|
3961
|
-
return this.
|
|
4301
|
+
get visibleColumns$() {
|
|
4302
|
+
return this.columnManager.visibleColumns$;
|
|
3962
4303
|
}
|
|
3963
4304
|
pluck(property, options) {
|
|
3964
4305
|
const columnId = options?.columnId || property.toString();
|
|
3965
|
-
return this.addColumn(new PropertyColumnModel(columnId, property, () => this.getColumnTextProperties(columnId)));
|
|
4306
|
+
return this.addColumn(new PropertyColumnModel(columnId, this.columnManager, property, () => this.getColumnTextProperties(columnId)));
|
|
3966
4307
|
}
|
|
3967
4308
|
pluckList(property, options) {
|
|
3968
4309
|
const columnId = options?.columnId || property.toString();
|
|
3969
|
-
return this.addColumn(new ListPropertyColumnModel(columnId, property, () => this.getColumnTextProperties(columnId)));
|
|
4310
|
+
return this.addColumn(new ListPropertyColumnModel(columnId, this.columnManager, property, () => this.getColumnTextProperties(columnId)));
|
|
3970
4311
|
}
|
|
3971
4312
|
// TODO: clean this up and assign the selection model on teh table directly.
|
|
3972
4313
|
// tableModel.useSelectionModel(model) and have the seleciton column automatically
|
|
@@ -3975,44 +4316,52 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
3975
4316
|
_addSelectionColumn(selectionModel, visible) {
|
|
3976
4317
|
assert.isNil(this.selectionColumnModel);
|
|
3977
4318
|
const columnId = "selection-column";
|
|
3978
|
-
this.selectionColumnModel = new SelectionColumnModel(columnId, () => this.getColumnTextProperties(columnId), this.selectionModelProxy);
|
|
4319
|
+
this.selectionColumnModel = new SelectionColumnModel(columnId, this.columnManager, () => this.getColumnTextProperties(columnId), this.selectionModelProxy);
|
|
3979
4320
|
this.selectionColumnModel.useSelectionModel(selectionModel);
|
|
3980
4321
|
this.addRowClass("aup-row-selected", row => this.selectionColumnModel.isSelected(row));
|
|
3981
|
-
const selectionColumnModel = this.addColumn(this.selectionColumnModel,
|
|
3982
|
-
if (!isNil
|
|
4322
|
+
const selectionColumnModel = this.addColumn(this.selectionColumnModel, { before: null }); // first column
|
|
4323
|
+
if (!isNil(visible)) {
|
|
3983
4324
|
selectionColumnModel.visibleWhile(visible instanceof ValueModel ? visible : ValueModel.constant(visible));
|
|
3984
4325
|
}
|
|
3985
4326
|
return selectionColumnModel;
|
|
3986
4327
|
}
|
|
3987
4328
|
addEditControls(saveCommandFactory, formFactory) {
|
|
3988
4329
|
this.saveCommandFactory = saveCommandFactory;
|
|
3989
|
-
if (isFunction
|
|
4330
|
+
if (isFunction(formFactory)) {
|
|
3990
4331
|
this._createForm = formFactory;
|
|
3991
4332
|
}
|
|
3992
4333
|
const columnId = "editControls";
|
|
3993
|
-
return this.addColumn(new EditorControlColumnModel(columnId, saveCommandFactory, () => this.getColumnTextProperties(columnId)));
|
|
4334
|
+
return this.addColumn(new EditorControlColumnModel(columnId, this.columnManager, saveCommandFactory, () => this.getColumnTextProperties(columnId)));
|
|
3994
4335
|
}
|
|
3995
4336
|
addCustomColumn(columnId, dataAccessor) {
|
|
3996
|
-
return this.addColumn(new CustomValueColumnModel(columnId, () => this.getColumnTextProperties(columnId), dataAccessor));
|
|
4337
|
+
return this.addColumn(new CustomValueColumnModel(columnId, this.columnManager, () => this.getColumnTextProperties(columnId), dataAccessor));
|
|
3997
4338
|
}
|
|
3998
4339
|
addComponentColumn(columnId, component, onComponentInitOrOptions) {
|
|
3999
|
-
return this.addColumn(new CustomValueColumnModel(columnId, () => this.getColumnTextProperties(columnId), row => row)).cellRenderer(component, onComponentInitOrOptions);
|
|
4340
|
+
return this.addColumn(new CustomValueColumnModel(columnId, this.columnManager, () => this.getColumnTextProperties(columnId), row => row)).cellRenderer(component, onComponentInitOrOptions);
|
|
4000
4341
|
}
|
|
4001
|
-
addMoreMenu(componentClass) {
|
|
4342
|
+
addMoreMenu(componentClass, initialiseCallback) {
|
|
4002
4343
|
return this.addComponentColumn("more-menu", TableMoreMenuComponent, (component) => {
|
|
4003
|
-
component.configurePopupComponentType(componentClass);
|
|
4344
|
+
component.configurePopupComponentType(componentClass, initialiseCallback);
|
|
4004
4345
|
}).columnTextProperties({
|
|
4005
4346
|
headerText() {
|
|
4006
4347
|
return "";
|
|
4007
4348
|
}
|
|
4008
4349
|
});
|
|
4009
4350
|
}
|
|
4351
|
+
addFooterRow(component, initialiseCallback) {
|
|
4352
|
+
assert.isNil(this.footerRowModel);
|
|
4353
|
+
this.footerRowModel = new FooterRowModel.Impl(component, initialiseCallback);
|
|
4354
|
+
return this.footerRowModel;
|
|
4355
|
+
}
|
|
4010
4356
|
addTemplateColumn(columnId) {
|
|
4011
|
-
return this.addColumn(new CustomTemplateColumnModel(columnId, () => this.getColumnTextProperties(columnId)));
|
|
4357
|
+
return this.addColumn(new CustomTemplateColumnModel(columnId, this.columnManager, () => this.getColumnTextProperties(columnId)));
|
|
4012
4358
|
}
|
|
4013
4359
|
addRowClass(className, predicate) {
|
|
4014
4360
|
this.rowClassNamePredicates.push(new RowClass(className, predicate));
|
|
4015
4361
|
}
|
|
4362
|
+
addRowAttribute(attributeName, getValue) {
|
|
4363
|
+
this.rowAttributeGenerators.push(new RowAttribute(attributeName, getValue));
|
|
4364
|
+
}
|
|
4016
4365
|
getRowClasses(row) {
|
|
4017
4366
|
const classNames = [];
|
|
4018
4367
|
this.rowClassNamePredicates.forEach(i => {
|
|
@@ -4022,8 +4371,13 @@ class AbstractTableModel extends GarbageCollector {
|
|
|
4022
4371
|
});
|
|
4023
4372
|
return classNames;
|
|
4024
4373
|
}
|
|
4025
|
-
|
|
4026
|
-
return this.
|
|
4374
|
+
getRowAttributes(row) {
|
|
4375
|
+
return this.rowAttributeGenerators.reduce((result, generator) => {
|
|
4376
|
+
return { ...result, [generator.attributeName]: generator.getValue(row) };
|
|
4377
|
+
}, {});
|
|
4378
|
+
}
|
|
4379
|
+
addColumn(column, position) {
|
|
4380
|
+
return this.columnManager.addColumn(column, position);
|
|
4027
4381
|
}
|
|
4028
4382
|
columnTextProperties(columnTextProperties) {
|
|
4029
4383
|
this._columnTextPropertiesLookup = columnTextProperties;
|
|
@@ -4140,7 +4494,7 @@ class TableCellComponent extends DisposableComponent {
|
|
|
4140
4494
|
};
|
|
4141
4495
|
}
|
|
4142
4496
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4143
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableCellComponent, selector: "aup-table-cell", inputs: { row: "row", column: "column", editSession: "editSession", tableModel: "tableModel" }, host: { properties: { "class": "this.defaultClassNames", "class.fillCell": "this.fillCell", "class.padChild": "this.padChild" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!hasActiveEditor()\" [cdkPortalOutlet]=\"getRendererPortal()\" (attached)=\"initialiseRenderer($event)\"></ng-container>\n<ng-container *ngIf=\"hasActiveEditor()\" [cdkPortalOutlet]=\"getEditorPortal()\" (attached)=\"initialiseEditor($event)\"></ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type:
|
|
4497
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableCellComponent, selector: "aup-table-cell", inputs: { row: "row", column: "column", editSession: "editSession", tableModel: "tableModel" }, host: { properties: { "class": "this.defaultClassNames", "class.fillCell": "this.fillCell", "class.padChild": "this.padChild" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!hasActiveEditor()\" [cdkPortalOutlet]=\"getRendererPortal()\" (attached)=\"initialiseRenderer($event)\"></ng-container>\n<ng-container *ngIf=\"hasActiveEditor()\" [cdkPortalOutlet]=\"getEditorPortal()\" (attached)=\"initialiseEditor($event)\"></ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }] });
|
|
4144
4498
|
}
|
|
4145
4499
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableCellComponent, decorators: [{
|
|
4146
4500
|
type: Component,
|
|
@@ -4179,7 +4533,7 @@ class TableHeaderCellComponent {
|
|
|
4179
4533
|
return this[HEADER_CELL_RENDERER_PORTAL];
|
|
4180
4534
|
}
|
|
4181
4535
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableHeaderCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4182
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableHeaderCellComponent, selector: "aup-table-header-cell", inputs: { column: "column" }, host: { properties: { "class": "this.defaultClassNames" } }, ngImport: i0, template: "<ng-container [cdkPortalOutlet]=\"getPortal()\" (attached)=\"initialiseHeader($event)\"></ng-container>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%}\n"], dependencies: [{ kind: "directive", type:
|
|
4536
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableHeaderCellComponent, selector: "aup-table-header-cell", inputs: { column: "column" }, host: { properties: { "class": "this.defaultClassNames" } }, ngImport: i0, template: "<ng-container [cdkPortalOutlet]=\"getPortal()\" (attached)=\"initialiseHeader($event)\"></ng-container>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$4.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }] });
|
|
4183
4537
|
}
|
|
4184
4538
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableHeaderCellComponent, decorators: [{
|
|
4185
4539
|
type: Component,
|
|
@@ -4191,61 +4545,132 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
4191
4545
|
args: ['class']
|
|
4192
4546
|
}] } });
|
|
4193
4547
|
|
|
4548
|
+
// eslint-disable-next-line @angular-eslint/component-class-suffix
|
|
4549
|
+
class TableFooterRow {
|
|
4550
|
+
row;
|
|
4551
|
+
defaultClassNames = 'aup-footer-row-renderer';
|
|
4552
|
+
get rowClasses() {
|
|
4553
|
+
return this.row.getActiveRowClasses();
|
|
4554
|
+
}
|
|
4555
|
+
initialise($event) {
|
|
4556
|
+
this.row.onInit($event.instance);
|
|
4557
|
+
}
|
|
4558
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableFooterRow, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4559
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableFooterRow, selector: "aup-table-footer-row", inputs: { row: "row" }, host: { properties: { "class": "this.rowClasses" } }, ngImport: i0, template: "<ng-container [cdkPortalOutlet]=\"row.portal\" (attached)=\"initialise($event)\"></ng-container>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$4.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }] });
|
|
4560
|
+
}
|
|
4561
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableFooterRow, decorators: [{
|
|
4562
|
+
type: Component,
|
|
4563
|
+
args: [{ selector: 'aup-table-footer-row', template: "<ng-container [cdkPortalOutlet]=\"row.portal\" (attached)=\"initialise($event)\"></ng-container>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%}\n"] }]
|
|
4564
|
+
}], propDecorators: { row: [{
|
|
4565
|
+
type: Input
|
|
4566
|
+
}], defaultClassNames: [{
|
|
4567
|
+
type: HostBinding,
|
|
4568
|
+
args: ['class']
|
|
4569
|
+
}], rowClasses: [{
|
|
4570
|
+
type: HostBinding,
|
|
4571
|
+
args: ['class']
|
|
4572
|
+
}] } });
|
|
4573
|
+
|
|
4574
|
+
const AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER = new InjectionToken("AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER");
|
|
4575
|
+
class TableRowAttributesDirective {
|
|
4576
|
+
elementRef;
|
|
4577
|
+
aupTableRowAttributes;
|
|
4578
|
+
constructor(elementRef) {
|
|
4579
|
+
this.elementRef = elementRef;
|
|
4580
|
+
}
|
|
4581
|
+
ngOnInit() {
|
|
4582
|
+
for (const attr in this.aupTableRowAttributes) {
|
|
4583
|
+
this.elementRef.nativeElement.setAttribute(attr, this.aupTableRowAttributes[attr]);
|
|
4584
|
+
}
|
|
4585
|
+
}
|
|
4586
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableRowAttributesDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
4587
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: TableRowAttributesDirective, selector: "[aupTableRowAttributes]", inputs: { aupTableRowAttributes: "aupTableRowAttributes" }, ngImport: i0 });
|
|
4588
|
+
}
|
|
4589
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableRowAttributesDirective, decorators: [{
|
|
4590
|
+
type: Directive,
|
|
4591
|
+
args: [{
|
|
4592
|
+
selector: "[aupTableRowAttributes]",
|
|
4593
|
+
}]
|
|
4594
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { aupTableRowAttributes: [{
|
|
4595
|
+
type: Input
|
|
4596
|
+
}] } });
|
|
4194
4597
|
class TableBodyComponent extends ResizeAwareComponent {
|
|
4598
|
+
bufferMultiplier;
|
|
4195
4599
|
#data$_accessor_storage = proxify((ListModel));
|
|
4196
4600
|
get data$() { return this.#data$_accessor_storage; }
|
|
4197
4601
|
set data$(value) { this.#data$_accessor_storage = value; }
|
|
4198
4602
|
#tableModel_accessor_storage = proxify((AbstractTableModel));
|
|
4199
4603
|
get tableModel() { return this.#tableModel_accessor_storage; }
|
|
4200
4604
|
set tableModel(value) { this.#tableModel_accessor_storage = value; }
|
|
4605
|
+
#footerRow_accessor_storage = proxify((FooterRowModel.Impl));
|
|
4606
|
+
get footerRow() { return this.#footerRow_accessor_storage; }
|
|
4607
|
+
set footerRow(value) { this.#footerRow_accessor_storage = value; }
|
|
4201
4608
|
#showHeader$_accessor_storage = proxify((ValueModel));
|
|
4202
4609
|
get showHeader$() { return this.#showHeader$_accessor_storage; }
|
|
4203
4610
|
set showHeader$(value) { this.#showHeader$_accessor_storage = value; }
|
|
4204
4611
|
#showHeader_accessor_storage = true;
|
|
4205
4612
|
get showHeader() { return this.#showHeader_accessor_storage; }
|
|
4206
4613
|
set showHeader(value) { this.#showHeader_accessor_storage = value; }
|
|
4207
|
-
visibleRowCount = new EventEmitter();
|
|
4208
4614
|
trackBy;
|
|
4209
|
-
|
|
4210
|
-
|
|
4211
|
-
|
|
4212
|
-
|
|
4213
|
-
|
|
4214
|
-
|
|
4615
|
+
#scrollMode$_accessor_storage = proxify((ValueModel));
|
|
4616
|
+
get scrollMode$() { return this.#scrollMode$_accessor_storage; }
|
|
4617
|
+
set scrollMode$(value) { this.#scrollMode$_accessor_storage = value; }
|
|
4618
|
+
#scrollMode_accessor_storage = "none";
|
|
4619
|
+
get scrollMode() { return this.#scrollMode_accessor_storage; }
|
|
4620
|
+
set scrollMode(value) { this.#scrollMode_accessor_storage = value; }
|
|
4621
|
+
scrollViewport;
|
|
4215
4622
|
columns$;
|
|
4216
4623
|
columnIds$;
|
|
4217
4624
|
columnsById$;
|
|
4218
|
-
_visibleRowCount$;
|
|
4219
4625
|
// TODO: support user defined header and row heights via css vars.
|
|
4220
|
-
headerHeight$ = new MutableValueModel(
|
|
4221
|
-
rowHeight$ = new MutableValueModel(
|
|
4626
|
+
headerHeight$ = new MutableValueModel(48);
|
|
4627
|
+
rowHeight$ = new MutableValueModel(44);
|
|
4222
4628
|
baseCssClass = "aup-table-component";
|
|
4223
|
-
|
|
4224
|
-
|
|
4225
|
-
|
|
4629
|
+
virtualScrollDataSource = new TableVirtualScrollDataSource();
|
|
4630
|
+
virtualScrollActive$ = new MutableValueModel(false);
|
|
4631
|
+
scrollTimeout;
|
|
4632
|
+
constructor(bufferMultiplier = 1) {
|
|
4633
|
+
super();
|
|
4634
|
+
this.bufferMultiplier = bufferMultiplier;
|
|
4635
|
+
const { chain, when, observe } = Dsl.disposeWith(this);
|
|
4226
4636
|
const actualHeaderHeight$ = chain(this.showHeader$).map(show => {
|
|
4227
4637
|
return show ? this.headerHeight$.value : 0;
|
|
4228
4638
|
}, { 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" });
|
|
4639
|
+
// performance is terrible if the data changes while we're scrolling, so we postpone updates until
|
|
4640
|
+
// scrolling stops.
|
|
4641
|
+
const delayedDatea$ = chain(this.data$).postponeWhile(this.virtualScrollActive$);
|
|
4642
|
+
when(delayedDatea$).changes(delatedData => {
|
|
4643
|
+
this.virtualScrollDataSource.data = delatedData;
|
|
4644
|
+
this.scheduleTableHeightCheck();
|
|
4645
|
+
}, { initialValue: "evaluate" });
|
|
4240
4646
|
this.onInit(() => {
|
|
4241
|
-
this.columns$ = chain(this.tableModel.
|
|
4647
|
+
this.columns$ = chain(this.tableModel.visibleColumns$);
|
|
4242
4648
|
this.columnIds$ = chain(this.columns$).pluck("columnId");
|
|
4243
4649
|
this.columnsById$ = chain(this.columns$).indexBy('columnId');
|
|
4244
4650
|
});
|
|
4651
|
+
// const txo = new TransactionObserver({verbose: false}).onEvent(e => console.log(e.name, e.payload));
|
|
4652
|
+
// txo.observe('this.virtualScrollRowRange$', this.virtualScrollRowRange$);
|
|
4653
|
+
// txo.observe('this.virtualScrollSpacerSize$', this.virtualScrollSpacerSize$);
|
|
4654
|
+
// txo.observe('this.virtualRows$', this.virtualRows$);
|
|
4655
|
+
// txo.observe('this.tableBodyHeight$', this.tableBodyHeight$);
|
|
4656
|
+
// txo.observe('this.virtualScrollActive$', this.virtualScrollActive$);
|
|
4657
|
+
}
|
|
4658
|
+
ngAfterViewInit() {
|
|
4659
|
+
super.ngAfterViewInit();
|
|
4660
|
+
if (this.scrollViewport) {
|
|
4661
|
+
const { observe } = Dsl.disposeWith(this);
|
|
4662
|
+
this.scrollViewport.elementScrolled().subscribe(() => this.notifyScrolled());
|
|
4663
|
+
}
|
|
4245
4664
|
}
|
|
4246
4665
|
get hideHeader() {
|
|
4247
4666
|
return !this.showHeader;
|
|
4248
4667
|
}
|
|
4668
|
+
get headerHeightCssVar() {
|
|
4669
|
+
return `${this.headerHeight$.value}px`;
|
|
4670
|
+
}
|
|
4671
|
+
get rowHeightCssVar() {
|
|
4672
|
+
return `${this.rowHeight$.value}px`;
|
|
4673
|
+
}
|
|
4249
4674
|
isEditing(row) {
|
|
4250
4675
|
return !!this.tableModel.getEditSessionFor(row);
|
|
4251
4676
|
}
|
|
@@ -4270,51 +4695,110 @@ class TableBodyComponent extends ResizeAwareComponent {
|
|
|
4270
4695
|
}
|
|
4271
4696
|
return classes;
|
|
4272
4697
|
}
|
|
4273
|
-
|
|
4274
|
-
|
|
4698
|
+
scheduleTableHeightCheck(waitMillis = 50) {
|
|
4699
|
+
setTimeout(() => {
|
|
4700
|
+
const tbody = this.elementRef.nativeElement.querySelector("tbody");
|
|
4701
|
+
const bodyHeight = tbody.offsetHeight;
|
|
4702
|
+
if (this.data$.length > 0 && bodyHeight < this.rowHeight$.value) {
|
|
4703
|
+
// Hacks to get our virtual scroll to repaint
|
|
4704
|
+
// Logger.get(this).log(`rowCount=${this.data$.length}, bodyHeight=${bodyHeight} -> virtual table not rendering, triggering resize to force repaint`)
|
|
4705
|
+
window.dispatchEvent(new Event('resize'));
|
|
4706
|
+
if (waitMillis < 500) {
|
|
4707
|
+
this.scheduleTableHeightCheck(waitMillis + 50);
|
|
4708
|
+
}
|
|
4709
|
+
}
|
|
4710
|
+
}, waitMillis);
|
|
4711
|
+
}
|
|
4712
|
+
notifyScrolled() {
|
|
4713
|
+
this.virtualScrollActive$.value = true;
|
|
4714
|
+
this.clearScrollTimeout();
|
|
4715
|
+
this.scrollTimeout = setTimeout(() => {
|
|
4716
|
+
return this.virtualScrollActive$.value = false;
|
|
4717
|
+
}, 200);
|
|
4718
|
+
}
|
|
4719
|
+
clearScrollTimeout() {
|
|
4720
|
+
if (this.scrollTimeout) {
|
|
4721
|
+
clearTimeout(this.scrollTimeout);
|
|
4722
|
+
}
|
|
4723
|
+
}
|
|
4724
|
+
initialiseFooter($event) {
|
|
4725
|
+
const portalRef = $event;
|
|
4726
|
+
this.footerRow.onInit(portalRef.instance);
|
|
4727
|
+
}
|
|
4728
|
+
Proxify = Proxify;
|
|
4729
|
+
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 });
|
|
4730
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableBodyComponent, selector: "aup-table-body", inputs: { data$: "data$", tableModel: "tableModel", footerRow: "footerRow", 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]=\"$any(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 <ng-container matColumnDef=\"sticky-footer\" *ngIf=\"Proxify.hasTarget(footerRow)\">\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"columns$.length\" [ngClass]=\"'footer-cell'\">\n <aup-table-footer-row [row]=\"$any(footerRow)\"></aup-table-footer-row>\n </td>\n <tr mat-footer-row *matFooterRowDef=\"['sticky-footer']; sticky: true\"></tr>\n </ng-container>\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<!-- Layout doesn't work yet - probably needs fixed footer row height -->\n<!-- <ng-container matColumnDef=\"sticky-footer\" *ngIf=\"tableModel.footerRowPortalRef\">-->\n<!-- <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"columns$.length\">-->\n<!-- <ng-container [cdkPortalOutlet]=\"tableModel.footerRowPortalRef.portal\" (attached)=\"initialiseFooter($event)\"></ng-container>-->\n<!-- </td>-->\n<!-- <tr mat-footer-row *matFooterRowDef=\"['sticky-footer']; sticky: true\"></tr>-->\n<!-- </ng-container>-->\n\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.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i2$6.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { 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: "directive", type: i2$6.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-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: i2$6.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { 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"] }, { kind: "component", type: TableFooterRow, selector: "aup-table-footer-row", inputs: ["row"] }] });
|
|
4275
4731
|
}
|
|
4276
4732
|
__decorate([
|
|
4277
4733
|
Proxify(),
|
|
4278
|
-
__metadata("design:type",
|
|
4734
|
+
__metadata("design:type", ListModel)
|
|
4279
4735
|
], TableBodyComponent.prototype, "data$", null);
|
|
4280
4736
|
__decorate([
|
|
4281
4737
|
Proxify(),
|
|
4282
|
-
__metadata("design:type",
|
|
4738
|
+
__metadata("design:type", AbstractTableModel)
|
|
4283
4739
|
], TableBodyComponent.prototype, "tableModel", null);
|
|
4284
4740
|
__decorate([
|
|
4285
4741
|
Proxify(),
|
|
4286
|
-
__metadata("design:type",
|
|
4742
|
+
__metadata("design:type", FooterRowModel.Impl)
|
|
4743
|
+
], TableBodyComponent.prototype, "footerRow", null);
|
|
4744
|
+
__decorate([
|
|
4745
|
+
Proxify(),
|
|
4746
|
+
__metadata("design:type", ValueModel)
|
|
4287
4747
|
], TableBodyComponent.prototype, "showHeader$", null);
|
|
4288
4748
|
__decorate([
|
|
4289
4749
|
StoreInValueModel(),
|
|
4290
4750
|
__metadata("design:type", Object)
|
|
4291
4751
|
], TableBodyComponent.prototype, "showHeader", null);
|
|
4752
|
+
__decorate([
|
|
4753
|
+
Proxify(),
|
|
4754
|
+
__metadata("design:type", ValueModel)
|
|
4755
|
+
], TableBodyComponent.prototype, "scrollMode$", null);
|
|
4756
|
+
__decorate([
|
|
4757
|
+
StoreInValueModel(),
|
|
4758
|
+
__metadata("design:type", String)
|
|
4759
|
+
], TableBodyComponent.prototype, "scrollMode", null);
|
|
4292
4760
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableBodyComponent, decorators: [{
|
|
4293
4761
|
type: Component,
|
|
4294
|
-
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
|
|
4295
|
-
}], ctorParameters: function () { return [{ type:
|
|
4762
|
+
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]=\"$any(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 <ng-container matColumnDef=\"sticky-footer\" *ngIf=\"Proxify.hasTarget(footerRow)\">\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"columns$.length\" [ngClass]=\"'footer-cell'\">\n <aup-table-footer-row [row]=\"$any(footerRow)\"></aup-table-footer-row>\n </td>\n <tr mat-footer-row *matFooterRowDef=\"['sticky-footer']; sticky: true\"></tr>\n </ng-container>\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<!-- Layout doesn't work yet - probably needs fixed footer row height -->\n<!-- <ng-container matColumnDef=\"sticky-footer\" *ngIf=\"tableModel.footerRowPortalRef\">-->\n<!-- <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"columns$.length\">-->\n<!-- <ng-container [cdkPortalOutlet]=\"tableModel.footerRowPortalRef.portal\" (attached)=\"initialiseFooter($event)\"></ng-container>-->\n<!-- </td>-->\n<!-- <tr mat-footer-row *matFooterRowDef=\"['sticky-footer']; sticky: true\"></tr>-->\n<!-- </ng-container>-->\n\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"] }]
|
|
4763
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
4764
|
+
type: Inject,
|
|
4765
|
+
args: [AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER]
|
|
4766
|
+
}, {
|
|
4767
|
+
type: Optional
|
|
4768
|
+
}] }]; }, propDecorators: { data$: [{
|
|
4296
4769
|
type: Input
|
|
4297
4770
|
}], tableModel: [{
|
|
4298
4771
|
type: Input
|
|
4772
|
+
}], footerRow: [{
|
|
4773
|
+
type: Input
|
|
4299
4774
|
}], showHeader$: [{
|
|
4300
4775
|
type: Input
|
|
4301
4776
|
}], showHeader: [{
|
|
4302
4777
|
type: Input
|
|
4303
|
-
}], visibleRowCount: [{
|
|
4304
|
-
type: Output
|
|
4305
4778
|
}], trackBy: [{
|
|
4306
4779
|
type: Input
|
|
4307
|
-
}],
|
|
4780
|
+
}], scrollMode$: [{
|
|
4781
|
+
type: Input
|
|
4782
|
+
}], scrollMode: [{
|
|
4308
4783
|
type: Input
|
|
4309
4784
|
}, {
|
|
4310
4785
|
type: HostBinding,
|
|
4311
|
-
args: ["
|
|
4786
|
+
args: ["attr.scrollMode"]
|
|
4787
|
+
}], scrollViewport: [{
|
|
4788
|
+
type: ViewChild,
|
|
4789
|
+
args: [CdkVirtualScrollViewport]
|
|
4312
4790
|
}], baseCssClass: [{
|
|
4313
4791
|
type: HostBinding,
|
|
4314
4792
|
args: ["class"]
|
|
4315
4793
|
}], hideHeader: [{
|
|
4316
4794
|
type: HostBinding,
|
|
4317
4795
|
args: ["class.hide-header"]
|
|
4796
|
+
}], headerHeightCssVar: [{
|
|
4797
|
+
type: HostBinding,
|
|
4798
|
+
args: ["style.--aup-table-header-height"]
|
|
4799
|
+
}], rowHeightCssVar: [{
|
|
4800
|
+
type: HostBinding,
|
|
4801
|
+
args: ["style.--aup-table-row-height"]
|
|
4318
4802
|
}] } });
|
|
4319
4803
|
|
|
4320
4804
|
class TableMoreMenuPopupComponent extends DisposableComponent {
|
|
@@ -4435,8 +4919,10 @@ class TableFilterModel extends GarbageCollector {
|
|
|
4435
4919
|
this.useSearchText(options.searchText$);
|
|
4436
4920
|
this.useRowPredicate(options.predicate$);
|
|
4437
4921
|
const { chain } = Dsl.disposeWith(this);
|
|
4438
|
-
const textSearchRegex$ = chain(this._searchText$)
|
|
4439
|
-
|
|
4922
|
+
const textSearchRegex$ = chain(this._searchText$)
|
|
4923
|
+
.debounce(250)
|
|
4924
|
+
.map(text => {
|
|
4925
|
+
return isEmpty(text) ? undefined : new RegExp(escapeStringRegexp(text), "i");
|
|
4440
4926
|
}, { allowNil: true });
|
|
4441
4927
|
this._rowPredicate = chain(this._rowPredicate$)
|
|
4442
4928
|
.map(predicate => {
|
|
@@ -4644,28 +5130,26 @@ class TableComponent extends AbstractTableComponent {
|
|
|
4644
5130
|
#filterModel_accessor_storage = proxify((TableFilterModel));
|
|
4645
5131
|
get filterModel() { return this.#filterModel_accessor_storage; }
|
|
4646
5132
|
set filterModel(value) { this.#filterModel_accessor_storage = value; }
|
|
4647
|
-
|
|
4648
|
-
|
|
4649
|
-
|
|
4650
|
-
|
|
4651
|
-
|
|
4652
|
-
|
|
4653
|
-
|
|
4654
|
-
|
|
4655
|
-
|
|
4656
|
-
|
|
4657
|
-
|
|
4658
|
-
// }
|
|
4659
|
-
// }
|
|
5133
|
+
tableBody;
|
|
5134
|
+
#scrollMode$_accessor_storage = proxify((ValueModel));
|
|
5135
|
+
/**
|
|
5136
|
+
* Set to true to scroll mode to classic or virtual (default). Virtual scrolll performs better for large data sets but clamps the row height. Classic scroll
|
|
5137
|
+
* renders all rows but allows row heights to grow.
|
|
5138
|
+
*/
|
|
5139
|
+
get scrollMode$() { return this.#scrollMode$_accessor_storage; }
|
|
5140
|
+
set scrollMode$(value) { this.#scrollMode$_accessor_storage = value; }
|
|
5141
|
+
#scrollMode_accessor_storage = "virtual";
|
|
5142
|
+
get scrollMode() { return this.#scrollMode_accessor_storage; }
|
|
5143
|
+
set scrollMode(value) { this.#scrollMode_accessor_storage = value; }
|
|
4660
5144
|
_footerContentAdded = false;
|
|
4661
5145
|
_filteredRows$ = this.registerDisposable(new DelegatingListModel());
|
|
4662
|
-
|
|
4663
|
-
pagedListModel;
|
|
5146
|
+
tableBodyScrollMode$;
|
|
4664
5147
|
constructor(injector) {
|
|
4665
5148
|
super(injector);
|
|
4666
|
-
const { when } = Dsl.disposeWith(this);
|
|
4667
|
-
this.
|
|
4668
|
-
|
|
5149
|
+
const { chain, when } = Dsl.disposeWith(this);
|
|
5150
|
+
this.tableBodyScrollMode$ = chain(this.enableScrolling$).map(enable => {
|
|
5151
|
+
return enable ? this.scrollMode$.value : 'none';
|
|
5152
|
+
}, { dependsOn: this.scrollMode$ });
|
|
4669
5153
|
}
|
|
4670
5154
|
ngOnInit() {
|
|
4671
5155
|
super.ngOnInit();
|
|
@@ -4677,50 +5161,25 @@ class TableComponent extends AbstractTableComponent {
|
|
|
4677
5161
|
else {
|
|
4678
5162
|
this._filteredRows$.setDelegate(this._dataSource$);
|
|
4679
5163
|
}
|
|
4680
|
-
this.
|
|
5164
|
+
this._visibleRows$.setDelegate(this._filteredRows$);
|
|
5165
|
+
// let users of the model know what the current visible and filtered rows are for selection models and what not
|
|
4681
5166
|
this.tableModel.bindToTable(this._filteredRows$, this._visibleRows$);
|
|
4682
5167
|
}
|
|
4683
5168
|
getModel() {
|
|
4684
5169
|
return this.tableModel;
|
|
4685
5170
|
}
|
|
4686
|
-
get pageController() {
|
|
4687
|
-
// TODO: need to support external page controllers if the paging occurs to our primary data source.
|
|
4688
|
-
return this.pagedListModel.pageController;
|
|
4689
|
-
}
|
|
4690
|
-
configurePaging(enable) {
|
|
4691
|
-
if (enable) {
|
|
4692
|
-
if (!this.pagedListModel) {
|
|
4693
|
-
this.pagedListModel = PagedListModel.create(this._filteredRows$, this._pageSize);
|
|
4694
|
-
}
|
|
4695
|
-
this._visibleRows$.setDelegate(this.pagedListModel);
|
|
4696
|
-
}
|
|
4697
|
-
else {
|
|
4698
|
-
this.disposeOfPagedListModel();
|
|
4699
|
-
this._visibleRows$.setDelegate(this._filteredRows$);
|
|
4700
|
-
}
|
|
4701
|
-
}
|
|
4702
|
-
disposeOfPagedListModel() {
|
|
4703
|
-
if (this.pagedListModel) {
|
|
4704
|
-
this.pagedListModel.dispose();
|
|
4705
|
-
this.pagedListModel = null;
|
|
4706
|
-
}
|
|
4707
|
-
}
|
|
4708
5171
|
footerContentChanged($event) {
|
|
4709
5172
|
// console.log($event);
|
|
4710
5173
|
this._footerContentAdded = true;
|
|
4711
5174
|
}
|
|
4712
|
-
//@Trace()
|
|
4713
|
-
updatePageSize(count) {
|
|
4714
|
-
this._pageSize.value = count;
|
|
4715
|
-
}
|
|
4716
5175
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
4717
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableComponent, selector: "aup-table", inputs: { tableModel: "tableModel", filterModel: "filterModel",
|
|
5176
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableComponent, selector: "aup-table", inputs: { tableModel: "tableModel", filterModel: "filterModel", scrollMode$: "scrollMode$", scrollMode: "scrollMode" }, providers: [
|
|
4718
5177
|
{ provide: AbstractTableComponent, useExisting: TableComponent }
|
|
4719
|
-
], usesInheritance: true, ngImport: i0, template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"tableModel\"\n [
|
|
5178
|
+
], viewQueries: [{ propertyName: "tableBody", first: true, predicate: TableBodyComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"$any(tableModel)\"\n [footerRow]=\"tableModel.footerRowModel\"\n [showHeader$]=\"$any(showHeader$)\"\n [scrollMode$]=\"tableBodyScrollMode$\"\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", "footerRow", "showHeader$", "showHeader", "trackBy", "scrollMode$", "scrollMode"] }] });
|
|
4720
5179
|
}
|
|
4721
5180
|
__decorate([
|
|
4722
5181
|
Proxify(),
|
|
4723
|
-
__metadata("design:type",
|
|
5182
|
+
__metadata("design:type", TableModel)
|
|
4724
5183
|
], TableComponent.prototype, "tableModel", null);
|
|
4725
5184
|
__decorate([
|
|
4726
5185
|
Proxify(),
|
|
@@ -4728,24 +5187,27 @@ __decorate([
|
|
|
4728
5187
|
], TableComponent.prototype, "filterModel", null);
|
|
4729
5188
|
__decorate([
|
|
4730
5189
|
Proxify(),
|
|
4731
|
-
__metadata("design:type",
|
|
4732
|
-
], TableComponent.prototype, "
|
|
5190
|
+
__metadata("design:type", ValueModel)
|
|
5191
|
+
], TableComponent.prototype, "scrollMode$", null);
|
|
4733
5192
|
__decorate([
|
|
4734
5193
|
StoreInValueModel(),
|
|
4735
5194
|
__metadata("design:type", Object)
|
|
4736
|
-
], TableComponent.prototype, "
|
|
5195
|
+
], TableComponent.prototype, "scrollMode", null);
|
|
4737
5196
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableComponent, decorators: [{
|
|
4738
5197
|
type: Component,
|
|
4739
5198
|
args: [{ selector: 'aup-table', providers: [
|
|
4740
5199
|
{ provide: AbstractTableComponent, useExisting: TableComponent }
|
|
4741
|
-
], template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"tableModel\"\n [
|
|
5200
|
+
], template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"$any(tableModel)\"\n [footerRow]=\"tableModel.footerRowModel\"\n [showHeader$]=\"$any(showHeader$)\"\n [scrollMode$]=\"tableBodyScrollMode$\"\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"] }]
|
|
4742
5201
|
}], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { tableModel: [{
|
|
4743
5202
|
type: Input
|
|
4744
5203
|
}], filterModel: [{
|
|
4745
5204
|
type: Input
|
|
4746
|
-
}],
|
|
5205
|
+
}], tableBody: [{
|
|
5206
|
+
type: ViewChild,
|
|
5207
|
+
args: [TableBodyComponent]
|
|
5208
|
+
}], scrollMode$: [{
|
|
4747
5209
|
type: Input
|
|
4748
|
-
}],
|
|
5210
|
+
}], scrollMode: [{
|
|
4749
5211
|
type: Input
|
|
4750
5212
|
}] } });
|
|
4751
5213
|
|
|
@@ -4927,7 +5389,7 @@ var DecoratedTreeNode;
|
|
|
4927
5389
|
}
|
|
4928
5390
|
}
|
|
4929
5391
|
__decorate([
|
|
4930
|
-
|
|
5392
|
+
MemoizeGet(),
|
|
4931
5393
|
__metadata("design:type", Array),
|
|
4932
5394
|
__metadata("design:paramtypes", [])
|
|
4933
5395
|
], Decorator.prototype, "children", null);
|
|
@@ -4980,7 +5442,7 @@ var DecoratedTreeNode;
|
|
|
4980
5442
|
__metadata("design:returntype", Array)
|
|
4981
5443
|
], Decorator.prototype, "ancestors", null);
|
|
4982
5444
|
__decorate([
|
|
4983
|
-
|
|
5445
|
+
MemoizeGet(),
|
|
4984
5446
|
__metadata("design:type", Number),
|
|
4985
5447
|
__metadata("design:paramtypes", [])
|
|
4986
5448
|
], Decorator.prototype, "depth", null);
|
|
@@ -4991,8 +5453,8 @@ class TreeLabelColumnModel extends ColumnModel {
|
|
|
4991
5453
|
expansionModel;
|
|
4992
5454
|
labelFactory = () => undefined;
|
|
4993
5455
|
iconFactory;
|
|
4994
|
-
constructor(columnId, textPropertiesProvider, expansionModel) {
|
|
4995
|
-
super(columnId, textPropertiesProvider);
|
|
5456
|
+
constructor(columnId, order, textPropertiesProvider, expansionModel) {
|
|
5457
|
+
super(columnId, order, textPropertiesProvider);
|
|
4996
5458
|
this.expansionModel = expansionModel;
|
|
4997
5459
|
this.cellRenderer(TreeLabelCellRendererComponent);
|
|
4998
5460
|
}
|
|
@@ -5060,7 +5522,7 @@ class TreeTableModel extends AbstractTableModel {
|
|
|
5060
5522
|
}
|
|
5061
5523
|
treeControlColumn(builder) {
|
|
5062
5524
|
const columnId = 'tree-label';
|
|
5063
|
-
const column = new TreeLabelColumnModel(columnId, () => this.getColumnTextProperties(columnId), this);
|
|
5525
|
+
const column = new TreeLabelColumnModel(columnId, this.columnManager, () => this.getColumnTextProperties(columnId), this);
|
|
5064
5526
|
builder(column);
|
|
5065
5527
|
this.addColumn(column);
|
|
5066
5528
|
}
|
|
@@ -5386,8 +5848,11 @@ class TreeTableComponent extends AbstractTableComponent {
|
|
|
5386
5848
|
#expansionModel_accessor_storage = proxify((TreeExpansionModel));
|
|
5387
5849
|
get expansionModel() { return this.#expansionModel_accessor_storage; }
|
|
5388
5850
|
set expansionModel(value) { this.#expansionModel_accessor_storage = value; }
|
|
5851
|
+
scrollMode$;
|
|
5389
5852
|
constructor(injector) {
|
|
5390
5853
|
super(injector);
|
|
5854
|
+
const { chain } = Dsl.disposeWith(this);
|
|
5855
|
+
this.scrollMode$ = chain(this.enableScrolling$).map(enabled => enabled ? "classic" : "none");
|
|
5391
5856
|
}
|
|
5392
5857
|
ngOnInit() {
|
|
5393
5858
|
super.ngOnInit();
|
|
@@ -5407,7 +5872,7 @@ class TreeTableComponent extends AbstractTableComponent {
|
|
|
5407
5872
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TreeTableComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
5408
5873
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TreeTableComponent, selector: "aup-tree-table", inputs: { treeTableModel: "treeTableModel", expansionModel: "expansionModel" }, providers: [
|
|
5409
5874
|
{ provide: AbstractTableComponent, useExisting: TreeTableComponent }
|
|
5410
|
-
], usesInheritance: true, ngImport: i0, template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"treeTableModel\"\n [showHeader$]=\"showHeader$\"\n [
|
|
5875
|
+
], 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", "footerRow", "showHeader$", "showHeader", "trackBy", "scrollMode$", "scrollMode"] }] });
|
|
5411
5876
|
}
|
|
5412
5877
|
__decorate([
|
|
5413
5878
|
Proxify(),
|
|
@@ -5421,7 +5886,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
5421
5886
|
type: Component,
|
|
5422
5887
|
args: [{ selector: 'aup-tree-table', providers: [
|
|
5423
5888
|
{ provide: AbstractTableComponent, useExisting: TreeTableComponent }
|
|
5424
|
-
], template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"treeTableModel\"\n [showHeader$]=\"showHeader$\"\n [
|
|
5889
|
+
], 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"] }]
|
|
5425
5890
|
}], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { treeTableModel: [{
|
|
5426
5891
|
type: Input
|
|
5427
5892
|
}], expansionModel: [{
|
|
@@ -5603,6 +6068,7 @@ class ComponentsModule {
|
|
|
5603
6068
|
FocusableComponent,
|
|
5604
6069
|
CardContainerComponent,
|
|
5605
6070
|
TableComponent,
|
|
6071
|
+
TableRowAttributesDirective,
|
|
5606
6072
|
EditRowControlsComponent,
|
|
5607
6073
|
ColumnTemplateDirective,
|
|
5608
6074
|
DefaultCellRendererComponent,
|
|
@@ -5636,7 +6102,9 @@ class ComponentsModule {
|
|
|
5636
6102
|
MarkdownComponent,
|
|
5637
6103
|
TableBodyComponent,
|
|
5638
6104
|
TableMoreMenuComponent,
|
|
5639
|
-
TableMoreMenuPopupComponent
|
|
6105
|
+
TableMoreMenuPopupComponent,
|
|
6106
|
+
SearchInputComponent,
|
|
6107
|
+
TableFooterRow], imports: [CommonModule,
|
|
5640
6108
|
BrowserAnimationsModule,
|
|
5641
6109
|
FormsModule,
|
|
5642
6110
|
MatInputModule,
|
|
@@ -5655,7 +6123,10 @@ class ComponentsModule {
|
|
|
5655
6123
|
MatMenuModule,
|
|
5656
6124
|
MatDividerModule,
|
|
5657
6125
|
MatProgressSpinnerModule,
|
|
5658
|
-
MatProgressBarModule
|
|
6126
|
+
MatProgressBarModule,
|
|
6127
|
+
ScrollingModule,
|
|
6128
|
+
TableVirtualScrollModule], exports: [TableFooterRow,
|
|
6129
|
+
NumberInputComponent,
|
|
5659
6130
|
StringInputComponent,
|
|
5660
6131
|
TextInputComponent,
|
|
5661
6132
|
PasswordInputComponent,
|
|
@@ -5693,7 +6164,8 @@ class ComponentsModule {
|
|
|
5693
6164
|
LoadingContainerComponent,
|
|
5694
6165
|
MarkdownComponent,
|
|
5695
6166
|
TableMoreMenuComponent,
|
|
5696
|
-
TableMoreMenuPopupComponent
|
|
6167
|
+
TableMoreMenuPopupComponent,
|
|
6168
|
+
SearchInputComponent] });
|
|
5697
6169
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ComponentsModule, providers: [
|
|
5698
6170
|
FocusBindingFactory,
|
|
5699
6171
|
MarkdownService
|
|
@@ -5716,7 +6188,9 @@ class ComponentsModule {
|
|
|
5716
6188
|
MatMenuModule,
|
|
5717
6189
|
MatDividerModule,
|
|
5718
6190
|
MatProgressSpinnerModule,
|
|
5719
|
-
MatProgressBarModule
|
|
6191
|
+
MatProgressBarModule,
|
|
6192
|
+
ScrollingModule,
|
|
6193
|
+
TableVirtualScrollModule] });
|
|
5720
6194
|
}
|
|
5721
6195
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ComponentsModule, decorators: [{
|
|
5722
6196
|
type: NgModule,
|
|
@@ -5741,7 +6215,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
5741
6215
|
MatMenuModule,
|
|
5742
6216
|
MatDividerModule,
|
|
5743
6217
|
MatProgressSpinnerModule,
|
|
5744
|
-
MatProgressBarModule
|
|
6218
|
+
MatProgressBarModule,
|
|
6219
|
+
ScrollingModule,
|
|
6220
|
+
TableVirtualScrollModule
|
|
5745
6221
|
],
|
|
5746
6222
|
declarations: [
|
|
5747
6223
|
AbstractInputComponent,
|
|
@@ -5765,6 +6241,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
5765
6241
|
FocusableComponent,
|
|
5766
6242
|
CardContainerComponent,
|
|
5767
6243
|
TableComponent,
|
|
6244
|
+
TableRowAttributesDirective,
|
|
5768
6245
|
EditRowControlsComponent,
|
|
5769
6246
|
ColumnTemplateDirective,
|
|
5770
6247
|
DefaultCellRendererComponent,
|
|
@@ -5799,8 +6276,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
5799
6276
|
TableBodyComponent,
|
|
5800
6277
|
TableMoreMenuComponent,
|
|
5801
6278
|
TableMoreMenuPopupComponent,
|
|
6279
|
+
SearchInputComponent,
|
|
6280
|
+
TableFooterRow
|
|
5802
6281
|
],
|
|
5803
6282
|
exports: [
|
|
6283
|
+
TableFooterRow,
|
|
5804
6284
|
NumberInputComponent,
|
|
5805
6285
|
StringInputComponent,
|
|
5806
6286
|
TextInputComponent,
|
|
@@ -5840,6 +6320,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
5840
6320
|
MarkdownComponent,
|
|
5841
6321
|
TableMoreMenuComponent,
|
|
5842
6322
|
TableMoreMenuPopupComponent,
|
|
6323
|
+
SearchInputComponent
|
|
5843
6324
|
],
|
|
5844
6325
|
providers: [
|
|
5845
6326
|
FocusBindingFactory,
|
|
@@ -5848,6 +6329,67 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
5848
6329
|
}]
|
|
5849
6330
|
}] });
|
|
5850
6331
|
|
|
6332
|
+
class LoadableComponent extends DisposableComponent {
|
|
6333
|
+
#_loaded$ = new MutableValueModel();
|
|
6334
|
+
#asyncLoadables = [];
|
|
6335
|
+
#awaitedLoadables = [];
|
|
6336
|
+
get loaded$() {
|
|
6337
|
+
return this.#_loaded$.readonly$;
|
|
6338
|
+
}
|
|
6339
|
+
ngOnInit() {
|
|
6340
|
+
super.ngOnInit();
|
|
6341
|
+
this.#asyncLoadables.forEach(it => it.ensureLoaded());
|
|
6342
|
+
if (this.#awaitedLoadables.length > 0) {
|
|
6343
|
+
Promise.all(this.#awaitedLoadables.map(it => {
|
|
6344
|
+
return it.ensureLoaded(); //.then(() => console.log(`${it.constructor.name} loaded`));
|
|
6345
|
+
})).then(() => {
|
|
6346
|
+
this.#_loaded$.value = true;
|
|
6347
|
+
});
|
|
6348
|
+
}
|
|
6349
|
+
else {
|
|
6350
|
+
this.#_loaded$.value = true;
|
|
6351
|
+
}
|
|
6352
|
+
}
|
|
6353
|
+
injectLoadable(token, options) {
|
|
6354
|
+
return this.registerLoadable(inject(token), options);
|
|
6355
|
+
}
|
|
6356
|
+
registerLoadable(loadable, options) {
|
|
6357
|
+
if (this.loaded$.value) {
|
|
6358
|
+
loadable.ensureLoaded();
|
|
6359
|
+
}
|
|
6360
|
+
else {
|
|
6361
|
+
if (!options || options.wait === true) {
|
|
6362
|
+
this.#awaitedLoadables.push(loadable);
|
|
6363
|
+
}
|
|
6364
|
+
else {
|
|
6365
|
+
this.#asyncLoadables.push(loadable);
|
|
6366
|
+
}
|
|
6367
|
+
}
|
|
6368
|
+
return loadable;
|
|
6369
|
+
}
|
|
6370
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: LoadableComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
6371
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: LoadableComponent, usesInheritance: true, ngImport: i0 });
|
|
6372
|
+
}
|
|
6373
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: LoadableComponent, decorators: [{
|
|
6374
|
+
type: Directive
|
|
6375
|
+
}] });
|
|
6376
|
+
|
|
6377
|
+
class TextSearchContext {
|
|
6378
|
+
row;
|
|
6379
|
+
searchText;
|
|
6380
|
+
searchRegex;
|
|
6381
|
+
constructor(row, searchText, searchRegex) {
|
|
6382
|
+
this.row = row;
|
|
6383
|
+
this.searchText = searchText;
|
|
6384
|
+
this.searchRegex = searchRegex;
|
|
6385
|
+
}
|
|
6386
|
+
getOrCreate(type, create) {
|
|
6387
|
+
}
|
|
6388
|
+
matchesText(text) {
|
|
6389
|
+
return this.searchRegex.test(text);
|
|
6390
|
+
}
|
|
6391
|
+
}
|
|
6392
|
+
|
|
5851
6393
|
/**
|
|
5852
6394
|
* @file Automatically generated by barrelsby.
|
|
5853
6395
|
*/
|
|
@@ -5874,7 +6416,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
5874
6416
|
* </aup-activity-actions>
|
|
5875
6417
|
*/
|
|
5876
6418
|
class ActivityActionsComponent extends DisposableComponent {
|
|
5877
|
-
cdr;
|
|
5878
6419
|
confirmCommandComponent;
|
|
5879
6420
|
cancelCommandComponent;
|
|
5880
6421
|
#confirmCommand_accessor_storage = proxify((Command));
|
|
@@ -5903,9 +6444,8 @@ class ActivityActionsComponent extends DisposableComponent {
|
|
|
5903
6444
|
}
|
|
5904
6445
|
layout = ActivityActionsComponent.Layout.BLOCK;
|
|
5905
6446
|
align = ActivityActionsComponent.Align.STRETCH;
|
|
5906
|
-
constructor(
|
|
6447
|
+
constructor() {
|
|
5907
6448
|
super();
|
|
5908
|
-
this.cdr = cdr;
|
|
5909
6449
|
}
|
|
5910
6450
|
hasConfirmFace() {
|
|
5911
6451
|
return !!this.confirmFace;
|
|
@@ -5924,8 +6464,8 @@ class ActivityActionsComponent extends DisposableComponent {
|
|
|
5924
6464
|
focusCancel() {
|
|
5925
6465
|
this.cancelCommandComponent.requestFocus();
|
|
5926
6466
|
}
|
|
5927
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityActionsComponent, deps: [
|
|
5928
|
-
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=\"
|
|
6467
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6468
|
+
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"] }] });
|
|
5929
6469
|
}
|
|
5930
6470
|
__decorate([
|
|
5931
6471
|
Proxify(),
|
|
@@ -5937,8 +6477,8 @@ __decorate([
|
|
|
5937
6477
|
], ActivityActionsComponent.prototype, "cancelCommand", null);
|
|
5938
6478
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityActionsComponent, decorators: [{
|
|
5939
6479
|
type: Component,
|
|
5940
|
-
args: [{ selector: 'aup-activity-actions', template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"
|
|
5941
|
-
}], ctorParameters: function () { return [
|
|
6480
|
+
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"] }]
|
|
6481
|
+
}], ctorParameters: function () { return []; }, propDecorators: { confirmCommandComponent: [{
|
|
5942
6482
|
type: ViewChild,
|
|
5943
6483
|
args: ["confirmCommandComponent"]
|
|
5944
6484
|
}], cancelCommandComponent: [{
|
|
@@ -5981,7 +6521,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
5981
6521
|
|
|
5982
6522
|
const ACTIVITY_DATA = new InjectionToken("InteractionActivityData");
|
|
5983
6523
|
// eslint-disable-next-line @angular-eslint/component-class-suffix
|
|
5984
|
-
class Activity extends
|
|
6524
|
+
class Activity extends LoadableComponent {
|
|
5985
6525
|
activityData = inject(ACTIVITY_DATA);
|
|
5986
6526
|
activityReadyListeners = new EventListenerList();
|
|
5987
6527
|
_busy$ = this.registerDisposable(new DelegatingValueModel().withDefault(false));
|
|
@@ -6036,7 +6576,6 @@ class Activity extends DisposableComponent {
|
|
|
6036
6576
|
notifyActivityReady() {
|
|
6037
6577
|
this.activityReadyListeners.fire(l => l(this));
|
|
6038
6578
|
this._ready$.value = true;
|
|
6039
|
-
console.log("ready");
|
|
6040
6579
|
}
|
|
6041
6580
|
onActivityReady(callback) {
|
|
6042
6581
|
return this.activityReadyListeners.add(callback);
|
|
@@ -6156,7 +6695,7 @@ class AbstractDialogComponent extends Activity {
|
|
|
6156
6695
|
}
|
|
6157
6696
|
}
|
|
6158
6697
|
isDestructive() {
|
|
6159
|
-
return isFunction
|
|
6698
|
+
return isFunction(this.config['destructive']) && this.config["destructive"]();
|
|
6160
6699
|
}
|
|
6161
6700
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractDialogComponent, deps: [{ token: ALERT_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
|
|
6162
6701
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractDialogComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
@@ -6173,6 +6712,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
6173
6712
|
|
|
6174
6713
|
class AbstractConfirmDialogComponent extends AbstractDialogComponent {
|
|
6175
6714
|
cancelFace;
|
|
6715
|
+
confirmClass = "aup-confirm-activity";
|
|
6176
6716
|
constructor(config) {
|
|
6177
6717
|
super(config);
|
|
6178
6718
|
this.cancelFace = {
|
|
@@ -6183,7 +6723,7 @@ class AbstractConfirmDialogComponent extends AbstractDialogComponent {
|
|
|
6183
6723
|
});
|
|
6184
6724
|
}
|
|
6185
6725
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractConfirmDialogComponent, deps: [{ token: ALERT_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
|
|
6186
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractConfirmDialogComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
6726
|
+
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 });
|
|
6187
6727
|
}
|
|
6188
6728
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractConfirmDialogComponent, decorators: [{
|
|
6189
6729
|
type: Component,
|
|
@@ -6193,7 +6733,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
6193
6733
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
6194
6734
|
type: Inject,
|
|
6195
6735
|
args: [ALERT_CONFIG]
|
|
6196
|
-
}] }]; }
|
|
6736
|
+
}] }]; }, propDecorators: { confirmClass: [{
|
|
6737
|
+
type: HostBinding,
|
|
6738
|
+
args: ["class"]
|
|
6739
|
+
}] } });
|
|
6197
6740
|
|
|
6198
6741
|
class ActivityBodyComponent extends DisposableComponent {
|
|
6199
6742
|
fullWidth = false;
|
|
@@ -6732,7 +7275,7 @@ const ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');
|
|
|
6732
7275
|
// return true;
|
|
6733
7276
|
// }
|
|
6734
7277
|
// }
|
|
6735
|
-
class PlaceComponent extends
|
|
7278
|
+
class PlaceComponent extends LoadableComponent {
|
|
6736
7279
|
_placeReadyCallbacks = [];
|
|
6737
7280
|
visitModel = new MutableValueModel();
|
|
6738
7281
|
_inVisitUpdate = new Guard();
|
|
@@ -6789,6 +7332,7 @@ class PlaceComponent extends DisposableComponent {
|
|
|
6789
7332
|
*/
|
|
6790
7333
|
installAndInitialiseBinding(initialVisit, parameterDef) {
|
|
6791
7334
|
const model = this[parameterDef.propertyName];
|
|
7335
|
+
assert.notNil(model);
|
|
6792
7336
|
DebugContext.tag(model, `${this.placeDefinition.component.name}.${parameterDef.propertyName}`);
|
|
6793
7337
|
const binding = this.registerDisposable(new Binding(this.visitModel, model, {
|
|
6794
7338
|
toRight(visit) {
|
|
@@ -6873,7 +7417,7 @@ class PlaceComponent extends DisposableComponent {
|
|
|
6873
7417
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: PlaceComponent, usesInheritance: true, ngImport: i0 });
|
|
6874
7418
|
}
|
|
6875
7419
|
__decorate([
|
|
6876
|
-
|
|
7420
|
+
MemoizeGet(),
|
|
6877
7421
|
__metadata("design:type", PlaceDefinition),
|
|
6878
7422
|
__metadata("design:paramtypes", [])
|
|
6879
7423
|
], PlaceComponent.prototype, "placeDefinition", null);
|
|
@@ -7063,7 +7607,7 @@ class Visit {
|
|
|
7063
7607
|
getRouterCommands() {
|
|
7064
7608
|
return this.segments.reduce((result, v) => {
|
|
7065
7609
|
const path = v.placeDefinition.path;
|
|
7066
|
-
return isEmpty
|
|
7610
|
+
return isEmpty(path) ?
|
|
7067
7611
|
[...result, path] : // Angular doesn't support route params on empty path segments
|
|
7068
7612
|
[...result, path, ...v.createRouterCommands()];
|
|
7069
7613
|
}, []);
|
|
@@ -7079,7 +7623,7 @@ class Visit {
|
|
|
7079
7623
|
}
|
|
7080
7624
|
}
|
|
7081
7625
|
__decorate([
|
|
7082
|
-
Memoize
|
|
7626
|
+
Memoize(),
|
|
7083
7627
|
__metadata("design:type", Function),
|
|
7084
7628
|
__metadata("design:paramtypes", [PlaceDefinition]),
|
|
7085
7629
|
__metadata("design:returntype", VisitSegment)
|
|
@@ -7460,10 +8004,7 @@ class SynchroniseInteractionContextIdsWithRoute extends NavigationSession {
|
|
|
7460
8004
|
return true;
|
|
7461
8005
|
}
|
|
7462
8006
|
notifyActive() {
|
|
7463
|
-
|
|
7464
|
-
setTimeout(() => {
|
|
7465
|
-
this.syncInteractionIdsWithRouter();
|
|
7466
|
-
});
|
|
8007
|
+
this.syncInteractionIdsWithRouter();
|
|
7467
8008
|
}
|
|
7468
8009
|
// @Trace()
|
|
7469
8010
|
onRouterEnd(event) {
|
|
@@ -8206,7 +8747,7 @@ class ConsolidatedParameterMap {
|
|
|
8206
8747
|
}
|
|
8207
8748
|
}
|
|
8208
8749
|
__decorate([
|
|
8209
|
-
|
|
8750
|
+
MemoizeGet(),
|
|
8210
8751
|
__metadata("design:type", Array),
|
|
8211
8752
|
__metadata("design:paramtypes", [])
|
|
8212
8753
|
], ConsolidatedParameterMap.prototype, "keys", null);
|
|
@@ -8284,7 +8825,7 @@ class UrlSnapshot {
|
|
|
8284
8825
|
return this.getPrimaryUrlSegments().find(s => s.path === placeDef.path);
|
|
8285
8826
|
}
|
|
8286
8827
|
isLastPlaceInUrl(placeDef) {
|
|
8287
|
-
return last
|
|
8828
|
+
return last(this.getPrimaryUrlSegments()).path === placeDef.path;
|
|
8288
8829
|
}
|
|
8289
8830
|
createVisitSegmentFor(placeDef) {
|
|
8290
8831
|
return new VisitSegment(placeDef, new ConsolidatedParameterMap(this.getPrimaryUrlSegments()));
|
|
@@ -8400,7 +8941,7 @@ class UrlService {
|
|
|
8400
8941
|
back() {
|
|
8401
8942
|
this.angularLocation.back();
|
|
8402
8943
|
}
|
|
8403
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: UrlService, deps: [{ token: i1$
|
|
8944
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: UrlService, deps: [{ token: i1$5.Router }, { token: i1$1.Location }, { token: i1$5.UrlSerializer }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
8404
8945
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: UrlService, providedIn: 'root' });
|
|
8405
8946
|
}
|
|
8406
8947
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: UrlService, decorators: [{
|
|
@@ -8408,7 +8949,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
8408
8949
|
args: [{
|
|
8409
8950
|
providedIn: 'root'
|
|
8410
8951
|
}]
|
|
8411
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
8952
|
+
}], ctorParameters: function () { return [{ type: i1$5.Router }, { type: i1$1.Location }, { type: i1$5.UrlSerializer }]; } });
|
|
8412
8953
|
|
|
8413
8954
|
// function asArray<T>(item: T | T[]): T[] {
|
|
8414
8955
|
// return Array.isArray(item) ? item : [item];
|
|
@@ -8428,6 +8969,8 @@ class PlaceRouter extends GarbageCollector {
|
|
|
8428
8969
|
routerInteractionAdapter;
|
|
8429
8970
|
sessionFinishedJobs = [];
|
|
8430
8971
|
authService = new PlaceAuthService();
|
|
8972
|
+
_ready$ = this.registerDisposable(new DelegatingValueModel().withDefault(true));
|
|
8973
|
+
ready$ = this._ready$.readonly$;
|
|
8431
8974
|
constructor(angularRouter, angularLocation, interactionService, urlService, placeHistory) {
|
|
8432
8975
|
super();
|
|
8433
8976
|
this.angularRouter = angularRouter;
|
|
@@ -8449,7 +8992,7 @@ class PlaceRouter extends GarbageCollector {
|
|
|
8449
8992
|
});
|
|
8450
8993
|
const { chain } = Dsl.disposeWith(this);
|
|
8451
8994
|
this.navigationInProgress$ = chain(this.navigationSession$).isNotNil();
|
|
8452
|
-
this.interactionSyncInProgress$ = chain(this.navigationSession$).pluck("isInteractionSync");
|
|
8995
|
+
this.interactionSyncInProgress$ = chain(this.navigationSession$).pluck("isInteractionSync").otherwise(false);
|
|
8453
8996
|
const idleStateName = chain(this.interactionService.active).map(active => active ? "IdleDuringInteraction" : "Idle");
|
|
8454
8997
|
this.navigationSessionName$ = chain(this.navigationSession$)
|
|
8455
8998
|
.pluck("name")
|
|
@@ -8493,6 +9036,9 @@ class PlaceRouter extends GarbageCollector {
|
|
|
8493
9036
|
// the back button was clicked.
|
|
8494
9037
|
angularLocation.onUrlChange(url => this.onUrlChanged(url));
|
|
8495
9038
|
}
|
|
9039
|
+
postponeRoutingUntil(condition$) {
|
|
9040
|
+
this._ready$.setDelegate(condition$);
|
|
9041
|
+
}
|
|
8496
9042
|
getAuthenticationFailureRedirect(activatedRoute, state) {
|
|
8497
9043
|
return this.authService.getAuthenticationFailureRedirect(activatedRoute, state);
|
|
8498
9044
|
}
|
|
@@ -8508,23 +9054,20 @@ class PlaceRouter extends GarbageCollector {
|
|
|
8508
9054
|
isNavigating() {
|
|
8509
9055
|
return this.navigationInProgress$.value;
|
|
8510
9056
|
}
|
|
8511
|
-
|
|
8512
|
-
const {
|
|
8513
|
-
|
|
8514
|
-
|
|
8515
|
-
|
|
8516
|
-
|
|
8517
|
-
|
|
8518
|
-
|
|
9057
|
+
async waitUntilRouterReady() {
|
|
9058
|
+
const { waitUntil } = Dsl.disposeWith(this);
|
|
9059
|
+
await waitUntil(this.ready$).becomesTruthy();
|
|
9060
|
+
return this;
|
|
9061
|
+
}
|
|
9062
|
+
async waitUntilIdle() {
|
|
9063
|
+
const { waitUntil } = Dsl.disposeWith(this);
|
|
9064
|
+
await waitUntil(this.navigationInProgress$).becomesFalsey();
|
|
9065
|
+
return this;
|
|
8519
9066
|
}
|
|
8520
9067
|
async waitActivitiesSynchronised() {
|
|
8521
|
-
const {
|
|
8522
|
-
|
|
8523
|
-
|
|
8524
|
-
initialValue: "evaluate",
|
|
8525
|
-
once: true
|
|
8526
|
-
});
|
|
8527
|
-
});
|
|
9068
|
+
const { waitUntil } = Dsl.disposeWith(this);
|
|
9069
|
+
await waitUntil(this.interactionSyncInProgress$).becomesFalsey();
|
|
9070
|
+
return this;
|
|
8528
9071
|
}
|
|
8529
9072
|
// @Trace()
|
|
8530
9073
|
onPopState(event) {
|
|
@@ -8710,7 +9253,7 @@ class PlaceRouter extends GarbageCollector {
|
|
|
8710
9253
|
return Visit.goto(visitOrPlaceComponent, params);
|
|
8711
9254
|
}
|
|
8712
9255
|
}
|
|
8713
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceRouter, deps: [{ token: i1$
|
|
9256
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceRouter, deps: [{ token: i1$5.Router }, { token: i1$1.Location }, { token: InteractionService }, { token: UrlService }, { token: PlaceHistory }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
8714
9257
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceRouter, providedIn: "root" });
|
|
8715
9258
|
}
|
|
8716
9259
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceRouter, decorators: [{
|
|
@@ -8718,7 +9261,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
8718
9261
|
args: [{
|
|
8719
9262
|
providedIn: "root"
|
|
8720
9263
|
}]
|
|
8721
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
9264
|
+
}], ctorParameters: function () { return [{ type: i1$5.Router }, { type: i1$1.Location }, { type: InteractionService }, { type: UrlService }, { type: PlaceHistory }]; } });
|
|
8722
9265
|
|
|
8723
9266
|
class ActivityTitleComponent extends DisposableComponent {
|
|
8724
9267
|
_color;
|
|
@@ -8740,11 +9283,11 @@ class ActivityTitleComponent extends DisposableComponent {
|
|
|
8740
9283
|
return this._color;
|
|
8741
9284
|
}
|
|
8742
9285
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityTitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
8743
|
-
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:
|
|
9286
|
+
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"] });
|
|
8744
9287
|
}
|
|
8745
9288
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityTitleComponent, decorators: [{
|
|
8746
9289
|
type: Component,
|
|
8747
|
-
args: [{ selector: 'aup-activity-title', template: "<ng-content></ng-content>\n", styles: [":host{display:
|
|
9290
|
+
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"] }]
|
|
8748
9291
|
}], propDecorators: { hasTransparentBackground: [{
|
|
8749
9292
|
type: Input
|
|
8750
9293
|
}, {
|
|
@@ -9009,6 +9552,7 @@ class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
9009
9552
|
tabs;
|
|
9010
9553
|
activityOutlets;
|
|
9011
9554
|
activityRefs = [];
|
|
9555
|
+
animationDuration = "500ms";
|
|
9012
9556
|
_identifier;
|
|
9013
9557
|
_deferredCleanUp;
|
|
9014
9558
|
interactionServiceApi;
|
|
@@ -9021,6 +9565,7 @@ class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
9021
9565
|
busy = this.registerDisposable(new DelegatingValueModel().withDefault(false));
|
|
9022
9566
|
syncTabsJob = undefined;
|
|
9023
9567
|
stable$;
|
|
9568
|
+
wasActive = false;
|
|
9024
9569
|
constructor(placeRouter) {
|
|
9025
9570
|
super();
|
|
9026
9571
|
this.placeRouter = placeRouter;
|
|
@@ -9057,7 +9602,12 @@ class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
9057
9602
|
* Returns true if an activity is currently running.
|
|
9058
9603
|
*/
|
|
9059
9604
|
isActive() {
|
|
9060
|
-
|
|
9605
|
+
const isActive = this.getActiveActivityCount() > 0;
|
|
9606
|
+
// if (this.wasActive !== isActive) {
|
|
9607
|
+
// console.log({was: this.wasActive, is: isActive});
|
|
9608
|
+
// }
|
|
9609
|
+
// this.wasActive = isActive
|
|
9610
|
+
return isActive;
|
|
9061
9611
|
}
|
|
9062
9612
|
registerDisposable(disposable) {
|
|
9063
9613
|
return this.garbage.registerDisposable(disposable);
|
|
@@ -9140,7 +9690,7 @@ class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
9140
9690
|
// by activity index)
|
|
9141
9691
|
setTimeout(() => {
|
|
9142
9692
|
this.activityRefs = []; // we have to do it after the animation timeout or the activity disappears before the animatin finsihes
|
|
9143
|
-
}, this.
|
|
9693
|
+
}, this.getTabAnimationDurationInMillis());
|
|
9144
9694
|
const promise = this.interactionServiceApi.notifyFinished(this);
|
|
9145
9695
|
this._deferredCleanUp = promise
|
|
9146
9696
|
.finally(() => {
|
|
@@ -9166,7 +9716,6 @@ class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
9166
9716
|
/**
|
|
9167
9717
|
* Synchronises the selected tab index.
|
|
9168
9718
|
*/
|
|
9169
|
-
// @Trace()
|
|
9170
9719
|
synchroniseSelectedTabIndex() {
|
|
9171
9720
|
assert.isTruthy(this.isActive());
|
|
9172
9721
|
const previousIndex = this.tabs.selectedIndex;
|
|
@@ -9178,10 +9727,10 @@ class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
9178
9727
|
activityRef.setFocused(false);
|
|
9179
9728
|
this.busy.setDelegate(activityRef.activityBusy);
|
|
9180
9729
|
this.tabs.selectedIndex = newIndex;
|
|
9181
|
-
if (this.ready$.value) {
|
|
9182
|
-
|
|
9183
|
-
|
|
9184
|
-
}
|
|
9730
|
+
// if (this.ready$.value) {
|
|
9731
|
+
// // Note: We're not using the animation done event as it's firing almost immeadiately.
|
|
9732
|
+
// setTimeout(() => this.finaliseActivityStates(), animate ? this.getTabAnimationDurationInMillis() : 0);
|
|
9733
|
+
// }
|
|
9185
9734
|
}
|
|
9186
9735
|
}
|
|
9187
9736
|
finaliseActivityStates() {
|
|
@@ -9195,7 +9744,12 @@ class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
9195
9744
|
return this.activityOutlets.toArray()[this.tabs.selectedIndex];
|
|
9196
9745
|
}
|
|
9197
9746
|
getTabAnimationDuration() {
|
|
9198
|
-
const
|
|
9747
|
+
// const s = this._started$.value ? this.animationDuration : "0";
|
|
9748
|
+
// return s
|
|
9749
|
+
return this.animationDuration;
|
|
9750
|
+
}
|
|
9751
|
+
getTabAnimationDurationInMillis() {
|
|
9752
|
+
const match = this.animationDuration.match(/(\d+)(.*)/);
|
|
9199
9753
|
const numericValue = parseFloat(match[1]);
|
|
9200
9754
|
switch (match[2].trim()) {
|
|
9201
9755
|
case "ms":
|
|
@@ -9221,12 +9775,16 @@ class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
9221
9775
|
}
|
|
9222
9776
|
}, 75);
|
|
9223
9777
|
}
|
|
9778
|
+
onAnimationDone() {
|
|
9779
|
+
this._started$.value = true;
|
|
9780
|
+
this.finaliseActivityStates();
|
|
9781
|
+
}
|
|
9224
9782
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityContainerComponent, deps: [{ token: PlaceRouter }], target: i0.ɵɵFactoryTarget.Component });
|
|
9225
|
-
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"] }] });
|
|
9783
|
+
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"] }] });
|
|
9226
9784
|
}
|
|
9227
9785
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityContainerComponent, decorators: [{
|
|
9228
9786
|
type: Component,
|
|
9229
|
-
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"] }]
|
|
9787
|
+
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"] }]
|
|
9230
9788
|
}], ctorParameters: function () { return [{ type: PlaceRouter }]; }, propDecorators: { dynamicHeight: [{
|
|
9231
9789
|
type: Input
|
|
9232
9790
|
}], tabs: [{
|
|
@@ -9235,6 +9793,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
9235
9793
|
}], activityOutlets: [{
|
|
9236
9794
|
type: ViewChildren,
|
|
9237
9795
|
args: [ActivityOutletComponent]
|
|
9796
|
+
}], animationDuration: [{
|
|
9797
|
+
type: Input
|
|
9238
9798
|
}] } });
|
|
9239
9799
|
|
|
9240
9800
|
class AbstractActivityTriggerComponent extends DisposableComponent {
|
|
@@ -9335,14 +9895,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
9335
9895
|
args: ['class.active']
|
|
9336
9896
|
}] } });
|
|
9337
9897
|
|
|
9338
|
-
const cssDurationRegex = /(\d+)(m?s)/;
|
|
9898
|
+
const cssDurationRegex$1 = /(\d+)(m?s)/;
|
|
9339
9899
|
/**
|
|
9340
9900
|
* @example
|
|
9341
9901
|
* <aup-in-place-interaction-context #inPlaceInteractionContext>
|
|
9342
9902
|
* </aup-in-place-interaction-context>
|
|
9343
9903
|
*
|
|
9344
9904
|
* in your component
|
|
9345
|
-
* @ViewChild(
|
|
9905
|
+
* @ViewChild(InPlaceInteractionContextComponent)
|
|
9346
9906
|
* interactionContext: InteractionContext;
|
|
9347
9907
|
*
|
|
9348
9908
|
*
|
|
@@ -9361,11 +9921,13 @@ class InPlaceInteractionContextComponent extends DisposableComponent {
|
|
|
9361
9921
|
* active interactions.
|
|
9362
9922
|
*/
|
|
9363
9923
|
syncWithRoutes = true;
|
|
9924
|
+
started = new EventEmitter();
|
|
9925
|
+
finished = new EventEmitter();
|
|
9364
9926
|
get animationDuration() {
|
|
9365
9927
|
return this.animateFirstActivity ? (this.tabConfig?.animationDuration || "500ms") : "0ms";
|
|
9366
9928
|
}
|
|
9367
9929
|
get animationDurationMillis() {
|
|
9368
|
-
const result = cssDurationRegex.exec(this.animationDuration);
|
|
9930
|
+
const result = cssDurationRegex$1.exec(this.animationDuration);
|
|
9369
9931
|
if (!result) {
|
|
9370
9932
|
lang.illegalState(`unsupported css duration: ${this.animationDuration}`);
|
|
9371
9933
|
}
|
|
@@ -9387,11 +9949,16 @@ class InPlaceInteractionContextComponent extends DisposableComponent {
|
|
|
9387
9949
|
this.interactionService.registerInplaceInteractionContext(this);
|
|
9388
9950
|
}
|
|
9389
9951
|
else {
|
|
9952
|
+
const self = this;
|
|
9390
9953
|
this.activityContainerComponent.initialise("dont-care", {
|
|
9391
9954
|
async notifyActive(interactionContext) {
|
|
9955
|
+
self.started.emit();
|
|
9392
9956
|
return undefined;
|
|
9393
9957
|
},
|
|
9394
9958
|
async notifyFinished(interactionContext) {
|
|
9959
|
+
// I've noticed some rendering fails when returning the the transcluded content we'll fire an event
|
|
9960
|
+
// so components can do stuff if they need to.
|
|
9961
|
+
self.started.emit();
|
|
9395
9962
|
return undefined;
|
|
9396
9963
|
}
|
|
9397
9964
|
});
|
|
@@ -9438,7 +10005,7 @@ class InPlaceInteractionContextComponent extends DisposableComponent {
|
|
|
9438
10005
|
}
|
|
9439
10006
|
}
|
|
9440
10007
|
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 });
|
|
9441
|
-
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"] }] });
|
|
10008
|
+
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" }, outputs: { started: "started", finished: "finished" }, 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"] }] });
|
|
9442
10009
|
}
|
|
9443
10010
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InPlaceInteractionContextComponent, decorators: [{
|
|
9444
10011
|
type: Component,
|
|
@@ -9455,6 +10022,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
9455
10022
|
type: Input
|
|
9456
10023
|
}], syncWithRoutes: [{
|
|
9457
10024
|
type: Input
|
|
10025
|
+
}], started: [{
|
|
10026
|
+
type: Output
|
|
10027
|
+
}], finished: [{
|
|
10028
|
+
type: Output
|
|
9458
10029
|
}], active: [{
|
|
9459
10030
|
type: HostBinding,
|
|
9460
10031
|
args: ["class.active"]
|
|
@@ -9469,7 +10040,7 @@ class InlineActivityTriggerComponent extends AbstractActivityTriggerComponent {
|
|
|
9469
10040
|
super();
|
|
9470
10041
|
}
|
|
9471
10042
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InlineActivityTriggerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9472
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: InlineActivityTriggerComponent, selector: "aup-inline-activity-trigger", viewQueries: [{ propertyName: "_interactionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<aup-in-place-interaction-context #interactionContext [animateFirstActivity]=\"false\">\n <aup-command [command]=\"startActivityCommand\" [face$]=\"face$\" [alignFace]=\"alignFace\"></aup-command>\n</aup-in-place-interaction-context>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }, { kind: "component", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"] }] });
|
|
10043
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: InlineActivityTriggerComponent, selector: "aup-inline-activity-trigger", viewQueries: [{ propertyName: "_interactionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<aup-in-place-interaction-context #interactionContext [animateFirstActivity]=\"false\">\n <aup-command [command]=\"startActivityCommand\" [face$]=\"face$\" [alignFace]=\"alignFace\"></aup-command>\n</aup-in-place-interaction-context>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }, { kind: "component", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"], outputs: ["started", "finished"] }] });
|
|
9473
10044
|
}
|
|
9474
10045
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InlineActivityTriggerComponent, decorators: [{
|
|
9475
10046
|
type: Component,
|
|
@@ -9593,7 +10164,7 @@ class PopupInteractionContextComponent extends DisposableComponent {
|
|
|
9593
10164
|
isActive() {
|
|
9594
10165
|
return this.interactionContext && this.interactionContext.isActive();
|
|
9595
10166
|
}
|
|
9596
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PopupInteractionContextComponent, deps: [{ token: i0.ElementRef }, { token: i1$
|
|
10167
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PopupInteractionContextComponent, deps: [{ token: i0.ElementRef }, { token: i1$6.Overlay }, { token: i1$6.CdkScrollable, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
9597
10168
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: PopupInteractionContextComponent, selector: "aup-popup-interaction-context", inputs: { anchorX: "anchorX", anchorY: "anchorY", cancelOnEscape$: "cancelOnEscape$", cancelOnEscape: "cancelOnEscape" }, host: { properties: { "class.interaction-active": "this.active" } }, usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:inline-block}:host.interaction-active{background:rgba(0,0,0,.05)}:host::ng-deep .popup-interaction-context-backdrop{background-color:#0000}\n"] });
|
|
9598
10169
|
}
|
|
9599
10170
|
__decorate([
|
|
@@ -9607,7 +10178,7 @@ __decorate([
|
|
|
9607
10178
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PopupInteractionContextComponent, decorators: [{
|
|
9608
10179
|
type: Component,
|
|
9609
10180
|
args: [{ selector: 'aup-popup-interaction-context', template: "<ng-content></ng-content>\n", styles: [":host{display:inline-block}:host.interaction-active{background:rgba(0,0,0,.05)}:host::ng-deep .popup-interaction-context-backdrop{background-color:#0000}\n"] }]
|
|
9610
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$
|
|
10181
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$6.Overlay }, { type: i1$6.CdkScrollable, decorators: [{
|
|
9611
10182
|
type: Optional
|
|
9612
10183
|
}, {
|
|
9613
10184
|
type: SkipSelf
|
|
@@ -9692,7 +10263,7 @@ class AddCardActivityComponent extends AbstractActivityTriggerComponent {
|
|
|
9692
10263
|
return this.interactionStyle === 'inline';
|
|
9693
10264
|
}
|
|
9694
10265
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AddCardActivityComponent, deps: [{ token: InteractionService }], target: i0.ɵɵFactoryTarget.Component });
|
|
9695
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AddCardActivityComponent, selector: "aup-add-card-activity", inputs: { interactionStyle: "interactionStyle", renderAs: "renderAs" }, host: { properties: { "class": "this.activityTypeClass", "class.not-card": "this.notCard" } }, viewQueries: [{ propertyName: "inlineInteractionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<aup-in-place-interaction-context [animateFirstActivity]=\"false\" [pectinCommand]=\"startActivityCommand\">\n <aup-command *ngIf=\"isRenderAsButton()\" [command]=\"startActivityCommand\" [face$]=\"face$\" [alignFace]=\"alignFace\"></aup-command>\n <section *ngIf=\"isRenderAsCard()\" class=\"face-wrapper\">\n <aup-command-face class=\"mat-button\" [faces]=\"faceList.value\"></aup-command-face>\n </section>\n</aup-in-place-interaction-context>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch;background-color:#fff}:host[interactionStyle=inline][renderas=card]:not(.active){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}:host[interactionStyle=inline][renderas=card]:not(.active):hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host[interactionStyle=inline][renderas=card]:not(.active):hover{border-color:transparent;background-color:#fff;color:#0000008a}:host[interactionStyle=modal][renderas=card]{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}:host[interactionStyle=modal][renderas=card]:hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host[interactionStyle=modal][renderas=card]:hover{border-color:transparent;background-color:#fff;color:#0000008a}:host-context(aup-card-container)[renderas=button]{align-self:start}section.face-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}aup-in-place-interaction-context{flex:1}aup-in-place-interaction-context.active{border:3px solid #6273c7;border-radius:4px;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }, { kind: "component", type: CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }, { kind: "component", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"] }] });
|
|
10266
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AddCardActivityComponent, selector: "aup-add-card-activity", inputs: { interactionStyle: "interactionStyle", renderAs: "renderAs" }, host: { properties: { "class": "this.activityTypeClass", "class.not-card": "this.notCard" } }, viewQueries: [{ propertyName: "inlineInteractionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<aup-in-place-interaction-context [animateFirstActivity]=\"false\" [pectinCommand]=\"startActivityCommand\">\n <aup-command *ngIf=\"isRenderAsButton()\" [command]=\"startActivityCommand\" [face$]=\"face$\" [alignFace]=\"alignFace\"></aup-command>\n <section *ngIf=\"isRenderAsCard()\" class=\"face-wrapper\">\n <aup-command-face class=\"mat-button\" [faces]=\"faceList.value\"></aup-command-face>\n </section>\n</aup-in-place-interaction-context>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch;background-color:#fff}:host[interactionStyle=inline][renderas=card]:not(.active){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}:host[interactionStyle=inline][renderas=card]:not(.active):hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host[interactionStyle=inline][renderas=card]:not(.active):hover{border-color:transparent;background-color:#fff;color:#0000008a}:host[interactionStyle=modal][renderas=card]{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}:host[interactionStyle=modal][renderas=card]:hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host[interactionStyle=modal][renderas=card]:hover{border-color:transparent;background-color:#fff;color:#0000008a}:host-context(aup-card-container)[renderas=button]{align-self:start}section.face-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}aup-in-place-interaction-context{flex:1}aup-in-place-interaction-context.active{border:3px solid #6273c7;border-radius:4px;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }, { kind: "component", type: CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }, { kind: "component", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"], outputs: ["started", "finished"] }] });
|
|
9696
10267
|
}
|
|
9697
10268
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AddCardActivityComponent, decorators: [{
|
|
9698
10269
|
type: Component,
|
|
@@ -9768,7 +10339,7 @@ class AddItemInteractionContextComponent extends DisposableComponent {
|
|
|
9768
10339
|
return this.interactionContext.startActivity(activityType, data);
|
|
9769
10340
|
}
|
|
9770
10341
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AddItemInteractionContextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9771
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AddItemInteractionContextComponent, selector: "aup-add-item-interaction-context", inputs: { label: "label", icon: "icon", activityClass: "activityClass", activityData: "activityData", addCommand: "addCommand" }, host: { properties: { "class.interaction-active": "this.active", "tabindex": "this.tabindex" } }, viewQueries: [{ propertyName: "interactionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<aup-in-place-interaction-context [animateFirstActivity]=\"false\">\n <a part=\"link\" class=\"link\" [pectinCommand]=\"clickCommand\"><aup-icon [icon]=\"icon\"></aup-icon> {{label}}</a>\n</aup-in-place-interaction-context>\n", styles: [":host{--def-link-color: var(--link-color, currentColor);--def-link-color-hover: var(--link-color-hover, currentColor);--def-link-background: var(--link-background, transparent);--def-link-background-hover: var(--link-background-hover, rgba(0, 0, 0, .05));--def-link-border-radius: var(--link-border-radius, 4px);--def-link-padding: var(--link-padding, calc(var(--aup-default-padding) / 2));display:flex;flex-direction:column;border-radius:var(--def-link-border-radius);box-sizing:border-box;outline:none}:host:hover a.link{color:var(--def-link-color-hover);background-color:var(--def-link-background-hover)}aup-in-place-interaction-context{border-radius:var(--def-link-border-radius)}a.link{display:flex;flex-direction:row;align-items:center;border-radius:var(--def-link-border-radius);color:var(--def-link-color);background:var(--def-link-background);padding:var(--def-link-padding);cursor:pointer;text-decoration:none}a.link mat-icon{margin-right:8px}\n"], dependencies: [{ kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }, { kind: "component", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"] }] });
|
|
10342
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AddItemInteractionContextComponent, selector: "aup-add-item-interaction-context", inputs: { label: "label", icon: "icon", activityClass: "activityClass", activityData: "activityData", addCommand: "addCommand" }, host: { properties: { "class.interaction-active": "this.active", "tabindex": "this.tabindex" } }, viewQueries: [{ propertyName: "interactionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<aup-in-place-interaction-context [animateFirstActivity]=\"false\">\n <a part=\"link\" class=\"link\" [pectinCommand]=\"clickCommand\"><aup-icon [icon]=\"icon\"></aup-icon> {{label}}</a>\n</aup-in-place-interaction-context>\n", styles: [":host{--def-link-color: var(--link-color, currentColor);--def-link-color-hover: var(--link-color-hover, currentColor);--def-link-background: var(--link-background, transparent);--def-link-background-hover: var(--link-background-hover, rgba(0, 0, 0, .05));--def-link-border-radius: var(--link-border-radius, 4px);--def-link-padding: var(--link-padding, calc(var(--aup-default-padding) / 2));display:flex;flex-direction:column;border-radius:var(--def-link-border-radius);box-sizing:border-box;outline:none}:host:hover a.link{color:var(--def-link-color-hover);background-color:var(--def-link-background-hover)}aup-in-place-interaction-context{border-radius:var(--def-link-border-radius)}a.link{display:flex;flex-direction:row;align-items:center;border-radius:var(--def-link-border-radius);color:var(--def-link-color);background:var(--def-link-background);padding:var(--def-link-padding);cursor:pointer;text-decoration:none}a.link mat-icon{margin-right:8px}\n"], dependencies: [{ kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }, { kind: "component", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"], outputs: ["started", "finished"] }] });
|
|
9772
10343
|
}
|
|
9773
10344
|
__decorate([
|
|
9774
10345
|
Proxify(),
|
|
@@ -9907,12 +10478,14 @@ class StringInputActivity extends InputActivity {
|
|
|
9907
10478
|
[label]="activityData.label"
|
|
9908
10479
|
[placeholder]="activityData.placeholder"
|
|
9909
10480
|
[command.enter]="confirmCommand"
|
|
9910
|
-
[command.escape]="cancelCommand"
|
|
10481
|
+
[command.escape]="cancelCommand"
|
|
10482
|
+
[dense]="true"
|
|
10483
|
+
></aup-string-input>
|
|
9911
10484
|
<aup-activity-actions [layout]="layout" align="end"
|
|
9912
10485
|
[confirmFace]="confirmFace"
|
|
9913
10486
|
[cancelFace]="cancelFace"
|
|
9914
10487
|
></aup-activity-actions>
|
|
9915
|
-
`, 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"] }] });
|
|
10488
|
+
`, 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"] }] });
|
|
9916
10489
|
}
|
|
9917
10490
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: StringInputActivity, decorators: [{
|
|
9918
10491
|
type: Component,
|
|
@@ -9923,7 +10496,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
9923
10496
|
[label]="activityData.label"
|
|
9924
10497
|
[placeholder]="activityData.placeholder"
|
|
9925
10498
|
[command.enter]="confirmCommand"
|
|
9926
|
-
[command.escape]="cancelCommand"
|
|
10499
|
+
[command.escape]="cancelCommand"
|
|
10500
|
+
[dense]="true"
|
|
10501
|
+
></aup-string-input>
|
|
9927
10502
|
<aup-activity-actions [layout]="layout" align="end"
|
|
9928
10503
|
[confirmFace]="confirmFace"
|
|
9929
10504
|
[cancelFace]="cancelFace"
|
|
@@ -10106,7 +10681,7 @@ class InlineStringEditorComponent extends DisposableComponent {
|
|
|
10106
10681
|
return !this.editingEnabled$.value;
|
|
10107
10682
|
}
|
|
10108
10683
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InlineStringEditorComponent, deps: [{ token: InteractionService }], target: i0.ɵɵFactoryTarget.Component });
|
|
10109
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: InlineStringEditorComponent, selector: "aup-inline-string-editor", inputs: { editorModel: "editorModel", facesModel: "facesModel", faces: "faces", label: "label", placeHolder: "placeHolder", placeHolder$: "placeHolder$" }, host: { properties: { "class.disabled": "this.isDisabled" } }, viewQueries: [{ propertyName: "interactionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container\" *ngIf=\"!editorModel.isEditing()\">\n <mat-form-field floatLabel=\"always\" (click)=\"startEdit()\"\n [class.editable]=\"editingEnabled$.value\" [class.empty]=\"isEmpty()\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeHolder}}\"\n [ngModel]=\"editorModel.valueModel.value\"\n [disabled]=\"true\"\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 </mat-form-field>\n <aup-command *ngIf=\"editCommand.enabled$.value\" [command]=\"editCommand\" [face$]=\"editFaceModel\"></aup-command>\n</div>\n<aup-in-place-interaction-context [animateFirstActivity]=\"false\"></aup-in-place-interaction-context>\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"] }, { 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: "component", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"] }] });
|
|
10684
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: InlineStringEditorComponent, selector: "aup-inline-string-editor", inputs: { editorModel: "editorModel", facesModel: "facesModel", faces: "faces", label: "label", placeHolder: "placeHolder", placeHolder$: "placeHolder$" }, host: { properties: { "class.disabled": "this.isDisabled" } }, viewQueries: [{ propertyName: "interactionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container\" *ngIf=\"!editorModel.isEditing()\">\n <mat-form-field floatLabel=\"always\" (click)=\"startEdit()\"\n [class.editable]=\"editingEnabled$.value\" [class.empty]=\"isEmpty()\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeHolder}}\"\n [ngModel]=\"editorModel.valueModel.value\"\n [disabled]=\"true\"\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 </mat-form-field>\n <aup-command *ngIf=\"editCommand.enabled$.value\" [command]=\"editCommand\" [face$]=\"editFaceModel\"></aup-command>\n</div>\n<aup-in-place-interaction-context [animateFirstActivity]=\"false\"></aup-in-place-interaction-context>\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"] }, { 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: "component", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"], outputs: ["started", "finished"] }] });
|
|
10110
10685
|
}
|
|
10111
10686
|
__decorate([
|
|
10112
10687
|
Proxify(),
|
|
@@ -10189,6 +10764,7 @@ class SelectInputActivity extends InputActivity {
|
|
|
10189
10764
|
[options]="options"
|
|
10190
10765
|
[optionLabelFormat]="optionLabelFormat"
|
|
10191
10766
|
[allowNil]="activityData.allowNil"
|
|
10767
|
+
[dense]="true"
|
|
10192
10768
|
>
|
|
10193
10769
|
<ng-template #nilOptionTemplate>{{activityData.nilLabel}}</ng-template>
|
|
10194
10770
|
</aup-select-input>
|
|
@@ -10211,6 +10787,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
10211
10787
|
[options]="options"
|
|
10212
10788
|
[optionLabelFormat]="optionLabelFormat"
|
|
10213
10789
|
[allowNil]="activityData.allowNil"
|
|
10790
|
+
[dense]="true"
|
|
10214
10791
|
>
|
|
10215
10792
|
<ng-template #nilOptionTemplate>{{activityData.nilLabel}}</ng-template>
|
|
10216
10793
|
</aup-select-input>
|
|
@@ -10222,6 +10799,182 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
10222
10799
|
}]
|
|
10223
10800
|
}] });
|
|
10224
10801
|
|
|
10802
|
+
const slideDownOnEnterDef = style({
|
|
10803
|
+
opacity: 0,
|
|
10804
|
+
'height': '0',
|
|
10805
|
+
'max-height': '0',
|
|
10806
|
+
paddingTop: '0',
|
|
10807
|
+
paddingBottom: '0'
|
|
10808
|
+
});
|
|
10809
|
+
// TODO: params aren't getting customised in the view. Need to figure out the correct approach.
|
|
10810
|
+
const slideDownOnEnterAnimation = trigger('slideDownOnEnter', [
|
|
10811
|
+
transition(':enter', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
10812
|
+
transition(':leave', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })
|
|
10813
|
+
]);
|
|
10814
|
+
const slideDownWhenOpenAnimation = trigger('slideDownWhenOpen', [
|
|
10815
|
+
transition('closed => open', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
10816
|
+
transition('open => closed', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })
|
|
10817
|
+
]);
|
|
10818
|
+
const slideLeftOnEnterDef = style({
|
|
10819
|
+
opacity: 0,
|
|
10820
|
+
'width': '0',
|
|
10821
|
+
paddingLeft: '0',
|
|
10822
|
+
paddingRight: '0'
|
|
10823
|
+
});
|
|
10824
|
+
const slideRightOnEnterAnimation = trigger('slideRightOnEnter', [
|
|
10825
|
+
transition(':enter', [slideLeftOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
10826
|
+
transition(':leave', [animate('{{duration}}', slideLeftOnEnterDef)], { params: { duration: '100ms' } })
|
|
10827
|
+
]);
|
|
10828
|
+
const ZERO_WIDTH = {
|
|
10829
|
+
opacity: 0,
|
|
10830
|
+
width: '0',
|
|
10831
|
+
paddingLeft: '0',
|
|
10832
|
+
paddingRight: '0',
|
|
10833
|
+
};
|
|
10834
|
+
const ZERO_HEIGHT = {
|
|
10835
|
+
opacity: 0,
|
|
10836
|
+
height: '0',
|
|
10837
|
+
paddingTop: '0',
|
|
10838
|
+
paddingBottom: '0',
|
|
10839
|
+
};
|
|
10840
|
+
const slideDownAndRightOnEnterAnimation = trigger('slideDownAndRightOnEnter', [
|
|
10841
|
+
transition(':enter', [
|
|
10842
|
+
style({ overflow: "hidden", whiteSpace: "nowrap", ...ZERO_WIDTH, ...ZERO_HEIGHT }),
|
|
10843
|
+
animate('{{duration}}')
|
|
10844
|
+
], { params: { duration: '100ms' } }),
|
|
10845
|
+
transition(':leave', [
|
|
10846
|
+
style({ overflow: "hidden", whiteSpace: "nowrap" }),
|
|
10847
|
+
group([
|
|
10848
|
+
animate('{{duration}}', style(ZERO_HEIGHT)),
|
|
10849
|
+
// Hack: 100ms is too quick as it animates from * - 0 as we only see it animate the width is greater than the parent.
|
|
10850
|
+
// Not sure how to animate from * to natural new width of parent. This hack won't work for text that's just a little
|
|
10851
|
+
// bit wider than the parent as it'll fall within the parent bounds very early in the animation cycle.
|
|
10852
|
+
animate('300ms', style(ZERO_WIDTH)),
|
|
10853
|
+
])
|
|
10854
|
+
], { params: { duration: '100ms' } })
|
|
10855
|
+
]);
|
|
10856
|
+
|
|
10857
|
+
const cssDurationRegex = /(\d+)(m?s)/;
|
|
10858
|
+
/**
|
|
10859
|
+
* This interaction context remains hidden (height: 0) until it is active.
|
|
10860
|
+
* @example
|
|
10861
|
+
* <aup-slide-down-interaction-context #inPlaceInteractionContext>
|
|
10862
|
+
* </aup-slide-down-interaction-context>
|
|
10863
|
+
*
|
|
10864
|
+
* in your component
|
|
10865
|
+
* @ViewChild(SlideDownInteractionContextComponent)
|
|
10866
|
+
* interactionContext: InteractionContext;
|
|
10867
|
+
*
|
|
10868
|
+
*
|
|
10869
|
+
*/
|
|
10870
|
+
class SlideDownInteractionContextComponent extends DisposableComponent {
|
|
10871
|
+
tabConfig;
|
|
10872
|
+
activityContainerComponent;
|
|
10873
|
+
// NOTE: disabling this as I'm using the initialise callback to release the hacky height clamp.
|
|
10874
|
+
// The whole registration thing is a bit naf so I should really clean that up at some point.
|
|
10875
|
+
// /**
|
|
10876
|
+
// * If true the activity will sync with the router to enable back button support. This is a work around for
|
|
10877
|
+
// * deeply nested activities that can't be linked with the root place interactionContext hook for cancelling
|
|
10878
|
+
// * active interactions.
|
|
10879
|
+
// */
|
|
10880
|
+
// @Input()
|
|
10881
|
+
// syncWithRoutes = true;
|
|
10882
|
+
dynamicHeight = true;
|
|
10883
|
+
get active() {
|
|
10884
|
+
return this.isActive();
|
|
10885
|
+
}
|
|
10886
|
+
// Horrible hack to stop the div and activity container bouncing back for a bit in after closing. No idea why it's doing that.
|
|
10887
|
+
clampShut = true;
|
|
10888
|
+
interactionService = this.inject(InteractionService);
|
|
10889
|
+
constructor(tabConfig) {
|
|
10890
|
+
super();
|
|
10891
|
+
this.tabConfig = tabConfig;
|
|
10892
|
+
}
|
|
10893
|
+
ngAfterViewInit() {
|
|
10894
|
+
// NOTE: this is a temp work around to detach inplace contexts from the router until AUP-88 is implemented.
|
|
10895
|
+
// https://coolon.atlassian.net/browse/AUP-88?atlOrigin=eyJpIjoiOTg5YjEzZGUzZjRmNDg0NmExOWU3ZGJmMzJiNTRmNGYiLCJwIjoiaiJ9
|
|
10896
|
+
const self = this;
|
|
10897
|
+
this.activityContainerComponent.initialise("dont-care", {
|
|
10898
|
+
async notifyActive(interactionContext) {
|
|
10899
|
+
self.clampShut = false;
|
|
10900
|
+
return undefined;
|
|
10901
|
+
},
|
|
10902
|
+
async notifyFinished(interactionContext) {
|
|
10903
|
+
return undefined;
|
|
10904
|
+
}
|
|
10905
|
+
});
|
|
10906
|
+
// if (this.syncWithRoutes) {
|
|
10907
|
+
// this.interactionService.registerInplaceInteractionContext(this);
|
|
10908
|
+
// }
|
|
10909
|
+
}
|
|
10910
|
+
getAnimationState() {
|
|
10911
|
+
return {
|
|
10912
|
+
value: this.isActive() ? "open" : "closed",
|
|
10913
|
+
params: { duration: "200ms" }
|
|
10914
|
+
};
|
|
10915
|
+
}
|
|
10916
|
+
// this is a regsitration callback from the interaction service
|
|
10917
|
+
// @Trace() // webstorm says no usages... but I'm not sure.
|
|
10918
|
+
onInplaceInteractionContextRegistered(id, api) {
|
|
10919
|
+
this.activityContainerComponent.initialise(id, api);
|
|
10920
|
+
}
|
|
10921
|
+
get identifier() {
|
|
10922
|
+
return this.activityContainerComponent.identifier;
|
|
10923
|
+
}
|
|
10924
|
+
alert(alert) {
|
|
10925
|
+
return this.activityContainerComponent.alert(alert);
|
|
10926
|
+
}
|
|
10927
|
+
cancelActiveActivity() {
|
|
10928
|
+
return this.activityContainerComponent.cancelActiveActivity();
|
|
10929
|
+
}
|
|
10930
|
+
confirm(confirm) {
|
|
10931
|
+
return this.activityContainerComponent.confirm(confirm);
|
|
10932
|
+
}
|
|
10933
|
+
confirmOrReject(confirm) {
|
|
10934
|
+
return this.activityContainerComponent.confirmOrReject(confirm);
|
|
10935
|
+
}
|
|
10936
|
+
confirmThen(confirm, activityType, data) {
|
|
10937
|
+
return this.activityContainerComponent.confirmThen(confirm, activityType);
|
|
10938
|
+
}
|
|
10939
|
+
confirmThenExecute(confirm, operation) {
|
|
10940
|
+
return this.activityContainerComponent.confirmThenExecute(confirm, operation);
|
|
10941
|
+
}
|
|
10942
|
+
isActive() {
|
|
10943
|
+
return this.activityContainerComponent.isActive();
|
|
10944
|
+
}
|
|
10945
|
+
startActivity(activityType, data, options) {
|
|
10946
|
+
return this.activityContainerComponent.startActivity(activityType, data, options);
|
|
10947
|
+
}
|
|
10948
|
+
onAnimationDone() {
|
|
10949
|
+
if (!this.isActive()) {
|
|
10950
|
+
this.clampShut = true;
|
|
10951
|
+
}
|
|
10952
|
+
}
|
|
10953
|
+
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 });
|
|
10954
|
+
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: [
|
|
10955
|
+
slideDownWhenOpenAnimation
|
|
10956
|
+
] });
|
|
10957
|
+
}
|
|
10958
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SlideDownInteractionContextComponent, decorators: [{
|
|
10959
|
+
type: Component,
|
|
10960
|
+
args: [{ selector: "aup-slide-down-interaction-context", animations: [
|
|
10961
|
+
slideDownWhenOpenAnimation
|
|
10962
|
+
], 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"] }]
|
|
10963
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
10964
|
+
type: Inject,
|
|
10965
|
+
args: [MAT_TABS_CONFIG]
|
|
10966
|
+
}, {
|
|
10967
|
+
type: Optional
|
|
10968
|
+
}] }]; }, propDecorators: { activityContainerComponent: [{
|
|
10969
|
+
type: ViewChild,
|
|
10970
|
+
args: ["activityContainer", { static: true }]
|
|
10971
|
+
}], dynamicHeight: [{
|
|
10972
|
+
type: Input
|
|
10973
|
+
}], active: [{
|
|
10974
|
+
type: HostBinding,
|
|
10975
|
+
args: ["class.active"]
|
|
10976
|
+
}] } });
|
|
10977
|
+
|
|
10225
10978
|
class InteractionContextTriggerForDirective extends GarbageCollector {
|
|
10226
10979
|
aupInteractionContextTriggerFor;
|
|
10227
10980
|
activityClass;
|
|
@@ -10304,6 +11057,7 @@ class InteractionModule {
|
|
|
10304
11057
|
AlertDialogComponent,
|
|
10305
11058
|
ActivityOutletComponent,
|
|
10306
11059
|
InPlaceInteractionContextComponent,
|
|
11060
|
+
SlideDownInteractionContextComponent,
|
|
10307
11061
|
AddItemInteractionContextComponent,
|
|
10308
11062
|
ActivityActionsComponent,
|
|
10309
11063
|
PopupInteractionContextComponent,
|
|
@@ -10330,8 +11084,6 @@ class InteractionModule {
|
|
|
10330
11084
|
RouterModule,
|
|
10331
11085
|
MatIconModule,
|
|
10332
11086
|
DirectivesModule,
|
|
10333
|
-
FlexModule,
|
|
10334
|
-
GridModule,
|
|
10335
11087
|
ComponentsModule,
|
|
10336
11088
|
FormsModule,
|
|
10337
11089
|
MatInputModule,
|
|
@@ -10351,7 +11103,8 @@ class InteractionModule {
|
|
|
10351
11103
|
InlineActivityTriggerComponent,
|
|
10352
11104
|
ModalActivityTriggerComponent,
|
|
10353
11105
|
AddCardActivityComponent,
|
|
10354
|
-
InlineStringEditorComponent
|
|
11106
|
+
InlineStringEditorComponent,
|
|
11107
|
+
SlideDownInteractionContextComponent] });
|
|
10355
11108
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InteractionModule, providers: [
|
|
10356
11109
|
InteractionService
|
|
10357
11110
|
// {
|
|
@@ -10365,8 +11118,6 @@ class InteractionModule {
|
|
|
10365
11118
|
RouterModule,
|
|
10366
11119
|
MatIconModule,
|
|
10367
11120
|
DirectivesModule,
|
|
10368
|
-
FlexModule,
|
|
10369
|
-
GridModule,
|
|
10370
11121
|
ComponentsModule,
|
|
10371
11122
|
FormsModule,
|
|
10372
11123
|
MatInputModule,
|
|
@@ -10385,8 +11136,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
10385
11136
|
RouterModule,
|
|
10386
11137
|
MatIconModule,
|
|
10387
11138
|
DirectivesModule,
|
|
10388
|
-
FlexModule,
|
|
10389
|
-
GridModule,
|
|
10390
11139
|
ComponentsModule,
|
|
10391
11140
|
FormsModule,
|
|
10392
11141
|
MatInputModule,
|
|
@@ -10401,6 +11150,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
10401
11150
|
AlertDialogComponent,
|
|
10402
11151
|
ActivityOutletComponent,
|
|
10403
11152
|
InPlaceInteractionContextComponent,
|
|
11153
|
+
SlideDownInteractionContextComponent,
|
|
10404
11154
|
AddItemInteractionContextComponent,
|
|
10405
11155
|
ActivityActionsComponent,
|
|
10406
11156
|
PopupInteractionContextComponent,
|
|
@@ -10438,6 +11188,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
10438
11188
|
ModalActivityTriggerComponent,
|
|
10439
11189
|
AddCardActivityComponent,
|
|
10440
11190
|
InlineStringEditorComponent,
|
|
11191
|
+
SlideDownInteractionContextComponent,
|
|
10441
11192
|
],
|
|
10442
11193
|
providers: [
|
|
10443
11194
|
InteractionService
|
|
@@ -10508,7 +11259,6 @@ class PlaceOutletComponent extends DisposableComponent {
|
|
|
10508
11259
|
router;
|
|
10509
11260
|
placeRouter;
|
|
10510
11261
|
placeConfig;
|
|
10511
|
-
cdr;
|
|
10512
11262
|
#animate$_accessor_storage = proxify((ValueModel));
|
|
10513
11263
|
get animate$() { return this.#animate$_accessor_storage; }
|
|
10514
11264
|
set animate$(value) { this.#animate$_accessor_storage = value; }
|
|
@@ -10542,12 +11292,11 @@ class PlaceOutletComponent extends DisposableComponent {
|
|
|
10542
11292
|
animationEnabled;
|
|
10543
11293
|
authorised;
|
|
10544
11294
|
notAuthorisedNoticePortal;
|
|
10545
|
-
constructor(router, placeRouter, placeConfig, unauthorisedPlaceNotice, parentOutlet
|
|
11295
|
+
constructor(router, placeRouter, placeConfig, unauthorisedPlaceNotice, parentOutlet) {
|
|
10546
11296
|
super();
|
|
10547
11297
|
this.router = router;
|
|
10548
11298
|
this.placeRouter = placeRouter;
|
|
10549
11299
|
this.placeConfig = placeConfig;
|
|
10550
|
-
this.cdr = cdr;
|
|
10551
11300
|
const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
|
|
10552
11301
|
this.parentOutletModel = new MutableValueModel(parentOutlet);
|
|
10553
11302
|
const defaultPlaceAnimationOrder = chain(this.parentOutletModel)
|
|
@@ -10559,7 +11308,7 @@ class PlaceOutletComponent extends DisposableComponent {
|
|
|
10559
11308
|
this.placesInAnimationOrder = chain(this.customPlaceAnimationOrder$)
|
|
10560
11309
|
.otherwise(defaultPlaceAnimationOrder);
|
|
10561
11310
|
this.activePlaceAnimationPosition = this.placesInAnimationOrder
|
|
10562
|
-
.
|
|
11311
|
+
.reduceAll((placesInOrder) => {
|
|
10563
11312
|
let placeIndex = 0;
|
|
10564
11313
|
if (activatePlaceType.value) {
|
|
10565
11314
|
placeIndex = placesInOrder.indexOf(activatePlaceType.value);
|
|
@@ -10713,8 +11462,8 @@ class PlaceOutletComponent extends DisposableComponent {
|
|
|
10713
11462
|
this.onAnimationFinishedJob = undefined;
|
|
10714
11463
|
}
|
|
10715
11464
|
}
|
|
10716
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceOutletComponent, deps: [{ token: i1$
|
|
10717
|
-
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$
|
|
11465
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceOutletComponent, deps: [{ token: i1$5.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 });
|
|
11466
|
+
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$5.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: i1$4.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], animations: [LEFT_RIGHT_PLACE_ANIMATION] });
|
|
10718
11467
|
}
|
|
10719
11468
|
__decorate([
|
|
10720
11469
|
Proxify(),
|
|
@@ -10735,7 +11484,7 @@ __decorate([
|
|
|
10735
11484
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceOutletComponent, decorators: [{
|
|
10736
11485
|
type: Component,
|
|
10737
11486
|
args: [{ selector: 'aup-place-outlet', animations: [LEFT_RIGHT_PLACE_ANIMATION], 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"] }]
|
|
10738
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
11487
|
+
}], ctorParameters: function () { return [{ type: i1$5.Router }, { type: PlaceRouter }, { type: undefined, decorators: [{
|
|
10739
11488
|
type: Optional
|
|
10740
11489
|
}, {
|
|
10741
11490
|
type: Inject,
|
|
@@ -10749,7 +11498,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
10749
11498
|
type: SkipSelf
|
|
10750
11499
|
}, {
|
|
10751
11500
|
type: Optional
|
|
10752
|
-
}] }
|
|
11501
|
+
}] }]; }, propDecorators: { animate$: [{
|
|
10753
11502
|
type: Input
|
|
10754
11503
|
}], animate: [{
|
|
10755
11504
|
type: Input
|
|
@@ -10882,7 +11631,7 @@ class ListPlaceNavComponent extends AbstractPlaceNavigationComponent {
|
|
|
10882
11631
|
super(router);
|
|
10883
11632
|
}
|
|
10884
11633
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ListPlaceNavComponent, deps: [{ token: PlaceRouter }], target: i0.ɵɵFactoryTarget.Component });
|
|
10885
|
-
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$
|
|
11634
|
+
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$2.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i3$2.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"] }] });
|
|
10886
11635
|
}
|
|
10887
11636
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ListPlaceNavComponent, decorators: [{
|
|
10888
11637
|
type: Component,
|
|
@@ -10957,7 +11706,7 @@ class SidePlaceNavigationComponent extends AbstractPlaceNavigationComponent {
|
|
|
10957
11706
|
this.expanded = !this.expanded;
|
|
10958
11707
|
}
|
|
10959
11708
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SidePlaceNavigationComponent, deps: [{ token: PlaceRouter }], target: i0.ɵɵFactoryTarget.Component });
|
|
10960
|
-
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$
|
|
11709
|
+
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$2.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i3$2.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i3$2.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i3$2.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"] }] });
|
|
10961
11710
|
}
|
|
10962
11711
|
__decorate([
|
|
10963
11712
|
Proxify(),
|
|
@@ -10969,7 +11718,7 @@ __decorate([
|
|
|
10969
11718
|
], SidePlaceNavigationComponent.prototype, "expanded", null);
|
|
10970
11719
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SidePlaceNavigationComponent, decorators: [{
|
|
10971
11720
|
type: Component,
|
|
10972
|
-
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"] }]
|
|
11721
|
+
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"] }]
|
|
10973
11722
|
}], ctorParameters: function () { return [{ type: PlaceRouter }]; }, propDecorators: { expanded$: [{
|
|
10974
11723
|
type: Input
|
|
10975
11724
|
}], expanded: [{
|
|
@@ -11010,7 +11759,6 @@ class PlaceModule {
|
|
|
11010
11759
|
MatTooltipModule,
|
|
11011
11760
|
MatIconModule,
|
|
11012
11761
|
DirectivesModule,
|
|
11013
|
-
FlexModule,
|
|
11014
11762
|
ComponentsModule,
|
|
11015
11763
|
PortalModule,
|
|
11016
11764
|
MatCardModule], exports: [PlaceOutletComponent,
|
|
@@ -11027,7 +11775,6 @@ class PlaceModule {
|
|
|
11027
11775
|
MatTooltipModule,
|
|
11028
11776
|
MatIconModule,
|
|
11029
11777
|
DirectivesModule,
|
|
11030
|
-
FlexModule,
|
|
11031
11778
|
ComponentsModule,
|
|
11032
11779
|
PortalModule,
|
|
11033
11780
|
MatCardModule] });
|
|
@@ -11045,7 +11792,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
11045
11792
|
MatTooltipModule,
|
|
11046
11793
|
MatIconModule,
|
|
11047
11794
|
DirectivesModule,
|
|
11048
|
-
FlexModule,
|
|
11049
11795
|
ComponentsModule,
|
|
11050
11796
|
PortalModule,
|
|
11051
11797
|
MatCardModule
|
|
@@ -11135,60 +11881,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
11135
11881
|
}]
|
|
11136
11882
|
}] });
|
|
11137
11883
|
|
|
11138
|
-
const slideDownOnEnterDef = style({
|
|
11139
|
-
opacity: 0,
|
|
11140
|
-
'height': '0',
|
|
11141
|
-
paddingTop: '0',
|
|
11142
|
-
paddingBottom: '0'
|
|
11143
|
-
});
|
|
11144
|
-
// TODO: params aren't getting customised in the view. Need to figure out the correct approach.
|
|
11145
|
-
const slideDownOnEnterAnimation = trigger('slideDownOnEnter', [
|
|
11146
|
-
transition(':enter', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
11147
|
-
transition(':leave', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })
|
|
11148
|
-
]);
|
|
11149
|
-
const slideLeftOnEnterDef = style({
|
|
11150
|
-
opacity: 0,
|
|
11151
|
-
'width': '0',
|
|
11152
|
-
paddingLeft: '0',
|
|
11153
|
-
paddingRight: '0'
|
|
11154
|
-
});
|
|
11155
|
-
const slideRightOnEnterAnimation = trigger('slideRightOnEnter', [
|
|
11156
|
-
transition(':enter', [slideLeftOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
|
|
11157
|
-
transition(':leave', [animate('{{duration}}', slideLeftOnEnterDef)], { params: { duration: '100ms' } })
|
|
11158
|
-
]);
|
|
11159
|
-
const ZERO_WIDTH = {
|
|
11160
|
-
opacity: 0,
|
|
11161
|
-
width: '0',
|
|
11162
|
-
paddingLeft: '0',
|
|
11163
|
-
paddingRight: '0',
|
|
11164
|
-
};
|
|
11165
|
-
const ZERO_HEIGHT = {
|
|
11166
|
-
opacity: 0,
|
|
11167
|
-
height: '0',
|
|
11168
|
-
paddingTop: '0',
|
|
11169
|
-
paddingBottom: '0',
|
|
11170
|
-
};
|
|
11171
|
-
const slideDownAndRightOnEnterAnimation = trigger('slideDownAndRightOnEnter', [
|
|
11172
|
-
transition(':enter', [
|
|
11173
|
-
style({ overflow: "hidden", whiteSpace: "nowrap", ...ZERO_WIDTH, ...ZERO_HEIGHT }),
|
|
11174
|
-
animate('{{duration}}')
|
|
11175
|
-
], { params: { duration: '100ms' } }),
|
|
11176
|
-
transition(':leave', [
|
|
11177
|
-
style({ overflow: "hidden", whiteSpace: "nowrap" }),
|
|
11178
|
-
group([
|
|
11179
|
-
animate('{{duration}}', style(ZERO_HEIGHT)),
|
|
11180
|
-
// Hack: 100ms is too quick as it animates from * - 0 as we only see it animate the width is greater than the parent.
|
|
11181
|
-
// Not sure how to animate from * to natural new width of parent. This hack won't work for text that's just a little
|
|
11182
|
-
// bit wider than the parent as it'll fall within the parent bounds very early in the animation cycle.
|
|
11183
|
-
animate('300ms', style(ZERO_WIDTH)),
|
|
11184
|
-
])
|
|
11185
|
-
], { params: { duration: '100ms' } })
|
|
11186
|
-
]);
|
|
11187
|
-
|
|
11188
11884
|
/**
|
|
11189
11885
|
* @file Automatically generated by barrelsby.
|
|
11190
11886
|
*/
|
|
11191
11887
|
|
|
11888
|
+
class ResizeObserverDirective extends DisposableComponent {
|
|
11889
|
+
aupOnResize = new EventEmitter();
|
|
11890
|
+
elementRef = this.inject(ElementRef);
|
|
11891
|
+
ngZone = this.inject(NgZone);
|
|
11892
|
+
_bounds$ = new MutableValueModel();
|
|
11893
|
+
ngAfterViewInit() {
|
|
11894
|
+
const element = this.elementRef.nativeElement;
|
|
11895
|
+
const ro = new ResizeObserver((entries, observer) => {
|
|
11896
|
+
this.ngZone.run(() => this._updateBounds());
|
|
11897
|
+
});
|
|
11898
|
+
ro.observe(element);
|
|
11899
|
+
this.onDispose(() => ro.disconnect());
|
|
11900
|
+
setTimeout(() => this._updateBounds());
|
|
11901
|
+
}
|
|
11902
|
+
get bounds$() {
|
|
11903
|
+
return this._bounds$.readonly$;
|
|
11904
|
+
}
|
|
11905
|
+
_updateBounds() {
|
|
11906
|
+
this._bounds$.value = Bounds.ofElement(this.elementRef.nativeElement);
|
|
11907
|
+
this.aupOnResize.emit(this._bounds$.value);
|
|
11908
|
+
}
|
|
11909
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ResizeObserverDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
11910
|
+
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 });
|
|
11911
|
+
}
|
|
11912
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ResizeObserverDirective, decorators: [{
|
|
11913
|
+
type: Directive,
|
|
11914
|
+
args: [{
|
|
11915
|
+
selector: "[aupOnResize]",
|
|
11916
|
+
standalone: true
|
|
11917
|
+
}]
|
|
11918
|
+
}], propDecorators: { aupOnResize: [{
|
|
11919
|
+
type: Output
|
|
11920
|
+
}] } });
|
|
11921
|
+
|
|
11192
11922
|
/**
|
|
11193
11923
|
* @file Automatically generated by barrelsby.
|
|
11194
11924
|
*/
|
|
@@ -11279,7 +12009,7 @@ class DialogInteractionContextFactory extends ModalInteractionContextFactory {
|
|
|
11279
12009
|
};
|
|
11280
12010
|
return new DialogInteractionContext(identifier, api, this.dialogService, config);
|
|
11281
12011
|
}
|
|
11282
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DialogInteractionContextFactory, deps: [{ token: i1$
|
|
12012
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DialogInteractionContextFactory, deps: [{ token: i1$7.MatDialog }, { token: DIALOG_INTERACTION_SERVICE_DEFAULTS, optional: true }, { token: MAT_DIALOG_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
11283
12013
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DialogInteractionContextFactory, providedIn: 'root' });
|
|
11284
12014
|
}
|
|
11285
12015
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DialogInteractionContextFactory, decorators: [{
|
|
@@ -11287,12 +12017,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
11287
12017
|
args: [{
|
|
11288
12018
|
providedIn: 'root'
|
|
11289
12019
|
}]
|
|
11290
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
12020
|
+
}], ctorParameters: function () { return [{ type: i1$7.MatDialog }, { type: i1$7.MatDialogConfig, decorators: [{
|
|
11291
12021
|
type: Optional
|
|
11292
12022
|
}, {
|
|
11293
12023
|
type: Inject,
|
|
11294
12024
|
args: [DIALOG_INTERACTION_SERVICE_DEFAULTS]
|
|
11295
|
-
}] }, { type: i1$
|
|
12025
|
+
}] }, { type: i1$7.MatDialogConfig, decorators: [{
|
|
11296
12026
|
type: Optional
|
|
11297
12027
|
}, {
|
|
11298
12028
|
type: Inject,
|
|
@@ -11412,6 +12142,7 @@ class PlaceGuard {
|
|
|
11412
12142
|
}
|
|
11413
12143
|
// @Trace()
|
|
11414
12144
|
async canActivate(activatedRoute, state) {
|
|
12145
|
+
await this.placeRouter.waitUntilRouterReady();
|
|
11415
12146
|
if (PlaceComponent.isPlaceComponentConstructor(activatedRoute.component)) {
|
|
11416
12147
|
const placeDefinition = PlaceComponent.getDefinition(activatedRoute.component);
|
|
11417
12148
|
if (placeDefinition.authenticate) {
|
|
@@ -11524,13 +12255,13 @@ class PlaceGuard {
|
|
|
11524
12255
|
return next();
|
|
11525
12256
|
}
|
|
11526
12257
|
}
|
|
11527
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceGuard, deps: [{ token: i1$
|
|
12258
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceGuard, deps: [{ token: i1$5.Router }, { token: UrlService }, { token: PlaceRouter }, { token: PlaceHistory }, { token: InteractionService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
11528
12259
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceGuard, providedIn: 'root' });
|
|
11529
12260
|
}
|
|
11530
12261
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceGuard, decorators: [{
|
|
11531
12262
|
type: Injectable,
|
|
11532
12263
|
args: [{ providedIn: 'root' }]
|
|
11533
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
12264
|
+
}], ctorParameters: function () { return [{ type: i1$5.Router }, { type: UrlService }, { type: PlaceRouter }, { type: PlaceHistory }, { type: InteractionService }, { type: i0.Injector }]; } });
|
|
11534
12265
|
|
|
11535
12266
|
var Formatter;
|
|
11536
12267
|
(function (Formatter) {
|
|
@@ -11564,69 +12295,74 @@ var Formatter;
|
|
|
11564
12295
|
Formatter.BOOLEAN = new BooleanType();
|
|
11565
12296
|
})(Formatter || (Formatter = {}));
|
|
11566
12297
|
|
|
11567
|
-
function installMechanics(parameterDef
|
|
11568
|
-
|
|
11569
|
-
|
|
11570
|
-
|
|
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
|
-
}
|
|
12298
|
+
// function installMechanics<M extends HasValue<any>>(parameterDef: ParameterDefinition<any>, prototype: object, propertyKey: string | symbol, tagPrefix: string) {
|
|
12299
|
+
//
|
|
12300
|
+
// Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);
|
|
12301
|
+
//
|
|
12302
|
+
// function getMechanics(instance: M, propertyName: string | symbol) {
|
|
12303
|
+
// const key = `__mechanics_${propertyName.toString()}`;
|
|
12304
|
+
// if (!instance[key]) {
|
|
12305
|
+
// const backingModel = parameterDef.createBackingModel();
|
|
12306
|
+
// instance[key] = {
|
|
12307
|
+
// backingModel: backingModel,
|
|
12308
|
+
// binding: null as Binding<any, any>
|
|
12309
|
+
// };
|
|
12310
|
+
// const tag = `${tagPrefix}(${prototype.constructor.name}.${propertyKey.toString()})`;
|
|
12311
|
+
// DebugContext.getOrCreate(instance[key].backingModel).tag(tag);
|
|
12312
|
+
// }
|
|
12313
|
+
// return instance[key];
|
|
12314
|
+
// }
|
|
12315
|
+
//
|
|
12316
|
+
// Object.defineProperty(prototype, propertyKey, {
|
|
12317
|
+
// get: function() {
|
|
12318
|
+
// return getMechanics(this, propertyKey).backingModel;
|
|
12319
|
+
// },
|
|
12320
|
+
// set: function(userModel: M) {
|
|
12321
|
+
// const mechanics = getMechanics(this, propertyKey);
|
|
12322
|
+
// // This handles the scenario where we want to push an existing value model (such as a form model)
|
|
12323
|
+
// // to and from the route.
|
|
12324
|
+
// if (mechanics.binding) {
|
|
12325
|
+
// mechanics.binding.dispose();
|
|
12326
|
+
// }
|
|
12327
|
+
// if (userModel) {
|
|
12328
|
+
// mechanics.binding = new Binding(mechanics.backingModel, userModel, {
|
|
12329
|
+
// toLeft: Functions.identity,
|
|
12330
|
+
// toRight: Functions.identity
|
|
12331
|
+
// });
|
|
12332
|
+
// if (parameterDef.isEmptyValue(userModel.value)) {
|
|
12333
|
+
// // console.log(`Push visit to model for ${tag}`, {value: mechanics.backingModel.value});
|
|
12334
|
+
// mechanics.binding.writeRight(); // push the visit into the user model;
|
|
12335
|
+
// } else {
|
|
12336
|
+
// if (!parameterDef.isEmptyValue(mechanics.backingModel.value)) {
|
|
12337
|
+
// console.warn('Assigning a visit model with an existing value to a visit parameter with an existing value. Visit parameter will be overridden');
|
|
12338
|
+
// }
|
|
12339
|
+
// mechanics.binding.writeLeft(); // push the user model into the visit
|
|
12340
|
+
// }
|
|
12341
|
+
// }
|
|
12342
|
+
// }
|
|
12343
|
+
// });
|
|
12344
|
+
// }
|
|
11612
12345
|
function RouteId(formatter, options) {
|
|
11613
12346
|
return (prototype, propertyKey) => {
|
|
11614
12347
|
const parameterDef = new ParameterDefinition.RouteId(propertyKey.toString(), options, formatter);
|
|
11615
|
-
installMechanics(parameterDef, prototype, propertyKey, '@RouteId');
|
|
12348
|
+
// installMechanics(parameterDef, prototype, propertyKey, '@RouteId');
|
|
12349
|
+
Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);
|
|
11616
12350
|
};
|
|
11617
12351
|
}
|
|
11618
12352
|
function VisitParameter(options) {
|
|
11619
12353
|
const opts = Opts.get(options);
|
|
11620
12354
|
return (prototype, propertyKey) => {
|
|
11621
12355
|
const parameterDef = new ParameterDefinition.ValueParameter(propertyKey.toString(), options, opts.getOptional('storeInUrl', null));
|
|
11622
|
-
|
|
12356
|
+
Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);
|
|
12357
|
+
// installMechanics(parameterDef, prototype, propertyKey, '@VisitParameter');
|
|
11623
12358
|
};
|
|
11624
12359
|
}
|
|
11625
12360
|
function VisitParameterList(options) {
|
|
11626
12361
|
const opts = Opts.get(options);
|
|
11627
12362
|
return (prototype, propertyKey) => {
|
|
11628
12363
|
const parameterDef = new ParameterDefinition.ArrayParameter(propertyKey.toString(), options, opts.getOptional('storeInUrl', null));
|
|
11629
|
-
|
|
12364
|
+
Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);
|
|
12365
|
+
// installMechanics(parameterDef, prototype, propertyKey, '@VisitParameterList');
|
|
11630
12366
|
};
|
|
11631
12367
|
}
|
|
11632
12368
|
|
|
@@ -11720,5 +12456,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
11720
12456
|
* Generated bundle index. Do not edit.
|
|
11721
12457
|
*/
|
|
11722
12458
|
|
|
11723
|
-
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,
|
|
12459
|
+
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, CellFooterPortalRef, 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, FOOTER_CELL_RENDERER_PORTAL, FlattenedTreeListModel, FlexComponent, FocusBinding, FocusBindingDirective, FocusBindingFactory, FocusContainerComponent, FocusableComponent, FooterRowModel, 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, TableFooterRow, 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 };
|
|
11724
12460
|
//# sourceMappingURL=coolon-angular-ui-powerups.mjs.map
|