@yuuvis/client-framework 2.1.12 → 2.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/lib/components/index.d.ts +1 -0
- package/common/lib/directives/busy-overlay.directive.d.ts +6 -1
- package/fesm2022/yuuvis-client-framework-common.mjs +30 -5
- package/fesm2022/yuuvis-client-framework-common.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-forms.mjs +56 -12
- package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-master-details.mjs +0 -4
- package/fesm2022/yuuvis-client-framework-master-details.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs +2 -2
- package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-metadata-form.mjs +22 -11
- package/fesm2022/yuuvis-client-framework-metadata-form.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-details.mjs +33 -41
- package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs +1 -1
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-form.mjs +12 -4
- package/fesm2022/yuuvis-client-framework-object-form.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-preview.mjs +8 -2
- package/fesm2022/yuuvis-client-framework-object-preview.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-summary.mjs +53 -95
- package/fesm2022/yuuvis-client-framework-object-summary.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-versions.mjs +5 -2
- package/fesm2022/yuuvis-client-framework-object-versions.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-sort.mjs +120 -0
- package/fesm2022/yuuvis-client-framework-sort.mjs.map +1 -0
- package/forms/lib/elements/datetime/datetime.component.d.ts +1 -1
- package/lib/assets/i18n/de.json +6 -2
- package/lib/assets/i18n/en.json +6 -2
- package/metadata-form/lib/metadata-form-field/metadata-form-field.component.d.ts +3 -1
- package/metadata-form/lib/metadata-form-field/metadata-form-field.interface.d.ts +2 -0
- package/metadata-form/lib/object-metadata-element-label.directive.d.ts +2 -2
- package/object-details/index.d.ts +0 -1
- package/object-details/lib/object-details.module.d.ts +1 -1
- package/object-details/lib/object-metadata/object-metadata.component.d.ts +6 -0
- package/object-form/lib/object-form-element/object-form-element.component.d.ts +1 -0
- package/object-form/lib/object-form.service.d.ts +2 -0
- package/object-preview/lib/components/object-preview/object-preview.component.d.ts +3 -1
- package/object-summary/lib/object-summary/object-summary.component.d.ts +1 -8
- package/object-summary/lib/object-summary-data/object-summary-data.component.d.ts +18 -2
- package/object-versions/lib/object-versions.component.d.ts +2 -0
- package/package.json +8 -4
- package/sort/README.md +3 -0
- package/sort/index.d.ts +2 -0
- package/sort/lib/sort/models/index.d.ts +1 -0
- package/sort/lib/sort/models/sort.interface.d.ts +7 -0
- package/sort/lib/sort/sort.component.d.ts +19 -0
- /package/{object-details/lib → common/lib/components}/retention-badge/retention-badge.component.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-client-framework-object-details.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-details/src/lib/retention-badge/retention-badge.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/retention-badge/retention-badge.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-header/object-details-header.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-header/object-details-header.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-shell/object-details-shell.service.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-shell/object-details-shell.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-shell/object-details-shell.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-audit/object-audit.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-audit/object-audit.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details.module.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/form-section-group.pipe.ts","../../../../../libs/yuuvis/client-framework/object-details/src/yuuvis-client-framework-object-details.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, computed, inject, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DmsObject, LocaleDatePipe, RetentionService, RetentionState, TranslateModule } from '@yuuvis/client-core';\n\n@Component({\n selector: 'yuv-retention-badge',\n standalone: true,\n imports: [CommonModule, TranslateModule, LocaleDatePipe, MatIconModule],\n templateUrl: './retention-badge.component.html',\n styleUrl: './retention-badge.component.scss'\n})\nexport class RetentionBadgeComponent {\n #retention = inject(RetentionService);\n\n dmsObject = input.required<DmsObject>();\n retentionData = computed<RetentionState>(() => {\n return this.#retention.getRetentionState(this.dmsObject());\n });\n}\n","@let rd = retentionData();\n@if (rd.underRetention) {\n <div class=\"badge\">\n <span class=\"badge__icon\">\n <mat-icon class=\"ymt-icon--size-s\">lock_clock</mat-icon>\n </span>\n <span class=\"badge__label\">\n <span class=\"badge__label-truncated\">\n {{\n 'yuv.retention-badge.retain'\n | translate\n : {\n from: rd.start | localeDate: 'shortDate',\n until: rd.end | localeDate: 'shortDate'\n }\n }}\n </span>\n </span>\n </div>\n}\n","import { Component, contentChild, effect, inject, input, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DmsObject, ObjectConfigService, VirtualObjectType } from '@yuuvis/client-core';\nimport { RendererDirective, RendererDirectiveInput } from '@yuuvis/client-framework/renderer';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RetentionBadgeComponent } from '../retention-badge/retention-badge.component';\n\n/**\n * Component showing header data for a dms object. These will be\n * generated from the object config for the given object.\n * \n * You could inject a set of actions into the headers actions slot\n * by adding them to the components body:\n * \n * ```html\n * <yuv-object-details-header [dmsObject]=\"obj\">\n * <ng-template #yuvHeaderActions>...</ng-template>\n * </yuv-object-details-header>\n * ```\n */\n@Component({\n selector: 'yuv-object-details-header',\n imports: [CommonModule, MatIconModule, RendererDirective, RetentionBadgeComponent],\n templateUrl: './object-details-header.component.html',\n styleUrl: './object-details-header.component.scss'\n})\nexport class ObjectDetailsHeaderComponent {\n #objectConfig = inject(ObjectConfigService);\n\n headerActions = contentChild<TemplateRef<any>>('yuvHeaderActions');\n\n dmsObject = input<DmsObject | undefined>(undefined);\n #dmsObjectEffect = effect(() => {\n const o = this.dmsObject();\n const t = this.type();\n\n if(o && t) this.#setHeaderData();\n else this.headerData = undefined;\n });\n /**\n * Virtual object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n /**\n * Bucket of the object config to retrieve header data from\n */\n bucket = input<string | undefined>(undefined);\n\n headerData?: {\n title: RendererDirectiveInput;\n description?: RendererDirectiveInput;\n icon: string;\n };\n\n #setHeaderData() {\n const o = this.dmsObject();\n if (!o) {\n this.headerData = undefined;\n } else {\n const roc = this.#objectConfig.getResolvedObjectConfig(\n o.data, \n this.type(), \n this.bucket()\n );\n this.headerData = {\n title: roc.title,\n description: roc.description,\n icon: roc.icon?.value \n };\n }\n }\n}\n","@let dmsObj = dmsObject();\n@if (dmsObj && headerData) {\n <div class=\"icon\">\n <mat-icon>{{ headerData.icon }}</mat-icon>\n </div>\n <h2><ng-container *yuvRenderer=\"headerData.title\"></ng-container></h2>\n <div class=\"description\"><ng-container *yuvRenderer=\"headerData.description\"></ng-container></div>\n <div class=\"badges\">\n <yuv-retention-badge [dmsObject]=\"dmsObj\"></yuv-retention-badge>\n </div>\n @let actions = headerActions();\n @if (actions) {\n <div class=\"actions\">\n <ng-container *ngTemplateOutlet=\"actions\"></ng-container>\n </div>\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { DmsObject, DmsService, TranslateService, Utils } from '@yuuvis/client-core';\nimport { finalize } from 'rxjs';\n\n@Injectable()\nexport class ObjectDetailsShellService {\n id = Utils.uuid();\n #dmsService = inject(DmsService);\n readonly translate = inject(TranslateService);\n\n dmsObject = signal<DmsObject | undefined>(undefined);\n contextError = signal<string | undefined>(undefined);\n busy = signal<boolean>(false);\n\n fetchDmsObject(id: string): void {\n this.busy.set(true);\n this.#dmsService\n .getDmsObject(id)\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe({\n next: (dmsObject) => this.dmsObject.set(dmsObject),\n error: () => {\n this.dmsObject.set(undefined);\n this.contextError.set(this.translate.instant('yuv.object-metadata.context.load.error'));\n }\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DmsObject, EventService, RetentionState, VirtualObjectType, YuvEvent, YuvEventType } from '@yuuvis/client-core';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport { ObjectDetailsHeaderComponent } from '../object-details-header/object-details-header.component';\nimport { ObjectDetailsShellService } from './object-details-shell.service';\n\n/**\n * Wrapper component for details of a dms object. This component\n * provides a header based on the object configuration for the given object.\n * It will also take care of loading the object if you only provide the objects ID.\n */\n@Component({\n selector: 'yuv-object-details-shell',\n standalone: true,\n imports: [CommonModule, ObjectDetailsHeaderComponent, MatTooltipModule, BusyOverlayDirective],\n\n templateUrl: './object-details-shell.component.html',\n styleUrls: ['./object-details-shell.component.scss']\n})\nexport class ObjectDetailsShellComponent {\n #eventService = inject(EventService);\n #odShellService = inject(ObjectDetailsShellService);\n\n retentionState = signal<RetentionState | undefined>(undefined);\n contextError = this.#odShellService.contextError;\n dmsObject = this.#odShellService.dmsObject;\n busy = this.#odShellService.busy;\n\n /**\n * Virtual object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n /**\n * Bucket of the object config to retrieve header data from\n */\n bucket = input<string | undefined>(undefined);\n\n constructor() {\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n const o = e.data as DmsObject;\n const dmsObj = this.dmsObject();\n if (dmsObj && dmsObj.id === o.id) this.dmsObject.set(o);\n });\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_DELETED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n if (e.data?.id === this.dmsObject()?.id) {\n this.dmsObject.set(undefined);\n }\n });\n }\n}\n","@let dmsObj = dmsObject();\n@if (dmsObj) {\n <yuv-object-details-header [dmsObject]=\"dmsObj\" [type]=\"type()\" [bucket]=\"bucket()\"></yuv-object-details-header>\n <div class=\"content\" [yuvBusyOverlay]=\"busy()\">\n <ng-content></ng-content>\n </div>\n} @else {\n <div class=\"empty\">\n @if (contextError()) {\n <div class=\"error\">{{ contextError() }}</div>\n } @else {\n <!-- EMPTY -->\n }\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport {\n AuditEntry,\n AuditQueryResult,\n AuditService,\n DmsObject,\n EventService,\n LocaleDatePipe,\n SystemService,\n TranslateModule,\n TranslateService,\n YuvEvent,\n YuvEventType\n} from '@yuuvis/client-core';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { finalize } from 'rxjs';\nimport { MatIconModule } from '@angular/material/icon';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'yuv-object-audit',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, LocaleDatePipe, BusyOverlayDirective, TranslateModule, MatIconModule, YmtIconButtonDirective],\n templateUrl: './object-audit.component.html',\n styleUrl: './object-audit.component.scss'\n})\nexport class ObjectAuditComponent {\n private FILTER_CACHE_KEY = 'yuv.audit.filters';\n\n private _objectID?: string;\n private _objectTypeID?: string;\n\n icons = {\n filter: YUV_ICONS.filter,\n arrowNext: YUV_ICONS.arrowNext\n };\n\n yuvBusyOverlay = true;\n\n auditsRes?: AuditQueryResult;\n resolvedItems = signal<ResolvedAuditEntry[]>([]);\n searchPanelShow = false;\n error = false;\n busy = false;\n searchActions: { label: string; actions: string[] }[] = [];\n auditLabels: any = {};\n\n dmsObject = input<DmsObject | undefined>(undefined);\n\n #dmsObjectEffect = effect(() => {\n const o = this.dmsObject();\n if (!o) {\n this._objectID = undefined;\n this._objectTypeID = undefined;\n this.auditsRes = undefined;\n } else if (!this._objectID || this._objectID !== o.id) {\n this._objectID = o.id;\n this._objectTypeID = o.objectTypeId;\n this.query();\n } else {\n this.query();\n }\n });\n\n /**\n * A list of audits that should not be shown. Use the audit codes (like 100, 301, etc.).\n * This will also disable the corresponding filters.\n */\n skipActions = input<number[]>([]);\n\n /**\n * Whether or not to ignore admin and user separation of audit entries\n */\n allActions = input(false);\n\n get objectID() {\n return this._objectID;\n }\n\n constructor(\n private auditService: AuditService,\n private eventService: EventService,\n private system: SystemService,\n private translate: TranslateService\n ) {\n this.auditLabels = {\n a100: this.translate.instant('yuv.audit.label.create.metadata'),\n a101: this.translate.instant('yuv.audit.label.create.metadata.withcontent'),\n a110: this.translate.instant('yuv.audit.label.create.tag'),\n\n a200: this.translate.instant('yuv.audit.label.delete'),\n a201: this.translate.instant('yuv.audit.label.delete.content'), // #v\n a202: this.translate.instant('yuv.audit.label.delete.marked'),\n a210: this.translate.instant('yuv.audit.label.delete.tag'), // #v\n a220: this.translate.instant('yuv.audit.label.delete.version'), // #v\n\n a300: this.translate.instant('yuv.audit.label.update.metadata'),\n a301: this.translate.instant('yuv.audit.label.update.content'),\n a302: this.translate.instant('yuv.audit.label.update.metadata.withcontent'),\n a303: this.translate.instant('yuv.audit.label.update.move.content'),\n a310: this.translate.instant('yuv.audit.label.update.tag'),\n a325: this.translate.instant('yuv.audit.label.update.restore'),\n a340: this.translate.instant('yuv.audit.label.update.move'),\n\n a400: this.translate.instant('yuv.audit.label.get.content'),\n a401: this.translate.instant('yuv.audit.label.get.metadata'),\n a402: this.translate.instant('yuv.audit.label.get.rendition.text'),\n a403: this.translate.instant('yuv.audit.label.get.rendition.pdf'),\n a404: this.translate.instant('yuv.audit.label.get.rendition.thumbnail'),\n\n a10000: this.translate.instant('yuv.audit.label.get.custom')\n };\n\n this.eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n const dmsObject = e.data as DmsObject;\n // reload audit entries when update belongs to the current dms object\n if (dmsObject.id === this.objectID) {\n this.query();\n }\n });\n }\n\n private fetchAuditEntries() {\n if (!this._objectID || !this._objectTypeID) return;\n this.error = false;\n this.busy = true;\n\n this.auditService\n .getAuditEntries(this._objectID, { skipActions: this.skipActions() })\n .pipe(finalize(() => (this.busy = false)))\n .subscribe({\n next: (res: AuditQueryResult) => {\n this.auditsRes = res;\n this.resolvedItems.set(this.mapResult(res));\n },\n error: () => {\n this.onError();\n }\n });\n }\n\n private mapResult(res: AuditQueryResult): ResolvedAuditEntry[] {\n return (\n res.items\n // TODO: Remove this filter once the system:ren:text audit lifecycle planning is complete and the tag's purpose is fully defined.\n // https://help.optimal-systems.com/yuuvis/Momentum/latest/index.html#_content_renditions_asynchronous_full_text_indexing.html\n .filter((i) => !i.detail.includes('[system:ren:text, 1]'))\n .map((i) => {\n const r: ResolvedAuditEntry = { ...i, label: this.auditLabels['a' + i.action] };\n // tag related audits\n if ([110, 210, 310].includes(i.action)) {\n const params = this.getAuditEntryParams(i);\n console.log({ r });\n if (params) {\n r.more = `\n ${this.system.getLocalizedLabel(params[0]) ?? params[0]}: ${this.system.getLocalizedLabel(`${params[0]}:${params[1]}`) ?? params[0]}:${params[1]}\n `;\n }\n }\n // restore audit\n else if (i.action === 325) {\n const params = this.getAuditEntryParams(i);\n r.more = this.translate.instant('yuv.audit.label.update.restore.more', { version: params[0] || '[?]' });\n }\n // custom audits\n else if (i.action === 10000) {\n r.label = this.system.getLocalizedLabel(`audit:custom:${i.subaction}`) || `${i.subaction}`;\n }\n return r;\n })\n );\n }\n\n private getAuditEntryParams(auditItem: AuditEntry): string[] {\n const m = auditItem.detail.match(/\\[(.*?)\\]/);\n return m && m[1] ? m[1].split(',').map((i) => i.trim()) : [];\n }\n\n /**\n * Execute a query from the search panel.\n */\n query() {\n this.fetchAuditEntries();\n }\n\n goToPage(page: number) {\n if (this.auditsRes) {\n this.busy = true;\n this.auditService\n .getPage(this.auditsRes, page)\n .pipe(finalize(() => (this.busy = false)))\n .subscribe({\n next: (res: AuditQueryResult) => {\n this.auditsRes = res;\n this.resolvedItems.set(this.mapResult(res));\n },\n error: () => {\n this.onError();\n }\n });\n }\n }\n\n private onError() {\n this.auditsRes = undefined;\n this.error = true;\n }\n}\n\ninterface ResolvedAuditEntry extends AuditEntry {\n label: string;\n}\n","<div class=\"yuv-audit\" [ngClass]=\"{ singleEntry: auditsRes?.items?.length === 1, onPage: auditsRes && auditsRes.page > 1 }\" [yuvBusyOverlay]=\"busy\">\n @if (error) {\n <div class=\"error\">\n <div translate>yuv.audit.fetch.error</div>\n </div>\n }\n\n @if (auditsRes) {\n <!-- list of audits -->\n @let resItems = resolvedItems();\n @if (resItems.length) {\n <ul class=\"timeline\" [attr.aria-label]=\"'yuv.audit.timeline' | translate\">\n @for (item of resItems; track $index) {\n <li class=\"audit\" attr.aria-labelledby=\"'title-{{ $index }} creator-{{ $index }} date-{{ $index }}'\">\n <time [attr.datetime]=\"item.creationDate\" class=\"date\">{{ item.creationDate | localeDate }}</time>\n <div class=\"node\">\n <div class=\"label\">\n <span class=\"title\" id=\"title-{{ $index }}\">{{ item.label }}</span>\n </div>\n <div class=\"more meta\">{{ item.more }}</div>\n <div class=\"creator meta\" id=\"creator-{{ $index }}\">{{ item.createdBy.title }}</div>\n </div>\n </li>\n }\n </ul>\n } @else {\n <div class=\"empty\" translate>yuv.audit.result.empty</div>\n }\n\n <!-- controls -->\n @if (auditsRes.hasMoreItems || auditsRes.page > 1) {\n <div class=\"footer\" yuvOfflineDisabled>\n <div class=\"paging\">\n <button\n ymtIconButton\n [attr.aria-label]=\"'yuv.audit.label.paging.prev' | translate\"\n [disabled]=\"auditsRes.page === 1\"\n (click)=\"goToPage(auditsRes.page - 1)\"\n >\n <mat-icon>chevron_left</mat-icon>\n </button>\n <div class=\"page\">\n {{ auditsRes.page }}\n </div>\n <button\n ymtIconButton\n [attr.aria-label]=\"'yuv.audit.label.paging.next' | translate\"\n [disabled]=\"!auditsRes.hasMoreItems\"\n (click)=\"goToPage(auditsRes.page + 1)\"\n >\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n </div>\n }\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnDestroy, effect, inject, input, output, signal, viewChildren } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n DmsObject,\n DmsService,\n FlavoredDmsObject,\n NotificationService,\n ObjectTypeFlavor,\n PendingChangesService,\n Situation,\n SystemService,\n TranslateModule,\n TranslateService\n} from '@yuuvis/client-core';\nimport { FormStatusChangedEvent, ObjectFormComponent, ObjectFormOptions } from '@yuuvis/client-framework/object-form';\nimport { Subscription } from 'rxjs';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\n\n@Component({\n selector: 'yuv-object-metadata',\n standalone: true,\n imports: [CommonModule, ObjectFormComponent, \n BusyOverlayDirective,\n TranslateModule, MatButtonModule, MatIconModule, ReactiveFormsModule, YmtButtonDirective],\n templateUrl: './object-metadata.component.html',\n styleUrl: './object-metadata.component.scss',\n host: {\n '[class.empty]': 'empty()'\n }\n})\nexport class ObjectMetadataComponent implements OnDestroy {\n #pendingChanges = inject(PendingChangesService);\n #notificationService = inject(NotificationService);\n translate = inject(TranslateService);\n #system = inject(SystemService);\n #dmsService = inject(DmsService);\n\n objectForms = viewChildren<ObjectFormComponent>(ObjectFormComponent);\n\n #pendingTaskId?: string;\n #dmsObject?: DmsObject;\n #formSubscriptions: Subscription[] = [];\n #initialData: Record<string, unknown> = {};\n\n busy = signal<boolean>(false);\n empty = signal<boolean>(false);\n disableControls = input<boolean>(false);\n controlsVisible = signal<boolean>(false);\n\n // form of the dms object itself\n mainFormOptions = signal<ObjectFormOptions | undefined>(undefined);\n // forms off allpied flavors\n flavorFormOptions = signal<\n {\n id: string;\n label: string;\n icon?: string;\n svgIcon?: boolean;\n formOptions: ObjectFormOptions;\n }[]\n >([]);\n // state of all individual forms\n #formStates: Map<string, FormStatusChangedEvent> = new Map<string, FormStatusChangedEvent>();\n\n /**\n * Form situation, if not set default will be 'EDIT'\n */\n @Input() situation: Situation = Situation.EDIT;\n /**\n * Set to 'true' to prevent all metadata from being edited\n */\n @Input() formDisabled = false;\n\n dmsObject = input<DmsObject | undefined>();\n #dmsObjectEffect = effect(() => {\n this.#init(this.dmsObject());\n });\n\n flavoredDmsObject = input<FlavoredDmsObject | undefined>();\n #flavoredDmsObjectEffect = effect(() => {\n const flavoredDmsObject = this.flavoredDmsObject();\n this.#init(flavoredDmsObject?.object, flavoredDmsObject?.flavors);\n });\n combinedFormState?: FormStatusChangedEvent;\n\n /**\n * Emits the updated `DmsObject` when metadata have been saved.\n */\n indexDataSaved = output<DmsObject>();\n /**\n * Emits the current state of the metadata form.\n */\n statusChanged = output<FormStatusChangedEvent>();\n\n #init(object?: DmsObject, flavors?: ObjectTypeFlavor[]) {\n if (object && (!this.#dmsObject || this.#dmsObject !== object)) {\n this.#initialData = structuredClone(object.data);\n this.#objectToForm(object, flavors);\n }\n this.#dmsObject = object;\n }\n\n #objectToForm(object?: DmsObject, flavors?: ObjectTypeFlavor[]) {\n if (object) {\n const mappedFlavors: Record<string, ObjectTypeFlavor> = (flavors || []).reduce((acc, curr) => ({ ...acc, [curr.sot]: curr }), {});\n this.#system.getObjectTypeForms([object.objectTypeId, ...(flavors || []).map((f) => f.sot)], this.situation).subscribe({\n next: (res) => {\n this.mainFormOptions.set(\n res[object.objectTypeId]\n ? {\n formModel: res[object.objectTypeId],\n data: object.data,\n disabled: this.formDisabled || !object.permissions?.writeIndexData\n }\n : undefined\n );\n\n this.flavorFormOptions.set(\n Object.keys(res)\n .filter((id) => id !== object.objectTypeId)\n .map((id) => ({\n id,\n label: res[id].label,\n icon: mappedFlavors[id]?.icon,\n svgIcon: mappedFlavors[id]?.svgIcon,\n formOptions: {\n formModel: res[id],\n data: object.data\n }\n }))\n );\n // console.log(this.flavorFormOptions());\n this.empty.set(!this.mainFormOptions() && !this.flavorFormOptions().length);\n }\n });\n }\n }\n\n onFormStatusChanged(formId: string, evt: FormStatusChangedEvent) {\n this.#formStates.set(formId, evt);\n this.#getCombinedFormState();\n if (this.combinedFormState?.dirty) this.#startPending();\n else this.#finishPending();\n this.controlsVisible.set(!!this.combinedFormState?.dirty);\n if (this.combinedFormState) this.statusChanged.emit(this.combinedFormState);\n }\n\n #getCombinedFormState(): FormStatusChangedEvent {\n const combinedFormState = {\n dirty: false,\n indexdataChanged: false,\n invalid: false,\n data: {}\n };\n this.#formStates.forEach((s) => {\n if (s.dirty) {\n combinedFormState.dirty = s.dirty;\n }\n if (s.indexdataChanged) {\n combinedFormState.indexdataChanged = s.indexdataChanged;\n }\n if (s.invalid) {\n combinedFormState.invalid = s.invalid;\n }\n combinedFormState.data = { ...combinedFormState.data, ...s.data };\n });\n this.combinedFormState = combinedFormState;\n return this.combinedFormState;\n }\n\n #setCombinedFormPristine() {\n this.objectForms().forEach((f) => {\n f.setFormPristine();\n });\n }\n\n save() {\n if (this.#dmsObject && this.combinedFormState) {\n this.busy.set(true);\n this.#dmsService.updateDmsObject(this.#dmsObject.id, this.combinedFormState.data).subscribe({\n next: () => {\n this.#setCombinedFormPristine();\n this.indexDataSaved.emit(this.#dmsObject!);\n this.#finishPending();\n },\n error: (err) => {\n this.#notificationService.error(\n '',\n // this._dmsObject?.title || '',\n err.status === 404 ? this.translate.instant('yuv.object-metadata.context.load.error') : this.translate.instant('yuv.object-metadata.save.error')\n );\n },\n complete: () => {\n this.controlsVisible.set(false);\n this.busy.set(false);\n }\n });\n }\n }\n /**\n * Reset te form to its initial state\n */\n resetForm() {\n if (this.objectForms()?.length) {\n this.objectForms().forEach((f) => {\n f.resetForm();\n });\n this.#formStates.clear();\n }\n }\n\n #startPending() {\n // because this method will be called every time the form status changes,\n // pending task will only be started once until it was finished\n if (!this.#pendingChanges.hasPendingTask(this.#pendingTaskId || ' ')) {\n this.#pendingTaskId = this.#pendingChanges.startTask(this.translate.instant('yuv.object-metadata.pending-changes.alert'));\n }\n }\n\n #finishPending() {\n if (this.#pendingTaskId) this.#pendingChanges.finishTask(this.#pendingTaskId);\n }\n\n ngOnDestroy(): void {\n this.#formSubscriptions.forEach((s) => s.unsubscribe());\n }\n}\n","<main [yuvBusyOverlay]=\"busy()\">\n @if (empty()) {\n <p class=\"empty\">{{ 'yuv.object-metadata.empty.message' | translate }}</p>\n } @else {\n <yuv-object-form [formOptions]=\"mainFormOptions()\" (statusChanged)=\"onFormStatusChanged('main', $event)\"></yuv-object-form>\n\n @for (fo of flavorFormOptions(); track $index) {\n <details [attr.open]=\"$index === 0\">\n <summary>\n @if (fo.icon) {\n @if (fo.svgIcon) {\n <mat-icon [svgIcon]=\"fo.icon\"></mat-icon>\n } @else {\n <mat-icon>{{ fo.icon }}</mat-icon>\n }\n }\n <span>{{ fo.label }}</span\n ><mat-icon class=\"arr\">keyboard_arrow_down</mat-icon>\n </summary>\n <yuv-object-form [formOptions]=\"fo.formOptions\" (statusChanged)=\"onFormStatusChanged(fo.id, $event)\"></yuv-object-form>\n </details>\n }\n }\n</main>\n\n<footer [ngClass]=\"{ visible: !disableControls() && controlsVisible() }\">\n <div class=\"container\">\n <button ymtButton=\"secondary\" button-size=\"small\" \n [disabled]=\"busy()\"\n (click)=\"resetForm()\" [hidden]=\"!combinedFormState?.dirty\" [disabled]=\"!combinedFormState?.dirty\">\n {{ 'yuv.object-metadata.button.reset' | translate }}\n </button>\n <button\n ymtButton=\"primary\"\n button-size=\"small\"\n (click)=\"save()\"\n [disabled]=\"!combinedFormState?.dirty || combinedFormState?.invalid || busy()\"\n >\n {{ 'yuv.object-metadata.button.save' | translate }}\n </button>\n </div>\n</footer>\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, effect, inject, input, signal } from '@angular/core';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { DmsObject, FlavoredDmsObject, ObjectTypeFlavor, TranslateModule, UserService, VirtualObjectType } from '@yuuvis/client-core';\nimport { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';\nimport { ObjectAuditComponent } from './object-audit/object-audit.component';\nimport { ObjectDetailsShellComponent } from './object-details-shell/object-details-shell.component';\nimport { ObjectDetailsShellService } from './object-details-shell/object-details-shell.service';\nimport { ObjectMetadataComponent } from './object-metadata/object-metadata.component';\n\n@Component({\n selector: 'yuv-object-details',\n standalone: true,\n imports: [CommonModule, TranslateModule, MatTabsModule, ObjectDetailsShellComponent, ObjectPreviewComponent, ObjectMetadataComponent, ObjectAuditComponent],\n providers: [ObjectDetailsShellService],\n templateUrl: './object-details.component.html',\n styleUrls: ['./object-details.component.scss']\n})\nexport class ObjectDetailsComponent {\n readonly #userService = inject(UserService);\n #odShellService = inject(ObjectDetailsShellService);\n\n isAdvancedUser = this.#userService.isAdvancedUser;\n\n currentUser = signal(this.#userService.getCurrentUser());\n\n /**\n * ID to store the components layout state (splitted tabs, gutter position)\n */\n layoutSettingsID = signal<string | undefined>(undefined);\n\n /**\n * DmsObject to show the details for.\n */\n dmsObject = input<DmsObject | undefined>(undefined);\n _dmsObject = this.#odShellService.dmsObject;\n #dmsObjectEffect = effect(() => {\n this._dmsObject.set(this.dmsObject());\n });\n flavoredDmsObject = computed<FlavoredDmsObject | undefined>(() => {\n const o = this._dmsObject();\n const f = this.flavors();\n return o\n ? {\n object: o,\n flavors: f\n }\n : undefined;\n });\n\n /**\n * Flavors to take into account. These flavors define for example the metadata\n * of an object.\n */\n flavors = input<ObjectTypeFlavor[]>([]);\n\n /**\n * Virtual object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n\n /**\n * If the object config for the given type has been stored in a certain bucket, this\n * bucket can be provided here. If no bucket is set, the config will be retrieved\n * from the main object config\n */\n objectConfigBucket = input<string | undefined>(undefined);\n /**\n * ID of a DmsObject. The object will be fetched from the backend upfront.\n */\n objectId = input<string | undefined>(undefined);\n #objectIdEffect = effect(() => {\n const oid = this.objectId();\n if (oid) this.#odShellService.fetchDmsObject(oid);\n });\n\n onIndexdataSaved(updatedObject: DmsObject) {\n if (this._dmsObject) this._dmsObject.set(updatedObject);\n }\n\n // versionSelected(version: number) {\n // const nav = ['../..', 'version'];\n // this.#router.navigate([...nav, this.dmsObject?.version], { queryParams: { version }, relativeTo: this.#route });\n // }\n}\n","<yuv-object-details-shell [type]=\"type()\" [bucket]=\"objectConfigBucket()\">\n @let dmsObj = _dmsObject();\n <mat-tab-group>\n <!-- content -->\n <mat-tab [label]=\"'yuv.object-details.tabs.content.title' | translate\">\n <ng-template matTabContent>\n @if (dmsObj && dmsObj.content) {\n <yuv-object-preview [dmsObject]=\"dmsObj\"></yuv-object-preview>\n }\n </ng-template>\n </mat-tab>\n\n <!-- indexdata -->\n <mat-tab [label]=\"'yuv.object-metadata.tabs.indexdata.title' | translate\">\n <ng-template matTabContent>\n <yuv-object-metadata [flavoredDmsObject]=\"flavoredDmsObject()\" (indexDataSaved)=\"onIndexdataSaved($event)\"> </yuv-object-metadata>\n </ng-template>\n </mat-tab>\n <!-- history -->\n <mat-tab [label]=\"'yuv.object-metadata.tabs.history.title' | translate\">\n <ng-template matTabContent> <yuv-object-audit [dmsObject]=\"dmsObj\"></yuv-object-audit> </ng-template\n ></mat-tab>\n </mat-tab-group>\n</yuv-object-details-shell>\n","import { NgModule } from '@angular/core';\nimport { ObjectDetailsHeaderComponent } from './object-details-header/object-details-header.component';\nimport { ObjectDetailsShellComponent } from './object-details-shell/object-details-shell.component';\nimport { ObjectDetailsComponent } from './object-details.component';\nimport { ObjectMetadataComponent } from './object-metadata/object-metadata.component';\nimport { ObjectAuditComponent } from './object-audit/object-audit.component';\nimport { RetentionBadgeComponent } from './retention-badge/retention-badge.component';\n\nconst cmp = [\n ObjectDetailsComponent,\n ObjectDetailsHeaderComponent,\n ObjectDetailsShellComponent,\n ObjectMetadataComponent,\n ObjectAuditComponent,\n RetentionBadgeComponent\n]\n\n@NgModule({\n imports: cmp,\n exports: cmp\n})\nexport class YuvObjectDetailsModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Pipe({\n name: 'formSectionGroup',\n standalone: true \n})\nexport class FormSectionGroupPipe implements PipeTransform {\n transform(form: FormGroup, id: string): FormGroup {\n return form.get(id) as FormGroup;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yuuvis-client-framework-object-details.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-header/object-details-header.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-header/object-details-header.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-shell/object-details-shell.service.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-shell/object-details-shell.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-shell/object-details-shell.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-audit/object-audit.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-audit/object-audit.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details.module.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/form-section-group.pipe.ts","../../../../../libs/yuuvis/client-framework/object-details/src/yuuvis-client-framework-object-details.ts"],"sourcesContent":["import { Component, contentChild, effect, inject, input, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DmsObject, ObjectConfigService, VirtualObjectType } from '@yuuvis/client-core';\nimport { RendererDirective, RendererDirectiveInput } from '@yuuvis/client-framework/renderer';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RetentionBadgeComponent } from '@yuuvis/client-framework/common';\n\n/**\n * Component showing header data for a dms object. These will be\n * generated from the object config for the given object.\n * \n * You could inject a set of actions into the headers actions slot\n * by adding them to the components body:\n * \n * ```html\n * <yuv-object-details-header [dmsObject]=\"obj\">\n * <ng-template #yuvHeaderActions>...</ng-template>\n * </yuv-object-details-header>\n * ```\n */\n@Component({\n selector: 'yuv-object-details-header',\n imports: [CommonModule, MatIconModule, RendererDirective, RetentionBadgeComponent],\n templateUrl: './object-details-header.component.html',\n styleUrl: './object-details-header.component.scss'\n})\nexport class ObjectDetailsHeaderComponent {\n #objectConfig = inject(ObjectConfigService);\n\n headerActions = contentChild<TemplateRef<any>>('yuvHeaderActions');\n\n dmsObject = input<DmsObject | undefined>(undefined);\n #dmsObjectEffect = effect(() => {\n const o = this.dmsObject();\n const t = this.type();\n\n if(o && t) this.#setHeaderData();\n else this.headerData = undefined;\n });\n /**\n * Virtual object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n /**\n * Bucket of the object config to retrieve header data from\n */\n bucket = input<string | undefined>(undefined);\n\n headerData?: {\n title: RendererDirectiveInput;\n description?: RendererDirectiveInput;\n icon: string;\n };\n\n #setHeaderData() {\n const o = this.dmsObject();\n if (!o) {\n this.headerData = undefined;\n } else {\n const roc = this.#objectConfig.getResolvedObjectConfig(\n o.data, \n this.type(), \n this.bucket()\n );\n this.headerData = {\n title: roc.title,\n description: roc.description,\n icon: roc.icon?.value \n };\n }\n }\n}\n","@let dmsObj = dmsObject();\n@if (dmsObj && headerData) {\n <div class=\"icon\">\n <mat-icon>{{ headerData.icon }}</mat-icon>\n </div>\n <h2><ng-container *yuvRenderer=\"headerData.title\"></ng-container></h2>\n <div class=\"description\"><ng-container *yuvRenderer=\"headerData.description\"></ng-container></div>\n <div class=\"badges\">\n <yuv-retention-badge [dmsObject]=\"dmsObj\"></yuv-retention-badge>\n </div>\n @let actions = headerActions();\n @if (actions) {\n <div class=\"actions\">\n <ng-container *ngTemplateOutlet=\"actions\"></ng-container>\n </div>\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { DmsObject, DmsService, TranslateService, Utils } from '@yuuvis/client-core';\nimport { finalize } from 'rxjs';\n\n@Injectable()\nexport class ObjectDetailsShellService {\n id = Utils.uuid();\n #dmsService = inject(DmsService);\n readonly translate = inject(TranslateService);\n\n dmsObject = signal<DmsObject | undefined>(undefined);\n contextError = signal<string | undefined>(undefined);\n busy = signal<boolean>(false);\n\n fetchDmsObject(id: string): void {\n this.busy.set(true);\n this.#dmsService\n .getDmsObject(id)\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe({\n next: (dmsObject) => this.dmsObject.set(dmsObject),\n error: () => {\n this.dmsObject.set(undefined);\n this.contextError.set(this.translate.instant('yuv.object-metadata.context.load.error'));\n }\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DmsObject, EventService, RetentionState, VirtualObjectType, YuvEvent, YuvEventType } from '@yuuvis/client-core';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport { ObjectDetailsHeaderComponent } from '../object-details-header/object-details-header.component';\nimport { ObjectDetailsShellService } from './object-details-shell.service';\n\n/**\n * Wrapper component for details of a dms object. This component\n * provides a header based on the object configuration for the given object.\n * It will also take care of loading the object if you only provide the objects ID.\n */\n@Component({\n selector: 'yuv-object-details-shell',\n standalone: true,\n imports: [CommonModule, ObjectDetailsHeaderComponent, MatTooltipModule, BusyOverlayDirective],\n\n templateUrl: './object-details-shell.component.html',\n styleUrls: ['./object-details-shell.component.scss']\n})\nexport class ObjectDetailsShellComponent {\n #eventService = inject(EventService);\n #odShellService = inject(ObjectDetailsShellService);\n\n retentionState = signal<RetentionState | undefined>(undefined);\n contextError = this.#odShellService.contextError;\n dmsObject = this.#odShellService.dmsObject;\n busy = this.#odShellService.busy;\n\n /**\n * Virtual object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n /**\n * Bucket of the object config to retrieve header data from\n */\n bucket = input<string | undefined>(undefined);\n\n constructor() {\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n const o = e.data as DmsObject;\n const dmsObj = this.dmsObject();\n if (dmsObj && dmsObj.id === o.id) this.dmsObject.set(o);\n });\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_DELETED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n if (e.data?.id === this.dmsObject()?.id) {\n this.dmsObject.set(undefined);\n }\n });\n }\n}\n","@let dmsObj = dmsObject();\n@if (dmsObj) {\n <yuv-object-details-header [dmsObject]=\"dmsObj\" [type]=\"type()\" [bucket]=\"bucket()\"></yuv-object-details-header>\n <div class=\"content\" [yuvBusyOverlay]=\"busy()\">\n <ng-content></ng-content>\n </div>\n} @else {\n <div class=\"empty\">\n @if (contextError()) {\n <div class=\"error\">{{ contextError() }}</div>\n } @else {\n <!-- EMPTY -->\n }\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport {\n AuditEntry,\n AuditQueryResult,\n AuditService,\n DmsObject,\n EventService,\n LocaleDatePipe,\n SystemService,\n TranslateModule,\n TranslateService,\n YuvEvent,\n YuvEventType\n} from '@yuuvis/client-core';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { finalize } from 'rxjs';\nimport { MatIconModule } from '@angular/material/icon';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'yuv-object-audit',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, LocaleDatePipe, BusyOverlayDirective, TranslateModule, MatIconModule, YmtIconButtonDirective],\n templateUrl: './object-audit.component.html',\n styleUrl: './object-audit.component.scss'\n})\nexport class ObjectAuditComponent {\n private FILTER_CACHE_KEY = 'yuv.audit.filters';\n\n private _objectID?: string;\n private _objectTypeID?: string;\n\n icons = {\n filter: YUV_ICONS.filter,\n arrowNext: YUV_ICONS.arrowNext\n };\n\n yuvBusyOverlay = true;\n\n auditsRes?: AuditQueryResult;\n resolvedItems = signal<ResolvedAuditEntry[]>([]);\n searchPanelShow = false;\n error = false;\n busy = false;\n searchActions: { label: string; actions: string[] }[] = [];\n auditLabels: any = {};\n\n dmsObject = input<DmsObject | undefined>(undefined);\n\n #dmsObjectEffect = effect(() => {\n const o = this.dmsObject();\n if (!o) {\n this._objectID = undefined;\n this._objectTypeID = undefined;\n this.auditsRes = undefined;\n } else if (!this._objectID || this._objectID !== o.id) {\n this._objectID = o.id;\n this._objectTypeID = o.objectTypeId;\n this.query();\n } else {\n this.query();\n }\n });\n\n /**\n * A list of audits that should not be shown. Use the audit codes (like 100, 301, etc.).\n * This will also disable the corresponding filters.\n */\n skipActions = input<number[]>([]);\n\n /**\n * Whether or not to ignore admin and user separation of audit entries\n */\n allActions = input(false);\n\n get objectID() {\n return this._objectID;\n }\n\n constructor(\n private auditService: AuditService,\n private eventService: EventService,\n private system: SystemService,\n private translate: TranslateService\n ) {\n this.auditLabels = {\n a100: this.translate.instant('yuv.audit.label.create.metadata'),\n a101: this.translate.instant('yuv.audit.label.create.metadata.withcontent'),\n a110: this.translate.instant('yuv.audit.label.create.tag'),\n\n a200: this.translate.instant('yuv.audit.label.delete'),\n a201: this.translate.instant('yuv.audit.label.delete.content'), // #v\n a202: this.translate.instant('yuv.audit.label.delete.marked'),\n a210: this.translate.instant('yuv.audit.label.delete.tag'), // #v\n a220: this.translate.instant('yuv.audit.label.delete.version'), // #v\n\n a300: this.translate.instant('yuv.audit.label.update.metadata'),\n a301: this.translate.instant('yuv.audit.label.update.content'),\n a302: this.translate.instant('yuv.audit.label.update.metadata.withcontent'),\n a303: this.translate.instant('yuv.audit.label.update.move.content'),\n a310: this.translate.instant('yuv.audit.label.update.tag'),\n a325: this.translate.instant('yuv.audit.label.update.restore'),\n a340: this.translate.instant('yuv.audit.label.update.move'),\n\n a400: this.translate.instant('yuv.audit.label.get.content'),\n a401: this.translate.instant('yuv.audit.label.get.metadata'),\n a402: this.translate.instant('yuv.audit.label.get.rendition.text'),\n a403: this.translate.instant('yuv.audit.label.get.rendition.pdf'),\n a404: this.translate.instant('yuv.audit.label.get.rendition.thumbnail'),\n\n a10000: this.translate.instant('yuv.audit.label.get.custom')\n };\n\n this.eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n const dmsObject = e.data as DmsObject;\n // reload audit entries when update belongs to the current dms object\n if (dmsObject.id === this.objectID) {\n this.query();\n }\n });\n }\n\n private fetchAuditEntries() {\n if (!this._objectID || !this._objectTypeID) return;\n this.error = false;\n this.busy = true;\n\n this.auditService\n .getAuditEntries(this._objectID, { skipActions: this.skipActions() })\n .pipe(finalize(() => (this.busy = false)))\n .subscribe({\n next: (res: AuditQueryResult) => {\n this.auditsRes = res;\n this.resolvedItems.set(this.mapResult(res));\n },\n error: () => {\n this.onError();\n }\n });\n }\n\n private mapResult(res: AuditQueryResult): ResolvedAuditEntry[] {\n return (\n res.items\n // TODO: Remove this filter once the system:ren:text audit lifecycle planning is complete and the tag's purpose is fully defined.\n // https://help.optimal-systems.com/yuuvis/Momentum/latest/index.html#_content_renditions_asynchronous_full_text_indexing.html\n .filter((i) => !i.detail.includes('[system:ren:text, 1]'))\n .map((i) => {\n const r: ResolvedAuditEntry = { ...i, label: this.auditLabels['a' + i.action] };\n // tag related audits\n if ([110, 210, 310].includes(i.action)) {\n const params = this.getAuditEntryParams(i);\n console.log({ r });\n if (params) {\n r.more = `\n ${this.system.getLocalizedLabel(params[0]) ?? params[0]}: ${this.system.getLocalizedLabel(`${params[0]}:${params[1]}`) ?? params[0]}:${params[1]}\n `;\n }\n }\n // restore audit\n else if (i.action === 325) {\n const params = this.getAuditEntryParams(i);\n r.more = this.translate.instant('yuv.audit.label.update.restore.more', { version: params[0] || '[?]' });\n }\n // custom audits\n else if (i.action === 10000) {\n r.label = this.system.getLocalizedLabel(`audit:custom:${i.subaction}`) || `${i.subaction}`;\n }\n return r;\n })\n );\n }\n\n private getAuditEntryParams(auditItem: AuditEntry): string[] {\n const m = auditItem.detail.match(/\\[(.*?)\\]/);\n return m && m[1] ? m[1].split(',').map((i) => i.trim()) : [];\n }\n\n /**\n * Execute a query from the search panel.\n */\n query() {\n this.fetchAuditEntries();\n }\n\n goToPage(page: number) {\n if (this.auditsRes) {\n this.busy = true;\n this.auditService\n .getPage(this.auditsRes, page)\n .pipe(finalize(() => (this.busy = false)))\n .subscribe({\n next: (res: AuditQueryResult) => {\n this.auditsRes = res;\n this.resolvedItems.set(this.mapResult(res));\n },\n error: () => {\n this.onError();\n }\n });\n }\n }\n\n private onError() {\n this.auditsRes = undefined;\n this.error = true;\n }\n}\n\ninterface ResolvedAuditEntry extends AuditEntry {\n label: string;\n}\n","<div class=\"yuv-audit\" [ngClass]=\"{ singleEntry: auditsRes?.items?.length === 1, onPage: auditsRes && auditsRes.page > 1 }\" [yuvBusyOverlay]=\"busy\">\n @if (error) {\n <div class=\"error\">\n <div translate>yuv.audit.fetch.error</div>\n </div>\n }\n\n @if (auditsRes) {\n <!-- list of audits -->\n @let resItems = resolvedItems();\n @if (resItems.length) {\n <ul class=\"timeline\" [attr.aria-label]=\"'yuv.audit.timeline' | translate\">\n @for (item of resItems; track $index) {\n <li class=\"audit\" attr.aria-labelledby=\"'title-{{ $index }} creator-{{ $index }} date-{{ $index }}'\">\n <time [attr.datetime]=\"item.creationDate\" class=\"date\">{{ item.creationDate | localeDate }}</time>\n <div class=\"node\">\n <div class=\"label\">\n <span class=\"title\" id=\"title-{{ $index }}\">{{ item.label }}</span>\n </div>\n <div class=\"more meta\">{{ item.more }}</div>\n <div class=\"creator meta\" id=\"creator-{{ $index }}\">{{ item.createdBy.title }}</div>\n </div>\n </li>\n }\n </ul>\n } @else {\n <div class=\"empty\" translate>yuv.audit.result.empty</div>\n }\n\n <!-- controls -->\n @if (auditsRes.hasMoreItems || auditsRes.page > 1) {\n <div class=\"footer\" yuvOfflineDisabled>\n <div class=\"paging\">\n <button\n ymtIconButton\n [attr.aria-label]=\"'yuv.audit.label.paging.prev' | translate\"\n [disabled]=\"auditsRes.page === 1\"\n (click)=\"goToPage(auditsRes.page - 1)\"\n >\n <mat-icon>chevron_left</mat-icon>\n </button>\n <div class=\"page\">\n {{ auditsRes.page }}\n </div>\n <button\n ymtIconButton\n [attr.aria-label]=\"'yuv.audit.label.paging.next' | translate\"\n [disabled]=\"!auditsRes.hasMoreItems\"\n (click)=\"goToPage(auditsRes.page + 1)\"\n >\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n </div>\n }\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, inject, Input, input, OnDestroy, output, signal, viewChildren } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n DmsObject,\n DmsService,\n FlavoredDmsObject,\n NotificationService,\n ObjectTypeFlavor,\n PendingChangesService,\n Situation,\n SystemService,\n TranslateModule,\n TranslateService\n} from '@yuuvis/client-core';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport { FormStatusChangedEvent, ObjectFormComponent, ObjectFormOptions } from '@yuuvis/client-framework/object-form';\nimport { ObjectSummaryDataComponent } from '@yuuvis/client-framework/object-summary';\nimport { RendererDirectiveInput } from '@yuuvis/client-framework/renderer';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'yuv-object-metadata',\n standalone: true,\n imports: [\n CommonModule,\n ObjectFormComponent,\n ObjectSummaryDataComponent,\n BusyOverlayDirective,\n TranslateModule,\n MatButtonModule,\n MatIconModule,\n ReactiveFormsModule,\n YmtButtonDirective\n ],\n templateUrl: './object-metadata.component.html',\n styleUrl: './object-metadata.component.scss',\n host: {\n '[class.empty]': 'empty()'\n }\n})\nexport class ObjectMetadataComponent implements OnDestroy {\n #pendingChanges = inject(PendingChangesService);\n #notificationService = inject(NotificationService);\n translate = inject(TranslateService);\n #system = inject(SystemService);\n #dmsService = inject(DmsService);\n\n objectForms = viewChildren<ObjectFormComponent>(ObjectFormComponent);\n\n #pendingTaskId?: string;\n _dmsObject?: DmsObject;\n #formSubscriptions: Subscription[] = [];\n #initialData: Record<string, unknown> = {};\n\n busy = signal<boolean>(false);\n empty = signal<boolean>(false);\n disableControls = input<boolean>(false);\n controlsVisible = signal<boolean>(false);\n\n // form of the dms object itself\n mainFormOptions = signal<ObjectFormOptions | undefined>(undefined);\n // forms off allpied flavors\n flavorFormOptions = signal<\n {\n id: string;\n label: string;\n icon?: string;\n svgIcon?: boolean;\n formOptions: ObjectFormOptions;\n }[]\n >([]);\n // state of all individual forms\n #formStates: Map<string, FormStatusChangedEvent> = new Map<string, FormStatusChangedEvent>();\n baseData: {\n label: string;\n value: RendererDirectiveInput;\n }[] = [];\n\n /**\n * Form situation, if not set default will be 'EDIT'\n */\n @Input() situation: Situation = Situation.EDIT;\n /**\n * Set to 'true' to prevent all metadata from being edited\n */\n @Input() formDisabled = false;\n\n dmsObject = input<DmsObject | undefined>();\n #dmsObjectEffect = effect(() => {\n this.#init(this.dmsObject());\n });\n\n flavoredDmsObject = input<FlavoredDmsObject | undefined>();\n #flavoredDmsObjectEffect = effect(() => {\n const flavoredDmsObject = this.flavoredDmsObject();\n this.#init(flavoredDmsObject?.object, flavoredDmsObject?.flavors);\n });\n combinedFormState?: FormStatusChangedEvent;\n\n /**\n * Emits the updated `DmsObject` when metadata have been saved.\n */\n indexDataSaved = output<DmsObject>();\n /**\n * Emits the current state of the metadata form.\n */\n statusChanged = output<FormStatusChangedEvent>();\n\n #init(object?: DmsObject, flavors?: ObjectTypeFlavor[]) {\n if (object && (!this._dmsObject || this._dmsObject !== object)) {\n this.#initialData = structuredClone(object.data);\n this.#objectToForm(object, flavors);\n }\n this._dmsObject = object;\n }\n \n #objectToForm(object?: DmsObject, flavors?: ObjectTypeFlavor[]) {\n if (object) {\n const mappedFlavors: Record<string, ObjectTypeFlavor> = (flavors || []).reduce((acc, curr) => ({ ...acc, [curr.sot]: curr }), {});\n this.#system.getObjectTypeForms([object.objectTypeId, ...(flavors || []).map((f) => f.sot)], this.situation).subscribe({\n next: (res) => {\n this.mainFormOptions.set(\n res[object.objectTypeId]\n ? {\n formModel: res[object.objectTypeId],\n data: object.data,\n disabled: this.formDisabled || !object.permissions?.writeIndexData\n }\n : undefined\n );\n\n this.flavorFormOptions.set(\n Object.keys(res)\n .filter((id) => id !== object.objectTypeId)\n .map((id) => ({\n id,\n label: res[id].label,\n icon: mappedFlavors[id]?.icon,\n svgIcon: mappedFlavors[id]?.svgIcon,\n formOptions: {\n formModel: res[id],\n data: object.data\n }\n }))\n );\n // console.log(this.flavorFormOptions());\n this.empty.set(!this.mainFormOptions() && !this.flavorFormOptions().length);\n }\n });\n }\n }\n\n onFormStatusChanged(formId: string, evt: FormStatusChangedEvent) {\n this.#formStates.set(formId, evt);\n this.#getCombinedFormState();\n if (this.combinedFormState?.dirty) this.#startPending();\n else this.#finishPending();\n this.controlsVisible.set(!!this.combinedFormState?.dirty);\n if (this.combinedFormState) this.statusChanged.emit(this.combinedFormState);\n }\n\n #getCombinedFormState(): FormStatusChangedEvent {\n const combinedFormState = {\n dirty: false,\n indexdataChanged: false,\n invalid: false,\n data: {}\n };\n this.#formStates.forEach((s) => {\n if (s.dirty) {\n combinedFormState.dirty = s.dirty;\n }\n if (s.indexdataChanged) {\n combinedFormState.indexdataChanged = s.indexdataChanged;\n }\n if (s.invalid) {\n combinedFormState.invalid = s.invalid;\n }\n combinedFormState.data = { ...combinedFormState.data, ...s.data };\n });\n this.combinedFormState = combinedFormState;\n return this.combinedFormState;\n }\n\n #setCombinedFormPristine() {\n this.objectForms().forEach((f) => {\n f.setFormPristine();\n });\n }\n\n save() {\n if (this._dmsObject && this.combinedFormState) {\n this.busy.set(true);\n this.#dmsService.updateDmsObject(this._dmsObject.id, this.combinedFormState.data).subscribe({\n next: () => {\n this.#setCombinedFormPristine();\n this.indexDataSaved.emit(this._dmsObject!);\n this.#finishPending();\n },\n error: (err) => {\n this.#notificationService.error(\n '',\n // this._dmsObject?.title || '',\n err.status === 404 ? this.translate.instant('yuv.object-metadata.context.load.error') : this.translate.instant('yuv.object-metadata.save.error')\n );\n },\n complete: () => {\n this.controlsVisible.set(false);\n this.busy.set(false);\n }\n });\n }\n }\n /**\n * Reset te form to its initial state\n */\n resetForm() {\n if (this.objectForms()?.length) {\n this.objectForms().forEach((f) => {\n f.resetForm();\n });\n this.#formStates.clear();\n }\n }\n\n #startPending() {\n // because this method will be called every time the form status changes,\n // pending task will only be started once until it was finished\n if (!this.#pendingChanges.hasPendingTask(this.#pendingTaskId || ' ')) {\n this.#pendingTaskId = this.#pendingChanges.startTask(this.translate.instant('yuv.object-metadata.pending-changes.alert'));\n }\n }\n\n #finishPending() {\n if (this.#pendingTaskId) this.#pendingChanges.finishTask(this.#pendingTaskId);\n }\n\n ngOnDestroy(): void {\n this.#formSubscriptions.forEach((s) => s.unsubscribe());\n }\n}\n","<main [yuvBusyOverlay]=\"busy()\">\n @if (empty()) {\n <p class=\"empty\">{{ 'yuv.object-metadata.empty.message' | translate }}</p>\n } @else {\n <yuv-object-form [formOptions]=\"mainFormOptions()\" (statusChanged)=\"onFormStatusChanged('main', $event)\"></yuv-object-form>\n\n @for (fo of flavorFormOptions(); track $index) {\n <details [attr.open]=\"$index === 0\">\n <summary>\n @if (fo.icon) {\n @if (fo.svgIcon) {\n <mat-icon [svgIcon]=\"fo.icon\"></mat-icon>\n } @else {\n <mat-icon>{{ fo.icon }}</mat-icon>\n }\n }\n <span>{{ fo.label }}</span\n ><mat-icon class=\"arr\">keyboard_arrow_down</mat-icon>\n </summary>\n <yuv-object-form [formOptions]=\"fo.formOptions\" (statusChanged)=\"onFormStatusChanged(fo.id, $event)\"></yuv-object-form>\n </details>\n }\n\n <!-- base data -->\n @if (_dmsObject) {\n <yuv-object-summary-data [dmsObject]=\"_dmsObject\"></yuv-object-summary-data>\n }\n }\n</main>\n\n<footer [ngClass]=\"{ visible: !disableControls() && controlsVisible() }\">\n <div class=\"container\">\n <button\n ymtButton=\"secondary\"\n button-size=\"small\"\n [disabled]=\"busy()\"\n (click)=\"resetForm()\"\n [hidden]=\"!combinedFormState?.dirty\"\n [disabled]=\"!combinedFormState?.dirty\"\n >\n {{ 'yuv.object-metadata.button.reset' | translate }}\n </button>\n <button ymtButton=\"primary\" button-size=\"small\" (click)=\"save()\" [disabled]=\"!combinedFormState?.dirty || combinedFormState?.invalid || busy()\">\n {{ 'yuv.object-metadata.button.save' | translate }}\n </button>\n </div>\n</footer>\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, effect, inject, input, signal } from '@angular/core';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { DmsObject, FlavoredDmsObject, ObjectTypeFlavor, TranslateModule, UserService, VirtualObjectType } from '@yuuvis/client-core';\nimport { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';\nimport { ObjectAuditComponent } from './object-audit/object-audit.component';\nimport { ObjectDetailsShellComponent } from './object-details-shell/object-details-shell.component';\nimport { ObjectDetailsShellService } from './object-details-shell/object-details-shell.service';\nimport { ObjectMetadataComponent } from './object-metadata/object-metadata.component';\n\n@Component({\n selector: 'yuv-object-details',\n standalone: true,\n imports: [CommonModule, TranslateModule, MatTabsModule, ObjectDetailsShellComponent, ObjectPreviewComponent, ObjectMetadataComponent, ObjectAuditComponent],\n providers: [ObjectDetailsShellService],\n templateUrl: './object-details.component.html',\n styleUrls: ['./object-details.component.scss']\n})\nexport class ObjectDetailsComponent {\n readonly #userService = inject(UserService);\n #odShellService = inject(ObjectDetailsShellService);\n\n isAdvancedUser = this.#userService.isAdvancedUser;\n\n currentUser = signal(this.#userService.getCurrentUser());\n\n /**\n * ID to store the components layout state (splitted tabs, gutter position)\n */\n layoutSettingsID = signal<string | undefined>(undefined);\n\n /**\n * DmsObject to show the details for.\n */\n dmsObject = input<DmsObject | undefined>(undefined);\n _dmsObject = this.#odShellService.dmsObject;\n #dmsObjectEffect = effect(() => {\n this._dmsObject.set(this.dmsObject());\n });\n flavoredDmsObject = computed<FlavoredDmsObject | undefined>(() => {\n const o = this._dmsObject();\n const f = this.flavors();\n return o\n ? {\n object: o,\n flavors: f\n }\n : undefined;\n });\n\n /**\n * Flavors to take into account. These flavors define for example the metadata\n * of an object.\n */\n flavors = input<ObjectTypeFlavor[]>([]);\n\n /**\n * Virtual object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n\n /**\n * If the object config for the given type has been stored in a certain bucket, this\n * bucket can be provided here. If no bucket is set, the config will be retrieved\n * from the main object config\n */\n objectConfigBucket = input<string | undefined>(undefined);\n /**\n * ID of a DmsObject. The object will be fetched from the backend upfront.\n */\n objectId = input<string | undefined>(undefined);\n #objectIdEffect = effect(() => {\n const oid = this.objectId();\n if (oid) this.#odShellService.fetchDmsObject(oid);\n });\n\n onIndexdataSaved(updatedObject: DmsObject) {\n if (this._dmsObject) this._dmsObject.set(updatedObject);\n }\n\n // versionSelected(version: number) {\n // const nav = ['../..', 'version'];\n // this.#router.navigate([...nav, this.dmsObject?.version], { queryParams: { version }, relativeTo: this.#route });\n // }\n}\n","<yuv-object-details-shell [type]=\"type()\" [bucket]=\"objectConfigBucket()\">\n @let dmsObj = _dmsObject();\n <mat-tab-group>\n <!-- content -->\n <mat-tab [label]=\"'yuv.object-details.tabs.content.title' | translate\">\n <ng-template matTabContent>\n @if (dmsObj && dmsObj.content) {\n <yuv-object-preview [dmsObject]=\"dmsObj\"></yuv-object-preview>\n }\n </ng-template>\n </mat-tab>\n\n <!-- indexdata -->\n <mat-tab [label]=\"'yuv.object-metadata.tabs.indexdata.title' | translate\">\n <ng-template matTabContent>\n <yuv-object-metadata [flavoredDmsObject]=\"flavoredDmsObject()\" (indexDataSaved)=\"onIndexdataSaved($event)\"> </yuv-object-metadata>\n </ng-template>\n </mat-tab>\n <!-- history -->\n <mat-tab [label]=\"'yuv.object-metadata.tabs.history.title' | translate\">\n <ng-template matTabContent> <yuv-object-audit [dmsObject]=\"dmsObj\"></yuv-object-audit> </ng-template\n ></mat-tab>\n </mat-tab-group>\n</yuv-object-details-shell>\n","import { NgModule } from '@angular/core';\nimport { ObjectDetailsHeaderComponent } from './object-details-header/object-details-header.component';\nimport { ObjectDetailsShellComponent } from './object-details-shell/object-details-shell.component';\nimport { ObjectDetailsComponent } from './object-details.component';\nimport { ObjectMetadataComponent } from './object-metadata/object-metadata.component';\nimport { ObjectAuditComponent } from './object-audit/object-audit.component';\nimport { RetentionBadgeComponent } from '@yuuvis/client-framework/common';\n\nconst cmp = [\n ObjectDetailsComponent,\n ObjectDetailsHeaderComponent,\n ObjectDetailsShellComponent,\n ObjectMetadataComponent,\n ObjectAuditComponent,\n RetentionBadgeComponent\n]\n\n@NgModule({\n imports: cmp,\n exports: cmp\n})\nexport class YuvObjectDetailsModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Pipe({\n name: 'formSectionGroup',\n standalone: true \n})\nexport class FormSectionGroupPipe implements PipeTransform {\n transform(form: FormGroup, id: string): FormGroup {\n return form.get(id) as FormGroup;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1"],"mappings":"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"}
|
|
@@ -132,7 +132,7 @@ class DefaultApplyFlavorComponent extends AbstractApplyObjectFlavorComponent {
|
|
|
132
132
|
this.dialogRef.close();
|
|
133
133
|
}
|
|
134
134
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: DefaultApplyFlavorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
135
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.12", type: DefaultApplyFlavorComponent, isStandalone: true, selector: "yuv-default-apply-flavor", viewQueries: [{ propertyName: "objectForm", first: true, predicate: ObjectFormComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let o = dmsObject();\n@if (o) {\n <yuv-dialog [yuvBusyOverlay]=\"busyLoading()\" [headertitel]=\"'yuv.object-flavor.apply-flavor.headline' | translate: { name: flavorLabel() }\">\n <main>\n <yuv-split-view [gutterSize]=\"1\">\n <ng-template yuvSplitArea [size]=\"60\" [visible]=\"!!o.content\">\n @if (o.content) {\n <yuv-object-preview [objectId]=\"dmsObject().id\"></yuv-object-preview>\n }\n </ng-template>\n\n <ng-template yuvSplitArea [size]=\"40\">\n <div class=\"metadata\">\n @let fo = formOptions();\n @if (fo) {\n <yuv-object-form [inert]=\"busySaving()\" [formOptions]=\"fo\" (statusChanged)=\"onFormStatusChanged($event)\"></yuv-object-form>\n }\n </div>\n </ng-template>\n </yuv-split-view>\n </main>\n <footer>\n <button ymtButton=\"secondary\" mat-dialog-close [disabled]=\"busySaving()\">{{ 'yuv.object-flavor.apply-flavor.button.cancel' | translate }}</button>\n <button ymtButton=\"primary\" mat-dialog-close [ngClass]=\"{ spinning: busySaving() }\" [disabled]=\"applyDisabled()\" (click)=\"applyFlavor()\">\n {{ 'yuv.object-flavor.apply-flavor.button.apply' | translate }}\n </button>\n </footer>\n </yuv-dialog>\n}\n", styles: [":host{display:grid;overflow:hidden}:host main{overflow:hidden}:host yuv-split-view{--split-gutter-background-color: var(--ymt-outline-variant);flex:1}:host .metadata{overflow-y:auto}:host .metadata yuv-object-form{display:block;background-color:var(--ymt-surface-panel);border:1px solid var(--ymt-outline-variant);max-width:100%;margin-inline:auto;box-sizing:border-box}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: YuvSplitViewModule }, { kind: "directive", type: i4.SplitAreaDirective, selector: "[yuvSplitArea]", inputs: ["size", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "component", type: i4.SplitViewComponent, selector: "yuv-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: BusyOverlayDirective, selector: "[yuvBusyOverlay]", inputs: ["yuvBusyOverlay"] }, { kind: "component", type: ObjectFormComponent, selector: "yuv-object-form", inputs: ["formOptions", "inert", "elementExtensions", "isInnerTableForm"], outputs: ["statusChanged", "onFormReady"] }, { kind: "component", type: ObjectPreviewComponent, selector: "yuv-object-preview", inputs: ["objectId", "dmsObject", "version"] }, { kind: "component", type: DialogComponent, selector: "yuv-dialog", inputs: ["headertitel"] }, { kind: "directive", type: YmtButtonDirective, selector: "button[ymtButton], a[ymtButton]", inputs: ["ymtButton", "disabled", "aria-disabled", "disableRipple", "disabledInteractive", "button-size"] }] }); }
|
|
135
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.12", type: DefaultApplyFlavorComponent, isStandalone: true, selector: "yuv-default-apply-flavor", viewQueries: [{ propertyName: "objectForm", first: true, predicate: ObjectFormComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let o = dmsObject();\n@if (o) {\n <yuv-dialog [yuvBusyOverlay]=\"busyLoading()\" [headertitel]=\"'yuv.object-flavor.apply-flavor.headline' | translate: { name: flavorLabel() }\">\n <main>\n <yuv-split-view [gutterSize]=\"1\">\n <ng-template yuvSplitArea [size]=\"60\" [visible]=\"!!o.content\">\n @if (o.content) {\n <yuv-object-preview [objectId]=\"dmsObject().id\"></yuv-object-preview>\n }\n </ng-template>\n\n <ng-template yuvSplitArea [size]=\"40\">\n <div class=\"metadata\">\n @let fo = formOptions();\n @if (fo) {\n <yuv-object-form [inert]=\"busySaving()\" [formOptions]=\"fo\" (statusChanged)=\"onFormStatusChanged($event)\"></yuv-object-form>\n }\n </div>\n </ng-template>\n </yuv-split-view>\n </main>\n <footer>\n <button ymtButton=\"secondary\" mat-dialog-close [disabled]=\"busySaving()\">{{ 'yuv.object-flavor.apply-flavor.button.cancel' | translate }}</button>\n <button ymtButton=\"primary\" mat-dialog-close [ngClass]=\"{ spinning: busySaving() }\" [disabled]=\"applyDisabled()\" (click)=\"applyFlavor()\">\n {{ 'yuv.object-flavor.apply-flavor.button.apply' | translate }}\n </button>\n </footer>\n </yuv-dialog>\n}\n", styles: [":host{display:grid;overflow:hidden}:host main{overflow:hidden}:host yuv-split-view{--split-gutter-background-color: var(--ymt-outline-variant);flex:1}:host .metadata{overflow-y:auto}:host .metadata yuv-object-form{display:block;background-color:var(--ymt-surface-panel);border:1px solid var(--ymt-outline-variant);max-width:100%;margin-inline:auto;box-sizing:border-box}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: YuvSplitViewModule }, { kind: "directive", type: i4.SplitAreaDirective, selector: "[yuvSplitArea]", inputs: ["size", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "component", type: i4.SplitViewComponent, selector: "yuv-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: BusyOverlayDirective, selector: "[yuvBusyOverlay]", inputs: ["yuvBusyOverlay", "yuvBusyOverlayConfig"] }, { kind: "component", type: ObjectFormComponent, selector: "yuv-object-form", inputs: ["formOptions", "inert", "elementExtensions", "isInnerTableForm"], outputs: ["statusChanged", "onFormReady"] }, { kind: "component", type: ObjectPreviewComponent, selector: "yuv-object-preview", inputs: ["objectId", "dmsObject", "version", "metadata"] }, { kind: "component", type: DialogComponent, selector: "yuv-dialog", inputs: ["headertitel"] }, { kind: "directive", type: YmtButtonDirective, selector: "button[ymtButton], a[ymtButton]", inputs: ["ymtButton", "disabled", "aria-disabled", "disableRipple", "disabledInteractive", "button-size"] }] }); }
|
|
136
136
|
}
|
|
137
137
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: DefaultApplyFlavorComponent, decorators: [{
|
|
138
138
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-client-framework-object-flavor.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/flavor-chip/flavor-chip.component.ts","../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/flavor-chip/flavor-chip.component.html","../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/abstract-apply-object-flavor/abstract-apply-object-flavor.component.ts","../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/default-apply-flavor/default-apply-flavor.component.ts","../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/default-apply-flavor/default-apply-flavor.component.html","../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/object-flavor-picker/object-flavor-picker.component.ts","../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/object-flavor-picker/object-flavor-picker.component.html","../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/object-flavor/object-flavor.component.ts","../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/object-flavor/object-flavor.component.html","../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/abstract-apply-create-flavor/abstract-apply-create-flavor.component.ts","../../../../../libs/yuuvis/client-framework/object-flavor/src/yuuvis-client-framework-object-flavor.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, computed, inject, input, output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { SystemService, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { ObjectFlavor } from '@yuuvis/client-shell-core';\n\n@Component({\n selector: 'yuv-flavor-chip',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule, TranslateModule],\n templateUrl: './flavor-chip.component.html',\n styleUrl: './flavor-chip.component.scss'\n})\nexport class FlavorChipComponent {\n private translate = inject(TranslateService);\n #system = inject(SystemService);\n\n flavor = input.required<ObjectFlavor>();\n labels = computed(() => {\n const flavor = this.flavor();\n return {\n name: this.#system.getLocalizedLabel(flavor.id) || this.translate.instant(flavor.id),\n description: this.#system.getLocalizedDescription(flavor.id) || (flavor.descriptionKey ? this.translate.instant(flavor.descriptionKey) : undefined)\n };\n });\n enableRemove = input<boolean>();\n enableDescription = input<boolean>();\n\n flavorRemove = output();\n\n remove(e: MouseEvent | KeyboardEvent) {\n e.preventDefault();\n e.stopPropagation();\n this.flavorRemove.emit();\n }\n}\n","@let fi = flavor().icon;\n@if (fi) {\n @if (flavor().svgIcon) {\n <mat-icon [svgIcon]=\"fi\"></mat-icon>\n } @else {\n <mat-icon>{{ fi }}</mat-icon>\n }\n} @else {\n <div class=\"empty-icon\"></div>\n}\n@let lb = labels();\n<div>\n {{ lb.name }}\n @if (enableDescription()) {\n <span class=\"description\">{{ lb.description }}</span>\n }\n</div>\n@if (enableRemove()) {\n <button mat-icon-button class=\"ymt-icon-button--size-s\" (click)=\"remove($event)\">\n <mat-icon>close</mat-icon>\n </button>\n}\n","import { Component, inject, input } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DmsObject } from '@yuuvis/client-core';\nimport { ObjectFlavor } from '@yuuvis/client-shell-core';\n\n@Component({\n selector: 'yuv-apply-object-flavor',\n standalone: true,\n imports: [],\n template: '',\n styles: ''\n})\nexport abstract class AbstractApplyObjectFlavorComponent {\n protected readonly dialogData = inject<any>(MAT_DIALOG_DATA);\n protected readonly dialogRef = inject(MatDialogRef<any>);\n // the dmsObject the flavor should be applied to\n dmsObject = input<DmsObject>(this.dialogData.dmsObject);\n // the flavor that should be applied\n flavor = input<ObjectFlavor>(this.dialogData.flavor);\n // Optional data \n data = input<any>(this.dialogData.data);\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, effect, inject, signal, untracked, viewChild } from '@angular/core';\nimport { Situation, SystemService, TranslateModule, TranslateService } from '@yuuvis/client-core';\n\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { BusyOverlayDirective, DialogComponent } from '@yuuvis/client-framework/common';\nimport { FormStatusChangedEvent, ObjectFormComponent, ObjectFormOptions } from '@yuuvis/client-framework/object-form';\nimport { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';\nimport { YuvSplitViewModule } from '@yuuvis/client-framework/split-view';\nimport { ObjectFlavor, ShellService } from '@yuuvis/client-shell-core';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { finalize } from 'rxjs/operators';\nimport { AbstractApplyObjectFlavorComponent } from '../abstract-apply-object-flavor/abstract-apply-object-flavor.component';\n\n@Component({\n selector: 'yuv-default-apply-flavor',\n imports: [\n CommonModule,\n TranslateModule,\n MatDialogModule,\n YuvSplitViewModule,\n BusyOverlayDirective,\n ObjectFormComponent,\n ObjectPreviewComponent,\n DialogComponent,\n YmtButtonDirective\n ],\n templateUrl: './default-apply-flavor.component.html',\n styleUrl: './default-apply-flavor.component.scss'\n})\nexport class DefaultApplyFlavorComponent extends AbstractApplyObjectFlavorComponent {\n #system = inject(SystemService);\n #shell = inject(ShellService);\n private translate = inject(TranslateService);\n\n objectForm = viewChild(ObjectFormComponent);\n\n flavorLabel = computed(() => (this.flavor().origin === 'app' ? this.translate.instant(this.flavor().id) : this.#system.getLocalizedLabel(this.flavor().id)));\n #flavorEffect = effect(() => {\n const f = this.flavor();\n untracked(() => {\n if (f) this.#loadForm(f);\n });\n });\n\n error = signal<boolean>(false);\n applyDisabled = signal<boolean>(true);\n busyLoading = signal<boolean>(false);\n busySaving = signal<boolean>(false);\n formOptions = signal<ObjectFormOptions | null>(null);\n\n #loadForm(f: ObjectFlavor) {\n this.busyLoading.set(true);\n this.#system\n .getObjectTypeForm(f.sot, Situation.EDIT)\n .pipe(finalize(() => this.busyLoading.set(false)))\n .subscribe({\n next: (form) => {\n this.formOptions.set({\n formModel: form,\n data: {}\n });\n }\n });\n }\n\n onFormStatusChanged(status: FormStatusChangedEvent) {\n this.applyDisabled.set(status.invalid);\n }\n\n applyFlavor() {\n const of = this.objectForm();\n const data: Record<string, unknown> = of ? of.getFormData() : {};\n this.busySaving.set(true);\n this.#shell\n .applyObjectFlavor(this.dmsObject(), this.flavor(), data)\n .pipe(finalize(() => this.busySaving.set(false)))\n .subscribe({\n next: () => this.close()\n // TODO: handle error\n });\n }\n\n close() {\n this.dialogRef.close();\n }\n}\n","@let o = dmsObject();\n@if (o) {\n <yuv-dialog [yuvBusyOverlay]=\"busyLoading()\" [headertitel]=\"'yuv.object-flavor.apply-flavor.headline' | translate: { name: flavorLabel() }\">\n <main>\n <yuv-split-view [gutterSize]=\"1\">\n <ng-template yuvSplitArea [size]=\"60\" [visible]=\"!!o.content\">\n @if (o.content) {\n <yuv-object-preview [objectId]=\"dmsObject().id\"></yuv-object-preview>\n }\n </ng-template>\n\n <ng-template yuvSplitArea [size]=\"40\">\n <div class=\"metadata\">\n @let fo = formOptions();\n @if (fo) {\n <yuv-object-form [inert]=\"busySaving()\" [formOptions]=\"fo\" (statusChanged)=\"onFormStatusChanged($event)\"></yuv-object-form>\n }\n </div>\n </ng-template>\n </yuv-split-view>\n </main>\n <footer>\n <button ymtButton=\"secondary\" mat-dialog-close [disabled]=\"busySaving()\">{{ 'yuv.object-flavor.apply-flavor.button.cancel' | translate }}</button>\n <button ymtButton=\"primary\" mat-dialog-close [ngClass]=\"{ spinning: busySaving() }\" [disabled]=\"applyDisabled()\" (click)=\"applyFlavor()\">\n {{ 'yuv.object-flavor.apply-flavor.button.apply' | translate }}\n </button>\n </footer>\n </yuv-dialog>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { DmsObject, TranslateModule } from '@yuuvis/client-core';\nimport { DialogComponent } from '@yuuvis/client-framework/common';\nimport { YuvListModule } from '@yuuvis/client-framework/list';\nimport { ObjectFlavor, ShellService } from '@yuuvis/client-shell-core';\nimport { DefaultApplyFlavorComponent } from '../default-apply-flavor/default-apply-flavor.component';\nimport { FlavorChipComponent } from '../flavor-chip/flavor-chip.component';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'yuv-object-flavor-picker',\n standalone: true,\n imports: [CommonModule, YuvListModule, DialogComponent, MatButtonModule, MatDialogModule, FlavorChipComponent, TranslateModule, YmtButtonDirective],\n templateUrl: './object-flavor-picker.component.html',\n styleUrl: './object-flavor-picker.component.scss',\n host: {\n '[class.cmp]': '!!applyComponent'\n }\n})\nexport class ObjectFlavorPickerComponent {\n #shell = inject(ShellService);\n #dialogData = inject<any>(MAT_DIALOG_DATA);\n readonly #dialogRef = inject(MatDialogRef<ObjectFlavorPickerComponent>);\n\n applicableFlavors: ObjectFlavor[] = this.#dialogData.applicableFlavors;\n #dmsObject: DmsObject = this.#dialogData.dmsObject;\n\n itemSelected(idx: number[]) {\n const flavor = this.applicableFlavors[idx[0]];\n if (this.#dmsObject && flavor)\n this.#shell\n .triggerApplyObjectFlavor(this.#dmsObject, flavor, undefined, flavor.useDefaultApplyComponent ? DefaultApplyFlavorComponent : undefined)\n .subscribe({\n next: () => {\n this.#dialogRef.close();\n }\n });\n }\n}\n","<yuv-dialog [headertitel]=\"'yuv.object-flavor.picker.title' | translate\">\n <main>\n <p>{{ 'yuv.object-flavor.picker.text' | translate }}</p>\n <yuv-list (itemSelect)=\"itemSelected($event)\" selectOnEnter=\"true\">\n @for (f of applicableFlavors; track $index) {\n <yuv-flavor-chip [flavor]=\"f\" [enableDescription]=\"true\" yuvListItem></yuv-flavor-chip>\n }\n </yuv-list>\n </main>\n <footer>\n <button ymtButton=\"secondary\" mat-dialog-close>{{ 'yuv.object-flavor.picker.button.cancel' | translate }}</button>\n </footer>\n</yuv-dialog>\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, HostAttributeToken, inject, input, output, signal, untracked, viewChild } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DmsObject, SystemService, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { ConfirmService, DragScrollDirective } from '@yuuvis/client-framework/common';\nimport { ListComponent, YuvListModule } from '@yuuvis/client-framework/list';\nimport { ObjectFlavor, ShellService } from '@yuuvis/client-shell-core';\nimport { of, switchMap } from 'rxjs';\nimport { FlavorChipComponent } from '../flavor-chip/flavor-chip.component';\nimport { ObjectFlavorPickerComponent } from '../object-flavor-picker/object-flavor-picker.component';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\n\n@Component({\n selector: 'yuv-object-flavor',\n standalone: true,\n imports: [CommonModule, FlavorChipComponent, \n MatTooltipModule, MatProgressBarModule,\n DragScrollDirective, MatIconModule, MatButtonModule, YuvListModule, TranslateModule],\n templateUrl: './object-flavor.component.html',\n styleUrl: './object-flavor.component.scss',\n host: {\n '[attr.aria-hidden]': 'hidden()',\n '[class.busy]': 'busy()',\n '[class.selection]': 'selectedIndex() > -1',\n '[class.selectionDisabled]': 'disableSelection'\n }\n})\nexport class ObjectFlavorComponent {\n #shell = inject(ShellService);\n #dialog = inject(MatDialog);\n #confirm = inject(ConfirmService);\n #system = inject(SystemService);\n private translate = inject(TranslateService);\n\n list = viewChild(ListComponent);\n\n dmsObject = input.required<DmsObject>();\n #dmsObjectEffect = effect(() => {\n const o = this.dmsObject();\n const listCmp = this.list();\n if (o)\n untracked(() => {\n this.#getAppliedFlavors(o);\n if (listCmp) listCmp.clear(true);\n });\n });\n\n flavorSelect = output<ObjectFlavor | undefined>();\n\n appliedFlavors: ObjectFlavor[] = [];\n applicableFlavors: ObjectFlavor[] = [];\n\n hidden = signal<boolean>(false);\n busy = signal<boolean>(false);\n\n selectedIndex = signal<number>(-1);\n\n disableSelection: boolean = (inject(new HostAttributeToken('disableSelection'), { optional: true }) || 'false') === 'true';\n\n clearSelection() {\n const listCmp = this.list();\n if (listCmp) listCmp.clear();\n this.selectedIndex.set(-1);\n this.flavorSelect.emit(undefined);\n }\n\n onItemsSelect(idx: number[]) {\n const ci = idx[0];\n this.selectedIndex.set(ci);\n this.flavorSelect.emit(this.appliedFlavors[ci]);\n }\n\n startApplyFlavor() {\n this.#dialog.open(ObjectFlavorPickerComponent, {\n data: {\n applicableFlavors: this.applicableFlavors,\n dmsObject: structuredClone(this.dmsObject())\n }\n });\n }\n\n removeFlavor(flavor: ObjectFlavor, index: number) {\n const o = this.dmsObject();\n if (o) {\n this.busy.set(true);\n this.#confirm\n .confirm({\n message: this.translate.instant('yuv.object-flavor.flavor.remove.confirm.message', {\n flavor: this.#shell.getFlavorLabel(flavor.id),\n })\n })\n .pipe(switchMap((confirmed: boolean) => (confirmed ? this.#shell.removeObjectFlavor(o, flavor) : of(undefined))))\n .subscribe({\n next: () => {\n if (index === this.selectedIndex() || !this.appliedFlavors.length) this.clearSelection();\n this.busy.set(false);\n },\n error: () => {\n // TODO: error handling\n this.busy.set(false);\n }\n });\n }\n }\n\n #getAppliedFlavors(dmsObject: DmsObject) {\n const res = this.#shell.getAppliedObjectFlavors(dmsObject);\n this.appliedFlavors = res.applied;\n this.applicableFlavors = res.applicable;\n this.hidden.set(this.applicableFlavors.length === 0 && this.appliedFlavors.length === 0);\n }\n}\n","\n<div class=\"object-flavor\">\n <span class=\"label\">{{ 'yuv.object-flavor.label' | translate }}</span>\n@if (applicableFlavors.length) {\n <button mat-icon-button class=\"add ymt-icon-button--size-s secondary\"\n [matTooltip]=\"'yuv.object-flavor.button.add' | translate\" (click)=\"startApplyFlavor()\">\n <mat-icon>add</mat-icon>\n </button>\n}\n</div>\n@if (appliedFlavors.length) {\n <yuv-list horizontal=\"true\" [disableSelection]=\"disableSelection\" (itemSelect)=\"onItemsSelect($event)\" yuvDragScroll>\n @for (f of appliedFlavors; track f.id) {\n <yuv-flavor-chip yuvListItem [flavor]=\"f\" [enableRemove]=\"true\" (flavorRemove)=\"removeFlavor(f, $index)\"></yuv-flavor-chip>\n }\n </yuv-list>\n}\n<button mat-icon-button class=\"clear\" [matTooltip]=\"'yuv.object-flavor.button.clear-selection' | translate\" (click)=\"clearSelection()\">\n <mat-icon>close</mat-icon>\n</button>\n\n@if (busy()) {\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, output, signal } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { ObjectCreateFlavor } from '@yuuvis/client-core';\n\n@Component({\n selector: 'yuv-abstract-apply-create-flavor',\n standalone: true,\n imports: [CommonModule],\n template: ''\n})\nexport abstract class AbstractApplyCreateFlavorComponent {\n #dialogData = inject<any>(MAT_DIALOG_DATA);\n readonly #dialogRef = inject(MatDialogRef<any>);\n createdObjectIDs = signal<string[]>(this.#dialogData.createdObjectIDs);\n flavor = signal<ObjectCreateFlavor>(this.#dialogData.flavor);\n data = signal<any>(this.#dialogData.data);\n cancel = output();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i4","i5","i6"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yuuvis-client-framework-object-flavor.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/flavor-chip/flavor-chip.component.ts","../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/flavor-chip/flavor-chip.component.html","../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/abstract-apply-object-flavor/abstract-apply-object-flavor.component.ts","../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/default-apply-flavor/default-apply-flavor.component.ts","../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/default-apply-flavor/default-apply-flavor.component.html","../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/object-flavor-picker/object-flavor-picker.component.ts","../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/object-flavor-picker/object-flavor-picker.component.html","../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/object-flavor/object-flavor.component.ts","../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/object-flavor/object-flavor.component.html","../../../../../libs/yuuvis/client-framework/object-flavor/src/lib/abstract-apply-create-flavor/abstract-apply-create-flavor.component.ts","../../../../../libs/yuuvis/client-framework/object-flavor/src/yuuvis-client-framework-object-flavor.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, computed, inject, input, output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { SystemService, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { ObjectFlavor } from '@yuuvis/client-shell-core';\n\n@Component({\n selector: 'yuv-flavor-chip',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule, TranslateModule],\n templateUrl: './flavor-chip.component.html',\n styleUrl: './flavor-chip.component.scss'\n})\nexport class FlavorChipComponent {\n private translate = inject(TranslateService);\n #system = inject(SystemService);\n\n flavor = input.required<ObjectFlavor>();\n labels = computed(() => {\n const flavor = this.flavor();\n return {\n name: this.#system.getLocalizedLabel(flavor.id) || this.translate.instant(flavor.id),\n description: this.#system.getLocalizedDescription(flavor.id) || (flavor.descriptionKey ? this.translate.instant(flavor.descriptionKey) : undefined)\n };\n });\n enableRemove = input<boolean>();\n enableDescription = input<boolean>();\n\n flavorRemove = output();\n\n remove(e: MouseEvent | KeyboardEvent) {\n e.preventDefault();\n e.stopPropagation();\n this.flavorRemove.emit();\n }\n}\n","@let fi = flavor().icon;\n@if (fi) {\n @if (flavor().svgIcon) {\n <mat-icon [svgIcon]=\"fi\"></mat-icon>\n } @else {\n <mat-icon>{{ fi }}</mat-icon>\n }\n} @else {\n <div class=\"empty-icon\"></div>\n}\n@let lb = labels();\n<div>\n {{ lb.name }}\n @if (enableDescription()) {\n <span class=\"description\">{{ lb.description }}</span>\n }\n</div>\n@if (enableRemove()) {\n <button mat-icon-button class=\"ymt-icon-button--size-s\" (click)=\"remove($event)\">\n <mat-icon>close</mat-icon>\n </button>\n}\n","import { Component, inject, input } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DmsObject } from '@yuuvis/client-core';\nimport { ObjectFlavor } from '@yuuvis/client-shell-core';\n\n@Component({\n selector: 'yuv-apply-object-flavor',\n standalone: true,\n imports: [],\n template: '',\n styles: ''\n})\nexport abstract class AbstractApplyObjectFlavorComponent {\n protected readonly dialogData = inject<any>(MAT_DIALOG_DATA);\n protected readonly dialogRef = inject(MatDialogRef<any>);\n // the dmsObject the flavor should be applied to\n dmsObject = input<DmsObject>(this.dialogData.dmsObject);\n // the flavor that should be applied\n flavor = input<ObjectFlavor>(this.dialogData.flavor);\n // Optional data \n data = input<any>(this.dialogData.data);\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, effect, inject, signal, untracked, viewChild } from '@angular/core';\nimport { Situation, SystemService, TranslateModule, TranslateService } from '@yuuvis/client-core';\n\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { BusyOverlayDirective, DialogComponent } from '@yuuvis/client-framework/common';\nimport { FormStatusChangedEvent, ObjectFormComponent, ObjectFormOptions } from '@yuuvis/client-framework/object-form';\nimport { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';\nimport { YuvSplitViewModule } from '@yuuvis/client-framework/split-view';\nimport { ObjectFlavor, ShellService } from '@yuuvis/client-shell-core';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { finalize } from 'rxjs/operators';\nimport { AbstractApplyObjectFlavorComponent } from '../abstract-apply-object-flavor/abstract-apply-object-flavor.component';\n\n@Component({\n selector: 'yuv-default-apply-flavor',\n imports: [\n CommonModule,\n TranslateModule,\n MatDialogModule,\n YuvSplitViewModule,\n BusyOverlayDirective,\n ObjectFormComponent,\n ObjectPreviewComponent,\n DialogComponent,\n YmtButtonDirective\n ],\n templateUrl: './default-apply-flavor.component.html',\n styleUrl: './default-apply-flavor.component.scss'\n})\nexport class DefaultApplyFlavorComponent extends AbstractApplyObjectFlavorComponent {\n #system = inject(SystemService);\n #shell = inject(ShellService);\n private translate = inject(TranslateService);\n\n objectForm = viewChild(ObjectFormComponent);\n\n flavorLabel = computed(() => (this.flavor().origin === 'app' ? this.translate.instant(this.flavor().id) : this.#system.getLocalizedLabel(this.flavor().id)));\n #flavorEffect = effect(() => {\n const f = this.flavor();\n untracked(() => {\n if (f) this.#loadForm(f);\n });\n });\n\n error = signal<boolean>(false);\n applyDisabled = signal<boolean>(true);\n busyLoading = signal<boolean>(false);\n busySaving = signal<boolean>(false);\n formOptions = signal<ObjectFormOptions | null>(null);\n\n #loadForm(f: ObjectFlavor) {\n this.busyLoading.set(true);\n this.#system\n .getObjectTypeForm(f.sot, Situation.EDIT)\n .pipe(finalize(() => this.busyLoading.set(false)))\n .subscribe({\n next: (form) => {\n this.formOptions.set({\n formModel: form,\n data: {}\n });\n }\n });\n }\n\n onFormStatusChanged(status: FormStatusChangedEvent) {\n this.applyDisabled.set(status.invalid);\n }\n\n applyFlavor() {\n const of = this.objectForm();\n const data: Record<string, unknown> = of ? of.getFormData() : {};\n this.busySaving.set(true);\n this.#shell\n .applyObjectFlavor(this.dmsObject(), this.flavor(), data)\n .pipe(finalize(() => this.busySaving.set(false)))\n .subscribe({\n next: () => this.close()\n // TODO: handle error\n });\n }\n\n close() {\n this.dialogRef.close();\n }\n}\n","@let o = dmsObject();\n@if (o) {\n <yuv-dialog [yuvBusyOverlay]=\"busyLoading()\" [headertitel]=\"'yuv.object-flavor.apply-flavor.headline' | translate: { name: flavorLabel() }\">\n <main>\n <yuv-split-view [gutterSize]=\"1\">\n <ng-template yuvSplitArea [size]=\"60\" [visible]=\"!!o.content\">\n @if (o.content) {\n <yuv-object-preview [objectId]=\"dmsObject().id\"></yuv-object-preview>\n }\n </ng-template>\n\n <ng-template yuvSplitArea [size]=\"40\">\n <div class=\"metadata\">\n @let fo = formOptions();\n @if (fo) {\n <yuv-object-form [inert]=\"busySaving()\" [formOptions]=\"fo\" (statusChanged)=\"onFormStatusChanged($event)\"></yuv-object-form>\n }\n </div>\n </ng-template>\n </yuv-split-view>\n </main>\n <footer>\n <button ymtButton=\"secondary\" mat-dialog-close [disabled]=\"busySaving()\">{{ 'yuv.object-flavor.apply-flavor.button.cancel' | translate }}</button>\n <button ymtButton=\"primary\" mat-dialog-close [ngClass]=\"{ spinning: busySaving() }\" [disabled]=\"applyDisabled()\" (click)=\"applyFlavor()\">\n {{ 'yuv.object-flavor.apply-flavor.button.apply' | translate }}\n </button>\n </footer>\n </yuv-dialog>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { DmsObject, TranslateModule } from '@yuuvis/client-core';\nimport { DialogComponent } from '@yuuvis/client-framework/common';\nimport { YuvListModule } from '@yuuvis/client-framework/list';\nimport { ObjectFlavor, ShellService } from '@yuuvis/client-shell-core';\nimport { DefaultApplyFlavorComponent } from '../default-apply-flavor/default-apply-flavor.component';\nimport { FlavorChipComponent } from '../flavor-chip/flavor-chip.component';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'yuv-object-flavor-picker',\n standalone: true,\n imports: [CommonModule, YuvListModule, DialogComponent, MatButtonModule, MatDialogModule, FlavorChipComponent, TranslateModule, YmtButtonDirective],\n templateUrl: './object-flavor-picker.component.html',\n styleUrl: './object-flavor-picker.component.scss',\n host: {\n '[class.cmp]': '!!applyComponent'\n }\n})\nexport class ObjectFlavorPickerComponent {\n #shell = inject(ShellService);\n #dialogData = inject<any>(MAT_DIALOG_DATA);\n readonly #dialogRef = inject(MatDialogRef<ObjectFlavorPickerComponent>);\n\n applicableFlavors: ObjectFlavor[] = this.#dialogData.applicableFlavors;\n #dmsObject: DmsObject = this.#dialogData.dmsObject;\n\n itemSelected(idx: number[]) {\n const flavor = this.applicableFlavors[idx[0]];\n if (this.#dmsObject && flavor)\n this.#shell\n .triggerApplyObjectFlavor(this.#dmsObject, flavor, undefined, flavor.useDefaultApplyComponent ? DefaultApplyFlavorComponent : undefined)\n .subscribe({\n next: () => {\n this.#dialogRef.close();\n }\n });\n }\n}\n","<yuv-dialog [headertitel]=\"'yuv.object-flavor.picker.title' | translate\">\n <main>\n <p>{{ 'yuv.object-flavor.picker.text' | translate }}</p>\n <yuv-list (itemSelect)=\"itemSelected($event)\" selectOnEnter=\"true\">\n @for (f of applicableFlavors; track $index) {\n <yuv-flavor-chip [flavor]=\"f\" [enableDescription]=\"true\" yuvListItem></yuv-flavor-chip>\n }\n </yuv-list>\n </main>\n <footer>\n <button ymtButton=\"secondary\" mat-dialog-close>{{ 'yuv.object-flavor.picker.button.cancel' | translate }}</button>\n </footer>\n</yuv-dialog>\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, HostAttributeToken, inject, input, output, signal, untracked, viewChild } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DmsObject, SystemService, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { ConfirmService, DragScrollDirective } from '@yuuvis/client-framework/common';\nimport { ListComponent, YuvListModule } from '@yuuvis/client-framework/list';\nimport { ObjectFlavor, ShellService } from '@yuuvis/client-shell-core';\nimport { of, switchMap } from 'rxjs';\nimport { FlavorChipComponent } from '../flavor-chip/flavor-chip.component';\nimport { ObjectFlavorPickerComponent } from '../object-flavor-picker/object-flavor-picker.component';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\n\n@Component({\n selector: 'yuv-object-flavor',\n standalone: true,\n imports: [CommonModule, FlavorChipComponent, \n MatTooltipModule, MatProgressBarModule,\n DragScrollDirective, MatIconModule, MatButtonModule, YuvListModule, TranslateModule],\n templateUrl: './object-flavor.component.html',\n styleUrl: './object-flavor.component.scss',\n host: {\n '[attr.aria-hidden]': 'hidden()',\n '[class.busy]': 'busy()',\n '[class.selection]': 'selectedIndex() > -1',\n '[class.selectionDisabled]': 'disableSelection'\n }\n})\nexport class ObjectFlavorComponent {\n #shell = inject(ShellService);\n #dialog = inject(MatDialog);\n #confirm = inject(ConfirmService);\n #system = inject(SystemService);\n private translate = inject(TranslateService);\n\n list = viewChild(ListComponent);\n\n dmsObject = input.required<DmsObject>();\n #dmsObjectEffect = effect(() => {\n const o = this.dmsObject();\n const listCmp = this.list();\n if (o)\n untracked(() => {\n this.#getAppliedFlavors(o);\n if (listCmp) listCmp.clear(true);\n });\n });\n\n flavorSelect = output<ObjectFlavor | undefined>();\n\n appliedFlavors: ObjectFlavor[] = [];\n applicableFlavors: ObjectFlavor[] = [];\n\n hidden = signal<boolean>(false);\n busy = signal<boolean>(false);\n\n selectedIndex = signal<number>(-1);\n\n disableSelection: boolean = (inject(new HostAttributeToken('disableSelection'), { optional: true }) || 'false') === 'true';\n\n clearSelection() {\n const listCmp = this.list();\n if (listCmp) listCmp.clear();\n this.selectedIndex.set(-1);\n this.flavorSelect.emit(undefined);\n }\n\n onItemsSelect(idx: number[]) {\n const ci = idx[0];\n this.selectedIndex.set(ci);\n this.flavorSelect.emit(this.appliedFlavors[ci]);\n }\n\n startApplyFlavor() {\n this.#dialog.open(ObjectFlavorPickerComponent, {\n data: {\n applicableFlavors: this.applicableFlavors,\n dmsObject: structuredClone(this.dmsObject())\n }\n });\n }\n\n removeFlavor(flavor: ObjectFlavor, index: number) {\n const o = this.dmsObject();\n if (o) {\n this.busy.set(true);\n this.#confirm\n .confirm({\n message: this.translate.instant('yuv.object-flavor.flavor.remove.confirm.message', {\n flavor: this.#shell.getFlavorLabel(flavor.id),\n })\n })\n .pipe(switchMap((confirmed: boolean) => (confirmed ? this.#shell.removeObjectFlavor(o, flavor) : of(undefined))))\n .subscribe({\n next: () => {\n if (index === this.selectedIndex() || !this.appliedFlavors.length) this.clearSelection();\n this.busy.set(false);\n },\n error: () => {\n // TODO: error handling\n this.busy.set(false);\n }\n });\n }\n }\n\n #getAppliedFlavors(dmsObject: DmsObject) {\n const res = this.#shell.getAppliedObjectFlavors(dmsObject);\n this.appliedFlavors = res.applied;\n this.applicableFlavors = res.applicable;\n this.hidden.set(this.applicableFlavors.length === 0 && this.appliedFlavors.length === 0);\n }\n}\n","\n<div class=\"object-flavor\">\n <span class=\"label\">{{ 'yuv.object-flavor.label' | translate }}</span>\n@if (applicableFlavors.length) {\n <button mat-icon-button class=\"add ymt-icon-button--size-s secondary\"\n [matTooltip]=\"'yuv.object-flavor.button.add' | translate\" (click)=\"startApplyFlavor()\">\n <mat-icon>add</mat-icon>\n </button>\n}\n</div>\n@if (appliedFlavors.length) {\n <yuv-list horizontal=\"true\" [disableSelection]=\"disableSelection\" (itemSelect)=\"onItemsSelect($event)\" yuvDragScroll>\n @for (f of appliedFlavors; track f.id) {\n <yuv-flavor-chip yuvListItem [flavor]=\"f\" [enableRemove]=\"true\" (flavorRemove)=\"removeFlavor(f, $index)\"></yuv-flavor-chip>\n }\n </yuv-list>\n}\n<button mat-icon-button class=\"clear\" [matTooltip]=\"'yuv.object-flavor.button.clear-selection' | translate\" (click)=\"clearSelection()\">\n <mat-icon>close</mat-icon>\n</button>\n\n@if (busy()) {\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, output, signal } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { ObjectCreateFlavor } from '@yuuvis/client-core';\n\n@Component({\n selector: 'yuv-abstract-apply-create-flavor',\n standalone: true,\n imports: [CommonModule],\n template: ''\n})\nexport abstract class AbstractApplyCreateFlavorComponent {\n #dialogData = inject<any>(MAT_DIALOG_DATA);\n readonly #dialogRef = inject(MatDialogRef<any>);\n createdObjectIDs = signal<string[]>(this.#dialogData.createdObjectIDs);\n flavor = signal<ObjectCreateFlavor>(this.#dialogData.flavor);\n data = signal<any>(this.#dialogData.data);\n cancel = output();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i4","i5","i6"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import * as i2 from '@angular/forms';
|
|
|
7
7
|
import { Validators, ReactiveFormsModule } from '@angular/forms';
|
|
8
8
|
import * as i1$2 from '@yuuvis/client-core';
|
|
9
9
|
import { EventService, UserService, DmsService, SystemService, SearchService, BackendService, TranslateService, NotificationService, AppCacheService, YuvEventType, ApiBase, Operator, DmsObject, Utils, Situation, ObjectFormControlWrapper, ObjectFormControl, ContentStreamField, Classification, KeysPipe, ObjectFormGroup } from '@yuuvis/client-core';
|
|
10
|
-
import { firstValueFrom, map, forkJoin, debounceTime, of } from 'rxjs';
|
|
10
|
+
import { firstValueFrom, map, Subject, forkJoin, debounceTime, of } from 'rxjs';
|
|
11
11
|
import { Router } from '@angular/router';
|
|
12
12
|
import * as i2$1 from '@angular/material/tabs';
|
|
13
13
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
@@ -324,7 +324,12 @@ class ObjectFormUtils {
|
|
|
324
324
|
* @ignore
|
|
325
325
|
*/
|
|
326
326
|
class ObjectFormService {
|
|
327
|
-
|
|
327
|
+
constructor() {
|
|
328
|
+
this.#formExtensions = [];
|
|
329
|
+
// Subject to notify about form status changes, e.g. when a form is reset or set to pristine.
|
|
330
|
+
this.formStatusChanged = new Subject();
|
|
331
|
+
}
|
|
332
|
+
#formExtensions;
|
|
328
333
|
setElementExtensions(formExtensions) {
|
|
329
334
|
this.#formExtensions = formExtensions;
|
|
330
335
|
}
|
|
@@ -450,6 +455,7 @@ class ObjectFormElementComponent {
|
|
|
450
455
|
this.#objectFormService = inject(ObjectFormService);
|
|
451
456
|
this.#scriptingApi = inject(FormScriptingApiService);
|
|
452
457
|
this.createForm = signal(false);
|
|
458
|
+
this.formChangedSubject = this.#objectFormService.formStatusChanged;
|
|
453
459
|
this.extensionComponents = [];
|
|
454
460
|
this.#scriptingExtensions = this.#scriptingApi.elementExtensions;
|
|
455
461
|
this.scriptingExtensions = computed(() => Object.values(this.#scriptingExtensions()).filter((ext) => ext.propertyName === this.formControlName));
|
|
@@ -494,11 +500,11 @@ class ObjectFormElementComponent {
|
|
|
494
500
|
this.formElementRef._eoFormElement.dataMeta = data;
|
|
495
501
|
}
|
|
496
502
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: ObjectFormElementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
497
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.12", type: ObjectFormElementComponent, isStandalone: true, selector: "yuv-object-form-element", inputs: { situation: { classPropertyName: "situation", publicName: "situation", isSignal: true, isRequired: false, transformFunction: null }, element: { classPropertyName: "element", publicName: "element", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "yuv-object-form-element" }, ngImport: i0, template: "@let el = element();\n\n@if (!createForm()) {\n @if (el && formElementRef) {\n <div class=\"form-element input\" [formGroup]=\"el\">\n <yuv-metadata-form-field\n [field]=\"formElementRef._eoFormElement\"\n [formControlName]=\"el._eoFormControlWrapper!.controlName\"\n [situation]=\"situation()\"\n ></yuv-metadata-form-field>\n\n <div class=\"ext\">\n @for (cmp of extensionComponents; track $index) {\n <ng-container *ngComponentOutlet=\"cmp; inputs: { input: extensionComponentInput }\"></ng-container>\n }\n @for (scmp of scriptingExtensions(); track $index) {\n <ng-container *ngComponentOutlet=\"scriptExtensionCmp; inputs: { ext: scmp }\"></ng-container>\n }\n </div>\n </div>\n }\n}\n", styles: [":host{flex:1 1 auto}.yuv-object-form-element .form-element{box-sizing:border-box;display:flex;flex:1;flex-flow:row nowrap}.yuv-object-form-element .form-element .ext{display:flex;flex-flow:row nowrap;gap:2px;align-items:center}.yuv-object-form-element .form-element yuv-metadata-form-field{width:100%}.yuv-object-form-element .form-element .form-field{padding:var(--ymt-spacing-
|
|
503
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.12", type: ObjectFormElementComponent, isStandalone: true, selector: "yuv-object-form-element", inputs: { situation: { classPropertyName: "situation", publicName: "situation", isSignal: true, isRequired: false, transformFunction: null }, element: { classPropertyName: "element", publicName: "element", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "yuv-object-form-element" }, ngImport: i0, template: "@let el = element();\n\n@if (!createForm()) {\n @if (el && formElementRef) {\n <div class=\"form-element input\" [formGroup]=\"el\">\n <yuv-metadata-form-field\n [formChangedSubject]=\"formChangedSubject\"\n [field]=\"formElementRef._eoFormElement\"\n [formControlName]=\"el._eoFormControlWrapper!.controlName\"\n [situation]=\"situation()\"\n ></yuv-metadata-form-field>\n\n <div class=\"ext\">\n @for (cmp of extensionComponents; track $index) {\n <ng-container *ngComponentOutlet=\"cmp; inputs: { input: extensionComponentInput }\"></ng-container>\n }\n @for (scmp of scriptingExtensions(); track $index) {\n <ng-container *ngComponentOutlet=\"scriptExtensionCmp; inputs: { ext: scmp }\"></ng-container>\n }\n </div>\n </div>\n }\n}\n", styles: [":host{flex:1 1 auto}.yuv-object-form-element .form-element{box-sizing:border-box;display:flex;flex:1;flex-flow:row nowrap}.yuv-object-form-element .form-element .ext{display:flex;flex-flow:row nowrap;gap:2px;align-items:center}.yuv-object-form-element .form-element yuv-metadata-form-field{width:100%}.yuv-object-form-element .form-element .form-field{padding:var(--ymt-spacing-2s) var(--ymt-spacing-xs)}.yuv-object-form-element .form-element .form-field .description{border:0;font:var(--ymt-font-body-subtle);color:var(--ymt-text-color-subtle);font-style:italic;padding:var(--ymt-spacing-3xs) var(--ymt-spacing-3xs) 0 var(--ymt-spacing-3xs)}.yuv-object-form-element .form-element .form-field .err-msg{font:var(--ymt-font-body-subtle);color:var(--ymt-danger);padding:var(--ymt-spacing-2xs) 0;border:0}.yuv-object-form-element .form-element .form-field .table{flex-flow:column;align-items:flex-start;border:1px solid var(--ymt-outline-variant)}.yuv-object-form-element .form-element .form-field .table .label{padding-bottom:var(--ymt-spacing-2xs)}.yuv-object-form-element .form-element .form-field .table.invalid{border:1px solid var(--ymt-danger)}.yuv-object-form-element .form-element .form-field.inlineError .err-msg{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: MetadataFormFieldComponent, selector: "yuv-metadata-form-field", inputs: ["formChangedSubject", "field", "situation"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
498
504
|
}
|
|
499
505
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: ObjectFormElementComponent, decorators: [{
|
|
500
506
|
type: Component,
|
|
501
|
-
args: [{ selector: 'yuv-object-form-element', standalone: true, imports: [CommonModule, MetadataFormFieldComponent, NgComponentOutlet, ReactiveFormsModule], encapsulation: ViewEncapsulation.None, host: { class: 'yuv-object-form-element' }, template: "@let el = element();\n\n@if (!createForm()) {\n @if (el && formElementRef) {\n <div class=\"form-element input\" [formGroup]=\"el\">\n <yuv-metadata-form-field\n [field]=\"formElementRef._eoFormElement\"\n [formControlName]=\"el._eoFormControlWrapper!.controlName\"\n [situation]=\"situation()\"\n ></yuv-metadata-form-field>\n\n <div class=\"ext\">\n @for (cmp of extensionComponents; track $index) {\n <ng-container *ngComponentOutlet=\"cmp; inputs: { input: extensionComponentInput }\"></ng-container>\n }\n @for (scmp of scriptingExtensions(); track $index) {\n <ng-container *ngComponentOutlet=\"scriptExtensionCmp; inputs: { ext: scmp }\"></ng-container>\n }\n </div>\n </div>\n }\n}\n", styles: [":host{flex:1 1 auto}.yuv-object-form-element .form-element{box-sizing:border-box;display:flex;flex:1;flex-flow:row nowrap}.yuv-object-form-element .form-element .ext{display:flex;flex-flow:row nowrap;gap:2px;align-items:center}.yuv-object-form-element .form-element yuv-metadata-form-field{width:100%}.yuv-object-form-element .form-element .form-field{padding:var(--ymt-spacing-
|
|
507
|
+
args: [{ selector: 'yuv-object-form-element', standalone: true, imports: [CommonModule, MetadataFormFieldComponent, NgComponentOutlet, ReactiveFormsModule], encapsulation: ViewEncapsulation.None, host: { class: 'yuv-object-form-element' }, template: "@let el = element();\n\n@if (!createForm()) {\n @if (el && formElementRef) {\n <div class=\"form-element input\" [formGroup]=\"el\">\n <yuv-metadata-form-field\n [formChangedSubject]=\"formChangedSubject\"\n [field]=\"formElementRef._eoFormElement\"\n [formControlName]=\"el._eoFormControlWrapper!.controlName\"\n [situation]=\"situation()\"\n ></yuv-metadata-form-field>\n\n <div class=\"ext\">\n @for (cmp of extensionComponents; track $index) {\n <ng-container *ngComponentOutlet=\"cmp; inputs: { input: extensionComponentInput }\"></ng-container>\n }\n @for (scmp of scriptingExtensions(); track $index) {\n <ng-container *ngComponentOutlet=\"scriptExtensionCmp; inputs: { ext: scmp }\"></ng-container>\n }\n </div>\n </div>\n }\n}\n", styles: [":host{flex:1 1 auto}.yuv-object-form-element .form-element{box-sizing:border-box;display:flex;flex:1;flex-flow:row nowrap}.yuv-object-form-element .form-element .ext{display:flex;flex-flow:row nowrap;gap:2px;align-items:center}.yuv-object-form-element .form-element yuv-metadata-form-field{width:100%}.yuv-object-form-element .form-element .form-field{padding:var(--ymt-spacing-2s) var(--ymt-spacing-xs)}.yuv-object-form-element .form-element .form-field .description{border:0;font:var(--ymt-font-body-subtle);color:var(--ymt-text-color-subtle);font-style:italic;padding:var(--ymt-spacing-3xs) var(--ymt-spacing-3xs) 0 var(--ymt-spacing-3xs)}.yuv-object-form-element .form-element .form-field .err-msg{font:var(--ymt-font-body-subtle);color:var(--ymt-danger);padding:var(--ymt-spacing-2xs) 0;border:0}.yuv-object-form-element .form-element .form-field .table{flex-flow:column;align-items:flex-start;border:1px solid var(--ymt-outline-variant)}.yuv-object-form-element .form-element .form-field .table .label{padding-bottom:var(--ymt-spacing-2xs)}.yuv-object-form-element .form-element .form-field .table.invalid{border:1px solid var(--ymt-danger)}.yuv-object-form-element .form-element .form-field.inlineError .err-msg{display:none}\n"] }]
|
|
502
508
|
}] });
|
|
503
509
|
|
|
504
510
|
class ObjectFormGroupComponent {
|
|
@@ -1171,6 +1177,7 @@ class ObjectFormComponent {
|
|
|
1171
1177
|
if (!this.form)
|
|
1172
1178
|
return;
|
|
1173
1179
|
this.form.markAsPristine();
|
|
1180
|
+
this.#formHelperService.formStatusChanged.next();
|
|
1174
1181
|
}
|
|
1175
1182
|
// reset the form to its initial state
|
|
1176
1183
|
resetForm() {
|
|
@@ -1178,6 +1185,7 @@ class ObjectFormComponent {
|
|
|
1178
1185
|
if (!fo)
|
|
1179
1186
|
return;
|
|
1180
1187
|
this.setFormData(fo.data);
|
|
1188
|
+
this.#formHelperService.formStatusChanged.next();
|
|
1181
1189
|
this.#emitFormChangedEvent();
|
|
1182
1190
|
}
|
|
1183
1191
|
/**
|