@yuuvis/client-framework 2.3.15 → 2.3.17

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.
@@ -1,18 +1,13 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ChangeDetectorRef, contentChild, viewChild, model, effect, untracked, input, Input, ChangeDetectionStrategy, Component, TemplateRef, signal, Directive, ElementRef, contentChildren, NgModule } from '@angular/core';
2
+ import { inject, ChangeDetectorRef, contentChild, viewChild, model, effect, untracked, input, Input, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
+ import { MatDialog } from '@angular/material/dialog';
5
6
  import * as i3 from '@yuuvis/client-framework/popout';
6
7
  import { YuvPopoutModule } from '@yuuvis/client-framework/popout';
7
8
  import * as i2 from '@yuuvis/client-framework/split-view';
8
9
  import { YuvSplitViewModule } from '@yuuvis/client-framework/split-view';
9
- import { DeviceService } from '@yuuvis/client-core';
10
- import { MatDialog } from '@angular/material/dialog';
11
- import { LayoutSettingsService } from '@yuuvis/client-framework/common';
12
- import * as i2$1 from '@yuuvis/material/panes';
13
- import { YmtPanesModule } from '@yuuvis/material/panes';
14
- import * as i3$1 from 'angular-split';
15
- import { SplitComponent, AngularSplitModule } from 'angular-split';
10
+ import { DeviceService } from '@yuuvis/material';
16
11
 
17
12
  /**
18
13
  * Component rendering a master/details view.
@@ -122,173 +117,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
122
117
  type: Input
123
118
  }] } });
124
119
 
125
- class YuvPaneDirective {
126
- constructor() {
127
- this.template = inject((TemplateRef));
128
- this.role = input('master');
129
- this.collapsable = input(false);
130
- this.topBarActions = input();
131
- this.#expandedSettings = signal(undefined);
132
- this.collapsed = signal(false);
133
- this.#collapsedEffect = effect(() => {
134
- const collapsed = this.collapsed();
135
- untracked(() => {
136
- if (collapsed) {
137
- this.#expandedSettings.set({ ...this.areaProperties() });
138
- this.areaProperties.set({
139
- visible: false
140
- });
141
- }
142
- else if (this.#expandedSettings()) {
143
- this.areaProperties.set({ ...this.#expandedSettings() });
144
- this.#expandedSettings.set(undefined);
145
- }
146
- });
147
- });
148
- this.areaProperties = signal({ visible: true });
149
- }
150
- #expandedSettings;
151
- #collapsedEffect;
152
- updateSettings(s) {
153
- this.areaProperties.set({ ...this.areaProperties(), ...s });
154
- }
155
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: YuvPaneDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
156
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.14", type: YuvPaneDirective, isStandalone: true, selector: "[yuvPane]", inputs: { role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, collapsable: { classPropertyName: "collapsable", publicName: "collapsable", isSignal: true, isRequired: false, transformFunction: null }, topBarActions: { classPropertyName: "topBarActions", publicName: "topBarActions", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
157
- }
158
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: YuvPaneDirective, decorators: [{
159
- type: Directive,
160
- args: [{
161
- selector: '[yuvPane]'
162
- }]
163
- }] });
164
-
165
- /**
166
- * Master details pane component. This component is used to create viewports with
167
- * a variety of master-details layouts.
168
- */
169
- class YuvMasterDetailsPaneComponent {
170
- constructor() {
171
- this.#elRef = inject(ElementRef);
172
- this.#layoutSettings = inject(LayoutSettingsService);
173
- this.panes = contentChildren(YuvPaneDirective);
174
- this.#panesEffect = effect(() => {
175
- const _panes = this.panes();
176
- const _options = this.options();
177
- untracked(() => {
178
- _panes.forEach((p) => p.updateSettings(this.paneProps(p)));
179
- });
180
- });
181
- this.asSplitComponent = viewChild.required(SplitComponent);
182
- this.layoutSettingsID = input(undefined);
183
- this.options = input({
184
- resizable: true
185
- });
186
- /**
187
- * The split views direction. Could be 'horizontal' or 'vertical'. Defaults to 'horizontal'.
188
- */
189
- this.direction = input('horizontal');
190
- this.#DEFAULT_GUTTER_SIZE_PX = 16;
191
- /**
192
- * Size of the gutter in Pixel.
193
- */
194
- this.gutterSize = input(this.#DEFAULT_GUTTER_SIZE_PX);
195
- this._gutterSize = signal(this.#DEFAULT_GUTTER_SIZE_PX);
196
- this.#gutterSizeEffect = effect(() => {
197
- this._gutterSize.set(this.gutterSize());
198
- });
199
- this.detailsActive = input(true);
200
- }
201
- #elRef;
202
- #layoutSettings;
203
- #panesEffect;
204
- #DEFAULT_GUTTER_SIZE_PX;
205
- #gutterSizeEffect;
206
- paneProps(p) {
207
- const roleSettings = {
208
- size: this.options()[`${p.role()}Size`],
209
- minSize: this.options()[`${p.role()}MinSize`],
210
- maxSize: this.options()[`${p.role()}MaxSize`]
211
- };
212
- const s = {};
213
- if (roleSettings.minSize)
214
- s.minSize = roleSettings.minSize;
215
- if (roleSettings.maxSize)
216
- s.maxSize = roleSettings.maxSize;
217
- if (roleSettings.size)
218
- s.size = roleSettings.size;
219
- return p.role() === 'master'
220
- ? {
221
- size: '*'
222
- }
223
- : s;
224
- }
225
- paneToggled(collapsed, pane, index) {
226
- // console.log('event', collapsed, pane);
227
- pane.collapsed.set(collapsed);
228
- this.panes()[index].collapsed.set(collapsed);
229
- }
230
- onDragEnd(e) {
231
- this.#updateLayoutSettings(e.sizes);
232
- }
233
- #updateLayoutSettings(sizes) {
234
- const layoutSettings = {
235
- areas: this.panes().map((a, idx) => ({
236
- visible: a.areaProperties().visible === false ? false : true,
237
- size: sizes[idx]
238
- }))
239
- };
240
- // save layout settings if persistence is enabled
241
- const lsid = this.layoutSettingsID();
242
- if (lsid) {
243
- this.#layoutSettings.saveSettings(lsid, layoutSettings);
244
- }
245
- }
246
- #calculateGutterSize() {
247
- const computedStyle = getComputedStyle(this.#elRef.nativeElement);
248
- const spacing = computedStyle.getPropertyValue('--ymt-spacing-m').trim();
249
- const fontSize = parseFloat(computedStyle.fontSize.trim());
250
- const spacingPx = spacing.endsWith('rem') ? parseFloat(spacing) * fontSize : spacing.endsWith('px') ? parseFloat(spacing) : this.#DEFAULT_GUTTER_SIZE_PX;
251
- if (this._gutterSize() === this.#DEFAULT_GUTTER_SIZE_PX)
252
- this._gutterSize.set(spacingPx);
253
- }
254
- applyLayoutSettings(settings) {
255
- if (!this.#isLayoutSettingsObject(settings))
256
- return;
257
- settings.areas.forEach((a, index) => {
258
- this.panes()[index].updateSettings(a);
259
- });
260
- }
261
- #isLayoutSettingsObject(v) {
262
- return v && 'areas' in v;
263
- }
264
- ngAfterViewInit() {
265
- this.#calculateGutterSize();
266
- // try to load layout settings if persistence is enabled
267
- const lsid = this.layoutSettingsID();
268
- if (lsid) {
269
- this.applyLayoutSettings(this.#layoutSettings.getSettings(lsid));
270
- }
271
- }
272
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: YuvMasterDetailsPaneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
273
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: YuvMasterDetailsPaneComponent, isStandalone: true, selector: "yuv-master-details-pane", inputs: { layoutSettingsID: { classPropertyName: "layoutSettingsID", publicName: "layoutSettingsID", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, gutterSize: { classPropertyName: "gutterSize", publicName: "gutterSize", isSignal: true, isRequired: false, transformFunction: null }, detailsActive: { classPropertyName: "detailsActive", publicName: "detailsActive", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "panes", predicate: YuvPaneDirective, isSignal: true }], viewQueries: [{ propertyName: "asSplitComponent", first: true, predicate: SplitComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<as-split [direction]=\"direction()\" [unit]=\"'percent'\" [gutterSize]=\"_gutterSize()\" [gutterStep]=\"1\" [useTransition]=\"false\" (dragEnd)=\"onDragEnd($event)\">\n @if (gutterSize() === 1) {\n <div *asSplitGutter=\"let isDragged = isDragged\" class=\"shade-gutter\" [class.dragged]=\"isDragged\">\n <div class=\"shade-gutter-icon\" [class.vertical]=\"direction() === 'vertical'\" [class.horizontal]=\"direction() === 'horizontal'\"></div>\n </div>\n } @else {\n <div *asSplitGutter class=\"split-gutter\">\n <div\n asSplitGutterDragHandle\n class=\"split-gutter-handle\"\n [class.vertical]=\"direction() === 'vertical'\"\n [class.horizontal]=\"direction() === 'horizontal'\"\n ></div>\n </div>\n }\n\n @for (a of panes(); track a; let i = $index) {\n <as-split-area\n [class.first]=\"i === 0\"\n [class.last]=\"i === panes().length - 1\"\n [class.collapsed]=\"!a.areaProperties().visible\"\n [maxSize]=\"a.areaProperties().maxSize\"\n [minSize]=\"a.areaProperties().minSize\"\n [lockSize]=\"a.areaProperties().lockSize\"\n [size]=\"a.areaProperties().size\"\n [visible]=\"a.areaProperties().visible\"\n >\n <ymt-pane [topBar]=\"false\" [ngClass]=\"{ collapsed: a.collapsed() }\">\n @let ta = a.topBarActions();\n @if (a.collapsable() || ta) {\n <ymt-pane-top-bar [actions]=\"ta\" [paneToggle]=\"i > 0 ? 'start' : 'end'\" (paneToggled)=\"paneToggled($event, a, $index)\"></ymt-pane-top-bar>\n }\n <ng-template [ngTemplateOutlet]=\"a.template\"></ng-template>\n </ymt-pane>\n </as-split-area>\n }\n</as-split>\n", styles: [":host{--_split-gutter-background-color: var(--split-gutter-background-color, transparent);--_split-gutter-handle-border-radius: var(--split-gutter-handle-border-radius, 2px);--_split-gutter-handle-width: var(--split-gutter-handle-width, 2px);--_split-gutter-handle-height: var(--split-gutter-handle-height, var(--ymt-spacing-3xl));--_split-gutter-shade-background: var(--split-gutter-shade-background, currentColor);--_split-gutter-shade-hover-background: var(--split-gutter-shade-hover-background, currentColor);--_split-gutter-shade-size: var(--split-gutter-shade-size, 16px);overflow:hidden}:host as-split{--as-gutter-background-color: var(--_split-gutter-background-color)}:host as-split.collapsed{overflow:hidden}:host as-split-area.collapsed{overflow:hidden;width:calc(var(--ymt-spacing-s) * 2 + 28px)!important}:host as-split-area.collapsed.first{margin-inline-end:var(--ymt-spacing-m)}:host as-split-area.collapsed.last{margin-inline-start:var(--ymt-spacing-m)}:host .split-gutter{width:100%;height:100%}:host .split-gutter .split-gutter-handle{width:100%;height:100%;display:flex;align-items:center;justify-content:center}:host .split-gutter .split-gutter-handle:after{content:\"\";transition:background-color .3s ease-in-out;background-color:rgb(from var(--ymt-text-color) r g b/.2);display:block;width:var(--_split-gutter-handle-width);height:var(--_split-gutter-handle-height);border-radius:var(--_split-gutter-handle-border-radius)}:host .split-gutter .split-gutter-handle.vertical:after{width:var(--_split-gutter-handle-height);height:var(--_split-gutter-handle-width)}:host .split-gutter:hover .split-gutter-handle:after{background-color:rgb(from var(--ymt-text-color) r g b/.9)}:host .shade-gutter{width:100%;height:100%;background-color:var(--_split-gutter-background-color);position:relative}:host .shade-gutter-icon{height:100%;width:100%;background-color:var(--_split-gutter-shade-hover-background);transition:opacity .3s;opacity:0;position:absolute}.dragged :host .shade-gutter-icon,:host .shade-gutter-icon:hover{opacity:.1}:host .shade-gutter-icon.horizontal{width:calc(var(--_split-gutter-shade-size) + 1px);inset-inline-start:calc(var(--_split-gutter-shade-size) / -2);inset-inline-end:var(--_split-gutter-shade-size)}:host .shade-gutter-icon.vertical{height:calc(var(--_split-gutter-shade-size) + 1px);inset-block-start:calc(var(--_split-gutter-shade-size) / -2);inset-block-end:var(--_split-gutter-shade-size)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: YuvSplitViewModule }, { kind: "ngmodule", type: YmtPanesModule }, { kind: "component", type: i2$1.YmtPaneComponent, selector: "ymt-pane", inputs: ["topBarActions", "topBar", "paneToggle"], outputs: ["paneToggled"] }, { kind: "component", type: i2$1.YmtPaneTopBarComponent, selector: "ymt-pane-top-bar", inputs: ["actions", "paneToggle"], outputs: ["paneToggled"] }, { kind: "ngmodule", type: AngularSplitModule }, { kind: "component", type: i3$1.SplitComponent, selector: "as-split", inputs: ["gutterSize", "gutterStep", "disabled", "gutterClickDeltaPx", "direction", "dir", "unit", "gutterAriaLabel", "restrictMove", "useTransition", "gutterDblClickDuration"], outputs: ["gutterClick", "gutterDblClick", "dragStart", "dragEnd", "transitionEnd"], exportAs: ["asSplit"] }, { kind: "component", type: i3$1.SplitAreaComponent, selector: "as-split-area", inputs: ["size", "minSize", "maxSize", "lockSize", "visible"], exportAs: ["asSplitArea"] }, { kind: "directive", type: i3$1.SplitGutterDirective, selector: "[asSplitGutter]" }, { kind: "directive", type: i3$1.SplitGutterDragHandleDirective, selector: "[asSplitGutterDragHandle]" }] }); }
274
- }
275
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: YuvMasterDetailsPaneComponent, decorators: [{
276
- type: Component,
277
- args: [{ selector: 'yuv-master-details-pane', imports: [CommonModule, YuvSplitViewModule, YmtPanesModule, AngularSplitModule], template: "<as-split [direction]=\"direction()\" [unit]=\"'percent'\" [gutterSize]=\"_gutterSize()\" [gutterStep]=\"1\" [useTransition]=\"false\" (dragEnd)=\"onDragEnd($event)\">\n @if (gutterSize() === 1) {\n <div *asSplitGutter=\"let isDragged = isDragged\" class=\"shade-gutter\" [class.dragged]=\"isDragged\">\n <div class=\"shade-gutter-icon\" [class.vertical]=\"direction() === 'vertical'\" [class.horizontal]=\"direction() === 'horizontal'\"></div>\n </div>\n } @else {\n <div *asSplitGutter class=\"split-gutter\">\n <div\n asSplitGutterDragHandle\n class=\"split-gutter-handle\"\n [class.vertical]=\"direction() === 'vertical'\"\n [class.horizontal]=\"direction() === 'horizontal'\"\n ></div>\n </div>\n }\n\n @for (a of panes(); track a; let i = $index) {\n <as-split-area\n [class.first]=\"i === 0\"\n [class.last]=\"i === panes().length - 1\"\n [class.collapsed]=\"!a.areaProperties().visible\"\n [maxSize]=\"a.areaProperties().maxSize\"\n [minSize]=\"a.areaProperties().minSize\"\n [lockSize]=\"a.areaProperties().lockSize\"\n [size]=\"a.areaProperties().size\"\n [visible]=\"a.areaProperties().visible\"\n >\n <ymt-pane [topBar]=\"false\" [ngClass]=\"{ collapsed: a.collapsed() }\">\n @let ta = a.topBarActions();\n @if (a.collapsable() || ta) {\n <ymt-pane-top-bar [actions]=\"ta\" [paneToggle]=\"i > 0 ? 'start' : 'end'\" (paneToggled)=\"paneToggled($event, a, $index)\"></ymt-pane-top-bar>\n }\n <ng-template [ngTemplateOutlet]=\"a.template\"></ng-template>\n </ymt-pane>\n </as-split-area>\n }\n</as-split>\n", styles: [":host{--_split-gutter-background-color: var(--split-gutter-background-color, transparent);--_split-gutter-handle-border-radius: var(--split-gutter-handle-border-radius, 2px);--_split-gutter-handle-width: var(--split-gutter-handle-width, 2px);--_split-gutter-handle-height: var(--split-gutter-handle-height, var(--ymt-spacing-3xl));--_split-gutter-shade-background: var(--split-gutter-shade-background, currentColor);--_split-gutter-shade-hover-background: var(--split-gutter-shade-hover-background, currentColor);--_split-gutter-shade-size: var(--split-gutter-shade-size, 16px);overflow:hidden}:host as-split{--as-gutter-background-color: var(--_split-gutter-background-color)}:host as-split.collapsed{overflow:hidden}:host as-split-area.collapsed{overflow:hidden;width:calc(var(--ymt-spacing-s) * 2 + 28px)!important}:host as-split-area.collapsed.first{margin-inline-end:var(--ymt-spacing-m)}:host as-split-area.collapsed.last{margin-inline-start:var(--ymt-spacing-m)}:host .split-gutter{width:100%;height:100%}:host .split-gutter .split-gutter-handle{width:100%;height:100%;display:flex;align-items:center;justify-content:center}:host .split-gutter .split-gutter-handle:after{content:\"\";transition:background-color .3s ease-in-out;background-color:rgb(from var(--ymt-text-color) r g b/.2);display:block;width:var(--_split-gutter-handle-width);height:var(--_split-gutter-handle-height);border-radius:var(--_split-gutter-handle-border-radius)}:host .split-gutter .split-gutter-handle.vertical:after{width:var(--_split-gutter-handle-height);height:var(--_split-gutter-handle-width)}:host .split-gutter:hover .split-gutter-handle:after{background-color:rgb(from var(--ymt-text-color) r g b/.9)}:host .shade-gutter{width:100%;height:100%;background-color:var(--_split-gutter-background-color);position:relative}:host .shade-gutter-icon{height:100%;width:100%;background-color:var(--_split-gutter-shade-hover-background);transition:opacity .3s;opacity:0;position:absolute}.dragged :host .shade-gutter-icon,:host .shade-gutter-icon:hover{opacity:.1}:host .shade-gutter-icon.horizontal{width:calc(var(--_split-gutter-shade-size) + 1px);inset-inline-start:calc(var(--_split-gutter-shade-size) / -2);inset-inline-end:var(--_split-gutter-shade-size)}:host .shade-gutter-icon.vertical{height:calc(var(--_split-gutter-shade-size) + 1px);inset-block-start:calc(var(--_split-gutter-shade-size) / -2);inset-block-end:var(--_split-gutter-shade-size)}\n"] }]
278
- }] });
279
-
280
- const cmd = [YuvMasterDetailsComponent,
281
- YuvPaneDirective,
282
- YuvMasterDetailsPaneComponent];
120
+ const cmd = [YuvMasterDetailsComponent];
283
121
  class YuvMasterDetailsModule {
284
122
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: YuvMasterDetailsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
285
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: YuvMasterDetailsModule, imports: [YuvMasterDetailsComponent,
286
- YuvPaneDirective,
287
- YuvMasterDetailsPaneComponent], exports: [YuvMasterDetailsComponent,
288
- YuvPaneDirective,
289
- YuvMasterDetailsPaneComponent] }); }
290
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: YuvMasterDetailsModule, imports: [YuvMasterDetailsComponent,
291
- YuvMasterDetailsPaneComponent] }); }
123
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: YuvMasterDetailsModule, imports: [YuvMasterDetailsComponent], exports: [YuvMasterDetailsComponent] }); }
124
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: YuvMasterDetailsModule, imports: [cmd] }); }
292
125
  }
