@theseam/ui-common 1.0.0-beta.1 → 1.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/breadcrumbs/index.d.ts +1 -2
  2. package/buttons/index.d.ts +20 -13
  3. package/datatable/index.d.ts +77 -39
  4. package/dynamic/index.d.ts +5 -5
  5. package/fesm2022/theseam-ui-common-asset-reader.mjs +28 -29
  6. package/fesm2022/theseam-ui-common-asset-reader.mjs.map +1 -1
  7. package/fesm2022/theseam-ui-common-breadcrumbs.mjs +25 -31
  8. package/fesm2022/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  9. package/fesm2022/theseam-ui-common-buttons.mjs +108 -66
  10. package/fesm2022/theseam-ui-common-buttons.mjs.map +1 -1
  11. package/fesm2022/theseam-ui-common-card.mjs +21 -21
  12. package/fesm2022/theseam-ui-common-card.mjs.map +1 -1
  13. package/fesm2022/theseam-ui-common-carousel.mjs +28 -30
  14. package/fesm2022/theseam-ui-common-carousel.mjs.map +1 -1
  15. package/fesm2022/theseam-ui-common-checkbox.mjs +27 -27
  16. package/fesm2022/theseam-ui-common-checkbox.mjs.map +1 -1
  17. package/fesm2022/theseam-ui-common-confirm-dialog.mjs +23 -27
  18. package/fesm2022/theseam-ui-common-confirm-dialog.mjs.map +1 -1
  19. package/fesm2022/theseam-ui-common-core.mjs +31 -11
  20. package/fesm2022/theseam-ui-common-core.mjs.map +1 -1
  21. package/fesm2022/theseam-ui-common-data-exporter.mjs +18 -19
  22. package/fesm2022/theseam-ui-common-data-exporter.mjs.map +1 -1
  23. package/fesm2022/theseam-ui-common-data-filters.mjs +80 -64
  24. package/fesm2022/theseam-ui-common-data-filters.mjs.map +1 -1
  25. package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs +51 -49
  26. package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs.map +1 -1
  27. package/fesm2022/theseam-ui-common-datatable-dynamic.mjs +145 -112
  28. package/fesm2022/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  29. package/fesm2022/theseam-ui-common-datatable.mjs +727 -420
  30. package/fesm2022/theseam-ui-common-datatable.mjs.map +1 -1
  31. package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs +12 -14
  32. package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs.map +1 -1
  33. package/fesm2022/theseam-ui-common-dynamic.mjs +60 -48
  34. package/fesm2022/theseam-ui-common-dynamic.mjs.map +1 -1
  35. package/fesm2022/theseam-ui-common-footer-bar.mjs +9 -15
  36. package/fesm2022/theseam-ui-common-footer-bar.mjs.map +1 -1
  37. package/fesm2022/theseam-ui-common-form-field-error.mjs +60 -43
  38. package/fesm2022/theseam-ui-common-form-field-error.mjs.map +1 -1
  39. package/fesm2022/theseam-ui-common-form-field.mjs +129 -76
  40. package/fesm2022/theseam-ui-common-form-field.mjs.map +1 -1
  41. package/fesm2022/theseam-ui-common-framework.mjs +669 -543
  42. package/fesm2022/theseam-ui-common-framework.mjs.map +1 -1
  43. package/fesm2022/theseam-ui-common-google-maps.mjs +206 -149
  44. package/fesm2022/theseam-ui-common-google-maps.mjs.map +1 -1
  45. package/fesm2022/theseam-ui-common-graphql.mjs +252 -195
  46. package/fesm2022/theseam-ui-common-graphql.mjs.map +1 -1
  47. package/fesm2022/theseam-ui-common-icon.mjs +125 -89
  48. package/fesm2022/theseam-ui-common-icon.mjs.map +1 -1
  49. package/fesm2022/theseam-ui-common-layout.mjs +18 -26
  50. package/fesm2022/theseam-ui-common-layout.mjs.map +1 -1
  51. package/fesm2022/theseam-ui-common-loading.mjs +19 -28
  52. package/fesm2022/theseam-ui-common-loading.mjs.map +1 -1
  53. package/fesm2022/theseam-ui-common-menu.mjs +124 -95
  54. package/fesm2022/theseam-ui-common-menu.mjs.map +1 -1
  55. package/fesm2022/theseam-ui-common-modal.mjs +178 -129
  56. package/fesm2022/theseam-ui-common-modal.mjs.map +1 -1
  57. package/fesm2022/theseam-ui-common-models.mjs +3 -3
  58. package/fesm2022/theseam-ui-common-models.mjs.map +1 -1
  59. package/fesm2022/theseam-ui-common-navigation-reload.mjs +13 -11
  60. package/fesm2022/theseam-ui-common-navigation-reload.mjs.map +1 -1
  61. package/fesm2022/theseam-ui-common-popover.mjs +81 -88
  62. package/fesm2022/theseam-ui-common-popover.mjs.map +1 -1
  63. package/fesm2022/theseam-ui-common-progress.mjs +15 -19
  64. package/fesm2022/theseam-ui-common-progress.mjs.map +1 -1
  65. package/fesm2022/theseam-ui-common-rich-text.mjs +65 -52
  66. package/fesm2022/theseam-ui-common-rich-text.mjs.map +1 -1
  67. package/fesm2022/theseam-ui-common-scrollbar.mjs +12 -9
  68. package/fesm2022/theseam-ui-common-scrollbar.mjs.map +1 -1
  69. package/fesm2022/theseam-ui-common-services.mjs +41 -26
  70. package/fesm2022/theseam-ui-common-services.mjs.map +1 -1
  71. package/fesm2022/theseam-ui-common-shared.mjs +149 -159
  72. package/fesm2022/theseam-ui-common-shared.mjs.map +1 -1
  73. package/fesm2022/theseam-ui-common-storage.mjs +9 -6
  74. package/fesm2022/theseam-ui-common-storage.mjs.map +1 -1
  75. package/fesm2022/theseam-ui-common-story-helpers.mjs +148 -86
  76. package/fesm2022/theseam-ui-common-story-helpers.mjs.map +1 -1
  77. package/fesm2022/theseam-ui-common-tabbed.mjs +43 -39
  78. package/fesm2022/theseam-ui-common-tabbed.mjs.map +1 -1
  79. package/fesm2022/theseam-ui-common-table-cell-type.mjs +63 -39
  80. package/fesm2022/theseam-ui-common-table-cell-type.mjs.map +1 -1
  81. package/fesm2022/theseam-ui-common-table-cell-types.mjs +182 -144
  82. package/fesm2022/theseam-ui-common-table-cell-types.mjs.map +1 -1
  83. package/fesm2022/theseam-ui-common-table.mjs +62 -41
  84. package/fesm2022/theseam-ui-common-table.mjs.map +1 -1
  85. package/fesm2022/theseam-ui-common-tel-input.mjs +98 -63
  86. package/fesm2022/theseam-ui-common-tel-input.mjs.map +1 -1
  87. package/fesm2022/theseam-ui-common-testing.mjs +13 -10
  88. package/fesm2022/theseam-ui-common-testing.mjs.map +1 -1
  89. package/fesm2022/theseam-ui-common-tiled-select.mjs +54 -50
  90. package/fesm2022/theseam-ui-common-tiled-select.mjs.map +1 -1
  91. package/fesm2022/theseam-ui-common-toggle-edit.mjs +41 -37
  92. package/fesm2022/theseam-ui-common-toggle-edit.mjs.map +1 -1
  93. package/fesm2022/theseam-ui-common-toggle-group.mjs +30 -31
  94. package/fesm2022/theseam-ui-common-toggle-group.mjs.map +1 -1
  95. package/fesm2022/theseam-ui-common-tooltip.mjs +225 -66
  96. package/fesm2022/theseam-ui-common-tooltip.mjs.map +1 -1
  97. package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs +14 -12
  98. package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs.map +1 -1
  99. package/fesm2022/theseam-ui-common-utils.mjs +113 -77
  100. package/fesm2022/theseam-ui-common-utils.mjs.map +1 -1
  101. package/fesm2022/theseam-ui-common-validators.mjs +10 -9
  102. package/fesm2022/theseam-ui-common-validators.mjs.map +1 -1
  103. package/fesm2022/theseam-ui-common-vertical-list-filter.mjs +39 -17
  104. package/fesm2022/theseam-ui-common-vertical-list-filter.mjs.map +1 -1
  105. package/fesm2022/theseam-ui-common-viewers.mjs +80 -53
  106. package/fesm2022/theseam-ui-common-viewers.mjs.map +1 -1
  107. package/fesm2022/theseam-ui-common-widget.mjs +288 -314
  108. package/fesm2022/theseam-ui-common-widget.mjs.map +1 -1
  109. package/form-field/index.d.ts +1 -1
  110. package/framework/base-layout/base-layout.component.scss +9 -4
  111. package/framework/base-layout/styles/_variables.scss +4 -9
  112. package/framework/dashboard/dashboard-widgets/dashboard-widgets.component.scss +6 -4
  113. package/framework/index.d.ts +6 -6
  114. package/framework/nav/nav-item/nav-item.component.scss +7 -6
  115. package/framework/nav/styles/_themes/light/_variables.scss +21 -5
  116. package/framework/nav/styles/_themes/primary/_variables.scss +21 -5
  117. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +5 -2
  118. package/framework/side-nav/styles/_themes/light/_variables.scss +5 -1
  119. package/framework/side-nav/styles/_themes/primary/_variables.scss +25 -5
  120. package/graphql/index.d.ts +5 -5
  121. package/modal/README.md +5 -5
  122. package/modal/index.d.ts +1 -1
  123. package/models/index.d.ts +1 -1
  124. package/package.json +62 -63
  125. package/popover/index.d.ts +0 -2
  126. package/progress/progress-circle/styles/_variables.scss +15 -3
  127. package/shared/index.d.ts +0 -13
  128. package/story-helpers/index.d.ts +11 -1
  129. package/styles/bootstrap/_bootstrap.scss +34 -34
  130. package/styles/bootstrap/_bs-styles.scss +4 -8
  131. package/styles/bootstrap/_bs-utilities.scss +4 -4
  132. package/styles/bootstrap/_bs-variables.scss +65 -70
  133. package/styles/common/_forms.scss +9 -10
  134. package/styles/common/_global.scss +0 -1
  135. package/styles/common/_hacks.scss +1 -1
  136. package/styles/common/_table.scss +0 -1
  137. package/styles/common/_text.scss +3 -1
  138. package/styles/theme.scss +1 -1
  139. package/styles/vendor/ng-select/_ng-select-bs4.scss +292 -294
  140. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +63 -32
  141. package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +37 -10
  142. package/styles/vendor/ngx-datatable/_themes/material/_variables.scss +3 -1
  143. package/styles/vendor/quill/_quill.scss +15 -9
  144. package/table/index.d.ts +4 -1
  145. package/table-cell-type/index.d.ts +27 -2
  146. package/tel-input/README.md +27 -27
  147. package/utils/index.d.ts +3 -3
  148. package/viewers/index.d.ts +9 -2
  149. package/widget/_widget-theme.scss +1 -1
  150. package/widget/styles/_variables.scss +2 -2
  151. package/widget/widget/widget.component.scss +0 -2
  152. package/widget/widget-content-components/widget-tile/widget-tile.component.scss +1 -3
  153. package/widget/widget-footer/widget-footer.component.scss +0 -1
