@yuuvis/app-drive 2.0.15 → 2.1.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/fesm2022/yuuvis-app-drive-extensions.mjs +4 -7
- package/fesm2022/yuuvis-app-drive-extensions.mjs.map +1 -1
- package/fesm2022/yuuvis-app-drive.mjs +91 -88
- package/fesm2022/yuuvis-app-drive.mjs.map +1 -1
- package/lib/container/drive/drive.component.d.ts +1 -1
- package/lib/drive.schema.d.ts +1 -5
- package/lib/pages/files/files.component.d.ts +4 -4
- package/package.json +2 -2
- package/yuv-manifest.json +4 -1
|
@@ -11,7 +11,8 @@ import * as i2 from '@yuuvis/client-core';
|
|
|
11
11
|
import { SystemType, ClipboardService, TranslateService, TranslateModule, BaseObjectTypeField, EventService, DmsService, SearchService, BackendService, YuvEventType, ContentStreamField, NotificationService, Utils, RetentionService, SystemService, Situation, Operator, SearchUtils, UserService, ObjectConfigService, DeviceService, AppCacheService } from '@yuuvis/client-core';
|
|
12
12
|
import { ActionsService, BASE_ACTION, AbstractContextAction, SelectionRange, ContextmenuComponent, YuvContextMenuTriggerDirective } from '@yuuvis/client-framework/actions';
|
|
13
13
|
import { UploadProgressComponent } from '@yuuvis/client-framework/upload-progress';
|
|
14
|
-
import
|
|
14
|
+
import * as i2$5 from '@yuuvis/client-shell';
|
|
15
|
+
import { YuvClientShellModule } from '@yuuvis/client-shell';
|
|
15
16
|
import { OverflowMenuComponent } from '@yuuvis/client-framework/overflow-menu';
|
|
16
17
|
import { switchMap as switchMap$1, map as map$1, finalize as finalize$1, filter as filter$1 } from 'rxjs/operators';
|
|
17
18
|
import { tap, Subject, filter, switchMap, of, forkJoin, map, catchError, finalize, timer, from } from 'rxjs';
|
|
@@ -19,7 +20,7 @@ import { MAT_DIALOG_DATA, MatDialogRef, MatDialog, MatDialogContent, MatDialogAc
|
|
|
19
20
|
import { signalState, patchState } from '@ngrx/signals';
|
|
20
21
|
import { marker } from '@colsen1991/ngx-translate-extract-marker';
|
|
21
22
|
import * as i3$1 from '@yuuvis/client-framework/common';
|
|
22
|
-
import { DialogComponent, YuvCommonModule, ClickDoubleDirective,
|
|
23
|
+
import { DialogComponent, YuvCommonModule, ClickDoubleDirective, BusyOverlayDirective, DragScrollDirective, FileDropZoneDirective, ContainerSizeDirective } from '@yuuvis/client-framework/common';
|
|
23
24
|
import { YmtButtonDirective, YmtIconButtonDirective } from '@yuuvis/material';
|
|
24
25
|
import * as i2$1 from '@angular/material/form-field';
|
|
25
26
|
import { MatFormFieldModule, MatError } from '@angular/material/form-field';
|
|
@@ -36,6 +37,7 @@ import * as i4 from '@angular/material/icon';
|
|
|
36
37
|
import { MatIconModule, MatIcon } from '@angular/material/icon';
|
|
37
38
|
import * as i2$2 from '@angular/material/menu';
|
|
38
39
|
import { MatMenuModule } from '@angular/material/menu';
|
|
40
|
+
import { MatDivider } from '@angular/material/divider';
|
|
39
41
|
import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
|
|
40
42
|
import { Directionality } from '@angular/cdk/bidi';
|
|
41
43
|
import * as i5 from '@yuuvis/client-framework/list';
|
|
@@ -55,8 +57,8 @@ import { MatTooltipModule } from '@angular/material/tooltip';
|
|
|
55
57
|
import * as i5$1 from '@angular/material/tabs';
|
|
56
58
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
57
59
|
import { TileListComponent, TileConfigTriggerComponent } from '@yuuvis/client-framework/tile-list';
|
|
58
|
-
import { ClipboardComponent } from '@yuuvis/client-framework/clipboard';
|
|
59
60
|
import { ObjectMetadataComponent, ObjectAuditComponent, RetentionBadgeComponent } from '@yuuvis/client-framework/object-details';
|
|
61
|
+
import { ClipboardComponent } from '@yuuvis/client-framework/clipboard';
|
|
60
62
|
import { YUV_ICONS, YuvIconComponent } from '@yuuvis/client-framework/icons';
|
|
61
63
|
import { ObjectFlavorComponent } from '@yuuvis/client-framework/object-flavor';
|
|
62
64
|
import { RendererDirective } from '@yuuvis/client-framework/renderer';
|
|
@@ -127,25 +129,19 @@ const FS_SOTS = {
|
|
|
127
129
|
};
|
|
128
130
|
const APP_PREFIX = 'appDrive:';
|
|
129
131
|
const APP_ID = 'io.yuuvis.app.drive';
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
id: `${APP_ID}.folder`,
|
|
137
|
-
icon: APP_DRIVE_ICONS.folder,
|
|
138
|
-
objectType: SystemType.FOLDER,
|
|
139
|
-
sots: [FS_SOTS.object]
|
|
140
|
-
},
|
|
141
|
-
file: {
|
|
142
|
-
id: `${APP_ID}.file`,
|
|
143
|
-
icon: APP_DRIVE_ICONS.file,
|
|
144
|
-
objectType: SystemType.DOCUMENT,
|
|
145
|
-
sots: [FS_SOTS.object]
|
|
146
|
-
}
|
|
132
|
+
const APP_TYPES = {
|
|
133
|
+
folder: {
|
|
134
|
+
id: `${APP_ID}.folder`,
|
|
135
|
+
icon: APP_DRIVE_ICONS.folder,
|
|
136
|
+
objectType: SystemType.FOLDER,
|
|
137
|
+
sots: [FS_SOTS.object]
|
|
147
138
|
},
|
|
148
|
-
|
|
139
|
+
file: {
|
|
140
|
+
id: `${APP_ID}.file`,
|
|
141
|
+
icon: APP_DRIVE_ICONS.file,
|
|
142
|
+
objectType: SystemType.DOCUMENT,
|
|
143
|
+
sots: [FS_SOTS.object]
|
|
144
|
+
}
|
|
149
145
|
};
|
|
150
146
|
const APP_ACTIONS = {
|
|
151
147
|
rename: 'app.drive.action.rename',
|
|
@@ -586,7 +582,7 @@ class DriveService {
|
|
|
586
582
|
data[BaseObjectTypeField.SECONDARY_OBJECT_TYPE_IDS] = [FS_SOTS.object];
|
|
587
583
|
if (parentID && parentID !== DRIVE_ROOT_FOLDER_ID)
|
|
588
584
|
data[BaseObjectTypeField.PARENT_ID] = parentID;
|
|
589
|
-
return this.#dmsService.createDmsObject(
|
|
585
|
+
return this.#dmsService.createDmsObject(APP_TYPES['folder'].objectType || '', data, []).pipe(map((res) => ({ id: res[0] })), catchError((e) => of({ error: this.#mapCreateError(e) })));
|
|
590
586
|
}
|
|
591
587
|
#mapCreateError(e) {
|
|
592
588
|
let error = 'default';
|
|
@@ -1285,15 +1281,15 @@ class SortComponent {
|
|
|
1285
1281
|
{{ option.label }}
|
|
1286
1282
|
</button>
|
|
1287
1283
|
@if (sortFields().length - 3 === $index) {
|
|
1288
|
-
<
|
|
1284
|
+
<mat-divider></mat-divider>
|
|
1289
1285
|
}
|
|
1290
1286
|
}
|
|
1291
1287
|
</mat-menu>
|
|
1292
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i2$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i2$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i2$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1288
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i2$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i2$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i2$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1293
1289
|
}
|
|
1294
1290
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: SortComponent, decorators: [{
|
|
1295
1291
|
type: Component,
|
|
1296
|
-
args: [{ selector: 'ymd-sort', standalone: true, imports: [MatIconModule, MatMenuModule, MatButtonModule, ReactiveFormsModule, TranslateModule], template: `
|
|
1292
|
+
args: [{ selector: 'ymd-sort', standalone: true, imports: [MatIconModule, MatMenuModule, MatButtonModule, ReactiveFormsModule, TranslateModule, MatDivider], template: `
|
|
1297
1293
|
<button mat-icon-button [matMenuTriggerFor]="menu" title="{{ 'yuv.app.drive.sort.tooltip' | translate }}">
|
|
1298
1294
|
<mat-icon>swap_vert</mat-icon>
|
|
1299
1295
|
</button>
|
|
@@ -1306,7 +1302,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImpo
|
|
|
1306
1302
|
{{ option.label }}
|
|
1307
1303
|
</button>
|
|
1308
1304
|
@if (sortFields().length - 3 === $index) {
|
|
1309
|
-
<
|
|
1305
|
+
<mat-divider></mat-divider>
|
|
1310
1306
|
}
|
|
1311
1307
|
}
|
|
1312
1308
|
</mat-menu>
|
|
@@ -1401,13 +1397,15 @@ class FolderTreeComponent {
|
|
|
1401
1397
|
this.#translate = inject(TranslateService);
|
|
1402
1398
|
this.#router = inject(Router);
|
|
1403
1399
|
this.#route = inject(ActivatedRoute);
|
|
1400
|
+
this.#shell = inject(ShellService);
|
|
1404
1401
|
this.tree = viewChild('tree');
|
|
1405
1402
|
this.treeNodePaddingIndent = 40;
|
|
1403
|
+
this.#app = this.#shell.getApp(APP_ID);
|
|
1406
1404
|
this.dataSource = [
|
|
1407
1405
|
{
|
|
1408
1406
|
id: 'mydrive',
|
|
1409
1407
|
name: this.#translate.instant('yuv.app.drive.folder-tree.mydrive'),
|
|
1410
|
-
icon:
|
|
1408
|
+
icon: this.#app?.iconName,
|
|
1411
1409
|
children: [
|
|
1412
1410
|
// {
|
|
1413
1411
|
// id: 'ymsq.ymd.recent.added',
|
|
@@ -1435,6 +1433,8 @@ class FolderTreeComponent {
|
|
|
1435
1433
|
#translate;
|
|
1436
1434
|
#router;
|
|
1437
1435
|
#route;
|
|
1436
|
+
#shell;
|
|
1437
|
+
#app;
|
|
1438
1438
|
ngAfterViewInit() {
|
|
1439
1439
|
const nodeToExpand = this.dataSource.find(({ id }) => id === 'mydrive');
|
|
1440
1440
|
nodeToExpand && this.tree()?.expandDescendants(nodeToExpand);
|
|
@@ -2085,8 +2085,8 @@ class ManageVersionsComponent {
|
|
|
2085
2085
|
object: o[0],
|
|
2086
2086
|
flavors: [
|
|
2087
2087
|
{
|
|
2088
|
-
id:
|
|
2089
|
-
icon:
|
|
2088
|
+
id: APP_TYPES['file']['id'],
|
|
2089
|
+
icon: APP_TYPES['file']['icon'],
|
|
2090
2090
|
sot: FS_SOTS.object
|
|
2091
2091
|
},
|
|
2092
2092
|
...this.#shell.getAppliedObjectFlavors(o[0]).applied
|
|
@@ -2171,20 +2171,24 @@ class DriveFrameComponent {
|
|
|
2171
2171
|
#router;
|
|
2172
2172
|
#route;
|
|
2173
2173
|
#drive;
|
|
2174
|
+
#shell;
|
|
2174
2175
|
#actionsService;
|
|
2175
2176
|
#destroyRef;
|
|
2177
|
+
#app;
|
|
2176
2178
|
#actions;
|
|
2177
2179
|
constructor() {
|
|
2178
2180
|
this.#router = inject(Router);
|
|
2179
2181
|
this.#route = inject(ActivatedRoute);
|
|
2180
2182
|
this.#drive = inject(DriveService);
|
|
2183
|
+
this.#shell = inject(ShellService);
|
|
2181
2184
|
this.#actionsService = inject(ActionsService);
|
|
2182
2185
|
this.#destroyRef = inject(DestroyRef);
|
|
2183
2186
|
this.query = this.#drive.state$.query;
|
|
2184
2187
|
this.currentFolder = this.#drive.state$.currentFolder;
|
|
2185
2188
|
this.busy = this.#drive.state$.busy;
|
|
2186
|
-
this
|
|
2187
|
-
this.
|
|
2189
|
+
this.#app = this.#shell.getApp(APP_ID);
|
|
2190
|
+
this.appName = this.#app?.title;
|
|
2191
|
+
this.appIcon = this.#app?.iconName;
|
|
2188
2192
|
this.headerNavItems = [
|
|
2189
2193
|
// TODO: enable again once favorite feature is implemented
|
|
2190
2194
|
// {
|
|
@@ -2236,13 +2240,56 @@ class DriveFrameComponent {
|
|
|
2236
2240
|
this.#actions.forEach((a) => this.#actionsService.concealActions([a.id]));
|
|
2237
2241
|
}
|
|
2238
2242
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: DriveFrameComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2239
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.12", type: DriveFrameComponent, isStandalone: true, selector: "ymd-drive", ngImport: i0, template: "<yuv-upload-progress (resultItemClick)=\"onUploadProgressResultItemClick($event)\"></yuv-upload-progress>\n\n<
|
|
2243
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.12", type: DriveFrameComponent, isStandalone: true, selector: "ymd-drive", ngImport: i0, template: "<yuv-upload-progress (resultItemClick)=\"onUploadProgressResultItemClick($event)\"></yuv-upload-progress>\n\n<ng-template yuvAppHeaderSlot=\"search\"><ymd-drive-search></ymd-drive-search></ng-template>\n<ng-template yuvAppHeaderSlot=\"actions\"> <yuv-overflow-menu [menuItems]=\"headerNavItems\"></yuv-overflow-menu></ng-template>\n\n\n\n<section class=\"drive-main__content\" [attr.aria-label]=\"'yuv.app.drive.content.aria.label' | translate\">\n <router-outlet></router-outlet>\n</section>\n\n<router-outlet name=\"modal\"></router-outlet>\n", styles: [":host{display:flex;flex-flow:column;height:100%}:host .drive-main__content{flex:1;overflow-y:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$3.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: OverflowMenuComponent, selector: "yuv-overflow-menu", inputs: ["overflowIcon", "groupLabels", "menuItems", "vertical"] }, { kind: "ngmodule", type: YuvClientShellModule }, { kind: "directive", type: i2$5.YuvAppHeaderSlotDirective, selector: "ng-template[yuvAppHeaderSlot]", inputs: ["yuvAppHeaderSlot"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: UploadProgressComponent, selector: "yuv-upload-progress", outputs: ["resultItemClick"] }, { kind: "component", type: DriveSearchComponent, selector: "ymd-drive-search" }] }); }
|
|
2240
2244
|
}
|
|
2241
2245
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: DriveFrameComponent, decorators: [{
|
|
2242
2246
|
type: Component,
|
|
2243
|
-
args: [{ selector: 'ymd-drive', standalone: true, imports: [
|
|
2247
|
+
args: [{ selector: 'ymd-drive', standalone: true, imports: [
|
|
2248
|
+
CommonModule,
|
|
2249
|
+
RouterModule,
|
|
2250
|
+
OverflowMenuComponent,
|
|
2251
|
+
YuvClientShellModule,
|
|
2252
|
+
ReactiveFormsModule,
|
|
2253
|
+
TranslateModule,
|
|
2254
|
+
UploadProgressComponent,
|
|
2255
|
+
DriveSearchComponent
|
|
2256
|
+
], template: "<yuv-upload-progress (resultItemClick)=\"onUploadProgressResultItemClick($event)\"></yuv-upload-progress>\n\n<ng-template yuvAppHeaderSlot=\"search\"><ymd-drive-search></ymd-drive-search></ng-template>\n<ng-template yuvAppHeaderSlot=\"actions\"> <yuv-overflow-menu [menuItems]=\"headerNavItems\"></yuv-overflow-menu></ng-template>\n\n\n\n<section class=\"drive-main__content\" [attr.aria-label]=\"'yuv.app.drive.content.aria.label' | translate\">\n <router-outlet></router-outlet>\n</section>\n\n<router-outlet name=\"modal\"></router-outlet>\n", styles: [":host{display:flex;flex-flow:column;height:100%}:host .drive-main__content{flex:1;overflow-y:hidden}\n"] }]
|
|
2244
2257
|
}], ctorParameters: () => [] });
|
|
2245
2258
|
|
|
2259
|
+
class FolderDetailsDialogComponent {
|
|
2260
|
+
constructor() {
|
|
2261
|
+
this.#shell = inject(ShellService);
|
|
2262
|
+
this.#folder = inject(MAT_DIALOG_DATA);
|
|
2263
|
+
this.#dialogRef = inject((MatDialogRef));
|
|
2264
|
+
this.folderName = this.#folder.data[FS_PROPERTIES.name];
|
|
2265
|
+
this.formState = signal(undefined);
|
|
2266
|
+
this.flavoredDmsObject = computed(() => this.#folder
|
|
2267
|
+
? {
|
|
2268
|
+
object: this.#folder,
|
|
2269
|
+
flavors: [...this.#shell.getAppliedObjectFlavors(this.#folder).applied]
|
|
2270
|
+
}
|
|
2271
|
+
: undefined);
|
|
2272
|
+
}
|
|
2273
|
+
#shell;
|
|
2274
|
+
#folder;
|
|
2275
|
+
#dialogRef;
|
|
2276
|
+
onMetadataStatusChanged(formState) {
|
|
2277
|
+
this.formState.set(formState);
|
|
2278
|
+
}
|
|
2279
|
+
onIndexdataSaved(updatedObject) {
|
|
2280
|
+
this.close();
|
|
2281
|
+
}
|
|
2282
|
+
close() {
|
|
2283
|
+
this.#dialogRef.close();
|
|
2284
|
+
}
|
|
2285
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: FolderDetailsDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2286
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.12", type: FolderDetailsDialogComponent, isStandalone: true, selector: "ymd-folder-details-dialog", ngImport: i0, template: "<yuv-dialog [headertitel]=\"folderName\">\n <main [yuvBusyOverlay]=\"metadata.busy()\">\n <yuv-object-metadata\n [flavoredDmsObject]=\"flavoredDmsObject()\"\n #metadata\n [disableControls]=\"true\"\n (statusChanged)=\"onMetadataStatusChanged($event)\"\n (indexDataSaved)=\"onIndexdataSaved($event)\"\n >\n </yuv-object-metadata>\n </main>\n <footer>\n <button ymtButton=\"secondary\" type=\"button\" (click)=\"close()\" [disabled]=\"metadata.busy()\">\n {{ 'yuv.app.drive.action.rename.cancel' | translate }}\n </button>\n <button ymtButton=\"secondary\" (click)=\"metadata.resetForm()\" [hidden]=\"!formState()?.dirty\" [disabled]=\"!formState()?.dirty\">\n {{ 'yuv.object-metadata.button.reset' | translate }}\n </button>\n <button\n ymtButton=\"primary\"\n class=\"primary\"\n [ngClass]=\"{ spinning: metadata.busy() }\"\n (click)=\"metadata.save()\"\n [disabled]=\"!formState()?.dirty || formState()?.invalid\"\n >\n {{ 'yuv.object-metadata.button.save' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n", styles: [":host main{overflow-y:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: DialogComponent, selector: "yuv-dialog", inputs: ["headertitel"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: ObjectMetadataComponent, selector: "yuv-object-metadata", inputs: ["disableControls", "situation", "formDisabled", "dmsObject", "flavoredDmsObject"], outputs: ["indexDataSaved", "statusChanged"] }, { kind: "directive", type: BusyOverlayDirective, selector: "[yuvBusyOverlay]", inputs: ["yuvBusyOverlay"] }, { kind: "directive", type: YmtButtonDirective, selector: "button[ymtButton], a[ymtButton]", inputs: ["ymtButton", "disabled", "aria-disabled", "disableRipple", "disabledInteractive", "button-size"] }] }); }
|
|
2287
|
+
}
|
|
2288
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: FolderDetailsDialogComponent, decorators: [{
|
|
2289
|
+
type: Component,
|
|
2290
|
+
args: [{ selector: 'ymd-folder-details-dialog', imports: [CommonModule, DialogComponent, TranslateModule, ObjectMetadataComponent, BusyOverlayDirective, YmtButtonDirective], template: "<yuv-dialog [headertitel]=\"folderName\">\n <main [yuvBusyOverlay]=\"metadata.busy()\">\n <yuv-object-metadata\n [flavoredDmsObject]=\"flavoredDmsObject()\"\n #metadata\n [disableControls]=\"true\"\n (statusChanged)=\"onMetadataStatusChanged($event)\"\n (indexDataSaved)=\"onIndexdataSaved($event)\"\n >\n </yuv-object-metadata>\n </main>\n <footer>\n <button ymtButton=\"secondary\" type=\"button\" (click)=\"close()\" [disabled]=\"metadata.busy()\">\n {{ 'yuv.app.drive.action.rename.cancel' | translate }}\n </button>\n <button ymtButton=\"secondary\" (click)=\"metadata.resetForm()\" [hidden]=\"!formState()?.dirty\" [disabled]=\"!formState()?.dirty\">\n {{ 'yuv.object-metadata.button.reset' | translate }}\n </button>\n <button\n ymtButton=\"primary\"\n class=\"primary\"\n [ngClass]=\"{ spinning: metadata.busy() }\"\n (click)=\"metadata.save()\"\n [disabled]=\"!formState()?.dirty || formState()?.invalid\"\n >\n {{ 'yuv.object-metadata.button.save' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n", styles: [":host main{overflow-y:auto}\n"] }]
|
|
2291
|
+
}] });
|
|
2292
|
+
|
|
2246
2293
|
class RibbonComponent {
|
|
2247
2294
|
#drive;
|
|
2248
2295
|
#clipboard;
|
|
@@ -2324,7 +2371,7 @@ class RibbonComponent {
|
|
|
2324
2371
|
];
|
|
2325
2372
|
}
|
|
2326
2373
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: RibbonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2327
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.12", type: RibbonComponent, isStandalone: true, selector: "ymd-ribbon", inputs: { busy: { classPropertyName: "busy", publicName: "busy", isSignal: true, isRequired: false, transformFunction: null }, enableClipboard: { classPropertyName: "enableClipboard", publicName: "enableClipboard", isSignal: true, isRequired: false, transformFunction: null }, objects: { classPropertyName: "objects", publicName: "objects", isSignal: true, isRequired: false, transformFunction: null }, excludeActions: { classPropertyName: "excludeActions", publicName: "excludeActions", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "ymd-ribbon" }, queries: [{ propertyName: "primarySlot", first: true, predicate: ["primaryActions"], descendants: true, isSignal: true }, { propertyName: "secondarySlot", first: true, predicate: ["secondaryActions"], descendants: true, isSignal: true }], ngImport: i0, template: "@let primary = primarySlot();\n@let secondary = secondarySlot();\n\n@if (primary) {\n <div class=\"primary-actions\">\n <ng-container [ngTemplateOutlet]=\"primary\"></ng-container>\n </div>\n}\n\n<div class=\"object-actions\">\n @if (enableClipboard()) {\n <yuv-clipboard class=\"dark\" [bucket]=\"clipboardBucket\" [enablePaste]=\"true\" (paste)=\"onClipboardPaste()\"></yuv-clipboard>\n }\n <yuv-overflow-menu [menuItems]=\"menuItems\"></yuv-overflow-menu>\n</div>\n\n@if (secondary) {\n <div class=\"secondary-actions\">\n <ng-container [ngTemplateOutlet]=\"secondary\"></ng-container>\n </div>\n}\n\n@if (busy()) {\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n}\n", styles: ["ymd-ribbon{--ribbon-button-padding: var(--ymt-spacing-2xs);--ribbon-button-border-radius: 2px;--ribbon-button-gap: var(--ymt-spacing-2xs);--ribbon-icon-size: 20px;flex:0 0 auto;display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:\"primary actions secondary\";align-items:center;gap:var(--ymt-spacing-xs);border-block-end:1px solid var(--ymt-outline-variant);position:relative;padding:var(--ymt-spacing-xs) var(--ymt-spacing-s)}ymd-ribbon .primary-actions{grid-area:primary;overflow-x:auto;overflow-y:hidden}ymd-ribbon .secondary-actions{grid-area:secondary;overflow-x:auto;overflow-y:hidden}ymd-ribbon .object-actions{grid-area:actions;align-self:stretch;overflow-x:auto;border-color:var(--ymt-outline-variant);border-width:0 1px 0 1px;border-style:solid;display:grid;grid-template-rows:1fr;grid-template-columns:1fr;align-items:center;padding-inline:var(--ymt-spacing-xs) 0;position:relative}ymd-ribbon .object-actions yuv-clipboard{z-index:1;position:absolute;inset:0;left:var(--ymt-spacing-xs);right:var(--ymt-spacing-xs)}ymd-ribbon .object-actions ymd-sort{grid-row:1;grid-column:1}ymd-ribbon .sort-column{grid-area:sort;display:flex;align-items:center;gap:var(--ribbon-button-gap);padding:0 var(--ribbon-button-padding)}ymd-ribbon .progress-bar{position:absolute;bottom:-1px}ymd-ribbon .progress-bar{--mdc-linear-progress-active-indicator-height: 2px}ymd-ribbon .progress-bar{--mdc-linear-progress-track-height: 2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ClipboardComponent, selector: "yuv-clipboard", inputs: ["enablePaste", "bucket"], outputs: ["paste"] }, { kind: "component", type: OverflowMenuComponent, selector: "yuv-overflow-menu", inputs: ["overflowIcon", "groupLabels", "menuItems"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
2374
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.12", type: RibbonComponent, isStandalone: true, selector: "ymd-ribbon", inputs: { busy: { classPropertyName: "busy", publicName: "busy", isSignal: true, isRequired: false, transformFunction: null }, enableClipboard: { classPropertyName: "enableClipboard", publicName: "enableClipboard", isSignal: true, isRequired: false, transformFunction: null }, objects: { classPropertyName: "objects", publicName: "objects", isSignal: true, isRequired: false, transformFunction: null }, excludeActions: { classPropertyName: "excludeActions", publicName: "excludeActions", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "ymd-ribbon" }, queries: [{ propertyName: "primarySlot", first: true, predicate: ["primaryActions"], descendants: true, isSignal: true }, { propertyName: "secondarySlot", first: true, predicate: ["secondaryActions"], descendants: true, isSignal: true }], ngImport: i0, template: "@let primary = primarySlot();\n@let secondary = secondarySlot();\n\n@if (primary) {\n <div class=\"primary-actions\">\n <ng-container [ngTemplateOutlet]=\"primary\"></ng-container>\n </div>\n}\n\n<div class=\"object-actions\">\n @if (enableClipboard()) {\n <yuv-clipboard class=\"dark\" [bucket]=\"clipboardBucket\" [enablePaste]=\"true\" (paste)=\"onClipboardPaste()\"></yuv-clipboard>\n }\n <yuv-overflow-menu [menuItems]=\"menuItems\"></yuv-overflow-menu>\n</div>\n\n@if (secondary) {\n <div class=\"secondary-actions\">\n <ng-container [ngTemplateOutlet]=\"secondary\"></ng-container>\n </div>\n}\n\n@if (busy()) {\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n}\n", styles: ["ymd-ribbon{--ribbon-button-padding: var(--ymt-spacing-2xs);--ribbon-button-border-radius: 2px;--ribbon-button-gap: var(--ymt-spacing-2xs);--ribbon-icon-size: 20px;flex:0 0 auto;display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:\"primary actions secondary\";align-items:center;gap:var(--ymt-spacing-xs);border-block-end:1px solid var(--ymt-outline-variant);position:relative;padding:var(--ymt-spacing-xs) var(--ymt-spacing-s)}ymd-ribbon .primary-actions{grid-area:primary;overflow-x:auto;overflow-y:hidden}ymd-ribbon .secondary-actions{grid-area:secondary;overflow-x:auto;overflow-y:hidden}ymd-ribbon .object-actions{grid-area:actions;align-self:stretch;overflow-x:auto;border-color:var(--ymt-outline-variant);border-width:0 1px 0 1px;border-style:solid;display:grid;grid-template-rows:1fr;grid-template-columns:1fr;align-items:center;padding-inline:var(--ymt-spacing-xs) 0;position:relative}ymd-ribbon .object-actions yuv-clipboard{z-index:1;position:absolute;inset:0;left:var(--ymt-spacing-xs);right:var(--ymt-spacing-xs)}ymd-ribbon .object-actions ymd-sort{grid-row:1;grid-column:1}ymd-ribbon .sort-column{grid-area:sort;display:flex;align-items:center;gap:var(--ribbon-button-gap);padding:0 var(--ribbon-button-padding)}ymd-ribbon .progress-bar{position:absolute;bottom:-1px}ymd-ribbon .progress-bar{--mdc-linear-progress-active-indicator-height: 2px}ymd-ribbon .progress-bar{--mdc-linear-progress-track-height: 2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ClipboardComponent, selector: "yuv-clipboard", inputs: ["enablePaste", "bucket"], outputs: ["paste"] }, { kind: "component", type: OverflowMenuComponent, selector: "yuv-overflow-menu", inputs: ["overflowIcon", "groupLabels", "menuItems", "vertical"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
2328
2375
|
}
|
|
2329
2376
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: RibbonComponent, decorators: [{
|
|
2330
2377
|
type: Component,
|
|
@@ -2474,40 +2521,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImpo
|
|
|
2474
2521
|
}]
|
|
2475
2522
|
}] });
|
|
2476
2523
|
|
|
2477
|
-
class FolderDetailsDialogComponent {
|
|
2478
|
-
constructor() {
|
|
2479
|
-
this.#shell = inject(ShellService);
|
|
2480
|
-
this.#folder = inject(MAT_DIALOG_DATA);
|
|
2481
|
-
this.#dialogRef = inject((MatDialogRef));
|
|
2482
|
-
this.folderName = this.#folder.data[FS_PROPERTIES.name];
|
|
2483
|
-
this.formState = signal(undefined);
|
|
2484
|
-
this.flavoredDmsObject = computed(() => this.#folder
|
|
2485
|
-
? {
|
|
2486
|
-
object: this.#folder,
|
|
2487
|
-
flavors: [...this.#shell.getAppliedObjectFlavors(this.#folder).applied]
|
|
2488
|
-
}
|
|
2489
|
-
: undefined);
|
|
2490
|
-
}
|
|
2491
|
-
#shell;
|
|
2492
|
-
#folder;
|
|
2493
|
-
#dialogRef;
|
|
2494
|
-
onMetadataStatusChanged(formState) {
|
|
2495
|
-
this.formState.set(formState);
|
|
2496
|
-
}
|
|
2497
|
-
onIndexdataSaved(updatedObject) {
|
|
2498
|
-
this.close();
|
|
2499
|
-
}
|
|
2500
|
-
close() {
|
|
2501
|
-
this.#dialogRef.close();
|
|
2502
|
-
}
|
|
2503
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: FolderDetailsDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2504
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.12", type: FolderDetailsDialogComponent, isStandalone: true, selector: "ymd-folder-details-dialog", ngImport: i0, template: "<yuv-dialog [headertitel]=\"folderName\">\n <main [yuvBusyOverlay]=\"metadata.busy()\">\n <yuv-object-metadata\n [flavoredDmsObject]=\"flavoredDmsObject()\"\n #metadata\n [disableControls]=\"true\"\n (statusChanged)=\"onMetadataStatusChanged($event)\"\n (indexDataSaved)=\"onIndexdataSaved($event)\"\n >\n </yuv-object-metadata>\n </main>\n <footer>\n <button ymtButton=\"secondary\" type=\"button\" (click)=\"close()\" [disabled]=\"metadata.busy()\">\n {{ 'yuv.app.drive.action.rename.cancel' | translate }}\n </button>\n <button ymtButton=\"secondary\" (click)=\"metadata.resetForm()\" [hidden]=\"!formState()?.dirty\" [disabled]=\"!formState()?.dirty\">\n {{ 'yuv.object-metadata.button.reset' | translate }}\n </button>\n <button\n ymtButton=\"primary\"\n class=\"primary\"\n [ngClass]=\"{ spinning: metadata.busy() }\"\n (click)=\"metadata.save()\"\n [disabled]=\"!formState()?.dirty || formState()?.invalid\"\n >\n {{ 'yuv.object-metadata.button.save' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n", styles: [":host main{overflow-y:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: DialogComponent, selector: "yuv-dialog", inputs: ["headertitel"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: ObjectMetadataComponent, selector: "yuv-object-metadata", inputs: ["disableControls", "situation", "formDisabled", "dmsObject", "flavoredDmsObject"], outputs: ["indexDataSaved", "statusChanged"] }, { kind: "directive", type: BusyOverlayDirective, selector: "[yuvBusyOverlay]", inputs: ["yuvBusyOverlay"] }, { kind: "directive", type: YmtButtonDirective, selector: "button[ymtButton], a[ymtButton]", inputs: ["ymtButton", "disabled", "aria-disabled", "disableRipple", "disabledInteractive", "button-size"] }] }); }
|
|
2505
|
-
}
|
|
2506
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: FolderDetailsDialogComponent, decorators: [{
|
|
2507
|
-
type: Component,
|
|
2508
|
-
args: [{ selector: 'ymd-folder-details-dialog', imports: [CommonModule, DialogComponent, TranslateModule, ObjectMetadataComponent, BusyOverlayDirective, YmtButtonDirective], template: "<yuv-dialog [headertitel]=\"folderName\">\n <main [yuvBusyOverlay]=\"metadata.busy()\">\n <yuv-object-metadata\n [flavoredDmsObject]=\"flavoredDmsObject()\"\n #metadata\n [disableControls]=\"true\"\n (statusChanged)=\"onMetadataStatusChanged($event)\"\n (indexDataSaved)=\"onIndexdataSaved($event)\"\n >\n </yuv-object-metadata>\n </main>\n <footer>\n <button ymtButton=\"secondary\" type=\"button\" (click)=\"close()\" [disabled]=\"metadata.busy()\">\n {{ 'yuv.app.drive.action.rename.cancel' | translate }}\n </button>\n <button ymtButton=\"secondary\" (click)=\"metadata.resetForm()\" [hidden]=\"!formState()?.dirty\" [disabled]=\"!formState()?.dirty\">\n {{ 'yuv.object-metadata.button.reset' | translate }}\n </button>\n <button\n ymtButton=\"primary\"\n class=\"primary\"\n [ngClass]=\"{ spinning: metadata.busy() }\"\n (click)=\"metadata.save()\"\n [disabled]=\"!formState()?.dirty || formState()?.invalid\"\n >\n {{ 'yuv.object-metadata.button.save' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n", styles: [":host main{overflow-y:auto}\n"] }]
|
|
2509
|
-
}] });
|
|
2510
|
-
|
|
2511
2524
|
const components = [
|
|
2512
2525
|
TileListComponent,
|
|
2513
2526
|
BreadcrumbComponent,
|
|
@@ -2519,12 +2532,11 @@ const components = [
|
|
|
2519
2532
|
MultiObjectSummaryComponent,
|
|
2520
2533
|
SortComponent,
|
|
2521
2534
|
SearchFilterComponent,
|
|
2522
|
-
DriveSearchComponent,
|
|
2523
2535
|
MatTooltipModule,
|
|
2524
2536
|
MatIconButton,
|
|
2525
2537
|
MatIcon
|
|
2526
2538
|
];
|
|
2527
|
-
const module = [TranslateModule, RouterModule, YuvSplitViewModule];
|
|
2539
|
+
const module = [TranslateModule, RouterModule, YuvSplitViewModule, YuvClientShellModule];
|
|
2528
2540
|
class FilesPageComponent {
|
|
2529
2541
|
#LAYOUT_SETTINGS_STORAGE_KEY;
|
|
2530
2542
|
#objectConfigService;
|
|
@@ -2561,7 +2573,7 @@ class FilesPageComponent {
|
|
|
2561
2573
|
INVALID_ID: '422-2912'
|
|
2562
2574
|
};
|
|
2563
2575
|
this.#appCache = inject(AppCacheService);
|
|
2564
|
-
this.objectConfigBucket =
|
|
2576
|
+
this.objectConfigBucket = APP_ID;
|
|
2565
2577
|
this.splitViewCmp = viewChild.required(SplitViewComponent);
|
|
2566
2578
|
this.selected = signal(undefined);
|
|
2567
2579
|
this.#editAction = {
|
|
@@ -2609,8 +2621,8 @@ class FilesPageComponent {
|
|
|
2609
2621
|
// to determine a proper error message to display
|
|
2610
2622
|
this.error = signal(undefined);
|
|
2611
2623
|
this.configTypeOptions = {
|
|
2612
|
-
folder: { bucket: APP_ID, type:
|
|
2613
|
-
file: { bucket: APP_ID, type:
|
|
2624
|
+
folder: { bucket: APP_ID, type: APP_TYPES['folder'] },
|
|
2625
|
+
file: { bucket: APP_ID, type: APP_TYPES['file'] }
|
|
2614
2626
|
};
|
|
2615
2627
|
this.enableDetails = signal(true);
|
|
2616
2628
|
this.enableTree = signal(true);
|
|
@@ -2666,17 +2678,8 @@ class FilesPageComponent {
|
|
|
2666
2678
|
});
|
|
2667
2679
|
this.tileListOptions = {
|
|
2668
2680
|
actionContext: ACTION_CONTEXT,
|
|
2669
|
-
configTypes: Object.values(
|
|
2670
|
-
configFlavors: [
|
|
2671
|
-
// ...this.shellService.getObjectFlavors(),
|
|
2672
|
-
...APP_SCHEMA.flavors
|
|
2673
|
-
.filter((f) => !f.applicableTo)
|
|
2674
|
-
.map((f) => ({
|
|
2675
|
-
...f,
|
|
2676
|
-
app: APP_ID,
|
|
2677
|
-
origin: 'app'
|
|
2678
|
-
}))
|
|
2679
|
-
]
|
|
2681
|
+
configTypes: Object.values(APP_TYPES),
|
|
2682
|
+
configFlavors: []
|
|
2680
2683
|
};
|
|
2681
2684
|
this.query = this.drive.state$.query;
|
|
2682
2685
|
this.queryTitle = this.drive.state$.queryTitle;
|
|
@@ -2880,13 +2883,13 @@ class FilesPageComponent {
|
|
|
2880
2883
|
this.clipboard.clear(APP_ID);
|
|
2881
2884
|
}
|
|
2882
2885
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: FilesPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2883
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.12", type: FilesPageComponent, isStandalone: true, selector: "ymd-files", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.smallScreen": "smallScreenLayout()" } }, viewQueries: [{ propertyName: "tileList", first: true, predicate: ["tileList"], descendants: true, isSignal: true }, { propertyName: "splitViewCmp", first: true, predicate: SplitViewComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<header>\n <!-- navigation bar -->\n <nav [attr.aria-label]=\"'yuv.app.drive.files.naviagtion.aria.label' | translate\">\n <div class=\"nav\">\n <button mat-icon-button [disabled]=\"!currentFolder\" [matTooltip]=\"'yuv.app.drive.files.nav.back.tooltip' | translate\" (click)=\"openParent()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n <button mat-icon-button [matTooltip]=\"'yuv.app.drive.files.nav.refresh.tooltip' | translate\" (click)=\"refresh()\">\n <mat-icon>refresh</mat-icon>\n </button>\n </div>\n\n @if (!query()?.term) {\n <ymd-breadcrumb></ymd-breadcrumb>\n } @else {\n <div class=\"breadcrumb\"></div>\n }\n <div class=\"search\">\n <ymd-drive-search></ymd-drive-search>\n </div>\n </nav>\n\n <!-- ribbon with actions and options -->\n <ymd-ribbon [objects]=\"selection()\" [busy]=\"busy()\" [enableClipboard]=\"true\" class=\"files__surface\">\n <ng-template #primaryActions>\n <ymd-add-button [disabled]=\"disableCreate\"></ymd-add-button>\n </ng-template>\n\n <ng-template #secondaryActions>\n <div class=\"options\">\n @if (!smallScreenLayout()) {\n <button\n mat-icon-button\n class=\"toggle-tree toggle\"\n [ngClass]=\"{ enabled: enableTree() }\"\n [matTooltip]=\"'yuv.app.drive.files.toggletree.tooltip' | translate\"\n (click)=\"enableTree.set(!enableTree())\"\n >\n <mat-icon>dock_to_right</mat-icon>\n </button>\n <button\n mat-icon-button\n class=\"toggle-details toggle\"\n [ngClass]=\"{ enabled: enableDetails() }\"\n [matTooltip]=\"'yuv.app.drive.files.toggledetails.tooltip' | translate\"\n (click)=\"enableDetails.set(!enableDetails())\"\n >\n <mat-icon>dock_to_left</mat-icon>\n </button>\n }\n <yuv-tile-config-trigger [bucket]=\"objectConfigBucket\" [bucketLabel]=\"tileConfigBucketLabel\" [options]=\"tileListOptions\"></yuv-tile-config-trigger>\n </div>\n </ng-template>\n </ymd-ribbon>\n</header>\n\n<yuv-split-view [gutterSize]=\"1\" (layoutSettingsChange)=\"onLayoutSettingsChange($event)\" class=\"files__surface\">\n <!-- folder tree -->\n <ng-template yuvSplitArea [size]=\"20\" [visible]=\"enableTree() && !smallScreenLayout()\">\n <ymd-folder-tree></ymd-folder-tree>\n </ng-template>\n\n <!-- files -->\n <ng-template yuvSplitArea [size]=\"60\">\n @let err = error();\n @if (err) {\n <div class=\"error\">\n <p>\n <mat-icon>warning</mat-icon>\n @switch (err) {\n @case (ERROR_CODE.NOT_FOUND) {\n {{ 'yuv.app.drive.files.error.load.not-found' | translate }}\n }\n @case (ERROR_CODE.INVALID_ID) {\n {{ 'yuv.app.drive.files.error.load.invalid-id' | translate }}\n }\n @default {\n {{ 'yuv.app.drive.files.error.load' | translate }}\n }\n }\n </p>\n </div>\n } @else {\n <div class=\"files\" [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.label' | translate }\" (fileDrop)=\"onFileDrop($event)\">\n <header class=\"files-header\">\n <h1>{{ queryTitle() }}</h1>\n @if (sortOptionsAvailable()) {\n <ymd-sort />\n }\n <!-- <div class=\"flavors\">\n TODO: enable again once flavors/aspects are supported -->\n <!-- @for (f of flavorChips; track f.id) {\n <yuv-flavor-chip [ngClass]=\"{ active: f.id === appliedFlavor?.id }\" [flavor]=\"f\" (click)=\"appliedFlavor = f\"></yuv-flavor-chip>\n }\n </div>-->\n @if (query()?.term && !extendedQuery()) {\n <ymd-search-filter [query]=\"query()\" (queryChange)=\"onFilterQueryChange($event)\"></ymd-search-filter>\n }\n\n </header>\n <yuv-tile-list\n #tileList\n class=\"staggered\"\n [attr.aria-label]=\"'yuv.app.drive.files.content.aria.label' | translate\"\n [attr.aria-busy]=\"busy()\"\n [attr.role]=\"'listbox'\"\n (keydown.backspace)=\"openParent()\"\n (keydown.delete)=\"onDelete()\"\n [bucket]=\"objectConfigBucket\"\n [multiselect]=\"true\"\n [query]=\"query()\"\n [flavor]=\"appliedFlavor\"\n [options]=\"tileListOptions\"\n (itemDblClick)=\"itemDoubleClicked($event)\"\n (itemSelect)=\"itemClicked($event)\"\n (selectionChange)=\"selectionChanged($event)\"\n (tileCopy)=\"onCopy($event)\"\n (tileCut)=\"onCut($event)\"\n (busy)=\"setBusy($event)\"\n [highlights]=\"highlightStyles$ | async\"\n [yuvContextMenuTrigger]=\"context_menu\"\n [yuvContextMenuTriggerWhen]=\"hasActions()\"\n >\n <div #empty>\n @if (emptyMode() === 'root') {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.root.list' | translate }}</p>\n } @else if (emptyMode() === 'query') {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.query.list' | translate }}</p>\n } @else {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.list' | translate }}</p>\n }\n </div>\n\n <ng-template #context_menu>\n <yuv-contextmenu\n [actions]=\"actions()\"\n (itemSelect)=\"onContextmenuAction($event)\"\n ></yuv-contextmenu>\n </ng-template>\n\n </yuv-tile-list>\n </div>\n }\n </ng-template>\n\n <!-- details -->\n <ng-template yuvSplitArea [size]=\"20\" [visible]=\"enableDetails()\">\n @let selectedItem = selected();\n @if (enableDetails() && selectedItem) {\n @if (selectedItem?.isFolder) {\n <yuv-object-summary [actions]=\"summaryActions()\" [configType]=\"configTypeOptions['folder']\" [dmsObject]=\"selectedItem\"></yuv-object-summary>\n } @else {\n <yuv-object-summary\n [actions]=\"summaryActions()\"\n [configType]=\"configTypeOptions['file']\"\n [dmsObject]=\"selectedItem\"\n [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.content.replace.label' | translate }\"\n [fileDropDisabled]=\"fileDropSummaryDisabled()\"\n (fileDrop)=\"onFileUpdateDrop($event)\"\n ></yuv-object-summary>\n }\n } @else {\n @let sel = selection();\n @if (sel && sel.length > 0) {\n <yuv-multi-object-summary [headline]=\"'yuv.app.drive.multiselected.details' | translate: { count: selection().length }\"></yuv-multi-object-summary>\n } @else if (tileList()?.items?.length === 0) {\n <!-- TODO: CHOULD HAVE A DIFFERENT MESSAGE FOR EMPTY RESULTS EMPTY FOR NOW -->\n <div class=\"message\">{{ 'yuv.app.drive.empty.results.details.message' | translate }}</div>\n } @else {\n <div class=\"message\">{{ 'yuv.app.drive.unselected.details' | translate }}</div>\n }\n }\n </ng-template>\n</yuv-split-view>\n", styles: [":host{height:100%;overflow:hidden;display:flex;flex-flow:column}:host header{flex:0 0 auto}:host header>nav{border-block-end:1px solid var(--ymt-outline-variant);display:grid;grid-template-columns:auto 1fr 1fr auto;align-items:center;gap:var(--ymt-spacing-xs);padding:var(--ymt-spacing-2xs) var(--ymt-spacing-s) var(--ymt-spacing-s) var(--ymt-spacing-s);min-height:40px}:host header>nav .nav{grid-column:1/2;grid-row:1;display:flex;border-inline-end:1px solid var(--ymt-outline-variant);padding-inline-end:var(--ymt-spacing-xs);gap:var(--ymt-spacing-3xs);margin-bottom:calc(var(--ymt-spacing-s) * -1)}:host header>nav .breadcrumb{grid-column:2/4;grid-row:1;display:flex;margin-bottom:calc(var(--ymt-spacing-s) * -1)}:host header>nav .search{grid-column:-1/-2;grid-row:1;z-index:1}:host yuv-split-view{--split-gutter-background-color: var(--ymt-outline-variant);flex:1;animation:fade-in .3s ease-in-out}:host main{height:100%;overflow:hidden;display:flex;flex-flow:column}:host .error{display:grid;justify-items:center;align-items:center;height:100%;padding:0 2rem;text-align:center;color:var(--ymt-text-color-subtle)}:host .error p{max-width:31ch;line-height:1.5em;display:grid;justify-items:center}:host .error p mat-icon{display:block;margin-block-end:1rem}:host .files{display:flex;flex-flow:column;overflow:hidden;height:100%}:host .files header{flex:0 0 auto;padding:var(--ymt-spacing-l) var(--ymt-spacing-l) var(--ymt-spacing-s) var(--ymt-spacing-l);display:grid;grid-template-columns:1fr;gap:var(--ymt-spacing-3xs);grid-template-areas:\"title sort\" \"flavors flavors\" \"searchfilter searchfilter\"}:host .files header h1{grid-area:title;margin:0;height:min-content}:host .files header .flavors{grid-area:flavors;display:flex;gap:2px;justify-content:flex-end;padding:var(--ymt-spacing-2xs)}:host .files header .flavors yuv-flavor-chip{font:var(--ymt-font-body-subtle);cursor:pointer;--flavor-background: var(--ymt-surface-panel);--flavor-icon-size: 16px}:host .files header .flavors yuv-flavor-chip:hover{--flavor-border-color: var(--ymt-primary)}:host .files header ymd-sort{grid-area:sort}:host .files header ymd-search-filter{grid-area:searchfilter}:host .files yuv-tile-list{--ymt-scrollbar-outer-size: 0;display:flex;flex-direction:column;overflow-y:auto}:host .message{display:grid;justify-items:center;align-items:center;height:100%;padding:0 var(--ymt-spacing-3xl);text-align:center;color:var(--ymt-text-color-subtle)}:host .message p{max-width:31ch;line-height:1.5em}:host yuv-split-view{--split-gutter-background-color: var(--ymt-outline-variant);display:flex;height:100%;box-sizing:border-box}:host ymd-folder-tree{padding:var(--ymt-spacing-l) var(--ymt-spacing-m);min-width:300px}:host ymd-folder-tree,:host yuv-object-summary{height:100%;overflow-y:auto;display:block}:host yuv-tile-list{--tile-border: 1px solid var(--ymt-outline-variant);--tile-border-width: 0 0 1px 0;--tile-icon-size: 18px;--tile-action-icon-size: 18px;--paging-background: var(--ymt-surface-panel)}:host p.empty{color:var(--ymt-text-color-subtle)}:host .details{height:100%}:host .details yuv-object-details{height:100%}:host.smallScreen yuv-tile-list{--tile-padding: var(--ymt-spacing-m) !important}@keyframes fade-in{0%{opacity:0}}.files__surface{background-color:var(--ymt-surface)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: YuvSplitViewModule }, { kind: "directive", type: i1$2.SplitAreaDirective, selector: "[yuvSplitArea]", inputs: ["size", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "component", type: i1$2.SplitViewComponent, selector: "yuv-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "component", type: TileListComponent, selector: "yuv-tile-list", inputs: ["bucket", "multiselect", "options", "flavor", "query", "preselect", "highlights"], outputs: ["itemSelect", "tileCopy", "tileCut", "busy", "queryResult", "selectionChange", "itemDblClick", "ctxMenu"] }, { kind: "component", type: BreadcrumbComponent, selector: "ymd-breadcrumb" }, { kind: "component", type: FolderTreeComponent, selector: "ymd-folder-tree" }, { kind: "component", type: ObjectSummaryComponent, selector: "yuv-object-summary", inputs: ["actions", "dmsObject", "objectId", "configType"] }, { kind: "component", type: TileConfigTriggerComponent, selector: "yuv-tile-config-trigger", inputs: ["icon", "bucket", "bucketLabel", "options"] }, { kind: "component", type: RibbonComponent, selector: "ymd-ribbon", inputs: ["busy", "enableClipboard", "objects", "excludeActions"] }, { kind: "component", type: AddButtonComponent, selector: "ymd-add-button", inputs: ["disabled"] }, { kind: "component", type: MultiObjectSummaryComponent, selector: "yuv-multi-object-summary", inputs: ["headline"] }, { kind: "component", type: SortComponent, selector: "ymd-sort", outputs: ["sortChanged"] }, { kind: "component", type: SearchFilterComponent, selector: "ymd-search-filter", inputs: ["query"], outputs: ["queryChange"] }, { kind: "component", type: DriveSearchComponent, selector: "ymd-drive-search" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: FileDropZoneDirective, selector: "[yuvFileDropZone]", inputs: ["yuvFileDropZone", "fileDropDisabled"], outputs: ["fileDrop", "fileDropOver"] }, { kind: "component", type: ContextmenuComponent, selector: "yuv-contextmenu", inputs: ["actions", "selection"], outputs: ["itemSelect"] }, { kind: "directive", type: YuvContextMenuTriggerDirective, selector: "[yuvContextMenuTrigger]", inputs: ["yuvContextMenuTrigger", "yuvContextMenuTriggerWhen"], exportAs: ["yuvContextMenuTrigger"] }] }); }
|
|
2886
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.12", type: FilesPageComponent, isStandalone: true, selector: "ymd-files", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.smallScreen": "smallScreenLayout()" } }, viewQueries: [{ propertyName: "tileList", first: true, predicate: ["tileList"], descendants: true, isSignal: true }, { propertyName: "splitViewCmp", first: true, predicate: SplitViewComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<header>\n <!-- navigation bar -->\n <nav [attr.aria-label]=\"'yuv.app.drive.files.naviagtion.aria.label' | translate\">\n <div class=\"nav\">\n <button mat-icon-button [disabled]=\"!currentFolder\" [matTooltip]=\"'yuv.app.drive.files.nav.back.tooltip' | translate\" (click)=\"openParent()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n <button mat-icon-button [matTooltip]=\"'yuv.app.drive.files.nav.refresh.tooltip' | translate\" (click)=\"refresh()\">\n <mat-icon>refresh</mat-icon>\n </button>\n </div>\n\n @if (!query()?.term) {\n <ymd-breadcrumb></ymd-breadcrumb>\n } @else {\n <div class=\"breadcrumb\"></div>\n }\n </nav>\n\n <!-- ribbon with actions and options -->\n <ymd-ribbon [objects]=\"selection()\" [busy]=\"busy()\" [enableClipboard]=\"true\" class=\"files__surface\">\n <ng-template #primaryActions>\n <ymd-add-button [disabled]=\"disableCreate\"></ymd-add-button>\n </ng-template>\n\n <ng-template #secondaryActions>\n <div class=\"options\">\n @if (!smallScreenLayout()) {\n <button\n mat-icon-button\n class=\"toggle-tree toggle\"\n [ngClass]=\"{ enabled: enableTree() }\"\n [matTooltip]=\"'yuv.app.drive.files.toggletree.tooltip' | translate\"\n (click)=\"enableTree.set(!enableTree())\"\n >\n <mat-icon>dock_to_right</mat-icon>\n </button>\n <button\n mat-icon-button\n class=\"toggle-details toggle\"\n [ngClass]=\"{ enabled: enableDetails() }\"\n [matTooltip]=\"'yuv.app.drive.files.toggledetails.tooltip' | translate\"\n (click)=\"enableDetails.set(!enableDetails())\"\n >\n <mat-icon>dock_to_left</mat-icon>\n </button>\n }\n <yuv-tile-config-trigger [bucket]=\"objectConfigBucket\" [bucketLabel]=\"tileConfigBucketLabel\" [options]=\"tileListOptions\"></yuv-tile-config-trigger>\n </div>\n </ng-template>\n </ymd-ribbon>\n</header>\n\n<yuv-split-view [gutterSize]=\"1\" (layoutSettingsChange)=\"onLayoutSettingsChange($event)\" class=\"files__surface\">\n <!-- folder tree -->\n <ng-template yuvSplitArea [size]=\"20\" [visible]=\"enableTree() && !smallScreenLayout()\">\n <ymd-folder-tree></ymd-folder-tree>\n </ng-template>\n\n <!-- files -->\n <ng-template yuvSplitArea [size]=\"60\">\n @let err = error();\n @if (err) {\n <div class=\"error\">\n <p>\n <mat-icon>warning</mat-icon>\n @switch (err) {\n @case (ERROR_CODE.NOT_FOUND) {\n {{ 'yuv.app.drive.files.error.load.not-found' | translate }}\n }\n @case (ERROR_CODE.INVALID_ID) {\n {{ 'yuv.app.drive.files.error.load.invalid-id' | translate }}\n }\n @default {\n {{ 'yuv.app.drive.files.error.load' | translate }}\n }\n }\n </p>\n </div>\n } @else {\n <div class=\"files\" [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.label' | translate }\" (fileDrop)=\"onFileDrop($event)\">\n <header class=\"files-header\">\n <h1>{{ queryTitle() }}</h1>\n @if (sortOptionsAvailable()) {\n <ymd-sort />\n }\n <!-- <div class=\"flavors\">\n TODO: enable again once flavors/aspects are supported -->\n <!-- @for (f of flavorChips; track f.id) {\n <yuv-flavor-chip [ngClass]=\"{ active: f.id === appliedFlavor?.id }\" [flavor]=\"f\" (click)=\"appliedFlavor = f\"></yuv-flavor-chip>\n }\n </div>-->\n @if (query()?.term && !extendedQuery()) {\n <ymd-search-filter [query]=\"query()\" (queryChange)=\"onFilterQueryChange($event)\"></ymd-search-filter>\n }\n </header>\n <yuv-tile-list\n #tileList\n class=\"staggered\"\n [attr.aria-label]=\"'yuv.app.drive.files.content.aria.label' | translate\"\n [attr.aria-busy]=\"busy()\"\n [attr.role]=\"'listbox'\"\n (keydown.backspace)=\"openParent()\"\n (keydown.delete)=\"onDelete()\"\n [bucket]=\"objectConfigBucket\"\n [multiselect]=\"true\"\n [query]=\"query()\"\n [flavor]=\"appliedFlavor\"\n [options]=\"tileListOptions\"\n (itemDblClick)=\"itemDoubleClicked($event)\"\n (itemSelect)=\"itemClicked($event)\"\n (selectionChange)=\"selectionChanged($event)\"\n (tileCopy)=\"onCopy($event)\"\n (tileCut)=\"onCut($event)\"\n (busy)=\"setBusy($event)\"\n [highlights]=\"highlightStyles$ | async\"\n [yuvContextMenuTrigger]=\"context_menu\"\n [yuvContextMenuTriggerWhen]=\"hasActions()\"\n >\n <div #empty>\n @if (emptyMode() === 'root') {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.root.list' | translate }}</p>\n } @else if (emptyMode() === 'query') {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.query.list' | translate }}</p>\n } @else {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.list' | translate }}</p>\n }\n </div>\n\n <ng-template #context_menu>\n <yuv-contextmenu [actions]=\"actions()\" (itemSelect)=\"onContextmenuAction($event)\"></yuv-contextmenu>\n </ng-template>\n </yuv-tile-list>\n </div>\n }\n </ng-template>\n\n <!-- details -->\n <ng-template yuvSplitArea [size]=\"20\" [visible]=\"enableDetails()\">\n @let selectedItem = selected();\n @if (enableDetails() && selectedItem) {\n @if (selectedItem?.isFolder) {\n <yuv-object-summary [actions]=\"summaryActions()\" [configType]=\"configTypeOptions['folder']\" [dmsObject]=\"selectedItem\"></yuv-object-summary>\n } @else {\n <yuv-object-summary\n [actions]=\"summaryActions()\"\n [configType]=\"configTypeOptions['file']\"\n [dmsObject]=\"selectedItem\"\n [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.content.replace.label' | translate }\"\n [fileDropDisabled]=\"fileDropSummaryDisabled()\"\n (fileDrop)=\"onFileUpdateDrop($event)\"\n ></yuv-object-summary>\n }\n } @else {\n @let sel = selection();\n @if (sel && sel.length > 0) {\n <yuv-multi-object-summary [headline]=\"'yuv.app.drive.multiselected.details' | translate: { count: selection().length }\"></yuv-multi-object-summary>\n } @else if (tileList()?.items?.length === 0) {\n <!-- TODO: CHOULD HAVE A DIFFERENT MESSAGE FOR EMPTY RESULTS EMPTY FOR NOW -->\n <div class=\"message\">{{ 'yuv.app.drive.empty.results.details.message' | translate }}</div>\n } @else {\n <div class=\"message\">{{ 'yuv.app.drive.unselected.details' | translate }}</div>\n }\n }\n </ng-template>\n</yuv-split-view>\n", styles: [":host{height:100%;overflow:hidden;display:flex;flex-flow:column}:host header{flex:0 0 auto}:host header>nav{border-block-end:1px solid var(--ymt-outline-variant);display:grid;grid-template-columns:auto 1fr 1fr auto;align-items:center;gap:var(--ymt-spacing-xs);padding:var(--ymt-spacing-2xs) var(--ymt-spacing-s) var(--ymt-spacing-s) var(--ymt-spacing-s);min-height:40px}:host header>nav .nav{grid-column:1/2;grid-row:1;display:flex;border-inline-end:1px solid var(--ymt-outline-variant);padding-inline-end:var(--ymt-spacing-xs);gap:var(--ymt-spacing-3xs);margin-bottom:calc(var(--ymt-spacing-s) * -1)}:host header>nav .breadcrumb{grid-column:2/4;grid-row:1;display:flex;margin-bottom:calc(var(--ymt-spacing-s) * -1)}:host yuv-split-view{--split-gutter-background-color: var(--ymt-outline-variant);flex:1;animation:fade-in .3s ease-in-out}:host main{height:100%;overflow:hidden;display:flex;flex-flow:column}:host .error{display:grid;justify-items:center;align-items:center;height:100%;padding:0 2rem;text-align:center;color:var(--ymt-text-color-subtle)}:host .error p{max-width:31ch;line-height:1.5em;display:grid;justify-items:center}:host .error p mat-icon{display:block;margin-block-end:1rem}:host .files{display:flex;flex-flow:column;overflow:hidden;height:100%}:host .files header{flex:0 0 auto;padding:var(--ymt-spacing-l) var(--ymt-spacing-l) var(--ymt-spacing-s) var(--ymt-spacing-l);display:grid;grid-template-columns:1fr;gap:var(--ymt-spacing-3xs);grid-template-areas:\"title sort\" \"flavors flavors\" \"searchfilter searchfilter\"}:host .files header h1{grid-area:title;margin:0;height:min-content}:host .files header .flavors{grid-area:flavors;display:flex;gap:2px;justify-content:flex-end;padding:var(--ymt-spacing-2xs)}:host .files header .flavors yuv-flavor-chip{font:var(--ymt-font-body-subtle);cursor:pointer;--flavor-background: var(--ymt-surface-panel);--flavor-icon-size: 16px}:host .files header .flavors yuv-flavor-chip:hover{--flavor-border-color: var(--ymt-primary)}:host .files header ymd-sort{grid-area:sort}:host .files header ymd-search-filter{grid-area:searchfilter}:host .files yuv-tile-list{--ymt-scrollbar-outer-size: 0;display:flex;flex-direction:column;overflow-y:auto}:host .message{display:grid;justify-items:center;align-items:center;height:100%;padding:0 var(--ymt-spacing-3xl);text-align:center;color:var(--ymt-text-color-subtle)}:host .message p{max-width:31ch;line-height:1.5em}:host yuv-split-view{--split-gutter-background-color: var(--ymt-outline-variant);display:flex;height:100%;box-sizing:border-box}:host ymd-folder-tree{padding:var(--ymt-spacing-l) var(--ymt-spacing-m);min-width:300px}:host ymd-folder-tree,:host yuv-object-summary{height:100%;overflow-y:auto;display:block}:host yuv-tile-list{--tile-border: 1px solid var(--ymt-outline-variant);--tile-border-width: 0 0 1px 0;--tile-icon-size: 18px;--tile-action-icon-size: 18px;--paging-background: var(--ymt-surface-panel)}:host p.empty{color:var(--ymt-text-color-subtle)}:host .details{height:100%}:host .details yuv-object-details{height:100%}:host.smallScreen yuv-tile-list{--tile-padding: var(--ymt-spacing-m) !important}@keyframes fade-in{0%{opacity:0}}.files__surface{background-color:var(--ymt-surface)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: YuvSplitViewModule }, { kind: "directive", type: i1$2.SplitAreaDirective, selector: "[yuvSplitArea]", inputs: ["size", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "component", type: i1$2.SplitViewComponent, selector: "yuv-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "ngmodule", type: YuvClientShellModule }, { kind: "component", type: TileListComponent, selector: "yuv-tile-list", inputs: ["bucket", "multiselect", "options", "flavor", "query", "preselect", "highlights"], outputs: ["itemSelect", "tileCopy", "tileCut", "busy", "queryResult", "selectionChange", "itemDblClick", "ctxMenu"] }, { kind: "component", type: BreadcrumbComponent, selector: "ymd-breadcrumb" }, { kind: "component", type: FolderTreeComponent, selector: "ymd-folder-tree" }, { kind: "component", type: ObjectSummaryComponent, selector: "yuv-object-summary", inputs: ["actions", "dmsObject", "objectId", "configType"] }, { kind: "component", type: TileConfigTriggerComponent, selector: "yuv-tile-config-trigger", inputs: ["icon", "bucket", "bucketLabel", "options"] }, { kind: "component", type: RibbonComponent, selector: "ymd-ribbon", inputs: ["busy", "enableClipboard", "objects", "excludeActions"] }, { kind: "component", type: AddButtonComponent, selector: "ymd-add-button", inputs: ["disabled"] }, { kind: "component", type: MultiObjectSummaryComponent, selector: "yuv-multi-object-summary", inputs: ["headline"] }, { kind: "component", type: SortComponent, selector: "ymd-sort", outputs: ["sortChanged"] }, { kind: "component", type: SearchFilterComponent, selector: "ymd-search-filter", inputs: ["query"], outputs: ["queryChange"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: FileDropZoneDirective, selector: "[yuvFileDropZone]", inputs: ["yuvFileDropZone", "fileDropDisabled"], outputs: ["fileDrop", "fileDropOver"] }, { kind: "component", type: ContextmenuComponent, selector: "yuv-contextmenu", inputs: ["actions", "selection"], outputs: ["itemSelect"] }, { kind: "directive", type: YuvContextMenuTriggerDirective, selector: "[yuvContextMenuTrigger]", inputs: ["yuvContextMenuTrigger", "yuvContextMenuTriggerWhen"], exportAs: ["yuvContextMenuTrigger"] }] }); }
|
|
2884
2887
|
}
|
|
2885
2888
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: FilesPageComponent, decorators: [{
|
|
2886
2889
|
type: Component,
|
|
2887
2890
|
args: [{ selector: 'ymd-files', standalone: true, imports: [NgClass, AsyncPipe, ...module, ...components, FileDropZoneDirective, ContextmenuComponent, YuvContextMenuTriggerDirective], host: {
|
|
2888
2891
|
'[class.smallScreen]': 'smallScreenLayout()'
|
|
2889
|
-
}, template: "<header>\n <!-- navigation bar -->\n <nav [attr.aria-label]=\"'yuv.app.drive.files.naviagtion.aria.label' | translate\">\n <div class=\"nav\">\n <button mat-icon-button [disabled]=\"!currentFolder\" [matTooltip]=\"'yuv.app.drive.files.nav.back.tooltip' | translate\" (click)=\"openParent()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n <button mat-icon-button [matTooltip]=\"'yuv.app.drive.files.nav.refresh.tooltip' | translate\" (click)=\"refresh()\">\n <mat-icon>refresh</mat-icon>\n </button>\n </div>\n\n @if (!query()?.term) {\n <ymd-breadcrumb></ymd-breadcrumb>\n } @else {\n <div class=\"breadcrumb\"></div>\n }\n <div class=\"search\">\n <ymd-drive-search></ymd-drive-search>\n </div>\n </nav>\n\n <!-- ribbon with actions and options -->\n <ymd-ribbon [objects]=\"selection()\" [busy]=\"busy()\" [enableClipboard]=\"true\" class=\"files__surface\">\n <ng-template #primaryActions>\n <ymd-add-button [disabled]=\"disableCreate\"></ymd-add-button>\n </ng-template>\n\n <ng-template #secondaryActions>\n <div class=\"options\">\n @if (!smallScreenLayout()) {\n <button\n mat-icon-button\n class=\"toggle-tree toggle\"\n [ngClass]=\"{ enabled: enableTree() }\"\n [matTooltip]=\"'yuv.app.drive.files.toggletree.tooltip' | translate\"\n (click)=\"enableTree.set(!enableTree())\"\n >\n <mat-icon>dock_to_right</mat-icon>\n </button>\n <button\n mat-icon-button\n class=\"toggle-details toggle\"\n [ngClass]=\"{ enabled: enableDetails() }\"\n [matTooltip]=\"'yuv.app.drive.files.toggledetails.tooltip' | translate\"\n (click)=\"enableDetails.set(!enableDetails())\"\n >\n <mat-icon>dock_to_left</mat-icon>\n </button>\n }\n <yuv-tile-config-trigger [bucket]=\"objectConfigBucket\" [bucketLabel]=\"tileConfigBucketLabel\" [options]=\"tileListOptions\"></yuv-tile-config-trigger>\n </div>\n </ng-template>\n </ymd-ribbon>\n</header>\n\n<yuv-split-view [gutterSize]=\"1\" (layoutSettingsChange)=\"onLayoutSettingsChange($event)\" class=\"files__surface\">\n <!-- folder tree -->\n <ng-template yuvSplitArea [size]=\"20\" [visible]=\"enableTree() && !smallScreenLayout()\">\n <ymd-folder-tree></ymd-folder-tree>\n </ng-template>\n\n <!-- files -->\n <ng-template yuvSplitArea [size]=\"60\">\n @let err = error();\n @if (err) {\n <div class=\"error\">\n <p>\n <mat-icon>warning</mat-icon>\n @switch (err) {\n @case (ERROR_CODE.NOT_FOUND) {\n {{ 'yuv.app.drive.files.error.load.not-found' | translate }}\n }\n @case (ERROR_CODE.INVALID_ID) {\n {{ 'yuv.app.drive.files.error.load.invalid-id' | translate }}\n }\n @default {\n {{ 'yuv.app.drive.files.error.load' | translate }}\n }\n }\n </p>\n </div>\n } @else {\n <div class=\"files\" [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.label' | translate }\" (fileDrop)=\"onFileDrop($event)\">\n <header class=\"files-header\">\n <h1>{{ queryTitle() }}</h1>\n @if (sortOptionsAvailable()) {\n <ymd-sort />\n }\n <!-- <div class=\"flavors\">\n TODO: enable again once flavors/aspects are supported -->\n <!-- @for (f of flavorChips; track f.id) {\n <yuv-flavor-chip [ngClass]=\"{ active: f.id === appliedFlavor?.id }\" [flavor]=\"f\" (click)=\"appliedFlavor = f\"></yuv-flavor-chip>\n }\n </div>-->\n @if (query()?.term && !extendedQuery()) {\n <ymd-search-filter [query]=\"query()\" (queryChange)=\"onFilterQueryChange($event)\"></ymd-search-filter>\n }\n\n </header>\n <yuv-tile-list\n #tileList\n class=\"staggered\"\n [attr.aria-label]=\"'yuv.app.drive.files.content.aria.label' | translate\"\n [attr.aria-busy]=\"busy()\"\n [attr.role]=\"'listbox'\"\n (keydown.backspace)=\"openParent()\"\n (keydown.delete)=\"onDelete()\"\n [bucket]=\"objectConfigBucket\"\n [multiselect]=\"true\"\n [query]=\"query()\"\n [flavor]=\"appliedFlavor\"\n [options]=\"tileListOptions\"\n (itemDblClick)=\"itemDoubleClicked($event)\"\n (itemSelect)=\"itemClicked($event)\"\n (selectionChange)=\"selectionChanged($event)\"\n (tileCopy)=\"onCopy($event)\"\n (tileCut)=\"onCut($event)\"\n (busy)=\"setBusy($event)\"\n [highlights]=\"highlightStyles$ | async\"\n [yuvContextMenuTrigger]=\"context_menu\"\n [yuvContextMenuTriggerWhen]=\"hasActions()\"\n >\n <div #empty>\n @if (emptyMode() === 'root') {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.root.list' | translate }}</p>\n } @else if (emptyMode() === 'query') {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.query.list' | translate }}</p>\n } @else {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.list' | translate }}</p>\n }\n </div>\n\n <ng-template #context_menu>\n <yuv-contextmenu\n [actions]=\"actions()\"\n (itemSelect)=\"onContextmenuAction($event)\"\n ></yuv-contextmenu>\n </ng-template>\n\n </yuv-tile-list>\n </div>\n }\n </ng-template>\n\n <!-- details -->\n <ng-template yuvSplitArea [size]=\"20\" [visible]=\"enableDetails()\">\n @let selectedItem = selected();\n @if (enableDetails() && selectedItem) {\n @if (selectedItem?.isFolder) {\n <yuv-object-summary [actions]=\"summaryActions()\" [configType]=\"configTypeOptions['folder']\" [dmsObject]=\"selectedItem\"></yuv-object-summary>\n } @else {\n <yuv-object-summary\n [actions]=\"summaryActions()\"\n [configType]=\"configTypeOptions['file']\"\n [dmsObject]=\"selectedItem\"\n [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.content.replace.label' | translate }\"\n [fileDropDisabled]=\"fileDropSummaryDisabled()\"\n (fileDrop)=\"onFileUpdateDrop($event)\"\n ></yuv-object-summary>\n }\n } @else {\n @let sel = selection();\n @if (sel && sel.length > 0) {\n <yuv-multi-object-summary [headline]=\"'yuv.app.drive.multiselected.details' | translate: { count: selection().length }\"></yuv-multi-object-summary>\n } @else if (tileList()?.items?.length === 0) {\n <!-- TODO: CHOULD HAVE A DIFFERENT MESSAGE FOR EMPTY RESULTS EMPTY FOR NOW -->\n <div class=\"message\">{{ 'yuv.app.drive.empty.results.details.message' | translate }}</div>\n } @else {\n <div class=\"message\">{{ 'yuv.app.drive.unselected.details' | translate }}</div>\n }\n }\n </ng-template>\n</yuv-split-view>\n", styles: [":host{height:100%;overflow:hidden;display:flex;flex-flow:column}:host header{flex:0 0 auto}:host header>nav{border-block-end:1px solid var(--ymt-outline-variant);display:grid;grid-template-columns:auto 1fr 1fr auto;align-items:center;gap:var(--ymt-spacing-xs);padding:var(--ymt-spacing-2xs) var(--ymt-spacing-s) var(--ymt-spacing-s) var(--ymt-spacing-s);min-height:40px}:host header>nav .nav{grid-column:1/2;grid-row:1;display:flex;border-inline-end:1px solid var(--ymt-outline-variant);padding-inline-end:var(--ymt-spacing-xs);gap:var(--ymt-spacing-3xs);margin-bottom:calc(var(--ymt-spacing-s) * -1)}:host header>nav .breadcrumb{grid-column:2/4;grid-row:1;display:flex;margin-bottom:calc(var(--ymt-spacing-s) * -1)}:host header>nav .search{grid-column:-1/-2;grid-row:1;z-index:1}:host yuv-split-view{--split-gutter-background-color: var(--ymt-outline-variant);flex:1;animation:fade-in .3s ease-in-out}:host main{height:100%;overflow:hidden;display:flex;flex-flow:column}:host .error{display:grid;justify-items:center;align-items:center;height:100%;padding:0 2rem;text-align:center;color:var(--ymt-text-color-subtle)}:host .error p{max-width:31ch;line-height:1.5em;display:grid;justify-items:center}:host .error p mat-icon{display:block;margin-block-end:1rem}:host .files{display:flex;flex-flow:column;overflow:hidden;height:100%}:host .files header{flex:0 0 auto;padding:var(--ymt-spacing-l) var(--ymt-spacing-l) var(--ymt-spacing-s) var(--ymt-spacing-l);display:grid;grid-template-columns:1fr;gap:var(--ymt-spacing-3xs);grid-template-areas:\"title sort\" \"flavors flavors\" \"searchfilter searchfilter\"}:host .files header h1{grid-area:title;margin:0;height:min-content}:host .files header .flavors{grid-area:flavors;display:flex;gap:2px;justify-content:flex-end;padding:var(--ymt-spacing-2xs)}:host .files header .flavors yuv-flavor-chip{font:var(--ymt-font-body-subtle);cursor:pointer;--flavor-background: var(--ymt-surface-panel);--flavor-icon-size: 16px}:host .files header .flavors yuv-flavor-chip:hover{--flavor-border-color: var(--ymt-primary)}:host .files header ymd-sort{grid-area:sort}:host .files header ymd-search-filter{grid-area:searchfilter}:host .files yuv-tile-list{--ymt-scrollbar-outer-size: 0;display:flex;flex-direction:column;overflow-y:auto}:host .message{display:grid;justify-items:center;align-items:center;height:100%;padding:0 var(--ymt-spacing-3xl);text-align:center;color:var(--ymt-text-color-subtle)}:host .message p{max-width:31ch;line-height:1.5em}:host yuv-split-view{--split-gutter-background-color: var(--ymt-outline-variant);display:flex;height:100%;box-sizing:border-box}:host ymd-folder-tree{padding:var(--ymt-spacing-l) var(--ymt-spacing-m);min-width:300px}:host ymd-folder-tree,:host yuv-object-summary{height:100%;overflow-y:auto;display:block}:host yuv-tile-list{--tile-border: 1px solid var(--ymt-outline-variant);--tile-border-width: 0 0 1px 0;--tile-icon-size: 18px;--tile-action-icon-size: 18px;--paging-background: var(--ymt-surface-panel)}:host p.empty{color:var(--ymt-text-color-subtle)}:host .details{height:100%}:host .details yuv-object-details{height:100%}:host.smallScreen yuv-tile-list{--tile-padding: var(--ymt-spacing-m) !important}@keyframes fade-in{0%{opacity:0}}.files__surface{background-color:var(--ymt-surface)}\n"] }]
|
|
2892
|
+
}, template: "<header>\n <!-- navigation bar -->\n <nav [attr.aria-label]=\"'yuv.app.drive.files.naviagtion.aria.label' | translate\">\n <div class=\"nav\">\n <button mat-icon-button [disabled]=\"!currentFolder\" [matTooltip]=\"'yuv.app.drive.files.nav.back.tooltip' | translate\" (click)=\"openParent()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n <button mat-icon-button [matTooltip]=\"'yuv.app.drive.files.nav.refresh.tooltip' | translate\" (click)=\"refresh()\">\n <mat-icon>refresh</mat-icon>\n </button>\n </div>\n\n @if (!query()?.term) {\n <ymd-breadcrumb></ymd-breadcrumb>\n } @else {\n <div class=\"breadcrumb\"></div>\n }\n </nav>\n\n <!-- ribbon with actions and options -->\n <ymd-ribbon [objects]=\"selection()\" [busy]=\"busy()\" [enableClipboard]=\"true\" class=\"files__surface\">\n <ng-template #primaryActions>\n <ymd-add-button [disabled]=\"disableCreate\"></ymd-add-button>\n </ng-template>\n\n <ng-template #secondaryActions>\n <div class=\"options\">\n @if (!smallScreenLayout()) {\n <button\n mat-icon-button\n class=\"toggle-tree toggle\"\n [ngClass]=\"{ enabled: enableTree() }\"\n [matTooltip]=\"'yuv.app.drive.files.toggletree.tooltip' | translate\"\n (click)=\"enableTree.set(!enableTree())\"\n >\n <mat-icon>dock_to_right</mat-icon>\n </button>\n <button\n mat-icon-button\n class=\"toggle-details toggle\"\n [ngClass]=\"{ enabled: enableDetails() }\"\n [matTooltip]=\"'yuv.app.drive.files.toggledetails.tooltip' | translate\"\n (click)=\"enableDetails.set(!enableDetails())\"\n >\n <mat-icon>dock_to_left</mat-icon>\n </button>\n }\n <yuv-tile-config-trigger [bucket]=\"objectConfigBucket\" [bucketLabel]=\"tileConfigBucketLabel\" [options]=\"tileListOptions\"></yuv-tile-config-trigger>\n </div>\n </ng-template>\n </ymd-ribbon>\n</header>\n\n<yuv-split-view [gutterSize]=\"1\" (layoutSettingsChange)=\"onLayoutSettingsChange($event)\" class=\"files__surface\">\n <!-- folder tree -->\n <ng-template yuvSplitArea [size]=\"20\" [visible]=\"enableTree() && !smallScreenLayout()\">\n <ymd-folder-tree></ymd-folder-tree>\n </ng-template>\n\n <!-- files -->\n <ng-template yuvSplitArea [size]=\"60\">\n @let err = error();\n @if (err) {\n <div class=\"error\">\n <p>\n <mat-icon>warning</mat-icon>\n @switch (err) {\n @case (ERROR_CODE.NOT_FOUND) {\n {{ 'yuv.app.drive.files.error.load.not-found' | translate }}\n }\n @case (ERROR_CODE.INVALID_ID) {\n {{ 'yuv.app.drive.files.error.load.invalid-id' | translate }}\n }\n @default {\n {{ 'yuv.app.drive.files.error.load' | translate }}\n }\n }\n </p>\n </div>\n } @else {\n <div class=\"files\" [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.label' | translate }\" (fileDrop)=\"onFileDrop($event)\">\n <header class=\"files-header\">\n <h1>{{ queryTitle() }}</h1>\n @if (sortOptionsAvailable()) {\n <ymd-sort />\n }\n <!-- <div class=\"flavors\">\n TODO: enable again once flavors/aspects are supported -->\n <!-- @for (f of flavorChips; track f.id) {\n <yuv-flavor-chip [ngClass]=\"{ active: f.id === appliedFlavor?.id }\" [flavor]=\"f\" (click)=\"appliedFlavor = f\"></yuv-flavor-chip>\n }\n </div>-->\n @if (query()?.term && !extendedQuery()) {\n <ymd-search-filter [query]=\"query()\" (queryChange)=\"onFilterQueryChange($event)\"></ymd-search-filter>\n }\n </header>\n <yuv-tile-list\n #tileList\n class=\"staggered\"\n [attr.aria-label]=\"'yuv.app.drive.files.content.aria.label' | translate\"\n [attr.aria-busy]=\"busy()\"\n [attr.role]=\"'listbox'\"\n (keydown.backspace)=\"openParent()\"\n (keydown.delete)=\"onDelete()\"\n [bucket]=\"objectConfigBucket\"\n [multiselect]=\"true\"\n [query]=\"query()\"\n [flavor]=\"appliedFlavor\"\n [options]=\"tileListOptions\"\n (itemDblClick)=\"itemDoubleClicked($event)\"\n (itemSelect)=\"itemClicked($event)\"\n (selectionChange)=\"selectionChanged($event)\"\n (tileCopy)=\"onCopy($event)\"\n (tileCut)=\"onCut($event)\"\n (busy)=\"setBusy($event)\"\n [highlights]=\"highlightStyles$ | async\"\n [yuvContextMenuTrigger]=\"context_menu\"\n [yuvContextMenuTriggerWhen]=\"hasActions()\"\n >\n <div #empty>\n @if (emptyMode() === 'root') {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.root.list' | translate }}</p>\n } @else if (emptyMode() === 'query') {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.query.list' | translate }}</p>\n } @else {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.list' | translate }}</p>\n }\n </div>\n\n <ng-template #context_menu>\n <yuv-contextmenu [actions]=\"actions()\" (itemSelect)=\"onContextmenuAction($event)\"></yuv-contextmenu>\n </ng-template>\n </yuv-tile-list>\n </div>\n }\n </ng-template>\n\n <!-- details -->\n <ng-template yuvSplitArea [size]=\"20\" [visible]=\"enableDetails()\">\n @let selectedItem = selected();\n @if (enableDetails() && selectedItem) {\n @if (selectedItem?.isFolder) {\n <yuv-object-summary [actions]=\"summaryActions()\" [configType]=\"configTypeOptions['folder']\" [dmsObject]=\"selectedItem\"></yuv-object-summary>\n } @else {\n <yuv-object-summary\n [actions]=\"summaryActions()\"\n [configType]=\"configTypeOptions['file']\"\n [dmsObject]=\"selectedItem\"\n [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.content.replace.label' | translate }\"\n [fileDropDisabled]=\"fileDropSummaryDisabled()\"\n (fileDrop)=\"onFileUpdateDrop($event)\"\n ></yuv-object-summary>\n }\n } @else {\n @let sel = selection();\n @if (sel && sel.length > 0) {\n <yuv-multi-object-summary [headline]=\"'yuv.app.drive.multiselected.details' | translate: { count: selection().length }\"></yuv-multi-object-summary>\n } @else if (tileList()?.items?.length === 0) {\n <!-- TODO: CHOULD HAVE A DIFFERENT MESSAGE FOR EMPTY RESULTS EMPTY FOR NOW -->\n <div class=\"message\">{{ 'yuv.app.drive.empty.results.details.message' | translate }}</div>\n } @else {\n <div class=\"message\">{{ 'yuv.app.drive.unselected.details' | translate }}</div>\n }\n }\n </ng-template>\n</yuv-split-view>\n", styles: [":host{height:100%;overflow:hidden;display:flex;flex-flow:column}:host header{flex:0 0 auto}:host header>nav{border-block-end:1px solid var(--ymt-outline-variant);display:grid;grid-template-columns:auto 1fr 1fr auto;align-items:center;gap:var(--ymt-spacing-xs);padding:var(--ymt-spacing-2xs) var(--ymt-spacing-s) var(--ymt-spacing-s) var(--ymt-spacing-s);min-height:40px}:host header>nav .nav{grid-column:1/2;grid-row:1;display:flex;border-inline-end:1px solid var(--ymt-outline-variant);padding-inline-end:var(--ymt-spacing-xs);gap:var(--ymt-spacing-3xs);margin-bottom:calc(var(--ymt-spacing-s) * -1)}:host header>nav .breadcrumb{grid-column:2/4;grid-row:1;display:flex;margin-bottom:calc(var(--ymt-spacing-s) * -1)}:host yuv-split-view{--split-gutter-background-color: var(--ymt-outline-variant);flex:1;animation:fade-in .3s ease-in-out}:host main{height:100%;overflow:hidden;display:flex;flex-flow:column}:host .error{display:grid;justify-items:center;align-items:center;height:100%;padding:0 2rem;text-align:center;color:var(--ymt-text-color-subtle)}:host .error p{max-width:31ch;line-height:1.5em;display:grid;justify-items:center}:host .error p mat-icon{display:block;margin-block-end:1rem}:host .files{display:flex;flex-flow:column;overflow:hidden;height:100%}:host .files header{flex:0 0 auto;padding:var(--ymt-spacing-l) var(--ymt-spacing-l) var(--ymt-spacing-s) var(--ymt-spacing-l);display:grid;grid-template-columns:1fr;gap:var(--ymt-spacing-3xs);grid-template-areas:\"title sort\" \"flavors flavors\" \"searchfilter searchfilter\"}:host .files header h1{grid-area:title;margin:0;height:min-content}:host .files header .flavors{grid-area:flavors;display:flex;gap:2px;justify-content:flex-end;padding:var(--ymt-spacing-2xs)}:host .files header .flavors yuv-flavor-chip{font:var(--ymt-font-body-subtle);cursor:pointer;--flavor-background: var(--ymt-surface-panel);--flavor-icon-size: 16px}:host .files header .flavors yuv-flavor-chip:hover{--flavor-border-color: var(--ymt-primary)}:host .files header ymd-sort{grid-area:sort}:host .files header ymd-search-filter{grid-area:searchfilter}:host .files yuv-tile-list{--ymt-scrollbar-outer-size: 0;display:flex;flex-direction:column;overflow-y:auto}:host .message{display:grid;justify-items:center;align-items:center;height:100%;padding:0 var(--ymt-spacing-3xl);text-align:center;color:var(--ymt-text-color-subtle)}:host .message p{max-width:31ch;line-height:1.5em}:host yuv-split-view{--split-gutter-background-color: var(--ymt-outline-variant);display:flex;height:100%;box-sizing:border-box}:host ymd-folder-tree{padding:var(--ymt-spacing-l) var(--ymt-spacing-m);min-width:300px}:host ymd-folder-tree,:host yuv-object-summary{height:100%;overflow-y:auto;display:block}:host yuv-tile-list{--tile-border: 1px solid var(--ymt-outline-variant);--tile-border-width: 0 0 1px 0;--tile-icon-size: 18px;--tile-action-icon-size: 18px;--paging-background: var(--ymt-surface-panel)}:host p.empty{color:var(--ymt-text-color-subtle)}:host .details{height:100%}:host .details yuv-object-details{height:100%}:host.smallScreen yuv-tile-list{--tile-padding: var(--ymt-spacing-m) !important}@keyframes fade-in{0%{opacity:0}}.files__surface{background-color:var(--ymt-surface)}\n"] }]
|
|
2890
2893
|
}], ctorParameters: () => [] });
|
|
2891
2894
|
|
|
2892
2895
|
class ObjectPageComponent {
|
|
@@ -2988,7 +2991,7 @@ class ObjectPageComponent {
|
|
|
2988
2991
|
this.headerData = undefined;
|
|
2989
2992
|
}
|
|
2990
2993
|
else {
|
|
2991
|
-
const roc = this.#objectConfig.getResolvedObjectConfig(o.data,
|
|
2994
|
+
const roc = this.#objectConfig.getResolvedObjectConfig(o.data, APP_TYPES['file'], APP_ID);
|
|
2992
2995
|
this.headerData = {
|
|
2993
2996
|
title: roc.title,
|
|
2994
2997
|
description: roc.description,
|
|
@@ -3097,5 +3100,5 @@ const YuuvisDriveRoutes = [
|
|
|
3097
3100
|
* Generated bundle index. Do not edit.
|
|
3098
3101
|
*/
|
|
3099
3102
|
|
|
3100
|
-
export { ACTION_CONTEXT, APP_ACTIONS, APP_ID, APP_PREFIX,
|
|
3103
|
+
export { ACTION_CONTEXT, APP_ACTIONS, APP_ID, APP_PREFIX, APP_TYPES, FS_PROPERTIES, FS_SOTS, SearchFilterComponent, YuuvisDriveRoutes, provideDrive };
|
|
3101
3104
|
//# sourceMappingURL=yuuvis-app-drive.mjs.map
|