@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.
Files changed (119) hide show
  1. package/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +1 -1
  2. package/datatable/datatable/datatable.component.d.ts +1 -10
  3. package/datatable/services/columns-manager.service.d.ts +0 -7
  4. package/datatable/utils/create-action-menu-column.d.ts +1 -1
  5. package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +2 -2
  6. package/esm2020/datatable/datatable/datatable.component.mjs +4 -20
  7. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +2 -2
  8. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +1 -1
  9. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +1 -1
  10. package/esm2020/datatable/services/columns-manager.service.mjs +2 -27
  11. package/esm2020/datatable/utils/create-action-menu-column.mjs +3 -4
  12. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +1 -1
  13. package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +1 -1
  14. package/esm2020/framework/base-layout/base-layout.component.mjs +4 -14
  15. package/esm2020/framework/base-layout/base-layout.module.mjs +1 -6
  16. package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +5 -21
  17. package/esm2020/framework/base-layout/index.mjs +1 -2
  18. package/esm2020/framework/public-api.mjs +1 -2
  19. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +1 -1
  20. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +67 -28
  21. package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +5 -12
  22. package/esm2020/framework/side-nav/side-nav.component.mjs +38 -116
  23. package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
  24. package/esm2020/framework/side-nav/side-nav.module.mjs +39 -9
  25. package/esm2020/framework/side-nav/side-nav.service.mjs +1 -1
  26. package/esm2020/framework/top-bar/index.mjs +1 -3
  27. package/esm2020/framework/top-bar/top-bar-item.directive.mjs +4 -10
  28. package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +4 -6
  29. package/esm2020/framework/top-bar/top-bar.component.mjs +11 -55
  30. package/esm2020/framework/top-bar/top-bar.module.mjs +5 -15
  31. package/esm2020/layout/layout.service.mjs +2 -12
  32. package/esm2020/menu/menu-item.component.mjs +3 -3
  33. package/esm2020/menu/menu-toggle.directive.mjs +2 -7
  34. package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +2 -4
  35. package/fesm2015/theseam-ui-common-breadcrumbs.mjs +2 -2
  36. package/fesm2015/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  37. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +2 -2
  38. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  39. package/fesm2015/theseam-ui-common-datatable.mjs +10 -56
  40. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  41. package/fesm2015/theseam-ui-common-framework.mjs +156 -905
  42. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  43. package/fesm2015/theseam-ui-common-layout.mjs +2 -11
  44. package/fesm2015/theseam-ui-common-layout.mjs.map +1 -1
  45. package/fesm2015/theseam-ui-common-menu.mjs +3 -8
  46. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  47. package/fesm2015/theseam-ui-common-table-cell-types.mjs +1 -3
  48. package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
  49. package/fesm2020/theseam-ui-common-breadcrumbs.mjs +2 -2
  50. package/fesm2020/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  51. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +2 -2
  52. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  53. package/fesm2020/theseam-ui-common-datatable.mjs +10 -56
  54. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  55. package/fesm2020/theseam-ui-common-framework.mjs +156 -907
  56. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  57. package/fesm2020/theseam-ui-common-layout.mjs +2 -11
  58. package/fesm2020/theseam-ui-common-layout.mjs.map +1 -1
  59. package/fesm2020/theseam-ui-common-menu.mjs +3 -8
  60. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  61. package/fesm2020/theseam-ui-common-table-cell-types.mjs +1 -3
  62. package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
  63. package/framework/base-layout/base-layout.component.d.ts +2 -4
  64. package/framework/base-layout/base-layout.component.scss +10 -18
  65. package/framework/base-layout/base-layout.module.d.ts +10 -11
  66. package/framework/base-layout/directives/base-layout-nav-toggle.directive.d.ts +3 -8
  67. package/framework/base-layout/index.d.ts +0 -1
  68. package/framework/base-layout/styles/_variables.scss +0 -21
  69. package/framework/public-api.d.ts +0 -1
  70. package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +14 -7
  71. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +5 -7
  72. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.d.ts +3 -5
  73. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.scss +6 -3
  74. package/framework/side-nav/side-nav.component.d.ts +1 -13
  75. package/framework/side-nav/side-nav.component.scss +1 -0
  76. package/framework/side-nav/side-nav.models.d.ts +1 -7
  77. package/framework/side-nav/side-nav.module.d.ts +9 -1
  78. package/framework/side-nav/styles/_themes/light/_variables.scss +14 -24
  79. package/framework/side-nav/styles/_themes/primary/_variables.scss +0 -8
  80. package/framework/top-bar/index.d.ts +0 -2
  81. package/framework/top-bar/top-bar-item.directive.d.ts +1 -4
  82. package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +2 -5
  83. package/framework/top-bar/top-bar.component.d.ts +3 -25
  84. package/framework/top-bar/top-bar.component.scss +2 -7
  85. package/framework/top-bar/top-bar.module.d.ts +8 -10
  86. package/layout/layout.service.d.ts +1 -9
  87. package/menu/menu-toggle.directive.d.ts +1 -2
  88. package/package.json +2 -2
  89. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +14 -57
  90. package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +5 -33
  91. package/datatable/models/action-item-column-position.d.ts +0 -13
  92. package/esm2020/datatable/models/action-item-column-position.mjs +0 -5
  93. package/esm2020/framework/base-layout/directives/base-layout-side-bar-header.directive.mjs +0 -16
  94. package/esm2020/framework/nav/horizontal-nav/horizontal-nav.component.mjs +0 -55
  95. package/esm2020/framework/nav/index.mjs +0 -6
  96. package/esm2020/framework/nav/nav-item/nav-item.component.mjs +0 -227
  97. package/esm2020/framework/nav/nav-utils.mjs +0 -107
  98. package/esm2020/framework/nav/nav.models.mjs +0 -2
  99. package/esm2020/framework/nav/nav.module.mjs +0 -67
  100. package/esm2020/framework/nav/nav.service.mjs +0 -204
  101. package/esm2020/framework/top-bar/top-bar-compact-menu-btn-detail.directive.mjs +0 -16
  102. package/esm2020/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.mjs +0 -16
  103. package/framework/base-layout/directives/base-layout-side-bar-header.directive.d.ts +0 -9
  104. package/framework/nav/_nav-theme.scss +0 -4
  105. package/framework/nav/horizontal-nav/horizontal-nav.component.d.ts +0 -25
  106. package/framework/nav/horizontal-nav/horizontal-nav.component.scss +0 -50
  107. package/framework/nav/index.d.ts +0 -5
  108. package/framework/nav/nav-item/nav-item.component.d.ts +0 -74
  109. package/framework/nav/nav-item/nav-item.component.scss +0 -203
  110. package/framework/nav/nav-utils.d.ts +0 -20
  111. package/framework/nav/nav.models.d.ts +0 -77
  112. package/framework/nav/nav.module.d.ts +0 -17
  113. package/framework/nav/nav.service.d.ts +0 -27
  114. package/framework/nav/styles/_themes/light/_variables.scss +0 -56
  115. package/framework/nav/styles/_themes/primary/_variables.scss +0 -56
  116. package/framework/nav/styles/_utilities.scss +0 -3
  117. package/framework/nav/styles/_variables.scss +0 -2
  118. package/framework/top-bar/top-bar-compact-menu-btn-detail.directive.d.ts +0 -8
  119. 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,4 +0,0 @@
1
- @import './styles/utilities';
2
-
3
- @import './horizontal-nav/horizontal-nav.component';
4
- @import './nav-item/nav-item.component';
@@ -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
- }
@@ -1,5 +0,0 @@
1
- export * from './nav-item/nav-item.component';
2
- export * from './horizontal-nav/horizontal-nav.component';
3
- export * from './nav.models';
4
- export * from './nav.module';
5
- export * from './nav-utils';
@@ -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
-