293
126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: YuvMasterDetailsModule, decorators: [{
294
127
  type: NgModule,
@@ -302,5 +135,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
302
135
  * Generated bundle index. Do not edit.
303
136
  */
304
137
 
305
- export { YuvMasterDetailsComponent, YuvMasterDetailsModule, YuvMasterDetailsPaneComponent, YuvPaneDirective };
138
+ export { YuvMasterDetailsComponent, YuvMasterDetailsModule };
306
139
  //# sourceMappingURL=yuuvis-client-framework-master-details.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"yuuvis-client-framework-master-details.mjs","sources":["../../../../../libs/yuuvis/client-framework/master-details/src/lib/master-details.component.ts","../../../../../libs/yuuvis/client-framework/master-details/src/lib/master-details.component.html","../../../../../libs/yuuvis/client-framework/master-details/src/lib/master-details-pane/pane.directive.ts","../../../../../libs/yuuvis/client-framework/master-details/src/lib/master-details-pane/master-details-pane.component.ts","../../../../../libs/yuuvis/client-framework/master-details/src/lib/master-details-pane/master-details-pane.component.html","../../../../../libs/yuuvis/client-framework/master-details/src/lib/master-details.module.ts","../../../../../libs/yuuvis/client-framework/master-details/src/yuuvis-client-framework-master-details.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n contentChild,\n effect,\n ElementRef,\n HostBinding,\n inject,\n input,\n Input,\n model,\n TemplateRef,\n untracked,\n viewChild\n} from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { YuvPopoutModule } from '@yuuvis/client-framework/popout';\nimport { YuvSplitViewModule } from '@yuuvis/client-framework/split-view';\nimport { MasterDetailsLayoutOptions } from './master-details.interface';\nimport { DeviceService } from '@yuuvis/client-core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\n/**\n * Component rendering a master/details view.\n *\n * @example\n * <yuv-master-details [(detailsActive)]=\"detailsActive\">\n * <ng-template #yuvMasterPane>Main Pane</ng-template>\n * <ng-template #yuvDetailsPane>Details Pane</ng-template>\n * </yuv-master-details>\n */\n@Component({\n selector: 'yuv-master-details',\n templateUrl: './master-details.component.html',\n styleUrls: ['./master-details.component.scss'],\n standalone: true,\n imports: [CommonModule, YuvSplitViewModule, YuvPopoutModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class.detailsActive': 'detailsActive()'\n }\n})\nexport class YuvMasterDetailsComponent implements AfterViewInit {\n #device = inject(DeviceService);\n #dialog = inject(MatDialog);\n #cd = inject(ChangeDetectorRef);\n\n masterPane = contentChild.required<TemplateRef<any>>('yuvMasterPane');\n detailsPane = contentChild.required<TemplateRef<any>>('yuvDetailsPane');\n detailsPaneTplateRef = viewChild.required<TemplateRef<any>>('tplDetailsPanel');\n #detailsPaneDialogRef: MatDialogRef<any> | null = null;\n\n private _defaultLayoutOptions: MasterDetailsLayoutOptions = {\n masterSize: 80,\n masterMinSize: undefined,\n detailsSize: 20,\n detailsMinSize: undefined,\n resizable: true\n };\n /**\n * Enable/disable details pane (also use as two-way-bound variable: [(detailsActive)])\n */\n detailsActive = model<boolean>(false);\n #detailsActiveEffect = effect(() => {\n const da = this.detailsActive();\n untracked(() => {\n if (this.#detailsPaneDialogRef) this.#detailsPaneDialogRef.close();\n if (this.smallScreenLayout() && da) {\n this.#detailsPaneDialogRef = this.#dialog.open(this.detailsPaneTplateRef(), {\n width: '90vw',\n height: '95vh',\n });\n this.#detailsPaneDialogRef.afterClosed().subscribe((silent: boolean) => {\n if (!silent) {\n this.detailsActive.set(false);\n }\n this.#detailsPaneDialogRef = null;\n });\n }\n });\n });\n\n smallScreenLayout = this.#device.smallScreenLayout;\n #smallScreenLayoutEffect = effect(() => {\n const ssl = this.smallScreenLayout();\n if (this.#detailsPaneDialogRef) this.#detailsPaneDialogRef.close(true);\n untracked(() => {\n const da = this.detailsActive();\n if (ssl && da) this.detailsActive.set(false);\n });\n });\n\n /**\n * Layout settings is the state of the master details that could be persisted.\n * Setting a `layoutSettingsID` will save the current state (details area visibilkity and\n * split area sizes etc.) to the local storage. If the component is created, it will load\n * those settings and re-apply them.\n */\n @Input() layoutSettingsID?: string;\n private _layoutOptions: MasterDetailsLayoutOptions = this._defaultLayoutOptions;\n /**\n * Layout options to be applied.\n */\n @Input() set layoutOptions(lo: Partial<MasterDetailsLayoutOptions>) {\n this._layoutOptions = lo ? { ...this._defaultLayoutOptions, ...lo } : this._defaultLayoutOptions;\n }\n get layoutOptions(): MasterDetailsLayoutOptions {\n return this._layoutOptions;\n }\n undockableDetails = input<boolean>(false);\n /**\n * Styles tp be applied to the panels\n */\n panelStyle = input<{ [key: string]: string } | undefined>(undefined);\n /**\n * Size of the gutter in Pixel.\n */\n gutterSize = input<number | undefined>(undefined);\n\n onPopIn() {\n this.detailsActive.set(true);\n this.#cd.detectChanges();\n }\n\n ngAfterViewInit() {\n if (!this.masterPane() || !this.detailsPane()) {\n console.error('MasterDetailsComponent is supposed to contain a master and a details pane.');\n }\n }\n}\n","@if (!smallScreenLayout()) {\n <yuv-split-view [disabled]=\"!layoutOptions.resizable\" [gutterSize]=\"gutterSize() || 1\"\n [layoutSettingsID]=\"layoutSettingsID\">\n <ng-template yuvSplitArea [size]=\"layoutOptions.masterSize\" [minSize]=\"layoutOptions.masterMinSize\">\n <div class=\"yuv-md-panel master\" [ngStyle]=\"panelStyle()\">\n <ng-container *ngTemplateOutlet=\"masterPane()\"></ng-container>\n </div>\n </ng-template>\n <ng-template yuvSplitArea [size]=\"layoutOptions.detailsSize\" [minSize]=\"layoutOptions.detailsMinSize\"\n [visible]=\"detailsActive()\">\n <div class=\"yuv-md-panel details\" [ngStyle]=\"panelStyle()\">\n @if (undockableDetails()) {\n <yuv-popout (popIn)=\"onPopIn()\" (popOut)=\"detailsActive.set(false)\"><ng-container\n *ngTemplateOutlet=\"tplDetailsPanel\"></ng-container></yuv-popout>\n } @else {\n <ng-container *ngTemplateOutlet=\"tplDetailsPanel\"></ng-container>\n }\n </div>\n </ng-template>\n </yuv-split-view>\n} @else {\n <div class=\"yuvMasterPane\"><ng-container *ngTemplateOutlet=\"masterPane()\"></ng-container></div>\n}\n\n\n<ng-template #tplDetailsPanel>\n <ng-container *ngTemplateOutlet=\"detailsPane()\"></ng-container>\n</ng-template>\n\n","import { Directive, effect, inject, input, signal, TemplateRef, untracked } from '@angular/core';\nimport { SplitAreaDirective, SplitAreaLayoutSettings } from '@yuuvis/client-framework/split-view';\nimport { PaneLayoutSettings } from './master-details-pane.interface';\n\n@Directive({\n selector: '[yuvPane]'\n})\nexport class YuvPaneDirective {\n template = inject(TemplateRef<any>);\n\n role = input<'master' | 'details' | 'context'>('master');\n collapsable = input<boolean>(false);\n topBarActions = input<TemplateRef<any>>();\n\n #expandedSettings = signal<SplitAreaLayoutSettings | undefined>(undefined);\n\n collapsed = signal<boolean>(false);\n #collapsedEffect = effect(() => {\n const collapsed = this.collapsed();\n untracked(() => {\n if (collapsed) {\n this.#expandedSettings.set({ ...this.areaProperties() });\n this.areaProperties.set({ \n visible: false \n });\n } else if (this.#expandedSettings()) {\n this.areaProperties.set({ ...this.#expandedSettings() });\n this.#expandedSettings.set(undefined);\n }\n });\n });\n\n updateSettings(s: PaneLayoutSettings) {\n this.areaProperties.set({ ...this.areaProperties(), ...s });\n }\n\n areaProperties = signal<PaneLayoutSettings>({visible: true});\n \n}\n","import { CommonModule } from '@angular/common';\nimport { AfterViewInit, Component, contentChildren, effect, ElementRef, inject, input, signal, untracked, viewChild } from '@angular/core';\nimport { LayoutSettingsService } from '@yuuvis/client-framework/common';\nimport { SplitAreaLayoutSettings, SplitViewLayoutSettings, SplitViewOutputData, YuvSplitViewModule } from '@yuuvis/client-framework/split-view';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\nimport { AngularSplitModule, SplitAreaSize, SplitComponent, SplitDirection } from 'angular-split';\nimport { YuvPaneDirective } from './pane.directive';\nimport { MasterDetailsPaneLayoutOptions, PaneLayoutSettings } from './master-details-pane.interface';\n\n/**\n * Master details pane component. This component is used to create viewports with\n * a variety of master-details layouts.\n */\n@Component({\n selector: 'yuv-master-details-pane',\n imports: [CommonModule, YuvSplitViewModule, YmtPanesModule, AngularSplitModule],\n templateUrl: './master-details-pane.component.html',\n styleUrl: './master-details-pane.component.scss'\n})\nexport class YuvMasterDetailsPaneComponent implements AfterViewInit {\n #elRef = inject(ElementRef);\n #layoutSettings = inject(LayoutSettingsService);\n\n panes = contentChildren<YuvPaneDirective>(YuvPaneDirective);\n #panesEffect = effect(() => {\n const _panes = this.panes();\n const _options = this.options();\n untracked(() => {\n _panes.forEach((p) => p.updateSettings(this.paneProps(p)));\n });\n });\n asSplitComponent = viewChild.required<SplitComponent>(SplitComponent);\n\n layoutSettingsID = input<string | undefined>(undefined);\n options = input<MasterDetailsPaneLayoutOptions>({\n resizable: true\n });\n /**\n * The split views direction. Could be 'horizontal' or 'vertical'. Defaults to 'horizontal'.\n */\n direction = input<SplitDirection>('horizontal');\n\n #DEFAULT_GUTTER_SIZE_PX = 16;\n\n /**\n * Size of the gutter in Pixel.\n */\n gutterSize = input<number>(this.#DEFAULT_GUTTER_SIZE_PX);\n _gutterSize = signal<number>(this.#DEFAULT_GUTTER_SIZE_PX);\n #gutterSizeEffect = effect(() => {\n this._gutterSize.set(this.gutterSize());\n });\n\n detailsActive = input<boolean>(true);\n\n paneProps(p: YuvPaneDirective): PaneLayoutSettings {\n const roleSettings: PaneLayoutSettings = {\n size: this.options()[`${p.role()}Size` as keyof MasterDetailsPaneLayoutOptions] as SplitAreaSize,\n minSize: this.options()[`${p.role()}MinSize` as keyof MasterDetailsPaneLayoutOptions] as number,\n maxSize: this.options()[`${p.role()}MaxSize` as keyof MasterDetailsPaneLayoutOptions] as number\n };\n const s: PaneLayoutSettings = {};\n if (roleSettings.minSize) s.minSize = roleSettings.minSize;\n if (roleSettings.maxSize) s.maxSize = roleSettings.maxSize;\n if (roleSettings.size) s.size = roleSettings.size;\n\n return p.role() === 'master'\n ? {\n size: '*' as SplitAreaSize\n }\n : s;\n }\n\n paneToggled(collapsed: boolean, pane: YuvPaneDirective, index: number) {\n // console.log('event', collapsed, pane);\n pane.collapsed.set(collapsed);\n this.panes()[index].collapsed.set(collapsed);\n }\n\n onDragEnd(e: SplitViewOutputData) {\n this.#updateLayoutSettings(e.sizes);\n }\n\n #updateLayoutSettings(sizes: SplitAreaSize[]) {\n const layoutSettings: SplitViewLayoutSettings = {\n areas: this.panes().map((a: YuvPaneDirective, idx: number) => ({\n visible: a.areaProperties().visible === false ? false : true,\n size: sizes[idx]\n }))\n };\n // save layout settings if persistence is enabled\n const lsid = this.layoutSettingsID();\n if (lsid) {\n this.#layoutSettings.saveSettings(lsid, layoutSettings);\n }\n }\n\n #calculateGutterSize() {\n const computedStyle = getComputedStyle(this.#elRef.nativeElement);\n const spacing = computedStyle.getPropertyValue('--ymt-spacing-m').trim();\n const fontSize = parseFloat(computedStyle.fontSize.trim());\n const spacingPx = spacing.endsWith('rem') ? parseFloat(spacing) * fontSize : spacing.endsWith('px') ? parseFloat(spacing) : this.#DEFAULT_GUTTER_SIZE_PX;\n if (this._gutterSize() === this.#DEFAULT_GUTTER_SIZE_PX) this._gutterSize.set(spacingPx);\n }\n\n applyLayoutSettings(settings: SplitViewLayoutSettings) {\n if (!this.#isLayoutSettingsObject(settings)) return;\n settings.areas.forEach((a: PaneLayoutSettings, index: number) => {\n this.panes()[index].updateSettings(a);\n });\n }\n\n #isLayoutSettingsObject(v: any): boolean {\n return v && 'areas' in v;\n }\n\n ngAfterViewInit(): void {\n this.#calculateGutterSize();\n // try to load layout settings if persistence is enabled\n const lsid = this.layoutSettingsID();\n if (lsid) {\n this.applyLayoutSettings(this.#layoutSettings.getSettings(lsid) as SplitViewLayoutSettings);\n }\n }\n}\n","<as-split [direction]=\"direction()\" [unit]=\"'percent'\" [gutterSize]=\"_gutterSize()\" [gutterStep]=\"1\" [useTransition]=\"false\" (dragEnd)=\"onDragEnd($event)\">\n @if (gutterSize() === 1) {\n <div *asSplitGutter=\"let isDragged = isDragged\" class=\"shade-gutter\" [class.dragged]=\"isDragged\">\n <div class=\"shade-gutter-icon\" [class.vertical]=\"direction() === 'vertical'\" [class.horizontal]=\"direction() === 'horizontal'\"></div>\n </div>\n } @else {\n <div *asSplitGutter class=\"split-gutter\">\n <div\n asSplitGutterDragHandle\n class=\"split-gutter-handle\"\n [class.vertical]=\"direction() === 'vertical'\"\n [class.horizontal]=\"direction() === 'horizontal'\"\n ></div>\n </div>\n }\n\n @for (a of panes(); track a; let i = $index) {\n <as-split-area\n [class.first]=\"i === 0\"\n [class.last]=\"i === panes().length - 1\"\n [class.collapsed]=\"!a.areaProperties().visible\"\n [maxSize]=\"a.areaProperties().maxSize\"\n [minSize]=\"a.areaProperties().minSize\"\n [lockSize]=\"a.areaProperties().lockSize\"\n [size]=\"a.areaProperties().size\"\n [visible]=\"a.areaProperties().visible\"\n >\n <ymt-pane [topBar]=\"false\" [ngClass]=\"{ collapsed: a.collapsed() }\">\n @let ta = a.topBarActions();\n @if (a.collapsable() || ta) {\n <ymt-pane-top-bar [actions]=\"ta\" [paneToggle]=\"i > 0 ? 'start' : 'end'\" (paneToggled)=\"paneToggled($event, a, $index)\"></ymt-pane-top-bar>\n }\n <ng-template [ngTemplateOutlet]=\"a.template\"></ng-template>\n </ymt-pane>\n </as-split-area>\n }\n</as-split>\n","import { NgModule } from '@angular/core';\nimport { YuvMasterDetailsComponent } from './master-details.component';\nimport { YuvMasterDetailsPaneComponent } from './master-details-pane/master-details-pane.component';\nimport { YuvPaneDirective } from './master-details-pane/pane.directive';\n\nconst cmd = [YuvMasterDetailsComponent, \n YuvPaneDirective,\n YuvMasterDetailsPaneComponent];\n@NgModule({\n imports: [cmd],\n exports: [cmd]\n})\nexport class YuvMasterDetailsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3"],"mappings":"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"}
1
+ {"version":3,"file":"yuuvis-client-framework-master-details.mjs","sources":["../../../../../libs/yuuvis/client-framework/master-details/src/lib/master-details.component.ts","../../../../../libs/yuuvis/client-framework/master-details/src/lib/master-details.component.html","../../../../../libs/yuuvis/client-framework/master-details/src/lib/master-details.module.ts","../../../../../libs/yuuvis/client-framework/master-details/src/yuuvis-client-framework-master-details.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n contentChild,\n effect,\n inject,\n input,\n Input,\n model,\n TemplateRef,\n untracked,\n viewChild\n} from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { YuvPopoutModule } from '@yuuvis/client-framework/popout';\nimport { YuvSplitViewModule } from '@yuuvis/client-framework/split-view';\nimport { DeviceService } from '@yuuvis/material';\nimport { MasterDetailsLayoutOptions } from './master-details.interface';\n\n/**\n * Component rendering a master/details view.\n *\n * @example\n * <yuv-master-details [(detailsActive)]=\"detailsActive\">\n * <ng-template #yuvMasterPane>Main Pane</ng-template>\n * <ng-template #yuvDetailsPane>Details Pane</ng-template>\n * </yuv-master-details>\n */\n@Component({\n selector: 'yuv-master-details',\n templateUrl: './master-details.component.html',\n styleUrls: ['./master-details.component.scss'],\n standalone: true,\n imports: [CommonModule, YuvSplitViewModule, YuvPopoutModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class.detailsActive': 'detailsActive()'\n }\n})\nexport class YuvMasterDetailsComponent implements AfterViewInit {\n #device = inject(DeviceService);\n #dialog = inject(MatDialog);\n #cd = inject(ChangeDetectorRef);\n\n masterPane = contentChild.required<TemplateRef<any>>('yuvMasterPane');\n detailsPane = contentChild.required<TemplateRef<any>>('yuvDetailsPane');\n detailsPaneTplateRef = viewChild.required<TemplateRef<any>>('tplDetailsPanel');\n #detailsPaneDialogRef: MatDialogRef<any> | null = null;\n\n private _defaultLayoutOptions: MasterDetailsLayoutOptions = {\n masterSize: 80,\n masterMinSize: undefined,\n detailsSize: 20,\n detailsMinSize: undefined,\n resizable: true\n };\n /**\n * Enable/disable details pane (also use as two-way-bound variable: [(detailsActive)])\n */\n detailsActive = model<boolean>(false);\n #detailsActiveEffect = effect(() => {\n const da = this.detailsActive();\n untracked(() => {\n if (this.#detailsPaneDialogRef) this.#detailsPaneDialogRef.close();\n if (this.smallScreenLayout() && da) {\n this.#detailsPaneDialogRef = this.#dialog.open(this.detailsPaneTplateRef(), {\n width: '90vw',\n height: '95vh',\n });\n this.#detailsPaneDialogRef.afterClosed().subscribe((silent: boolean) => {\n if (!silent) {\n this.detailsActive.set(false);\n }\n this.#detailsPaneDialogRef = null;\n });\n }\n });\n });\n\n smallScreenLayout = this.#device.smallScreenLayout;\n #smallScreenLayoutEffect = effect(() => {\n const ssl = this.smallScreenLayout();\n if (this.#detailsPaneDialogRef) this.#detailsPaneDialogRef.close(true);\n untracked(() => {\n const da = this.detailsActive();\n if (ssl && da) this.detailsActive.set(false);\n });\n });\n\n /**\n * Layout settings is the state of the master details that could be persisted.\n * Setting a `layoutSettingsID` will save the current state (details area visibilkity and\n * split area sizes etc.) to the local storage. If the component is created, it will load\n * those settings and re-apply them.\n */\n @Input() layoutSettingsID?: string;\n private _layoutOptions: MasterDetailsLayoutOptions = this._defaultLayoutOptions;\n /**\n * Layout options to be applied.\n */\n @Input() set layoutOptions(lo: Partial<MasterDetailsLayoutOptions>) {\n this._layoutOptions = lo ? { ...this._defaultLayoutOptions, ...lo } : this._defaultLayoutOptions;\n }\n get layoutOptions(): MasterDetailsLayoutOptions {\n return this._layoutOptions;\n }\n undockableDetails = input<boolean>(false);\n /**\n * Styles tp be applied to the panels\n */\n panelStyle = input<{ [key: string]: string } | undefined>(undefined);\n /**\n * Size of the gutter in Pixel.\n */\n gutterSize = input<number | undefined>(undefined);\n\n onPopIn() {\n this.detailsActive.set(true);\n this.#cd.detectChanges();\n }\n\n ngAfterViewInit() {\n if (!this.masterPane() || !this.detailsPane()) {\n console.error('MasterDetailsComponent is supposed to contain a master and a details pane.');\n }\n }\n}\n","@if (!smallScreenLayout()) {\n <yuv-split-view [disabled]=\"!layoutOptions.resizable\" [gutterSize]=\"gutterSize() || 1\"\n [layoutSettingsID]=\"layoutSettingsID\">\n <ng-template yuvSplitArea [size]=\"layoutOptions.masterSize\" [minSize]=\"layoutOptions.masterMinSize\">\n <div class=\"yuv-md-panel master\" [ngStyle]=\"panelStyle()\">\n <ng-container *ngTemplateOutlet=\"masterPane()\"></ng-container>\n </div>\n </ng-template>\n <ng-template yuvSplitArea [size]=\"layoutOptions.detailsSize\" [minSize]=\"layoutOptions.detailsMinSize\"\n [visible]=\"detailsActive()\">\n <div class=\"yuv-md-panel details\" [ngStyle]=\"panelStyle()\">\n @if (undockableDetails()) {\n <yuv-popout (popIn)=\"onPopIn()\" (popOut)=\"detailsActive.set(false)\"><ng-container\n *ngTemplateOutlet=\"tplDetailsPanel\"></ng-container></yuv-popout>\n } @else {\n <ng-container *ngTemplateOutlet=\"tplDetailsPanel\"></ng-container>\n }\n </div>\n </ng-template>\n </yuv-split-view>\n} @else {\n <div class=\"yuvMasterPane\"><ng-container *ngTemplateOutlet=\"masterPane()\"></ng-container></div>\n}\n\n\n<ng-template #tplDetailsPanel>\n <ng-container *ngTemplateOutlet=\"detailsPane()\"></ng-container>\n</ng-template>\n\n","import { NgModule } from '@angular/core';\nimport { YuvMasterDetailsComponent } from './master-details.component';\n\nconst cmd = [YuvMasterDetailsComponent];\n@NgModule({\n imports: [cmd],\n exports: [cmd]\n})\nexport class YuvMasterDetailsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AAuBA;;;;;;;;AAQG;MAYU,yBAAyB,CAAA;AAXtC,IAAA,WAAA,GAAA;AAYE,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;AAC/B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;AAC3B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAE/B,QAAA,IAAA,CAAA,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAmB,eAAe,CAAC;AACrE,QAAA,IAAA,CAAA,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAmB,gBAAgB,CAAC;AACvE,QAAA,IAAA,CAAA,oBAAoB,GAAG,SAAS,CAAC,QAAQ,CAAmB,iBAAiB,CAAC;QAC9E,IAAqB,CAAA,qBAAA,GAA6B,IAAI;AAE9C,QAAA,IAAA,CAAA,qBAAqB,GAA+B;AAC1D,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,aAAa,EAAE,SAAS;AACxB,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,cAAc,EAAE,SAAS;AACzB,YAAA,SAAS,EAAE;SACZ;AACD;;AAEG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,KAAK,CAAC;AACrC,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,MAAK;AACjC,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;YAC/B,SAAS,CAAC,MAAK;gBACb,IAAI,IAAI,CAAC,qBAAqB;AAAE,oBAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE;AAClE,gBAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,EAAE;AAClC,oBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAC1E,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,MAAM,EAAE,MAAM;AACf,qBAAA,CAAC;oBACF,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAe,KAAI;wBACrE,IAAI,CAAC,MAAM,EAAE;AACX,4BAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;;AAE/B,wBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;AACnC,qBAAC,CAAC;;AAEN,aAAC,CAAC;AACJ,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB;AAClD,QAAA,IAAA,CAAA,wBAAwB,GAAG,MAAM,CAAC,MAAK;AACrC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,EAAE;YACpC,IAAI,IAAI,CAAC,qBAAqB;AAAE,gBAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC;YACtE,SAAS,CAAC,MAAK;AACb,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;gBAC/B,IAAI,GAAG,IAAI,EAAE;AAAE,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9C,aAAC,CAAC;AACJ,SAAC,CAAC;AASM,QAAA,IAAA,CAAA,cAAc,GAA+B,IAAI,CAAC,qBAAqB;AAU/E,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,KAAK,CAAC;AACzC;;AAEG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAwC,SAAS,CAAC;AACpE;;AAEG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAqB,SAAS,CAAC;AAYlD;AAtFC,IAAA,OAAO;AACP,IAAA,OAAO;AACP,IAAA,GAAG;AAKH,IAAA,qBAAqB;AAarB,IAAA,oBAAoB;AAoBpB,IAAA,wBAAwB;AAiBxB;;AAEG;IACH,IAAa,aAAa,CAAC,EAAuC,EAAA;QAChE,IAAI,CAAC,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,qBAAqB;;AAElG,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc;;IAY5B,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;IAG1B,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AAC7C,YAAA,OAAO,CAAC,KAAK,CAAC,4EAA4E,CAAC;;;+GApFpF,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,w6CC3CtC,gxCA6BA,EAAA,MAAA,EAAA,CAAA,odAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDQY,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,4bAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAMhD,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAXrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAGlB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,kBAAkB,EAAE,eAAe,CAAC,EAAA,eAAA,EAC3C,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,qBAAqB,EAAE;AACxB,qBAAA,EAAA,QAAA,EAAA,gxCAAA,EAAA,MAAA,EAAA,CAAA,odAAA,CAAA,EAAA;8BA0DQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKY,aAAa,EAAA,CAAA;sBAAzB;;;AErGH,MAAM,GAAG,GAAG,CAAC,yBAAyB,CAAC;MAK1B,sBAAsB,CAAA;+GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAtB,sBAAsB,EAAA,OAAA,EAAA,CALtB,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAAzB,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAKzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAHvB,GAAG,CAAA,EAAA,CAAA,CAAA;;4FAGF,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,GAAG,CAAC;oBACd,OAAO,EAAE,CAAC,GAAG;AACd,iBAAA;;;ACPD;;AAEG;;;;"}
@@ -49,6 +49,8 @@ class ObjectSummaryDataComponent {
49
49
  this.#systemService = inject(SystemService);
50
50
  this.translate = inject(TranslateService);
51
51
  this.dmsObject = input.required();
52
+ this.baseData = signal([]);
53
+ this.flavorData = signal([]);
52
54
  /**
53
55
  * IDs of flavors to show. If `showAppliedFlavors` is true, all the applied flavors will be shown.
54
56
  */
@@ -66,8 +68,6 @@ class ObjectSummaryDataComponent {
66
68
  this.flavorData.set(this.#getFlavorData(o, this.#shell.getAppliedObjectFlavors(o).applied));
67
69
  }
68
70
  });
69
- this.baseData = signal([]);
70
- this.flavorData = signal([]);
71
71
  this.#dmsObjectEffect = effect(() => {
72
72
  const dmsObject = this.dmsObject();
73
73
  if (dmsObject) {
@@ -107,6 +107,21 @@ class ObjectSummaryDataComponent {
107
107
  });
108
108
  }
109
109
  }
110
+ #getValue(f, data) {
111
+ if (f.propertyType === 'table') {
112
+ return data[f.id].map((row) => {
113
+ return Object.entries(row).map(([key, value]) => {
114
+ const columnDef = f.columnDefinitions.find((col) => col.id === key);
115
+ return {
116
+ propertyName: key,
117
+ value,
118
+ propertyType: columnDef?.propertyType || 'string'
119
+ };
120
+ });
121
+ });
122
+ }
123
+ return data[f.id];
124
+ }
110
125
  #getFlavorData(dmsObject, flavors) {
