@yuuvis/app-shell-admin 2.1.27 → 2.1.30
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.
|
@@ -46,10 +46,10 @@ class AppsService {
|
|
|
46
46
|
getRoles() {
|
|
47
47
|
return this.#backend.get(`/tenant-management/api/admin/roles`, '');
|
|
48
48
|
}
|
|
49
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
50
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
49
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
50
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppsService, providedIn: 'root' });
|
|
51
51
|
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppsService, decorators: [{
|
|
53
53
|
type: Injectable,
|
|
54
54
|
args: [{
|
|
55
55
|
providedIn: 'root'
|
|
@@ -223,10 +223,10 @@ class AppsPageComponent {
|
|
|
223
223
|
import() {
|
|
224
224
|
this.#features.import().subscribe();
|
|
225
225
|
}
|
|
226
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
227
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.12", type: AppsPageComponent, isStandalone: true, selector: "ysfa-apps", ngImport: i0, template: "<yuv-split-view [gutterSize]=\"32\">\n <!-- features -->\n <ng-template yuvSplitArea [size]=\"60\">\n <section class=\"features\">\n <header>\n <h2>\n {{ 'yuv.app.shell-admin.features.headline' | translate }}\n </h2>\n\n @if (hasFeatureConfig) {\n <div class=\"export\">\n <button [disabled]=\"busy()\" mat-icon-button [matTooltip]=\"'yuv.app.shell-admin.config.export.tooltip' | translate\" (click)=\"export()\">\n <mat-icon>download</mat-icon>\n </button>\n <button [disabled]=\"busy()\" mat-icon-button [matTooltip]=\"'yuv.app.shell-admin.config.import.tooltip' | translate\" (click)=\"import()\">\n <mat-icon>upload</mat-icon>\n </button>\n </div>\n\n <div class=\"buttons\">\n <button mat-icon-button [matTooltip]=\"'yuv.app.shell-admin.features.config.add.tooltip' | translate\" [disabled]=\"busy()\" (click)=\"addFeature()\"><mat-icon>add</mat-icon></button>\n <button ymtButton=\"primary\" [disabled]=\"featuresForm.invalid || featuresForm.pristine || busy()\" (click)=\"save()\">\n {{ 'yuv.app.shell-admin.features.config.save' | translate }}\n </button>\n <button mat-icon-button [matTooltip]=\"'yuv.app.shell-admin.config.delete.tooltip' | translate\" [disabled]=\"busy()\" (click)=\"delete()\"><mat-icon>delete</mat-icon></button>\n </div>\n } @else {\n <button ymtButton=\"primary\" [disabled]=\"busy()\" (click)=\"createFeatureConfigObject()\">\n {{ 'yuv.app.shell-admin.features.config.create' | translate }}\n </button>\n }\n\n @if (busy()) {\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n }\n </header>\n\n <form class=\"main\" [formGroup]=\"featuresForm\">\n <div formArrayName=\"features\">\n @for (fForm of featureArray.controls; track $index) {\n <section class=\"feature\" [formGroup]=\"getFeatureForm(fForm)\">\n <button mat-icon-button (click)=\"removeFeature($index)\"><mat-icon>delete</mat-icon></button>\n\n <div class=\"ext\">\n <mat-checkbox formControlName=\"extension\">{{ 'yuv.app.shell-admin.features.config.feature.extension' | translate }}</mat-checkbox>\n </div>\n\n <mat-form-field class=\"id\">\n <mat-label>{{ 'yuv.app.shell-admin.features.config.feature.id' | translate }}</mat-label>\n <input matInput formControlName=\"id\" />\n </mat-form-field>\n\n <mat-form-field class=\"label\">\n <mat-label>{{ 'yuv.app.shell-admin.features.config.feature.label' | translate }}</mat-label>\n <input matInput formControlName=\"label\" />\n </mat-form-field>\n\n <mat-form-field class=\"allowed\">\n <mat-label>{{ 'yuv.app.shell-admin.features.config.feature.allowed' | translate }}</mat-label>\n <yuv-autocomplete\n formControlName=\"allowed\"\n [multiple]=\"true\"\n [forceSelection]=\"true\"\n [distinctValues]=\"true\"\n (autocompleteFnc)=\"fetchRoles($event)\"\n [autocompleteValues]=\"autocompleteValues\"\n ></yuv-autocomplete>\n </mat-form-field>\n\n <mat-form-field class=\"denied\">\n <mat-label>{{ 'yuv.app.shell-admin.features.config.feature.denied' | translate }}</mat-label>\n <yuv-autocomplete\n formControlName=\"denied\"\n [multiple]=\"true\"\n [forceSelection]=\"true\"\n [distinctValues]=\"true\"\n (autocompleteFnc)=\"fetchRoles($event)\"\n [autocompleteValues]=\"autocompleteValues\"\n ></yuv-autocomplete>\n </mat-form-field>\n </section>\n }\n </div>\n </form>\n </section>\n </ng-template>\n\n <!-- users -->\n <ng-template yuvSplitArea [size]=\"40\">\n <section class=\"users\">\n <header>\n <h2>\n {{ 'yuv.app.shell-admin.features.users.headline' | translate }}\n </h2>\n @if (loadingUsers()) {\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n }\n </header>\n <main>\n @for (u of mappedUsers; track u.user.id) {\n <div (click)=\"selectedUser = u.user\">\n {{ u.user.firstName }} {{ u.user.lastName }} - {{ u.user.username }}\n <div class=\"email\">{{ u.user.email }}</div>\n <div class=\"user-features\">\n @for (f of u.features; track f.id) {\n <span class=\"chip\">{{ f.label || f.id }}</span>\n }\n </div>\n <!-- <div class=\"user-roles\">\n @for (r of u.user.roles; track $index) {\n <span class=\"chip\">{{ r }}</span>\n }\n </div> -->\n </div>\n }\n </main>\n </section>\n </ng-template>\n</yuv-split-view>\n", styles: [":host main{padding:var(--ymt-spacing-m);flex:1;overflow:hidden;--split-gutter-background-color: transparent}:host section{background-color:var(--ymt-surface);border-radius:var(--ymt-corner);overflow:hidden;display:flex;height:100%;flex-direction:column}:host section header{flex:0 0 auto;display:flex;align-items:center;gap:1em;padding:var(--ymt-spacing-m);border-block-end:1px solid var(--ymt-outline-variant);position:relative;justify-content:space-between}:host section header>div{display:flex;align-items:center;gap:var(--ymt-spacing-m)}:host section header .progress-bar{position:absolute;inset-block-end:0;inset-inline-start:0}:host section main,:host section .main{flex:1;overflow-y:auto;background-color:var(--ymt-surface-container)}:host section main>div,:host section .main>div{padding:var(--ymt-spacing-m)}:host .users{flex:1}:host .users main>div{padding:var(--ymt-spacing-xs);border-radius:var(--ymt-corner-s);margin-block-end:var(--ymt-spacing-m);border:1px solid var(--ymt-outline-variant);background-color:var(--ymt-surface);display:flex;flex-direction:column;gap:.25em}:host .users main>div .email{font-style:italic}:host .users main>div .user-features span.chip{background:var(--mat-sys-primary-container);color:var(--mat-sys-on-primary-container)}:host .users main>div span.chip{font:var(--ymt-font-body-subtle);display:inline-block;border:1px solid var(--ymt-outline-variant);padding:2px 4px;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-inline-end:4px;border-radius:2px}:host .features{flex:1}:host .features .feature{max-width:600px;margin:auto;border:1px solid var(--ymt-outline-variant);background-color:var(--ymt-surface);padding:var(--ymt-spacing-m);margin-block-end:var(--ymt-spacing-m);display:grid;column-gap:var(--ymt-spacing-m);border-radius:var(--ymt-corner-s);grid-template-columns:1fr auto;grid-template-rows:auto auto auto auto;grid-template-areas:\"ext icon\" \"id id\" \"label label\" \"allowed allowed\" \"denied denied\"}:host .features .feature:hover{border-color:currentColor}:host .features .feature:hover button{opacity:1}:host .features .feature mat-form-field{margin-bottom:var(--ymt-spacing-m)}:host .features .feature .ext{grid-area:ext;padding-block-end:1em}:host .features .feature .id{grid-area:id}:host .features .feature .label{grid-area:label}:host .features .feature .allowed{grid-area:allowed}:host .features .feature .denied{grid-area:denied}:host .features .feature button{grid-area:icon;opacity:.2}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "ngmodule", type: YuvSplitViewModule }, { kind: "directive", type: i2.SplitAreaDirective, selector: "[yuvSplitArea]", inputs: ["size", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "component", type: i2.SplitViewComponent, selector: "yuv-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: YuvFormsModule }, { kind: "ngmodule", type: YuvAutocompleteModule }, { kind: "component", type: i9.AutocompleteComponent, selector: "yuv-autocomplete", inputs: ["ariaLabel", "busy", "multiple", "distinctValues", "addOnBlur", "minLength", "maxItems", "forceSelection", "autocompleteValues"], outputs: ["autocompleteFnc", "acBlur"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: YmtButtonDirective, selector: "button[ymtButton], a[ymtButton]", inputs: ["ymtButton", "disabled", "aria-disabled", "disableRipple", "disabledInteractive", "button-size"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
|
|
226
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppsPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
227
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: AppsPageComponent, isStandalone: true, selector: "ysfa-apps", ngImport: i0, template: "<yuv-split-view [gutterSize]=\"32\">\n <!-- features -->\n <ng-template yuvSplitArea [size]=\"60\">\n <section class=\"features\">\n <header>\n <h2>\n {{ 'yuv.app.shell-admin.features.headline' | translate }}\n </h2>\n\n @if (hasFeatureConfig) {\n <div class=\"export\">\n <button [disabled]=\"busy()\" mat-icon-button [matTooltip]=\"'yuv.app.shell-admin.config.export.tooltip' | translate\" (click)=\"export()\">\n <mat-icon>download</mat-icon>\n </button>\n <button [disabled]=\"busy()\" mat-icon-button [matTooltip]=\"'yuv.app.shell-admin.config.import.tooltip' | translate\" (click)=\"import()\">\n <mat-icon>upload</mat-icon>\n </button>\n </div>\n\n <div class=\"buttons\">\n <button mat-icon-button [matTooltip]=\"'yuv.app.shell-admin.features.config.add.tooltip' | translate\" [disabled]=\"busy()\" (click)=\"addFeature()\"><mat-icon>add</mat-icon></button>\n <button ymtButton=\"primary\" [disabled]=\"featuresForm.invalid || featuresForm.pristine || busy()\" (click)=\"save()\">\n {{ 'yuv.app.shell-admin.features.config.save' | translate }}\n </button>\n <button mat-icon-button [matTooltip]=\"'yuv.app.shell-admin.config.delete.tooltip' | translate\" [disabled]=\"busy()\" (click)=\"delete()\"><mat-icon>delete</mat-icon></button>\n </div>\n } @else {\n <button ymtButton=\"primary\" [disabled]=\"busy()\" (click)=\"createFeatureConfigObject()\">\n {{ 'yuv.app.shell-admin.features.config.create' | translate }}\n </button>\n }\n\n @if (busy()) {\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n }\n </header>\n\n <form class=\"main\" [formGroup]=\"featuresForm\">\n <div formArrayName=\"features\">\n @for (fForm of featureArray.controls; track $index) {\n <section class=\"feature\" [formGroup]=\"getFeatureForm(fForm)\">\n <button mat-icon-button (click)=\"removeFeature($index)\"><mat-icon>delete</mat-icon></button>\n\n <div class=\"ext\">\n <mat-checkbox formControlName=\"extension\">{{ 'yuv.app.shell-admin.features.config.feature.extension' | translate }}</mat-checkbox>\n </div>\n\n <mat-form-field class=\"id\">\n <mat-label>{{ 'yuv.app.shell-admin.features.config.feature.id' | translate }}</mat-label>\n <input matInput formControlName=\"id\" />\n </mat-form-field>\n\n <mat-form-field class=\"label\">\n <mat-label>{{ 'yuv.app.shell-admin.features.config.feature.label' | translate }}</mat-label>\n <input matInput formControlName=\"label\" />\n </mat-form-field>\n\n <mat-form-field class=\"allowed\">\n <mat-label>{{ 'yuv.app.shell-admin.features.config.feature.allowed' | translate }}</mat-label>\n <yuv-autocomplete\n formControlName=\"allowed\"\n [multiple]=\"true\"\n [forceSelection]=\"true\"\n [distinctValues]=\"true\"\n (autocompleteFnc)=\"fetchRoles($event)\"\n [autocompleteValues]=\"autocompleteValues\"\n ></yuv-autocomplete>\n </mat-form-field>\n\n <mat-form-field class=\"denied\">\n <mat-label>{{ 'yuv.app.shell-admin.features.config.feature.denied' | translate }}</mat-label>\n <yuv-autocomplete\n formControlName=\"denied\"\n [multiple]=\"true\"\n [forceSelection]=\"true\"\n [distinctValues]=\"true\"\n (autocompleteFnc)=\"fetchRoles($event)\"\n [autocompleteValues]=\"autocompleteValues\"\n ></yuv-autocomplete>\n </mat-form-field>\n </section>\n }\n </div>\n </form>\n </section>\n </ng-template>\n\n <!-- users -->\n <ng-template yuvSplitArea [size]=\"40\">\n <section class=\"users\">\n <header>\n <h2>\n {{ 'yuv.app.shell-admin.features.users.headline' | translate }}\n </h2>\n @if (loadingUsers()) {\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n }\n </header>\n <main>\n @for (u of mappedUsers; track u.user.id) {\n <div (click)=\"selectedUser = u.user\">\n {{ u.user.firstName }} {{ u.user.lastName }} - {{ u.user.username }}\n <div class=\"email\">{{ u.user.email }}</div>\n <div class=\"user-features\">\n @for (f of u.features; track f.id) {\n <span class=\"chip\">{{ f.label || f.id }}</span>\n }\n </div>\n <!-- <div class=\"user-roles\">\n @for (r of u.user.roles; track $index) {\n <span class=\"chip\">{{ r }}</span>\n }\n </div> -->\n </div>\n }\n </main>\n </section>\n </ng-template>\n</yuv-split-view>\n", styles: [":host main{padding:var(--ymt-spacing-m);flex:1;overflow:hidden;--split-gutter-background-color: transparent}:host section{background-color:var(--ymt-surface);border-radius:var(--ymt-corner);overflow:hidden;display:flex;height:100%;flex-direction:column}:host section header{flex:0 0 auto;display:flex;align-items:center;gap:1em;padding:var(--ymt-spacing-m);border-block-end:1px solid var(--ymt-outline-variant);position:relative;justify-content:space-between}:host section header>div{display:flex;align-items:center;gap:var(--ymt-spacing-m)}:host section header .progress-bar{position:absolute;inset-block-end:0;inset-inline-start:0}:host section main,:host section .main{flex:1;overflow-y:auto;background-color:var(--ymt-surface-container)}:host section main>div,:host section .main>div{padding:var(--ymt-spacing-m)}:host .users{flex:1}:host .users main>div{padding:var(--ymt-spacing-xs);border-radius:var(--ymt-corner-s);margin-block-end:var(--ymt-spacing-m);border:1px solid var(--ymt-outline-variant);background-color:var(--ymt-surface);display:flex;flex-direction:column;gap:.25em}:host .users main>div .email{font-style:italic}:host .users main>div .user-features span.chip{background:var(--mat-sys-primary-container);color:var(--mat-sys-on-primary-container)}:host .users main>div span.chip{font:var(--ymt-font-body-subtle);display:inline-block;border:1px solid var(--ymt-outline-variant);padding:2px 4px;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-inline-end:4px;border-radius:2px}:host .features{flex:1}:host .features .feature{max-width:600px;margin:auto;border:1px solid var(--ymt-outline-variant);background-color:var(--ymt-surface);padding:var(--ymt-spacing-m);margin-block-end:var(--ymt-spacing-m);display:grid;column-gap:var(--ymt-spacing-m);border-radius:var(--ymt-corner-s);grid-template-columns:1fr auto;grid-template-rows:auto auto auto auto;grid-template-areas:\"ext icon\" \"id id\" \"label label\" \"allowed allowed\" \"denied denied\"}:host .features .feature:hover{border-color:currentColor}:host .features .feature:hover button{opacity:1}:host .features .feature mat-form-field{margin-bottom:var(--ymt-spacing-m)}:host .features .feature .ext{grid-area:ext;padding-block-end:1em}:host .features .feature .id{grid-area:id}:host .features .feature .label{grid-area:label}:host .features .feature .allowed{grid-area:allowed}:host .features .feature .denied{grid-area:denied}:host .features .feature button{grid-area:icon;opacity:.2}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "ngmodule", type: YuvSplitViewModule }, { kind: "directive", type: i2.SplitAreaDirective, selector: "[yuvSplitArea]", inputs: ["size", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "component", type: i2.SplitViewComponent, selector: "yuv-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: YuvFormsModule }, { kind: "ngmodule", type: YuvAutocompleteModule }, { kind: "component", type: i9.AutocompleteComponent, selector: "yuv-autocomplete", inputs: ["ariaLabel", "busy", "multiple", "distinctValues", "addOnBlur", "minLength", "maxItems", "forceSelection", "autocompleteValues"], outputs: ["autocompleteFnc", "acBlur"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: YmtButtonDirective, selector: "button[ymtButton], a[ymtButton]", inputs: ["ymtButton", "disabled", "aria-disabled", "disableRipple", "disabledInteractive", "button-size"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
|
|
228
228
|
}
|
|
229
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
229
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppsPageComponent, decorators: [{
|
|
230
230
|
type: Component,
|
|
231
231
|
args: [{ selector: 'ysfa-apps', imports: [
|
|
232
232
|
CommonModule,
|
|
@@ -248,10 +248,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImpo
|
|
|
248
248
|
}], ctorParameters: () => [] });
|
|
249
249
|
|
|
250
250
|
class HomePageComponent {
|
|
251
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
252
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
251
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: HomePageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
252
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: HomePageComponent, isStandalone: true, selector: "ymsa-home", ngImport: i0, template: "\n\n\n<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" ><path d=\"M680-280q25 0 42.5-17.5T740-340q0-25-17.5-42.5T680-400q-25 0-42.5 17.5T620-340q0 25 17.5 42.5T680-280Zm0 120q31 0 57-14.5t42-38.5q-22-13-47-20t-52-7q-27 0-52 7t-47 20q16 24 42 38.5t57 14.5ZM480-80q-139-35-229.5-159.5T160-516v-244l320-120 320 120v227q-19-8-39-14.5t-41-9.5v-147l-240-90-240 90v188q0 47 12.5 94t35 89.5Q310-290 342-254t71 60q11 32 29 61t41 52q-1 0-1.5.5t-1.5.5Zm200 0q-83 0-141.5-58.5T480-280q0-83 58.5-141.5T680-480q83 0 141.5 58.5T880-280q0 83-58.5 141.5T680-80ZM480-494Z\"/></svg>\n", styles: [":host{display:grid;grid-template-columns:1fr;grid-template-rows:1fr;height:100%;align-items:center;justify-items:center}:host svg{fill:var(--ymt-text-color);height:50vh;width:50vh;grid-row:1;grid-column:1;opacity:.1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
253
253
|
}
|
|
254
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
254
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: HomePageComponent, decorators: [{
|
|
255
255
|
type: Component,
|
|
256
256
|
args: [{ selector: 'ymsa-home', imports: [CommonModule], template: "\n\n\n<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" ><path d=\"M680-280q25 0 42.5-17.5T740-340q0-25-17.5-42.5T680-400q-25 0-42.5 17.5T620-340q0 25 17.5 42.5T680-280Zm0 120q31 0 57-14.5t42-38.5q-22-13-47-20t-52-7q-27 0-52 7t-47 20q16 24 42 38.5t57 14.5ZM480-80q-139-35-229.5-159.5T160-516v-244l320-120 320 120v227q-19-8-39-14.5t-41-9.5v-147l-240-90-240 90v188q0 47 12.5 94t35 89.5Q310-290 342-254t71 60q11 32 29 61t41 52q-1 0-1.5.5t-1.5.5Zm200 0q-83 0-141.5-58.5T480-280q0-83 58.5-141.5T680-480q83 0 141.5 58.5T880-280q0 83-58.5 141.5T680-80ZM480-494Z\"/></svg>\n", styles: [":host{display:grid;grid-template-columns:1fr;grid-template-rows:1fr;height:100%;align-items:center;justify-items:center}:host svg{fill:var(--ymt-text-color);height:50vh;width:50vh;grid-row:1;grid-column:1;opacity:.1}\n"] }]
|
|
257
257
|
}] });
|
|
@@ -373,10 +373,10 @@ class TypesPageComponent {
|
|
|
373
373
|
ngOnInit() {
|
|
374
374
|
this.#loadTypes();
|
|
375
375
|
}
|
|
376
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
377
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
376
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TypesPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
377
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: TypesPageComponent, isStandalone: true, selector: "ymsa-types", ngImport: i0, template: "<header>\n <h2>\n {{ 'yuv.app.shell-admin.types.headline' | translate }}\n </h2>\n\n @if (hasTypeConfig) {\n <div class=\"export\">\n <button [disabled]=\"busy()\" mat-icon-button [matTooltip]=\"'yuv.app.shell-admin.config.export.tooltip' | translate\" (click)=\"export()\">\n <mat-icon>download</mat-icon>\n </button>\n <button [disabled]=\"busy()\" mat-icon-button [matTooltip]=\"'yuv.app.shell-admin.config.import.tooltip' | translate\" (click)=\"import()\">\n <mat-icon>upload</mat-icon>\n </button>\n </div>\n\n <div class=\"buttons\">\n <button [disabled]=\"busy()\" mat-icon-button [matTooltip]=\"'yuv.app.shell-admin.types.config.add.tooltip' | translate\" (click)=\"addType()\"><mat-icon>add</mat-icon></button>\n <button ymtButton=\"primary\" [disabled]=\"typesForm.invalid || typesForm.pristine || busy()\" (click)=\"save()\">\n {{ 'yuv.app.shell-admin.types.config.save' | translate }}\n </button>\n <button mat-icon-button [matTooltip]=\"'yuv.app.shell-admin.config.delete.tooltip' | translate\" [disabled]=\"busy()\" (click)=\"delete()\"><mat-icon>delete</mat-icon></button>\n</div>\n } @else {\n <button ymtButton=\"primary\" [disabled]=\"busy()\" (click)=\"createTypeConfigObject()\">{{ 'yuv.app.shell-admin.types.config.create' | translate }}</button>\n }\n @if (busy()) {\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n }\n</header>\n\n<form [formGroup]=\"typesForm\">\n <div formArrayName=\"types\">\n @for (typeForm of typeArray.controls; track $index) {\n <section class=\"type\" [formGroup]=\"getTypeForm(typeForm)\">\n <button mat-icon-button\n [matTooltip]=\"'yuv.app.shell-admin.types.config.item.delete.tooltip' | translate\"\n (click)=\"removeType($index)\"><mat-icon>delete</mat-icon></button>\n\n <mat-form-field appearance=\"outline\" class=\"id\">\n <mat-label>{{ 'yuv.app.shell-admin.type.config.id' | translate }}</mat-label>\n <input matInput formControlName=\"id\" />\n </mat-form-field>\n\n @let bt = getTypeForm(typeForm).get('baseType')?.value;\n @if (bt === 'system:document' || bt === 'system:object') {\n <mat-form-field class=\"mimetype\">\n <mat-label>{{ 'yuv.app.shell-admin.type.config.mimetype' | translate }}</mat-label>\n <input matInput formControlName=\"applicableToMimeType\" />\n </mat-form-field>\n }\n\n <div class=\"baseType\">\n <mat-radio-group formControlName=\"baseType\">\n <mat-radio-button value=\"system:document\">Document</mat-radio-button>\n <mat-radio-button value=\"system:folder\">Folder</mat-radio-button>\n <mat-radio-button value=\"system:object\">Both</mat-radio-button>\n </mat-radio-group>\n </div>\n\n <div class=\"flags\">\n <mat-checkbox formControlName=\"instantApply\">{{ 'yuv.app.shell-admin.type.config.instant-apply' | translate }}</mat-checkbox>\n <div class=\"explain\">{{ 'yuv.app.shell-admin.type.config.instant-apply.explain' | translate }}</div>\n </div>\n </section>\n }\n </div>\n</form>\n", styles: [":host{overflow:hidden;display:flex;height:100%;flex-direction:column;background-color:var(--ymt-surface);border-radius:var(--ymt-corner)}:host header{flex:0 0 auto;display:flex;align-items:center;gap:1em;padding:var(--ymt-spacing-m);border-block-end:1px solid var(--ymt-outline-variant);position:relative;justify-content:space-between}:host header>div{display:flex;align-items:center;gap:var(--ymt-spacing-m)}:host header .progress-bar{position:absolute;inset-block-end:0;inset-inline-start:0}:host form{flex:1;overflow-y:auto;background-color:var(--ymt-surface-container)}:host form>div{padding:var(--ymt-spacing-m)}:host form section.type{padding:var(--ymt-spacing-m)}:host form section.type mat-form-field,:host form section.type .baseType{margin-bottom:var(--ymt-spacing-m)}:host .type{max-width:600px;margin:auto;border:1px solid var(--ymt-outline-variant);background-color:var(--ymt-surface);padding:var(--ymt-spacing-m);margin-block-end:var(--ymt-spacing-m);display:grid;column-gap:var(--ymt-spacing-m);border-radius:var(--ymt-corner-s);grid-template-columns:1fr auto;grid-template-rows:auto auto;grid-template-areas:\"id icon\" \"base base\" \"mimetype mimetype\" \"flags flags\"}:host .type:hover{border-color:currentColor}:host .type:hover button{opacity:1}:host .type .id{grid-area:id}:host .type .mimetype{grid-area:mimetype}:host .type .baseType{grid-area:base}:host .type .flags{grid-area:flags}:host .type button{grid-area:icon;opacity:.2}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i2$1.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i2$1.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule$1 }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "directive", type: YmtButtonDirective, selector: "button[ymtButton], a[ymtButton]", inputs: ["ymtButton", "disabled", "aria-disabled", "disableRipple", "disabledInteractive", "button-size"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
|
|
378
378
|
}
|
|
379
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
379
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TypesPageComponent, decorators: [{
|
|
380
380
|
type: Component,
|
|
381
381
|
args: [{ selector: 'ymsa-types', imports: [
|
|
382
382
|
CommonModule,
|
|
@@ -400,10 +400,10 @@ class ShellAdminComponent {
|
|
|
400
400
|
user = inject(YUV_USER);
|
|
401
401
|
// only admins should be able to see this page
|
|
402
402
|
isValidUser = this.user?.authorities.includes('YUUVIS_TENANT_ADMIN');
|
|
403
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
404
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
403
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ShellAdminComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
404
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: ShellAdminComponent, isStandalone: true, selector: "ymsa-shell-admin", ngImport: i0, template: "<header>\n <a routerLink=\"./\">yM Shell Admin </a>\n <nav>\n <a routerLink=\"apps\" routerLinkActive=\"active\">{{ 'yuv.app.shell-admin.nav.apps' | translate }}</a>\n <a routerLink=\"types\" routerLinkActive=\"active\">{{ 'yuv.app.shell-admin.nav.types' | translate }}</a>\n </nav>\n \n</header>\n@if (isValidUser) {\n <main>\n <router-outlet></router-outlet>\n </main>\n} @else {\n <main class=\"invalid-user\">\n <p>{{ 'yuv.app.shell-admin.invalid-user' | translate }}</p>\n </main>\n}\n", styles: [":host{display:flex;flex-direction:column;height:100%;box-sizing:border-box;gap:var(--ymt-spacing-3xl);padding:var(--ymt-spacing-3xl)}:host header{display:flex;justify-content:space-between;align-items:center;padding:var(--ymt-spacing-m) var(--ymt-spacing-3xl);background-color:var(--ymt-surface);color:var(--ymt-text-color);border-radius:var(--ymt-corner)}:host header a{text-decoration:none;font-weight:700}:host header nav{display:flex;gap:var(--ymt-spacing-m)}:host header nav a{font-weight:400;padding:var(--ymt-spacing-2xs) var(--ymt-spacing-m);border-radius:var(--ymt-corner-s)}:host header nav a.active{color:var(--ymt-text-color);background-color:var(--ymt-surface-container-high)}:host main{flex:1;overflow:hidden}:host main.invalid-user{display:grid;place-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: TranslateModule$1 }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
|
|
405
405
|
}
|
|
406
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
406
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ShellAdminComponent, decorators: [{
|
|
407
407
|
type: Component,
|
|
408
408
|
args: [{ selector: 'ymsa-shell-admin', imports: [CommonModule, RouterModule, TranslateModule$1], template: "<header>\n <a routerLink=\"./\">yM Shell Admin </a>\n <nav>\n <a routerLink=\"apps\" routerLinkActive=\"active\">{{ 'yuv.app.shell-admin.nav.apps' | translate }}</a>\n <a routerLink=\"types\" routerLinkActive=\"active\">{{ 'yuv.app.shell-admin.nav.types' | translate }}</a>\n </nav>\n \n</header>\n@if (isValidUser) {\n <main>\n <router-outlet></router-outlet>\n </main>\n} @else {\n <main class=\"invalid-user\">\n <p>{{ 'yuv.app.shell-admin.invalid-user' | translate }}</p>\n </main>\n}\n", styles: [":host{display:flex;flex-direction:column;height:100%;box-sizing:border-box;gap:var(--ymt-spacing-3xl);padding:var(--ymt-spacing-3xl)}:host header{display:flex;justify-content:space-between;align-items:center;padding:var(--ymt-spacing-m) var(--ymt-spacing-3xl);background-color:var(--ymt-surface);color:var(--ymt-text-color);border-radius:var(--ymt-corner)}:host header a{text-decoration:none;font-weight:700}:host header nav{display:flex;gap:var(--ymt-spacing-m)}:host header nav a{font-weight:400;padding:var(--ymt-spacing-2xs) var(--ymt-spacing-m);border-radius:var(--ymt-corner-s)}:host header nav a.active{color:var(--ymt-text-color);background-color:var(--ymt-surface-container-high)}:host main{flex:1;overflow:hidden}:host main.invalid-user{display:grid;place-items:center}\n"] }]
|
|
409
409
|
}] });
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yuuvis/app-shell-admin",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.30",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^19.2.1",
|
|
7
7
|
"@angular/core": "^19.2.1",
|
|
8
|
-
"@yuuvis/client-shell": "^2.1.
|
|
8
|
+
"@yuuvis/client-shell": "^2.1.30"
|
|
9
9
|
},
|
|
10
10
|
"sideEffects": false,
|
|
11
11
|
"module": "fesm2022/yuuvis-app-shell-admin.mjs",
|