@@ -10,30 +10,28 @@ import { leafChildRoute, notNullOrUndefined, willHaveDataProp, hasProperty, rout
10
10
  class TheSeamBreadcrumbsService {
11
11
  _router = inject(Router);
12
12
  _activatedRoute = inject(ActivatedRoute);
13
- dataProps = [
14
- 'breadcrumb',
15
- 'breadcrumbExtras',
16
- ];
13
+ dataProps = ['breadcrumb', 'breadcrumbExtras'];
17
14
  crumbs$ = this._crumbsFromRoute();
18
15
  _crumbsFromRoute() {
19
- return this._router.events.pipe(filter((event) => event instanceof NavigationEnd), map(() => this._activatedRoute), startWith(this._activatedRoute), switchMap(activatedRoute => this._crumbsFromActivatedRoute(activatedRoute)));
16
+ return this._router.events.pipe(filter((event) => event instanceof NavigationEnd), map(() => this._activatedRoute), startWith(this._activatedRoute), switchMap((activatedRoute) => this._crumbsFromActivatedRoute(activatedRoute)));
20
17
  }
21
18
  _crumbsFromActivatedRoute(activatedRoute) {
22
- return this._breadcrumbDatasFromRoot(activatedRoute).pipe(map(bcDatas => this._breadcrumbsFromData(bcDatas)));
19
+ return this._breadcrumbDatasFromRoot(activatedRoute).pipe(map((bcDatas) => this._breadcrumbsFromData(bcDatas)));
23
20
  }
24
21
  _breadcrumbDatasFromRoot(activatedRoute) {
25
- const bcDataObs = leafChildRoute(activatedRoute).pathFromRoot.map(r => this._breadcrumbData(r));
26
- return combineLatest(bcDataObs).pipe(map(v => v.filter(notNullOrUndefined)), switchMap(v => this._applyBreadcrumbExtras(v)));
22
+ const bcDataObs = leafChildRoute(activatedRoute).pathFromRoot.map((r) => this._breadcrumbData(r));
23
+ return combineLatest(bcDataObs).pipe(map((v) => v.filter(notNullOrUndefined)), switchMap((v) => this._applyBreadcrumbExtras(v)));
27
24
  }
28
25
  _breadcrumbData(activatedRoute) {
29
- return activatedRoute.data.pipe(map(data => {
26
+ return activatedRoute.data.pipe(map((data) => {
30
27
  const bcData = {
31
28
  activatedRoute,
32
29
  extrasPropRefs: [],
33
30
  };
34
31
  let found = false;
35
32
  for (const prop of this.dataProps) {
36
- if (prop === 'breadcrumb' && !willHaveDataProp(activatedRoute, prop)) {
33
+ if (prop === 'breadcrumb' &&
34
+ !willHaveDataProp(activatedRoute, prop)) {
37
35
  // Need to skip if the 'breadcrumb' data prop is not in the config,
38
36
  // because we will get duplicates if the data 'breadcrumb' prop is
39
37
  // inheritted from a parent route.
@@ -69,21 +67,23 @@ class TheSeamBreadcrumbsService {
69
67
  // add extras
70
68
  newDatas[newDatas.length - 1].extrasPropRefs = this._filterExtrasPropRefs([
71
69
  ...newDatas[newDatas.length - 1].extrasPropRefs,
72
- ...pending.map(p => p.extrasPropRefs).reduce((prev, curr) => [...prev, ...curr], []),
70
+ ...pending
71
+ .map((p) => p.extrasPropRefs)
72
+ .reduce((prev, curr) => [...prev, ...curr], []),
73
73
  ]);
74
74
  }
75
- return combineLatest(newDatas.map(data => {
75
+ return combineLatest(newDatas.map((data) => {
76
76
  if (data.extrasPropRefs.length === 0) {
77
77
  return of(data);
78
78
  }
79
- return this._observeExtrasPropRefs(data.extrasPropRefs).pipe(map(extrasStr => {
79
+ return this._observeExtrasPropRefs(data.extrasPropRefs).pipe(map((extrasStr) => {
80
80
  data.breadcrumb = `${data.breadcrumb} ${extrasStr}`;
81
81
  return data;
82
82
  }));
83
83
  }));
84
84
  }
85
85
  _observeExtrasPropRefs(propRefs) {
86
- return combineLatest(propRefs.map(pf => pf.value)).pipe(map(values => values.map(v => `(${v})`).join(' ')));
86
+ return combineLatest(propRefs.map((pf) => pf.value)).pipe(map((values) => values.map((v) => `(${v})`).join(' ')));
87
87
  }
88
88
  _getBreadcrumbExtrasDataProps(data) {
89
89
  if (!hasProperty(data, 'breadcrumbExtras')) {
@@ -92,14 +92,14 @@ class TheSeamBreadcrumbsService {
92
92
  if (!hasProperty(data.breadcrumbExtras, 'dataProps')) {
93
93
  return [];
94
94
  }
95
- const propRefs = data.breadcrumbExtras.dataProps.map(prop => {
95
+ const propRefs = data.breadcrumbExtras.dataProps.map((prop) => {
96
96
  return { prop, value: this._getDataProp(data.activatedRoute, prop) };
97
97
  });
98
98
  return this._filterExtrasPropRefs(propRefs);
99
99
  }
100
100
  _filterExtrasPropRefs(propRefs) {
101
101
  const seen = {};
102
- return propRefs.filter(propRef => {
102
+ return propRefs.filter((propRef) => {
103
103
  if (seen[propRef.prop]) {
104
104
  return false;
105
105
  }
@@ -110,13 +110,13 @@ class TheSeamBreadcrumbsService {
110
110
  _getDataProp(activatedRoute, prop) {
111
111
  if (activatedRoute.routeConfig !== null) {
112
112
  if (willHaveDataProp(activatedRoute, prop)) {
113
- return activatedRoute.data.pipe(map(d => d[prop]));
113
+ return activatedRoute.data.pipe(map((d) => d[prop]));
114
114
  }
115
115
  }
116
116
  let r = activatedRoute.parent;
117
117
  while (r !== null) {
118
118
  if (willHaveDataProp(r, prop)) {
119
- return r.data.pipe(map(d => d[prop]));
119
+ return r.data.pipe(map((d) => d[prop]));
120
120
  }
121
121
  r = r.parent;
122
122
  }
@@ -136,10 +136,10 @@ class TheSeamBreadcrumbsService {
136
136
  }
137
137
  return breadcrumbs;
138
138
  }
139
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamBreadcrumbsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
140
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamBreadcrumbsService, providedIn: 'root' });
139
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamBreadcrumbsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
140
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamBreadcrumbsService, providedIn: 'root' });
141
141
  }
142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamBreadcrumbsService, decorators: [{
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamBreadcrumbsService, decorators: [{
143
143
  type: Injectable,
144
144
  args: [{
145
145
  providedIn: 'root',
@@ -149,18 +149,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
149
149
  class TheSeamBreadcrumbsComponent {
150
150
  _breadcrumbs = inject(TheSeamBreadcrumbsService);
151
151
  crumbs$ = this._breadcrumbs.crumbs$;
152
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamBreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
153
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamBreadcrumbsComponent, isStandalone: true, selector: "seam-breadcrumbs", ngImport: i0, template: "<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb mb-0\">\n <li *ngFor=\"let crumb of crumbs$ | async; last as isLast\"\n class=\"breadcrumb-item\"\n [ngClass]=\"{ 'active': isLast }\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\">\n <a *ngIf=\"!isLast; else notLink\" [routerLink]=\"crumb.path\">{{ crumb.value }}</a>\n <ng-template #notLink>{{ crumb.value }}</ng-template>\n </li>\n </ol>\n</nav>\n", styles: ["seam-breadcrumbs li{color:#fff}seam-breadcrumbs li a{color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
152
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamBreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
153
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamBreadcrumbsComponent, isStandalone: true, selector: "seam-breadcrumbs", ngImport: i0, template: "<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb mb-0\">\n <li\n *ngFor=\"let crumb of crumbs$ | async; last as isLast\"\n class=\"breadcrumb-item\"\n [ngClass]=\"{ active: isLast }\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\"\n >\n <a *ngIf=\"!isLast; else notLink\" [routerLink]=\"crumb.path\">{{\n crumb.value\n }}</a>\n <ng-template #notLink>{{ crumb.value }}</ng-template>\n </li>\n </ol>\n</nav>\n", styles: ["seam-breadcrumbs li{color:#fff}seam-breadcrumbs li a{color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
154
154
  }
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamBreadcrumbsComponent, decorators: [{
155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamBreadcrumbsComponent, decorators: [{
156
156
  type: Component,
157
- args: [{ selector: 'seam-breadcrumbs', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
158
- RouterModule,
159
- NgFor,
160
- AsyncPipe,
161
- NgClass,
162
- NgIf,
163
- ], template: "<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb mb-0\">\n <li *ngFor=\"let crumb of crumbs$ | async; last as isLast\"\n class=\"breadcrumb-item\"\n [ngClass]=\"{ 'active': isLast }\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\">\n <a *ngIf=\"!isLast; else notLink\" [routerLink]=\"crumb.path\">{{ crumb.value }}</a>\n <ng-template #notLink>{{ crumb.value }}</ng-template>\n </li>\n </ol>\n</nav>\n", styles: ["seam-breadcrumbs li{color:#fff}seam-breadcrumbs li a{color:#fff}\n"] }]
157
+ args: [{ selector: 'seam-breadcrumbs', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [RouterModule, NgFor, AsyncPipe, NgClass, NgIf], template: "<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb mb-0\">\n <li\n *ngFor=\"let crumb of crumbs$ | async; last as isLast\"\n class=\"breadcrumb-item\"\n [ngClass]=\"{ active: isLast }\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\"\n >\n <a *ngIf=\"!isLast; else notLink\" [routerLink]=\"crumb.path\">{{\n crumb.value\n }}</a>\n <ng-template #notLink>{{ crumb.value }}</ng-template>\n </li>\n </ol>\n</nav>\n", styles: ["seam-breadcrumbs li{color:#fff}seam-breadcrumbs li a{color:#fff}\n"] }]
164
158
  }] });
165
159
 
166
160
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-breadcrumbs.mjs","sources":["../../../projects/ui-common/breadcrumbs/breadcrumbs.service.ts","../../../projects/ui-common/breadcrumbs/breadcrumbs/breadcrumbs.component.ts","../../../projects/ui-common/breadcrumbs/breadcrumbs/breadcrumbs.component.html","../../../projects/ui-common/breadcrumbs/theseam-ui-common-breadcrumbs.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core'\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router'\nimport { combineLatest, Observable, of } from 'rxjs'\nimport { filter, map, startWith, switchMap } from 'rxjs/operators'\n\nimport {\n hasProperty,\n leafChildRoute,\n notNullOrUndefined,\n routeSnapshotPathFull,\n willHaveDataProp\n} from '@theseam/ui-common/utils'\n\nimport { TheSeamBreadcrumb } from './breadcrumb'\n\ninterface BreadcrumbDataExtras {\n dataProps?: string[]\n}\n\ninterface ExtrasPropRef {\n prop: string\n value: Observable<string>\n}\n\ninterface BreadcrumbData {\n breadcrumb?: string\n breadcrumbExtras?: BreadcrumbDataExtras\n\n activatedRoute: ActivatedRoute\n extrasPropRefs: ExtrasPropRef[]\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TheSeamBreadcrumbsService {\n\n private readonly _router = inject(Router)\n private readonly _activatedRoute = inject(ActivatedRoute)\n\n private readonly dataProps: (keyof Omit<BreadcrumbData, 'activatedRoute'>)[] = [\n 'breadcrumb',\n 'breadcrumbExtras',\n ]\n\n public readonly crumbs$ = this._crumbsFromRoute()\n\n private _crumbsFromRoute(): Observable<TheSeamBreadcrumb[]> {\n return this._router.events.pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n map(() => this._activatedRoute),\n startWith(this._activatedRoute),\n switchMap(activatedRoute => this._crumbsFromActivatedRoute(activatedRoute)),\n )\n }\n\n private _crumbsFromActivatedRoute(activatedRoute: ActivatedRoute): Observable<TheSeamBreadcrumb[]> {\n return this._breadcrumbDatasFromRoot(activatedRoute).pipe(\n map(bcDatas => this._breadcrumbsFromData(bcDatas))\n )\n }\n\n private _breadcrumbDatasFromRoot(activatedRoute: ActivatedRoute): Observable<BreadcrumbData[]> {\n const bcDataObs = leafChildRoute(activatedRoute).pathFromRoot.map(r => this._breadcrumbData(r))\n return combineLatest(bcDataObs).pipe(\n map(v => v.filter(notNullOrUndefined)),\n switchMap(v => this._applyBreadcrumbExtras(v)),\n )\n }\n\n private _breadcrumbData(activatedRoute: ActivatedRoute): Observable<BreadcrumbData | null> {\n return activatedRoute.data.pipe(\n map(data => {\n const bcData: BreadcrumbData = {\n activatedRoute,\n extrasPropRefs: [],\n }\n\n let found = false\n for (const prop of this.dataProps) {\n if (prop === 'breadcrumb' && !willHaveDataProp(activatedRoute, prop)) {\n // Need to skip if the 'breadcrumb' data prop is not in the config,\n // because we will get duplicates if the data 'breadcrumb' prop is\n // inheritted from a parent route.\n continue\n }\n\n if (hasProperty(data, prop)) {\n bcData[prop] = data[prop]\n found = true\n }\n }\n\n if (!found) {\n return null\n }\n\n bcData.extrasPropRefs = this._getBreadcrumbExtrasDataProps(bcData)\n\n return bcData\n })\n )\n }\n\n private _applyBreadcrumbExtras(datas: BreadcrumbData[]): Observable<BreadcrumbData[]> {\n const newDatas: BreadcrumbData[] = []\n\n let pending: BreadcrumbData[] = []\n for (const data of datas) {\n if (!hasProperty(data, 'breadcrumb')) {\n pending.push(data)\n continue\n }\n\n newDatas.push(data)\n\n pending = []\n }\n\n if (newDatas.length === 0) {\n return of([])\n }\n\n if (pending.length > 0) {\n // add extras\n newDatas[newDatas.length - 1].extrasPropRefs = this._filterExtrasPropRefs([\n ...newDatas[newDatas.length - 1].extrasPropRefs,\n ...pending.map(p => p.extrasPropRefs).reduce((prev, curr) => [ ...prev, ...curr ], []),\n ])\n }\n\n return combineLatest(newDatas.map(data => {\n if (data.extrasPropRefs.length === 0) {\n return of(data)\n }\n\n return this._observeExtrasPropRefs(data.extrasPropRefs).pipe(\n map(extrasStr => {\n data.breadcrumb = `${data.breadcrumb} ${extrasStr}`\n return data\n })\n )\n }))\n }\n\n private _observeExtrasPropRefs(propRefs: ExtrasPropRef[]): Observable<string> {\n return combineLatest(propRefs.map(pf => pf.value)).pipe(\n map(values => values.map(v => `(${v})`).join(' ')),\n )\n }\n\n private _getBreadcrumbExtrasDataProps(data: BreadcrumbData): ExtrasPropRef[] {\n if (!hasProperty(data, 'breadcrumbExtras')) {\n return []\n }\n\n if (!hasProperty(data.breadcrumbExtras, 'dataProps')) {\n return []\n }\n\n const propRefs = data.breadcrumbExtras.dataProps.map(prop => {\n return { prop, value: this._getDataProp(data.activatedRoute, prop) }\n })\n\n return this._filterExtrasPropRefs(propRefs)\n }\n\n private _filterExtrasPropRefs(propRefs: ExtrasPropRef[]): ExtrasPropRef[] {\n const seen: { [key: string]: boolean } = { }\n return propRefs.filter(propRef => {\n if (seen[propRef.prop]) {\n return false\n }\n seen[propRef.prop] = true\n return true\n })\n }\n\n private _getDataProp(activatedRoute: ActivatedRoute, prop: string): Observable<string> {\n if (activatedRoute.routeConfig !== null) {\n if (willHaveDataProp(activatedRoute, prop)) {\n return activatedRoute.data.pipe(map(d => d[prop]))\n }\n }\n\n let r = activatedRoute.parent\n while (r !== null) {\n if (willHaveDataProp(r, prop)) {\n return r.data.pipe(map(d => d[prop]))\n }\n\n r = r.parent\n }\n\n throw Error(`DataProp '${prop}' not found.`)\n }\n\n private _breadcrumbsFromData(datas: BreadcrumbData[]): TheSeamBreadcrumb[] {\n const breadcrumbs: TheSeamBreadcrumb[] = []\n\n for (const data of datas) {\n if (hasProperty(data, 'breadcrumb')) {\n const breadcrumb: TheSeamBreadcrumb = {\n value: data.breadcrumb,\n path: routeSnapshotPathFull(data.activatedRoute.snapshot),\n route: data.activatedRoute,\n }\n breadcrumbs.push(breadcrumb)\n }\n }\n\n return breadcrumbs\n }\n}\n","import { AsyncPipe, NgClass, NgFor, NgIf } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { TheSeamBreadcrumbsService } from '../breadcrumbs.service'\n\n@Component({\n selector: 'seam-breadcrumbs',\n templateUrl: './breadcrumbs.component.html',\n styleUrls: ['./breadcrumbs.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n RouterModule,\n NgFor,\n AsyncPipe,\n NgClass,\n NgIf,\n ],\n})\nexport class TheSeamBreadcrumbsComponent {\n private readonly _breadcrumbs = inject(TheSeamBreadcrumbsService)\n public readonly crumbs$ = this._breadcrumbs.crumbs$\n}\n","<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb mb-0\">\n <li *ngFor=\"let crumb of crumbs$ | async; last as isLast\"\n class=\"breadcrumb-item\"\n [ngClass]=\"{ 'active': isLast }\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\">\n <a *ngIf=\"!isLast; else notLink\" [routerLink]=\"crumb.path\">{{ crumb.value }}</a>\n <ng-template #notLink>{{ crumb.value }}</ng-template>\n </li>\n </ol>\n</nav>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theseam-ui-common-breadcrumbs.mjs","sources":["../../../projects/ui-common/breadcrumbs/breadcrumbs.service.ts","../../../projects/ui-common/breadcrumbs/breadcrumbs/breadcrumbs.component.ts","../../../projects/ui-common/breadcrumbs/breadcrumbs/breadcrumbs.component.html","../../../projects/ui-common/breadcrumbs/theseam-ui-common-breadcrumbs.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core'\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router'\nimport { combineLatest, Observable, of } from 'rxjs'\nimport { filter, map, startWith, switchMap } from 'rxjs/operators'\n\nimport {\n hasProperty,\n leafChildRoute,\n notNullOrUndefined,\n routeSnapshotPathFull,\n willHaveDataProp,\n} from '@theseam/ui-common/utils'\n\nimport { TheSeamBreadcrumb } from './breadcrumb'\n\ninterface BreadcrumbDataExtras {\n dataProps?: string[]\n}\n\ninterface ExtrasPropRef {\n prop: string\n value: Observable<string>\n}\n\ninterface BreadcrumbData {\n breadcrumb?: string\n breadcrumbExtras?: BreadcrumbDataExtras\n\n activatedRoute: ActivatedRoute\n extrasPropRefs: ExtrasPropRef[]\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TheSeamBreadcrumbsService {\n private readonly _router = inject(Router)\n private readonly _activatedRoute = inject(ActivatedRoute)\n\n private readonly dataProps: (keyof Omit<BreadcrumbData, 'activatedRoute'>)[] =\n ['breadcrumb', 'breadcrumbExtras']\n\n public readonly crumbs$ = this._crumbsFromRoute()\n\n private _crumbsFromRoute(): Observable<TheSeamBreadcrumb[]> {\n return this._router.events.pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n map(() => this._activatedRoute),\n startWith(this._activatedRoute),\n switchMap((activatedRoute) =>\n this._crumbsFromActivatedRoute(activatedRoute),\n ),\n )\n }\n\n private _crumbsFromActivatedRoute(\n activatedRoute: ActivatedRoute,\n ): Observable<TheSeamBreadcrumb[]> {\n return this._breadcrumbDatasFromRoot(activatedRoute).pipe(\n map((bcDatas) => this._breadcrumbsFromData(bcDatas)),\n )\n }\n\n private _breadcrumbDatasFromRoot(\n activatedRoute: ActivatedRoute,\n ): Observable<BreadcrumbData[]> {\n const bcDataObs = leafChildRoute(activatedRoute).pathFromRoot.map((r) =>\n this._breadcrumbData(r),\n )\n return combineLatest(bcDataObs).pipe(\n map((v) => v.filter(notNullOrUndefined)),\n switchMap((v) => this._applyBreadcrumbExtras(v)),\n )\n }\n\n private _breadcrumbData(\n activatedRoute: ActivatedRoute,\n ): Observable<BreadcrumbData | null> {\n return activatedRoute.data.pipe(\n map((data) => {\n const bcData: BreadcrumbData = {\n activatedRoute,\n extrasPropRefs: [],\n }\n\n let found = false\n for (const prop of this.dataProps) {\n if (\n prop === 'breadcrumb' &&\n !willHaveDataProp(activatedRoute, prop)\n ) {\n // Need to skip if the 'breadcrumb' data prop is not in the config,\n // because we will get duplicates if the data 'breadcrumb' prop is\n // inheritted from a parent route.\n continue\n }\n\n if (hasProperty(data, prop)) {\n bcData[prop] = data[prop]\n found = true\n }\n }\n\n if (!found) {\n return null\n }\n\n bcData.extrasPropRefs = this._getBreadcrumbExtrasDataProps(bcData)\n\n return bcData\n }),\n )\n }\n\n private _applyBreadcrumbExtras(\n datas: BreadcrumbData[],\n ): Observable<BreadcrumbData[]> {\n const newDatas: BreadcrumbData[] = []\n\n let pending: BreadcrumbData[] = []\n for (const data of datas) {\n if (!hasProperty(data, 'breadcrumb')) {\n pending.push(data)\n continue\n }\n\n newDatas.push(data)\n\n pending = []\n }\n\n if (newDatas.length === 0) {\n return of([])\n }\n\n if (pending.length > 0) {\n // add extras\n newDatas[newDatas.length - 1].extrasPropRefs = this._filterExtrasPropRefs(\n [\n ...newDatas[newDatas.length - 1].extrasPropRefs,\n ...pending\n .map((p) => p.extrasPropRefs)\n .reduce((prev, curr) => [...prev, ...curr], []),\n ],\n )\n }\n\n return combineLatest(\n newDatas.map((data) => {\n if (data.extrasPropRefs.length === 0) {\n return of(data)\n }\n\n return this._observeExtrasPropRefs(data.extrasPropRefs).pipe(\n map((extrasStr) => {\n data.breadcrumb = `${data.breadcrumb} ${extrasStr}`\n return data\n }),\n )\n }),\n )\n }\n\n private _observeExtrasPropRefs(\n propRefs: ExtrasPropRef[],\n ): Observable<string> {\n return combineLatest(propRefs.map((pf) => pf.value)).pipe(\n map((values) => values.map((v) => `(${v})`).join(' ')),\n )\n }\n\n private _getBreadcrumbExtrasDataProps(data: BreadcrumbData): ExtrasPropRef[] {\n if (!hasProperty(data, 'breadcrumbExtras')) {\n return []\n }\n\n if (!hasProperty(data.breadcrumbExtras, 'dataProps')) {\n return []\n }\n\n const propRefs = data.breadcrumbExtras.dataProps.map((prop) => {\n return { prop, value: this._getDataProp(data.activatedRoute, prop) }\n })\n\n return this._filterExtrasPropRefs(propRefs)\n }\n\n private _filterExtrasPropRefs(propRefs: ExtrasPropRef[]): ExtrasPropRef[] {\n const seen: { [key: string]: boolean } = {}\n return propRefs.filter((propRef) => {\n if (seen[propRef.prop]) {\n return false\n }\n seen[propRef.prop] = true\n return true\n })\n }\n\n private _getDataProp(\n activatedRoute: ActivatedRoute,\n prop: string,\n ): Observable<string> {\n if (activatedRoute.routeConfig !== null) {\n if (willHaveDataProp(activatedRoute, prop)) {\n return activatedRoute.data.pipe(map((d) => d[prop]))\n }\n }\n\n let r = activatedRoute.parent\n while (r !== null) {\n if (willHaveDataProp(r, prop)) {\n return r.data.pipe(map((d) => d[prop]))\n }\n\n r = r.parent\n }\n\n throw Error(`DataProp '${prop}' not found.`)\n }\n\n private _breadcrumbsFromData(datas: BreadcrumbData[]): TheSeamBreadcrumb[] {\n const breadcrumbs: TheSeamBreadcrumb[] = []\n\n for (const data of datas) {\n if (hasProperty(data, 'breadcrumb')) {\n const breadcrumb: TheSeamBreadcrumb = {\n value: data.breadcrumb,\n path: routeSnapshotPathFull(data.activatedRoute.snapshot),\n route: data.activatedRoute,\n }\n breadcrumbs.push(breadcrumb)\n }\n }\n\n return breadcrumbs\n }\n}\n","import { AsyncPipe, NgClass, NgFor, NgIf } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { TheSeamBreadcrumbsService } from '../breadcrumbs.service'\n\n@Component({\n selector: 'seam-breadcrumbs',\n templateUrl: './breadcrumbs.component.html',\n styleUrls: ['./breadcrumbs.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterModule, NgFor, AsyncPipe, NgClass, NgIf],\n})\nexport class TheSeamBreadcrumbsComponent {\n private readonly _breadcrumbs = inject(TheSeamBreadcrumbsService)\n public readonly crumbs$ = this._breadcrumbs.crumbs$\n}\n","<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb mb-0\">\n <li\n *ngFor=\"let crumb of crumbs$ | async; last as isLast\"\n class=\"breadcrumb-item\"\n [ngClass]=\"{ active: isLast }\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\"\n >\n <a *ngIf=\"!isLast; else notLink\" [routerLink]=\"crumb.path\">{{\n crumb.value\n }}</a>\n <ng-template #notLink>{{ crumb.value }}</ng-template>\n </li>\n </ol>\n</nav>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -12,9 +12,9 @@ import { NG_VALUE_ACCESSOR } from '@angular/forms';
12
12
  import { CommonModule } from '@angular/common';
13
13
 
14
14
  const THEME_NAMES$1 = [...ThemeNames, ...OutlineThemeNames];
15
- const THEME_CLASSES$1 = THEME_NAMES$1.map(t => `btn-${t}`);
15
+ const THEME_CLASSES$1 = THEME_NAMES$1.map((t) => `btn-${t}`);
16
16
  function getButtonThemeClass(classListString) {
17
- return (classListString?.split(' ') || []).find(c => THEME_CLASSES$1.includes(c));
17
+ return (classListString?.split(' ') || []).find((c) => THEME_CLASSES$1.includes(c));
18
18
  }
19
19
  function createBaseButtonComponentHarnessPredicate(componentHarness, options = {}) {
20
20
  return new HarnessPredicate(componentHarness, options)
@@ -40,7 +40,9 @@ class TheSeamBaseButtonComponentHarness extends ContentContainerComponentHarness
40
40
  }
41
41
  /** Gets the theme of the button item. */
42
42
  async getTheme() {
43
- return (await this.host()).getAttribute('class').then(c => getButtonThemeClass(c)?.replace('btn-', '') || null);
43
+ return (await this.host())
44
+ .getAttribute('class')
45
+ .then((c) => getButtonThemeClass(c)?.replace('btn-', '') || null);
44
46
  }
45
47
  async click() {
46
48
  return (await this.host()).click();
@@ -48,9 +50,9 @@ class TheSeamBaseButtonComponentHarness extends ContentContainerComponentHarness
48
50
  }
49
51
 
50
52
  const THEME_NAMES = [...ThemeNames, ...OutlineThemeNames];
51
- const THEME_CLASSES = THEME_NAMES.map(t => `badge-${t}`);
53
+ const THEME_CLASSES = THEME_NAMES.map((t) => `badge-${t}`);
52
54
  function getbadgeThemeClass(classListString) {
53
- return (classListString?.split(' ') || []).find(c => THEME_CLASSES.includes(c));
55
+ return (classListString?.split(' ') || []).find((c) => THEME_CLASSES.includes(c));
54
56
  }
55
57
  function createBaseBadgeButtonComponentHarnessPredicate(componentHarness, options = {}) {
56
58
  return createBaseButtonComponentHarnessPredicate(componentHarness, options);
@@ -67,7 +69,9 @@ class TheSeamBaseBadgeButtonComponentHarness extends TheSeamBaseButtonComponentH
67
69
  }
68
70
  /** Gets the theme of the badge. */
69
71
  async getBadgeTheme() {
70
- return (await this._badgeElement()).getAttribute('class').then(c => getbadgeThemeClass(c)?.replace('badge-', '') || null);
72
+ return (await this._badgeElement())
73
+ .getAttribute('class')
74
+ .then((c) => getbadgeThemeClass(c)?.replace('badge-', '') || null);
71
75
  }
72
76
  }
73
77
 
@@ -152,8 +156,9 @@ class TheSeamToggleButtonComponentHarness extends TheSeamBaseButtonComponentHarn
152
156
  }
153
157
  /** Gets the theme of the button item. */
154
158
  async isActive() {
155
- return (await this.host()).getAttribute('class')
156
- .then(c => (c?.split(' ').indexOf('active') !== -1) || false);
159
+ return (await this.host())
160
+ .getAttribute('class')
161
+ .then((c) => c?.split(' ').indexOf('active') !== -1 || false);
157
162
  }
158
163
  }
159
164
 
@@ -177,31 +182,40 @@ class TheSeamButtonBase {
177
182
  _getHostElement() {
178
183
  return this._elementRef.nativeElement;
179
184
  }
180
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamButtonBase, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
181
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamButtonBase, isStandalone: false, selector: "ng-component", ngImport: i0, template: '', isInline: true });
185
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamButtonBase, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
186
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamButtonBase, isStandalone: false, selector: "ng-component", ngImport: i0, template: '', isInline: true });
182
187
  }
183
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamButtonBase, decorators: [{
188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamButtonBase, decorators: [{
184
189
  type: Component,
185
190
  args: [{
186
191
  template: '',
187
- standalone: false
192
+ standalone: false,
188
193
  }]
189
194
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FocusMonitor }, { type: i0.Renderer2 }] });
190
195
  const _TheSeamButtonMixinBase = mixinSize(mixinTheme(mixinDisabled(TheSeamButtonBase), 'btn'), 'btn');
191
196
  class TheSeamButtonComponent extends _TheSeamButtonMixinBase {
197
+ _elementRef;
198
+ _focusMonitor;
199
+ _renderer;
192
200
  /** ARIA type for the button. */
193
201
  type = 'button';
194
- // eslint-disable-next-line @typescript-eslint/no-useless-constructor
195
- constructor(_elementRef, _focusMonitor, _renderer) { super(_elementRef, _focusMonitor, _renderer); }
196
- ngOnDestroy() { super.ngOnDestroy(); }
197
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamButtonComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
198
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamButtonComponent, isStandalone: false, selector: "button[seamButton]", inputs: { disabled: "disabled", theme: "theme", size: "size", type: "type" }, host: { properties: { "attr.type": "type", "attr.aria-disabled": "disabled.toString()", "attr.disabled": "disabled || null" }, classAttribute: "btn" }, exportAs: ["seamButton"], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
202
+ constructor(_elementRef, _focusMonitor, _renderer) {
203
+ super(_elementRef, _focusMonitor, _renderer);
204
+ this._elementRef = _elementRef;
205
+ this._focusMonitor = _focusMonitor;
206
+ this._renderer = _renderer;
207
+ }
208
+ ngOnDestroy() {
209
+ super.ngOnDestroy();
210
+ }
211
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamButtonComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
212
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamButtonComponent, isStandalone: false, selector: "button[seamButton]", inputs: { disabled: "disabled", theme: "theme", size: "size", type: "type" }, host: { properties: { "attr.type": "type", "attr.aria-disabled": "disabled.toString()", "attr.disabled": "disabled || null" }, classAttribute: "btn" }, exportAs: ["seamButton"], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
199
213
  }
200
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamButtonComponent, decorators: [{
214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamButtonComponent, decorators: [{
201
215
  type: Component,
202
216
  args: [{ selector: 'button[seamButton]', exportAs: 'seamButton', inputs: ['disabled', 'theme', 'size'], host: {
203
217
  '[attr.type]': 'type',
204
- 'class': 'btn',
218
+ class: 'btn',
205
219
  '[attr.aria-disabled]': 'disabled.toString()',
206
220
  '[attr.disabled]': 'disabled || null',
207
221
  }, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-content></ng-content>\n" }]
@@ -209,6 +223,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
209
223
  type: Input
210
224
  }] } });
211
225
  class TheSeamAnchorButtonComponent extends _TheSeamButtonMixinBase {
226
+ _elementRef;
227
+ _focusMonitor;
228
+ _renderer;
212
229
  /** Tabindex of the button. */
213
230
  tabIndex;
214
231
  // TODO: Consider adding dev warning for `window.opener` exploit. Could maybe
@@ -217,9 +234,15 @@ class TheSeamAnchorButtonComponent extends _TheSeamButtonMixinBase {
217
234
  // usage, so I am just adding this as a reminder to think about it.
218
235
  //
219
236
  // rel="noopener noreferrer"
220
- // eslint-disable-next-line @typescript-eslint/no-useless-constructor
221
- constructor(_elementRef, _focusMonitor, _renderer) { super(_elementRef, _focusMonitor, _renderer); }
222
- ngOnDestroy() { super.ngOnDestroy(); }
237
+ constructor(_elementRef, _focusMonitor, _renderer) {
238
+ super(_elementRef, _focusMonitor, _renderer);
239
+ this._elementRef = _elementRef;
240
+ this._focusMonitor = _focusMonitor;
241
+ this._renderer = _renderer;
242
+ }
243
+ ngOnDestroy() {
244
+ super.ngOnDestroy();
245
+ }
223
246
  _haltDisabledEvents(event) {
224
247
  // A disabled button shouldn't apply any actions
225
248
  if (this.disabled) {
@@ -227,13 +250,13 @@ class TheSeamAnchorButtonComponent extends _TheSeamButtonMixinBase {
227
250
  event.stopImmediatePropagation();
228
251
  }
229
252
  }
230
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamAnchorButtonComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
231
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamAnchorButtonComponent, isStandalone: false, selector: "a[seamButton]", inputs: { disabled: "disabled", theme: "theme", size: "size", tabIndex: "tabIndex" }, host: { listeners: { "click": "_haltDisabledEvents($event)" }, properties: { "attr.tabindex": "disabled ? -1 : (tabIndex || 0)", "attr.disabled": "disabled || null", "attr.aria-disabled": "disabled.toString()" }, classAttribute: "btn" }, exportAs: ["seamButton", "seamButtonBaseAnchor"], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
253
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamAnchorButtonComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
254
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamAnchorButtonComponent, isStandalone: false, selector: "a[seamButton]", inputs: { disabled: "disabled", theme: "theme", size: "size", tabIndex: "tabIndex" }, host: { listeners: { "click": "_haltDisabledEvents($event)" }, properties: { "attr.tabindex": "disabled ? -1 : (tabIndex || 0)", "attr.disabled": "disabled || null", "attr.aria-disabled": "disabled.toString()" }, classAttribute: "btn" }, exportAs: ["seamButton", "seamButtonBaseAnchor"], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
232
255
  }
233
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamAnchorButtonComponent, decorators: [{
256
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamAnchorButtonComponent, decorators: [{
234
257
  type: Component,
235
258
  args: [{ selector: 'a[seamButton]', exportAs: 'seamButton,seamButtonBaseAnchor', inputs: ['disabled', 'theme', 'size'], host: {
236
- 'class': 'btn',
259
+ class: 'btn',
237
260
  // '[class.disabled]': 'disabled || null',
238
261
  '[attr.tabindex]': 'disabled ? -1 : (tabIndex || 0)',
239
262
  '[attr.disabled]': 'disabled || null',
@@ -245,22 +268,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
245
268
  }] } });
246
269
 
247
270
  class TheSeamBadgeButtonComponent extends TheSeamButtonComponent {
271
+ _elementRef;
272
+ _focusMonitor;
273
+ _renderer;
248
274
  _textNoWrap = true;
249
275
  badgeTheme = 'light';
250
276
  badgeText = '';
251
- // eslint-disable-next-line @typescript-eslint/no-useless-constructor
252
- constructor(_elementRef, _focusMonitor, _renderer) { super(_elementRef, _focusMonitor, _renderer); }
253
- ngOnDestroy() { super.ngOnDestroy(); }
254
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamBadgeButtonComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
255
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamBadgeButtonComponent, isStandalone: false, selector: "button[seamBadgeButton]", inputs: { disabled: "disabled", theme: "theme", size: "size", badgeTheme: "badgeTheme", badgeText: "badgeText" }, host: { properties: { "attr.type": "type", "attr.aria-disabled": "disabled.toString()", "attr.disabled": "disabled || null", "class.text-nowrap": "this._textNoWrap" }, classAttribute: "btn" }, exportAs: ["seamBadgeButton"], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n<span class=\"ml-2 badge badge-{{ badgeTheme }}\">{{ badgeText }}</span>\n", styles: [""] });
277
+ constructor(_elementRef, _focusMonitor, _renderer) {
278
+ super(_elementRef, _focusMonitor, _renderer);
279
+ this._elementRef = _elementRef;
280
+ this._focusMonitor = _focusMonitor;
281
+ this._renderer = _renderer;
282
+ }
283
+ ngOnDestroy() {
284
+ super.ngOnDestroy();
285
+ }
286
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamBadgeButtonComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
287
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamBadgeButtonComponent, isStandalone: false, selector: "button[seamBadgeButton]", inputs: { disabled: "disabled", theme: "theme", size: "size", badgeTheme: "badgeTheme", badgeText: "badgeText" }, host: { properties: { "attr.type": "type", "attr.aria-disabled": "disabled.toString()", "attr.disabled": "disabled || null", "class.text-nowrap": "this._textNoWrap" }, classAttribute: "btn" }, exportAs: ["seamBadgeButton"], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n<span class=\"ml-2 badge badge-{{ badgeTheme }}\">{{ badgeText }}</span>\n", styles: [""] });
256
288
  }
257
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamBadgeButtonComponent, decorators: [{
289
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamBadgeButtonComponent, decorators: [{
258
290
  type: Component,
259
291
  args: [{ selector: 'button[seamBadgeButton]', exportAs: 'seamBadgeButton', inputs: ['disabled', 'theme', 'size'], host: {
260
292
  '[attr.type]': 'type',
261
- 'class': 'btn',
293
+ class: 'btn',
262
294
  '[attr.aria-disabled]': 'disabled.toString()',
263
- '[attr.disabled]': 'disabled || null'
295
+ '[attr.disabled]': 'disabled || null',
264
296
  }, standalone: false, template: "<ng-content></ng-content>\n<span class=\"ml-2 badge badge-{{ badgeTheme }}\">{{ badgeText }}</span>\n" }]
265
297
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FocusMonitor }, { type: i0.Renderer2 }], propDecorators: { _textNoWrap: [{
266
298
  type: HostBinding,
@@ -271,19 +303,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
271
303
  type: Input
272
304
  }] } });
273
305
  class TheSeamAnchorBadgeButtonComponent extends TheSeamAnchorButtonComponent {
306
+ _elementRef;
307
+ _focusMonitor;
308
+ _renderer;
274
309
  _textNoWrap = true;
275
310
  badgeTheme = 'light';
276
311
  badgeText = '';
277
- // eslint-disable-next-line @typescript-eslint/no-useless-constructor
278
- constructor(_elementRef, _focusMonitor, _renderer) { super(_elementRef, _focusMonitor, _renderer); }
279
- ngOnDestroy() { super.ngOnDestroy(); }
280
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamAnchorBadgeButtonComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
281
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamAnchorBadgeButtonComponent, isStandalone: false, selector: "a[seamBadgeButton]", inputs: { disabled: "disabled", theme: "theme", size: "size", badgeTheme: "badgeTheme", badgeText: "badgeText" }, host: { listeners: { "click": "_haltDisabledEvents($event)" }, properties: { "attr.tabindex": "disabled ? -1 : (tabIndex || 0)", "attr.disabled": "disabled || null", "attr.aria-disabled": "disabled.toString()", "class.text-nowrap": "this._textNoWrap" }, classAttribute: "btn" }, exportAs: ["seamBadgeButton", "seamBadgeButtonAnchor"], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n<span class=\"ml-2 badge badge-{{ badgeTheme }}\">{{ badgeText }}</span>\n", styles: [""] });
312
+ constructor(_elementRef, _focusMonitor, _renderer) {
313
+ super(_elementRef, _focusMonitor, _renderer);
314
+ this._elementRef = _elementRef;
315
+ this._focusMonitor = _focusMonitor;
316
+ this._renderer = _renderer;
317
+ }
318
+ ngOnDestroy() {
319
+ super.ngOnDestroy();
320
+ }
321
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamAnchorBadgeButtonComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
322
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamAnchorBadgeButtonComponent, isStandalone: false, selector: "a[seamBadgeButton]", inputs: { disabled: "disabled", theme: "theme", size: "size", badgeTheme: "badgeTheme", badgeText: "badgeText" }, host: { listeners: { "click": "_haltDisabledEvents($event)" }, properties: { "attr.tabindex": "disabled ? -1 : (tabIndex || 0)", "attr.disabled": "disabled || null", "attr.aria-disabled": "disabled.toString()", "class.text-nowrap": "this._textNoWrap" }, classAttribute: "btn" }, exportAs: ["seamBadgeButton", "seamBadgeButtonAnchor"], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n<span class=\"ml-2 badge badge-{{ badgeTheme }}\">{{ badgeText }}</span>\n", styles: [""] });
282
323
  }
283
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamAnchorBadgeButtonComponent, decorators: [{
324
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamAnchorBadgeButtonComponent, decorators: [{
284
325
  type: Component,
285
326
  args: [{ selector: 'a[seamBadgeButton]', exportAs: 'seamBadgeButton,seamBadgeButtonAnchor', inputs: ['disabled', 'theme', 'size'], host: {
286
- 'class': 'btn',
327
+ class: 'btn',
287
328
  '[attr.tabindex]': 'disabled ? -1 : (tabIndex || 0)',
288
329
  '[attr.disabled]': 'disabled || null',
289
330
  '[attr.aria-disabled]': 'disabled.toString()',
@@ -316,9 +357,11 @@ class TheSeamProgressCircleButtonComponent extends TheSeamButtonComponent {
316
357
  this._focusMonitor = _focusMonitor;
317
358
  this._renderer = _renderer;
318
359
  }
319
- ngOnDestroy() { super.ngOnDestroy(); }
320
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamProgressCircleButtonComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
321
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamProgressCircleButtonComponent, isStandalone: false, selector: "button[seamProgressCircleButton]", inputs: { disabled: "disabled", theme: "theme", size: "size", fillBackground: "fillBackground", showText: "showText", hiddenOnEmpty: "hiddenOnEmpty", percentage: "percentage" }, host: { properties: { "attr.type": "type", "attr.aria-disabled": "disabled.toString()", "attr.disabled": "disabled || null" }, classAttribute: "btn" }, exportAs: ["seamProgressCircleButton"], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n<seam-progress-circle\n class=\"progress-circle-btn--icon\"\n [fillBackground]=\"fillBackground\"\n [showText]=\"showText\"\n [hiddenOnEmpty]=\"hiddenOnEmpty\"\n [percentage]=\"percentage\">\n</seam-progress-circle>\n", styles: [":host{padding-right:45px;position:relative}:host.btn-sm{padding-right:40px}:host.btn-sm ::ng-deep .seam-progress-circle{padding:8px}:host.btn-lg{padding-right:50px}:host.btn-lg ::ng-deep .seam-progress-circle{padding:0}:host seam-progress-circle.progress-circle-btn--icon{top:0;right:0;height:100%;width:45px;position:absolute}\n"], dependencies: [{ kind: "component", type: i2.ProgressCircleComponent, selector: "seam-progress-circle", inputs: ["fillBackground", "showText", "hiddenOnEmpty", "pending", "percentage"] }] });
360
+ ngOnDestroy() {
361
+ super.ngOnDestroy();
362
+ }
363
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamProgressCircleButtonComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
364
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamProgressCircleButtonComponent, isStandalone: false, selector: "button[seamProgressCircleButton]", inputs: { disabled: "disabled", theme: "theme", size: "size", fillBackground: "fillBackground", showText: "showText", hiddenOnEmpty: "hiddenOnEmpty", percentage: "percentage" }, host: { properties: { "attr.type": "type", "attr.aria-disabled": "disabled.toString()", "attr.disabled": "disabled || null" }, classAttribute: "btn" }, exportAs: ["seamProgressCircleButton"], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n<seam-progress-circle\n class=\"progress-circle-btn--icon\"\n [fillBackground]=\"fillBackground\"\n [showText]=\"showText\"\n [hiddenOnEmpty]=\"hiddenOnEmpty\"\n [percentage]=\"percentage\"\n>\n</seam-progress-circle>\n", styles: [":host{padding-right:45px;position:relative}:host.btn-sm{padding-right:40px}:host.btn-sm ::ng-deep .seam-progress-circle{padding:8px}:host.btn-lg{padding-right:50px}:host.btn-lg ::ng-deep .seam-progress-circle{padding:0}:host seam-progress-circle.progress-circle-btn--icon{top:0;right:0;height:100%;width:45px;position:absolute}\n"], dependencies: [{ kind: "component", type: i2.ProgressCircleComponent, selector: "seam-progress-circle", inputs: ["fillBackground", "showText", "hiddenOnEmpty", "pending", "percentage"] }] });
322
365
  }
323
366
  __decorate([
324
367
  InputBoolean()
@@ -332,14 +375,14 @@ __decorate([
332
375
  __decorate([
333
376
  InputNumber(0)
334
377
  ], TheSeamProgressCircleButtonComponent.prototype, "percentage", void 0);
335
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamProgressCircleButtonComponent, decorators: [{
378
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamProgressCircleButtonComponent, decorators: [{
336
379
  type: Component,
337
380
  args: [{ selector: 'button[seamProgressCircleButton]', exportAs: 'seamProgressCircleButton', inputs: ['disabled', 'theme', 'size'], host: {
338
381
  '[attr.type]': 'type',
339
- 'class': 'btn',
382
+ class: 'btn',
340
383
  '[attr.aria-disabled]': 'disabled.toString()',
341
- '[attr.disabled]': 'disabled || null'
342
- }, standalone: false, template: "<ng-content></ng-content>\n<seam-progress-circle\n class=\"progress-circle-btn--icon\"\n [fillBackground]=\"fillBackground\"\n [showText]=\"showText\"\n [hiddenOnEmpty]=\"hiddenOnEmpty\"\n [percentage]=\"percentage\">\n</seam-progress-circle>\n", styles: [":host{padding-right:45px;position:relative}:host.btn-sm{padding-right:40px}:host.btn-sm ::ng-deep .seam-progress-circle{padding:8px}:host.btn-lg{padding-right:50px}:host.btn-lg ::ng-deep .seam-progress-circle{padding:0}:host seam-progress-circle.progress-circle-btn--icon{top:0;right:0;height:100%;width:45px;position:absolute}\n"] }]
384
+ '[attr.disabled]': 'disabled || null',
385
+ }, standalone: false, template: "<ng-content></ng-content>\n<seam-progress-circle\n class=\"progress-circle-btn--icon\"\n [fillBackground]=\"fillBackground\"\n [showText]=\"showText\"\n [hiddenOnEmpty]=\"hiddenOnEmpty\"\n [percentage]=\"percentage\"\n>\n</seam-progress-circle>\n", styles: [":host{padding-right:45px;position:relative}:host.btn-sm{padding-right:40px}:host.btn-sm ::ng-deep .seam-progress-circle{padding:8px}:host.btn-lg{padding-right:50px}:host.btn-lg ::ng-deep .seam-progress-circle{padding:0}:host seam-progress-circle.progress-circle-btn--icon{top:0;right:0;height:100%;width:45px;position:absolute}\n"] }]
343
386
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FocusMonitor }, { type: i0.Renderer2 }], propDecorators: { fillBackground: [{
344
387
  type: Input
345
388
  }], showText: [{
@@ -366,14 +409,18 @@ class TheSeamToggleButtonComponent extends TheSeamButtonComponent {
366
409
  change = new EventEmitter();
367
410
  onChange;
368
411
  onTouched;
369
- get _activeCssClass() { return this.value ? coerceBooleanProperty(this.value) : false; }
412
+ get _activeCssClass() {
413
+ return this.value ? coerceBooleanProperty(this.value) : false;
414
+ }
370
415
  constructor(_elementRef, _focusMonitor, _renderer) {
371
416
  super(_elementRef, _focusMonitor, _renderer);
372
417
  this._elementRef = _elementRef;
373
418
  this._focusMonitor = _focusMonitor;
374
419
  this._renderer = _renderer;
375
420
  }
376
- ngOnDestroy() { super.ngOnDestroy(); }
421
+ ngOnDestroy() {
422
+ super.ngOnDestroy();
423
+ }
377
424
  get value() {
378
425
  return this.val;
379
426
  }
@@ -402,17 +449,17 @@ class TheSeamToggleButtonComponent extends TheSeamButtonComponent {
402
449
  _toggleValue() {
403
450
  this.value = !this.value;
404
451
  }
405
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamToggleButtonComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
406
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamToggleButtonComponent, isStandalone: false, selector: "button[seamToggleButton]", inputs: { disabled: "disabled", theme: "theme", size: "size", val: ["value", "val"] }, outputs: { change: "change" }, host: { listeners: { "click": "_toggleValue()" }, properties: { "attr.type": "type", "attr.aria-disabled": "disabled.toString()", "attr.disabled": "disabled || null", "class.active": "this._activeCssClass" }, classAttribute: "btn" }, providers: [TOGGLE_BUTTON_VALUE_ACCESSOR], exportAs: ["seamToggleButton"], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""] });
452
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamToggleButtonComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
453
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamToggleButtonComponent, isStandalone: false, selector: "button[seamToggleButton]", inputs: { disabled: "disabled", theme: "theme", size: "size", val: ["value", "val"] }, outputs: { change: "change" }, host: { listeners: { "click": "_toggleValue()" }, properties: { "attr.type": "type", "attr.aria-disabled": "disabled.toString()", "attr.disabled": "disabled || null", "class.active": "this._activeCssClass" }, classAttribute: "btn" }, providers: [TOGGLE_BUTTON_VALUE_ACCESSOR], exportAs: ["seamToggleButton"], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""] });
407
454
  }
408
455
  __decorate([
409
456
  InputBoolean()
410
457
  ], TheSeamToggleButtonComponent.prototype, "val", void 0);
411
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamToggleButtonComponent, decorators: [{
458
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamToggleButtonComponent, decorators: [{
412
459
  type: Component,
413
460
  args: [{ selector: 'button[seamToggleButton]', exportAs: 'seamToggleButton', inputs: ['disabled', 'theme', 'size'], host: {
414
461
  '[attr.type]': 'type',
415
- 'class': 'btn',
462
+ class: 'btn',
416
463
  '[attr.aria-disabled]': 'disabled.toString()',
417
464
  '[attr.disabled]': 'disabled || null',
418
465
  '(click)': '_toggleValue()',
@@ -428,23 +475,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
428
475
  }] } });
429
476
 
430
477
  class TheSeamButtonsModule {
431
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamButtonsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
432
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: TheSeamButtonsModule, declarations: [TheSeamBadgeButtonComponent,
478
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamButtonsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
479
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.7", ngImport: i0, type: TheSeamButtonsModule, declarations: [TheSeamBadgeButtonComponent,
433
480
  TheSeamProgressCircleButtonComponent,
434
481
  TheSeamToggleButtonComponent,
435
482
  TheSeamButtonComponent,
436
483
  TheSeamAnchorButtonComponent,
437
- TheSeamAnchorBadgeButtonComponent], imports: [CommonModule,
438
- TheSeamProgressModule], exports: [TheSeamBadgeButtonComponent,
484
+ TheSeamAnchorBadgeButtonComponent], imports: [CommonModule, TheSeamProgressModule], exports: [TheSeamBadgeButtonComponent,
439
485
  TheSeamProgressCircleButtonComponent,
440
486
  TheSeamToggleButtonComponent,
441
487
  TheSeamButtonComponent,
442
488
  TheSeamAnchorButtonComponent,
443
489
  TheSeamAnchorBadgeButtonComponent] });
444
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamButtonsModule, imports: [CommonModule,
445
- TheSeamProgressModule] });
490
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamButtonsModule, imports: [CommonModule, TheSeamProgressModule] });
446
491
  }
447
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamButtonsModule, decorators: [{
492
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamButtonsModule, decorators: [{
448
493
  type: NgModule,
449
494
  args: [{
450
495
  declarations: [
@@ -455,10 +500,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
455
500
  TheSeamAnchorButtonComponent,
456
501
  TheSeamAnchorBadgeButtonComponent,
457
502
  ],
458
- imports: [
459
- CommonModule,
460
- TheSeamProgressModule
461
- ],
503
+ imports: [CommonModule, TheSeamProgressModule],
462
504
  exports: [
463
505
  TheSeamBadgeButtonComponent,
464
506
  TheSeamProgressCircleButtonComponent,
@@ -466,7 +508,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
466
508
  TheSeamButtonComponent,
467
509
  TheSeamAnchorButtonComponent,
468
510
  TheSeamAnchorBadgeButtonComponent,
469
- ]
511
+ ],
470
512
  }]
471
513
  }] });
472
514