@yuuvis/app-drive 0.7.3
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/README.md +47 -0
- package/esm2022/extensions/index.mjs +2 -0
- package/esm2022/extensions/lib/extensions.module.mjs +35 -0
- package/esm2022/extensions/lib/extensions.service.mjs +44 -0
- package/esm2022/extensions/lib/object-config.defaults.mjs +19 -0
- package/esm2022/extensions/yuuvis-app-drive-extensions.mjs +5 -0
- package/esm2022/index.mjs +5 -0
- package/esm2022/lib/actions/copy-link/copy-link.action.mjs +40 -0
- package/esm2022/lib/actions/index.mjs +7 -0
- package/esm2022/lib/actions/manage-versions/manage-versions.action.mjs +33 -0
- package/esm2022/lib/actions/manage-versions/manage-versions.component.mjs +105 -0
- package/esm2022/lib/actions/paste/paste.action.mjs +41 -0
- package/esm2022/lib/actions/rename/rename.action.mjs +31 -0
- package/esm2022/lib/actions/rename/rename.component.mjs +42 -0
- package/esm2022/lib/actions/rename/rename.validator.mjs +23 -0
- package/esm2022/lib/actions/updateContent/update.content.action.mjs +52 -0
- package/esm2022/lib/components/add-button/add-button-overlay/add-button-overlay.component.mjs +109 -0
- package/esm2022/lib/components/add-button/add-button.component.mjs +39 -0
- package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +74 -0
- package/esm2022/lib/components/folder-tree/folder-tree.component.mjs +89 -0
- package/esm2022/lib/components/index.mjs +10 -0
- package/esm2022/lib/components/object-name/object-name.component.mjs +60 -0
- package/esm2022/lib/components/overlay/create-folder/create-folder.component.mjs +48 -0
- package/esm2022/lib/components/paste-from-clipboard/paste-from-clipboard.component.mjs +28 -0
- package/esm2022/lib/components/ribbon/ribbon.component.mjs +102 -0
- package/esm2022/lib/components/search-filter/date-range-picker/date-range-picker.component.mjs +38 -0
- package/esm2022/lib/components/search-filter/search-filter.component.mjs +429 -0
- package/esm2022/lib/components/sort/sort.component.mjs +156 -0
- package/esm2022/lib/components/versions-list/tile/tile.component.mjs +60 -0
- package/esm2022/lib/components/versions-list/versions-list.component.mjs +94 -0
- package/esm2022/lib/container/drive/drive.component.mjs +116 -0
- package/esm2022/lib/drive.icons.mjs +16 -0
- package/esm2022/lib/drive.schema.mjs +49 -0
- package/esm2022/lib/lib.routes.mjs +17 -0
- package/esm2022/lib/pages/files/files.component.mjs +377 -0
- package/esm2022/lib/pages/object/object.component.mjs +200 -0
- package/esm2022/lib/services/drive/drive.interface.mjs +14 -0
- package/esm2022/lib/services/drive/drive.service.mjs +437 -0
- package/esm2022/lib/services/drive/resolve-name-conflicts/resolve-name-conflicts.component.mjs +158 -0
- package/esm2022/lib/services/drive/resolve-name-conflicts/resolve-name-conflicts.interface.mjs +2 -0
- package/esm2022/lib/services/drive/versions/versions.mapping.mjs +42 -0
- package/esm2022/lib/services/index.mjs +5 -0
- package/esm2022/lib/services/providers/drive.providers.mjs +10 -0
- package/esm2022/lib/services/resolver/files.resolver.mjs +12 -0
- package/esm2022/lib/services/resolver/index.mjs +3 -0
- package/esm2022/lib/services/resolver/versions.route.resolver.mjs +10 -0
- package/esm2022/lib/services/stored-query/stored-query.data.mjs +25 -0
- package/esm2022/lib/services/stored-query/stored-query.interface.mjs +2 -0
- package/esm2022/lib/services/stored-query/stored-query.service.mjs +41 -0
- package/esm2022/lib/services/tokens/breadcrumb-max-depth.token.mjs +3 -0
- package/esm2022/lib/services/tokens/index.mjs +2 -0
- package/esm2022/yuuvis-app-drive.mjs +5 -0
- package/extensions/README.md +3 -0
- package/extensions/index.d.ts +1 -0
- package/extensions/lib/extensions.module.d.ts +6 -0
- package/extensions/lib/extensions.service.d.ts +7 -0
- package/extensions/lib/object-config.defaults.d.ts +2 -0
- package/fesm2022/yuuvis-app-drive-extensions.mjs +99 -0
- package/fesm2022/yuuvis-app-drive-extensions.mjs.map +1 -0
- package/fesm2022/yuuvis-app-drive.mjs +2945 -0
- package/fesm2022/yuuvis-app-drive.mjs.map +1 -0
- package/index.d.ts +4 -0
- package/lib/actions/copy-link/copy-link.action.d.ts +18 -0
- package/lib/actions/index.d.ts +6 -0
- package/lib/actions/manage-versions/manage-versions.action.d.ts +17 -0
- package/lib/actions/manage-versions/manage-versions.component.d.ts +32 -0
- package/lib/actions/paste/paste.action.d.ts +17 -0
- package/lib/actions/rename/rename.action.d.ts +17 -0
- package/lib/actions/rename/rename.component.d.ts +12 -0
- package/lib/actions/rename/rename.validator.d.ts +5 -0
- package/lib/actions/updateContent/update.content.action.d.ts +18 -0
- package/lib/components/add-button/add-button-overlay/add-button-overlay.component.d.ts +26 -0
- package/lib/components/add-button/add-button.component.d.ts +12 -0
- package/lib/components/breadcrumb/breadcrumb.component.d.ts +25 -0
- package/lib/components/folder-tree/folder-tree.component.d.ts +13 -0
- package/lib/components/index.d.ts +8 -0
- package/lib/components/object-name/object-name.component.d.ts +21 -0
- package/lib/components/overlay/create-folder/create-folder.component.d.ts +12 -0
- package/lib/components/paste-from-clipboard/paste-from-clipboard.component.d.ts +13 -0
- package/lib/components/ribbon/ribbon.component.d.ts +24 -0
- package/lib/components/search-filter/date-range-picker/date-range-picker.component.d.ts +13 -0
- package/lib/components/search-filter/search-filter.component.d.ts +23 -0
- package/lib/components/sort/sort.component.d.ts +31 -0
- package/lib/components/versions-list/tile/tile.component.d.ts +14 -0
- package/lib/components/versions-list/versions-list.component.d.ts +17 -0
- package/lib/container/drive/drive.component.d.ts +36 -0
- package/lib/drive.icons.d.ts +15 -0
- package/lib/drive.schema.d.ts +23 -0
- package/lib/lib.routes.d.ts +2 -0
- package/lib/pages/files/files.component.d.ts +101 -0
- package/lib/pages/object/object.component.d.ts +35 -0
- package/lib/services/drive/drive.interface.d.ts +62 -0
- package/lib/services/drive/drive.service.d.ts +64 -0
- package/lib/services/drive/resolve-name-conflicts/resolve-name-conflicts.component.d.ts +31 -0
- package/lib/services/drive/resolve-name-conflicts/resolve-name-conflicts.interface.d.ts +8 -0
- package/lib/services/drive/versions/versions.mapping.d.ts +2 -0
- package/lib/services/index.d.ts +4 -0
- package/lib/services/providers/drive.providers.d.ts +7 -0
- package/lib/services/resolver/files.resolver.d.ts +2 -0
- package/lib/services/resolver/index.d.ts +2 -0
- package/lib/services/resolver/versions.route.resolver.d.ts +2 -0
- package/lib/services/stored-query/stored-query.data.d.ts +5 -0
- package/lib/services/stored-query/stored-query.interface.d.ts +5 -0
- package/lib/services/stored-query/stored-query.service.d.ts +10 -0
- package/lib/services/tokens/breadcrumb-max-depth.token.d.ts +2 -0
- package/lib/services/tokens/index.d.ts +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { of, timer } from 'rxjs';
|
|
2
|
+
import { map, switchMap } from 'rxjs/operators';
|
|
3
|
+
export class RenameValidator {
|
|
4
|
+
static createValidator(driveService) {
|
|
5
|
+
return (control) => {
|
|
6
|
+
return timer(500).pipe(switchMap(() => {
|
|
7
|
+
return control.value['name'] !== control.value['_initialName']
|
|
8
|
+
? driveService.validateNames([control.value['name']], driveService.state$.currentFolder()).pipe(map((result) => {
|
|
9
|
+
let res = null;
|
|
10
|
+
if (result.existingFileNames.length) {
|
|
11
|
+
res = { nameAlreadyExists: true };
|
|
12
|
+
}
|
|
13
|
+
else if (result.invalidFileNames?.length) {
|
|
14
|
+
res = { invalidFileNames: true };
|
|
15
|
+
}
|
|
16
|
+
return res;
|
|
17
|
+
}))
|
|
18
|
+
: of(null);
|
|
19
|
+
}));
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuYW1lLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBwcy9kcml2ZS9zcmMvbGliL2FjdGlvbnMvcmVuYW1lL3JlbmFtZS52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUloRCxNQUFNLE9BQU8sZUFBZTtJQUMxQixNQUFNLENBQUMsZUFBZSxDQUFDLFlBQTBCO1FBQy9DLE9BQU8sQ0FBQyxPQUF3QixFQUF1QyxFQUFFO1lBQ3ZFLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDcEIsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDYixPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7b0JBQzVELENBQUMsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzNGLEdBQUcsQ0FBQyxDQUFDLE1BQTZCLEVBQUUsRUFBRTt3QkFDcEMsSUFBSSxHQUFHLEdBQVEsSUFBSSxDQUFDO3dCQUNwQixJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQzs0QkFDcEMsR0FBRyxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUM7d0JBQ3BDLENBQUM7NkJBQU0sSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLENBQUM7NEJBQzNDLEdBQUcsR0FBRyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDO3dCQUNuQyxDQUFDO3dCQUNELE9BQU8sR0FBRyxDQUFDO29CQUNiLENBQUMsQ0FBQyxDQUNIO29CQUNILENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDZixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvckZuLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERyaXZlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RyaXZlL2RyaXZlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRHJpdmVWYWxpZGF0ZVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZHJpdmUvZHJpdmUuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNsYXNzIFJlbmFtZVZhbGlkYXRvciB7XG4gIHN0YXRpYyBjcmVhdGVWYWxpZGF0b3IoZHJpdmVTZXJ2aWNlOiBEcml2ZVNlcnZpY2UpOiBBc3luY1ZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+ID0+IHtcbiAgICAgIHJldHVybiB0aW1lcig1MDApLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNvbnRyb2wudmFsdWVbJ25hbWUnXSAhPT0gY29udHJvbC52YWx1ZVsnX2luaXRpYWxOYW1lJ11cbiAgICAgICAgICAgID8gZHJpdmVTZXJ2aWNlLnZhbGlkYXRlTmFtZXMoW2NvbnRyb2wudmFsdWVbJ25hbWUnXV0sIGRyaXZlU2VydmljZS5zdGF0ZSQuY3VycmVudEZvbGRlcigpKS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzdWx0OiBEcml2ZVZhbGlkYXRlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgIGxldCByZXM6IGFueSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmV4aXN0aW5nRmlsZU5hbWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXMgPSB7IG5hbWVBbHJlYWR5RXhpc3RzOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdC5pbnZhbGlkRmlsZU5hbWVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzID0geyBpbnZhbGlkRmlsZU5hbWVzOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogb2YobnVsbCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { inject } from '@angular/core';
|
|
3
|
+
import { Router } from '@angular/router';
|
|
4
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
5
|
+
import { AbstractContextAction, SelectionRange } from '@yuuvis/client-framework/actions';
|
|
6
|
+
import { finalize, of } from 'rxjs';
|
|
7
|
+
import { DriveService } from '../../services';
|
|
8
|
+
export class UpdateContentAction extends AbstractContextAction {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.translate = inject(TranslateService);
|
|
12
|
+
this.#router = inject(Router);
|
|
13
|
+
this.#drive = inject(DriveService);
|
|
14
|
+
this.#document = inject(DOCUMENT);
|
|
15
|
+
this.id = 'app.drive.action.new.content.version';
|
|
16
|
+
this.label = this.translate.instant('yuv.app.drive.action.new.version');
|
|
17
|
+
this.description = this.translate.instant('yuv.app.drive.action.new.version.description');
|
|
18
|
+
this.priority = 2;
|
|
19
|
+
this.icon = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="#5f6368" viewBox="0 -960 960 960"><path d="M500-520h80v-80h80v-80h-80v-80h-80v80h-80v80h80v80Zm-80 160h240v-80H420v80ZM320-200q-33 0-56.5-23.5T240-280v-560q0-33 23.5-56.5T320-920h280l240 240v400q0 33-23.5 56.5T760-200H320Zm0-80h440v-360L560-840H320v560ZM160-40q-33 0-56.5-23.5T80-120v-560h80v560h440v80H160Zm160-240v-560 560Z"/></svg>';
|
|
20
|
+
this.group = 'common';
|
|
21
|
+
this.range = SelectionRange.SINGLE_SELECT;
|
|
22
|
+
this.supports = {};
|
|
23
|
+
}
|
|
24
|
+
#router;
|
|
25
|
+
#drive;
|
|
26
|
+
#document;
|
|
27
|
+
isExecutable(selection) {
|
|
28
|
+
const selected = selection[0];
|
|
29
|
+
const canWrite = !!selected?.permissions?.writeContent;
|
|
30
|
+
return of(canWrite && selection.length === 1 && !selected.isFolder);
|
|
31
|
+
}
|
|
32
|
+
run(selection) {
|
|
33
|
+
if (!selection[0].isFolder) {
|
|
34
|
+
const fileInput = this.#document.createElement('input');
|
|
35
|
+
fileInput.type = 'file';
|
|
36
|
+
fileInput.multiple = false;
|
|
37
|
+
fileInput.onchange = (e) => {
|
|
38
|
+
this.#drive.setBusy(true);
|
|
39
|
+
const file = e.target.files?.[0];
|
|
40
|
+
file &&
|
|
41
|
+
this.#drive
|
|
42
|
+
.uploadContent(selection[0].id, file)
|
|
43
|
+
.pipe(finalize(() => this.#drive.setBusy(false)))
|
|
44
|
+
.subscribe();
|
|
45
|
+
};
|
|
46
|
+
fileInput.click();
|
|
47
|
+
fileInput.remove();
|
|
48
|
+
}
|
|
49
|
+
return of(true);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmNvbnRlbnQuYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcHBzL2RyaXZlL3NyYy9saWIvYWN0aW9ucy91cGRhdGVDb250ZW50L3VwZGF0ZS5jb250ZW50LmFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHFCQUFxQixFQUF5QixjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoSCxPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsTUFBTSxPQUFPLG1CQUFvQixTQUFRLHFCQUFxQjtJQUE5RDs7UUFDVyxjQUFTLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckMsWUFBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixXQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlCLGNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdEMsT0FBRSxHQUFHLHNDQUFzQyxDQUFDO1FBQzVDLFVBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ25FLGdCQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUNyRixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsU0FBSSxHQUNGLHFaQUFxWixDQUFDO1FBRXhaLFVBQUssR0FBRyxRQUFRLENBQUM7UUFDakIsVUFBSyxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUM7UUFDckMsYUFBUSxHQUFrQixFQUFFLENBQUM7SUE0Qi9CLENBQUM7SUF6Q1UsT0FBTyxDQUFrQjtJQUN6QixNQUFNLENBQXdCO0lBQzlCLFNBQVMsQ0FBb0I7SUFhdEMsWUFBWSxDQUFDLFNBQXNCO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUM7UUFDdkQsT0FBTyxFQUFFLENBQUMsUUFBUSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxHQUFHLENBQUMsU0FBc0I7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMzQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4RCxTQUFTLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztZQUN4QixTQUFTLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUUzQixTQUFTLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxQixNQUFNLElBQUksR0FBSSxDQUFDLENBQUMsTUFBMkIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkQsSUFBSTtvQkFDRixJQUFJLENBQUMsTUFBTTt5QkFDUixhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUM7eUJBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzt5QkFDaEQsU0FBUyxFQUFFLENBQUM7WUFDbkIsQ0FBQyxDQUFDO1lBQ0YsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xCLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNyQixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRG1zT2JqZWN0IH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRleHRBY3Rpb24sIEFjdGlvbiwgQWN0aW9uU3VwcG9ydCwgU2VsZWN0aW9uUmFuZ2UgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvYWN0aW9ucyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERyaXZlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuZXhwb3J0IGNsYXNzIFVwZGF0ZUNvbnRlbnRBY3Rpb24gZXh0ZW5kcyBBYnN0cmFjdENvbnRleHRBY3Rpb24gaW1wbGVtZW50cyBBY3Rpb24ge1xuICByZWFkb25seSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gIHJlYWRvbmx5ICNyb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcmVhZG9ubHkgI2RyaXZlID0gaW5qZWN0KERyaXZlU2VydmljZSk7XG4gIHJlYWRvbmx5ICNkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgaWQgPSAnYXBwLmRyaXZlLmFjdGlvbi5uZXcuY29udGVudC52ZXJzaW9uJztcbiAgbGFiZWwgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuYXBwLmRyaXZlLmFjdGlvbi5uZXcudmVyc2lvbicpO1xuICBkZXNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3l1di5hcHAuZHJpdmUuYWN0aW9uLm5ldy52ZXJzaW9uLmRlc2NyaXB0aW9uJyk7XG4gIHByaW9yaXR5ID0gMjtcbiAgaWNvbiA9XG4gICAgJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjNWY2MzY4XCIgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCI+PHBhdGggZD1cIk01MDAtNTIwaDgwdi04MGg4MHYtODBoLTgwdi04MGgtODB2ODBoLTgwdjgwaDgwdjgwWm0tODAgMTYwaDI0MHYtODBINDIwdjgwWk0zMjAtMjAwcS0zMyAwLTU2LjUtMjMuNVQyNDAtMjgwdi01NjBxMC0zMyAyMy41LTU2LjVUMzIwLTkyMGgyODBsMjQwIDI0MHY0MDBxMCAzMy0yMy41IDU2LjVUNzYwLTIwMEgzMjBabTAtODBoNDQwdi0zNjBMNTYwLTg0MEgzMjB2NTYwWk0xNjAtNDBxLTMzIDAtNTYuNS0yMy41VDgwLTEyMHYtNTYwaDgwdjU2MGg0NDB2ODBIMTYwWm0xNjAtMjQwdi01NjAgNTYwWlwiLz48L3N2Zz4nO1xuXG4gIGdyb3VwID0gJ2NvbW1vbic7XG4gIHJhbmdlID0gU2VsZWN0aW9uUmFuZ2UuU0lOR0xFX1NFTEVDVDtcbiAgc3VwcG9ydHM6IEFjdGlvblN1cHBvcnQgPSB7fTtcblxuICBpc0V4ZWN1dGFibGUoc2VsZWN0aW9uOiBEbXNPYmplY3RbXSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gc2VsZWN0aW9uWzBdO1xuICAgIGNvbnN0IGNhbldyaXRlID0gISFzZWxlY3RlZD8ucGVybWlzc2lvbnM/LndyaXRlQ29udGVudDtcbiAgICByZXR1cm4gb2YoY2FuV3JpdGUgJiYgc2VsZWN0aW9uLmxlbmd0aCA9PT0gMSAmJiAhc2VsZWN0ZWQuaXNGb2xkZXIpO1xuICB9XG5cbiAgcnVuKHNlbGVjdGlvbjogRG1zT2JqZWN0W10pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXNlbGVjdGlvblswXS5pc0ZvbGRlcikge1xuICAgICAgY29uc3QgZmlsZUlucHV0ID0gdGhpcy4jZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgIGZpbGVJbnB1dC50eXBlID0gJ2ZpbGUnO1xuICAgICAgZmlsZUlucHV0Lm11bHRpcGxlID0gZmFsc2U7XG5cbiAgICAgIGZpbGVJbnB1dC5vbmNoYW5nZSA9IChlKSA9PiB7XG4gICAgICAgIHRoaXMuI2RyaXZlLnNldEJ1c3kodHJ1ZSk7XG4gICAgICAgIGNvbnN0IGZpbGUgPSAoZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZmlsZXM/LlswXTtcbiAgICAgICAgZmlsZSAmJlxuICAgICAgICAgIHRoaXMuI2RyaXZlXG4gICAgICAgICAgICAudXBsb2FkQ29udGVudChzZWxlY3Rpb25bMF0uaWQsIGZpbGUpXG4gICAgICAgICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLiNkcml2ZS5zZXRCdXN5KGZhbHNlKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgICB9O1xuICAgICAgZmlsZUlucHV0LmNsaWNrKCk7XG4gICAgICBmaWxlSW5wdXQucmVtb3ZlKCk7XG4gICAgfVxuICAgIHJldHVybiBvZih0cnVlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, inject, viewChild } from '@angular/core';
|
|
3
|
+
import { BaseObjectTypeField, SystemService, TranslateModule, TranslateService } from '@yuuvis/client-core';
|
|
4
|
+
import { ListComponent, ListItemDirective } from '@yuuvis/client-framework/list';
|
|
5
|
+
import { ShellService } from '@yuuvis/client-shell-core';
|
|
6
|
+
import { YvcIconModule } from '@yuuvis/components/icon';
|
|
7
|
+
import { YvcOverlayRef, YvcOverlayService } from '@yuuvis/components/overlay';
|
|
8
|
+
import { APP_DRIVE_ICONS } from '../../../drive.icons';
|
|
9
|
+
import { DriveService } from '../../../services/drive/drive.service';
|
|
10
|
+
import { CreateFolderComponent } from '../../overlay/create-folder/create-folder.component';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@yuuvis/components/icon";
|
|
13
|
+
export class AddButtonOverlayComponent {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.#overlay = inject(YvcOverlayService);
|
|
16
|
+
this.#oRef = inject(YvcOverlayRef);
|
|
17
|
+
this.#drive = inject(DriveService);
|
|
18
|
+
this.#shell = inject(ShellService);
|
|
19
|
+
this.#system = inject(SystemService);
|
|
20
|
+
this.translate = inject(TranslateService);
|
|
21
|
+
this.fileInput = viewChild.required('fileInput');
|
|
22
|
+
this.icons = {
|
|
23
|
+
folder: APP_DRIVE_ICONS.createFolder,
|
|
24
|
+
file: APP_DRIVE_ICONS.createFile
|
|
25
|
+
};
|
|
26
|
+
this.defaultItems = [
|
|
27
|
+
{ icon: this.icons.folder, label: this.translate.instant('yuv.app.drive.create.folder') },
|
|
28
|
+
{ icon: this.icons.file, label: this.translate.instant('yuv.app.drive.create.file') }
|
|
29
|
+
];
|
|
30
|
+
this.flavorListItems = this.#shell.getObjectCreateFlavors().map((flavor) => ({
|
|
31
|
+
label: this.translate.instant(flavor.id),
|
|
32
|
+
flavor
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
#overlay;
|
|
36
|
+
#oRef;
|
|
37
|
+
#drive;
|
|
38
|
+
#shell;
|
|
39
|
+
#system;
|
|
40
|
+
#uploadTargetFlavor;
|
|
41
|
+
onListItemSelect(idx) {
|
|
42
|
+
if (idx.length === 0)
|
|
43
|
+
return;
|
|
44
|
+
const fi = idx[0];
|
|
45
|
+
if (fi === 0) {
|
|
46
|
+
this.startCreateFolder();
|
|
47
|
+
}
|
|
48
|
+
else if (fi === 1) {
|
|
49
|
+
this.startCreateDocument();
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this.startCreateDocument();
|
|
53
|
+
this.#uploadTargetFlavor = this.flavorListItems[fi - this.defaultItems.length]?.flavor;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
startCreateDocument() {
|
|
57
|
+
if (!this.#uploadTargetFlavor || this.#uploadTargetFlavor.withFileUpload) {
|
|
58
|
+
this.fileInput().nativeElement.click();
|
|
59
|
+
}
|
|
60
|
+
else if (this.#uploadTargetFlavor?.applyComponent) {
|
|
61
|
+
this.#overlay.open(this.#uploadTargetFlavor.applyComponent, {
|
|
62
|
+
flavor: this.#uploadTargetFlavor,
|
|
63
|
+
onCancel: () => {
|
|
64
|
+
console.log('cancel');
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
this.#uploadTargetFlavor = undefined;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
startCreateFolder() {
|
|
71
|
+
this.#oRef?.close();
|
|
72
|
+
this.#overlay.open(CreateFolderComponent, null, {
|
|
73
|
+
width: '400px',
|
|
74
|
+
maxWidth: '90vw'
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
createDocument(inputEl) {
|
|
78
|
+
this.#oRef?.close();
|
|
79
|
+
const files = inputEl.files ? Array.from(inputEl.files) : undefined;
|
|
80
|
+
if (files) {
|
|
81
|
+
const data = this.#uploadTargetFlavor?.sot ? { [BaseObjectTypeField.SECONDARY_OBJECT_TYPE_IDS]: [this.#uploadTargetFlavor.sot] } : undefined;
|
|
82
|
+
this.#drive.setBusy(true);
|
|
83
|
+
this.#drive
|
|
84
|
+
.checkNamesAndUpload(files, data)
|
|
85
|
+
.subscribe((createResult) => {
|
|
86
|
+
const uploadErrors = createResult.filter((r) => !!r.error);
|
|
87
|
+
if (uploadErrors.length) {
|
|
88
|
+
// TODO: Handle upload errors
|
|
89
|
+
console.error(uploadErrors);
|
|
90
|
+
}
|
|
91
|
+
if (this.#uploadTargetFlavor?.applyComponent) {
|
|
92
|
+
this.#overlay.open(this.#uploadTargetFlavor.applyComponent, {
|
|
93
|
+
createdObjectIDs: createResult.filter((r) => r.id).map((r) => r.id),
|
|
94
|
+
flavor: this.#uploadTargetFlavor
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
this.#uploadTargetFlavor = undefined;
|
|
98
|
+
})
|
|
99
|
+
.add(() => this.#drive.setBusy(false));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddButtonOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
103
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AddButtonOverlayComponent, isStandalone: true, selector: "ymd-add-button-overlay", viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, isSignal: true }], ngImport: i0, template: "<yuv-list (itemSelect)=\"onListItemSelect($event)\" selectOnEnter=\"true\">\n @for (i of defaultItems; track $index) {\n <div yuvListItem>\n <yvc-icon [svg]=\"i.icon\"></yvc-icon>\n {{ i.label }}\n </div>\n }\n\n <!-- Upload file with flavor -->\n @for (f of flavorListItems; track f.flavor.id) {\n <div class=\"flavor\" yuvListItem>\n <yvc-icon [svg]=\"f.flavor.icon\"></yvc-icon>\n {{ f.label }}\n </div>\n }\n</yuv-list>\n\n<input style=\"display: none\" multiple=\"true\" #fileInput type=\"file\" (change)=\"createDocument(fileInput)\" />\n", styles: [":host{background-color:var(--color-accent);color:var(--color-accent-tone);display:flex;flex-flow:column;padding:calc(var(--app-pane-padding) / 2) 0;border-radius:0 4px 4px}:host yuv-list{outline:0;--list-item-current-background: rgb(from var(--color-accent-tone) r g b / .2)}:host yuv-list [yuvListItem]{--icon-size: 18px;cursor:pointer;display:flex;align-items:center;gap:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)}:host yuv-list [yuvListItem]:hover{background-color:var(--list-item-current-background)}:host yuv-list [yuvListItem]:nth-child(2){border-block-end:1px solid rgb(from var(--color-accent-tone) r g b/.2)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ListComponent, selector: "yuv-list", inputs: ["multiselect", "disableSelection"], outputs: ["itemSelect", "itemFocus"] }, { kind: "directive", type: ListItemDirective, selector: "[yuvListItem]", inputs: ["disabled", "active", "selected"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i1.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }] }); }
|
|
104
|
+
}
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddButtonOverlayComponent, decorators: [{
|
|
106
|
+
type: Component,
|
|
107
|
+
args: [{ selector: 'ymd-add-button-overlay', standalone: true, imports: [CommonModule, ListComponent, ListItemDirective, TranslateModule, YvcIconModule], template: "<yuv-list (itemSelect)=\"onListItemSelect($event)\" selectOnEnter=\"true\">\n @for (i of defaultItems; track $index) {\n <div yuvListItem>\n <yvc-icon [svg]=\"i.icon\"></yvc-icon>\n {{ i.label }}\n </div>\n }\n\n <!-- Upload file with flavor -->\n @for (f of flavorListItems; track f.flavor.id) {\n <div class=\"flavor\" yuvListItem>\n <yvc-icon [svg]=\"f.flavor.icon\"></yvc-icon>\n {{ f.label }}\n </div>\n }\n</yuv-list>\n\n<input style=\"display: none\" multiple=\"true\" #fileInput type=\"file\" (change)=\"createDocument(fileInput)\" />\n", styles: [":host{background-color:var(--color-accent);color:var(--color-accent-tone);display:flex;flex-flow:column;padding:calc(var(--app-pane-padding) / 2) 0;border-radius:0 4px 4px}:host yuv-list{outline:0;--list-item-current-background: rgb(from var(--color-accent-tone) r g b / .2)}:host yuv-list [yuvListItem]{--icon-size: 18px;cursor:pointer;display:flex;align-items:center;gap:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)}:host yuv-list [yuvListItem]:hover{background-color:var(--list-item-current-background)}:host yuv-list [yuvListItem]:nth-child(2){border-block-end:1px solid rgb(from var(--color-accent-tone) r g b/.2)}\n"] }]
|
|
108
|
+
}] });
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWJ1dHRvbi1vdmVybGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBwcy9kcml2ZS9zcmMvbGliL2NvbXBvbmVudHMvYWRkLWJ1dHRvbi9hZGQtYnV0dG9uLW92ZXJsYXkvYWRkLWJ1dHRvbi1vdmVybGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBwcy9kcml2ZS9zcmMvbGliL2NvbXBvbmVudHMvYWRkLWJ1dHRvbi9hZGQtYnV0dG9uLW92ZXJsYXkvYWRkLWJ1dHRvbi1vdmVybGF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFzQixhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEksT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pGLE9BQU8sRUFBZ0IsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOzs7QUFTNUYsTUFBTSxPQUFPLHlCQUF5QjtJQVB0QztR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QUMsWUFBWSxDQUFDLENBQUM7Z0JBQzlCLENBQUM7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLENBQUM7b0JBQzdDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLEVBQUU7d0JBQzFELGdCQUFnQixFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ25FLE1BQU0sRUFBRSxJQUFJLENBQUMsbUJBQW1CO3FCQUNqQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQztpQkFDRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQzsrR0F6RlUseUJBQXlCO21HQUF6Qix5QkFBeUIsME1DbkJ0Qyx1a0JBa0JBLDZ0QkRIWSxZQUFZLCtCQUFFLGFBQWEsd0lBQUUsaUJBQWlCLHFHQUFFLGVBQWUsOEJBQUUsYUFBYTs7NEZBSTdFLHlCQUF5QjtrQkFQckMsU0FBUzsrQkFDRSx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VPYmplY3RUeXBlRmllbGQsIE9iamVjdENyZWF0ZUZsYXZvciwgU3lzdGVtU2VydmljZSwgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBMaXN0Q29tcG9uZW50LCBMaXN0SXRlbURpcmVjdGl2ZSB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWZyYW1ld29yay9saXN0JztcbmltcG9ydCB7IE9iamVjdEZsYXZvciwgU2hlbGxTZXJ2aWNlIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtc2hlbGwtY29yZSc7XG5pbXBvcnQgeyBZdmNJY29uTW9kdWxlIH0gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgWXZjT3ZlcmxheVJlZiwgWXZjT3ZlcmxheVNlcnZpY2UgfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvb3ZlcmxheSc7XG5pbXBvcnQgeyBBUFBfRFJJVkVfSUNPTlMgfSBmcm9tICcuLi8uLi8uLi9kcml2ZS5pY29ucyc7XG5pbXBvcnQgeyBDcmVhdGVSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9kcml2ZS9kcml2ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRHJpdmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZHJpdmUvZHJpdmUuc2VydmljZSc7XG5pbXBvcnQgeyBDcmVhdGVGb2xkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9vdmVybGF5L2NyZWF0ZS1mb2xkZXIvY3JlYXRlLWZvbGRlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd5bWQtYWRkLWJ1dHRvbi1vdmVybGF5JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTGlzdENvbXBvbmVudCwgTGlzdEl0ZW1EaXJlY3RpdmUsIFRyYW5zbGF0ZU1vZHVsZSwgWXZjSWNvbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtYnV0dG9uLW92ZXJsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYWRkLWJ1dHRvbi1vdmVybGF5LmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBBZGRCdXR0b25PdmVybGF5Q29tcG9uZW50IHtcbiAgI292ZXJsYXkgPSBpbmplY3QoWXZjT3ZlcmxheVNlcnZpY2UpO1xuICAjb1JlZiA9IGluamVjdChZdmNPdmVybGF5UmVmKTtcbiAgI2RyaXZlID0gaW5qZWN0KERyaXZlU2VydmljZSk7XG4gICNzaGVsbCA9IGluamVjdChTaGVsbFNlcnZpY2UpO1xuICAjc3lzdGVtID0gaW5qZWN0KFN5c3RlbVNlcnZpY2UpO1xuICBwcml2YXRlIHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcblxuICBmaWxlSW5wdXQgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZj4oJ2ZpbGVJbnB1dCcpO1xuXG4gICN1cGxvYWRUYXJnZXRGbGF2b3I/OiBPYmplY3RDcmVhdGVGbGF2b3I7XG5cbiAgaWNvbnMgPSB7XG4gICAgZm9sZGVyOiBBUFBfRFJJVkVfSUNPTlMuY3JlYXRlRm9sZGVyLFxuICAgIGZpbGU6IEFQUF9EUklWRV9JQ09OUy5jcmVhdGVGaWxlXG4gIH07XG5cbiAgZGVmYXVsdEl0ZW1zID0gW1xuICAgIHsgaWNvbjogdGhpcy5pY29ucy5mb2xkZXIsIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuYXBwLmRyaXZlLmNyZWF0ZS5mb2xkZXInKSB9LFxuICAgIHsgaWNvbjogdGhpcy5pY29ucy5maWxlLCBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgneXV2LmFwcC5kcml2ZS5jcmVhdGUuZmlsZScpIH1cbiAgXTtcblxuICBmbGF2b3JMaXN0SXRlbXM6IHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGZsYXZvcjogT2JqZWN0Q3JlYXRlRmxhdm9yO1xuICB9W10gPSB0aGlzLiNzaGVsbC5nZXRPYmplY3RDcmVhdGVGbGF2b3JzKCkubWFwKChmbGF2b3IpID0+ICh7XG4gICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZmxhdm9yLmlkKSxcbiAgICBmbGF2b3JcbiAgfSkpO1xuXG4gIG9uTGlzdEl0ZW1TZWxlY3QoaWR4OiBudW1iZXJbXSkge1xuICAgIGlmIChpZHgubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZmkgPSBpZHhbMF07XG4gICAgaWYgKGZpID09PSAwKSB7XG4gICAgICB0aGlzLnN0YXJ0Q3JlYXRlRm9sZGVyKCk7XG4gICAgfSBlbHNlIGlmIChmaSA9PT0gMSkge1xuICAgICAgdGhpcy5zdGFydENyZWF0ZURvY3VtZW50KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhcnRDcmVhdGVEb2N1bWVudCgpO1xuICAgICAgdGhpcy4jdXBsb2FkVGFyZ2V0Rmxhdm9yID0gdGhpcy5mbGF2b3JMaXN0SXRlbXNbZmkgLSB0aGlzLmRlZmF1bHRJdGVtcy5sZW5ndGhdPy5mbGF2b3I7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRDcmVhdGVEb2N1bWVudCgpIHtcbiAgICBpZiAoIXRoaXMuI3VwbG9hZFRhcmdldEZsYXZvciB8fCB0aGlzLiN1cGxvYWRUYXJnZXRGbGF2b3Iud2l0aEZpbGVVcGxvYWQpIHtcbiAgICAgIHRoaXMuZmlsZUlucHV0KCkubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH0gZWxzZSBpZiAodGhpcy4jdXBsb2FkVGFyZ2V0Rmxhdm9yPy5hcHBseUNvbXBvbmVudCkge1xuICAgICAgdGhpcy4jb3ZlcmxheS5vcGVuKHRoaXMuI3VwbG9hZFRhcmdldEZsYXZvci5hcHBseUNvbXBvbmVudCwge1xuICAgICAgICBmbGF2b3I6IHRoaXMuI3VwbG9hZFRhcmdldEZsYXZvcixcbiAgICAgICAgb25DYW5jZWw6ICgpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnY2FuY2VsJyk7ICAgICAgICAgIFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuI3VwbG9hZFRhcmdldEZsYXZvciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBzdGFydENyZWF0ZUZvbGRlcigpIHtcbiAgICB0aGlzLiNvUmVmPy5jbG9zZSgpO1xuICAgIHRoaXMuI292ZXJsYXkub3BlbihDcmVhdGVGb2xkZXJDb21wb25lbnQsIG51bGwsIHtcbiAgICAgIHdpZHRoOiAnNDAwcHgnLFxuICAgICAgbWF4V2lkdGg6ICc5MHZ3J1xuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlRG9jdW1lbnQoaW5wdXRFbDogSFRNTElucHV0RWxlbWVudCkge1xuICAgIHRoaXMuI29SZWY/LmNsb3NlKCk7XG4gICAgY29uc3QgZmlsZXM6IEZpbGVbXSB8IHVuZGVmaW5lZCA9IGlucHV0RWwuZmlsZXMgPyBBcnJheS5mcm9tKGlucHV0RWwuZmlsZXMpIDogdW5kZWZpbmVkO1xuICAgIGlmIChmaWxlcykge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuI3VwbG9hZFRhcmdldEZsYXZvcj8uc290ID8geyBbQmFzZU9iamVjdFR5cGVGaWVsZC5TRUNPTkRBUllfT0JKRUNUX1RZUEVfSURTXTogW3RoaXMuI3VwbG9hZFRhcmdldEZsYXZvci5zb3RdIH0gOiB1bmRlZmluZWQ7XG4gICAgICB0aGlzLiNkcml2ZS5zZXRCdXN5KHRydWUpO1xuICAgICAgdGhpcy4jZHJpdmVcbiAgICAgICAgLmNoZWNrTmFtZXNBbmRVcGxvYWQoZmlsZXMsIGRhdGEpXG4gICAgICAgIC5zdWJzY3JpYmUoKGNyZWF0ZVJlc3VsdDogQ3JlYXRlUmVzdWx0W10pID0+IHtcbiAgICAgICAgICBjb25zdCB1cGxvYWRFcnJvcnMgPSBjcmVhdGVSZXN1bHQuZmlsdGVyKChyKSA9PiAhIXIuZXJyb3IpO1xuICAgICAgICAgIGlmICh1cGxvYWRFcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgdXBsb2FkIGVycm9yc1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcih1cGxvYWRFcnJvcnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy4jdXBsb2FkVGFyZ2V0Rmxhdm9yPy5hcHBseUNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy4jb3ZlcmxheS5vcGVuKHRoaXMuI3VwbG9hZFRhcmdldEZsYXZvci5hcHBseUNvbXBvbmVudCwge1xuICAgICAgICAgICAgICBjcmVhdGVkT2JqZWN0SURzOiBjcmVhdGVSZXN1bHQuZmlsdGVyKChyKSA9PiByLmlkKS5tYXAoKHIpID0+IHIuaWQpLFxuICAgICAgICAgICAgICBmbGF2b3I6IHRoaXMuI3VwbG9hZFRhcmdldEZsYXZvclxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuI3VwbG9hZFRhcmdldEZsYXZvciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSlcbiAgICAgICAgLmFkZCgoKSA9PiB0aGlzLiNkcml2ZS5zZXRCdXN5KGZhbHNlKSk7XG4gICAgfVxuICB9XG59XG4iLCI8eXV2LWxpc3QgKGl0ZW1TZWxlY3QpPVwib25MaXN0SXRlbVNlbGVjdCgkZXZlbnQpXCIgc2VsZWN0T25FbnRlcj1cInRydWVcIj5cbiAgQGZvciAoaSBvZiBkZWZhdWx0SXRlbXM7IHRyYWNrICRpbmRleCkge1xuICAgIDxkaXYgeXV2TGlzdEl0ZW0+XG4gICAgICA8eXZjLWljb24gW3N2Z109XCJpLmljb25cIj48L3l2Yy1pY29uPlxuICAgICAge3sgaS5sYWJlbCB9fVxuICAgIDwvZGl2PlxuICB9XG5cbiAgPCEtLSBVcGxvYWQgZmlsZSB3aXRoIGZsYXZvciAtLT5cbiAgQGZvciAoZiBvZiBmbGF2b3JMaXN0SXRlbXM7IHRyYWNrIGYuZmxhdm9yLmlkKSB7XG4gICAgPGRpdiBjbGFzcz1cImZsYXZvclwiIHl1dkxpc3RJdGVtPlxuICAgICAgPHl2Yy1pY29uIFtzdmddPVwiZi5mbGF2b3IuaWNvblwiPjwveXZjLWljb24+XG4gICAgICB7eyBmLmxhYmVsIH19XG4gICAgPC9kaXY+XG4gIH1cbjwveXV2LWxpc3Q+XG5cbjxpbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiBtdWx0aXBsZT1cInRydWVcIiAjZmlsZUlucHV0IHR5cGU9XCJmaWxlXCIgKGNoYW5nZSk9XCJjcmVhdGVEb2N1bWVudChmaWxlSW5wdXQpXCIgLz5cbiJdfQ==
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, ElementRef, HostBinding, inject, input } from '@angular/core';
|
|
3
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
+
import { YvcIconModule } from '@yuuvis/components/icon';
|
|
5
|
+
import { YvcOverlayService } from '@yuuvis/components/overlay';
|
|
6
|
+
import { APP_DRIVE_ICONS } from '../../drive.icons';
|
|
7
|
+
import { AddButtonOverlayComponent } from './add-button-overlay/add-button-overlay.component';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@yuuvis/components/icon";
|
|
10
|
+
import * as i2 from "@yuuvis/client-core";
|
|
11
|
+
export class AddButtonComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.overlay = inject(YvcOverlayService);
|
|
14
|
+
this.elRef = inject(ElementRef);
|
|
15
|
+
this.popoverOpen = false;
|
|
16
|
+
this.icon = APP_DRIVE_ICONS.addCircle;
|
|
17
|
+
this.disabled = input(false);
|
|
18
|
+
}
|
|
19
|
+
open() {
|
|
20
|
+
this._oRef = this.overlay.open(AddButtonOverlayComponent, null, {
|
|
21
|
+
overlayClass: null,
|
|
22
|
+
focusHandled: true
|
|
23
|
+
}, this.elRef.nativeElement);
|
|
24
|
+
this.popoverOpen = true;
|
|
25
|
+
this._oRef.afterClosed$.subscribe(() => {
|
|
26
|
+
this.popoverOpen = false;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: AddButtonComponent, isStandalone: true, selector: "ymd-add-button", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.popover": "this.popoverOpen" } }, ngImport: i0, template: "\n <button class=\"toggle primary\" [disabled]=\"disabled()\" (click)=\"open()\">\n <yvc-icon [svg]=\"icon\"></yvc-icon><span class=\"label\">{{ 'yuv.app.drive.create.label' | translate }}</span>\n </button>\n\n", styles: [":host{--border-radius: var(--ribbon-button-border-radius)}:host.popover button{border-radius:4px 4px 0 0;pointer-events:none}:host button{padding:var(--ribbon-button-padding);border-radius:var(--border-radius);display:flex;gap:calc(var(--ribbon-icon-size) / 3);padding-inline-end:calc(var(--ribbon-icon-size) / 2)}:host button yvc-icon{--icon-size: var(--ribbon-icon-size)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i1.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
|
|
31
|
+
}
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddButtonComponent, decorators: [{
|
|
33
|
+
type: Component,
|
|
34
|
+
args: [{ selector: 'ymd-add-button', standalone: true, imports: [CommonModule, YvcIconModule, TranslateModule], template: "\n <button class=\"toggle primary\" [disabled]=\"disabled()\" (click)=\"open()\">\n <yvc-icon [svg]=\"icon\"></yvc-icon><span class=\"label\">{{ 'yuv.app.drive.create.label' | translate }}</span>\n </button>\n\n", styles: [":host{--border-radius: var(--ribbon-button-border-radius)}:host.popover button{border-radius:4px 4px 0 0;pointer-events:none}:host button{padding:var(--ribbon-button-padding);border-radius:var(--border-radius);display:flex;gap:calc(var(--ribbon-icon-size) / 3);padding-inline-end:calc(var(--ribbon-icon-size) / 2)}:host button yvc-icon{--icon-size: var(--ribbon-icon-size)}\n"] }]
|
|
35
|
+
}], propDecorators: { popoverOpen: [{
|
|
36
|
+
type: HostBinding,
|
|
37
|
+
args: ['class.popover']
|
|
38
|
+
}] } });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwcHMvZHJpdmUvc3JjL2xpYi9jb21wb25lbnRzL2FkZC1idXR0b24vYWRkLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwcHMvZHJpdmUvc3JjL2xpYi9jb21wb25lbnRzL2FkZC1idXR0b24vYWRkLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOzs7O0FBUzlGLE1BQU0sT0FBTyxrQkFBa0I7SUFQL0I7UUFRVSxZQUFPLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDcEMsVUFBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUlMLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRWxELFNBQUksR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDO1FBRWpDLGFBQVEsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7S0FXbEM7SUFUQyxJQUFJO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLEVBQUU7WUFDOUQsWUFBWSxFQUFFLElBQUk7WUFDbEIsWUFBWSxFQUFFLElBQUk7U0FDbkIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUE7UUFBQSxDQUFDLENBQUMsQ0FBQTtJQUM5QixDQUFDOytHQXBCVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixzUkNmL0IsZ09BS0EsZ2JETVksWUFBWSw4QkFBRSxhQUFhLDhIQUFFLGVBQWU7OzRGQUkzQyxrQkFBa0I7a0JBUDlCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUM7OEJBVXpCLFdBQVc7c0JBQXhDLFdBQVc7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFl2Y0ljb25Nb2R1bGUgfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBZdmNPdmVybGF5UmVmLCBZdmNPdmVybGF5U2VydmljZSB9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9vdmVybGF5JztcbmltcG9ydCB7IEFQUF9EUklWRV9JQ09OUyB9IGZyb20gJy4uLy4uL2RyaXZlLmljb25zJztcbmltcG9ydCB7IEFkZEJ1dHRvbk92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuL2FkZC1idXR0b24tb3ZlcmxheS9hZGQtYnV0dG9uLW92ZXJsYXkuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneW1kLWFkZC1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBZdmNJY29uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9hZGQtYnV0dG9uLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBBZGRCdXR0b25Db21wb25lbnQge1xuICBwcml2YXRlIG92ZXJsYXkgPSBpbmplY3QoWXZjT3ZlcmxheVNlcnZpY2UpO1xuICBwcml2YXRlIGVsUmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIHByaXZhdGUgX29SZWY/OiBZdmNPdmVybGF5UmVmO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucG9wb3ZlcicpIHBvcG92ZXJPcGVuID0gZmFsc2U7XG5cbiAgaWNvbiA9IEFQUF9EUklWRV9JQ09OUy5hZGRDaXJjbGU7XG5cbiAgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgb3BlbigpIHtcbiAgICB0aGlzLl9vUmVmID0gdGhpcy5vdmVybGF5Lm9wZW4oQWRkQnV0dG9uT3ZlcmxheUNvbXBvbmVudCwgbnVsbCwge1xuICAgICAgb3ZlcmxheUNsYXNzOiBudWxsLFxuICAgICAgZm9jdXNIYW5kbGVkOiB0cnVlXG4gICAgfSwgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnBvcG92ZXJPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLl9vUmVmLmFmdGVyQ2xvc2VkJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5wb3BvdmVyT3BlbiA9IGZhbHNlfSlcbiAgfVxufVxuIiwiXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvZ2dsZSBwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIiAoY2xpY2spPVwib3BlbigpXCI+XG4gICAgICA8eXZjLWljb24gW3N2Z109XCJpY29uXCI+PC95dmMtaWNvbj48c3BhbiBjbGFzcz1cImxhYmVsXCI+e3sgJ3l1di5hcHAuZHJpdmUuY3JlYXRlLmxhYmVsJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cblxuIl19
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
|
|
2
|
+
import { Directionality } from '@angular/cdk/bidi';
|
|
3
|
+
import { ChangeDetectionStrategy, Component, effect, HostListener, inject, viewChildren } from '@angular/core';
|
|
4
|
+
import { ActivatedRoute, Router } from '@angular/router';
|
|
5
|
+
import { TranslateModule } from '@yuuvis/client-core';
|
|
6
|
+
import { ListItemDirective } from '@yuuvis/client-framework/list';
|
|
7
|
+
import { YvcDragScrollModule } from '@yuuvis/components/drag-scroll';
|
|
8
|
+
import { YvcIconModule } from '@yuuvis/components/icon';
|
|
9
|
+
import { APP_DRIVE_ICONS } from '../../drive.icons';
|
|
10
|
+
import { DRIVE_ROOT_FOLDER_ID, DriveService } from '../../services';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@yuuvis/components/icon";
|
|
13
|
+
import * as i2 from "@yuuvis/components/drag-scroll";
|
|
14
|
+
import * as i3 from "@yuuvis/client-core";
|
|
15
|
+
export class BreadcrumbComponent {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.#drive = inject(DriveService);
|
|
18
|
+
this.#router = inject(Router);
|
|
19
|
+
this.#dir = inject(Directionality);
|
|
20
|
+
this.route = inject(ActivatedRoute);
|
|
21
|
+
this.homeIcon = APP_DRIVE_ICONS.home;
|
|
22
|
+
this.breadcrumb = this.#drive.state$.breadcrumb;
|
|
23
|
+
this.items = viewChildren(ListItemDirective);
|
|
24
|
+
this.#itemsEffect = effect(() => {
|
|
25
|
+
const i = this.items();
|
|
26
|
+
if (this.#keyManager)
|
|
27
|
+
this.#keyManager.destroy();
|
|
28
|
+
this.#keyManager = new ActiveDescendantKeyManager(i).withWrap().withHorizontalOrientation(this.#dir.value);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
#drive;
|
|
32
|
+
#router;
|
|
33
|
+
#dir;
|
|
34
|
+
onBlur() {
|
|
35
|
+
this.#keyManager.setActiveItem(-1);
|
|
36
|
+
}
|
|
37
|
+
onKeydown(event) {
|
|
38
|
+
if (event.code === 'Space' || event.code === 'Enter') {
|
|
39
|
+
const aii = this.#keyManager.activeItemIndex !== null ? this.#keyManager.activeItemIndex : -1;
|
|
40
|
+
if (aii >= 0) {
|
|
41
|
+
this.navigation(aii === 0 ? DRIVE_ROOT_FOLDER_ID : this.breadcrumb().items[aii - 1].id);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else
|
|
45
|
+
this.#keyManager?.onKeydown(event);
|
|
46
|
+
}
|
|
47
|
+
#keyManager;
|
|
48
|
+
#itemsEffect;
|
|
49
|
+
navigation(id, event) {
|
|
50
|
+
event && event.preventDefault();
|
|
51
|
+
const nav = ['..'];
|
|
52
|
+
this.#keyManager.setActiveItem(-1);
|
|
53
|
+
this.#router.navigate([...nav, id], { relativeTo: this.route });
|
|
54
|
+
}
|
|
55
|
+
ngOnDestroy() {
|
|
56
|
+
this.#keyManager?.destroy();
|
|
57
|
+
}
|
|
58
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
59
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BreadcrumbComponent, isStandalone: true, selector: "ymd-breadcrumb", host: { attributes: { "tabindex": "0" }, listeners: { "blur": "onBlur()", "keydown": "onKeydown($event)" }, classAttribute: "breadcrumb" }, viewQueries: [{ propertyName: "items", predicate: ListItemDirective, descendants: true, isSignal: true }], ngImport: i0, template: "@let bread = breadcrumb();\n\n<nav aria-label=\"breadcrumb\">\n <ol>\n @if (bread.items.length) {\n <li>\n <a tabindex=\"-1\" yuvListItem draggable=\"false\" class=\"home\" href=\"\" (click)=\"navigation('root', $event)\">\n <yvc-icon [svg]=\"homeIcon\" title=\"{{ 'yuv.app.drive.folder-tree.mydrive' | translate }}\" />\n </a>\n </li>\n\n <div class=\"spacer\" aria-label=\"hidden\"></div>\n\n @if (bread.partial) {\n <div class=\"partial\" aria-label=\"hidden\"></div>\n <div class=\"spacer\" aria-label=\"hidden\"></div>\n }\n\n <li yvcDragScroll>\n <ol>\n @for (crumb of bread.items; track $index) {\n @if (!$last) {\n <li>\n <a tabindex=\"-1\" yuvListItem draggable=\"false\" href=\"\" (click)=\"navigation(crumb.id, $event)\">\n {{ crumb.name }}\n </a>\n </li>\n } @else {\n <li aria-current=\"location\">{{ crumb.name }}</li>\n }\n @if (!$last) {\n <div class=\"spacer\" aria-label=\"hidden\"></div>\n }\n }\n </ol>\n </li>\n } @else {\n <li aria-current=\"location\"><yvc-icon [svg]=\"homeIcon\" title=\"{{ 'yuv.app.drive.folder-tree.mydrive' | translate }}\" /></li>\n }\n </ol>\n</nav>\n", styles: ["@charset \"UTF-8\";:host{color:var(--text-color-caption)}:host [aria-label=breadcrumb]{overflow:hidden;display:flex;align-items:center}:host [aria-current=location],:host a.home{--icon-size: 18px;display:flex;align-items:center;justify-content:center}:host ol{list-style:none;margin:0;padding:0;align-items:center;display:flex;flex-wrap:nowrap}:host li{align-items:center;display:flex;white-space:nowrap;cursor:default}:host nav>ol{overflow:hidden}:host nav>ol li[yvcDragScroll]{overflow-x:auto;--scrollbar-outer-size: 0px;--scrollbar-inner-size: 0px}:host .spacer:after{content:\"\\bb\";display:block;margin:0 4px}:host .partial:after{content:\"...\";display:block;padding:4px}:host [aria-current=location],:host [yuvListItem]{margin:2px;padding:2px;line-height:1em}:host [yuvListItem]{text-decoration:none;white-space:nowrap;border-radius:2px;color:var(--text-color-caption)}:host [yuvListItem][aria-current=true],:host [yuvListItem]:hover{color:var(--text-color-body);background-color:var(--item-focus-background-color);outline:2px solid var(--item-focus-background-color)}:host [yuvListItem][aria-current=true]{outline-color:var(--text-color-caption)}\n"], dependencies: [{ kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i1.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "ngmodule", type: YvcDragScrollModule }, { kind: "directive", type: i2.DragScrollDirective, selector: "[yvcDragScroll]" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "directive", type: ListItemDirective, selector: "[yuvListItem]", inputs: ["disabled", "active", "selected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
60
|
+
}
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BreadcrumbComponent, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{ selector: 'ymd-breadcrumb', standalone: true, imports: [YvcIconModule, YvcDragScrollModule, TranslateModule, ListItemDirective], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
64
|
+
class: 'breadcrumb',
|
|
65
|
+
tabindex: '0'
|
|
66
|
+
}, template: "@let bread = breadcrumb();\n\n<nav aria-label=\"breadcrumb\">\n <ol>\n @if (bread.items.length) {\n <li>\n <a tabindex=\"-1\" yuvListItem draggable=\"false\" class=\"home\" href=\"\" (click)=\"navigation('root', $event)\">\n <yvc-icon [svg]=\"homeIcon\" title=\"{{ 'yuv.app.drive.folder-tree.mydrive' | translate }}\" />\n </a>\n </li>\n\n <div class=\"spacer\" aria-label=\"hidden\"></div>\n\n @if (bread.partial) {\n <div class=\"partial\" aria-label=\"hidden\"></div>\n <div class=\"spacer\" aria-label=\"hidden\"></div>\n }\n\n <li yvcDragScroll>\n <ol>\n @for (crumb of bread.items; track $index) {\n @if (!$last) {\n <li>\n <a tabindex=\"-1\" yuvListItem draggable=\"false\" href=\"\" (click)=\"navigation(crumb.id, $event)\">\n {{ crumb.name }}\n </a>\n </li>\n } @else {\n <li aria-current=\"location\">{{ crumb.name }}</li>\n }\n @if (!$last) {\n <div class=\"spacer\" aria-label=\"hidden\"></div>\n }\n }\n </ol>\n </li>\n } @else {\n <li aria-current=\"location\"><yvc-icon [svg]=\"homeIcon\" title=\"{{ 'yuv.app.drive.folder-tree.mydrive' | translate }}\" /></li>\n }\n </ol>\n</nav>\n", styles: ["@charset \"UTF-8\";:host{color:var(--text-color-caption)}:host [aria-label=breadcrumb]{overflow:hidden;display:flex;align-items:center}:host [aria-current=location],:host a.home{--icon-size: 18px;display:flex;align-items:center;justify-content:center}:host ol{list-style:none;margin:0;padding:0;align-items:center;display:flex;flex-wrap:nowrap}:host li{align-items:center;display:flex;white-space:nowrap;cursor:default}:host nav>ol{overflow:hidden}:host nav>ol li[yvcDragScroll]{overflow-x:auto;--scrollbar-outer-size: 0px;--scrollbar-inner-size: 0px}:host .spacer:after{content:\"\\bb\";display:block;margin:0 4px}:host .partial:after{content:\"...\";display:block;padding:4px}:host [aria-current=location],:host [yuvListItem]{margin:2px;padding:2px;line-height:1em}:host [yuvListItem]{text-decoration:none;white-space:nowrap;border-radius:2px;color:var(--text-color-caption)}:host [yuvListItem][aria-current=true],:host [yuvListItem]:hover{color:var(--text-color-body);background-color:var(--item-focus-background-color);outline:2px solid var(--item-focus-background-color)}:host [yuvListItem][aria-current=true]{outline-color:var(--text-color-caption)}\n"] }]
|
|
67
|
+
}], propDecorators: { onBlur: [{
|
|
68
|
+
type: HostListener,
|
|
69
|
+
args: ['blur']
|
|
70
|
+
}], onKeydown: [{
|
|
71
|
+
type: HostListener,
|
|
72
|
+
args: ['keydown', ['$event']]
|
|
73
|
+
}] } });
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwcHMvZHJpdmUvc3JjL2xpYi9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwcHMvZHJpdmUvc3JjL2xpYi9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBYSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBY3BFLE1BQU0sT0FBTyxtQkFBbUI7SUFaaEM7UUFhVyxXQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlCLFlBQU8sR0FBRyxNQUFNLENBQUMsTUFB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O3dCQUNuQixRQUFRLEVBQUUsR0FBRztxQkFDZDs4QkFTRCxNQUFNO3NCQURMLFlBQVk7dUJBQUMsTUFBTTtnQkFNcEIsU0FBUztzQkFEUixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBlZmZlY3QsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBPbkRlc3Ryb3ksIHZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IExpc3RJdGVtRGlyZWN0aXZlIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtZnJhbWV3b3JrL2xpc3QnO1xuaW1wb3J0IHsgWXZjRHJhZ1Njcm9sbE1vZHVsZSB9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9kcmFnLXNjcm9sbCc7XG5pbXBvcnQgeyBZdmNJY29uTW9kdWxlIH0gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgQVBQX0RSSVZFX0lDT05TIH0gZnJvbSAnLi4vLi4vZHJpdmUuaWNvbnMnO1xuaW1wb3J0IHsgRFJJVkVfUk9PVF9GT0xERVJfSUQsIERyaXZlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneW1kLWJyZWFkY3J1bWInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbWXZjSWNvbk1vZHVsZSwgWXZjRHJhZ1Njcm9sbE1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBMaXN0SXRlbURpcmVjdGl2ZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2JyZWFkY3J1bWIuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnYnJlYWRjcnVtYicsXG4gICAgdGFiaW5kZXg6ICcwJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIEJyZWFkY3J1bWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICByZWFkb25seSAjZHJpdmUgPSBpbmplY3QoRHJpdmVTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICByZWFkb25seSAjZGlyID0gaW5qZWN0KERpcmVjdGlvbmFsaXR5KTtcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpXG4gIG9uQmx1cigpIHtcbiAgICB0aGlzLiNrZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oLTEpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5jb2RlID09PSAnU3BhY2UnIHx8IGV2ZW50LmNvZGUgPT09ICdFbnRlcicpIHtcbiAgICAgIGNvbnN0IGFpaTogbnVtYmVyID0gdGhpcy4ja2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXggIT09IG51bGwgPyB0aGlzLiNrZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCA6IC0xO1xuICAgICAgaWYgKGFpaSA+PSAwKSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbihhaWkgPT09IDAgPyBEUklWRV9ST09UX0ZPTERFUl9JRCA6IHRoaXMuYnJlYWRjcnVtYigpLml0ZW1zW2FpaSAtIDFdLmlkKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgdGhpcy4ja2V5TWFuYWdlcj8ub25LZXlkb3duKGV2ZW50KTtcbiAgfVxuXG4gICNrZXlNYW5hZ2VyITogQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI8TGlzdEl0ZW1EaXJlY3RpdmU+O1xuICBob21lSWNvbiA9IEFQUF9EUklWRV9JQ09OUy5ob21lO1xuXG4gIGJyZWFkY3J1bWIgPSB0aGlzLiNkcml2ZS5zdGF0ZSQuYnJlYWRjcnVtYjtcbiAgaXRlbXMgPSB2aWV3Q2hpbGRyZW4oTGlzdEl0ZW1EaXJlY3RpdmUpO1xuICAjaXRlbXNFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGkgPSB0aGlzLml0ZW1zKCk7XG4gICAgaWYgKHRoaXMuI2tleU1hbmFnZXIpIHRoaXMuI2tleU1hbmFnZXIuZGVzdHJveSgpO1xuICAgIHRoaXMuI2tleU1hbmFnZXIgPSBuZXcgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIoaSkud2l0aFdyYXAoKS53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHRoaXMuI2Rpci52YWx1ZSk7XG4gIH0pO1xuXG4gIG5hdmlnYXRpb24oaWQ6IHN0cmluZywgZXZlbnQ/OiBNb3VzZUV2ZW50IHwgRXZlbnQpIHtcbiAgICBldmVudCAmJiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IG5hdiA9IFsnLi4nXTtcbiAgICB0aGlzLiNrZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oLTEpO1xuICAgIHRoaXMuI3JvdXRlci5uYXZpZ2F0ZShbLi4ubmF2LCBpZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI2tleU1hbmFnZXI/LmRlc3Ryb3koKTtcbiAgfVxufVxuIiwiQGxldCBicmVhZCA9IGJyZWFkY3J1bWIoKTtcblxuPG5hdiBhcmlhLWxhYmVsPVwiYnJlYWRjcnVtYlwiPlxuICA8b2w+XG4gICAgQGlmIChicmVhZC5pdGVtcy5sZW5ndGgpIHtcbiAgICAgIDxsaT5cbiAgICAgICAgPGEgdGFiaW5kZXg9XCItMVwiIHl1dkxpc3RJdGVtIGRyYWdnYWJsZT1cImZhbHNlXCIgY2xhc3M9XCJob21lXCIgaHJlZj1cIlwiIChjbGljayk9XCJuYXZpZ2F0aW9uKCdyb290JywgJGV2ZW50KVwiPlxuICAgICAgICAgIDx5dmMtaWNvbiBbc3ZnXT1cImhvbWVJY29uXCIgdGl0bGU9XCJ7eyAneXV2LmFwcC5kcml2ZS5mb2xkZXItdHJlZS5teWRyaXZlJyB8IHRyYW5zbGF0ZSB9fVwiIC8+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZXJcIiBhcmlhLWxhYmVsPVwiaGlkZGVuXCI+PC9kaXY+XG5cbiAgICAgIEBpZiAoYnJlYWQucGFydGlhbCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicGFydGlhbFwiIGFyaWEtbGFiZWw9XCJoaWRkZW5cIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlclwiIGFyaWEtbGFiZWw9XCJoaWRkZW5cIj48L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPGxpIHl2Y0RyYWdTY3JvbGw+XG4gICAgICAgIDxvbD5cbiAgICAgICAgICBAZm9yIChjcnVtYiBvZiBicmVhZC5pdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICBAaWYgKCEkbGFzdCkge1xuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPGEgdGFiaW5kZXg9XCItMVwiIHl1dkxpc3RJdGVtIGRyYWdnYWJsZT1cImZhbHNlXCIgaHJlZj1cIlwiIChjbGljayk9XCJuYXZpZ2F0aW9uKGNydW1iLmlkLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICB7eyBjcnVtYi5uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxsaSBhcmlhLWN1cnJlbnQ9XCJsb2NhdGlvblwiPnt7IGNydW1iLm5hbWUgfX08L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICghJGxhc3QpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlclwiIGFyaWEtbGFiZWw9XCJoaWRkZW5cIj48L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvb2w+XG4gICAgICA8L2xpPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGxpIGFyaWEtY3VycmVudD1cImxvY2F0aW9uXCI+PHl2Yy1pY29uIFtzdmddPVwiaG9tZUljb25cIiB0aXRsZT1cInt7ICd5dXYuYXBwLmRyaXZlLmZvbGRlci10cmVlLm15ZHJpdmUnIHwgdHJhbnNsYXRlIH19XCIgLz48L2xpPlxuICAgIH1cbiAgPC9vbD5cbjwvbmF2PlxuIl19
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, inject, viewChild } from '@angular/core';
|
|
3
|
+
import { ActivatedRoute, Router, RouterModule } from '@angular/router';
|
|
4
|
+
import { TranslateModule, TranslateService } from '@yuuvis/client-core';
|
|
5
|
+
import { FocusWithinDirective } from '@yuuvis/client-framework/common';
|
|
6
|
+
import { TreeComponent } from '@yuuvis/client-framework/tree';
|
|
7
|
+
import { APP_SCHEMA } from '../../drive.schema';
|
|
8
|
+
import { DRIVE_QUERY_FOLDER_ID, DRIVE_ROOT_FOLDER_ID } from '../../services';
|
|
9
|
+
import { STORED_QUERY_ID_PREFIX } from '../../services/stored-query/stored-query.data';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class FolderTreeComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.translate = inject(TranslateService);
|
|
14
|
+
this.router = inject(Router);
|
|
15
|
+
this.route = inject(ActivatedRoute);
|
|
16
|
+
this.treeCmp = viewChild.required(TreeComponent);
|
|
17
|
+
this.folderTree = {
|
|
18
|
+
nodes: [
|
|
19
|
+
{
|
|
20
|
+
id: 'mydrive',
|
|
21
|
+
icon: APP_SCHEMA.icon,
|
|
22
|
+
label: this.translate.instant('yuv.app.drive.folder-tree.mydrive'),
|
|
23
|
+
selectable: true,
|
|
24
|
+
children: [
|
|
25
|
+
// {
|
|
26
|
+
// id: 'ymsq.ymd.recent.added',
|
|
27
|
+
// selectable: true,
|
|
28
|
+
// label: this.translate.instant('ymsq.ymd.recent.added')
|
|
29
|
+
// },
|
|
30
|
+
{
|
|
31
|
+
id: 'ymsq.ymd.recent.added.by.me',
|
|
32
|
+
selectable: true,
|
|
33
|
+
label: this.translate.instant('ymsq.ymd.recent.added.by.me')
|
|
34
|
+
},
|
|
35
|
+
// {
|
|
36
|
+
// id: 'ymsq.ymd.recent.modified',
|
|
37
|
+
// selectable: true,
|
|
38
|
+
// label: this.translate.instant('ymsq.ymd.recent.modified')
|
|
39
|
+
// },
|
|
40
|
+
{
|
|
41
|
+
id: 'ymsq.ymd.recent.modified.by.me',
|
|
42
|
+
selectable: true,
|
|
43
|
+
label: this.translate.instant('ymsq.ymd.recent.modified.by.me')
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
onFocusLeave() {
|
|
51
|
+
this.treeCmp().selectedNodes = [];
|
|
52
|
+
}
|
|
53
|
+
nodeSelected(nodes) {
|
|
54
|
+
if (nodes.length) {
|
|
55
|
+
const node = nodes[0];
|
|
56
|
+
if (node.id.startsWith(STORED_QUERY_ID_PREFIX)) {
|
|
57
|
+
// stored query
|
|
58
|
+
this.router.navigate(['..', DRIVE_QUERY_FOLDER_ID], {
|
|
59
|
+
queryParams: {
|
|
60
|
+
q: node.id
|
|
61
|
+
},
|
|
62
|
+
relativeTo: this.route
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
switch (node.id) {
|
|
67
|
+
case 'mydrive': {
|
|
68
|
+
this.router.navigate(['..', DRIVE_ROOT_FOLDER_ID], {
|
|
69
|
+
relativeTo: this.route
|
|
70
|
+
});
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
default: {
|
|
74
|
+
this.router.navigate(['..', node.id], {
|
|
75
|
+
relativeTo: this.route
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FolderTreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
83
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.13", type: FolderTreeComponent, isStandalone: true, selector: "ymd-folder-tree", viewQueries: [{ propertyName: "treeCmp", first: true, predicate: TreeComponent, descendants: true, isSignal: true }], ngImport: i0, template: "\n <yuv-tree [tree]=\"folderTree\" yuvFocusWithin (yuvFocusWithinBlur)=\"onFocusLeave()\"\n selectable (selectionChange)=\"nodeSelected($event)\"></yuv-tree>\n", styles: [":host{display:block;padding:var(--app-pane-padding)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: FocusWithinDirective, selector: "[yuvFocusWithin]", outputs: ["yuvFocusWithin", "yuvFocusWithinBlur"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: TreeComponent, selector: "yuv-tree", inputs: ["tree", "multiselect", "selectedNodes"], outputs: ["selectionChange"] }] }); }
|
|
84
|
+
}
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FolderTreeComponent, decorators: [{
|
|
86
|
+
type: Component,
|
|
87
|
+
args: [{ selector: 'ymd-folder-tree', standalone: true, imports: [CommonModule, RouterModule, FocusWithinDirective, TranslateModule, TreeComponent], template: "\n <yuv-tree [tree]=\"folderTree\" yuvFocusWithin (yuvFocusWithinBlur)=\"onFocusLeave()\"\n selectable (selectionChange)=\"nodeSelected($event)\"></yuv-tree>\n", styles: [":host{display:block;padding:var(--app-pane-padding)}\n"] }]
|
|
88
|
+
}] });
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9sZGVyLXRyZWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcHBzL2RyaXZlL3NyYy9saWIvY29tcG9uZW50cy9mb2xkZXItdHJlZS9mb2xkZXItdHJlZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwcHMvZHJpdmUvc3JjL2xpYi9jb21wb25lbnRzL2ZvbGRlci10cmVlL2ZvbGRlci10cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBUSxhQUFhLEVBQVksTUFBTSwrQkFBK0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0NBQStDLENBQUM7O0FBU3ZGLE1BQU0sT0FBTyxtQkFBbUI7SUFQaEM7UUFRVSxjQUFTLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixVQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXZDLFlBQU8sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTVDLGVBQVUsR0FBUztZQUNqQixLQUFLLEVBQUU7Z0JBQ0w7b0JBQ0UsRUFBRSxFQUFFLFNBQVM7b0JBQ2IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJO29CQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsbUNBQW1DLENBQUM7b0JBQ2xFLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7d0JBQ1IsSUFBSTt3QkFDSixpQ0FBaUM7d0JBQ2pDLHNCQUFzQjt3QkFDdEIsMkRBQTJEO3dCQUMzRCxLQUFLO3dCQUNMOzRCQUNFLEVBQUUsRUFBRSw2QkFBNkI7NEJBQ2pDLFVBQVUsRUFBRSxJQUFJOzRCQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUM7eUJBQzdEO3dCQUNELElBQUk7d0JBQ0osb0NBQW9DO3dCQUNwQyxzQkFBc0I7d0JBQ3RCLDhEQUE4RDt3QkFDOUQsS0FBSzt3QkFDTDs0QkFDRSxFQUFFLEVBQUUsZ0NBQWdDOzRCQUNwQyxVQUFVLEVBQUUsSUFBSTs0QkFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDO3lCQUNoRTtxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQztLQW1DSDtJQWpDQyxZQUFZO1FBQ1YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFpQjtRQUM1QixJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdEIsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7Z0JBQy9DLGVBQWU7Z0JBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsRUFBRTtvQkFDbEQsV0FBVyxFQUFFO3dCQUNYLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRTtxQkFDWDtvQkFDRCxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUs7aUJBQ3ZCLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixRQUFRLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDaEIsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO3dCQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLG9CQUFvQixDQUFDLEVBQUU7NEJBQ2pELFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSzt5QkFDdkIsQ0FBQyxDQUFDO3dCQUNILE1BQU07b0JBQ1IsQ0FBQztvQkFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO3dCQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTs0QkFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLO3lCQUN2QixDQUFDLENBQUM7b0JBQ0wsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOytHQXhFVSxtQkFBbUI7bUdBQW5CLG1CQUFtQixvSEFLRCxhQUFhLGdFQ3RCNUMsbUtBR0EsK0dEVVksWUFBWSw4QkFBRSxZQUFZLCtCQUFFLG9CQUFvQiwrR0FBRSxlQUFlLCtCQUFFLGFBQWE7OzRGQUkvRSxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IEZvY3VzV2l0aGluRGlyZWN0aXZlIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtZnJhbWV3b3JrL2NvbW1vbic7XG5pbXBvcnQgeyBUcmVlLCBUcmVlQ29tcG9uZW50LCBUcmVlTm9kZSB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWZyYW1ld29yay90cmVlJztcbmltcG9ydCB7IEFQUF9TQ0hFTUEgfSBmcm9tICcuLi8uLi9kcml2ZS5zY2hlbWEnO1xuaW1wb3J0IHsgRFJJVkVfUVVFUllfRk9MREVSX0lELCBEUklWRV9ST09UX0ZPTERFUl9JRCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IFNUT1JFRF9RVUVSWV9JRF9QUkVGSVggfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yZWQtcXVlcnkvc3RvcmVkLXF1ZXJ5LmRhdGEnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd5bWQtZm9sZGVyLXRyZWUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIEZvY3VzV2l0aGluRGlyZWN0aXZlLCBUcmFuc2xhdGVNb2R1bGUsIFRyZWVDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9sZGVyLXRyZWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZm9sZGVyLXRyZWUuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIEZvbGRlclRyZWVDb21wb25lbnQge1xuICBwcml2YXRlIHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG5cbiAgdHJlZUNtcCA9IHZpZXdDaGlsZC5yZXF1aXJlZChUcmVlQ29tcG9uZW50KTtcblxuICBmb2xkZXJUcmVlOiBUcmVlID0ge1xuICAgIG5vZGVzOiBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnbXlkcml2ZScsXG4gICAgICAgIGljb246IEFQUF9TQ0hFTUEuaWNvbixcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3l1di5hcHAuZHJpdmUuZm9sZGVyLXRyZWUubXlkcml2ZScpLFxuICAgICAgICBzZWxlY3RhYmxlOiB0cnVlLFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgIC8vIHtcbiAgICAgICAgICAvLyAgIGlkOiAneW1zcS55bWQucmVjZW50LmFkZGVkJyxcbiAgICAgICAgICAvLyAgIHNlbGVjdGFibGU6IHRydWUsXG4gICAgICAgICAgLy8gICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgneW1zcS55bWQucmVjZW50LmFkZGVkJylcbiAgICAgICAgICAvLyB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAneW1zcS55bWQucmVjZW50LmFkZGVkLmJ5Lm1lJyxcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IHRydWUsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgneW1zcS55bWQucmVjZW50LmFkZGVkLmJ5Lm1lJylcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIHtcbiAgICAgICAgICAvLyAgIGlkOiAneW1zcS55bWQucmVjZW50Lm1vZGlmaWVkJyxcbiAgICAgICAgICAvLyAgIHNlbGVjdGFibGU6IHRydWUsXG4gICAgICAgICAgLy8gICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgneW1zcS55bWQucmVjZW50Lm1vZGlmaWVkJylcbiAgICAgICAgICAvLyB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAneW1zcS55bWQucmVjZW50Lm1vZGlmaWVkLmJ5Lm1lJyxcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IHRydWUsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgneW1zcS55bWQucmVjZW50Lm1vZGlmaWVkLmJ5Lm1lJylcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgb25Gb2N1c0xlYXZlKCkge1xuICAgIHRoaXMudHJlZUNtcCgpLnNlbGVjdGVkTm9kZXMgPSBbXTtcbiAgfVxuXG4gIG5vZGVTZWxlY3RlZChub2RlczogVHJlZU5vZGVbXSkge1xuICAgIGlmIChub2Rlcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1swXTtcblxuICAgICAgaWYgKG5vZGUuaWQuc3RhcnRzV2l0aChTVE9SRURfUVVFUllfSURfUFJFRklYKSkge1xuICAgICAgICAvLyBzdG9yZWQgcXVlcnlcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLicsIERSSVZFX1FVRVJZX0ZPTERFUl9JRF0sIHtcbiAgICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgICAgcTogbm9kZS5pZFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAobm9kZS5pZCkge1xuICAgICAgICAgIGNhc2UgJ215ZHJpdmUnOiB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uJywgRFJJVkVfUk9PVF9GT0xERVJfSURdLCB7XG4gICAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4nLCBub2RlLmlkXSwge1xuICAgICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIlxuICA8eXV2LXRyZWUgW3RyZWVdPVwiZm9sZGVyVHJlZVwiIHl1dkZvY3VzV2l0aGluICh5dXZGb2N1c1dpdGhpbkJsdXIpPVwib25Gb2N1c0xlYXZlKClcIlxuICBzZWxlY3RhYmxlIChzZWxlY3Rpb25DaGFuZ2UpPVwibm9kZVNlbGVjdGVkKCRldmVudClcIj48L3l1di10cmVlPlxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './add-button/add-button.component';
|
|
2
|
+
export * from './sort/sort.component';
|
|
3
|
+
export * from './breadcrumb/breadcrumb.component';
|
|
4
|
+
export * from './folder-tree/folder-tree.component';
|
|
5
|
+
// export * from './overlay/apply-invoice-flavor/apply-invoice-flavor.component';
|
|
6
|
+
export * from './paste-from-clipboard/paste-from-clipboard.component';
|
|
7
|
+
export * from './overlay/create-folder/create-folder.component';
|
|
8
|
+
export * from './paste-from-clipboard/paste-from-clipboard.component';
|
|
9
|
+
export * from './versions-list/versions-list.component';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwcHMvZHJpdmUvc3JjL2xpYi9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsaUZBQWlGO0FBQ2pGLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMseUNBQXlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FkZC1idXR0b24vYWRkLWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zb3J0L3NvcnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ZvbGRlci10cmVlL2ZvbGRlci10cmVlLmNvbXBvbmVudCc7XG4vLyBleHBvcnQgKiBmcm9tICcuL292ZXJsYXkvYXBwbHktaW52b2ljZS1mbGF2b3IvYXBwbHktaW52b2ljZS1mbGF2b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcGFzdGUtZnJvbS1jbGlwYm9hcmQvcGFzdGUtZnJvbS1jbGlwYm9hcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vb3ZlcmxheS9jcmVhdGUtZm9sZGVyL2NyZWF0ZS1mb2xkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcGFzdGUtZnJvbS1jbGlwYm9hcmQvcGFzdGUtZnJvbS1jbGlwYm9hcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdmVyc2lvbnMtbGlzdC92ZXJzaW9ucy1saXN0LmNvbXBvbmVudCc7XG4iXX0=
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, effect, inject, input, output } from '@angular/core';
|
|
3
|
+
import { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
4
|
+
import { TranslateModule } from '@yuuvis/client-core';
|
|
5
|
+
import { FormInputComponent, StringComponent } from '@yuuvis/client-framework/forms';
|
|
6
|
+
import { RenameValidator } from '../../actions/rename/rename.validator';
|
|
7
|
+
import { FS_PROPERTIES } from '../../drive.schema';
|
|
8
|
+
import { DriveService } from '../../services';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/forms";
|
|
11
|
+
import * as i2 from "@yuuvis/client-core";
|
|
12
|
+
export class ObjectNameComponent {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.#fb = inject(FormBuilder);
|
|
15
|
+
this.#drive = inject(DriveService);
|
|
16
|
+
this.busy = false;
|
|
17
|
+
this.headline = input();
|
|
18
|
+
this.submitButton = input.required();
|
|
19
|
+
this.cancelButton = input('');
|
|
20
|
+
this.isFile = input(false);
|
|
21
|
+
this.isRename = input(false);
|
|
22
|
+
this.item = input();
|
|
23
|
+
this.disabled = input(false);
|
|
24
|
+
this.#disabledEffect = effect(() => {
|
|
25
|
+
const d = this.disabled();
|
|
26
|
+
d ? this.nameForm.get('name')?.disable() : this.nameForm.get('name')?.enable();
|
|
27
|
+
});
|
|
28
|
+
this.#itemFormEffect = effect(() => this.item() && this.#setupForm(this.item()?.data));
|
|
29
|
+
this.nameChange = output();
|
|
30
|
+
this.onClose = output();
|
|
31
|
+
this.nameForm = this.#fb.group({
|
|
32
|
+
_initialName: [''],
|
|
33
|
+
name: ['', Validators.required]
|
|
34
|
+
}, {
|
|
35
|
+
asyncValidators: [RenameValidator.createValidator(this.#drive)]
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
#fb;
|
|
39
|
+
#drive;
|
|
40
|
+
#disabledEffect;
|
|
41
|
+
#itemFormEffect;
|
|
42
|
+
#setupForm(data) {
|
|
43
|
+
this.nameForm.patchValue({
|
|
44
|
+
_initialName: data ? data[FS_PROPERTIES.name] || '' : '',
|
|
45
|
+
name: data ? data[FS_PROPERTIES.name] || '' : ''
|
|
46
|
+
}, {
|
|
47
|
+
emitEvent: false
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
submitForm() {
|
|
51
|
+
this.nameChange.emit(this.nameForm.value.name);
|
|
52
|
+
}
|
|
53
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectNameComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
54
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ObjectNameComponent, isStandalone: true, selector: "ymd-object-name", inputs: { headline: { classPropertyName: "headline", publicName: "headline", isSignal: true, isRequired: false, transformFunction: null }, submitButton: { classPropertyName: "submitButton", publicName: "submitButton", isSignal: true, isRequired: true, transformFunction: null }, cancelButton: { classPropertyName: "cancelButton", publicName: "cancelButton", isSignal: true, isRequired: false, transformFunction: null }, isFile: { classPropertyName: "isFile", publicName: "isFile", isSignal: true, isRequired: false, transformFunction: null }, isRename: { classPropertyName: "isRename", publicName: "isRename", isSignal: true, isRequired: false, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { nameChange: "nameChange", onClose: "onClose" }, ngImport: i0, template: "<form [formGroup]=\"nameForm\" (ngSubmit)=\"submitForm()\">\n @if (headline() && headline()?.length) {\n <header>{{ headline() }}</header>\n }\n <main>\n <yuv-form-input [label]=\"'yuv.app.drive.property.name' | translate\" [required]=\"true\"> <yuv-string formControlName=\"name\"></yuv-string></yuv-form-input>\n @if (nameForm.hasError('nameAlreadyExists')) {\n <div class=\"error\">{{ 'yuv.app.drive.create.error.name.exist' | translate }}</div>\n }\n @if (nameForm.hasError('invalidFileNames')) {\n <div class=\"error\">{{ 'yuv.app.drive.create.error.name.invalid' | translate }}</div>\n }\n </main>\n\n <footer>\n <button class=\"primary\" type=\"submit\" [disabled]=\"disabled() || nameForm.invalid || busy || error\">{{ submitButton() }}</button>\n @if (cancelButton() && cancelButton().length) {\n <button class=\"secondary\" type=\"button\" (click)=\"onClose.emit()\" [disabled]=\"busy\">{{ cancelButton() }}</button>\n }\n </footer>\n</form>\n", styles: [":host header{font-size:var(--font-title)}:host main{padding:var(--app-pane-padding) 0}:host main .error{color:var(--text-color-caption);background-color:var(--panel-background-lightgrey);border:1px solid var(--panel-divider-color);border-radius:.25rem;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);margin-block-start:calc(var(--app-pane-padding) / 2)}:host footer{display:flex;flex-flow:row-reverse;justify-content:end;align-items:center;gap:calc(var(--app-pane-padding) / 4)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormInputComponent, selector: "yuv-form-input", inputs: ["label", "tag", "description", "invalid", "disabled", "required"] }, { kind: "component", type: StringComponent, selector: "yuv-string", inputs: ["multiselect", "rows", "readonly", "autofocus", "classifications", "situation", "regex", "minLength", "maxLength"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
|
|
55
|
+
}
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectNameComponent, decorators: [{
|
|
57
|
+
type: Component,
|
|
58
|
+
args: [{ selector: 'ymd-object-name', standalone: true, imports: [CommonModule, ReactiveFormsModule, FormInputComponent, StringComponent, TranslateModule], template: "<form [formGroup]=\"nameForm\" (ngSubmit)=\"submitForm()\">\n @if (headline() && headline()?.length) {\n <header>{{ headline() }}</header>\n }\n <main>\n <yuv-form-input [label]=\"'yuv.app.drive.property.name' | translate\" [required]=\"true\"> <yuv-string formControlName=\"name\"></yuv-string></yuv-form-input>\n @if (nameForm.hasError('nameAlreadyExists')) {\n <div class=\"error\">{{ 'yuv.app.drive.create.error.name.exist' | translate }}</div>\n }\n @if (nameForm.hasError('invalidFileNames')) {\n <div class=\"error\">{{ 'yuv.app.drive.create.error.name.invalid' | translate }}</div>\n }\n </main>\n\n <footer>\n <button class=\"primary\" type=\"submit\" [disabled]=\"disabled() || nameForm.invalid || busy || error\">{{ submitButton() }}</button>\n @if (cancelButton() && cancelButton().length) {\n <button class=\"secondary\" type=\"button\" (click)=\"onClose.emit()\" [disabled]=\"busy\">{{ cancelButton() }}</button>\n }\n </footer>\n</form>\n", styles: [":host header{font-size:var(--font-title)}:host main{padding:var(--app-pane-padding) 0}:host main .error{color:var(--text-color-caption);background-color:var(--panel-background-lightgrey);border:1px solid var(--panel-divider-color);border-radius:.25rem;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);margin-block-start:calc(var(--app-pane-padding) / 2)}:host footer{display:flex;flex-flow:row-reverse;justify-content:end;align-items:center;gap:calc(var(--app-pane-padding) / 4)}\n"] }]
|
|
59
|
+
}] });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LW5hbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcHBzL2RyaXZlL3NyYy9saWIvY29tcG9uZW50cy9vYmplY3QtbmFtZS9vYmplY3QtbmFtZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwcHMvZHJpdmUvc3JjL2xpYi9jb21wb25lbnRzL29iamVjdC1uYW1lL29iamVjdC1uYW1lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFhLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBYSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFTOUMsTUFBTSxPQUFPLG1CQUFtQjtJQVBoQztRQVFFLFFBQUcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUU5QixTQUFJLEdBQUcsS0FBSyxDQUFDO1FBR2IsYUFBUSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQzNCLGlCQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ3hDLGlCQUFZLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLFdBQU0sR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDL0IsYUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNqQyxTQUFJLEdBQUcsS0FBSyxFQUFhLENBQUM7UUFDMUIsYUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNqQyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDNUIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2pGLENBQUMsQ0FBQyxDQUFDO1FBRUgsb0JBQWUsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFbEYsZUFBVSxHQUFHLE1BQU0sRUFBVSxDQUFDO1FBQzlCLFlBQU8sR0FBRyxNQUFNLEVBQVEsQ0FBQztRQUV6QixhQUFRLEdBQWMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQ2xDO1lBQ0UsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2xCLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ2hDLEVBQ0Q7WUFDRSxlQUFlLEVBQUUsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNoRSxDQUNGLENBQUM7S0FrQkg7SUFqREMsR0FBRyxDQUF1QjtJQUMxQixNQUFNLENBQXdCO0lBWTlCLGVBQWUsQ0FHWjtJQUVILGVBQWUsQ0FBbUU7SUFnQmxGLFVBQVUsQ0FBQyxJQUFVO1FBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUN0QjtZQUNFLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3hELElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQ2pELEVBQ0Q7WUFDRSxTQUFTLEVBQUUsS0FBSztTQUNqQixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7K0dBakRVLG1CQUFtQjttR0FBbkIsbUJBQW1CLDhoQ0NoQmhDLDIrQkFxQkEscWpCRFRZLFlBQVksOEJBQUUsbUJBQW1CLDZyQkFBRSxrQkFBa0IsdUlBQUUsZUFBZSxtTEFBRSxlQUFlOzs0RkFJdEYsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEbXNPYmplY3QsIFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgRm9ybUlucHV0Q29tcG9uZW50LCBTdHJpbmdDb21wb25lbnQgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvZm9ybXMnO1xuaW1wb3J0IHsgUmVuYW1lVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vYWN0aW9ucy9yZW5hbWUvcmVuYW1lLnZhbGlkYXRvcic7XG5pbXBvcnQgeyBGU19QUk9QRVJUSUVTIH0gZnJvbSAnLi4vLi4vZHJpdmUuc2NoZW1hJztcbmltcG9ydCB7IERyaXZlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneW1kLW9iamVjdC1uYW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybUlucHV0Q29tcG9uZW50LCBTdHJpbmdDb21wb25lbnQsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3QtbmFtZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9vYmplY3QtbmFtZS5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgT2JqZWN0TmFtZUNvbXBvbmVudCB7XG4gICNmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gICNkcml2ZSA9IGluamVjdChEcml2ZVNlcnZpY2UpO1xuXG4gIGJ1c3kgPSBmYWxzZTtcbiAgZXJyb3I/OiBzdHJpbmc7XG5cbiAgaGVhZGxpbmUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHN1Ym1pdEJ1dHRvbiA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgY2FuY2VsQnV0dG9uID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIGlzRmlsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgaXNSZW5hbWUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIGl0ZW0gPSBpbnB1dDxEbXNPYmplY3Q+KCk7XG4gIGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICAjZGlzYWJsZWRFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGQgPSB0aGlzLmRpc2FibGVkKCk7XG4gICAgZCA/IHRoaXMubmFtZUZvcm0uZ2V0KCduYW1lJyk/LmRpc2FibGUoKSA6IHRoaXMubmFtZUZvcm0uZ2V0KCduYW1lJyk/LmVuYWJsZSgpO1xuICB9KTtcblxuICAjaXRlbUZvcm1FZmZlY3QgPSBlZmZlY3QoKCkgPT4gdGhpcy5pdGVtKCkgJiYgdGhpcy4jc2V0dXBGb3JtKHRoaXMuaXRlbSgpPy5kYXRhKSk7XG5cbiAgbmFtZUNoYW5nZSA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIG9uQ2xvc2UgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICBuYW1lRm9ybTogRm9ybUdyb3VwID0gdGhpcy4jZmIuZ3JvdXAoXG4gICAge1xuICAgICAgX2luaXRpYWxOYW1lOiBbJyddLFxuICAgICAgbmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgIH0sXG4gICAge1xuICAgICAgYXN5bmNWYWxpZGF0b3JzOiBbUmVuYW1lVmFsaWRhdG9yLmNyZWF0ZVZhbGlkYXRvcih0aGlzLiNkcml2ZSldXG4gICAgfVxuICApO1xuXG5cbiAgI3NldHVwRm9ybShkYXRhPzogYW55KSB7XG4gICAgdGhpcy5uYW1lRm9ybS5wYXRjaFZhbHVlKFxuICAgICAge1xuICAgICAgICBfaW5pdGlhbE5hbWU6IGRhdGEgPyBkYXRhW0ZTX1BST1BFUlRJRVMubmFtZV0gfHwgJycgOiAnJyxcbiAgICAgICAgbmFtZTogZGF0YSA/IGRhdGFbRlNfUFJPUEVSVElFUy5uYW1lXSB8fCAnJyA6ICcnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHN1Ym1pdEZvcm0oKSB7XG4gICAgdGhpcy5uYW1lQ2hhbmdlLmVtaXQodGhpcy5uYW1lRm9ybS52YWx1ZS5uYW1lKTtcbiAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJuYW1lRm9ybVwiIChuZ1N1Ym1pdCk9XCJzdWJtaXRGb3JtKClcIj5cbiAgQGlmIChoZWFkbGluZSgpICYmIGhlYWRsaW5lKCk/Lmxlbmd0aCkge1xuICAgIDxoZWFkZXI+e3sgaGVhZGxpbmUoKSB9fTwvaGVhZGVyPlxuICB9XG4gIDxtYWluPlxuICAgIDx5dXYtZm9ybS1pbnB1dCBbbGFiZWxdPVwiJ3l1di5hcHAuZHJpdmUucHJvcGVydHkubmFtZScgfCB0cmFuc2xhdGVcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiPiA8eXV2LXN0cmluZyBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCI+PC95dXYtc3RyaW5nPjwveXV2LWZvcm0taW5wdXQ+XG4gICAgQGlmIChuYW1lRm9ybS5oYXNFcnJvcignbmFtZUFscmVhZHlFeGlzdHMnKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImVycm9yXCI+e3sgJ3l1di5hcHAuZHJpdmUuY3JlYXRlLmVycm9yLm5hbWUuZXhpc3QnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgfVxuICAgIEBpZiAobmFtZUZvcm0uaGFzRXJyb3IoJ2ludmFsaWRGaWxlTmFtZXMnKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImVycm9yXCI+e3sgJ3l1di5hcHAuZHJpdmUuY3JlYXRlLmVycm9yLm5hbWUuaW52YWxpZCcgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICB9XG4gIDwvbWFpbj5cblxuICA8Zm9vdGVyPlxuICAgIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpIHx8IG5hbWVGb3JtLmludmFsaWQgfHwgYnVzeSB8fCBlcnJvclwiPnt7IHN1Ym1pdEJ1dHRvbigpIH19PC9idXR0b24+XG4gICAgQGlmIChjYW5jZWxCdXR0b24oKSAmJiBjYW5jZWxCdXR0b24oKS5sZW5ndGgpIHtcbiAgICAgIDxidXR0b24gY2xhc3M9XCJzZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQ2xvc2UuZW1pdCgpXCIgW2Rpc2FibGVkXT1cImJ1c3lcIj57eyBjYW5jZWxCdXR0b24oKSB9fTwvYnV0dG9uPlxuICAgIH1cbiAgPC9mb290ZXI+XG48L2Zvcm0+XG4iXX0=
|