@zambon-dev/framework 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +80 -5
- package/fesm2022/zambon-dev-framework.mjs +33 -29
- package/fesm2022/zambon-dev-framework.mjs.map +1 -1
- package/lib/components/buttons/button-export/button-export.component.d.ts +8 -1
- package/lib/components/views/default-details-tab-view/default-details-tab-view.component.d.ts +2 -2
- package/lib/components/views/default-tab-view/default-tab-view.component.d.ts +3 -5
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -23,6 +23,76 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
23
23
|
|
|
24
24
|
### ⚠ Breaking Changes / Migration
|
|
25
25
|
|
|
26
|
+
## [1.3.0] - 2026-07-30
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
|
|
30
|
+
- `framework-button-export` now accepts a **`defaultOption` `@Input()`** — the index into `options`
|
|
31
|
+
exported when the main button itself is clicked, defaulting to `0` (Excel). This mirrors the input
|
|
32
|
+
`framework-button-save` already had; `-1` means "no default" and makes the button only toggle its
|
|
33
|
+
dropdown. See **Changed** below for the behaviour this changes by default.
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
|
|
37
|
+
- **`framework-button-export` now exports on a single click**, to Excel by default, instead of only
|
|
38
|
+
opening its format menu. `RibbonButtonComponent` treats a `defaultOption` of -1 as "no default" and
|
|
39
|
+
merely toggles the dropdown; Export never set one, so the common case took two clicks while
|
|
40
|
+
`framework-button-save` (which sets 0) took one. Export now sets 0 as well, through the new
|
|
41
|
+
`defaultOption` `@Input()`. The format menu is unchanged and still reachable from the button's
|
|
42
|
+
dropdown caret, so every format remains available.
|
|
43
|
+
|
|
44
|
+
### Fixed
|
|
45
|
+
|
|
46
|
+
- **Routed list views now fill the available height automatically.** `DefaultTabViewComponent` gave its
|
|
47
|
+
routed child no layout and `lib-data-grid` has no `flex-grow` of its own, so a grid collapsed to its
|
|
48
|
+
`rowsToDisplay × rowHeight` minimum with empty space beneath it, and every consuming list component
|
|
49
|
+
had to repeat the same `:host { flex; flex-grow; overflow: hidden }` + `lib-data-grid { flex-grow }`
|
|
50
|
+
stylesheet to compensate. `TabViewList` now carries a `framework-view-list` host class — inherited by
|
|
51
|
+
every subclass — which `DefaultTabViewComponent` styles, so **consuming apps can delete those
|
|
52
|
+
per-component stylesheets**. Routed screens that do not extend `TabViewList` (forms, dashboards) are
|
|
53
|
+
unaffected.
|
|
54
|
+
|
|
55
|
+
- `framework-default-tab-view` and `framework-default-details-tab-view` no longer log
|
|
56
|
+
`NG0100: ExpressionChangedAfterItHasBeenCheckedError` on every render in development mode.
|
|
57
|
+
Both views assigned a placeholder ribbon template from `ngAfterViewInit` — after Angular had
|
|
58
|
+
already checked the ribbon's `*ngTemplateOutlet` binding — which tripped the dev-mode change
|
|
59
|
+
detection check one to three times per load. The placeholder rendered no content, so it has
|
|
60
|
+
been removed and the outlet is now left empty until a view publishes its own `#ribbon`
|
|
61
|
+
template. The rendered output is unchanged, and ribbon buttons still appear immediately for
|
|
62
|
+
list and detail screens.
|
|
63
|
+
|
|
64
|
+
### ⚠ Breaking Changes / Migration
|
|
65
|
+
|
|
66
|
+
None — nothing has to change for your app to compile against this release. Two behaviour changes to
|
|
67
|
+
check, and one optional cleanup:
|
|
68
|
+
|
|
69
|
+
- **Absolutely-positioned content inside a routed list view is now clipped.** The full-height layout
|
|
70
|
+
applied to `framework-view-list` includes `overflow: hidden`, so a popover, dropdown or tooltip that
|
|
71
|
+
a list screen renders with `position: absolute` inside its own host is now cut off at the host's
|
|
72
|
+
edges. Apps that had already written the equivalent `:host { overflow: hidden }` stylesheet by hand
|
|
73
|
+
are unaffected — the clipping was already in place there. Only list screens that had no such
|
|
74
|
+
stylesheet change. Fix by portaling the content out of the host (CDK Overlay, as `lib-catalog-select`
|
|
75
|
+
does) rather than relying on `position: absolute`.
|
|
76
|
+
- If you relied on `framework-button-export`'s first click opening the format menu rather than
|
|
77
|
+
exporting, set `[defaultOption]="-1"` to restore that behaviour.
|
|
78
|
+
- *Optional cleanup:* components extending `TabViewList` can now delete their
|
|
79
|
+
`:host { display: flex; flex-grow: 1; overflow: hidden }` / `lib-data-grid { flex-grow: 1 }`
|
|
80
|
+
stylesheets — `DefaultTabViewComponent` styles the inherited `framework-view-list` host class.
|
|
81
|
+
|
|
82
|
+
## [1.2.1] - 2026-07-29
|
|
83
|
+
|
|
84
|
+
### Fixed
|
|
85
|
+
|
|
86
|
+
- Lint configuration only: the library's ESLint selector rules now accept the `framework-` prefix
|
|
87
|
+
that every `@framework` component already uses. They previously still expected the Angular
|
|
88
|
+
scaffold's `lib` prefix, so the entire component surface reported
|
|
89
|
+
`@angular-eslint/component-selector` errors. No selector was renamed, and no published API or
|
|
90
|
+
runtime behavior changed — nothing to do on upgrade.
|
|
91
|
+
|
|
92
|
+
### ⚠ Breaking Changes / Migration
|
|
93
|
+
|
|
94
|
+
None.
|
|
95
|
+
|
|
26
96
|
## [1.2.0] - 2026-07-24
|
|
27
97
|
|
|
28
98
|
### Added
|
|
@@ -33,22 +103,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
33
103
|
Existing `new AppConfig(baseUrl)` calls continue to work unchanged (`notificationsEnabled`
|
|
34
104
|
defaults to `false`, other new fields to empty strings).
|
|
35
105
|
|
|
106
|
+
### ⚠ Breaking Changes / Migration
|
|
107
|
+
|
|
108
|
+
None.
|
|
109
|
+
|
|
110
|
+
## [1.1.1] - 2026-06-20
|
|
111
|
+
|
|
36
112
|
### Fixed
|
|
37
113
|
|
|
38
114
|
- `framework-button-export` now forwards its `iconSize` input to the underlying ribbon button,
|
|
39
115
|
so setting `iconSize` correctly resizes the export button's icon. Previously the input was
|
|
40
116
|
ignored and the icon always rendered at the default size.
|
|
41
117
|
|
|
42
|
-
### ⚠ Breaking Changes / Migration
|
|
43
|
-
|
|
44
|
-
None.
|
|
45
|
-
|
|
46
118
|
## [1.1.0] - 2026-06-02
|
|
47
119
|
|
|
48
120
|
- Baseline release: the changelog starts being tracked from this version. Earlier history is
|
|
49
121
|
available via [GitHub Releases](https://github.com/RicardoZambon/ZLibraries/releases) and the
|
|
50
122
|
`framework-v*` tags.
|
|
51
123
|
|
|
52
|
-
[Unreleased]: https://github.com/RicardoZambon/ZLibraries/compare/framework-v1.
|
|
124
|
+
[Unreleased]: https://github.com/RicardoZambon/ZLibraries/compare/framework-v1.3.0...HEAD
|
|
125
|
+
[1.3.0]: https://github.com/RicardoZambon/ZLibraries/releases/tag/framework-v1.3.0
|
|
126
|
+
[1.2.1]: https://github.com/RicardoZambon/ZLibraries/releases/tag/framework-v1.2.1
|
|
53
127
|
[1.2.0]: https://github.com/RicardoZambon/ZLibraries/releases/tag/framework-v1.2.0
|
|
128
|
+
[1.1.1]: https://github.com/RicardoZambon/ZLibraries/releases/tag/framework-v1.1.1
|
|
54
129
|
[1.1.0]: https://github.com/RicardoZambon/ZLibraries/releases/tag/framework-v1.1.0
|
|
@@ -1263,6 +1263,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImpor
|
|
|
1263
1263
|
const MaxExportRows = 50000;
|
|
1264
1264
|
class ButtonExportComponent extends BaseButton {
|
|
1265
1265
|
//#region ViewChilds, Inputs, Outputs
|
|
1266
|
+
/**
|
|
1267
|
+
* Index into `options` exported when the main button is clicked, defaulting to Excel.
|
|
1268
|
+
* `RibbonButtonComponent` treats -1 as "no default" and merely toggles the dropdown, which left
|
|
1269
|
+
* Export needing two clicks for the common case while Save (which sets 0) needed one. Set -1 to
|
|
1270
|
+
* restore the dropdown-only behaviour.
|
|
1271
|
+
*/
|
|
1272
|
+
defaultOption = 0;
|
|
1266
1273
|
fileBaseName = 'export';
|
|
1267
1274
|
//#endregion
|
|
1268
1275
|
//#region Variables
|
|
@@ -1337,15 +1344,17 @@ class ButtonExportComponent extends BaseButton {
|
|
|
1337
1344
|
URL.revokeObjectURL(url);
|
|
1338
1345
|
}
|
|
1339
1346
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: ButtonExportComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1340
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.6", type: ButtonExportComponent, isStandalone: true, selector: "framework-button-export", inputs: { fileBaseName: "fileBaseName" }, providers: [{ provide: RibbonGroupChild, useExisting: forwardRef(() => ButtonExportComponent) }], usesInheritance: true, ngImport: i0, template: "<lib-ribbon-button *ngIf=\"visible\"\nlabel=\"Button-Export\"\nicon=\"fa-file-export\"\n[disabled]=\"isButtonDisabled\"\n[loading]=\"loading\"\n[iconSize]=\"iconSize\"\n[options]=\"options\"\n[tooltip]=\"tooltip\"\n(action)=\"onButtonClicked($event)\">\n</lib-ribbon-button>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: RibbonButtonComponent, selector: "lib-ribbon-button", inputs: ["color", "defaultOption", "disabled", "icon", "iconSize", "label", "loading", "options", "tooltip"], outputs: ["action"] }] });
|
|
1347
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.6", type: ButtonExportComponent, isStandalone: true, selector: "framework-button-export", inputs: { defaultOption: "defaultOption", fileBaseName: "fileBaseName" }, providers: [{ provide: RibbonGroupChild, useExisting: forwardRef(() => ButtonExportComponent) }], usesInheritance: true, ngImport: i0, template: "<lib-ribbon-button *ngIf=\"visible\"\nlabel=\"Button-Export\"\nicon=\"fa-file-export\"\n[defaultOption]=\"defaultOption\"\n[disabled]=\"isButtonDisabled\"\n[loading]=\"loading\"\n[iconSize]=\"iconSize\"\n[options]=\"options\"\n[tooltip]=\"tooltip\"\n(action)=\"onButtonClicked($event)\">\n</lib-ribbon-button>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: RibbonButtonComponent, selector: "lib-ribbon-button", inputs: ["color", "defaultOption", "disabled", "icon", "iconSize", "label", "loading", "options", "tooltip"], outputs: ["action"] }] });
|
|
1341
1348
|
}
|
|
1342
1349
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: ButtonExportComponent, decorators: [{
|
|
1343
1350
|
type: Component,
|
|
1344
1351
|
args: [{ selector: 'framework-button-export', imports: [
|
|
1345
1352
|
NgIf,
|
|
1346
1353
|
RibbonButtonComponent,
|
|
1347
|
-
], providers: [{ provide: RibbonGroupChild, useExisting: forwardRef(() => ButtonExportComponent) }], template: "<lib-ribbon-button *ngIf=\"visible\"\nlabel=\"Button-Export\"\nicon=\"fa-file-export\"\n[disabled]=\"isButtonDisabled\"\n[loading]=\"loading\"\n[iconSize]=\"iconSize\"\n[options]=\"options\"\n[tooltip]=\"tooltip\"\n(action)=\"onButtonClicked($event)\">\n</lib-ribbon-button>\n" }]
|
|
1348
|
-
}], ctorParameters: () => [], propDecorators: {
|
|
1354
|
+
], providers: [{ provide: RibbonGroupChild, useExisting: forwardRef(() => ButtonExportComponent) }], template: "<lib-ribbon-button *ngIf=\"visible\"\nlabel=\"Button-Export\"\nicon=\"fa-file-export\"\n[defaultOption]=\"defaultOption\"\n[disabled]=\"isButtonDisabled\"\n[loading]=\"loading\"\n[iconSize]=\"iconSize\"\n[options]=\"options\"\n[tooltip]=\"tooltip\"\n(action)=\"onButtonClicked($event)\">\n</lib-ribbon-button>\n" }]
|
|
1355
|
+
}], ctorParameters: () => [], propDecorators: { defaultOption: [{
|
|
1356
|
+
type: Input
|
|
1357
|
+
}], fileBaseName: [{
|
|
1349
1358
|
type: Input
|
|
1350
1359
|
}] } });
|
|
1351
1360
|
|
|
@@ -2541,6 +2550,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImpor
|
|
|
2541
2550
|
args: [{ template: '' }]
|
|
2542
2551
|
}], ctorParameters: () => [{ type: i1$2.DataGridDataset }, { type: i2.ActivatedRoute }, { type: TabService }] });
|
|
2543
2552
|
|
|
2553
|
+
// The host class is inherited by every subclass (Angular merges hostAttrs from a base component
|
|
2554
|
+
// definition), which is what lets DefaultTabViewComponent give routed list screens a full-height
|
|
2555
|
+
// layout without each one declaring its own stylesheet. Plain class name, NOT Tailwind utilities:
|
|
2556
|
+
// library SCSS resolves @apply at library-build time, whereas a utility class named here would
|
|
2557
|
+
// have to be generated by each consumer's own Tailwind build.
|
|
2544
2558
|
class TabViewList extends TabViewBase {
|
|
2545
2559
|
//#region ViewChilds, Inputs, Outputs
|
|
2546
2560
|
//#endregion
|
|
@@ -2593,11 +2607,11 @@ class TabViewList extends TabViewBase {
|
|
|
2593
2607
|
}
|
|
2594
2608
|
}
|
|
2595
2609
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: TabViewList, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2596
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.6", type: TabViewList, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
2610
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.6", type: TabViewList, isStandalone: true, selector: "ng-component", host: { classAttribute: "framework-view-list" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
2597
2611
|
}
|
|
2598
2612
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: TabViewList, decorators: [{
|
|
2599
2613
|
type: Component,
|
|
2600
|
-
args: [{ template: '' }]
|
|
2614
|
+
args: [{ host: { class: 'framework-view-list' }, template: '' }]
|
|
2601
2615
|
}], ctorParameters: () => [] });
|
|
2602
2616
|
|
|
2603
2617
|
class ListView extends TabViewList {
|
|
@@ -3206,7 +3220,6 @@ class DefaultTabViewComponent {
|
|
|
3206
3220
|
changeDetectorRef;
|
|
3207
3221
|
tabViewService;
|
|
3208
3222
|
//#region ViewChilds, Inputs, Outputs
|
|
3209
|
-
emptyRibbonTemplate;
|
|
3210
3223
|
//#endregion
|
|
3211
3224
|
//#region Variables
|
|
3212
3225
|
destroy$ = new Subject();
|
|
@@ -3220,12 +3233,6 @@ class DefaultTabViewComponent {
|
|
|
3220
3233
|
this.changeDetectorRef = changeDetectorRef;
|
|
3221
3234
|
this.tabViewService = tabViewService;
|
|
3222
3235
|
}
|
|
3223
|
-
ngAfterViewInit() {
|
|
3224
|
-
if (!this.ribbonTemplate) {
|
|
3225
|
-
// If there are no template assigned to the ribbon, we use the empty template.
|
|
3226
|
-
this.updateRibbonTemplate();
|
|
3227
|
-
}
|
|
3228
|
-
}
|
|
3229
3236
|
ngOnDestroy() {
|
|
3230
3237
|
this.destroy$.next(true);
|
|
3231
3238
|
this.destroy$.complete();
|
|
@@ -3249,26 +3256,26 @@ class DefaultTabViewComponent {
|
|
|
3249
3256
|
//#region Public methods
|
|
3250
3257
|
//#endregion
|
|
3251
3258
|
//#region Private methods
|
|
3252
|
-
updateRibbonTemplate(template
|
|
3253
|
-
const isRealTemplate = !!template;
|
|
3254
|
-
if (!template) {
|
|
3255
|
-
template = this.emptyRibbonTemplate;
|
|
3256
|
-
}
|
|
3259
|
+
updateRibbonTemplate(template) {
|
|
3257
3260
|
this.ribbonTemplate = template;
|
|
3258
|
-
if (
|
|
3261
|
+
if (template) {
|
|
3259
3262
|
// Real template from a child view — render immediately so buttons appear
|
|
3260
3263
|
// without waiting for the next change detection cycle (user interaction).
|
|
3261
3264
|
this.changeDetectorRef.detectChanges();
|
|
3262
3265
|
}
|
|
3263
3266
|
else {
|
|
3264
|
-
//
|
|
3265
|
-
// an
|
|
3266
|
-
//
|
|
3267
|
+
// No template for this view — defer clearing the ribbon to avoid tearing down
|
|
3268
|
+
// an already rendered one for a frame while switching views (the incoming view
|
|
3269
|
+
// pushes its real template moments later in the same initialization cycle).
|
|
3270
|
+
//
|
|
3271
|
+
// Never assign the ribbon template from a lifecycle hook that runs after the first
|
|
3272
|
+
// change detection pass (e.g. ngAfterViewInit): the outlet below has already been
|
|
3273
|
+
// checked by then, so mutating it there trips NG0100 in dev mode.
|
|
3267
3274
|
this.changeDetectorRef.markForCheck();
|
|
3268
3275
|
}
|
|
3269
3276
|
}
|
|
3270
3277
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: DefaultTabViewComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: TabViewService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3271
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.6", type: DefaultTabViewComponent, isStandalone: true, selector: "framework-default-tab-view", providers: [{ provide: TabViewService }],
|
|
3278
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.6", type: DefaultTabViewComponent, isStandalone: true, selector: "framework-default-tab-view", providers: [{ provide: TabViewService }], ngImport: i0, template: "<lib-ribbon>\n <ng-container *ngTemplateOutlet=\"ribbonTemplate ?? null\"></ng-container>\n</lib-ribbon>\n\n<router-outlet>\n</router-outlet>\n", styles: ["@charset \"UTF-8\";:host-context{display:flex;flex-grow:1;flex-direction:column;gap:.5rem;overflow:hidden}:host ::ng-deep .framework-view-list{display:flex;flex-grow:1;flex-direction:column;overflow:hidden;min-height:0}:host ::ng-deep .framework-view-list lib-data-grid{flex-grow:1}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: RibbonComponent, selector: "lib-ribbon" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
|
|
3272
3279
|
}
|
|
3273
3280
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: DefaultTabViewComponent, decorators: [{
|
|
3274
3281
|
type: Component,
|
|
@@ -3276,11 +3283,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImpor
|
|
|
3276
3283
|
NgTemplateOutlet,
|
|
3277
3284
|
RibbonComponent,
|
|
3278
3285
|
RouterModule,
|
|
3279
|
-
], providers: [{ provide: TabViewService }], template: "<lib-ribbon>\n <ng-container *ngTemplateOutlet=\"ribbonTemplate\"></ng-container>\n
|
|
3280
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: TabViewService }]
|
|
3281
|
-
type: ViewChild,
|
|
3282
|
-
args: ['emptyRibbon']
|
|
3283
|
-
}] } });
|
|
3286
|
+
], providers: [{ provide: TabViewService }], template: "<lib-ribbon>\n <ng-container *ngTemplateOutlet=\"ribbonTemplate ?? null\"></ng-container>\n</lib-ribbon>\n\n<router-outlet>\n</router-outlet>\n", styles: ["@charset \"UTF-8\";:host-context{display:flex;flex-grow:1;flex-direction:column;gap:.5rem;overflow:hidden}:host ::ng-deep .framework-view-list{display:flex;flex-grow:1;flex-direction:column;overflow:hidden;min-height:0}:host ::ng-deep .framework-view-list lib-data-grid{flex-grow:1}\n"] }]
|
|
3287
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: TabViewService }] });
|
|
3284
3288
|
|
|
3285
3289
|
function dataProviderFactory(route) {
|
|
3286
3290
|
return route.snapshot.data['dataProvider']();
|
|
@@ -3372,7 +3376,7 @@ class DefaultDetailsTabViewComponent extends DefaultTabViewComponent {
|
|
|
3372
3376
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.6", type: DefaultDetailsTabViewComponent, isStandalone: true, selector: "framework-default-details-tab-view", providers: [
|
|
3373
3377
|
{ provide: TabViewService },
|
|
3374
3378
|
{ provide: DataProviderService, useFactory: dataProviderFactory, deps: [ActivatedRoute] },
|
|
3375
|
-
], viewQueries: [{ propertyName: "errorModal", first: true, predicate: ErrorModalComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<lib-ribbon>\n <ng-container *ngTemplateOutlet=\"ribbonTemplate\"></ng-container>\n\n <
|
|
3379
|
+
], viewQueries: [{ propertyName: "errorModal", first: true, predicate: ErrorModalComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<lib-ribbon>\n <ng-container *ngTemplateOutlet=\"ribbonTemplate ?? null\"></ng-container>\n\n <div right>\n <lib-ribbon-group [label]=\"'RibbonGroup-Page' | translate\">\n <framework-button-views [detailsViewRoute]=\"detailsViewRoute\">\n </framework-button-views>\n </lib-ribbon-group>\n </div>\n</lib-ribbon>\n\n<lib-group-container\n[icon]=\"containerIcon\"\n[title]=\"containerTitle\">\n <router-outlet>\n </router-outlet>\n</lib-group-container>\n\n<framework-error-modal (closed)=\"onErrorModalClosed()\"></framework-error-modal>", styles: [":host-context{display:flex;flex-grow:1;flex-direction:column;gap:.5rem;overflow:hidden}router-outlet{display:none}\n"], dependencies: [{ kind: "component", type: ButtonViewsComponent, selector: "framework-button-views", inputs: ["detailsViewRoute"] }, { kind: "component", type: ErrorModalComponent, selector: "framework-error-modal", inputs: ["errorMessage", "size", "subtitle", "title"], outputs: ["closed"] }, { kind: "component", type: GroupContainerComponent, selector: "lib-group-container", inputs: ["title", "icon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: RibbonComponent, selector: "lib-ribbon" }, { kind: "component", type: RibbonGroupComponent, selector: "lib-ribbon-group", inputs: ["label"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
3376
3380
|
}
|
|
3377
3381
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: DefaultDetailsTabViewComponent, decorators: [{
|
|
3378
3382
|
type: Component,
|
|
@@ -3388,7 +3392,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImpor
|
|
|
3388
3392
|
], providers: [
|
|
3389
3393
|
{ provide: TabViewService },
|
|
3390
3394
|
{ provide: DataProviderService, useFactory: dataProviderFactory, deps: [ActivatedRoute] },
|
|
3391
|
-
], template: "<lib-ribbon>\n <ng-container *ngTemplateOutlet=\"ribbonTemplate\"></ng-container>\n\n <
|
|
3395
|
+
], template: "<lib-ribbon>\n <ng-container *ngTemplateOutlet=\"ribbonTemplate ?? null\"></ng-container>\n\n <div right>\n <lib-ribbon-group [label]=\"'RibbonGroup-Page' | translate\">\n <framework-button-views [detailsViewRoute]=\"detailsViewRoute\">\n </framework-button-views>\n </lib-ribbon-group>\n </div>\n</lib-ribbon>\n\n<lib-group-container\n[icon]=\"containerIcon\"\n[title]=\"containerTitle\">\n <router-outlet>\n </router-outlet>\n</lib-group-container>\n\n<framework-error-modal (closed)=\"onErrorModalClosed()\"></framework-error-modal>", styles: [":host-context{display:flex;flex-grow:1;flex-direction:column;gap:.5rem;overflow:hidden}router-outlet{display:none}\n"] }]
|
|
3392
3396
|
}], ctorParameters: () => [], propDecorators: { errorModal: [{
|
|
3393
3397
|
type: ViewChild,
|
|
3394
3398
|
args: [ErrorModalComponent]
|