@yuuvis/app-shell-admin 2.1.21 → 2.1.23

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.
@@ -224,7 +224,7 @@ class AppsPageComponent {
224
224
  this.#features.import().subscribe();
225
225
  }
226
226
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: AppsPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
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"] }, { 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"] }] });
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"] }] });
228
228
  }
229
229
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: AppsPageComponent, decorators: [{
230
230
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"yuuvis-app-shell-admin.mjs","sources":["../../../../../libs/apps/shell-admin/src/lib/services/apps/apps.service.ts","../../../../../libs/apps/shell-admin/src/lib/pages/apps/apps.component.ts","../../../../../libs/apps/shell-admin/src/lib/pages/apps/apps.component.html","../../../../../libs/apps/shell-admin/src/lib/pages/types/types.component.ts","../../../../../libs/apps/shell-admin/src/lib/pages/types/types.component.html","../../../../../libs/apps/shell-admin/src/lib/shell-admin.component.ts","../../../../../libs/apps/shell-admin/src/lib/shell-admin.component.html","../../../../../libs/apps/shell-admin/src/lib/pages/home/home.component.ts","../../../../../libs/apps/shell-admin/src/lib/pages/home/home.component.html","../../../../../libs/apps/shell-admin/src/lib/lib.routes.ts","../../../../../libs/apps/shell-admin/src/yuuvis-app-shell-admin.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { BackendService } from '@yuuvis/client-core';\nimport { Observable, map } from 'rxjs';\nimport { TmRole, TmUser } from './apps.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppsService {\n #backend = inject(BackendService);\n\n getUsers(): Observable<TmUser[]> {\n return this.#backend.get(`/tenant-management/api/admin/users`, '').pipe(\n map((response: any) => {\n return response.map((user: any) => {\n const { id, username, createdTimestamp, email, enabled, firstName, lastName, groups, roles } = user;\n return { id, username, createdTimestamp, email, enabled, firstName, lastName, groups, roles };\n });\n })\n );\n }\n\n getRoles(): Observable<TmRole[]> {\n return this.#backend.get(`/tenant-management/api/admin/roles`, '');\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, signal } from '@angular/core';\nimport { AbstractControl, FormArray, FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { YUV_USER, YuvUser } from '@yuuvis/client-core';\nimport { AutocompleteItem, YuvAutocompleteModule } from '@yuuvis/client-framework/autocomplete';\nimport { YuvFormsModule } from '@yuuvis/client-framework/forms';\nimport { YuvSplitViewModule } from '@yuuvis/client-framework/split-view';\nimport { ClientShellFeature, FeatureService, ShellService } from '@yuuvis/client-shell-core';\nimport { finalize } from 'rxjs';\nimport { TmRole, TmUser } from '../../services/apps/apps.interface';\nimport { AppsService } from '../../services/apps/apps.service';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'ysfa-apps',\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatCardModule,\n YuvSplitViewModule,\n MatFormFieldModule,\n TranslateModule,\n MatButtonModule,\n MatCheckboxModule,\n MatIconModule,\n MatInputModule,\n YuvFormsModule,\n YuvAutocompleteModule,\n MatProgressBar,\n YmtButtonDirective,\n MatTooltipModule\n ],\n templateUrl: './apps.component.html',\n styleUrl: './apps.component.scss'\n})\nexport class AppsPageComponent {\n #appsService = inject(AppsService);\n #features = inject(FeatureService);\n #fb = inject(FormBuilder);\n #shell = inject(ShellService);\n\n // user token has to be present because this is a part of the\n // required bootstrap process\n user = inject<YuvUser>(YUV_USER);\n // only admins should be able to see this page\n isValidUser = this.user?.authorities.includes('YUUVIS_TENANT_ADMIN');\n\n users: TmUser[] = [];\n mappedUsers: {\n features: ClientShellFeature[];\n user: TmUser;\n }[] = [];\n roles: TmRole[] = [];\n features: ClientShellFeature[] = [];\n selectedUser?: TmUser;\n autocompleteValues: AutocompleteItem[] = [];\n\n busy = signal<boolean>(false);\n loadingUsers = signal<boolean>(false);\n\n featuresForm = this.#fb.group({\n features: this.#fb.array([])\n });\n\n get featureArray(): FormArray {\n return this.featuresForm.controls['features'] as FormArray;\n }\n\n getFeatureForm(c: AbstractControl<any, any>): FormGroup {\n return c as FormGroup;\n }\n\n hasFeatureConfig = this.#features.hasFeatureConfig();\n\n constructor() {\n this.#fetchRoles();\n this.#fetchUsers();\n // this.features = this.#features.getFeatures();\n\n this.featuresForm.valueChanges.subscribe((v) => {\n this.#mapUsersToFeatures();\n });\n\n // this.features.forEach((feature) => {\n // this.featureArray.push(\n // this.#fb.group({\n // id: [feature.id, Validators.required],\n // label: [feature.label],\n // extension: [feature.extension],\n // allowed: [(feature.allowed || []).map((a) => ({ label: a, value: a }))],\n // denied: [(feature.denied || []).map((d) => ({ label: d, value: d }))]\n // })\n // );\n // });\n this.#loadFeatures();\n }\n\n #loadFeatures() {\n this.features = this.#features.getFeatures();\n this.featuresForm.patchValue({\n features: []\n })\n this.features.forEach((feature) => {\n this.featureArray.push(\n this.#fb.group({\n id: [feature.id, Validators.required],\n label: [feature.label],\n extension: [feature.extension],\n allowed: [(feature.allowed || []).map((a) => ({ label: a, value: a }))],\n denied: [(feature.denied || []).map((d) => ({ label: d, value: d }))]\n })\n );\n });\n }\n\n createFeatureConfigObject() {\n this.busy.set(true);\n this.#features\n .createSettingsObject()\n .pipe(\n finalize(() => {\n this.busy.set(false);\n })\n )\n .subscribe(() => {\n this.hasFeatureConfig = this.#features.hasFeatureConfig();\n });\n }\n\n #fetchUsers() {\n this.loadingUsers.set(true);\n this.#appsService\n .getUsers()\n .pipe(\n finalize(() => {\n this.loadingUsers.set(false);\n })\n )\n .subscribe((users) => {\n this.users = users;\n this.#mapUsersToFeatures();\n });\n }\n\n #mapUsersToFeatures() {\n // map form to features\n const features = this.#formToFeatures();\n\n this.mappedUsers = this.users.map((user) => {\n return {\n user,\n features: features.filter((f) => this.#features.canUseFeature(f, user.roles))\n };\n });\n }\n\n #formToFeatures(): ClientShellFeature[] {\n return this.featureArray.value.map((f: any) => {\n return {\n id: f.id,\n label: f.label,\n extension: f.extension,\n allowed: f.allowed.map((a: AutocompleteItem) => a.value),\n denied: f.denied.map((d: AutocompleteItem) => d.value)\n };\n });\n }\n\n #fetchRoles() {\n this.#appsService.getRoles().subscribe((roles) => {\n this.roles = roles;\n this.autocompleteValues = roles.map((role) => ({\n label: role.name,\n value: role.name\n }));\n });\n }\n\n addFeature() {\n this.featureArray.push(\n this.#fb.group({\n id: ['', Validators.required],\n label: [''],\n extension: [false],\n allowed: [[]],\n denied: [[]]\n })\n );\n }\n\n removeFeature(idx: number) {\n this.featureArray.removeAt(idx);\n this.featuresForm.markAsDirty();\n }\n\n fetchRoles(t: string) {\n this.autocompleteValues = this.roles\n .filter((role) => role.name.toLowerCase().includes(t.toLowerCase()))\n .map((role) => ({\n label: role.name,\n value: role.name\n }));\n }\n\n delete() {\n this.busy.set(true);\n this.#features\n .deleteFeatureSettings()\n .pipe(\n finalize(() => {\n this.busy.set(false);\n })\n )\n .subscribe(() => {\n this.featureArray.clear();\n this.features = [];\n this.hasFeatureConfig = false;\n this.featuresForm.markAsPristine();\n });\n }\n\n save() {\n this.busy.set(true);\n const features = this.#formToFeatures();\n this.#features\n .saveFeatureSettings(features)\n .pipe(\n finalize(() => {\n this.busy.set(false);\n })\n )\n .subscribe(() => this.featuresForm.markAsPristine());\n }\n\n export() {\n this.#features.export();\n }\n\n import() {\n this.#features.import().subscribe()\n }\n}\n","<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","import { CommonModule } from '@angular/common';\nimport { Component, inject, OnInit, signal } from '@angular/core';\nimport { AbstractControl, FormArray, FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { DmsObject, SystemType, TranslateModule } from '@yuuvis/client-core';\nimport { ClientShellType, SHELL_CONFIG_TYPES, ShellConfigService, ShellService } from '@yuuvis/client-shell-core';\nimport { finalize, of, switchMap, tap } from 'rxjs';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'ymsa-types',\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatRadioModule,\n MatFormFieldModule,\n MatInputModule,\n MatCheckboxModule,\n MatButtonModule,\n MatIconModule,\n TranslateModule,\n YmtButtonDirective,\n MatProgressBar,\n MatTooltipModule\n ],\n templateUrl: './types.component.html',\n styleUrl: './types.component.scss'\n})\nexport class TypesPageComponent implements OnInit {\n #fb = inject(FormBuilder);\n #shellConfig = inject(ShellConfigService);\n #shell = inject(ShellService);\n\n #typeConfigObjectId?: string;\n hasTypeConfig = false;\n types: ClientShellType[] = [];\n\n busy = signal<boolean>(false);\n\n typesForm = this.#fb.group({\n types: this.#fb.array([])\n });\n\n get typeArray(): FormArray {\n return this.typesForm.controls['types'] as FormArray;\n }\n\n getTypeForm(c: AbstractControl<any, any>): FormGroup {\n return c as FormGroup;\n }\n\n createTypeConfigObject() {\n this.busy.set(true);\n return this.#shellConfig\n .create(SHELL_CONFIG_TYPES, [])\n .pipe(\n tap((res) => {\n this.hasTypeConfig = !!res;\n this.#typeConfigObjectId = res.id;\n }),\n finalize(() => {\n this.busy.set(false);\n })\n )\n .subscribe();\n }\n\n addType() {\n this.typeArray.push(\n this.#fb.group({\n id: ['', Validators.required],\n baseType: [SystemType.DOCUMENT],\n instantApply: [false],\n applicableToMimeType: ['*/*']\n })\n );\n }\n\n removeType(idx: number) {\n this.typeArray.removeAt(idx);\n this.typesForm.markAsDirty();\n }\n\n #formToTypes(): ClientShellType[] {\n return this.typeArray.value.map((f: any) => {\n return {\n id: f.id,\n baseType: f.baseType,\n instantApply: f.instantApply,\n applicableToMimeTypes: [f.applicableToMimeType]\n };\n });\n }\n\n delete() {\n if (this.#typeConfigObjectId) {\n this.busy.set(true);\n this.#shellConfig\n .delete(this.#typeConfigObjectId)\n .pipe(\n tap(() => {\n this.typeArray.clear();\n this.types = [];\n this.hasTypeConfig = false;\n this.typesForm.markAsPristine();\n }),\n finalize(() => {\n this.busy.set(false);\n })\n )\n .subscribe();\n }\n }\n\n save() {\n this.busy.set(true);\n const types = this.#formToTypes();\n if (this.#typeConfigObjectId) {\n this.#shellConfig\n .update(this.#typeConfigObjectId, types)\n .pipe(\n finalize(() => {\n this.busy.set(false);\n })\n )\n .subscribe(() => {\n this.types = types;\n this.typesForm.markAsPristine();\n });\n }\n }\n\n export() {\n if (this.#typeConfigObjectId) {\n this.#shellConfig.download(this.#typeConfigObjectId, `${SHELL_CONFIG_TYPES}.json`);\n }\n }\n import() {\n let contentStreamId: string | undefined;\n if (this.#typeConfigObjectId)\n this.#shell\n .pickFile()\n .pipe(\n switchMap((file) => (file ? this.#shellConfig.upload(this.#typeConfigObjectId!, file) : of(null))),\n tap((x: DmsObject) => {\n if (x.content?.contentStreamId !== contentStreamId) this.#loadTypes();\n })\n )\n .subscribe();\n }\n\n #loadTypes() {\n this.#shellConfig.get(SHELL_CONFIG_TYPES).subscribe((typeConfig) => {\n this.hasTypeConfig = !!typeConfig;\n this.#typeConfigObjectId = typeConfig?.id;\n this.types = typeConfig ? (typeConfig.data as ClientShellType[]) : [];\n\n this.types.forEach((type) => {\n const applicableToMimeTypes = type.applicableToMimeTypes || [];\n this.typeArray.push(\n this.#fb.group({\n id: [type.id, Validators.required],\n baseType: [type.baseType],\n instantApply: [type.instantApply],\n applicableToMimeType: [applicableToMimeTypes[0] || '']\n })\n );\n });\n });\n }\n\n ngOnInit(): void {\n this.#loadTypes();\n }\n}\n","<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","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule, YUV_USER, YuvUser } from '@yuuvis/client-core';\n\n@Component({\n selector: 'ymsa-shell-admin',\n imports: [CommonModule, RouterModule, TranslateModule],\n templateUrl: './shell-admin.component.html',\n styleUrl: './shell-admin.component.scss'\n})\nexport class ShellAdminComponent {\n // user token has to be present because this is a part of the\n // required bootstrap process\n user = inject<YuvUser>(YUV_USER);\n // only admins should be able to see this page\n isValidUser = this.user?.authorities.includes('YUUVIS_TENANT_ADMIN');\n}\n","<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","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ymsa-home',\n imports: [CommonModule],\n templateUrl: './home.component.html',\n styleUrl: './home.component.scss'\n})\nexport class HomePageComponent {}\n","\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","import { Route } from '@angular/router';\nimport { AppsPageComponent } from './pages/apps/apps.component';\nimport { TypesPageComponent } from './pages/types/types.component';\nimport { ShellAdminComponent } from './shell-admin.component';\nimport { HomePageComponent } from './pages/home/home.component';\n\nexport const FeatureAdminRoutes: Route[] = [\n { path: '', component: ShellAdminComponent, children: [\n { path: '', component: HomePageComponent },\n { path: 'apps', component: AppsPageComponent },\n { path: 'types', component: TypesPageComponent },\n ] },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i5","i6","TranslateModule","i8","i9"],"mappings":"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"}
1
+ {"version":3,"file":"yuuvis-app-shell-admin.mjs","sources":["../../../../../libs/apps/shell-admin/src/lib/services/apps/apps.service.ts","../../../../../libs/apps/shell-admin/src/lib/pages/apps/apps.component.ts","../../../../../libs/apps/shell-admin/src/lib/pages/apps/apps.component.html","../../../../../libs/apps/shell-admin/src/lib/pages/types/types.component.ts","../../../../../libs/apps/shell-admin/src/lib/pages/types/types.component.html","../../../../../libs/apps/shell-admin/src/lib/shell-admin.component.ts","../../../../../libs/apps/shell-admin/src/lib/shell-admin.component.html","../../../../../libs/apps/shell-admin/src/lib/pages/home/home.component.ts","../../../../../libs/apps/shell-admin/src/lib/pages/home/home.component.html","../../../../../libs/apps/shell-admin/src/lib/lib.routes.ts","../../../../../libs/apps/shell-admin/src/yuuvis-app-shell-admin.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { BackendService } from '@yuuvis/client-core';\nimport { Observable, map } from 'rxjs';\nimport { TmRole, TmUser } from './apps.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppsService {\n #backend = inject(BackendService);\n\n getUsers(): Observable<TmUser[]> {\n return this.#backend.get(`/tenant-management/api/admin/users`, '').pipe(\n map((response: any) => {\n return response.map((user: any) => {\n const { id, username, createdTimestamp, email, enabled, firstName, lastName, groups, roles } = user;\n return { id, username, createdTimestamp, email, enabled, firstName, lastName, groups, roles };\n });\n })\n );\n }\n\n getRoles(): Observable<TmRole[]> {\n return this.#backend.get(`/tenant-management/api/admin/roles`, '');\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, signal } from '@angular/core';\nimport { AbstractControl, FormArray, FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { YUV_USER, YuvUser } from '@yuuvis/client-core';\nimport { AutocompleteItem, YuvAutocompleteModule } from '@yuuvis/client-framework/autocomplete';\nimport { YuvFormsModule } from '@yuuvis/client-framework/forms';\nimport { YuvSplitViewModule } from '@yuuvis/client-framework/split-view';\nimport { ClientShellFeature, FeatureService, ShellService } from '@yuuvis/client-shell-core';\nimport { finalize } from 'rxjs';\nimport { TmRole, TmUser } from '../../services/apps/apps.interface';\nimport { AppsService } from '../../services/apps/apps.service';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'ysfa-apps',\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatCardModule,\n YuvSplitViewModule,\n MatFormFieldModule,\n TranslateModule,\n MatButtonModule,\n MatCheckboxModule,\n MatIconModule,\n MatInputModule,\n YuvFormsModule,\n YuvAutocompleteModule,\n MatProgressBar,\n YmtButtonDirective,\n MatTooltipModule\n ],\n templateUrl: './apps.component.html',\n styleUrl: './apps.component.scss'\n})\nexport class AppsPageComponent {\n #appsService = inject(AppsService);\n #features = inject(FeatureService);\n #fb = inject(FormBuilder);\n #shell = inject(ShellService);\n\n // user token has to be present because this is a part of the\n // required bootstrap process\n user = inject<YuvUser>(YUV_USER);\n // only admins should be able to see this page\n isValidUser = this.user?.authorities.includes('YUUVIS_TENANT_ADMIN');\n\n users: TmUser[] = [];\n mappedUsers: {\n features: ClientShellFeature[];\n user: TmUser;\n }[] = [];\n roles: TmRole[] = [];\n features: ClientShellFeature[] = [];\n selectedUser?: TmUser;\n autocompleteValues: AutocompleteItem[] = [];\n\n busy = signal<boolean>(false);\n loadingUsers = signal<boolean>(false);\n\n featuresForm = this.#fb.group({\n features: this.#fb.array([])\n });\n\n get featureArray(): FormArray {\n return this.featuresForm.controls['features'] as FormArray;\n }\n\n getFeatureForm(c: AbstractControl<any, any>): FormGroup {\n return c as FormGroup;\n }\n\n hasFeatureConfig = this.#features.hasFeatureConfig();\n\n constructor() {\n this.#fetchRoles();\n this.#fetchUsers();\n // this.features = this.#features.getFeatures();\n\n this.featuresForm.valueChanges.subscribe((v) => {\n this.#mapUsersToFeatures();\n });\n\n // this.features.forEach((feature) => {\n // this.featureArray.push(\n // this.#fb.group({\n // id: [feature.id, Validators.required],\n // label: [feature.label],\n // extension: [feature.extension],\n // allowed: [(feature.allowed || []).map((a) => ({ label: a, value: a }))],\n // denied: [(feature.denied || []).map((d) => ({ label: d, value: d }))]\n // })\n // );\n // });\n this.#loadFeatures();\n }\n\n #loadFeatures() {\n this.features = this.#features.getFeatures();\n this.featuresForm.patchValue({\n features: []\n })\n this.features.forEach((feature) => {\n this.featureArray.push(\n this.#fb.group({\n id: [feature.id, Validators.required],\n label: [feature.label],\n extension: [feature.extension],\n allowed: [(feature.allowed || []).map((a) => ({ label: a, value: a }))],\n denied: [(feature.denied || []).map((d) => ({ label: d, value: d }))]\n })\n );\n });\n }\n\n createFeatureConfigObject() {\n this.busy.set(true);\n this.#features\n .createSettingsObject()\n .pipe(\n finalize(() => {\n this.busy.set(false);\n })\n )\n .subscribe(() => {\n this.hasFeatureConfig = this.#features.hasFeatureConfig();\n });\n }\n\n #fetchUsers() {\n this.loadingUsers.set(true);\n this.#appsService\n .getUsers()\n .pipe(\n finalize(() => {\n this.loadingUsers.set(false);\n })\n )\n .subscribe((users) => {\n this.users = users;\n this.#mapUsersToFeatures();\n });\n }\n\n #mapUsersToFeatures() {\n // map form to features\n const features = this.#formToFeatures();\n\n this.mappedUsers = this.users.map((user) => {\n return {\n user,\n features: features.filter((f) => this.#features.canUseFeature(f, user.roles))\n };\n });\n }\n\n #formToFeatures(): ClientShellFeature[] {\n return this.featureArray.value.map((f: any) => {\n return {\n id: f.id,\n label: f.label,\n extension: f.extension,\n allowed: f.allowed.map((a: AutocompleteItem) => a.value),\n denied: f.denied.map((d: AutocompleteItem) => d.value)\n };\n });\n }\n\n #fetchRoles() {\n this.#appsService.getRoles().subscribe((roles) => {\n this.roles = roles;\n this.autocompleteValues = roles.map((role) => ({\n label: role.name,\n value: role.name\n }));\n });\n }\n\n addFeature() {\n this.featureArray.push(\n this.#fb.group({\n id: ['', Validators.required],\n label: [''],\n extension: [false],\n allowed: [[]],\n denied: [[]]\n })\n );\n }\n\n removeFeature(idx: number) {\n this.featureArray.removeAt(idx);\n this.featuresForm.markAsDirty();\n }\n\n fetchRoles(t: string) {\n this.autocompleteValues = this.roles\n .filter((role) => role.name.toLowerCase().includes(t.toLowerCase()))\n .map((role) => ({\n label: role.name,\n value: role.name\n }));\n }\n\n delete() {\n this.busy.set(true);\n this.#features\n .deleteFeatureSettings()\n .pipe(\n finalize(() => {\n this.busy.set(false);\n })\n )\n .subscribe(() => {\n this.featureArray.clear();\n this.features = [];\n this.hasFeatureConfig = false;\n this.featuresForm.markAsPristine();\n });\n }\n\n save() {\n this.busy.set(true);\n const features = this.#formToFeatures();\n this.#features\n .saveFeatureSettings(features)\n .pipe(\n finalize(() => {\n this.busy.set(false);\n })\n )\n .subscribe(() => this.featuresForm.markAsPristine());\n }\n\n export() {\n this.#features.export();\n }\n\n import() {\n this.#features.import().subscribe()\n }\n}\n","<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","import { CommonModule } from '@angular/common';\nimport { Component, inject, OnInit, signal } from '@angular/core';\nimport { AbstractControl, FormArray, FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { DmsObject, SystemType, TranslateModule } from '@yuuvis/client-core';\nimport { ClientShellType, SHELL_CONFIG_TYPES, ShellConfigService, ShellService } from '@yuuvis/client-shell-core';\nimport { finalize, of, switchMap, tap } from 'rxjs';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'ymsa-types',\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatRadioModule,\n MatFormFieldModule,\n MatInputModule,\n MatCheckboxModule,\n MatButtonModule,\n MatIconModule,\n TranslateModule,\n YmtButtonDirective,\n MatProgressBar,\n MatTooltipModule\n ],\n templateUrl: './types.component.html',\n styleUrl: './types.component.scss'\n})\nexport class TypesPageComponent implements OnInit {\n #fb = inject(FormBuilder);\n #shellConfig = inject(ShellConfigService);\n #shell = inject(ShellService);\n\n #typeConfigObjectId?: string;\n hasTypeConfig = false;\n types: ClientShellType[] = [];\n\n busy = signal<boolean>(false);\n\n typesForm = this.#fb.group({\n types: this.#fb.array([])\n });\n\n get typeArray(): FormArray {\n return this.typesForm.controls['types'] as FormArray;\n }\n\n getTypeForm(c: AbstractControl<any, any>): FormGroup {\n return c as FormGroup;\n }\n\n createTypeConfigObject() {\n this.busy.set(true);\n return this.#shellConfig\n .create(SHELL_CONFIG_TYPES, [])\n .pipe(\n tap((res) => {\n this.hasTypeConfig = !!res;\n this.#typeConfigObjectId = res.id;\n }),\n finalize(() => {\n this.busy.set(false);\n })\n )\n .subscribe();\n }\n\n addType() {\n this.typeArray.push(\n this.#fb.group({\n id: ['', Validators.required],\n baseType: [SystemType.DOCUMENT],\n instantApply: [false],\n applicableToMimeType: ['*/*']\n })\n );\n }\n\n removeType(idx: number) {\n this.typeArray.removeAt(idx);\n this.typesForm.markAsDirty();\n }\n\n #formToTypes(): ClientShellType[] {\n return this.typeArray.value.map((f: any) => {\n return {\n id: f.id,\n baseType: f.baseType,\n instantApply: f.instantApply,\n applicableToMimeTypes: [f.applicableToMimeType]\n };\n });\n }\n\n delete() {\n if (this.#typeConfigObjectId) {\n this.busy.set(true);\n this.#shellConfig\n .delete(this.#typeConfigObjectId)\n .pipe(\n tap(() => {\n this.typeArray.clear();\n this.types = [];\n this.hasTypeConfig = false;\n this.typesForm.markAsPristine();\n }),\n finalize(() => {\n this.busy.set(false);\n })\n )\n .subscribe();\n }\n }\n\n save() {\n this.busy.set(true);\n const types = this.#formToTypes();\n if (this.#typeConfigObjectId) {\n this.#shellConfig\n .update(this.#typeConfigObjectId, types)\n .pipe(\n finalize(() => {\n this.busy.set(false);\n })\n )\n .subscribe(() => {\n this.types = types;\n this.typesForm.markAsPristine();\n });\n }\n }\n\n export() {\n if (this.#typeConfigObjectId) {\n this.#shellConfig.download(this.#typeConfigObjectId, `${SHELL_CONFIG_TYPES}.json`);\n }\n }\n import() {\n let contentStreamId: string | undefined;\n if (this.#typeConfigObjectId)\n this.#shell\n .pickFile()\n .pipe(\n switchMap((file) => (file ? this.#shellConfig.upload(this.#typeConfigObjectId!, file) : of(null))),\n tap((x: DmsObject) => {\n if (x.content?.contentStreamId !== contentStreamId) this.#loadTypes();\n })\n )\n .subscribe();\n }\n\n #loadTypes() {\n this.#shellConfig.get(SHELL_CONFIG_TYPES).subscribe((typeConfig) => {\n this.hasTypeConfig = !!typeConfig;\n this.#typeConfigObjectId = typeConfig?.id;\n this.types = typeConfig ? (typeConfig.data as ClientShellType[]) : [];\n\n this.types.forEach((type) => {\n const applicableToMimeTypes = type.applicableToMimeTypes || [];\n this.typeArray.push(\n this.#fb.group({\n id: [type.id, Validators.required],\n baseType: [type.baseType],\n instantApply: [type.instantApply],\n applicableToMimeType: [applicableToMimeTypes[0] || '']\n })\n );\n });\n });\n }\n\n ngOnInit(): void {\n this.#loadTypes();\n }\n}\n","<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","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule, YUV_USER, YuvUser } from '@yuuvis/client-core';\n\n@Component({\n selector: 'ymsa-shell-admin',\n imports: [CommonModule, RouterModule, TranslateModule],\n templateUrl: './shell-admin.component.html',\n styleUrl: './shell-admin.component.scss'\n})\nexport class ShellAdminComponent {\n // user token has to be present because this is a part of the\n // required bootstrap process\n user = inject<YuvUser>(YUV_USER);\n // only admins should be able to see this page\n isValidUser = this.user?.authorities.includes('YUUVIS_TENANT_ADMIN');\n}\n","<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","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ymsa-home',\n imports: [CommonModule],\n templateUrl: './home.component.html',\n styleUrl: './home.component.scss'\n})\nexport class HomePageComponent {}\n","\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","import { Route } from '@angular/router';\nimport { AppsPageComponent } from './pages/apps/apps.component';\nimport { TypesPageComponent } from './pages/types/types.component';\nimport { ShellAdminComponent } from './shell-admin.component';\nimport { HomePageComponent } from './pages/home/home.component';\n\nexport const FeatureAdminRoutes: Route[] = [\n { path: '', component: ShellAdminComponent, children: [\n { path: '', component: HomePageComponent },\n { path: 'apps', component: AppsPageComponent },\n { path: 'types', component: TypesPageComponent },\n ] },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i5","i6","TranslateModule","i8","i9"],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@yuuvis/app-shell-admin",
3
- "version": "2.1.21",
3
+ "version": "2.1.23",
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.21"
8
+ "@yuuvis/client-shell": "^2.1.23"
9
9
  },
10
10
  "sideEffects": false,
11
11
  "module": "fesm2022/yuuvis-app-shell-admin.mjs",