111
126
  const sots = dmsObject.data[BaseObjectTypeField.SECONDARY_OBJECT_TYPE_IDS] || [];
112
127
  return flavors
@@ -118,7 +133,8 @@ class ObjectSummaryDataComponent {
118
133
  label: this.#systemService.getLocalizedLabel(f.id) || f.id,
119
134
  value: {
120
135
  propertyName: f.id,
121
- value: dmsObject.data[f.id]
136
+ value: this.#getValue(f, dmsObject.data),
137
+ propertyType: f.propertyType
122
138
  }
123
139
  }))
124
140
  : [];
@@ -1 +1 @@
1
- {"version":3,"file":"yuuvis-client-framework-object-summary.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-summary/src/lib/multi-object-summary/multi-object-summary.component.ts","../../../../../libs/yuuvis/client-framework/object-summary/src/lib/object-summary-data/object-summary-data.component.ts","../../../../../libs/yuuvis/client-framework/object-summary/src/lib/object-summary-data/object-summary-data.component.html","../../../../../libs/yuuvis/client-framework/object-summary/src/lib/object-summary/object-summary.component.ts","../../../../../libs/yuuvis/client-framework/object-summary/src/lib/object-summary/object-summary.component.html","../../../../../libs/yuuvis/client-framework/object-summary/src/lib/object-summary.module.ts","../../../../../libs/yuuvis/client-framework/object-summary/src/yuuvis-client-framework-object-summary.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: 'yuv-multi-object-summary',\n standalone: true,\n imports: [MatIcon],\n template: `\n <section class=\"slide\">\n <mat-icon class=\"ymt-icon--size-6xl\">{{ icon() }}</mat-icon>\n </section>\n\n <section class=\"title\">\n <h1>{{ headline() }}</h1>\n </section>\n `,\n styleUrl: './multi-object-summary.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MultiObjectSummaryComponent {\n icon = signal('home_storage');\n\n headline = input<string>('this could be your headline');\n}\n","import { ChangeDetectionStrategy, Component, effect, inject, input, signal, untracked } from '@angular/core';\nimport { BaseObjectTypeField, ContentStreamField, DmsObject, SystemService, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { RendererDirective, RendererDirectiveInput } from '@yuuvis/client-framework/renderer';\nimport { ObjectFlavor, ShellService } from '@yuuvis/client-shell-core';\n\n@Component({\n selector: 'yuv-object-summary-data',\n standalone: true,\n imports: [RendererDirective, TranslateModule],\n templateUrl: './object-summary-data.component.html',\n styleUrl: './object-summary-data.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ObjectSummaryDataComponent {\n readonly #shell = inject(ShellService);\n readonly #systemService = inject(SystemService);\n readonly translate = inject(TranslateService);\n\n dmsObject = input.required<DmsObject>();\n /**\n * IDs of flavors to show. If `showAppliedFlavors` is true, all the applied flavors will be shown.\n */\n flavors = input<ObjectFlavor[]>();\n #flavorDataEffect = effect(() => {\n this.flavorData.set(this.#getFlavorData(this.dmsObject(), this.flavors() || []));\n });\n\n /**\n * Whether to identify and show all applied flavors of the object.\n */\n showAppliedFlavors = input<boolean>();\n #showAppliedFlavorsEffect = effect(() => {\n const o = this.dmsObject();\n if (this.showAppliedFlavors()) {\n this.flavorData.set(this.#getFlavorData(o, this.#shell.getAppliedObjectFlavors(o).applied));\n }\n });\n\n baseData = signal<any[]>([]);\n flavorData = signal<\n {\n label: string;\n properties: {\n label: string;\n value: RendererDirectiveInput;\n }[];\n }[]\n >([]);\n\n #dmsObjectEffect = effect(() => {\n const dmsObject = this.dmsObject();\n if (dmsObject) {\n untracked(() => {\n this.#getBaseData();\n });\n }\n });\n\n #getBaseData() {\n this.baseData.set([]);\n\n const fields = [\n BaseObjectTypeField.CREATION_DATE,\n `${BaseObjectTypeField.CREATED_BY}_title`,\n BaseObjectTypeField.MODIFICATION_DATE,\n `${BaseObjectTypeField.MODIFIED_BY}_title`\n ];\n const contentFields = [ContentStreamField.FILENAME, ContentStreamField.LENGTH, ContentStreamField.MIME_TYPE];\n const dmsObject = this.dmsObject();\n if (dmsObject) {\n (dmsObject.content ? [...fields, ...contentFields] : fields).forEach((f) => {\n this.baseData.update((data) => [\n ...data,\n {\n label: this.#systemService.getLocalizedLabel(f.replace('_title', '')) || f,\n value: {\n propertyName: f,\n value: dmsObject.data[f]\n }\n }\n ]);\n });\n }\n }\n\n #getFlavorData(\n dmsObject: DmsObject,\n flavors: ObjectFlavor[]\n ): {\n label: string;\n properties: {\n label: string;\n value: RendererDirectiveInput;\n }[];\n }[] {\n const sots = (dmsObject.data[BaseObjectTypeField.SECONDARY_OBJECT_TYPE_IDS] as string[]) || [];\n return flavors\n .filter((f) => sots.includes(f.sot))\n .map((f) => {\n const sot = this.#systemService.getSecondaryObjectType(f.sot, true);\n const properties = sot\n ? sot.fields.map((f) => ({\n label: this.#systemService.getLocalizedLabel(f.id) || f.id,\n value: {\n propertyName: f.id,\n value: dmsObject.data[f.id]\n }\n }))\n : [];\n\n return {\n label: this.#systemService.getLocalizedLabel(f.id) || this.translate.instant(f.id),\n properties\n };\n });\n }\n}\n","@let flavors = flavorData();\n\n<div class=\"content\">\n @if (flavors.length > 0) {\n <section class=\"flavor properties\">\n @for (flavor of flavors; track $index) {\n <div class=\"flavour-groups\">\n <h3 class=\"object-summary__title\">{{ flavor.label }}</h3>\n @for (property of flavor.properties; track $index) {\n <div class=\"row\">\n <div class=\"label\">{{ property.label }}</div>\n <div class=\"value\">\n <ng-container *yuvRenderer=\"property.value\"></ng-container>\n </div>\n </div>\n }\n </div>\n }\n </section>\n }\n\n @let base = baseData();\n @if (base) {\n <section class=\"base properties\">\n <h3 class=\"object-summary__title\">{{'yuv.object-summary-data.base.headline'|translate}}</h3>\n @for (p of base; track $index) {\n <div class=\"row\">\n <div class=\"label\">{{ p.label }}</div>\n <div class=\"value\">\n <ng-container *yuvRenderer=\"p.value\"></ng-container>\n </div>\n </div>\n }\n </section>\n }\n</div>\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectorRef, Component, effect, inject, input, signal, untracked, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n BaseObjectTypeField,\n ConfigTypeOption,\n ContentStreamField,\n DmsObject,\n DmsService,\n EventService,\n ObjectConfigRecord,\n ObjectConfigService,\n Operator,\n ResolvedObjectConfig,\n SearchQuery,\n SearchService,\n TranslateModule,\n TranslateService,\n VirtualObjectType,\n YuvEvent,\n YuvEventType\n} from '@yuuvis/client-core';\nimport { BusyOverlayDirective, RetentionBadgeComponent } from '@yuuvis/client-framework/common';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { ObjectFlavorComponent } from '@yuuvis/client-framework/object-flavor';\nimport { OverflowMenuComponent, OverflowMenuItem } from '@yuuvis/client-framework/overflow-menu';\nimport { RendererDirectiveInput } from '@yuuvis/client-framework/renderer';\nimport { ObjectFlavor } from '@yuuvis/client-shell-core';\nimport { ObjectSummaryDataComponent } from '../object-summary-data/object-summary-data.component';\n\n/**\n * Component showing a summary of the given dms object.\n */\n@Component({\n selector: 'yuv-object-summary',\n standalone: true,\n imports: [\n NgClass,\n BusyOverlayDirective,\n RetentionBadgeComponent,\n TranslateModule,\n ObjectFlavorComponent,\n OverflowMenuComponent,\n MatIconModule,\n ObjectSummaryDataComponent\n ],\n templateUrl: './object-summary.component.html',\n styleUrl: './object-summary.component.scss',\n hostDirectives: [\n {\n directive: BusyOverlayDirective,\n inputs: ['yuvBusyOverlay: busy']\n }\n ]\n})\nexport class ObjectSummaryComponent {\n readonly #eventService = inject(EventService);\n readonly #dmsService = inject(DmsService);\n private readonly translate = inject(TranslateService);\n readonly #objectConfigService = inject(ObjectConfigService);\n readonly #searchService = inject(SearchService);\n readonly #cd = inject(ChangeDetectorRef);\n\n flavorCmp = viewChild(ObjectFlavorComponent);\n\n #oc?: ObjectConfigRecord;\n\n slide = signal<{\n icon?: {\n name?: string;\n title?: string;\n };\n uri?: string;\n loading: boolean;\n orientation?: 'portrait' | 'landscape';\n }>({\n loading: false\n });\n busy = true;\n\n contextError?: string;\n headerData = signal<\n | {\n icon?: {\n name?: string;\n title?: string;\n };\n title?: string;\n description?: string;\n }\n | undefined\n >(undefined);\n\n baseData: {\n label: string;\n value: RendererDirectiveInput;\n }[] = [];\n\n flavors: ObjectFlavor[] = [];\n\n icons = {\n folder: YUV_ICONS.folder\n };\n\n actions = input<OverflowMenuItem[]>([]);\n\n folderInfo?: {\n size: number;\n entries: {\n key: string;\n count: number;\n }[];\n };\n\n /**\n * DmsObject to show the details for.\n */\n\n dmsObject = signal<DmsObject | undefined>(undefined);\n\n dmsObjectInput = input<DmsObject | undefined>(undefined, { alias: 'dmsObject' });\n #dmsObjectInputEffect = effect(() => {\n const dmsObject = this.dmsObjectInput();\n const contentChanged = this.dmsObject()?.content?.contentStreamId !== dmsObject?.content?.contentStreamId;\n\n untracked(() => {\n this.dmsObject.set(dmsObject);\n contentChanged && this.slide.update((slide) => ({ ...slide, uri: undefined, icon: undefined, iconSvg: undefined }));\n if (dmsObject) {\n this.#getHeaderData();\n (contentChanged || dmsObject.isFolder) && this.#setupSlide();\n this.folderInfo = undefined;\n\n if (dmsObject.isFolder) this.#fetchFolderInfo(dmsObject.id);\n\n // TODO: if a flavor has been selected and a new object comes in, we'll check if\n // the new object has the same flavor and update the flavor data\n // if (this.flavorData && dmsObject.sots.includes(this.flavorData.flavor.sot)) {\n // this.#getFlavorData(this.flavorData.flavor);\n // } else this.flavorData = undefined;\n }\n });\n });\n\n /**\n * ID of a DmsObject. The object will be fetched from the backend upfront.\n */\n objectId = input<string | undefined | null>(null);\n #objectIdEffect = effect(() => {\n const id = this.objectId();\n untracked(() => {\n id && this.#getDmsObject(id);\n });\n });\n\n // virtual object type to be used for header data\n configType = input<ConfigTypeOption>();\n\n constructor() {\n this.#objectConfigService\n .getObjectConfigs$(undefined, true)\n .pipe(takeUntilDestroyed())\n .subscribe((res: ObjectConfigRecord) => {\n this.#oc = res;\n const dmsObject = this.dmsObject();\n if (dmsObject) this.#getHeaderData();\n });\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n const o = e.data as DmsObject;\n const dmsObject = this.dmsObject();\n this.#setupSlide();\n if (dmsObject?.id === o.id) {\n this.dmsObject.set(o);\n }\n });\n }\n\n #setupSlide() {\n const dmsObject = this.dmsObject();\n if (dmsObject) {\n if (dmsObject.content) {\n const slideUri = this.#dmsService.getSlideURI(dmsObject.id, dmsObject.content?.mimeType);\n if (slideUri) {\n this.slide.update((slide) => ({ ...slide, loading: true }));\n const img = new Image();\n img.onload = () => {\n this.slide.update((slide) => ({\n ...slide,\n orientation: img.width > img.height ? 'landscape' : 'portrait',\n uri: `${slideUri}?${new Date().getTime()}`, // add Timestamp to force image reload\n loading: false\n }));\n this.#cd.markForCheck();\n };\n img.onerror = () => {\n const headerData = this.headerData();\n this.slide.update((slide) => ({ ...slide, icon: headerData?.icon, loading: false }));\n this.#cd.markForCheck();\n };\n img.src = slideUri;\n }\n } else {\n const headerData = this.headerData();\n this.slide.update((slide) => ({ ...slide, icon: headerData?.icon }));\n }\n }\n }\n\n onFlavorSelect(flavor: ObjectFlavor | undefined) {\n this.flavors = flavor ? [flavor] : [];\n }\n\n #fetchFolderInfo(id: string) {\n const q: SearchQuery = {\n fields: [`SUM(${ContentStreamField.LENGTH})`],\n aggs: [BaseObjectTypeField.BASE_TYPE_ID],\n filters: [\n {\n f: BaseObjectTypeField.PARENT_ID,\n o: Operator.EQUAL,\n v1: id\n }\n ]\n };\n this.#searchService.aggregate(q, [BaseObjectTypeField.BASE_TYPE_ID]).subscribe((res) => {\n const entries = res.aggregations[0].entries;\n this.folderInfo = {\n size: entries.reduce((s, v) => s + v.count, 0),\n entries\n };\n });\n }\n\n #getDmsObject(id: string) {\n this.busy = true;\n this.#dmsService.getDmsObject(id).subscribe({\n next: (dmsObject) => this.dmsObject.set(dmsObject),\n error: () => {\n this.dmsObject.set(undefined);\n this.contextError = this.translate.instant('yuv.object-summary.load.error');\n },\n complete: () => {\n this.busy = false;\n }\n });\n }\n\n #getObjectConfig(type?: VirtualObjectType, bucket?: string): ResolvedObjectConfig | undefined {\n const dmsObject = this.dmsObject();\n return dmsObject\n ? this.#objectConfigService.getResolvedObjectConfig(\n dmsObject.data,\n type || {\n id: dmsObject.objectTypeId,\n objectType: dmsObject.objectTypeId\n },\n bucket,\n true\n )\n : undefined;\n }\n\n #getHeaderData() {\n const oc = this.#getObjectConfig(this.configType()?.type, this.configType()?.bucket);\n const dmsObject = this.dmsObject();\n if (oc && dmsObject) {\n this.headerData.update((data) => ({\n ...data,\n title: oc.title.value,\n description: oc.description?.value,\n icon: {\n title: oc.title.value,\n ...(oc.icon ? { name: oc.icon.value } : undefined)\n }\n }));\n } else this.headerData.set(undefined);\n }\n}\n","@let imageSlide = slide();\n<section class=\"slide\" [yuvBusyOverlay]=\"imageSlide.loading\">\n @if (imageSlide.uri || imageSlide.loading) {\n <img draggable=\"false\" [ngClass]=\"{ loading: imageSlide.loading }\" [attr.data-orientation]=\"imageSlide.orientation\" [src]=\"imageSlide.uri\" />\n } @else if (imageSlide.icon && imageSlide.icon.name) {\n <mat-icon draggable=\"false\" class=\"ymt-icon--size-6xl\">{{ imageSlide.icon.name }}</mat-icon>\n }\n @if (folderInfo) {\n <div class=\"badge\">\n {{ folderInfo.size }}\n </div>\n }\n</section>\n\n@let o = dmsObject();\n@if (o) {\n <section class=\"object-flavors\">\n <yuv-object-flavor [dmsObject]=\"o\" (flavorSelect)=\"onFlavorSelect($event)\"></yuv-object-flavor>\n </section>\n}\n\n<div class=\"content\">\n @let header = headerData();\n <section class=\"title\">\n <h2>{{ header?.title }}</h2>\n\n <div class=\"actions\">\n <yuv-overflow-menu [menuItems]=\"actions()\"></yuv-overflow-menu>\n </div>\n </section>\n\n @if (o) {\n <section class=\"badges\">\n <yuv-retention-badge [dmsObject]=\"o\"></yuv-retention-badge>\n </section>\n\n <yuv-object-summary-data [dmsObject]=\"o\" [flavors]=\"flavors\"></yuv-object-summary-data>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { MultiObjectSummaryComponent } from './multi-object-summary/multi-object-summary.component';\nimport { ObjectSummaryDataComponent } from './object-summary-data/object-summary-data.component';\nimport { ObjectSummaryComponent } from './object-summary/object-summary.component';\n\nconst cmp = [ObjectSummaryComponent, MultiObjectSummaryComponent, ObjectSummaryDataComponent];\n@NgModule({\n imports: cmp,\n exports: cmp\n})\nexport class YuvObjectSummaryModule {}\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-object-summary.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-summary/src/lib/multi-object-summary/multi-object-summary.component.ts","../../../../../libs/yuuvis/client-framework/object-summary/src/lib/object-summary-data/object-summary-data.component.ts","../../../../../libs/yuuvis/client-framework/object-summary/src/lib/object-summary-data/object-summary-data.component.html","../../../../../libs/yuuvis/client-framework/object-summary/src/lib/object-summary/object-summary.component.ts","../../../../../libs/yuuvis/client-framework/object-summary/src/lib/object-summary/object-summary.component.html","../../../../../libs/yuuvis/client-framework/object-summary/src/lib/object-summary.module.ts","../../../../../libs/yuuvis/client-framework/object-summary/src/yuuvis-client-framework-object-summary.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: 'yuv-multi-object-summary',\n standalone: true,\n imports: [MatIcon],\n template: `\n <section class=\"slide\">\n <mat-icon class=\"ymt-icon--size-6xl\">{{ icon() }}</mat-icon>\n </section>\n\n <section class=\"title\">\n <h1>{{ headline() }}</h1>\n </section>\n `,\n styleUrl: './multi-object-summary.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MultiObjectSummaryComponent {\n icon = signal('home_storage');\n\n headline = input<string>('this could be your headline');\n}\n","import { ChangeDetectionStrategy, Component, effect, inject, input, signal, untracked } from '@angular/core';\nimport { BaseObjectTypeField, ContentStreamField, DmsObject, ObjectTypeField, SystemService, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { RendererDirective, RendererDirectiveInput } from '@yuuvis/client-framework/renderer';\nimport { ObjectFlavor, ShellService } from '@yuuvis/client-shell-core';\n\n@Component({\n selector: 'yuv-object-summary-data',\n standalone: true,\n imports: [RendererDirective, TranslateModule],\n templateUrl: './object-summary-data.component.html',\n styleUrl: './object-summary-data.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ObjectSummaryDataComponent {\n readonly #shell = inject(ShellService);\n readonly #systemService = inject(SystemService);\n readonly translate = inject(TranslateService);\n\n dmsObject = input.required<DmsObject>();\n\n baseData = signal<any[]>([]);\n flavorData = signal<\n {\n label: string;\n properties: {\n label: string;\n value: RendererDirectiveInput;\n propertyType?: string;\n }[];\n }[]\n >([]);\n\n /**\n * IDs of flavors to show. If `showAppliedFlavors` is true, all the applied flavors will be shown.\n */\n flavors = input<ObjectFlavor[]>();\n #flavorDataEffect = effect(() => {\n this.flavorData.set(this.#getFlavorData(this.dmsObject(), this.flavors() || []));\n });\n\n /**\n * Whether to identify and show all applied flavors of the object.\n */\n showAppliedFlavors = input<boolean>();\n #showAppliedFlavorsEffect = effect(() => {\n const o = this.dmsObject();\n if (this.showAppliedFlavors()) {\n this.flavorData.set(this.#getFlavorData(o, this.#shell.getAppliedObjectFlavors(o).applied));\n }\n });\n\n #dmsObjectEffect = effect(() => {\n const dmsObject = this.dmsObject();\n if (dmsObject) {\n untracked(() => {\n this.#getBaseData();\n });\n }\n });\n\n #getBaseData() {\n this.baseData.set([]);\n\n const fields = [\n BaseObjectTypeField.CREATION_DATE,\n `${BaseObjectTypeField.CREATED_BY}_title`,\n BaseObjectTypeField.MODIFICATION_DATE,\n `${BaseObjectTypeField.MODIFIED_BY}_title`\n ];\n const contentFields = [ContentStreamField.FILENAME, ContentStreamField.LENGTH, ContentStreamField.MIME_TYPE];\n const dmsObject = this.dmsObject();\n if (dmsObject) {\n (dmsObject.content ? [...fields, ...contentFields] : fields).forEach((f) => {\n this.baseData.update((data) => [\n ...data,\n {\n label: this.#systemService.getLocalizedLabel(f.replace('_title', '')) || f,\n value: {\n propertyName: f,\n value: dmsObject.data[f]\n }\n }\n ]);\n });\n }\n }\n\n #getValue(f: ObjectTypeField, data: Record<string, unknown>): any {\n if (f.propertyType === 'table') {\n return (data[f.id] as any).map((row: any) => {\n return Object.entries(row).map(([key, value]) => {\n const columnDef = (f as any).columnDefinitions.find((col: any) => col.id === key);\n return {\n propertyName: key,\n value,\n propertyType: columnDef?.propertyType || 'string'\n };\n });\n });\n }\n\n return data[f.id];\n }\n\n #getFlavorData(\n dmsObject: DmsObject,\n flavors: ObjectFlavor[]\n ): {\n label: string;\n properties: {\n label: string;\n value: RendererDirectiveInput;\n }[];\n }[] {\n const sots = (dmsObject.data[BaseObjectTypeField.SECONDARY_OBJECT_TYPE_IDS] as string[]) || [];\n return flavors\n .filter((f) => sots.includes(f.sot))\n .map((f) => {\n const sot = this.#systemService.getSecondaryObjectType(f.sot, true);\n const properties = sot\n ? sot.fields.map((f) => ({\n label: this.#systemService.getLocalizedLabel(f.id) || f.id,\n value: {\n propertyName: f.id,\n value: this.#getValue(f, dmsObject.data),\n propertyType: f.propertyType\n }\n }))\n : [];\n return {\n label: this.#systemService.getLocalizedLabel(f.id) || this.translate.instant(f.id),\n properties\n };\n });\n }\n}\n","@let flavors = flavorData();\n\n<div class=\"content\">\n @if (flavors.length > 0) {\n <section class=\"flavor properties\">\n @for (flavor of flavors; track $index) {\n <div class=\"flavour-groups\">\n <h3 class=\"object-summary__title\">{{ flavor.label }}</h3>\n @for (property of flavor.properties; track $index) {\n <div class=\"row\">\n <div class=\"label\">{{ property.label }}</div>\n <div class=\"value\">\n <ng-container *yuvRenderer=\"property.value\"></ng-container>\n </div>\n </div>\n }\n </div>\n }\n </section>\n }\n\n @let base = baseData();\n @if (base) {\n <section class=\"base properties\">\n <h3 class=\"object-summary__title\">{{'yuv.object-summary-data.base.headline'|translate}}</h3>\n @for (p of base; track $index) {\n <div class=\"row\">\n <div class=\"label\">{{ p.label }}</div>\n <div class=\"value\">\n <ng-container *yuvRenderer=\"p.value\"></ng-container>\n </div>\n </div>\n }\n </section>\n }\n</div>\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectorRef, Component, effect, inject, input, signal, untracked, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n BaseObjectTypeField,\n ConfigTypeOption,\n ContentStreamField,\n DmsObject,\n DmsService,\n EventService,\n ObjectConfigRecord,\n ObjectConfigService,\n Operator,\n ResolvedObjectConfig,\n SearchQuery,\n SearchService,\n TranslateModule,\n TranslateService,\n VirtualObjectType,\n YuvEvent,\n YuvEventType\n} from '@yuuvis/client-core';\nimport { BusyOverlayDirective, RetentionBadgeComponent } from '@yuuvis/client-framework/common';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { ObjectFlavorComponent } from '@yuuvis/client-framework/object-flavor';\nimport { OverflowMenuComponent, OverflowMenuItem } from '@yuuvis/client-framework/overflow-menu';\nimport { RendererDirectiveInput } from '@yuuvis/client-framework/renderer';\nimport { ObjectFlavor } from '@yuuvis/client-shell-core';\nimport { ObjectSummaryDataComponent } from '../object-summary-data/object-summary-data.component';\n\n/**\n * Component showing a summary of the given dms object.\n */\n@Component({\n selector: 'yuv-object-summary',\n standalone: true,\n imports: [\n NgClass,\n BusyOverlayDirective,\n RetentionBadgeComponent,\n TranslateModule,\n ObjectFlavorComponent,\n OverflowMenuComponent,\n MatIconModule,\n ObjectSummaryDataComponent\n ],\n templateUrl: './object-summary.component.html',\n styleUrl: './object-summary.component.scss',\n hostDirectives: [\n {\n directive: BusyOverlayDirective,\n inputs: ['yuvBusyOverlay: busy']\n }\n ]\n})\nexport class ObjectSummaryComponent {\n readonly #eventService = inject(EventService);\n readonly #dmsService = inject(DmsService);\n private readonly translate = inject(TranslateService);\n readonly #objectConfigService = inject(ObjectConfigService);\n readonly #searchService = inject(SearchService);\n readonly #cd = inject(ChangeDetectorRef);\n\n flavorCmp = viewChild(ObjectFlavorComponent);\n\n #oc?: ObjectConfigRecord;\n\n slide = signal<{\n icon?: {\n name?: string;\n title?: string;\n };\n uri?: string;\n loading: boolean;\n orientation?: 'portrait' | 'landscape';\n }>({\n loading: false\n });\n busy = true;\n\n contextError?: string;\n headerData = signal<\n | {\n icon?: {\n name?: string;\n title?: string;\n };\n title?: string;\n description?: string;\n }\n | undefined\n >(undefined);\n\n baseData: {\n label: string;\n value: RendererDirectiveInput;\n }[] = [];\n\n flavors: ObjectFlavor[] = [];\n\n icons = {\n folder: YUV_ICONS.folder\n };\n\n actions = input<OverflowMenuItem[]>([]);\n\n folderInfo?: {\n size: number;\n entries: {\n key: string;\n count: number;\n }[];\n };\n\n /**\n * DmsObject to show the details for.\n */\n\n dmsObject = signal<DmsObject | undefined>(undefined);\n\n dmsObjectInput = input<DmsObject | undefined>(undefined, { alias: 'dmsObject' });\n #dmsObjectInputEffect = effect(() => {\n const dmsObject = this.dmsObjectInput();\n const contentChanged = this.dmsObject()?.content?.contentStreamId !== dmsObject?.content?.contentStreamId;\n\n untracked(() => {\n this.dmsObject.set(dmsObject);\n contentChanged && this.slide.update((slide) => ({ ...slide, uri: undefined, icon: undefined, iconSvg: undefined }));\n if (dmsObject) {\n this.#getHeaderData();\n (contentChanged || dmsObject.isFolder) && this.#setupSlide();\n this.folderInfo = undefined;\n\n if (dmsObject.isFolder) this.#fetchFolderInfo(dmsObject.id);\n\n // TODO: if a flavor has been selected and a new object comes in, we'll check if\n // the new object has the same flavor and update the flavor data\n // if (this.flavorData && dmsObject.sots.includes(this.flavorData.flavor.sot)) {\n // this.#getFlavorData(this.flavorData.flavor);\n // } else this.flavorData = undefined;\n }\n });\n });\n\n /**\n * ID of a DmsObject. The object will be fetched from the backend upfront.\n */\n objectId = input<string | undefined | null>(null);\n #objectIdEffect = effect(() => {\n const id = this.objectId();\n untracked(() => {\n id && this.#getDmsObject(id);\n });\n });\n\n // virtual object type to be used for header data\n configType = input<ConfigTypeOption>();\n\n constructor() {\n this.#objectConfigService\n .getObjectConfigs$(undefined, true)\n .pipe(takeUntilDestroyed())\n .subscribe((res: ObjectConfigRecord) => {\n this.#oc = res;\n const dmsObject = this.dmsObject();\n if (dmsObject) this.#getHeaderData();\n });\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n const o = e.data as DmsObject;\n const dmsObject = this.dmsObject();\n this.#setupSlide();\n if (dmsObject?.id === o.id) {\n this.dmsObject.set(o);\n }\n });\n }\n\n #setupSlide() {\n const dmsObject = this.dmsObject();\n if (dmsObject) {\n if (dmsObject.content) {\n const slideUri = this.#dmsService.getSlideURI(dmsObject.id, dmsObject.content?.mimeType);\n if (slideUri) {\n this.slide.update((slide) => ({ ...slide, loading: true }));\n const img = new Image();\n img.onload = () => {\n this.slide.update((slide) => ({\n ...slide,\n orientation: img.width > img.height ? 'landscape' : 'portrait',\n uri: `${slideUri}?${new Date().getTime()}`, // add Timestamp to force image reload\n loading: false\n }));\n this.#cd.markForCheck();\n };\n img.onerror = () => {\n const headerData = this.headerData();\n this.slide.update((slide) => ({ ...slide, icon: headerData?.icon, loading: false }));\n this.#cd.markForCheck();\n };\n img.src = slideUri;\n }\n } else {\n const headerData = this.headerData();\n this.slide.update((slide) => ({ ...slide, icon: headerData?.icon }));\n }\n }\n }\n\n onFlavorSelect(flavor: ObjectFlavor | undefined) {\n this.flavors = flavor ? [flavor] : [];\n }\n\n #fetchFolderInfo(id: string) {\n const q: SearchQuery = {\n fields: [`SUM(${ContentStreamField.LENGTH})`],\n aggs: [BaseObjectTypeField.BASE_TYPE_ID],\n filters: [\n {\n f: BaseObjectTypeField.PARENT_ID,\n o: Operator.EQUAL,\n v1: id\n }\n ]\n };\n this.#searchService.aggregate(q, [BaseObjectTypeField.BASE_TYPE_ID]).subscribe((res) => {\n const entries = res.aggregations[0].entries;\n this.folderInfo = {\n size: entries.reduce((s, v) => s + v.count, 0),\n entries\n };\n });\n }\n\n #getDmsObject(id: string) {\n this.busy = true;\n this.#dmsService.getDmsObject(id).subscribe({\n next: (dmsObject) => this.dmsObject.set(dmsObject),\n error: () => {\n this.dmsObject.set(undefined);\n this.contextError = this.translate.instant('yuv.object-summary.load.error');\n },\n complete: () => {\n this.busy = false;\n }\n });\n }\n\n #getObjectConfig(type?: VirtualObjectType, bucket?: string): ResolvedObjectConfig | undefined {\n const dmsObject = this.dmsObject();\n return dmsObject\n ? this.#objectConfigService.getResolvedObjectConfig(\n dmsObject.data,\n type || {\n id: dmsObject.objectTypeId,\n objectType: dmsObject.objectTypeId\n },\n bucket,\n true\n )\n : undefined;\n }\n\n #getHeaderData() {\n const oc = this.#getObjectConfig(this.configType()?.type, this.configType()?.bucket);\n const dmsObject = this.dmsObject();\n if (oc && dmsObject) {\n this.headerData.update((data) => ({\n ...data,\n title: oc.title.value,\n description: oc.description?.value,\n icon: {\n title: oc.title.value,\n ...(oc.icon ? { name: oc.icon.value } : undefined)\n }\n }));\n } else this.headerData.set(undefined);\n }\n}\n","@let imageSlide = slide();\n<section class=\"slide\" [yuvBusyOverlay]=\"imageSlide.loading\">\n @if (imageSlide.uri || imageSlide.loading) {\n <img draggable=\"false\" [ngClass]=\"{ loading: imageSlide.loading }\" [attr.data-orientation]=\"imageSlide.orientation\" [src]=\"imageSlide.uri\" />\n } @else if (imageSlide.icon && imageSlide.icon.name) {\n <mat-icon draggable=\"false\" class=\"ymt-icon--size-6xl\">{{ imageSlide.icon.name }}</mat-icon>\n }\n @if (folderInfo) {\n <div class=\"badge\">\n {{ folderInfo.size }}\n </div>\n }\n</section>\n\n@let o = dmsObject();\n@if (o) {\n <section class=\"object-flavors\">\n <yuv-object-flavor [dmsObject]=\"o\" (flavorSelect)=\"onFlavorSelect($event)\"></yuv-object-flavor>\n </section>\n}\n\n<div class=\"content\">\n @let header = headerData();\n <section class=\"title\">\n <h2>{{ header?.title }}</h2>\n\n <div class=\"actions\">\n <yuv-overflow-menu [menuItems]=\"actions()\"></yuv-overflow-menu>\n </div>\n </section>\n\n @if (o) {\n <section class=\"badges\">\n <yuv-retention-badge [dmsObject]=\"o\"></yuv-retention-badge>\n </section>\n\n <yuv-object-summary-data [dmsObject]=\"o\" [flavors]=\"flavors\"></yuv-object-summary-data>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { MultiObjectSummaryComponent } from './multi-object-summary/multi-object-summary.component';\nimport { ObjectSummaryDataComponent } from './object-summary-data/object-summary-data.component';\nimport { ObjectSummaryComponent } from './object-summary/object-summary.component';\n\nconst cmp = [ObjectSummaryComponent, MultiObjectSummaryComponent, ObjectSummaryDataComponent];\n@NgModule({\n imports: cmp,\n exports: cmp\n})\nexport class YuvObjectSummaryModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}