@bcgov/nr-ngx-component-lib 0.0.1
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/components/button/button.component.d.ts +22 -0
- package/components/cell-content/cell-content.component.d.ts +12 -0
- package/components/device-view/device-view.component.d.ts +12 -0
- package/components/expansion-panel/expansion-panel.component.d.ts +26 -0
- package/components/filter-container/filter-container.component.d.ts +7 -0
- package/components/filter-date/filter-date.component.d.ts +12 -0
- package/components/filter-search/filter-search.component.d.ts +18 -0
- package/components/filter-select/filter-select.component.d.ts +63 -0
- package/components/filters-panel/filters-panel.component.d.ts +13 -0
- package/components/form-field/form-field.component.d.ts +13 -0
- package/components/form-layout/form-layout.component.d.ts +5 -0
- package/components/gap/gap.component.d.ts +9 -0
- package/components/page-container/page-container.component.d.ts +5 -0
- package/components/page-header/page-header.component.d.ts +6 -0
- package/components/row-list-desktop/row-list-desktop.component.d.ts +5 -0
- package/components/row-list-mobile/row-list-mobile.component.d.ts +5 -0
- package/components/row-list-pagination/row-list-pagination.component.d.ts +31 -0
- package/components/row-list-sorting/row-list-sorting.component.d.ts +18 -0
- package/components/snackbar/snackbar.component.d.ts +15 -0
- package/directives/configuration-subscriber.base.d.ts +14 -0
- package/directives/row-list.base.d.ts +55 -0
- package/esm2022/bcgov-nr-ngx-component-lib.mjs +5 -0
- package/esm2022/components/button/button.component.mjs +69 -0
- package/esm2022/components/cell-content/cell-content.component.mjs +34 -0
- package/esm2022/components/device-view/device-view.component.mjs +34 -0
- package/esm2022/components/expansion-panel/expansion-panel.component.mjs +144 -0
- package/esm2022/components/filter-container/filter-container.component.mjs +20 -0
- package/esm2022/components/filter-date/filter-date.component.mjs +43 -0
- package/esm2022/components/filter-search/filter-search.component.mjs +52 -0
- package/esm2022/components/filter-select/filter-select.component.mjs +269 -0
- package/esm2022/components/filters-panel/filters-panel.component.mjs +39 -0
- package/esm2022/components/form-field/form-field.component.mjs +103 -0
- package/esm2022/components/form-layout/form-layout.component.mjs +11 -0
- package/esm2022/components/gap/gap.component.mjs +21 -0
- package/esm2022/components/page-container/page-container.component.mjs +11 -0
- package/esm2022/components/page-header/page-header.component.mjs +19 -0
- package/esm2022/components/row-list-desktop/row-list-desktop.component.mjs +11 -0
- package/esm2022/components/row-list-mobile/row-list-mobile.component.mjs +11 -0
- package/esm2022/components/row-list-pagination/row-list-pagination.component.mjs +106 -0
- package/esm2022/components/row-list-sorting/row-list-sorting.component.mjs +44 -0
- package/esm2022/components/snackbar/snackbar.component.mjs +26 -0
- package/esm2022/directives/configuration-subscriber.base.mjs +28 -0
- package/esm2022/directives/row-list.base.mjs +150 -0
- package/esm2022/nr-ngx-component-lib.module.mjs +227 -0
- package/esm2022/public-api.mjs +33 -0
- package/esm2022/services/configuration.service.mjs +38 -0
- package/esm2022/services/page-state.service.mjs +28 -0
- package/esm2022/services/snackbar-util.service.mjs +69 -0
- package/esm2022/utils/code-table.util.mjs +23 -0
- package/esm2022/utils/date.util.mjs +15 -0
- package/esm2022/utils/filter.util.mjs +25 -0
- package/esm2022/utils/row-list.util.mjs +44 -0
- package/fesm2022/bcgov-nr-ngx-component-lib.mjs +1617 -0
- package/fesm2022/bcgov-nr-ngx-component-lib.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/nr-ngx-component-lib.module.d.ts +46 -0
- package/package.json +22 -0
- package/public-api.d.ts +29 -0
- package/services/configuration.service.d.ts +16 -0
- package/services/page-state.service.d.ts +9 -0
- package/services/snackbar-util.service.d.ts +16 -0
- package/styles/bc-sans/FONTLOG_README.txt +30 -0
- package/styles/bc-sans/LICENSE_OFL.txt +94 -0
- package/styles/bc-sans/css/BCSans.css +28 -0
- package/styles/bc-sans/fonts/BCSans-Bold.woff +0 -0
- package/styles/bc-sans/fonts/BCSans-Bold.woff2 +0 -0
- package/styles/bc-sans/fonts/BCSans-BoldItalic.woff +0 -0
- package/styles/bc-sans/fonts/BCSans-BoldItalic.woff2 +0 -0
- package/styles/bc-sans/fonts/BCSans-Italic.woff +0 -0
- package/styles/bc-sans/fonts/BCSans-Italic.woff2 +0 -0
- package/styles/bc-sans/fonts/BCSans-Regular.woff +0 -0
- package/styles/bc-sans/fonts/BCSans-Regular.woff2 +0 -0
- package/styles/global.scss +34 -0
- package/styles/include/mat-button.scss +71 -0
- package/styles/include/mat-checkbox.scss +44 -0
- package/styles/include/mat-icon.scss +30 -0
- package/styles/include/mat-radio-button.scss +19 -0
- package/styles/material.scss +40 -0
- package/utils/code-table.util.d.ts +12 -0
- package/utils/date.util.d.ts +14 -0
- package/utils/filter.util.d.ts +4 -0
- package/utils/row-list.util.d.ts +16 -0
|
@@ -0,0 +1,1617 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, inject, ChangeDetectorRef, Directive, EventEmitter, NgZone, booleanAttribute, Component, Input, Output, ElementRef, ChangeDetectionStrategy, ViewChild, ViewContainerRef, numberAttribute, Renderer2, HostListener, Inject, NgModule } from '@angular/core';
|
|
3
|
+
import { BehaviorSubject, fromEvent } from 'rxjs';
|
|
4
|
+
import * as i3 from '@angular/material/icon';
|
|
5
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
6
|
+
import * as i2 from '@angular/material/core';
|
|
7
|
+
import { MatRippleModule } from '@angular/material/core';
|
|
8
|
+
import * as i3$1 from '@angular/material/tooltip';
|
|
9
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
10
|
+
import * as i1 from '@angular/material/expansion';
|
|
11
|
+
import { MatExpansionModule } from '@angular/material/expansion';
|
|
12
|
+
import * as i2$1 from '@angular/material/progress-spinner';
|
|
13
|
+
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
14
|
+
import * as i3$2 from '@angular/material/form-field';
|
|
15
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
16
|
+
import * as i5 from '@angular/material/input';
|
|
17
|
+
import { MatInputModule } from '@angular/material/input';
|
|
18
|
+
import moment from 'moment';
|
|
19
|
+
import * as i1$1 from '@angular/forms';
|
|
20
|
+
import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
21
|
+
import * as i2$2 from '@angular/material/button';
|
|
22
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
23
|
+
import * as i6 from '@busacca/ng-pick-datetime';
|
|
24
|
+
import { OwlDateTimeModule, OwlMomentDateTimeModule, OWL_DATE_TIME_FORMATS } from '@busacca/ng-pick-datetime';
|
|
25
|
+
import { Overlay } from '@angular/cdk/overlay';
|
|
26
|
+
import { TemplatePortal } from '@angular/cdk/portal';
|
|
27
|
+
import { filter } from 'rxjs/operators';
|
|
28
|
+
import * as i6$1 from '@angular/material/list';
|
|
29
|
+
import { MatListModule } from '@angular/material/list';
|
|
30
|
+
import * as i1$2 from 'ngx-pagination';
|
|
31
|
+
import { NgxPaginationModule } from 'ngx-pagination';
|
|
32
|
+
import * as i2$3 from '@angular/material/radio';
|
|
33
|
+
import { MatRadioModule } from '@angular/material/radio';
|
|
34
|
+
import * as i1$3 from '@angular/material/snack-bar';
|
|
35
|
+
import { MAT_SNACK_BAR_DATA, MatSnackBar } from '@angular/material/snack-bar';
|
|
36
|
+
import { CommonModule } from '@angular/common';
|
|
37
|
+
import { MatCardModule } from '@angular/material/card';
|
|
38
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
39
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
40
|
+
import { MatSortModule } from '@angular/material/sort';
|
|
41
|
+
import { MatTableModule } from '@angular/material/table';
|
|
42
|
+
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
43
|
+
import { RouterModule } from '@angular/router';
|
|
44
|
+
|
|
45
|
+
class ConfigurationService {
|
|
46
|
+
constructor() {
|
|
47
|
+
this._defaultConfiguration = {
|
|
48
|
+
displayMode: 'desktop'
|
|
49
|
+
};
|
|
50
|
+
this.configSubject = new BehaviorSubject(this._defaultConfiguration);
|
|
51
|
+
// Observable that components can subscribe to
|
|
52
|
+
this.configurationObservable = this.configSubject.asObservable();
|
|
53
|
+
this.configurationObservable.subscribe((c) => {
|
|
54
|
+
let el = document.querySelector('body');
|
|
55
|
+
el.classList.toggle('nrcl-device-desktop', c.displayMode == 'desktop');
|
|
56
|
+
el.classList.toggle('nrcl-device-mobile', c.displayMode == 'mobile');
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
// Get current config value synchronously
|
|
60
|
+
get configuration() {
|
|
61
|
+
return this.configSubject.value;
|
|
62
|
+
}
|
|
63
|
+
// Update entire config
|
|
64
|
+
update(configuration) {
|
|
65
|
+
this.configSubject.next({
|
|
66
|
+
...this.configSubject.value,
|
|
67
|
+
...configuration
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConfigurationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
71
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConfigurationService, providedIn: 'root' }); }
|
|
72
|
+
}
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConfigurationService, decorators: [{
|
|
74
|
+
type: Injectable,
|
|
75
|
+
args: [{
|
|
76
|
+
providedIn: 'root'
|
|
77
|
+
}]
|
|
78
|
+
}], ctorParameters: () => [] });
|
|
79
|
+
|
|
80
|
+
class ConfigurationSubscriberBase {
|
|
81
|
+
constructor() {
|
|
82
|
+
this.configurationService = inject(ConfigurationService);
|
|
83
|
+
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
84
|
+
}
|
|
85
|
+
ngOnInit() {
|
|
86
|
+
this.configurationSubscription = this.configurationService.configurationObservable.subscribe((c) => {
|
|
87
|
+
this.configuration = c;
|
|
88
|
+
this.onConfigurationChange();
|
|
89
|
+
this.changeDetectorRef.detectChanges();
|
|
90
|
+
});
|
|
91
|
+
this.configuration = this.configurationService.configuration;
|
|
92
|
+
}
|
|
93
|
+
ngOnDestroy() {
|
|
94
|
+
if (this.configurationSubscription)
|
|
95
|
+
this.configurationSubscription.unsubscribe();
|
|
96
|
+
}
|
|
97
|
+
onConfigurationChange() { }
|
|
98
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConfigurationSubscriberBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
99
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: ConfigurationSubscriberBase, ngImport: i0 }); }
|
|
100
|
+
}
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConfigurationSubscriberBase, decorators: [{
|
|
102
|
+
type: Directive
|
|
103
|
+
}] });
|
|
104
|
+
|
|
105
|
+
class ButtonComponent extends ConfigurationSubscriberBase {
|
|
106
|
+
constructor() {
|
|
107
|
+
super(...arguments);
|
|
108
|
+
this.primary = false;
|
|
109
|
+
this.disabled = false;
|
|
110
|
+
this.click = new EventEmitter();
|
|
111
|
+
this.zone = inject(NgZone);
|
|
112
|
+
}
|
|
113
|
+
onClick(ev) {
|
|
114
|
+
if (this.disabled)
|
|
115
|
+
return;
|
|
116
|
+
this.click.emit(ev);
|
|
117
|
+
}
|
|
118
|
+
onConfigurationChange() {
|
|
119
|
+
// apparently this is needed to ensure that the host binding updates properly
|
|
120
|
+
this.zone.run(() => {
|
|
121
|
+
if (this.compact == null || this.compact === false) {
|
|
122
|
+
this.isCompact = false;
|
|
123
|
+
}
|
|
124
|
+
else if (this.compact == '' || this.compact === true) {
|
|
125
|
+
this.isCompact = true;
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
this.isCompact = this.compact == this.configuration.displayMode;
|
|
129
|
+
}
|
|
130
|
+
this.changeDetectorRef.markForCheck();
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
134
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ButtonComponent, selector: "nrcl-button", inputs: { label: "label", icon: "icon", iconRight: "iconRight", iconCompact: "iconCompact", tooltip: "tooltip", compact: "compact", primary: ["primary", "primary", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { click: "click" }, host: { properties: { "class.primary": "primary", "class.disabled": "disabled", "class.compact": "isCompact", "class.icon-left": "!isCompact && icon", "class.icon-right": "!isCompact && iconRight && label", "class.label": "label" } }, usesInheritance: true, ngImport: i0, template: "<button \n matRipple\n (click)=\"onClick( $event )\"\n [disabled]=\"disabled\"\n [matTooltip]=\"tooltip\"\n>\n @if ( icon || iconRight || iconCompact || label ) {\n @if ( icon && ( !isCompact || !iconCompact ) ) { \n <mat-icon class=\"left\">{{ icon }}</mat-icon> \n }\n\n @if ( !isCompact && iconRight && label ) { \n <mat-icon class=\"right\">{{ iconRight }}</mat-icon> \n }\n\n @if ( isCompact && iconCompact ) { \n <mat-icon class=\"compact\">{{ iconCompact }}</mat-icon> \n }\n\n @if ( label ) {\n <span class=\"label\">{{ label }}</span> \n }\n }\n @else {\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n }\n</button>\n", styles: ["::ng-deep :root{--nrcl-button-height: 36px;--nrcl-compact-button-height: 44px;--nrcl-button-foreground-color: black;--nrcl-button-background-color: white;--nrcl-button-border-color: #003366;--nrcl-button-hover-background-color: #f5f5f5;--nrcl-button-primary-foreground-color: white;--nrcl-button-primary-background-color: #003366;--nrcl-button-primary-border-color: #003366;--nrcl-button-primary-hover-background-color: #144a89cc;--nrcl-button-disabled-foreground-color: #7E7E7E;--nrcl-button-disabled-background-color: #CCCCCC;--nrcl-button-disabled-border-color: #CCCCCC;--nrcl-button-disabled-hover-background-color: #CCCCCC}:host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host button{height:var(--nrcl-button-height);cursor:pointer;margin:0;padding:0;display:flex;align-items:center;position:relative;background-color:var(--nrcl-button-background-color);color:var(--nrcl-button-foreground-color);border-color:var(--nrcl-button-border-color);border-width:1px;border-style:solid;border-radius:4px;box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host button .label,:host button .content{font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size);white-space:nowrap;font-weight:500}:host button:hover{background-color:var(--nrcl-button-hover-background-color)}:host.label button{padding-left:16px;padding-right:16px}:host.icon-left button{padding-left:var(--nrcl-button-height)}:host.icon-left button .mat-icon.left{position:absolute;left:calc((var(--nrcl-button-height) - var(--nrcl-icon-size)) / 2)}:host.icon-right button{padding-right:var(--nrcl-button-height)}:host.icon-right button .mat-icon.right{position:absolute;right:calc((var(--nrcl-button-height) - var(--nrcl-icon-size)) / 2)}:host.primary button{background-color:var(--nrcl-button-primary-background-color);color:var(--nrcl-button-primary-foreground-color);border-color:var(--nrcl-button-primary-border-color)}:host.primary button:hover{background-color:var(--nrcl-button-primary-hover-background-color)}:host.compact button{height:var(--nrcl-compact-button-height);border:none;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 8px;box-shadow:none;background-color:transparent;color:var(--nrcl-button-foreground-color)}:host.compact button:hover{background-color:var(--nrcl-button-hover-background-color)}:host.compact button .label{line-height:20px;font-size:var(--nrcl-font-size-small)}:host button .content{padding-left:16px;padding-right:16px}:host.disabled button{background-color:var(--nrcl-button-disabled-background-color);color:var(--nrcl-button-disabled-foreground-color);border-color:var(--nrcl-button-disabled-border-color)}:host.disabled button:hover{background-color:var(--nrcl-button-disabled-hover-background-color)}\n"], dependencies: [{ kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
|
|
135
|
+
}
|
|
136
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
137
|
+
type: Component,
|
|
138
|
+
args: [{ selector: 'nrcl-button', host: {
|
|
139
|
+
'[class.primary]': 'primary',
|
|
140
|
+
'[class.disabled]': 'disabled',
|
|
141
|
+
'[class.compact]': 'isCompact',
|
|
142
|
+
'[class.icon-left]': '!isCompact && icon',
|
|
143
|
+
'[class.icon-right]': '!isCompact && iconRight && label',
|
|
144
|
+
'[class.label]': 'label'
|
|
145
|
+
}, template: "<button \n matRipple\n (click)=\"onClick( $event )\"\n [disabled]=\"disabled\"\n [matTooltip]=\"tooltip\"\n>\n @if ( icon || iconRight || iconCompact || label ) {\n @if ( icon && ( !isCompact || !iconCompact ) ) { \n <mat-icon class=\"left\">{{ icon }}</mat-icon> \n }\n\n @if ( !isCompact && iconRight && label ) { \n <mat-icon class=\"right\">{{ iconRight }}</mat-icon> \n }\n\n @if ( isCompact && iconCompact ) { \n <mat-icon class=\"compact\">{{ iconCompact }}</mat-icon> \n }\n\n @if ( label ) {\n <span class=\"label\">{{ label }}</span> \n }\n }\n @else {\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n }\n</button>\n", styles: ["::ng-deep :root{--nrcl-button-height: 36px;--nrcl-compact-button-height: 44px;--nrcl-button-foreground-color: black;--nrcl-button-background-color: white;--nrcl-button-border-color: #003366;--nrcl-button-hover-background-color: #f5f5f5;--nrcl-button-primary-foreground-color: white;--nrcl-button-primary-background-color: #003366;--nrcl-button-primary-border-color: #003366;--nrcl-button-primary-hover-background-color: #144a89cc;--nrcl-button-disabled-foreground-color: #7E7E7E;--nrcl-button-disabled-background-color: #CCCCCC;--nrcl-button-disabled-border-color: #CCCCCC;--nrcl-button-disabled-hover-background-color: #CCCCCC}:host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host button{height:var(--nrcl-button-height);cursor:pointer;margin:0;padding:0;display:flex;align-items:center;position:relative;background-color:var(--nrcl-button-background-color);color:var(--nrcl-button-foreground-color);border-color:var(--nrcl-button-border-color);border-width:1px;border-style:solid;border-radius:4px;box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host button .label,:host button .content{font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size);white-space:nowrap;font-weight:500}:host button:hover{background-color:var(--nrcl-button-hover-background-color)}:host.label button{padding-left:16px;padding-right:16px}:host.icon-left button{padding-left:var(--nrcl-button-height)}:host.icon-left button .mat-icon.left{position:absolute;left:calc((var(--nrcl-button-height) - var(--nrcl-icon-size)) / 2)}:host.icon-right button{padding-right:var(--nrcl-button-height)}:host.icon-right button .mat-icon.right{position:absolute;right:calc((var(--nrcl-button-height) - var(--nrcl-icon-size)) / 2)}:host.primary button{background-color:var(--nrcl-button-primary-background-color);color:var(--nrcl-button-primary-foreground-color);border-color:var(--nrcl-button-primary-border-color)}:host.primary button:hover{background-color:var(--nrcl-button-primary-hover-background-color)}:host.compact button{height:var(--nrcl-compact-button-height);border:none;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 8px;box-shadow:none;background-color:transparent;color:var(--nrcl-button-foreground-color)}:host.compact button:hover{background-color:var(--nrcl-button-hover-background-color)}:host.compact button .label{line-height:20px;font-size:var(--nrcl-font-size-small)}:host button .content{padding-left:16px;padding-right:16px}:host.disabled button{background-color:var(--nrcl-button-disabled-background-color);color:var(--nrcl-button-disabled-foreground-color);border-color:var(--nrcl-button-disabled-border-color)}:host.disabled button:hover{background-color:var(--nrcl-button-disabled-hover-background-color)}\n"] }]
|
|
146
|
+
}], propDecorators: { label: [{
|
|
147
|
+
type: Input
|
|
148
|
+
}], icon: [{
|
|
149
|
+
type: Input
|
|
150
|
+
}], iconRight: [{
|
|
151
|
+
type: Input
|
|
152
|
+
}], iconCompact: [{
|
|
153
|
+
type: Input
|
|
154
|
+
}], tooltip: [{
|
|
155
|
+
type: Input
|
|
156
|
+
}], compact: [{
|
|
157
|
+
type: Input
|
|
158
|
+
}], primary: [{
|
|
159
|
+
type: Input,
|
|
160
|
+
args: [{ transform: booleanAttribute }]
|
|
161
|
+
}], disabled: [{
|
|
162
|
+
type: Input,
|
|
163
|
+
args: [{ transform: booleanAttribute }]
|
|
164
|
+
}], click: [{
|
|
165
|
+
type: Output
|
|
166
|
+
}] } });
|
|
167
|
+
|
|
168
|
+
class CellContentComponent {
|
|
169
|
+
constructor() {
|
|
170
|
+
this.elementRef = inject(ElementRef);
|
|
171
|
+
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
172
|
+
}
|
|
173
|
+
ngAfterContentInit() {
|
|
174
|
+
setTimeout(() => {
|
|
175
|
+
if (this.tooltip == null || this.tooltip === false) {
|
|
176
|
+
// no tooltip
|
|
177
|
+
}
|
|
178
|
+
else if (this.tooltip == '' || this.tooltip === true) {
|
|
179
|
+
this.tooltipContent = this.content || this.elementRef?.nativeElement?.textContent;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
this.tooltipContent = this.tooltip;
|
|
183
|
+
}
|
|
184
|
+
this.changeDetectorRef.detectChanges();
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CellContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
188
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CellContentComponent, selector: "nrcl-cell-content", inputs: { tooltip: "tooltip", content: "content" }, ngImport: i0, template: "<div [matTooltip]=\"tooltipContent\" class=\"content\">\n @if ( content ) {\n {{ content }}\n }\n @else {\n <ng-content></ng-content>\n }\n</div>\n", styles: [":host{display:block;width:100%;font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size)}:host .content{width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
|
|
189
|
+
}
|
|
190
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CellContentComponent, decorators: [{
|
|
191
|
+
type: Component,
|
|
192
|
+
args: [{ selector: 'nrcl-cell-content', template: "<div [matTooltip]=\"tooltipContent\" class=\"content\">\n @if ( content ) {\n {{ content }}\n }\n @else {\n <ng-content></ng-content>\n }\n</div>\n", styles: [":host{display:block;width:100%;font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size)}:host .content{width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}\n"] }]
|
|
193
|
+
}], propDecorators: { tooltip: [{
|
|
194
|
+
type: Input
|
|
195
|
+
}], content: [{
|
|
196
|
+
type: Input
|
|
197
|
+
}] } });
|
|
198
|
+
|
|
199
|
+
class DesktopViewComponent extends ConfigurationSubscriberBase {
|
|
200
|
+
get visible() { return this.configuration.displayMode == 'desktop'; }
|
|
201
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DesktopViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
202
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DesktopViewComponent, selector: "nrcl-desktop-view", host: { properties: { "class.nrcl-device-desktop": "true" } }, usesInheritance: true, ngImport: i0, template: '@if ( visible ) { <ng-content></ng-content> }', isInline: true }); }
|
|
203
|
+
}
|
|
204
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DesktopViewComponent, decorators: [{
|
|
205
|
+
type: Component,
|
|
206
|
+
args: [{
|
|
207
|
+
selector: "nrcl-desktop-view",
|
|
208
|
+
template: '@if ( visible ) { <ng-content></ng-content> }',
|
|
209
|
+
host: {
|
|
210
|
+
'[class.nrcl-device-desktop]': 'true'
|
|
211
|
+
}
|
|
212
|
+
}]
|
|
213
|
+
}] });
|
|
214
|
+
class MobileViewComponent extends ConfigurationSubscriberBase {
|
|
215
|
+
get visible() { return this.configuration.displayMode == 'mobile'; }
|
|
216
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MobileViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
217
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: MobileViewComponent, selector: "nrcl-mobile-view", host: { properties: { "class.nrcl-device-mobile": "true" } }, usesInheritance: true, ngImport: i0, template: '@if ( visible ) { <ng-content></ng-content> }', isInline: true }); }
|
|
218
|
+
}
|
|
219
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MobileViewComponent, decorators: [{
|
|
220
|
+
type: Component,
|
|
221
|
+
args: [{
|
|
222
|
+
selector: "nrcl-mobile-view",
|
|
223
|
+
template: '@if ( visible ) { <ng-content></ng-content> }',
|
|
224
|
+
host: {
|
|
225
|
+
'[class.nrcl-device-mobile]': 'true'
|
|
226
|
+
}
|
|
227
|
+
}]
|
|
228
|
+
}] });
|
|
229
|
+
|
|
230
|
+
class ExpansionPanelComponent {
|
|
231
|
+
constructor() {
|
|
232
|
+
this.isLoading = false;
|
|
233
|
+
this.disabled = false;
|
|
234
|
+
this.expanded = false;
|
|
235
|
+
this.expandedChange = new EventEmitter();
|
|
236
|
+
}
|
|
237
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExpansionPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
238
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ExpansionPanelComponent, selector: "nrcl-expansion-panel", inputs: { isLoading: "isLoading", disabled: "disabled", expanded: "expanded" }, outputs: { expandedChange: "expandedChange" }, host: { properties: { "class.is-loading": "isLoading", "class.expanded": "matExpansionPanel?.expanded", "class.disabled": "disabled" } }, viewQueries: [{ propertyName: "matExpansionPanel", first: true, predicate: ["panel"], descendants: true }], ngImport: i0, template: "<mat-expansion-panel #panel \n togglePosition=\"before\"\n [expanded]=\"expanded\" \n [disabled]=\"disabled\" \n (opened)=\"expandedChange.emit( true )\" \n (closed)=\"expandedChange.emit( false )\" \n>\n <mat-expansion-panel-header>\n <mat-panel-description>\n <ng-content select=\"nrcl-expansion-panel-header\"></ng-content>\n\n @if ( isLoading ) {\n <mat-spinner class=\"loading\" [diameter]=\"30\"></mat-spinner>\n }\n </mat-panel-description>\n </mat-expansion-panel-header>\n\n <div class=\"body\">\n <ng-content></ng-content>\n </div>\n\n <ng-content select=\"nrcl-expansion-panel-footer\"></ng-content>\n</mat-expansion-panel>", styles: [":host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host mat-expansion-panel>.mat-expansion-panel-header{padding-left:var(--nrcl-gutter-space);padding-right:var(--nrcl-gutter-space);height:unset;min-height:50px;border-bottom:1px solid #c6c8cb;border-bottom-left-radius:0;border-bottom-right-radius:0;font-family:var(--nrcl-font-family);align-items:flex-start}:host mat-expansion-panel>.mat-expansion-panel-header>::ng-deep .mat-expansion-indicator{align-self:center;padding-bottom:4px}:host mat-expansion-panel>.mat-expansion-panel-header.mat-expanded>::ng-deep .mat-expansion-indicator{padding-bottom:0}:host mat-expansion-panel>.mat-expansion-panel-header .mat-expansion-panel-header-description{position:relative;margin-right:0}:host mat-expansion-panel>.mat-expansion-panel-header .mat-expansion-panel-header-description .loading{position:absolute;top:10px;right:0}:host mat-expansion-panel>::ng-deep .mat-expansion-panel-content{font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size)}:host mat-expansion-panel>::ng-deep .mat-expansion-panel-content .mat-expansion-panel-body{padding:0}:host mat-expansion-panel>::ng-deep .mat-expansion-panel-content .mat-expansion-panel-body .body{padding-left:var(--nrcl-gutter-space);padding-right:var(--nrcl-gutter-space)}:host.is-loading .mat-expansion-panel>.mat-expansion-panel-header ::ng-deep nrcl-expansion-panel-header .right-side{visibility:hidden}:host.disabled .mat-expansion-panel>.mat-expansion-panel-header>::ng-deep .mat-content{margin-left:0}\n"], dependencies: [{ kind: "component", type: i1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i1.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: i2$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
239
|
+
}
|
|
240
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExpansionPanelComponent, decorators: [{
|
|
241
|
+
type: Component,
|
|
242
|
+
args: [{ selector: "nrcl-expansion-panel", changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
243
|
+
'[class.is-loading]': 'isLoading',
|
|
244
|
+
'[class.expanded]': 'matExpansionPanel?.expanded',
|
|
245
|
+
'[class.disabled]': 'disabled',
|
|
246
|
+
}, template: "<mat-expansion-panel #panel \n togglePosition=\"before\"\n [expanded]=\"expanded\" \n [disabled]=\"disabled\" \n (opened)=\"expandedChange.emit( true )\" \n (closed)=\"expandedChange.emit( false )\" \n>\n <mat-expansion-panel-header>\n <mat-panel-description>\n <ng-content select=\"nrcl-expansion-panel-header\"></ng-content>\n\n @if ( isLoading ) {\n <mat-spinner class=\"loading\" [diameter]=\"30\"></mat-spinner>\n }\n </mat-panel-description>\n </mat-expansion-panel-header>\n\n <div class=\"body\">\n <ng-content></ng-content>\n </div>\n\n <ng-content select=\"nrcl-expansion-panel-footer\"></ng-content>\n</mat-expansion-panel>", styles: [":host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host mat-expansion-panel>.mat-expansion-panel-header{padding-left:var(--nrcl-gutter-space);padding-right:var(--nrcl-gutter-space);height:unset;min-height:50px;border-bottom:1px solid #c6c8cb;border-bottom-left-radius:0;border-bottom-right-radius:0;font-family:var(--nrcl-font-family);align-items:flex-start}:host mat-expansion-panel>.mat-expansion-panel-header>::ng-deep .mat-expansion-indicator{align-self:center;padding-bottom:4px}:host mat-expansion-panel>.mat-expansion-panel-header.mat-expanded>::ng-deep .mat-expansion-indicator{padding-bottom:0}:host mat-expansion-panel>.mat-expansion-panel-header .mat-expansion-panel-header-description{position:relative;margin-right:0}:host mat-expansion-panel>.mat-expansion-panel-header .mat-expansion-panel-header-description .loading{position:absolute;top:10px;right:0}:host mat-expansion-panel>::ng-deep .mat-expansion-panel-content{font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size)}:host mat-expansion-panel>::ng-deep .mat-expansion-panel-content .mat-expansion-panel-body{padding:0}:host mat-expansion-panel>::ng-deep .mat-expansion-panel-content .mat-expansion-panel-body .body{padding-left:var(--nrcl-gutter-space);padding-right:var(--nrcl-gutter-space)}:host.is-loading .mat-expansion-panel>.mat-expansion-panel-header ::ng-deep nrcl-expansion-panel-header .right-side{visibility:hidden}:host.disabled .mat-expansion-panel>.mat-expansion-panel-header>::ng-deep .mat-content{margin-left:0}\n"] }]
|
|
247
|
+
}], propDecorators: { isLoading: [{
|
|
248
|
+
type: Input
|
|
249
|
+
}], disabled: [{
|
|
250
|
+
type: Input
|
|
251
|
+
}], expanded: [{
|
|
252
|
+
type: Input
|
|
253
|
+
}], expandedChange: [{
|
|
254
|
+
type: Output
|
|
255
|
+
}], matExpansionPanel: [{
|
|
256
|
+
type: ViewChild,
|
|
257
|
+
args: ['panel']
|
|
258
|
+
}] } });
|
|
259
|
+
class ExpansionPanelHeaderComponent {
|
|
260
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExpansionPanelHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
261
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ExpansionPanelHeaderComponent, selector: "nrcl-expansion-panel-header", ngImport: i0, template: `
|
|
262
|
+
<div class="left-side">
|
|
263
|
+
<ng-content select="[left-side],h2,h3"></ng-content>
|
|
264
|
+
</div>
|
|
265
|
+
|
|
266
|
+
<div class="right-side">
|
|
267
|
+
<ng-content></ng-content>
|
|
268
|
+
</div>
|
|
269
|
+
`, isInline: true, styles: [":host{display:flex;color:#212121;width:100%}.left-side{display:flex;flex-direction:column;padding:10px 0;align-self:flex-start}.left-side ::ng-deep h2{font-size:var( --nrcl-font-size-h2);font-weight:200;padding:0;margin:0}.left-side ::ng-deep h3{font-size:var( --nrcl-font-size-h3 );font-weight:200;padding:0;margin:0}.right-side{flex-grow:1;display:flex;justify-content:flex-end;align-self:center}\n"] }); }
|
|
270
|
+
}
|
|
271
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExpansionPanelHeaderComponent, decorators: [{
|
|
272
|
+
type: Component,
|
|
273
|
+
args: [{ selector: "nrcl-expansion-panel-header", template: `
|
|
274
|
+
<div class="left-side">
|
|
275
|
+
<ng-content select="[left-side],h2,h3"></ng-content>
|
|
276
|
+
</div>
|
|
277
|
+
|
|
278
|
+
<div class="right-side">
|
|
279
|
+
<ng-content></ng-content>
|
|
280
|
+
</div>
|
|
281
|
+
`, styles: [":host{display:flex;color:#212121;width:100%}.left-side{display:flex;flex-direction:column;padding:10px 0;align-self:flex-start}.left-side ::ng-deep h2{font-size:var( --nrcl-font-size-h2);font-weight:200;padding:0;margin:0}.left-side ::ng-deep h3{font-size:var( --nrcl-font-size-h3 );font-weight:200;padding:0;margin:0}.right-side{flex-grow:1;display:flex;justify-content:flex-end;align-self:center}\n"] }]
|
|
282
|
+
}] });
|
|
283
|
+
class ExpansionPanelFooterComponent {
|
|
284
|
+
constructor() {
|
|
285
|
+
this.warningMessage = 'Unsaved Changes';
|
|
286
|
+
this.showWarning = false;
|
|
287
|
+
this.saveClick = new EventEmitter();
|
|
288
|
+
this.cancelClick = new EventEmitter();
|
|
289
|
+
}
|
|
290
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExpansionPanelFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
291
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ExpansionPanelFooterComponent, selector: "nrcl-expansion-panel-footer", inputs: { saveEnabled: "saveEnabled", cancelEnabled: "cancelEnabled", warningMessage: "warningMessage", showWarning: "showWarning" }, outputs: { saveClick: "saveClick", cancelClick: "cancelClick" }, ngImport: i0, template: `
|
|
292
|
+
@if ( showWarning ) {
|
|
293
|
+
<div class="warning">
|
|
294
|
+
<mat-icon>warning</mat-icon>
|
|
295
|
+
<span>{{ warningMessage }}</span>
|
|
296
|
+
</div>
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
@if ( cancelEnabled != null ) {
|
|
300
|
+
<nrcl-button
|
|
301
|
+
label="Cancel"
|
|
302
|
+
iconCompact="cancel"
|
|
303
|
+
compact="mobile"
|
|
304
|
+
[disabled]="!cancelEnabled"
|
|
305
|
+
click="cancelClick.emit( $event )"
|
|
306
|
+
></nrcl-button>
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
@if ( saveEnabled != null ) {
|
|
310
|
+
<nrcl-button primary
|
|
311
|
+
label="Save"
|
|
312
|
+
iconCompact="save"
|
|
313
|
+
compact="mobile"
|
|
314
|
+
[disabled]="!saveEnabled"
|
|
315
|
+
click="saveClick.emit( $event )"
|
|
316
|
+
></nrcl-button>
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
<ng-content></ng-content>
|
|
320
|
+
`, isInline: true, styles: [":host{border-top:1px solid #c6c8cb;padding:var(--nrcl-gutter-space);background-color:#f2f2f2;display:flex;gap:8px;justify-content:flex-end}:host:empty{display:none}.warning{display:flex;gap:4px;align-items:center}.warning .mat-icon{color:#fcba19}\n"], dependencies: [{ kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ButtonComponent, selector: "nrcl-button", inputs: ["label", "icon", "iconRight", "iconCompact", "tooltip", "compact", "primary", "disabled"], outputs: ["click"] }] }); }
|
|
321
|
+
}
|
|
322
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExpansionPanelFooterComponent, decorators: [{
|
|
323
|
+
type: Component,
|
|
324
|
+
args: [{ selector: "nrcl-expansion-panel-footer", template: `
|
|
325
|
+
@if ( showWarning ) {
|
|
326
|
+
<div class="warning">
|
|
327
|
+
<mat-icon>warning</mat-icon>
|
|
328
|
+
<span>{{ warningMessage }}</span>
|
|
329
|
+
</div>
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
@if ( cancelEnabled != null ) {
|
|
333
|
+
<nrcl-button
|
|
334
|
+
label="Cancel"
|
|
335
|
+
iconCompact="cancel"
|
|
336
|
+
compact="mobile"
|
|
337
|
+
[disabled]="!cancelEnabled"
|
|
338
|
+
click="cancelClick.emit( $event )"
|
|
339
|
+
></nrcl-button>
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
@if ( saveEnabled != null ) {
|
|
343
|
+
<nrcl-button primary
|
|
344
|
+
label="Save"
|
|
345
|
+
iconCompact="save"
|
|
346
|
+
compact="mobile"
|
|
347
|
+
[disabled]="!saveEnabled"
|
|
348
|
+
click="saveClick.emit( $event )"
|
|
349
|
+
></nrcl-button>
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
<ng-content></ng-content>
|
|
353
|
+
`, styles: [":host{border-top:1px solid #c6c8cb;padding:var(--nrcl-gutter-space);background-color:#f2f2f2;display:flex;gap:8px;justify-content:flex-end}:host:empty{display:none}.warning{display:flex;gap:4px;align-items:center}.warning .mat-icon{color:#fcba19}\n"] }]
|
|
354
|
+
}], propDecorators: { saveEnabled: [{
|
|
355
|
+
type: Input
|
|
356
|
+
}], cancelEnabled: [{
|
|
357
|
+
type: Input
|
|
358
|
+
}], warningMessage: [{
|
|
359
|
+
type: Input
|
|
360
|
+
}], showWarning: [{
|
|
361
|
+
type: Input
|
|
362
|
+
}], saveClick: [{
|
|
363
|
+
type: Output
|
|
364
|
+
}], cancelClick: [{
|
|
365
|
+
type: Output
|
|
366
|
+
}] } });
|
|
367
|
+
|
|
368
|
+
class FilterContainerComponent {
|
|
369
|
+
constructor() {
|
|
370
|
+
this.label = '[label]';
|
|
371
|
+
}
|
|
372
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
373
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FilterContainerComponent, selector: "nrcl-filter-container", inputs: { label: "label", hint: "hint" }, ngImport: i0, template: "<mat-form-field\n floatLabel=\"always\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n>\n <mat-label>{{ label }}</mat-label>\n\n <input matInput>\n\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n\n @if ( hint ) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n</mat-form-field>\n", styles: ["::ng-deep :root{--nrcl-filter-container-width: var( --nrcl-filter-width-default );--nrcl-filter-container-height: var( --nrcl-filter-height-default )}:host{--mat-form-field-container-height: calc( var( --nrcl-filter-height-default ) - 4px );--mat-form-field-container-vertical-padding: 10px;--mat-form-field-container-text-size: 15px;--mdc-outlined-text-field-focus-label-text-color: black;--mdc-outlined-text-field-hover-label-text-color: black;width:var(--nrcl-filter-container-width, var(--nrcl-filter-width-default));display:block}:host ::ng-deep mat-checkbox.mat-mdc-checkbox.mat-accent,:host ::ng-deep mat-selection-list .mat-mdc-list-option{font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size)}:host ::ng-deep mat-checkbox.mat-mdc-checkbox.mat-accent .mdc-checkbox,:host ::ng-deep mat-selection-list .mat-mdc-list-option .mdc-checkbox{padding-left:0;padding-right:0}:host ::ng-deep mat-checkbox.mat-mdc-checkbox.mat-accent .mdc-checkbox .mdc-checkbox__native-control~.mdc-checkbox__background,:host ::ng-deep mat-selection-list .mat-mdc-list-option .mdc-checkbox .mdc-checkbox__native-control~.mdc-checkbox__background{left:0;border:1px solid #c6c8cb}:host ::ng-deep mat-checkbox.mat-mdc-checkbox.mat-accent .mdc-checkbox .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,:host ::ng-deep mat-selection-list .mat-mdc-list-option .mdc-checkbox .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{background-color:#fff}:host ::ng-deep mat-checkbox.mat-mdc-checkbox.mat-accent .mdc-checkbox:hover .mdc-checkbox__native-control:not([disabled])~.mdc-checkbox__ripple,:host ::ng-deep mat-checkbox.mat-mdc-checkbox.mat-accent .mdc-checkbox .mat-mdc-checkbox-ripple,:host ::ng-deep mat-checkbox.mat-mdc-checkbox.mat-accent .mdc-checkbox .mdc-checkbox__ripple,:host ::ng-deep mat-selection-list .mat-mdc-list-option .mdc-checkbox:hover .mdc-checkbox__native-control:not([disabled])~.mdc-checkbox__ripple,:host ::ng-deep mat-selection-list .mat-mdc-list-option .mdc-checkbox .mat-mdc-checkbox-ripple,:host ::ng-deep mat-selection-list .mat-mdc-list-option .mdc-checkbox .mdc-checkbox__ripple{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}:host ::ng-deep .table-search-header .search-and-filters .field.filter-checkbox-group .checkbox-group{gap:15px}:host ::ng-deep .mat-mdc-radio-button.mat-accent{--mdc-radio-selected-focus-icon-color: #003366;--mdc-radio-selected-hover-icon-color: #003366;--mdc-radio-selected-icon-color: #003366;--mdc-radio-selected-pressed-icon-color: #003366;--mat-mdc-radio-checked-ripple-color: #003366}:host ::ng-deep .mat-mdc-radio-button.mat-accent .mdc-form-field .mdc-radio .mdc-radio__native-control:enabled+.mdc-radio__background .mdc-radio__outer-circle{background-color:#fff}:host ::ng-deep .mat-mdc-form-field{width:100%}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper{background-color:#fff;height:var(--nrcl-filter-container-height, var(--nrcl-filter-height-default))}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix{width:var(--nrcl-filter-container-width, var(--nrcl-filter-width-default));padding:0}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix>input{display:none}:host .content{display:flex;gap:var(--nrcl-gutter-space);align-items:center;height:var(--nrcl-filter-container-height, var(--nrcl-filter-height-default))}:host .content ::ng-deep .mdc-checkbox{padding:0}:host .content ::ng-deep .mdc-checkbox .mdc-checkbox__background{top:0}:host .content ::ng-deep .mat-mdc-radio-group{display:flex;gap:var(--nrcl-gutter-space)}:host .content ::ng-deep .mat-mdc-radio-group .mdc-radio{padding:0}\n"], dependencies: [{ kind: "component", type: i3$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
374
|
+
}
|
|
375
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterContainerComponent, decorators: [{
|
|
376
|
+
type: Component,
|
|
377
|
+
args: [{ selector: "nrcl-filter-container", changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field\n floatLabel=\"always\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n>\n <mat-label>{{ label }}</mat-label>\n\n <input matInput>\n\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n\n @if ( hint ) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n</mat-form-field>\n", styles: ["::ng-deep :root{--nrcl-filter-container-width: var( --nrcl-filter-width-default );--nrcl-filter-container-height: var( --nrcl-filter-height-default )}:host{--mat-form-field-container-height: calc( var( --nrcl-filter-height-default ) - 4px );--mat-form-field-container-vertical-padding: 10px;--mat-form-field-container-text-size: 15px;--mdc-outlined-text-field-focus-label-text-color: black;--mdc-outlined-text-field-hover-label-text-color: black;width:var(--nrcl-filter-container-width, var(--nrcl-filter-width-default));display:block}:host ::ng-deep mat-checkbox.mat-mdc-checkbox.mat-accent,:host ::ng-deep mat-selection-list .mat-mdc-list-option{font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size)}:host ::ng-deep mat-checkbox.mat-mdc-checkbox.mat-accent .mdc-checkbox,:host ::ng-deep mat-selection-list .mat-mdc-list-option .mdc-checkbox{padding-left:0;padding-right:0}:host ::ng-deep mat-checkbox.mat-mdc-checkbox.mat-accent .mdc-checkbox .mdc-checkbox__native-control~.mdc-checkbox__background,:host ::ng-deep mat-selection-list .mat-mdc-list-option .mdc-checkbox .mdc-checkbox__native-control~.mdc-checkbox__background{left:0;border:1px solid #c6c8cb}:host ::ng-deep mat-checkbox.mat-mdc-checkbox.mat-accent .mdc-checkbox .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,:host ::ng-deep mat-selection-list .mat-mdc-list-option .mdc-checkbox .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{background-color:#fff}:host ::ng-deep mat-checkbox.mat-mdc-checkbox.mat-accent .mdc-checkbox:hover .mdc-checkbox__native-control:not([disabled])~.mdc-checkbox__ripple,:host ::ng-deep mat-checkbox.mat-mdc-checkbox.mat-accent .mdc-checkbox .mat-mdc-checkbox-ripple,:host ::ng-deep mat-checkbox.mat-mdc-checkbox.mat-accent .mdc-checkbox .mdc-checkbox__ripple,:host ::ng-deep mat-selection-list .mat-mdc-list-option .mdc-checkbox:hover .mdc-checkbox__native-control:not([disabled])~.mdc-checkbox__ripple,:host ::ng-deep mat-selection-list .mat-mdc-list-option .mdc-checkbox .mat-mdc-checkbox-ripple,:host ::ng-deep mat-selection-list .mat-mdc-list-option .mdc-checkbox .mdc-checkbox__ripple{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}:host ::ng-deep .table-search-header .search-and-filters .field.filter-checkbox-group .checkbox-group{gap:15px}:host ::ng-deep .mat-mdc-radio-button.mat-accent{--mdc-radio-selected-focus-icon-color: #003366;--mdc-radio-selected-hover-icon-color: #003366;--mdc-radio-selected-icon-color: #003366;--mdc-radio-selected-pressed-icon-color: #003366;--mat-mdc-radio-checked-ripple-color: #003366}:host ::ng-deep .mat-mdc-radio-button.mat-accent .mdc-form-field .mdc-radio .mdc-radio__native-control:enabled+.mdc-radio__background .mdc-radio__outer-circle{background-color:#fff}:host ::ng-deep .mat-mdc-form-field{width:100%}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper{background-color:#fff;height:var(--nrcl-filter-container-height, var(--nrcl-filter-height-default))}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix{width:var(--nrcl-filter-container-width, var(--nrcl-filter-width-default));padding:0}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix>input{display:none}:host .content{display:flex;gap:var(--nrcl-gutter-space);align-items:center;height:var(--nrcl-filter-container-height, var(--nrcl-filter-height-default))}:host .content ::ng-deep .mdc-checkbox{padding:0}:host .content ::ng-deep .mdc-checkbox .mdc-checkbox__background{top:0}:host .content ::ng-deep .mat-mdc-radio-group{display:flex;gap:var(--nrcl-gutter-space)}:host .content ::ng-deep .mat-mdc-radio-group .mdc-radio{padding:0}\n"] }]
|
|
378
|
+
}], propDecorators: { label: [{
|
|
379
|
+
type: Input
|
|
380
|
+
}], hint: [{
|
|
381
|
+
type: Input
|
|
382
|
+
}] } });
|
|
383
|
+
|
|
384
|
+
const DATE_FORMATS = {
|
|
385
|
+
fullPickerInput: "Y-MM-DD HH:mm",
|
|
386
|
+
datePickerInput: "Y-MM-DD",
|
|
387
|
+
timePickerInput: "HH:mm",
|
|
388
|
+
monthYearLabel: "Y-MM",
|
|
389
|
+
dateA11yLabel: "Y-MMM-DD",
|
|
390
|
+
monthYearA11yLabel: "YYYY-MMM",
|
|
391
|
+
simplifiedDate: "MMM DD",
|
|
392
|
+
simplifiedMonthDate: "MM-DD",
|
|
393
|
+
fullPickerInputWithSlash: "Y-MM-DD/ HH:mm",
|
|
394
|
+
API_DATE: "Y-MM-DD",
|
|
395
|
+
API_TIMESTAMP: 'Y-MM-DD HH:mm:ss',
|
|
396
|
+
API_TIMESTAMP_WITH_SEP: 'Y-MM-DDTHH:mm:ss'
|
|
397
|
+
};
|
|
398
|
+
|
|
399
|
+
class FilterDateComponent {
|
|
400
|
+
constructor() {
|
|
401
|
+
this.label = '[label]]';
|
|
402
|
+
this.placeholder = 'Select...';
|
|
403
|
+
this.value = moment().format(DATE_FORMATS.datePickerInput);
|
|
404
|
+
this.valueChange = new EventEmitter();
|
|
405
|
+
}
|
|
406
|
+
onDateChange(ev) {
|
|
407
|
+
if (!ev) {
|
|
408
|
+
this.valueChange.emit(null);
|
|
409
|
+
return;
|
|
410
|
+
}
|
|
411
|
+
let date = ev.format(DATE_FORMATS.datePickerInput);
|
|
412
|
+
this.valueChange.emit(date);
|
|
413
|
+
}
|
|
414
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
415
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FilterDateComponent, selector: "nrcl-filter-date", inputs: { label: "label", placeholder: "placeholder", hint: "hint", value: "value" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<mat-form-field\n floatLabel=\"auto\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n>\n <mat-label>{{ label }}</mat-label>\n\n <input matInput class=\"search-input\" \n [ngModel]=\"value\" \n (ngModelChange)=\"onDateChange( $event )\"\n [placeholder]=\"placeholder\"\n [owlDateTime]=\"selectedDateDT\" \n maxlength=\"10\" \n appWFDateMask\n >\n\n @if ( hint ) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n\n <button class=\"select-date\"\n [owlDateTimeTrigger]=\"selectedDateDT\" \n aria-label=\"Open Select Date Picker\"\n mat-icon-button\n matSuffix\n >\n <mat-icon>event</mat-icon>\n </button>\n</mat-form-field>\n\n<owl-date-time #selectedDateDT pickerType=\"calendar\"></owl-date-time>\n", styles: ["::ng-deep :root{--nrcl-filter-date-width: var( --nrcl-filter-width-default )}:host{--mat-form-field-container-height: calc( var( --nrcl-filter-height-default ) - 4px );--mat-form-field-container-vertical-padding: 10px;--mat-form-field-container-text-size: 15px;--mdc-outlined-text-field-focus-label-text-color: black;--mdc-outlined-text-field-hover-label-text-color: black;width:var(--nrcl-filter-date-width, var(--nrcl-filter-width-default));display:block}:host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep .mat-mdc-form-field{width:100%}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper{background-color:#fff;height:var(--nrcl-filter-height-default)}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix{width:var(--nrcl-filter-date-width, var(--nrcl-filter-width-default))}:host .select-date{padding:0;width:36px;height:36px;display:flex;justify-content:center;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1$1.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: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.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: "directive", type: i6.OwlDateTimeTriggerDirective, selector: "[owlDateTimeTrigger]", inputs: ["owlDateTimeTrigger", "disabled"] }, { kind: "directive", type: i6.OwlDateTimeInputDirective, selector: "input[owlDateTime]", inputs: ["owlDateTime", "owlDateTimeFilter", "_disabled", "min", "max", "selectMode", "rangeSeparator", "value", "values"], outputs: ["dateTimeChange", "dateTimeInput"], exportAs: ["owlDateTimeInput"] }, { kind: "component", type: i6.OwlDateTimeComponent, selector: "owl-date-time", inputs: ["backdropClass", "panelClass", "startAt", "pickerType", "pickerMode", "disabled", "opened", "scrollStrategy"], outputs: ["afterPickerClosed", "afterPickerOpen", "yearSelected", "monthSelected"], exportAs: ["owlDateTime"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
416
|
+
}
|
|
417
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterDateComponent, decorators: [{
|
|
418
|
+
type: Component,
|
|
419
|
+
args: [{ selector: "nrcl-filter-date", changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field\n floatLabel=\"auto\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n>\n <mat-label>{{ label }}</mat-label>\n\n <input matInput class=\"search-input\" \n [ngModel]=\"value\" \n (ngModelChange)=\"onDateChange( $event )\"\n [placeholder]=\"placeholder\"\n [owlDateTime]=\"selectedDateDT\" \n maxlength=\"10\" \n appWFDateMask\n >\n\n @if ( hint ) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n\n <button class=\"select-date\"\n [owlDateTimeTrigger]=\"selectedDateDT\" \n aria-label=\"Open Select Date Picker\"\n mat-icon-button\n matSuffix\n >\n <mat-icon>event</mat-icon>\n </button>\n</mat-form-field>\n\n<owl-date-time #selectedDateDT pickerType=\"calendar\"></owl-date-time>\n", styles: ["::ng-deep :root{--nrcl-filter-date-width: var( --nrcl-filter-width-default )}:host{--mat-form-field-container-height: calc( var( --nrcl-filter-height-default ) - 4px );--mat-form-field-container-vertical-padding: 10px;--mat-form-field-container-text-size: 15px;--mdc-outlined-text-field-focus-label-text-color: black;--mdc-outlined-text-field-hover-label-text-color: black;width:var(--nrcl-filter-date-width, var(--nrcl-filter-width-default));display:block}:host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep .mat-mdc-form-field{width:100%}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper{background-color:#fff;height:var(--nrcl-filter-height-default)}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix{width:var(--nrcl-filter-date-width, var(--nrcl-filter-width-default))}:host .select-date{padding:0;width:36px;height:36px;display:flex;justify-content:center;align-items:center}\n"] }]
|
|
420
|
+
}], propDecorators: { label: [{
|
|
421
|
+
type: Input
|
|
422
|
+
}], placeholder: [{
|
|
423
|
+
type: Input
|
|
424
|
+
}], hint: [{
|
|
425
|
+
type: Input
|
|
426
|
+
}], value: [{
|
|
427
|
+
type: Input
|
|
428
|
+
}], valueChange: [{
|
|
429
|
+
type: Output
|
|
430
|
+
}] } });
|
|
431
|
+
|
|
432
|
+
class FilterSearchComponent {
|
|
433
|
+
constructor() {
|
|
434
|
+
this.label = 'Search';
|
|
435
|
+
this.placeholder = 'Search...';
|
|
436
|
+
this.valueChange = new EventEmitter();
|
|
437
|
+
this.hasValue = false;
|
|
438
|
+
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
439
|
+
}
|
|
440
|
+
emitValueChange(val) {
|
|
441
|
+
this.hasValue = !!val;
|
|
442
|
+
this.valueChange.emit(val);
|
|
443
|
+
}
|
|
444
|
+
onInput(ev) {
|
|
445
|
+
this.value = ev?.target?.value;
|
|
446
|
+
this.emitValueChange(ev?.target?.value);
|
|
447
|
+
}
|
|
448
|
+
onCancelClick() {
|
|
449
|
+
this.value = null;
|
|
450
|
+
this.emitValueChange();
|
|
451
|
+
}
|
|
452
|
+
focus() {
|
|
453
|
+
this.inputEl.nativeElement.focus();
|
|
454
|
+
}
|
|
455
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
456
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FilterSearchComponent, selector: "nrcl-filter-search", inputs: { label: "label", placeholder: "placeholder", hint: "hint", value: "value" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.has-value": "hasValue" } }, viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<mat-form-field\n floatLabel=\"auto\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n>\n <mat-label>{{ label }}</mat-label>\n\n <input class=\"search-input\" #input\n matInput\n [value]=\"value || ''\"\n (input)=\"onInput( $event )\"\n [placeholder]=\"placeholder\"\n >\n\n @if ( hint ) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n\n @if ( value ) {\n <button class=\"cancel\"\n mat-icon-button\n matSuffix\n (click)=\"onCancelClick($event); $event.stopPropagation()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n } \n</mat-form-field>\n", styles: ["::ng-deep :root{--nrcl-filter-search-width: calc( var( --nrcl-filter-width-default ) * 2 + 8px )}:host{--mat-form-field-container-height: calc( var( --nrcl-filter-height-default ) - 4px );--mat-form-field-container-vertical-padding: 10px;--mat-form-field-container-text-size: 15px;--mdc-outlined-text-field-focus-label-text-color: black;--mdc-outlined-text-field-hover-label-text-color: black;width:var(--nrcl-filter-search-width, calc(var(--nrcl-filter-width-default) * 2 + 8px));display:block}:host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host.has-value{--mdc-outlined-text-field-label-text-color: black}:host ::ng-deep .mat-mdc-form-field{width:100%}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper{background-color:#fff;height:var(--nrcl-filter-height-default)}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix{width:var(--nrcl-filter-search-width, calc(var(--nrcl-filter-width-default) * 2 + 8px))}:host .cancel{padding:0;width:36px;height:36px;display:flex;justify-content:center;align-items:center}\n"], dependencies: [{ kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
457
|
+
}
|
|
458
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterSearchComponent, decorators: [{
|
|
459
|
+
type: Component,
|
|
460
|
+
args: [{ selector: "nrcl-filter-search", changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
461
|
+
'[class.has-value]': "hasValue"
|
|
462
|
+
}, template: "<mat-form-field\n floatLabel=\"auto\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n>\n <mat-label>{{ label }}</mat-label>\n\n <input class=\"search-input\" #input\n matInput\n [value]=\"value || ''\"\n (input)=\"onInput( $event )\"\n [placeholder]=\"placeholder\"\n >\n\n @if ( hint ) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n\n @if ( value ) {\n <button class=\"cancel\"\n mat-icon-button\n matSuffix\n (click)=\"onCancelClick($event); $event.stopPropagation()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n } \n</mat-form-field>\n", styles: ["::ng-deep :root{--nrcl-filter-search-width: calc( var( --nrcl-filter-width-default ) * 2 + 8px )}:host{--mat-form-field-container-height: calc( var( --nrcl-filter-height-default ) - 4px );--mat-form-field-container-vertical-padding: 10px;--mat-form-field-container-text-size: 15px;--mdc-outlined-text-field-focus-label-text-color: black;--mdc-outlined-text-field-hover-label-text-color: black;width:var(--nrcl-filter-search-width, calc(var(--nrcl-filter-width-default) * 2 + 8px));display:block}:host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host.has-value{--mdc-outlined-text-field-label-text-color: black}:host ::ng-deep .mat-mdc-form-field{width:100%}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper{background-color:#fff;height:var(--nrcl-filter-height-default)}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix{width:var(--nrcl-filter-search-width, calc(var(--nrcl-filter-width-default) * 2 + 8px))}:host .cancel{padding:0;width:36px;height:36px;display:flex;justify-content:center;align-items:center}\n"] }]
|
|
463
|
+
}], propDecorators: { label: [{
|
|
464
|
+
type: Input
|
|
465
|
+
}], placeholder: [{
|
|
466
|
+
type: Input
|
|
467
|
+
}], hint: [{
|
|
468
|
+
type: Input
|
|
469
|
+
}], value: [{
|
|
470
|
+
type: Input
|
|
471
|
+
}], valueChange: [{
|
|
472
|
+
type: Output
|
|
473
|
+
}], inputEl: [{
|
|
474
|
+
type: ViewChild,
|
|
475
|
+
args: ['input']
|
|
476
|
+
}] } });
|
|
477
|
+
|
|
478
|
+
/**
|
|
479
|
+
* A filter select component that allows users to select multiple options from a list.
|
|
480
|
+
*
|
|
481
|
+
* Features:
|
|
482
|
+
* - Multi-select with optional maximum selection limit
|
|
483
|
+
* - Search/filter functionality
|
|
484
|
+
* - Tooltips for long descriptions
|
|
485
|
+
* - Summary display of selected items
|
|
486
|
+
*/
|
|
487
|
+
class FilterSelectComponent {
|
|
488
|
+
constructor() {
|
|
489
|
+
this.placeholder = 'Filter...';
|
|
490
|
+
this.selectMax = 0;
|
|
491
|
+
this.tooltips = true;
|
|
492
|
+
this.summary = true;
|
|
493
|
+
this.clear = true;
|
|
494
|
+
this.valueChange = new EventEmitter();
|
|
495
|
+
this.floatLabel = 'auto';
|
|
496
|
+
this.isFiltered = false;
|
|
497
|
+
this.isOpen = false;
|
|
498
|
+
this.hasValue = false;
|
|
499
|
+
this.selection = new FormControl();
|
|
500
|
+
this.match = (o) => true;
|
|
501
|
+
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
502
|
+
this.overlay = inject(Overlay);
|
|
503
|
+
this.viewContainerRef = inject(ViewContainerRef);
|
|
504
|
+
}
|
|
505
|
+
ngOnChanges(changes) {
|
|
506
|
+
if (this.isOpen)
|
|
507
|
+
return;
|
|
508
|
+
if (changes.options) {
|
|
509
|
+
let pv = JSON.stringify(changes.options.previousValue);
|
|
510
|
+
let cv = JSON.stringify(changes.options.currentValue);
|
|
511
|
+
if (pv != cv) {
|
|
512
|
+
this.selection.setValue(null);
|
|
513
|
+
this.setInputToSelection();
|
|
514
|
+
this.setFilter();
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
if (changes.value) {
|
|
518
|
+
let pv = JSON.stringify(changes.value.previousValue);
|
|
519
|
+
let cv = JSON.stringify(changes.value.currentValue);
|
|
520
|
+
if (pv != cv) {
|
|
521
|
+
if (this.value) {
|
|
522
|
+
this.hasValue = this.value.length > 0;
|
|
523
|
+
this.selection.setValue(this.value);
|
|
524
|
+
if (this.selectMax > 1 && this.value.length >= this.selectMax) {
|
|
525
|
+
this.selection.disable();
|
|
526
|
+
}
|
|
527
|
+
else {
|
|
528
|
+
this.selection.enable();
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
else {
|
|
532
|
+
this.hasValue = false;
|
|
533
|
+
this.selection.setValue(null);
|
|
534
|
+
this.selection.enable();
|
|
535
|
+
}
|
|
536
|
+
this.setFilter();
|
|
537
|
+
this.setInputToSelection();
|
|
538
|
+
this.changeDetectorRef.detectChanges();
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
get single() {
|
|
543
|
+
return this.selectMax == 1;
|
|
544
|
+
}
|
|
545
|
+
emitValueChange() {
|
|
546
|
+
this.hasValue = (this.selection.value || []).length > 0;
|
|
547
|
+
this.valueChange.emit(this.selection.value || []);
|
|
548
|
+
}
|
|
549
|
+
open() {
|
|
550
|
+
if (this.isOpen)
|
|
551
|
+
return;
|
|
552
|
+
this.isOpen = true;
|
|
553
|
+
this.floatLabel = 'always';
|
|
554
|
+
this.inputValue = '';
|
|
555
|
+
// Create overlay
|
|
556
|
+
const positionStrategy = this.overlay
|
|
557
|
+
.position()
|
|
558
|
+
.flexibleConnectedTo(this.trigger)
|
|
559
|
+
.withPositions([
|
|
560
|
+
{
|
|
561
|
+
originX: 'start',
|
|
562
|
+
originY: 'bottom',
|
|
563
|
+
overlayX: 'start',
|
|
564
|
+
overlayY: 'top',
|
|
565
|
+
offsetY: 0
|
|
566
|
+
},
|
|
567
|
+
{
|
|
568
|
+
originX: 'start',
|
|
569
|
+
originY: 'top',
|
|
570
|
+
overlayX: 'start',
|
|
571
|
+
overlayY: 'bottom',
|
|
572
|
+
offsetY: 0
|
|
573
|
+
}
|
|
574
|
+
])
|
|
575
|
+
.withPush(false);
|
|
576
|
+
const scrollStrategy = this.overlay.scrollStrategies.reposition();
|
|
577
|
+
this.overlayRef = this.overlay.create({
|
|
578
|
+
positionStrategy,
|
|
579
|
+
scrollStrategy,
|
|
580
|
+
hasBackdrop: false,
|
|
581
|
+
maxWidth: this.trigger.nativeElement.offsetWidth * 2,
|
|
582
|
+
minWidth: this.trigger.nativeElement.offsetWidth,
|
|
583
|
+
maxHeight: 300,
|
|
584
|
+
});
|
|
585
|
+
// Attach template
|
|
586
|
+
const portal = new TemplatePortal(this.overlayTemplate, this.viewContainerRef);
|
|
587
|
+
this.overlayRef.attach(portal);
|
|
588
|
+
// Listen to document clicks after a small delay to avoid closing immediately
|
|
589
|
+
setTimeout(() => {
|
|
590
|
+
this.clickSubscription = fromEvent(document, 'click')
|
|
591
|
+
.pipe(filter((event) => {
|
|
592
|
+
const clickTarget = event.target;
|
|
593
|
+
const triggerEl = this.trigger.nativeElement;
|
|
594
|
+
const overlayEl = this.overlayRef?.overlayElement;
|
|
595
|
+
// Only close if click is outside both trigger and overlay
|
|
596
|
+
return !triggerEl.contains(clickTarget)
|
|
597
|
+
&& !overlayEl?.contains(clickTarget);
|
|
598
|
+
}))
|
|
599
|
+
.subscribe(() => {
|
|
600
|
+
this.close();
|
|
601
|
+
});
|
|
602
|
+
});
|
|
603
|
+
// Focus input after overlay is attached
|
|
604
|
+
setTimeout(() => {
|
|
605
|
+
this.filterInput?.nativeElement.focus();
|
|
606
|
+
// prevent list from scrolling when selection changes
|
|
607
|
+
this.overlayRef.overlayElement.children[0].scroll(0, 1);
|
|
608
|
+
});
|
|
609
|
+
this.setFilter();
|
|
610
|
+
this.openingValue = JSON.stringify(this.selection.value);
|
|
611
|
+
}
|
|
612
|
+
close() {
|
|
613
|
+
if (!this.isOpen)
|
|
614
|
+
return;
|
|
615
|
+
this.isOpen = false;
|
|
616
|
+
this.setInputToSelection();
|
|
617
|
+
this.floatLabel = 'auto';
|
|
618
|
+
if (this.clickSubscription) {
|
|
619
|
+
this.clickSubscription.unsubscribe();
|
|
620
|
+
this.clickSubscription = null;
|
|
621
|
+
}
|
|
622
|
+
if (this.overlayRef) {
|
|
623
|
+
this.overlayRef.dispose();
|
|
624
|
+
this.overlayRef = null;
|
|
625
|
+
}
|
|
626
|
+
this.changeDetectorRef.detectChanges();
|
|
627
|
+
let closingValue = JSON.stringify(this.selection.value);
|
|
628
|
+
if (this.openingValue != closingValue)
|
|
629
|
+
this.emitValueChange();
|
|
630
|
+
}
|
|
631
|
+
setInputToSelection() {
|
|
632
|
+
this.inputValue = this.selection?.value?.map(c => this.descriptionForCode(c)).join(', ') || null;
|
|
633
|
+
}
|
|
634
|
+
onInput(ev) {
|
|
635
|
+
this.setFilter(ev?.target?.value);
|
|
636
|
+
}
|
|
637
|
+
setFilter(text) {
|
|
638
|
+
let t = text?.trim().toLowerCase();
|
|
639
|
+
if (t) {
|
|
640
|
+
this.isFiltered = true;
|
|
641
|
+
this.match = (option) => option.description.toLowerCase().includes(t);
|
|
642
|
+
}
|
|
643
|
+
else {
|
|
644
|
+
this.isFiltered = false;
|
|
645
|
+
this.match = (o) => true;
|
|
646
|
+
}
|
|
647
|
+
this.changeDetectorRef.detectChanges();
|
|
648
|
+
}
|
|
649
|
+
matchesFilter(option) {
|
|
650
|
+
return this.match(option);
|
|
651
|
+
}
|
|
652
|
+
onSelectionChange(ev) {
|
|
653
|
+
if (this.single) {
|
|
654
|
+
this.close();
|
|
655
|
+
}
|
|
656
|
+
else {
|
|
657
|
+
this.filterInput?.nativeElement.focus();
|
|
658
|
+
}
|
|
659
|
+
if (this.selectMax > 1) {
|
|
660
|
+
if (this.selection.value.length >= this.selectMax) {
|
|
661
|
+
this.selection.disable();
|
|
662
|
+
}
|
|
663
|
+
else {
|
|
664
|
+
this.selection.enable();
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
this.changeDetectorRef.detectChanges();
|
|
668
|
+
}
|
|
669
|
+
onUpperSelectionChange(ev) {
|
|
670
|
+
setTimeout(() => {
|
|
671
|
+
let codes = this.selection.value.filter(c => c != ev.options[0].value);
|
|
672
|
+
this.selection.setValue(codes);
|
|
673
|
+
this.onSelectionChange(ev);
|
|
674
|
+
});
|
|
675
|
+
}
|
|
676
|
+
onCancelClick() {
|
|
677
|
+
this.selection.setValue(null);
|
|
678
|
+
this.selection.enable();
|
|
679
|
+
this.setInputToSelection();
|
|
680
|
+
this.emitValueChange();
|
|
681
|
+
}
|
|
682
|
+
onInputFocus() {
|
|
683
|
+
this.open();
|
|
684
|
+
}
|
|
685
|
+
descriptionForCode(code) {
|
|
686
|
+
return this.options.find(o => o.code == code)?.description;
|
|
687
|
+
}
|
|
688
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
689
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FilterSelectComponent, selector: "nrcl-filter-select", inputs: { label: "label", placeholder: "placeholder", hint: "hint", options: "options", value: "value", selectMax: ["selectMax", "selectMax", numberAttribute], tooltips: ["tooltips", "tooltips", booleanAttribute], summary: ["summary", "summary", booleanAttribute], clear: ["clear", "clear", booleanAttribute] }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.has-value": "hasValue", "class.is-open": "isOpen", "class.is-closed": "!isOpen" } }, viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true, read: ElementRef }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "overlayTemplate", first: true, predicate: ["overlayTemplate"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mat-form-field #trigger\n [floatLabel]=\"floatLabel\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n>\n @if ( label ) {\n <mat-label>{{ label }}</mat-label>\n }\n\n <input class=\"filter-input\" #searchInput\n matInput \n [placeholder]=\"placeholder\" \n [value]=\"inputValue\"\n (input)=\"onInput( $event )\"\n (keydown.escape)=\"close()\"\n (focus)=\"onInputFocus()\"\n [matTooltip]=\"inputValue\"\n >\n\n @if ( isOpen ) {\n <mat-icon matSuffix>arrow_drop_up</mat-icon>\n }\n @else if ( selection?.value?.length > 0 && clear ) {\n <button class=\"cancel\"\n mat-icon-button\n matSuffix\n (click)=\"onCancelClick($event); $event.stopPropagation()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n @else {\n <mat-icon matSuffix>arrow_drop_down</mat-icon>\n } \n\n @if ( hint ) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n</mat-form-field> \n\n<ng-template #overlayTemplate>\n <div class=\"filter-select-options\" [class.multiple]=\"!single\" [class.single]=\"single\">\n @if ( !isFiltered && !single && summary ) {\n @if ( selection?.value?.length > 0 && selection?.value?.length < options?.length ) {\n <div class=\"selection-overview\">\n <div class=\"summary\">{{ selection?.value?.length }} selected of {{ options?.length }}</div>\n\n <mat-selection-list\n (selectionChange)=\"onUpperSelectionChange( $event )\"\n >\n @for ( code of selection?.value; track code ) {\n <mat-list-option \n [value]=\"code\" \n togglePosition=\"before\"\n selected\n [matTooltip]=\"tooltips ? descriptionForCode( code ) : null\"\n matTooltipPosition=\"after\"\n >\n {{ descriptionForCode( code ) }}\n </mat-list-option>\n }\n </mat-selection-list>\n </div>\n }\n\n @if ( selection?.value?.length == options?.length ) {\n <div class=\"selection-overview\">\n <div class=\"summary\">All options selected</div>\n </div>\n }\n }\n\n <mat-selection-list\n [formControl]=\"selection\"\n (selectionChange)=\"onSelectionChange( $event )\"\n [multiple]=\"!single\"\n hideSingleSelectionIndicator\n >\n @for ( option of options; track option ) {\n <mat-list-option [class.hide]=\"!matchesFilter( option )\"\n [value]=\"option.code\" \n togglePosition=\"before\" \n [matTooltip]=\"tooltips ? option.description : null\"\n matTooltipPosition=\"after\" \n >\n {{ option.description }}\n </mat-list-option>\n }\n </mat-selection-list>\n </div>\n</ng-template>\n", styles: ["::ng-deep :root{--nrcl-filter-select-width: var( --nrcl-filter-width-default )}:host{--mat-form-field-container-height: calc( var( --nrcl-filter-height-default ) - 4px );--mat-form-field-container-vertical-padding: 10px;--mat-form-field-container-text-size: 15px;--mdc-outlined-text-field-focus-label-text-color: black;--mdc-outlined-text-field-hover-label-text-color: black;width:var(--nrcl-filter-select-width, var(--nrcl-filter-width-default));display:block}:host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host.has-value{--mdc-outlined-text-field-label-text-color: black}:host ::ng-deep .mat-mdc-form-field{width:100%}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper{background-color:#fff;height:var(--nrcl-filter-height-default);cursor:pointer}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix{width:var(--nrcl-filter-select-width, var(--nrcl-filter-width-default))}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .filter-input{cursor:pointer}:host.is-open ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .filter-input{cursor:text}:host .cancel{padding:0;width:36px;height:36px;display:flex;justify-content:center;align-items:center;cursor:default}::ng-deep .filter-select-options{--mdc-list-list-item-selected-container-color: #007bff;font-family:var(--nrcl-font-family);overflow-x:hidden;overflow-y:auto;padding:0;background:#fff;color:#000;border:1px solid #aaa;border-radius:4px;font-size:var(--nrcl-font-size);pointer-events:all;box-shadow:0 4px 5px #00000026;display:block;width:100%}::ng-deep .filter-select-options .selection-overview{background-color:#eee;border-bottom:1px solid black}::ng-deep .filter-select-options .selection-overview .summary{padding-top:4px;padding-left:4px;font-size:14px;color:#000000bc;font-family:var(--nrcl-font-family)}::ng-deep .filter-select-options .mat-mdc-selection-list{padding-top:0;padding-bottom:0}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option{height:30px;font-size:var(--nrcl-font-size);padding-left:4px;padding-right:8px}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option.hide{display:none}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__start{margin:0;padding:0 8px}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__primary-text{flex-grow:1;font-size:var(--nrcl-font-size)}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option.mdc-list-item--selected .mdc-list-item__primary-text{color:#fff}::ng-deep .filter-select-options.single .mat-mdc-selection-list .mat-mdc-list-option{padding-left:12px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.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: i6$1.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i6$1.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
690
|
+
}
|
|
691
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterSelectComponent, decorators: [{
|
|
692
|
+
type: Component,
|
|
693
|
+
args: [{ selector: "nrcl-filter-select", changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
694
|
+
'[class.has-value]': "hasValue",
|
|
695
|
+
'[class.is-open]': "isOpen",
|
|
696
|
+
'[class.is-closed]': "!isOpen"
|
|
697
|
+
}, template: "<mat-form-field #trigger\n [floatLabel]=\"floatLabel\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n>\n @if ( label ) {\n <mat-label>{{ label }}</mat-label>\n }\n\n <input class=\"filter-input\" #searchInput\n matInput \n [placeholder]=\"placeholder\" \n [value]=\"inputValue\"\n (input)=\"onInput( $event )\"\n (keydown.escape)=\"close()\"\n (focus)=\"onInputFocus()\"\n [matTooltip]=\"inputValue\"\n >\n\n @if ( isOpen ) {\n <mat-icon matSuffix>arrow_drop_up</mat-icon>\n }\n @else if ( selection?.value?.length > 0 && clear ) {\n <button class=\"cancel\"\n mat-icon-button\n matSuffix\n (click)=\"onCancelClick($event); $event.stopPropagation()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n @else {\n <mat-icon matSuffix>arrow_drop_down</mat-icon>\n } \n\n @if ( hint ) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n</mat-form-field> \n\n<ng-template #overlayTemplate>\n <div class=\"filter-select-options\" [class.multiple]=\"!single\" [class.single]=\"single\">\n @if ( !isFiltered && !single && summary ) {\n @if ( selection?.value?.length > 0 && selection?.value?.length < options?.length ) {\n <div class=\"selection-overview\">\n <div class=\"summary\">{{ selection?.value?.length }} selected of {{ options?.length }}</div>\n\n <mat-selection-list\n (selectionChange)=\"onUpperSelectionChange( $event )\"\n >\n @for ( code of selection?.value; track code ) {\n <mat-list-option \n [value]=\"code\" \n togglePosition=\"before\"\n selected\n [matTooltip]=\"tooltips ? descriptionForCode( code ) : null\"\n matTooltipPosition=\"after\"\n >\n {{ descriptionForCode( code ) }}\n </mat-list-option>\n }\n </mat-selection-list>\n </div>\n }\n\n @if ( selection?.value?.length == options?.length ) {\n <div class=\"selection-overview\">\n <div class=\"summary\">All options selected</div>\n </div>\n }\n }\n\n <mat-selection-list\n [formControl]=\"selection\"\n (selectionChange)=\"onSelectionChange( $event )\"\n [multiple]=\"!single\"\n hideSingleSelectionIndicator\n >\n @for ( option of options; track option ) {\n <mat-list-option [class.hide]=\"!matchesFilter( option )\"\n [value]=\"option.code\" \n togglePosition=\"before\" \n [matTooltip]=\"tooltips ? option.description : null\"\n matTooltipPosition=\"after\" \n >\n {{ option.description }}\n </mat-list-option>\n }\n </mat-selection-list>\n </div>\n</ng-template>\n", styles: ["::ng-deep :root{--nrcl-filter-select-width: var( --nrcl-filter-width-default )}:host{--mat-form-field-container-height: calc( var( --nrcl-filter-height-default ) - 4px );--mat-form-field-container-vertical-padding: 10px;--mat-form-field-container-text-size: 15px;--mdc-outlined-text-field-focus-label-text-color: black;--mdc-outlined-text-field-hover-label-text-color: black;width:var(--nrcl-filter-select-width, var(--nrcl-filter-width-default));display:block}:host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host.has-value{--mdc-outlined-text-field-label-text-color: black}:host ::ng-deep .mat-mdc-form-field{width:100%}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper{background-color:#fff;height:var(--nrcl-filter-height-default);cursor:pointer}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix{width:var(--nrcl-filter-select-width, var(--nrcl-filter-width-default))}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .filter-input{cursor:pointer}:host.is-open ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .filter-input{cursor:text}:host .cancel{padding:0;width:36px;height:36px;display:flex;justify-content:center;align-items:center;cursor:default}::ng-deep .filter-select-options{--mdc-list-list-item-selected-container-color: #007bff;font-family:var(--nrcl-font-family);overflow-x:hidden;overflow-y:auto;padding:0;background:#fff;color:#000;border:1px solid #aaa;border-radius:4px;font-size:var(--nrcl-font-size);pointer-events:all;box-shadow:0 4px 5px #00000026;display:block;width:100%}::ng-deep .filter-select-options .selection-overview{background-color:#eee;border-bottom:1px solid black}::ng-deep .filter-select-options .selection-overview .summary{padding-top:4px;padding-left:4px;font-size:14px;color:#000000bc;font-family:var(--nrcl-font-family)}::ng-deep .filter-select-options .mat-mdc-selection-list{padding-top:0;padding-bottom:0}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option{height:30px;font-size:var(--nrcl-font-size);padding-left:4px;padding-right:8px}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option.hide{display:none}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__start{margin:0;padding:0 8px}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__primary-text{flex-grow:1;font-size:var(--nrcl-font-size)}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option.mdc-list-item--selected .mdc-list-item__primary-text{color:#fff}::ng-deep .filter-select-options.single .mat-mdc-selection-list .mat-mdc-list-option{padding-left:12px}\n"] }]
|
|
698
|
+
}], propDecorators: { label: [{
|
|
699
|
+
type: Input
|
|
700
|
+
}], placeholder: [{
|
|
701
|
+
type: Input
|
|
702
|
+
}], hint: [{
|
|
703
|
+
type: Input
|
|
704
|
+
}], options: [{
|
|
705
|
+
type: Input
|
|
706
|
+
}], value: [{
|
|
707
|
+
type: Input
|
|
708
|
+
}], selectMax: [{
|
|
709
|
+
type: Input,
|
|
710
|
+
args: [{ transform: numberAttribute }]
|
|
711
|
+
}], tooltips: [{
|
|
712
|
+
type: Input,
|
|
713
|
+
args: [{ transform: booleanAttribute }]
|
|
714
|
+
}], summary: [{
|
|
715
|
+
type: Input,
|
|
716
|
+
args: [{ transform: booleanAttribute }]
|
|
717
|
+
}], clear: [{
|
|
718
|
+
type: Input,
|
|
719
|
+
args: [{ transform: booleanAttribute }]
|
|
720
|
+
}], valueChange: [{
|
|
721
|
+
type: Output
|
|
722
|
+
}], trigger: [{
|
|
723
|
+
type: ViewChild,
|
|
724
|
+
args: ['trigger', { read: ElementRef }]
|
|
725
|
+
}], filterInput: [{
|
|
726
|
+
type: ViewChild,
|
|
727
|
+
args: ['filterInput']
|
|
728
|
+
}], overlayTemplate: [{
|
|
729
|
+
type: ViewChild,
|
|
730
|
+
args: ['overlayTemplate']
|
|
731
|
+
}] } });
|
|
732
|
+
|
|
733
|
+
class FiltersPanelComponent {
|
|
734
|
+
constructor() {
|
|
735
|
+
this.showClear = true;
|
|
736
|
+
this.showFilters = true;
|
|
737
|
+
this.clearFilters = new EventEmitter();
|
|
738
|
+
this.showFiltersChange = new EventEmitter();
|
|
739
|
+
}
|
|
740
|
+
onClearClick() {
|
|
741
|
+
this.clearFilters.emit();
|
|
742
|
+
}
|
|
743
|
+
onHideClick() {
|
|
744
|
+
this.showFilters = false;
|
|
745
|
+
this.showFiltersChange.emit(false);
|
|
746
|
+
}
|
|
747
|
+
onShowClick() {
|
|
748
|
+
this.showFilters = true;
|
|
749
|
+
this.showFiltersChange.emit(true);
|
|
750
|
+
}
|
|
751
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FiltersPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
752
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FiltersPanelComponent, selector: "nrcl-filters-panel", inputs: { showClear: "showClear", showFilters: "showFilters" }, outputs: { clearFilters: "clearFilters", showFiltersChange: "showFiltersChange" }, ngImport: i0, template: "@if ( showFilters ) {\n <ng-content></ng-content>\n}\n\n<div class=\"actions\">\n <nrcl-mobile-view>\n @if ( showFilters ) {\n <button mat-stroked-button class=\"hide\"\n (click)=\"onHideClick()\"\n >\n <mat-icon>expand_less</mat-icon>\n Hide Filters\n </button>\n }\n @else {\n <button mat-stroked-button class=\"show\"\n (click)=\"onShowClick()\"\n >\n <mat-icon>expand_more</mat-icon>\n Show Filters\n </button>\n }\n </nrcl-mobile-view>\n\n <div class=\"spacer\"></div> \n\n @if ( showClear && showFilters ) {\n <button mat-stroked-button class=\"clear\"\n (click)=\"onClearClick()\"\n >\n <mat-icon>filter_list_off</mat-icon>\n Clear\n </button>\n }\n</div>\n", styles: [":host{display:flex;flex-flow:row wrap;gap:8px;position:relative;border:1px solid #c6c8cb;padding:8px;background-color:#f2f2f2}:host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab,:host ::ng-deep button.mat-mdc-raised-button,:host ::ng-deep button.mat-mdc-button,:host ::ng-deep button.mat-mdc-icon-button,:host ::ng-deep button.mat-mdc-outlined-button,:host ::ng-deep button.mat-mdc-unelevated-button,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item{font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size);white-space:nowrap;font-weight:500}:host ::ng-deep button.mat-mdc-fab[disabled],:host ::ng-deep button.mat-mdc-raised-button[disabled],:host ::ng-deep button.mat-mdc-button[disabled],:host ::ng-deep button.mat-mdc-icon-button[disabled],:host ::ng-deep button.mat-mdc-outlined-button[disabled],:host ::ng-deep button.mat-mdc-unelevated-button[disabled],:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item[disabled]{border:1px solid #d7d7d7!important}:host ::ng-deep button.primary.mat-mdc-fab:not([disabled]),:host ::ng-deep button.primary.mat-mdc-raised-button:not([disabled]),:host ::ng-deep button.primary.mat-mdc-button:not([disabled]),:host ::ng-deep button.primary.mat-mdc-icon-button:not([disabled]),:host ::ng-deep button.primary.mat-mdc-outlined-button:not([disabled]),:host ::ng-deep button.primary.mat-mdc-unelevated-button:not([disabled]),:host ::ng-deep button.primary.mat-mdc-mini-fab .mat-mdc-menu-item:not([disabled]){background-color:var(--nrcl-button-primary-background-color);color:var(--nrcl-button-primary-foreground-color)}:host ::ng-deep button.primary.mat-mdc-fab:not([disabled]).intermediate-action,:host ::ng-deep button.primary.mat-mdc-raised-button:not([disabled]).intermediate-action,:host ::ng-deep button.primary.mat-mdc-button:not([disabled]).intermediate-action,:host ::ng-deep button.primary.mat-mdc-icon-button:not([disabled]).intermediate-action,:host ::ng-deep button.primary.mat-mdc-outlined-button:not([disabled]).intermediate-action,:host ::ng-deep button.primary.mat-mdc-unelevated-button:not([disabled]).intermediate-action,:host ::ng-deep button.primary.mat-mdc-mini-fab .mat-mdc-menu-item:not([disabled]).intermediate-action{background-color:#2e7940}:host ::ng-deep button.primary.mat-mdc-fab:not([disabled]):hover,:host ::ng-deep button.primary.mat-mdc-raised-button:not([disabled]):hover,:host ::ng-deep button.primary.mat-mdc-button:not([disabled]):hover,:host ::ng-deep button.primary.mat-mdc-icon-button:not([disabled]):hover,:host ::ng-deep button.primary.mat-mdc-outlined-button:not([disabled]):hover,:host ::ng-deep button.primary.mat-mdc-unelevated-button:not([disabled]):hover,:host ::ng-deep button.primary.mat-mdc-mini-fab .mat-mdc-menu-item:not([disabled]):hover{background-color:var(--nrcl-button-primary-hover-background-color)}:host ::ng-deep button.mat-mdc-fab,:host ::ng-deep button.mat-mdc-raised-button{background-color:#aaa;color:#fff;font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size);box-shadow:none!important;border:1px solid #003366}:host ::ng-deep button.mat-mdc-fab:not([class*=mat-elevation-z]),:host ::ng-deep button.mat-mdc-raised-button:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f!important}:host ::ng-deep button.mdc-button.right-side-icon{display:flex}:host ::ng-deep button.mdc-button.right-side-icon mat-icon{order:1;margin-left:8px;margin-right:-4px}:host .actions{flex-grow:1;flex-direction:row;justify-content:flex-end;align-items:flex-end;width:unset;display:flex}:host .actions button{height:40px}:host .actions .spacer{flex-grow:1}:host-context(.nrcl-device-mobile) :host{display:grid;grid-template-columns:1fr 1fr}:host-context(.nrcl-device-mobile) :host .actions{grid-column:1/span 2}:host-context(.nrcl-device-mobile) :host ::ng-deep nrcl-filter-search{--nrcl-filter-search-width: auto;grid-row:1;grid-column:1/span 2}:host-context(.nrcl-device-mobile) :host ::ng-deep nrcl-filter-select{--nrcl-filter-select-width: auto}:host-context(.nrcl-device-mobile) :host ::ng-deep nrcl-filter-date{--nrcl-filter-date-width: auto}:host-context(.nrcl-device-mobile) :host ::ng-deep nrcl-filter-container{--nrcl-filter-container-width: auto}\n"], dependencies: [{ kind: "component", type: i2$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MobileViewComponent, selector: "nrcl-mobile-view" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
753
|
+
}
|
|
754
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FiltersPanelComponent, decorators: [{
|
|
755
|
+
type: Component,
|
|
756
|
+
args: [{ selector: "nrcl-filters-panel", changeDetection: ChangeDetectionStrategy.OnPush, template: "@if ( showFilters ) {\n <ng-content></ng-content>\n}\n\n<div class=\"actions\">\n <nrcl-mobile-view>\n @if ( showFilters ) {\n <button mat-stroked-button class=\"hide\"\n (click)=\"onHideClick()\"\n >\n <mat-icon>expand_less</mat-icon>\n Hide Filters\n </button>\n }\n @else {\n <button mat-stroked-button class=\"show\"\n (click)=\"onShowClick()\"\n >\n <mat-icon>expand_more</mat-icon>\n Show Filters\n </button>\n }\n </nrcl-mobile-view>\n\n <div class=\"spacer\"></div> \n\n @if ( showClear && showFilters ) {\n <button mat-stroked-button class=\"clear\"\n (click)=\"onClearClick()\"\n >\n <mat-icon>filter_list_off</mat-icon>\n Clear\n </button>\n }\n</div>\n", styles: [":host{display:flex;flex-flow:row wrap;gap:8px;position:relative;border:1px solid #c6c8cb;padding:8px;background-color:#f2f2f2}:host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab,:host ::ng-deep button.mat-mdc-raised-button,:host ::ng-deep button.mat-mdc-button,:host ::ng-deep button.mat-mdc-icon-button,:host ::ng-deep button.mat-mdc-outlined-button,:host ::ng-deep button.mat-mdc-unelevated-button,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item{font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size);white-space:nowrap;font-weight:500}:host ::ng-deep button.mat-mdc-fab[disabled],:host ::ng-deep button.mat-mdc-raised-button[disabled],:host ::ng-deep button.mat-mdc-button[disabled],:host ::ng-deep button.mat-mdc-icon-button[disabled],:host ::ng-deep button.mat-mdc-outlined-button[disabled],:host ::ng-deep button.mat-mdc-unelevated-button[disabled],:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item[disabled]{border:1px solid #d7d7d7!important}:host ::ng-deep button.primary.mat-mdc-fab:not([disabled]),:host ::ng-deep button.primary.mat-mdc-raised-button:not([disabled]),:host ::ng-deep button.primary.mat-mdc-button:not([disabled]),:host ::ng-deep button.primary.mat-mdc-icon-button:not([disabled]),:host ::ng-deep button.primary.mat-mdc-outlined-button:not([disabled]),:host ::ng-deep button.primary.mat-mdc-unelevated-button:not([disabled]),:host ::ng-deep button.primary.mat-mdc-mini-fab .mat-mdc-menu-item:not([disabled]){background-color:var(--nrcl-button-primary-background-color);color:var(--nrcl-button-primary-foreground-color)}:host ::ng-deep button.primary.mat-mdc-fab:not([disabled]).intermediate-action,:host ::ng-deep button.primary.mat-mdc-raised-button:not([disabled]).intermediate-action,:host ::ng-deep button.primary.mat-mdc-button:not([disabled]).intermediate-action,:host ::ng-deep button.primary.mat-mdc-icon-button:not([disabled]).intermediate-action,:host ::ng-deep button.primary.mat-mdc-outlined-button:not([disabled]).intermediate-action,:host ::ng-deep button.primary.mat-mdc-unelevated-button:not([disabled]).intermediate-action,:host ::ng-deep button.primary.mat-mdc-mini-fab .mat-mdc-menu-item:not([disabled]).intermediate-action{background-color:#2e7940}:host ::ng-deep button.primary.mat-mdc-fab:not([disabled]):hover,:host ::ng-deep button.primary.mat-mdc-raised-button:not([disabled]):hover,:host ::ng-deep button.primary.mat-mdc-button:not([disabled]):hover,:host ::ng-deep button.primary.mat-mdc-icon-button:not([disabled]):hover,:host ::ng-deep button.primary.mat-mdc-outlined-button:not([disabled]):hover,:host ::ng-deep button.primary.mat-mdc-unelevated-button:not([disabled]):hover,:host ::ng-deep button.primary.mat-mdc-mini-fab .mat-mdc-menu-item:not([disabled]):hover{background-color:var(--nrcl-button-primary-hover-background-color)}:host ::ng-deep button.mat-mdc-fab,:host ::ng-deep button.mat-mdc-raised-button{background-color:#aaa;color:#fff;font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size);box-shadow:none!important;border:1px solid #003366}:host ::ng-deep button.mat-mdc-fab:not([class*=mat-elevation-z]),:host ::ng-deep button.mat-mdc-raised-button:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f!important}:host ::ng-deep button.mdc-button.right-side-icon{display:flex}:host ::ng-deep button.mdc-button.right-side-icon mat-icon{order:1;margin-left:8px;margin-right:-4px}:host .actions{flex-grow:1;flex-direction:row;justify-content:flex-end;align-items:flex-end;width:unset;display:flex}:host .actions button{height:40px}:host .actions .spacer{flex-grow:1}:host-context(.nrcl-device-mobile) :host{display:grid;grid-template-columns:1fr 1fr}:host-context(.nrcl-device-mobile) :host .actions{grid-column:1/span 2}:host-context(.nrcl-device-mobile) :host ::ng-deep nrcl-filter-search{--nrcl-filter-search-width: auto;grid-row:1;grid-column:1/span 2}:host-context(.nrcl-device-mobile) :host ::ng-deep nrcl-filter-select{--nrcl-filter-select-width: auto}:host-context(.nrcl-device-mobile) :host ::ng-deep nrcl-filter-date{--nrcl-filter-date-width: auto}:host-context(.nrcl-device-mobile) :host ::ng-deep nrcl-filter-container{--nrcl-filter-container-width: auto}\n"] }]
|
|
757
|
+
}], propDecorators: { showClear: [{
|
|
758
|
+
type: Input
|
|
759
|
+
}], showFilters: [{
|
|
760
|
+
type: Input
|
|
761
|
+
}], clearFilters: [{
|
|
762
|
+
type: Output
|
|
763
|
+
}], showFiltersChange: [{
|
|
764
|
+
type: Output
|
|
765
|
+
}] } });
|
|
766
|
+
|
|
767
|
+
class FormFieldComponent {
|
|
768
|
+
constructor() {
|
|
769
|
+
this.element = inject(ElementRef);
|
|
770
|
+
this.renderer = inject(Renderer2);
|
|
771
|
+
}
|
|
772
|
+
ngOnChanges(changes) {
|
|
773
|
+
if (changes.readonly) {
|
|
774
|
+
if (this.readonly) {
|
|
775
|
+
makeFormFieldReadonly(this.renderer, this.element.nativeElement);
|
|
776
|
+
}
|
|
777
|
+
else {
|
|
778
|
+
makeFormFieldNotReadonly(this.renderer, this.element.nativeElement);
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
783
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: FormFieldComponent, selector: "nrcl-form-field", inputs: { required: ["required", "required", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute] }, host: { properties: { "class.required": "required", "class.readonly": "readonly" } }, usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, styles: [":host ::ng-deep .mat-mdc-form-field{width:100%;font-family:var(--nrcl-font-family)}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper{padding-left:0;padding-right:0;background-color:unset}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix{font-size:var(--nrcl-font-size);padding-bottom:2px;line-height:20px;min-height:50px;width:unset}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix .mat-mdc-form-field-required-marker{display:none}:host ::ng-deep .mat-mdc-form-field-subscript-wrapper .mat-mdc-form-field-error-wrapper,:host ::ng-deep .mat-mdc-form-field-subscript-wrapper .mat-mdc-form-field-hint-wrapper{padding:0}:host.required ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix .mdc-floating-label :after{color:red;content:\" *\"}:host.readonly ::ng-deep .mat-mdc-form-field{cursor:not-allowed}:host.readonly ::ng-deep .mat-mdc-form-field [readonly=true]{color:#0000008c;cursor:not-allowed}:host.readonly ::ng-deep .mat-mdc-form-field .mdc-line-ripple:before{border-style:dashed;border-width:1px;border-color:#00000021}:host.readonly ::ng-deep .mat-mdc-form-field mat-error{display:none}:host.readonly ::ng-deep .mat-mdc-form-field input,:host.readonly ::ng-deep .mat-mdc-form-field textarea{cursor:not-allowed}:host.readonly ::ng-deep .mat-mdc-form-field .select-read-only-cursor{cursor:not-allowed;pointer-events:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
784
|
+
}
|
|
785
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
786
|
+
type: Component,
|
|
787
|
+
args: [{ selector: "nrcl-form-field", template: "<ng-content></ng-content>", changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
788
|
+
'[class.required]': "required",
|
|
789
|
+
'[class.readonly]': "readonly",
|
|
790
|
+
}, styles: [":host ::ng-deep .mat-mdc-form-field{width:100%;font-family:var(--nrcl-font-family)}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper{padding-left:0;padding-right:0;background-color:unset}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix{font-size:var(--nrcl-font-size);padding-bottom:2px;line-height:20px;min-height:50px;width:unset}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix .mat-mdc-form-field-required-marker{display:none}:host ::ng-deep .mat-mdc-form-field-subscript-wrapper .mat-mdc-form-field-error-wrapper,:host ::ng-deep .mat-mdc-form-field-subscript-wrapper .mat-mdc-form-field-hint-wrapper{padding:0}:host.required ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix .mdc-floating-label :after{color:red;content:\" *\"}:host.readonly ::ng-deep .mat-mdc-form-field{cursor:not-allowed}:host.readonly ::ng-deep .mat-mdc-form-field [readonly=true]{color:#0000008c;cursor:not-allowed}:host.readonly ::ng-deep .mat-mdc-form-field .mdc-line-ripple:before{border-style:dashed;border-width:1px;border-color:#00000021}:host.readonly ::ng-deep .mat-mdc-form-field mat-error{display:none}:host.readonly ::ng-deep .mat-mdc-form-field input,:host.readonly ::ng-deep .mat-mdc-form-field textarea{cursor:not-allowed}:host.readonly ::ng-deep .mat-mdc-form-field .select-read-only-cursor{cursor:not-allowed;pointer-events:none}\n"] }]
|
|
791
|
+
}], propDecorators: { required: [{
|
|
792
|
+
type: Input,
|
|
793
|
+
args: [{ transform: booleanAttribute }]
|
|
794
|
+
}], readonly: [{
|
|
795
|
+
type: Input,
|
|
796
|
+
args: [{ transform: booleanAttribute }]
|
|
797
|
+
}] } });
|
|
798
|
+
function makeFormFieldReadonly(renderer, formFieldEl) {
|
|
799
|
+
let editableElements;
|
|
800
|
+
//make input element readonly
|
|
801
|
+
let inputHtmlElement;
|
|
802
|
+
editableElements = formFieldEl.getElementsByTagName('input');
|
|
803
|
+
if (editableElements && editableElements.length) {
|
|
804
|
+
inputHtmlElement = editableElements[0];
|
|
805
|
+
setTimeout(() => {
|
|
806
|
+
renderer.setAttribute(inputHtmlElement, "readonly", "readonly");
|
|
807
|
+
});
|
|
808
|
+
}
|
|
809
|
+
//make textarea element readonly
|
|
810
|
+
let textareaHtmlElement;
|
|
811
|
+
editableElements = formFieldEl.getElementsByTagName('textarea');
|
|
812
|
+
if (editableElements && editableElements.length) {
|
|
813
|
+
textareaHtmlElement = editableElements[0];
|
|
814
|
+
setTimeout(() => {
|
|
815
|
+
renderer.setAttribute(textareaHtmlElement, "readonly", "readonly");
|
|
816
|
+
});
|
|
817
|
+
}
|
|
818
|
+
//make select element readonly
|
|
819
|
+
let selectHtmlElement;
|
|
820
|
+
editableElements = formFieldEl.getElementsByTagName('select');
|
|
821
|
+
if (editableElements && editableElements.length) {
|
|
822
|
+
selectHtmlElement = editableElements[0];
|
|
823
|
+
setTimeout(() => {
|
|
824
|
+
renderer.addClass(selectHtmlElement, "select-read-only-cursor");
|
|
825
|
+
renderer.setAttribute(selectHtmlElement, "readonly", "readonly");
|
|
826
|
+
for (let i = 0; i < selectHtmlElement.options.length; i++) {
|
|
827
|
+
selectHtmlElement.options[i].disabled = true;
|
|
828
|
+
}
|
|
829
|
+
});
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
function makeFormFieldNotReadonly(renderer, formFieldEl) {
|
|
833
|
+
// renderer.removeClass(formFieldEl, "readonly");
|
|
834
|
+
let editableElements;
|
|
835
|
+
//make input element readonly
|
|
836
|
+
let inputHtmlElement;
|
|
837
|
+
editableElements = formFieldEl.getElementsByTagName('input');
|
|
838
|
+
if (editableElements && editableElements.length) {
|
|
839
|
+
inputHtmlElement = editableElements[0];
|
|
840
|
+
setTimeout(() => {
|
|
841
|
+
renderer.removeAttribute(inputHtmlElement, "readonly");
|
|
842
|
+
});
|
|
843
|
+
}
|
|
844
|
+
//make textarea element readonly
|
|
845
|
+
let textareaHtmlElement;
|
|
846
|
+
editableElements = formFieldEl.getElementsByTagName('textarea');
|
|
847
|
+
if (editableElements && editableElements.length) {
|
|
848
|
+
textareaHtmlElement = editableElements[0];
|
|
849
|
+
setTimeout(() => {
|
|
850
|
+
renderer.removeAttribute(textareaHtmlElement, "readonly");
|
|
851
|
+
});
|
|
852
|
+
}
|
|
853
|
+
//make select element readonly
|
|
854
|
+
let selectHtmlElement;
|
|
855
|
+
editableElements = formFieldEl.getElementsByTagName('select');
|
|
856
|
+
if (editableElements && editableElements.length) {
|
|
857
|
+
selectHtmlElement = editableElements[0];
|
|
858
|
+
setTimeout(() => {
|
|
859
|
+
renderer.removeClass(selectHtmlElement, "select-read-only-cursor");
|
|
860
|
+
renderer.removeAttribute(selectHtmlElement, "readonly");
|
|
861
|
+
for (let i = 0; i < selectHtmlElement.options.length; i++) {
|
|
862
|
+
selectHtmlElement.options[i].disabled = undefined;
|
|
863
|
+
}
|
|
864
|
+
});
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
class FormLayoutComponent {
|
|
869
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
870
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FormLayoutComponent, selector: "nrcl-form-layout", ngImport: i0, template: "<ng-content></ng-content>", isInline: true, styles: [":host{display:grid;gap:var(--nrcl-gutter-space);grid-template-columns:repeat(var(--nrcl-form-layout-columns),1fr)}:host>::ng-deep [layoutwidth=\"2\"]{grid-column:span 2}:host>::ng-deep [layoutwidth=full]{grid-column:span var(--nrcl-form-layout-columns)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
871
|
+
}
|
|
872
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormLayoutComponent, decorators: [{
|
|
873
|
+
type: Component,
|
|
874
|
+
args: [{ selector: "nrcl-form-layout", template: "<ng-content></ng-content>", changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:grid;gap:var(--nrcl-gutter-space);grid-template-columns:repeat(var(--nrcl-form-layout-columns),1fr)}:host>::ng-deep [layoutwidth=\"2\"]{grid-column:span 2}:host>::ng-deep [layoutwidth=full]{grid-column:span var(--nrcl-form-layout-columns)}\n"] }]
|
|
875
|
+
}] });
|
|
876
|
+
|
|
877
|
+
class GapComponent {
|
|
878
|
+
constructor() {
|
|
879
|
+
this.horizontal = false;
|
|
880
|
+
this.vertical = false;
|
|
881
|
+
}
|
|
882
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GapComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
883
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: GapComponent, selector: "nrcl-gap", inputs: { horizontal: ["horizontal", "horizontal", booleanAttribute], vertical: ["vertical", "vertical", booleanAttribute] }, ngImport: i0, template: '', isInline: true, styles: [":host{display:block}:host[horizontal]{width:var(--nrcl-gutter-space)}:host[vertical]{height:var(--nrcl-gutter-space)}\n"] }); }
|
|
884
|
+
}
|
|
885
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GapComponent, decorators: [{
|
|
886
|
+
type: Component,
|
|
887
|
+
args: [{ selector: 'nrcl-gap', template: '', styles: [":host{display:block}:host[horizontal]{width:var(--nrcl-gutter-space)}:host[vertical]{height:var(--nrcl-gutter-space)}\n"] }]
|
|
888
|
+
}], propDecorators: { horizontal: [{
|
|
889
|
+
type: Input,
|
|
890
|
+
args: [{ transform: booleanAttribute }]
|
|
891
|
+
}], vertical: [{
|
|
892
|
+
type: Input,
|
|
893
|
+
args: [{ transform: booleanAttribute }]
|
|
894
|
+
}] } });
|
|
895
|
+
|
|
896
|
+
class PageContainerComponent {
|
|
897
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
898
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PageContainerComponent, selector: "nrcl-page-container", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:column;box-sizing:border-box;width:100%;height:100%;padding-left:var(--nrcl-gutter-space);padding-right:var(--nrcl-gutter-space)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
899
|
+
}
|
|
900
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageContainerComponent, decorators: [{
|
|
901
|
+
type: Component,
|
|
902
|
+
args: [{ selector: "nrcl-page-container", changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:column;box-sizing:border-box;width:100%;height:100%;padding-left:var(--nrcl-gutter-space);padding-right:var(--nrcl-gutter-space)}\n"] }]
|
|
903
|
+
}] });
|
|
904
|
+
|
|
905
|
+
class PageHeaderComponent {
|
|
906
|
+
constructor() {
|
|
907
|
+
this.isLoading = false;
|
|
908
|
+
}
|
|
909
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
910
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PageHeaderComponent, selector: "nrcl-page-header", inputs: { isLoading: "isLoading" }, host: { properties: { "class.isLoading": "isLoading" } }, ngImport: i0, template: "<div class=\"left-side\">\n <ng-content select=\"[left-side],h1,h2\"></ng-content>\n</div>\n\n<div class=\"right-side\">\n <ng-content select=\"[right-side]\"></ng-content>\n <ng-content></ng-content>\n</div>\n\n<mat-spinner class=\"loading\" [diameter]=\"30\"></mat-spinner>\n", styles: [":host{display:flex;gap:var(--nrcl-gutter-space);position:relative;padding-top:var(--nrcl-gutter-space);font-family:var(--nrcl-font-family)}:host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host .left-side{display:flex;flex-direction:column}:host .left-side ::ng-deep h1{font-size:var(--nrcl-font-size-h1);font-weight:200;padding:0;margin:0}:host .left-side ::ng-deep h2{font-size:var(--nrcl-font-size-h2);font-weight:200;padding:0;margin:0}:host .right-side{flex-grow:1;display:flex;justify-content:flex-end;align-items:center}:host .loading{position:absolute;top:var(--nrcl-gutter-space);right:0;display:none}:host.isLoading .loading{display:block}:host.isLoading .right-side{visibility:hidden}\n"], dependencies: [{ kind: "component", type: i2$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
911
|
+
}
|
|
912
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageHeaderComponent, decorators: [{
|
|
913
|
+
type: Component,
|
|
914
|
+
args: [{ selector: "nrcl-page-header", changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
915
|
+
'[class.isLoading]': 'isLoading',
|
|
916
|
+
}, template: "<div class=\"left-side\">\n <ng-content select=\"[left-side],h1,h2\"></ng-content>\n</div>\n\n<div class=\"right-side\">\n <ng-content select=\"[right-side]\"></ng-content>\n <ng-content></ng-content>\n</div>\n\n<mat-spinner class=\"loading\" [diameter]=\"30\"></mat-spinner>\n", styles: [":host{display:flex;gap:var(--nrcl-gutter-space);position:relative;padding-top:var(--nrcl-gutter-space);font-family:var(--nrcl-font-family)}:host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host .left-side{display:flex;flex-direction:column}:host .left-side ::ng-deep h1{font-size:var(--nrcl-font-size-h1);font-weight:200;padding:0;margin:0}:host .left-side ::ng-deep h2{font-size:var(--nrcl-font-size-h2);font-weight:200;padding:0;margin:0}:host .right-side{flex-grow:1;display:flex;justify-content:flex-end;align-items:center}:host .loading{position:absolute;top:var(--nrcl-gutter-space);right:0;display:none}:host.isLoading .loading{display:block}:host.isLoading .right-side{visibility:hidden}\n"] }]
|
|
917
|
+
}], propDecorators: { isLoading: [{
|
|
918
|
+
type: Input
|
|
919
|
+
}] } });
|
|
920
|
+
|
|
921
|
+
class RowListDesktopComponent {
|
|
922
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowListDesktopComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
923
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RowListDesktopComponent, selector: "nrcl-row-list-desktop", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:block;overflow-x:auto;overflow-y:hidden;border-bottom:1px solid #c6c8cb}:host ::ng-deep .mat-mdc-table{width:100%}:host ::ng-deep .mat-mdc-table .mat-mdc-row{background-color:#fff;cursor:pointer}:host ::ng-deep .mat-mdc-table .mat-mdc-row .mat-mdc-cell{padding:5px;color:#000;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}:host ::ng-deep .mat-mdc-table .mat-mdc-row:hover{background-color:#d7d7d7}:host ::ng-deep .mat-mdc-table .mat-mdc-row:nth-child(odd):not(:hover){background-color:#f2f2f2}:host ::ng-deep .mat-mdc-table .mat-mdc-row:nth-child(2n):not(:hover){background-color:#fff}:host ::ng-deep .mat-mdc-table .mat-mdc-header-cell{padding:5px;color:#000}:host ::ng-deep .mat-mdc-table .mat-mdc-header-cell .mat-sort-header-content{text-align:left;align-items:flex-end;font-size:15px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
924
|
+
}
|
|
925
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowListDesktopComponent, decorators: [{
|
|
926
|
+
type: Component,
|
|
927
|
+
args: [{ selector: "nrcl-row-list-desktop", changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n", styles: [":host{display:block;overflow-x:auto;overflow-y:hidden;border-bottom:1px solid #c6c8cb}:host ::ng-deep .mat-mdc-table{width:100%}:host ::ng-deep .mat-mdc-table .mat-mdc-row{background-color:#fff;cursor:pointer}:host ::ng-deep .mat-mdc-table .mat-mdc-row .mat-mdc-cell{padding:5px;color:#000;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}:host ::ng-deep .mat-mdc-table .mat-mdc-row:hover{background-color:#d7d7d7}:host ::ng-deep .mat-mdc-table .mat-mdc-row:nth-child(odd):not(:hover){background-color:#f2f2f2}:host ::ng-deep .mat-mdc-table .mat-mdc-row:nth-child(2n):not(:hover){background-color:#fff}:host ::ng-deep .mat-mdc-table .mat-mdc-header-cell{padding:5px;color:#000}:host ::ng-deep .mat-mdc-table .mat-mdc-header-cell .mat-sort-header-content{text-align:left;align-items:flex-end;font-size:15px}\n"] }]
|
|
928
|
+
}] });
|
|
929
|
+
|
|
930
|
+
class RowListMobileComponent {
|
|
931
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowListMobileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
932
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RowListMobileComponent, selector: "nrcl-row-list-mobile", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{width:100%;display:flex;flex-direction:column;gap:var(--nrcl-gutter-space)}:host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep mat-card.mat-mdc-card{margin:0;box-shadow:none;border:2px solid #bebebe;padding:0;font-family:var(--nrcl-font-family)}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-title{padding:var(--nrcl-gutter-space);border-bottom:#f2f2f2 1px solid;background-color:#f2f2f2;gap:var(--nrcl-gutter-space);display:flex;justify-content:space-between;align-items:stretch;margin:0}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-title section[title]{flex-direction:column;align-items:flex-start;text-overflow:ellipsis;overflow:hidden;display:flex;flex:1}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-title section[title] h2,:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-title section[title] h3{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0;padding:0;line-height:normal}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-title section[title] h2{font-size:18px;font-weight:400}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-title section[title] h3{font-size:14px;font-weight:400}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-title section[actions]{display:flex;gap:var(--nrcl-gutter-space)}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-title section[actions] button[icon]{border:none;background:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;padding:0;justify-content:center;line-height:20px}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-content{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:var(--nrcl-gutter-space);margin:0;gap:var(--nrcl-gutter-space)}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-content section{display:flex;flex-direction:column}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-content section cell-content{font-weight:700}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
933
|
+
}
|
|
934
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowListMobileComponent, decorators: [{
|
|
935
|
+
type: Component,
|
|
936
|
+
args: [{ selector: "nrcl-row-list-mobile", changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n", styles: [":host{width:100%;display:flex;flex-direction:column;gap:var(--nrcl-gutter-space)}:host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep mat-card.mat-mdc-card{margin:0;box-shadow:none;border:2px solid #bebebe;padding:0;font-family:var(--nrcl-font-family)}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-title{padding:var(--nrcl-gutter-space);border-bottom:#f2f2f2 1px solid;background-color:#f2f2f2;gap:var(--nrcl-gutter-space);display:flex;justify-content:space-between;align-items:stretch;margin:0}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-title section[title]{flex-direction:column;align-items:flex-start;text-overflow:ellipsis;overflow:hidden;display:flex;flex:1}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-title section[title] h2,:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-title section[title] h3{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0;padding:0;line-height:normal}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-title section[title] h2{font-size:18px;font-weight:400}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-title section[title] h3{font-size:14px;font-weight:400}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-title section[actions]{display:flex;gap:var(--nrcl-gutter-space)}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-title section[actions] button[icon]{border:none;background:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;padding:0;justify-content:center;line-height:20px}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-content{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:var(--nrcl-gutter-space);margin:0;gap:var(--nrcl-gutter-space)}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-content section{display:flex;flex-direction:column}:host ::ng-deep mat-card.mat-mdc-card .mat-mdc-card-content section cell-content{font-weight:700}\n"] }]
|
|
937
|
+
}] });
|
|
938
|
+
|
|
939
|
+
class RowListPaginationComponent {
|
|
940
|
+
constructor() {
|
|
941
|
+
this.paginationId = '1';
|
|
942
|
+
this.pageSizeOptions = [
|
|
943
|
+
{ code: 5, description: '5 Rows' },
|
|
944
|
+
{ code: 10, description: '10 Rows' },
|
|
945
|
+
{ code: 20, description: '20 Rows' },
|
|
946
|
+
{ code: 50, description: '50 Rows' },
|
|
947
|
+
{ code: 100, description: '100 Rows' },
|
|
948
|
+
];
|
|
949
|
+
this.pageSize = 20;
|
|
950
|
+
this.showPageSize = true;
|
|
951
|
+
this.pageSizeChange = new EventEmitter();
|
|
952
|
+
this.pageNumberChange = new EventEmitter();
|
|
953
|
+
this.componentWidth = 'sufficient';
|
|
954
|
+
this.paginationMaxSize = 5;
|
|
955
|
+
this.elementRef = inject(ElementRef);
|
|
956
|
+
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
957
|
+
}
|
|
958
|
+
ngAfterViewInit() {
|
|
959
|
+
this.checkWidth();
|
|
960
|
+
}
|
|
961
|
+
onPageSizeChange(ev) {
|
|
962
|
+
this.pageSizeChange.emit(Number(ev));
|
|
963
|
+
}
|
|
964
|
+
onPageNumberChange(ev) {
|
|
965
|
+
this.pageNumberChange.emit(Number(ev));
|
|
966
|
+
}
|
|
967
|
+
onResize(event) {
|
|
968
|
+
this.checkWidth();
|
|
969
|
+
}
|
|
970
|
+
checkWidth() {
|
|
971
|
+
setTimeout(() => {
|
|
972
|
+
let w = this.elementRef?.nativeElement.offsetWidth;
|
|
973
|
+
if (!w)
|
|
974
|
+
return;
|
|
975
|
+
switch (true) {
|
|
976
|
+
case w > 600:
|
|
977
|
+
this.componentWidth = 'sufficient';
|
|
978
|
+
this.paginationMaxSize = 5;
|
|
979
|
+
break;
|
|
980
|
+
case w > 500:
|
|
981
|
+
this.componentWidth = 'tight';
|
|
982
|
+
this.paginationMaxSize = 3;
|
|
983
|
+
break;
|
|
984
|
+
default:
|
|
985
|
+
this.componentWidth = 'restrictive';
|
|
986
|
+
this.paginationMaxSize = 4;
|
|
987
|
+
}
|
|
988
|
+
this.changeDetectorRef.detectChanges();
|
|
989
|
+
});
|
|
990
|
+
}
|
|
991
|
+
get pageCount() {
|
|
992
|
+
if (!this.hasRows)
|
|
993
|
+
return 0;
|
|
994
|
+
return Math.ceil(this.rowCount / this.pageSize);
|
|
995
|
+
}
|
|
996
|
+
get firstRow() {
|
|
997
|
+
if (!this.hasRows)
|
|
998
|
+
return 0;
|
|
999
|
+
return (Math.min(this.pageCount, this.pageNumber) - 1) * this.pageSize + 1;
|
|
1000
|
+
}
|
|
1001
|
+
get lastRow() {
|
|
1002
|
+
if (!this.hasRows)
|
|
1003
|
+
return 0;
|
|
1004
|
+
return Math.min(this.firstRow + this.pageSize - 1, this.rowCount);
|
|
1005
|
+
}
|
|
1006
|
+
get hasRows() {
|
|
1007
|
+
return this.rowCount && this.pageSize;
|
|
1008
|
+
}
|
|
1009
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowListPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1010
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RowListPaginationComponent, selector: "nrcl-row-list-pagination", inputs: { paginationId: "paginationId", pageSizeOptions: "pageSizeOptions", pageSize: "pageSize", pageNumber: "pageNumber", rowCount: "rowCount", showPageSize: "showPageSize" }, outputs: { pageSizeChange: "pageSizeChange", pageNumberChange: "pageNumberChange" }, host: { listeners: { "window:resize": "onResize($event)" }, properties: { "class.width-sufficient": "componentWidth == 'sufficient'", "class.width-tight": "componentWidth == 'tight'", "class.width-restrictive": "componentWidth == 'restrictive'" } }, ngImport: i0, template: "@if ( hasRows ) {\n <nrcl-filter-container class=\"summary\"\n label=\"Showing Rows\"\n >\n <span>{{ firstRow }} to {{ lastRow }} <small>(of {{ rowCount }})</small></span>\n </nrcl-filter-container>\n}\n@else {\n <div class=\"no-rows\">No records to display.</div>\n}\n\n@if ( hasRows ) {\n <div class=\"pagination\">\n <pagination-controls \n [id]=\"paginationId\" \n [maxSize]=\"paginationMaxSize\"\n [responsive]=\"false\"\n [directionLinks]=\"true\"\n previousLabel=\"\"\n nextLabel=\"\"\n [autoHide]=\"false\"\n (pageChange)=\"onPageNumberChange( $event )\"\n ></pagination-controls>\n </div>\n}\n\n@if ( hasRows && showPageSize ) {\n <nrcl-filter-select class=\"page-size\"\n label=\"Page Size\"\n [value]=\"[ pageSize ]\"\n [options]=\"pageSizeOptions\"\n (valueChange)=\"onPageSizeChange( $event[ 0 ] )\"\n selectMax=\"1\"\n [clear]=\"false\"\n ></nrcl-filter-select>\n}\n", styles: [":host{display:block;font-family:var(--nrcl-font-family);position:relative;min-height:40px}:host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host .summary{--nrcl-filter-container-width: min-content;position:absolute;top:0;left:0;bottom:0;white-space:nowrap}:host .pagination{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}:host .pagination ::ng-deep .ngx-pagination{text-align:center;padding-inline-start:0;margin:0}:host .pagination ::ng-deep .ngx-pagination li{border-left:#c6c8cb solid 1px;border-top:#c6c8cb solid 1px;border-bottom:#c6c8cb solid 1px;border-right:none;vertical-align:middle;margin:0;height:35px;padding:0}:host .pagination ::ng-deep .ngx-pagination li a{padding:0;line-height:35px;text-decoration:none}:host .pagination ::ng-deep .ngx-pagination li>*>span{padding:0 15px;line-height:35px}:host .pagination ::ng-deep .ngx-pagination li.current{color:#036;font-weight:700;background:#fff;border:2px solid #003366;border-radius:2px}:host .pagination ::ng-deep .ngx-pagination li.disabled span{display:none}:host .pagination ::ng-deep .ngx-pagination li:first-child{border-left:none;border-top:none;border-bottom:none}:host .pagination ::ng-deep .ngx-pagination li:last-child{border-top:none;border-bottom:none}:host .pagination ::ng-deep .ngx-pagination a:hover,:host .pagination ::ng-deep .ngx-pagination button:hover{color:#131313;background-color:#ffd3a0}:host .pagination ::ng-deep .ngx-pagination .pagination-next a:after,:host .pagination ::ng-deep .ngx-pagination .pagination-next a:before,:host .pagination ::ng-deep .ngx-pagination .pagination-next.disabled:after,:host .pagination ::ng-deep .ngx-pagination .pagination-next.disabled:before,:host .pagination ::ng-deep .ngx-pagination .pagination-previous a:after,:host .pagination ::ng-deep .ngx-pagination .pagination-previous a:before,:host .pagination ::ng-deep .ngx-pagination .pagination-previous.disabled:after,:host .pagination ::ng-deep .ngx-pagination .pagination-previous.disabled:before{font-family:Material Symbols Outlined;vertical-align:middle;display:inline;font-size:25px;margin:0;line-height:40px;padding:0 10px}:host .pagination ::ng-deep .ngx-pagination .pagination-previous a:before,:host .pagination ::ng-deep .ngx-pagination .pagination-previous.disabled:before{content:\"arrow_back\"}:host .pagination ::ng-deep .ngx-pagination .pagination-next a:after,:host .pagination ::ng-deep .ngx-pagination .pagination-next.disabled:after{content:\"arrow_forward\"}:host .page-size{--nrcl-filter-select-width: 140px;position:absolute;top:0;right:0;bottom:0;display:flex;gap:8px;align-items:center;pointer-events:auto}:host.width-restrictive{display:grid;grid-template-columns:1fr 1fr;gap:var(--nrcl-gutter-space)}:host.width-restrictive .summary{--nrcl-filter-container-width: auto;position:static;grid-column:1;grid-row:1}:host.width-restrictive .page-size{--nrcl-filter-select-width: auto;position:static;grid-column:2;grid-row:1}:host.width-restrictive .pagination{position:static;grid-column:1/span 2;grid-row:2}\n"], dependencies: [{ kind: "component", type: i1$2.PaginationControlsComponent, selector: "pagination-controls", inputs: ["id", "maxSize", "directionLinks", "autoHide", "responsive", "previousLabel", "nextLabel", "screenReaderPaginationLabel", "screenReaderPageLabel", "screenReaderCurrentLabel"], outputs: ["pageChange", "pageBoundsCorrection"] }, { kind: "component", type: FilterContainerComponent, selector: "nrcl-filter-container", inputs: ["label", "hint"] }, { kind: "component", type: FilterSelectComponent, selector: "nrcl-filter-select", inputs: ["label", "placeholder", "hint", "options", "value", "selectMax", "tooltips", "summary", "clear"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1011
|
+
}
|
|
1012
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowListPaginationComponent, decorators: [{
|
|
1013
|
+
type: Component,
|
|
1014
|
+
args: [{ selector: "nrcl-row-list-pagination", changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
1015
|
+
'[class.width-sufficient]': "componentWidth == 'sufficient'",
|
|
1016
|
+
'[class.width-tight]': "componentWidth == 'tight'",
|
|
1017
|
+
'[class.width-restrictive]': "componentWidth == 'restrictive'",
|
|
1018
|
+
}, template: "@if ( hasRows ) {\n <nrcl-filter-container class=\"summary\"\n label=\"Showing Rows\"\n >\n <span>{{ firstRow }} to {{ lastRow }} <small>(of {{ rowCount }})</small></span>\n </nrcl-filter-container>\n}\n@else {\n <div class=\"no-rows\">No records to display.</div>\n}\n\n@if ( hasRows ) {\n <div class=\"pagination\">\n <pagination-controls \n [id]=\"paginationId\" \n [maxSize]=\"paginationMaxSize\"\n [responsive]=\"false\"\n [directionLinks]=\"true\"\n previousLabel=\"\"\n nextLabel=\"\"\n [autoHide]=\"false\"\n (pageChange)=\"onPageNumberChange( $event )\"\n ></pagination-controls>\n </div>\n}\n\n@if ( hasRows && showPageSize ) {\n <nrcl-filter-select class=\"page-size\"\n label=\"Page Size\"\n [value]=\"[ pageSize ]\"\n [options]=\"pageSizeOptions\"\n (valueChange)=\"onPageSizeChange( $event[ 0 ] )\"\n selectMax=\"1\"\n [clear]=\"false\"\n ></nrcl-filter-select>\n}\n", styles: [":host{display:block;font-family:var(--nrcl-font-family);position:relative;min-height:40px}:host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host .summary{--nrcl-filter-container-width: min-content;position:absolute;top:0;left:0;bottom:0;white-space:nowrap}:host .pagination{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}:host .pagination ::ng-deep .ngx-pagination{text-align:center;padding-inline-start:0;margin:0}:host .pagination ::ng-deep .ngx-pagination li{border-left:#c6c8cb solid 1px;border-top:#c6c8cb solid 1px;border-bottom:#c6c8cb solid 1px;border-right:none;vertical-align:middle;margin:0;height:35px;padding:0}:host .pagination ::ng-deep .ngx-pagination li a{padding:0;line-height:35px;text-decoration:none}:host .pagination ::ng-deep .ngx-pagination li>*>span{padding:0 15px;line-height:35px}:host .pagination ::ng-deep .ngx-pagination li.current{color:#036;font-weight:700;background:#fff;border:2px solid #003366;border-radius:2px}:host .pagination ::ng-deep .ngx-pagination li.disabled span{display:none}:host .pagination ::ng-deep .ngx-pagination li:first-child{border-left:none;border-top:none;border-bottom:none}:host .pagination ::ng-deep .ngx-pagination li:last-child{border-top:none;border-bottom:none}:host .pagination ::ng-deep .ngx-pagination a:hover,:host .pagination ::ng-deep .ngx-pagination button:hover{color:#131313;background-color:#ffd3a0}:host .pagination ::ng-deep .ngx-pagination .pagination-next a:after,:host .pagination ::ng-deep .ngx-pagination .pagination-next a:before,:host .pagination ::ng-deep .ngx-pagination .pagination-next.disabled:after,:host .pagination ::ng-deep .ngx-pagination .pagination-next.disabled:before,:host .pagination ::ng-deep .ngx-pagination .pagination-previous a:after,:host .pagination ::ng-deep .ngx-pagination .pagination-previous a:before,:host .pagination ::ng-deep .ngx-pagination .pagination-previous.disabled:after,:host .pagination ::ng-deep .ngx-pagination .pagination-previous.disabled:before{font-family:Material Symbols Outlined;vertical-align:middle;display:inline;font-size:25px;margin:0;line-height:40px;padding:0 10px}:host .pagination ::ng-deep .ngx-pagination .pagination-previous a:before,:host .pagination ::ng-deep .ngx-pagination .pagination-previous.disabled:before{content:\"arrow_back\"}:host .pagination ::ng-deep .ngx-pagination .pagination-next a:after,:host .pagination ::ng-deep .ngx-pagination .pagination-next.disabled:after{content:\"arrow_forward\"}:host .page-size{--nrcl-filter-select-width: 140px;position:absolute;top:0;right:0;bottom:0;display:flex;gap:8px;align-items:center;pointer-events:auto}:host.width-restrictive{display:grid;grid-template-columns:1fr 1fr;gap:var(--nrcl-gutter-space)}:host.width-restrictive .summary{--nrcl-filter-container-width: auto;position:static;grid-column:1;grid-row:1}:host.width-restrictive .page-size{--nrcl-filter-select-width: auto;position:static;grid-column:2;grid-row:1}:host.width-restrictive .pagination{position:static;grid-column:1/span 2;grid-row:2}\n"] }]
|
|
1019
|
+
}], propDecorators: { paginationId: [{
|
|
1020
|
+
type: Input
|
|
1021
|
+
}], pageSizeOptions: [{
|
|
1022
|
+
type: Input
|
|
1023
|
+
}], pageSize: [{
|
|
1024
|
+
type: Input
|
|
1025
|
+
}], pageNumber: [{
|
|
1026
|
+
type: Input
|
|
1027
|
+
}], rowCount: [{
|
|
1028
|
+
type: Input
|
|
1029
|
+
}], showPageSize: [{
|
|
1030
|
+
type: Input
|
|
1031
|
+
}], pageSizeChange: [{
|
|
1032
|
+
type: Output
|
|
1033
|
+
}], pageNumberChange: [{
|
|
1034
|
+
type: Output
|
|
1035
|
+
}], onResize: [{
|
|
1036
|
+
type: HostListener,
|
|
1037
|
+
args: ["window:resize", ["$event"]]
|
|
1038
|
+
}] } });
|
|
1039
|
+
|
|
1040
|
+
function wrapFilterValue(val) {
|
|
1041
|
+
if (!val)
|
|
1042
|
+
return [];
|
|
1043
|
+
if (Array.isArray(val))
|
|
1044
|
+
return val;
|
|
1045
|
+
return [val];
|
|
1046
|
+
}
|
|
1047
|
+
function unwrapFilterValue(val) {
|
|
1048
|
+
if (!val)
|
|
1049
|
+
return '';
|
|
1050
|
+
if (Array.isArray(val))
|
|
1051
|
+
return val[0] || '';
|
|
1052
|
+
return val;
|
|
1053
|
+
}
|
|
1054
|
+
function mapToCodeDescription(list, codeField, descriptionField) {
|
|
1055
|
+
if (!list)
|
|
1056
|
+
return list;
|
|
1057
|
+
return list.map(v => {
|
|
1058
|
+
return {
|
|
1059
|
+
code: v[codeField],
|
|
1060
|
+
description: v[descriptionField]
|
|
1061
|
+
};
|
|
1062
|
+
});
|
|
1063
|
+
}
|
|
1064
|
+
|
|
1065
|
+
class RowListSortingComponent {
|
|
1066
|
+
constructor() {
|
|
1067
|
+
this.sortColumnOptions = [];
|
|
1068
|
+
this.sortDirection = 'asc';
|
|
1069
|
+
this.sortChange = new EventEmitter();
|
|
1070
|
+
this.wrapFilterValue = wrapFilterValue;
|
|
1071
|
+
this.unwrapFilterValue = unwrapFilterValue;
|
|
1072
|
+
}
|
|
1073
|
+
onSortColumnChange(ev) {
|
|
1074
|
+
this.sortColumn = ev;
|
|
1075
|
+
this.emitSortChange();
|
|
1076
|
+
}
|
|
1077
|
+
onSortDirectionChange() {
|
|
1078
|
+
this.emitSortChange();
|
|
1079
|
+
}
|
|
1080
|
+
emitSortChange() {
|
|
1081
|
+
this.sortChange.emit({
|
|
1082
|
+
active: this.sortColumn,
|
|
1083
|
+
direction: this.sortDirection
|
|
1084
|
+
});
|
|
1085
|
+
}
|
|
1086
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowListSortingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1087
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RowListSortingComponent, selector: "nrcl-row-list-sorting", inputs: { sortColumn: "sortColumn", sortColumnOptions: "sortColumnOptions", sortDirection: "sortDirection" }, outputs: { sortChange: "sortChange" }, ngImport: i0, template: "<nrcl-filter-select class=\"sort-order\" \n label=\"Sort By\"\n [value]=\"wrapFilterValue( sortColumn )\"\n [options]=\"sortColumnOptions\"\n (valueChange)=\"onSortColumnChange( unwrapFilterValue( $event ) )\"\n selectMax=\"1\" \n></nrcl-filter-select>\n\n<nrcl-filter-container class=\"sort-direction\" \n label=\"Sort Order\"\n>\n <mat-radio-group\n [(ngModel)]=\"sortDirection\" \n (ngModelChange)=\"onSortDirectionChange()\"\n [disabled]=\"!sortColumn\"\n >\n <mat-radio-button aria-label=\"Sort A to Z\" value=\"asc\">A → Z</mat-radio-button>\n <mat-radio-button aria-label=\"Sort Z to A\" value=\"desc\">Z → A</mat-radio-button>\n </mat-radio-group>\n</nrcl-filter-container>\n", styles: [":host{gap:8px;width:100%;display:grid;grid-template-columns:1fr 1fr}:host .sort-order{--nrcl-filter-select-width: auto;grid-column:1}:host .sort-direction{--nrcl-filter-container-width: auto;grid-column:2}:host .sort-direction ::ng-deep .content .mat-mdc-radio-group{justify-content:space-evenly;width:100%}\n"], dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$3.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i2$3.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: FilterContainerComponent, selector: "nrcl-filter-container", inputs: ["label", "hint"] }, { kind: "component", type: FilterSelectComponent, selector: "nrcl-filter-select", inputs: ["label", "placeholder", "hint", "options", "value", "selectMax", "tooltips", "summary", "clear"], outputs: ["valueChange"] }] }); }
|
|
1088
|
+
}
|
|
1089
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowListSortingComponent, decorators: [{
|
|
1090
|
+
type: Component,
|
|
1091
|
+
args: [{ selector: "nrcl-row-list-sorting", template: "<nrcl-filter-select class=\"sort-order\" \n label=\"Sort By\"\n [value]=\"wrapFilterValue( sortColumn )\"\n [options]=\"sortColumnOptions\"\n (valueChange)=\"onSortColumnChange( unwrapFilterValue( $event ) )\"\n selectMax=\"1\" \n></nrcl-filter-select>\n\n<nrcl-filter-container class=\"sort-direction\" \n label=\"Sort Order\"\n>\n <mat-radio-group\n [(ngModel)]=\"sortDirection\" \n (ngModelChange)=\"onSortDirectionChange()\"\n [disabled]=\"!sortColumn\"\n >\n <mat-radio-button aria-label=\"Sort A to Z\" value=\"asc\">A → Z</mat-radio-button>\n <mat-radio-button aria-label=\"Sort Z to A\" value=\"desc\">Z → A</mat-radio-button>\n </mat-radio-group>\n</nrcl-filter-container>\n", styles: [":host{gap:8px;width:100%;display:grid;grid-template-columns:1fr 1fr}:host .sort-order{--nrcl-filter-select-width: auto;grid-column:1}:host .sort-direction{--nrcl-filter-container-width: auto;grid-column:2}:host .sort-direction ::ng-deep .content .mat-mdc-radio-group{justify-content:space-evenly;width:100%}\n"] }]
|
|
1092
|
+
}], propDecorators: { sortColumn: [{
|
|
1093
|
+
type: Input
|
|
1094
|
+
}], sortColumnOptions: [{
|
|
1095
|
+
type: Input
|
|
1096
|
+
}], sortDirection: [{
|
|
1097
|
+
type: Input
|
|
1098
|
+
}], sortChange: [{
|
|
1099
|
+
type: Output
|
|
1100
|
+
}] } });
|
|
1101
|
+
|
|
1102
|
+
class SnackbarComponent {
|
|
1103
|
+
constructor(snackBarRef, config) {
|
|
1104
|
+
this.snackBarRef = snackBarRef;
|
|
1105
|
+
this.config = config;
|
|
1106
|
+
}
|
|
1107
|
+
get className() {
|
|
1108
|
+
return 'snackbar-type-' + this.config.type;
|
|
1109
|
+
}
|
|
1110
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SnackbarComponent, deps: [{ token: i1$3.MatSnackBarRef }, { token: MAT_SNACK_BAR_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1111
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SnackbarComponent, selector: "nrcl-snackbar", host: { properties: { "class": "className" } }, ngImport: i0, template: "<div class=\"icon\">\n @switch ( config.type ) {\n @case ( 'success' ) {\n <mat-icon>check_circle</mat-icon>\n }\n @case ( 'error' ) {\n <mat-icon>cancel</mat-icon>\n }\n @case ( 'info' ) {\n <mat-icon>info</mat-icon>\n }\n @case ( 'update' ) {\n <mat-icon>error</mat-icon>\n }\n }\n</div>\n\n<div class=\"message\">\n <span>{{ config.message }}</span>\n</div>\n\n<div class=\"button\">\n <button (click)=\"snackBarRef.dismissWithAction()\">Close</button>\n</div>\n", styles: ["::ng-deep :root{--nrcl-snackbar-success-background-color: #2E7940;--nrcl-snackbar-error-background-color: #D8292F;--nrcl-snackbar-info-background-color: #37474f;--nrcl-snackbar-update-background-color: #37474f;--nrcl-snackbar-update-button-color: #f9ca81}:host{display:flex;align-items:stretch;height:100%;color:#fff;font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size);word-break:break-word;background-color:var(--snackbar-background-color)}:host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host.snackbar-type-success{--snackbar-background-color: var(--nrcl-snackbar-success-background-color )}:host.snackbar-type-error{--snackbar-background-color: var(--nrcl-snackbar-error-background-color )}:host.snackbar-type-info{--snackbar-background-color: var( --nrcl-snackbar-info-background-color )}:host.snackbar-type-update{--snackbar-background-color: var( --nrcl-snackbar-update-background-color );--snackbar-button-color: var( --nrcl-snackbar-update-button-color )}:host .icon{display:flex;background-color:#f2f2f2;align-items:center;justify-content:center;pointer-events:none}:host .icon mat-icon{padding:var(--nrcl-gutter-space);color:var(--snackbar-background-color)}:host .message{padding:var(--nrcl-gutter-space);flex:1;cursor:default;pointer-events:none}:host .button{padding-right:8px;display:flex;align-items:center;justify-content:center}:host .button button{padding:calc(var(--nrcl-gutter-space) / 2);border:1px white solid;border-radius:5px;color:#fff;cursor:pointer;font-family:var(--nrcl-font-family);background-color:var(--snackbar-button-color, --snackbar-background-color)}::ng-deep .mat-mdc-snack-bar-container{color:#fff;font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size);word-break:break-word}::ng-deep .mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{padding-right:0}::ng-deep .mat-mdc-snack-bar-container .mat-mdc-snackbar-surface .mat-mdc-snack-bar-label{padding:0}\n"], dependencies: [{ kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
1112
|
+
}
|
|
1113
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SnackbarComponent, decorators: [{
|
|
1114
|
+
type: Component,
|
|
1115
|
+
args: [{ selector: 'nrcl-snackbar', host: {
|
|
1116
|
+
'[class]': 'className'
|
|
1117
|
+
}, template: "<div class=\"icon\">\n @switch ( config.type ) {\n @case ( 'success' ) {\n <mat-icon>check_circle</mat-icon>\n }\n @case ( 'error' ) {\n <mat-icon>cancel</mat-icon>\n }\n @case ( 'info' ) {\n <mat-icon>info</mat-icon>\n }\n @case ( 'update' ) {\n <mat-icon>error</mat-icon>\n }\n }\n</div>\n\n<div class=\"message\">\n <span>{{ config.message }}</span>\n</div>\n\n<div class=\"button\">\n <button (click)=\"snackBarRef.dismissWithAction()\">Close</button>\n</div>\n", styles: ["::ng-deep :root{--nrcl-snackbar-success-background-color: #2E7940;--nrcl-snackbar-error-background-color: #D8292F;--nrcl-snackbar-info-background-color: #37474f;--nrcl-snackbar-update-background-color: #37474f;--nrcl-snackbar-update-button-color: #f9ca81}:host{display:flex;align-items:stretch;height:100%;color:#fff;font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size);word-break:break-word;background-color:var(--snackbar-background-color)}:host ::ng-deep .material-icons{font-family:Material Symbols Outlined;font-feature-settings:\"liga\"}:host ::ng-deep .mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host ::ng-deep button.mat-mdc-fab>.mat-icon,:host ::ng-deep button.mat-mdc-raised-button>.mat-icon,:host ::ng-deep button.mat-mdc-button>.mat-icon,:host ::ng-deep button.mat-mdc-icon-button>.mat-icon,:host ::ng-deep button.mat-mdc-outlined-button>.mat-icon,:host ::ng-deep button.mat-mdc-unelevated-button>.mat-icon,:host ::ng-deep button.mat-mdc-mini-fab .mat-mdc-menu-item>.mat-icon{width:var(--nrcl-icon-size);height:var(--nrcl-icon-size);font-size:var(--nrcl-icon-size);line-height:var(--nrcl-icon-size)}:host.snackbar-type-success{--snackbar-background-color: var(--nrcl-snackbar-success-background-color )}:host.snackbar-type-error{--snackbar-background-color: var(--nrcl-snackbar-error-background-color )}:host.snackbar-type-info{--snackbar-background-color: var( --nrcl-snackbar-info-background-color )}:host.snackbar-type-update{--snackbar-background-color: var( --nrcl-snackbar-update-background-color );--snackbar-button-color: var( --nrcl-snackbar-update-button-color )}:host .icon{display:flex;background-color:#f2f2f2;align-items:center;justify-content:center;pointer-events:none}:host .icon mat-icon{padding:var(--nrcl-gutter-space);color:var(--snackbar-background-color)}:host .message{padding:var(--nrcl-gutter-space);flex:1;cursor:default;pointer-events:none}:host .button{padding-right:8px;display:flex;align-items:center;justify-content:center}:host .button button{padding:calc(var(--nrcl-gutter-space) / 2);border:1px white solid;border-radius:5px;color:#fff;cursor:pointer;font-family:var(--nrcl-font-family);background-color:var(--snackbar-button-color, --snackbar-background-color)}::ng-deep .mat-mdc-snack-bar-container{color:#fff;font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size);word-break:break-word}::ng-deep .mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{padding-right:0}::ng-deep .mat-mdc-snack-bar-container .mat-mdc-snackbar-surface .mat-mdc-snack-bar-label{padding:0}\n"] }]
|
|
1118
|
+
}], ctorParameters: () => [{ type: i1$3.MatSnackBarRef }, { type: undefined, decorators: [{
|
|
1119
|
+
type: Inject,
|
|
1120
|
+
args: [MAT_SNACK_BAR_DATA]
|
|
1121
|
+
}] }] });
|
|
1122
|
+
|
|
1123
|
+
class PageStateService {
|
|
1124
|
+
constructor() {
|
|
1125
|
+
this.classRegistry = new WeakMap();
|
|
1126
|
+
}
|
|
1127
|
+
getPageState(classConstructor, defaultState, label) {
|
|
1128
|
+
if (this.classRegistry.has(classConstructor)) {
|
|
1129
|
+
let sc = this.classRegistry.get(classConstructor);
|
|
1130
|
+
return sc.state;
|
|
1131
|
+
}
|
|
1132
|
+
this.setPageState(classConstructor, defaultState, label);
|
|
1133
|
+
return defaultState;
|
|
1134
|
+
}
|
|
1135
|
+
setPageState(classConstructor, state, label) {
|
|
1136
|
+
let sc = { label, state };
|
|
1137
|
+
this.classRegistry.set(classConstructor, sc);
|
|
1138
|
+
}
|
|
1139
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1140
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageStateService, providedIn: "root" }); }
|
|
1141
|
+
}
|
|
1142
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageStateService, decorators: [{
|
|
1143
|
+
type: Injectable,
|
|
1144
|
+
args: [{
|
|
1145
|
+
providedIn: "root"
|
|
1146
|
+
}]
|
|
1147
|
+
}], ctorParameters: () => [] });
|
|
1148
|
+
|
|
1149
|
+
class Aborted {
|
|
1150
|
+
constructor(reason) {
|
|
1151
|
+
this.reason = reason;
|
|
1152
|
+
}
|
|
1153
|
+
}
|
|
1154
|
+
class ObservableAborter {
|
|
1155
|
+
constructor(observable, delay = 500) {
|
|
1156
|
+
this.observable = observable;
|
|
1157
|
+
this.delay = delay;
|
|
1158
|
+
this._promise = new Promise((res, rej) => {
|
|
1159
|
+
let timer = setTimeout(() => {
|
|
1160
|
+
let sub = this.observable().subscribe({
|
|
1161
|
+
next: res,
|
|
1162
|
+
error: rej
|
|
1163
|
+
});
|
|
1164
|
+
this._abort = () => {
|
|
1165
|
+
sub.unsubscribe();
|
|
1166
|
+
rej(new Aborted('aborted request'));
|
|
1167
|
+
this._abort = null;
|
|
1168
|
+
};
|
|
1169
|
+
}, this.delay);
|
|
1170
|
+
this._abort = () => {
|
|
1171
|
+
clearTimeout(timer);
|
|
1172
|
+
rej(new Aborted('aborted timer'));
|
|
1173
|
+
this._abort = null;
|
|
1174
|
+
};
|
|
1175
|
+
});
|
|
1176
|
+
}
|
|
1177
|
+
abort() {
|
|
1178
|
+
if (this._aborted)
|
|
1179
|
+
return;
|
|
1180
|
+
this._aborted = true;
|
|
1181
|
+
if (!this._abort)
|
|
1182
|
+
return;
|
|
1183
|
+
this._abort();
|
|
1184
|
+
}
|
|
1185
|
+
get aborted() {
|
|
1186
|
+
return this._aborted;
|
|
1187
|
+
}
|
|
1188
|
+
get promise() {
|
|
1189
|
+
return this._promise;
|
|
1190
|
+
}
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
class RowListBase {
|
|
1194
|
+
get isLoading() { return this._isLoading; }
|
|
1195
|
+
set isLoading(v) {
|
|
1196
|
+
if (v == this._isLoading)
|
|
1197
|
+
return;
|
|
1198
|
+
this._isLoading = v;
|
|
1199
|
+
this.isLoadingChange.emit(v);
|
|
1200
|
+
}
|
|
1201
|
+
constructor() {
|
|
1202
|
+
this.isLoadingChange = new EventEmitter();
|
|
1203
|
+
this._isLoading = false;
|
|
1204
|
+
this.rows = [];
|
|
1205
|
+
this.pageStateService = inject(PageStateService);
|
|
1206
|
+
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
1207
|
+
this.initializeRowList();
|
|
1208
|
+
}
|
|
1209
|
+
initializeRowList() {
|
|
1210
|
+
this.loadPageState();
|
|
1211
|
+
}
|
|
1212
|
+
ngAfterViewInit() {
|
|
1213
|
+
this.refreshRowList();
|
|
1214
|
+
}
|
|
1215
|
+
refreshRowList() {
|
|
1216
|
+
this.isLoading = true;
|
|
1217
|
+
return Promise.resolve()
|
|
1218
|
+
.then(() => {
|
|
1219
|
+
return this.loadRowList();
|
|
1220
|
+
})
|
|
1221
|
+
.then(({ rows, totalRowCount }) => {
|
|
1222
|
+
this.rows = rows;
|
|
1223
|
+
this.totalRowCount = totalRowCount;
|
|
1224
|
+
this.isLoading = false;
|
|
1225
|
+
})
|
|
1226
|
+
.catch((e) => {
|
|
1227
|
+
if (e instanceof Aborted)
|
|
1228
|
+
return;
|
|
1229
|
+
this.loadRowListPageFailed(e);
|
|
1230
|
+
this.isLoading = false;
|
|
1231
|
+
})
|
|
1232
|
+
.finally(() => {
|
|
1233
|
+
this.updateSummaryMobile();
|
|
1234
|
+
this.changeDetectorRef.detectChanges();
|
|
1235
|
+
});
|
|
1236
|
+
}
|
|
1237
|
+
loadRowList() {
|
|
1238
|
+
if (this._loadRowListRequest)
|
|
1239
|
+
this._loadRowListRequest.abort();
|
|
1240
|
+
this._loadRowListRequest = new ObservableAborter(() => {
|
|
1241
|
+
return this.fetchRowListPage();
|
|
1242
|
+
});
|
|
1243
|
+
return this._loadRowListRequest.promise
|
|
1244
|
+
.then(res => {
|
|
1245
|
+
return this.displayRowListPage(res);
|
|
1246
|
+
});
|
|
1247
|
+
}
|
|
1248
|
+
fetchRowListPage() {
|
|
1249
|
+
throw 'unimplemented';
|
|
1250
|
+
}
|
|
1251
|
+
displayRowListPage(res) {
|
|
1252
|
+
throw 'unimplemented';
|
|
1253
|
+
}
|
|
1254
|
+
loadRowListPageFailed(error) {
|
|
1255
|
+
console.warn(error);
|
|
1256
|
+
this.rows = [];
|
|
1257
|
+
this.totalRowCount = 0;
|
|
1258
|
+
}
|
|
1259
|
+
onFilterChange(ev) {
|
|
1260
|
+
this.filter = ev;
|
|
1261
|
+
this.pageNumber = 1;
|
|
1262
|
+
this.refreshRowList()
|
|
1263
|
+
.then(() => {
|
|
1264
|
+
this.savePageState();
|
|
1265
|
+
this.updateSummaryMobile();
|
|
1266
|
+
});
|
|
1267
|
+
}
|
|
1268
|
+
onSortChange(ev) {
|
|
1269
|
+
this.sortActive = ev.active;
|
|
1270
|
+
this.sortDirection = ev.direction;
|
|
1271
|
+
this.pageNumber = 1;
|
|
1272
|
+
this.refreshRowList()
|
|
1273
|
+
.then(() => {
|
|
1274
|
+
this.savePageState();
|
|
1275
|
+
this.updateSummaryMobile();
|
|
1276
|
+
});
|
|
1277
|
+
}
|
|
1278
|
+
onPageNumberChange(ev) {
|
|
1279
|
+
this.pageNumber = ev;
|
|
1280
|
+
this.refreshRowList()
|
|
1281
|
+
.then(() => {
|
|
1282
|
+
this.savePageState();
|
|
1283
|
+
this.updateSummaryMobile();
|
|
1284
|
+
});
|
|
1285
|
+
}
|
|
1286
|
+
onPageSizeChange(ev) {
|
|
1287
|
+
this.pageSize = ev;
|
|
1288
|
+
this.pageNumber = 1;
|
|
1289
|
+
this.refreshRowList()
|
|
1290
|
+
.then(() => {
|
|
1291
|
+
this.savePageState();
|
|
1292
|
+
this.updateSummaryMobile();
|
|
1293
|
+
});
|
|
1294
|
+
}
|
|
1295
|
+
updateSummaryMobile() {
|
|
1296
|
+
[this.summaryMobile, this.showPagingMobile] = makeSummary(this.totalRowCount, this.pageNumber, this.pageSize);
|
|
1297
|
+
}
|
|
1298
|
+
get initialPageState() {
|
|
1299
|
+
throw 'unimplemented';
|
|
1300
|
+
}
|
|
1301
|
+
loadPageState() {
|
|
1302
|
+
let state = this.pageStateService.getPageState(this.constructor, this.initialPageState);
|
|
1303
|
+
this.filter = state.filter;
|
|
1304
|
+
this.pageSize = state.pageSize;
|
|
1305
|
+
this.pageNumber = state.pageNumber;
|
|
1306
|
+
this.sortActive = state.sortActive;
|
|
1307
|
+
this.sortDirection = state.sortDirection;
|
|
1308
|
+
}
|
|
1309
|
+
savePageState() {
|
|
1310
|
+
let state = JSON.parse(JSON.stringify({
|
|
1311
|
+
filter: this.filter,
|
|
1312
|
+
pageSize: this.pageSize,
|
|
1313
|
+
pageNumber: this.pageNumber,
|
|
1314
|
+
sortActive: this.sortActive,
|
|
1315
|
+
sortDirection: this.sortDirection,
|
|
1316
|
+
}));
|
|
1317
|
+
this.pageStateService.setPageState(this.constructor, state);
|
|
1318
|
+
}
|
|
1319
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowListBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1320
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: RowListBase, outputs: { isLoadingChange: "isLoadingChange" }, ngImport: i0 }); }
|
|
1321
|
+
}
|
|
1322
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowListBase, decorators: [{
|
|
1323
|
+
type: Directive
|
|
1324
|
+
}], ctorParameters: () => [], propDecorators: { isLoadingChange: [{
|
|
1325
|
+
type: Output
|
|
1326
|
+
}] } });
|
|
1327
|
+
function makeSummary(rowCount, pageNumber, pageSize) {
|
|
1328
|
+
if (rowCount && pageSize) {
|
|
1329
|
+
let pageCount = Math.ceil(rowCount / pageSize);
|
|
1330
|
+
let first = (Math.min(pageCount, pageNumber) - 1) * pageSize + 1;
|
|
1331
|
+
let last = Math.min(first + pageSize - 1, rowCount);
|
|
1332
|
+
return [`Showing ${first} to ${last} of ${rowCount}`, true];
|
|
1333
|
+
}
|
|
1334
|
+
else {
|
|
1335
|
+
return ["No records to display.", false];
|
|
1336
|
+
}
|
|
1337
|
+
}
|
|
1338
|
+
|
|
1339
|
+
class SnackbarUtilService {
|
|
1340
|
+
constructor() {
|
|
1341
|
+
this.snackbar = inject(MatSnackBar);
|
|
1342
|
+
}
|
|
1343
|
+
successful(message, duration = 5000) {
|
|
1344
|
+
this.snackbar.openFromComponent(SnackbarComponent, {
|
|
1345
|
+
duration: duration,
|
|
1346
|
+
data: {
|
|
1347
|
+
type: 'success',
|
|
1348
|
+
message: message
|
|
1349
|
+
}
|
|
1350
|
+
});
|
|
1351
|
+
}
|
|
1352
|
+
successfullySaved(message, duration = 5000) {
|
|
1353
|
+
this.successful(`${message} saved successfully.`, duration);
|
|
1354
|
+
}
|
|
1355
|
+
successfullyDeleted(message, duration = 5000) {
|
|
1356
|
+
this.successful(`${message} deleted successfully.`, duration);
|
|
1357
|
+
}
|
|
1358
|
+
successfullyRemoved(message, duration = 5000) {
|
|
1359
|
+
this.successful(`${message} removed successfully.`, duration);
|
|
1360
|
+
}
|
|
1361
|
+
successfullyCreated(message, duration = 5000) {
|
|
1362
|
+
this.successful(`${message} created successfully.`, duration);
|
|
1363
|
+
}
|
|
1364
|
+
successfullyAdded(message, duration = 5000) {
|
|
1365
|
+
this.successful(`${message} added successfully.`, duration);
|
|
1366
|
+
}
|
|
1367
|
+
information(message, duration = null) {
|
|
1368
|
+
this.snackbar.openFromComponent(SnackbarComponent, {
|
|
1369
|
+
duration: duration,
|
|
1370
|
+
data: {
|
|
1371
|
+
type: 'info',
|
|
1372
|
+
message: message
|
|
1373
|
+
}
|
|
1374
|
+
});
|
|
1375
|
+
}
|
|
1376
|
+
error(message, duration = null) {
|
|
1377
|
+
this.snackbar.openFromComponent(SnackbarComponent, {
|
|
1378
|
+
duration: duration,
|
|
1379
|
+
data: {
|
|
1380
|
+
type: 'error',
|
|
1381
|
+
message: message
|
|
1382
|
+
}
|
|
1383
|
+
});
|
|
1384
|
+
}
|
|
1385
|
+
updated(message, duration = null) {
|
|
1386
|
+
this.snackbar.openFromComponent(SnackbarComponent, {
|
|
1387
|
+
duration: duration,
|
|
1388
|
+
data: {
|
|
1389
|
+
type: 'update',
|
|
1390
|
+
message: message
|
|
1391
|
+
}
|
|
1392
|
+
});
|
|
1393
|
+
}
|
|
1394
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SnackbarUtilService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1395
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SnackbarUtilService, providedIn: 'root' }); }
|
|
1396
|
+
}
|
|
1397
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SnackbarUtilService, decorators: [{
|
|
1398
|
+
type: Injectable,
|
|
1399
|
+
args: [{
|
|
1400
|
+
providedIn: 'root'
|
|
1401
|
+
}]
|
|
1402
|
+
}] });
|
|
1403
|
+
|
|
1404
|
+
class CodeTable {
|
|
1405
|
+
constructor(
|
|
1406
|
+
// private _items: ( CodeDescription | CodeData | Option )[],
|
|
1407
|
+
_items, _reload) {
|
|
1408
|
+
this._items = _items;
|
|
1409
|
+
this._reload = _reload;
|
|
1410
|
+
}
|
|
1411
|
+
get items() {
|
|
1412
|
+
return this._items;
|
|
1413
|
+
}
|
|
1414
|
+
forCode(code) {
|
|
1415
|
+
return this._items.find(o => o.code == code);
|
|
1416
|
+
}
|
|
1417
|
+
reload() {
|
|
1418
|
+
if (!this._reload)
|
|
1419
|
+
return Promise.reject('no reload defined');
|
|
1420
|
+
return this._reload()
|
|
1421
|
+
.then(res => {
|
|
1422
|
+
this._items = res;
|
|
1423
|
+
});
|
|
1424
|
+
}
|
|
1425
|
+
}
|
|
1426
|
+
|
|
1427
|
+
class NrNgxComponentLibModule {
|
|
1428
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NrNgxComponentLibModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1429
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: NrNgxComponentLibModule, declarations: [ButtonComponent,
|
|
1430
|
+
CellContentComponent,
|
|
1431
|
+
DesktopViewComponent,
|
|
1432
|
+
ExpansionPanelComponent,
|
|
1433
|
+
ExpansionPanelHeaderComponent,
|
|
1434
|
+
ExpansionPanelFooterComponent,
|
|
1435
|
+
FilterContainerComponent,
|
|
1436
|
+
FilterDateComponent,
|
|
1437
|
+
FilterSearchComponent,
|
|
1438
|
+
FilterSelectComponent,
|
|
1439
|
+
FiltersPanelComponent,
|
|
1440
|
+
FormFieldComponent,
|
|
1441
|
+
FormLayoutComponent,
|
|
1442
|
+
GapComponent,
|
|
1443
|
+
MobileViewComponent,
|
|
1444
|
+
PageContainerComponent,
|
|
1445
|
+
PageHeaderComponent,
|
|
1446
|
+
RowListDesktopComponent,
|
|
1447
|
+
RowListMobileComponent,
|
|
1448
|
+
RowListPaginationComponent,
|
|
1449
|
+
RowListSortingComponent,
|
|
1450
|
+
SnackbarComponent], imports: [BrowserAnimationsModule,
|
|
1451
|
+
CommonModule,
|
|
1452
|
+
FormsModule,
|
|
1453
|
+
MatButtonModule,
|
|
1454
|
+
MatCardModule,
|
|
1455
|
+
MatCheckboxModule,
|
|
1456
|
+
MatExpansionModule,
|
|
1457
|
+
MatRadioModule,
|
|
1458
|
+
MatFormFieldModule,
|
|
1459
|
+
MatIconModule,
|
|
1460
|
+
MatInputModule,
|
|
1461
|
+
MatListModule,
|
|
1462
|
+
MatMenuModule,
|
|
1463
|
+
MatProgressSpinnerModule,
|
|
1464
|
+
MatRippleModule,
|
|
1465
|
+
MatSortModule,
|
|
1466
|
+
MatTableModule,
|
|
1467
|
+
MatTooltipModule,
|
|
1468
|
+
ReactiveFormsModule,
|
|
1469
|
+
RouterModule,
|
|
1470
|
+
OwlDateTimeModule,
|
|
1471
|
+
OwlMomentDateTimeModule,
|
|
1472
|
+
NgxPaginationModule], exports: [ButtonComponent,
|
|
1473
|
+
CellContentComponent,
|
|
1474
|
+
DesktopViewComponent,
|
|
1475
|
+
ExpansionPanelComponent,
|
|
1476
|
+
ExpansionPanelHeaderComponent,
|
|
1477
|
+
ExpansionPanelFooterComponent,
|
|
1478
|
+
FilterContainerComponent,
|
|
1479
|
+
FilterDateComponent,
|
|
1480
|
+
FilterSearchComponent,
|
|
1481
|
+
FilterSelectComponent,
|
|
1482
|
+
FiltersPanelComponent,
|
|
1483
|
+
FormFieldComponent,
|
|
1484
|
+
FormLayoutComponent,
|
|
1485
|
+
GapComponent,
|
|
1486
|
+
MobileViewComponent,
|
|
1487
|
+
PageContainerComponent,
|
|
1488
|
+
PageHeaderComponent,
|
|
1489
|
+
RowListDesktopComponent,
|
|
1490
|
+
RowListMobileComponent,
|
|
1491
|
+
RowListPaginationComponent,
|
|
1492
|
+
RowListSortingComponent,
|
|
1493
|
+
SnackbarComponent] }); }
|
|
1494
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NrNgxComponentLibModule, providers: [
|
|
1495
|
+
SnackbarUtilService,
|
|
1496
|
+
ConfigurationService,
|
|
1497
|
+
PageStateService,
|
|
1498
|
+
{ provide: OWL_DATE_TIME_FORMATS, useValue: DATE_FORMATS },
|
|
1499
|
+
], imports: [BrowserAnimationsModule,
|
|
1500
|
+
CommonModule,
|
|
1501
|
+
FormsModule,
|
|
1502
|
+
MatButtonModule,
|
|
1503
|
+
MatCardModule,
|
|
1504
|
+
MatCheckboxModule,
|
|
1505
|
+
MatExpansionModule,
|
|
1506
|
+
MatRadioModule,
|
|
1507
|
+
MatFormFieldModule,
|
|
1508
|
+
MatIconModule,
|
|
1509
|
+
MatInputModule,
|
|
1510
|
+
MatListModule,
|
|
1511
|
+
MatMenuModule,
|
|
1512
|
+
MatProgressSpinnerModule,
|
|
1513
|
+
MatRippleModule,
|
|
1514
|
+
MatSortModule,
|
|
1515
|
+
MatTableModule,
|
|
1516
|
+
MatTooltipModule,
|
|
1517
|
+
ReactiveFormsModule,
|
|
1518
|
+
RouterModule,
|
|
1519
|
+
OwlDateTimeModule,
|
|
1520
|
+
OwlMomentDateTimeModule,
|
|
1521
|
+
NgxPaginationModule] }); }
|
|
1522
|
+
}
|
|
1523
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NrNgxComponentLibModule, decorators: [{
|
|
1524
|
+
type: NgModule,
|
|
1525
|
+
args: [{
|
|
1526
|
+
imports: [
|
|
1527
|
+
BrowserAnimationsModule,
|
|
1528
|
+
CommonModule,
|
|
1529
|
+
FormsModule,
|
|
1530
|
+
MatButtonModule,
|
|
1531
|
+
MatCardModule,
|
|
1532
|
+
MatCheckboxModule,
|
|
1533
|
+
MatExpansionModule,
|
|
1534
|
+
MatRadioModule,
|
|
1535
|
+
MatFormFieldModule,
|
|
1536
|
+
MatIconModule,
|
|
1537
|
+
MatInputModule,
|
|
1538
|
+
MatListModule,
|
|
1539
|
+
MatMenuModule,
|
|
1540
|
+
MatProgressSpinnerModule,
|
|
1541
|
+
MatRippleModule,
|
|
1542
|
+
MatSortModule,
|
|
1543
|
+
MatTableModule,
|
|
1544
|
+
MatTooltipModule,
|
|
1545
|
+
ReactiveFormsModule,
|
|
1546
|
+
RouterModule,
|
|
1547
|
+
OwlDateTimeModule,
|
|
1548
|
+
OwlMomentDateTimeModule,
|
|
1549
|
+
NgxPaginationModule,
|
|
1550
|
+
],
|
|
1551
|
+
declarations: [
|
|
1552
|
+
ButtonComponent,
|
|
1553
|
+
CellContentComponent,
|
|
1554
|
+
DesktopViewComponent,
|
|
1555
|
+
ExpansionPanelComponent,
|
|
1556
|
+
ExpansionPanelHeaderComponent,
|
|
1557
|
+
ExpansionPanelFooterComponent,
|
|
1558
|
+
FilterContainerComponent,
|
|
1559
|
+
FilterDateComponent,
|
|
1560
|
+
FilterSearchComponent,
|
|
1561
|
+
FilterSelectComponent,
|
|
1562
|
+
FiltersPanelComponent,
|
|
1563
|
+
FormFieldComponent,
|
|
1564
|
+
FormLayoutComponent,
|
|
1565
|
+
GapComponent,
|
|
1566
|
+
MobileViewComponent,
|
|
1567
|
+
PageContainerComponent,
|
|
1568
|
+
PageHeaderComponent,
|
|
1569
|
+
RowListDesktopComponent,
|
|
1570
|
+
RowListMobileComponent,
|
|
1571
|
+
RowListPaginationComponent,
|
|
1572
|
+
RowListSortingComponent,
|
|
1573
|
+
SnackbarComponent,
|
|
1574
|
+
],
|
|
1575
|
+
exports: [
|
|
1576
|
+
ButtonComponent,
|
|
1577
|
+
CellContentComponent,
|
|
1578
|
+
DesktopViewComponent,
|
|
1579
|
+
ExpansionPanelComponent,
|
|
1580
|
+
ExpansionPanelHeaderComponent,
|
|
1581
|
+
ExpansionPanelFooterComponent,
|
|
1582
|
+
FilterContainerComponent,
|
|
1583
|
+
FilterDateComponent,
|
|
1584
|
+
FilterSearchComponent,
|
|
1585
|
+
FilterSelectComponent,
|
|
1586
|
+
FiltersPanelComponent,
|
|
1587
|
+
FormFieldComponent,
|
|
1588
|
+
FormLayoutComponent,
|
|
1589
|
+
GapComponent,
|
|
1590
|
+
MobileViewComponent,
|
|
1591
|
+
PageContainerComponent,
|
|
1592
|
+
PageHeaderComponent,
|
|
1593
|
+
RowListDesktopComponent,
|
|
1594
|
+
RowListMobileComponent,
|
|
1595
|
+
RowListPaginationComponent,
|
|
1596
|
+
RowListSortingComponent,
|
|
1597
|
+
SnackbarComponent,
|
|
1598
|
+
],
|
|
1599
|
+
providers: [
|
|
1600
|
+
SnackbarUtilService,
|
|
1601
|
+
ConfigurationService,
|
|
1602
|
+
PageStateService,
|
|
1603
|
+
{ provide: OWL_DATE_TIME_FORMATS, useValue: DATE_FORMATS },
|
|
1604
|
+
]
|
|
1605
|
+
}]
|
|
1606
|
+
}] });
|
|
1607
|
+
|
|
1608
|
+
/*
|
|
1609
|
+
* Public API Surface of wfcc-application-ui
|
|
1610
|
+
*/
|
|
1611
|
+
|
|
1612
|
+
/**
|
|
1613
|
+
* Generated bundle index. Do not edit.
|
|
1614
|
+
*/
|
|
1615
|
+
|
|
1616
|
+
export { Aborted, ButtonComponent, CellContentComponent, CodeTable, ConfigurationService, ConfigurationSubscriberBase, DATE_FORMATS, DesktopViewComponent, ExpansionPanelComponent, ExpansionPanelFooterComponent, ExpansionPanelHeaderComponent, FilterContainerComponent, FilterDateComponent, FilterSearchComponent, FilterSelectComponent, FiltersPanelComponent, FormFieldComponent, FormLayoutComponent, GapComponent, MobileViewComponent, NrNgxComponentLibModule, ObservableAborter, PageContainerComponent, PageHeaderComponent, PageStateService, RowListBase, RowListDesktopComponent, RowListMobileComponent, RowListPaginationComponent, RowListSortingComponent, SnackbarComponent, SnackbarUtilService, makeSummary, mapToCodeDescription, unwrapFilterValue, wrapFilterValue };
|
|
1617
|
+
//# sourceMappingURL=bcgov-nr-ngx-component-lib.mjs.map
|