@theseam/ui-common 1.0.0-beta.0 → 1.0.0-beta.10
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/breadcrumbs/index.d.ts +1 -2
- package/buttons/index.d.ts +20 -13
- package/datatable/index.d.ts +77 -39
- package/dynamic/index.d.ts +5 -5
- package/fesm2022/theseam-ui-common-asset-reader.mjs +28 -29
- package/fesm2022/theseam-ui-common-asset-reader.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-breadcrumbs.mjs +25 -31
- package/fesm2022/theseam-ui-common-breadcrumbs.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-buttons.mjs +108 -66
- package/fesm2022/theseam-ui-common-buttons.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-card.mjs +21 -21
- package/fesm2022/theseam-ui-common-card.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-carousel.mjs +28 -30
- package/fesm2022/theseam-ui-common-carousel.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-checkbox.mjs +27 -27
- package/fesm2022/theseam-ui-common-checkbox.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-confirm-dialog.mjs +23 -27
- package/fesm2022/theseam-ui-common-confirm-dialog.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-core.mjs +31 -11
- package/fesm2022/theseam-ui-common-core.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-data-exporter.mjs +18 -19
- package/fesm2022/theseam-ui-common-data-exporter.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-data-filters.mjs +80 -64
- package/fesm2022/theseam-ui-common-data-filters.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs +51 -49
- package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-datatable-dynamic.mjs +145 -112
- package/fesm2022/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-datatable.mjs +727 -420
- package/fesm2022/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs +12 -14
- package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-dynamic.mjs +60 -48
- package/fesm2022/theseam-ui-common-dynamic.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-footer-bar.mjs +9 -15
- package/fesm2022/theseam-ui-common-footer-bar.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-form-field-error.mjs +60 -43
- package/fesm2022/theseam-ui-common-form-field-error.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-form-field.mjs +129 -76
- package/fesm2022/theseam-ui-common-form-field.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-framework.mjs +669 -543
- package/fesm2022/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-google-maps.mjs +206 -149
- package/fesm2022/theseam-ui-common-google-maps.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-graphql.mjs +311 -254
- package/fesm2022/theseam-ui-common-graphql.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-icon.mjs +125 -89
- package/fesm2022/theseam-ui-common-icon.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-layout.mjs +18 -26
- package/fesm2022/theseam-ui-common-layout.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-loading.mjs +19 -28
- package/fesm2022/theseam-ui-common-loading.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-menu.mjs +124 -95
- package/fesm2022/theseam-ui-common-menu.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-modal.mjs +178 -129
- package/fesm2022/theseam-ui-common-modal.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-models.mjs +3 -3
- package/fesm2022/theseam-ui-common-models.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-navigation-reload.mjs +13 -11
- package/fesm2022/theseam-ui-common-navigation-reload.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-popover.mjs +81 -88
- package/fesm2022/theseam-ui-common-popover.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-progress.mjs +15 -19
- package/fesm2022/theseam-ui-common-progress.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-rich-text.mjs +65 -52
- package/fesm2022/theseam-ui-common-rich-text.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-scrollbar.mjs +12 -9
- package/fesm2022/theseam-ui-common-scrollbar.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-services.mjs +41 -26
- package/fesm2022/theseam-ui-common-services.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-shared.mjs +149 -159
- package/fesm2022/theseam-ui-common-shared.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-storage.mjs +9 -6
- package/fesm2022/theseam-ui-common-storage.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-story-helpers.mjs +148 -86
- package/fesm2022/theseam-ui-common-story-helpers.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tabbed.mjs +43 -39
- package/fesm2022/theseam-ui-common-tabbed.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-table-cell-type.mjs +63 -39
- package/fesm2022/theseam-ui-common-table-cell-type.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-table-cell-types.mjs +182 -144
- package/fesm2022/theseam-ui-common-table-cell-types.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-table.mjs +62 -41
- package/fesm2022/theseam-ui-common-table.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tel-input.mjs +98 -63
- package/fesm2022/theseam-ui-common-tel-input.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-testing.mjs +13 -10
- package/fesm2022/theseam-ui-common-testing.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tiled-select.mjs +54 -50
- package/fesm2022/theseam-ui-common-tiled-select.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-toggle-edit.mjs +41 -37
- package/fesm2022/theseam-ui-common-toggle-edit.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-toggle-group.mjs +30 -31
- package/fesm2022/theseam-ui-common-toggle-group.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tooltip.mjs +225 -66
- package/fesm2022/theseam-ui-common-tooltip.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs +14 -12
- package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-utils.mjs +113 -77
- package/fesm2022/theseam-ui-common-utils.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-validators.mjs +10 -9
- package/fesm2022/theseam-ui-common-validators.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-vertical-list-filter.mjs +39 -17
- package/fesm2022/theseam-ui-common-vertical-list-filter.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-viewers.mjs +80 -53
- package/fesm2022/theseam-ui-common-viewers.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-widget.mjs +288 -314
- package/fesm2022/theseam-ui-common-widget.mjs.map +1 -1
- package/form-field/index.d.ts +1 -1
- package/framework/base-layout/base-layout.component.scss +9 -4
- package/framework/base-layout/styles/_variables.scss +4 -9
- package/framework/dashboard/dashboard-widgets/dashboard-widgets.component.scss +6 -4
- package/framework/index.d.ts +6 -6
- package/framework/nav/nav-item/nav-item.component.scss +7 -6
- package/framework/nav/styles/_themes/light/_variables.scss +21 -5
- package/framework/nav/styles/_themes/primary/_variables.scss +21 -5
- package/framework/side-nav/side-nav-item/side-nav-item.component.scss +5 -2
- package/framework/side-nav/styles/_themes/light/_variables.scss +5 -1
- package/framework/side-nav/styles/_themes/primary/_variables.scss +25 -5
- package/graphql/index.d.ts +49 -7
- package/modal/README.md +5 -5
- package/modal/index.d.ts +1 -1
- package/models/index.d.ts +1 -1
- package/package.json +59 -60
- package/popover/index.d.ts +0 -2
- package/progress/progress-circle/styles/_variables.scss +15 -3
- package/shared/index.d.ts +0 -13
- package/story-helpers/index.d.ts +11 -1
- package/styles/bootstrap/_bootstrap.scss +34 -34
- package/styles/bootstrap/_bs-styles.scss +4 -8
- package/styles/bootstrap/_bs-utilities.scss +4 -4
- package/styles/bootstrap/_bs-variables.scss +65 -70
- package/styles/common/_forms.scss +9 -10
- package/styles/common/_global.scss +0 -1
- package/styles/common/_hacks.scss +1 -1
- package/styles/common/_table.scss +0 -1
- package/styles/common/_text.scss +3 -1
- package/styles/theme.scss +1 -1
- package/styles/vendor/ng-select/_ng-select-bs4.scss +292 -294
- package/styles/vendor/ngx-datatable/_ngx-datatable.scss +63 -32
- package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +37 -10
- package/styles/vendor/ngx-datatable/_themes/material/_variables.scss +3 -1
- package/styles/vendor/quill/_quill.scss +15 -9
- package/table/index.d.ts +4 -1
- package/table-cell-type/index.d.ts +27 -2
- package/tel-input/README.md +27 -27
- package/utils/index.d.ts +3 -3
- package/viewers/index.d.ts +9 -2
- package/widget/_widget-theme.scss +1 -1
- package/widget/styles/_variables.scss +2 -2
- package/widget/widget/widget.component.scss +0 -2
- package/widget/widget-content-components/widget-tile/widget-tile.component.scss +1 -3
- package/widget/widget-footer/widget-footer.component.scss +0 -1
|
@@ -51,10 +51,10 @@ import { TheSeamTiledSelectModule } from '@theseam/ui-common/tiled-select';
|
|
|
51
51
|
|
|
52
52
|
class BaseLayoutContentFooterDirective {
|
|
53
53
|
_elementRef = inject(ElementRef);
|
|
54
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
55
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
54
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: BaseLayoutContentFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
55
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: BaseLayoutContentFooterDirective, isStandalone: true, selector: "[seamBaseLayoutContentFooter]", exportAs: ["seamBaseLayoutContentFooter"], ngImport: i0 });
|
|
56
56
|
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: BaseLayoutContentFooterDirective, decorators: [{
|
|
58
58
|
type: Directive,
|
|
59
59
|
args: [{
|
|
60
60
|
selector: '[seamBaseLayoutContentFooter]',
|
|
@@ -64,10 +64,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
64
64
|
|
|
65
65
|
class BaseLayoutContentHeaderDirective {
|
|
66
66
|
_elementRef = inject(ElementRef);
|
|
67
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
68
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
67
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: BaseLayoutContentHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
68
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: BaseLayoutContentHeaderDirective, isStandalone: true, selector: "[seamBaseLayoutContentHeader]", exportAs: ["seamBaseLayoutContentHeader"], ngImport: i0 });
|
|
69
69
|
}
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: BaseLayoutContentHeaderDirective, decorators: [{
|
|
71
71
|
type: Directive,
|
|
72
72
|
args: [{
|
|
73
73
|
selector: '[seamBaseLayoutContentHeader]',
|
|
@@ -77,10 +77,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
77
77
|
|
|
78
78
|
class BaseLayoutContentDirective {
|
|
79
79
|
_elementRef = inject(ElementRef);
|
|
80
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
81
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
80
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: BaseLayoutContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
81
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: BaseLayoutContentDirective, isStandalone: true, selector: "[seamBaseLayoutContent]", exportAs: ["seamBaseLayoutContent"], ngImport: i0 });
|
|
82
82
|
}
|
|
83
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: BaseLayoutContentDirective, decorators: [{
|
|
84
84
|
type: Directive,
|
|
85
85
|
args: [{
|
|
86
86
|
selector: '[seamBaseLayoutContent]',
|
|
@@ -97,9 +97,13 @@ class TheSeamBaseLayoutNavToggleDirective {
|
|
|
97
97
|
_cdr = inject(ChangeDetectorRef);
|
|
98
98
|
_baseLayout = inject(THESEAM_BASE_LAYOUT_REF, { optional: true });
|
|
99
99
|
baseLayout = this._baseLayout ?? undefined;
|
|
100
|
-
get _attrType() {
|
|
100
|
+
get _attrType() {
|
|
101
|
+
return this.type;
|
|
102
|
+
}
|
|
101
103
|
type = 'button';
|
|
102
|
-
get _attrAriaLabel() {
|
|
104
|
+
get _attrAriaLabel() {
|
|
105
|
+
return this.ariaLabel || null;
|
|
106
|
+
}
|
|
103
107
|
/** Screenreader label for the button. */
|
|
104
108
|
ariaLabel = 'Navigation toggle';
|
|
105
109
|
_toggleClass = true;
|
|
@@ -110,15 +114,17 @@ class TheSeamBaseLayoutNavToggleDirective {
|
|
|
110
114
|
}
|
|
111
115
|
}
|
|
112
116
|
ngOnInit() {
|
|
113
|
-
this.baseLayout?.registeredNav?.expanded
|
|
117
|
+
this.baseLayout?.registeredNav?.expanded$
|
|
118
|
+
.pipe(tap((exp) => {
|
|
114
119
|
this._expandedClass = exp;
|
|
115
120
|
this._cdr.markForCheck();
|
|
116
|
-
}))
|
|
121
|
+
}))
|
|
122
|
+
.subscribe();
|
|
117
123
|
}
|
|
118
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
119
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
124
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamBaseLayoutNavToggleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
125
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamBaseLayoutNavToggleDirective, isStandalone: true, selector: "button[seamBaseLayoutNavToggle]", inputs: { type: "type", ariaLabel: ["aria-label", "ariaLabel"] }, host: { listeners: { "click": "_onClick()" }, properties: { "attr.type": "this._attrType", "attr.aria-label": "this._attrAriaLabel", "class.base-layout-nav-toggle": "this._toggleClass", "class.base-layout-nav-toggle--expanded": "this._expandedClass" } }, exportAs: ["seamBaseLayoutNavToggle"], ngImport: i0 });
|
|
120
126
|
}
|
|
121
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
127
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamBaseLayoutNavToggleDirective, decorators: [{
|
|
122
128
|
type: Directive,
|
|
123
129
|
args: [{
|
|
124
130
|
selector: 'button[seamBaseLayoutNavToggle]',
|
|
@@ -148,10 +154,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
148
154
|
|
|
149
155
|
class BaseLayoutSideBarFooterDirective {
|
|
150
156
|
_elementRef = inject(ElementRef);
|
|
151
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
152
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
157
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: BaseLayoutSideBarFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
158
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: BaseLayoutSideBarFooterDirective, isStandalone: true, selector: "[seamBaseLayoutSideBarFooter]", exportAs: ["seamBaseLayoutSideBarFooter"], ngImport: i0 });
|
|
153
159
|
}
|
|
154
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
160
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: BaseLayoutSideBarFooterDirective, decorators: [{
|
|
155
161
|
type: Directive,
|
|
156
162
|
args: [{
|
|
157
163
|
selector: '[seamBaseLayoutSideBarFooter]',
|
|
@@ -161,10 +167,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
161
167
|
|
|
162
168
|
class BaseLayoutSideBarDirective {
|
|
163
169
|
_elementRef = inject(ElementRef);
|
|
164
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
165
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
170
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: BaseLayoutSideBarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
171
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: BaseLayoutSideBarDirective, isStandalone: true, selector: "[seamBaseLayoutSideBar]", exportAs: ["seamBaseLayoutSideBar"], ngImport: i0 });
|
|
166
172
|
}
|
|
167
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
173
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: BaseLayoutSideBarDirective, decorators: [{
|
|
168
174
|
type: Directive,
|
|
169
175
|
args: [{
|
|
170
176
|
selector: '[seamBaseLayoutSideBar]',
|
|
@@ -174,10 +180,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
174
180
|
|
|
175
181
|
class BaseLayoutTopBarDirective {
|
|
176
182
|
_elementRef = inject(ElementRef);
|
|
177
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
178
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
183
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: BaseLayoutTopBarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
184
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: BaseLayoutTopBarDirective, isStandalone: true, selector: "[seamBaseLayoutTopBar]", exportAs: ["seamBaseLayoutTopBar"], ngImport: i0 });
|
|
179
185
|
}
|
|
180
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
186
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: BaseLayoutTopBarDirective, decorators: [{
|
|
181
187
|
type: Directive,
|
|
182
188
|
args: [{
|
|
183
189
|
selector: '[seamBaseLayoutTopBar]',
|
|
@@ -187,10 +193,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
187
193
|
|
|
188
194
|
class BaseLayoutSideBarHeaderDirective {
|
|
189
195
|
_elementRef = inject(ElementRef);
|
|
190
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
191
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
196
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: BaseLayoutSideBarHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
197
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: BaseLayoutSideBarHeaderDirective, isStandalone: true, selector: "[seamBaseLayoutSideBarHeader]", exportAs: ["seamBaseLayoutSideBarHeader"], ngImport: i0 });
|
|
192
198
|
}
|
|
193
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
199
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: BaseLayoutSideBarHeaderDirective, decorators: [{
|
|
194
200
|
type: Directive,
|
|
195
201
|
args: [{
|
|
196
202
|
selector: '[seamBaseLayoutSideBarHeader]',
|
|
@@ -227,10 +233,14 @@ class TheSeamBaseLayoutComponent {
|
|
|
227
233
|
_hasSideBar = new BehaviorSubject(false);
|
|
228
234
|
hasSideBar$;
|
|
229
235
|
isMobile$;
|
|
230
|
-
get registeredNav() {
|
|
236
|
+
get registeredNav() {
|
|
237
|
+
return this._registeredNav.value;
|
|
238
|
+
}
|
|
231
239
|
_registeredNav = new BehaviorSubject(undefined);
|
|
232
240
|
registeredNav$ = this._registeredNav.asObservable();
|
|
233
|
-
get registeredActions() {
|
|
241
|
+
get registeredActions() {
|
|
242
|
+
return this._registeredActions.value;
|
|
243
|
+
}
|
|
234
244
|
_registeredActions = new BehaviorSubject([]);
|
|
235
245
|
registeredActions$;
|
|
236
246
|
constructor() {
|
|
@@ -276,7 +286,7 @@ class TheSeamBaseLayoutComponent {
|
|
|
276
286
|
}
|
|
277
287
|
registerAction(action) {
|
|
278
288
|
const actions = this._registeredActions.value;
|
|
279
|
-
if (actions.findIndex(a => a.name === action.name) !== -1) {
|
|
289
|
+
if (actions.findIndex((a) => a.name === action.name) !== -1) {
|
|
280
290
|
if (isDevMode()) {
|
|
281
291
|
// eslint-disable-next-line no-console
|
|
282
292
|
console.warn(`[TheSeamBaseLayoutComponent] registerAction(): Action ${action.name} not ` +
|
|
@@ -289,11 +299,11 @@ class TheSeamBaseLayoutComponent {
|
|
|
289
299
|
unregisterAction(action) {
|
|
290
300
|
const actionName = typeof action === 'string' ? action : action.name;
|
|
291
301
|
const actions = this._registeredActions.value;
|
|
292
|
-
this._registeredActions.next(actions.filter(f => f.name !== actionName));
|
|
302
|
+
this._registeredActions.next(actions.filter((f) => f.name !== actionName));
|
|
293
303
|
}
|
|
294
304
|
isActionRegistered(actionName) {
|
|
295
305
|
const actions = this._registeredActions.value;
|
|
296
|
-
const action = actions.find(f => f.name === actionName);
|
|
306
|
+
const action = actions.find((f) => f.name === actionName);
|
|
297
307
|
return !!action;
|
|
298
308
|
}
|
|
299
309
|
_handleButtonAction(action) {
|
|
@@ -303,10 +313,10 @@ class TheSeamBaseLayoutComponent {
|
|
|
303
313
|
const fnRes = action.exec();
|
|
304
314
|
return isObservable(fnRes) ? fnRes : from(Promise.resolve(fnRes));
|
|
305
315
|
}
|
|
306
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
307
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
316
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamBaseLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
317
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamBaseLayoutComponent, isStandalone: true, selector: "seam-base-layout", inputs: { overlayNav: "overlayNav", mobileBreakpoint: "mobileBreakpoint", showSidebar: "showSidebar" }, providers: [THE_SEAM_BASE_LAYOUT], queries: [{ propertyName: "_topBarTpl", first: true, predicate: BaseLayoutTopBarDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_sideBarTpl", first: true, predicate: BaseLayoutSideBarDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_contentTpl", first: true, predicate: BaseLayoutContentDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_contentHeaderTpl", first: true, predicate: BaseLayoutContentHeaderDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_contentFooterTpl", first: true, predicate: BaseLayoutContentFooterDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"base-layout-side-bar-nav-content-mobile\" *ngIf=\"isMobile$ | async\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n</div>\n\n<div class=\"base-layout-top-bar-container\">\n <ng-template [cdkPortalOutlet]=\"_topBarPortal\"></ng-template>\n</div>\n<div class=\"base-layout-main-container\">\n <div *ngIf=\"hasSideBar$ | async\" class=\"base-layout-side-bar-container\">\n <div class=\"base-layout-side-bar-nav-content\" *ngIf=\"!(isMobile$ | async)\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n </div>\n </div>\n <div class=\"base-layout-content-container\">\n <div class=\"base-layout-content-container-header d-flex flex-row\">\n <div class=\"base-layout-content-container-header-left flex-grow-1\">\n <ng-template [cdkPortalOutlet]=\"_contentHeaderPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-header-right d-flex\">\n <ng-container\n *ngFor=\"let action of registeredActions$ | async; first as isFirst\"\n >\n <div class=\"base-layout-registered-action\">\n <ng-container\n [ngTemplateOutlet]=\"$any(action)?.template\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"base-layout-content-container-inner\" seamOverlayScrollbar>\n <ng-template [cdkPortalOutlet]=\"_contentPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-footer\">\n <ng-template [cdkPortalOutlet]=\"_contentFooterPortal\"></ng-template>\n </div>\n </div>\n</div>\n", styles: ["seam-base-layout{display:flex;flex-direction:column;height:100%;width:100%}seam-base-layout .base-layout-side-bar-nav-content-mobile{position:absolute;top:0;bottom:0;left:0;z-index:999}seam-base-layout .base-layout-side-bar-container{flex:0 0 auto;display:flex;flex-direction:column;border-top:none;border-right:1px solid #dee2e6;border-bottom:none;border-left:none}seam-base-layout .base-layout-side-bar-container .base-layout-side-bar-nav-content{flex:1 1 0}seam-base-layout .base-layout-main-container{flex:1 1 100%;display:flex;flex-direction:row;transform:translateZ(0)}seam-base-layout .base-layout-top-bar-container{flex:0 0 auto;border-top:none;border-right:none;border-bottom:1px solid #dee2e6;border-left:none}seam-base-layout .base-layout-content-container{flex:1 1 auto;display:flex;flex-direction:column}seam-base-layout .base-layout-content-container .base-layout-content-container-header{flex:0 0 auto;background:none;margin:.25rem;padding:0;border-radius:0;overflow:hidden}seam-base-layout .base-layout-content-container .base-layout-content-container-header-left{background:none;padding:0rem;margin:0;border-radius:0}seam-base-layout .base-layout-content-container .base-layout-content-container-header-right{background:none;padding:0rem;margin:0;border-radius:0}seam-base-layout .base-layout-content-container .base-layout-content-container-inner{flex:1 1 auto}seam-base-layout .base-layout-content-container .base-layout-content-container-footer{flex:0 0 auto}seam-base-layout .btn-baselayout-action{margin:0 0 0 .25rem;color:#212529;background-color:#e9ecef;border-color:#e9ecef;padding:.5rem 1rem;font-size:1rem;line-height:1.5;border-radius:.25rem;border:none;color:#6c757d}seam-base-layout .btn-baselayout-action:hover{color:#212529;background-color:#d3d9df;border-color:#cbd3da}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#212529;background-color:#d3d9df;border-color:#cbd3da;box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action.disabled,seam-base-layout .btn-baselayout-action:disabled{color:#212529;background-color:#e9ecef;border-color:#e9ecef}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle{color:#212529;background-color:#d3d9df;border-color:#c4ccd4}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active:focus,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active:focus,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action:hover{color:#6c757d}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#6c757d}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: TheSeamOverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
308
318
|
}
|
|
309
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
319
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamBaseLayoutComponent, decorators: [{
|
|
310
320
|
type: Component,
|
|
311
321
|
args: [{ selector: 'seam-base-layout', providers: [THE_SEAM_BASE_LAYOUT], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
312
322
|
NgIf,
|
|
@@ -315,7 +325,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
315
325
|
AsyncPipe,
|
|
316
326
|
PortalModule,
|
|
317
327
|
TheSeamOverlayScrollbarDirective,
|
|
318
|
-
], template: "<div class=\"base-layout-side-bar-nav-content-mobile\" *ngIf=\"isMobile$ | async\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n</div>\n\n<div class=\"base-layout-top-bar-container\">\n <ng-template [cdkPortalOutlet]=\"_topBarPortal\"></ng-template>\n</div>\n<div class=\"base-layout-main-container\">\n <div *ngIf=\"hasSideBar$ | async\"
|
|
328
|
+
], template: "<div class=\"base-layout-side-bar-nav-content-mobile\" *ngIf=\"isMobile$ | async\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n</div>\n\n<div class=\"base-layout-top-bar-container\">\n <ng-template [cdkPortalOutlet]=\"_topBarPortal\"></ng-template>\n</div>\n<div class=\"base-layout-main-container\">\n <div *ngIf=\"hasSideBar$ | async\" class=\"base-layout-side-bar-container\">\n <div class=\"base-layout-side-bar-nav-content\" *ngIf=\"!(isMobile$ | async)\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n </div>\n </div>\n <div class=\"base-layout-content-container\">\n <div class=\"base-layout-content-container-header d-flex flex-row\">\n <div class=\"base-layout-content-container-header-left flex-grow-1\">\n <ng-template [cdkPortalOutlet]=\"_contentHeaderPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-header-right d-flex\">\n <ng-container\n *ngFor=\"let action of registeredActions$ | async; first as isFirst\"\n >\n <div class=\"base-layout-registered-action\">\n <ng-container\n [ngTemplateOutlet]=\"$any(action)?.template\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"base-layout-content-container-inner\" seamOverlayScrollbar>\n <ng-template [cdkPortalOutlet]=\"_contentPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-footer\">\n <ng-template [cdkPortalOutlet]=\"_contentFooterPortal\"></ng-template>\n </div>\n </div>\n</div>\n", styles: ["seam-base-layout{display:flex;flex-direction:column;height:100%;width:100%}seam-base-layout .base-layout-side-bar-nav-content-mobile{position:absolute;top:0;bottom:0;left:0;z-index:999}seam-base-layout .base-layout-side-bar-container{flex:0 0 auto;display:flex;flex-direction:column;border-top:none;border-right:1px solid #dee2e6;border-bottom:none;border-left:none}seam-base-layout .base-layout-side-bar-container .base-layout-side-bar-nav-content{flex:1 1 0}seam-base-layout .base-layout-main-container{flex:1 1 100%;display:flex;flex-direction:row;transform:translateZ(0)}seam-base-layout .base-layout-top-bar-container{flex:0 0 auto;border-top:none;border-right:none;border-bottom:1px solid #dee2e6;border-left:none}seam-base-layout .base-layout-content-container{flex:1 1 auto;display:flex;flex-direction:column}seam-base-layout .base-layout-content-container .base-layout-content-container-header{flex:0 0 auto;background:none;margin:.25rem;padding:0;border-radius:0;overflow:hidden}seam-base-layout .base-layout-content-container .base-layout-content-container-header-left{background:none;padding:0rem;margin:0;border-radius:0}seam-base-layout .base-layout-content-container .base-layout-content-container-header-right{background:none;padding:0rem;margin:0;border-radius:0}seam-base-layout .base-layout-content-container .base-layout-content-container-inner{flex:1 1 auto}seam-base-layout .base-layout-content-container .base-layout-content-container-footer{flex:0 0 auto}seam-base-layout .btn-baselayout-action{margin:0 0 0 .25rem;color:#212529;background-color:#e9ecef;border-color:#e9ecef;padding:.5rem 1rem;font-size:1rem;line-height:1.5;border-radius:.25rem;border:none;color:#6c757d}seam-base-layout .btn-baselayout-action:hover{color:#212529;background-color:#d3d9df;border-color:#cbd3da}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#212529;background-color:#d3d9df;border-color:#cbd3da;box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action.disabled,seam-base-layout .btn-baselayout-action:disabled{color:#212529;background-color:#e9ecef;border-color:#e9ecef}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle{color:#212529;background-color:#d3d9df;border-color:#c4ccd4}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active:focus,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active:focus,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action:hover{color:#6c757d}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#6c757d}\n"] }]
|
|
319
329
|
}], ctorParameters: () => [], propDecorators: { overlayNav: [{
|
|
320
330
|
type: Input
|
|
321
331
|
}], mobileBreakpoint: [{
|
|
@@ -333,15 +343,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
333
343
|
args: [BaseLayoutContentDirective, { static: true, read: TemplateRef }]
|
|
334
344
|
}], _contentHeaderTpl: [{
|
|
335
345
|
type: ContentChild,
|
|
336
|
-
args: [BaseLayoutContentHeaderDirective, {
|
|
346
|
+
args: [BaseLayoutContentHeaderDirective, {
|
|
347
|
+
static: true,
|
|
348
|
+
read: TemplateRef,
|
|
349
|
+
}]
|
|
337
350
|
}], _contentFooterTpl: [{
|
|
338
351
|
type: ContentChild,
|
|
339
|
-
args: [BaseLayoutContentFooterDirective, {
|
|
352
|
+
args: [BaseLayoutContentFooterDirective, {
|
|
353
|
+
static: true,
|
|
354
|
+
read: TemplateRef,
|
|
355
|
+
}]
|
|
340
356
|
}] } });
|
|
341
357
|
|
|
342
358
|
class TheSeamBaseLayoutModule {
|
|
343
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
344
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
359
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamBaseLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
360
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.7", ngImport: i0, type: TheSeamBaseLayoutModule, imports: [TheSeamBaseLayoutComponent,
|
|
345
361
|
BaseLayoutContentDirective,
|
|
346
362
|
BaseLayoutSideBarDirective,
|
|
347
363
|
BaseLayoutSideBarFooterDirective,
|
|
@@ -358,9 +374,9 @@ class TheSeamBaseLayoutModule {
|
|
|
358
374
|
TheSeamBaseLayoutNavToggleDirective,
|
|
359
375
|
BaseLayoutContentHeaderDirective,
|
|
360
376
|
BaseLayoutContentFooterDirective] });
|
|
361
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
377
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamBaseLayoutModule, imports: [TheSeamBaseLayoutComponent] });
|
|
362
378
|
}
|
|
363
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
379
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamBaseLayoutModule, decorators: [{
|
|
364
380
|
type: NgModule,
|
|
365
381
|
args: [{
|
|
366
382
|
imports: [
|
|
@@ -391,10 +407,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
391
407
|
class DashboardWidgetContainerComponent {
|
|
392
408
|
def;
|
|
393
409
|
templateRef;
|
|
394
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
395
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
410
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DashboardWidgetContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
411
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DashboardWidgetContainerComponent, isStandalone: true, selector: "seam-dashboard-widget-container", inputs: { def: "def" }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<ng-template><ng-content></ng-content></ng-template>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
396
412
|
}
|
|
397
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
413
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DashboardWidgetContainerComponent, decorators: [{
|
|
398
414
|
type: Component,
|
|
399
415
|
args: [{ selector: 'seam-dashboard-widget-container', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template><ng-content></ng-content></ng-template>\n" }]
|
|
400
416
|
}], propDecorators: { def: [{
|
|
@@ -411,17 +427,14 @@ class DashboardWidgetTemplateContainerComponent {
|
|
|
411
427
|
item;
|
|
412
428
|
template$;
|
|
413
429
|
constructor() {
|
|
414
|
-
this.template$ = this._dashboardWidgetsComponent.containers$.pipe(map(containers => containers.find((c) => c.def.widgetId === this.item?.widgetId)), map(container => container && container.templateRef));
|
|
430
|
+
this.template$ = this._dashboardWidgetsComponent.containers$.pipe(map((containers) => containers.find((c) => c.def.widgetId === this.item?.widgetId)), map((container) => container && container.templateRef));
|
|
415
431
|
}
|
|
416
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
417
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
432
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DashboardWidgetTemplateContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
433
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DashboardWidgetTemplateContainerComponent, isStandalone: true, selector: "seam-dashboard-widget-template-container", inputs: { item: "item" }, ngImport: i0, template: "<ng-template [ngTemplateOutlet]=\"$any(template$ | async)\"></ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
418
434
|
}
|
|
419
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
435
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DashboardWidgetTemplateContainerComponent, decorators: [{
|
|
420
436
|
type: Component,
|
|
421
|
-
args: [{ selector: 'seam-dashboard-widget-template-container', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
422
|
-
NgTemplateOutlet,
|
|
423
|
-
AsyncPipe,
|
|
424
|
-
], template: "<ng-template [ngTemplateOutlet]=\"$any(template$ | async)\"></ng-template>\n" }]
|
|
437
|
+
args: [{ selector: 'seam-dashboard-widget-template-container', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgTemplateOutlet, AsyncPipe], template: "<ng-template [ngTemplateOutlet]=\"$any(template$ | async)\"></ng-template>\n" }]
|
|
425
438
|
}], ctorParameters: () => [], propDecorators: { item: [{
|
|
426
439
|
type: Input
|
|
427
440
|
}] } });
|
|
@@ -526,10 +539,10 @@ class DashboardWidgetPortalOutletDirective extends BasePortalOutlet {
|
|
|
526
539
|
this.attached.emit(viewRef);
|
|
527
540
|
return viewRef;
|
|
528
541
|
}
|
|
529
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
530
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
542
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DashboardWidgetPortalOutletDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
543
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: DashboardWidgetPortalOutletDirective, isStandalone: true, selector: "[seamDashboardWidgetPortalOutlet]", inputs: { portal: ["seamDashboardWidgetPortalOutlet", "portal"] }, outputs: { attached: "attached" }, exportAs: ["seamDashboardWidgetPortalOutlet"], usesInheritance: true, ngImport: i0 });
|
|
531
544
|
}
|
|
532
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
545
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DashboardWidgetPortalOutletDirective, decorators: [{
|
|
533
546
|
type: Directive,
|
|
534
547
|
args: [{
|
|
535
548
|
selector: '[seamDashboardWidgetPortalOutlet]',
|
|
@@ -567,7 +580,7 @@ class DashboardWidgetsPreferencesService {
|
|
|
567
580
|
const refreshSubject = new Subject();
|
|
568
581
|
prefs = {
|
|
569
582
|
observable: this._createObservable(refreshSubject, preferenceKey),
|
|
570
|
-
refresh: refreshSubject
|
|
583
|
+
refresh: refreshSubject,
|
|
571
584
|
};
|
|
572
585
|
this._tablePrefsMap.set(preferenceKey, prefs);
|
|
573
586
|
}
|
|
@@ -580,7 +593,7 @@ class DashboardWidgetsPreferencesService {
|
|
|
580
593
|
const accessor = (key) => this._prefsAccessor ? this._prefsAccessor.get(key) : of('{}');
|
|
581
594
|
return refreshSubject.pipe(startWith({}),
|
|
582
595
|
// tap(() => console.log('Start requesting: ', prefKey)),
|
|
583
|
-
switchMap(() => accessor(prefKey).pipe(map(v => {
|
|
596
|
+
switchMap(() => accessor(prefKey).pipe(map((v) => {
|
|
584
597
|
if (!v) {
|
|
585
598
|
return null;
|
|
586
599
|
}
|
|
@@ -595,7 +608,7 @@ class DashboardWidgetsPreferencesService {
|
|
|
595
608
|
}
|
|
596
609
|
return null;
|
|
597
610
|
}
|
|
598
|
-
}), map(v => v || {}))), shareReplay({ bufferSize: 1, refCount: true }));
|
|
611
|
+
}), map((v) => v || {}))), shareReplay({ bufferSize: 1, refCount: true }));
|
|
599
612
|
}
|
|
600
613
|
refresh(preferenceKey) {
|
|
601
614
|
const prefs = this._tablePrefsMap.get(preferenceKey);
|
|
@@ -604,12 +617,14 @@ class DashboardWidgetsPreferencesService {
|
|
|
604
617
|
// prefs.refresh.next()
|
|
605
618
|
return prefs.observable.pipe(
|
|
606
619
|
// tap(() => prefs.refresh.next()),
|
|
607
|
-
tap(() => setTimeout(() => {
|
|
620
|
+
tap(() => setTimeout(() => {
|
|
621
|
+
prefs.refresh.next();
|
|
622
|
+
}, 0)), mapTo(undefined), take(1));
|
|
608
623
|
}
|
|
609
624
|
return of(undefined);
|
|
610
625
|
}
|
|
611
626
|
selectLayout(preferenceKey, layoutName) {
|
|
612
|
-
return this.preferences(preferenceKey).pipe(map(prefs => (prefs.layouts || []).find(l => l.name === layoutName)));
|
|
627
|
+
return this.preferences(preferenceKey).pipe(map((prefs) => (prefs.layouts || []).find((l) => l.name === layoutName)));
|
|
613
628
|
}
|
|
614
629
|
// TODO: Improve this updating to not be more generic, so we can quickly add
|
|
615
630
|
// edits for different preference schema's.
|
|
@@ -627,7 +642,7 @@ class DashboardWidgetsPreferencesService {
|
|
|
627
642
|
}
|
|
628
643
|
const _layout = this.toSerializeableLayout(layout);
|
|
629
644
|
// this._pending = true
|
|
630
|
-
return this.preferences(preferenceKey).pipe(map(prefs => {
|
|
645
|
+
return this.preferences(preferenceKey).pipe(map((prefs) => {
|
|
631
646
|
// Making the preferences immutable may not be necessary, but for now
|
|
632
647
|
// this obj->str->obj will work as a naive clone.
|
|
633
648
|
const layouts = JSON.parse(JSON.stringify(prefs.layouts || []));
|
|
@@ -651,7 +666,7 @@ class DashboardWidgetsPreferencesService {
|
|
|
651
666
|
return newPrefs;
|
|
652
667
|
}),
|
|
653
668
|
// tap(v => console.log('newPrefs', v)),
|
|
654
|
-
take(1), switchMap(newPrefs => this._prefsAccessor
|
|
669
|
+
take(1), switchMap((newPrefs) => this._prefsAccessor
|
|
655
670
|
? this._prefsAccessor.update(preferenceKey, JSON.stringify(newPrefs))
|
|
656
671
|
: of(newPrefs)), switchMap(() => this.refresh(preferenceKey).pipe(mapTo(undefined))));
|
|
657
672
|
// .subscribe()
|
|
@@ -696,10 +711,10 @@ class DashboardWidgetsPreferencesService {
|
|
|
696
711
|
}
|
|
697
712
|
return serialized;
|
|
698
713
|
}
|
|
699
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
700
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
714
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DashboardWidgetsPreferencesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
715
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DashboardWidgetsPreferencesService, providedIn: 'root' });
|
|
701
716
|
}
|
|
702
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
717
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DashboardWidgetsPreferencesService, decorators: [{
|
|
703
718
|
type: Injectable,
|
|
704
719
|
args: [{ providedIn: 'root' }]
|
|
705
720
|
}] });
|
|
@@ -711,10 +726,16 @@ class DashboardWidgetsService {
|
|
|
711
726
|
defaultNumColumns = 3;
|
|
712
727
|
/** Used for operations, such as 'addWidget', if the column is not specified. */
|
|
713
728
|
defaultColumn = 0;
|
|
714
|
-
get widgets() {
|
|
715
|
-
|
|
729
|
+
get widgets() {
|
|
730
|
+
return this._widgets.value;
|
|
731
|
+
}
|
|
732
|
+
set widgets(value) {
|
|
733
|
+
this._widgets.next(value);
|
|
734
|
+
}
|
|
716
735
|
_widgets = new BehaviorSubject([]);
|
|
717
|
-
get numColumns() {
|
|
736
|
+
get numColumns() {
|
|
737
|
+
return this._numColumns.value;
|
|
738
|
+
}
|
|
718
739
|
set numColumns(value) {
|
|
719
740
|
if (value !== this._numColumns.value) {
|
|
720
741
|
this._numColumns.next(value);
|
|
@@ -728,15 +749,20 @@ class DashboardWidgetsService {
|
|
|
728
749
|
constructor() {
|
|
729
750
|
this.numColumns$ = this._numColumns.asObservable();
|
|
730
751
|
// Widget items without preferences
|
|
731
|
-
const _widgetItems$ = combineLatest([
|
|
752
|
+
const _widgetItems$ = combineLatest([
|
|
753
|
+
this._widgets,
|
|
754
|
+
this._viewContainerRefSubject,
|
|
755
|
+
]).pipe(switchMap(([defs, vcr]) => this.createWidgetItems(defs, vcr)));
|
|
732
756
|
// Widget items with preferences
|
|
733
757
|
this.widgetItems$ = combineLatest([_widgetItems$, this.numColumns$]).pipe(
|
|
734
758
|
// Wait until the current tick is done, incase both the widgets and
|
|
735
759
|
// number of columns are set durring the same tick. Without the audit,
|
|
736
760
|
// this would get called twice when the component is initialized with
|
|
737
761
|
// both inputs set one after the other individually.
|
|
738
|
-
auditTime(0), switchMap(([items, numColumns]) => this._preferences
|
|
739
|
-
|
|
762
|
+
auditTime(0), switchMap(([items, numColumns]) => this._preferences
|
|
763
|
+
.selectLayout(this.preferenceKey, this._layoutName(numColumns))
|
|
764
|
+
.pipe(map((layout) => layout ? this.withLayoutPreferences(items, layout) : items))), shareReplay({ bufferSize: 1, refCount: true }));
|
|
765
|
+
this.widgetColumns$ = this.widgetItems$.pipe(map((items) => this.toColumnRecords(items)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
740
766
|
}
|
|
741
767
|
_layoutName(numColumns) {
|
|
742
768
|
return `columns-${numColumns}`;
|
|
@@ -745,12 +771,12 @@ class DashboardWidgetsService {
|
|
|
745
771
|
this._viewContainerRefSubject.next(vcr);
|
|
746
772
|
}
|
|
747
773
|
createWidgetItems(defs, vcr) {
|
|
748
|
-
const _createObservables = (defs || []).map(d => this.createWidgetItem(d, vcr));
|
|
774
|
+
const _createObservables = (defs || []).map((d) => this.createWidgetItem(d, vcr));
|
|
749
775
|
const items$ = _createObservables.length > 0 ? combineLatest(_createObservables) : of([]);
|
|
750
|
-
return items$.pipe(map(items => items.filter(notNullOrUndefined)), tap(items => {
|
|
776
|
+
return items$.pipe(map((items) => items.filter(notNullOrUndefined)), tap((items) => {
|
|
751
777
|
if (isDevMode()) {
|
|
752
|
-
const ids = items.map(v => v.widgetId);
|
|
753
|
-
if (
|
|
778
|
+
const ids = items.map((v) => v.widgetId);
|
|
779
|
+
if (new Set(ids).size !== ids.length) {
|
|
754
780
|
// eslint-disable-next-line no-console
|
|
755
781
|
console.warn(`[DashboardWidgetsService] Duplicate widget's with the same 'widgetId' found.`);
|
|
756
782
|
}
|
|
@@ -758,25 +784,30 @@ class DashboardWidgetsService {
|
|
|
758
784
|
}));
|
|
759
785
|
}
|
|
760
786
|
createWidgetItem(def, vcr) {
|
|
761
|
-
if (!def.widgetId ||
|
|
787
|
+
if (!def.widgetId ||
|
|
788
|
+
typeof def.widgetId !== 'string' ||
|
|
789
|
+
def.widgetId.length < 1) {
|
|
762
790
|
if (isDevMode()) {
|
|
763
791
|
// eslint-disable-next-line no-console
|
|
764
792
|
console.warn(`[DashboardWidgetsService] Widget ignored. All widgets must have a 'widgetId'.`, def);
|
|
765
793
|
}
|
|
766
794
|
return of(undefined);
|
|
767
795
|
}
|
|
768
|
-
return this.createWidgetPortal(def, vcr).pipe(map(portal => ({
|
|
796
|
+
return this.createWidgetPortal(def, vcr).pipe(map((portal) => ({
|
|
769
797
|
...def,
|
|
770
798
|
col: def.col || this.defaultColumn,
|
|
771
799
|
order: def.order || 0,
|
|
772
800
|
portal,
|
|
773
|
-
__itemDef: def
|
|
801
|
+
__itemDef: def,
|
|
774
802
|
})));
|
|
775
803
|
}
|
|
776
804
|
createWidgetPortal(def, vcr) {
|
|
777
|
-
const injector = Injector.create({
|
|
805
|
+
const injector = Injector.create({
|
|
806
|
+
providers: [
|
|
778
807
|
{ provide: THESEAM_WIDGET_DATA, useValue: { widgetId: def.widgetId } },
|
|
779
|
-
],
|
|
808
|
+
],
|
|
809
|
+
parent: this._viewContainerRefSubject.value?.injector,
|
|
810
|
+
});
|
|
780
811
|
// TODO: I still use the ViewContainerRef injector, but I don't pass it to
|
|
781
812
|
// the portal, because it throws an error and I am not sure why. I would
|
|
782
813
|
// like to find out why, even though I don't think it is needed, because our
|
|
@@ -784,16 +815,17 @@ class DashboardWidgetsService {
|
|
|
784
815
|
// being used.
|
|
785
816
|
if (typeof def.component === 'string') {
|
|
786
817
|
return this._dynamicComponentLoaderModule
|
|
787
|
-
.getComponentFactory(def.component)
|
|
818
|
+
.getComponentFactory(def.component)
|
|
819
|
+
.pipe(map((componentFactory) => {
|
|
788
820
|
return new ComponentPortal(componentFactory.componentType, undefined, injector);
|
|
789
821
|
}), take(1));
|
|
790
822
|
}
|
|
791
823
|
return of(new ComponentPortal(def.component, undefined, injector));
|
|
792
824
|
}
|
|
793
825
|
updateOrder() {
|
|
794
|
-
return this.widgetColumns$.pipe(take(1), tap(columns => columns.forEach(col => {
|
|
826
|
+
return this.widgetColumns$.pipe(take(1), tap((columns) => columns.forEach((col) => {
|
|
795
827
|
let i = 0;
|
|
796
|
-
col.items.forEach(itm => itm.order = i++);
|
|
828
|
+
col.items.forEach((itm) => (itm.order = i++));
|
|
797
829
|
})), mapTo(undefined));
|
|
798
830
|
}
|
|
799
831
|
toColumnRecords(items) {
|
|
@@ -804,7 +836,7 @@ class DashboardWidgetsService {
|
|
|
804
836
|
const colNotFound = [];
|
|
805
837
|
// Distribute items into columns
|
|
806
838
|
for (const item of items) {
|
|
807
|
-
const col = columns.find(c => c.column === item.col);
|
|
839
|
+
const col = columns.find((c) => c.column === item.col);
|
|
808
840
|
if (!col) {
|
|
809
841
|
// columns.push({ column: item.col, items: [ item ] })
|
|
810
842
|
// if (item.col < 0) {
|
|
@@ -826,8 +858,7 @@ class DashboardWidgetsService {
|
|
|
826
858
|
}
|
|
827
859
|
for (let i = 0; i < colNotFound.length; i++) {
|
|
828
860
|
const item = colNotFound[i];
|
|
829
|
-
const col = columns
|
|
830
|
-
.find(c => c.column === i % this.numColumns);
|
|
861
|
+
const col = columns.find((c) => c.column === i % this.numColumns);
|
|
831
862
|
if (col) {
|
|
832
863
|
col.items.push(item);
|
|
833
864
|
}
|
|
@@ -835,13 +866,13 @@ class DashboardWidgetsService {
|
|
|
835
866
|
// Sort columns
|
|
836
867
|
columns = columns.sort((a, b) => a.column - b.column);
|
|
837
868
|
// Sort columns items
|
|
838
|
-
columns.forEach(col => col.items.sort((a, b) => a.order - b.order));
|
|
869
|
+
columns.forEach((col) => col.items.sort((a, b) => a.order - b.order));
|
|
839
870
|
return columns;
|
|
840
871
|
}
|
|
841
872
|
withLayoutPreferences(items, layout) {
|
|
842
873
|
const _items = [];
|
|
843
874
|
for (const item of items) {
|
|
844
|
-
const itemPref = layout.items.find(x => x.widgetId === item.widgetId);
|
|
875
|
+
const itemPref = layout.items.find((x) => x.widgetId === item.widgetId);
|
|
845
876
|
_items.push({
|
|
846
877
|
...item,
|
|
847
878
|
...(itemPref || {}),
|
|
@@ -853,19 +884,18 @@ class DashboardWidgetsService {
|
|
|
853
884
|
// Right now the items are moved between the column record arrays, but the
|
|
854
885
|
// 'col' prop is not updated, so it is mapped to corrected items here from
|
|
855
886
|
// the column records.
|
|
856
|
-
const items$ = this.widgetColumns$.pipe(map(columns => []
|
|
857
|
-
.concat(...(columns.map(c => c.items.map(itm => ({ ...itm, col: c.column })))))));
|
|
887
|
+
const items$ = this.widgetColumns$.pipe(map((columns) => [].concat(...columns.map((c) => c.items.map((itm) => ({ ...itm, col: c.column }))))));
|
|
858
888
|
return combineLatest([items$, this.numColumns$]).pipe(auditTime(0), take(1), switchMap(([items, numColumns]) => {
|
|
859
889
|
return this._preferences.updateLayout(this.preferenceKey, {
|
|
860
890
|
name: this._layoutName(numColumns),
|
|
861
|
-
items
|
|
891
|
+
items,
|
|
862
892
|
});
|
|
863
893
|
}), mapTo(undefined));
|
|
864
894
|
}
|
|
865
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
866
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
895
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DashboardWidgetsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
896
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DashboardWidgetsService, providedIn: 'root' });
|
|
867
897
|
}
|
|
868
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
898
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DashboardWidgetsService, decorators: [{
|
|
869
899
|
type: Injectable,
|
|
870
900
|
args: [{ providedIn: 'root' }]
|
|
871
901
|
}], ctorParameters: () => [] });
|
|
@@ -884,23 +914,33 @@ class DashboardWidgetsComponent {
|
|
|
884
914
|
faUnlock = faUnlock;
|
|
885
915
|
_actionWidgetDragToggleName = 'widget-drag-toggle';
|
|
886
916
|
_ngUnsubscribe = new Subject();
|
|
887
|
-
get gapSize() {
|
|
917
|
+
get gapSize() {
|
|
918
|
+
return this._gapSize.value;
|
|
919
|
+
}
|
|
888
920
|
set gapSize(val) {
|
|
889
921
|
this._gapSize.next(coerceNumberProperty(val));
|
|
890
922
|
}
|
|
891
923
|
_gapSize = new BehaviorSubject(30);
|
|
892
924
|
widgetsDraggable = false;
|
|
893
|
-
get dragToggleVisible() {
|
|
925
|
+
get dragToggleVisible() {
|
|
926
|
+
return this._dragToggleVisible.value;
|
|
927
|
+
}
|
|
894
928
|
set dragToggleVisible(val) {
|
|
895
929
|
this._dragToggleVisible.next(coerceBooleanProperty(val));
|
|
896
930
|
}
|
|
897
931
|
_dragToggleVisible = new BehaviorSubject(true);
|
|
898
|
-
get numColumns() {
|
|
932
|
+
get numColumns() {
|
|
933
|
+
return this._dashboardWidgets.numColumns;
|
|
934
|
+
}
|
|
899
935
|
set numColumns(val) {
|
|
900
936
|
this._dashboardWidgets.numColumns = coerceNumberProperty(val);
|
|
901
937
|
}
|
|
902
|
-
set widgets(value) {
|
|
903
|
-
|
|
938
|
+
set widgets(value) {
|
|
939
|
+
this._dashboardWidgets.widgets = value || [];
|
|
940
|
+
}
|
|
941
|
+
get widgets() {
|
|
942
|
+
return this._dashboardWidgets.widgets;
|
|
943
|
+
}
|
|
904
944
|
widgetItems$;
|
|
905
945
|
widgetColumns$;
|
|
906
946
|
containers$;
|
|
@@ -915,8 +955,9 @@ class DashboardWidgetsComponent {
|
|
|
915
955
|
constructor() {
|
|
916
956
|
this._dashboardWidgets.setViewContainerRef(this._viewContainerRef);
|
|
917
957
|
this.containers$ = this._containers.asObservable();
|
|
918
|
-
this._gapStyleSize$ = this._gapSize.pipe(auditTime(0), map(size => size / 2), shareReplay({ bufferSize: 1, refCount: true }));
|
|
919
|
-
this._widthChange
|
|
958
|
+
this._gapStyleSize$ = this._gapSize.pipe(auditTime(0), map((size) => size / 2), shareReplay({ bufferSize: 1, refCount: true }));
|
|
959
|
+
this._widthChange
|
|
960
|
+
.pipe(debounceTime(30), tap((width) => {
|
|
920
961
|
if (width > 1300) {
|
|
921
962
|
this.numColumns = 3;
|
|
922
963
|
}
|
|
@@ -926,16 +967,19 @@ class DashboardWidgetsComponent {
|
|
|
926
967
|
else {
|
|
927
968
|
this.numColumns = 1;
|
|
928
969
|
}
|
|
929
|
-
}), takeUntil(this._ngUnsubscribe))
|
|
970
|
+
}), takeUntil(this._ngUnsubscribe))
|
|
971
|
+
.subscribe();
|
|
930
972
|
this.widgetItems$ = this._dashboardWidgets.widgetItems$;
|
|
931
973
|
this.widgetColumns$ = this._dashboardWidgets.widgetColumns$;
|
|
932
974
|
}
|
|
933
975
|
ngOnInit() {
|
|
934
976
|
// this._dashboardWidgets.setViewContainerRef(this._viewContainerRef)
|
|
935
|
-
this._layoutChange
|
|
977
|
+
this._layoutChange
|
|
978
|
+
.pipe(switchMap(() => this.widgetItems$.pipe(take(1), tap((widgetItems) => this.widgetsChange.emit(widgetItems)),
|
|
936
979
|
// map(widgetItems => this._dashboardWidgets.toSerializeableItems(widgetItems)),
|
|
937
980
|
// tap(v => console.log('serializable', v)),
|
|
938
|
-
switchMap(() => this._dashboardWidgets.savePreferences()))), takeUntil(this._ngUnsubscribe))
|
|
981
|
+
switchMap(() => this._dashboardWidgets.savePreferences()))), takeUntil(this._ngUnsubscribe))
|
|
982
|
+
.subscribe();
|
|
939
983
|
}
|
|
940
984
|
ngOnDestroy() {
|
|
941
985
|
this._unregisterToggleAction();
|
|
@@ -944,7 +988,8 @@ class DashboardWidgetsComponent {
|
|
|
944
988
|
}
|
|
945
989
|
ngAfterViewInit() {
|
|
946
990
|
if (this._baseLayoutRef) {
|
|
947
|
-
this._dragToggleVisible
|
|
991
|
+
this._dragToggleVisible
|
|
992
|
+
.pipe(distinctUntilChanged(), tap((visible) => {
|
|
948
993
|
const isRegistered = this._isActionToggleActionRegistered();
|
|
949
994
|
if (visible && !isRegistered) {
|
|
950
995
|
this._registerToggleAction();
|
|
@@ -952,9 +997,12 @@ class DashboardWidgetsComponent {
|
|
|
952
997
|
else if (!visible && isRegistered) {
|
|
953
998
|
this._unregisterToggleAction();
|
|
954
999
|
}
|
|
955
|
-
}), takeUntil(this._ngUnsubscribe))
|
|
1000
|
+
}), takeUntil(this._ngUnsubscribe))
|
|
1001
|
+
.subscribe();
|
|
956
1002
|
}
|
|
957
|
-
this.containers?.changes
|
|
1003
|
+
this.containers?.changes
|
|
1004
|
+
.pipe(startWith(undefined), map(() => this.containers?.toArray() || []), takeUntil(this._ngUnsubscribe), finalize(() => this._containers.next([])))
|
|
1005
|
+
.subscribe((v) => this._containers.next(v));
|
|
958
1006
|
}
|
|
959
1007
|
_registerToggleAction() {
|
|
960
1008
|
if (this._baseLayoutRef) {
|
|
@@ -988,11 +1036,15 @@ class DashboardWidgetsComponent {
|
|
|
988
1036
|
drop(event) {
|
|
989
1037
|
if (event.previousContainer === event.container) {
|
|
990
1038
|
moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
|
|
991
|
-
this._dashboardWidgets
|
|
1039
|
+
this._dashboardWidgets
|
|
1040
|
+
.updateOrder()
|
|
1041
|
+
.subscribe(() => this._layoutChange.next());
|
|
992
1042
|
}
|
|
993
1043
|
else {
|
|
994
1044
|
transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);
|
|
995
|
-
this._dashboardWidgets
|
|
1045
|
+
this._dashboardWidgets
|
|
1046
|
+
.updateOrder()
|
|
1047
|
+
.subscribe(() => this._layoutChange.next());
|
|
996
1048
|
}
|
|
997
1049
|
}
|
|
998
1050
|
_containerTrackByFn(index, item) {
|
|
@@ -1008,8 +1060,8 @@ class DashboardWidgetsComponent {
|
|
|
1008
1060
|
_resized(event) {
|
|
1009
1061
|
this._widthChange.next(event.size.width);
|
|
1010
1062
|
}
|
|
1011
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1012
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
1063
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DashboardWidgetsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1064
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DashboardWidgetsComponent, isStandalone: true, selector: "seam-dashboard-widgets", inputs: { gapSize: "gapSize", widgetsDraggable: "widgetsDraggable", dragToggleVisible: "dragToggleVisible", numColumns: "numColumns", widgets: "widgets" }, outputs: { widgetsChange: "widgetsChange" }, providers: [
|
|
1013
1065
|
{
|
|
1014
1066
|
provide: THESEAM_WIDGET_ACCESSOR,
|
|
1015
1067
|
useExisting: forwardRef(() => DashboardWidgetsComponent),
|
|
@@ -1018,12 +1070,12 @@ class DashboardWidgetsComponent {
|
|
|
1018
1070
|
provide: THESEAM_DASHBOARD_WIDGETS_ACCESSOR,
|
|
1019
1071
|
useExisting: forwardRef(() => DashboardWidgetsComponent),
|
|
1020
1072
|
},
|
|
1021
|
-
], viewQueries: [{ propertyName: "_toggleBtnTpl", first: true, predicate: ["toggleBtnTpl"], descendants: true, static: true }, { propertyName: "containers", predicate: DashboardWidgetContainerComponent, descendants: true }, { propertyName: "cdkDragDirectives", predicate: CdkDrag, descendants: true }], ngImport: i0, template: "<!--\n This is an ugly trick I am using to render the component into an <ng-content>\n wrapped in an <ng-template> to move the component to different outlets without\n reinitializing it. This way the widget won't reload when moving between\n columns. When I remember how I programatically did this I will remove this\n weirdness.\n -->\n
|
|
1073
|
+
], viewQueries: [{ propertyName: "_toggleBtnTpl", first: true, predicate: ["toggleBtnTpl"], descendants: true, static: true }, { propertyName: "containers", predicate: DashboardWidgetContainerComponent, descendants: true }, { propertyName: "cdkDragDirectives", predicate: CdkDrag, descendants: true }], ngImport: i0, template: "<!--\n This is an ugly trick I am using to render the component into an <ng-content>\n wrapped in an <ng-template> to move the component to different outlets without\n reinitializing it. This way the widget won't reload when moving between\n columns. When I remember how I programatically did this I will remove this\n weirdness.\n -->\n<seam-dashboard-widget-container\n *ngFor=\"let item of widgetItems$ | async; trackBy: _containerTrackByFn\"\n [def]=\"$any(item)\"\n>\n <!-- <ng-template [cdkPortalOutlet]=\"item.portal\"></ng-template> -->\n <ng-template [seamDashboardWidgetPortalOutlet]=\"item.portal\"></ng-template>\n</seam-dashboard-widget-container>\n\n<div\n class=\"dashboard-widgets-base d-flex flex-row justify-content-around\"\n style=\"flex: 1410px\"\n [style.padding.px]=\"_gapStyleSize$ | async\"\n (seamElemResized)=\"_resized($any($event))\"\n cdkDropListGroup\n>\n <div\n *ngFor=\"let col of widgetColumns$ | async; trackBy: _columnsTrackByFn\"\n class=\"d-flex flex-column flex-grow-1 dashboard-widgets-list\"\n cdkDropList\n [cdkDropListData]=\"col.items\"\n (cdkDropListDropped)=\"drop($any($event))\"\n >\n <div\n *ngFor=\"let item of col.items; trackBy: _containerTrackByFn\"\n class=\"dashboard-widgets-list-item\"\n [attr.data-widget-id]=\"item.widgetId\"\n cdkDrag\n [cdkDragDisabled]=\"!widgetsDraggable\"\n >\n <div [style.margin.px]=\"_gapStyleSize$ | async\">\n <seam-dashboard-widget-template-container\n [item]=\"item\"\n ></seam-dashboard-widget-template-container>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #toggleBtnTpl>\n <button\n seamButton\n theme=\"baselayout-action\"\n title=\"{{ widgetsDraggable ? 'Lock the Dashboard' : 'Modify Dashboard' }}\"\n (click)=\"toggleDragging()\"\n >\n <seam-icon [icon]=\"widgetsDraggable ? faUnlock : faLock\"></seam-icon>\n </button>\n</ng-template>\n", styles: ["seam-dashboard-widgets{display:flex;justify-content:center}seam-dashboard-widgets .dashboard-widgets-base{max-width:1410px}seam-dashboard-widgets .dashboard-widgets-list{flex-basis:400px;max-width:500px}seam-dashboard-widgets .dashboard-widgets-list.cdk-drop-list-dragging .dashboard-widgets-list-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.dashboard-widgets-list-item.cdk-drag-preview{box-sizing:border-box}.dashboard-widgets-list-item.cdk-drag-preview>div{border-radius:.25rem;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.dashboard-widgets-list-item.cdk-drag-disabled .cdk-drag-handle{cursor:default}.dashboard-widgets-list-item .cdk-drag-handle{cursor:move}.dashboard-widgets-list-item.cdk-drag-placeholder{opacity:0}.dashboard-widgets-list-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i1$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i1$1.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i1$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "ngmodule", type: TheSeamButtonsModule }, { kind: "component", type: i3.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }, { kind: "component", type: DashboardWidgetTemplateContainerComponent, selector: "seam-dashboard-widget-template-container", inputs: ["item"] }, { kind: "component", type: DashboardWidgetContainerComponent, selector: "seam-dashboard-widget-container", inputs: ["def"] }, { kind: "directive", type: DashboardWidgetPortalOutletDirective, selector: "[seamDashboardWidgetPortalOutlet]", inputs: ["seamDashboardWidgetPortalOutlet"], outputs: ["attached"], exportAs: ["seamDashboardWidgetPortalOutlet"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1022
1074
|
}
|
|
1023
1075
|
__decorate([
|
|
1024
1076
|
InputBoolean()
|
|
1025
1077
|
], DashboardWidgetsComponent.prototype, "widgetsDraggable", void 0);
|
|
1026
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1078
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DashboardWidgetsComponent, decorators: [{
|
|
1027
1079
|
type: Component,
|
|
1028
1080
|
args: [{ selector: 'seam-dashboard-widgets', providers: [
|
|
1029
1081
|
{
|
|
@@ -1043,7 +1095,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
1043
1095
|
DashboardWidgetTemplateContainerComponent,
|
|
1044
1096
|
DashboardWidgetContainerComponent,
|
|
1045
1097
|
DashboardWidgetPortalOutletDirective,
|
|
1046
|
-
], template: "<!--\n This is an ugly trick I am using to render the component into an <ng-content>\n wrapped in an <ng-template> to move the component to different outlets without\n reinitializing it. This way the widget won't reload when moving between\n columns. When I remember how I programatically did this I will remove this\n weirdness.\n -->\n
|
|
1098
|
+
], template: "<!--\n This is an ugly trick I am using to render the component into an <ng-content>\n wrapped in an <ng-template> to move the component to different outlets without\n reinitializing it. This way the widget won't reload when moving between\n columns. When I remember how I programatically did this I will remove this\n weirdness.\n -->\n<seam-dashboard-widget-container\n *ngFor=\"let item of widgetItems$ | async; trackBy: _containerTrackByFn\"\n [def]=\"$any(item)\"\n>\n <!-- <ng-template [cdkPortalOutlet]=\"item.portal\"></ng-template> -->\n <ng-template [seamDashboardWidgetPortalOutlet]=\"item.portal\"></ng-template>\n</seam-dashboard-widget-container>\n\n<div\n class=\"dashboard-widgets-base d-flex flex-row justify-content-around\"\n style=\"flex: 1410px\"\n [style.padding.px]=\"_gapStyleSize$ | async\"\n (seamElemResized)=\"_resized($any($event))\"\n cdkDropListGroup\n>\n <div\n *ngFor=\"let col of widgetColumns$ | async; trackBy: _columnsTrackByFn\"\n class=\"d-flex flex-column flex-grow-1 dashboard-widgets-list\"\n cdkDropList\n [cdkDropListData]=\"col.items\"\n (cdkDropListDropped)=\"drop($any($event))\"\n >\n <div\n *ngFor=\"let item of col.items; trackBy: _containerTrackByFn\"\n class=\"dashboard-widgets-list-item\"\n [attr.data-widget-id]=\"item.widgetId\"\n cdkDrag\n [cdkDragDisabled]=\"!widgetsDraggable\"\n >\n <div [style.margin.px]=\"_gapStyleSize$ | async\">\n <seam-dashboard-widget-template-container\n [item]=\"item\"\n ></seam-dashboard-widget-template-container>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #toggleBtnTpl>\n <button\n seamButton\n theme=\"baselayout-action\"\n title=\"{{ widgetsDraggable ? 'Lock the Dashboard' : 'Modify Dashboard' }}\"\n (click)=\"toggleDragging()\"\n >\n <seam-icon [icon]=\"widgetsDraggable ? faUnlock : faLock\"></seam-icon>\n </button>\n</ng-template>\n", styles: ["seam-dashboard-widgets{display:flex;justify-content:center}seam-dashboard-widgets .dashboard-widgets-base{max-width:1410px}seam-dashboard-widgets .dashboard-widgets-list{flex-basis:400px;max-width:500px}seam-dashboard-widgets .dashboard-widgets-list.cdk-drop-list-dragging .dashboard-widgets-list-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.dashboard-widgets-list-item.cdk-drag-preview{box-sizing:border-box}.dashboard-widgets-list-item.cdk-drag-preview>div{border-radius:.25rem;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.dashboard-widgets-list-item.cdk-drag-disabled .cdk-drag-handle{cursor:default}.dashboard-widgets-list-item .cdk-drag-handle{cursor:move}.dashboard-widgets-list-item.cdk-drag-placeholder{opacity:0}.dashboard-widgets-list-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
|
|
1047
1099
|
}], ctorParameters: () => [], propDecorators: { gapSize: [{
|
|
1048
1100
|
type: Input
|
|
1049
1101
|
}], widgetsDraggable: [{
|
|
@@ -1070,17 +1122,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
1070
1122
|
class DashboardComponent {
|
|
1071
1123
|
widgets;
|
|
1072
1124
|
widgetsDraggable = true;
|
|
1073
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1074
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
1125
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DashboardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1126
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DashboardComponent, isStandalone: true, selector: "seam-dashboard", inputs: { widgets: "widgets", widgetsDraggable: "widgetsDraggable" }, ngImport: i0, template: "<seam-dashboard-widgets\n [widgets]=\"widgets\"\n [widgetsDraggable]=\"widgetsDraggable\"\n></seam-dashboard-widgets>\n", styles: [""], dependencies: [{ kind: "component", type: DashboardWidgetsComponent, selector: "seam-dashboard-widgets", inputs: ["gapSize", "widgetsDraggable", "dragToggleVisible", "numColumns", "widgets"], outputs: ["widgetsChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1075
1127
|
}
|
|
1076
1128
|
__decorate([
|
|
1077
1129
|
InputBoolean()
|
|
1078
1130
|
], DashboardComponent.prototype, "widgetsDraggable", void 0);
|
|
1079
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DashboardComponent, decorators: [{
|
|
1080
1132
|
type: Component,
|
|
1081
|
-
args: [{ selector: 'seam-dashboard', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
1082
|
-
DashboardWidgetsComponent,
|
|
1083
|
-
], template: "<seam-dashboard-widgets [widgets]=\"widgets\" [widgetsDraggable]=\"widgetsDraggable\"></seam-dashboard-widgets>\n" }]
|
|
1133
|
+
args: [{ selector: 'seam-dashboard', changeDetection: ChangeDetectionStrategy.OnPush, imports: [DashboardWidgetsComponent], template: "<seam-dashboard-widgets\n [widgets]=\"widgets\"\n [widgetsDraggable]=\"widgetsDraggable\"\n></seam-dashboard-widgets>\n" }]
|
|
1084
1134
|
}], propDecorators: { widgets: [{
|
|
1085
1135
|
type: Input
|
|
1086
1136
|
}], widgetsDraggable: [{
|
|
@@ -1088,8 +1138,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
1088
1138
|
}] } });
|
|
1089
1139
|
|
|
1090
1140
|
class TheSeamDashboardModule {
|
|
1091
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1092
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
1141
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDashboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1142
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDashboardModule, imports: [
|
|
1093
1143
|
// CommonModule,
|
|
1094
1144
|
// PortalModule,
|
|
1095
1145
|
// DragDropModule,
|
|
@@ -1103,7 +1153,7 @@ class TheSeamDashboardModule {
|
|
|
1103
1153
|
DashboardWidgetPortalOutletDirective], exports: [DashboardComponent,
|
|
1104
1154
|
DashboardWidgetsComponent,
|
|
1105
1155
|
DashboardWidgetPortalOutletDirective] });
|
|
1106
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
1156
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDashboardModule, imports: [
|
|
1107
1157
|
// CommonModule,
|
|
1108
1158
|
// PortalModule,
|
|
1109
1159
|
// DragDropModule,
|
|
@@ -1113,7 +1163,7 @@ class TheSeamDashboardModule {
|
|
|
1113
1163
|
DashboardComponent,
|
|
1114
1164
|
DashboardWidgetsComponent] });
|
|
1115
1165
|
}
|
|
1116
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDashboardModule, decorators: [{
|
|
1117
1167
|
type: NgModule,
|
|
1118
1168
|
args: [{
|
|
1119
1169
|
// declarations: [
|
|
@@ -1137,14 +1187,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
1137
1187
|
DashboardComponent,
|
|
1138
1188
|
DashboardWidgetsComponent,
|
|
1139
1189
|
DashboardWidgetPortalOutletDirective,
|
|
1140
|
-
]
|
|
1190
|
+
],
|
|
1141
1191
|
}]
|
|
1142
1192
|
}] });
|
|
1143
1193
|
|
|
1144
1194
|
const THESEAM_SIDE_NAV_ACCESSOR = new InjectionToken('THESEAM_SIDE_NAV_ACCESSOR');
|
|
1145
1195
|
const THESEAM_SIDE_NAV_CONFIG = new InjectionToken('THESEAM_SIDE_NAV_CONFIG');
|
|
1146
1196
|
const DEFAULT_SIDE_NAV_CONFIG = {
|
|
1147
|
-
activeNavigatable: false
|
|
1197
|
+
activeNavigatable: false,
|
|
1148
1198
|
};
|
|
1149
1199
|
|
|
1150
1200
|
const EXPANDED_STATE$1 = 'expanded';
|
|
@@ -1165,20 +1215,32 @@ class SideNavItemComponent {
|
|
|
1165
1215
|
label;
|
|
1166
1216
|
active = false;
|
|
1167
1217
|
activeNavigatable = false;
|
|
1168
|
-
set link(value) {
|
|
1169
|
-
|
|
1218
|
+
set link(value) {
|
|
1219
|
+
this._link.next(value);
|
|
1220
|
+
}
|
|
1221
|
+
get link() {
|
|
1222
|
+
return this._link.value;
|
|
1223
|
+
}
|
|
1170
1224
|
_link = new BehaviorSubject(undefined);
|
|
1171
1225
|
link$ = this._link.asObservable();
|
|
1172
1226
|
queryParams;
|
|
1173
1227
|
children;
|
|
1174
1228
|
hierLevel = 0;
|
|
1175
1229
|
indentSize = 10;
|
|
1176
|
-
set expanded(value) {
|
|
1177
|
-
|
|
1230
|
+
set expanded(value) {
|
|
1231
|
+
this._expanded.next(coerceBooleanProperty(value));
|
|
1232
|
+
}
|
|
1233
|
+
get expanded() {
|
|
1234
|
+
return this._expanded.value;
|
|
1235
|
+
}
|
|
1178
1236
|
_expanded = new BehaviorSubject(false);
|
|
1179
1237
|
expanded$ = this._expanded.asObservable();
|
|
1180
|
-
set compact(value) {
|
|
1181
|
-
|
|
1238
|
+
set compact(value) {
|
|
1239
|
+
this._compact.next(coerceBooleanProperty(value));
|
|
1240
|
+
}
|
|
1241
|
+
get compact() {
|
|
1242
|
+
return this._compact.value;
|
|
1243
|
+
}
|
|
1182
1244
|
_compact = new BehaviorSubject(false);
|
|
1183
1245
|
compact$ = this._compact.asObservable();
|
|
1184
1246
|
isMobile;
|
|
@@ -1188,7 +1250,9 @@ class SideNavItemComponent {
|
|
|
1188
1250
|
* Content to provide to assistive technology, such as screen readers.
|
|
1189
1251
|
*/
|
|
1190
1252
|
badgeSrContent;
|
|
1191
|
-
get badgeTooltip() {
|
|
1253
|
+
get badgeTooltip() {
|
|
1254
|
+
return this._badgeTooltip;
|
|
1255
|
+
}
|
|
1192
1256
|
set badgeTooltip(value) {
|
|
1193
1257
|
if (value !== null && value !== undefined) {
|
|
1194
1258
|
if (typeof value === 'string') {
|
|
@@ -1196,7 +1260,7 @@ class SideNavItemComponent {
|
|
|
1196
1260
|
tooltip: value,
|
|
1197
1261
|
placement: 'auto',
|
|
1198
1262
|
container: 'body',
|
|
1199
|
-
disabled: false
|
|
1263
|
+
disabled: false,
|
|
1200
1264
|
};
|
|
1201
1265
|
}
|
|
1202
1266
|
else {
|
|
@@ -1217,14 +1281,19 @@ class SideNavItemComponent {
|
|
|
1217
1281
|
_badgeTooltip;
|
|
1218
1282
|
menuItemTooltipConfig;
|
|
1219
1283
|
menuItemTooltipDisabled;
|
|
1220
|
-
get _isActiveCssClass() {
|
|
1221
|
-
|
|
1222
|
-
|
|
1284
|
+
get _isActiveCssClass() {
|
|
1285
|
+
return this.active;
|
|
1286
|
+
}
|
|
1287
|
+
get _isClickableWhenActiveCssClass() {
|
|
1288
|
+
return this.activeNavigatable;
|
|
1289
|
+
}
|
|
1290
|
+
get _attrDataHierLevel() {
|
|
1291
|
+
return this.hierLevel;
|
|
1292
|
+
}
|
|
1223
1293
|
childGroupAnimState$;
|
|
1224
1294
|
constructor(_sideNav) {
|
|
1225
1295
|
this._sideNav = _sideNav;
|
|
1226
|
-
this.childGroupAnimState$ = this.expanded$
|
|
1227
|
-
.pipe(map$1(expanded => expanded ? EXPANDED_STATE$1 : COLLAPSED_STATE$1));
|
|
1296
|
+
this.childGroupAnimState$ = this.expanded$.pipe(map$1((expanded) => (expanded ? EXPANDED_STATE$1 : COLLAPSED_STATE$1)));
|
|
1228
1297
|
}
|
|
1229
1298
|
ngOnDestroy() {
|
|
1230
1299
|
this._ngUnsubscribe.next(undefined);
|
|
@@ -1245,8 +1314,8 @@ class SideNavItemComponent {
|
|
|
1245
1314
|
get showIconBlock() {
|
|
1246
1315
|
return notNullOrUndefined(this.icon) || this.hideEmptyIcon !== true;
|
|
1247
1316
|
}
|
|
1248
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1249
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: SideNavItemComponent, isStandalone: true, selector: "seam-side-nav-item", inputs: { itemType: "itemType", icon: "icon", hideEmptyIcon: "hideEmptyIcon", label: "label", active: "active", activeNavigatable: "activeNavigatable", link: "link", queryParams: "queryParams", children: "children", hierLevel: "hierLevel", indentSize: "indentSize", expanded: "expanded", compact: "compact", isMobile: "isMobile", badgeText: "badgeText", badgeTheme: "badgeTheme", badgeSrContent: "badgeSrContent", badgeTooltip: "badgeTooltip", menuItemTooltipConfig: "menuItemTooltipConfig", menuItemTooltipDisabled: "menuItemTooltipDisabled" }, host: { properties: { "class.seam-side-nav-item--active": "this._isActiveCssClass", "class.active-clickable": "this._isClickableWhenActiveCssClass", "attr.data-hier-level": "this._attrDataHierLevel" } }, exportAs: ["seamSideNavItem"], ngImport: i0, template: "<div class=\"d-flex flex-row side-nav-item-wrapper\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\">\n <seam-side-nav-item *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [isMobile]=\"isMobile\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n [indentSize]=\"indentSize\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled\"\n [activeNavigatable]=\"$any(child).activeNavigatable\">\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row align-items-stretch rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\"\n [class.active-clickable]=\"activeNavigatable\">\n <div class=\"nav-link d-flex flex-row w-100\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px;\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\">\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <div class=\"d-flex flex-row w-100\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\">\n <a *ngIf=\"link; else noLink\" class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n [state]=\"_linkHistoryState\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\"\n [class.active-clickable]=\"activeNavigatable\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [seamTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"isMobile || !badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["seam-side-nav-item{display:block;transition:.25s ease-in-out background-color}seam-side-nav-item.seam-side-nav-item--active{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .active,seam-side-nav-item.seam-side-nav-item--active:active,seam-side-nav-item.seam-side-nav-item--active .side-nav-item.active:hover{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item.seam-side-nav-item--active .nav-link{color:#fff}seam-side-nav-item.seam-side-nav-item--active .side-nav-btn{color:#fff}seam-side-nav-item .badge{vertical-align:middle}seam-side-nav-item:not(.side-nav-item--icon) .side-nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-side-nav-item .side-nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge{top:-4px;right:-4px;position:absolute}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge.side-nav-item--badge-no-icon{top:0;right:0}seam-side-nav-item .side-nav-item{min-height:45px;transition:.25s ease-in-out background-color}seam-side-nav-item .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item.active:not(.active-clickable){pointer-events:none;cursor:default}seam-side-nav-item .side-nav-item.active:not(.active-clickable) .side-nav-item--badge{pointer-events:none;cursor:default}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]){color:#ccc}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-side-nav-item .nav-link{color:#fff;padding-right:2px}seam-side-nav-item .nav-link__compact{padding-right:0;padding-left:12px}seam-side-nav-item .nav-link:last-child{padding-right:8px}seam-side-nav-item .side-nav-btn{font-weight:400;color:#fff;text-decoration:none}seam-side-nav-item .side-nav-btn:hover{color:#fff;text-decoration:underline}seam-side-nav-item .side-nav-btn:focus,seam-side-nav-item .side-nav-btn.focus{text-decoration:underline;box-shadow:none}seam-side-nav-item .side-nav-btn:disabled,seam-side-nav-item .side-nav-btn.disabled{color:#ccc;pointer-events:none}seam-side-nav-item .side-nav-btn:disabled .side-nav-item--badge,seam-side-nav-item .side-nav-btn.disabled .side-nav-item--badge{pointer-events:none;cursor:default}seam-side-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-side-nav-item .side-nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:.5rem 1rem}seam-side-nav-item button.side-nav-item--toggle-btn-container:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform}seam-side-nav-item .side-nav-item--toggle-btn.side-nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-side-nav-item .side-nav--group{will-change:height;overflow:hidden}seam-side-nav-item .side-nav--group--level-1{background-color:#3276b1}seam-side-nav-item .side-nav--group--level-2{background-color:#2e6ea5}seam-side-nav-item .side-nav--group--level-3{background-color:#2b6699}seam-side-nav-item .side-nav--group--level-4{background-color:#285e8d}seam-side-nav-item .side-nav--group--level-5{background-color:#245681}seam-side-nav-item .side-nav--group--level-6{background-color:#214e75}seam-side-nav-item .side-nav--group--level-7{background-color:#1e4669}seam-side-nav-item .side-nav--group--level-8{background-color:#1a3e5d}seam-side-nav-item .side-nav--group--level-9{background-color:#173651}seam-side-nav-item .side-nav-item--divider{display:block;border-top:1px solid rgb(41.8305785124,99.4462809917,149.1694214876);width:100%}seam-side-nav-item .side-nav-item--title{color:#fff;font-size:24px;padding-left:10px}seam-side-nav-item .sr-only{top:0;left:0}\n"], dependencies: [{ kind: "component", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "hideEmptyIcon", "label", "active", "activeNavigatable", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "isMobile", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "menuItemTooltipConfig", "menuItemTooltipDisabled"], exportAs: ["seamSideNavItem"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i4.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "ngmodule", type: TheSeamTooltipModule }, { kind: "directive", type: i5.TheSeamTooltipDirective, selector: "[seamTooltip]", inputs: ["seamTooltip", "tooltipClass", "placement", "container", "disableTooltip", "showDelay", "hideDelay", "trigger"], exportAs: ["seamTooltip"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], animations: [
|
|
1317
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: SideNavItemComponent, deps: [{ token: THESEAM_SIDE_NAV_ACCESSOR }], target: i0.ɵɵFactoryTarget.Component });
|
|
1318
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: SideNavItemComponent, isStandalone: true, selector: "seam-side-nav-item", inputs: { itemType: "itemType", icon: "icon", hideEmptyIcon: "hideEmptyIcon", label: "label", active: "active", activeNavigatable: "activeNavigatable", link: "link", queryParams: "queryParams", children: "children", hierLevel: "hierLevel", indentSize: "indentSize", expanded: "expanded", compact: "compact", isMobile: "isMobile", badgeText: "badgeText", badgeTheme: "badgeTheme", badgeSrContent: "badgeSrContent", badgeTooltip: "badgeTooltip", menuItemTooltipConfig: "menuItemTooltipConfig", menuItemTooltipDisabled: "menuItemTooltipDisabled" }, host: { properties: { "class.seam-side-nav-item--active": "this._isActiveCssClass", "class.active-clickable": "this._isClickableWhenActiveCssClass", "attr.data-hier-level": "this._attrDataHierLevel" } }, exportAs: ["seamSideNavItem"], ngImport: i0, template: "<div class=\"d-flex flex-row side-nav-item-wrapper\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div\n class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\"\n >\n <seam-side-nav-item\n *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : hierLevel + 1\"\n [compact]=\"compact\"\n [isMobile]=\"isMobile\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n [indentSize]=\"indentSize\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled\"\n [activeNavigatable]=\"$any(child).activeNavigatable\"\n >\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button\n class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row align-items-stretch rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\"\n [class.active-clickable]=\"activeNavigatable\"\n >\n <div\n class=\"nav-link d-flex flex-row w-100\"\n [class.nav-link__compact]=\"compact\"\n >\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{\n label\n }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n >\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type\n >\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <div\n class=\"d-flex flex-row w-100\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\"\n >\n <a\n *ngIf=\"link; else noLink\"\n class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n [state]=\"_linkHistoryState\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\"\n [class.active-clickable]=\"activeNavigatable\"\n >\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{\n label\n }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a\n class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\"\n >\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{\n label\n }}</span>\n </a>\n </ng-template>\n\n <button\n *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus\n >\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type\n >\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{\n label\n }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div\n class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [seamTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"\n isMobile || !badgeTooltip || !!$any(badgeTooltip)?.disabled\n \"\n >\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["seam-side-nav-item{display:block;transition:.25s ease-in-out background-color}seam-side-nav-item.seam-side-nav-item--active{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .active,seam-side-nav-item.seam-side-nav-item--active:active,seam-side-nav-item.seam-side-nav-item--active .side-nav-item.active:hover{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item.seam-side-nav-item--active .nav-link{color:#fff}seam-side-nav-item.seam-side-nav-item--active .side-nav-btn{color:#fff}seam-side-nav-item .badge{vertical-align:middle}seam-side-nav-item:not(.side-nav-item--icon) .side-nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-side-nav-item .side-nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge{top:-4px;right:-4px;position:absolute}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge.side-nav-item--badge-no-icon{top:0;right:0}seam-side-nav-item .side-nav-item{min-height:45px;transition:.25s ease-in-out background-color}seam-side-nav-item .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item.active:not(.active-clickable){pointer-events:none;cursor:default}seam-side-nav-item .side-nav-item.active:not(.active-clickable) .side-nav-item--badge{pointer-events:none;cursor:default}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]){color:#ccc}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-side-nav-item .nav-link{color:#fff;padding-right:2px}seam-side-nav-item .nav-link__compact{padding-right:0;padding-left:12px}seam-side-nav-item .nav-link:last-child{padding-right:8px}seam-side-nav-item .side-nav-btn{font-weight:400;color:#fff;text-decoration:none}seam-side-nav-item .side-nav-btn:hover{color:#fff;text-decoration:underline}seam-side-nav-item .side-nav-btn:focus,seam-side-nav-item .side-nav-btn.focus{text-decoration:underline;box-shadow:none}seam-side-nav-item .side-nav-btn:disabled,seam-side-nav-item .side-nav-btn.disabled{color:#ccc;pointer-events:none}seam-side-nav-item .side-nav-btn:disabled .side-nav-item--badge,seam-side-nav-item .side-nav-btn.disabled .side-nav-item--badge{pointer-events:none;cursor:default}seam-side-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-side-nav-item .side-nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:.5rem 1rem}seam-side-nav-item button.side-nav-item--toggle-btn-container:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform}seam-side-nav-item .side-nav-item--toggle-btn.side-nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-side-nav-item .side-nav--group{will-change:height;overflow:hidden}seam-side-nav-item .side-nav--group--level-1{background-color:#3276b1}seam-side-nav-item .side-nav--group--level-2{background-color:#2e6ea5}seam-side-nav-item .side-nav--group--level-3{background-color:#2b6699}seam-side-nav-item .side-nav--group--level-4{background-color:#285e8d}seam-side-nav-item .side-nav--group--level-5{background-color:#245681}seam-side-nav-item .side-nav--group--level-6{background-color:#214e75}seam-side-nav-item .side-nav--group--level-7{background-color:#1e4669}seam-side-nav-item .side-nav--group--level-8{background-color:#1a3e5d}seam-side-nav-item .side-nav--group--level-9{background-color:#173651}seam-side-nav-item .side-nav-item--divider{display:block;border-top:1px solid rgb(41.8305785124,99.4462809917,149.1694214876);width:100%}seam-side-nav-item .side-nav-item--title{color:#fff;font-size:24px;padding-left:10px}seam-side-nav-item .sr-only{top:0;left:0}\n"], dependencies: [{ kind: "component", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "hideEmptyIcon", "label", "active", "activeNavigatable", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "isMobile", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "menuItemTooltipConfig", "menuItemTooltipDisabled"], exportAs: ["seamSideNavItem"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i4.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "ngmodule", type: TheSeamTooltipModule }, { kind: "directive", type: i5.TheSeamTooltipDirective, selector: "[seamTooltip]", inputs: ["seamTooltip", "tooltipClass", "placement", "container", "disableTooltip", "showDelay", "hideDelay", "trigger"], exportAs: ["seamTooltip"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], animations: [
|
|
1250
1319
|
trigger('childGroupAnim', [
|
|
1251
1320
|
state(EXPANDED_STATE$1, style({ height: '*' })),
|
|
1252
1321
|
state(COLLAPSED_STATE$1, style({ height: 0, visibility: 'hidden' })),
|
|
@@ -1266,7 +1335,7 @@ __decorate([
|
|
|
1266
1335
|
__decorate([
|
|
1267
1336
|
InputNumber(10)
|
|
1268
1337
|
], SideNavItemComponent.prototype, "indentSize", void 0);
|
|
1269
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1338
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: SideNavItemComponent, decorators: [{
|
|
1270
1339
|
type: Component,
|
|
1271
1340
|
args: [{ selector: 'seam-side-nav-item', exportAs: 'seamSideNavItem', animations: [
|
|
1272
1341
|
trigger('childGroupAnim', [
|
|
@@ -1280,7 +1349,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
1280
1349
|
TheSeamIconModule,
|
|
1281
1350
|
A11yModule,
|
|
1282
1351
|
TheSeamTooltipModule,
|
|
1283
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"d-flex flex-row side-nav-item-wrapper\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\">\n <seam-side-nav-item *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [isMobile]=\"isMobile\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n [indentSize]=\"indentSize\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled\"\n [activeNavigatable]=\"$any(child).activeNavigatable\">\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row align-items-stretch rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\"\n [class.active-clickable]=\"activeNavigatable\">\n <div class=\"nav-link d-flex flex-row w-100\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px;\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\">\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <div class=\"d-flex flex-row w-100\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\">\n <a *ngIf=\"link; else noLink\" class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n [state]=\"_linkHistoryState\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\"\n [class.active-clickable]=\"activeNavigatable\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [seamTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"isMobile || !badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["seam-side-nav-item{display:block;transition:.25s ease-in-out background-color}seam-side-nav-item.seam-side-nav-item--active{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .active,seam-side-nav-item.seam-side-nav-item--active:active,seam-side-nav-item.seam-side-nav-item--active .side-nav-item.active:hover{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item.seam-side-nav-item--active .nav-link{color:#fff}seam-side-nav-item.seam-side-nav-item--active .side-nav-btn{color:#fff}seam-side-nav-item .badge{vertical-align:middle}seam-side-nav-item:not(.side-nav-item--icon) .side-nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-side-nav-item .side-nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge{top:-4px;right:-4px;position:absolute}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge.side-nav-item--badge-no-icon{top:0;right:0}seam-side-nav-item .side-nav-item{min-height:45px;transition:.25s ease-in-out background-color}seam-side-nav-item .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item.active:not(.active-clickable){pointer-events:none;cursor:default}seam-side-nav-item .side-nav-item.active:not(.active-clickable) .side-nav-item--badge{pointer-events:none;cursor:default}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]){color:#ccc}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-side-nav-item .nav-link{color:#fff;padding-right:2px}seam-side-nav-item .nav-link__compact{padding-right:0;padding-left:12px}seam-side-nav-item .nav-link:last-child{padding-right:8px}seam-side-nav-item .side-nav-btn{font-weight:400;color:#fff;text-decoration:none}seam-side-nav-item .side-nav-btn:hover{color:#fff;text-decoration:underline}seam-side-nav-item .side-nav-btn:focus,seam-side-nav-item .side-nav-btn.focus{text-decoration:underline;box-shadow:none}seam-side-nav-item .side-nav-btn:disabled,seam-side-nav-item .side-nav-btn.disabled{color:#ccc;pointer-events:none}seam-side-nav-item .side-nav-btn:disabled .side-nav-item--badge,seam-side-nav-item .side-nav-btn.disabled .side-nav-item--badge{pointer-events:none;cursor:default}seam-side-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-side-nav-item .side-nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:.5rem 1rem}seam-side-nav-item button.side-nav-item--toggle-btn-container:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform}seam-side-nav-item .side-nav-item--toggle-btn.side-nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-side-nav-item .side-nav--group{will-change:height;overflow:hidden}seam-side-nav-item .side-nav--group--level-1{background-color:#3276b1}seam-side-nav-item .side-nav--group--level-2{background-color:#2e6ea5}seam-side-nav-item .side-nav--group--level-3{background-color:#2b6699}seam-side-nav-item .side-nav--group--level-4{background-color:#285e8d}seam-side-nav-item .side-nav--group--level-5{background-color:#245681}seam-side-nav-item .side-nav--group--level-6{background-color:#214e75}seam-side-nav-item .side-nav--group--level-7{background-color:#1e4669}seam-side-nav-item .side-nav--group--level-8{background-color:#1a3e5d}seam-side-nav-item .side-nav--group--level-9{background-color:#173651}seam-side-nav-item .side-nav-item--divider{display:block;border-top:1px solid rgb(41.8305785124,99.4462809917,149.1694214876);width:100%}seam-side-nav-item .side-nav-item--title{color:#fff;font-size:24px;padding-left:10px}seam-side-nav-item .sr-only{top:0;left:0}\n"] }]
|
|
1352
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"d-flex flex-row side-nav-item-wrapper\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div\n class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\"\n >\n <seam-side-nav-item\n *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : hierLevel + 1\"\n [compact]=\"compact\"\n [isMobile]=\"isMobile\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n [indentSize]=\"indentSize\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled\"\n [activeNavigatable]=\"$any(child).activeNavigatable\"\n >\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button\n class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row align-items-stretch rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\"\n [class.active-clickable]=\"activeNavigatable\"\n >\n <div\n class=\"nav-link d-flex flex-row w-100\"\n [class.nav-link__compact]=\"compact\"\n >\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{\n label\n }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n >\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type\n >\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <div\n class=\"d-flex flex-row w-100\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\"\n >\n <a\n *ngIf=\"link; else noLink\"\n class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n [state]=\"_linkHistoryState\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\"\n [class.active-clickable]=\"activeNavigatable\"\n >\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{\n label\n }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a\n class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\"\n >\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{\n label\n }}</span>\n </a>\n </ng-template>\n\n <button\n *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus\n >\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type\n >\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{\n label\n }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div\n class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [seamTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"\n isMobile || !badgeTooltip || !!$any(badgeTooltip)?.disabled\n \"\n >\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["seam-side-nav-item{display:block;transition:.25s ease-in-out background-color}seam-side-nav-item.seam-side-nav-item--active{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .active,seam-side-nav-item.seam-side-nav-item--active:active,seam-side-nav-item.seam-side-nav-item--active .side-nav-item.active:hover{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item.seam-side-nav-item--active .nav-link{color:#fff}seam-side-nav-item.seam-side-nav-item--active .side-nav-btn{color:#fff}seam-side-nav-item .badge{vertical-align:middle}seam-side-nav-item:not(.side-nav-item--icon) .side-nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-side-nav-item .side-nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge{top:-4px;right:-4px;position:absolute}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge.side-nav-item--badge-no-icon{top:0;right:0}seam-side-nav-item .side-nav-item{min-height:45px;transition:.25s ease-in-out background-color}seam-side-nav-item .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item.active:not(.active-clickable){pointer-events:none;cursor:default}seam-side-nav-item .side-nav-item.active:not(.active-clickable) .side-nav-item--badge{pointer-events:none;cursor:default}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]){color:#ccc}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-side-nav-item .nav-link{color:#fff;padding-right:2px}seam-side-nav-item .nav-link__compact{padding-right:0;padding-left:12px}seam-side-nav-item .nav-link:last-child{padding-right:8px}seam-side-nav-item .side-nav-btn{font-weight:400;color:#fff;text-decoration:none}seam-side-nav-item .side-nav-btn:hover{color:#fff;text-decoration:underline}seam-side-nav-item .side-nav-btn:focus,seam-side-nav-item .side-nav-btn.focus{text-decoration:underline;box-shadow:none}seam-side-nav-item .side-nav-btn:disabled,seam-side-nav-item .side-nav-btn.disabled{color:#ccc;pointer-events:none}seam-side-nav-item .side-nav-btn:disabled .side-nav-item--badge,seam-side-nav-item .side-nav-btn.disabled .side-nav-item--badge{pointer-events:none;cursor:default}seam-side-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-side-nav-item .side-nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:.5rem 1rem}seam-side-nav-item button.side-nav-item--toggle-btn-container:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform}seam-side-nav-item .side-nav-item--toggle-btn.side-nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-side-nav-item .side-nav--group{will-change:height;overflow:hidden}seam-side-nav-item .side-nav--group--level-1{background-color:#3276b1}seam-side-nav-item .side-nav--group--level-2{background-color:#2e6ea5}seam-side-nav-item .side-nav--group--level-3{background-color:#2b6699}seam-side-nav-item .side-nav--group--level-4{background-color:#285e8d}seam-side-nav-item .side-nav--group--level-5{background-color:#245681}seam-side-nav-item .side-nav--group--level-6{background-color:#214e75}seam-side-nav-item .side-nav--group--level-7{background-color:#1e4669}seam-side-nav-item .side-nav--group--level-8{background-color:#1a3e5d}seam-side-nav-item .side-nav--group--level-9{background-color:#173651}seam-side-nav-item .side-nav-item--divider{display:block;border-top:1px solid rgb(41.8305785124,99.4462809917,149.1694214876);width:100%}seam-side-nav-item .side-nav-item--title{color:#fff;font-size:24px;padding-left:10px}seam-side-nav-item .sr-only{top:0;left:0}\n"] }]
|
|
1284
1353
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
1285
1354
|
type: Inject,
|
|
1286
1355
|
args: [THESEAM_SIDE_NAV_ACCESSOR]
|
|
@@ -1344,20 +1413,17 @@ class SideNavToggleComponent {
|
|
|
1344
1413
|
toggle() {
|
|
1345
1414
|
this.toggleExpand.emit();
|
|
1346
1415
|
}
|
|
1347
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1348
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
1416
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: SideNavToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1417
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: SideNavToggleComponent, isStandalone: true, selector: "seam-side-nav-toggle", inputs: { expanded: "expanded", toggleIcon: "toggleIcon", toggleTpl: "toggleTpl" }, outputs: { toggleExpand: "toggleExpand" }, host: { properties: { "class.side-nav-toggle--compact": "!expanded" } }, ngImport: i0, template: "<div class=\"side-nav-toggle--content\">\n <ng-container *ngIf=\"expanded\">\n <ng-content></ng-content>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"toggleTpl; else iconBtn\">\n <button class=\"side-nav-toggle--btn mx-1\" (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n <ng-container *ngTemplateOutlet=\"toggleTpl\"></ng-container>\n </button>\n</ng-container>\n\n<ng-template #iconBtn>\n <button\n seamIconBtn\n [icon]=\"toggleIcon\"\n iconType=\"borderless-styled-square\"\n btnSize=\"sm\"\n class=\"side-nav-toggle--btn mx-1\"\n (click)=\"toggle()\"\n >\n <span class=\"sr-only\">Toggle sidebar</span>\n </button>\n</ng-template>\n", styles: ["seam-side-nav-toggle{display:flex;flex-direction:row;flex-shrink:0;align-items:center;background:#357ebd;position:relative;height:45px;width:100%}seam-side-nav-toggle .side-nav-toggle--content{flex:1 1 0}seam-side-nav-toggle .side-nav-toggle--btn{color:#fff}seam-side-nav-toggle .side-nav-toggle--btn seam-icon{padding:5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "component", type: i2.IconBtnComponent, selector: "button[seamIconBtn]", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "iconType", "btnTheme", "badgeTheme", "badgeText", "btnSize", "type", "role"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1349
1418
|
}
|
|
1350
1419
|
__decorate([
|
|
1351
1420
|
InputBoolean()
|
|
1352
1421
|
], SideNavToggleComponent.prototype, "expanded", void 0);
|
|
1353
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1422
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: SideNavToggleComponent, decorators: [{
|
|
1354
1423
|
type: Component,
|
|
1355
1424
|
args: [{ selector: 'seam-side-nav-toggle', host: {
|
|
1356
|
-
'[class.side-nav-toggle--compact]': '!expanded'
|
|
1357
|
-
}, imports: [
|
|
1358
|
-
CommonModule,
|
|
1359
|
-
TheSeamIconModule,
|
|
1360
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"side-nav-toggle--content\">\n <ng-container *ngIf=\"expanded\">\n <ng-content></ng-content>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"toggleTpl; else iconBtn\">\n <button\n class=\"side-nav-toggle--btn mx-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n <ng-container *ngTemplateOutlet=\"toggleTpl\"></ng-container>\n </button>\n</ng-container>\n\n<ng-template #iconBtn>\n <button seamIconBtn [icon]=\"toggleIcon\"\n iconType=\"borderless-styled-square\"\n btnSize=\"sm\"\n class=\"side-nav-toggle--btn mx-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n </button>\n</ng-template>\n", styles: ["seam-side-nav-toggle{display:flex;flex-direction:row;flex-shrink:0;align-items:center;background:#357ebd;position:relative;height:45px;width:100%}seam-side-nav-toggle .side-nav-toggle--content{flex:1 1 0}seam-side-nav-toggle .side-nav-toggle--btn{color:#fff}seam-side-nav-toggle .side-nav-toggle--btn seam-icon{padding:5px}\n"] }]
|
|
1425
|
+
'[class.side-nav-toggle--compact]': '!expanded',
|
|
1426
|
+
}, imports: [CommonModule, TheSeamIconModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"side-nav-toggle--content\">\n <ng-container *ngIf=\"expanded\">\n <ng-content></ng-content>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"toggleTpl; else iconBtn\">\n <button class=\"side-nav-toggle--btn mx-1\" (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n <ng-container *ngTemplateOutlet=\"toggleTpl\"></ng-container>\n </button>\n</ng-container>\n\n<ng-template #iconBtn>\n <button\n seamIconBtn\n [icon]=\"toggleIcon\"\n iconType=\"borderless-styled-square\"\n btnSize=\"sm\"\n class=\"side-nav-toggle--btn mx-1\"\n (click)=\"toggle()\"\n >\n <span class=\"sr-only\">Toggle sidebar</span>\n </button>\n</ng-template>\n", styles: ["seam-side-nav-toggle{display:flex;flex-direction:row;flex-shrink:0;align-items:center;background:#357ebd;position:relative;height:45px;width:100%}seam-side-nav-toggle .side-nav-toggle--content{flex:1 1 0}seam-side-nav-toggle .side-nav-toggle--btn{color:#fff}seam-side-nav-toggle .side-nav-toggle--btn seam-icon{padding:5px}\n"] }]
|
|
1361
1427
|
}], propDecorators: { expanded: [{
|
|
1362
1428
|
type: Input
|
|
1363
1429
|
}], toggleIcon: [{
|
|
@@ -1378,7 +1444,9 @@ function isExpanded(item) {
|
|
|
1378
1444
|
return item.__state?.expanded ?? false;
|
|
1379
1445
|
}
|
|
1380
1446
|
function hasChildren(item) {
|
|
1381
|
-
return canHaveChildren(item) &&
|
|
1447
|
+
return (canHaveChildren(item) &&
|
|
1448
|
+
hasProperty(item, 'children') &&
|
|
1449
|
+
item.children.length > 0);
|
|
1382
1450
|
}
|
|
1383
1451
|
function canHaveChildren(item) {
|
|
1384
1452
|
return isNavItemType(item, 'basic') || isNavItemType(item, 'link');
|
|
@@ -1440,19 +1508,20 @@ function setDefaultState(item) {
|
|
|
1440
1508
|
}
|
|
1441
1509
|
item.__state = {
|
|
1442
1510
|
active: false,
|
|
1443
|
-
expanded: false
|
|
1511
|
+
expanded: false,
|
|
1444
1512
|
};
|
|
1445
1513
|
// TODO: See if there is a nice way to fix the typing for this.
|
|
1446
1514
|
return item;
|
|
1447
1515
|
}
|
|
1448
1516
|
function applyItemConfig(item, config) {
|
|
1449
1517
|
if (canBeActive(item)) {
|
|
1450
|
-
if (!hasProperty(item, 'activeNavigatable') &&
|
|
1518
|
+
if (!hasProperty(item, 'activeNavigatable') &&
|
|
1519
|
+
hasProperty(config, 'activeNavigatable')) {
|
|
1451
1520
|
item.activeNavigatable = config.activeNavigatable;
|
|
1452
1521
|
}
|
|
1453
1522
|
}
|
|
1454
1523
|
if (hasChildren(item)) {
|
|
1455
|
-
item.children = item.children.map(child => applyItemConfig(child, config));
|
|
1524
|
+
item.children = item.children.map((child) => applyItemConfig(child, config));
|
|
1456
1525
|
}
|
|
1457
1526
|
return item;
|
|
1458
1527
|
}
|
|
@@ -1464,13 +1533,15 @@ class TheSeamSideNavService {
|
|
|
1464
1533
|
itemChanged = new Subject();
|
|
1465
1534
|
constructor(_router) {
|
|
1466
1535
|
this._router = _router;
|
|
1467
|
-
this.loading$ = this._updatingCount.pipe(map(count => count > 0), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
1536
|
+
this.loading$ = this._updatingCount.pipe(map((count) => count > 0), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
1468
1537
|
}
|
|
1469
1538
|
createItemsObservable(items) {
|
|
1470
1539
|
return defer(() => {
|
|
1471
1540
|
this.updateItemsStates(items);
|
|
1472
1541
|
return new Observable((subscriber) => {
|
|
1473
|
-
const stateChangeSub = this.itemChanged
|
|
1542
|
+
const stateChangeSub = this.itemChanged
|
|
1543
|
+
.pipe(switchMap(() => this.loading$.pipe(filter((loading) => !loading))))
|
|
1544
|
+
.subscribe(() => {
|
|
1474
1545
|
subscriber.next(items);
|
|
1475
1546
|
});
|
|
1476
1547
|
try {
|
|
@@ -1480,7 +1551,9 @@ class TheSeamSideNavService {
|
|
|
1480
1551
|
subscriber.error(err);
|
|
1481
1552
|
}
|
|
1482
1553
|
// const linkItems = findLinkItems(items)
|
|
1483
|
-
const routeChangeSub = this._router.events
|
|
1554
|
+
const routeChangeSub = this._router.events
|
|
1555
|
+
.pipe(filter((event) => event instanceof NavigationEnd))
|
|
1556
|
+
.subscribe(() => {
|
|
1484
1557
|
try {
|
|
1485
1558
|
this.updateItemsStates(items);
|
|
1486
1559
|
}
|
|
@@ -1587,10 +1660,14 @@ class TheSeamSideNavService {
|
|
|
1587
1660
|
_getUrl(item) {
|
|
1588
1661
|
const link = item.link;
|
|
1589
1662
|
if (typeof link === 'string') {
|
|
1590
|
-
return this._router
|
|
1663
|
+
return this._router
|
|
1664
|
+
.createUrlTree([link], this._getNavExtras(item))
|
|
1665
|
+
.toString();
|
|
1591
1666
|
}
|
|
1592
1667
|
else if (Array.isArray(link)) {
|
|
1593
|
-
return this._router
|
|
1668
|
+
return this._router
|
|
1669
|
+
.createUrlTree(link, this._getNavExtras(item))
|
|
1670
|
+
.toString();
|
|
1594
1671
|
}
|
|
1595
1672
|
return null;
|
|
1596
1673
|
}
|
|
@@ -1599,12 +1676,12 @@ class TheSeamSideNavService {
|
|
|
1599
1676
|
paths: 'subset',
|
|
1600
1677
|
queryParams: 'subset',
|
|
1601
1678
|
fragment: 'ignored',
|
|
1602
|
-
matrixParams: 'ignored'
|
|
1679
|
+
matrixParams: 'ignored',
|
|
1603
1680
|
};
|
|
1604
1681
|
if (hasProperty(item, 'matchOptions')) {
|
|
1605
1682
|
return {
|
|
1606
1683
|
...defaultMatchOpts,
|
|
1607
|
-
...item.matchOptions
|
|
1684
|
+
...item.matchOptions,
|
|
1608
1685
|
};
|
|
1609
1686
|
}
|
|
1610
1687
|
return defaultMatchOpts;
|
|
@@ -1617,15 +1694,15 @@ class TheSeamSideNavService {
|
|
|
1617
1694
|
item,
|
|
1618
1695
|
prop,
|
|
1619
1696
|
prevValue: currentValue,
|
|
1620
|
-
newValue: value
|
|
1697
|
+
newValue: value,
|
|
1621
1698
|
};
|
|
1622
1699
|
this.itemChanged.next(changed);
|
|
1623
1700
|
}
|
|
1624
1701
|
}
|
|
1625
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1626
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
1702
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSideNavService, deps: [{ token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1703
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSideNavService });
|
|
1627
1704
|
}
|
|
1628
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1705
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSideNavService, decorators: [{
|
|
1629
1706
|
type: Injectable
|
|
1630
1707
|
}], ctorParameters: () => [{ type: i1$2.Router }] });
|
|
1631
1708
|
|
|
@@ -1638,8 +1715,7 @@ const COLLAPSED_STATES = [COLLAPSED_STATE, COLLAPSED_OVERLAY_STATE];
|
|
|
1638
1715
|
const EXPAND_STATES = [...EXPANDED_STATES, ...COLLAPSED_STATES];
|
|
1639
1716
|
function sideNavExpandStateChangeFn(fromState, toState) {
|
|
1640
1717
|
// console.log({ fromState, toState })
|
|
1641
|
-
return fromState !== toState &&
|
|
1642
|
-
(
|
|
1718
|
+
return (fromState !== toState &&
|
|
1643
1719
|
// NOTE: The current way the side nav is being used it causes the
|
|
1644
1720
|
// component to sometimes get placed in the wrong location initially. It
|
|
1645
1721
|
// is fast enough to not be noticed without an initial animation usually,
|
|
@@ -1652,8 +1728,10 @@ function sideNavExpandStateChangeFn(fromState, toState) {
|
|
|
1652
1728
|
// toState === 'void' && EXPAND_STATES.indexOf(fromState) !== -1
|
|
1653
1729
|
// )
|
|
1654
1730
|
// ||
|
|
1655
|
-
((EXPANDED_STATES.indexOf(fromState) !== -1 &&
|
|
1656
|
-
|
|
1731
|
+
((EXPANDED_STATES.indexOf(fromState) !== -1 &&
|
|
1732
|
+
COLLAPSED_STATES.indexOf(toState) !== -1) ||
|
|
1733
|
+
(EXPANDED_STATES.indexOf(toState) !== -1 &&
|
|
1734
|
+
COLLAPSED_STATES.indexOf(fromState) !== -1)));
|
|
1657
1735
|
}
|
|
1658
1736
|
class SideNavComponent {
|
|
1659
1737
|
_viewContainerRef;
|
|
@@ -1671,13 +1749,19 @@ class SideNavComponent {
|
|
|
1671
1749
|
hasHeaderToggle = true;
|
|
1672
1750
|
toggleIcon = faBars;
|
|
1673
1751
|
toggleTpl;
|
|
1674
|
-
get items() {
|
|
1675
|
-
|
|
1752
|
+
get items() {
|
|
1753
|
+
return this._items.value;
|
|
1754
|
+
}
|
|
1755
|
+
set items(value) {
|
|
1756
|
+
this._items.next(value);
|
|
1757
|
+
}
|
|
1676
1758
|
_items = new BehaviorSubject([]);
|
|
1677
1759
|
items$;
|
|
1678
1760
|
hideEmptyIcon;
|
|
1679
1761
|
indentSize = 10;
|
|
1680
|
-
get expanded() {
|
|
1762
|
+
get expanded() {
|
|
1763
|
+
return this._expanded.value;
|
|
1764
|
+
}
|
|
1681
1765
|
set expanded(value) {
|
|
1682
1766
|
const expanded = coerceBooleanProperty(value);
|
|
1683
1767
|
const emit = expanded !== this.expanded;
|
|
@@ -1691,22 +1775,28 @@ class SideNavComponent {
|
|
|
1691
1775
|
expandOrigin = 'left';
|
|
1692
1776
|
expandHeight = '100%';
|
|
1693
1777
|
expandWidth = 'calc(100vw - 50px)';
|
|
1694
|
-
get overlay() {
|
|
1695
|
-
|
|
1778
|
+
get overlay() {
|
|
1779
|
+
return this._overlay.value;
|
|
1780
|
+
}
|
|
1781
|
+
set overlay(value) {
|
|
1782
|
+
this._overlay.next(coerceBooleanProperty(value));
|
|
1783
|
+
}
|
|
1696
1784
|
_overlay = new BehaviorSubject(false);
|
|
1697
1785
|
overlay$ = this._overlay.asObservable();
|
|
1698
1786
|
_menuItemTooltipConfig = {
|
|
1699
1787
|
placement: 'right',
|
|
1700
1788
|
container: 'body',
|
|
1701
|
-
behavior: 'always'
|
|
1789
|
+
behavior: 'always',
|
|
1702
1790
|
};
|
|
1703
|
-
get menuItemTooltipConfig() {
|
|
1791
|
+
get menuItemTooltipConfig() {
|
|
1792
|
+
return this._menuItemTooltipConfig;
|
|
1793
|
+
}
|
|
1704
1794
|
set menuItemTooltipConfig(value) {
|
|
1705
1795
|
this._menuItemTooltipConfig = {
|
|
1706
1796
|
class: value?.class,
|
|
1707
1797
|
placement: value?.placement || this._menuItemTooltipConfig.placement,
|
|
1708
1798
|
container: value?.container || this._menuItemTooltipConfig.container,
|
|
1709
|
-
behavior: value?.behavior || this._menuItemTooltipConfig.behavior
|
|
1799
|
+
behavior: value?.behavior || this._menuItemTooltipConfig.behavior,
|
|
1710
1800
|
};
|
|
1711
1801
|
}
|
|
1712
1802
|
menuItemTooltipDisabled$;
|
|
@@ -1728,19 +1818,33 @@ class SideNavComponent {
|
|
|
1728
1818
|
...DEFAULT_SIDE_NAV_CONFIG,
|
|
1729
1819
|
...(this._config || {}),
|
|
1730
1820
|
};
|
|
1731
|
-
this.items$ = this._items.asObservable().pipe(map(items =>
|
|
1732
|
-
this.isMobile$ = this._layout.isMobile$.pipe(tap(isMobile => isMobile ? this.collapse() : this.expand()));
|
|
1733
|
-
this.sideNavExpandedState$ = combineLatest([
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1821
|
+
this.items$ = this._items.asObservable().pipe(map((items) => items && config ? items.map((itm) => applyItemConfig(itm, config)) : []), switchMap((items) => items ? this._sideNav.createItemsObservable(items) : []), shareReplay({ bufferSize: 1, refCount: true }));
|
|
1822
|
+
this.isMobile$ = this._layout.isMobile$.pipe(tap((isMobile) => (isMobile ? this.collapse() : this.expand())));
|
|
1823
|
+
this.sideNavExpandedState$ = combineLatest([
|
|
1824
|
+
this.expanded$,
|
|
1825
|
+
this.overlay$,
|
|
1826
|
+
]).pipe(map(([expanded, overlay]) => expanded
|
|
1827
|
+
? overlay
|
|
1828
|
+
? EXPANDED_OVERLAY_STATE
|
|
1829
|
+
: EXPANDED_STATE
|
|
1830
|
+
: overlay
|
|
1831
|
+
? COLLAPSED_OVERLAY_STATE
|
|
1832
|
+
: COLLAPSED_STATE), distinctUntilChanged());
|
|
1833
|
+
this.menuItemTooltipDisabled$ = combineLatest([
|
|
1834
|
+
this.expanded$,
|
|
1835
|
+
this.overlay$,
|
|
1836
|
+
]).pipe(map(([expanded, overlay]) => {
|
|
1737
1837
|
// never display tooltip on mobile, it breaks the layout
|
|
1738
1838
|
if (overlay) {
|
|
1739
1839
|
return true;
|
|
1740
1840
|
}
|
|
1741
|
-
return this.menuItemTooltipConfig?.behavior === 'always'
|
|
1742
|
-
|
|
1743
|
-
|
|
1841
|
+
return this.menuItemTooltipConfig?.behavior === 'always'
|
|
1842
|
+
? false
|
|
1843
|
+
: this.menuItemTooltipConfig?.behavior === 'never'
|
|
1844
|
+
? true
|
|
1845
|
+
: this.menuItemTooltipConfig?.behavior === 'collapseOnly'
|
|
1846
|
+
? expanded
|
|
1847
|
+
: true;
|
|
1744
1848
|
}), distinctUntilChanged());
|
|
1745
1849
|
}
|
|
1746
1850
|
ngOnInit() {
|
|
@@ -1749,10 +1853,10 @@ class SideNavComponent {
|
|
|
1749
1853
|
}
|
|
1750
1854
|
this.isMobile$
|
|
1751
1855
|
.pipe(takeUntil(this._ngUnsubscribe))
|
|
1752
|
-
.subscribe(b => this.overlay = b);
|
|
1856
|
+
.subscribe((b) => (this.overlay = b));
|
|
1753
1857
|
this.sideNavExpandedState$
|
|
1754
1858
|
.pipe(takeUntil(this._ngUnsubscribe))
|
|
1755
|
-
.subscribe(v => this._sideNavExpand = v);
|
|
1859
|
+
.subscribe((v) => (this._sideNavExpand = v));
|
|
1756
1860
|
if (this._sideBarHeaderTpl) {
|
|
1757
1861
|
this._sideBarHeaderPortal = new TemplatePortal(this._sideBarHeaderTpl, this._viewContainerRef);
|
|
1758
1862
|
}
|
|
@@ -1789,28 +1893,40 @@ class SideNavComponent {
|
|
|
1789
1893
|
get expandOriginTransform() {
|
|
1790
1894
|
switch (this.expandOrigin) {
|
|
1791
1895
|
case 'right':
|
|
1792
|
-
return this._sideNavExpand === EXPANDED_OVERLAY_STATE
|
|
1793
|
-
|
|
1896
|
+
return this._sideNavExpand === EXPANDED_OVERLAY_STATE
|
|
1897
|
+
? 'translateX(100vw) translateX(-100%)'
|
|
1898
|
+
: this._sideNavExpand === COLLAPSED_OVERLAY_STATE
|
|
1899
|
+
? 'translateX(100vw)'
|
|
1900
|
+
: null;
|
|
1794
1901
|
case 'top':
|
|
1795
|
-
return this._sideNavExpand === EXPANDED_OVERLAY_STATE
|
|
1796
|
-
|
|
1902
|
+
return this._sideNavExpand === EXPANDED_OVERLAY_STATE
|
|
1903
|
+
? 'translateY(0)'
|
|
1904
|
+
: this._sideNavExpand === COLLAPSED_OVERLAY_STATE
|
|
1905
|
+
? 'translateY(-100%)'
|
|
1906
|
+
: null;
|
|
1797
1907
|
case 'bottom':
|
|
1798
|
-
return this._sideNavExpand === EXPANDED_OVERLAY_STATE
|
|
1799
|
-
|
|
1908
|
+
return this._sideNavExpand === EXPANDED_OVERLAY_STATE
|
|
1909
|
+
? 'translateY(100vh) translateY(-100%)'
|
|
1910
|
+
: this._sideNavExpand === COLLAPSED_OVERLAY_STATE
|
|
1911
|
+
? 'translateY(100vh)'
|
|
1912
|
+
: null;
|
|
1800
1913
|
case 'left':
|
|
1801
1914
|
default:
|
|
1802
|
-
return this._sideNavExpand === EXPANDED_OVERLAY_STATE
|
|
1803
|
-
|
|
1915
|
+
return this._sideNavExpand === EXPANDED_OVERLAY_STATE
|
|
1916
|
+
? 'translateX(0)'
|
|
1917
|
+
: this._sideNavExpand === COLLAPSED_OVERLAY_STATE
|
|
1918
|
+
? 'translateX(-100%)'
|
|
1919
|
+
: null;
|
|
1804
1920
|
}
|
|
1805
1921
|
}
|
|
1806
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1807
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
1922
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: SideNavComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1$3.TheSeamLayoutService }, { token: TheSeamSideNavService }, { token: THESEAM_SIDE_NAV_CONFIG, optional: true }, { token: THESEAM_BASE_LAYOUT_REF, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
1923
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: SideNavComponent, isStandalone: true, selector: "seam-side-nav", inputs: { hasHeaderToggle: "hasHeaderToggle", toggleIcon: "toggleIcon", toggleTpl: "toggleTpl", items: "items", hideEmptyIcon: "hideEmptyIcon", indentSize: "indentSize", expanded: "expanded", expandOrigin: "expandOrigin", expandHeight: "expandHeight", expandWidth: "expandWidth", overlay: "overlay", menuItemTooltipConfig: "menuItemTooltipConfig" }, outputs: { toggleExpand: "toggleExpand" }, host: { properties: { "@sideNavAnim": "this._sideNavExpand" } }, providers: [
|
|
1808
1924
|
TheSeamSideNavService,
|
|
1809
1925
|
{
|
|
1810
1926
|
provide: THESEAM_SIDE_NAV_ACCESSOR,
|
|
1811
|
-
useExisting: SideNavComponent
|
|
1927
|
+
useExisting: SideNavComponent,
|
|
1812
1928
|
},
|
|
1813
|
-
], queries: [{ propertyName: "_sideBarHeaderTpl", first: true, predicate: BaseLayoutSideBarHeaderDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_sideBarFooterTpl", first: true, predicate: BaseLayoutSideBarFooterDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div
|
|
1929
|
+
], queries: [{ propertyName: "_sideBarHeaderTpl", first: true, predicate: BaseLayoutSideBarHeaderDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_sideBarFooterTpl", first: true, predicate: BaseLayoutSideBarFooterDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div\n class=\"side-nav-backdrop\"\n *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"\n (click)=\"collapse()\"\n></div>\n\n<div\n class=\"side-nav-inner-wrapper\"\n [@sideNavExpand]=\"{\n value: _sideNavExpand,\n params: {\n origin: expandOriginTransform,\n height: expandHeight,\n width: expandWidth,\n },\n }\"\n (@sideNavExpand.start)=\"animateStart()\"\n (@sideNavExpand.done)=\"animateEnd()\"\n>\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle\n *ngIf=\"hasHeaderToggle\"\n [toggleIcon]=\"toggleIcon\"\n [toggleTpl]=\"toggleTpl\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\"\n >\n <ng-template [cdkPortalOutlet]=\"_sideBarHeaderPortal\"></ng-template>\n </seam-side-nav-toggle>\n <div class=\"side-nav-items-container\" seamOverlayScrollbar>\n <div class=\"side-nav--group side-nav--group--level-0\">\n <seam-side-nav-item\n *ngFor=\"let item of items$ | async\"\n [compact]=\"!(expanded$ | async)\"\n [isMobile]=\"isMobile$ | async\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state?.active\"\n [expanded]=\"$any(item).__state?.expanded\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n [indentSize]=\"indentSize\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled$ | async\"\n >\n [activeNavigatable]=\"$any(item).activeNavigatable\">\n </seam-side-nav-item>\n </div>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n", styles: ["seam-side-nav,.seam-side-nav{display:block;height:100%;position:relative;z-index:2;overflow:hidden}seam-side-nav .side-nav-inner-wrapper,.seam-side-nav .side-nav-inner-wrapper{background:#357ebd;height:100%}seam-side-nav .side-nav-backdrop,.seam-side-nav .side-nav-backdrop{background:#343a4099;width:100vw;height:100vh}seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden,.seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-side-nav .side-nav-content,.seam-side-nav .side-nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-side-nav .side-nav-items-container,.seam-side-nav .side-nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: TheSeamOverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "ngmodule", type: TheSeamLayoutModule }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "hideEmptyIcon", "label", "active", "activeNavigatable", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "isMobile", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "menuItemTooltipConfig", "menuItemTooltipDisabled"], exportAs: ["seamSideNavItem"] }, { kind: "component", type: SideNavToggleComponent, selector: "seam-side-nav-toggle", inputs: ["expanded", "toggleIcon", "toggleTpl"], outputs: ["toggleExpand"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], animations: [
|
|
1814
1930
|
//
|
|
1815
1931
|
// TODO: This animation code turned into a mess. Clean it up and make it
|
|
1816
1932
|
// more smooth.
|
|
@@ -1850,7 +1966,7 @@ class SideNavComponent {
|
|
|
1850
1966
|
origin: 'translateX(100%)',
|
|
1851
1967
|
height: '100%',
|
|
1852
1968
|
width: 'calc(100vw - 50px)',
|
|
1853
|
-
}
|
|
1969
|
+
},
|
|
1854
1970
|
}),
|
|
1855
1971
|
state(COLLAPSED_OVERLAY_STATE, style({
|
|
1856
1972
|
position: 'absolute',
|
|
@@ -1867,7 +1983,7 @@ class SideNavComponent {
|
|
|
1867
1983
|
origin: 'translateX(0)',
|
|
1868
1984
|
height: '100%',
|
|
1869
1985
|
width: 'calc(100vw - 50px)',
|
|
1870
|
-
}
|
|
1986
|
+
},
|
|
1871
1987
|
}),
|
|
1872
1988
|
// transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
|
|
1873
1989
|
transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
|
|
@@ -1881,7 +1997,7 @@ class SideNavComponent {
|
|
|
1881
1997
|
// animate('5.2s ease-in-out')
|
|
1882
1998
|
// ])
|
|
1883
1999
|
// ]),
|
|
1884
|
-
])
|
|
2000
|
+
]),
|
|
1885
2001
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1886
2002
|
}
|
|
1887
2003
|
__decorate([
|
|
@@ -1890,13 +2006,13 @@ __decorate([
|
|
|
1890
2006
|
__decorate([
|
|
1891
2007
|
InputNumber(10)
|
|
1892
2008
|
], SideNavComponent.prototype, "indentSize", void 0);
|
|
1893
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2009
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: SideNavComponent, decorators: [{
|
|
1894
2010
|
type: Component,
|
|
1895
2011
|
args: [{ selector: 'seam-side-nav', providers: [
|
|
1896
2012
|
TheSeamSideNavService,
|
|
1897
2013
|
{
|
|
1898
2014
|
provide: THESEAM_SIDE_NAV_ACCESSOR,
|
|
1899
|
-
useExisting: SideNavComponent
|
|
2015
|
+
useExisting: SideNavComponent,
|
|
1900
2016
|
},
|
|
1901
2017
|
], animations: [
|
|
1902
2018
|
//
|
|
@@ -1938,7 +2054,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
1938
2054
|
origin: 'translateX(100%)',
|
|
1939
2055
|
height: '100%',
|
|
1940
2056
|
width: 'calc(100vw - 50px)',
|
|
1941
|
-
}
|
|
2057
|
+
},
|
|
1942
2058
|
}),
|
|
1943
2059
|
state(COLLAPSED_OVERLAY_STATE, style({
|
|
1944
2060
|
position: 'absolute',
|
|
@@ -1955,7 +2071,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
1955
2071
|
origin: 'translateX(0)',
|
|
1956
2072
|
height: '100%',
|
|
1957
2073
|
width: 'calc(100vw - 50px)',
|
|
1958
|
-
}
|
|
2074
|
+
},
|
|
1959
2075
|
}),
|
|
1960
2076
|
// transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
|
|
1961
2077
|
transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
|
|
@@ -1969,7 +2085,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
1969
2085
|
// animate('5.2s ease-in-out')
|
|
1970
2086
|
// ])
|
|
1971
2087
|
// ]),
|
|
1972
|
-
])
|
|
2088
|
+
]),
|
|
1973
2089
|
], imports: [
|
|
1974
2090
|
CommonModule,
|
|
1975
2091
|
A11yModule,
|
|
@@ -1978,7 +2094,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
1978
2094
|
PortalModule,
|
|
1979
2095
|
SideNavItemComponent,
|
|
1980
2096
|
SideNavToggleComponent,
|
|
1981
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, template: "<div
|
|
2097
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, template: "<div\n class=\"side-nav-backdrop\"\n *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"\n (click)=\"collapse()\"\n></div>\n\n<div\n class=\"side-nav-inner-wrapper\"\n [@sideNavExpand]=\"{\n value: _sideNavExpand,\n params: {\n origin: expandOriginTransform,\n height: expandHeight,\n width: expandWidth,\n },\n }\"\n (@sideNavExpand.start)=\"animateStart()\"\n (@sideNavExpand.done)=\"animateEnd()\"\n>\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle\n *ngIf=\"hasHeaderToggle\"\n [toggleIcon]=\"toggleIcon\"\n [toggleTpl]=\"toggleTpl\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\"\n >\n <ng-template [cdkPortalOutlet]=\"_sideBarHeaderPortal\"></ng-template>\n </seam-side-nav-toggle>\n <div class=\"side-nav-items-container\" seamOverlayScrollbar>\n <div class=\"side-nav--group side-nav--group--level-0\">\n <seam-side-nav-item\n *ngFor=\"let item of items$ | async\"\n [compact]=\"!(expanded$ | async)\"\n [isMobile]=\"isMobile$ | async\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state?.active\"\n [expanded]=\"$any(item).__state?.expanded\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n [indentSize]=\"indentSize\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled$ | async\"\n >\n [activeNavigatable]=\"$any(item).activeNavigatable\">\n </seam-side-nav-item>\n </div>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n", styles: ["seam-side-nav,.seam-side-nav{display:block;height:100%;position:relative;z-index:2;overflow:hidden}seam-side-nav .side-nav-inner-wrapper,.seam-side-nav .side-nav-inner-wrapper{background:#357ebd;height:100%}seam-side-nav .side-nav-backdrop,.seam-side-nav .side-nav-backdrop{background:#343a4099;width:100vw;height:100vh}seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden,.seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-side-nav .side-nav-content,.seam-side-nav .side-nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-side-nav .side-nav-items-container,.seam-side-nav .side-nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}\n"] }]
|
|
1982
2098
|
}], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i1$3.TheSeamLayoutService }, { type: TheSeamSideNavService }, { type: undefined, decorators: [{
|
|
1983
2099
|
type: Optional
|
|
1984
2100
|
}, {
|
|
@@ -2020,36 +2136,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
2020
2136
|
type: Output
|
|
2021
2137
|
}], _sideBarHeaderTpl: [{
|
|
2022
2138
|
type: ContentChild,
|
|
2023
|
-
args: [BaseLayoutSideBarHeaderDirective, {
|
|
2139
|
+
args: [BaseLayoutSideBarHeaderDirective, {
|
|
2140
|
+
static: true,
|
|
2141
|
+
read: TemplateRef,
|
|
2142
|
+
}]
|
|
2024
2143
|
}], _sideBarFooterTpl: [{
|
|
2025
2144
|
type: ContentChild,
|
|
2026
|
-
args: [BaseLayoutSideBarFooterDirective, {
|
|
2145
|
+
args: [BaseLayoutSideBarFooterDirective, {
|
|
2146
|
+
static: true,
|
|
2147
|
+
read: TemplateRef,
|
|
2148
|
+
}]
|
|
2027
2149
|
}] } });
|
|
2028
2150
|
|
|
2029
2151
|
class TheSeamSideNavModule {
|
|
2030
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2031
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
SideNavToggleComponent] });
|
|
2036
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSideNavModule, imports: [SideNavItemComponent,
|
|
2037
|
-
SideNavComponent,
|
|
2038
|
-
SideNavToggleComponent] });
|
|
2039
|
-
}
|
|
2040
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSideNavModule, decorators: [{
|
|
2152
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSideNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2153
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSideNavModule, imports: [SideNavItemComponent, SideNavComponent, SideNavToggleComponent], exports: [SideNavItemComponent, SideNavComponent, SideNavToggleComponent] });
|
|
2154
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSideNavModule, imports: [SideNavItemComponent, SideNavComponent, SideNavToggleComponent] });
|
|
2155
|
+
}
|
|
2156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSideNavModule, decorators: [{
|
|
2041
2157
|
type: NgModule,
|
|
2042
2158
|
args: [{
|
|
2043
|
-
imports: [
|
|
2044
|
-
|
|
2045
|
-
SideNavComponent,
|
|
2046
|
-
SideNavToggleComponent,
|
|
2047
|
-
],
|
|
2048
|
-
exports: [
|
|
2049
|
-
SideNavItemComponent,
|
|
2050
|
-
SideNavComponent,
|
|
2051
|
-
SideNavToggleComponent,
|
|
2052
|
-
]
|
|
2159
|
+
imports: [SideNavItemComponent, SideNavComponent, SideNavToggleComponent],
|
|
2160
|
+
exports: [SideNavItemComponent, SideNavComponent, SideNavToggleComponent],
|
|
2053
2161
|
}]
|
|
2054
2162
|
}] });
|
|
2055
2163
|
|
|
@@ -2066,28 +2174,32 @@ class TopBarMenuButtonComponent extends _TopBarMenuButtonMixinBase {
|
|
|
2066
2174
|
compact = false;
|
|
2067
2175
|
/** Icon to display on mobile to activate profile dropdown. Defaults to faUserCircle. */
|
|
2068
2176
|
profileIcon;
|
|
2069
|
-
get _hasCompactClass() {
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
get
|
|
2073
|
-
|
|
2074
|
-
|
|
2177
|
+
get _hasCompactClass() {
|
|
2178
|
+
return this.compact;
|
|
2179
|
+
}
|
|
2180
|
+
get _hasPadding0Class() {
|
|
2181
|
+
return this.compact;
|
|
2182
|
+
}
|
|
2183
|
+
get _hasRoundedClass() {
|
|
2184
|
+
return this.compact;
|
|
2185
|
+
}
|
|
2186
|
+
get _hasBtnLinkClass() {
|
|
2187
|
+
return !this.compact;
|
|
2188
|
+
}
|
|
2189
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TopBarMenuButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2190
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TopBarMenuButtonComponent, isStandalone: true, selector: "button[seamTopBarMenuButton]", inputs: { disabled: "disabled", detailTpl: "detailTpl", compactDetailTpl: "compactDetailTpl", compact: "compact", profileIcon: "profileIcon" }, host: { attributes: { "attr.type": "button" }, properties: { "attr.aria-disabled": "disabled.toString()", "attr.disabled": "disabled || null", "class.top-bar-menu-button--compact": "this._hasCompactClass", "class.p-0": "this._hasPadding0Class", "class.rounded": "this._hasRoundedClass", "class.btn-link": "this._hasBtnLinkClass" }, classAttribute: "btn border text-decoration-none py-0 top-bar-menu-button" }, exportAs: ["seamButton"], usesInheritance: true, ngImport: i0, template: "<div class=\"d-flex flex-row\" *ngIf=\"!compact; else compactTpl\">\n <div class=\"text-left flex-grow-1 text-truncate\">\n <ng-template [ngTemplateOutlet]=\"$any(detailTpl)\"></ng-template>\n </div>\n <!-- Arrow Button -->\n <div class=\"pl-2 d-flex flex-column\">\n <div class=\"flex-grow-1\"></div>\n <seam-icon class=\"d-block\" [icon]=\"faAngleDown\"></seam-icon>\n <div class=\"flex-grow-1\"></div>\n </div>\n</div>\n<ng-template #compactTpl>\n <ng-container *ngIf=\"compactDetailTpl; else iconTpl\">\n <ng-template [ngTemplateOutlet]=\"$any(compactDetailTpl)\"></ng-template>\n </ng-container>\n <ng-template #iconTpl>\n <seam-icon\n [icon]=\"profileIcon\"\n iconType=\"borderless-styled-square\"\n ></seam-icon>\n </ng-template>\n</ng-template>\n", styles: ["button[seamTopBarMenuButton]{min-width:200px;border-radius:0;border-top:0!important;border-bottom:0!important;border-right:0!important}button[seamTopBarMenuButton].top-bar-menu-button--compact{min-width:40px;border-left:0!important}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2075
2191
|
}
|
|
2076
2192
|
__decorate([
|
|
2077
2193
|
InputBoolean()
|
|
2078
2194
|
], TopBarMenuButtonComponent.prototype, "compact", void 0);
|
|
2079
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2195
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TopBarMenuButtonComponent, decorators: [{
|
|
2080
2196
|
type: Component,
|
|
2081
2197
|
args: [{ selector: 'button[seamTopBarMenuButton]', encapsulation: ViewEncapsulation.None, exportAs: 'seamButton', inputs: ['disabled'], host: {
|
|
2082
2198
|
'attr.type': 'button',
|
|
2083
|
-
|
|
2199
|
+
class: 'btn border text-decoration-none py-0 top-bar-menu-button',
|
|
2084
2200
|
'[attr.aria-disabled]': 'disabled.toString()',
|
|
2085
2201
|
'[attr.disabled]': 'disabled || null',
|
|
2086
|
-
}, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
2087
|
-
NgIf,
|
|
2088
|
-
NgTemplateOutlet,
|
|
2089
|
-
TheSeamIconModule,
|
|
2090
|
-
], template: "<div class=\"d-flex flex-row\" *ngIf=\"!compact; else compactTpl\">\n <div class=\"text-left flex-grow-1 text-truncate\">\n <ng-template [ngTemplateOutlet]=\"$any(detailTpl)\"></ng-template>\n </div>\n <!-- Arrow Button -->\n <div class=\"pl-2 d-flex flex-column\">\n <div class=\"flex-grow-1\"></div>\n <seam-icon class=\"d-block\" [icon]=\"faAngleDown\"></seam-icon>\n <div class=\"flex-grow-1\"></div>\n </div>\n</div>\n<ng-template #compactTpl>\n <ng-container *ngIf=\"compactDetailTpl; else iconTpl\">\n <ng-template [ngTemplateOutlet]=\"$any(compactDetailTpl)\"></ng-template>\n </ng-container>\n <ng-template #iconTpl>\n <seam-icon [icon]=\"profileIcon\" iconType=\"borderless-styled-square\"></seam-icon>\n </ng-template>\n</ng-template>\n", styles: ["button[seamTopBarMenuButton]{min-width:200px;border-radius:0;border-top:0!important;border-bottom:0!important;border-right:0!important}button[seamTopBarMenuButton].top-bar-menu-button--compact{min-width:40px;border-left:0!important}\n"] }]
|
|
2202
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgIf, NgTemplateOutlet, TheSeamIconModule], template: "<div class=\"d-flex flex-row\" *ngIf=\"!compact; else compactTpl\">\n <div class=\"text-left flex-grow-1 text-truncate\">\n <ng-template [ngTemplateOutlet]=\"$any(detailTpl)\"></ng-template>\n </div>\n <!-- Arrow Button -->\n <div class=\"pl-2 d-flex flex-column\">\n <div class=\"flex-grow-1\"></div>\n <seam-icon class=\"d-block\" [icon]=\"faAngleDown\"></seam-icon>\n <div class=\"flex-grow-1\"></div>\n </div>\n</div>\n<ng-template #compactTpl>\n <ng-container *ngIf=\"compactDetailTpl; else iconTpl\">\n <ng-template [ngTemplateOutlet]=\"$any(compactDetailTpl)\"></ng-template>\n </ng-container>\n <ng-template #iconTpl>\n <seam-icon\n [icon]=\"profileIcon\"\n iconType=\"borderless-styled-square\"\n ></seam-icon>\n </ng-template>\n</ng-template>\n", styles: ["button[seamTopBarMenuButton]{min-width:200px;border-radius:0;border-top:0!important;border-bottom:0!important;border-right:0!important}button[seamTopBarMenuButton].top-bar-menu-button--compact{min-width:40px;border-left:0!important}\n"] }]
|
|
2091
2203
|
}], propDecorators: { detailTpl: [{
|
|
2092
2204
|
type: Input
|
|
2093
2205
|
}], compactDetailTpl: [{
|
|
@@ -2113,16 +2225,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
2113
2225
|
class TopBarTitleComponent {
|
|
2114
2226
|
titleText;
|
|
2115
2227
|
subTitleText;
|
|
2116
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2117
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
2228
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TopBarTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2229
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TopBarTitleComponent, isStandalone: true, selector: "seam-top-bar-title", inputs: { titleText: "titleText", subTitleText: "subTitleText" }, ngImport: i0, template: "<h2\n class=\"mb-0\"\n [ngStyle]=\"{ 'font-size.px': 32 }\"\n [ngStyle.lt-md]=\"{ 'font-size.px': 26 }\"\n [ngStyle.lt-sm]=\"{ 'font-size.px': 20, 'line-height': 1 }\"\n>\n {{ titleText }}\n <br fxHide.gt-sm />\n <small *ngIf=\"subTitleText\" class=\"text-muted\">{{ subTitleText }}</small>\n</h2>\n", styles: ["seam-top-bar-title{flex:1 1 auto;display:flex;flex-direction:row;align-items:center}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1$4.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "directive", type: i1$4.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2118
2230
|
}
|
|
2119
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2231
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TopBarTitleComponent, decorators: [{
|
|
2120
2232
|
type: Component,
|
|
2121
|
-
args: [{ selector: 'seam-top-bar-title', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
2122
|
-
NgIf,
|
|
2123
|
-
NgStyle,
|
|
2124
|
-
FlexLayoutModule,
|
|
2125
|
-
], template: "<h2 class=\"mb-0\" [ngStyle]=\"{ 'font-size.px': 32 }\" [ngStyle.lt-md]=\"{ 'font-size.px': 26 }\" [ngStyle.lt-sm]=\"{ 'font-size.px': 20, 'line-height': 1 }\">\n {{ titleText }}\n <br fxHide.gt-sm>\n <small *ngIf=\"subTitleText\" class=\"text-muted\">{{ subTitleText }}</small>\n</h2>\n", styles: ["seam-top-bar-title{flex:1 1 auto;display:flex;flex-direction:row;align-items:center}\n"] }]
|
|
2233
|
+
args: [{ selector: 'seam-top-bar-title', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgIf, NgStyle, FlexLayoutModule], template: "<h2\n class=\"mb-0\"\n [ngStyle]=\"{ 'font-size.px': 32 }\"\n [ngStyle.lt-md]=\"{ 'font-size.px': 26 }\"\n [ngStyle.lt-sm]=\"{ 'font-size.px': 20, 'line-height': 1 }\"\n>\n {{ titleText }}\n <br fxHide.gt-sm />\n <small *ngIf=\"subTitleText\" class=\"text-muted\">{{ subTitleText }}</small>\n</h2>\n", styles: ["seam-top-bar-title{flex:1 1 auto;display:flex;flex-direction:row;align-items:center}\n"] }]
|
|
2126
2234
|
}], propDecorators: { titleText: [{
|
|
2127
2235
|
type: Input
|
|
2128
2236
|
}], subTitleText: [{
|
|
@@ -2131,10 +2239,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
2131
2239
|
|
|
2132
2240
|
class TopBarCompactMenuBtnDetailDirective {
|
|
2133
2241
|
template = inject((TemplateRef));
|
|
2134
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2135
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
2242
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TopBarCompactMenuBtnDetailDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2243
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: TopBarCompactMenuBtnDetailDirective, isStandalone: true, selector: "[seamTopBarCompactMenuBtnDetail]", exportAs: ["seamTopBarCompactMenuBtnDetail"], ngImport: i0 });
|
|
2136
2244
|
}
|
|
2137
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2245
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TopBarCompactMenuBtnDetailDirective, decorators: [{
|
|
2138
2246
|
type: Directive,
|
|
2139
2247
|
args: [{
|
|
2140
2248
|
selector: '[seamTopBarCompactMenuBtnDetail]',
|
|
@@ -2144,10 +2252,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
2144
2252
|
|
|
2145
2253
|
class TopBarNavToggleBtnDetailDirective {
|
|
2146
2254
|
template = inject((TemplateRef));
|
|
2147
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2148
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
2255
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TopBarNavToggleBtnDetailDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2256
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: TopBarNavToggleBtnDetailDirective, isStandalone: true, selector: "[seamTopBarNavToggleBtnDetail]", exportAs: ["seamTopBarNavToggleBtnDetail"], ngImport: i0 });
|
|
2149
2257
|
}
|
|
2150
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2258
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TopBarNavToggleBtnDetailDirective, decorators: [{
|
|
2151
2259
|
type: Directive,
|
|
2152
2260
|
args: [{
|
|
2153
2261
|
selector: '[seamTopBarNavToggleBtnDetail]',
|
|
@@ -2161,10 +2269,10 @@ class TopBarItemDirective {
|
|
|
2161
2269
|
set seamTopBarItem(value) {
|
|
2162
2270
|
this.position = value;
|
|
2163
2271
|
}
|
|
2164
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2165
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
2272
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TopBarItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2273
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: TopBarItemDirective, isStandalone: true, selector: "[seamTopBarItem]", inputs: { seamTopBarItem: "seamTopBarItem" }, exportAs: ["seamTopBarItem"], ngImport: i0 });
|
|
2166
2274
|
}
|
|
2167
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2275
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TopBarItemDirective, decorators: [{
|
|
2168
2276
|
type: Directive,
|
|
2169
2277
|
args: [{
|
|
2170
2278
|
selector: '[seamTopBarItem]',
|
|
@@ -2176,10 +2284,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
2176
2284
|
|
|
2177
2285
|
class TopBarMenuBtnDetailDirective {
|
|
2178
2286
|
template = inject((TemplateRef));
|
|
2179
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2180
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
2287
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TopBarMenuBtnDetailDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2288
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: TopBarMenuBtnDetailDirective, isStandalone: true, selector: "[seamTopBarMenuBtnDetail]", exportAs: ["seamTopBarMenuBtnDetail"], ngImport: i0 });
|
|
2181
2289
|
}
|
|
2182
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2290
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TopBarMenuBtnDetailDirective, decorators: [{
|
|
2183
2291
|
type: Directive,
|
|
2184
2292
|
args: [{
|
|
2185
2293
|
selector: '[seamTopBarMenuBtnDetail]',
|
|
@@ -2189,10 +2297,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
2189
2297
|
|
|
2190
2298
|
class TopBarMenuDirective {
|
|
2191
2299
|
menu = inject(MenuComponent, { self: true });
|
|
2192
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2193
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
2300
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TopBarMenuDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2301
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: TopBarMenuDirective, isStandalone: true, selector: "seam-menu[seamTopBarMenu]", exportAs: ["seamTopBarMenu"], ngImport: i0 });
|
|
2194
2302
|
}
|
|
2195
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2303
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TopBarMenuDirective, decorators: [{
|
|
2196
2304
|
type: Directive,
|
|
2197
2305
|
args: [{
|
|
2198
2306
|
selector: 'seam-menu[seamTopBarMenu]',
|
|
@@ -2278,19 +2386,21 @@ class TheSeamTopBarComponent {
|
|
|
2278
2386
|
/** @ignore */
|
|
2279
2387
|
ngAfterContentInit() {
|
|
2280
2388
|
if (this._topBarItems) {
|
|
2281
|
-
this._topBarItems.changes
|
|
2389
|
+
this._topBarItems.changes
|
|
2390
|
+
.pipe(startWith(undefined), map(() => {
|
|
2282
2391
|
const items = this._topBarItems?.toArray() || [];
|
|
2283
|
-
const left = items.filter(i => i.position === 'left');
|
|
2284
|
-
const right = items.filter(i => i.position === 'right');
|
|
2285
|
-
const center = items.filter(i => i.position === 'center');
|
|
2392
|
+
const left = items.filter((i) => i.position === 'left');
|
|
2393
|
+
const right = items.filter((i) => i.position === 'right');
|
|
2394
|
+
const center = items.filter((i) => i.position === 'center');
|
|
2286
2395
|
this._leftItems.next(left);
|
|
2287
2396
|
this._rightItems.next(right);
|
|
2288
2397
|
this._centerItems.next(center);
|
|
2289
|
-
}), shareReplay({ bufferSize: 1, refCount: true }), takeUntil(this._ngUnsubscribe))
|
|
2398
|
+
}), shareReplay({ bufferSize: 1, refCount: true }), takeUntil(this._ngUnsubscribe))
|
|
2399
|
+
.subscribe();
|
|
2290
2400
|
}
|
|
2291
2401
|
}
|
|
2292
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2293
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
2402
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamTopBarComponent, deps: [{ token: i1$3.TheSeamLayoutService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2403
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamTopBarComponent, isStandalone: true, selector: "seam-top-bar", inputs: { logo: "logo", logoSm: "logoSm", logoHref: "logoHref", logoHrefTarget: "logoHrefTarget", logoRoute: "logoRoute", hasTitle: "hasTitle", titleText: "titleText", subTitleText: "subTitleText", hasTopBarMenuButton: "hasTopBarMenuButton", profileIcon: "profileIcon", toggleIcon: "toggleIcon", navToggleAlign: "navToggleAlign" }, queries: [{ propertyName: "_topBarMenu", first: true, predicate: TopBarMenuDirective, descendants: true, static: true }, { propertyName: "_topBarMenuBtnDetailTpl", first: true, predicate: TopBarMenuBtnDetailDirective, descendants: true }, { propertyName: "_topBarCompactMenuBtnDetailTpl", first: true, predicate: TopBarCompactMenuBtnDetailDirective, descendants: true }, { propertyName: "_topBarNavToggleBtnDetailTpl", first: true, predicate: TopBarNavToggleBtnDetailDirective, descendants: true }, { propertyName: "_topBarItems", predicate: TopBarItemDirective }], exportAs: ["seamTopBar"], ngImport: i0, template: "<div class=\"top-bar--left d-flex\">\n <!-- Nav Toggle -->\n <ng-container *ngIf=\"navToggleAlign === 'left'\">\n <ng-container *ngTemplateOutlet=\"navToggle\"></ng-container>\n </ng-container>\n\n <!-- Logo -->\n <div\n class=\"top-bar--logo d-flex flex-column justify-content-center\"\n *ngIf=\"logoHref; else useLogoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\"\n >\n <a [href]=\"logoHref\" [target]=\"logoHrefTarget\">\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </a>\n </div>\n\n <ng-template #useLogoRoute>\n <div\n class=\"top-bar--logo d-flex flex-column justify-content-center\"\n [routerLink]=\"logoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\"\n >\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </div>\n </ng-template>\n\n <ng-template #logoTpl>\n <div>\n <img\n *ngIf=\"logo\"\n [src]=\"logo\"\n [src.lt-md]=\"logoSm ? logoSm : logo\"\n alt=\"Logo\"\n />\n </div>\n </ng-template>\n\n <!-- Title -->\n <div class=\"d-flex flex-column\" *ngIf=\"hasTitle\">\n <seam-top-bar-title\n [titleText]=\"titleText\"\n [subTitleText]=\"subTitleText\"\n [class.ml-2]=\"isMobile$ | async\"\n >\n </seam-top-bar-title>\n </div>\n\n <!-- Items -->\n <div class=\"top-bar-items top-bar-items--left mr-2\">\n <ng-container *ngFor=\"let item of leftItems$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n </div>\n</div>\n\n<div class=\"top-bar--center\">\n <!-- Items -->\n <div class=\"top-bar-items top-bar-items--center mr-2\">\n <ng-container *ngFor=\"let item of centerItems$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n </div>\n</div>\n\n<div class=\"top-bar--right d-flex\">\n <!-- Items -->\n <div class=\"top-bar-items top-bar-items--right mr-2\">\n <ng-container *ngFor=\"let item of rightItems$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n </div>\n\n <!-- Menu -->\n <button\n *ngIf=\"hasTopBarMenuButton\"\n seamTopBarMenuButton\n [seamMenuToggle]=\"_topBarMenu?.menu\"\n [detailTpl]=\"_topBarMenuBtnDetailTpl?.template\"\n [compactDetailTpl]=\"_topBarCompactMenuBtnDetailTpl?.template\"\n [compact]=\"isMobile$ | async\"\n [profileIcon]=\"profileIcon\"\n ></button>\n\n <ng-container *ngIf=\"navToggleAlign === 'right'\">\n <ng-container *ngTemplateOutlet=\"navToggle\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #navToggle>\n <div\n class=\"d-flex flex-column justify-content-center pr-2\"\n *ngIf=\"isMobile$ | async\"\n >\n <ng-container *ngIf=\"_topBarNavToggleBtnDetailTpl; else iconBtn\">\n <button seamButton seamBaseLayoutNavToggle>\n <ng-template\n [ngTemplateOutlet]=\"_topBarNavToggleBtnDetailTpl?.template || null\"\n ></ng-template>\n </button>\n </ng-container>\n <ng-template #iconBtn>\n <button\n seamBaseLayoutNavToggle\n seamIconBtn\n [icon]=\"toggleIcon\"\n iconType=\"borderless-styled-square\"\n ></button>\n </ng-template>\n </div>\n</ng-template>\n", styles: ["seam-top-bar{display:flex;flex:1 1 100%;flex-direction:row;background:#fff;margin:0;padding:8px;border-radius:0;box-shadow:none}.top-bar--logo{flex:0 0 auto;overflow:hidden;cursor:pointer}.top-bar--logo img{height:auto;max-height:60px;width:auto;max-width:200px}.top-bar--logo.top-bar--logo-mobile img{height:auto;max-height:40px;width:auto;max-width:150px}.top-bar--left{flex-grow:1}.top-bar-items{display:flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: TheSeamButtonsModule }, { kind: "component", type: i3.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "component", type: i2.IconBtnComponent, selector: "button[seamIconBtn]", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "iconType", "btnTheme", "badgeTheme", "badgeText", "btnSize", "type", "role"] }, { kind: "ngmodule", type: TheSeamMenuModule }, { kind: "directive", type: i3$1.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "ngmodule", type: TheSeamBaseLayoutModule }, { kind: "directive", type: TheSeamBaseLayoutNavToggleDirective, selector: "button[seamBaseLayoutNavToggle]", inputs: ["type", "aria-label"], exportAs: ["seamBaseLayoutNavToggle"] }, { kind: "ngmodule", type: TheSeamLayoutModule }, { kind: "directive", type: i1$4.DefaultImgSrcDirective, selector: " img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl], img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl], img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]", inputs: ["src.xs", "src.sm", "src.md", "src.lg", "src.xl", "src.lt-sm", "src.lt-md", "src.lt-lg", "src.lt-xl", "src.gt-xs", "src.gt-sm", "src.gt-md", "src.gt-lg"] }, { kind: "component", type: TopBarTitleComponent, selector: "seam-top-bar-title", inputs: ["titleText", "subTitleText"] }, { kind: "component", type: TopBarMenuButtonComponent, selector: "button[seamTopBarMenuButton]", inputs: ["disabled", "detailTpl", "compactDetailTpl", "compact", "profileIcon"], exportAs: ["seamButton"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2294
2404
|
}
|
|
2295
2405
|
__decorate([
|
|
2296
2406
|
InputBoolean()
|
|
@@ -2298,7 +2408,7 @@ __decorate([
|
|
|
2298
2408
|
__decorate([
|
|
2299
2409
|
InputBoolean()
|
|
2300
2410
|
], TheSeamTopBarComponent.prototype, "hasTopBarMenuButton", void 0);
|
|
2301
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2411
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamTopBarComponent, decorators: [{
|
|
2302
2412
|
type: Component,
|
|
2303
2413
|
args: [{ selector: 'seam-top-bar', encapsulation: ViewEncapsulation.None, exportAs: 'seamTopBar', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
2304
2414
|
NgIf,
|
|
@@ -2314,7 +2424,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
2314
2424
|
TopBarTitleComponent,
|
|
2315
2425
|
TopBarMenuButtonComponent,
|
|
2316
2426
|
// TheSeamBaseLayoutNavToggleDirective,
|
|
2317
|
-
], template: "<div class=\"top-bar--left d-flex\">\n <!-- Nav Toggle -->\n <ng-container *ngIf=\"navToggleAlign === 'left'\">\n <ng-container *ngTemplateOutlet=\"navToggle\"></ng-container>\n </ng-container>\n\n <!-- Logo -->\n <div
|
|
2427
|
+
], template: "<div class=\"top-bar--left d-flex\">\n <!-- Nav Toggle -->\n <ng-container *ngIf=\"navToggleAlign === 'left'\">\n <ng-container *ngTemplateOutlet=\"navToggle\"></ng-container>\n </ng-container>\n\n <!-- Logo -->\n <div\n class=\"top-bar--logo d-flex flex-column justify-content-center\"\n *ngIf=\"logoHref; else useLogoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\"\n >\n <a [href]=\"logoHref\" [target]=\"logoHrefTarget\">\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </a>\n </div>\n\n <ng-template #useLogoRoute>\n <div\n class=\"top-bar--logo d-flex flex-column justify-content-center\"\n [routerLink]=\"logoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\"\n >\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </div>\n </ng-template>\n\n <ng-template #logoTpl>\n <div>\n <img\n *ngIf=\"logo\"\n [src]=\"logo\"\n [src.lt-md]=\"logoSm ? logoSm : logo\"\n alt=\"Logo\"\n />\n </div>\n </ng-template>\n\n <!-- Title -->\n <div class=\"d-flex flex-column\" *ngIf=\"hasTitle\">\n <seam-top-bar-title\n [titleText]=\"titleText\"\n [subTitleText]=\"subTitleText\"\n [class.ml-2]=\"isMobile$ | async\"\n >\n </seam-top-bar-title>\n </div>\n\n <!-- Items -->\n <div class=\"top-bar-items top-bar-items--left mr-2\">\n <ng-container *ngFor=\"let item of leftItems$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n </div>\n</div>\n\n<div class=\"top-bar--center\">\n <!-- Items -->\n <div class=\"top-bar-items top-bar-items--center mr-2\">\n <ng-container *ngFor=\"let item of centerItems$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n </div>\n</div>\n\n<div class=\"top-bar--right d-flex\">\n <!-- Items -->\n <div class=\"top-bar-items top-bar-items--right mr-2\">\n <ng-container *ngFor=\"let item of rightItems$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n </div>\n\n <!-- Menu -->\n <button\n *ngIf=\"hasTopBarMenuButton\"\n seamTopBarMenuButton\n [seamMenuToggle]=\"_topBarMenu?.menu\"\n [detailTpl]=\"_topBarMenuBtnDetailTpl?.template\"\n [compactDetailTpl]=\"_topBarCompactMenuBtnDetailTpl?.template\"\n [compact]=\"isMobile$ | async\"\n [profileIcon]=\"profileIcon\"\n ></button>\n\n <ng-container *ngIf=\"navToggleAlign === 'right'\">\n <ng-container *ngTemplateOutlet=\"navToggle\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #navToggle>\n <div\n class=\"d-flex flex-column justify-content-center pr-2\"\n *ngIf=\"isMobile$ | async\"\n >\n <ng-container *ngIf=\"_topBarNavToggleBtnDetailTpl; else iconBtn\">\n <button seamButton seamBaseLayoutNavToggle>\n <ng-template\n [ngTemplateOutlet]=\"_topBarNavToggleBtnDetailTpl?.template || null\"\n ></ng-template>\n </button>\n </ng-container>\n <ng-template #iconBtn>\n <button\n seamBaseLayoutNavToggle\n seamIconBtn\n [icon]=\"toggleIcon\"\n iconType=\"borderless-styled-square\"\n ></button>\n </ng-template>\n </div>\n</ng-template>\n", styles: ["seam-top-bar{display:flex;flex:1 1 100%;flex-direction:row;background:#fff;margin:0;padding:8px;border-radius:0;box-shadow:none}.top-bar--logo{flex:0 0 auto;overflow:hidden;cursor:pointer}.top-bar--logo img{height:auto;max-height:60px;width:auto;max-width:200px}.top-bar--logo.top-bar--logo-mobile img{height:auto;max-height:40px;width:auto;max-width:150px}.top-bar--left{flex-grow:1}.top-bar-items{display:flex;align-items:center}\n"] }]
|
|
2318
2428
|
}], ctorParameters: () => [{ type: i1$3.TheSeamLayoutService }], propDecorators: { _topBarMenu: [{
|
|
2319
2429
|
type: ContentChild,
|
|
2320
2430
|
args: [TopBarMenuDirective, { static: true }]
|
|
@@ -2357,8 +2467,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
2357
2467
|
}] } });
|
|
2358
2468
|
|
|
2359
2469
|
class TheSeamTopBarModule {
|
|
2360
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2361
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
2470
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamTopBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2471
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.7", ngImport: i0, type: TheSeamTopBarModule, imports: [TheSeamTopBarComponent,
|
|
2362
2472
|
TopBarTitleComponent,
|
|
2363
2473
|
TopBarMenuButtonComponent,
|
|
2364
2474
|
TopBarMenuDirective,
|
|
@@ -2372,11 +2482,11 @@ class TheSeamTopBarModule {
|
|
|
2372
2482
|
TopBarMenuBtnDetailDirective,
|
|
2373
2483
|
TopBarCompactMenuBtnDetailDirective,
|
|
2374
2484
|
TopBarNavToggleBtnDetailDirective] });
|
|
2375
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
2485
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamTopBarModule, imports: [TheSeamTopBarComponent,
|
|
2376
2486
|
TopBarTitleComponent,
|
|
2377
2487
|
TopBarMenuButtonComponent] });
|
|
2378
2488
|
}
|
|
2379
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2489
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamTopBarModule, decorators: [{
|
|
2380
2490
|
type: NgModule,
|
|
2381
2491
|
args: [{
|
|
2382
2492
|
imports: [
|
|
@@ -2416,7 +2526,7 @@ const fader = trigger('routeAnimations', [
|
|
|
2416
2526
|
// Animate the new page in
|
|
2417
2527
|
query(':enter', [
|
|
2418
2528
|
animate('600ms ease', style({ opacity: 1, transform: 'scale(1) translateY(0)' })),
|
|
2419
|
-
], { optional: true })
|
|
2529
|
+
], { optional: true }),
|
|
2420
2530
|
]),
|
|
2421
2531
|
]);
|
|
2422
2532
|
// function slideTo(direction) {
|
|
@@ -2467,25 +2577,17 @@ const slider = trigger('routeAnimations', [
|
|
|
2467
2577
|
position: 'absolute',
|
|
2468
2578
|
top: 0,
|
|
2469
2579
|
left: 0,
|
|
2470
|
-
width: '100%'
|
|
2471
|
-
})
|
|
2472
|
-
], { optional: true }),
|
|
2473
|
-
query('.router-container :enter', [
|
|
2474
|
-
style({ left: '-100%' })
|
|
2475
|
-
], { optional: true }),
|
|
2476
|
-
query('.hierarchy-router-outlet--content', [
|
|
2477
|
-
style({ left: '0%', position: 'absolute' })
|
|
2580
|
+
width: '100%',
|
|
2581
|
+
}),
|
|
2478
2582
|
], { optional: true }),
|
|
2583
|
+
query('.router-container :enter', [style({ left: '-100%' })], {
|
|
2584
|
+
optional: true,
|
|
2585
|
+
}),
|
|
2586
|
+
query('.hierarchy-router-outlet--content', [style({ left: '0%', position: 'absolute' })], { optional: true }),
|
|
2479
2587
|
group([
|
|
2480
|
-
query('.router-container :leave', [
|
|
2481
|
-
|
|
2482
|
-
], { optional: true }),
|
|
2483
|
-
query('.router-container :enter', [
|
|
2484
|
-
animate('1000ms ease', style({ left: '0%' }))
|
|
2485
|
-
], { optional: true }),
|
|
2486
|
-
query('.hierarchy-router-outlet--content', [
|
|
2487
|
-
animate('1000ms ease', style({ left: '-100%' }))
|
|
2488
|
-
], { optional: true }),
|
|
2588
|
+
query('.router-container :leave', [animate('1000ms ease', style({ left: '100%' }))], { optional: true }),
|
|
2589
|
+
query('.router-container :enter', [animate('1000ms ease', style({ left: '0%' }))], { optional: true }),
|
|
2590
|
+
query('.hierarchy-router-outlet--content', [animate('1000ms ease', style({ left: '-100%' }))], { optional: true }),
|
|
2489
2591
|
]),
|
|
2490
2592
|
// Normalize the page style... Might not be necessary
|
|
2491
2593
|
// Required only if you have child animations on the page
|
|
@@ -2498,25 +2600,17 @@ const slider = trigger('routeAnimations', [
|
|
|
2498
2600
|
position: 'absolute',
|
|
2499
2601
|
top: 0,
|
|
2500
2602
|
right: 0,
|
|
2501
|
-
width: '100%'
|
|
2502
|
-
})
|
|
2503
|
-
], { optional: true }),
|
|
2504
|
-
query('.router-container :enter', [
|
|
2505
|
-
style({ right: '-100%' })
|
|
2506
|
-
], { optional: true }),
|
|
2507
|
-
query('.hierarchy-router-outlet--content', [
|
|
2508
|
-
style({ left: '0%', position: 'absolute' })
|
|
2603
|
+
width: '100%',
|
|
2604
|
+
}),
|
|
2509
2605
|
], { optional: true }),
|
|
2606
|
+
query('.router-container :enter', [style({ right: '-100%' })], {
|
|
2607
|
+
optional: true,
|
|
2608
|
+
}),
|
|
2609
|
+
query('.hierarchy-router-outlet--content', [style({ left: '0%', position: 'absolute' })], { optional: true }),
|
|
2510
2610
|
group([
|
|
2511
|
-
query('.router-container :leave', [
|
|
2512
|
-
|
|
2513
|
-
], { optional: true }),
|
|
2514
|
-
query('.router-container :enter', [
|
|
2515
|
-
animate('1000ms ease', style({ right: '0%' }))
|
|
2516
|
-
], { optional: true }),
|
|
2517
|
-
query('.hierarchy-router-outlet--content', [
|
|
2518
|
-
animate('1000ms ease', style({ left: '-100%' }))
|
|
2519
|
-
], { optional: true }),
|
|
2611
|
+
query('.router-container :leave', [animate('1000ms ease', style({ right: '100%' }))], { optional: true }),
|
|
2612
|
+
query('.router-container :enter', [animate('1000ms ease', style({ right: '0%' }))], { optional: true }),
|
|
2613
|
+
query('.hierarchy-router-outlet--content', [animate('1000ms ease', style({ left: '-100%' }))], { optional: true }),
|
|
2520
2614
|
]),
|
|
2521
2615
|
// Normalize the page style... Might not be necessary
|
|
2522
2616
|
// Required only if you have child animations on the page
|
|
@@ -2529,25 +2623,17 @@ const slider = trigger('routeAnimations', [
|
|
|
2529
2623
|
position: 'absolute',
|
|
2530
2624
|
top: 0,
|
|
2531
2625
|
left: 0,
|
|
2532
|
-
width: '100%'
|
|
2533
|
-
})
|
|
2534
|
-
], { optional: true }),
|
|
2535
|
-
query('.router-container :enter', [
|
|
2536
|
-
style({ left: '-100%' })
|
|
2537
|
-
], { optional: true }),
|
|
2538
|
-
query('.hierarchy-router-outlet--content', [
|
|
2539
|
-
style({ left: '0%', position: 'absolute' })
|
|
2626
|
+
width: '100%',
|
|
2627
|
+
}),
|
|
2540
2628
|
], { optional: true }),
|
|
2629
|
+
query('.router-container :enter', [style({ left: '-100%' })], {
|
|
2630
|
+
optional: true,
|
|
2631
|
+
}),
|
|
2632
|
+
query('.hierarchy-router-outlet--content', [style({ left: '0%', position: 'absolute' })], { optional: true }),
|
|
2541
2633
|
group([
|
|
2542
|
-
query('.router-container :leave', [
|
|
2543
|
-
|
|
2544
|
-
], { optional: true }),
|
|
2545
|
-
query('.router-container :enter', [
|
|
2546
|
-
animate('1000ms ease', style({ left: '0%' }))
|
|
2547
|
-
], { optional: true }),
|
|
2548
|
-
query('.hierarchy-router-outlet--content', [
|
|
2549
|
-
animate('1000ms ease', style({ left: '-100%' }))
|
|
2550
|
-
], { optional: true }),
|
|
2634
|
+
query('.router-container :leave', [animate('1000ms ease', style({ left: '100%' }))], { optional: true }),
|
|
2635
|
+
query('.router-container :enter', [animate('1000ms ease', style({ left: '0%' }))], { optional: true }),
|
|
2636
|
+
query('.hierarchy-router-outlet--content', [animate('1000ms ease', style({ left: '-100%' }))], { optional: true }),
|
|
2551
2637
|
]),
|
|
2552
2638
|
// Normalize the page style... Might not be necessary
|
|
2553
2639
|
// Required only if you have child animations on the page
|
|
@@ -2560,31 +2646,27 @@ const slider = trigger('routeAnimations', [
|
|
|
2560
2646
|
position: 'absolute',
|
|
2561
2647
|
top: 0,
|
|
2562
2648
|
right: 0,
|
|
2563
|
-
width: '100%'
|
|
2564
|
-
})
|
|
2565
|
-
], { optional: true }),
|
|
2566
|
-
query('.router-container :enter', [
|
|
2567
|
-
style({ right: '-100%' })
|
|
2649
|
+
width: '100%',
|
|
2650
|
+
}),
|
|
2568
2651
|
], { optional: true }),
|
|
2652
|
+
query('.router-container :enter', [style({ right: '-100%' })], {
|
|
2653
|
+
optional: true,
|
|
2654
|
+
}),
|
|
2569
2655
|
group([
|
|
2570
|
-
query('.router-container :leave', [
|
|
2571
|
-
|
|
2572
|
-
], { optional: true }),
|
|
2573
|
-
query('.router-container :enter', [
|
|
2574
|
-
animate('1000ms ease', style({ right: '0%' }))
|
|
2575
|
-
], { optional: true })
|
|
2656
|
+
query('.router-container :leave', [animate('1000ms ease', style({ right: '100%' }))], { optional: true }),
|
|
2657
|
+
query('.router-container :enter', [animate('1000ms ease', style({ right: '0%' }))], { optional: true }),
|
|
2576
2658
|
]),
|
|
2577
2659
|
// Normalize the page style... Might not be necessary
|
|
2578
2660
|
// Required only if you have child animations on the page
|
|
2579
2661
|
query('.router-container :leave', animateChild(), { optional: true }),
|
|
2580
2662
|
query('.router-container :enter', animateChild(), { optional: true }),
|
|
2581
|
-
])
|
|
2663
|
+
]),
|
|
2582
2664
|
]);
|
|
2583
2665
|
const transformer = trigger('routeAnimations', [
|
|
2584
2666
|
transition('* => isLeft', transformTo({ x: -100, y: -100, rotate: -720 })),
|
|
2585
2667
|
transition('* => isRight', transformTo({ x: 100, y: -100, rotate: 90 })),
|
|
2586
2668
|
transition('isRight => *', transformTo({ x: -100, y: -100, rotate: 360 })),
|
|
2587
|
-
transition('isLeft => *', transformTo({ x: 100, y: -100, rotate: -360 }))
|
|
2669
|
+
transition('isLeft => *', transformTo({ x: 100, y: -100, rotate: -360 })),
|
|
2588
2670
|
]);
|
|
2589
2671
|
function transformTo({ x = 100, y = 0, rotate = 0 }) {
|
|
2590
2672
|
const optional = { optional: true };
|
|
@@ -2594,19 +2676,19 @@ function transformTo({ x = 100, y = 0, rotate = 0 }) {
|
|
|
2594
2676
|
position: 'absolute',
|
|
2595
2677
|
top: 0,
|
|
2596
2678
|
left: 0,
|
|
2597
|
-
width: '100%'
|
|
2598
|
-
})
|
|
2679
|
+
width: '100%',
|
|
2680
|
+
}),
|
|
2599
2681
|
], optional),
|
|
2600
|
-
query(':enter', [
|
|
2601
|
-
style({ transform: `translate(${x}%, ${y}%) rotate(${rotate}deg)` })
|
|
2602
|
-
], { optional: true }),
|
|
2682
|
+
query(':enter', [style({ transform: `translate(${x}%, ${y}%) rotate(${rotate}deg)` })], { optional: true }),
|
|
2603
2683
|
group([
|
|
2604
2684
|
query(':leave', [
|
|
2605
|
-
animate('600ms ease-out', style({
|
|
2685
|
+
animate('600ms ease-out', style({
|
|
2686
|
+
transform: `translate(${x}%, ${y}%) rotate(${rotate}deg)`,
|
|
2687
|
+
})),
|
|
2606
2688
|
], optional),
|
|
2607
2689
|
query(':enter', [
|
|
2608
|
-
animate('600ms ease-out', style({ transform: `translate(0, 0) rotate(0)` }))
|
|
2609
|
-
], { optional: true })
|
|
2690
|
+
animate('600ms ease-out', style({ transform: `translate(0, 0) rotate(0)` })),
|
|
2691
|
+
], { optional: true }),
|
|
2610
2692
|
]),
|
|
2611
2693
|
];
|
|
2612
2694
|
}
|
|
@@ -2630,34 +2712,41 @@ const stepper = trigger('routeAnimations', [
|
|
|
2630
2712
|
query(':leave', [
|
|
2631
2713
|
animate('2000ms ease', keyframes([
|
|
2632
2714
|
style({ transform: 'scale(1)', offset: 0 }),
|
|
2633
|
-
style({
|
|
2634
|
-
|
|
2715
|
+
style({
|
|
2716
|
+
transform: 'scale(0.5) translateX(-25%) rotate(0)',
|
|
2717
|
+
offset: 0.35,
|
|
2718
|
+
}),
|
|
2719
|
+
style({
|
|
2720
|
+
opacity: 0,
|
|
2721
|
+
transform: 'translateX(-50%) rotate(-180deg) scale(6)',
|
|
2722
|
+
offset: 1,
|
|
2723
|
+
}),
|
|
2635
2724
|
])),
|
|
2636
|
-
], { optional: true })
|
|
2725
|
+
], { optional: true }),
|
|
2637
2726
|
]),
|
|
2638
|
-
])
|
|
2727
|
+
]),
|
|
2639
2728
|
]);
|
|
2640
2729
|
const sideToSide = trigger('routeAnimations', [
|
|
2641
2730
|
transition('* => *', [
|
|
2642
2731
|
style({
|
|
2643
2732
|
position: 'fixed',
|
|
2644
2733
|
width: '100%',
|
|
2645
|
-
transform: 'translateX(-100%)'
|
|
2734
|
+
transform: 'translateX(-100%)',
|
|
2646
2735
|
}),
|
|
2647
|
-
animate('1000ms ease', style({ transform: 'translateX(0%)' }))
|
|
2736
|
+
animate('1000ms ease', style({ transform: 'translateX(0%)' })),
|
|
2648
2737
|
]),
|
|
2649
2738
|
transition(':leave', [
|
|
2650
2739
|
style({
|
|
2651
2740
|
position: 'fixed',
|
|
2652
2741
|
width: '100%',
|
|
2653
|
-
transform: 'translateX(0%)'
|
|
2742
|
+
transform: 'translateX(0%)',
|
|
2654
2743
|
}),
|
|
2655
|
-
animate('1000ms ease', style({ transform: 'translateX(-100%)' }))
|
|
2656
|
-
])
|
|
2744
|
+
animate('1000ms ease', style({ transform: 'translateX(-100%)' })),
|
|
2745
|
+
]),
|
|
2657
2746
|
]);
|
|
2658
2747
|
|
|
2659
2748
|
function routeChanges(router) {
|
|
2660
|
-
return router.events.pipe(filter(event => event instanceof NavigationStart || event instanceof NavigationEnd), distinctUntilChanged((x, y) => x.id === y.id), map(event => ({ url: event.url })));
|
|
2749
|
+
return router.events.pipe(filter((event) => event instanceof NavigationStart || event instanceof NavigationEnd), distinctUntilChanged((x, y) => x.id === y.id), map((event) => ({ url: event.url })));
|
|
2661
2750
|
}
|
|
2662
2751
|
//
|
|
2663
2752
|
// TODO: Animation improvement: Try adding a full component animation that
|
|
@@ -2678,7 +2767,8 @@ class HierarchyRouterOutletComponent {
|
|
|
2678
2767
|
constructor(_route, _router) {
|
|
2679
2768
|
this._route = _route;
|
|
2680
2769
|
this._router = _router;
|
|
2681
|
-
this._router.events
|
|
2770
|
+
this._router.events
|
|
2771
|
+
.pipe(filter((event) => event instanceof NavigationEnd),
|
|
2682
2772
|
// tap(v => console.log(`_hasChildren()[${this._uid}]`, this._hasChildren())),
|
|
2683
2773
|
takeUntil(this._ngUnsubscribe))
|
|
2684
2774
|
.subscribe();
|
|
@@ -2703,7 +2793,8 @@ class HierarchyRouterOutletComponent {
|
|
|
2703
2793
|
const count = this._route.pathFromRoot.length - 1;
|
|
2704
2794
|
let countFull = 0;
|
|
2705
2795
|
if (this._router.parseUrl(this._router.url).root.children.primary) {
|
|
2706
|
-
countFull = this._router.parseUrl(this._router.url).root.children.primary
|
|
2796
|
+
countFull = this._router.parseUrl(this._router.url).root.children.primary
|
|
2797
|
+
.segments.length;
|
|
2707
2798
|
}
|
|
2708
2799
|
// console.log(`_hasChildren[${this._uid}]`, { count, countFull })
|
|
2709
2800
|
return countFull > count;
|
|
@@ -2744,8 +2835,8 @@ class HierarchyRouterOutletComponent {
|
|
|
2744
2835
|
// console.log('routeAnimationsDone', event)
|
|
2745
2836
|
this.ngContentVisible = !this.outletActive;
|
|
2746
2837
|
}
|
|
2747
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2748
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
2838
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: HierarchyRouterOutletComponent, deps: [{ token: i1$2.ActivatedRoute }, { token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
2839
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: HierarchyRouterOutletComponent, isStandalone: false, selector: "seam-hierarchy-router-outlet", ngImport: i0, template: "<div\n class=\"h-100\"\n [@routeAnimations]=\"prepareRoute(outlet)\"\n (@routeAnimations.start)=\"routeAnimationsStart($event)\"\n (@routeAnimations.done)=\"routeAnimationsDone($event)\"\n>\n <div class=\"hierarchy-router-outlet--content h-100\" *ngIf=\"ngContentVisible\">\n <!-- {{ animState }} -->\n <div class=\"border border-info h-100\">\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"router-container\" [class.h-100]=\"!ngContentVisible\">\n <!-- <div [@routeAnimations]=\"animState\"> -->\n <!-- <div class=\"hierarchy-router-outlet--route-content\"> -->\n <router-outlet\n #outlet=\"outlet\"\n (activate)=\"outletActivate($event)\"\n (deactivate)=\"outletDeactivate($event)\"\n >\n </router-outlet>\n </div>\n</div>\n", styles: [":host{display:block;height:100%}:host ::ng-deep router-outlet+*{background-color:#fff;height:100%}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], animations: [
|
|
2749
2840
|
// fader,
|
|
2750
2841
|
slider,
|
|
2751
2842
|
// transformer,
|
|
@@ -2754,7 +2845,7 @@ class HierarchyRouterOutletComponent {
|
|
|
2754
2845
|
// contentLeave
|
|
2755
2846
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2756
2847
|
}
|
|
2757
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2848
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: HierarchyRouterOutletComponent, decorators: [{
|
|
2758
2849
|
type: Component,
|
|
2759
2850
|
args: [{ selector: 'seam-hierarchy-router-outlet', animations: [
|
|
2760
2851
|
// fader,
|
|
@@ -2763,7 +2854,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
2763
2854
|
// stepper,
|
|
2764
2855
|
// sideToSide
|
|
2765
2856
|
// contentLeave
|
|
2766
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div
|
|
2857
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\n class=\"h-100\"\n [@routeAnimations]=\"prepareRoute(outlet)\"\n (@routeAnimations.start)=\"routeAnimationsStart($event)\"\n (@routeAnimations.done)=\"routeAnimationsDone($event)\"\n>\n <div class=\"hierarchy-router-outlet--content h-100\" *ngIf=\"ngContentVisible\">\n <!-- {{ animState }} -->\n <div class=\"border border-info h-100\">\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"router-container\" [class.h-100]=\"!ngContentVisible\">\n <!-- <div [@routeAnimations]=\"animState\"> -->\n <!-- <div class=\"hierarchy-router-outlet--route-content\"> -->\n <router-outlet\n #outlet=\"outlet\"\n (activate)=\"outletActivate($event)\"\n (deactivate)=\"outletDeactivate($event)\"\n >\n </router-outlet>\n </div>\n</div>\n", styles: [":host{display:block;height:100%}:host ::ng-deep router-outlet+*{background-color:#fff;height:100%}\n"] }]
|
|
2767
2858
|
}], ctorParameters: () => [{ type: i1$2.ActivatedRoute }, { type: i1$2.Router }] });
|
|
2768
2859
|
|
|
2769
2860
|
class HierarchyLevelResolver {
|
|
@@ -2782,34 +2873,25 @@ class HierarchyLevelResolver {
|
|
|
2782
2873
|
}
|
|
2783
2874
|
return 0;
|
|
2784
2875
|
}
|
|
2785
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2786
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
2876
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: HierarchyLevelResolver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2877
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: HierarchyLevelResolver, providedIn: 'root' });
|
|
2787
2878
|
}
|
|
2788
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2879
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: HierarchyLevelResolver, decorators: [{
|
|
2789
2880
|
type: Injectable,
|
|
2790
2881
|
args: [{ providedIn: 'root' }]
|
|
2791
2882
|
}] });
|
|
2792
2883
|
|
|
2793
2884
|
class TheSeamDynamicRouterModule {
|
|
2794
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2795
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
2796
|
-
|
|
2797
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDynamicRouterModule, imports: [CommonModule,
|
|
2798
|
-
RouterModule] });
|
|
2885
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDynamicRouterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2886
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDynamicRouterModule, declarations: [HierarchyRouterOutletComponent], imports: [CommonModule, RouterModule], exports: [HierarchyRouterOutletComponent] });
|
|
2887
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDynamicRouterModule, imports: [CommonModule, RouterModule] });
|
|
2799
2888
|
}
|
|
2800
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2889
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDynamicRouterModule, decorators: [{
|
|
2801
2890
|
type: NgModule,
|
|
2802
2891
|
args: [{
|
|
2803
|
-
declarations: [
|
|
2804
|
-
|
|
2805
|
-
],
|
|
2806
|
-
imports: [
|
|
2807
|
-
CommonModule,
|
|
2808
|
-
RouterModule
|
|
2809
|
-
],
|
|
2810
|
-
exports: [
|
|
2811
|
-
HierarchyRouterOutletComponent
|
|
2812
|
-
]
|
|
2892
|
+
declarations: [HierarchyRouterOutletComponent],
|
|
2893
|
+
imports: [CommonModule, RouterModule],
|
|
2894
|
+
exports: [HierarchyRouterOutletComponent],
|
|
2813
2895
|
}]
|
|
2814
2896
|
}] });
|
|
2815
2897
|
|
|
@@ -2830,7 +2912,9 @@ class TheSeamSchemaFormCheckboxComponent {
|
|
|
2830
2912
|
this._jsf = _jsf;
|
|
2831
2913
|
}
|
|
2832
2914
|
ngOnInit() {
|
|
2833
|
-
this.options =
|
|
2915
|
+
this.options =
|
|
2916
|
+
this.layoutNode?.options ||
|
|
2917
|
+
{};
|
|
2834
2918
|
this._jsf.initializeControl(this);
|
|
2835
2919
|
if (this.controlValue === null || this.controlValue === undefined) {
|
|
2836
2920
|
this.controlValue = this.options?.title;
|
|
@@ -2843,10 +2927,10 @@ class TheSeamSchemaFormCheckboxComponent {
|
|
|
2843
2927
|
get isChecked() {
|
|
2844
2928
|
return this._jsf.getFormControlValue(this) === this.trueValue;
|
|
2845
2929
|
}
|
|
2846
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2847
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
2930
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormCheckboxComponent, deps: [{ token: i1$5.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2931
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamSchemaFormCheckboxComponent, isStandalone: true, selector: "seam-schema-form-checkbox", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<div class=\"mb-3\">\n <seam-form-field *ngIf=\"boundControl\">\n <seam-checkbox\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n >\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <seam-checkbox\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (change)=\"updateValue($event)\"\n >\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$1.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "component", type: i4$1.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }, { kind: "component", type: TheSeamCheckboxComponent, selector: "seam-checkbox", inputs: ["tabIndex", "id", "aria-label", "aria-labelledby", "required", "checked", "disabled", "indeterminate", "name", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["seamCheckbox"] }] });
|
|
2848
2932
|
}
|
|
2849
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2933
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormCheckboxComponent, decorators: [{
|
|
2850
2934
|
type: Component,
|
|
2851
2935
|
args: [{ selector: 'seam-schema-form-checkbox', standalone: true, imports: [
|
|
2852
2936
|
CommonModule,
|
|
@@ -2854,7 +2938,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
2854
2938
|
JsonSchemaFormModule,
|
|
2855
2939
|
TheSeamFormFieldModule,
|
|
2856
2940
|
TheSeamCheckboxComponent,
|
|
2857
|
-
], template: "<div class=\"mb-3\">\n <seam-form-field *ngIf=\"boundControl\">\n <seam-checkbox
|
|
2941
|
+
], template: "<div class=\"mb-3\">\n <seam-form-field *ngIf=\"boundControl\">\n <seam-checkbox\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n >\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <seam-checkbox\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (change)=\"updateValue($event)\"\n >\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n</div>\n" }]
|
|
2858
2942
|
}], ctorParameters: () => [{ type: i1$5.JsonSchemaFormService }], propDecorators: { layoutNode: [{
|
|
2859
2943
|
type: Input
|
|
2860
2944
|
}], layoutIndex: [{
|
|
@@ -2879,23 +2963,25 @@ class TheSeamSchemaFormInputComponent {
|
|
|
2879
2963
|
this._jsf = _jsf;
|
|
2880
2964
|
}
|
|
2881
2965
|
ngOnInit() {
|
|
2882
|
-
this.options =
|
|
2966
|
+
this.options =
|
|
2967
|
+
this.layoutNode?.options ||
|
|
2968
|
+
{};
|
|
2883
2969
|
this._jsf.initializeControl(this);
|
|
2884
2970
|
}
|
|
2885
2971
|
updateValue(event) {
|
|
2886
2972
|
this._jsf.updateValue(this, event.target.value);
|
|
2887
2973
|
}
|
|
2888
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2889
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
2974
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormInputComponent, deps: [{ token: i1$5.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2975
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamSchemaFormInputComponent, isStandalone: true, selector: "seam-schema-form-input", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<div [class]=\"options?.htmlClass || ''\">\n <seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\"\n />\n <datalist\n *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n >\n <option\n *ngFor=\"let word of options?.typeahead?.source\"\n [value]=\"word\"\n ></option>\n </datalist>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\"\n [disabled]=\"controlDisabled\"\n />\n <datalist\n *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n >\n <option\n *ngFor=\"let word of options?.typeahead?.source\"\n [value]=\"word\"\n ></option>\n </datalist>\n </seam-form-field>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$2.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: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$1.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$1.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput], seam-rich-text[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$1.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$1.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2890
2976
|
}
|
|
2891
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2977
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormInputComponent, decorators: [{
|
|
2892
2978
|
type: Component,
|
|
2893
2979
|
args: [{ selector: 'seam-schema-form-input', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
2894
2980
|
CommonModule,
|
|
2895
2981
|
ReactiveFormsModule,
|
|
2896
2982
|
JsonSchemaFormModule,
|
|
2897
2983
|
TheSeamFormFieldModule,
|
|
2898
|
-
], template: "<div [class]=\"options?.htmlClass || ''\">\n <seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title
|
|
2984
|
+
], template: "<div [class]=\"options?.htmlClass || ''\">\n <seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\"\n />\n <datalist\n *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n >\n <option\n *ngFor=\"let word of options?.typeahead?.source\"\n [value]=\"word\"\n ></option>\n </datalist>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\"\n [disabled]=\"controlDisabled\"\n />\n <datalist\n *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n >\n <option\n *ngFor=\"let word of options?.typeahead?.source\"\n [value]=\"word\"\n ></option>\n </datalist>\n </seam-form-field>\n</div>\n", styles: [":host{display:block}\n"] }]
|
|
2899
2985
|
}], ctorParameters: () => [{ type: i1$5.JsonSchemaFormService }], propDecorators: { layoutNode: [{
|
|
2900
2986
|
type: Input
|
|
2901
2987
|
}], layoutIndex: [{
|
|
@@ -2923,7 +3009,9 @@ class TheSeamSchemaFormNumberComponent {
|
|
|
2923
3009
|
this.jsf = jsf;
|
|
2924
3010
|
}
|
|
2925
3011
|
ngOnInit() {
|
|
2926
|
-
this.options =
|
|
3012
|
+
this.options =
|
|
3013
|
+
this.layoutNode?.options ||
|
|
3014
|
+
{};
|
|
2927
3015
|
this.jsf.initializeControl(this);
|
|
2928
3016
|
if (this.layoutNode?.dataType === 'integer') {
|
|
2929
3017
|
this.allowDecimal = false;
|
|
@@ -2932,17 +3020,17 @@ class TheSeamSchemaFormNumberComponent {
|
|
|
2932
3020
|
updateValue(event) {
|
|
2933
3021
|
this.jsf.updateValue(this, event.target.value);
|
|
2934
3022
|
}
|
|
2935
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2936
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
3023
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormNumberComponent, deps: [{ token: i1$5.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3024
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamSchemaFormNumberComponent, isStandalone: true, selector: "seam-schema-form-number", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\"\n />\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\"\n [disabled]=\"controlDisabled\"\n />\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.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: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$1.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$1.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput], seam-rich-text[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$1.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$1.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2937
3025
|
}
|
|
2938
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3026
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormNumberComponent, decorators: [{
|
|
2939
3027
|
type: Component,
|
|
2940
3028
|
args: [{ selector: 'seam-schema-form-number', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
2941
3029
|
CommonModule,
|
|
2942
3030
|
ReactiveFormsModule,
|
|
2943
3031
|
JsonSchemaFormModule,
|
|
2944
3032
|
TheSeamFormFieldModule,
|
|
2945
|
-
], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title
|
|
3033
|
+
], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\"\n />\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\"\n [disabled]=\"controlDisabled\"\n />\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n", styles: [":host{display:block}\n"] }]
|
|
2946
3034
|
}], ctorParameters: () => [{ type: i1$5.JsonSchemaFormService }], propDecorators: { layoutNode: [{
|
|
2947
3035
|
type: Input
|
|
2948
3036
|
}], layoutIndex: [{
|
|
@@ -2968,17 +3056,19 @@ class TheSeamSchemaFormSelectComponent {
|
|
|
2968
3056
|
this._jsf = _jsf;
|
|
2969
3057
|
}
|
|
2970
3058
|
ngOnInit() {
|
|
2971
|
-
this.options =
|
|
3059
|
+
this.options =
|
|
3060
|
+
this.layoutNode?.options ||
|
|
3061
|
+
{};
|
|
2972
3062
|
this.selectList = buildTitleMap(this.options.titleMap || this.options.enumNames, this.options.enum, !!this.options.required, !!this.options.flatList);
|
|
2973
3063
|
this._jsf.initializeControl(this);
|
|
2974
3064
|
}
|
|
2975
3065
|
updateValue(event) {
|
|
2976
3066
|
this._jsf.updateValue(this, event.value);
|
|
2977
3067
|
}
|
|
2978
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2979
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
3068
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormSelectComponent, deps: [{ token: i1$5.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3069
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamSchemaFormSelectComponent, isStandalone: true, selector: "seam-schema-form-select", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<div [class]=\"options?.htmlClass || ''\">\n <seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n appendTo=\"body\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\"\n >\n <ng-template ng-label-tmp let-item=\"item\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n (change)=\"updateValue($event)\"\n appendTo=\"body\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\"\n [disabled]=\"controlDisabled\"\n >\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n </seam-form-field>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$1.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$1.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput], seam-rich-text[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$1.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$1.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i5$1.NgSelectComponent, selector: "ng-select", inputs: ["ariaLabelDropdown", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "tabFocusOnClearButton", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "deselectOnClick", "clearSearchOnAdd", "compareWith", "keyDownFn", "bindLabel", "bindValue", "appearance", "isOpen", "items"], outputs: ["bindLabelChange", "bindValueChange", "appearanceChange", "isOpenChange", "itemsChange", "blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i5$1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i5$1.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2980
3070
|
}
|
|
2981
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3071
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormSelectComponent, decorators: [{
|
|
2982
3072
|
type: Component,
|
|
2983
3073
|
args: [{ selector: 'seam-schema-form-select', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
2984
3074
|
CommonModule,
|
|
@@ -2986,7 +3076,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
2986
3076
|
JsonSchemaFormModule,
|
|
2987
3077
|
TheSeamFormFieldModule,
|
|
2988
3078
|
NgSelectModule,
|
|
2989
|
-
], template: "<div [class]=\"options?.htmlClass || ''\">\n <seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title
|
|
3079
|
+
], template: "<div [class]=\"options?.htmlClass || ''\">\n <seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n appendTo=\"body\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\"\n >\n <ng-template ng-label-tmp let-item=\"item\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n (change)=\"updateValue($event)\"\n appendTo=\"body\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\"\n [disabled]=\"controlDisabled\"\n >\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n </seam-form-field>\n</div>\n", styles: [":host{display:block}\n"] }]
|
|
2990
3080
|
}], ctorParameters: () => [{ type: i1$5.JsonSchemaFormService }], propDecorators: { layoutNode: [{
|
|
2991
3081
|
type: Input
|
|
2992
3082
|
}], layoutIndex: [{
|
|
@@ -3024,7 +3114,9 @@ class TheSeamSchemaFormSubmitSplitComponent {
|
|
|
3024
3114
|
}
|
|
3025
3115
|
/** @ignore */
|
|
3026
3116
|
ngOnInit() {
|
|
3027
|
-
this.options =
|
|
3117
|
+
this.options =
|
|
3118
|
+
this.layoutNode?.options ||
|
|
3119
|
+
{};
|
|
3028
3120
|
this._jsf.initializeControl(this);
|
|
3029
3121
|
// NOTE: This is commented out, because there is a bug with submit widgets
|
|
3030
3122
|
// manually defined in layout. All nodes initialized from the provided
|
|
@@ -3044,7 +3136,7 @@ class TheSeamSchemaFormSubmitSplitComponent {
|
|
|
3044
3136
|
// } else
|
|
3045
3137
|
if (this._jsf.formOptions.disableInvalidSubmit) {
|
|
3046
3138
|
this.controlDisabled = !this._jsf.isValid;
|
|
3047
|
-
this._jsf.isValidChanges.subscribe(isValid => this.controlDisabled = !isValid);
|
|
3139
|
+
this._jsf.isValidChanges.subscribe((isValid) => (this.controlDisabled = !isValid));
|
|
3048
3140
|
}
|
|
3049
3141
|
if (this.controlValue === null || this.controlValue === undefined) {
|
|
3050
3142
|
this.controlValue = this.options.title;
|
|
@@ -3069,7 +3161,8 @@ class TheSeamSchemaFormSubmitSplitComponent {
|
|
|
3069
3161
|
}
|
|
3070
3162
|
}
|
|
3071
3163
|
_initDropdown() {
|
|
3072
|
-
if (!hasOwn(this.layoutNode, 'items') ||
|
|
3164
|
+
if (!hasOwn(this.layoutNode, 'items') ||
|
|
3165
|
+
!(this.layoutNode?.items || []).length) {
|
|
3073
3166
|
return;
|
|
3074
3167
|
}
|
|
3075
3168
|
if (isDevMode()) {
|
|
@@ -3084,8 +3177,10 @@ class TheSeamSchemaFormSubmitSplitComponent {
|
|
|
3084
3177
|
this._dropdownObj = {
|
|
3085
3178
|
layoutNode: item,
|
|
3086
3179
|
layoutIndex: (this.layoutIndex || []).concat(idx),
|
|
3087
|
-
dataIndex: this.layoutNode?.dataType === 'array'
|
|
3088
|
-
|
|
3180
|
+
dataIndex: this.layoutNode?.dataType === 'array'
|
|
3181
|
+
? (this.dataIndex || []).concat(idx)
|
|
3182
|
+
: this.dataIndex,
|
|
3183
|
+
options: item.options || {},
|
|
3089
3184
|
};
|
|
3090
3185
|
this._jsf.initializeControl(this._dropdownObj);
|
|
3091
3186
|
const items = buildTitleMap(this._dropdownObj.options.titleMap || this._dropdownObj.options.enumNames, this._dropdownObj.options.enum, !!this._dropdownObj.options.required, !!this._dropdownObj.options.flatList);
|
|
@@ -3095,11 +3190,15 @@ class TheSeamSchemaFormSubmitSplitComponent {
|
|
|
3095
3190
|
if (!dropdownControl) {
|
|
3096
3191
|
return;
|
|
3097
3192
|
}
|
|
3098
|
-
observeControlValue(dropdownControl)
|
|
3193
|
+
observeControlValue(dropdownControl)
|
|
3194
|
+
.pipe(takeUntil(this._ngUnsubscribe))
|
|
3195
|
+
.subscribe((value) => {
|
|
3099
3196
|
this._setSelectListCheckedProp(value);
|
|
3100
3197
|
this._selectedItem = this._getSelectedItem();
|
|
3101
3198
|
});
|
|
3102
|
-
observeControlStatus(dropdownControl)
|
|
3199
|
+
observeControlStatus(dropdownControl)
|
|
3200
|
+
.pipe(takeUntil(this._ngUnsubscribe))
|
|
3201
|
+
.subscribe((value) => {
|
|
3103
3202
|
this._dropdownDisabled = dropdownControl.disabled;
|
|
3104
3203
|
});
|
|
3105
3204
|
}
|
|
@@ -3119,16 +3218,16 @@ class TheSeamSchemaFormSubmitSplitComponent {
|
|
|
3119
3218
|
this._selectList = [...items];
|
|
3120
3219
|
}
|
|
3121
3220
|
_getSelectedItem() {
|
|
3122
|
-
return (this._selectList || []).find(x => x.checked === true);
|
|
3221
|
+
return (this._selectList || []).find((x) => x.checked === true);
|
|
3123
3222
|
}
|
|
3124
3223
|
_setDropdownValue(value) {
|
|
3125
3224
|
const formControl = this._getDropdownControl();
|
|
3126
3225
|
formControl?.setValue(value);
|
|
3127
3226
|
}
|
|
3128
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3129
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
3227
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormSubmitSplitComponent, deps: [{ token: i1$5.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3228
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamSchemaFormSubmitSplitComponent, isStandalone: true, selector: "seam-schema-form-submit-split", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<div [class]=\"options?.htmlClass || ''\">\n <div [class.btn-group]=\"_dropdownObj\">\n <button\n seamButton\n theme=\"primary\"\n type=\"submit\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [attr.required]=\"options?.required\"\n [class]=\"'btn btn-primary ' + (options?.fieldHtmlClass || '')\"\n [disabled]=\"controlDisabled\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [value]=\"controlValue\"\n (click)=\"updateValue($event)\"\n >\n {{ _buttonLabel }}\n <span *ngIf=\"_selectedItem\"> [{{ _selectedItem.name }}] </span>\n </button>\n <ng-container *ngIf=\"_dropdownObj\">\n <button\n [seamMenuToggle]=\"menu\"\n seamButton\n theme=\"primary\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [disabled]=\"_dropdownDisabled\"\n >\n <span class=\"sr-only\">Toggle Dropdown</span>\n </button>\n <seam-menu #menu>\n <ng-container *ngFor=\"let item of _selectList\">\n <button\n seamMenuItem\n [class.active]=\"item.checked\"\n (click)=\"_setDropdownValue(item.value)\"\n >\n {{ item.name }}\n </button>\n </ng-container>\n </seam-menu>\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "ngmodule", type: TheSeamMenuModule }, { kind: "component", type: i3$1.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i3$1.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i3$1.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "ngmodule", type: TheSeamButtonsModule }, { kind: "component", type: i3.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }] });
|
|
3130
3229
|
}
|
|
3131
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3230
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormSubmitSplitComponent, decorators: [{
|
|
3132
3231
|
type: Component,
|
|
3133
3232
|
args: [{ selector: 'seam-schema-form-submit-split', standalone: true, imports: [
|
|
3134
3233
|
CommonModule,
|
|
@@ -3137,7 +3236,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
3137
3236
|
TheSeamFormFieldModule,
|
|
3138
3237
|
TheSeamMenuModule,
|
|
3139
3238
|
TheSeamButtonsModule,
|
|
3140
|
-
], template: "<div
|
|
3239
|
+
], template: "<div [class]=\"options?.htmlClass || ''\">\n <div [class.btn-group]=\"_dropdownObj\">\n <button\n seamButton\n theme=\"primary\"\n type=\"submit\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [attr.required]=\"options?.required\"\n [class]=\"'btn btn-primary ' + (options?.fieldHtmlClass || '')\"\n [disabled]=\"controlDisabled\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [value]=\"controlValue\"\n (click)=\"updateValue($event)\"\n >\n {{ _buttonLabel }}\n <span *ngIf=\"_selectedItem\"> [{{ _selectedItem.name }}] </span>\n </button>\n <ng-container *ngIf=\"_dropdownObj\">\n <button\n [seamMenuToggle]=\"menu\"\n seamButton\n theme=\"primary\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [disabled]=\"_dropdownDisabled\"\n >\n <span class=\"sr-only\">Toggle Dropdown</span>\n </button>\n <seam-menu #menu>\n <ng-container *ngFor=\"let item of _selectList\">\n <button\n seamMenuItem\n [class.active]=\"item.checked\"\n (click)=\"_setDropdownValue(item.value)\"\n >\n {{ item.name }}\n </button>\n </ng-container>\n </seam-menu>\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:block}\n"] }]
|
|
3141
3240
|
}], ctorParameters: () => [{ type: i1$5.JsonSchemaFormService }], propDecorators: { layoutNode: [{
|
|
3142
3241
|
type: Input
|
|
3143
3242
|
}], layoutIndex: [{
|
|
@@ -3154,10 +3253,10 @@ class TheSeamSchemaFormDividerComponent {
|
|
|
3154
3253
|
ngOnInit() {
|
|
3155
3254
|
this.options = this.layoutNode.options || {};
|
|
3156
3255
|
}
|
|
3157
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3158
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
3256
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormDividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3257
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamSchemaFormDividerComponent, isStandalone: true, selector: "seam-schema-form-divider", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: `<hr [class]="options?.htmlClass" />`, isInline: true, styles: [":host{display:block}\n"] });
|
|
3159
3258
|
}
|
|
3160
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3259
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormDividerComponent, decorators: [{
|
|
3161
3260
|
type: Component,
|
|
3162
3261
|
args: [{ selector: 'seam-schema-form-divider', template: `<hr [class]="options?.htmlClass" />`, standalone: true, styles: [":host{display:block}\n"] }]
|
|
3163
3262
|
}], propDecorators: { layoutNode: [{
|
|
@@ -3184,18 +3283,18 @@ class TheSeamSchemaFormTelComponent {
|
|
|
3184
3283
|
this._jsf = _jsf;
|
|
3185
3284
|
}
|
|
3186
3285
|
ngOnInit() {
|
|
3187
|
-
this.options =
|
|
3286
|
+
this.options =
|
|
3287
|
+
this.layoutNode?.options ||
|
|
3288
|
+
{};
|
|
3188
3289
|
this._jsf.initializeControl(this);
|
|
3189
|
-
console.log(this.controlValue);
|
|
3190
|
-
console.log(this.formControl?.value);
|
|
3191
3290
|
}
|
|
3192
3291
|
updateValue(event) {
|
|
3193
3292
|
this._jsf.updateValue(this, event.target.value);
|
|
3194
3293
|
}
|
|
3195
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3196
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
3294
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormTelComponent, deps: [{ token: i1$5.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3295
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamSchemaFormTelComponent, isStandalone: true, selector: "seam-schema-form-tel", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tel-input\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n >\n </seam-tel-input>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tel-input\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [disabled]=\"controlDisabled\"\n >\n </seam-tel-input>\n</seam-form-field>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$1.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$1.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput], seam-rich-text[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$1.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$1.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }, { kind: "ngmodule", type: TheSeamTelInputModule }, { kind: "component", type: i5$2.TheSeamTelInputComponent, selector: "seam-tel-input", inputs: ["required", "disabled", "tabIndex", "name", "value"], outputs: ["change"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3197
3296
|
}
|
|
3198
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3297
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormTelComponent, decorators: [{
|
|
3199
3298
|
type: Component,
|
|
3200
3299
|
args: [{ selector: 'seam-schema-form-tel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
3201
3300
|
CommonModule,
|
|
@@ -3203,7 +3302,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
3203
3302
|
JsonSchemaFormModule,
|
|
3204
3303
|
TheSeamFormFieldModule,
|
|
3205
3304
|
TheSeamTelInputModule,
|
|
3206
|
-
], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title
|
|
3305
|
+
], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tel-input\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n >\n </seam-tel-input>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tel-input\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [disabled]=\"controlDisabled\"\n >\n </seam-tel-input>\n</seam-form-field>\n" }]
|
|
3207
3306
|
}], ctorParameters: () => [{ type: i1$5.JsonSchemaFormService }], propDecorators: { layoutNode: [{
|
|
3208
3307
|
type: Input
|
|
3209
3308
|
}], layoutIndex: [{
|
|
@@ -3232,19 +3331,19 @@ class TheSeamSchemaFormTiledSelectComponent {
|
|
|
3232
3331
|
showSelectedIcon = true;
|
|
3233
3332
|
animationsDisabled = this._platform.IOS;
|
|
3234
3333
|
ngOnInit() {
|
|
3235
|
-
this.options =
|
|
3334
|
+
this.options =
|
|
3335
|
+
this.layoutNode?.options ||
|
|
3336
|
+
{};
|
|
3236
3337
|
this._jsf.initializeControl(this);
|
|
3237
|
-
console.log(this.options);
|
|
3238
|
-
console.log(this.layoutNode);
|
|
3239
3338
|
this.tiles = this.options.tiles || [];
|
|
3240
3339
|
}
|
|
3241
3340
|
updateValue(event) {
|
|
3242
3341
|
this._jsf.updateValue(this, event.target.value);
|
|
3243
3342
|
}
|
|
3244
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3245
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
3343
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormTiledSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3344
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamSchemaFormTiledSelectComponent, isStandalone: true, selector: "seam-schema-form-tiled-select", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tiled-select\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [attr.name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [tiles]=\"tiles\"\n [layout]=\"layout\"\n [multiple]=\"multiple\"\n [selectionToggleable]=\"selectionToggleable\"\n [tileBackdrop]=\"tileBackdrop\"\n [showSelectedIcon]=\"showSelectedIcon\"\n [animationsDisabled]=\"animationsDisabled\"\n >\n </seam-tiled-select>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tiled-select\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [attr.name]=\"controlName\"\n [attr.required]=\"options?.required\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n [disabled]=\"controlDisabled\"\n [tiles]=\"tiles\"\n [layout]=\"layout\"\n [multiple]=\"multiple\"\n [selectionToggleable]=\"selectionToggleable\"\n [tileBackdrop]=\"tileBackdrop\"\n [showSelectedIcon]=\"showSelectedIcon\"\n [animationsDisabled]=\"animationsDisabled\"\n >\n </seam-tiled-select>\n</seam-form-field>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$1.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$1.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$1.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }, { kind: "ngmodule", type: TheSeamTiledSelectModule }, { kind: "component", type: i4$2.TheSeamTiledSelectComponent, selector: "seam-tiled-select", inputs: ["layout", "tiles", "value", "disabled", "multiple", "selectionToggleable", "tileBackdrop", "showSelectedIcon", "animationsDisabled"], outputs: ["change"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3246
3345
|
}
|
|
3247
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3346
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormTiledSelectComponent, decorators: [{
|
|
3248
3347
|
type: Component,
|
|
3249
3348
|
args: [{ selector: 'seam-schema-form-tiled-select', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
3250
3349
|
CommonModule,
|
|
@@ -3252,7 +3351,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
3252
3351
|
JsonSchemaFormModule,
|
|
3253
3352
|
TheSeamFormFieldModule,
|
|
3254
3353
|
TheSeamTiledSelectModule,
|
|
3255
|
-
], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title
|
|
3354
|
+
], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tiled-select\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [attr.name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [tiles]=\"tiles\"\n [layout]=\"layout\"\n [multiple]=\"multiple\"\n [selectionToggleable]=\"selectionToggleable\"\n [tileBackdrop]=\"tileBackdrop\"\n [showSelectedIcon]=\"showSelectedIcon\"\n [animationsDisabled]=\"animationsDisabled\"\n >\n </seam-tiled-select>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tiled-select\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [attr.name]=\"controlName\"\n [attr.required]=\"options?.required\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n [disabled]=\"controlDisabled\"\n [tiles]=\"tiles\"\n [layout]=\"layout\"\n [multiple]=\"multiple\"\n [selectionToggleable]=\"selectionToggleable\"\n [tileBackdrop]=\"tileBackdrop\"\n [showSelectedIcon]=\"showSelectedIcon\"\n [animationsDisabled]=\"animationsDisabled\"\n >\n </seam-tiled-select>\n</seam-form-field>\n" }]
|
|
3256
3355
|
}], propDecorators: { layoutNode: [{
|
|
3257
3356
|
type: Input
|
|
3258
3357
|
}], layoutIndex: [{
|
|
@@ -3265,17 +3364,15 @@ class TheSeamSchemaFormFrameworkComponent {
|
|
|
3265
3364
|
layoutNode;
|
|
3266
3365
|
layoutIndex;
|
|
3267
3366
|
dataIndex;
|
|
3268
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3269
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
3367
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormFrameworkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3368
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamSchemaFormFrameworkComponent, isStandalone: true, selector: "seam-schema-form-framework", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, host: { properties: { "attr.data-name": "layoutNode?.node", "attr.data-data-pointer": "layoutNode?.dataPointer" } }, ngImport: i0, template: "<select-widget-widget\n [dataIndex]=\"$any(dataIndex)\"\n [layoutIndex]=\"$any(layoutIndex)\"\n [layoutNode]=\"layoutNode\"\n>\n</select-widget-widget>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "component", type: i1$5.SelectWidgetComponent, selector: "select-widget-widget", inputs: ["layoutNode", "layoutIndex", "dataIndex"] }] });
|
|
3270
3369
|
}
|
|
3271
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3370
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormFrameworkComponent, decorators: [{
|
|
3272
3371
|
type: Component,
|
|
3273
3372
|
args: [{ selector: 'seam-schema-form-framework', host: {
|
|
3274
3373
|
'[attr.data-name]': 'layoutNode?.node',
|
|
3275
3374
|
'[attr.data-data-pointer]': 'layoutNode?.dataPointer',
|
|
3276
|
-
}, imports: [
|
|
3277
|
-
JsonSchemaFormModule,
|
|
3278
|
-
], template: "<select-widget-widget\n [dataIndex]=\"$any(dataIndex)\"\n [layoutIndex]=\"$any(layoutIndex)\"\n [layoutNode]=\"layoutNode\">\n</select-widget-widget>\n" }]
|
|
3375
|
+
}, imports: [JsonSchemaFormModule], template: "<select-widget-widget\n [dataIndex]=\"$any(dataIndex)\"\n [layoutIndex]=\"$any(layoutIndex)\"\n [layoutNode]=\"layoutNode\"\n>\n</select-widget-widget>\n" }]
|
|
3279
3376
|
}], propDecorators: { layoutNode: [{
|
|
3280
3377
|
type: Input
|
|
3281
3378
|
}], layoutIndex: [{
|
|
@@ -3287,9 +3384,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
3287
3384
|
const THESEAM_SCHEMA_FRAMEWORK_OVERRIDES = new InjectionToken('THESEAM_SCHEMA_FRAMEWORK_OVERRIDES');
|
|
3288
3385
|
function extendFramework(toExtend, extendFrameworkOrName) {
|
|
3289
3386
|
// console.log('extendFramework', toExtend, extendFrameworkOrName)
|
|
3290
|
-
const _overrides = inject(Framework, {
|
|
3387
|
+
const _overrides = inject(Framework, {
|
|
3388
|
+
optional: true,
|
|
3389
|
+
});
|
|
3291
3390
|
const overrides = typeof extendFrameworkOrName === 'string'
|
|
3292
|
-
? (_overrides || []).filter(x => x.name === extendFrameworkOrName)
|
|
3391
|
+
? (_overrides || []).filter((x) => x.name === extendFrameworkOrName)
|
|
3293
3392
|
: [extendFrameworkOrName];
|
|
3294
3393
|
// console.log(_overrides, overrides)
|
|
3295
3394
|
if (overrides) {
|
|
@@ -3302,7 +3401,10 @@ function extendFramework(toExtend, extendFrameworkOrName) {
|
|
|
3302
3401
|
toExtend.widgets = { ...toExtend.widgets, ...override.widgets };
|
|
3303
3402
|
}
|
|
3304
3403
|
if (hasProperty(override, 'stylesheets')) {
|
|
3305
|
-
toExtend.stylesheets = {
|
|
3404
|
+
toExtend.stylesheets = {
|
|
3405
|
+
...toExtend.stylesheets,
|
|
3406
|
+
...override.stylesheets,
|
|
3407
|
+
};
|
|
3306
3408
|
}
|
|
3307
3409
|
if (hasProperty(override, 'scripts')) {
|
|
3308
3410
|
toExtend.scripts = { ...toExtend.scripts, ...override.scripts };
|
|
@@ -3314,15 +3416,15 @@ class TheSeamFramework extends Framework {
|
|
|
3314
3416
|
name = 'seam-framework';
|
|
3315
3417
|
framework = TheSeamSchemaFormFrameworkComponent;
|
|
3316
3418
|
widgets = {
|
|
3317
|
-
|
|
3419
|
+
checkbox: TheSeamSchemaFormCheckboxComponent,
|
|
3318
3420
|
// 'submit': TheSeamSchemaFormSubmitComponent,
|
|
3319
|
-
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
|
|
3323
|
-
|
|
3324
|
-
|
|
3325
|
-
'tiled-select': TheSeamSchemaFormTiledSelectComponent
|
|
3421
|
+
submit: TheSeamSchemaFormSubmitSplitComponent,
|
|
3422
|
+
text: TheSeamSchemaFormInputComponent,
|
|
3423
|
+
number: TheSeamSchemaFormNumberComponent,
|
|
3424
|
+
select: TheSeamSchemaFormSelectComponent,
|
|
3425
|
+
divider: TheSeamSchemaFormDividerComponent,
|
|
3426
|
+
tel: TheSeamSchemaFormTelComponent,
|
|
3427
|
+
'tiled-select': TheSeamSchemaFormTiledSelectComponent,
|
|
3326
3428
|
// 'date': // TODO: Implement
|
|
3327
3429
|
// 'file': // TODO: Implement
|
|
3328
3430
|
// 'image': // TODO: Implement
|
|
@@ -3344,10 +3446,10 @@ class TheSeamFramework extends Framework {
|
|
|
3344
3446
|
}
|
|
3345
3447
|
}
|
|
3346
3448
|
}
|
|
3347
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3348
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
3449
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamFramework, deps: [{ token: THESEAM_SCHEMA_FRAMEWORK_OVERRIDES, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3450
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamFramework });
|
|
3349
3451
|
}
|
|
3350
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3452
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamFramework, decorators: [{
|
|
3351
3453
|
type: Injectable
|
|
3352
3454
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
3353
3455
|
type: Optional
|
|
@@ -3357,13 +3459,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
3357
3459
|
}] }] });
|
|
3358
3460
|
|
|
3359
3461
|
class TheSeamSchemaFormModule {
|
|
3360
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3361
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
3462
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3463
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormModule, imports: [CommonModule,
|
|
3362
3464
|
JsonSchemaFormModule,
|
|
3363
3465
|
WidgetLibraryModule,
|
|
3364
|
-
TheSeamSchemaFormFrameworkComponent], exports: [TheSeamSchemaFormFrameworkComponent,
|
|
3365
|
-
|
|
3366
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormModule, providers: [
|
|
3466
|
+
TheSeamSchemaFormFrameworkComponent], exports: [TheSeamSchemaFormFrameworkComponent, JsonSchemaFormModule] });
|
|
3467
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormModule, providers: [
|
|
3367
3468
|
JsonSchemaFormService,
|
|
3368
3469
|
FrameworkLibraryService,
|
|
3369
3470
|
WidgetLibraryService,
|
|
@@ -3373,14 +3474,14 @@ class TheSeamSchemaFormModule {
|
|
|
3373
3474
|
WidgetLibraryModule,
|
|
3374
3475
|
TheSeamSchemaFormFrameworkComponent, JsonSchemaFormModule] });
|
|
3375
3476
|
}
|
|
3376
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3477
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamSchemaFormModule, decorators: [{
|
|
3377
3478
|
type: NgModule,
|
|
3378
3479
|
args: [{
|
|
3379
3480
|
imports: [
|
|
3380
3481
|
CommonModule,
|
|
3381
3482
|
JsonSchemaFormModule,
|
|
3382
3483
|
WidgetLibraryModule,
|
|
3383
|
-
TheSeamSchemaFormFrameworkComponent
|
|
3484
|
+
TheSeamSchemaFormFrameworkComponent,
|
|
3384
3485
|
],
|
|
3385
3486
|
providers: [
|
|
3386
3487
|
JsonSchemaFormService,
|
|
@@ -3388,10 +3489,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
3388
3489
|
WidgetLibraryService,
|
|
3389
3490
|
{ provide: Framework, useClass: TheSeamFramework, multi: true },
|
|
3390
3491
|
],
|
|
3391
|
-
exports: [
|
|
3392
|
-
TheSeamSchemaFormFrameworkComponent,
|
|
3393
|
-
JsonSchemaFormModule,
|
|
3394
|
-
],
|
|
3492
|
+
exports: [TheSeamSchemaFormFrameworkComponent, JsonSchemaFormModule],
|
|
3395
3493
|
}]
|
|
3396
3494
|
}] });
|
|
3397
3495
|
|
|
@@ -3408,17 +3506,21 @@ function isHorizontalNavItemFocused(item) {
|
|
|
3408
3506
|
return item.__state?.focused ?? false;
|
|
3409
3507
|
}
|
|
3410
3508
|
function horizontalNavItemHasChildren(item) {
|
|
3411
|
-
return horizontalNavItemCanHaveChildren(item) &&
|
|
3509
|
+
return (horizontalNavItemCanHaveChildren(item) &&
|
|
3510
|
+
hasProperty(item, 'children') &&
|
|
3511
|
+
item.children.length > 0);
|
|
3412
3512
|
}
|
|
3413
3513
|
function horizontalNavItemCanHaveChildren(item) {
|
|
3414
|
-
return isHorizontalNavItemType(item, 'basic') ||
|
|
3514
|
+
return (isHorizontalNavItemType(item, 'basic') ||
|
|
3515
|
+
isHorizontalNavItemType(item, 'link'));
|
|
3415
3516
|
}
|
|
3416
3517
|
function horizontalNavItemHasActiveChild(item) {
|
|
3417
3518
|
if (!horizontalNavItemHasChildren(item)) {
|
|
3418
3519
|
return false;
|
|
3419
3520
|
}
|
|
3420
3521
|
for (const child of item.children) {
|
|
3421
|
-
if (getHorizontalNavItemStateProp(child, 'active') ||
|
|
3522
|
+
if (getHorizontalNavItemStateProp(child, 'active') ||
|
|
3523
|
+
horizontalNavItemHasActiveChild(child)) {
|
|
3422
3524
|
return true;
|
|
3423
3525
|
}
|
|
3424
3526
|
}
|
|
@@ -3436,7 +3538,8 @@ function horizontalNavItemHasExpandedChild(item) {
|
|
|
3436
3538
|
return false;
|
|
3437
3539
|
}
|
|
3438
3540
|
function horizontalNavItemCanBeActive(item) {
|
|
3439
|
-
return isHorizontalNavItemType(item, 'basic') ||
|
|
3541
|
+
return (isHorizontalNavItemType(item, 'basic') ||
|
|
3542
|
+
isHorizontalNavItemType(item, 'link'));
|
|
3440
3543
|
}
|
|
3441
3544
|
function horizontalNavItemCanExpand(item) {
|
|
3442
3545
|
return horizontalNavItemCanHaveChildren(item);
|
|
@@ -3448,7 +3551,8 @@ function findHorizontalNavLinkItems(items) {
|
|
|
3448
3551
|
if (isHorizontalNavItemType(item, 'link')) {
|
|
3449
3552
|
linkItems.push(item);
|
|
3450
3553
|
}
|
|
3451
|
-
if (horizontalNavItemCanHaveChildren(item) &&
|
|
3554
|
+
if (horizontalNavItemCanHaveChildren(item) &&
|
|
3555
|
+
hasProperty(item, 'children')) {
|
|
3452
3556
|
_fn(item.children);
|
|
3453
3557
|
}
|
|
3454
3558
|
}
|
|
@@ -3471,7 +3575,7 @@ function setDefaultHorizontalNavItemState(item) {
|
|
|
3471
3575
|
item.__state = {
|
|
3472
3576
|
active: false,
|
|
3473
3577
|
expanded: false,
|
|
3474
|
-
focused: false
|
|
3578
|
+
focused: false,
|
|
3475
3579
|
};
|
|
3476
3580
|
// TODO: See if there is a nice way to fix the typing for this.
|
|
3477
3581
|
return item;
|
|
@@ -3483,19 +3587,24 @@ function areSameHorizontalNavItem(item1, item2) {
|
|
|
3483
3587
|
if (item1.itemType !== item2.itemType) {
|
|
3484
3588
|
return false;
|
|
3485
3589
|
}
|
|
3486
|
-
if (isHorizontalNavItemType(item1, 'title') &&
|
|
3590
|
+
if (isHorizontalNavItemType(item1, 'title') &&
|
|
3591
|
+
isHorizontalNavItemType(item2, 'title')) {
|
|
3487
3592
|
return item1.label === item2.label;
|
|
3488
3593
|
}
|
|
3489
|
-
else if (isHorizontalNavItemType(item1, 'divider') &&
|
|
3594
|
+
else if (isHorizontalNavItemType(item1, 'divider') &&
|
|
3595
|
+
isHorizontalNavItemType(item2, 'divider')) {
|
|
3490
3596
|
return item1.label === item2.label;
|
|
3491
3597
|
}
|
|
3492
|
-
else if (isHorizontalNavItemType(item1, 'basic') &&
|
|
3598
|
+
else if (isHorizontalNavItemType(item1, 'basic') &&
|
|
3599
|
+
isHorizontalNavItemType(item2, 'basic')) {
|
|
3493
3600
|
return item1.label === item2.label;
|
|
3494
3601
|
}
|
|
3495
|
-
else if (isHorizontalNavItemType(item1, 'link') &&
|
|
3602
|
+
else if (isHorizontalNavItemType(item1, 'link') &&
|
|
3603
|
+
isHorizontalNavItemType(item2, 'link')) {
|
|
3496
3604
|
return item1.label === item2.label && item1.link === item2.link;
|
|
3497
3605
|
}
|
|
3498
|
-
else if (isHorizontalNavItemType(item1, 'button') &&
|
|
3606
|
+
else if (isHorizontalNavItemType(item1, 'button') &&
|
|
3607
|
+
isHorizontalNavItemType(item2, 'button')) {
|
|
3499
3608
|
return item1.onClick === item2.onClick;
|
|
3500
3609
|
}
|
|
3501
3610
|
return false;
|
|
@@ -3507,19 +3616,21 @@ class TheSeamNavService {
|
|
|
3507
3616
|
loading$;
|
|
3508
3617
|
itemChanged = new Subject();
|
|
3509
3618
|
constructor() {
|
|
3510
|
-
this.loading$ = this._updatingCount.pipe(map(count => count > 0), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
3619
|
+
this.loading$ = this._updatingCount.pipe(map((count) => count > 0), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
3511
3620
|
}
|
|
3512
3621
|
createItemsObservable(items) {
|
|
3513
3622
|
return defer(() => {
|
|
3514
3623
|
this.updateItemsStates(items);
|
|
3515
3624
|
this.updateRouterFocusedItem(items);
|
|
3516
3625
|
return new Observable((subscriber) => {
|
|
3517
|
-
const stateChangeSub = this.itemChanged
|
|
3626
|
+
const stateChangeSub = this.itemChanged
|
|
3627
|
+
.pipe(switchMap((change) => {
|
|
3518
3628
|
if (change.prop === 'focused' && change.newValue) {
|
|
3519
3629
|
this.updateFocusedItem(items, change.item);
|
|
3520
3630
|
}
|
|
3521
|
-
return this.loading$.pipe(filter(loading => !loading));
|
|
3522
|
-
}))
|
|
3631
|
+
return this.loading$.pipe(filter((loading) => !loading));
|
|
3632
|
+
}))
|
|
3633
|
+
.subscribe(() => {
|
|
3523
3634
|
subscriber.next(items);
|
|
3524
3635
|
});
|
|
3525
3636
|
try {
|
|
@@ -3528,7 +3639,9 @@ class TheSeamNavService {
|
|
|
3528
3639
|
catch (err) {
|
|
3529
3640
|
subscriber.error(err);
|
|
3530
3641
|
}
|
|
3531
|
-
const routeChangeSub = this._router.events
|
|
3642
|
+
const routeChangeSub = this._router.events
|
|
3643
|
+
.pipe(filter((event) => event instanceof NavigationEnd))
|
|
3644
|
+
.subscribe((event) => {
|
|
3532
3645
|
try {
|
|
3533
3646
|
this.updateItemsStates(items);
|
|
3534
3647
|
this.updateRouterFocusedItem(items);
|
|
@@ -3610,7 +3723,8 @@ class TheSeamNavService {
|
|
|
3610
3723
|
if (horizontalNavItemHasChildren(item)) {
|
|
3611
3724
|
this._updateItemsExpandedState(item.children);
|
|
3612
3725
|
}
|
|
3613
|
-
if (horizontalNavItemHasActiveChild(item) ||
|
|
3726
|
+
if (horizontalNavItemHasActiveChild(item) ||
|
|
3727
|
+
horizontalNavItemHasExpandedChild(item)) {
|
|
3614
3728
|
if (!getHorizontalNavItemStateProp(item, 'expanded')) {
|
|
3615
3729
|
this.setItemStateProp(item, 'expanded', true);
|
|
3616
3730
|
}
|
|
@@ -3622,7 +3736,8 @@ class TheSeamNavService {
|
|
|
3622
3736
|
}
|
|
3623
3737
|
}
|
|
3624
3738
|
updateRouterFocusedItem(items) {
|
|
3625
|
-
const focusedItem = items.find(i => isHorizontalNavItemActive(i)) ||
|
|
3739
|
+
const focusedItem = items.find((i) => isHorizontalNavItemActive(i)) ||
|
|
3740
|
+
items.find((i) => horizontalNavItemHasActiveChild(i));
|
|
3626
3741
|
if (notNullOrUndefined(focusedItem)) {
|
|
3627
3742
|
this.updateFocusedItem(items, focusedItem);
|
|
3628
3743
|
}
|
|
@@ -3656,10 +3771,14 @@ class TheSeamNavService {
|
|
|
3656
3771
|
_getUrl(item) {
|
|
3657
3772
|
const link = item.link;
|
|
3658
3773
|
if (typeof link === 'string') {
|
|
3659
|
-
return this._router
|
|
3774
|
+
return this._router
|
|
3775
|
+
.createUrlTree([link], this._getNavExtras(item))
|
|
3776
|
+
.toString();
|
|
3660
3777
|
}
|
|
3661
3778
|
else if (Array.isArray(link)) {
|
|
3662
|
-
return this._router
|
|
3779
|
+
return this._router
|
|
3780
|
+
.createUrlTree(link, this._getNavExtras(item))
|
|
3781
|
+
.toString();
|
|
3663
3782
|
}
|
|
3664
3783
|
return null;
|
|
3665
3784
|
}
|
|
@@ -3691,10 +3810,10 @@ class TheSeamNavService {
|
|
|
3691
3810
|
this.itemChanged.next(changed);
|
|
3692
3811
|
}
|
|
3693
3812
|
}
|
|
3694
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3695
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
3813
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamNavService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3814
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamNavService });
|
|
3696
3815
|
}
|
|
3697
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3816
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamNavService, decorators: [{
|
|
3698
3817
|
type: Injectable
|
|
3699
3818
|
}], ctorParameters: () => [] });
|
|
3700
3819
|
|
|
@@ -3713,8 +3832,12 @@ class NavItemComponent {
|
|
|
3713
3832
|
hideEmptyIcon;
|
|
3714
3833
|
label;
|
|
3715
3834
|
active = false;
|
|
3716
|
-
set link(value) {
|
|
3717
|
-
|
|
3835
|
+
set link(value) {
|
|
3836
|
+
this._link.next(value);
|
|
3837
|
+
}
|
|
3838
|
+
get link() {
|
|
3839
|
+
return this._link.value;
|
|
3840
|
+
}
|
|
3718
3841
|
_link = new BehaviorSubject(undefined);
|
|
3719
3842
|
link$ = this._link.asObservable();
|
|
3720
3843
|
queryParams;
|
|
@@ -3724,11 +3847,17 @@ class NavItemComponent {
|
|
|
3724
3847
|
set expanded(value) {
|
|
3725
3848
|
this._expanded.next(coerceBooleanProperty(value));
|
|
3726
3849
|
}
|
|
3727
|
-
get expanded() {
|
|
3850
|
+
get expanded() {
|
|
3851
|
+
return this._expanded.value;
|
|
3852
|
+
}
|
|
3728
3853
|
_expanded = new BehaviorSubject(false);
|
|
3729
3854
|
expanded$ = this._expanded.asObservable();
|
|
3730
|
-
set compact(value) {
|
|
3731
|
-
|
|
3855
|
+
set compact(value) {
|
|
3856
|
+
this._compact.next(coerceBooleanProperty(value));
|
|
3857
|
+
}
|
|
3858
|
+
get compact() {
|
|
3859
|
+
return this._compact.value;
|
|
3860
|
+
}
|
|
3732
3861
|
_compact = new BehaviorSubject(false);
|
|
3733
3862
|
compact$ = this._compact.asObservable();
|
|
3734
3863
|
focused = false;
|
|
@@ -3738,14 +3867,16 @@ class NavItemComponent {
|
|
|
3738
3867
|
* Content to provide to assistive technology, such as screen readers.
|
|
3739
3868
|
*/
|
|
3740
3869
|
badgeSrContent;
|
|
3741
|
-
get badgeTooltip() {
|
|
3870
|
+
get badgeTooltip() {
|
|
3871
|
+
return this._badgeTooltip;
|
|
3872
|
+
}
|
|
3742
3873
|
set badgeTooltip(value) {
|
|
3743
3874
|
if (value !== null && value !== undefined) {
|
|
3744
3875
|
if (typeof value === 'string') {
|
|
3745
3876
|
this._badgeTooltip = {
|
|
3746
3877
|
tooltip: value,
|
|
3747
3878
|
placement: 'auto',
|
|
3748
|
-
disabled: false
|
|
3879
|
+
disabled: false,
|
|
3749
3880
|
};
|
|
3750
3881
|
}
|
|
3751
3882
|
else {
|
|
@@ -3754,7 +3885,7 @@ class NavItemComponent {
|
|
|
3754
3885
|
placement: value.placement || 'auto',
|
|
3755
3886
|
disabled: typeof value?.disabled === 'boolean'
|
|
3756
3887
|
? value.disabled
|
|
3757
|
-
: typeof value.tooltip !== 'string'
|
|
3888
|
+
: typeof value.tooltip !== 'string',
|
|
3758
3889
|
};
|
|
3759
3890
|
}
|
|
3760
3891
|
}
|
|
@@ -3766,11 +3897,21 @@ class NavItemComponent {
|
|
|
3766
3897
|
childAction = 'menu';
|
|
3767
3898
|
expandAction = 'toggle';
|
|
3768
3899
|
navItemExpanded = new EventEmitter();
|
|
3769
|
-
get _isActiveCssClass() {
|
|
3770
|
-
|
|
3771
|
-
|
|
3772
|
-
get
|
|
3773
|
-
|
|
3900
|
+
get _isActiveCssClass() {
|
|
3901
|
+
return this.active;
|
|
3902
|
+
}
|
|
3903
|
+
get _isChildActiveCssClass() {
|
|
3904
|
+
return this.hasActiveChild;
|
|
3905
|
+
}
|
|
3906
|
+
get _isExpandedCssClass() {
|
|
3907
|
+
return this.expanded;
|
|
3908
|
+
}
|
|
3909
|
+
get _isFocusedCssClass() {
|
|
3910
|
+
return this.focused;
|
|
3911
|
+
}
|
|
3912
|
+
get _attrDataHierLevel() {
|
|
3913
|
+
return this.hierLevel;
|
|
3914
|
+
}
|
|
3774
3915
|
_menu;
|
|
3775
3916
|
_navItems;
|
|
3776
3917
|
ngOnDestroy() {
|
|
@@ -3814,7 +3955,7 @@ class NavItemComponent {
|
|
|
3814
3955
|
this.expanded = false;
|
|
3815
3956
|
// TODO: figure out why closing seam-menu with expanded submenu messes up animation
|
|
3816
3957
|
if (this._navItems && this._navItems.length) {
|
|
3817
|
-
this._navItems.forEach(navItem => {
|
|
3958
|
+
this._navItems.forEach((navItem) => {
|
|
3818
3959
|
navItem.expanded = false;
|
|
3819
3960
|
});
|
|
3820
3961
|
}
|
|
@@ -3823,8 +3964,8 @@ class NavItemComponent {
|
|
|
3823
3964
|
get showIconBlock() {
|
|
3824
3965
|
return notNullOrUndefined(this.icon) || this.hideEmptyIcon !== true;
|
|
3825
3966
|
}
|
|
3826
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3827
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: NavItemComponent, isStandalone: true, selector: "seam-nav-item", inputs: { item: "item", itemType: "itemType", icon: "icon", hideEmptyIcon: "hideEmptyIcon", label: "label", active: "active", link: "link", queryParams: "queryParams", children: "children", hierLevel: "hierLevel", indentSize: "indentSize", expanded: "expanded", compact: "compact", focused: "focused", badgeText: "badgeText", badgeTheme: "badgeTheme", badgeSrContent: "badgeSrContent", badgeTooltip: "badgeTooltip", childAction: "childAction", expandAction: "expandAction" }, outputs: { navItemExpanded: "navItemExpanded" }, host: { properties: { "class.seam-nav-item--active": "this._isActiveCssClass", "class.seam-nav-item--child-active": "this._isChildActiveCssClass", "class.seam-nav-item--expanded": "this._isExpandedCssClass", "class.seam-nav-item--focused": "this._isFocusedCssClass", "attr.data-hier-level": "this._attrDataHierLevel" } }, viewQueries: [{ propertyName: "_menu", first: true, predicate: MenuComponent, descendants: true }, { propertyName: "_navItems", predicate: NavItemComponent, descendants: true }], exportAs: ["seamNavItem"], ngImport: i0, template: "<div class=\"d-flex flex-row h-100\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasExpandingChildren\">\n <div class=\"nav--group nav--group--level-{{ hierLevel + 1 }}\"\n *ngIf=\"expanded$ | async\" @childGroupAnim>\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"nav-item btn nav-btn p-0 d-flex align-items-stretch flex-row text-decoration-none w-100\"\n cdkMonitorElementFocus\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\">\n <div class=\"nav-link d-flex flex-row align-items-center w-100\" [class.nav-link__compact]=\"compact\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn nav-btn nav-item--toggle-btn-container d-flex align-items-center\">\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <a *ngIf=\"link; else noLink\" class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\" [class.nav-link__compact]=\"compact\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn nav-btn nav-item--toggle-btn-container\"\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"nav-item--title pt-1\" nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"nav-item--badge\"\n [class.nav-item--badge-no-icon]=\"!icon\"\n [seamTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"!badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n\n<seam-menu #menu *ngIf=\"hasMenuToggle\">\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n</seam-menu>\n\n<ng-template #navChildren>\n <seam-nav-item *ngFor=\"let child of children\"\n [item]=\"child\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [focused]=\"$any(child).__state?.focused\"\n childAction=\"expand\"\n [hideEmptyIcon]=\"hideEmptyIcon\">\n </seam-nav-item>\n</ng-template>\n\n", styles: ["seam-nav-item{display:block;transition:.25s ease-in-out background-color;text-align:inherit;border-radius:0;overflow:hidden;background:transparent;margin:0}seam-nav-item.seam-nav-item--expanded{background-color:transparent}seam-nav-item.seam-nav-item--expanded .nav-link{color:#000}seam-nav-item.seam-nav-item--child-active{background-color:#dae0e5}seam-nav-item.seam-nav-item--child-active .nav-link{color:#000}seam-nav-item.seam-nav-item--active{background-color:#dae0e5}seam-nav-item.seam-nav-item--active .active,seam-nav-item.seam-nav-item--active:active,seam-nav-item.seam-nav-item--active .nav-item.active:hover{background-color:#dae0e5}seam-nav-item.seam-nav-item--active .nav-item:hover{background-color:#e9ecef}seam-nav-item.seam-nav-item--active .nav-link{color:#000}seam-nav-item .badge{vertical-align:middle}seam-nav-item:not(.nav-item--icon) .nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-nav-item .nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center;margin-right:.5rem}seam-nav-item .nav-item--icon .nav-item--badge{top:-4px;right:-4px;position:absolute}seam-nav-item .nav-item--icon .nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-nav-item .nav-item--icon .nav-item--badge.nav-item--badge-no-icon{top:0;right:0}seam-nav-item .nav-item{transition:.25s ease-in-out background-color}seam-nav-item .nav-item:hover{background-color:#e9ecef}seam-nav-item .nav-item.active{pointer-events:none;cursor:default}seam-nav-item a.nav-item:not([href]):not([tabindex]){color:#000}seam-nav-item a.nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-nav-item .nav-link{color:#000}seam-nav-item .nav-btn{font-weight:400;color:#000;text-decoration:none;border-radius:0;border:0 solid #dee2e6}seam-nav-item .nav-btn:hover{color:#000;text-decoration:underline}seam-nav-item .nav-btn:focus,seam-nav-item .nav-btn.focus{text-decoration:underline;box-shadow:none}seam-nav-item .nav-btn:disabled,seam-nav-item .nav-btn.disabled{color:#000;pointer-events:none}seam-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-nav-item .nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:0 .5rem}seam-nav-item button.nav-item--toggle-btn-container:hover{background-color:#e9ecef}seam-nav-item .nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform;transform:none}seam-nav-item .nav-item--toggle-btn.nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-nav-item .nav--group{will-change:height;overflow:hidden}seam-nav-item .nav--group--level-1{background-color:#eff1f4}seam-nav-item .nav--group--level-2{background-color:#e6eaed}seam-nav-item .nav--group--level-3{background-color:#dde2e7}seam-nav-item .nav--group--level-4{background-color:#d4dae1}seam-nav-item .nav--group--level-5{background-color:#cbd3da}seam-nav-item .nav--group--level-6{background-color:#c2cbd4}seam-nav-item .nav--group--level-7{background-color:#bac3cd}seam-nav-item .nav--group--level-8{background-color:#b1bcc7}seam-nav-item .nav--group--level-9{background-color:#a8b4c1}seam-nav-item .nav-item--divider{display:block;border-top:1px solid rgb(218.25,223.5,228.75);width:100%}seam-nav-item .nav-item--title{color:#000;font-size:24px;padding-left:10px}seam-nav-item .sr-only{top:0;left:0}\n"], dependencies: [{ kind: "component", type: NavItemComponent, selector: "seam-nav-item", inputs: ["item", "itemType", "icon", "hideEmptyIcon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "focused", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "childAction", "expandAction"], outputs: ["navItemExpanded"], exportAs: ["seamNavItem"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i4.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "ngmodule", type: TheSeamMenuModule }, { kind: "component", type: i3$1.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i3$1.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "ngmodule", type: TheSeamTooltipModule }, { kind: "directive", type: i5.TheSeamTooltipDirective, selector: "[seamTooltip]", inputs: ["seamTooltip", "tooltipClass", "placement", "container", "disableTooltip", "showDelay", "hideDelay", "trigger"], exportAs: ["seamTooltip"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], animations: [
|
|
3967
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: NavItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3968
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: NavItemComponent, isStandalone: true, selector: "seam-nav-item", inputs: { item: "item", itemType: "itemType", icon: "icon", hideEmptyIcon: "hideEmptyIcon", label: "label", active: "active", link: "link", queryParams: "queryParams", children: "children", hierLevel: "hierLevel", indentSize: "indentSize", expanded: "expanded", compact: "compact", focused: "focused", badgeText: "badgeText", badgeTheme: "badgeTheme", badgeSrContent: "badgeSrContent", badgeTooltip: "badgeTooltip", childAction: "childAction", expandAction: "expandAction" }, outputs: { navItemExpanded: "navItemExpanded" }, host: { properties: { "class.seam-nav-item--active": "this._isActiveCssClass", "class.seam-nav-item--child-active": "this._isChildActiveCssClass", "class.seam-nav-item--expanded": "this._isExpandedCssClass", "class.seam-nav-item--focused": "this._isFocusedCssClass", "attr.data-hier-level": "this._attrDataHierLevel" } }, viewQueries: [{ propertyName: "_menu", first: true, predicate: MenuComponent, descendants: true }, { propertyName: "_navItems", predicate: NavItemComponent, descendants: true }], exportAs: ["seamNavItem"], ngImport: i0, template: "<div class=\"d-flex flex-row h-100\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasExpandingChildren\">\n <div\n class=\"nav--group nav--group--level-{{ hierLevel + 1 }}\"\n *ngIf=\"expanded$ | async\"\n @childGroupAnim\n >\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button\n class=\"nav-item btn nav-btn p-0 d-flex align-items-stretch flex-row text-decoration-none w-100\"\n cdkMonitorElementFocus\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\"\n >\n <div\n class=\"nav-link d-flex flex-row align-items-center w-100\"\n [class.nav-link__compact]=\"compact\"\n >\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"hasChildren && !compact\"\n class=\"btn nav-btn nav-item--toggle-btn-container d-flex align-items-center\"\n >\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type\n >\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <a\n *ngIf=\"link; else noLink\"\n class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a\n class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n >\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button\n *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn nav-btn nav-item--toggle-btn-container\"\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\"\n cdkMonitorElementFocus\n >\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type\n >\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"nav-item--title pt-1\" nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div\n class=\"nav-item--badge\"\n [class.nav-item--badge-no-icon]=\"!icon\"\n [seamTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"!badgeTooltip || !!$any(badgeTooltip)?.disabled\"\n >\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n\n<seam-menu #menu *ngIf=\"hasMenuToggle\">\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n</seam-menu>\n\n<ng-template #navChildren>\n <seam-nav-item\n *ngFor=\"let child of children\"\n [item]=\"child\"\n [hierLevel]=\"compact ? 0 : hierLevel + 1\"\n [compact]=\"compact\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [focused]=\"$any(child).__state?.focused\"\n childAction=\"expand\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n >\n </seam-nav-item>\n</ng-template>\n", styles: ["seam-nav-item{display:block;transition:.25s ease-in-out background-color;text-align:inherit;border-radius:0;overflow:hidden;background:transparent;margin:0}seam-nav-item.seam-nav-item--expanded{background-color:transparent}seam-nav-item.seam-nav-item--expanded .nav-link{color:#000}seam-nav-item.seam-nav-item--child-active{background-color:#dae0e5}seam-nav-item.seam-nav-item--child-active .nav-link{color:#000}seam-nav-item.seam-nav-item--active{background-color:#dae0e5}seam-nav-item.seam-nav-item--active .active,seam-nav-item.seam-nav-item--active:active,seam-nav-item.seam-nav-item--active .nav-item.active:hover{background-color:#dae0e5}seam-nav-item.seam-nav-item--active .nav-item:hover{background-color:#e9ecef}seam-nav-item.seam-nav-item--active .nav-link{color:#000}seam-nav-item .badge{vertical-align:middle}seam-nav-item:not(.nav-item--icon) .nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-nav-item .nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center;margin-right:.5rem}seam-nav-item .nav-item--icon .nav-item--badge{top:-4px;right:-4px;position:absolute}seam-nav-item .nav-item--icon .nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-nav-item .nav-item--icon .nav-item--badge.nav-item--badge-no-icon{top:0;right:0}seam-nav-item .nav-item{transition:.25s ease-in-out background-color}seam-nav-item .nav-item:hover{background-color:#e9ecef}seam-nav-item .nav-item.active{pointer-events:none;cursor:default}seam-nav-item a.nav-item:not([href]):not([tabindex]){color:#000}seam-nav-item a.nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-nav-item .nav-link{color:#000}seam-nav-item .nav-btn{font-weight:400;color:#000;text-decoration:none;border-radius:0;border:0 solid #dee2e6}seam-nav-item .nav-btn:hover{color:#000;text-decoration:underline}seam-nav-item .nav-btn:focus,seam-nav-item .nav-btn.focus{text-decoration:underline;box-shadow:none}seam-nav-item .nav-btn:disabled,seam-nav-item .nav-btn.disabled{color:#000;pointer-events:none}seam-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-nav-item .nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:0 .5rem}seam-nav-item button.nav-item--toggle-btn-container:hover{background-color:#e9ecef}seam-nav-item .nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform;transform:none}seam-nav-item .nav-item--toggle-btn.nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-nav-item .nav--group{will-change:height;overflow:hidden}seam-nav-item .nav--group--level-1{background-color:#eff1f4}seam-nav-item .nav--group--level-2{background-color:#e6eaed}seam-nav-item .nav--group--level-3{background-color:#dde2e7}seam-nav-item .nav--group--level-4{background-color:#d4dae1}seam-nav-item .nav--group--level-5{background-color:#cbd3da}seam-nav-item .nav--group--level-6{background-color:#c2cbd4}seam-nav-item .nav--group--level-7{background-color:#bac3cd}seam-nav-item .nav--group--level-8{background-color:#b1bcc7}seam-nav-item .nav--group--level-9{background-color:#a8b4c1}seam-nav-item .nav-item--divider{display:block;border-top:1px solid rgb(218.25,223.5,228.75);width:100%}seam-nav-item .nav-item--title{color:#000;font-size:24px;padding-left:10px}seam-nav-item .sr-only{top:0;left:0}\n"], dependencies: [{ kind: "component", type: NavItemComponent, selector: "seam-nav-item", inputs: ["item", "itemType", "icon", "hideEmptyIcon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "focused", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "childAction", "expandAction"], outputs: ["navItemExpanded"], exportAs: ["seamNavItem"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i4.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "ngmodule", type: TheSeamMenuModule }, { kind: "component", type: i3$1.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i3$1.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "ngmodule", type: TheSeamTooltipModule }, { kind: "directive", type: i5.TheSeamTooltipDirective, selector: "[seamTooltip]", inputs: ["seamTooltip", "tooltipClass", "placement", "container", "disableTooltip", "showDelay", "hideDelay", "trigger"], exportAs: ["seamTooltip"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], animations: [
|
|
3828
3969
|
trigger('childGroupAnim', [
|
|
3829
3970
|
transition(':enter', [
|
|
3830
3971
|
style({ height: 0 }),
|
|
@@ -3846,7 +3987,7 @@ __decorate([
|
|
|
3846
3987
|
__decorate([
|
|
3847
3988
|
InputNumber(10)
|
|
3848
3989
|
], NavItemComponent.prototype, "indentSize", void 0);
|
|
3849
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3990
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: NavItemComponent, decorators: [{
|
|
3850
3991
|
type: Component,
|
|
3851
3992
|
args: [{ selector: 'seam-nav-item', exportAs: 'seamNavItem', animations: [
|
|
3852
3993
|
trigger('childGroupAnim', [
|
|
@@ -3869,7 +4010,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
3869
4010
|
TheSeamMenuModule,
|
|
3870
4011
|
TheSeamIconModule,
|
|
3871
4012
|
TheSeamTooltipModule,
|
|
3872
|
-
], template: "<div class=\"d-flex flex-row h-100\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasExpandingChildren\">\n <div class=\"nav--group nav--group--level-{{ hierLevel + 1 }}\"\n *ngIf=\"expanded$ | async\" @childGroupAnim>\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"nav-item btn nav-btn p-0 d-flex align-items-stretch flex-row text-decoration-none w-100\"\n cdkMonitorElementFocus\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\">\n <div class=\"nav-link d-flex flex-row align-items-center w-100\" [class.nav-link__compact]=\"compact\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn nav-btn nav-item--toggle-btn-container d-flex align-items-center\">\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <a *ngIf=\"link; else noLink\" class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\" [class.nav-link__compact]=\"compact\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn nav-btn nav-item--toggle-btn-container\"\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"nav-item--title pt-1\" nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"nav-item--badge\"\n [class.nav-item--badge-no-icon]=\"!icon\"\n [seamTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"!badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n\n<seam-menu #menu *ngIf=\"hasMenuToggle\">\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n</seam-menu>\n\n<ng-template #navChildren>\n <seam-nav-item *ngFor=\"let child of children\"\n [item]=\"child\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [focused]=\"$any(child).__state?.focused\"\n childAction=\"expand\"\n [hideEmptyIcon]=\"hideEmptyIcon\">\n </seam-nav-item>\n</ng-template>\n\n", styles: ["seam-nav-item{display:block;transition:.25s ease-in-out background-color;text-align:inherit;border-radius:0;overflow:hidden;background:transparent;margin:0}seam-nav-item.seam-nav-item--expanded{background-color:transparent}seam-nav-item.seam-nav-item--expanded .nav-link{color:#000}seam-nav-item.seam-nav-item--child-active{background-color:#dae0e5}seam-nav-item.seam-nav-item--child-active .nav-link{color:#000}seam-nav-item.seam-nav-item--active{background-color:#dae0e5}seam-nav-item.seam-nav-item--active .active,seam-nav-item.seam-nav-item--active:active,seam-nav-item.seam-nav-item--active .nav-item.active:hover{background-color:#dae0e5}seam-nav-item.seam-nav-item--active .nav-item:hover{background-color:#e9ecef}seam-nav-item.seam-nav-item--active .nav-link{color:#000}seam-nav-item .badge{vertical-align:middle}seam-nav-item:not(.nav-item--icon) .nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-nav-item .nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center;margin-right:.5rem}seam-nav-item .nav-item--icon .nav-item--badge{top:-4px;right:-4px;position:absolute}seam-nav-item .nav-item--icon .nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-nav-item .nav-item--icon .nav-item--badge.nav-item--badge-no-icon{top:0;right:0}seam-nav-item .nav-item{transition:.25s ease-in-out background-color}seam-nav-item .nav-item:hover{background-color:#e9ecef}seam-nav-item .nav-item.active{pointer-events:none;cursor:default}seam-nav-item a.nav-item:not([href]):not([tabindex]){color:#000}seam-nav-item a.nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-nav-item .nav-link{color:#000}seam-nav-item .nav-btn{font-weight:400;color:#000;text-decoration:none;border-radius:0;border:0 solid #dee2e6}seam-nav-item .nav-btn:hover{color:#000;text-decoration:underline}seam-nav-item .nav-btn:focus,seam-nav-item .nav-btn.focus{text-decoration:underline;box-shadow:none}seam-nav-item .nav-btn:disabled,seam-nav-item .nav-btn.disabled{color:#000;pointer-events:none}seam-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-nav-item .nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:0 .5rem}seam-nav-item button.nav-item--toggle-btn-container:hover{background-color:#e9ecef}seam-nav-item .nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform;transform:none}seam-nav-item .nav-item--toggle-btn.nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-nav-item .nav--group{will-change:height;overflow:hidden}seam-nav-item .nav--group--level-1{background-color:#eff1f4}seam-nav-item .nav--group--level-2{background-color:#e6eaed}seam-nav-item .nav--group--level-3{background-color:#dde2e7}seam-nav-item .nav--group--level-4{background-color:#d4dae1}seam-nav-item .nav--group--level-5{background-color:#cbd3da}seam-nav-item .nav--group--level-6{background-color:#c2cbd4}seam-nav-item .nav--group--level-7{background-color:#bac3cd}seam-nav-item .nav--group--level-8{background-color:#b1bcc7}seam-nav-item .nav--group--level-9{background-color:#a8b4c1}seam-nav-item .nav-item--divider{display:block;border-top:1px solid rgb(218.25,223.5,228.75);width:100%}seam-nav-item .nav-item--title{color:#000;font-size:24px;padding-left:10px}seam-nav-item .sr-only{top:0;left:0}\n"] }]
|
|
4013
|
+
], template: "<div class=\"d-flex flex-row h-100\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasExpandingChildren\">\n <div\n class=\"nav--group nav--group--level-{{ hierLevel + 1 }}\"\n *ngIf=\"expanded$ | async\"\n @childGroupAnim\n >\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button\n class=\"nav-item btn nav-btn p-0 d-flex align-items-stretch flex-row text-decoration-none w-100\"\n cdkMonitorElementFocus\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\"\n >\n <div\n class=\"nav-link d-flex flex-row align-items-center w-100\"\n [class.nav-link__compact]=\"compact\"\n >\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"hasChildren && !compact\"\n class=\"btn nav-btn nav-item--toggle-btn-container d-flex align-items-center\"\n >\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type\n >\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <a\n *ngIf=\"link; else noLink\"\n class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a\n class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n >\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button\n *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn nav-btn nav-item--toggle-btn-container\"\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\"\n cdkMonitorElementFocus\n >\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type\n >\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"nav-item--title pt-1\" nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div\n class=\"nav-item--badge\"\n [class.nav-item--badge-no-icon]=\"!icon\"\n [seamTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"!badgeTooltip || !!$any(badgeTooltip)?.disabled\"\n >\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n\n<seam-menu #menu *ngIf=\"hasMenuToggle\">\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n</seam-menu>\n\n<ng-template #navChildren>\n <seam-nav-item\n *ngFor=\"let child of children\"\n [item]=\"child\"\n [hierLevel]=\"compact ? 0 : hierLevel + 1\"\n [compact]=\"compact\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [focused]=\"$any(child).__state?.focused\"\n childAction=\"expand\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n >\n </seam-nav-item>\n</ng-template>\n", styles: ["seam-nav-item{display:block;transition:.25s ease-in-out background-color;text-align:inherit;border-radius:0;overflow:hidden;background:transparent;margin:0}seam-nav-item.seam-nav-item--expanded{background-color:transparent}seam-nav-item.seam-nav-item--expanded .nav-link{color:#000}seam-nav-item.seam-nav-item--child-active{background-color:#dae0e5}seam-nav-item.seam-nav-item--child-active .nav-link{color:#000}seam-nav-item.seam-nav-item--active{background-color:#dae0e5}seam-nav-item.seam-nav-item--active .active,seam-nav-item.seam-nav-item--active:active,seam-nav-item.seam-nav-item--active .nav-item.active:hover{background-color:#dae0e5}seam-nav-item.seam-nav-item--active .nav-item:hover{background-color:#e9ecef}seam-nav-item.seam-nav-item--active .nav-link{color:#000}seam-nav-item .badge{vertical-align:middle}seam-nav-item:not(.nav-item--icon) .nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-nav-item .nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center;margin-right:.5rem}seam-nav-item .nav-item--icon .nav-item--badge{top:-4px;right:-4px;position:absolute}seam-nav-item .nav-item--icon .nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-nav-item .nav-item--icon .nav-item--badge.nav-item--badge-no-icon{top:0;right:0}seam-nav-item .nav-item{transition:.25s ease-in-out background-color}seam-nav-item .nav-item:hover{background-color:#e9ecef}seam-nav-item .nav-item.active{pointer-events:none;cursor:default}seam-nav-item a.nav-item:not([href]):not([tabindex]){color:#000}seam-nav-item a.nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-nav-item .nav-link{color:#000}seam-nav-item .nav-btn{font-weight:400;color:#000;text-decoration:none;border-radius:0;border:0 solid #dee2e6}seam-nav-item .nav-btn:hover{color:#000;text-decoration:underline}seam-nav-item .nav-btn:focus,seam-nav-item .nav-btn.focus{text-decoration:underline;box-shadow:none}seam-nav-item .nav-btn:disabled,seam-nav-item .nav-btn.disabled{color:#000;pointer-events:none}seam-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-nav-item .nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:0 .5rem}seam-nav-item button.nav-item--toggle-btn-container:hover{background-color:#e9ecef}seam-nav-item .nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform;transform:none}seam-nav-item .nav-item--toggle-btn.nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-nav-item .nav--group{will-change:height;overflow:hidden}seam-nav-item .nav--group--level-1{background-color:#eff1f4}seam-nav-item .nav--group--level-2{background-color:#e6eaed}seam-nav-item .nav--group--level-3{background-color:#dde2e7}seam-nav-item .nav--group--level-4{background-color:#d4dae1}seam-nav-item .nav--group--level-5{background-color:#cbd3da}seam-nav-item .nav--group--level-6{background-color:#c2cbd4}seam-nav-item .nav--group--level-7{background-color:#bac3cd}seam-nav-item .nav--group--level-8{background-color:#b1bcc7}seam-nav-item .nav--group--level-9{background-color:#a8b4c1}seam-nav-item .nav-item--divider{display:block;border-top:1px solid rgb(218.25,223.5,228.75);width:100%}seam-nav-item .nav-item--title{color:#000;font-size:24px;padding-left:10px}seam-nav-item .sr-only{top:0;left:0}\n"] }]
|
|
3873
4014
|
}], propDecorators: { item: [{
|
|
3874
4015
|
type: Input
|
|
3875
4016
|
}], itemType: [{
|
|
@@ -3939,7 +4080,9 @@ class HorizontalNavComponent {
|
|
|
3939
4080
|
static ngAcceptInputType_hasHeaderToggle;
|
|
3940
4081
|
_nav = inject(TheSeamNavService);
|
|
3941
4082
|
_ngUnsubscribe = new Subject();
|
|
3942
|
-
get items() {
|
|
4083
|
+
get items() {
|
|
4084
|
+
return this._items.value;
|
|
4085
|
+
}
|
|
3943
4086
|
set items(value) {
|
|
3944
4087
|
this._items.next(value);
|
|
3945
4088
|
}
|
|
@@ -3951,7 +4094,7 @@ class HorizontalNavComponent {
|
|
|
3951
4094
|
expandAction = 'toggle';
|
|
3952
4095
|
navItemExpanded = new EventEmitter();
|
|
3953
4096
|
constructor() {
|
|
3954
|
-
this.items$ = this._items.asObservable().pipe(switchMap(items => items ? this._nav.createItemsObservable(items) : []), shareReplay({ bufferSize: 1, refCount: true }));
|
|
4097
|
+
this.items$ = this._items.asObservable().pipe(switchMap((items) => items ? this._nav.createItemsObservable(items) : []), shareReplay({ bufferSize: 1, refCount: true }));
|
|
3955
4098
|
}
|
|
3956
4099
|
ngOnDestroy() {
|
|
3957
4100
|
this._ngUnsubscribe.next();
|
|
@@ -3960,20 +4103,12 @@ class HorizontalNavComponent {
|
|
|
3960
4103
|
_navItemExpanded(item, expanded) {
|
|
3961
4104
|
this.navItemExpanded.emit({ navItem: item, expanded });
|
|
3962
4105
|
}
|
|
3963
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3964
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
3965
|
-
TheSeamNavService,
|
|
3966
|
-
], ngImport: i0, template: "<div class=\"nav-inner-wrapper\" class=\"nav-inner-wrapper-{{hierLevel}}\">\n <div class=\"nav-items-row\">\n <seam-nav-item *ngFor=\"let item of items$ | async\"\n class=\"flex-shrink-0\"\n [item]=\"item\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state?.active\"\n [expanded]=\"$any(item).__state?.expanded\"\n [focused]=\"$any(item).__state?.focused\"\n [hierLevel]=\"hierLevel\"\n [childAction]=\"childAction\"\n [expandAction]=\"expandAction\"\n (navItemExpanded)=\"_navItemExpanded(item, $event)\"\n [hideEmptyIcon]=\"hideEmptyIcon\">\n </seam-nav-item>\n </div>\n</div>\n", styles: ["seam-horizontal-nav,.seam-horizontal-nav{display:block;height:100%;position:relative;z-index:2}seam-horizontal-nav .nav-inner-wrapper,.seam-horizontal-nav .nav-inner-wrapper{background:none;height:100%}seam-horizontal-nav .nav-backdrop,.seam-horizontal-nav .nav-backdrop{background:#343a4099;width:100vw;height:100vh}seam-horizontal-nav .nav-backdrop.nav-backdrop-hidden,.seam-horizontal-nav .nav-backdrop.nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-horizontal-nav .nav-content,.seam-horizontal-nav .nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-horizontal-nav .nav-items-container,.seam-horizontal-nav .nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}seam-horizontal-nav .nav-items-row,.seam-horizontal-nav .nav-items-row{height:100%;display:flex;padding:.25rem .5rem}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: NavItemComponent, selector: "seam-nav-item", inputs: ["item", "itemType", "icon", "hideEmptyIcon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "focused", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "childAction", "expandAction"], outputs: ["navItemExpanded"], exportAs: ["seamNavItem"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
4106
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: HorizontalNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4107
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: HorizontalNavComponent, isStandalone: true, selector: "seam-horizontal-nav", inputs: { items: "items", hideEmptyIcon: "hideEmptyIcon", hierLevel: "hierLevel", childAction: "childAction", expandAction: "expandAction" }, outputs: { navItemExpanded: "navItemExpanded" }, providers: [TheSeamNavService], ngImport: i0, template: "<div class=\"nav-inner-wrapper\" class=\"nav-inner-wrapper-{{ hierLevel }}\">\n <div class=\"nav-items-row\">\n <seam-nav-item\n *ngFor=\"let item of items$ | async\"\n class=\"flex-shrink-0\"\n [item]=\"item\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state?.active\"\n [expanded]=\"$any(item).__state?.expanded\"\n [focused]=\"$any(item).__state?.focused\"\n [hierLevel]=\"hierLevel\"\n [childAction]=\"childAction\"\n [expandAction]=\"expandAction\"\n (navItemExpanded)=\"_navItemExpanded(item, $event)\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n >\n </seam-nav-item>\n </div>\n</div>\n", styles: ["seam-horizontal-nav,.seam-horizontal-nav{display:block;height:100%;position:relative;z-index:2}seam-horizontal-nav .nav-inner-wrapper,.seam-horizontal-nav .nav-inner-wrapper{background:none;height:100%}seam-horizontal-nav .nav-backdrop,.seam-horizontal-nav .nav-backdrop{background:#343a4099;width:100vw;height:100vh}seam-horizontal-nav .nav-backdrop.nav-backdrop-hidden,.seam-horizontal-nav .nav-backdrop.nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-horizontal-nav .nav-content,.seam-horizontal-nav .nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-horizontal-nav .nav-items-container,.seam-horizontal-nav .nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}seam-horizontal-nav .nav-items-row,.seam-horizontal-nav .nav-items-row{height:100%;display:flex;padding:.25rem .5rem}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: NavItemComponent, selector: "seam-nav-item", inputs: ["item", "itemType", "icon", "hideEmptyIcon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "focused", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "childAction", "expandAction"], outputs: ["navItemExpanded"], exportAs: ["seamNavItem"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
3967
4108
|
}
|
|
3968
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
4109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: HorizontalNavComponent, decorators: [{
|
|
3969
4110
|
type: Component,
|
|
3970
|
-
args: [{ selector: 'seam-horizontal-nav', providers: [
|
|
3971
|
-
TheSeamNavService,
|
|
3972
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
3973
|
-
NgFor,
|
|
3974
|
-
AsyncPipe,
|
|
3975
|
-
NavItemComponent,
|
|
3976
|
-
], template: "<div class=\"nav-inner-wrapper\" class=\"nav-inner-wrapper-{{hierLevel}}\">\n <div class=\"nav-items-row\">\n <seam-nav-item *ngFor=\"let item of items$ | async\"\n class=\"flex-shrink-0\"\n [item]=\"item\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state?.active\"\n [expanded]=\"$any(item).__state?.expanded\"\n [focused]=\"$any(item).__state?.focused\"\n [hierLevel]=\"hierLevel\"\n [childAction]=\"childAction\"\n [expandAction]=\"expandAction\"\n (navItemExpanded)=\"_navItemExpanded(item, $event)\"\n [hideEmptyIcon]=\"hideEmptyIcon\">\n </seam-nav-item>\n </div>\n</div>\n", styles: ["seam-horizontal-nav,.seam-horizontal-nav{display:block;height:100%;position:relative;z-index:2}seam-horizontal-nav .nav-inner-wrapper,.seam-horizontal-nav .nav-inner-wrapper{background:none;height:100%}seam-horizontal-nav .nav-backdrop,.seam-horizontal-nav .nav-backdrop{background:#343a4099;width:100vw;height:100vh}seam-horizontal-nav .nav-backdrop.nav-backdrop-hidden,.seam-horizontal-nav .nav-backdrop.nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-horizontal-nav .nav-content,.seam-horizontal-nav .nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-horizontal-nav .nav-items-container,.seam-horizontal-nav .nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}seam-horizontal-nav .nav-items-row,.seam-horizontal-nav .nav-items-row{height:100%;display:flex;padding:.25rem .5rem}\n"] }]
|
|
4111
|
+
args: [{ selector: 'seam-horizontal-nav', providers: [TheSeamNavService], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [NgFor, AsyncPipe, NavItemComponent], template: "<div class=\"nav-inner-wrapper\" class=\"nav-inner-wrapper-{{ hierLevel }}\">\n <div class=\"nav-items-row\">\n <seam-nav-item\n *ngFor=\"let item of items$ | async\"\n class=\"flex-shrink-0\"\n [item]=\"item\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state?.active\"\n [expanded]=\"$any(item).__state?.expanded\"\n [focused]=\"$any(item).__state?.focused\"\n [hierLevel]=\"hierLevel\"\n [childAction]=\"childAction\"\n [expandAction]=\"expandAction\"\n (navItemExpanded)=\"_navItemExpanded(item, $event)\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n >\n </seam-nav-item>\n </div>\n</div>\n", styles: ["seam-horizontal-nav,.seam-horizontal-nav{display:block;height:100%;position:relative;z-index:2}seam-horizontal-nav .nav-inner-wrapper,.seam-horizontal-nav .nav-inner-wrapper{background:none;height:100%}seam-horizontal-nav .nav-backdrop,.seam-horizontal-nav .nav-backdrop{background:#343a4099;width:100vw;height:100vh}seam-horizontal-nav .nav-backdrop.nav-backdrop-hidden,.seam-horizontal-nav .nav-backdrop.nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-horizontal-nav .nav-content,.seam-horizontal-nav .nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-horizontal-nav .nav-items-container,.seam-horizontal-nav .nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}seam-horizontal-nav .nav-items-row,.seam-horizontal-nav .nav-items-row{height:100%;display:flex;padding:.25rem .5rem}\n"] }]
|
|
3977
4112
|
}], ctorParameters: () => [], propDecorators: { items: [{
|
|
3978
4113
|
type: Input
|
|
3979
4114
|
}], hideEmptyIcon: [{
|
|
@@ -3989,24 +4124,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
3989
4124
|
}] } });
|
|
3990
4125
|
|
|
3991
4126
|
class TheSeamNavModule {
|
|
3992
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3993
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
3994
|
-
|
|
3995
|
-
|
|
3996
|
-
|
|
3997
|
-
HorizontalNavComponent] });
|
|
3998
|
-
}
|
|
3999
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamNavModule, decorators: [{
|
|
4127
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
4128
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.7", ngImport: i0, type: TheSeamNavModule, imports: [NavItemComponent, HorizontalNavComponent], exports: [NavItemComponent, HorizontalNavComponent] });
|
|
4129
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamNavModule, imports: [NavItemComponent, HorizontalNavComponent] });
|
|
4130
|
+
}
|
|
4131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamNavModule, decorators: [{
|
|
4000
4132
|
type: NgModule,
|
|
4001
4133
|
args: [{
|
|
4002
|
-
imports: [
|
|
4003
|
-
|
|
4004
|
-
HorizontalNavComponent,
|
|
4005
|
-
],
|
|
4006
|
-
exports: [
|
|
4007
|
-
NavItemComponent,
|
|
4008
|
-
HorizontalNavComponent,
|
|
4009
|
-
],
|
|
4134
|
+
imports: [NavItemComponent, HorizontalNavComponent],
|
|
4135
|
+
exports: [NavItemComponent, HorizontalNavComponent],
|
|
4010
4136
|
}]
|
|
4011
4137
|
}] });
|
|
4012
4138
|
|