@theseam/ui-common 0.4.11 → 0.4.12-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +1 -1
- package/buttons/public-api.d.ts +1 -0
- package/buttons/testing/anchor-badge-button.harness.d.ts +16 -0
- package/buttons/testing/anchor-button.harness.d.ts +16 -0
- package/buttons/testing/badge-button.harness.d.ts +15 -0
- package/buttons/testing/base-badge-button.harness.d.ts +15 -0
- package/buttons/testing/base-button.harness.d.ts +19 -0
- package/buttons/testing/button.harness.d.ts +15 -0
- package/buttons/testing/index.d.ts +5 -0
- package/buttons/testing/toggle-button.harness.d.ts +21 -0
- package/checkbox/checkbox.component.d.ts +1 -1
- package/checkbox/checkbox.module.d.ts +2 -3
- package/datatable/datatable/datatable.component.d.ts +10 -1
- package/datatable/datatable.module.d.ts +1 -1
- package/datatable/models/action-item-column-position.d.ts +13 -0
- package/datatable/services/columns-manager.service.d.ts +7 -0
- package/datatable/utils/create-action-menu-column.d.ts +1 -1
- package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +2 -2
- package/esm2020/buttons/button/button.component.mjs +2 -1
- package/esm2020/buttons/public-api.mjs +2 -1
- package/esm2020/buttons/testing/anchor-badge-button.harness.mjs +18 -0
- package/esm2020/buttons/testing/anchor-button.harness.mjs +18 -0
- package/esm2020/buttons/testing/badge-button.harness.mjs +14 -0
- package/esm2020/buttons/testing/base-badge-button.harness.mjs +29 -0
- package/esm2020/buttons/testing/base-button.harness.mjs +41 -0
- package/esm2020/buttons/testing/button.harness.mjs +16 -0
- package/esm2020/buttons/testing/index.mjs +6 -0
- package/esm2020/buttons/testing/toggle-button.harness.mjs +25 -0
- package/esm2020/carousel/carousel.component.mjs +2 -1
- package/esm2020/checkbox/checkbox.component.mjs +8 -3
- package/esm2020/checkbox/checkbox.module.mjs +5 -12
- package/esm2020/datatable/datatable/datatable.component.mjs +20 -4
- package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +2 -2
- package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +1 -1
- package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +1 -1
- package/esm2020/datatable/datatable.module.mjs +5 -5
- package/esm2020/datatable/models/action-item-column-position.mjs +5 -0
- package/esm2020/datatable/services/columns-manager.service.mjs +27 -2
- package/esm2020/datatable/utils/create-action-menu-column.mjs +4 -3
- package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +1 -1
- package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +1 -1
- package/esm2020/form-field/form-field.component.mjs +4 -4
- package/esm2020/framework/base-layout/base-layout.component.mjs +14 -4
- package/esm2020/framework/base-layout/base-layout.module.mjs +6 -1
- package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +21 -5
- package/esm2020/framework/base-layout/directives/base-layout-side-bar-header.directive.mjs +16 -0
- package/esm2020/framework/base-layout/index.mjs +2 -1
- package/esm2020/framework/nav/horizontal-nav/horizontal-nav.component.mjs +55 -0
- package/esm2020/framework/nav/index.mjs +6 -0
- package/esm2020/framework/nav/nav-item/nav-item.component.mjs +227 -0
- package/esm2020/framework/nav/nav-utils.mjs +107 -0
- package/esm2020/framework/nav/nav.models.mjs +2 -0
- package/esm2020/framework/nav/nav.module.mjs +67 -0
- package/esm2020/framework/nav/nav.service.mjs +204 -0
- package/esm2020/framework/public-api.mjs +2 -1
- package/esm2020/framework/schema-form/index.mjs +2 -1
- package/esm2020/framework/schema-form/schema-form-framework.component.mjs +6 -3
- package/esm2020/framework/schema-form/schema-form-framework.mjs +62 -7
- package/esm2020/framework/schema-form/schema-form-widget.mjs +2 -0
- package/esm2020/framework/schema-form/schema-form.module.mjs +1 -8
- package/esm2020/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.mjs +21 -11
- package/esm2020/framework/schema-form-controls/schema-form-divider/schema-form-divider.component.mjs +20 -0
- package/esm2020/framework/schema-form-controls/schema-form-input/schema-form-input.component.mjs +17 -8
- package/esm2020/framework/schema-form-controls/schema-form-number/schema-form-number.component.mjs +14 -5
- package/esm2020/framework/schema-form-controls/schema-form-select/schema-form-select.component.mjs +19 -9
- package/esm2020/framework/schema-form-controls/schema-form-submit/schema-form-submit.component.mjs +21 -13
- package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +30 -18
- package/esm2020/framework/schema-form-controls/schema-form-tel/schema-form-tel.component.mjs +48 -0
- package/esm2020/framework/schema-form-controls/schema-form-tiled-select/schema-form-tiled-select.component.mjs +57 -0
- package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +28 -67
- package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +12 -5
- package/esm2020/framework/side-nav/side-nav.component.mjs +116 -38
- package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
- package/esm2020/framework/side-nav/side-nav.module.mjs +9 -39
- package/esm2020/framework/side-nav/side-nav.service.mjs +1 -1
- package/esm2020/framework/top-bar/index.mjs +3 -1
- package/esm2020/framework/top-bar/top-bar-compact-menu-btn-detail.directive.mjs +16 -0
- package/esm2020/framework/top-bar/top-bar-item.directive.mjs +10 -4
- package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +6 -4
- package/esm2020/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.mjs +16 -0
- package/esm2020/framework/top-bar/top-bar.component.mjs +55 -11
- package/esm2020/framework/top-bar/top-bar.module.mjs +15 -5
- package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +3 -3
- package/esm2020/layout/layout.service.mjs +12 -2
- package/esm2020/menu/menu-item.component.mjs +3 -3
- package/esm2020/menu/menu-toggle.directive.mjs +7 -2
- package/esm2020/menu/public-api.mjs +5 -1
- package/esm2020/menu/testing/menu-footer.harness.mjs +28 -0
- package/esm2020/menu/testing/menu-header.harness.mjs +23 -0
- package/esm2020/menu/testing/menu-item.harness.mjs +59 -0
- package/esm2020/menu/testing/menu.harness.mjs +163 -0
- package/esm2020/menu/testing/utils.mjs +13 -0
- package/esm2020/story-helpers/args-to-tpl.mjs +83 -0
- package/esm2020/story-helpers/public-api.mjs +2 -2
- package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +4 -2
- package/esm2020/tel-input/public-api.mjs +2 -1
- package/esm2020/tel-input/tel-input/tel-input.component.mjs +22 -10
- package/esm2020/tel-input/tel-input.directive.mjs +12 -13
- package/esm2020/tel-input/tel-input.module.mjs +10 -9
- package/esm2020/tel-input/testing/tel-input.harness.mjs +49 -0
- package/esm2020/testing/harnesses/ng-select-dropdown.harness.mjs +39 -0
- package/esm2020/testing/harnesses/ng-select-option.harness.mjs +26 -0
- package/esm2020/testing/harnesses/ng-select.harness.mjs +104 -0
- package/esm2020/testing/public-api.mjs +4 -1
- package/esm2020/tiled-select/components/tiled-select/tiled-select.component.mjs +1 -1
- package/esm2020/utils/geo-json/coerce-feature-collection.mjs +1 -1
- package/esm2020/utils/geo-json/is-feature-collection.validator.mjs +1 -1
- package/esm2020/utils/geo-json/is-only-geometry-types.mjs +1 -1
- package/esm2020/utils/geo-json/merge-polygons.mjs +1 -1
- package/esm2020/utils/geo-json/no-inner-rings.validator.mjs +1 -1
- package/esm2020/utils/geo-json/split-multi-polygons.mjs +1 -1
- package/fesm2015/theseam-ui-common-breadcrumbs.mjs +2 -2
- package/fesm2015/theseam-ui-common-breadcrumbs.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-buttons.mjs +181 -3
- package/fesm2015/theseam-ui-common-buttons.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-carousel.mjs +1 -0
- package/fesm2015/theseam-ui-common-carousel.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-checkbox.mjs +12 -14
- package/fesm2015/theseam-ui-common-checkbox.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +2 -2
- package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-datatable.mjs +60 -14
- package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-form-field.mjs +3 -3
- package/fesm2015/theseam-ui-common-form-field.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-framework.mjs +1155 -322
- package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-google-maps.mjs +2 -2
- package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-layout.mjs +11 -2
- package/fesm2015/theseam-ui-common-layout.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-menu.mjs +337 -6
- package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-story-helpers.mjs +86 -1
- package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-table-cell-types.mjs +3 -1
- package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-tel-input.mjs +105 -29
- package/fesm2015/theseam-ui-common-tel-input.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-testing.mjs +197 -1
- package/fesm2015/theseam-ui-common-testing.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-tiled-select.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-utils.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-breadcrumbs.mjs +2 -2
- package/fesm2020/theseam-ui-common-breadcrumbs.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-buttons.mjs +154 -2
- package/fesm2020/theseam-ui-common-buttons.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-carousel.mjs +1 -0
- package/fesm2020/theseam-ui-common-carousel.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-checkbox.mjs +12 -14
- package/fesm2020/theseam-ui-common-checkbox.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +2 -2
- package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-datatable.mjs +60 -14
- package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-form-field.mjs +3 -3
- package/fesm2020/theseam-ui-common-form-field.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-framework.mjs +1151 -326
- package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-google-maps.mjs +2 -2
- package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-layout.mjs +11 -2
- package/fesm2020/theseam-ui-common-layout.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-menu.mjs +283 -5
- package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-story-helpers.mjs +84 -1
- package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-table-cell-types.mjs +3 -1
- package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-tel-input.mjs +89 -29
- package/fesm2020/theseam-ui-common-tel-input.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-testing.mjs +165 -1
- package/fesm2020/theseam-ui-common-testing.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-tiled-select.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-utils.mjs.map +1 -1
- package/framework/base-layout/base-layout.component.d.ts +4 -2
- package/framework/base-layout/base-layout.component.scss +18 -10
- package/framework/base-layout/base-layout.module.d.ts +11 -10
- package/framework/base-layout/directives/base-layout-nav-toggle.directive.d.ts +8 -3
- package/framework/base-layout/directives/base-layout-side-bar-header.directive.d.ts +9 -0
- package/framework/base-layout/index.d.ts +1 -0
- package/framework/base-layout/styles/_variables.scss +21 -0
- package/framework/nav/_nav-theme.scss +4 -0
- package/framework/nav/horizontal-nav/horizontal-nav.component.d.ts +25 -0
- package/framework/nav/horizontal-nav/horizontal-nav.component.scss +50 -0
- package/framework/nav/index.d.ts +5 -0
- package/framework/nav/nav-item/nav-item.component.d.ts +74 -0
- package/framework/nav/nav-item/nav-item.component.scss +203 -0
- package/framework/nav/nav-utils.d.ts +20 -0
- package/framework/nav/nav.models.d.ts +77 -0
- package/framework/nav/nav.module.d.ts +17 -0
- package/framework/nav/nav.service.d.ts +27 -0
- package/framework/nav/styles/_themes/light/_variables.scss +56 -0
- package/framework/nav/styles/_themes/primary/_variables.scss +56 -0
- package/framework/nav/styles/_utilities.scss +3 -0
- package/framework/nav/styles/_variables.scss +2 -0
- package/framework/public-api.d.ts +1 -0
- package/framework/schema-form/index.d.ts +1 -0
- package/framework/schema-form/schema-form-framework.d.ts +12 -1
- package/framework/schema-form/schema-form-widget.d.ts +61 -0
- package/framework/schema-form/schema-form.module.d.ts +1 -2
- package/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.d.ts +12 -11
- package/framework/schema-form-controls/schema-form-divider/schema-form-divider.component.d.ts +12 -0
- package/framework/schema-form-controls/schema-form-input/schema-form-input.component.d.ts +10 -9
- package/framework/schema-form-controls/schema-form-number/schema-form-number.component.d.ts +8 -7
- package/framework/schema-form-controls/schema-form-select/schema-form-select.component.d.ts +10 -9
- package/framework/schema-form-controls/schema-form-submit/schema-form-submit.component.d.ts +10 -9
- package/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.d.ts +10 -9
- package/framework/schema-form-controls/schema-form-tel/schema-form-tel.component.d.ts +23 -0
- package/framework/schema-form-controls/schema-form-tiled-select/schema-form-tiled-select.component.d.ts +32 -0
- package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +7 -14
- package/framework/side-nav/side-nav-item/side-nav-item.component.scss +7 -5
- package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.d.ts +5 -3
- package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.scss +3 -6
- package/framework/side-nav/side-nav.component.d.ts +13 -1
- package/framework/side-nav/side-nav.component.scss +0 -1
- package/framework/side-nav/side-nav.models.d.ts +7 -1
- package/framework/side-nav/side-nav.module.d.ts +1 -9
- package/framework/side-nav/styles/_themes/light/_variables.scss +24 -14
- package/framework/side-nav/styles/_themes/primary/_variables.scss +8 -0
- package/framework/top-bar/index.d.ts +2 -0
- package/framework/top-bar/top-bar-compact-menu-btn-detail.directive.d.ts +8 -0
- package/framework/top-bar/top-bar-item.directive.d.ts +4 -1
- package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +5 -2
- package/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.d.ts +8 -0
- package/framework/top-bar/top-bar.component.d.ts +25 -3
- package/framework/top-bar/top-bar.component.scss +7 -2
- package/framework/top-bar/top-bar.module.d.ts +10 -8
- package/layout/layout.service.d.ts +9 -1
- package/menu/menu-footer-action/menu-footer-action.component.d.ts +1 -1
- package/menu/menu-toggle.directive.d.ts +2 -1
- package/menu/public-api.d.ts +4 -0
- package/menu/testing/menu-footer.harness.d.ts +22 -0
- package/menu/testing/menu-header.harness.d.ts +18 -0
- package/menu/testing/menu-item.harness.d.ts +37 -0
- package/menu/testing/menu.harness.d.ts +74 -0
- package/menu/testing/utils.d.ts +5 -0
- package/package.json +2 -2
- package/story-helpers/args-to-tpl.d.ts +25 -0
- package/story-helpers/public-api.d.ts +1 -0
- package/styles/vendor/ngx-datatable/_ngx-datatable.scss +57 -14
- package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +33 -5
- package/tel-input/public-api.d.ts +1 -0
- package/tel-input/tel-input/tel-input.component.d.ts +2 -2
- package/tel-input/tel-input.directive.d.ts +1 -1
- package/tel-input/tel-input.module.d.ts +7 -7
- package/tel-input/testing/tel-input.harness.d.ts +19 -0
- package/testing/harnesses/ng-select-dropdown.harness.d.ts +23 -0
- package/testing/harnesses/ng-select-option.harness.d.ts +18 -0
- package/testing/harnesses/ng-select.harness.d.ts +50 -0
- package/testing/public-api.d.ts +3 -0
- package/tiled-select/components/tiled-select/tiled-select.component.d.ts +10 -10
- package/esm2020/framework/schema-form-controls/schema-form-controls.module.mjs +0 -79
- package/framework/schema-form-controls/schema-form-controls.module.d.ts +0 -20
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, InjectionToken, Optional, Inject, HostBinding, Input, HostListener, forwardRef, isDevMode, TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChild, NgModule, ViewChild, EventEmitter, Output, Injectable, Injector, ViewChildren,
|
|
2
|
+
import { Directive, InjectionToken, Optional, Inject, HostBinding, Input, HostListener, forwardRef, isDevMode, TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChild, NgModule, ViewChild, EventEmitter, Output, Injectable, Injector, ViewChildren, Self, ContentChildren, inject } from '@angular/core';
|
|
3
|
+
import { tap, map, startWith, switchMap, shareReplay, mapTo, take, auditTime, debounceTime, takeUntil, distinctUntilChanged, finalize, filter } from 'rxjs/operators';
|
|
3
4
|
import * as i3 from '@angular/cdk/portal';
|
|
4
5
|
import { TemplatePortal, PortalModule, BasePortalOutlet, ComponentPortal } from '@angular/cdk/portal';
|
|
5
|
-
import { BehaviorSubject, isObservable, from, Subject, of, combineLatest, defer, Observable } from 'rxjs';
|
|
6
|
+
import { BehaviorSubject, isObservable, from, Subject, of, combineLatest, map as map$1, defer, Observable } from 'rxjs';
|
|
6
7
|
import { faAngleDoubleRight, faAngleDoubleLeft, faLock, faUnlock, faAngleLeft, faBars, faAngleDown } from '@fortawesome/free-solid-svg-icons';
|
|
7
8
|
import * as i1 from '@theseam/ui-common/layout';
|
|
8
9
|
import { TheSeamLayoutModule } from '@theseam/ui-common/layout';
|
|
@@ -14,8 +15,7 @@ import * as i4$1 from '@theseam/ui-common/buttons';
|
|
|
14
15
|
import { TheSeamButtonsModule } from '@theseam/ui-common/buttons';
|
|
15
16
|
import * as i2$1 from '@theseam/ui-common/icon';
|
|
16
17
|
import { TheSeamIconModule } from '@theseam/ui-common/icon';
|
|
17
|
-
import {
|
|
18
|
-
import { hasProperty, notNullOrUndefined, observeControlValue, observeControlStatus } from '@theseam/ui-common/utils';
|
|
18
|
+
import { hasProperty, notNullOrUndefined, observeControlValue, observeControlStatus, isNullOrUndefined } from '@theseam/ui-common/utils';
|
|
19
19
|
import { __decorate } from 'tslib';
|
|
20
20
|
import { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
21
21
|
import * as i3$1 from '@angular/cdk/drag-drop';
|
|
@@ -25,27 +25,31 @@ import { THESEAM_WIDGET_DATA, THESEAM_WIDGET_ACCESSOR } from '@theseam/ui-common
|
|
|
25
25
|
import * as i1$1 from '@theseam/ui-common/dynamic-component-loader';
|
|
26
26
|
import * as i6 from '@theseam/ui-common/shared';
|
|
27
27
|
import { TheSeamSharedModule } from '@theseam/ui-common/shared';
|
|
28
|
-
import { trigger, state, style, transition, animate, group, query, animateChild, keyframes } from '@angular/animations';
|
|
29
28
|
import * as i1$2 from '@angular/router';
|
|
30
|
-
import {
|
|
29
|
+
import { RouterModule, NavigationEnd, NavigationStart } from '@angular/router';
|
|
31
30
|
import * as i4$2 from '@angular/cdk/a11y';
|
|
32
31
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
33
32
|
import * as i5 from '@ng-bootstrap/ng-bootstrap';
|
|
34
33
|
import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
|
|
34
|
+
import { trigger, state, style, transition, animate, group, query, animateChild, keyframes } from '@angular/animations';
|
|
35
35
|
import * as i2$2 from '@angular/flex-layout/extended';
|
|
36
36
|
import * as i3$2 from '@theseam/ui-common/menu';
|
|
37
|
-
import { TheSeamMenuModule } from '@theseam/ui-common/menu';
|
|
37
|
+
import { TheSeamMenuModule, MenuComponent } from '@theseam/ui-common/menu';
|
|
38
38
|
import { faUserCircle } from '@fortawesome/free-regular-svg-icons';
|
|
39
39
|
import * as i1$3 from '@ajsf/core';
|
|
40
|
-
import { isArray, buildTitleMap, hasOwn, Framework,
|
|
40
|
+
import { JsonSchemaFormModule, isArray, buildTitleMap, hasOwn, Framework, WidgetLibraryModule, JsonSchemaFormService, FrameworkLibraryService, WidgetLibraryService } from '@ajsf/core';
|
|
41
41
|
import * as i3$3 from '@angular/forms';
|
|
42
42
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
43
|
+
import { TheSeamCheckboxComponent } from '@theseam/ui-common/checkbox';
|
|
43
44
|
import * as i4$3 from '@theseam/ui-common/form-field';
|
|
44
45
|
import { TheSeamFormFieldModule } from '@theseam/ui-common/form-field';
|
|
45
|
-
import * as i5$1 from '@
|
|
46
|
-
import { TheSeamCheckboxModule } from '@theseam/ui-common/checkbox';
|
|
47
|
-
import * as i5$2 from '@ng-select/ng-select';
|
|
46
|
+
import * as i5$1 from '@ng-select/ng-select';
|
|
48
47
|
import { NgSelectModule } from '@ng-select/ng-select';
|
|
48
|
+
import * as i5$2 from '@theseam/ui-common/tel-input';
|
|
49
|
+
import { TheSeamTelInputModule } from '@theseam/ui-common/tel-input';
|
|
50
|
+
import * as i6$1 from '@theseam/ui-common/tiled-select';
|
|
51
|
+
import { TheSeamTiledSelectModule } from '@theseam/ui-common/tiled-select';
|
|
52
|
+
import * as i2$3 from '@angular/cdk/platform';
|
|
49
53
|
|
|
50
54
|
class BaseLayoutContentFooterDirective {
|
|
51
55
|
constructor(_elementRef) {
|
|
@@ -102,22 +106,31 @@ class BaseLayoutNavToggleDirective {
|
|
|
102
106
|
this.baseLayout.registeredNav.toggle();
|
|
103
107
|
}
|
|
104
108
|
}
|
|
105
|
-
constructor(_baseLayout) {
|
|
109
|
+
constructor(_cdr, _baseLayout) {
|
|
110
|
+
this._cdr = _cdr;
|
|
106
111
|
this.type = 'button';
|
|
107
112
|
/** Screenreader label for the button. */
|
|
108
113
|
this.ariaLabel = 'Navigation toggle';
|
|
114
|
+
this._toggleClass = true;
|
|
115
|
+
this._expandedClass = false;
|
|
109
116
|
this.baseLayout = _baseLayout;
|
|
110
117
|
}
|
|
118
|
+
ngOnInit() {
|
|
119
|
+
this.baseLayout?.registeredNav?.expanded$.pipe(tap(exp => {
|
|
120
|
+
this._expandedClass = exp;
|
|
121
|
+
this._cdr.markForCheck();
|
|
122
|
+
})).subscribe();
|
|
123
|
+
}
|
|
111
124
|
}
|
|
112
|
-
BaseLayoutNavToggleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BaseLayoutNavToggleDirective, deps: [{ token: THESEAM_BASE_LAYOUT_REF, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
113
|
-
BaseLayoutNavToggleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: BaseLayoutNavToggleDirective, selector: "button[seamBaseLayoutNavToggle]", inputs: { type: "type", ariaLabel: ["aria-label", "ariaLabel"] }, host: { listeners: { "click": "_onClick()" }, properties: { "attr.type": "this._attrType", "attr.aria-label": "this._attrAriaLabel" } }, exportAs: ["seamBaseLayoutNavToggle"], ngImport: i0 });
|
|
125
|
+
BaseLayoutNavToggleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BaseLayoutNavToggleDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: THESEAM_BASE_LAYOUT_REF, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
126
|
+
BaseLayoutNavToggleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: BaseLayoutNavToggleDirective, 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 });
|
|
114
127
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BaseLayoutNavToggleDirective, decorators: [{
|
|
115
128
|
type: Directive,
|
|
116
129
|
args: [{
|
|
117
130
|
selector: 'button[seamBaseLayoutNavToggle]',
|
|
118
131
|
exportAs: 'seamBaseLayoutNavToggle'
|
|
119
132
|
}]
|
|
120
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
133
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
121
134
|
type: Optional
|
|
122
135
|
}, {
|
|
123
136
|
type: Inject,
|
|
@@ -133,6 +146,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
133
146
|
}], ariaLabel: [{
|
|
134
147
|
type: Input,
|
|
135
148
|
args: ['aria-label']
|
|
149
|
+
}], _toggleClass: [{
|
|
150
|
+
type: HostBinding,
|
|
151
|
+
args: ['class.base-layout-nav-toggle']
|
|
152
|
+
}], _expandedClass: [{
|
|
153
|
+
type: HostBinding,
|
|
154
|
+
args: ['class.base-layout-nav-toggle--expanded']
|
|
136
155
|
}], _onClick: [{
|
|
137
156
|
type: HostListener,
|
|
138
157
|
args: ['click']
|
|
@@ -180,6 +199,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
180
199
|
}]
|
|
181
200
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
|
|
182
201
|
|
|
202
|
+
class BaseLayoutSideBarHeaderDirective {
|
|
203
|
+
constructor(_elementRef) {
|
|
204
|
+
this._elementRef = _elementRef;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
BaseLayoutSideBarHeaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BaseLayoutSideBarHeaderDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
208
|
+
BaseLayoutSideBarHeaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: BaseLayoutSideBarHeaderDirective, selector: "[seamBaseLayoutSideBarHeader]", ngImport: i0 });
|
|
209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BaseLayoutSideBarHeaderDirective, decorators: [{
|
|
210
|
+
type: Directive,
|
|
211
|
+
args: [{
|
|
212
|
+
selector: '[seamBaseLayoutSideBarHeader]'
|
|
213
|
+
}]
|
|
214
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
|
|
215
|
+
|
|
183
216
|
const THE_SEAM_BASE_LAYOUT = {
|
|
184
217
|
provide: THESEAM_BASE_LAYOUT_REF,
|
|
185
218
|
// tslint:disable-next-line:no-use-before-declare
|
|
@@ -195,6 +228,7 @@ class TheSeamBaseLayoutComponent {
|
|
|
195
228
|
this.faAngleDoubleRight = faAngleDoubleRight;
|
|
196
229
|
this.faAngleDoubleLeft = faAngleDoubleLeft;
|
|
197
230
|
this.overlayNav = false;
|
|
231
|
+
this.showSidebar = true;
|
|
198
232
|
this._hasSideBar = new BehaviorSubject(false);
|
|
199
233
|
this._registeredNav = new BehaviorSubject(undefined);
|
|
200
234
|
this.registeredNav$ = this._registeredNav.asObservable();
|
|
@@ -204,12 +238,17 @@ class TheSeamBaseLayoutComponent {
|
|
|
204
238
|
this.hasSideBar$ = this._hasSideBar.asObservable();
|
|
205
239
|
}
|
|
206
240
|
ngOnInit() {
|
|
241
|
+
if (this.mobileBreakpoint) {
|
|
242
|
+
this._layout.setMobileBreakpoint(this.mobileBreakpoint);
|
|
243
|
+
}
|
|
207
244
|
if (this._topBarTpl) {
|
|
208
245
|
this._topBarPortal = new TemplatePortal(this._topBarTpl, this._viewContainerRef);
|
|
209
246
|
}
|
|
210
247
|
if (this._sideBarTpl) {
|
|
211
248
|
this._sideBarPortal = new TemplatePortal(this._sideBarTpl, this._viewContainerRef);
|
|
212
|
-
this.
|
|
249
|
+
if (this.showSidebar) {
|
|
250
|
+
this._hasSideBar.next(true);
|
|
251
|
+
}
|
|
213
252
|
}
|
|
214
253
|
if (this._contentTpl) {
|
|
215
254
|
this._contentPortal = new TemplatePortal(this._contentTpl, this._viewContainerRef);
|
|
@@ -265,12 +304,16 @@ class TheSeamBaseLayoutComponent {
|
|
|
265
304
|
}
|
|
266
305
|
}
|
|
267
306
|
TheSeamBaseLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamBaseLayoutComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.TheSeamLayoutService }], target: i0.ɵɵFactoryTarget.Component });
|
|
268
|
-
TheSeamBaseLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamBaseLayoutComponent, selector: "seam-base-layout", inputs: { overlayNav: "overlayNav" }, 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\"\n 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
|
|
307
|
+
TheSeamBaseLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamBaseLayoutComponent, 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\"\n 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 *ngFor=\"let action of registeredActions$ | async; first as isFirst\">\n <div class=\"base-layout-registered-action\">\n <ng-container [ngTemplateOutlet]=\"$any(action)?.template\"></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: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: i4.OverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
269
308
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamBaseLayoutComponent, decorators: [{
|
|
270
309
|
type: Component,
|
|
271
|
-
args: [{ selector: 'seam-base-layout', providers: [THE_SEAM_BASE_LAYOUT], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, 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\"\n 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
|
|
310
|
+
args: [{ selector: 'seam-base-layout', providers: [THE_SEAM_BASE_LAYOUT], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, 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\"\n 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 *ngFor=\"let action of registeredActions$ | async; first as isFirst\">\n <div class=\"base-layout-registered-action\">\n <ng-container [ngTemplateOutlet]=\"$any(action)?.template\"></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"] }]
|
|
272
311
|
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i1.TheSeamLayoutService }]; }, propDecorators: { overlayNav: [{
|
|
273
312
|
type: Input
|
|
313
|
+
}], mobileBreakpoint: [{
|
|
314
|
+
type: Input
|
|
315
|
+
}], showSidebar: [{
|
|
316
|
+
type: Input
|
|
274
317
|
}], _topBarTpl: [{
|
|
275
318
|
type: ContentChild,
|
|
276
319
|
args: [BaseLayoutTopBarDirective, { static: true, read: TemplateRef }]
|
|
@@ -295,6 +338,7 @@ TheSeamBaseLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
|
|
|
295
338
|
BaseLayoutContentDirective,
|
|
296
339
|
BaseLayoutSideBarDirective,
|
|
297
340
|
BaseLayoutSideBarFooterDirective,
|
|
341
|
+
BaseLayoutSideBarHeaderDirective,
|
|
298
342
|
BaseLayoutTopBarDirective,
|
|
299
343
|
BaseLayoutNavToggleDirective,
|
|
300
344
|
BaseLayoutContentHeaderDirective,
|
|
@@ -306,6 +350,7 @@ TheSeamBaseLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
|
|
|
306
350
|
BaseLayoutContentDirective,
|
|
307
351
|
BaseLayoutSideBarDirective,
|
|
308
352
|
BaseLayoutSideBarFooterDirective,
|
|
353
|
+
BaseLayoutSideBarHeaderDirective,
|
|
309
354
|
BaseLayoutTopBarDirective,
|
|
310
355
|
BaseLayoutNavToggleDirective,
|
|
311
356
|
BaseLayoutContentHeaderDirective,
|
|
@@ -323,6 +368,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
323
368
|
BaseLayoutContentDirective,
|
|
324
369
|
BaseLayoutSideBarDirective,
|
|
325
370
|
BaseLayoutSideBarFooterDirective,
|
|
371
|
+
BaseLayoutSideBarHeaderDirective,
|
|
326
372
|
BaseLayoutTopBarDirective,
|
|
327
373
|
BaseLayoutNavToggleDirective,
|
|
328
374
|
BaseLayoutContentHeaderDirective,
|
|
@@ -340,6 +386,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
340
386
|
BaseLayoutContentDirective,
|
|
341
387
|
BaseLayoutSideBarDirective,
|
|
342
388
|
BaseLayoutSideBarFooterDirective,
|
|
389
|
+
BaseLayoutSideBarHeaderDirective,
|
|
343
390
|
BaseLayoutTopBarDirective,
|
|
344
391
|
BaseLayoutNavToggleDirective,
|
|
345
392
|
BaseLayoutContentHeaderDirective,
|
|
@@ -1098,8 +1145,6 @@ const THESEAM_SIDE_NAV_ACCESSOR = new InjectionToken('THESEAM_SIDE_NAV_ACCESSOR'
|
|
|
1098
1145
|
|
|
1099
1146
|
const EXPANDED_STATE$1 = 'expanded';
|
|
1100
1147
|
const COLLAPSED_STATE$1 = 'collapsed';
|
|
1101
|
-
const FULL_STATE = 'full';
|
|
1102
|
-
const COMPACT_STATE = 'compact';
|
|
1103
1148
|
class SideNavItemComponent {
|
|
1104
1149
|
set link(value) { this._link.next(value); }
|
|
1105
1150
|
get link() { return this._link.value; }
|
|
@@ -1125,7 +1170,7 @@ class SideNavItemComponent {
|
|
|
1125
1170
|
container: value.container || 'body',
|
|
1126
1171
|
disabled: typeof value?.disabled === 'boolean'
|
|
1127
1172
|
? value.disabled
|
|
1128
|
-
: typeof value.tooltip
|
|
1173
|
+
: typeof value.tooltip === 'string',
|
|
1129
1174
|
};
|
|
1130
1175
|
}
|
|
1131
1176
|
}
|
|
@@ -1135,9 +1180,8 @@ class SideNavItemComponent {
|
|
|
1135
1180
|
}
|
|
1136
1181
|
get _isActiveCssClass() { return this.active; }
|
|
1137
1182
|
get _attrDataHierLevel() { return this.hierLevel; }
|
|
1138
|
-
constructor(_sideNav
|
|
1183
|
+
constructor(_sideNav) {
|
|
1139
1184
|
this._sideNav = _sideNav;
|
|
1140
|
-
this._parent = _parent;
|
|
1141
1185
|
this._ngUnsubscribe = new Subject();
|
|
1142
1186
|
this.faAngleLeft = faAngleLeft;
|
|
1143
1187
|
this.active = false;
|
|
@@ -1151,9 +1195,7 @@ class SideNavItemComponent {
|
|
|
1151
1195
|
this.compact$ = this._compact.asObservable();
|
|
1152
1196
|
this.badgeTheme = 'danger';
|
|
1153
1197
|
this.childGroupAnimState$ = this.expanded$
|
|
1154
|
-
.pipe(map(expanded => expanded ? EXPANDED_STATE$1 : COLLAPSED_STATE$1));
|
|
1155
|
-
this.compactAnimState$ = this.compact$
|
|
1156
|
-
.pipe(map(compact => compact ? COMPACT_STATE : FULL_STATE));
|
|
1198
|
+
.pipe(map$1(expanded => expanded ? EXPANDED_STATE$1 : COLLAPSED_STATE$1));
|
|
1157
1199
|
}
|
|
1158
1200
|
ngOnDestroy() {
|
|
1159
1201
|
this._ngUnsubscribe.next(undefined);
|
|
@@ -1171,36 +1213,17 @@ class SideNavItemComponent {
|
|
|
1171
1213
|
this._sideNav.collapse();
|
|
1172
1214
|
}
|
|
1173
1215
|
}
|
|
1216
|
+
get showIconBlock() {
|
|
1217
|
+
return notNullOrUndefined(this.icon) || this.hideEmptyIcon !== true;
|
|
1218
|
+
}
|
|
1174
1219
|
}
|
|
1175
|
-
SideNavItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavItemComponent, deps: [{ token: THESEAM_SIDE_NAV_ACCESSOR }
|
|
1176
|
-
SideNavItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: { itemType: "itemType", icon: "icon", label: "label", active: "active", 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", "attr.data-hier-level": "this._attrDataHierLevel" } }, exportAs: ["seamSideNavItem"], ngImport: i0, template: "<div class=\"d-flex flex-row\">\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 [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled\">\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 rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\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\">\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 [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\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 routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\">\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 <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 [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\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 [ngbTooltip]=\"$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 .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{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:#2f71a9;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 .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{color:#fff}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 #2a6395;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: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i2$1.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i4$2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "isMobile", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "menuItemTooltipConfig", "menuItemTooltipDisabled"], exportAs: ["seamSideNavItem"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], animations: [
|
|
1220
|
+
SideNavItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavItemComponent, deps: [{ token: THESEAM_SIDE_NAV_ACCESSOR }], target: i0.ɵɵFactoryTarget.Component });
|
|
1221
|
+
SideNavItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavItemComponent, isStandalone: true, selector: "seam-side-nav-item", inputs: { itemType: "itemType", icon: "icon", hideEmptyIcon: "hideEmptyIcon", label: "label", active: "active", 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", "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 </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 [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\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 [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\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 routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\">\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 [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\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 [ngbTooltip]=\"$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{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 .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 #2a6395;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", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "isMobile", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "menuItemTooltipConfig", "menuItemTooltipDisabled"], exportAs: ["seamSideNavItem"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "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$1.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i4$2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "ngmodule", type: NgbTooltipModule }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }], animations: [
|
|
1177
1222
|
trigger('childGroupAnim', [
|
|
1178
1223
|
state(EXPANDED_STATE$1, style({ height: '*' })),
|
|
1179
|
-
state(COLLAPSED_STATE$1, style({ height: 0,
|
|
1224
|
+
state(COLLAPSED_STATE$1, style({ height: 0, visibility: 'hidden' })),
|
|
1180
1225
|
transition(`${EXPANDED_STATE$1} <=> ${COLLAPSED_STATE$1}`, animate('0.2s ease-in-out')),
|
|
1181
1226
|
]),
|
|
1182
|
-
trigger('compactAnim', [
|
|
1183
|
-
// transition('* <=> *', [
|
|
1184
|
-
// query(':enter', [
|
|
1185
|
-
// style({ opacity: '0' }),
|
|
1186
|
-
// animate('5.2s ease-in-out', style({ opacity: '1' }))
|
|
1187
|
-
// ], { optional: true }),
|
|
1188
|
-
// query(':leave', [
|
|
1189
|
-
// style({ opacity: '1' }),
|
|
1190
|
-
// animate('5.2s ease-in-out', style({ opacity: '0' }))
|
|
1191
|
-
// ], { optional: true })
|
|
1192
|
-
// ])
|
|
1193
|
-
// state(FULL_STATE, style({ opacity: '1' })),
|
|
1194
|
-
// state(COMPACT_STATE, style({ opacity: '0' })),
|
|
1195
|
-
// transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, animate('5.2s ease-in-out')),
|
|
1196
|
-
// transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, [
|
|
1197
|
-
// transition('* <=> *', [
|
|
1198
|
-
// query(':leave', [
|
|
1199
|
-
// style({ opacity: '1' }),
|
|
1200
|
-
// animate('5.2s ease-in-out', style({ opacity: '0' }))
|
|
1201
|
-
// ], { optional: true })
|
|
1202
|
-
// ]),
|
|
1203
|
-
])
|
|
1204
1227
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1205
1228
|
__decorate([
|
|
1206
1229
|
InputBoolean()
|
|
@@ -1216,45 +1239,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
1216
1239
|
args: [{ selector: 'seam-side-nav-item', exportAs: 'seamSideNavItem', animations: [
|
|
1217
1240
|
trigger('childGroupAnim', [
|
|
1218
1241
|
state(EXPANDED_STATE$1, style({ height: '*' })),
|
|
1219
|
-
state(COLLAPSED_STATE$1, style({ height: 0,
|
|
1242
|
+
state(COLLAPSED_STATE$1, style({ height: 0, visibility: 'hidden' })),
|
|
1220
1243
|
transition(`${EXPANDED_STATE$1} <=> ${COLLAPSED_STATE$1}`, animate('0.2s ease-in-out')),
|
|
1221
1244
|
]),
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
// query(':leave', [
|
|
1229
|
-
// style({ opacity: '1' }),
|
|
1230
|
-
// animate('5.2s ease-in-out', style({ opacity: '0' }))
|
|
1231
|
-
// ], { optional: true })
|
|
1232
|
-
// ])
|
|
1233
|
-
// state(FULL_STATE, style({ opacity: '1' })),
|
|
1234
|
-
// state(COMPACT_STATE, style({ opacity: '0' })),
|
|
1235
|
-
// transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, animate('5.2s ease-in-out')),
|
|
1236
|
-
// transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, [
|
|
1237
|
-
// transition('* <=> *', [
|
|
1238
|
-
// query(':leave', [
|
|
1239
|
-
// style({ opacity: '1' }),
|
|
1240
|
-
// animate('5.2s ease-in-out', style({ opacity: '0' }))
|
|
1241
|
-
// ], { optional: true })
|
|
1242
|
-
// ]),
|
|
1243
|
-
])
|
|
1244
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"d-flex flex-row\">\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 [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled\">\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 rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\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\">\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 [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\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 routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\">\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 <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 [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\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 [ngbTooltip]=\"$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 .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{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:#2f71a9;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 .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{color:#fff}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 #2a6395;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"] }]
|
|
1245
|
+
], imports: [
|
|
1246
|
+
CommonModule,
|
|
1247
|
+
RouterModule,
|
|
1248
|
+
TheSeamIconModule,
|
|
1249
|
+
A11yModule,
|
|
1250
|
+
NgbTooltipModule,
|
|
1251
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, 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 </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 [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\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 [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\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 routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\">\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 [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\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 [ngbTooltip]=\"$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{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 .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 #2a6395;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"] }]
|
|
1245
1252
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
1246
1253
|
type: Inject,
|
|
1247
1254
|
args: [THESEAM_SIDE_NAV_ACCESSOR]
|
|
1248
|
-
}] }, { type: SideNavItemComponent, decorators: [{
|
|
1249
|
-
type: Optional
|
|
1250
|
-
}, {
|
|
1251
|
-
type: SkipSelf
|
|
1252
|
-
}, {
|
|
1253
|
-
type: Host
|
|
1254
1255
|
}] }]; }, propDecorators: { itemType: [{
|
|
1255
1256
|
type: Input
|
|
1256
1257
|
}], icon: [{
|
|
1257
1258
|
type: Input
|
|
1259
|
+
}], hideEmptyIcon: [{
|
|
1260
|
+
type: Input
|
|
1258
1261
|
}], label: [{
|
|
1259
1262
|
type: Input
|
|
1260
1263
|
}], active: [{
|
|
@@ -1297,7 +1300,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
1297
1300
|
|
|
1298
1301
|
class SideNavToggleComponent {
|
|
1299
1302
|
constructor() {
|
|
1300
|
-
this.faBars = faBars;
|
|
1301
1303
|
this.expanded = false;
|
|
1302
1304
|
this.toggleExpand = new EventEmitter();
|
|
1303
1305
|
}
|
|
@@ -1306,7 +1308,7 @@ class SideNavToggleComponent {
|
|
|
1306
1308
|
}
|
|
1307
1309
|
}
|
|
1308
1310
|
SideNavToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1309
|
-
SideNavToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavToggleComponent, selector: "seam-side-nav-toggle", inputs: { expanded: "expanded" }, outputs: { toggleExpand: "toggleExpand" }, host: { properties: { "class.side-nav-toggle--compact": "!expanded" } }, ngImport: i0, template: "<div class=\"side-nav-toggle--content\" *ngIf=\"expanded\">\n
|
|
1311
|
+
SideNavToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.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\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"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "component", type: i2$1.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 });
|
|
1310
1312
|
__decorate([
|
|
1311
1313
|
InputBoolean()
|
|
1312
1314
|
], SideNavToggleComponent.prototype, "expanded", void 0);
|
|
@@ -1314,9 +1316,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
1314
1316
|
type: Component,
|
|
1315
1317
|
args: [{ selector: 'seam-side-nav-toggle', host: {
|
|
1316
1318
|
'[class.side-nav-toggle--compact]': '!expanded'
|
|
1317
|
-
},
|
|
1319
|
+
}, imports: [
|
|
1320
|
+
CommonModule,
|
|
1321
|
+
TheSeamIconModule,
|
|
1322
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, 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"] }]
|
|
1318
1323
|
}], propDecorators: { expanded: [{
|
|
1319
1324
|
type: Input
|
|
1325
|
+
}], toggleIcon: [{
|
|
1326
|
+
type: Input
|
|
1327
|
+
}], toggleTpl: [{
|
|
1328
|
+
type: Input
|
|
1320
1329
|
}], toggleExpand: [{
|
|
1321
1330
|
type: Output
|
|
1322
1331
|
}] } });
|
|
@@ -1625,14 +1634,20 @@ class SideNavComponent {
|
|
|
1625
1634
|
this._sideNav = _sideNav;
|
|
1626
1635
|
this._baseLayoutRef = _baseLayoutRef;
|
|
1627
1636
|
this._ngUnsubscribe = new Subject();
|
|
1637
|
+
this.faBars = faBars;
|
|
1628
1638
|
// @HostBinding('@sideNavExpand') _sideNavExpand = EXPANDED_STATE
|
|
1629
1639
|
// _sideNavExpand = EXPANDED_STATE
|
|
1630
1640
|
// @HostBinding('@sideNavAnim') _sideNavExpand = EXPANDED_STATE
|
|
1631
1641
|
this._sideNavExpand = 'initial';
|
|
1632
1642
|
this.hasHeaderToggle = true;
|
|
1643
|
+
this.toggleIcon = faBars;
|
|
1633
1644
|
this._items = new BehaviorSubject([]);
|
|
1645
|
+
this.indentSize = 10;
|
|
1634
1646
|
this._expanded = new BehaviorSubject(true);
|
|
1635
1647
|
this.expanded$ = this._expanded.asObservable();
|
|
1648
|
+
this.expandOrigin = 'left';
|
|
1649
|
+
this.expandHeight = '100%';
|
|
1650
|
+
this.expandWidth = 'calc(100vw - 50px)';
|
|
1636
1651
|
this._overlay = new BehaviorSubject(false);
|
|
1637
1652
|
this.overlay$ = this._overlay.asObservable();
|
|
1638
1653
|
this._menuItemTooltipConfig = {
|
|
@@ -1642,7 +1657,7 @@ class SideNavComponent {
|
|
|
1642
1657
|
};
|
|
1643
1658
|
this.toggleExpand = new EventEmitter();
|
|
1644
1659
|
this._backdropHidden = new BehaviorSubject(true);
|
|
1645
|
-
this.items$ = this._items.asObservable().pipe(switchMap(items => this._sideNav.createItemsObservable(items)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
1660
|
+
this.items$ = this._items.asObservable().pipe(switchMap(items => items ? this._sideNav.createItemsObservable(items) : []), shareReplay({ bufferSize: 1, refCount: true }));
|
|
1646
1661
|
this.isMobile$ = this._layout.isMobile$.pipe(tap(isMobile => isMobile ? this.collapse() : this.expand()));
|
|
1647
1662
|
this.sideNavExpandedState$ = combineLatest([this.expanded$, this.overlay$]).pipe(map(([expanded, overlay]) => expanded
|
|
1648
1663
|
? overlay ? EXPANDED_OVERLAY_STATE : EXPANDED_STATE
|
|
@@ -1667,6 +1682,9 @@ class SideNavComponent {
|
|
|
1667
1682
|
this.sideNavExpandedState$
|
|
1668
1683
|
.pipe(takeUntil(this._ngUnsubscribe))
|
|
1669
1684
|
.subscribe(v => this._sideNavExpand = v);
|
|
1685
|
+
if (this._sideBarHeaderTpl) {
|
|
1686
|
+
this._sideBarHeaderPortal = new TemplatePortal(this._sideBarHeaderTpl, this._viewContainerRef);
|
|
1687
|
+
}
|
|
1670
1688
|
if (this._sideBarFooterTpl) {
|
|
1671
1689
|
this._sideBarFooterPortal = new TemplatePortal(this._sideBarFooterTpl, this._viewContainerRef);
|
|
1672
1690
|
}
|
|
@@ -1697,16 +1715,32 @@ class SideNavComponent {
|
|
|
1697
1715
|
this._backdropHidden.next(true);
|
|
1698
1716
|
}
|
|
1699
1717
|
}
|
|
1718
|
+
get expandOriginTransform() {
|
|
1719
|
+
switch (this.expandOrigin) {
|
|
1720
|
+
case 'right':
|
|
1721
|
+
return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateX(100vw) translateX(-100%)'
|
|
1722
|
+
: this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateX(100vw)' : null;
|
|
1723
|
+
case 'top':
|
|
1724
|
+
return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateY(0)'
|
|
1725
|
+
: this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateY(-100%)' : null;
|
|
1726
|
+
case 'bottom':
|
|
1727
|
+
return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateY(100vh) translateY(-100%)'
|
|
1728
|
+
: this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateY(100vh)' : null;
|
|
1729
|
+
case 'left':
|
|
1730
|
+
default:
|
|
1731
|
+
return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateX(0)'
|
|
1732
|
+
: this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateX(-100%)' : null;
|
|
1733
|
+
}
|
|
1734
|
+
}
|
|
1700
1735
|
}
|
|
1701
1736
|
SideNavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.TheSeamLayoutService }, { token: TheSeamSideNavService }, { token: THESEAM_BASE_LAYOUT_REF, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
1702
|
-
SideNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavComponent, selector: "seam-side-nav", inputs: { hasHeaderToggle: "hasHeaderToggle", items: "items", expanded: "expanded", overlay: "overlay", menuItemTooltipConfig: "menuItemTooltipConfig" }, outputs: { toggleExpand: "toggleExpand" }, host: { properties: { "@sideNavAnim": "this._sideNavExpand" } }, providers: [
|
|
1737
|
+
SideNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.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: [
|
|
1703
1738
|
TheSeamSideNavService,
|
|
1704
1739
|
{
|
|
1705
1740
|
provide: THESEAM_SIDE_NAV_ACCESSOR,
|
|
1706
|
-
|
|
1707
|
-
useExisting: forwardRef(() => SideNavComponent)
|
|
1741
|
+
useExisting: SideNavComponent
|
|
1708
1742
|
},
|
|
1709
|
-
], queries: [{ propertyName: "_sideBarFooterTpl", first: true, predicate: BaseLayoutSideBarFooterDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"></div>\n\n<div
|
|
1743
|
+
], 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 class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"\n (click)=\"collapse()\"></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 <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle *ngIf=\"hasHeaderToggle\"\n [toggleIcon]=\"toggleIcon\"\n [toggleTpl]=\"toggleTpl\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\">\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 *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 </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:rgba(52,58,64,.6);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.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: A11yModule }, { kind: "ngmodule", type: TheSeamScrollbarModule }, { kind: "directive", type: i4.OverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "ngmodule", type: TheSeamLayoutModule }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "hideEmptyIcon", "label", "active", "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"] }], animations: [
|
|
1710
1744
|
//
|
|
1711
1745
|
// TODO: This animation code turned into a mess. Clean it up and make it
|
|
1712
1746
|
// more smooth.
|
|
@@ -1729,32 +1763,42 @@ SideNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
|
|
|
1729
1763
|
transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
|
|
1730
1764
|
]),
|
|
1731
1765
|
trigger('sideNavExpand', [
|
|
1732
|
-
// TODO: Make width configurable.
|
|
1766
|
+
// TODO: Make width configurable for non-overlay state.
|
|
1733
1767
|
state(EXPANDED_STATE, style({ width: '260px' })),
|
|
1734
1768
|
state(COLLAPSED_STATE, style({ width: '50px', 'overflow-x': 'hidden' })),
|
|
1735
1769
|
state(EXPANDED_OVERLAY_STATE, style({
|
|
1736
1770
|
position: 'absolute',
|
|
1737
1771
|
top: 0,
|
|
1738
|
-
height: '100%',
|
|
1739
1772
|
bottom: 0,
|
|
1740
1773
|
left: 0,
|
|
1741
|
-
|
|
1774
|
+
height: '{{ height }}',
|
|
1775
|
+
width: '{{ width }}',
|
|
1776
|
+
transform: '{{ origin }}',
|
|
1742
1777
|
zIndex: '9999',
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1778
|
+
}), {
|
|
1779
|
+
params: {
|
|
1780
|
+
origin: 'translateX(100%)',
|
|
1781
|
+
height: '100%',
|
|
1782
|
+
width: 'calc(100vw - 50px)',
|
|
1783
|
+
}
|
|
1784
|
+
}),
|
|
1746
1785
|
state(COLLAPSED_OVERLAY_STATE, style({
|
|
1747
1786
|
position: 'absolute',
|
|
1748
1787
|
top: 0,
|
|
1749
|
-
height: '100%',
|
|
1750
1788
|
bottom: 0,
|
|
1751
1789
|
left: 0,
|
|
1752
|
-
|
|
1790
|
+
height: '{{ height }}',
|
|
1791
|
+
width: '{{ width }}',
|
|
1792
|
+
transform: '{{ origin }}',
|
|
1793
|
+
'overflow-x': 'hidden',
|
|
1753
1794
|
zIndex: '9999',
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1795
|
+
}), {
|
|
1796
|
+
params: {
|
|
1797
|
+
origin: 'translateX(0)',
|
|
1798
|
+
height: '100%',
|
|
1799
|
+
width: 'calc(100vw - 50px)',
|
|
1800
|
+
}
|
|
1801
|
+
}),
|
|
1758
1802
|
// transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
|
|
1759
1803
|
transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
|
|
1760
1804
|
// transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, [
|
|
@@ -1772,14 +1816,16 @@ SideNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
|
|
|
1772
1816
|
__decorate([
|
|
1773
1817
|
InputBoolean()
|
|
1774
1818
|
], SideNavComponent.prototype, "hasHeaderToggle", void 0);
|
|
1819
|
+
__decorate([
|
|
1820
|
+
InputNumber(10)
|
|
1821
|
+
], SideNavComponent.prototype, "indentSize", void 0);
|
|
1775
1822
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavComponent, decorators: [{
|
|
1776
1823
|
type: Component,
|
|
1777
1824
|
args: [{ selector: 'seam-side-nav', providers: [
|
|
1778
1825
|
TheSeamSideNavService,
|
|
1779
1826
|
{
|
|
1780
1827
|
provide: THESEAM_SIDE_NAV_ACCESSOR,
|
|
1781
|
-
|
|
1782
|
-
useExisting: forwardRef(() => SideNavComponent)
|
|
1828
|
+
useExisting: SideNavComponent
|
|
1783
1829
|
},
|
|
1784
1830
|
], animations: [
|
|
1785
1831
|
//
|
|
@@ -1804,32 +1850,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
1804
1850
|
transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
|
|
1805
1851
|
]),
|
|
1806
1852
|
trigger('sideNavExpand', [
|
|
1807
|
-
// TODO: Make width configurable.
|
|
1853
|
+
// TODO: Make width configurable for non-overlay state.
|
|
1808
1854
|
state(EXPANDED_STATE, style({ width: '260px' })),
|
|
1809
1855
|
state(COLLAPSED_STATE, style({ width: '50px', 'overflow-x': 'hidden' })),
|
|
1810
1856
|
state(EXPANDED_OVERLAY_STATE, style({
|
|
1811
1857
|
position: 'absolute',
|
|
1812
1858
|
top: 0,
|
|
1813
|
-
height: '100%',
|
|
1814
1859
|
bottom: 0,
|
|
1815
1860
|
left: 0,
|
|
1816
|
-
|
|
1861
|
+
height: '{{ height }}',
|
|
1862
|
+
width: '{{ width }}',
|
|
1863
|
+
transform: '{{ origin }}',
|
|
1817
1864
|
zIndex: '9999',
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1865
|
+
}), {
|
|
1866
|
+
params: {
|
|
1867
|
+
origin: 'translateX(100%)',
|
|
1868
|
+
height: '100%',
|
|
1869
|
+
width: 'calc(100vw - 50px)',
|
|
1870
|
+
}
|
|
1871
|
+
}),
|
|
1821
1872
|
state(COLLAPSED_OVERLAY_STATE, style({
|
|
1822
1873
|
position: 'absolute',
|
|
1823
1874
|
top: 0,
|
|
1824
|
-
height: '100%',
|
|
1825
1875
|
bottom: 0,
|
|
1826
1876
|
left: 0,
|
|
1827
|
-
|
|
1877
|
+
height: '{{ height }}',
|
|
1878
|
+
width: '{{ width }}',
|
|
1879
|
+
transform: '{{ origin }}',
|
|
1880
|
+
'overflow-x': 'hidden',
|
|
1828
1881
|
zIndex: '9999',
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1882
|
+
}), {
|
|
1883
|
+
params: {
|
|
1884
|
+
origin: 'translateX(0)',
|
|
1885
|
+
height: '100%',
|
|
1886
|
+
width: 'calc(100vw - 50px)',
|
|
1887
|
+
}
|
|
1888
|
+
}),
|
|
1833
1889
|
// transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
|
|
1834
1890
|
transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
|
|
1835
1891
|
// transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, [
|
|
@@ -1843,7 +1899,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
1843
1899
|
// ])
|
|
1844
1900
|
// ]),
|
|
1845
1901
|
])
|
|
1846
|
-
],
|
|
1902
|
+
], imports: [
|
|
1903
|
+
CommonModule,
|
|
1904
|
+
A11yModule,
|
|
1905
|
+
TheSeamScrollbarModule,
|
|
1906
|
+
TheSeamLayoutModule,
|
|
1907
|
+
PortalModule,
|
|
1908
|
+
SideNavItemComponent,
|
|
1909
|
+
SideNavToggleComponent,
|
|
1910
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, template: "<div class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"\n (click)=\"collapse()\"></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 <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle *ngIf=\"hasHeaderToggle\"\n [toggleIcon]=\"toggleIcon\"\n [toggleTpl]=\"toggleTpl\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\">\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 *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 </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:rgba(52,58,64,.6);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"] }]
|
|
1847
1911
|
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i1.TheSeamLayoutService }, { type: TheSeamSideNavService }, { type: undefined, decorators: [{
|
|
1848
1912
|
type: Optional
|
|
1849
1913
|
}, {
|
|
@@ -1854,16 +1918,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
1854
1918
|
args: ['@sideNavAnim']
|
|
1855
1919
|
}], hasHeaderToggle: [{
|
|
1856
1920
|
type: Input
|
|
1921
|
+
}], toggleIcon: [{
|
|
1922
|
+
type: Input
|
|
1923
|
+
}], toggleTpl: [{
|
|
1924
|
+
type: Input
|
|
1857
1925
|
}], items: [{
|
|
1858
1926
|
type: Input
|
|
1927
|
+
}], hideEmptyIcon: [{
|
|
1928
|
+
type: Input
|
|
1929
|
+
}], indentSize: [{
|
|
1930
|
+
type: Input
|
|
1859
1931
|
}], expanded: [{
|
|
1860
1932
|
type: Input
|
|
1933
|
+
}], expandOrigin: [{
|
|
1934
|
+
type: Input
|
|
1935
|
+
}], expandHeight: [{
|
|
1936
|
+
type: Input
|
|
1937
|
+
}], expandWidth: [{
|
|
1938
|
+
type: Input
|
|
1861
1939
|
}], overlay: [{
|
|
1862
1940
|
type: Input
|
|
1863
1941
|
}], menuItemTooltipConfig: [{
|
|
1864
1942
|
type: Input
|
|
1865
1943
|
}], toggleExpand: [{
|
|
1866
1944
|
type: Output
|
|
1945
|
+
}], _sideBarHeaderTpl: [{
|
|
1946
|
+
type: ContentChild,
|
|
1947
|
+
args: [BaseLayoutSideBarHeaderDirective, { static: true, read: TemplateRef }]
|
|
1867
1948
|
}], _sideBarFooterTpl: [{
|
|
1868
1949
|
type: ContentChild,
|
|
1869
1950
|
args: [BaseLayoutSideBarFooterDirective, { static: true, read: TemplateRef }]
|
|
@@ -1872,48 +1953,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
1872
1953
|
class TheSeamSideNavModule {
|
|
1873
1954
|
}
|
|
1874
1955
|
TheSeamSideNavModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSideNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1875
|
-
TheSeamSideNavModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSideNavModule,
|
|
1956
|
+
TheSeamSideNavModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSideNavModule, imports: [SideNavItemComponent,
|
|
1876
1957
|
SideNavComponent,
|
|
1877
|
-
SideNavToggleComponent],
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
TheSeamScrollbarModule,
|
|
1882
|
-
TheSeamLayoutModule,
|
|
1883
|
-
NgbTooltipModule,
|
|
1884
|
-
PortalModule], exports: [SideNavItemComponent,
|
|
1958
|
+
SideNavToggleComponent], exports: [SideNavItemComponent,
|
|
1959
|
+
SideNavComponent,
|
|
1960
|
+
SideNavToggleComponent] });
|
|
1961
|
+
TheSeamSideNavModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSideNavModule, imports: [SideNavItemComponent,
|
|
1885
1962
|
SideNavComponent,
|
|
1886
1963
|
SideNavToggleComponent] });
|
|
1887
|
-
TheSeamSideNavModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSideNavModule, imports: [CommonModule,
|
|
1888
|
-
RouterModule,
|
|
1889
|
-
TheSeamIconModule,
|
|
1890
|
-
A11yModule,
|
|
1891
|
-
TheSeamScrollbarModule,
|
|
1892
|
-
TheSeamLayoutModule,
|
|
1893
|
-
NgbTooltipModule,
|
|
1894
|
-
PortalModule] });
|
|
1895
1964
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSideNavModule, decorators: [{
|
|
1896
1965
|
type: NgModule,
|
|
1897
1966
|
args: [{
|
|
1898
|
-
|
|
1967
|
+
imports: [
|
|
1899
1968
|
SideNavItemComponent,
|
|
1900
1969
|
SideNavComponent,
|
|
1901
|
-
SideNavToggleComponent
|
|
1902
|
-
],
|
|
1903
|
-
imports: [
|
|
1904
|
-
CommonModule,
|
|
1905
|
-
RouterModule,
|
|
1906
|
-
TheSeamIconModule,
|
|
1907
|
-
A11yModule,
|
|
1908
|
-
TheSeamScrollbarModule,
|
|
1909
|
-
TheSeamLayoutModule,
|
|
1910
|
-
NgbTooltipModule,
|
|
1911
|
-
PortalModule
|
|
1970
|
+
SideNavToggleComponent,
|
|
1912
1971
|
],
|
|
1913
1972
|
exports: [
|
|
1914
1973
|
SideNavItemComponent,
|
|
1915
1974
|
SideNavComponent,
|
|
1916
|
-
SideNavToggleComponent
|
|
1975
|
+
SideNavToggleComponent,
|
|
1917
1976
|
]
|
|
1918
1977
|
}]
|
|
1919
1978
|
}] });
|
|
@@ -1933,7 +1992,7 @@ class TopBarMenuButtonComponent extends _TopBarMenuButtonMixinBase {
|
|
|
1933
1992
|
get _hasBtnLinkClass() { return !this.compact; }
|
|
1934
1993
|
}
|
|
1935
1994
|
TopBarMenuButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarMenuButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1936
|
-
TopBarMenuButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TopBarMenuButtonComponent, selector: "button[seamTopBarMenuButton]", inputs: { disabled: "disabled", detailTpl: "detailTpl", 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" }, 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 <seam-icon [icon]=\"profileIcon\" iconType=\"borderless-styled-square\"></seam-icon>\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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1995
|
+
TopBarMenuButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TopBarMenuButtonComponent, 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 [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"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1937
1996
|
__decorate([
|
|
1938
1997
|
InputBoolean()
|
|
1939
1998
|
], TopBarMenuButtonComponent.prototype, "compact", void 0);
|
|
@@ -1941,12 +2000,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
1941
2000
|
type: Component,
|
|
1942
2001
|
args: [{ selector: 'button[seamTopBarMenuButton]', encapsulation: ViewEncapsulation.None, exportAs: 'seamButton', inputs: ['disabled'], host: {
|
|
1943
2002
|
'attr.type': 'button',
|
|
1944
|
-
'class': 'btn border text-decoration-none py-0',
|
|
2003
|
+
'class': 'btn border text-decoration-none py-0 top-bar-menu-button',
|
|
1945
2004
|
'[attr.aria-disabled]': 'disabled.toString()',
|
|
1946
2005
|
'[attr.disabled]': 'disabled || null',
|
|
1947
|
-
}, changeDetection: ChangeDetectionStrategy.OnPush, 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 <seam-icon [icon]=\"profileIcon\" iconType=\"borderless-styled-square\"></seam-icon>\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"] }]
|
|
2006
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, 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"] }]
|
|
1948
2007
|
}], propDecorators: { detailTpl: [{
|
|
1949
2008
|
type: Input
|
|
2009
|
+
}], compactDetailTpl: [{
|
|
2010
|
+
type: Input
|
|
1950
2011
|
}], compact: [{
|
|
1951
2012
|
type: Input
|
|
1952
2013
|
}], profileIcon: [{
|
|
@@ -1978,19 +2039,53 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
1978
2039
|
type: Input
|
|
1979
2040
|
}] } });
|
|
1980
2041
|
|
|
2042
|
+
class TopBarCompactMenuBtnDetailDirective {
|
|
2043
|
+
constructor(template) {
|
|
2044
|
+
this.template = template;
|
|
2045
|
+
}
|
|
2046
|
+
}
|
|
2047
|
+
TopBarCompactMenuBtnDetailDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarCompactMenuBtnDetailDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
2048
|
+
TopBarCompactMenuBtnDetailDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: TopBarCompactMenuBtnDetailDirective, selector: "[seamTopBarCompactMenuBtnDetail]", ngImport: i0 });
|
|
2049
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarCompactMenuBtnDetailDirective, decorators: [{
|
|
2050
|
+
type: Directive,
|
|
2051
|
+
args: [{
|
|
2052
|
+
selector: '[seamTopBarCompactMenuBtnDetail]'
|
|
2053
|
+
}]
|
|
2054
|
+
}], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
|
|
2055
|
+
|
|
2056
|
+
class TopBarNavToggleBtnDetailDirective {
|
|
2057
|
+
constructor(template) {
|
|
2058
|
+
this.template = template;
|
|
2059
|
+
}
|
|
2060
|
+
}
|
|
2061
|
+
TopBarNavToggleBtnDetailDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarNavToggleBtnDetailDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
2062
|
+
TopBarNavToggleBtnDetailDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: TopBarNavToggleBtnDetailDirective, selector: "[seamTopBarNavToggleBtnDetail]", ngImport: i0 });
|
|
2063
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarNavToggleBtnDetailDirective, decorators: [{
|
|
2064
|
+
type: Directive,
|
|
2065
|
+
args: [{
|
|
2066
|
+
selector: '[seamTopBarNavToggleBtnDetail]'
|
|
2067
|
+
}]
|
|
2068
|
+
}], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
|
|
2069
|
+
|
|
1981
2070
|
class TopBarItemDirective {
|
|
2071
|
+
set seamTopBarItem(value) {
|
|
2072
|
+
this.position = value;
|
|
2073
|
+
}
|
|
1982
2074
|
constructor(template) {
|
|
1983
2075
|
this.template = template;
|
|
2076
|
+
this.position = 'right';
|
|
1984
2077
|
}
|
|
1985
2078
|
}
|
|
1986
2079
|
TopBarItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarItemDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1987
|
-
TopBarItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: TopBarItemDirective, selector: "[seamTopBarItem]", ngImport: i0 });
|
|
2080
|
+
TopBarItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: TopBarItemDirective, selector: "[seamTopBarItem]", inputs: { seamTopBarItem: "seamTopBarItem" }, ngImport: i0 });
|
|
1988
2081
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarItemDirective, decorators: [{
|
|
1989
2082
|
type: Directive,
|
|
1990
2083
|
args: [{
|
|
1991
2084
|
selector: '[seamTopBarItem]'
|
|
1992
2085
|
}]
|
|
1993
|
-
}], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }
|
|
2086
|
+
}], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { seamTopBarItem: [{
|
|
2087
|
+
type: Input
|
|
2088
|
+
}] } });
|
|
1994
2089
|
|
|
1995
2090
|
class TopBarMenuBtnDetailDirective {
|
|
1996
2091
|
constructor(template) {
|
|
@@ -2046,8 +2141,26 @@ class TheSeamTopBarComponent {
|
|
|
2046
2141
|
this.logoRoute = '/';
|
|
2047
2142
|
/** Determines if the title should be displayed. */
|
|
2048
2143
|
this.hasTitle = false;
|
|
2144
|
+
/** Determines if the top bar button should be displayed. */
|
|
2145
|
+
this.hasTopBarMenuButton = true;
|
|
2049
2146
|
/** Icon to display on mobile to activate profile dropdown. Defaults to faUserCircle. */
|
|
2050
2147
|
this.profileIcon = faUserCircle;
|
|
2148
|
+
/** Icon to display for mobile nav toggle. Defaults to faBars. */
|
|
2149
|
+
this.toggleIcon = faBars;
|
|
2150
|
+
/** Display nav toggle on either left or right side of top bar. Defaults to left. */
|
|
2151
|
+
this.navToggleAlign = 'left';
|
|
2152
|
+
/** @ignore */
|
|
2153
|
+
this._leftItems = new BehaviorSubject([]);
|
|
2154
|
+
/** Additional templates to display on left side of top bar */
|
|
2155
|
+
this.leftItems$ = this._leftItems.asObservable();
|
|
2156
|
+
/** @ignore */
|
|
2157
|
+
this._centerItems = new BehaviorSubject([]);
|
|
2158
|
+
/** Additional templates to display in center of top bar */
|
|
2159
|
+
this.centerItems$ = this._centerItems.asObservable();
|
|
2160
|
+
/** @ignore */
|
|
2161
|
+
this._rightItems = new BehaviorSubject([]);
|
|
2162
|
+
/** Additional templates to display on right side of top bar */
|
|
2163
|
+
this.rightItems$ = this._rightItems.asObservable();
|
|
2051
2164
|
this.isMobile$ = this._layout.isMobile$;
|
|
2052
2165
|
}
|
|
2053
2166
|
/** @ignore */
|
|
@@ -2058,18 +2171,29 @@ class TheSeamTopBarComponent {
|
|
|
2058
2171
|
/** @ignore */
|
|
2059
2172
|
ngAfterContentInit() {
|
|
2060
2173
|
if (this._topBarItems) {
|
|
2061
|
-
this.
|
|
2174
|
+
this._topBarItems.changes.pipe(startWith(undefined), takeUntil(this._ngUnsubscribe), map(() => {
|
|
2175
|
+
const items = this._topBarItems?.toArray() || [];
|
|
2176
|
+
const left = items.filter(i => i.position === 'left');
|
|
2177
|
+
const right = items.filter(i => i.position === 'right');
|
|
2178
|
+
const center = items.filter(i => i.position === 'center');
|
|
2179
|
+
this._leftItems.next(left);
|
|
2180
|
+
this._rightItems.next(right);
|
|
2181
|
+
this._centerItems.next(center);
|
|
2182
|
+
}), shareReplay({ bufferSize: 1, refCount: true })).subscribe();
|
|
2062
2183
|
}
|
|
2063
2184
|
}
|
|
2064
2185
|
}
|
|
2065
2186
|
TheSeamTopBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamTopBarComponent, deps: [{ token: i1.TheSeamLayoutService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2066
|
-
TheSeamTopBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamTopBarComponent, selector: "seam-top-bar", inputs: { logo: "logo", logoSm: "logoSm", logoHref: "logoHref", logoHrefTarget: "logoHrefTarget", logoRoute: "logoRoute", hasTitle: "hasTitle", titleText: "titleText", subTitleText: "subTitleText", profileIcon: "profileIcon" }, queries: [{ propertyName: "_topBarMenu", first: true, predicate: TopBarMenuDirective, descendants: true, static: true }, { propertyName: "_topBarMenuBtnDetailTpl", first: true, predicate: TopBarMenuBtnDetailDirective, descendants: true }, { propertyName: "_topBarItems", predicate: TopBarItemDirective }], exportAs: ["seamTopBar"], ngImport: i0, template: "
|
|
2187
|
+
TheSeamTopBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamTopBarComponent, 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 class=\"top-bar--logo d-flex flex-column justify-content-center\" *ngIf=\"logoHref; else useLogoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <a [href]=\"logoHref\" [target]=\"logoHrefTarget\">\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </a>\n </div>\n\n <ng-template #useLogoRoute>\n <div class=\"top-bar--logo d-flex flex-column justify-content-center\" [routerLink]=\"logoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </div>\n </ng-template>\n\n <ng-template #logoTpl>\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"logoSm ? logoSm : logo\" alt=\"Logo\">\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 </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 class=\"d-flex flex-column justify-content-center pr-2\" *ngIf=\"isMobile$ | async\">\n <ng-container *ngIf=\"_topBarNavToggleBtnDetailTpl; else iconBtn\">\n <button seamButton seamBaseLayoutNavToggle>\n <ng-template [ngTemplateOutlet]=\"_topBarNavToggleBtnDetailTpl?.template || null\"></ng-template>\n </button>\n </ng-container>\n <ng-template #iconBtn>\n <button seamBaseLayoutNavToggle seamIconBtn [icon]=\"toggleIcon\" iconType=\"borderless-styled-square\"></button>\n </ng-template>\n </div>\n</ng-template>\n\n", styles: ["seam-top-bar{display:flex;flex:1 1 100%;flex-direction:row;background:white;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: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$2.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: i4$1.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }, { kind: "component", type: i2$1.IconBtnComponent, selector: "button[seamIconBtn]", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "iconType", "btnTheme", "badgeTheme", "badgeText", "btnSize", "type", "role"] }, { kind: "directive", type: i3$2.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "directive", type: BaseLayoutNavToggleDirective, selector: "button[seamBaseLayoutNavToggle]", inputs: ["type", "aria-label"], exportAs: ["seamBaseLayoutNavToggle"] }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { 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: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2067
2188
|
__decorate([
|
|
2068
2189
|
InputBoolean()
|
|
2069
2190
|
], TheSeamTopBarComponent.prototype, "hasTitle", void 0);
|
|
2191
|
+
__decorate([
|
|
2192
|
+
InputBoolean()
|
|
2193
|
+
], TheSeamTopBarComponent.prototype, "hasTopBarMenuButton", void 0);
|
|
2070
2194
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamTopBarComponent, decorators: [{
|
|
2071
2195
|
type: Component,
|
|
2072
|
-
args: [{ selector: 'seam-top-bar', encapsulation: ViewEncapsulation.None, exportAs: 'seamTopBar', changeDetection: ChangeDetectionStrategy.OnPush, template: "
|
|
2196
|
+
args: [{ selector: 'seam-top-bar', encapsulation: ViewEncapsulation.None, exportAs: 'seamTopBar', changeDetection: ChangeDetectionStrategy.OnPush, 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 class=\"top-bar--logo d-flex flex-column justify-content-center\" *ngIf=\"logoHref; else useLogoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <a [href]=\"logoHref\" [target]=\"logoHrefTarget\">\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </a>\n </div>\n\n <ng-template #useLogoRoute>\n <div class=\"top-bar--logo d-flex flex-column justify-content-center\" [routerLink]=\"logoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </div>\n </ng-template>\n\n <ng-template #logoTpl>\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"logoSm ? logoSm : logo\" alt=\"Logo\">\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 </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 class=\"d-flex flex-column justify-content-center pr-2\" *ngIf=\"isMobile$ | async\">\n <ng-container *ngIf=\"_topBarNavToggleBtnDetailTpl; else iconBtn\">\n <button seamButton seamBaseLayoutNavToggle>\n <ng-template [ngTemplateOutlet]=\"_topBarNavToggleBtnDetailTpl?.template || null\"></ng-template>\n </button>\n </ng-container>\n <ng-template #iconBtn>\n <button seamBaseLayoutNavToggle seamIconBtn [icon]=\"toggleIcon\" iconType=\"borderless-styled-square\"></button>\n </ng-template>\n </div>\n</ng-template>\n\n", styles: ["seam-top-bar{display:flex;flex:1 1 100%;flex-direction:row;background:white;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"] }]
|
|
2073
2197
|
}], ctorParameters: function () { return [{ type: i1.TheSeamLayoutService }]; }, propDecorators: { _topBarMenu: [{
|
|
2074
2198
|
type: ContentChild,
|
|
2075
2199
|
args: [TopBarMenuDirective, { static: true }]
|
|
@@ -2079,6 +2203,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
2079
2203
|
}], _topBarMenuBtnDetailTpl: [{
|
|
2080
2204
|
type: ContentChild,
|
|
2081
2205
|
args: [TopBarMenuBtnDetailDirective]
|
|
2206
|
+
}], _topBarCompactMenuBtnDetailTpl: [{
|
|
2207
|
+
type: ContentChild,
|
|
2208
|
+
args: [TopBarCompactMenuBtnDetailDirective]
|
|
2209
|
+
}], _topBarNavToggleBtnDetailTpl: [{
|
|
2210
|
+
type: ContentChild,
|
|
2211
|
+
args: [TopBarNavToggleBtnDetailDirective]
|
|
2082
2212
|
}], logo: [{
|
|
2083
2213
|
type: Input
|
|
2084
2214
|
}], logoSm: [{
|
|
@@ -2095,8 +2225,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
2095
2225
|
type: Input
|
|
2096
2226
|
}], subTitleText: [{
|
|
2097
2227
|
type: Input
|
|
2228
|
+
}], hasTopBarMenuButton: [{
|
|
2229
|
+
type: Input
|
|
2098
2230
|
}], profileIcon: [{
|
|
2099
2231
|
type: Input
|
|
2232
|
+
}], toggleIcon: [{
|
|
2233
|
+
type: Input
|
|
2234
|
+
}], navToggleAlign: [{
|
|
2235
|
+
type: Input
|
|
2100
2236
|
}] } });
|
|
2101
2237
|
|
|
2102
2238
|
class TheSeamTopBarModule {
|
|
@@ -2107,7 +2243,9 @@ TheSeamTopBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
|
|
|
2107
2243
|
TopBarMenuButtonComponent,
|
|
2108
2244
|
TopBarMenuDirective,
|
|
2109
2245
|
TopBarItemDirective,
|
|
2110
|
-
TopBarMenuBtnDetailDirective
|
|
2246
|
+
TopBarMenuBtnDetailDirective,
|
|
2247
|
+
TopBarCompactMenuBtnDetailDirective,
|
|
2248
|
+
TopBarNavToggleBtnDetailDirective], imports: [CommonModule,
|
|
2111
2249
|
TheSeamLayoutModule,
|
|
2112
2250
|
TheSeamButtonsModule,
|
|
2113
2251
|
TheSeamIconModule,
|
|
@@ -2118,7 +2256,9 @@ TheSeamTopBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
|
|
|
2118
2256
|
TopBarMenuDirective,
|
|
2119
2257
|
TheSeamMenuModule,
|
|
2120
2258
|
TopBarItemDirective,
|
|
2121
|
-
TopBarMenuBtnDetailDirective
|
|
2259
|
+
TopBarMenuBtnDetailDirective,
|
|
2260
|
+
TopBarCompactMenuBtnDetailDirective,
|
|
2261
|
+
TopBarNavToggleBtnDetailDirective] });
|
|
2122
2262
|
TheSeamTopBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamTopBarModule, imports: [CommonModule,
|
|
2123
2263
|
TheSeamLayoutModule,
|
|
2124
2264
|
TheSeamButtonsModule,
|
|
@@ -2135,7 +2275,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
2135
2275
|
TopBarMenuButtonComponent,
|
|
2136
2276
|
TopBarMenuDirective,
|
|
2137
2277
|
TopBarItemDirective,
|
|
2138
|
-
TopBarMenuBtnDetailDirective
|
|
2278
|
+
TopBarMenuBtnDetailDirective,
|
|
2279
|
+
TopBarCompactMenuBtnDetailDirective,
|
|
2280
|
+
TopBarNavToggleBtnDetailDirective
|
|
2139
2281
|
],
|
|
2140
2282
|
imports: [
|
|
2141
2283
|
CommonModule,
|
|
@@ -2152,7 +2294,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
2152
2294
|
TopBarMenuDirective,
|
|
2153
2295
|
TheSeamMenuModule,
|
|
2154
2296
|
TopBarItemDirective,
|
|
2155
|
-
TopBarMenuBtnDetailDirective
|
|
2297
|
+
TopBarMenuBtnDetailDirective,
|
|
2298
|
+
TopBarCompactMenuBtnDetailDirective,
|
|
2299
|
+
TopBarNavToggleBtnDetailDirective
|
|
2156
2300
|
]
|
|
2157
2301
|
}]
|
|
2158
2302
|
}] });
|
|
@@ -2568,33 +2712,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
2568
2712
|
}] });
|
|
2569
2713
|
|
|
2570
2714
|
class TheSeamSchemaFormCheckboxComponent {
|
|
2571
|
-
constructor(
|
|
2572
|
-
this.
|
|
2715
|
+
constructor(_jsf) {
|
|
2716
|
+
this._jsf = _jsf;
|
|
2573
2717
|
this.controlDisabled = false;
|
|
2574
2718
|
this.boundControl = false;
|
|
2575
2719
|
this.trueValue = true;
|
|
2576
2720
|
this.falseValue = false;
|
|
2577
2721
|
}
|
|
2578
2722
|
ngOnInit() {
|
|
2579
|
-
this.options = this.layoutNode
|
|
2580
|
-
this.
|
|
2723
|
+
this.options = this.layoutNode?.options || {};
|
|
2724
|
+
this._jsf.initializeControl(this);
|
|
2581
2725
|
if (this.controlValue === null || this.controlValue === undefined) {
|
|
2582
|
-
this.controlValue = this.options
|
|
2726
|
+
this.controlValue = this.options?.title;
|
|
2583
2727
|
}
|
|
2584
2728
|
}
|
|
2585
2729
|
updateValue(event) {
|
|
2586
2730
|
event.preventDefault();
|
|
2587
|
-
this.
|
|
2731
|
+
this._jsf.updateValue(this, event.target.checked ? this.trueValue : this.falseValue);
|
|
2588
2732
|
}
|
|
2589
2733
|
get isChecked() {
|
|
2590
|
-
return this.
|
|
2734
|
+
return this._jsf.getFormControlValue(this) === this.trueValue;
|
|
2591
2735
|
}
|
|
2592
2736
|
}
|
|
2593
2737
|
TheSeamSchemaFormCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormCheckboxComponent, deps: [{ token: i1$3.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2594
|
-
TheSeamSchemaFormCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormCheckboxComponent, 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 seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <seam-checkbox 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 {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "component", type: i4$3.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }, { kind: "component", type:
|
|
2738
|
+
TheSeamSchemaFormCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.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 seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <seam-checkbox 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 {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></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.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "component", type: i4$3.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"] }] });
|
|
2595
2739
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormCheckboxComponent, decorators: [{
|
|
2596
2740
|
type: Component,
|
|
2597
|
-
args: [{ selector: 'seam-schema-form-checkbox',
|
|
2741
|
+
args: [{ selector: 'seam-schema-form-checkbox', standalone: true, imports: [
|
|
2742
|
+
CommonModule,
|
|
2743
|
+
ReactiveFormsModule,
|
|
2744
|
+
JsonSchemaFormModule,
|
|
2745
|
+
TheSeamFormFieldModule,
|
|
2746
|
+
TheSeamCheckboxComponent,
|
|
2747
|
+
], template: "<div class=\"mb-3\">\n <seam-form-field *ngIf=\"boundControl\">\n <seam-checkbox seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <seam-checkbox 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 {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n</div>\n" }]
|
|
2598
2748
|
}], ctorParameters: function () { return [{ type: i1$3.JsonSchemaFormService }]; }, propDecorators: { layoutNode: [{
|
|
2599
2749
|
type: Input
|
|
2600
2750
|
}], layoutIndex: [{
|
|
@@ -2604,25 +2754,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
2604
2754
|
}] } });
|
|
2605
2755
|
|
|
2606
2756
|
class TheSeamSchemaFormInputComponent {
|
|
2607
|
-
constructor(
|
|
2608
|
-
this.
|
|
2757
|
+
constructor(_jsf) {
|
|
2758
|
+
this._jsf = _jsf;
|
|
2609
2759
|
this.controlDisabled = false;
|
|
2610
2760
|
this.boundControl = false;
|
|
2611
2761
|
this.autoCompleteList = [];
|
|
2612
2762
|
}
|
|
2613
2763
|
ngOnInit() {
|
|
2614
|
-
this.options = this.layoutNode
|
|
2615
|
-
this.
|
|
2764
|
+
this.options = this.layoutNode?.options || {};
|
|
2765
|
+
this._jsf.initializeControl(this);
|
|
2616
2766
|
}
|
|
2617
2767
|
updateValue(event) {
|
|
2618
|
-
this.
|
|
2768
|
+
this._jsf.updateValue(this, event.target.value);
|
|
2619
2769
|
}
|
|
2620
2770
|
}
|
|
2621
2771
|
TheSeamSchemaFormInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormInputComponent, deps: [{ token: i1$3.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2622
|
-
TheSeamSchemaFormInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormInputComponent, selector: "seam-schema-form-input", 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 }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n\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 <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\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 }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input 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\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 <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n</seam-form-field>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$3.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$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i3$3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3$3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$3.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$3.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2772
|
+
TheSeamSchemaFormInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormInputComponent, isStandalone: true, selector: "seam-schema-form-input", 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 }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n\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 <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\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 }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input 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\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 <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n</seam-form-field>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$3.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$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i3$3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3$3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$3.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$3.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2623
2773
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormInputComponent, decorators: [{
|
|
2624
2774
|
type: Component,
|
|
2625
|
-
args: [{ selector: 'seam-schema-form-input', changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2775
|
+
args: [{ selector: 'seam-schema-form-input', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
2776
|
+
CommonModule,
|
|
2777
|
+
ReactiveFormsModule,
|
|
2778
|
+
JsonSchemaFormModule,
|
|
2779
|
+
TheSeamFormFieldModule,
|
|
2780
|
+
], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n\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 <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\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 }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input 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\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 <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n</seam-form-field>\n", styles: [":host{display:block}\n"] }]
|
|
2626
2781
|
}], ctorParameters: function () { return [{ type: i1$3.JsonSchemaFormService }]; }, propDecorators: { layoutNode: [{
|
|
2627
2782
|
type: Input
|
|
2628
2783
|
}], layoutIndex: [{
|
|
@@ -2642,9 +2797,9 @@ class TheSeamSchemaFormNumberComponent {
|
|
|
2642
2797
|
this.lastValidNumber = '';
|
|
2643
2798
|
}
|
|
2644
2799
|
ngOnInit() {
|
|
2645
|
-
this.options = this.layoutNode
|
|
2800
|
+
this.options = this.layoutNode?.options || {};
|
|
2646
2801
|
this.jsf.initializeControl(this);
|
|
2647
|
-
if (this.layoutNode
|
|
2802
|
+
if (this.layoutNode?.dataType === 'integer') {
|
|
2648
2803
|
this.allowDecimal = false;
|
|
2649
2804
|
}
|
|
2650
2805
|
}
|
|
@@ -2653,10 +2808,15 @@ class TheSeamSchemaFormNumberComponent {
|
|
|
2653
2808
|
}
|
|
2654
2809
|
}
|
|
2655
2810
|
TheSeamSchemaFormNumberComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormNumberComponent, deps: [{ token: i1$3.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2656
|
-
TheSeamSchemaFormNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormNumberComponent, 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 }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input 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\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 <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 }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input 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\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 <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$3.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$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i3$3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3$3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$3.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$3.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2811
|
+
TheSeamSchemaFormNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.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 }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input 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\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 <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 }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input 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\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 <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.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$3.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$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i3$3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3$3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$3.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$3.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2657
2812
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormNumberComponent, decorators: [{
|
|
2658
2813
|
type: Component,
|
|
2659
|
-
args: [{ selector: 'seam-schema-form-number', changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2814
|
+
args: [{ selector: 'seam-schema-form-number', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
2815
|
+
CommonModule,
|
|
2816
|
+
ReactiveFormsModule,
|
|
2817
|
+
JsonSchemaFormModule,
|
|
2818
|
+
TheSeamFormFieldModule,
|
|
2819
|
+
], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input 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\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 <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 }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input 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\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 <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n", styles: [":host{display:block}\n"] }]
|
|
2660
2820
|
}], ctorParameters: function () { return [{ type: i1$3.JsonSchemaFormService }]; }, propDecorators: { layoutNode: [{
|
|
2661
2821
|
type: Input
|
|
2662
2822
|
}], layoutIndex: [{
|
|
@@ -2666,27 +2826,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
2666
2826
|
}] } });
|
|
2667
2827
|
|
|
2668
2828
|
class TheSeamSchemaFormSelectComponent {
|
|
2669
|
-
constructor(
|
|
2670
|
-
this.
|
|
2829
|
+
constructor(_jsf) {
|
|
2830
|
+
this._jsf = _jsf;
|
|
2671
2831
|
this.controlDisabled = false;
|
|
2672
2832
|
this.boundControl = false;
|
|
2673
2833
|
this.selectList = [];
|
|
2674
2834
|
this.isArray = isArray;
|
|
2675
2835
|
}
|
|
2676
2836
|
ngOnInit() {
|
|
2677
|
-
this.options = this.layoutNode
|
|
2837
|
+
this.options = this.layoutNode?.options || {};
|
|
2678
2838
|
this.selectList = buildTitleMap(this.options.titleMap || this.options.enumNames, this.options.enum, !!this.options.required, !!this.options.flatList);
|
|
2679
|
-
this.
|
|
2839
|
+
this._jsf.initializeControl(this);
|
|
2680
2840
|
}
|
|
2681
2841
|
updateValue(event) {
|
|
2682
|
-
this.
|
|
2842
|
+
this._jsf.updateValue(this, event.value);
|
|
2683
2843
|
}
|
|
2684
2844
|
}
|
|
2685
2845
|
TheSeamSchemaFormSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormSelectComponent, deps: [{ token: i1$3.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2686
|
-
TheSeamSchemaFormSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormSelectComponent, selector: "seam-schema-form-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 }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select 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\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 <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 }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select 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\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 <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", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$3.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$3.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }, { kind: "component", type: i5$
|
|
2846
|
+
TheSeamSchemaFormSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormSelectComponent, isStandalone: true, selector: "seam-schema-form-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 }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select 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\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 <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 }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select 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\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 <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", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$3.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$3.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i5$1.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i5$1.ɵf, selector: "[ng-option-tmp]" }, { kind: "directive", type: i5$1.ɵh, selector: "[ng-label-tmp]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2687
2847
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormSelectComponent, decorators: [{
|
|
2688
2848
|
type: Component,
|
|
2689
|
-
args: [{ selector: 'seam-schema-form-select', changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2849
|
+
args: [{ selector: 'seam-schema-form-select', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
2850
|
+
CommonModule,
|
|
2851
|
+
ReactiveFormsModule,
|
|
2852
|
+
JsonSchemaFormModule,
|
|
2853
|
+
TheSeamFormFieldModule,
|
|
2854
|
+
NgSelectModule,
|
|
2855
|
+
], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select 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\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 <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 }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select 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\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 <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", styles: [":host{display:block}\n"] }]
|
|
2690
2856
|
}], ctorParameters: function () { return [{ type: i1$3.JsonSchemaFormService }]; }, propDecorators: { layoutNode: [{
|
|
2691
2857
|
type: Input
|
|
2692
2858
|
}], layoutIndex: [{
|
|
@@ -2702,8 +2868,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
2702
2868
|
// from a schema definition. The library may need to me forked to actually
|
|
2703
2869
|
// support this in the way I expect, but maybe there is another way.
|
|
2704
2870
|
class TheSeamSchemaFormSubmitSplitComponent {
|
|
2705
|
-
constructor(
|
|
2706
|
-
this.
|
|
2871
|
+
constructor(_jsf) {
|
|
2872
|
+
this._jsf = _jsf;
|
|
2707
2873
|
/** @ignore */
|
|
2708
2874
|
this._ngUnsubscribe = new Subject();
|
|
2709
2875
|
this.controlDisabled = false;
|
|
@@ -2714,8 +2880,8 @@ class TheSeamSchemaFormSubmitSplitComponent {
|
|
|
2714
2880
|
}
|
|
2715
2881
|
/** @ignore */
|
|
2716
2882
|
ngOnInit() {
|
|
2717
|
-
this.options = this.layoutNode
|
|
2718
|
-
this.
|
|
2883
|
+
this.options = this.layoutNode?.options || {};
|
|
2884
|
+
this._jsf.initializeControl(this);
|
|
2719
2885
|
// NOTE: This is commented out, because there is a bug with submit widgets
|
|
2720
2886
|
// manually defined in layout. All nodes initialized from the provided
|
|
2721
2887
|
// layout have their options populated from the defaults and 'disabled' is
|
|
@@ -2732,9 +2898,9 @@ class TheSeamSchemaFormSubmitSplitComponent {
|
|
|
2732
2898
|
// console.log('[TheSeamSchemaFormSubmitSplitComponent] hasDisabled', this.options.disabled)
|
|
2733
2899
|
// this.controlDisabled = this.options.disabled
|
|
2734
2900
|
// } else
|
|
2735
|
-
if (this.
|
|
2736
|
-
this.controlDisabled = !this.
|
|
2737
|
-
this.
|
|
2901
|
+
if (this._jsf.formOptions.disableInvalidSubmit) {
|
|
2902
|
+
this.controlDisabled = !this._jsf.isValid;
|
|
2903
|
+
this._jsf.isValidChanges.subscribe(isValid => this.controlDisabled = !isValid);
|
|
2738
2904
|
}
|
|
2739
2905
|
if (this.controlValue === null || this.controlValue === undefined) {
|
|
2740
2906
|
this.controlValue = this.options.title;
|
|
@@ -2751,33 +2917,33 @@ class TheSeamSchemaFormSubmitSplitComponent {
|
|
|
2751
2917
|
this._ngUnsubscribe.complete();
|
|
2752
2918
|
}
|
|
2753
2919
|
updateValue(event) {
|
|
2754
|
-
if (typeof this.options
|
|
2920
|
+
if (typeof this.options?.onClick === 'function') {
|
|
2755
2921
|
this.options.onClick(event);
|
|
2756
2922
|
}
|
|
2757
2923
|
else {
|
|
2758
|
-
this.
|
|
2924
|
+
this._jsf.updateValue(this, event.target.value);
|
|
2759
2925
|
}
|
|
2760
2926
|
}
|
|
2761
2927
|
_initDropdown() {
|
|
2762
|
-
if (!hasOwn(this.layoutNode, 'items') || !(this.layoutNode
|
|
2928
|
+
if (!hasOwn(this.layoutNode, 'items') || !(this.layoutNode?.items || []).length) {
|
|
2763
2929
|
return;
|
|
2764
2930
|
}
|
|
2765
2931
|
if (isDevMode()) {
|
|
2766
|
-
if (this.layoutNode.items.length > 1) {
|
|
2932
|
+
if (this.layoutNode?.items && this.layoutNode?.items.length > 1) {
|
|
2767
2933
|
// eslint-disable-next-line no-console
|
|
2768
2934
|
console.warn(`TheSeamSchemaFormSubmitSplitComponent only supports one item.` +
|
|
2769
2935
|
` items after index 0 will be ignored.`);
|
|
2770
2936
|
}
|
|
2771
2937
|
}
|
|
2772
2938
|
const idx = 0;
|
|
2773
|
-
const item = this.layoutNode
|
|
2939
|
+
const item = (this.layoutNode?.items)[idx] || {};
|
|
2774
2940
|
this._dropdownObj = {
|
|
2775
2941
|
layoutNode: item,
|
|
2776
2942
|
layoutIndex: (this.layoutIndex || []).concat(idx),
|
|
2777
2943
|
dataIndex: this.layoutNode?.dataType === 'array' ? (this.dataIndex || []).concat(idx) : this.dataIndex,
|
|
2778
2944
|
options: item.options || {}
|
|
2779
2945
|
};
|
|
2780
|
-
this.
|
|
2946
|
+
this._jsf.initializeControl(this._dropdownObj);
|
|
2781
2947
|
const items = buildTitleMap(this._dropdownObj.options.titleMap || this._dropdownObj.options.enumNames, this._dropdownObj.options.enum, !!this._dropdownObj.options.required, !!this._dropdownObj.options.flatList);
|
|
2782
2948
|
this._selectList = items;
|
|
2783
2949
|
// TODO: Should this be checking if the control is bound?
|
|
@@ -2817,10 +2983,17 @@ class TheSeamSchemaFormSubmitSplitComponent {
|
|
|
2817
2983
|
}
|
|
2818
2984
|
}
|
|
2819
2985
|
TheSeamSchemaFormSubmitSplitComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormSubmitSplitComponent, deps: [{ token: i1$3.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2820
|
-
TheSeamSchemaFormSubmitSplitComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormSubmitSplitComponent, selector: "seam-schema-form-submit-split", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<div\n [class]=\"options?.htmlClass || ''\">\n <div [class.btn-group]=\"_dropdownObj\">\n <button seamButton theme=\"primary\" 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 {{ _buttonLabel }}\n <span *ngIf=\"_selectedItem\">\n [{{ _selectedItem.name }}]\n </span>\n </button>\n <ng-container *ngIf=\"_dropdownObj\">\n <button\n [seamMenuToggle]=\"menu\" seamButton theme=\"primary\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [disabled]=\"_dropdownDisabled\">\n <span class=\"sr-only\">Toggle Dropdown</span>\n </button>\n <seam-menu #menu>\n <ng-container *ngFor=\"let item of _selectList\">\n <button seamMenuItem\n [class.active]=\"item.checked\"\n (click)=\"_setDropdownValue(item.value)\">\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: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i3$2.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i3$2.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "component", type: i4$1.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }] });
|
|
2986
|
+
TheSeamSchemaFormSubmitSplitComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormSubmitSplitComponent, isStandalone: true, selector: "seam-schema-form-submit-split", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<div\n [class]=\"options?.htmlClass || ''\">\n <div [class.btn-group]=\"_dropdownObj\">\n <button seamButton theme=\"primary\" 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 {{ _buttonLabel }}\n <span *ngIf=\"_selectedItem\">\n [{{ _selectedItem.name }}]\n </span>\n </button>\n <ng-container *ngIf=\"_dropdownObj\">\n <button\n [seamMenuToggle]=\"menu\" seamButton theme=\"primary\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [disabled]=\"_dropdownDisabled\">\n <span class=\"sr-only\">Toggle Dropdown</span>\n </button>\n <seam-menu #menu>\n <ng-container *ngFor=\"let item of _selectList\">\n <button seamMenuItem\n [class.active]=\"item.checked\"\n (click)=\"_setDropdownValue(item.value)\">\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.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.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$2.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i3$2.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i3$2.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "ngmodule", type: TheSeamButtonsModule }, { kind: "component", type: i4$1.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }] });
|
|
2821
2987
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormSubmitSplitComponent, decorators: [{
|
|
2822
2988
|
type: Component,
|
|
2823
|
-
args: [{ selector: 'seam-schema-form-submit-split',
|
|
2989
|
+
args: [{ selector: 'seam-schema-form-submit-split', standalone: true, imports: [
|
|
2990
|
+
CommonModule,
|
|
2991
|
+
ReactiveFormsModule,
|
|
2992
|
+
JsonSchemaFormModule,
|
|
2993
|
+
TheSeamFormFieldModule,
|
|
2994
|
+
TheSeamMenuModule,
|
|
2995
|
+
TheSeamButtonsModule,
|
|
2996
|
+
], template: "<div\n [class]=\"options?.htmlClass || ''\">\n <div [class.btn-group]=\"_dropdownObj\">\n <button seamButton theme=\"primary\" 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 {{ _buttonLabel }}\n <span *ngIf=\"_selectedItem\">\n [{{ _selectedItem.name }}]\n </span>\n </button>\n <ng-container *ngIf=\"_dropdownObj\">\n <button\n [seamMenuToggle]=\"menu\" seamButton theme=\"primary\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [disabled]=\"_dropdownDisabled\">\n <span class=\"sr-only\">Toggle Dropdown</span>\n </button>\n <seam-menu #menu>\n <ng-container *ngFor=\"let item of _selectList\">\n <button seamMenuItem\n [class.active]=\"item.checked\"\n (click)=\"_setDropdownValue(item.value)\">\n {{ item.name }}\n </button>\n </ng-container>\n </seam-menu>\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:block}\n"] }]
|
|
2824
2997
|
}], ctorParameters: function () { return [{ type: i1$3.JsonSchemaFormService }]; }, propDecorators: { layoutNode: [{
|
|
2825
2998
|
type: Input
|
|
2826
2999
|
}], layoutIndex: [{
|
|
@@ -2829,13 +3002,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
2829
3002
|
type: Input
|
|
2830
3003
|
}] } });
|
|
2831
3004
|
|
|
2832
|
-
class
|
|
3005
|
+
class TheSeamSchemaFormDividerComponent {
|
|
3006
|
+
ngOnInit() {
|
|
3007
|
+
this.options = this.layoutNode.options || {};
|
|
3008
|
+
}
|
|
2833
3009
|
}
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type:
|
|
3010
|
+
TheSeamSchemaFormDividerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormDividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3011
|
+
TheSeamSchemaFormDividerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.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"] });
|
|
3012
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormDividerComponent, decorators: [{
|
|
2837
3013
|
type: Component,
|
|
2838
|
-
args: [{ selector: 'seam-schema-form-
|
|
3014
|
+
args: [{ selector: 'seam-schema-form-divider', template: `<hr [class]="options?.htmlClass" />`, standalone: true, styles: [":host{display:block}\n"] }]
|
|
2839
3015
|
}], propDecorators: { layoutNode: [{
|
|
2840
3016
|
type: Input
|
|
2841
3017
|
}], layoutIndex: [{
|
|
@@ -2844,61 +3020,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
2844
3020
|
type: Input
|
|
2845
3021
|
}] } });
|
|
2846
3022
|
|
|
2847
|
-
class
|
|
2848
|
-
constructor() {
|
|
2849
|
-
|
|
2850
|
-
this.name = 'seam-framework';
|
|
2851
|
-
this.framework = TheSeamSchemaFormFrameworkComponent;
|
|
2852
|
-
this.widgets = {
|
|
2853
|
-
'checkbox': TheSeamSchemaFormCheckboxComponent,
|
|
2854
|
-
// 'submit': TheSeamSchemaFormSubmitComponent,
|
|
2855
|
-
'submit': TheSeamSchemaFormSubmitSplitComponent,
|
|
2856
|
-
'text': TheSeamSchemaFormInputComponent,
|
|
2857
|
-
'number': TheSeamSchemaFormNumberComponent,
|
|
2858
|
-
'select': TheSeamSchemaFormSelectComponent
|
|
2859
|
-
};
|
|
2860
|
-
}
|
|
2861
|
-
}
|
|
2862
|
-
TheSeamFramework.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamFramework, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
2863
|
-
TheSeamFramework.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamFramework });
|
|
2864
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamFramework, decorators: [{
|
|
2865
|
-
type: Injectable
|
|
2866
|
-
}] });
|
|
2867
|
-
|
|
2868
|
-
class TheSeamSchemaFormSubmitComponent {
|
|
2869
|
-
constructor(jsf) {
|
|
2870
|
-
this.jsf = jsf;
|
|
3023
|
+
class TheSeamSchemaFormTelComponent {
|
|
3024
|
+
constructor(_jsf) {
|
|
3025
|
+
this._jsf = _jsf;
|
|
2871
3026
|
this.controlDisabled = false;
|
|
2872
3027
|
this.boundControl = false;
|
|
3028
|
+
this.autoCompleteList = [];
|
|
2873
3029
|
}
|
|
2874
3030
|
ngOnInit() {
|
|
2875
|
-
this.options = this.layoutNode
|
|
2876
|
-
this.
|
|
2877
|
-
|
|
2878
|
-
|
|
2879
|
-
}
|
|
2880
|
-
else if (this.jsf.formOptions.disableInvalidSubmit) {
|
|
2881
|
-
this.controlDisabled = !this.jsf.isValid;
|
|
2882
|
-
this.jsf.isValidChanges.subscribe(isValid => this.controlDisabled = !isValid);
|
|
2883
|
-
}
|
|
2884
|
-
if (this.controlValue === null || this.controlValue === undefined) {
|
|
2885
|
-
this.controlValue = this.options.title;
|
|
2886
|
-
}
|
|
3031
|
+
this.options = this.layoutNode?.options || {};
|
|
3032
|
+
this._jsf.initializeControl(this);
|
|
3033
|
+
console.log(this.controlValue);
|
|
3034
|
+
console.log(this.formControl?.value);
|
|
2887
3035
|
}
|
|
2888
3036
|
updateValue(event) {
|
|
2889
|
-
|
|
2890
|
-
this.options.onClick(event);
|
|
2891
|
-
}
|
|
2892
|
-
else {
|
|
2893
|
-
this.jsf.updateValue(this, event.target.value);
|
|
2894
|
-
}
|
|
3037
|
+
this._jsf.updateValue(this, event.target.value);
|
|
2895
3038
|
}
|
|
2896
3039
|
}
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type:
|
|
3040
|
+
TheSeamSchemaFormTelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormTelComponent, deps: [{ token: i1$3.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3041
|
+
TheSeamSchemaFormTelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.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 }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></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 </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 }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></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 </seam-tel-input>\n</seam-form-field>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$3.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$3.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 });
|
|
3042
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormTelComponent, decorators: [{
|
|
2900
3043
|
type: Component,
|
|
2901
|
-
args: [{ selector: 'seam-schema-form-
|
|
3044
|
+
args: [{ selector: 'seam-schema-form-tel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
3045
|
+
CommonModule,
|
|
3046
|
+
ReactiveFormsModule,
|
|
3047
|
+
JsonSchemaFormModule,
|
|
3048
|
+
TheSeamFormFieldModule,
|
|
3049
|
+
TheSeamTelInputModule,
|
|
3050
|
+
], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></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 </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 }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></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 </seam-tel-input>\n</seam-form-field>\n" }]
|
|
2902
3051
|
}], ctorParameters: function () { return [{ type: i1$3.JsonSchemaFormService }]; }, propDecorators: { layoutNode: [{
|
|
2903
3052
|
type: Input
|
|
2904
3053
|
}], layoutIndex: [{
|
|
@@ -2907,85 +3056,154 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
2907
3056
|
type: Input
|
|
2908
3057
|
}] } });
|
|
2909
3058
|
|
|
2910
|
-
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
|
|
2917
|
-
|
|
2918
|
-
|
|
2919
|
-
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
|
|
2925
|
-
|
|
2926
|
-
|
|
2927
|
-
|
|
2928
|
-
|
|
2929
|
-
|
|
2930
|
-
|
|
2931
|
-
|
|
2932
|
-
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
|
|
2937
|
-
|
|
2938
|
-
|
|
2939
|
-
|
|
2940
|
-
ReactiveFormsModule,
|
|
2941
|
-
JsonSchemaFormModule,
|
|
2942
|
-
TheSeamFormFieldModule,
|
|
2943
|
-
TheSeamCheckboxModule,
|
|
2944
|
-
TheSeamMenuModule,
|
|
2945
|
-
TheSeamButtonsModule,
|
|
2946
|
-
NgSelectModule, JsonSchemaFormModule] });
|
|
2947
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormControlsModule, decorators: [{
|
|
2948
|
-
type: NgModule,
|
|
2949
|
-
args: [{
|
|
2950
|
-
declarations: [
|
|
2951
|
-
...controls
|
|
2952
|
-
],
|
|
2953
|
-
imports: [
|
|
3059
|
+
class TheSeamSchemaFormTiledSelectComponent {
|
|
3060
|
+
constructor(_jsf, _platform) {
|
|
3061
|
+
this._jsf = _jsf;
|
|
3062
|
+
this._platform = _platform;
|
|
3063
|
+
this.controlDisabled = false;
|
|
3064
|
+
this.boundControl = false;
|
|
3065
|
+
this.tiles = [];
|
|
3066
|
+
this.layout = 'grid';
|
|
3067
|
+
this.multiple = false;
|
|
3068
|
+
this.selectionToggleable = true;
|
|
3069
|
+
this.tileBackdrop = false;
|
|
3070
|
+
this.showSelectedIcon = true;
|
|
3071
|
+
this.animationsDisabled = this._platform.IOS;
|
|
3072
|
+
}
|
|
3073
|
+
ngOnInit() {
|
|
3074
|
+
this.options = this.layoutNode?.options || {};
|
|
3075
|
+
this._jsf.initializeControl(this);
|
|
3076
|
+
console.log(this.options);
|
|
3077
|
+
console.log(this.layoutNode);
|
|
3078
|
+
this.tiles = this.options.tiles || [];
|
|
3079
|
+
}
|
|
3080
|
+
updateValue(event) {
|
|
3081
|
+
this._jsf.updateValue(this, event.target.value);
|
|
3082
|
+
}
|
|
3083
|
+
}
|
|
3084
|
+
TheSeamSchemaFormTiledSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormTiledSelectComponent, deps: [{ token: i1$3.JsonSchemaFormService }, { token: i2$3.Platform }], target: i0.ɵɵFactoryTarget.Component });
|
|
3085
|
+
TheSeamSchemaFormTiledSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.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 }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></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 </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 }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></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 </seam-tiled-select>\n</seam-form-field>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$3.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$3.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }, { kind: "ngmodule", type: TheSeamTiledSelectModule }, { kind: "component", type: i6$1.TheSeamTiledSelectComponent, selector: "seam-tiled-select", inputs: ["layout", "tiles", "value", "disabled", "multiple", "selectionToggleable", "tileBackdrop", "showSelectedIcon", "animationsDisabled"], outputs: ["change"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3086
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormTiledSelectComponent, decorators: [{
|
|
3087
|
+
type: Component,
|
|
3088
|
+
args: [{ selector: 'seam-schema-form-tiled-select', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
2954
3089
|
CommonModule,
|
|
2955
3090
|
ReactiveFormsModule,
|
|
2956
3091
|
JsonSchemaFormModule,
|
|
2957
3092
|
TheSeamFormFieldModule,
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
|
|
2967
|
-
entryComponents: [
|
|
2968
|
-
...controls
|
|
2969
|
-
]
|
|
2970
|
-
}]
|
|
2971
|
-
}] });
|
|
3093
|
+
TheSeamTiledSelectModule,
|
|
3094
|
+
], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></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 </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 }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></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 </seam-tiled-select>\n</seam-form-field>\n" }]
|
|
3095
|
+
}], ctorParameters: function () { return [{ type: i1$3.JsonSchemaFormService }, { type: i2$3.Platform }]; }, propDecorators: { layoutNode: [{
|
|
3096
|
+
type: Input
|
|
3097
|
+
}], layoutIndex: [{
|
|
3098
|
+
type: Input
|
|
3099
|
+
}], dataIndex: [{
|
|
3100
|
+
type: Input
|
|
3101
|
+
}] } });
|
|
2972
3102
|
|
|
2973
|
-
class
|
|
3103
|
+
class TheSeamSchemaFormFrameworkComponent {
|
|
2974
3104
|
}
|
|
2975
|
-
|
|
2976
|
-
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
3105
|
+
TheSeamSchemaFormFrameworkComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormFrameworkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3106
|
+
TheSeamSchemaFormFrameworkComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormFrameworkComponent, 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</select-widget-widget>\n", styles: [""], dependencies: [{ kind: "component", type: i1$3.SelectWidgetComponent, selector: "select-widget-widget", inputs: ["layoutNode", "layoutIndex", "dataIndex"] }] });
|
|
3107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormFrameworkComponent, decorators: [{
|
|
3108
|
+
type: Component,
|
|
3109
|
+
args: [{ selector: 'seam-schema-form-framework', host: {
|
|
3110
|
+
'[attr.data-name]': 'layoutNode?.node',
|
|
3111
|
+
'[attr.data-data-pointer]': 'layoutNode?.dataPointer',
|
|
3112
|
+
}, template: "<select-widget-widget\n [dataIndex]=\"$any(dataIndex)\"\n [layoutIndex]=\"$any(layoutIndex)\"\n [layoutNode]=\"layoutNode\">\n</select-widget-widget>\n" }]
|
|
3113
|
+
}], propDecorators: { layoutNode: [{
|
|
3114
|
+
type: Input
|
|
3115
|
+
}], layoutIndex: [{
|
|
3116
|
+
type: Input
|
|
3117
|
+
}], dataIndex: [{
|
|
3118
|
+
type: Input
|
|
3119
|
+
}] } });
|
|
3120
|
+
|
|
3121
|
+
const THESEAM_SCHEMA_FRAMEWORK_OVERRIDES = new InjectionToken('THESEAM_SCHEMA_FRAMEWORK_OVERRIDES');
|
|
3122
|
+
function extendFramework(toExtend, extendFrameworkOrName) {
|
|
3123
|
+
// console.log('extendFramework', toExtend, extendFrameworkOrName)
|
|
3124
|
+
const _overrides = inject(Framework, { optional: true });
|
|
3125
|
+
const overrides = typeof extendFrameworkOrName === 'string'
|
|
3126
|
+
? (_overrides || []).filter(x => x.name === extendFrameworkOrName)
|
|
3127
|
+
: [extendFrameworkOrName];
|
|
3128
|
+
// console.log(_overrides, overrides)
|
|
3129
|
+
if (overrides) {
|
|
3130
|
+
for (const override of overrides) {
|
|
3131
|
+
// console.log('override', override)
|
|
3132
|
+
if (hasProperty(override, 'framework')) {
|
|
3133
|
+
toExtend.framework = override.framework;
|
|
3134
|
+
}
|
|
3135
|
+
if (hasProperty(override, 'widgets')) {
|
|
3136
|
+
toExtend.widgets = { ...toExtend.widgets, ...override.widgets };
|
|
3137
|
+
}
|
|
3138
|
+
if (hasProperty(override, 'stylesheets')) {
|
|
3139
|
+
toExtend.stylesheets = { ...toExtend.stylesheets, ...override.stylesheets };
|
|
3140
|
+
}
|
|
3141
|
+
if (hasProperty(override, 'scripts')) {
|
|
3142
|
+
toExtend.scripts = { ...toExtend.scripts, ...override.scripts };
|
|
3143
|
+
}
|
|
3144
|
+
}
|
|
3145
|
+
}
|
|
3146
|
+
}
|
|
3147
|
+
class TheSeamFramework extends Framework {
|
|
3148
|
+
constructor(_overrides) {
|
|
3149
|
+
super();
|
|
3150
|
+
this.name = 'seam-framework';
|
|
3151
|
+
this.framework = TheSeamSchemaFormFrameworkComponent;
|
|
3152
|
+
this.widgets = {
|
|
3153
|
+
'checkbox': TheSeamSchemaFormCheckboxComponent,
|
|
3154
|
+
// 'submit': TheSeamSchemaFormSubmitComponent,
|
|
3155
|
+
'submit': TheSeamSchemaFormSubmitSplitComponent,
|
|
3156
|
+
'text': TheSeamSchemaFormInputComponent,
|
|
3157
|
+
'number': TheSeamSchemaFormNumberComponent,
|
|
3158
|
+
'select': TheSeamSchemaFormSelectComponent,
|
|
3159
|
+
'divider': TheSeamSchemaFormDividerComponent,
|
|
3160
|
+
'tel': TheSeamSchemaFormTelComponent,
|
|
3161
|
+
'tiled-select': TheSeamSchemaFormTiledSelectComponent
|
|
3162
|
+
// 'file': // TODO: Implement
|
|
3163
|
+
// 'date': // TODO: Implement
|
|
3164
|
+
// 'map': // TODO: Implement
|
|
3165
|
+
// 'wizard': // TODO: Implement
|
|
3166
|
+
// 'image': // TODO: Implement
|
|
3167
|
+
// 'tabs': // TODO: Implement
|
|
3168
|
+
// 'card': // TODO: Implement
|
|
3169
|
+
// 'richtext': // TODO: Implement
|
|
3170
|
+
};
|
|
3171
|
+
// console.log('TheSeamFramework', _overrides, this)
|
|
3172
|
+
if (_overrides) {
|
|
3173
|
+
for (const override of _overrides) {
|
|
3174
|
+
// console.log('override', override)
|
|
3175
|
+
if (hasProperty(override, 'widgets')) {
|
|
3176
|
+
this.widgets = { ...this.widgets, ...override.widgets };
|
|
3177
|
+
}
|
|
3178
|
+
}
|
|
3179
|
+
}
|
|
3180
|
+
}
|
|
3181
|
+
}
|
|
3182
|
+
TheSeamFramework.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamFramework, deps: [{ token: THESEAM_SCHEMA_FRAMEWORK_OVERRIDES, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3183
|
+
TheSeamFramework.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamFramework });
|
|
3184
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamFramework, decorators: [{
|
|
3185
|
+
type: Injectable
|
|
3186
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
3187
|
+
type: Optional
|
|
3188
|
+
}, {
|
|
3189
|
+
type: Inject,
|
|
3190
|
+
args: [THESEAM_SCHEMA_FRAMEWORK_OVERRIDES]
|
|
3191
|
+
}] }]; } });
|
|
3192
|
+
|
|
3193
|
+
class TheSeamSchemaFormModule {
|
|
3194
|
+
}
|
|
3195
|
+
TheSeamSchemaFormModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3196
|
+
TheSeamSchemaFormModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormModule, declarations: [TheSeamSchemaFormFrameworkComponent], imports: [CommonModule,
|
|
3197
|
+
JsonSchemaFormModule,
|
|
3198
|
+
WidgetLibraryModule], exports: [TheSeamSchemaFormFrameworkComponent,
|
|
3199
|
+
JsonSchemaFormModule] });
|
|
3200
|
+
TheSeamSchemaFormModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormModule, providers: [
|
|
3201
|
+
JsonSchemaFormService,
|
|
3202
|
+
FrameworkLibraryService,
|
|
3203
|
+
WidgetLibraryService,
|
|
3204
|
+
{ provide: Framework, useClass: TheSeamFramework, multi: true }
|
|
2986
3205
|
], imports: [CommonModule,
|
|
2987
3206
|
JsonSchemaFormModule,
|
|
2988
|
-
TheSeamSchemaFormControlsModule,
|
|
2989
3207
|
WidgetLibraryModule, JsonSchemaFormModule] });
|
|
2990
3208
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormModule, decorators: [{
|
|
2991
3209
|
type: NgModule,
|
|
@@ -2996,7 +3214,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
2996
3214
|
imports: [
|
|
2997
3215
|
CommonModule,
|
|
2998
3216
|
JsonSchemaFormModule,
|
|
2999
|
-
TheSeamSchemaFormControlsModule,
|
|
3000
3217
|
WidgetLibraryModule,
|
|
3001
3218
|
],
|
|
3002
3219
|
providers: [
|
|
@@ -3009,8 +3226,616 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
3009
3226
|
TheSeamSchemaFormFrameworkComponent,
|
|
3010
3227
|
JsonSchemaFormModule
|
|
3011
3228
|
],
|
|
3012
|
-
|
|
3013
|
-
|
|
3229
|
+
}]
|
|
3230
|
+
}] });
|
|
3231
|
+
|
|
3232
|
+
function isHorizontalNavItemType(item, type) {
|
|
3233
|
+
return item.itemType === type;
|
|
3234
|
+
}
|
|
3235
|
+
function isHorizontalNavItemActive(item) {
|
|
3236
|
+
return item.__state?.active ?? false;
|
|
3237
|
+
}
|
|
3238
|
+
function isHorizontalNavItemExpanded(item) {
|
|
3239
|
+
return item.__state?.expanded ?? false;
|
|
3240
|
+
}
|
|
3241
|
+
function isHorizontalNavItemFocused(item) {
|
|
3242
|
+
return item.__state?.focused ?? false;
|
|
3243
|
+
}
|
|
3244
|
+
function horizontalNavItemHasChildren(item) {
|
|
3245
|
+
return horizontalNavItemCanHaveChildren(item) && hasProperty(item, 'children') && item.children.length > 0;
|
|
3246
|
+
}
|
|
3247
|
+
function horizontalNavItemCanHaveChildren(item) {
|
|
3248
|
+
return isHorizontalNavItemType(item, 'basic') || isHorizontalNavItemType(item, 'link');
|
|
3249
|
+
}
|
|
3250
|
+
function horizontalNavItemHasActiveChild(item) {
|
|
3251
|
+
if (!horizontalNavItemHasChildren(item)) {
|
|
3252
|
+
return false;
|
|
3253
|
+
}
|
|
3254
|
+
for (const child of item.children) {
|
|
3255
|
+
if (getHorizontalNavItemStateProp(child, 'active') || horizontalNavItemHasActiveChild(child)) {
|
|
3256
|
+
return true;
|
|
3257
|
+
}
|
|
3258
|
+
}
|
|
3259
|
+
return false;
|
|
3260
|
+
}
|
|
3261
|
+
function horizontalNavItemHasExpandedChild(item) {
|
|
3262
|
+
if (!horizontalNavItemHasChildren(item)) {
|
|
3263
|
+
return false;
|
|
3264
|
+
}
|
|
3265
|
+
for (const child of item.children) {
|
|
3266
|
+
if (getHorizontalNavItemStateProp(child, 'expanded')) {
|
|
3267
|
+
return true;
|
|
3268
|
+
}
|
|
3269
|
+
}
|
|
3270
|
+
return false;
|
|
3271
|
+
}
|
|
3272
|
+
function horizontalNavItemCanBeActive(item) {
|
|
3273
|
+
return isHorizontalNavItemType(item, 'basic') || isHorizontalNavItemType(item, 'link');
|
|
3274
|
+
}
|
|
3275
|
+
function horizontalNavItemCanExpand(item) {
|
|
3276
|
+
return horizontalNavItemCanHaveChildren(item);
|
|
3277
|
+
}
|
|
3278
|
+
function findHorizontalNavLinkItems(items) {
|
|
3279
|
+
const linkItems = [];
|
|
3280
|
+
const _fn = (_items) => {
|
|
3281
|
+
for (const item of _items) {
|
|
3282
|
+
if (isHorizontalNavItemType(item, 'link')) {
|
|
3283
|
+
linkItems.push(item);
|
|
3284
|
+
}
|
|
3285
|
+
if (horizontalNavItemCanHaveChildren(item) && hasProperty(item, 'children')) {
|
|
3286
|
+
_fn(item.children);
|
|
3287
|
+
}
|
|
3288
|
+
}
|
|
3289
|
+
};
|
|
3290
|
+
_fn(items);
|
|
3291
|
+
return linkItems;
|
|
3292
|
+
}
|
|
3293
|
+
function setHorizontalNavItemStateProp(item, prop, value) {
|
|
3294
|
+
if (hasProperty(item, '__state')) {
|
|
3295
|
+
item.__state[prop] = value;
|
|
3296
|
+
}
|
|
3297
|
+
}
|
|
3298
|
+
function getHorizontalNavItemStateProp(item, prop) {
|
|
3299
|
+
return setDefaultHorizontalNavItemState(item).__state[prop];
|
|
3300
|
+
}
|
|
3301
|
+
function setDefaultHorizontalNavItemState(item) {
|
|
3302
|
+
if (hasProperty(item, '__state')) {
|
|
3303
|
+
return item;
|
|
3304
|
+
}
|
|
3305
|
+
item.__state = {
|
|
3306
|
+
active: false,
|
|
3307
|
+
expanded: false,
|
|
3308
|
+
focused: false
|
|
3309
|
+
};
|
|
3310
|
+
// TODO: See if there is a nice way to fix the typing for this.
|
|
3311
|
+
return item;
|
|
3312
|
+
}
|
|
3313
|
+
function areSameHorizontalNavItem(item1, item2) {
|
|
3314
|
+
if (isNullOrUndefined(item1) || isNullOrUndefined(item2)) {
|
|
3315
|
+
return false;
|
|
3316
|
+
}
|
|
3317
|
+
if (item1.itemType !== item2.itemType) {
|
|
3318
|
+
return false;
|
|
3319
|
+
}
|
|
3320
|
+
if (isHorizontalNavItemType(item1, 'title') && isHorizontalNavItemType(item2, 'title')) {
|
|
3321
|
+
return item1.label === item2.label;
|
|
3322
|
+
}
|
|
3323
|
+
else if (isHorizontalNavItemType(item1, 'divider') && isHorizontalNavItemType(item2, 'divider')) {
|
|
3324
|
+
return item1.label === item2.label;
|
|
3325
|
+
}
|
|
3326
|
+
else if (isHorizontalNavItemType(item1, 'basic') && isHorizontalNavItemType(item2, 'basic')) {
|
|
3327
|
+
return item1.label === item2.label;
|
|
3328
|
+
}
|
|
3329
|
+
else if (isHorizontalNavItemType(item1, 'link') && isHorizontalNavItemType(item2, 'link')) {
|
|
3330
|
+
return item1.label === item2.label && item1.link === item2.link;
|
|
3331
|
+
}
|
|
3332
|
+
else if (isHorizontalNavItemType(item1, 'button') && isHorizontalNavItemType(item2, 'button')) {
|
|
3333
|
+
return item1.onClick === item2.onClick;
|
|
3334
|
+
}
|
|
3335
|
+
return false;
|
|
3336
|
+
}
|
|
3337
|
+
|
|
3338
|
+
class TheSeamNavService {
|
|
3339
|
+
constructor(_router) {
|
|
3340
|
+
this._router = _router;
|
|
3341
|
+
this._updatingCount = new BehaviorSubject(0);
|
|
3342
|
+
this.itemChanged = new Subject();
|
|
3343
|
+
this.loading$ = this._updatingCount.pipe(map(count => count > 0), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
3344
|
+
}
|
|
3345
|
+
createItemsObservable(items) {
|
|
3346
|
+
return defer(() => {
|
|
3347
|
+
this.updateItemsStates(items);
|
|
3348
|
+
this.updateRouterFocusedItem(items);
|
|
3349
|
+
return new Observable((subscriber) => {
|
|
3350
|
+
const stateChangeSub = this.itemChanged.pipe(switchMap(change => {
|
|
3351
|
+
if (change.prop === 'focused' && change.newValue) {
|
|
3352
|
+
this.updateFocusedItem(items, change.item);
|
|
3353
|
+
}
|
|
3354
|
+
return this.loading$.pipe(filter(loading => !loading));
|
|
3355
|
+
})).subscribe(() => {
|
|
3356
|
+
subscriber.next(items);
|
|
3357
|
+
});
|
|
3358
|
+
try {
|
|
3359
|
+
this.updateItemsStates(items);
|
|
3360
|
+
}
|
|
3361
|
+
catch (err) {
|
|
3362
|
+
subscriber.error(err);
|
|
3363
|
+
}
|
|
3364
|
+
const routeChangeSub = this._router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(event => {
|
|
3365
|
+
try {
|
|
3366
|
+
this.updateItemsStates(items);
|
|
3367
|
+
this.updateRouterFocusedItem(items);
|
|
3368
|
+
}
|
|
3369
|
+
catch (err) {
|
|
3370
|
+
subscriber.error(err);
|
|
3371
|
+
}
|
|
3372
|
+
});
|
|
3373
|
+
return () => {
|
|
3374
|
+
stateChangeSub.unsubscribe();
|
|
3375
|
+
routeChangeSub.unsubscribe();
|
|
3376
|
+
};
|
|
3377
|
+
}).pipe(startWith(items));
|
|
3378
|
+
});
|
|
3379
|
+
}
|
|
3380
|
+
_incUpdatingCount() {
|
|
3381
|
+
this._updatingCount.next(this._updatingCount.value + 1);
|
|
3382
|
+
}
|
|
3383
|
+
_decrUpdatingCount() {
|
|
3384
|
+
this._updatingCount.next(this._updatingCount.value - 1);
|
|
3385
|
+
}
|
|
3386
|
+
updateItemsStates(items) {
|
|
3387
|
+
this._incUpdatingCount();
|
|
3388
|
+
try {
|
|
3389
|
+
for (const item of items) {
|
|
3390
|
+
if (horizontalNavItemHasChildren(item)) {
|
|
3391
|
+
this.updateItemsStates(item.children);
|
|
3392
|
+
}
|
|
3393
|
+
this.updateItemState(item);
|
|
3394
|
+
}
|
|
3395
|
+
this._decrUpdatingCount();
|
|
3396
|
+
}
|
|
3397
|
+
catch (err) {
|
|
3398
|
+
this._decrUpdatingCount();
|
|
3399
|
+
throw err;
|
|
3400
|
+
}
|
|
3401
|
+
}
|
|
3402
|
+
updateItemState(item) {
|
|
3403
|
+
this._incUpdatingCount();
|
|
3404
|
+
try {
|
|
3405
|
+
setDefaultHorizontalNavItemState(item);
|
|
3406
|
+
this.setItemStateProp(item, 'active', this.horizontalNavLinkActive(item));
|
|
3407
|
+
// TODO: Implement this in a more optimized way. Unless our apps start
|
|
3408
|
+
// having large navs constantly updating their state, this shouldn't
|
|
3409
|
+
// have much impact on performance.
|
|
3410
|
+
this._updateItemExpandedState(item);
|
|
3411
|
+
this._decrUpdatingCount();
|
|
3412
|
+
}
|
|
3413
|
+
catch (err) {
|
|
3414
|
+
this._decrUpdatingCount();
|
|
3415
|
+
throw err;
|
|
3416
|
+
}
|
|
3417
|
+
}
|
|
3418
|
+
horizontalNavLinkActive(item) {
|
|
3419
|
+
if (isHorizontalNavItemType(item, 'link')) {
|
|
3420
|
+
const url = this._getUrl(item);
|
|
3421
|
+
if (notNullOrUndefined(url)) {
|
|
3422
|
+
const opts = this._getMatchOptions(item);
|
|
3423
|
+
return this._router.isActive(url, opts);
|
|
3424
|
+
}
|
|
3425
|
+
}
|
|
3426
|
+
return false;
|
|
3427
|
+
}
|
|
3428
|
+
_updateItemsExpandedState(items) {
|
|
3429
|
+
for (const item of items) {
|
|
3430
|
+
if (horizontalNavItemHasChildren(item)) {
|
|
3431
|
+
this._updateItemsExpandedState(item.children);
|
|
3432
|
+
}
|
|
3433
|
+
this._updateItemExpandedState(item);
|
|
3434
|
+
}
|
|
3435
|
+
}
|
|
3436
|
+
_updateItemExpandedState(item) {
|
|
3437
|
+
if (!horizontalNavItemCanExpand(item)) {
|
|
3438
|
+
if (getHorizontalNavItemStateProp(item, 'expanded')) {
|
|
3439
|
+
this.setItemStateProp(item, 'expanded', false);
|
|
3440
|
+
}
|
|
3441
|
+
return;
|
|
3442
|
+
}
|
|
3443
|
+
if (horizontalNavItemHasChildren(item)) {
|
|
3444
|
+
this._updateItemsExpandedState(item.children);
|
|
3445
|
+
}
|
|
3446
|
+
if (horizontalNavItemHasActiveChild(item) || horizontalNavItemHasExpandedChild(item)) {
|
|
3447
|
+
if (!getHorizontalNavItemStateProp(item, 'expanded')) {
|
|
3448
|
+
this.setItemStateProp(item, 'expanded', true);
|
|
3449
|
+
}
|
|
3450
|
+
}
|
|
3451
|
+
else {
|
|
3452
|
+
if (getHorizontalNavItemStateProp(item, 'expanded')) {
|
|
3453
|
+
this.setItemStateProp(item, 'expanded', false);
|
|
3454
|
+
}
|
|
3455
|
+
}
|
|
3456
|
+
}
|
|
3457
|
+
updateRouterFocusedItem(items) {
|
|
3458
|
+
const focusedItem = items.find(i => isHorizontalNavItemActive(i)) || items.find(i => horizontalNavItemHasActiveChild(i));
|
|
3459
|
+
if (notNullOrUndefined(focusedItem)) {
|
|
3460
|
+
this.updateFocusedItem(items, focusedItem);
|
|
3461
|
+
}
|
|
3462
|
+
}
|
|
3463
|
+
updateFocusedItem(items, focusedItem) {
|
|
3464
|
+
for (const item of items) {
|
|
3465
|
+
if (areSameHorizontalNavItem(item, focusedItem)) {
|
|
3466
|
+
setHorizontalNavItemStateProp(item, 'focused', true);
|
|
3467
|
+
}
|
|
3468
|
+
else {
|
|
3469
|
+
setHorizontalNavItemStateProp(item, 'focused', false);
|
|
3470
|
+
}
|
|
3471
|
+
}
|
|
3472
|
+
}
|
|
3473
|
+
_getNavExtras(item) {
|
|
3474
|
+
const navigationExtras = {};
|
|
3475
|
+
if (hasProperty(item, 'queryParams')) {
|
|
3476
|
+
navigationExtras.queryParams = item.queryParams;
|
|
3477
|
+
}
|
|
3478
|
+
if (hasProperty(item, 'fragment')) {
|
|
3479
|
+
navigationExtras.fragment = item.fragment;
|
|
3480
|
+
}
|
|
3481
|
+
if (hasProperty(item, 'queryParamsHandling')) {
|
|
3482
|
+
navigationExtras.queryParamsHandling = item.queryParamsHandling;
|
|
3483
|
+
}
|
|
3484
|
+
if (hasProperty(item, 'preserveFragment')) {
|
|
3485
|
+
navigationExtras.preserveFragment = item.preserveFragment;
|
|
3486
|
+
}
|
|
3487
|
+
return navigationExtras;
|
|
3488
|
+
}
|
|
3489
|
+
_getUrl(item) {
|
|
3490
|
+
const link = item.link;
|
|
3491
|
+
if (typeof link === 'string') {
|
|
3492
|
+
return this._router.createUrlTree([link], this._getNavExtras(item)).toString();
|
|
3493
|
+
}
|
|
3494
|
+
else if (Array.isArray(link)) {
|
|
3495
|
+
return this._router.createUrlTree(link, this._getNavExtras(item)).toString();
|
|
3496
|
+
}
|
|
3497
|
+
return null;
|
|
3498
|
+
}
|
|
3499
|
+
_getMatchOptions(item) {
|
|
3500
|
+
const defaultMatchOpts = {
|
|
3501
|
+
paths: 'subset',
|
|
3502
|
+
queryParams: 'subset',
|
|
3503
|
+
fragment: 'ignored',
|
|
3504
|
+
matrixParams: 'ignored'
|
|
3505
|
+
};
|
|
3506
|
+
if (hasProperty(item, 'matchOptions')) {
|
|
3507
|
+
return {
|
|
3508
|
+
...defaultMatchOpts,
|
|
3509
|
+
...item.matchOptions
|
|
3510
|
+
};
|
|
3511
|
+
}
|
|
3512
|
+
return defaultMatchOpts;
|
|
3513
|
+
}
|
|
3514
|
+
setItemStateProp(item, prop, value) {
|
|
3515
|
+
const currentValue = getHorizontalNavItemStateProp(item, prop);
|
|
3516
|
+
if (currentValue !== value) {
|
|
3517
|
+
setHorizontalNavItemStateProp(item, prop, value);
|
|
3518
|
+
const changed = {
|
|
3519
|
+
item,
|
|
3520
|
+
prop,
|
|
3521
|
+
prevValue: currentValue,
|
|
3522
|
+
newValue: value
|
|
3523
|
+
};
|
|
3524
|
+
this.itemChanged.next(changed);
|
|
3525
|
+
}
|
|
3526
|
+
}
|
|
3527
|
+
}
|
|
3528
|
+
TheSeamNavService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavService, deps: [{ token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3529
|
+
TheSeamNavService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavService });
|
|
3530
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavService, decorators: [{
|
|
3531
|
+
type: Injectable
|
|
3532
|
+
}], ctorParameters: function () { return [{ type: i1$2.Router }]; } });
|
|
3533
|
+
|
|
3534
|
+
class NavItemComponent {
|
|
3535
|
+
set link(value) { this._link.next(value); }
|
|
3536
|
+
get link() { return this._link.value; }
|
|
3537
|
+
set expanded(value) {
|
|
3538
|
+
this._expanded.next(coerceBooleanProperty(value));
|
|
3539
|
+
}
|
|
3540
|
+
get expanded() { return this._expanded.value; }
|
|
3541
|
+
set compact(value) { this._compact.next(coerceBooleanProperty(value)); }
|
|
3542
|
+
get compact() { return this._compact.value; }
|
|
3543
|
+
get badgeTooltip() { return this._badgeTooltip; }
|
|
3544
|
+
set badgeTooltip(value) {
|
|
3545
|
+
if (value !== null && value !== undefined) {
|
|
3546
|
+
if (typeof value === 'string') {
|
|
3547
|
+
this._badgeTooltip = {
|
|
3548
|
+
tooltip: value,
|
|
3549
|
+
placement: 'auto',
|
|
3550
|
+
disabled: false
|
|
3551
|
+
};
|
|
3552
|
+
}
|
|
3553
|
+
else {
|
|
3554
|
+
this._badgeTooltip = {
|
|
3555
|
+
...value,
|
|
3556
|
+
placement: value.placement || 'auto',
|
|
3557
|
+
disabled: typeof value?.disabled === 'boolean'
|
|
3558
|
+
? value.disabled
|
|
3559
|
+
: typeof value.tooltip !== 'string'
|
|
3560
|
+
};
|
|
3561
|
+
}
|
|
3562
|
+
}
|
|
3563
|
+
else {
|
|
3564
|
+
this._badgeTooltip = undefined;
|
|
3565
|
+
}
|
|
3566
|
+
}
|
|
3567
|
+
get _isActiveCssClass() { return this.active; }
|
|
3568
|
+
get _isChildActiveCssClass() { return this.hasActiveChild; }
|
|
3569
|
+
get _isExpandedCssClass() { return this.expanded; }
|
|
3570
|
+
get _isFocusedCssClass() { return this.focused; }
|
|
3571
|
+
get _attrDataHierLevel() { return this.hierLevel; }
|
|
3572
|
+
constructor(_nav) {
|
|
3573
|
+
this._nav = _nav;
|
|
3574
|
+
this._ngUnsubscribe = new Subject();
|
|
3575
|
+
this.faAngleLeft = faAngleLeft;
|
|
3576
|
+
this.active = false;
|
|
3577
|
+
this._link = new BehaviorSubject(undefined);
|
|
3578
|
+
this.link$ = this._link.asObservable();
|
|
3579
|
+
this.hierLevel = 0;
|
|
3580
|
+
this.indentSize = 10;
|
|
3581
|
+
this._expanded = new BehaviorSubject(false);
|
|
3582
|
+
this.expanded$ = this._expanded.asObservable();
|
|
3583
|
+
this._compact = new BehaviorSubject(false);
|
|
3584
|
+
this.compact$ = this._compact.asObservable();
|
|
3585
|
+
this.focused = false;
|
|
3586
|
+
this.badgeTheme = 'danger';
|
|
3587
|
+
this.childAction = 'menu';
|
|
3588
|
+
this.expandAction = 'toggle';
|
|
3589
|
+
this.navItemExpanded = new EventEmitter();
|
|
3590
|
+
}
|
|
3591
|
+
ngOnDestroy() {
|
|
3592
|
+
this._ngUnsubscribe.next();
|
|
3593
|
+
this._ngUnsubscribe.complete();
|
|
3594
|
+
}
|
|
3595
|
+
get hasChildren() {
|
|
3596
|
+
return Array.isArray(this.children) && this.children.length > 0;
|
|
3597
|
+
}
|
|
3598
|
+
get hasActiveChild() {
|
|
3599
|
+
if (notNullOrUndefined(this.item)) {
|
|
3600
|
+
return horizontalNavItemHasActiveChild(this.item);
|
|
3601
|
+
}
|
|
3602
|
+
return false;
|
|
3603
|
+
}
|
|
3604
|
+
get hasMenuToggle() {
|
|
3605
|
+
return this.hasChildren && this.childAction === 'menu';
|
|
3606
|
+
}
|
|
3607
|
+
get menuTpl() {
|
|
3608
|
+
return this.hasMenuToggle ? this._menu : undefined;
|
|
3609
|
+
}
|
|
3610
|
+
get hasExpandingChildren() {
|
|
3611
|
+
return this.hasChildren && this.childAction === 'expand';
|
|
3612
|
+
}
|
|
3613
|
+
_toggleChildren(event) {
|
|
3614
|
+
let ex = !this.expanded;
|
|
3615
|
+
if (this.expandAction === 'expandOnly') {
|
|
3616
|
+
ex = true;
|
|
3617
|
+
}
|
|
3618
|
+
this.expanded = ex;
|
|
3619
|
+
this.navItemExpanded.emit(this.expanded);
|
|
3620
|
+
if (this.item && this.expanded) {
|
|
3621
|
+
this._nav.setItemStateProp(this.item, 'focused', this.expanded);
|
|
3622
|
+
}
|
|
3623
|
+
// Prevents seam-menu from closing out when toggling child expand
|
|
3624
|
+
event.stopPropagation();
|
|
3625
|
+
}
|
|
3626
|
+
// Updates expanded state when user exits seam-menu
|
|
3627
|
+
_menuEvent(menuExpanded) {
|
|
3628
|
+
if (menuExpanded === false) {
|
|
3629
|
+
this.expanded = false;
|
|
3630
|
+
// TODO: figure out why closing seam-menu with expanded submenu messes up animation
|
|
3631
|
+
if (this._navItems && this._navItems.length) {
|
|
3632
|
+
this._navItems.forEach(navItem => {
|
|
3633
|
+
navItem.expanded = false;
|
|
3634
|
+
});
|
|
3635
|
+
}
|
|
3636
|
+
}
|
|
3637
|
+
}
|
|
3638
|
+
get showIconBlock() {
|
|
3639
|
+
return notNullOrUndefined(this.icon) || this.hideEmptyIcon !== true;
|
|
3640
|
+
}
|
|
3641
|
+
}
|
|
3642
|
+
NavItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NavItemComponent, deps: [{ token: TheSeamNavService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3643
|
+
NavItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: NavItemComponent, 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 [ngbTooltip]=\"$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 #dae0e5;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: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i2$1.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i4$2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i3$2.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i3$2.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { 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: i2.AsyncPipe, name: "async" }], animations: [
|
|
3644
|
+
trigger('childGroupAnim', [
|
|
3645
|
+
transition(':enter', [
|
|
3646
|
+
style({ height: 0 }),
|
|
3647
|
+
animate('0.2s ease-in-out', style({ height: '*' }))
|
|
3648
|
+
]),
|
|
3649
|
+
transition(':leave', [
|
|
3650
|
+
style({ height: '*' }),
|
|
3651
|
+
animate('0.2s ease-in-out', style({ height: 0 }))
|
|
3652
|
+
])
|
|
3653
|
+
])
|
|
3654
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
3655
|
+
__decorate([
|
|
3656
|
+
InputBoolean()
|
|
3657
|
+
], NavItemComponent.prototype, "active", void 0);
|
|
3658
|
+
__decorate([
|
|
3659
|
+
InputNumber(0)
|
|
3660
|
+
], NavItemComponent.prototype, "hierLevel", void 0);
|
|
3661
|
+
__decorate([
|
|
3662
|
+
InputNumber(10)
|
|
3663
|
+
], NavItemComponent.prototype, "indentSize", void 0);
|
|
3664
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NavItemComponent, decorators: [{
|
|
3665
|
+
type: Component,
|
|
3666
|
+
args: [{ selector: 'seam-nav-item', exportAs: 'seamNavItem', animations: [
|
|
3667
|
+
trigger('childGroupAnim', [
|
|
3668
|
+
transition(':enter', [
|
|
3669
|
+
style({ height: 0 }),
|
|
3670
|
+
animate('0.2s ease-in-out', style({ height: '*' }))
|
|
3671
|
+
]),
|
|
3672
|
+
transition(':leave', [
|
|
3673
|
+
style({ height: '*' }),
|
|
3674
|
+
animate('0.2s ease-in-out', style({ height: 0 }))
|
|
3675
|
+
])
|
|
3676
|
+
])
|
|
3677
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, 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 [ngbTooltip]=\"$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 #dae0e5;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"] }]
|
|
3678
|
+
}], ctorParameters: function () { return [{ type: TheSeamNavService }]; }, propDecorators: { item: [{
|
|
3679
|
+
type: Input
|
|
3680
|
+
}], itemType: [{
|
|
3681
|
+
type: Input
|
|
3682
|
+
}], icon: [{
|
|
3683
|
+
type: Input
|
|
3684
|
+
}], hideEmptyIcon: [{
|
|
3685
|
+
type: Input
|
|
3686
|
+
}], label: [{
|
|
3687
|
+
type: Input
|
|
3688
|
+
}], active: [{
|
|
3689
|
+
type: Input
|
|
3690
|
+
}], link: [{
|
|
3691
|
+
type: Input
|
|
3692
|
+
}], queryParams: [{
|
|
3693
|
+
type: Input
|
|
3694
|
+
}], children: [{
|
|
3695
|
+
type: Input
|
|
3696
|
+
}], hierLevel: [{
|
|
3697
|
+
type: Input
|
|
3698
|
+
}], indentSize: [{
|
|
3699
|
+
type: Input
|
|
3700
|
+
}], expanded: [{
|
|
3701
|
+
type: Input
|
|
3702
|
+
}], compact: [{
|
|
3703
|
+
type: Input
|
|
3704
|
+
}], focused: [{
|
|
3705
|
+
type: Input
|
|
3706
|
+
}], badgeText: [{
|
|
3707
|
+
type: Input
|
|
3708
|
+
}], badgeTheme: [{
|
|
3709
|
+
type: Input
|
|
3710
|
+
}], badgeSrContent: [{
|
|
3711
|
+
type: Input
|
|
3712
|
+
}], badgeTooltip: [{
|
|
3713
|
+
type: Input
|
|
3714
|
+
}], childAction: [{
|
|
3715
|
+
type: Input
|
|
3716
|
+
}], expandAction: [{
|
|
3717
|
+
type: Input
|
|
3718
|
+
}], navItemExpanded: [{
|
|
3719
|
+
type: Output
|
|
3720
|
+
}], _isActiveCssClass: [{
|
|
3721
|
+
type: HostBinding,
|
|
3722
|
+
args: ['class.seam-nav-item--active']
|
|
3723
|
+
}], _isChildActiveCssClass: [{
|
|
3724
|
+
type: HostBinding,
|
|
3725
|
+
args: ['class.seam-nav-item--child-active']
|
|
3726
|
+
}], _isExpandedCssClass: [{
|
|
3727
|
+
type: HostBinding,
|
|
3728
|
+
args: ['class.seam-nav-item--expanded']
|
|
3729
|
+
}], _isFocusedCssClass: [{
|
|
3730
|
+
type: HostBinding,
|
|
3731
|
+
args: ['class.seam-nav-item--focused']
|
|
3732
|
+
}], _attrDataHierLevel: [{
|
|
3733
|
+
type: HostBinding,
|
|
3734
|
+
args: ['attr.data-hier-level']
|
|
3735
|
+
}], _menu: [{
|
|
3736
|
+
type: ViewChild,
|
|
3737
|
+
args: [MenuComponent]
|
|
3738
|
+
}], _navItems: [{
|
|
3739
|
+
type: ViewChildren,
|
|
3740
|
+
args: [NavItemComponent]
|
|
3741
|
+
}] } });
|
|
3742
|
+
|
|
3743
|
+
class HorizontalNavComponent {
|
|
3744
|
+
get items() { return this._items.value; }
|
|
3745
|
+
set items(value) {
|
|
3746
|
+
this._items.next(value);
|
|
3747
|
+
}
|
|
3748
|
+
constructor(_nav) {
|
|
3749
|
+
this._nav = _nav;
|
|
3750
|
+
this._ngUnsubscribe = new Subject();
|
|
3751
|
+
this._items = new BehaviorSubject([]);
|
|
3752
|
+
this.hideEmptyIcon = true;
|
|
3753
|
+
this.hierLevel = 0;
|
|
3754
|
+
this.childAction = 'menu';
|
|
3755
|
+
this.expandAction = 'toggle';
|
|
3756
|
+
this.navItemExpanded = new EventEmitter();
|
|
3757
|
+
this.items$ = this._items.asObservable().pipe(switchMap(items => items ? this._nav.createItemsObservable(items) : []), shareReplay({ bufferSize: 1, refCount: true }));
|
|
3758
|
+
}
|
|
3759
|
+
ngOnDestroy() {
|
|
3760
|
+
this._ngUnsubscribe.next();
|
|
3761
|
+
this._ngUnsubscribe.complete();
|
|
3762
|
+
}
|
|
3763
|
+
_navItemExpanded(item, expanded) {
|
|
3764
|
+
this.navItemExpanded.emit({ navItem: item, expanded });
|
|
3765
|
+
}
|
|
3766
|
+
}
|
|
3767
|
+
HorizontalNavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: HorizontalNavComponent, deps: [{ token: TheSeamNavService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3768
|
+
HorizontalNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: HorizontalNavComponent, selector: "seam-horizontal-nav", inputs: { items: "items", hideEmptyIcon: "hideEmptyIcon", hierLevel: "hierLevel", childAction: "childAction", expandAction: "expandAction" }, outputs: { navItemExpanded: "navItemExpanded" }, providers: [
|
|
3769
|
+
TheSeamNavService
|
|
3770
|
+
], 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:rgba(52,58,64,.6);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: i2.NgForOf, 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: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
3771
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: HorizontalNavComponent, decorators: [{
|
|
3772
|
+
type: Component,
|
|
3773
|
+
args: [{ selector: 'seam-horizontal-nav', providers: [
|
|
3774
|
+
TheSeamNavService
|
|
3775
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, 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:rgba(52,58,64,.6);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"] }]
|
|
3776
|
+
}], ctorParameters: function () { return [{ type: TheSeamNavService }]; }, propDecorators: { items: [{
|
|
3777
|
+
type: Input
|
|
3778
|
+
}], hideEmptyIcon: [{
|
|
3779
|
+
type: Input
|
|
3780
|
+
}], hierLevel: [{
|
|
3781
|
+
type: Input
|
|
3782
|
+
}], childAction: [{
|
|
3783
|
+
type: Input
|
|
3784
|
+
}], expandAction: [{
|
|
3785
|
+
type: Input
|
|
3786
|
+
}], navItemExpanded: [{
|
|
3787
|
+
type: Output
|
|
3788
|
+
}] } });
|
|
3789
|
+
|
|
3790
|
+
class TheSeamNavModule {
|
|
3791
|
+
}
|
|
3792
|
+
TheSeamNavModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3793
|
+
TheSeamNavModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavModule, declarations: [NavItemComponent,
|
|
3794
|
+
HorizontalNavComponent], imports: [CommonModule,
|
|
3795
|
+
RouterModule,
|
|
3796
|
+
TheSeamIconModule,
|
|
3797
|
+
A11yModule,
|
|
3798
|
+
TheSeamScrollbarModule,
|
|
3799
|
+
TheSeamLayoutModule,
|
|
3800
|
+
NgbTooltipModule,
|
|
3801
|
+
PortalModule,
|
|
3802
|
+
TheSeamMenuModule], exports: [NavItemComponent,
|
|
3803
|
+
HorizontalNavComponent] });
|
|
3804
|
+
TheSeamNavModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavModule, providers: [
|
|
3805
|
+
TheSeamNavService,
|
|
3806
|
+
], imports: [CommonModule,
|
|
3807
|
+
RouterModule,
|
|
3808
|
+
TheSeamIconModule,
|
|
3809
|
+
A11yModule,
|
|
3810
|
+
TheSeamScrollbarModule,
|
|
3811
|
+
TheSeamLayoutModule,
|
|
3812
|
+
NgbTooltipModule,
|
|
3813
|
+
PortalModule,
|
|
3814
|
+
TheSeamMenuModule] });
|
|
3815
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavModule, decorators: [{
|
|
3816
|
+
type: NgModule,
|
|
3817
|
+
args: [{
|
|
3818
|
+
declarations: [
|
|
3819
|
+
NavItemComponent,
|
|
3820
|
+
HorizontalNavComponent,
|
|
3821
|
+
],
|
|
3822
|
+
imports: [
|
|
3823
|
+
CommonModule,
|
|
3824
|
+
RouterModule,
|
|
3825
|
+
TheSeamIconModule,
|
|
3826
|
+
A11yModule,
|
|
3827
|
+
TheSeamScrollbarModule,
|
|
3828
|
+
TheSeamLayoutModule,
|
|
3829
|
+
NgbTooltipModule,
|
|
3830
|
+
PortalModule,
|
|
3831
|
+
TheSeamMenuModule
|
|
3832
|
+
],
|
|
3833
|
+
exports: [
|
|
3834
|
+
NavItemComponent,
|
|
3835
|
+
HorizontalNavComponent,
|
|
3836
|
+
],
|
|
3837
|
+
providers: [
|
|
3838
|
+
TheSeamNavService,
|
|
3014
3839
|
]
|
|
3015
3840
|
}]
|
|
3016
3841
|
}] });
|
|
@@ -3019,5 +3844,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
3019
3844
|
* Generated bundle index. Do not edit.
|
|
3020
3845
|
*/
|
|
3021
3846
|
|
|
3022
|
-
export { BaseLayoutContentDirective, BaseLayoutContentFooterDirective, BaseLayoutContentHeaderDirective, BaseLayoutNavToggleDirective, BaseLayoutSideBarDirective, BaseLayoutSideBarFooterDirective, BaseLayoutTopBarDirective, DashboardComponent, DashboardWidgetContainerComponent, DashboardWidgetPortalOutletDirective, DashboardWidgetTemplateContainerComponent, DashboardWidgetsComponent, DashboardWidgetsPreferencesService, DashboardWidgetsService, HierarchyLevelResolver, HierarchyRouterOutletComponent, SideNavComponent, SideNavItemComponent, SideNavToggleComponent, THESEAM_BASE_LAYOUT_REF, THESEAM_DASHBOARD_WIDGETS_PREFERENCES_ACCESSOR, THESEAM_SIDE_NAV_ACCESSOR, THE_SEAM_BASE_LAYOUT, TheSeamBaseLayoutComponent, TheSeamBaseLayoutModule, TheSeamDashboardModule, TheSeamDynamicRouterModule, TheSeamFramework, TheSeamSchemaFormFrameworkComponent, TheSeamSchemaFormModule, TheSeamSideNavModule, TheSeamTopBarComponent, TheSeamTopBarModule, TopBarItemDirective, TopBarMenuBtnDetailDirective, TopBarMenuButtonComponent, TopBarMenuDirective, TopBarTitleComponent, canBeActive, canExpand, canHaveChildren, fader, findLinkItems, getItemStateProp, hasActiveChild, hasChildren, hasExpandedChild, isExpanded, isNavItemActive, isNavItemType, routeChanges, setDefaultState, setItemStateProp, sideNavExpandStateChangeFn, sideToSide, slider, stepper, transformer };
|
|
3847
|
+
export { BaseLayoutContentDirective, BaseLayoutContentFooterDirective, BaseLayoutContentHeaderDirective, BaseLayoutNavToggleDirective, BaseLayoutSideBarDirective, BaseLayoutSideBarFooterDirective, BaseLayoutSideBarHeaderDirective, BaseLayoutTopBarDirective, DashboardComponent, DashboardWidgetContainerComponent, DashboardWidgetPortalOutletDirective, DashboardWidgetTemplateContainerComponent, DashboardWidgetsComponent, DashboardWidgetsPreferencesService, DashboardWidgetsService, HierarchyLevelResolver, HierarchyRouterOutletComponent, HorizontalNavComponent, NavItemComponent, SideNavComponent, SideNavItemComponent, SideNavToggleComponent, THESEAM_BASE_LAYOUT_REF, THESEAM_DASHBOARD_WIDGETS_PREFERENCES_ACCESSOR, THESEAM_SCHEMA_FRAMEWORK_OVERRIDES, THESEAM_SIDE_NAV_ACCESSOR, THE_SEAM_BASE_LAYOUT, TheSeamBaseLayoutComponent, TheSeamBaseLayoutModule, TheSeamDashboardModule, TheSeamDynamicRouterModule, TheSeamFramework, TheSeamNavModule, TheSeamSchemaFormFrameworkComponent, TheSeamSchemaFormModule, TheSeamSideNavModule, TheSeamTopBarComponent, TheSeamTopBarModule, TopBarCompactMenuBtnDetailDirective, TopBarItemDirective, TopBarMenuBtnDetailDirective, TopBarMenuButtonComponent, TopBarMenuDirective, TopBarNavToggleBtnDetailDirective, TopBarTitleComponent, areSameHorizontalNavItem, canBeActive, canExpand, canHaveChildren, extendFramework, fader, findHorizontalNavLinkItems, findLinkItems, getHorizontalNavItemStateProp, getItemStateProp, hasActiveChild, hasChildren, hasExpandedChild, horizontalNavItemCanBeActive, horizontalNavItemCanExpand, horizontalNavItemCanHaveChildren, horizontalNavItemHasActiveChild, horizontalNavItemHasChildren, horizontalNavItemHasExpandedChild, isExpanded, isHorizontalNavItemActive, isHorizontalNavItemExpanded, isHorizontalNavItemFocused, isHorizontalNavItemType, isNavItemActive, isNavItemType, routeChanges, setDefaultHorizontalNavItemState, setDefaultState, setHorizontalNavItemStateProp, setItemStateProp, sideNavExpandStateChangeFn, sideToSide, slider, stepper, transformer };
|
|
3023
3848
|
//# sourceMappingURL=theseam-ui-common-framework.mjs.map
|