@yuuvis/client-shell-core 2.0.0-beta.0 → 2.0.0-beta.2
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 +4 -0
- package/esm2022/index.mjs +7 -2
- package/esm2022/lib/client-shell.assets.mjs +7 -8
- package/esm2022/lib/client-shell.interface.mjs +1 -1
- package/esm2022/lib/services/command-palette/command-palette/command-palette.component.mjs +18 -92
- package/esm2022/lib/services/command-palette/command-palette.service.mjs +16 -14
- package/esm2022/lib/services/feature/feature.guard.mjs +7 -0
- package/esm2022/lib/services/feature/feature.interface.mjs +2 -0
- package/esm2022/lib/services/feature/feature.providers.mjs +8 -0
- package/esm2022/lib/services/feature/feature.service.mjs +93 -0
- package/esm2022/lib/services/feature/index.mjs +5 -0
- package/esm2022/lib/services/shell/noop.extension.mjs +13 -0
- package/esm2022/lib/services/shell/shell.bootstrap.mjs +68 -0
- package/esm2022/lib/services/shell/shell.providers.mjs +21 -0
- package/esm2022/lib/services/shell/shell.service.mjs +129 -57
- package/esm2022/lib/services/shell-config/shell-config.const.mjs +23 -0
- package/esm2022/lib/services/shell-config/shell-config.interface.mjs +2 -0
- package/esm2022/lib/services/shell-config/shell-config.service.mjs +100 -0
- package/esm2022/lib/services/shell-notifications/shell-notifications.service.mjs +9 -9
- package/index.d.ts +6 -1
- package/lib/assets/i18n/de.json +0 -1
- package/lib/assets/i18n/en.json +0 -1
- package/lib/client-shell.assets.d.ts +2 -8
- package/lib/client-shell.interface.d.ts +13 -6
- package/lib/services/command-palette/command-palette.service.d.ts +1 -2
- package/lib/services/feature/feature.guard.d.ts +2 -0
- package/lib/services/feature/feature.interface.d.ts +11 -0
- package/lib/services/feature/feature.providers.d.ts +4 -0
- package/lib/services/feature/feature.service.d.ts +20 -0
- package/lib/services/feature/index.d.ts +4 -0
- package/lib/services/shell/noop.extension.d.ts +7 -0
- package/lib/services/shell/shell.bootstrap.d.ts +29 -0
- package/lib/services/shell/shell.providers.d.ts +2 -0
- package/lib/services/shell/shell.service.d.ts +13 -4
- package/lib/services/shell-config/shell-config.const.d.ts +8 -0
- package/lib/services/shell-config/shell-config.interface.d.ts +13 -0
- package/lib/services/shell-config/shell-config.service.d.ts +30 -0
- package/package.json +6 -8
- package/esm2022/lib/services/shell/shell.extensions.service.mjs +0 -9
- package/lib/services/shell/shell.extensions.service.d.ts +0 -2
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { inject, Injectable } from '@angular/core';
|
|
2
|
+
import { ApiBase, BackendService, BaseObjectTypeField, DmsService } from '@yuuvis/client-core';
|
|
3
|
+
import { map, of, switchMap } from 'rxjs';
|
|
4
|
+
import { getShellConfigQueryString, SHELL_CONFIG_BASE } from './shell-config.const';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Service to manage shell configuration objects. Base on the 'system:item' type.
|
|
8
|
+
*/
|
|
9
|
+
export class ShellConfigService {
|
|
10
|
+
#dmsService = inject(DmsService);
|
|
11
|
+
#backend = inject(BackendService);
|
|
12
|
+
get(name) {
|
|
13
|
+
let object;
|
|
14
|
+
return this.#backend
|
|
15
|
+
.post('/dms/objects/search', {
|
|
16
|
+
query: {
|
|
17
|
+
statement: getShellConfigQueryString(name)
|
|
18
|
+
}
|
|
19
|
+
}, ApiBase.core)
|
|
20
|
+
.pipe(map((res) => {
|
|
21
|
+
if (res.objects.length) {
|
|
22
|
+
object = res.objects[0];
|
|
23
|
+
}
|
|
24
|
+
return object ? object.properties[BaseObjectTypeField.OBJECT_ID].value : undefined;
|
|
25
|
+
}), switchMap((id) => (id ? this.#backend.get(`/api/dms/objects/${id}/contents/file`, ApiBase.core) : of(undefined))), map((data) => {
|
|
26
|
+
return data
|
|
27
|
+
? {
|
|
28
|
+
id: object.properties[BaseObjectTypeField.OBJECT_ID].value,
|
|
29
|
+
name: object.properties[SHELL_CONFIG_BASE.nameProperty].value,
|
|
30
|
+
context: object.properties['system:context']?.value,
|
|
31
|
+
user: object.properties['system:user']?.value,
|
|
32
|
+
data
|
|
33
|
+
}
|
|
34
|
+
: undefined;
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Create a new configuration object.
|
|
39
|
+
* @param cfg the configuration object to be created
|
|
40
|
+
*/
|
|
41
|
+
create(name, data, context, user) {
|
|
42
|
+
const properties = {
|
|
43
|
+
[SHELL_CONFIG_BASE.nameProperty]: name
|
|
44
|
+
};
|
|
45
|
+
if (user)
|
|
46
|
+
properties['system:user'] = user;
|
|
47
|
+
if (context)
|
|
48
|
+
properties['system:context'] = context;
|
|
49
|
+
return this.#dmsService
|
|
50
|
+
.createDmsObject(SHELL_CONFIG_BASE.objectType, {
|
|
51
|
+
[BaseObjectTypeField.SECONDARY_OBJECT_TYPE_IDS]: [SHELL_CONFIG_BASE.secondaryObjectType],
|
|
52
|
+
...properties
|
|
53
|
+
}, [this.#dataToFile(data)], undefined, true)
|
|
54
|
+
.pipe(map((res) => ({
|
|
55
|
+
id: res[0],
|
|
56
|
+
name,
|
|
57
|
+
context,
|
|
58
|
+
user,
|
|
59
|
+
data
|
|
60
|
+
})));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Update data of an existing configuration object.
|
|
64
|
+
* @param id the id of the configuration object to update
|
|
65
|
+
* @param data the new configuration data to be set
|
|
66
|
+
*/
|
|
67
|
+
update(id, data) {
|
|
68
|
+
return this.#dmsService.uploadContent(id, this.#dataToFile(data), undefined, true);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Delete a configuration object.
|
|
72
|
+
* @param id the id of the configuration object to delete
|
|
73
|
+
*/
|
|
74
|
+
delete(id) {
|
|
75
|
+
return this.#dmsService.deleteDmsObject(id);
|
|
76
|
+
}
|
|
77
|
+
download(id, filename) {
|
|
78
|
+
this.#backend.download(this.#dmsService.getContentPath(id), filename);
|
|
79
|
+
}
|
|
80
|
+
upload(id, file) {
|
|
81
|
+
return this.#dmsService.uploadContent(id, file, undefined, true);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Transform the configuration to a file.
|
|
85
|
+
* @param data the configuration data to be transformed
|
|
86
|
+
* @returns a file object containing the configuration data
|
|
87
|
+
*/
|
|
88
|
+
#dataToFile(data) {
|
|
89
|
+
return new File([JSON.stringify(data)], 'config.json', { type: 'application/json' });
|
|
90
|
+
}
|
|
91
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ShellConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
92
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ShellConfigService, providedIn: 'root' }); }
|
|
93
|
+
}
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ShellConfigService, decorators: [{
|
|
95
|
+
type: Injectable,
|
|
96
|
+
args: [{
|
|
97
|
+
providedIn: 'root'
|
|
98
|
+
}]
|
|
99
|
+
}] });
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwtY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtc2hlbGwtY29yZS9zcmMvbGliL3NlcnZpY2VzL3NoZWxsLWNvbmZpZy9zaGVsbC1jb25maWcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRixPQUFPLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQU8sTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBR3BGOztHQUVHO0FBSUgsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFbEMsR0FBRyxDQUFDLElBQVk7UUFDZCxJQUFJLE1BQVcsQ0FBQztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRO2FBQ2pCLElBQUksQ0FDSCxxQkFBcUIsRUFDckI7WUFDRSxLQUFLLEVBQUU7Z0JBQ0wsU0FBUyxFQUFFLHlCQUF5QixDQUFDLElBQUksQ0FBQzthQUMzQztTQUNGLEVBQ0QsT0FBTyxDQUFDLElBQUksQ0FDYjthQUNBLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNWLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIs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LENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxJQUFhO1FBQ3ZCLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDOzhHQXRHVSxrQkFBa0I7a0hBQWxCLGtCQUFrQixjQUZqQixNQUFNOzsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcGlCYXNlLCBCYWNrZW5kU2VydmljZSwgQmFzZU9iamVjdFR5cGVGaWVsZCwgRG1zU2VydmljZSB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGdldFNoZWxsQ29uZmlnUXVlcnlTdHJpbmcsIFNIRUxMX0NPTkZJR19CQVNFIH0gZnJvbSAnLi9zaGVsbC1jb25maWcuY29uc3QnO1xuaW1wb3J0IHsgU2hlbGxDb25maWcgfSBmcm9tICcuL3NoZWxsLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIFNlcnZpY2UgdG8gbWFuYWdlIHNoZWxsIGNvbmZpZ3VyYXRpb24gb2JqZWN0cy4gQmFzZSBvbiB0aGUgJ3N5c3RlbTppdGVtJyB0eXBlLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTaGVsbENvbmZpZ1NlcnZpY2Uge1xuICAjZG1zU2VydmljZSA9IGluamVjdChEbXNTZXJ2aWNlKTtcbiAgI2JhY2tlbmQgPSBpbmplY3QoQmFja2VuZFNlcnZpY2UpO1xuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNoZWxsQ29uZmlnIHwgdW5kZWZpbmVkPiB7XG4gICAgbGV0IG9iamVjdDogYW55O1xuICAgIHJldHVybiB0aGlzLiNiYWNrZW5kXG4gICAgICAucG9zdChcbiAgICAgICAgJy9kbXMvb2JqZWN0cy9zZWFyY2gnLFxuICAgICAgICB7XG4gICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgIHN0YXRlbWVudDogZ2V0U2hlbGxDb25maWdRdWVyeVN0cmluZyhuYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgQXBpQmFzZS5jb3JlXG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXMpID0+IHtcbiAgICAgICAgICBpZiAocmVzLm9iamVjdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBvYmplY3QgPSByZXMub2JqZWN0c1swXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG9iamVjdCA/IG9iamVjdC5wcm9wZXJ0aWVzW0Jhc2VPYmplY3RUeXBlRmllbGQuT0JKRUNUX0lEXS52YWx1ZSA6IHVuZGVmaW5lZDtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgoaWQpID0+IChpZCA/IHRoaXMuI2JhY2tlbmQuZ2V0KGAvYXBpL2Rtcy9vYmplY3RzLyR7aWR9L2NvbnRlbnRzL2ZpbGVgLCBBcGlCYXNlLmNvcmUpIDogb2YodW5kZWZpbmVkKSkpLFxuICAgICAgICBtYXAoKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gZGF0YVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgaWQ6IG9iamVjdC5wcm9wZXJ0aWVzW0Jhc2VPYmplY3RUeXBlRmllbGQuT0JKRUNUX0lEXS52YWx1ZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBvYmplY3QucHJvcGVydGllc1tTSEVMTF9DT05GSUdfQkFTRS5uYW1lUHJvcGVydHldLnZhbHVlLFxuICAgICAgICAgICAgICAgIGNvbnRleHQ6IG9iamVjdC5wcm9wZXJ0aWVzWydzeXN0ZW06Y29udGV4dCddPy52YWx1ZSxcbiAgICAgICAgICAgICAgICB1c2VyOiBvYmplY3QucHJvcGVydGllc1snc3lzdGVtOnVzZXInXT8udmFsdWUsXG4gICAgICAgICAgICAgICAgZGF0YVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKiBAcGFyYW0gY2ZnIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdCB0byBiZSBjcmVhdGVkXG4gICAqL1xuICBjcmVhdGUobmFtZTogc3RyaW5nLCBkYXRhOiB1bmtub3duLCBjb250ZXh0Pzogc3RyaW5nLCB1c2VyPzogc3RyaW5nW10pOiBPYnNlcnZhYmxlPFNoZWxsQ29uZmlnPiB7XG4gICAgY29uc3QgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICBbU0hFTExfQ09ORklHX0JBU0UubmFtZVByb3BlcnR5XTogbmFtZVxuICAgIH07XG4gICAgaWYgKHVzZXIpIHByb3BlcnRpZXNbJ3N5c3RlbTp1c2VyJ10gPSB1c2VyO1xuICAgIGlmIChjb250ZXh0KSBwcm9wZXJ0aWVzWydzeXN0ZW06Y29udGV4dCddID0gY29udGV4dDtcbiAgICByZXR1cm4gdGhpcy4jZG1zU2VydmljZVxuICAgICAgLmNyZWF0ZURtc09iamVjdChcbiAgICAgICAgU0hFTExfQ09ORklHX0JBU0Uub2JqZWN0VHlwZSxcbiAgICAgICAge1xuICAgICAgICAgIFtCYXNlT2JqZWN0VHlwZUZpZWxkLlNFQ09OREFSWV9PQkpFQ1RfVFlQRV9JRFNdOiBbU0hFTExfQ09ORklHX0JBU0Uuc2Vjb25kYXJ5T2JqZWN0VHlwZV0sXG4gICAgICAgICAgLi4ucHJvcGVydGllc1xuICAgICAgICB9LFxuICAgICAgICBbdGhpcy4jZGF0YVRvRmlsZShkYXRhKV0sXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgdHJ1ZVxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiAoe1xuICAgICAgICAgIGlkOiByZXNbMF0sXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgZGF0YVxuICAgICAgICB9KSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGRhdGEgb2YgYW4gZXhpc3RpbmcgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqIEBwYXJhbSBpZCB0aGUgaWQgb2YgdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHRvIHVwZGF0ZVxuICAgKiBAcGFyYW0gZGF0YSB0aGUgbmV3IGNvbmZpZ3VyYXRpb24gZGF0YSB0byBiZSBzZXRcbiAgICovXG4gIHVwZGF0ZShpZDogc3RyaW5nLCBkYXRhOiB1bmtub3duKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy4jZG1zU2VydmljZS51cGxvYWRDb250ZW50KGlkLCB0aGlzLiNkYXRhVG9GaWxlKGRhdGEpLCB1bmRlZmluZWQsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKiBAcGFyYW0gaWQgdGhlIGlkIG9mIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdCB0byBkZWxldGVcbiAgICovXG4gIGRlbGV0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy4jZG1zU2VydmljZS5kZWxldGVEbXNPYmplY3QoaWQpO1xuICB9XG5cbiAgZG93bmxvYWQoaWQ6IHN0cmluZywgZmlsZW5hbWU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLiNiYWNrZW5kLmRvd25sb2FkKHRoaXMuI2Rtc1NlcnZpY2UuZ2V0Q29udGVudFBhdGgoaWQpLCBmaWxlbmFtZSk7XG4gIH1cblxuICB1cGxvYWQoaWQ6IHN0cmluZywgZmlsZTogRmlsZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuI2Rtc1NlcnZpY2UudXBsb2FkQ29udGVudChpZCwgZmlsZSwgdW5kZWZpbmVkLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdGhlIGNvbmZpZ3VyYXRpb24gdG8gYSBmaWxlLlxuICAgKiBAcGFyYW0gZGF0YSB0aGUgY29uZmlndXJhdGlvbiBkYXRhIHRvIGJlIHRyYW5zZm9ybWVkXG4gICAqIEByZXR1cm5zIGEgZmlsZSBvYmplY3QgY29udGFpbmluZyB0aGUgY29uZmlndXJhdGlvbiBkYXRhXG4gICAqL1xuICAjZGF0YVRvRmlsZShkYXRhOiB1bmtub3duKTogRmlsZSB7XG4gICAgcmV0dXJuIG5ldyBGaWxlKFtKU09OLnN0cmluZ2lmeShkYXRhKV0sICdjb25maWcuanNvbicsIHsgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -77,13 +77,13 @@ export class ShellNotificationsService {
|
|
|
77
77
|
this._notificationsSource.next(this._notifications);
|
|
78
78
|
this.appCache.setItem(this.LOCAL_STORAGE_KEY, this._notifications).subscribe();
|
|
79
79
|
}
|
|
80
|
-
static { this.ɵfac =
|
|
81
|
-
static { this.ɵprov =
|
|
80
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ShellNotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
81
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ShellNotificationsService, providedIn: 'root' }); }
|
|
82
82
|
}
|
|
83
|
-
(
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ShellNotificationsService, decorators: [{
|
|
84
|
+
type: Injectable,
|
|
85
|
+
args: [{
|
|
86
|
+
providedIn: 'root'
|
|
87
|
+
}]
|
|
88
|
+
}], ctorParameters: () => [] });
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwtbm90aWZpY2F0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LXNoZWxsLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zaGVsbC1ub3RpZmljYXRpb25zL3NoZWxsLW5vdGlmaWNhdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUseUJBQXlCLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFekM7Ozs7OztHQU1HO0FBSUgsTUFBTSxPQUFPLHlCQUF5QjtJQUdwQyxNQUFNLENBQXdCO0lBQzlCLE9BQU8sQ0FBa0I7SUFFekIsMEJBQTBCLENBQXFDO0lBTS9EO1FBWFEsc0JBQWlCLEdBQUcseUJBQXlCLENBQUM7UUFDOUMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMzQyxXQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlCLFlBQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdDLCtCQUEwQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBRXZELG1CQUFjLEdBQTRCLEVBQUUsQ0FBQztRQUM3Qyx5QkFBb0IsR0FBRyxJQUFJLGFBQWEsRUFBMkIsQ0FBQztRQUM1RSx3QkFBbUIsR0FBd0MsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBR2xHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzlELElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQ0FBaUM7SUFDakMsbUJBQW1CO0lBQ25CLGlFQUFpRTtJQUNqRSxxRUFBcUU7SUFDckUsT0FBTztJQUVQLDBDQUEwQztJQUMxQyxJQUFJO0lBRUosR0FBRyxDQUFDLFlBQStCLEVBQUUsa0JBQWtCLEdBQUcsS0FBSztRQUM3RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUN2QixHQUFHLFlBQVk7WUFDZixFQUFFLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNoQixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUU7WUFDL0IsSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFDLENBQUM7UUFDSCx5QkFBeUI7UUFDekIsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLGtCQUFrQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3RGLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQyxFQUFFO2dCQUM5RyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQy9FLE9BQU8sRUFBRTtvQkFDUCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsdUNBQXVDLENBQUM7b0JBQ3JFLG1EQUFtRDtvQkFDbkQsSUFBSSxFQUFFLG9FQUFvRTtpQkFDM0U7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFVO1FBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxFQUFVO1FBQzVCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNqRixDQUFDOzhHQXhFVSx5QkFBeUI7a0hBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzsyRkFFUCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaGVsbE5vdGlmaWNhdGlvbiB9IGZyb20gJy4vc2hlbGwtbm90aWZpY2F0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBwQ2FjaGVTZXJ2aWNlLCBOYXRpdmVOb3RpZmljYXRpb25TZXJ2aWNlLCBUcmFuc2xhdGVTZXJ2aWNlLCBVdGlscyB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgU2hlbGxTZXJ2aWNlIH0gZnJvbSAnLi4vc2hlbGwvc2hlbGwuc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG4vKipcbiAqIFNlcnZpY2UgbWFuYWdpbmcgc2hlbGwgbm90aWZpY2F0aW9ucy5cbiAqIEV2ZXJ5IGFwcCBjb3VsZCBwcm9wYWdhdGUgc2hlbGwgbm90aWZpY2F0aW9ucy4gVGhleSB3aWxsIGJlIHB1Ymxpc2hlZFxuICogaW4gdGhlIG5vdGlmaWNhdGlvbnMgc2VjdGlvbiBvZiB0aGUgc2hlbGwuIEluY29taW5nIG5ldyBtZXNzYWhlcyB3aWxsXG4gKiBhbHNvIGFkZCBhbiBpbmRpY2F0b3IgdG8gdGhlIGljb24gaW4gdGhlIHNoZWxsIGJhci5cbiAqXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNoZWxsTm90aWZpY2F0aW9uc1NlcnZpY2Uge1xuICBwcml2YXRlIExPQ0FMX1NUT1JBR0VfS0VZID0gJ3l1di5zaGVsbC5ub3RpZmljYXRpb25zJztcbiAgcHJpdmF0ZSBhcHBDYWNoZSA9IGluamVjdChBcHBDYWNoZVNlcnZpY2UpO1xuICAjc2hlbGwgPSBpbmplY3QoU2hlbGxTZXJ2aWNlKTtcbiAgI3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgI25hdGl2ZU5vdGlmaWNhdGlvblNlcnZpY2UgPSBpbmplY3QoTmF0aXZlTm90aWZpY2F0aW9uU2VydmljZSk7XG5cbiAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uczogU2hlbGxOb3RpZmljYXRpb25JdGVtW10gPSBbXTtcbiAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uc1NvdXJjZSA9IG5ldyBSZXBsYXlTdWJqZWN0PFNoZWxsTm90aWZpY2F0aW9uSXRlbVtdPigpO1xuICBzaGVsbE5vdGlmaWNhdGlvbnMkOiBPYnNlcnZhYmxlPFNoZWxsTm90aWZpY2F0aW9uSXRlbVtdPiA9IHRoaXMuX25vdGlmaWNhdGlvbnNTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5hcHBDYWNoZS5nZXRJdGVtKHRoaXMuTE9DQUxfU1RPUkFHRV9LRVkpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICB0aGlzLl9ub3RpZmljYXRpb25zID0gcmVzIHx8IFtdO1xuICAgICAgdGhpcy5fbm90aWZpY2F0aW9uc1NvdXJjZS5uZXh0KHRoaXMuX25vdGlmaWNhdGlvbnMpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gZ2V0Tm90aWZpY2F0aW9ucyhpZDogc3RyaW5nKSB7XG4gIC8vICAgY29uc3QgZmlsZSA9IFtcbiAgLy8gICAgIHsgaWQ6ICdpby55dXV2aXMuYXBwLmRyaXZlJywgY291bnQ6IDIsIG1heExldmVsOiAnaW5mbycgfSxcbiAgLy8gICAgIHsgaWQ6ICdpby55dXV2aXMuYXBwLnRhc2tzJywgY291bnQ6IDIyMiwgbWF4TGV2ZWw6ICd3YXJuaW5nJyB9XG4gIC8vICAgXTtcblxuICAvLyAgIHJldHVybiBmaWxlLmZpbmQoKGYpID0+IGYuaWQgPT09IGlkKTtcbiAgLy8gfVxuXG4gIGFkZChub3RpZmljYXRpb246IFNoZWxsTm90aWZpY2F0aW9uLCBuYXRpdmVOb3RpZmljYXRpb24gPSBmYWxzZSkge1xuICAgIHRoaXMuX25vdGlmaWNhdGlvbnMucHVzaCh7XG4gICAgICAuLi5ub3RpZmljYXRpb24sXG4gICAgICBpZDogVXRpbHMudXVpZCgpLFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICAgIHNlZW46IGZhbHNlXG4gICAgfSk7XG4gICAgLy8gY2hlY2sgZm9yIHVuc2VlbiBpdGVtc1xuICAgIGlmIChkb2N1bWVudC5oaWRkZW4gJiYgbmF0aXZlTm90aWZpY2F0aW9uICYmIHRoaXMuX25vdGlmaWNhdGlvbnMuc29tZSgobikgPT4gIW4uc2VlbikpIHtcbiAgICAgIHRoaXMuI25hdGl2ZU5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd05vdGlmaWNhdGlvbih0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuc2hlbGwubm90aWZpY2F0aW9uLm5hdGl2ZS50aXRsZScpLCB7XG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHRoaXMuI3JvdXRlci5uYXZpZ2F0ZShbeyBvdXRsZXRzOiB7IGFzaWRlOiAnbm90aWZpY2F0aW9ucycgfSB9XSksXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBib2R5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuc2hlbGwubm90aWZpY2F0aW9uLm5hdGl2ZS5tZXNzYWdlJyksXG4gICAgICAgICAgLy8gYmFkZ2U6IHRoaXMuI3NoZWxsLnNoZWxsQ29uZmlnKCkuaWNvbnMhLmFwcEljb24sXG4gICAgICAgICAgaWNvbjogJ2h0dHBzOi8vYnVkZ2llLmVuYWlvY2kubmV0L2NsaWVudC9hc3NldHMvX3l1dXZpcy90aGVtZS9mYXZpY29uLnN2ZydcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuX3VwZGF0ZU5vdGlmaWNhdGlvbnMoKTtcbiAgfVxuXG4gIHJlbW92ZShpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fbm90aWZpY2F0aW9ucyA9IHRoaXMuX25vdGlmaWNhdGlvbnMuZmlsdGVyKChuKSA9PiBuLmlkICE9PSBpZCk7XG4gICAgdGhpcy5fdXBkYXRlTm90aWZpY2F0aW9ucygpO1xuICB9XG5cbiAgcmVtb3ZlQWxsKCkge1xuICAgIHRoaXMuX25vdGlmaWNhdGlvbnMgPSBbXTtcbiAgICB0aGlzLl91cGRhdGVOb3RpZmljYXRpb25zKCk7XG4gIH1cblxuICBtYXJrQWxsQXNTZWVuKCkge1xuICAgIHRoaXMuX25vdGlmaWNhdGlvbnMuZm9yRWFjaCgobikgPT4gKG4uc2VlbiA9IHRydWUpKTtcbiAgICB0aGlzLl91cGRhdGVOb3RpZmljYXRpb25zKCk7XG4gIH1cblxuICBnZXROb3RpZmljYXRpb25CeUlkKGlkOiBzdHJpbmcpOiBTaGVsbE5vdGlmaWNhdGlvbkl0ZW0gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25zLmZpbmQoKG4pID0+IG4uaWQgPT09IGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZU5vdGlmaWNhdGlvbnMoKSB7XG4gICAgdGhpcy5fbm90aWZpY2F0aW9ucyA9IHRoaXMuX25vdGlmaWNhdGlvbnMuc29ydCgoYSwgYikgPT4gYi50aW1lc3RhbXAgLSBhLnRpbWVzdGFtcCk7XG4gICAgdGhpcy5fbm90aWZpY2F0aW9uc1NvdXJjZS5uZXh0KHRoaXMuX25vdGlmaWNhdGlvbnMpO1xuICAgIHRoaXMuYXBwQ2FjaGUuc2V0SXRlbSh0aGlzLkxPQ0FMX1NUT1JBR0VfS0VZLCB0aGlzLl9ub3RpZmljYXRpb25zKS5zdWJzY3JpYmUoKTtcbiAgfVxufVxuXG50eXBlIFNoZWxsTm90aWZpY2F0aW9uSXRlbSA9IFNoZWxsTm90aWZpY2F0aW9uICYge1xuICBpZDogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgc2VlbjogYm9vbGVhbjtcbn07XG4iXX0=
|
package/index.d.ts
CHANGED
|
@@ -6,4 +6,9 @@ export * from './lib/services/shell-notifications/shell-notifications.interface'
|
|
|
6
6
|
export * from './lib/services/shell-notifications/shell-notifications.service';
|
|
7
7
|
export * from './lib/services/shell/shell.service';
|
|
8
8
|
export * from './lib/tile-extension.interface';
|
|
9
|
-
export * from './lib/services/shell/shell.
|
|
9
|
+
export * from './lib/services/shell/shell.bootstrap';
|
|
10
|
+
export * from './lib/services/shell/shell.providers';
|
|
11
|
+
export * from './lib/services/feature';
|
|
12
|
+
export * from './lib/services/shell-config/shell-config.service';
|
|
13
|
+
export * from './lib/services/shell-config/shell-config.interface';
|
|
14
|
+
export * from './lib/services/shell-config/shell-config.const';
|
package/lib/assets/i18n/de.json
CHANGED
package/lib/assets/i18n/en.json
CHANGED
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
appIcon: string;
|
|
4
|
-
settings: string;
|
|
5
|
-
logout: string;
|
|
6
|
-
notifications: string;
|
|
7
|
-
};
|
|
8
|
-
};
|
|
1
|
+
import { ClientShellConfig } from './client-shell.interface';
|
|
2
|
+
export declare const CLIENT_SHELL_ASSETS: ClientShellConfig;
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import { Type } from '@angular/core';
|
|
2
2
|
import { Route } from '@angular/router';
|
|
3
3
|
import { ObjectCreateFlavor, ObjectTypeFlavor, VirtualObjectType } from '@yuuvis/client-core';
|
|
4
|
+
import { Observable } from 'rxjs';
|
|
5
|
+
export interface ClientShellExtension {
|
|
6
|
+
init: () => Promise<any> | Observable<any>;
|
|
7
|
+
}
|
|
4
8
|
export interface ClientShellConfig {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
settings?: string;
|
|
9
|
-
notifications?: string;
|
|
9
|
+
appIcon?: {
|
|
10
|
+
svgIcon?: string;
|
|
11
|
+
iconName: string;
|
|
10
12
|
};
|
|
13
|
+
shellIconNamespace?: string;
|
|
11
14
|
}
|
|
12
15
|
export interface App extends Route {
|
|
13
16
|
id: string;
|
|
14
|
-
|
|
17
|
+
svgIcon?: string;
|
|
18
|
+
iconName: string;
|
|
15
19
|
permissions?: AppPermission;
|
|
16
20
|
}
|
|
17
21
|
export interface AppPermission {
|
|
@@ -42,12 +46,15 @@ export interface AppSchema<T = Record<string, VirtualObjectType>> {
|
|
|
42
46
|
flavors: AppSchemaFlavor[];
|
|
43
47
|
createFlavors?: ObjectCreateFlavor[];
|
|
44
48
|
}
|
|
49
|
+
export type AppSchemaFlavorOrigin = 'app' | 'config';
|
|
45
50
|
export type ObjectFlavor = AppSchemaFlavor & {
|
|
46
51
|
app: string;
|
|
52
|
+
origin: AppSchemaFlavorOrigin;
|
|
47
53
|
};
|
|
48
54
|
export interface AppSchemaFlavor extends ObjectTypeFlavor {
|
|
49
55
|
objectTypeID: string;
|
|
50
56
|
descriptionKey?: string;
|
|
57
|
+
useDefaultApplyComponent?: boolean;
|
|
51
58
|
applyComponent?: Type<any>;
|
|
52
59
|
}
|
|
53
60
|
export declare enum GlobalShortcut {
|
|
@@ -2,10 +2,9 @@ import { Observable } from 'rxjs';
|
|
|
2
2
|
import { CommandPaletteCommand, DisabledCause } from './command-palette.interface';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class CommandPaletteService {
|
|
5
|
-
private
|
|
5
|
+
#private;
|
|
6
6
|
readonly actionKey: string;
|
|
7
7
|
private _ac;
|
|
8
|
-
private overlayRef;
|
|
9
8
|
private overlayVisible;
|
|
10
9
|
disabledCauses: DisabledCause[];
|
|
11
10
|
placeholder: string;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { InjectionToken, Provider } from '@angular/core';
|
|
2
|
+
import { ClientShellFeatureConfig } from './feature.interface';
|
|
3
|
+
export declare const CLIENT_SHELL_FEATURE_CONFIG: InjectionToken<ClientShellFeatureConfig | undefined>;
|
|
4
|
+
export declare const provideClientShellFeatures: (featureConfig: ClientShellFeatureConfig) => Provider;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { App } from '../../client-shell.interface';
|
|
3
|
+
import { ClientShellFeature } from './feature.interface';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class FeatureService {
|
|
6
|
+
#private;
|
|
7
|
+
hasFeatureConfig(): boolean;
|
|
8
|
+
getFeatures(): ClientShellFeature[];
|
|
9
|
+
getAvailableApps(allApps: App[]): App[];
|
|
10
|
+
canUseApp(app: App): boolean;
|
|
11
|
+
canUseFeatureById(featureId: string, authorities?: string[]): boolean;
|
|
12
|
+
canUseFeature(feature: ClientShellFeature, authorities?: string[]): boolean;
|
|
13
|
+
saveFeatureSettings(features: ClientShellFeature[]): Observable<any>;
|
|
14
|
+
deleteFeatureSettings(): Observable<any>;
|
|
15
|
+
createSettingsObject(): Observable<any>;
|
|
16
|
+
export(): void;
|
|
17
|
+
import(): Observable<any>;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FeatureService, never>;
|
|
19
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<FeatureService>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ClientShellExtension } from '../../client-shell.interface';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class NoopExtension implements ClientShellExtension {
|
|
4
|
+
init(): Promise<any>;
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NoopExtension, never>;
|
|
6
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<NoopExtension>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ApplicationConfig, ApplicationRef, Type } from '@angular/core';
|
|
2
|
+
export interface ShellBootstrapOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Enables capabilities of conditionally load features like apps and
|
|
5
|
+
* extensions based on a configuration file mapping features to user
|
|
6
|
+
* authorities.
|
|
7
|
+
*/
|
|
8
|
+
enableFeatureConfig?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Enables capabilities of adding custom object types by configuration.
|
|
11
|
+
* Any schema type or SOT can then be configured to serve as a custom
|
|
12
|
+
* object type (flavor).
|
|
13
|
+
*/
|
|
14
|
+
enableObjectTypeConfig?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Boostraps a yuuvis Momentum shell client.
|
|
18
|
+
*
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { bootstrapShellApplication } from '@yuuvis/client-shell-core';
|
|
21
|
+
*
|
|
22
|
+
* bootstrapShellApplication(AppComponent, appConfig).catch((err) => console.error(err));
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @param rootComponent Root component of the application
|
|
26
|
+
* @param options Application configuration
|
|
27
|
+
* @returns
|
|
28
|
+
*/
|
|
29
|
+
export declare function bootstrapShellApplication(rootComponent: Type<unknown>, options?: ApplicationConfig, shellOptions?: ShellBootstrapOptions): Promise<ApplicationRef>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Type } from '@angular/core';
|
|
1
2
|
import { DmsObject, ObjectCreateFlavor } from '@yuuvis/client-core';
|
|
2
3
|
import { Observable } from 'rxjs';
|
|
3
4
|
import { App, AppSchema, AppSchemaFlavor, ClientShellConfig, GlobalShortcut, ObjectFlavor, ShellAppSettings } from '../../client-shell.interface';
|
|
@@ -22,6 +23,7 @@ export declare class ShellService {
|
|
|
22
23
|
private _extensions;
|
|
23
24
|
private _objectFlavors;
|
|
24
25
|
private _objectCreateFlavors;
|
|
26
|
+
pickFile(): Observable<File | null>;
|
|
25
27
|
setShellConfig(csc: ClientShellConfig): void;
|
|
26
28
|
setAppBaseRoutes(apps: App[]): void;
|
|
27
29
|
registerApp(schema: AppSchema): void;
|
|
@@ -49,8 +51,10 @@ export declare class ShellService {
|
|
|
49
51
|
* Flavors are able to be applied to objects and add new metadata properties to them.
|
|
50
52
|
* @param flavors Array of flavors to be exposed
|
|
51
53
|
* @param app Optional ID of the app that exposes the flavors (defaults to 'global' if not provided)
|
|
54
|
+
* @param origin Optional origin of the flavors. Flavors could be added by apps or derived
|
|
55
|
+
* from a configuration (defaults to 'app' if not provided)
|
|
52
56
|
*/
|
|
53
|
-
exposeObjectFlavors(flavors: AppSchemaFlavor[], app?: string): void;
|
|
57
|
+
exposeObjectFlavors(flavors: AppSchemaFlavor[], app?: string, origin?: 'app' | 'config'): void;
|
|
54
58
|
/**
|
|
55
59
|
* Removes exposed object flavors from the shell.
|
|
56
60
|
* @param flavors Array of flavors to be concealed
|
|
@@ -64,8 +68,10 @@ export declare class ShellService {
|
|
|
64
68
|
* from the file and filled out automatically.
|
|
65
69
|
* @param flavor The flavor object to be exposed
|
|
66
70
|
* @param app Optional ID of the app that exposes the flavor (defaults to 'global' if not provided)
|
|
71
|
+
* @param origin Optional origin of the flavors. Flavors could be added by apps or derived
|
|
72
|
+
* from a configuration (defaults to 'app' if not provided)
|
|
67
73
|
*/
|
|
68
|
-
exposeObjectFlavor(flavor: AppSchemaFlavor, app?: string): void;
|
|
74
|
+
exposeObjectFlavor(flavor: AppSchemaFlavor, app?: string, origin?: 'app' | 'config'): void;
|
|
69
75
|
/**
|
|
70
76
|
* Removes an exposed object flavor from the shell.
|
|
71
77
|
* @param flavor Flavor to be concealed
|
|
@@ -88,7 +94,7 @@ export declare class ShellService {
|
|
|
88
94
|
* @param data Optional data to be passed to the flavor component
|
|
89
95
|
* @returns Observable that emits true if the flavor was applied successfully
|
|
90
96
|
*/
|
|
91
|
-
triggerApplyObjectFlavor(dmsObject: DmsObject, flavor: ObjectFlavor, data?: any): Observable<boolean>;
|
|
97
|
+
triggerApplyObjectFlavor(dmsObject: DmsObject, flavor: ObjectFlavor, data?: any, applyComponent?: Type<any>): Observable<boolean>;
|
|
92
98
|
removeObjectFlavor(dmsObject: DmsObject, flavor: ObjectFlavor): Observable<any>;
|
|
93
99
|
/**
|
|
94
100
|
* Get object flavors applicable for a certain mimetype
|
|
@@ -100,7 +106,8 @@ export declare class ShellService {
|
|
|
100
106
|
* exposed to other apps
|
|
101
107
|
* @returns Array of matching object flavors
|
|
102
108
|
*/
|
|
103
|
-
|
|
109
|
+
getApplicableDocumentFlavors(mimeType: string, app?: string, customFlavors?: ObjectFlavor[]): ObjectFlavor[];
|
|
110
|
+
getApplicableFolderFlavors(app?: string, customFlavors?: ObjectFlavor[]): ObjectFlavor[];
|
|
104
111
|
/**
|
|
105
112
|
* Get applied and applicable object flavors for a certain object
|
|
106
113
|
* @param dmsObject DmsObject to get flavors for
|
|
@@ -110,6 +117,7 @@ export declare class ShellService {
|
|
|
110
117
|
applied: ObjectFlavor[];
|
|
111
118
|
applicable: ObjectFlavor[];
|
|
112
119
|
};
|
|
120
|
+
getFlavorLabel(id: string): any;
|
|
113
121
|
applyObjectFlavor(dmsObject: DmsObject, flavor: ObjectFlavor, data?: Record<string, unknown>): Observable<DmsObject>;
|
|
114
122
|
registerTileExtension(ext: TileExtension): void;
|
|
115
123
|
/**
|
|
@@ -118,6 +126,7 @@ export declare class ShellService {
|
|
|
118
126
|
* @returns
|
|
119
127
|
*/
|
|
120
128
|
getRegisteredTileExtensions(): Record<string, TileExtension>;
|
|
129
|
+
_initObjectTypeConfig(): Promise<unknown>;
|
|
121
130
|
_init(): void;
|
|
122
131
|
static ɵfac: i0.ɵɵFactoryDeclaration<ShellService, never>;
|
|
123
132
|
static ɵprov: i0.ɵɵInjectableDeclaration<ShellService>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function getShellConfigQueryString(name: string, user?: never[], context?: string): string;
|
|
2
|
+
export declare const SHELL_CONFIG_FEATURES = "yuv:shell:features";
|
|
3
|
+
export declare const SHELL_CONFIG_TYPES = "yuv:shell:types";
|
|
4
|
+
export declare const SHELL_CONFIG_BASE: {
|
|
5
|
+
objectType: string;
|
|
6
|
+
secondaryObjectType: string;
|
|
7
|
+
nameProperty: string;
|
|
8
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface ShellConfig {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
context?: string;
|
|
5
|
+
user?: string[];
|
|
6
|
+
data: unknown;
|
|
7
|
+
}
|
|
8
|
+
export interface ClientShellType {
|
|
9
|
+
id: string;
|
|
10
|
+
baseType: string;
|
|
11
|
+
instantApply?: boolean;
|
|
12
|
+
applicableToMimeTypes?: string[];
|
|
13
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { ShellConfig } from './shell-config.interface';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Service to manage shell configuration objects. Base on the 'system:item' type.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ShellConfigService {
|
|
8
|
+
#private;
|
|
9
|
+
get(name: string): Observable<ShellConfig | undefined>;
|
|
10
|
+
/**
|
|
11
|
+
* Create a new configuration object.
|
|
12
|
+
* @param cfg the configuration object to be created
|
|
13
|
+
*/
|
|
14
|
+
create(name: string, data: unknown, context?: string, user?: string[]): Observable<ShellConfig>;
|
|
15
|
+
/**
|
|
16
|
+
* Update data of an existing configuration object.
|
|
17
|
+
* @param id the id of the configuration object to update
|
|
18
|
+
* @param data the new configuration data to be set
|
|
19
|
+
*/
|
|
20
|
+
update(id: string, data: unknown): Observable<any>;
|
|
21
|
+
/**
|
|
22
|
+
* Delete a configuration object.
|
|
23
|
+
* @param id the id of the configuration object to delete
|
|
24
|
+
*/
|
|
25
|
+
delete(id: string): Observable<any>;
|
|
26
|
+
download(id: string, filename?: string): void;
|
|
27
|
+
upload(id: string, file: File): Observable<any>;
|
|
28
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ShellConfigService, never>;
|
|
29
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ShellConfigService>;
|
|
30
|
+
}
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yuuvis/client-shell-core",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.2",
|
|
4
4
|
"author": "OPTIMAL SYSTEMS GmbH <npm@optimal-systems.de>",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"peerDependencies": {
|
|
7
|
-
"@angular/common": "^
|
|
8
|
-
"@angular/core": "^
|
|
9
|
-
"@angular/forms": "^
|
|
7
|
+
"@angular/common": "^19.2.1",
|
|
8
|
+
"@angular/core": "^19.2.1",
|
|
9
|
+
"@angular/forms": "^19.2.1"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@yuuvis/client-core": "2.0.0-beta.
|
|
13
|
-
"tslib": "^2.
|
|
12
|
+
"@yuuvis/client-core": "2.0.0-beta.2",
|
|
13
|
+
"tslib": "^2.6.2"
|
|
14
14
|
},
|
|
15
15
|
"sideEffects": false,
|
|
16
16
|
"module": "esm2022/yuuvis-client-shell-core.mjs",
|
|
@@ -21,8 +21,6 @@
|
|
|
21
21
|
},
|
|
22
22
|
".": {
|
|
23
23
|
"types": "./index.d.ts",
|
|
24
|
-
"esm2022": "./esm2022/yuuvis-client-shell-core.mjs",
|
|
25
|
-
"esm": "./esm2022/yuuvis-client-shell-core.mjs",
|
|
26
24
|
"default": "./esm2022/yuuvis-client-shell-core.mjs"
|
|
27
25
|
}
|
|
28
26
|
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { importProvidersFrom } from '@angular/core';
|
|
2
|
-
export const importShellExtensions = (extensions) => {
|
|
3
|
-
const providers = [];
|
|
4
|
-
extensions.forEach((extension) => {
|
|
5
|
-
providers.push(importProvidersFrom(extension));
|
|
6
|
-
});
|
|
7
|
-
return providers;
|
|
8
|
-
};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwuZXh0ZW5zaW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LXNoZWxsLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zaGVsbC9zaGVsbC5leHRlbnNpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QixtQkFBbUIsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFFakcsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxVQUFtQyxFQUEwQixFQUFFO0lBQ25HLE1BQU0sU0FBUyxHQUEyQixFQUFFLENBQUM7SUFDN0MsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1FBQy9CLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50UHJvdmlkZXJzLCBpbXBvcnRQcm92aWRlcnNGcm9tLCBJbXBvcnRQcm92aWRlcnNTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IGltcG9ydFNoZWxsRXh0ZW5zaW9ucyA9IChleHRlbnNpb25zOiBJbXBvcnRQcm92aWRlcnNTb3VyY2VbXSk6IEVudmlyb25tZW50UHJvdmlkZXJzW10gPT4ge1xuICBjb25zdCBwcm92aWRlcnM6IEVudmlyb25tZW50UHJvdmlkZXJzW10gPSBbXTtcbiAgZXh0ZW5zaW9ucy5mb3JFYWNoKChleHRlbnNpb24pID0+IHtcbiAgICBwcm92aWRlcnMucHVzaChpbXBvcnRQcm92aWRlcnNGcm9tKGV4dGVuc2lvbikpO1xuICB9KTtcbiAgcmV0dXJuIHByb3ZpZGVycztcbn07XG4iXX0=
|