@theseam/ui-common 0.4.12-beta.0 → 0.4.13
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/datatable/datatable/datatable.component.d.ts +1 -10
- package/datatable/services/columns-manager.service.d.ts +0 -7
- package/datatable/utils/create-action-menu-column.d.ts +1 -1
- package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +2 -2
- package/esm2020/datatable/datatable/datatable.component.mjs +4 -20
- 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/services/columns-manager.service.mjs +2 -27
- package/esm2020/datatable/utils/create-action-menu-column.mjs +3 -4
- 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/framework/base-layout/base-layout.component.mjs +4 -14
- package/esm2020/framework/base-layout/base-layout.module.mjs +1 -6
- package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +5 -21
- package/esm2020/framework/base-layout/index.mjs +1 -2
- package/esm2020/framework/public-api.mjs +1 -2
- package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +1 -1
- package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +67 -28
- package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +5 -12
- package/esm2020/framework/side-nav/side-nav.component.mjs +38 -116
- package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
- package/esm2020/framework/side-nav/side-nav.module.mjs +39 -9
- package/esm2020/framework/side-nav/side-nav.service.mjs +1 -1
- package/esm2020/framework/top-bar/index.mjs +1 -3
- package/esm2020/framework/top-bar/top-bar-item.directive.mjs +4 -10
- package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +4 -6
- package/esm2020/framework/top-bar/top-bar.component.mjs +11 -55
- package/esm2020/framework/top-bar/top-bar.module.mjs +5 -15
- package/esm2020/layout/layout.service.mjs +2 -12
- package/esm2020/menu/menu-item.component.mjs +3 -3
- package/esm2020/menu/menu-toggle.directive.mjs +2 -7
- package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +2 -4
- package/fesm2015/theseam-ui-common-breadcrumbs.mjs +2 -2
- package/fesm2015/theseam-ui-common-breadcrumbs.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 +10 -56
- package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-framework.mjs +156 -905
- package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-layout.mjs +2 -11
- package/fesm2015/theseam-ui-common-layout.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-menu.mjs +3 -8
- package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-table-cell-types.mjs +1 -3
- package/fesm2015/theseam-ui-common-table-cell-types.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-datatable-dynamic.mjs +2 -2
- package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-datatable.mjs +10 -56
- package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-framework.mjs +156 -907
- package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-layout.mjs +2 -11
- package/fesm2020/theseam-ui-common-layout.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-menu.mjs +3 -8
- package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-table-cell-types.mjs +1 -3
- package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
- package/framework/base-layout/base-layout.component.d.ts +2 -4
- package/framework/base-layout/base-layout.component.scss +10 -18
- package/framework/base-layout/base-layout.module.d.ts +10 -11
- package/framework/base-layout/directives/base-layout-nav-toggle.directive.d.ts +3 -8
- package/framework/base-layout/index.d.ts +0 -1
- package/framework/base-layout/styles/_variables.scss +0 -21
- package/framework/public-api.d.ts +0 -1
- package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +14 -7
- package/framework/side-nav/side-nav-item/side-nav-item.component.scss +5 -7
- package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.d.ts +3 -5
- package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.scss +6 -3
- package/framework/side-nav/side-nav.component.d.ts +1 -13
- package/framework/side-nav/side-nav.component.scss +1 -0
- package/framework/side-nav/side-nav.models.d.ts +1 -7
- package/framework/side-nav/side-nav.module.d.ts +9 -1
- package/framework/side-nav/styles/_themes/light/_variables.scss +14 -24
- package/framework/side-nav/styles/_themes/primary/_variables.scss +0 -8
- package/framework/top-bar/index.d.ts +0 -2
- package/framework/top-bar/top-bar-item.directive.d.ts +1 -4
- package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +2 -5
- package/framework/top-bar/top-bar.component.d.ts +3 -25
- package/framework/top-bar/top-bar.component.scss +2 -7
- package/framework/top-bar/top-bar.module.d.ts +8 -10
- package/layout/layout.service.d.ts +1 -9
- package/menu/menu-toggle.directive.d.ts +1 -2
- package/package.json +2 -2
- package/styles/vendor/ngx-datatable/_ngx-datatable.scss +14 -57
- package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +5 -33
- package/datatable/models/action-item-column-position.d.ts +0 -13
- package/esm2020/datatable/models/action-item-column-position.mjs +0 -5
- package/esm2020/framework/base-layout/directives/base-layout-side-bar-header.directive.mjs +0 -16
- package/esm2020/framework/nav/horizontal-nav/horizontal-nav.component.mjs +0 -55
- package/esm2020/framework/nav/index.mjs +0 -6
- package/esm2020/framework/nav/nav-item/nav-item.component.mjs +0 -227
- package/esm2020/framework/nav/nav-utils.mjs +0 -107
- package/esm2020/framework/nav/nav.models.mjs +0 -2
- package/esm2020/framework/nav/nav.module.mjs +0 -67
- package/esm2020/framework/nav/nav.service.mjs +0 -204
- package/esm2020/framework/top-bar/top-bar-compact-menu-btn-detail.directive.mjs +0 -16
- package/esm2020/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.mjs +0 -16
- package/framework/base-layout/directives/base-layout-side-bar-header.directive.d.ts +0 -9
- package/framework/nav/_nav-theme.scss +0 -4
- package/framework/nav/horizontal-nav/horizontal-nav.component.d.ts +0 -25
- package/framework/nav/horizontal-nav/horizontal-nav.component.scss +0 -50
- package/framework/nav/index.d.ts +0 -5
- package/framework/nav/nav-item/nav-item.component.d.ts +0 -74
- package/framework/nav/nav-item/nav-item.component.scss +0 -203
- package/framework/nav/nav-utils.d.ts +0 -20
- package/framework/nav/nav.models.d.ts +0 -77
- package/framework/nav/nav.module.d.ts +0 -17
- package/framework/nav/nav.service.d.ts +0 -27
- package/framework/nav/styles/_themes/light/_variables.scss +0 -56
- package/framework/nav/styles/_themes/primary/_variables.scss +0 -56
- package/framework/nav/styles/_utilities.scss +0 -3
- package/framework/nav/styles/_variables.scss +0 -2
- package/framework/top-bar/top-bar-compact-menu-btn-detail.directive.d.ts +0 -8
- package/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.d.ts +0 -8
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { NavigationEnd } from '@angular/router';
|
|
3
|
-
import { BehaviorSubject, defer, Observable, Subject } from 'rxjs';
|
|
4
|
-
import { distinctUntilChanged, filter, map, shareReplay, startWith, switchMap } from 'rxjs/operators';
|
|
5
|
-
import { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils';
|
|
6
|
-
import { areSameHorizontalNavItem, getHorizontalNavItemStateProp, horizontalNavItemCanExpand, horizontalNavItemHasActiveChild, horizontalNavItemHasChildren, horizontalNavItemHasExpandedChild, isHorizontalNavItemActive, isHorizontalNavItemType, setDefaultHorizontalNavItemState, setHorizontalNavItemStateProp } from './nav-utils';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/router";
|
|
9
|
-
export class TheSeamNavService {
|
|
10
|
-
constructor(_router) {
|
|
11
|
-
this._router = _router;
|
|
12
|
-
this._updatingCount = new BehaviorSubject(0);
|
|
13
|
-
this.itemChanged = new Subject();
|
|
14
|
-
this.loading$ = this._updatingCount.pipe(map(count => count > 0), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
15
|
-
}
|
|
16
|
-
createItemsObservable(items) {
|
|
17
|
-
return defer(() => {
|
|
18
|
-
this.updateItemsStates(items);
|
|
19
|
-
this.updateRouterFocusedItem(items);
|
|
20
|
-
return new Observable((subscriber) => {
|
|
21
|
-
const stateChangeSub = this.itemChanged.pipe(switchMap(change => {
|
|
22
|
-
if (change.prop === 'focused' && change.newValue) {
|
|
23
|
-
this.updateFocusedItem(items, change.item);
|
|
24
|
-
}
|
|
25
|
-
return this.loading$.pipe(filter(loading => !loading));
|
|
26
|
-
})).subscribe(() => {
|
|
27
|
-
subscriber.next(items);
|
|
28
|
-
});
|
|
29
|
-
try {
|
|
30
|
-
this.updateItemsStates(items);
|
|
31
|
-
}
|
|
32
|
-
catch (err) {
|
|
33
|
-
subscriber.error(err);
|
|
34
|
-
}
|
|
35
|
-
const routeChangeSub = this._router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(event => {
|
|
36
|
-
try {
|
|
37
|
-
this.updateItemsStates(items);
|
|
38
|
-
this.updateRouterFocusedItem(items);
|
|
39
|
-
}
|
|
40
|
-
catch (err) {
|
|
41
|
-
subscriber.error(err);
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
return () => {
|
|
45
|
-
stateChangeSub.unsubscribe();
|
|
46
|
-
routeChangeSub.unsubscribe();
|
|
47
|
-
};
|
|
48
|
-
}).pipe(startWith(items));
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
_incUpdatingCount() {
|
|
52
|
-
this._updatingCount.next(this._updatingCount.value + 1);
|
|
53
|
-
}
|
|
54
|
-
_decrUpdatingCount() {
|
|
55
|
-
this._updatingCount.next(this._updatingCount.value - 1);
|
|
56
|
-
}
|
|
57
|
-
updateItemsStates(items) {
|
|
58
|
-
this._incUpdatingCount();
|
|
59
|
-
try {
|
|
60
|
-
for (const item of items) {
|
|
61
|
-
if (horizontalNavItemHasChildren(item)) {
|
|
62
|
-
this.updateItemsStates(item.children);
|
|
63
|
-
}
|
|
64
|
-
this.updateItemState(item);
|
|
65
|
-
}
|
|
66
|
-
this._decrUpdatingCount();
|
|
67
|
-
}
|
|
68
|
-
catch (err) {
|
|
69
|
-
this._decrUpdatingCount();
|
|
70
|
-
throw err;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
updateItemState(item) {
|
|
74
|
-
this._incUpdatingCount();
|
|
75
|
-
try {
|
|
76
|
-
setDefaultHorizontalNavItemState(item);
|
|
77
|
-
this.setItemStateProp(item, 'active', this.horizontalNavLinkActive(item));
|
|
78
|
-
// TODO: Implement this in a more optimized way. Unless our apps start
|
|
79
|
-
// having large navs constantly updating their state, this shouldn't
|
|
80
|
-
// have much impact on performance.
|
|
81
|
-
this._updateItemExpandedState(item);
|
|
82
|
-
this._decrUpdatingCount();
|
|
83
|
-
}
|
|
84
|
-
catch (err) {
|
|
85
|
-
this._decrUpdatingCount();
|
|
86
|
-
throw err;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
horizontalNavLinkActive(item) {
|
|
90
|
-
if (isHorizontalNavItemType(item, 'link')) {
|
|
91
|
-
const url = this._getUrl(item);
|
|
92
|
-
if (notNullOrUndefined(url)) {
|
|
93
|
-
const opts = this._getMatchOptions(item);
|
|
94
|
-
return this._router.isActive(url, opts);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
return false;
|
|
98
|
-
}
|
|
99
|
-
_updateItemsExpandedState(items) {
|
|
100
|
-
for (const item of items) {
|
|
101
|
-
if (horizontalNavItemHasChildren(item)) {
|
|
102
|
-
this._updateItemsExpandedState(item.children);
|
|
103
|
-
}
|
|
104
|
-
this._updateItemExpandedState(item);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
_updateItemExpandedState(item) {
|
|
108
|
-
if (!horizontalNavItemCanExpand(item)) {
|
|
109
|
-
if (getHorizontalNavItemStateProp(item, 'expanded')) {
|
|
110
|
-
this.setItemStateProp(item, 'expanded', false);
|
|
111
|
-
}
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
if (horizontalNavItemHasChildren(item)) {
|
|
115
|
-
this._updateItemsExpandedState(item.children);
|
|
116
|
-
}
|
|
117
|
-
if (horizontalNavItemHasActiveChild(item) || horizontalNavItemHasExpandedChild(item)) {
|
|
118
|
-
if (!getHorizontalNavItemStateProp(item, 'expanded')) {
|
|
119
|
-
this.setItemStateProp(item, 'expanded', true);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
if (getHorizontalNavItemStateProp(item, 'expanded')) {
|
|
124
|
-
this.setItemStateProp(item, 'expanded', false);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
updateRouterFocusedItem(items) {
|
|
129
|
-
const focusedItem = items.find(i => isHorizontalNavItemActive(i)) || items.find(i => horizontalNavItemHasActiveChild(i));
|
|
130
|
-
if (notNullOrUndefined(focusedItem)) {
|
|
131
|
-
this.updateFocusedItem(items, focusedItem);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
updateFocusedItem(items, focusedItem) {
|
|
135
|
-
for (const item of items) {
|
|
136
|
-
if (areSameHorizontalNavItem(item, focusedItem)) {
|
|
137
|
-
setHorizontalNavItemStateProp(item, 'focused', true);
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
setHorizontalNavItemStateProp(item, 'focused', false);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
_getNavExtras(item) {
|
|
145
|
-
const navigationExtras = {};
|
|
146
|
-
if (hasProperty(item, 'queryParams')) {
|
|
147
|
-
navigationExtras.queryParams = item.queryParams;
|
|
148
|
-
}
|
|
149
|
-
if (hasProperty(item, 'fragment')) {
|
|
150
|
-
navigationExtras.fragment = item.fragment;
|
|
151
|
-
}
|
|
152
|
-
if (hasProperty(item, 'queryParamsHandling')) {
|
|
153
|
-
navigationExtras.queryParamsHandling = item.queryParamsHandling;
|
|
154
|
-
}
|
|
155
|
-
if (hasProperty(item, 'preserveFragment')) {
|
|
156
|
-
navigationExtras.preserveFragment = item.preserveFragment;
|
|
157
|
-
}
|
|
158
|
-
return navigationExtras;
|
|
159
|
-
}
|
|
160
|
-
_getUrl(item) {
|
|
161
|
-
const link = item.link;
|
|
162
|
-
if (typeof link === 'string') {
|
|
163
|
-
return this._router.createUrlTree([link], this._getNavExtras(item)).toString();
|
|
164
|
-
}
|
|
165
|
-
else if (Array.isArray(link)) {
|
|
166
|
-
return this._router.createUrlTree(link, this._getNavExtras(item)).toString();
|
|
167
|
-
}
|
|
168
|
-
return null;
|
|
169
|
-
}
|
|
170
|
-
_getMatchOptions(item) {
|
|
171
|
-
const defaultMatchOpts = {
|
|
172
|
-
paths: 'subset',
|
|
173
|
-
queryParams: 'subset',
|
|
174
|
-
fragment: 'ignored',
|
|
175
|
-
matrixParams: 'ignored'
|
|
176
|
-
};
|
|
177
|
-
if (hasProperty(item, 'matchOptions')) {
|
|
178
|
-
return {
|
|
179
|
-
...defaultMatchOpts,
|
|
180
|
-
...item.matchOptions
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
return defaultMatchOpts;
|
|
184
|
-
}
|
|
185
|
-
setItemStateProp(item, prop, value) {
|
|
186
|
-
const currentValue = getHorizontalNavItemStateProp(item, prop);
|
|
187
|
-
if (currentValue !== value) {
|
|
188
|
-
setHorizontalNavItemStateProp(item, prop, value);
|
|
189
|
-
const changed = {
|
|
190
|
-
item,
|
|
191
|
-
prop,
|
|
192
|
-
prevValue: currentValue,
|
|
193
|
-
newValue: value
|
|
194
|
-
};
|
|
195
|
-
this.itemChanged.next(changed);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
TheSeamNavService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
200
|
-
TheSeamNavService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavService });
|
|
201
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavService, decorators: [{
|
|
202
|
-
type: Injectable
|
|
203
|
-
}], ctorParameters: function () { return [{ type: i1.Router }]; } });
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL25hdi9uYXYuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBd0IsYUFBYSxFQUE4QixNQUFNLGlCQUFpQixDQUFBO0FBQ2pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFDOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVyRyxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFMUUsT0FBTyxFQUNMLHdCQUF3QixFQUN4Qiw2QkFBNkIsRUFDN0IsMEJBQTBCLEVBQzFCLCtCQUErQixFQUMvQiw0QkFBNEIsRUFDNUIsaUNBQWlDLEVBQ2pDLHlCQUF5QixFQUN6Qix1QkFBdUIsRUFDdkIsZ0NBQWdDLEVBQ2hDLDZCQUE2QixFQUM5QixNQUFNLGFBQWEsQ0FBQTs7O0FBSXBCLE1BQU0sT0FBTyxpQkFBaUI7SUFRNUIsWUFDbUIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFQakIsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQTtRQUloRCxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFBO1FBSzlELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3RDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFDdkIsb0JBQW9CLEVBQUUsRUFD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SSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUVoRCxNQUFNLE9BQU8sR0FBd0I7Z0JBQ25DLElBQUk7Z0JBQ0osSUFBSTtnQkFDSixTQUFTLEVBQUUsWUFBWTtnQkFDdkIsUUFBUSxFQUFFLEtBQUs7YUFDaEIsQ0FBQTtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1NBQy9CO0lBQ0gsQ0FBQzs7OEdBbE9VLGlCQUFpQjtrSEFBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IElzQWN0aXZlTWF0Y2hPcHRpb25zLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFVybENyZWF0aW9uT3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGVmZXIsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmliZXIgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgaGFzUHJvcGVydHksIG5vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcblxuaW1wb3J0IHtcbiAgYXJlU2FtZUhvcml6b250YWxOYXZJdGVtLFxuICBnZXRIb3Jpem9udGFsTmF2SXRlbVN0YXRlUHJvcCxcbiAgaG9yaXpvbnRhbE5hdkl0ZW1DYW5FeHBhbmQsXG4gIGhvcml6b250YWxOYXZJdGVtSGFzQWN0aXZlQ2hpbGQsXG4gIGhvcml6b250YWxOYXZJdGVtSGFzQ2hpbGRyZW4sXG4gIGhvcml6b250YWxOYXZJdGVtSGFzRXhwYW5kZWRDaGlsZCxcbiAgaXNIb3Jpem9udGFsTmF2SXRlbUFjdGl2ZSxcbiAgaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUsXG4gIHNldERlZmF1bHRIb3Jpem9udGFsTmF2SXRlbVN0YXRlLFxuICBzZXRIb3Jpem9udGFsTmF2SXRlbVN0YXRlUHJvcFxufSBmcm9tICcuL25hdi11dGlscydcbmltcG9ydCB7IElOYXZJdGVtLCBJTmF2SXRlbVN0YXRlLCBJTmF2TGluaywgTmF2SXRlbVN0YXRlQ2hhbmdlZCB9IGZyb20gJy4vbmF2Lm1vZGVscydcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRoZVNlYW1OYXZTZXJ2aWNlIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF91cGRhdGluZ0NvdW50ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApXG5cbiAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG5cbiAgcHVibGljIHJlYWRvbmx5IGl0ZW1DaGFuZ2VkID0gbmV3IFN1YmplY3Q8TmF2SXRlbVN0YXRlQ2hhbmdlZD4oKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlcjogUm91dGVyXG4gICkge1xuICAgIHRoaXMubG9hZGluZyQgPSB0aGlzLl91cGRhdGluZ0NvdW50LnBpcGUoXG4gICAgICBtYXAoY291bnQgPT4gY291bnQgPiAwKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKVxuICB9XG5cbiAgcHVibGljIGNyZWF0ZUl0ZW1zT2JzZXJ2YWJsZShpdGVtczogSU5hdkl0ZW1bXSk6IE9ic2VydmFibGU8SU5hdkl0ZW1bXT4ge1xuICAgIHJldHVybiBkZWZlcigoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUl0ZW1zU3RhdGVzKGl0ZW1zKVxuICAgICAgdGhpcy51cGRhdGVSb3V0ZXJGb2N1c2VkSXRlbShpdGVtcylcbiAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcjogU3Vic2NyaWJlcjxJTmF2SXRlbVtdPikgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZUNoYW5nZVN1YiA9IHRoaXMuaXRlbUNoYW5nZWQucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoY2hhbmdlID0+IHtcbiAgICAgICAgICAgIGlmIChjaGFuZ2UucHJvcCA9PT0gJ2ZvY3VzZWQnICYmIGNoYW5nZS5uZXdWYWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzZWRJdGVtKGl0ZW1zLCBjaGFuZ2UuaXRlbSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRpbmckLnBpcGUoZmlsdGVyKGxvYWRpbmcgPT4gIWxvYWRpbmcpKVxuICAgICAgICAgIH0pXG4gICAgICAgICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoaXRlbXMpXG4gICAgICAgIH0pXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUl0ZW1zU3RhdGVzKGl0ZW1zKVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycilcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvdXRlQ2hhbmdlU3ViID0gdGhpcy5fcm91dGVyLmV2ZW50cy5waXBlKFxuICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICApLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSXRlbXNTdGF0ZXMoaXRlbXMpXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVJvdXRlckZvY3VzZWRJdGVtKGl0ZW1zKVxuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlcnIpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgc3RhdGVDaGFuZ2VTdWIudW5zdWJzY3JpYmUoKVxuICAgICAgICAgIHJvdXRlQ2hhbmdlU3ViLnVuc3Vic2NyaWJlKClcbiAgICAgICAgfVxuICAgICAgfSkucGlwZShzdGFydFdpdGgoaXRlbXMpKVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIF9pbmNVcGRhdGluZ0NvdW50KCk6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0aW5nQ291bnQubmV4dCh0aGlzLl91cGRhdGluZ0NvdW50LnZhbHVlICsgMSlcbiAgfVxuXG4gIHByaXZhdGUgX2RlY3JVcGRhdGluZ0NvdW50KCk6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0aW5nQ291bnQubmV4dCh0aGlzLl91cGRhdGluZ0NvdW50LnZhbHVlIC0gMSlcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVJdGVtc1N0YXRlcyhpdGVtczogSU5hdkl0ZW1bXSk6IHZvaWQge1xuICAgIHRoaXMuX2luY1VwZGF0aW5nQ291bnQoKVxuXG4gICAgdHJ5IHtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICBpZiAoaG9yaXpvbnRhbE5hdkl0ZW1IYXNDaGlsZHJlbihpdGVtKSkge1xuICAgICAgICAgIHRoaXMudXBkYXRlSXRlbXNTdGF0ZXMoaXRlbS5jaGlsZHJlbilcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlSXRlbVN0YXRlKGl0ZW0pXG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2RlY3JVcGRhdGluZ0NvdW50KClcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuX2RlY3JVcGRhdGluZ0NvdW50KClcbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVJdGVtU3RhdGUoaXRlbTogSU5hdkl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLl9pbmNVcGRhdGluZ0NvdW50KClcblxuICAgIHRyeSB7XG4gICAgICBzZXREZWZhdWx0SG9yaXpvbnRhbE5hdkl0ZW1TdGF0ZShpdGVtKVxuXG4gICAgICB0aGlzLnNldEl0ZW1TdGF0ZVByb3AoaXRlbSwgJ2FjdGl2ZScsIHRoaXMuaG9yaXpvbnRhbE5hdkxpbmtBY3RpdmUoaXRlbSkpXG5cbiAgICAgIC8vIFRPRE86IEltcGxlbWVudCB0aGlzIGluIGEgbW9yZSBvcHRpbWl6ZWQgd2F5LiBVbmxlc3Mgb3VyIGFwcHMgc3RhcnRcbiAgICAgIC8vIGhhdmluZyBsYXJnZSBuYXZzIGNvbnN0YW50bHkgdXBkYXRpbmcgdGhlaXIgc3RhdGUsIHRoaXMgc2hvdWxkbid0XG4gICAgICAvLyBoYXZlIG11Y2ggaW1wYWN0IG9uIHBlcmZvcm1hbmNlLlxuICAgICAgdGhpcy5fdXBkYXRlSXRlbUV4cGFuZGVkU3RhdGUoaXRlbSlcblxuICAgICAgdGhpcy5fZGVjclVwZGF0aW5nQ291bnQoKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5fZGVjclVwZGF0aW5nQ291bnQoKVxuICAgICAgdGhyb3cgZXJyXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvcml6b250YWxOYXZMaW5rQWN0aXZlKGl0ZW06IElOYXZJdGVtKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzSG9yaXpvbnRhbE5hdkl0ZW1UeXBlKGl0ZW0sICdsaW5rJykpIHtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuX2dldFVybChpdGVtKVxuICAgICAgaWYgKG5vdE51bGxPclVuZGVmaW5lZCh1cmwpKSB7XG4gICAgICAgIGNvbnN0IG9wdHMgPSB0aGlzLl9nZXRNYXRjaE9wdGlvbnMoaXRlbSlcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JvdXRlci5pc0FjdGl2ZSh1cmwsIG9wdHMpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlSXRlbXNFeHBhbmRlZFN0YXRlKGl0ZW1zOiBJTmF2SXRlbVtdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAoaG9yaXpvbnRhbE5hdkl0ZW1IYXNDaGlsZHJlbihpdGVtKSkge1xuICAgICAgICB0aGlzLl91cGRhdGVJdGVtc0V4cGFuZGVkU3RhdGUoaXRlbS5jaGlsZHJlbilcbiAgICAgIH1cbiAgICAgIHRoaXMuX3VwZGF0ZUl0ZW1FeHBhbmRlZFN0YXRlKGl0ZW0pXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlSXRlbUV4cGFuZGVkU3RhdGUoaXRlbTogSU5hdkl0ZW0pOiB2b2lkIHtcbiAgICBpZiAoIWhvcml6b250YWxOYXZJdGVtQ2FuRXhwYW5kKGl0ZW0pKSB7XG4gICAgICBpZiAoZ2V0SG9yaXpvbnRhbE5hdkl0ZW1TdGF0ZVByb3AoaXRlbSwgJ2V4cGFuZGVkJykpIHtcbiAgICAgICAgdGhpcy5zZXRJdGVtU3RhdGVQcm9wKGl0ZW0sICdleHBhbmRlZCcsIGZhbHNlKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGhvcml6b250YWxOYXZJdGVtSGFzQ2hpbGRyZW4oaXRlbSkpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUl0ZW1zRXhwYW5kZWRTdGF0ZShpdGVtLmNoaWxkcmVuKVxuICAgIH1cblxuICAgIGlmIChob3Jpem9udGFsTmF2SXRlbUhhc0FjdGl2ZUNoaWxkKGl0ZW0pIHx8IGhvcml6b250YWxOYXZJdGVtSGFzRXhwYW5kZWRDaGlsZChpdGVtKSkge1xuICAgICAgaWYgKCFnZXRIb3Jpem9udGFsTmF2SXRlbVN0YXRlUHJvcChpdGVtLCAnZXhwYW5kZWQnKSkge1xuICAgICAgICB0aGlzLnNldEl0ZW1TdGF0ZVByb3AoaXRlbSwgJ2V4cGFuZGVkJywgdHJ1ZSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGdldEhvcml6b250YWxOYXZJdGVtU3RhdGVQcm9wKGl0ZW0sICdleHBhbmRlZCcpKSB7XG4gICAgICAgIHRoaXMuc2V0SXRlbVN0YXRlUHJvcChpdGVtLCAnZXhwYW5kZWQnLCBmYWxzZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUm91dGVyRm9jdXNlZEl0ZW0oaXRlbXM6IElOYXZJdGVtW10pIHtcbiAgICBjb25zdCBmb2N1c2VkSXRlbSA9IGl0ZW1zLmZpbmQoaSA9PiBpc0hvcml6b250YWxOYXZJdGVtQWN0aXZlKGkpKSB8fCBpdGVtcy5maW5kKGkgPT4gaG9yaXpvbnRhbE5hdkl0ZW1IYXNBY3RpdmVDaGlsZChpKSlcbiAgICBpZiAobm90TnVsbE9yVW5kZWZpbmVkKGZvY3VzZWRJdGVtKSkge1xuICAgICAgdGhpcy51cGRhdGVGb2N1c2VkSXRlbShpdGVtcywgZm9jdXNlZEl0ZW0pXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUZvY3VzZWRJdGVtKGl0ZW1zOiBJTmF2SXRlbVtdLCBmb2N1c2VkSXRlbTogSU5hdkl0ZW0gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGlmIChhcmVTYW1lSG9yaXpvbnRhbE5hdkl0ZW0oaXRlbSwgZm9jdXNlZEl0ZW0pKSB7XG4gICAgICAgIHNldEhvcml6b250YWxOYXZJdGVtU3RhdGVQcm9wKGl0ZW0sICdmb2N1c2VkJywgdHJ1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEhvcml6b250YWxOYXZJdGVtU3RhdGVQcm9wKGl0ZW0sICdmb2N1c2VkJywgZmFsc2UpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0TmF2RXh0cmFzKGl0ZW06IElOYXZMaW5rKTogVXJsQ3JlYXRpb25PcHRpb25zIHtcbiAgICBjb25zdCBuYXZpZ2F0aW9uRXh0cmFzOiBVcmxDcmVhdGlvbk9wdGlvbnMgPSB7IH1cbiAgICBpZiAoaGFzUHJvcGVydHkoaXRlbSwgJ3F1ZXJ5UGFyYW1zJykpIHtcbiAgICAgIG5hdmlnYXRpb25FeHRyYXMucXVlcnlQYXJhbXMgPSBpdGVtLnF1ZXJ5UGFyYW1zXG4gICAgfVxuICAgIGlmIChoYXNQcm9wZXJ0eShpdGVtLCAnZnJhZ21lbnQnKSkge1xuICAgICAgbmF2aWdhdGlvbkV4dHJhcy5mcmFnbWVudCA9IGl0ZW0uZnJhZ21lbnRcbiAgICB9XG4gICAgaWYgKGhhc1Byb3BlcnR5KGl0ZW0sICdxdWVyeVBhcmFtc0hhbmRsaW5nJykpIHtcbiAgICAgIG5hdmlnYXRpb25FeHRyYXMucXVlcnlQYXJhbXNIYW5kbGluZyA9IGl0ZW0ucXVlcnlQYXJhbXNIYW5kbGluZ1xuICAgIH1cbiAgICBpZiAoaGFzUHJvcGVydHkoaXRlbSwgJ3ByZXNlcnZlRnJhZ21lbnQnKSkge1xuICAgICAgbmF2aWdhdGlvbkV4dHJhcy5wcmVzZXJ2ZUZyYWdtZW50ID0gaXRlbS5wcmVzZXJ2ZUZyYWdtZW50XG4gICAgfVxuICAgIHJldHVybiBuYXZpZ2F0aW9uRXh0cmFzXG4gIH1cblxuICBwcml2YXRlIF9nZXRVcmwoaXRlbTogSU5hdkxpbmspOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBsaW5rID0gaXRlbS5saW5rXG5cbiAgICBpZiAodHlwZW9mIGxpbmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcm91dGVyLmNyZWF0ZVVybFRyZWUoWyBsaW5rIF0sIHRoaXMuX2dldE5hdkV4dHJhcyhpdGVtKSkudG9TdHJpbmcoKVxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShsaW5rKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JvdXRlci5jcmVhdGVVcmxUcmVlKGxpbmssIHRoaXMuX2dldE5hdkV4dHJhcyhpdGVtKSkudG9TdHJpbmcoKVxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBwcml2YXRlIF9nZXRNYXRjaE9wdGlvbnMoaXRlbTogSU5hdkxpbmspOiBJc0FjdGl2ZU1hdGNoT3B0aW9ucyB7XG4gICAgY29uc3QgZGVmYXVsdE1hdGNoT3B0czogSXNBY3RpdmVNYXRjaE9wdGlvbnMgPSB7XG4gICAgICBwYXRoczogJ3N1YnNldCcsXG4gICAgICBxdWVyeVBhcmFtczogJ3N1YnNldCcsXG4gICAgICBmcmFnbWVudDogJ2lnbm9yZWQnLFxuICAgICAgbWF0cml4UGFyYW1zOiAnaWdub3JlZCdcbiAgICB9XG5cbiAgICBpZiAoaGFzUHJvcGVydHkoaXRlbSwgJ21hdGNoT3B0aW9ucycpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5kZWZhdWx0TWF0Y2hPcHRzLFxuICAgICAgICAuLi5pdGVtLm1hdGNoT3B0aW9uc1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkZWZhdWx0TWF0Y2hPcHRzXG4gIH1cblxuICBwdWJsaWMgc2V0SXRlbVN0YXRlUHJvcDxLIGV4dGVuZHMga2V5b2YgSU5hdkl0ZW1TdGF0ZT4oaXRlbTogSU5hdkl0ZW0sIHByb3A6IEssIHZhbHVlOiBJTmF2SXRlbVN0YXRlW0tdKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gZ2V0SG9yaXpvbnRhbE5hdkl0ZW1TdGF0ZVByb3AoaXRlbSwgcHJvcClcbiAgICBpZiAoY3VycmVudFZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgc2V0SG9yaXpvbnRhbE5hdkl0ZW1TdGF0ZVByb3AoaXRlbSwgcHJvcCwgdmFsdWUpXG5cbiAgICAgIGNvbnN0IGNoYW5nZWQ6IE5hdkl0ZW1TdGF0ZUNoYW5nZWQgPSB7XG4gICAgICAgIGl0ZW0sXG4gICAgICAgIHByb3AsXG4gICAgICAgIHByZXZWYWx1ZTogY3VycmVudFZhbHVlLFxuICAgICAgICBuZXdWYWx1ZTogdmFsdWVcbiAgICAgIH1cbiAgICAgIHRoaXMuaXRlbUNoYW5nZWQubmV4dChjaGFuZ2VkKVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Directive } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class TopBarCompactMenuBtnDetailDirective {
|
|
4
|
-
constructor(template) {
|
|
5
|
-
this.template = template;
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
TopBarCompactMenuBtnDetailDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarCompactMenuBtnDetailDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
9
|
-
TopBarCompactMenuBtnDetailDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: TopBarCompactMenuBtnDetailDirective, selector: "[seamTopBarCompactMenuBtnDetail]", ngImport: i0 });
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarCompactMenuBtnDetailDirective, decorators: [{
|
|
11
|
-
type: Directive,
|
|
12
|
-
args: [{
|
|
13
|
-
selector: '[seamTopBarCompactMenuBtnDetail]'
|
|
14
|
-
}]
|
|
15
|
-
}], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLWJhci1jb21wYWN0LW1lbnUtYnRuLWRldGFpbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL3RvcC1iYXIvdG9wLWJhci1jb21wYWN0LW1lbnUtYnRuLWRldGFpbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQTs7QUFLdEQsTUFBTSxPQUFPLG1DQUFtQztJQUU5QyxZQUFtQixRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUFJLENBQUM7O2dJQUZ2QyxtQ0FBbUM7b0hBQW5DLG1DQUFtQzsyRkFBbkMsbUNBQW1DO2tCQUgvQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQ0FBa0M7aUJBQzdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzZWFtVG9wQmFyQ29tcGFjdE1lbnVCdG5EZXRhaWxdJ1xufSlcbmV4cG9ydCBjbGFzcyBUb3BCYXJDb21wYWN0TWVudUJ0bkRldGFpbERpcmVjdGl2ZSB7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7IH1cblxufVxuIl19
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Directive } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class TopBarNavToggleBtnDetailDirective {
|
|
4
|
-
constructor(template) {
|
|
5
|
-
this.template = template;
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
TopBarNavToggleBtnDetailDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarNavToggleBtnDetailDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
9
|
-
TopBarNavToggleBtnDetailDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: TopBarNavToggleBtnDetailDirective, selector: "[seamTopBarNavToggleBtnDetail]", ngImport: i0 });
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarNavToggleBtnDetailDirective, decorators: [{
|
|
11
|
-
type: Directive,
|
|
12
|
-
args: [{
|
|
13
|
-
selector: '[seamTopBarNavToggleBtnDetail]'
|
|
14
|
-
}]
|
|
15
|
-
}], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLWJhci1uYXYtdG9nZ2xlLWJ0bi1kZXRhaWwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay90b3AtYmFyL3RvcC1iYXItbmF2LXRvZ2dsZS1idG4tZGV0YWlsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFlLE1BQU0sZUFBZSxDQUFBOztBQUt0RCxNQUFNLE9BQU8saUNBQWlDO0lBRTVDLFlBQW1CLFFBQTBCO1FBQTFCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBQUksQ0FBQzs7OEhBRnZDLGlDQUFpQztrSEFBakMsaUNBQWlDOzJGQUFqQyxpQ0FBaUM7a0JBSDdDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdDQUFnQztpQkFDM0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NlYW1Ub3BCYXJOYXZUb2dnbGVCdG5EZXRhaWxdJ1xufSlcbmV4cG9ydCBjbGFzcyBUb3BCYXJOYXZUb2dnbGVCdG5EZXRhaWxEaXJlY3RpdmUge1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PikgeyB9XG5cbn1cbiJdfQ==
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { ElementRef } from '@angular/core';
|
|
2
|
-
import { HasElementRef } from '@theseam/ui-common/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class BaseLayoutSideBarHeaderDirective implements HasElementRef {
|
|
5
|
-
_elementRef: ElementRef;
|
|
6
|
-
constructor(_elementRef: ElementRef);
|
|
7
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<BaseLayoutSideBarHeaderDirective, never>;
|
|
8
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<BaseLayoutSideBarHeaderDirective, "[seamBaseLayoutSideBarHeader]", never, {}, {}, never, never, false, never>;
|
|
9
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { BooleanInput } from '@angular/cdk/coercion';
|
|
2
|
-
import { EventEmitter, OnDestroy } from '@angular/core';
|
|
3
|
-
import { Observable } from 'rxjs';
|
|
4
|
-
import { INavItem, NavItemChildAction, NavItemExpandAction, NavItemExpandedEvent } from '../nav.models';
|
|
5
|
-
import { TheSeamNavService } from '../nav.service';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export declare class HorizontalNavComponent implements OnDestroy {
|
|
8
|
-
private readonly _nav;
|
|
9
|
-
static ngAcceptInputType_hasHeaderToggle: BooleanInput;
|
|
10
|
-
private readonly _ngUnsubscribe;
|
|
11
|
-
get items(): INavItem[];
|
|
12
|
-
set items(value: INavItem[]);
|
|
13
|
-
private _items;
|
|
14
|
-
readonly items$: Observable<INavItem[]>;
|
|
15
|
-
hideEmptyIcon: boolean | undefined | null;
|
|
16
|
-
hierLevel: number;
|
|
17
|
-
childAction: NavItemChildAction;
|
|
18
|
-
expandAction: NavItemExpandAction;
|
|
19
|
-
navItemExpanded: EventEmitter<NavItemExpandedEvent>;
|
|
20
|
-
constructor(_nav: TheSeamNavService);
|
|
21
|
-
ngOnDestroy(): void;
|
|
22
|
-
_navItemExpanded(item: INavItem, expanded: boolean): void;
|
|
23
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<HorizontalNavComponent, never>;
|
|
24
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<HorizontalNavComponent, "seam-horizontal-nav", never, { "items": "items"; "hideEmptyIcon": "hideEmptyIcon"; "hierLevel": "hierLevel"; "childAction": "childAction"; "expandAction": "expandAction"; }, { "navItemExpanded": "navItemExpanded"; }, never, never, false, never>;
|
|
25
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
@import '../styles/utilities';
|
|
2
|
-
|
|
3
|
-
seam-horizontal-nav,
|
|
4
|
-
.seam-horizontal-nav {
|
|
5
|
-
display: block;
|
|
6
|
-
height: 100%;
|
|
7
|
-
|
|
8
|
-
// Prevent main page content layer overlapping the nav while animating.
|
|
9
|
-
position: relative;
|
|
10
|
-
z-index: 2;
|
|
11
|
-
|
|
12
|
-
.nav-inner-wrapper {
|
|
13
|
-
background: $seam-nav-bg;
|
|
14
|
-
height: 100%;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
.nav-backdrop {
|
|
18
|
-
background: $seam-nav-background-bg-color;
|
|
19
|
-
width: 100vw;
|
|
20
|
-
height: 100vh;
|
|
21
|
-
|
|
22
|
-
&.nav-backdrop-hidden {
|
|
23
|
-
display: none;
|
|
24
|
-
width: 0;
|
|
25
|
-
height: 0;
|
|
26
|
-
padding: 0;
|
|
27
|
-
margin: 0;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
.nav-content {
|
|
32
|
-
display: flex;
|
|
33
|
-
flex-direction: column;
|
|
34
|
-
height: 100%;
|
|
35
|
-
flex-wrap: nowrap;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.nav-items-container {
|
|
39
|
-
display: flex;
|
|
40
|
-
flex-direction: column;
|
|
41
|
-
width: 100%;
|
|
42
|
-
flex: 1 1 100%;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
.nav-items-row {
|
|
46
|
-
height: 100%;
|
|
47
|
-
display: flex;
|
|
48
|
-
padding: $seam-nav-row-padding;
|
|
49
|
-
}
|
|
50
|
-
}
|
package/framework/nav/index.d.ts
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
|
|
2
|
-
import { EventEmitter, OnDestroy } from '@angular/core';
|
|
3
|
-
import type { SeamIcon } from '@theseam/ui-common/icon';
|
|
4
|
-
import type { ThemeTypes } from '@theseam/ui-common/models';
|
|
5
|
-
import { MenuComponent } from '@theseam/ui-common/menu';
|
|
6
|
-
import { INavItem, NavItemBadgeTooltip, NavItemChildAction, NavItemExpandAction } from '../nav.models';
|
|
7
|
-
import { TheSeamNavService } from '../nav.service';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
export declare class NavItemComponent implements OnDestroy {
|
|
10
|
-
private readonly _nav;
|
|
11
|
-
static ngAcceptInputType_hierLevel: NumberInput;
|
|
12
|
-
static ngAcceptInputType_indentSize: NumberInput;
|
|
13
|
-
static ngAcceptInputType_expanded: BooleanInput;
|
|
14
|
-
static ngAcceptInputType_compact: BooleanInput;
|
|
15
|
-
static ngAcceptInputType_active: BooleanInput;
|
|
16
|
-
private readonly _ngUnsubscribe;
|
|
17
|
-
readonly faAngleLeft: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
18
|
-
item: INavItem | undefined | null;
|
|
19
|
-
itemType: 'divider' | 'basic' | 'link' | 'button' | 'title' | undefined | null;
|
|
20
|
-
icon: SeamIcon | undefined | null;
|
|
21
|
-
hideEmptyIcon: boolean | undefined | null;
|
|
22
|
-
label: string | undefined | null;
|
|
23
|
-
active: boolean;
|
|
24
|
-
set link(value: string | undefined | null);
|
|
25
|
-
get link(): string | undefined | null;
|
|
26
|
-
private readonly _link;
|
|
27
|
-
readonly link$: import("rxjs").Observable<string | null | undefined>;
|
|
28
|
-
queryParams: {
|
|
29
|
-
[k: string]: any;
|
|
30
|
-
} | undefined | null;
|
|
31
|
-
children: INavItem[] | undefined | null;
|
|
32
|
-
hierLevel: number;
|
|
33
|
-
indentSize: number;
|
|
34
|
-
set expanded(value: boolean);
|
|
35
|
-
get expanded(): boolean;
|
|
36
|
-
private readonly _expanded;
|
|
37
|
-
readonly expanded$: import("rxjs").Observable<boolean>;
|
|
38
|
-
set compact(value: boolean);
|
|
39
|
-
get compact(): boolean;
|
|
40
|
-
private readonly _compact;
|
|
41
|
-
readonly compact$: import("rxjs").Observable<boolean>;
|
|
42
|
-
focused: boolean;
|
|
43
|
-
badgeText: string | undefined | null;
|
|
44
|
-
badgeTheme: ThemeTypes | undefined | null;
|
|
45
|
-
/**
|
|
46
|
-
* Content to provide to assistive technology, such as screen readers.
|
|
47
|
-
*/
|
|
48
|
-
badgeSrContent: string | undefined | null;
|
|
49
|
-
get badgeTooltip(): string | NavItemBadgeTooltip | undefined | null;
|
|
50
|
-
set badgeTooltip(value: string | NavItemBadgeTooltip | undefined | null);
|
|
51
|
-
private _badgeTooltip;
|
|
52
|
-
childAction: NavItemChildAction;
|
|
53
|
-
expandAction: NavItemExpandAction;
|
|
54
|
-
navItemExpanded: EventEmitter<boolean>;
|
|
55
|
-
get _isActiveCssClass(): boolean;
|
|
56
|
-
get _isChildActiveCssClass(): boolean;
|
|
57
|
-
get _isExpandedCssClass(): boolean;
|
|
58
|
-
get _isFocusedCssClass(): boolean;
|
|
59
|
-
get _attrDataHierLevel(): number;
|
|
60
|
-
_menu?: MenuComponent;
|
|
61
|
-
_navItems?: NavItemComponent[];
|
|
62
|
-
constructor(_nav: TheSeamNavService);
|
|
63
|
-
ngOnDestroy(): void;
|
|
64
|
-
get hasChildren(): boolean;
|
|
65
|
-
get hasActiveChild(): boolean;
|
|
66
|
-
get hasMenuToggle(): boolean;
|
|
67
|
-
get menuTpl(): MenuComponent | undefined;
|
|
68
|
-
get hasExpandingChildren(): boolean;
|
|
69
|
-
_toggleChildren(event: Event): void;
|
|
70
|
-
_menuEvent(menuExpanded: any): void;
|
|
71
|
-
get showIconBlock(): boolean;
|
|
72
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NavItemComponent, never>;
|
|
73
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NavItemComponent, "seam-nav-item", ["seamNavItem"], { "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"; }, { "navItemExpanded": "navItemExpanded"; }, never, never, false, never>;
|
|
74
|
-
}
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
@import '../styles/utilities';
|
|
2
|
-
|
|
3
|
-
seam-nav-item {
|
|
4
|
-
display: block;
|
|
5
|
-
transition: 250ms ease-in-out background-color;
|
|
6
|
-
text-align: $seam-nav-item-text-align;
|
|
7
|
-
border-radius: $seam-nav-item-border-radius;
|
|
8
|
-
overflow: hidden;
|
|
9
|
-
background: $seam-nav-item-bg-color;
|
|
10
|
-
margin: $seam-nav-item-margin;
|
|
11
|
-
|
|
12
|
-
&.seam-nav-item--expanded {
|
|
13
|
-
background-color: $seam-nav-item-bg-color-expanded;
|
|
14
|
-
.nav-link {
|
|
15
|
-
color: $seam-nav-item-color-expanded;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
&.seam-nav-item--child-active {
|
|
20
|
-
background-color: $seam-nav-item-bg-color-child-active;
|
|
21
|
-
.nav-link {
|
|
22
|
-
color: $seam-nav-item-color-child-active;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
&.seam-nav-item--active {
|
|
27
|
-
background-color: $seam-nav-item-bg-color-active;
|
|
28
|
-
|
|
29
|
-
.active,
|
|
30
|
-
&:active,
|
|
31
|
-
.nav-item.active:hover {
|
|
32
|
-
background-color: $seam-nav-item-bg-color-active;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.nav-item {
|
|
36
|
-
&:hover {
|
|
37
|
-
background-color: $seam-nav-item-bg-color-hover;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
.nav-link {
|
|
42
|
-
color: $seam-nav-item-color-active;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.badge {
|
|
47
|
-
vertical-align: middle;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
&:not(.nav-item--icon) {
|
|
51
|
-
.nav-item--badge {
|
|
52
|
-
pointer-events: all;
|
|
53
|
-
margin-left: 5px;
|
|
54
|
-
margin-right: 3px;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
.nav-item--icon {
|
|
59
|
-
position: relative;
|
|
60
|
-
width: 24px;
|
|
61
|
-
max-width: 24px;
|
|
62
|
-
min-width: 24px;
|
|
63
|
-
height: 24px;
|
|
64
|
-
max-height: 24px;
|
|
65
|
-
min-height: 24px;
|
|
66
|
-
text-align: center;
|
|
67
|
-
|
|
68
|
-
margin-right: .5rem;
|
|
69
|
-
|
|
70
|
-
.nav-item--badge {
|
|
71
|
-
top: -4px;
|
|
72
|
-
right: -4px;
|
|
73
|
-
position: absolute;
|
|
74
|
-
|
|
75
|
-
.badge:empty {
|
|
76
|
-
display: block;
|
|
77
|
-
width: 8px;
|
|
78
|
-
height: 8px;
|
|
79
|
-
padding: 0;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
&.nav-item--badge-no-icon {
|
|
83
|
-
top: 0px;
|
|
84
|
-
right: 0px;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
.nav-item {
|
|
90
|
-
transition: 250ms ease-in-out background-color;
|
|
91
|
-
|
|
92
|
-
&:hover {
|
|
93
|
-
background-color: $seam-nav-item-bg-color-hover;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
&.active {
|
|
97
|
-
pointer-events: none;
|
|
98
|
-
cursor: default;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
a.nav-item:not([href]):not([tabindex]) {
|
|
103
|
-
color: $seam-nav-item-disabled-color;
|
|
104
|
-
|
|
105
|
-
&:hover {
|
|
106
|
-
background-color: transparent;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
.nav-link {
|
|
111
|
-
color: $seam-nav-item-color;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
.nav-btn {
|
|
115
|
-
font-weight: $font-weight-normal;
|
|
116
|
-
color: $seam-nav-toggle-btn-color;
|
|
117
|
-
text-decoration: $link-decoration;
|
|
118
|
-
border-radius: $seam-nav-toggle-btn-border-radius;
|
|
119
|
-
border:
|
|
120
|
-
$seam-nav-toggle-btn-border-width
|
|
121
|
-
$seam-nav-toggle-btn-border-style
|
|
122
|
-
$seam-nav-toggle-btn-border-color;
|
|
123
|
-
|
|
124
|
-
@include hover {
|
|
125
|
-
color: $seam-nav-toggle-btn-color-hover;
|
|
126
|
-
text-decoration: $link-hover-decoration;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
&:focus,
|
|
130
|
-
&.focus {
|
|
131
|
-
text-decoration: $link-hover-decoration;
|
|
132
|
-
box-shadow: none;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
&:disabled,
|
|
136
|
-
&.disabled {
|
|
137
|
-
color: $seam-nav-item-disabled-color;
|
|
138
|
-
pointer-events: none;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
// Add the button focus like a link when navigating with keyboard.
|
|
143
|
-
.cdk-keyboard-focused {
|
|
144
|
-
// outline: -webkit-focus-ring-color auto 1px;
|
|
145
|
-
outline: 1px dotted;
|
|
146
|
-
outline: 5px auto -webkit-focus-ring-color;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
.nav-item--toggle-btn-container {
|
|
150
|
-
transition: 250ms ease-in-out background-color;
|
|
151
|
-
padding: $seam-nav-toggle-btn-padding;
|
|
152
|
-
}
|
|
153
|
-
button.nav-item--toggle-btn-container {
|
|
154
|
-
&:hover {
|
|
155
|
-
background-color: $seam-nav-item-bg-color-hover;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
.nav-item--toggle-btn {
|
|
160
|
-
.svg-inline--fa {
|
|
161
|
-
transition: 100ms ease-in-out transform;
|
|
162
|
-
transform: $seam-nav-toggle-btn-transform;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
@if $seam-nav-toggle-btn-use-transform-active {
|
|
166
|
-
&.nav-item--toggle-btn-expanded {
|
|
167
|
-
.svg-inline--fa {
|
|
168
|
-
transform: $seam-nav-toggle-btn-transform-active;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
.nav--group {
|
|
175
|
-
will-change: height;
|
|
176
|
-
overflow: hidden;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
@for $i from 1 through 9 {
|
|
180
|
-
.nav--group--level-#{$i} {
|
|
181
|
-
background-color: darken($seam-nav-bg-color, ($i * $seam-nav-group-bg-variation-amount));
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
.nav-item--divider {
|
|
186
|
-
display: block;
|
|
187
|
-
border-top: $seam-nav-divider-size solid $seam-nav-divider-color;
|
|
188
|
-
width: 100%;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
.nav-item--title {
|
|
192
|
-
color: $seam-nav-title-color;
|
|
193
|
-
font-size: $seam-nav-title-font-size;
|
|
194
|
-
padding-left: $seam-nav-title-padding-left;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
// without a set position, these labels can cause unnecessary scrollbars
|
|
198
|
-
.sr-only {
|
|
199
|
-
top: 0;
|
|
200
|
-
left: 0;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
|