@yuuvis/client-framework 0.7.3 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/actions/lib/components/contextmenu/contextmenu.component.mjs +2 -2
- package/esm2022/forms/index.mjs +5 -1
- package/esm2022/forms/lib/elements/datetime-range/datetime-range.component.mjs +32 -32
- package/esm2022/forms/lib/elements/number/number.component.mjs +3 -3
- package/esm2022/forms/lib/elements/number-range/number-range.component.mjs +3 -3
- package/esm2022/forms/lib/elements/range-select-date/date-range-picker/date-range-picker.component.mjs +38 -0
- package/esm2022/forms/lib/elements/range-select-date/range-select-date.component.mjs +181 -0
- package/esm2022/forms/lib/elements/range-select-date/range-select-date.interface.mjs +2 -0
- package/esm2022/forms/lib/elements/range-select-filesize/range-select-filesize.component.mjs +98 -0
- package/esm2022/forms/lib/elements/range-select-filesize/range-select-filesize.interface.mjs +2 -0
- package/esm2022/forms/lib/elements/string/string.component.mjs +10 -3
- package/esm2022/list/lib/list.component.mjs +6 -4
- package/esm2022/metadata-form/lib/metadata-default-templates/metadata-default-templates.component.mjs +3 -3
- package/esm2022/metadata-form/lib/metadata-form-field/metadata-form-field.component.mjs +5 -3
- package/esm2022/object-details/lib/object-audit/object-audit.component.mjs +3 -3
- package/esm2022/object-flavor/lib/object-flavor/object-flavor.component.mjs +2 -2
- package/esm2022/object-flavor/lib/object-flavor-picker/object-flavor-picker.component.mjs +2 -2
- package/esm2022/tile-list/lib/tile-config/tile-config.component.mjs +2 -2
- package/fesm2022/yuuvis-client-framework-actions.mjs +1 -1
- package/fesm2022/yuuvis-client-framework-actions.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-forms.mjs +339 -44
- package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-list.mjs +5 -3
- package/fesm2022/yuuvis-client-framework-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-metadata-form.mjs +6 -4
- package/fesm2022/yuuvis-client-framework-metadata-form.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-details.mjs +2 -2
- package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs +2 -2
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-tile-list.mjs +1 -1
- package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -1
- package/forms/index.d.ts +4 -0
- package/forms/lib/elements/datetime-range/datetime-range.component.d.ts +2 -1
- package/forms/lib/elements/range-select-date/date-range-picker/date-range-picker.component.d.ts +13 -0
- package/forms/lib/elements/range-select-date/range-select-date.component.d.ts +33 -0
- package/forms/lib/elements/range-select-date/range-select-date.interface.d.ts +5 -0
- package/forms/lib/elements/range-select-filesize/range-select-filesize.component.d.ts +28 -0
- package/forms/lib/elements/range-select-filesize/range-select-filesize.interface.d.ts +5 -0
- package/list/lib/list.component.d.ts +2 -1
- package/metadata-form/lib/metadata-form-field/metadata-form-field.component.d.ts +1 -0
- package/package.json +28 -28
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-client-framework-list.mjs","sources":["../../../../../libs/yuuvis/client-framework/list/src/lib/list-item.directive.ts","../../../../../libs/yuuvis/client-framework/list/src/lib/list.component.ts","../../../../../libs/yuuvis/client-framework/list/src/yuuvis-client-framework-list.ts"],"sourcesContent":["import { Highlightable } from '@angular/cdk/a11y';\nimport { Directive, ElementRef, HostBinding, HostListener, Input, inject } from '@angular/core';\n\n@Directive({\n selector: '[yuvListItem]',\n standalone: true\n})\nexport class ListItemDirective implements Highlightable {\n #elRef = inject(ElementRef);\n\n onClick?: (evt: MouseEvent) => void;\n\n @Input() disabled?: boolean | undefined;\n @Input() @HostBinding('attr.aria-current') active = false;\n\n @HostBinding('attr.aria-selected') private _selected = false;\n @Input()\n set selected(s: boolean) {\n this._selected = s;\n }\n\n @HostListener('click', ['$event']) onHostClick(evt: MouseEvent) {\n if (!this.disabled && this.onClick) {\n this.#elRef.nativeElement.parentElement.focus();\n this.onClick(evt);\n }\n }\n\n setActiveStyles(): void {\n this.active = true;\n this.#scrollIntoView();\n }\n\n setInactiveStyles(): void {\n this.active = false;\n }\n\n #scrollIntoView() {\n const el = this.#elRef.nativeElement as HTMLElement;\n const { bottom, top, left, right } = el.getBoundingClientRect();\n const containerRect = this.#elRef.nativeElement.parentElement.getBoundingClientRect();\n\n const offsetY =\n top <= containerRect.top\n ? containerRect.top - top > 0\n ? (containerRect.top - top) * -1\n : 0\n : bottom - containerRect.bottom > 0\n ? bottom - containerRect.bottom\n : 0;\n const offsetX =\n left <= containerRect.left\n ? containerRect.left - left > 0\n ? (containerRect.left - left) * -1\n : 0\n : right - containerRect.right > 0\n ? right - containerRect.right\n : 0;\n\n if (offsetX || offsetY) (this.#elRef.nativeElement.parentElement as HTMLElement).scrollBy(offsetX, offsetY);\n }\n}\n","import { A11yModule, ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { CommonModule } from '@angular/common';\nimport { Component, HostAttributeToken, HostListener, OnDestroy, ViewEncapsulation, contentChildren, effect, inject, input, output } from '@angular/core';\nimport { ListItemDirective } from './list-item.directive';\n\n/**\n * Component rendering a simple list of items. It supports keyboard\n * navigation as well as accessability. To create a list just wrapp\n * `yuvListItem` elements into this component:\n *\n * ```ts\n * <yuv-list (itemSelect)=\"itemSelected($event)\">\n * <div yuvListItem>Entry #1</div>\n * <div yuvListItem>Entry #2</div>\n * </yuv-list>\n * ```\n */\n@Component({\n selector: 'yuv-list',\n standalone: true,\n imports: [CommonModule, A11yModule],\n template: '<ng-content></ng-content>',\n styleUrl: './list.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n role: 'listbox',\n tabindex: '0'\n }\n})\nexport class ListComponent implements OnDestroy {\n #dir = inject(Directionality);\n\n @HostListener('keydown', ['$event']) onKeydown(event: KeyboardEvent) {\n if (this.disableSelection()) return;\n if (event.code === 'Escape') {\n this.clear();\n }\n if (event.code === 'Space' || (this.selectOnEnter && event.code === 'Enter')) {\n const aii: number = this._keyManager.activeItemIndex !== null ? this._keyManager.activeItemIndex : -1;\n if (aii >= 0) {\n this._select(aii);\n this._emitSelection();\n }\n } else this._keyManager?.onKeydown(event);\n }\n items = contentChildren(ListItemDirective);\n #itemsEffect = effect(() => {\n if (this._keyManager) this._keyManager.destroy();\n this._keyManager = this.horizontal\n ? new ActiveDescendantKeyManager(this.items()).withWrap().withHorizontalOrientation(this.#dir.value)\n : new ActiveDescendantKeyManager(this.items()).withWrap();\n\n this.items().forEach((item, index) => {\n item.onClick = (evt: MouseEvent) => {\n this.select(index, evt.shiftKey, evt.ctrlKey);\n };\n item.active = false;\n });\n if (this._lastSelection !== undefined && this._lastSelection <= this.items().length) {\n this.select(this._lastSelection);\n }\n });\n private _keyManager!: ActiveDescendantKeyManager<ListItemDirective>;\n private _selection: number[] = [];\n private _lastSelection?: number;\n\n multiselect = input<boolean>(false);\n\n itemSelect = output<number[]>();\n itemFocus = output<number>();\n\n // autoselectFirst: boolean = (inject(new HostAttributeToken('autoselectFirst'), { optional: true }) || 'false') === 'true';\n selectOnEnter: boolean = (inject(new HostAttributeToken('selectOnEnter'), { optional: true }) || 'false') === 'true';\n horizontal: boolean = (inject(new HostAttributeToken('horizontal'), { optional: true }) || 'false') === 'true';\n disableSelection = input<boolean>(false);\n\n select(index: number, shiftKey = false, ctrlKey = false) {\n if (this.disableSelection()) return;\n if (this._keyManager) {\n this._keyManager.setActiveItem(index);\n }\n this._select(index, shiftKey, ctrlKey);\n this._emitSelection();\n }\n\n clear() {\n if (this._selection.length !== 0) {\n this._select(-1);\n this._keyManager.setActiveItem(-1);\n this._emitSelection();\n }\n }\n\n private _select(index: number, shiftKey = false, ctrlKey = false) {\n if (index === -1) this._selection = [];\n else {\n if (this.multiselect()) {\n this._selection = this._selection.filter((i) => i !== index);\n if (ctrlKey) {\n // if ctrl key add to selection\n this._selection.push(index);\n } else if (shiftKey) {\n // add range\n if (this._lastSelection) {\n for (let i = this._lastSelection < index ? this._lastSelection : index; i < (this._lastSelection > index ? this._lastSelection : index); i++) {\n this._selection.push(i);\n }\n } else {\n this._selection = [index];\n }\n } else {\n this._selection = [index];\n }\n } else this._selection = [index];\n }\n this._lastSelection = this._selection.length === 0 ? undefined : index;\n this._selection.sort();\n\n this.items().forEach((item: ListItemDirective, i: number) => (item.selected = this._selection.includes(i)));\n }\n\n private _emitSelection() {\n this.itemSelect.emit(this._selection);\n }\n\n ngOnDestroy(): void {\n this._keyManager?.destroy();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yuuvis-client-framework-list.mjs","sources":["../../../../../libs/yuuvis/client-framework/list/src/lib/list-item.directive.ts","../../../../../libs/yuuvis/client-framework/list/src/lib/list.component.ts","../../../../../libs/yuuvis/client-framework/list/src/yuuvis-client-framework-list.ts"],"sourcesContent":["import { Highlightable } from '@angular/cdk/a11y';\nimport { Directive, ElementRef, HostBinding, HostListener, Input, inject } from '@angular/core';\n\n@Directive({\n selector: '[yuvListItem]',\n standalone: true\n})\nexport class ListItemDirective implements Highlightable {\n #elRef = inject(ElementRef);\n\n onClick?: (evt: MouseEvent) => void;\n\n @Input() disabled?: boolean | undefined;\n @Input() @HostBinding('attr.aria-current') active = false;\n\n @HostBinding('attr.aria-selected') private _selected = false;\n @Input()\n set selected(s: boolean) {\n this._selected = s;\n }\n\n @HostListener('click', ['$event']) onHostClick(evt: MouseEvent) {\n if (!this.disabled && this.onClick) {\n this.#elRef.nativeElement.parentElement.focus();\n this.onClick(evt);\n }\n }\n\n setActiveStyles(): void {\n this.active = true;\n this.#scrollIntoView();\n }\n\n setInactiveStyles(): void {\n this.active = false;\n }\n\n #scrollIntoView() {\n const el = this.#elRef.nativeElement as HTMLElement;\n const { bottom, top, left, right } = el.getBoundingClientRect();\n const containerRect = this.#elRef.nativeElement.parentElement.getBoundingClientRect();\n\n const offsetY =\n top <= containerRect.top\n ? containerRect.top - top > 0\n ? (containerRect.top - top) * -1\n : 0\n : bottom - containerRect.bottom > 0\n ? bottom - containerRect.bottom\n : 0;\n const offsetX =\n left <= containerRect.left\n ? containerRect.left - left > 0\n ? (containerRect.left - left) * -1\n : 0\n : right - containerRect.right > 0\n ? right - containerRect.right\n : 0;\n\n if (offsetX || offsetY) (this.#elRef.nativeElement.parentElement as HTMLElement).scrollBy(offsetX, offsetY);\n }\n}\n","import { A11yModule, ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { CommonModule } from '@angular/common';\nimport { Component, HostAttributeToken, HostListener, OnDestroy, ViewEncapsulation, contentChildren, effect, inject, input, output } from '@angular/core';\nimport { ListItemDirective } from './list-item.directive';\n\n/**\n * Component rendering a simple list of items. It supports keyboard\n * navigation as well as accessability. To create a list just wrapp\n * `yuvListItem` elements into this component:\n *\n * ```ts\n * <yuv-list (itemSelect)=\"itemSelected($event)\">\n * <div yuvListItem>Entry #1</div>\n * <div yuvListItem>Entry #2</div>\n * </yuv-list>\n * ```\n */\n@Component({\n selector: 'yuv-list',\n standalone: true,\n imports: [CommonModule, A11yModule],\n template: '<ng-content></ng-content>',\n styleUrl: './list.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n role: 'listbox',\n tabindex: '0',\n '[class.self-handle-selection]': 'selfHandleSelection()',\n }\n})\nexport class ListComponent implements OnDestroy {\n #dir = inject(Directionality);\n\n @HostListener('keydown', ['$event']) onKeydown(event: KeyboardEvent) {\n if (this.disableSelection()) return;\n if (event.code === 'Escape') {\n this.clear();\n }\n if (event.code === 'Space' || (this.selectOnEnter && event.code === 'Enter')) {\n const aii: number = this._keyManager.activeItemIndex !== null ? this._keyManager.activeItemIndex : -1;\n if (aii >= 0) {\n this._select(aii);\n this._emitSelection();\n }\n } else this._keyManager?.onKeydown(event);\n }\n items = contentChildren(ListItemDirective);\n #itemsEffect = effect(() => {\n if (this._keyManager) this._keyManager.destroy();\n this._keyManager = this.horizontal\n ? new ActiveDescendantKeyManager(this.items()).withWrap().withHorizontalOrientation(this.#dir.value)\n : new ActiveDescendantKeyManager(this.items()).withWrap();\n\n this.items().forEach((item, index) => {\n item.onClick = (evt: MouseEvent) => {\n this.select(index, evt.shiftKey, evt.ctrlKey);\n };\n item.active = false;\n });\n if (this._lastSelection !== undefined && this._lastSelection <= this.items().length) {\n this.select(this._lastSelection);\n }\n });\n private _keyManager!: ActiveDescendantKeyManager<ListItemDirective>;\n private _selection: number[] = [];\n private _lastSelection?: number;\n\n multiselect = input<boolean>(false);\n selfHandleSelection = input<boolean>(false);\n\n itemSelect = output<number[]>();\n itemFocus = output<number>();\n\n // autoselectFirst: boolean = (inject(new HostAttributeToken('autoselectFirst'), { optional: true }) || 'false') === 'true';\n selectOnEnter: boolean = (inject(new HostAttributeToken('selectOnEnter'), { optional: true }) || 'false') === 'true';\n horizontal: boolean = (inject(new HostAttributeToken('horizontal'), { optional: true }) || 'false') === 'true';\n disableSelection = input<boolean>(false);\n\n select(index: number, shiftKey = false, ctrlKey = false) {\n if (this.disableSelection()) return;\n if (this._keyManager) {\n this._keyManager.setActiveItem(index);\n }\n this._select(index, shiftKey, ctrlKey);\n this._emitSelection();\n }\n\n clear() {\n if (this._selection.length !== 0) {\n this._select(-1);\n this._keyManager.setActiveItem(-1);\n this._emitSelection();\n }\n }\n\n private _select(index: number, shiftKey = false, ctrlKey = false) {\n if (index === -1) this._selection = [];\n else {\n if (this.multiselect()) {\n this._selection = this._selection.filter((i) => i !== index);\n if (ctrlKey) {\n // if ctrl key add to selection\n this._selection.push(index);\n } else if (shiftKey) {\n // add range\n if (this._lastSelection) {\n for (let i = this._lastSelection < index ? this._lastSelection : index; i < (this._lastSelection > index ? this._lastSelection : index); i++) {\n this._selection.push(i);\n }\n } else {\n this._selection = [index];\n }\n } else {\n this._selection = [index];\n }\n } else this._selection = [index];\n }\n this._lastSelection = this._selection.length === 0 ? undefined : index;\n this._selection.sort();\n\n this.items().forEach((item: ListItemDirective, i: number) => (item.selected = this._selection.includes(i)));\n }\n\n private _emitSelection() {\n this.itemSelect.emit(this._selection);\n }\n\n ngOnDestroy(): void {\n this._keyManager?.destroy();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -117,6 +117,7 @@ class MetadataFormFieldComponent {
|
|
|
117
117
|
this.errors = null;
|
|
118
118
|
this.label = '';
|
|
119
119
|
this.readonly = false;
|
|
120
|
+
this.required = false;
|
|
120
121
|
this.formField = input.required({ alias: 'field' });
|
|
121
122
|
this.#fieldEffect = effect(() => {
|
|
122
123
|
const field = this.formField();
|
|
@@ -125,6 +126,7 @@ class MetadataFormFieldComponent {
|
|
|
125
126
|
this.label = this.#system.getLocalizedLabel(field.name) || field.name;
|
|
126
127
|
// TODO: set readonly state based on ...????... schema?
|
|
127
128
|
this.readonly = false;
|
|
129
|
+
this.required = this.situation() !== Situation.SEARCH ? field.required : false;
|
|
128
130
|
this.ngControl.statusChanges;
|
|
129
131
|
this.fetchTags();
|
|
130
132
|
});
|
|
@@ -215,13 +217,13 @@ class MetadataFormFieldComponent {
|
|
|
215
217
|
this._subs.forEach((s) => s.unsubscribe());
|
|
216
218
|
}
|
|
217
219
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataFormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
218
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MetadataFormFieldComponent, isStandalone: true, selector: "yuv-metadata-form-field", inputs: { formField: { classPropertyName: "formField", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, situation: { classPropertyName: "situation", publicName: "situation", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "yuv-metadata-form-field" }, hostDirectives: [{ directive: i1.NoopValueAccessorDirective }], ngImport: i0, template: "@let field = formField();\n@if (field) {\n @let et = elementTemplate();\n <div class=\"form-field t-{{ field._internalType }}\" #formField [attr.data-name]=\"field.name\" [ngClass]=\"{ disabled: !!readonly }\">\n @if (et) {\n <yuv-form-input\n [ngClass]=\"{ checkbox: field._internalType === 'boolean' }\"\n [tag]=\"tag\"\n [label]=\"label\"\n [required]=\"
|
|
220
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MetadataFormFieldComponent, isStandalone: true, selector: "yuv-metadata-form-field", inputs: { formField: { classPropertyName: "formField", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, situation: { classPropertyName: "situation", publicName: "situation", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "yuv-metadata-form-field" }, hostDirectives: [{ directive: i1.NoopValueAccessorDirective }], ngImport: i0, template: "@let field = formField();\n@if (field) {\n @let et = elementTemplate();\n <div class=\"form-field t-{{ field._internalType }}\" #formField [attr.data-name]=\"field.name\" [ngClass]=\"{ disabled: !!readonly }\">\n @if (et) {\n <yuv-form-input\n [ngClass]=\"{ checkbox: field._internalType === 'boolean' }\"\n [tag]=\"tag\"\n [label]=\"label\"\n [required]=\"required\"\n [invalid]=\"!!errors\"\n [disabled]=\"readonly\"\n >\n <ng-container *ngTemplateOutlet=\"et; context: { $implicit: { situation: situation(), ngControl: ngControl.control, field } }\"></ng-container>\n </yuv-form-input>\n } @else {\n <em>\n <strong>{{ field._internalType }}</strong>\n </em>\n }\n\n <!-- the fields description -->\n @if (field.description) {\n <div class=\"description\">\n {{ field.description }}\n </div>\n }\n\n <!-- error/validation messages -->\n @if (errors) {\n <div class=\"err-msg\">\n <div>{{ errors[errors['length'] - 1] }}</div>\n </div>\n }\n </div>\n}\n", styles: [".yuv-metadata-form-field{display:inline-block}.yuv-metadata-form-field .form-field{margin-block-end:1px;border-radius:.25em}.yuv-metadata-form-field .form-field .description{border:0;font-size:var(--font-hint);color:var(--text-color-caption);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.yuv-metadata-form-field .form-field .err-msg{font-size:var(--font-hint);color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.yuv-metadata-form-field .form-field .table{flex-flow:column;align-items:flex-start;border:1px solid var(--panel-divider-color)}.yuv-metadata-form-field .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.yuv-metadata-form-field .form-field .table.invalid{border:1px solid var(--color-error)}.yuv-metadata-form-field .form-field.inlineError .err-msg{display:none}.yuv-metadata-form-field.ng-dirty:not(.ng-invalid)>.form-field:not(.focused) .fe-wrapper>label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FormInputComponent, selector: "yuv-form-input", inputs: ["label", "tag", "description", "invalid", "disabled", "required"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
219
221
|
}
|
|
220
222
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataFormFieldComponent, decorators: [{
|
|
221
223
|
type: Component,
|
|
222
224
|
args: [{ selector: 'yuv-metadata-form-field', standalone: true, imports: [NgClass, NgTemplateOutlet, FormInputComponent], hostDirectives: [NoopValueAccessorDirective], encapsulation: ViewEncapsulation.None, host: {
|
|
223
225
|
class: 'yuv-metadata-form-field'
|
|
224
|
-
}, template: "@let field = formField();\n@if (field) {\n @let et = elementTemplate();\n <div class=\"form-field t-{{ field._internalType }}\" #formField [attr.data-name]=\"field.name\" [ngClass]=\"{ disabled: !!readonly }\">\n @if (et) {\n <yuv-form-input\n [ngClass]=\"{ checkbox: field._internalType === 'boolean' }\"\n [tag]=\"tag\"\n [label]=\"label\"\n [required]=\"
|
|
226
|
+
}, template: "@let field = formField();\n@if (field) {\n @let et = elementTemplate();\n <div class=\"form-field t-{{ field._internalType }}\" #formField [attr.data-name]=\"field.name\" [ngClass]=\"{ disabled: !!readonly }\">\n @if (et) {\n <yuv-form-input\n [ngClass]=\"{ checkbox: field._internalType === 'boolean' }\"\n [tag]=\"tag\"\n [label]=\"label\"\n [required]=\"required\"\n [invalid]=\"!!errors\"\n [disabled]=\"readonly\"\n >\n <ng-container *ngTemplateOutlet=\"et; context: { $implicit: { situation: situation(), ngControl: ngControl.control, field } }\"></ng-container>\n </yuv-form-input>\n } @else {\n <em>\n <strong>{{ field._internalType }}</strong>\n </em>\n }\n\n <!-- the fields description -->\n @if (field.description) {\n <div class=\"description\">\n {{ field.description }}\n </div>\n }\n\n <!-- error/validation messages -->\n @if (errors) {\n <div class=\"err-msg\">\n <div>{{ errors[errors['length'] - 1] }}</div>\n </div>\n }\n </div>\n}\n", styles: [".yuv-metadata-form-field{display:inline-block}.yuv-metadata-form-field .form-field{margin-block-end:1px;border-radius:.25em}.yuv-metadata-form-field .form-field .description{border:0;font-size:var(--font-hint);color:var(--text-color-caption);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.yuv-metadata-form-field .form-field .err-msg{font-size:var(--font-hint);color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.yuv-metadata-form-field .form-field .table{flex-flow:column;align-items:flex-start;border:1px solid var(--panel-divider-color)}.yuv-metadata-form-field .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.yuv-metadata-form-field .form-field .table.invalid{border:1px solid var(--color-error)}.yuv-metadata-form-field .form-field.inlineError .err-msg{display:none}.yuv-metadata-form-field.ng-dirty:not(.ng-invalid)>.form-field:not(.focused) .fe-wrapper>label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"] }]
|
|
225
227
|
}] });
|
|
226
228
|
|
|
227
229
|
/**
|
|
@@ -274,7 +276,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
274
276
|
|
|
275
277
|
class MetadataDefaultTemplatesComponent {
|
|
276
278
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataDefaultTemplatesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
277
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MetadataDefaultTemplatesComponent, isStandalone: true, selector: "yuv-metadata-default-templates", ngImport: i0, template: "<!-- form element templates -->\n<!-- STRING -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"string\" let-ctx>\n
|
|
279
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MetadataDefaultTemplatesComponent, isStandalone: true, selector: "yuv-metadata-default-templates", ngImport: i0, template: "<!-- form element templates -->\n<!-- STRING -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"string\" let-ctx>\n <yuv-string\n [situation]=\"ctx.situation\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [multiselect]=\"ctx.field.cardinality === 'multi' || ctx.situation === 'SEARCH'\"\n [rows]=\"ctx.field.rows\"\n [classifications]=\"ctx.field.classifications\"\n [regex]=\"ctx.field.regex\"\n [readonly]=\"ctx.field.readonly\"\n [minLength]=\"ctx.field.minLength\"\n [maxLength]=\"ctx.field.maxLength\"\n >\n </yuv-string>\n</ng-template>\n\n<!-- ORGANIZATION -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"string:organization\" let-ctx>\n <yuv-organization\n [situation]=\"ctx.situation\"\n [multiselect]=\"ctx.field.cardinality === 'multi' || ctx.situation === 'SEARCH'\"\n (userSelect)=\"ctx.field.dataMeta = $event\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [classifications]=\"ctx.field.classifications\"\n [readonly]=\"ctx.field.readonly\"\n >\n </yuv-organization>\n</ng-template>\n\n<!-- INTEGER -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"integer\" let-ctx>\n @if (ctx.situation !== 'SEARCH') {\n <yuv-number\n [readonly]=\"ctx.field.readonly\"\n [precision]=\"ctx.field.precision\"\n [scale]=\"0\"\n [grouping]=\"ctx.field.grouping\"\n [minValue]=\"ctx.field.minValue\"\n [maxValue]=\"ctx.field.maxValue\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [classifications]=\"ctx.field.classifications\"\n >\n </yuv-number>\n } @else {\n <yuv-number-range\n [readonly]=\"ctx.field.readonly\"\n [precision]=\"ctx.field.precision\"\n [scale]=\"0\"\n [grouping]=\"ctx.field.grouping\"\n [minValue]=\"ctx.field.minValue\"\n [maxValue]=\"ctx.field.maxValue\"\n [pattern]=\"ctx.field.pattern\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [classifications]=\"ctx.field.classifications\"\n ></yuv-number-range>\n }\n</ng-template>\n\n<!-- DECIMAL -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"decimal\" let-ctx>\n @if (ctx.situation !== 'SEARCH') {\n <yuv-number\n [readonly]=\"ctx.field.readonly\"\n [precision]=\"ctx.field.precision\"\n [scale]=\"ctx.field.scale\"\n [grouping]=\"ctx.field.grouping\"\n [pattern]=\"ctx.field.pattern\"\n [minValue]=\"ctx.field.minValue\"\n [maxValue]=\"ctx.field.maxValue\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n >\n >\n </yuv-number>\n } @else {\n <yuv-number-range\n [readonly]=\"ctx.field.readonly\"\n [precision]=\"ctx.field.precision\"\n [scale]=\"ctx.field.scale\"\n [pattern]=\"ctx.field.pattern\"\n [grouping]=\"ctx.field.grouping\"\n [minValue]=\"ctx.field.minValue\"\n [maxValue]=\"ctx.field.maxValue\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n ></yuv-number-range>\n }\n</ng-template>\n\n<!-- BOOLEAN -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"boolean\" let-ctx>\n <yvc-checkbox\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [readonly]=\"ctx.field.readonly\"\n [tristate]=\"ctx.field.tristate === false ? false : true\"\n ></yvc-checkbox>\n</ng-template>\n\n<!-- BOOLEAN SWITCH -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"boolean:switch\" let-ctx>\n <yvc-checkbox\n [formControl]=\"ctx.ngControl\"\n switch=\"true\"\n [attr.data-name]=\"ctx.field.name\"\n [readonly]=\"ctx.field.readonly\"\n [tristate]=\"ctx.field.tristate === false ? false : true\"\n ></yvc-checkbox>\n</ng-template>\n\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"datetime\" let-ctx>\n @if (ctx.situation !== 'SEARCH') {\n <yuv-datetime\n [readonly]=\"ctx.field.readonly\"\n [withTime]=\"ctx.field.resolution !== 'date'\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n ></yuv-datetime>\n } @else {\n <yuv-datetime-range\n [situation]=\"ctx.situation\"\n [readonly]=\"ctx.field.readonly\"\n [withTime]=\"ctx.field.resolution !== 'date'\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n ></yuv-datetime-range>\n }\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: StringComponent, selector: "yuv-string", inputs: ["multiselect", "rows", "readonly", "autofocus", "classifications", "situation", "regex", "minLength", "maxLength"] }, { kind: "component", type: OrganizationComponent, selector: "yuv-organization", inputs: ["placeholder", "situation", "multiselect", "classifications", "readonly", "autofocus", "appendTo", "excludeMe", "withMetadata"], outputs: ["userSelect"] }, { kind: "component", type: NumberComponent, selector: "yuv-number", inputs: ["scale", "precision", "grouping", "groupPattern", "readonly", "minValue", "maxValue", "classifications"] }, { kind: "component", type: NumberRangeComponent, selector: "yuv-number-range", inputs: ["scale", "precision", "grouping", "pattern", "readonly", "classifications", "minValue", "maxValue"] }, { kind: "component", type: DatetimeComponent, selector: "yuv-datetime", inputs: ["onlyFutureDates", "readonly", "withTime"] }, { kind: "component", type: DatetimeRangeComponent, selector: "yuv-datetime-range", inputs: ["withTime", "readonly", "operator", "situation"] }, { kind: "directive", type: MetadataElementTemplateDirective, selector: "[yuvMetadataElementTemplate]", inputs: ["yuvMetadataElementTemplate", "propertyType", "situation"] }, { kind: "ngmodule", type: YvcCheckboxModule }, { kind: "component", type: i2.CheckboxComponent, selector: "yvc-checkbox", inputs: ["tristate", "readonly"] }] }); }
|
|
278
280
|
}
|
|
279
281
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataDefaultTemplatesComponent, decorators: [{
|
|
280
282
|
type: Component,
|
|
@@ -291,7 +293,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
291
293
|
DatetimeRangeComponent,
|
|
292
294
|
MetadataElementTemplateDirective,
|
|
293
295
|
YvcCheckboxModule
|
|
294
|
-
], template: "<!-- form element templates -->\n<!-- STRING -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"string\" let-ctx>\n
|
|
296
|
+
], template: "<!-- form element templates -->\n<!-- STRING -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"string\" let-ctx>\n <yuv-string\n [situation]=\"ctx.situation\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [multiselect]=\"ctx.field.cardinality === 'multi' || ctx.situation === 'SEARCH'\"\n [rows]=\"ctx.field.rows\"\n [classifications]=\"ctx.field.classifications\"\n [regex]=\"ctx.field.regex\"\n [readonly]=\"ctx.field.readonly\"\n [minLength]=\"ctx.field.minLength\"\n [maxLength]=\"ctx.field.maxLength\"\n >\n </yuv-string>\n</ng-template>\n\n<!-- ORGANIZATION -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"string:organization\" let-ctx>\n <yuv-organization\n [situation]=\"ctx.situation\"\n [multiselect]=\"ctx.field.cardinality === 'multi' || ctx.situation === 'SEARCH'\"\n (userSelect)=\"ctx.field.dataMeta = $event\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [classifications]=\"ctx.field.classifications\"\n [readonly]=\"ctx.field.readonly\"\n >\n </yuv-organization>\n</ng-template>\n\n<!-- INTEGER -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"integer\" let-ctx>\n @if (ctx.situation !== 'SEARCH') {\n <yuv-number\n [readonly]=\"ctx.field.readonly\"\n [precision]=\"ctx.field.precision\"\n [scale]=\"0\"\n [grouping]=\"ctx.field.grouping\"\n [minValue]=\"ctx.field.minValue\"\n [maxValue]=\"ctx.field.maxValue\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [classifications]=\"ctx.field.classifications\"\n >\n </yuv-number>\n } @else {\n <yuv-number-range\n [readonly]=\"ctx.field.readonly\"\n [precision]=\"ctx.field.precision\"\n [scale]=\"0\"\n [grouping]=\"ctx.field.grouping\"\n [minValue]=\"ctx.field.minValue\"\n [maxValue]=\"ctx.field.maxValue\"\n [pattern]=\"ctx.field.pattern\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [classifications]=\"ctx.field.classifications\"\n ></yuv-number-range>\n }\n</ng-template>\n\n<!-- DECIMAL -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"decimal\" let-ctx>\n @if (ctx.situation !== 'SEARCH') {\n <yuv-number\n [readonly]=\"ctx.field.readonly\"\n [precision]=\"ctx.field.precision\"\n [scale]=\"ctx.field.scale\"\n [grouping]=\"ctx.field.grouping\"\n [pattern]=\"ctx.field.pattern\"\n [minValue]=\"ctx.field.minValue\"\n [maxValue]=\"ctx.field.maxValue\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n >\n >\n </yuv-number>\n } @else {\n <yuv-number-range\n [readonly]=\"ctx.field.readonly\"\n [precision]=\"ctx.field.precision\"\n [scale]=\"ctx.field.scale\"\n [pattern]=\"ctx.field.pattern\"\n [grouping]=\"ctx.field.grouping\"\n [minValue]=\"ctx.field.minValue\"\n [maxValue]=\"ctx.field.maxValue\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n ></yuv-number-range>\n }\n</ng-template>\n\n<!-- BOOLEAN -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"boolean\" let-ctx>\n <yvc-checkbox\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [readonly]=\"ctx.field.readonly\"\n [tristate]=\"ctx.field.tristate === false ? false : true\"\n ></yvc-checkbox>\n</ng-template>\n\n<!-- BOOLEAN SWITCH -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"boolean:switch\" let-ctx>\n <yvc-checkbox\n [formControl]=\"ctx.ngControl\"\n switch=\"true\"\n [attr.data-name]=\"ctx.field.name\"\n [readonly]=\"ctx.field.readonly\"\n [tristate]=\"ctx.field.tristate === false ? false : true\"\n ></yvc-checkbox>\n</ng-template>\n\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"datetime\" let-ctx>\n @if (ctx.situation !== 'SEARCH') {\n <yuv-datetime\n [readonly]=\"ctx.field.readonly\"\n [withTime]=\"ctx.field.resolution !== 'date'\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n ></yuv-datetime>\n } @else {\n <yuv-datetime-range\n [situation]=\"ctx.situation\"\n [readonly]=\"ctx.field.readonly\"\n [withTime]=\"ctx.field.resolution !== 'date'\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n ></yuv-datetime-range>\n }\n</ng-template>\n" }]
|
|
295
297
|
}] });
|
|
296
298
|
|
|
297
299
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-client-framework-metadata-form.mjs","sources":["../../../../../libs/yuuvis/client-framework/metadata-form/src/lib/metadata-form-element-registry.service.ts","../../../../../libs/yuuvis/client-framework/metadata-form/src/lib/metadata-form-field/metadata-form-field.component.ts","../../../../../libs/yuuvis/client-framework/metadata-form/src/lib/metadata-form-field/metadata-form-field.component.html","../../../../../libs/yuuvis/client-framework/metadata-form/src/lib/object-metadata-element-template.directive.ts","../../../../../libs/yuuvis/client-framework/metadata-form/src/lib/metadata-default-templates/metadata-default-templates.component.ts","../../../../../libs/yuuvis/client-framework/metadata-form/src/lib/metadata-default-templates/metadata-default-templates.component.html","../../../../../libs/yuuvis/client-framework/metadata-form/src/yuuvis-client-framework-metadata-form.ts"],"sourcesContent":["import { Injectable, TemplateRef } from '@angular/core';\nimport { Situation } from '@yuuvis/client-core';\n\n/**\n * Registration service for form elements rendered within an object form.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class MetadataFormElementRegistry {\n private _defaults: { [propertyType: string]: TemplateRef<any> } = {};\n\n private _edit: { [propertyType: string]: TemplateRef<any> } = {};\n private _search: { [propertyType: string]: TemplateRef<any> } = {};\n private _create: { [propertyType: string]: TemplateRef<any> } = {};\n\n /**\n * Get a template to render a certain form element\n * @param propertyType The internal type to get the template for\n * @param situation Form situation\n * @returns TemplateRef or undefined\n */\n getElementTemplate(propertyType: string, situation: string = Situation.EDIT): TemplateRef<any> | undefined {\n let cmps = { ...this._defaults, ...this._edit };\n if (situation === Situation.SEARCH) cmps = { ...this._defaults, ...this._edit, ...this._search };\n else if (situation === Situation.CREATE) cmps = { ...this._defaults, ...this._edit, ...this._create };\n return cmps[propertyType];\n }\n\n /**\n * Register an object form element for a certain internal type. You might add a new component\n * or overwrite an existung one.\n * @param propertyType The internal type to provide the component for\n * @param component The component\n * @param situation Form situation to provide thew form element for (defaults to EDIT)\n */\n addElementTemplate(propertyType: string, templateRef: TemplateRef<any>, situation: Situation = Situation.EDIT): void {\n if (propertyType && templateRef) {\n switch (situation) {\n case Situation.SEARCH: {\n this._search[propertyType] = templateRef;\n break;\n }\n case Situation.CREATE: {\n this._create[propertyType] = templateRef;\n break;\n }\n default: {\n this._edit[propertyType] = templateRef;\n }\n }\n }\n }\n\n /**\n * Remove a registered form element.\n * @param propertyType The internal type to remove the component for\n * @param situation Form situation to provide thew form element for (defaults to EDIT)\n */\n removeElementTemplate(propertyType: string, situation: Situation = Situation.EDIT) {\n switch (situation) {\n case Situation.SEARCH: {\n delete this._search[propertyType];\n break;\n }\n case Situation.CREATE: {\n delete this._create[propertyType];\n break;\n }\n default: {\n delete this._edit[propertyType];\n }\n }\n }\n\n /**\n * Register default form element component. Usually this will be done by the object\n * form component itself.\n * @param propertyType The internal type to provide the component for\n * @param component The default component\n */\n _addDefaultElementTemplate(propertyType: string, templateRef: TemplateRef<any>): void {\n if (propertyType && templateRef) {\n this._defaults[propertyType] = templateRef;\n }\n }\n\n /**\n * Remove a registered default form element.\n * @param propertyType The internal type to remove the component for\n */\n _removeDefaultElementTemplate(propertyType: string) {\n delete this._defaults[propertyType];\n }\n}\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, effect, inject, input, OnDestroy, OnInit, signal, TemplateRef, untracked, ViewEncapsulation } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { ObjectTypeField, Situation, SystemService, TranslateService, Utils } from '@yuuvis/client-core';\nimport { injectNgControl, NoopValueAccessorDirective } from '@yuuvis/client-framework/common';\nimport { FormInputComponent } from '@yuuvis/client-framework/forms';\nimport { Subscription } from 'rxjs';\nimport { MetadataFormElementRegistry } from '../metadata-form-element-registry.service';\n\n@Component({\n selector: 'yuv-metadata-form-field',\n standalone: true,\n imports: [NgClass, NgTemplateOutlet, FormInputComponent],\n templateUrl: './metadata-form-field.component.html',\n styleUrl: './metadata-form-field.component.scss',\n hostDirectives: [NoopValueAccessorDirective],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'yuv-metadata-form-field'\n }\n})\nexport class MetadataFormFieldComponent implements OnInit, OnDestroy {\n readonly #registry = inject(MetadataFormElementRegistry);\n readonly #system = inject(SystemService);\n private readonly translate = inject(TranslateService);\n\n private _subs: Subscription[] = [];\n ngControl = injectNgControl();\n elementTemplate = signal<TemplateRef<any> | undefined>(undefined);\n errors: ValidationErrors | null = null;\n label = '';\n readonly = false;\n tag:\n | {\n label: string;\n title: string;\n }\n | undefined;\n private _field!: ObjectTypeField;\n\n formField = input.required<ObjectTypeField>({ alias: 'field' });\n\n #fieldEffect = effect(() => {\n const field = this.formField();\n\n untracked(() => {\n this.elementTemplate.set(this.#registry.getElementTemplate(field._internalType, this.situation()));\n this.label = this.#system.getLocalizedLabel(field.name) || field.name;\n\n // TODO: set readonly state based on ...????... schema?\n this.readonly = false;\n this.ngControl.statusChanges;\n this.fetchTags();\n });\n });\n\n /**\n * Form situation, if not set default will be 'EDIT'\n */\n situation = input<string | undefined>(Situation.EDIT);\n\n fetchTags() {\n this.tag = undefined;\n if (\n this.situation() === Situation.CREATE &&\n (Utils.hasProperty(this.formField(), 'defaultvaluefunction') || Utils.hasProperty(this.formField(), 'defaultvalue'))\n ) {\n this.tag =\n (this.formField() as any).defaultvaluefunction === 'EXTRACTION'\n ? {\n label: 'ex',\n title: this.translate.instant('yuv.object-form-element.tag.ex')\n }\n : {\n label: 'df',\n title: this.translate.instant('yuv.object-form-element.tag.df')\n };\n }\n }\n\n private _getErrorLabel(error: string, params?: any) {\n switch (error) {\n case 'daterange':\n return this.translate.instant('yuv.object-form-element.error.daterange.invalid', params);\n case 'daterangeorder':\n return this.translate.instant('yuv.object-form-element.error.daterangeorder.invalid', params);\n case 'numberrange':\n return this.translate.instant('yuv.object-form-element.error.numberrange.invalid', params);\n case 'numberrangeorder':\n return this.translate.instant('yuv.object-form-element.error.numberrangeorder.invalid', params);\n case 'number':\n return this.translate.instant('yuv.object-form-element.error.number', params);\n case 'precision':\n return this.translate.instant('yuv.object-form-element.error.number.precision', params);\n case 'scale':\n return this.translate.instant('yuv.object-form-element.error.number.scale', params);\n case 'regex':\n return this.translate.instant('yuv.object-form-element.error.string.regex.nomatch', params);\n case 'pattern':\n return this.translate.instant('yuv.object-form-element.error.string.regex.nomatch', params);\n case 'classificationemail':\n return this.translate.instant('yuv.object-form-element.error.string.classification.email', params);\n case 'classificationphone':\n return this.translate.instant('yuv.object-form-element.error.string.classification.phone', params);\n case 'classificationurl':\n return this.translate.instant('yuv.object-form-element.error.string.classification.url', params);\n case 'onlyWhitespaces':\n return this.translate.instant('yuv.object-form-element.error.string.whitespaces', params);\n case 'datecontrol':\n return this.translate.instant('yuv.object-form-element.error.date.invalid', params);\n case 'required':\n return this.translate.instant('yuv.object-form-element.error.required', params);\n case 'maxlength':\n return this.translate.instant('yuv.object-form-element.error.maxlength', params);\n case 'minlength':\n return this.translate.instant('yuv.object-form-element.error.minlength', params);\n case 'minmax':\n return this.translate.instant('yuv.object-form-element.error.minmax', params);\n case 'minvalue':\n return this.translate.instant('yuv.object-form-element.error.minvalue', params);\n case 'maxvalue':\n return this.translate.instant('yuv.object-form-element.error.maxvalue', params);\n case 'empty':\n return this.translate.instant('yuv.object-form-element.recent-activities.list.empty', params);\n default:\n return this.translate.instant(error, params);\n }\n }\n\n ngOnInit(): void {\n if (this.ngControl.statusChanges)\n this._subs.push(\n this.ngControl.statusChanges.subscribe(() => {\n this.errors = this.ngControl.control.errors\n ? Object.keys(this.ngControl.control.errors).map((key) => {\n return this.ngControl.control.errors ? this._getErrorLabel(key, this.ngControl.control.errors[key].params) : null;\n })\n : null;\n })\n );\n }\n\n ngOnDestroy(): void {\n this._subs.forEach((s) => s.unsubscribe());\n }\n}\n","@let field = formField();\n@if (field) {\n @let et = elementTemplate();\n <div class=\"form-field t-{{ field._internalType }}\" #formField [attr.data-name]=\"field.name\" [ngClass]=\"{ disabled: !!readonly }\">\n @if (et) {\n <yuv-form-input\n [ngClass]=\"{ checkbox: field._internalType === 'boolean' }\"\n [tag]=\"tag\"\n [label]=\"label\"\n [required]=\"field.required\"\n [invalid]=\"!!errors\"\n [disabled]=\"readonly\"\n >\n <ng-container *ngTemplateOutlet=\"et; context: { $implicit: { situation: situation(), ngControl: ngControl.control, field } }\"></ng-container>\n </yuv-form-input>\n } @else {\n <em>\n <strong>{{ field._internalType }}</strong>\n </em>\n }\n\n <!-- the fields description -->\n @if (field.description) {\n <div class=\"description\">\n {{ field.description }}\n </div>\n }\n\n <!-- error/validation messages -->\n @if (errors) {\n <div class=\"err-msg\">\n <div>{{ errors[errors['length'] - 1] }}</div>\n </div>\n }\n </div>\n}\n","import { Directive, Input, OnDestroy, OnInit, TemplateRef, inject } from '@angular/core';\nimport { Situation } from '@yuuvis/client-core';\nimport { MetadataFormElementRegistry } from './metadata-form-element-registry.service';\n\n/**\n * Directive to be applied to a `ng-template`. It will register the template as a\n * form element used by object-form component.\n *\n * Context is provided with the following fields:\n * - situation: form situation 'EDIT', 'CREATE', 'SEARCH'\n * - field: ObjectTypeField\n * - ngControl: Reactive FormControl\n *\n * @example\n * <ng-template yuvMetadataElementTemplate propertyType=\"boolean:switch\" let-ctx>...</ng-template>\n *\n */\n@Directive({\n selector: '[yuvMetadataElementTemplate]',\n standalone: true,\n})\nexport class MetadataElementTemplateDirective implements OnInit, OnDestroy {\n private registry = inject(MetadataFormElementRegistry);\n private template = inject(TemplateRef<any>);\n\n @Input() yuvMetadataElementTemplate?: string;\n @Input() propertyType!: string;\n @Input() situation: Situation = Situation.EDIT;\n\n ngOnInit(): void {\n if (this.yuvMetadataElementTemplate === 'default') this.registry._addDefaultElementTemplate(this.propertyType, this.template);\n else this.registry.addElementTemplate(this.propertyType, this.template, this.situation);\n }\n\n ngOnDestroy(): void {\n if (this.yuvMetadataElementTemplate === 'default') this.registry._removeDefaultElementTemplate(this.propertyType);\n else this.registry.removeElementTemplate(this.propertyType, this.situation);\n }\n}\n","import { Component } from '@angular/core';\nimport {\n CatalogComponent,\n DatetimeComponent,\n DatetimeRangeComponent,\n FormInputComponent,\n NumberComponent,\n NumberRangeComponent,\n OrganizationComponent,\n StringComponent\n} from '@yuuvis/client-framework/forms';\nimport { MetadataElementTemplateDirective } from '../object-metadata-element-template.directive';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { YvcCheckboxModule } from '@yuuvis/components/checkbox';\n\n@Component({\n selector: 'yuv-metadata-default-templates',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormInputComponent,\n CatalogComponent,\n StringComponent,\n OrganizationComponent,\n NumberComponent,\n NumberRangeComponent,\n DatetimeComponent,\n DatetimeRangeComponent,\n MetadataElementTemplateDirective,\n YvcCheckboxModule\n ],\n templateUrl: './metadata-default-templates.component.html',\n styleUrl: './metadata-default-templates.component.scss'\n})\nexport class MetadataDefaultTemplatesComponent {}\n","<!-- form element templates -->\n<!-- STRING -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"string\" let-ctx>\n\n <yuv-string\n [situation]=\"ctx.situation\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [multiselect]=\"ctx.field.cardinality === 'multi' || ctx.situation === 'SEARCH'\"\n [rows]=\"ctx.field.rows\"\n [classifications]=\"ctx.field.classifications\"\n [regex]=\"ctx.field.regex\"\n [readonly]=\"ctx.field.readonly\"\n [minLength]=\"ctx.field.minLength\"\n [maxLength]=\"ctx.field.maxLength\"\n > \n </yuv-string>\n</ng-template>\n\n<!-- ORGANIZATION -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"string:organization\" let-ctx>\n <yuv-organization\n [situation]=\"ctx.situation\"\n [multiselect]=\"ctx.field.cardinality === 'multi' || ctx.situation === 'SEARCH'\"\n (userSelect)=\"ctx.field.dataMeta = $event\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [classifications]=\"ctx.field.classifications\"\n [readonly]=\"ctx.field.readonly\"\n >\n </yuv-organization>\n</ng-template>\n\n<!-- INTEGER -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"integer\" let-ctx>\n @if (ctx.situation !== 'SEARCH') {\n<yuv-number\n [readonly]=\"ctx.field.readonly\"\n [precision]=\"ctx.field.precision\"\n [scale]=\"0\"\n [grouping]=\"ctx.field.grouping\"\n [minValue]=\"ctx.field.minValue\"\n [maxValue]=\"ctx.field.maxValue\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [classifications]=\"ctx.field.classifications\"\n >\n </yuv-number> \n } @else {\n \n <yuv-number-range\n [readonly]=\"ctx.field.readonly\"\n [precision]=\"ctx.field.precision\"\n [scale]=\"0\"\n [grouping]=\"ctx.field.grouping\"\n [minValue]=\"ctx.field.minValue\"\n [maxValue]=\"ctx.field.maxValue\"\n [pattern]=\"ctx.field.pattern\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [classifications]=\"ctx.field.classifications\"\n ></yuv-number-range>\n }\n</ng-template>\n\n<!-- DECIMAL -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"decimal\" let-ctx>\n @if (ctx.situation !== 'SEARCH') {\n <yuv-number\n [readonly]=\"ctx.field.readonly\"\n [precision]=\"ctx.field.precision\"\n [scale]=\"ctx.field.scale\"\n [grouping]=\"ctx.field.grouping\"\n [pattern]=\"ctx.field.pattern\"\n [minValue]=\"ctx.field.minValue\"\n [maxValue]=\"ctx.field.maxValue\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n >\n >\n </yuv-number>\n } @else {\n <yuv-number-range\n [readonly]=\"ctx.field.readonly\"\n [precision]=\"ctx.field.precision\"\n [scale]=\"ctx.field.scale\"\n [pattern]=\"ctx.field.pattern\"\n [grouping]=\"ctx.field.grouping\"\n [minValue]=\"ctx.field.minValue\"\n [maxValue]=\"ctx.field.maxValue\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n ></yuv-number-range>\n }\n</ng-template>\n\n<!-- BOOLEAN -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"boolean\" let-ctx>\n <yvc-checkbox\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [readonly]=\"ctx.field.readonly\"\n [tristate]=\"ctx.field.tristate === false ? false : true\"\n ></yvc-checkbox>\n</ng-template>\n\n<!-- BOOLEAN SWITCH -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"boolean:switch\" let-ctx>\n <yvc-checkbox\n [formControl]=\"ctx.ngControl\"\n switch=\"true\"\n [attr.data-name]=\"ctx.field.name\"\n [readonly]=\"ctx.field.readonly\"\n [tristate]=\"ctx.field.tristate === false ? false : true\"\n ></yvc-checkbox>\n</ng-template>\n\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"datetime\" let-ctx>\n @if (ctx.situation !== 'SEARCH') {\n <yuv-datetime\n [readonly]=\"ctx.field.readonly\"\n [withTime]=\"ctx.field.resolution !== 'date'\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n ></yuv-datetime> \n } @else {\n <yuv-datetime-range\n [readonly]=\"ctx.field.readonly\"\n [withTime]=\"ctx.field.resolution !== 'date'\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n ></yuv-datetime-range> \n }\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yuuvis-client-framework-metadata-form.mjs","sources":["../../../../../libs/yuuvis/client-framework/metadata-form/src/lib/metadata-form-element-registry.service.ts","../../../../../libs/yuuvis/client-framework/metadata-form/src/lib/metadata-form-field/metadata-form-field.component.ts","../../../../../libs/yuuvis/client-framework/metadata-form/src/lib/metadata-form-field/metadata-form-field.component.html","../../../../../libs/yuuvis/client-framework/metadata-form/src/lib/object-metadata-element-template.directive.ts","../../../../../libs/yuuvis/client-framework/metadata-form/src/lib/metadata-default-templates/metadata-default-templates.component.ts","../../../../../libs/yuuvis/client-framework/metadata-form/src/lib/metadata-default-templates/metadata-default-templates.component.html","../../../../../libs/yuuvis/client-framework/metadata-form/src/yuuvis-client-framework-metadata-form.ts"],"sourcesContent":["import { Injectable, TemplateRef } from '@angular/core';\nimport { Situation } from '@yuuvis/client-core';\n\n/**\n * Registration service for form elements rendered within an object form.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class MetadataFormElementRegistry {\n private _defaults: { [propertyType: string]: TemplateRef<any> } = {};\n\n private _edit: { [propertyType: string]: TemplateRef<any> } = {};\n private _search: { [propertyType: string]: TemplateRef<any> } = {};\n private _create: { [propertyType: string]: TemplateRef<any> } = {};\n\n /**\n * Get a template to render a certain form element\n * @param propertyType The internal type to get the template for\n * @param situation Form situation\n * @returns TemplateRef or undefined\n */\n getElementTemplate(propertyType: string, situation: string = Situation.EDIT): TemplateRef<any> | undefined {\n let cmps = { ...this._defaults, ...this._edit };\n if (situation === Situation.SEARCH) cmps = { ...this._defaults, ...this._edit, ...this._search };\n else if (situation === Situation.CREATE) cmps = { ...this._defaults, ...this._edit, ...this._create };\n return cmps[propertyType];\n }\n\n /**\n * Register an object form element for a certain internal type. You might add a new component\n * or overwrite an existung one.\n * @param propertyType The internal type to provide the component for\n * @param component The component\n * @param situation Form situation to provide thew form element for (defaults to EDIT)\n */\n addElementTemplate(propertyType: string, templateRef: TemplateRef<any>, situation: Situation = Situation.EDIT): void {\n if (propertyType && templateRef) {\n switch (situation) {\n case Situation.SEARCH: {\n this._search[propertyType] = templateRef;\n break;\n }\n case Situation.CREATE: {\n this._create[propertyType] = templateRef;\n break;\n }\n default: {\n this._edit[propertyType] = templateRef;\n }\n }\n }\n }\n\n /**\n * Remove a registered form element.\n * @param propertyType The internal type to remove the component for\n * @param situation Form situation to provide thew form element for (defaults to EDIT)\n */\n removeElementTemplate(propertyType: string, situation: Situation = Situation.EDIT) {\n switch (situation) {\n case Situation.SEARCH: {\n delete this._search[propertyType];\n break;\n }\n case Situation.CREATE: {\n delete this._create[propertyType];\n break;\n }\n default: {\n delete this._edit[propertyType];\n }\n }\n }\n\n /**\n * Register default form element component. Usually this will be done by the object\n * form component itself.\n * @param propertyType The internal type to provide the component for\n * @param component The default component\n */\n _addDefaultElementTemplate(propertyType: string, templateRef: TemplateRef<any>): void {\n if (propertyType && templateRef) {\n this._defaults[propertyType] = templateRef;\n }\n }\n\n /**\n * Remove a registered default form element.\n * @param propertyType The internal type to remove the component for\n */\n _removeDefaultElementTemplate(propertyType: string) {\n delete this._defaults[propertyType];\n }\n}\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, effect, inject, input, OnDestroy, OnInit, signal, TemplateRef, untracked, ViewEncapsulation } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { ObjectTypeField, Situation, SystemService, TranslateService, Utils } from '@yuuvis/client-core';\nimport { injectNgControl, NoopValueAccessorDirective } from '@yuuvis/client-framework/common';\nimport { FormInputComponent } from '@yuuvis/client-framework/forms';\nimport { Subscription } from 'rxjs';\nimport { MetadataFormElementRegistry } from '../metadata-form-element-registry.service';\n\n@Component({\n selector: 'yuv-metadata-form-field',\n standalone: true,\n imports: [NgClass, NgTemplateOutlet, FormInputComponent],\n templateUrl: './metadata-form-field.component.html',\n styleUrl: './metadata-form-field.component.scss',\n hostDirectives: [NoopValueAccessorDirective],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'yuv-metadata-form-field'\n }\n})\nexport class MetadataFormFieldComponent implements OnInit, OnDestroy {\n readonly #registry = inject(MetadataFormElementRegistry);\n readonly #system = inject(SystemService);\n private readonly translate = inject(TranslateService);\n\n private _subs: Subscription[] = [];\n ngControl = injectNgControl();\n elementTemplate = signal<TemplateRef<any> | undefined>(undefined);\n errors: ValidationErrors | null = null;\n label = '';\n readonly = false;\n required = false;\n tag:\n | {\n label: string;\n title: string;\n }\n | undefined;\n private _field!: ObjectTypeField;\n\n formField = input.required<ObjectTypeField>({ alias: 'field' });\n\n #fieldEffect = effect(() => {\n const field = this.formField();\n\n untracked(() => {\n this.elementTemplate.set(this.#registry.getElementTemplate(field._internalType, this.situation()));\n this.label = this.#system.getLocalizedLabel(field.name) || field.name;\n\n // TODO: set readonly state based on ...????... schema?\n this.readonly = false;\n this.required = this.situation() !== Situation.SEARCH ? field.required : false;\n this.ngControl.statusChanges;\n this.fetchTags();\n });\n });\n\n /**\n * Form situation, if not set default will be 'EDIT'\n */\n situation = input<string | undefined>(Situation.EDIT);\n\n fetchTags() {\n this.tag = undefined;\n if (\n this.situation() === Situation.CREATE &&\n (Utils.hasProperty(this.formField(), 'defaultvaluefunction') || Utils.hasProperty(this.formField(), 'defaultvalue'))\n ) {\n this.tag =\n (this.formField() as any).defaultvaluefunction === 'EXTRACTION'\n ? {\n label: 'ex',\n title: this.translate.instant('yuv.object-form-element.tag.ex')\n }\n : {\n label: 'df',\n title: this.translate.instant('yuv.object-form-element.tag.df')\n };\n }\n }\n\n private _getErrorLabel(error: string, params?: any) {\n switch (error) {\n case 'daterange':\n return this.translate.instant('yuv.object-form-element.error.daterange.invalid', params);\n case 'daterangeorder':\n return this.translate.instant('yuv.object-form-element.error.daterangeorder.invalid', params);\n case 'numberrange':\n return this.translate.instant('yuv.object-form-element.error.numberrange.invalid', params);\n case 'numberrangeorder':\n return this.translate.instant('yuv.object-form-element.error.numberrangeorder.invalid', params);\n case 'number':\n return this.translate.instant('yuv.object-form-element.error.number', params);\n case 'precision':\n return this.translate.instant('yuv.object-form-element.error.number.precision', params);\n case 'scale':\n return this.translate.instant('yuv.object-form-element.error.number.scale', params);\n case 'regex':\n return this.translate.instant('yuv.object-form-element.error.string.regex.nomatch', params);\n case 'pattern':\n return this.translate.instant('yuv.object-form-element.error.string.regex.nomatch', params);\n case 'classificationemail':\n return this.translate.instant('yuv.object-form-element.error.string.classification.email', params);\n case 'classificationphone':\n return this.translate.instant('yuv.object-form-element.error.string.classification.phone', params);\n case 'classificationurl':\n return this.translate.instant('yuv.object-form-element.error.string.classification.url', params);\n case 'onlyWhitespaces':\n return this.translate.instant('yuv.object-form-element.error.string.whitespaces', params);\n case 'datecontrol':\n return this.translate.instant('yuv.object-form-element.error.date.invalid', params);\n case 'required':\n return this.translate.instant('yuv.object-form-element.error.required', params);\n case 'maxlength':\n return this.translate.instant('yuv.object-form-element.error.maxlength', params);\n case 'minlength':\n return this.translate.instant('yuv.object-form-element.error.minlength', params);\n case 'minmax':\n return this.translate.instant('yuv.object-form-element.error.minmax', params);\n case 'minvalue':\n return this.translate.instant('yuv.object-form-element.error.minvalue', params);\n case 'maxvalue':\n return this.translate.instant('yuv.object-form-element.error.maxvalue', params);\n case 'empty':\n return this.translate.instant('yuv.object-form-element.recent-activities.list.empty', params);\n default:\n return this.translate.instant(error, params);\n }\n }\n\n ngOnInit(): void {\n if (this.ngControl.statusChanges)\n this._subs.push(\n this.ngControl.statusChanges.subscribe(() => {\n this.errors = this.ngControl.control.errors\n ? Object.keys(this.ngControl.control.errors).map((key) => {\n return this.ngControl.control.errors ? this._getErrorLabel(key, this.ngControl.control.errors[key].params) : null;\n })\n : null;\n })\n );\n }\n\n ngOnDestroy(): void {\n this._subs.forEach((s) => s.unsubscribe());\n }\n}\n","@let field = formField();\n@if (field) {\n @let et = elementTemplate();\n <div class=\"form-field t-{{ field._internalType }}\" #formField [attr.data-name]=\"field.name\" [ngClass]=\"{ disabled: !!readonly }\">\n @if (et) {\n <yuv-form-input\n [ngClass]=\"{ checkbox: field._internalType === 'boolean' }\"\n [tag]=\"tag\"\n [label]=\"label\"\n [required]=\"required\"\n [invalid]=\"!!errors\"\n [disabled]=\"readonly\"\n >\n <ng-container *ngTemplateOutlet=\"et; context: { $implicit: { situation: situation(), ngControl: ngControl.control, field } }\"></ng-container>\n </yuv-form-input>\n } @else {\n <em>\n <strong>{{ field._internalType }}</strong>\n </em>\n }\n\n <!-- the fields description -->\n @if (field.description) {\n <div class=\"description\">\n {{ field.description }}\n </div>\n }\n\n <!-- error/validation messages -->\n @if (errors) {\n <div class=\"err-msg\">\n <div>{{ errors[errors['length'] - 1] }}</div>\n </div>\n }\n </div>\n}\n","import { Directive, Input, OnDestroy, OnInit, TemplateRef, inject } from '@angular/core';\nimport { Situation } from '@yuuvis/client-core';\nimport { MetadataFormElementRegistry } from './metadata-form-element-registry.service';\n\n/**\n * Directive to be applied to a `ng-template`. It will register the template as a\n * form element used by object-form component.\n *\n * Context is provided with the following fields:\n * - situation: form situation 'EDIT', 'CREATE', 'SEARCH'\n * - field: ObjectTypeField\n * - ngControl: Reactive FormControl\n *\n * @example\n * <ng-template yuvMetadataElementTemplate propertyType=\"boolean:switch\" let-ctx>...</ng-template>\n *\n */\n@Directive({\n selector: '[yuvMetadataElementTemplate]',\n standalone: true,\n})\nexport class MetadataElementTemplateDirective implements OnInit, OnDestroy {\n private registry = inject(MetadataFormElementRegistry);\n private template = inject(TemplateRef<any>);\n\n @Input() yuvMetadataElementTemplate?: string;\n @Input() propertyType!: string;\n @Input() situation: Situation = Situation.EDIT;\n\n ngOnInit(): void {\n if (this.yuvMetadataElementTemplate === 'default') this.registry._addDefaultElementTemplate(this.propertyType, this.template);\n else this.registry.addElementTemplate(this.propertyType, this.template, this.situation);\n }\n\n ngOnDestroy(): void {\n if (this.yuvMetadataElementTemplate === 'default') this.registry._removeDefaultElementTemplate(this.propertyType);\n else this.registry.removeElementTemplate(this.propertyType, this.situation);\n }\n}\n","import { Component } from '@angular/core';\nimport {\n CatalogComponent,\n DatetimeComponent,\n DatetimeRangeComponent,\n FormInputComponent,\n NumberComponent,\n NumberRangeComponent,\n OrganizationComponent,\n StringComponent\n} from '@yuuvis/client-framework/forms';\nimport { MetadataElementTemplateDirective } from '../object-metadata-element-template.directive';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { YvcCheckboxModule } from '@yuuvis/components/checkbox';\n\n@Component({\n selector: 'yuv-metadata-default-templates',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormInputComponent,\n CatalogComponent,\n StringComponent,\n OrganizationComponent,\n NumberComponent,\n NumberRangeComponent,\n DatetimeComponent,\n DatetimeRangeComponent,\n MetadataElementTemplateDirective,\n YvcCheckboxModule\n ],\n templateUrl: './metadata-default-templates.component.html',\n styleUrl: './metadata-default-templates.component.scss'\n})\nexport class MetadataDefaultTemplatesComponent {}\n","<!-- form element templates -->\n<!-- STRING -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"string\" let-ctx>\n <yuv-string\n [situation]=\"ctx.situation\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [multiselect]=\"ctx.field.cardinality === 'multi' || ctx.situation === 'SEARCH'\"\n [rows]=\"ctx.field.rows\"\n [classifications]=\"ctx.field.classifications\"\n [regex]=\"ctx.field.regex\"\n [readonly]=\"ctx.field.readonly\"\n [minLength]=\"ctx.field.minLength\"\n [maxLength]=\"ctx.field.maxLength\"\n >\n </yuv-string>\n</ng-template>\n\n<!-- ORGANIZATION -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"string:organization\" let-ctx>\n <yuv-organization\n [situation]=\"ctx.situation\"\n [multiselect]=\"ctx.field.cardinality === 'multi' || ctx.situation === 'SEARCH'\"\n (userSelect)=\"ctx.field.dataMeta = $event\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [classifications]=\"ctx.field.classifications\"\n [readonly]=\"ctx.field.readonly\"\n >\n </yuv-organization>\n</ng-template>\n\n<!-- INTEGER -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"integer\" let-ctx>\n @if (ctx.situation !== 'SEARCH') {\n <yuv-number\n [readonly]=\"ctx.field.readonly\"\n [precision]=\"ctx.field.precision\"\n [scale]=\"0\"\n [grouping]=\"ctx.field.grouping\"\n [minValue]=\"ctx.field.minValue\"\n [maxValue]=\"ctx.field.maxValue\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [classifications]=\"ctx.field.classifications\"\n >\n </yuv-number>\n } @else {\n <yuv-number-range\n [readonly]=\"ctx.field.readonly\"\n [precision]=\"ctx.field.precision\"\n [scale]=\"0\"\n [grouping]=\"ctx.field.grouping\"\n [minValue]=\"ctx.field.minValue\"\n [maxValue]=\"ctx.field.maxValue\"\n [pattern]=\"ctx.field.pattern\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [classifications]=\"ctx.field.classifications\"\n ></yuv-number-range>\n }\n</ng-template>\n\n<!-- DECIMAL -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"decimal\" let-ctx>\n @if (ctx.situation !== 'SEARCH') {\n <yuv-number\n [readonly]=\"ctx.field.readonly\"\n [precision]=\"ctx.field.precision\"\n [scale]=\"ctx.field.scale\"\n [grouping]=\"ctx.field.grouping\"\n [pattern]=\"ctx.field.pattern\"\n [minValue]=\"ctx.field.minValue\"\n [maxValue]=\"ctx.field.maxValue\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n >\n >\n </yuv-number>\n } @else {\n <yuv-number-range\n [readonly]=\"ctx.field.readonly\"\n [precision]=\"ctx.field.precision\"\n [scale]=\"ctx.field.scale\"\n [pattern]=\"ctx.field.pattern\"\n [grouping]=\"ctx.field.grouping\"\n [minValue]=\"ctx.field.minValue\"\n [maxValue]=\"ctx.field.maxValue\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n ></yuv-number-range>\n }\n</ng-template>\n\n<!-- BOOLEAN -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"boolean\" let-ctx>\n <yvc-checkbox\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n [readonly]=\"ctx.field.readonly\"\n [tristate]=\"ctx.field.tristate === false ? false : true\"\n ></yvc-checkbox>\n</ng-template>\n\n<!-- BOOLEAN SWITCH -->\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"boolean:switch\" let-ctx>\n <yvc-checkbox\n [formControl]=\"ctx.ngControl\"\n switch=\"true\"\n [attr.data-name]=\"ctx.field.name\"\n [readonly]=\"ctx.field.readonly\"\n [tristate]=\"ctx.field.tristate === false ? false : true\"\n ></yvc-checkbox>\n</ng-template>\n\n<ng-template yuvMetadataElementTemplate=\"default\" propertyType=\"datetime\" let-ctx>\n @if (ctx.situation !== 'SEARCH') {\n <yuv-datetime\n [readonly]=\"ctx.field.readonly\"\n [withTime]=\"ctx.field.resolution !== 'date'\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n ></yuv-datetime>\n } @else {\n <yuv-datetime-range\n [situation]=\"ctx.situation\"\n [readonly]=\"ctx.field.readonly\"\n [withTime]=\"ctx.field.resolution !== 'date'\"\n [formControl]=\"ctx.ngControl\"\n [attr.data-name]=\"ctx.field.name\"\n ></yuv-datetime-range>\n }\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -192,11 +192,11 @@ class ObjectAuditComponent {
|
|
|
192
192
|
this.error = true;
|
|
193
193
|
}
|
|
194
194
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectAuditComponent, deps: [{ token: i1.AuditService }, { token: i1.BackendService }, { token: i1.AppCacheService }, { token: i1.EventService }, { token: i1.SystemService }, { token: i2.UntypedFormBuilder }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
195
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ObjectAuditComponent, isStandalone: true, selector: "yuv-object-audit", inputs: { dmsObject: { classPropertyName: "dmsObject", publicName: "dmsObject", isSignal: true, isRequired: false, transformFunction: null }, skipActions: { classPropertyName: "skipActions", publicName: "skipActions", isSignal: true, isRequired: false, transformFunction: null }, allActions: { classPropertyName: "allActions", publicName: "allActions", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "versionsLink", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<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 <div class=\"timeline\">\n @for (item of resItems; track $index) {\n <div class=\"audit\">\n <div class=\"date\">{{ item.creationDate | localeDate }}</div>\n <div class=\"node\">\n <div class=\"label\">\n <span class=\"title\">{{ item.label }}</span>\n @if (item.detail === 'OBJECT_DOCUMENT_CHANGED') {\n @if (link()) {\n <a class=\"version\" [routerLink]=\"link()\" [queryParams]=\"{ version: item.version }\">{{ item.version }}</a>\n } @else {\n <span class=\"version\">{{ item.version }}</span>\n }\n }\n </div>\n <div class=\"more meta\">{{ item.more }}</div>\n <div class=\"creator meta\">{{ item.createdBy.title }}</div>\n </div>\n </div>\n }\n </div>\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 [attr.aria-label]=\"'yuv.audit.label.paging.prev' | translate\" [disabled]=\"auditsRes.page === 1\" (click)=\"goToPage(auditsRes.page - 1)\">\n <yvc-icon class=\"prev\" [svg]=\"icons.arrowNext\"></yvc-icon>\n </button>\n <div class=\"page\">\n {{ auditsRes.page }}\n </div>\n <button [attr.aria-label]=\"'yuv.audit.label.paging.next' | translate\" [disabled]=\"!auditsRes.hasMoreItems\" (click)=\"goToPage(auditsRes.page + 1)\">\n <yvc-icon class=\"next\" [svg]=\"icons.arrowNext\"></yvc-icon>\n </button>\n </div>\n </div>\n }\n }\n</div>\n", styles: [":host .yuv-audit{position:relative;height:100%;display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"items\" \"footer\";background-color:var(--panel-background-grey);container-type:inline-size;container-name:cmp}:host .yuv-audit .error{grid-area:items;display:flex;flex-flow:column;align-items:center;justify-content:center}:host .yuv-audit .error>div{background-color:var(--color-error);color:#fff;margin:var(--app-pane-padding);padding:var(--app-pane-padding);border-radius:calc(var(--app-pane-padding) / 2)}:host .yuv-audit .search{position:absolute;left:0;top:0;bottom:0;max-width:90%;background-color:var(--panel-background);border-right:1px solid var(--panel-divider-color);animation:yuvFadeInLeft var(--app-default-transition-duration);padding:var(--app-pane-padding);display:flex;z-index:3;flex-flow:column}:host .yuv-audit .search h3{color:var(--text-color-caption);margin:0 0 var(--app-pane-padding) 0;font-size:var(--font-title);font-weight:var(--font-weight-light)}:host .yuv-audit .search button.group{color:var(--text-color-caption);margin:0 0 var(--app-pane-padding) 0;font-size:var(--font-subhead);font-weight:var(--font-weight-normal);padding:0;cursor:pointer}:host .yuv-audit .search button.group:focus{color:var(--color-accent);outline:0;background-color:transparent;border-color:transparent}:host .yuv-audit .search .controls{flex:1;overflow-y:auto}:host .yuv-audit .search .controls .form-control{margin-top:var(--app-pane-padding)}:host .yuv-audit .search .buttons{display:flex;justify-content:flex-end}:host .yuv-audit .btn-search{position:absolute;top:var(--app-pane-padding);left:var(--app-pane-padding);background-color:var(--panel-background);padding:calc(var(--app-pane-padding) / 2);border:1px solid var(--panel-divider-color);z-index:1;box-shadow:0 0 10px 10px var(--panel-background-grey)}:host .yuv-audit .btn-search.badge{color:var(--color-accent)}:host .yuv-audit .btn-search yvc-icon{display:block}:host .yuv-audit .audits{grid-area:items}:host .yuv-audit .empty{grid-area:items;display:flex;flex-flow:column;align-items:center;justify-content:center;color:var(--text-color-caption)}:host .yuv-audit .footer{grid-area:footer;background-color:var(--panel-background);border-top:1px solid var(--panel-divider-color);display:flex}:host .yuv-audit .footer .paging{flex:1;display:flex;align-items:center;justify-content:flex-end;color:var(--text-color-caption)}:host .yuv-audit .footer .paging .page{padding:0 calc(var(--app-pane-padding) / 2)}:host .yuv-audit .footer .paging .prev{transform:rotate(180deg)}:host .yuv-audit .footer button{padding:0}:host .timeline{--track-color: var(--panel-divider-color);--track-size: calc(var(--app-pane-padding) * 3);overflow-y:auto;padding:var(--app-pane-padding) var(--app-pane-padding) calc(var(--app-pane-padding) * 2) var(--app-pane-padding)}@container (max-width: 450px){:host .timeline .audit{grid-template-columns:var(--track-size) auto;grid-template-rows:var(--track-size) auto;grid-template-areas:\"line date\" \"node node\"}:host .timeline .audit .date{justify-self:start}:host .timeline .audit .date,:host .timeline .audit:after{translate:0 .5em}:host .timeline .audit .node{margin:0;width:100%}:host .timeline .audit:last-child:before{height:100%}}:host .timeline :where(.audit){display:grid;grid-template-columns:1fr var(--track-size) 1fr;grid-template-areas:\"date line node\"}:host .timeline :where(.audit) .date{grid-area:date;justify-self:end;align-self:center}:host .timeline :where(.audit) .node{grid-area:node;justify-self:start;background-color:var(--panel-background);border:1px solid var(--panel-divider-color);border-radius:.25em;margin:calc(var(--app-pane-padding) / 2) 0;padding:var(--app-pane-padding);box-sizing:border-box;display:grid;gap:calc(var(--app-pane-padding) / 8)}:host .timeline :where(.audit) .node .label{display:flex;align-items:end}:host .timeline :where(.audit) .node .label .title{flex:1;word-break:break-
|
|
195
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ObjectAuditComponent, isStandalone: true, selector: "yuv-object-audit", inputs: { dmsObject: { classPropertyName: "dmsObject", publicName: "dmsObject", isSignal: true, isRequired: false, transformFunction: null }, skipActions: { classPropertyName: "skipActions", publicName: "skipActions", isSignal: true, isRequired: false, transformFunction: null }, allActions: { classPropertyName: "allActions", publicName: "allActions", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "versionsLink", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<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 <div class=\"timeline\">\n @for (item of resItems; track $index) {\n <div class=\"audit\">\n <div class=\"date\">{{ item.creationDate | localeDate }}</div>\n <div class=\"node\">\n <div class=\"label\">\n <span class=\"title\">{{ item.label }}</span>\n @if (item.detail === 'OBJECT_DOCUMENT_CHANGED') {\n @if (link()) {\n <a class=\"version\" [routerLink]=\"link()\" [queryParams]=\"{ version: item.version }\">{{ item.version }}</a>\n } @else {\n <span class=\"version\">{{ item.version }}</span>\n }\n }\n </div>\n <div class=\"more meta\">{{ item.more }}</div>\n <div class=\"creator meta\">{{ item.createdBy.title }}</div>\n </div>\n </div>\n }\n </div>\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 [attr.aria-label]=\"'yuv.audit.label.paging.prev' | translate\" [disabled]=\"auditsRes.page === 1\" (click)=\"goToPage(auditsRes.page - 1)\">\n <yvc-icon class=\"prev\" [svg]=\"icons.arrowNext\"></yvc-icon>\n </button>\n <div class=\"page\">\n {{ auditsRes.page }}\n </div>\n <button [attr.aria-label]=\"'yuv.audit.label.paging.next' | translate\" [disabled]=\"!auditsRes.hasMoreItems\" (click)=\"goToPage(auditsRes.page + 1)\">\n <yvc-icon class=\"next\" [svg]=\"icons.arrowNext\"></yvc-icon>\n </button>\n </div>\n </div>\n }\n }\n</div>\n", styles: [":host .yuv-audit{position:relative;height:100%;display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"items\" \"footer\";background-color:var(--panel-background-grey);container-type:inline-size;container-name:cmp}:host .yuv-audit .error{grid-area:items;display:flex;flex-flow:column;align-items:center;justify-content:center}:host .yuv-audit .error>div{background-color:var(--color-error);color:#fff;margin:var(--app-pane-padding);padding:var(--app-pane-padding);border-radius:calc(var(--app-pane-padding) / 2)}:host .yuv-audit .search{position:absolute;left:0;top:0;bottom:0;max-width:90%;background-color:var(--panel-background);border-right:1px solid var(--panel-divider-color);animation:yuvFadeInLeft var(--app-default-transition-duration);padding:var(--app-pane-padding);display:flex;z-index:3;flex-flow:column}:host .yuv-audit .search h3{color:var(--text-color-caption);margin:0 0 var(--app-pane-padding) 0;font-size:var(--font-title);font-weight:var(--font-weight-light)}:host .yuv-audit .search button.group{color:var(--text-color-caption);margin:0 0 var(--app-pane-padding) 0;font-size:var(--font-subhead);font-weight:var(--font-weight-normal);padding:0;cursor:pointer}:host .yuv-audit .search button.group:focus{color:var(--color-accent);outline:0;background-color:transparent;border-color:transparent}:host .yuv-audit .search .controls{flex:1;overflow-y:auto}:host .yuv-audit .search .controls .form-control{margin-top:var(--app-pane-padding)}:host .yuv-audit .search .buttons{display:flex;justify-content:flex-end}:host .yuv-audit .btn-search{position:absolute;top:var(--app-pane-padding);left:var(--app-pane-padding);background-color:var(--panel-background);padding:calc(var(--app-pane-padding) / 2);border:1px solid var(--panel-divider-color);z-index:1;box-shadow:0 0 10px 10px var(--panel-background-grey)}:host .yuv-audit .btn-search.badge{color:var(--color-accent)}:host .yuv-audit .btn-search yvc-icon{display:block}:host .yuv-audit .audits{grid-area:items}:host .yuv-audit .empty{grid-area:items;display:flex;flex-flow:column;align-items:center;justify-content:center;color:var(--text-color-caption)}:host .yuv-audit .footer{grid-area:footer;background-color:var(--panel-background);border-top:1px solid var(--panel-divider-color);display:flex}:host .yuv-audit .footer .paging{flex:1;display:flex;align-items:center;justify-content:flex-end;color:var(--text-color-caption)}:host .yuv-audit .footer .paging .page{padding:0 calc(var(--app-pane-padding) / 2)}:host .yuv-audit .footer .paging .prev{transform:rotate(180deg)}:host .yuv-audit .footer button{padding:0}:host .timeline{--track-color: var(--panel-divider-color);--track-size: calc(var(--app-pane-padding) * 3);overflow-y:auto;padding:var(--app-pane-padding) var(--app-pane-padding) calc(var(--app-pane-padding) * 2) var(--app-pane-padding)}@container (max-width: 450px){:host .timeline .audit{grid-template-columns:var(--track-size) auto;grid-template-rows:var(--track-size) auto;grid-template-areas:\"line date\" \"node node\"}:host .timeline .audit .date{justify-self:start}:host .timeline .audit .date,:host .timeline .audit:after{translate:0 .5em}:host .timeline .audit .node{margin:0;width:100%}:host .timeline .audit:last-child:before{height:100%}}:host .timeline :where(.audit){display:grid;grid-template-columns:1fr var(--track-size) 1fr;grid-template-areas:\"date line node\"}:host .timeline :where(.audit) .date{grid-area:date;justify-self:end;align-self:center}:host .timeline :where(.audit) .node{grid-area:node;justify-self:start;background-color:var(--panel-background);border:1px solid var(--panel-divider-color);border-radius:.25em;margin:calc(var(--app-pane-padding) / 2) 0;padding:var(--app-pane-padding);box-sizing:border-box;display:grid;gap:calc(var(--app-pane-padding) / 8)}:host .timeline :where(.audit) .node .label{display:flex;align-items:end}:host .timeline :where(.audit) .node .label .title{flex:1;word-break:break-word;font-weight:700;color:var(--text-color-body)}:host .timeline :where(.audit) .node .label .version{line-height:1em;border-radius:2px;background-color:rgba(var(--color-accent-rgb),.15);color:var(--color-accent);font-size:var(--font-hint);font-family:monospace;align-self:center;margin-left:var(--app-pane-padding);padding:4px 6px;display:block}:host .timeline :where(.audit) .node .meta{color:var(--text-color-caption)}:host .timeline :where(.audit):before{grid-area:line;content:\"\";width:calc(50% - 1px);height:100%;border-inline-end:1px solid var(--track-color)}:host .timeline :where(.audit):after{grid-area:line;content:\"\";width:11px;height:11px;border-radius:50%;border:2px solid var(--track-color);background-color:var(--panel-background-grey);box-sizing:border-box;align-self:center;justify-self:center}:host .timeline :where(.audit):first-child:before{height:50%;align-self:end}:host .timeline :where(.audit):last-child:before{height:50%;align-self:start}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: BusyOverlayDirective, selector: "[yuvBusyOverlay]", inputs: ["yuvBusyOverlay"] }, { kind: "pipe", type: LocaleDatePipe, name: "localeDate" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i4.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }] }); }
|
|
196
196
|
}
|
|
197
197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectAuditComponent, decorators: [{
|
|
198
198
|
type: Component,
|
|
199
|
-
args: [{ selector: 'yuv-object-audit', standalone: true, imports: [CommonModule, RouterLink, ReactiveFormsModule, BusyOverlayDirective, LocaleDatePipe, TranslateModule, YvcIconModule], template: "<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 <div class=\"timeline\">\n @for (item of resItems; track $index) {\n <div class=\"audit\">\n <div class=\"date\">{{ item.creationDate | localeDate }}</div>\n <div class=\"node\">\n <div class=\"label\">\n <span class=\"title\">{{ item.label }}</span>\n @if (item.detail === 'OBJECT_DOCUMENT_CHANGED') {\n @if (link()) {\n <a class=\"version\" [routerLink]=\"link()\" [queryParams]=\"{ version: item.version }\">{{ item.version }}</a>\n } @else {\n <span class=\"version\">{{ item.version }}</span>\n }\n }\n </div>\n <div class=\"more meta\">{{ item.more }}</div>\n <div class=\"creator meta\">{{ item.createdBy.title }}</div>\n </div>\n </div>\n }\n </div>\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 [attr.aria-label]=\"'yuv.audit.label.paging.prev' | translate\" [disabled]=\"auditsRes.page === 1\" (click)=\"goToPage(auditsRes.page - 1)\">\n <yvc-icon class=\"prev\" [svg]=\"icons.arrowNext\"></yvc-icon>\n </button>\n <div class=\"page\">\n {{ auditsRes.page }}\n </div>\n <button [attr.aria-label]=\"'yuv.audit.label.paging.next' | translate\" [disabled]=\"!auditsRes.hasMoreItems\" (click)=\"goToPage(auditsRes.page + 1)\">\n <yvc-icon class=\"next\" [svg]=\"icons.arrowNext\"></yvc-icon>\n </button>\n </div>\n </div>\n }\n }\n</div>\n", styles: [":host .yuv-audit{position:relative;height:100%;display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"items\" \"footer\";background-color:var(--panel-background-grey);container-type:inline-size;container-name:cmp}:host .yuv-audit .error{grid-area:items;display:flex;flex-flow:column;align-items:center;justify-content:center}:host .yuv-audit .error>div{background-color:var(--color-error);color:#fff;margin:var(--app-pane-padding);padding:var(--app-pane-padding);border-radius:calc(var(--app-pane-padding) / 2)}:host .yuv-audit .search{position:absolute;left:0;top:0;bottom:0;max-width:90%;background-color:var(--panel-background);border-right:1px solid var(--panel-divider-color);animation:yuvFadeInLeft var(--app-default-transition-duration);padding:var(--app-pane-padding);display:flex;z-index:3;flex-flow:column}:host .yuv-audit .search h3{color:var(--text-color-caption);margin:0 0 var(--app-pane-padding) 0;font-size:var(--font-title);font-weight:var(--font-weight-light)}:host .yuv-audit .search button.group{color:var(--text-color-caption);margin:0 0 var(--app-pane-padding) 0;font-size:var(--font-subhead);font-weight:var(--font-weight-normal);padding:0;cursor:pointer}:host .yuv-audit .search button.group:focus{color:var(--color-accent);outline:0;background-color:transparent;border-color:transparent}:host .yuv-audit .search .controls{flex:1;overflow-y:auto}:host .yuv-audit .search .controls .form-control{margin-top:var(--app-pane-padding)}:host .yuv-audit .search .buttons{display:flex;justify-content:flex-end}:host .yuv-audit .btn-search{position:absolute;top:var(--app-pane-padding);left:var(--app-pane-padding);background-color:var(--panel-background);padding:calc(var(--app-pane-padding) / 2);border:1px solid var(--panel-divider-color);z-index:1;box-shadow:0 0 10px 10px var(--panel-background-grey)}:host .yuv-audit .btn-search.badge{color:var(--color-accent)}:host .yuv-audit .btn-search yvc-icon{display:block}:host .yuv-audit .audits{grid-area:items}:host .yuv-audit .empty{grid-area:items;display:flex;flex-flow:column;align-items:center;justify-content:center;color:var(--text-color-caption)}:host .yuv-audit .footer{grid-area:footer;background-color:var(--panel-background);border-top:1px solid var(--panel-divider-color);display:flex}:host .yuv-audit .footer .paging{flex:1;display:flex;align-items:center;justify-content:flex-end;color:var(--text-color-caption)}:host .yuv-audit .footer .paging .page{padding:0 calc(var(--app-pane-padding) / 2)}:host .yuv-audit .footer .paging .prev{transform:rotate(180deg)}:host .yuv-audit .footer button{padding:0}:host .timeline{--track-color: var(--panel-divider-color);--track-size: calc(var(--app-pane-padding) * 3);overflow-y:auto;padding:var(--app-pane-padding) var(--app-pane-padding) calc(var(--app-pane-padding) * 2) var(--app-pane-padding)}@container (max-width: 450px){:host .timeline .audit{grid-template-columns:var(--track-size) auto;grid-template-rows:var(--track-size) auto;grid-template-areas:\"line date\" \"node node\"}:host .timeline .audit .date{justify-self:start}:host .timeline .audit .date,:host .timeline .audit:after{translate:0 .5em}:host .timeline .audit .node{margin:0;width:100%}:host .timeline .audit:last-child:before{height:100%}}:host .timeline :where(.audit){display:grid;grid-template-columns:1fr var(--track-size) 1fr;grid-template-areas:\"date line node\"}:host .timeline :where(.audit) .date{grid-area:date;justify-self:end;align-self:center}:host .timeline :where(.audit) .node{grid-area:node;justify-self:start;background-color:var(--panel-background);border:1px solid var(--panel-divider-color);border-radius:.25em;margin:calc(var(--app-pane-padding) / 2) 0;padding:var(--app-pane-padding);box-sizing:border-box;display:grid;gap:calc(var(--app-pane-padding) / 8)}:host .timeline :where(.audit) .node .label{display:flex;align-items:end}:host .timeline :where(.audit) .node .label .title{flex:1;word-break:break-
|
|
199
|
+
args: [{ selector: 'yuv-object-audit', standalone: true, imports: [CommonModule, RouterLink, ReactiveFormsModule, BusyOverlayDirective, LocaleDatePipe, TranslateModule, YvcIconModule], template: "<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 <div class=\"timeline\">\n @for (item of resItems; track $index) {\n <div class=\"audit\">\n <div class=\"date\">{{ item.creationDate | localeDate }}</div>\n <div class=\"node\">\n <div class=\"label\">\n <span class=\"title\">{{ item.label }}</span>\n @if (item.detail === 'OBJECT_DOCUMENT_CHANGED') {\n @if (link()) {\n <a class=\"version\" [routerLink]=\"link()\" [queryParams]=\"{ version: item.version }\">{{ item.version }}</a>\n } @else {\n <span class=\"version\">{{ item.version }}</span>\n }\n }\n </div>\n <div class=\"more meta\">{{ item.more }}</div>\n <div class=\"creator meta\">{{ item.createdBy.title }}</div>\n </div>\n </div>\n }\n </div>\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 [attr.aria-label]=\"'yuv.audit.label.paging.prev' | translate\" [disabled]=\"auditsRes.page === 1\" (click)=\"goToPage(auditsRes.page - 1)\">\n <yvc-icon class=\"prev\" [svg]=\"icons.arrowNext\"></yvc-icon>\n </button>\n <div class=\"page\">\n {{ auditsRes.page }}\n </div>\n <button [attr.aria-label]=\"'yuv.audit.label.paging.next' | translate\" [disabled]=\"!auditsRes.hasMoreItems\" (click)=\"goToPage(auditsRes.page + 1)\">\n <yvc-icon class=\"next\" [svg]=\"icons.arrowNext\"></yvc-icon>\n </button>\n </div>\n </div>\n }\n }\n</div>\n", styles: [":host .yuv-audit{position:relative;height:100%;display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"items\" \"footer\";background-color:var(--panel-background-grey);container-type:inline-size;container-name:cmp}:host .yuv-audit .error{grid-area:items;display:flex;flex-flow:column;align-items:center;justify-content:center}:host .yuv-audit .error>div{background-color:var(--color-error);color:#fff;margin:var(--app-pane-padding);padding:var(--app-pane-padding);border-radius:calc(var(--app-pane-padding) / 2)}:host .yuv-audit .search{position:absolute;left:0;top:0;bottom:0;max-width:90%;background-color:var(--panel-background);border-right:1px solid var(--panel-divider-color);animation:yuvFadeInLeft var(--app-default-transition-duration);padding:var(--app-pane-padding);display:flex;z-index:3;flex-flow:column}:host .yuv-audit .search h3{color:var(--text-color-caption);margin:0 0 var(--app-pane-padding) 0;font-size:var(--font-title);font-weight:var(--font-weight-light)}:host .yuv-audit .search button.group{color:var(--text-color-caption);margin:0 0 var(--app-pane-padding) 0;font-size:var(--font-subhead);font-weight:var(--font-weight-normal);padding:0;cursor:pointer}:host .yuv-audit .search button.group:focus{color:var(--color-accent);outline:0;background-color:transparent;border-color:transparent}:host .yuv-audit .search .controls{flex:1;overflow-y:auto}:host .yuv-audit .search .controls .form-control{margin-top:var(--app-pane-padding)}:host .yuv-audit .search .buttons{display:flex;justify-content:flex-end}:host .yuv-audit .btn-search{position:absolute;top:var(--app-pane-padding);left:var(--app-pane-padding);background-color:var(--panel-background);padding:calc(var(--app-pane-padding) / 2);border:1px solid var(--panel-divider-color);z-index:1;box-shadow:0 0 10px 10px var(--panel-background-grey)}:host .yuv-audit .btn-search.badge{color:var(--color-accent)}:host .yuv-audit .btn-search yvc-icon{display:block}:host .yuv-audit .audits{grid-area:items}:host .yuv-audit .empty{grid-area:items;display:flex;flex-flow:column;align-items:center;justify-content:center;color:var(--text-color-caption)}:host .yuv-audit .footer{grid-area:footer;background-color:var(--panel-background);border-top:1px solid var(--panel-divider-color);display:flex}:host .yuv-audit .footer .paging{flex:1;display:flex;align-items:center;justify-content:flex-end;color:var(--text-color-caption)}:host .yuv-audit .footer .paging .page{padding:0 calc(var(--app-pane-padding) / 2)}:host .yuv-audit .footer .paging .prev{transform:rotate(180deg)}:host .yuv-audit .footer button{padding:0}:host .timeline{--track-color: var(--panel-divider-color);--track-size: calc(var(--app-pane-padding) * 3);overflow-y:auto;padding:var(--app-pane-padding) var(--app-pane-padding) calc(var(--app-pane-padding) * 2) var(--app-pane-padding)}@container (max-width: 450px){:host .timeline .audit{grid-template-columns:var(--track-size) auto;grid-template-rows:var(--track-size) auto;grid-template-areas:\"line date\" \"node node\"}:host .timeline .audit .date{justify-self:start}:host .timeline .audit .date,:host .timeline .audit:after{translate:0 .5em}:host .timeline .audit .node{margin:0;width:100%}:host .timeline .audit:last-child:before{height:100%}}:host .timeline :where(.audit){display:grid;grid-template-columns:1fr var(--track-size) 1fr;grid-template-areas:\"date line node\"}:host .timeline :where(.audit) .date{grid-area:date;justify-self:end;align-self:center}:host .timeline :where(.audit) .node{grid-area:node;justify-self:start;background-color:var(--panel-background);border:1px solid var(--panel-divider-color);border-radius:.25em;margin:calc(var(--app-pane-padding) / 2) 0;padding:var(--app-pane-padding);box-sizing:border-box;display:grid;gap:calc(var(--app-pane-padding) / 8)}:host .timeline :where(.audit) .node .label{display:flex;align-items:end}:host .timeline :where(.audit) .node .label .title{flex:1;word-break:break-word;font-weight:700;color:var(--text-color-body)}:host .timeline :where(.audit) .node .label .version{line-height:1em;border-radius:2px;background-color:rgba(var(--color-accent-rgb),.15);color:var(--color-accent);font-size:var(--font-hint);font-family:monospace;align-self:center;margin-left:var(--app-pane-padding);padding:4px 6px;display:block}:host .timeline :where(.audit) .node .meta{color:var(--text-color-caption)}:host .timeline :where(.audit):before{grid-area:line;content:\"\";width:calc(50% - 1px);height:100%;border-inline-end:1px solid var(--track-color)}:host .timeline :where(.audit):after{grid-area:line;content:\"\";width:11px;height:11px;border-radius:50%;border:2px solid var(--track-color);background-color:var(--panel-background-grey);box-sizing:border-box;align-self:center;justify-self:center}:host .timeline :where(.audit):first-child:before{height:50%;align-self:end}:host .timeline :where(.audit):last-child:before{height:50%;align-self:start}\n"] }]
|
|
200
200
|
}], ctorParameters: () => [{ type: i1.AuditService }, { type: i1.BackendService }, { type: i1.AppCacheService }, { type: i1.EventService }, { type: i1.SystemService }, { type: i2.UntypedFormBuilder }, { type: i1.TranslateService }] });
|
|
201
201
|
|
|
202
202
|
class ObjectDetailsShellComponent {
|