@umbraco-cms/backoffice 14.0.0--preview004-24474e88 → 14.0.0--preview004-19e302a4
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/dist-cms/custom-elements.json +33 -0
- package/dist-cms/mocks/browser-handlers.js +1 -1
- package/dist-cms/mocks/data/media-type.data.d.ts +12 -7
- package/dist-cms/mocks/data/media-type.data.js +46 -22
- package/dist-cms/mocks/data/utils.d.ts +2 -1
- package/dist-cms/mocks/data/utils.js +6 -0
- package/dist-cms/mocks/handlers/media-type/detail.handlers.d.ts +1 -0
- package/dist-cms/mocks/handlers/media-type/detail.handlers.js +37 -0
- package/dist-cms/mocks/handlers/media-type/index.js +4 -0
- package/dist-cms/mocks/handlers/media-type/item.handlers.d.ts +1 -0
- package/dist-cms/mocks/handlers/media-type/item.handlers.js +20 -0
- package/dist-cms/mocks/handlers/media-type/slug.d.ts +1 -0
- package/dist-cms/mocks/handlers/media-type/slug.js +1 -0
- package/dist-cms/mocks/handlers/media-type/tree.handlers.d.ts +1 -0
- package/dist-cms/mocks/handlers/media-type/tree.handlers.js +25 -0
- package/dist-cms/packages/media/media-types/repository/media-type-item.store.d.ts +20 -0
- package/dist-cms/packages/media/media-types/repository/media-type-item.store.js +23 -0
- package/dist-cms/packages/media/media-types/repository/media-type.detail.store.d.ts +3 -2
- package/dist-cms/packages/media/media-types/repository/media-type.detail.store.js +3 -0
- package/dist-cms/packages/media/media-types/repository/media-type.repository.d.ts +25 -22
- package/dist-cms/packages/media/media-types/repository/media-type.repository.js +61 -30
- package/dist-cms/packages/media/media-types/repository/sources/media-type-item.server.data.d.ts +25 -0
- package/dist-cms/packages/media/media-types/repository/sources/media-type-item.server.data.js +32 -0
- package/dist-cms/packages/media/media-types/repository/sources/media-type.detail.server.data.d.ts +10 -10
- package/dist-cms/packages/media/media-types/repository/sources/media-type.detail.server.data.js +26 -35
- package/dist-cms/packages/media/media-types/workspace/manifests.js +76 -2
- package/dist-cms/packages/media/media-types/workspace/media-type-workspace-editor.element.d.ts +7 -1
- package/dist-cms/packages/media/media-types/workspace/media-type-workspace-editor.element.js +135 -18
- package/dist-cms/packages/media/media-types/workspace/media-type-workspace.context.d.ts +11 -8
- package/dist-cms/packages/media/media-types/workspace/media-type-workspace.context.js +25 -12
- package/dist-cms/packages/media/media-types/workspace/views/details/media-type-design-workspace-view.element.d.ts +17 -0
- package/dist-cms/packages/media/media-types/workspace/views/details/media-type-design-workspace-view.element.js +51 -0
- package/dist-cms/packages/media/media-types/workspace/views/details/media-type-list-view-workspace-view.element.d.ts +17 -0
- package/dist-cms/packages/media/media-types/workspace/views/details/media-type-list-view-workspace-view.element.js +51 -0
- package/dist-cms/packages/media/media-types/workspace/views/details/media-type-permissions-workspace-view.element.d.ts +17 -0
- package/dist-cms/packages/media/media-types/workspace/views/details/media-type-permissions-workspace-view.element.js +51 -0
- package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
- package/dist-cms/vscode-html-custom-data.json +16 -1
- package/package.json +1 -1
- package/dist-cms/mocks/handlers/media-type.handlers.js +0 -23
- package/dist-cms/packages/media/media-types/repository/sources/media-type.details.server.data.interface.d.ts +0 -9
- package/dist-cms/packages/media/media-types/repository/sources/media-type.details.server.data.interface.js +0 -1
- package/dist-cms/packages/media/media-types/types.d.ts +0 -6
- package/dist-cms/packages/media/media-types/types.js +0 -1
- /package/dist-cms/mocks/handlers/{media-type.handlers.d.ts → media-type/index.d.ts} +0 -0
|
@@ -6138,6 +6138,39 @@
|
|
|
6138
6138
|
}
|
|
6139
6139
|
]
|
|
6140
6140
|
},
|
|
6141
|
+
{
|
|
6142
|
+
"name": "umb-media-type-design-workspace-view",
|
|
6143
|
+
"path": "./../src/packages/media/media-types/workspace/views/details/media-type-design-workspace-view.element.ts",
|
|
6144
|
+
"properties": [
|
|
6145
|
+
{
|
|
6146
|
+
"name": "styles",
|
|
6147
|
+
"type": "array",
|
|
6148
|
+
"default": "[\"UmbTextStyles\",null]"
|
|
6149
|
+
}
|
|
6150
|
+
]
|
|
6151
|
+
},
|
|
6152
|
+
{
|
|
6153
|
+
"name": "umb-media-type-list-view-workspace-view",
|
|
6154
|
+
"path": "./../src/packages/media/media-types/workspace/views/details/media-type-list-view-workspace-view.element.ts",
|
|
6155
|
+
"properties": [
|
|
6156
|
+
{
|
|
6157
|
+
"name": "styles",
|
|
6158
|
+
"type": "array",
|
|
6159
|
+
"default": "[\"UmbTextStyles\",null]"
|
|
6160
|
+
}
|
|
6161
|
+
]
|
|
6162
|
+
},
|
|
6163
|
+
{
|
|
6164
|
+
"name": "umb-media-type-permissions-workspace-view",
|
|
6165
|
+
"path": "./../src/packages/media/media-types/workspace/views/details/media-type-permissions-workspace-view.element.ts",
|
|
6166
|
+
"properties": [
|
|
6167
|
+
{
|
|
6168
|
+
"name": "styles",
|
|
6169
|
+
"type": "array",
|
|
6170
|
+
"default": "[\"UmbTextStyles\",null]"
|
|
6171
|
+
}
|
|
6172
|
+
]
|
|
6173
|
+
},
|
|
6141
6174
|
{
|
|
6142
6175
|
"name": "umb-collection-view-media-test",
|
|
6143
6176
|
"path": "./../src/packages/media/media/collection-view/collection-view-media-test.element.ts",
|
|
@@ -16,7 +16,7 @@ import { handlers as profilingHandlers } from './handlers/performance-profiling.
|
|
|
16
16
|
import { handlers as documentHandlers } from './handlers/document/index.js';
|
|
17
17
|
import { handlers as mediaHandlers } from './handlers/media.handlers.js';
|
|
18
18
|
import { handlers as dictionaryHandlers } from './handlers/dictionary.handlers.js';
|
|
19
|
-
import { handlers as mediaTypeHandlers } from './handlers/media-type.
|
|
19
|
+
import { handlers as mediaTypeHandlers } from './handlers/media-type/index.js';
|
|
20
20
|
import { handlers as memberGroupHandlers } from './handlers/member-group.handlers.js';
|
|
21
21
|
import { handlers as memberHandlers } from './handlers/member.handlers.js';
|
|
22
22
|
import { handlers as memberTypeHandlers } from './handlers/member-type.handlers.js';
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import type { MediaTypeDetails } from '../../packages/media/media-types/types.js';
|
|
2
1
|
import { UmbEntityData } from './entity.data.js';
|
|
3
|
-
import {
|
|
4
|
-
export declare const data: Array<
|
|
5
|
-
declare
|
|
2
|
+
import { MediaTypeResponseModel, MediaTypeTreeItemResponseModel } from '../../external/backend-api/index.js';
|
|
3
|
+
export declare const data: Array<MediaTypeResponseModel>;
|
|
4
|
+
export declare const treeData: Array<MediaTypeTreeItemResponseModel>;
|
|
5
|
+
declare class UmbMediaTypeData extends UmbEntityData<MediaTypeResponseModel> {
|
|
6
|
+
private treeData;
|
|
6
7
|
constructor();
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
insert(item: MediaTypeResponseModel): import("../../external/backend-api/index.js").ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel;
|
|
9
|
+
update(id: string, item: MediaTypeResponseModel): import("../../external/backend-api/index.js").ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel;
|
|
10
|
+
getItems(ids: Array<string>): Array<MediaTypeTreeItemResponseModel>;
|
|
11
|
+
getTreeRoot(): Array<MediaTypeTreeItemResponseModel>;
|
|
12
|
+
getTreeItemChildren(id: string): Array<MediaTypeTreeItemResponseModel>;
|
|
13
|
+
getTreeItems(ids: Array<string>): Array<MediaTypeTreeItemResponseModel>;
|
|
14
|
+
getAllowedTypesOf(id: string): Array<MediaTypeTreeItemResponseModel>;
|
|
10
15
|
}
|
|
11
16
|
export declare const umbMediaTypeData: UmbMediaTypeData;
|
|
12
17
|
export {};
|
|
@@ -1,27 +1,25 @@
|
|
|
1
1
|
import { UmbEntityData } from './entity.data.js';
|
|
2
|
-
import {
|
|
2
|
+
import { createMediaTypeTreeItem } from './utils.js';
|
|
3
3
|
export const data = [
|
|
4
4
|
{
|
|
5
5
|
name: 'Media Type 1',
|
|
6
|
-
type: 'media-type',
|
|
7
|
-
hasChildren: false,
|
|
8
6
|
id: 'c5159663-eb82-43ee-bd23-e42dc5e71db6',
|
|
9
|
-
|
|
10
|
-
parentId: null,
|
|
11
|
-
isFolder: false,
|
|
7
|
+
description: 'Media type 1 description',
|
|
12
8
|
alias: 'mediaType1',
|
|
9
|
+
icon: 'umb:bug',
|
|
13
10
|
properties: [],
|
|
11
|
+
containers: [],
|
|
14
12
|
},
|
|
13
|
+
];
|
|
14
|
+
export const treeData = [
|
|
15
15
|
{
|
|
16
|
-
name:
|
|
16
|
+
name: data[0].name,
|
|
17
|
+
id: data[0].id,
|
|
18
|
+
icon: data[0].icon,
|
|
17
19
|
type: 'media-type',
|
|
18
20
|
hasChildren: false,
|
|
19
|
-
id: '22da1b0b-c310-4730-9912-c30b3eb9802e',
|
|
20
21
|
isContainer: false,
|
|
21
22
|
parentId: null,
|
|
22
|
-
isFolder: false,
|
|
23
|
-
alias: 'mediaType2',
|
|
24
|
-
properties: [],
|
|
25
23
|
},
|
|
26
24
|
];
|
|
27
25
|
// Temp mocked database
|
|
@@ -31,22 +29,48 @@ export const data = [
|
|
|
31
29
|
class UmbMediaTypeData extends UmbEntityData {
|
|
32
30
|
constructor() {
|
|
33
31
|
super(data);
|
|
32
|
+
this.treeData = treeData;
|
|
33
|
+
}
|
|
34
|
+
// TODO: Can we do this smarter so we don't need to make this for each mock data:
|
|
35
|
+
insert(item) {
|
|
36
|
+
const result = super.insert(item);
|
|
37
|
+
this.treeData.push(createMediaTypeTreeItem(result));
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
update(id, item) {
|
|
41
|
+
const result = super.save(id, item);
|
|
42
|
+
this.treeData = this.treeData.map((x) => {
|
|
43
|
+
if (x.id === result.id) {
|
|
44
|
+
return createMediaTypeTreeItem(result);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
return x;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
getItems(ids) {
|
|
53
|
+
const items = this.data.filter((item) => ids.includes(item.id ?? ''));
|
|
54
|
+
return items.map((item) => item);
|
|
34
55
|
}
|
|
35
56
|
getTreeRoot() {
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
return { items: treeItems, total };
|
|
57
|
+
const rootItems = this.treeData.filter((item) => item.parentId === null);
|
|
58
|
+
const result = rootItems.map((item) => createMediaTypeTreeItem(item));
|
|
59
|
+
return result;
|
|
40
60
|
}
|
|
41
61
|
getTreeItemChildren(id) {
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
const total = items.length;
|
|
45
|
-
return { items: treeItems, total };
|
|
62
|
+
const childItems = this.treeData.filter((item) => item.parentId === id);
|
|
63
|
+
return childItems.map((item) => item);
|
|
46
64
|
}
|
|
47
|
-
|
|
48
|
-
const items = this.
|
|
49
|
-
return items.map((item) =>
|
|
65
|
+
getTreeItems(ids) {
|
|
66
|
+
const items = this.treeData.filter((item) => ids.includes(item.id ?? ''));
|
|
67
|
+
return items.map((item) => item);
|
|
68
|
+
}
|
|
69
|
+
getAllowedTypesOf(id) {
|
|
70
|
+
const mediaType = this.getById(id);
|
|
71
|
+
const allowedTypeKeys = mediaType?.allowedContentTypes?.map((mediaType) => mediaType.id) ?? [];
|
|
72
|
+
const items = this.treeData.filter((item) => allowedTypeKeys.includes(item.id ?? ''));
|
|
73
|
+
return items.map((item) => item);
|
|
50
74
|
}
|
|
51
75
|
}
|
|
52
76
|
export const umbMediaTypeData = new UmbMediaTypeData();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ContentTreeItemResponseModel, DocumentTreeItemResponseModel, DocumentTypeTreeItemResponseModel, EntityTreeItemResponseModel, FolderTreeItemResponseModel, DocumentTypeResponseModel, FileSystemTreeItemPresentationModel, DocumentResponseModel, TextFileResponseModelBaseModel, FileItemResponseModelBaseModel } from '../../external/backend-api/index.js';
|
|
1
|
+
import type { ContentTreeItemResponseModel, DocumentTreeItemResponseModel, DocumentTypeTreeItemResponseModel, EntityTreeItemResponseModel, FolderTreeItemResponseModel, DocumentTypeResponseModel, FileSystemTreeItemPresentationModel, DocumentResponseModel, TextFileResponseModelBaseModel, FileItemResponseModelBaseModel, MediaTypeResponseModel, MediaTypeTreeItemResponseModel } from '../../external/backend-api/index.js';
|
|
2
2
|
export declare const createEntityTreeItem: (item: any) => EntityTreeItemResponseModel;
|
|
3
3
|
export declare const createFolderTreeItem: (item: any) => FolderTreeItemResponseModel;
|
|
4
4
|
export declare const createContentTreeItem: (item: any) => ContentTreeItemResponseModel & {
|
|
@@ -8,6 +8,7 @@ export declare const createDocumentTreeItem: (item: DocumentResponseModel) => Do
|
|
|
8
8
|
isTrashed: boolean;
|
|
9
9
|
};
|
|
10
10
|
export declare const createDocumentTypeTreeItem: (item: DocumentTypeResponseModel) => DocumentTypeTreeItemResponseModel;
|
|
11
|
+
export declare const createMediaTypeTreeItem: (item: MediaTypeResponseModel) => MediaTypeTreeItemResponseModel;
|
|
11
12
|
export declare const createFileSystemTreeItem: (item: any) => FileSystemTreeItemPresentationModel;
|
|
12
13
|
export declare const createTextFileItem: (item: any) => TextFileResponseModelBaseModel;
|
|
13
14
|
export declare const createFileItemResponseModelBaseModel: (item: any) => FileItemResponseModelBaseModel;
|
|
@@ -46,6 +46,12 @@ export const createDocumentTypeTreeItem = (item) => {
|
|
|
46
46
|
isElement: item.isElement,
|
|
47
47
|
};
|
|
48
48
|
};
|
|
49
|
+
export const createMediaTypeTreeItem = (item) => {
|
|
50
|
+
return {
|
|
51
|
+
...createEntityTreeItem(item),
|
|
52
|
+
type: 'media-type',
|
|
53
|
+
};
|
|
54
|
+
};
|
|
49
55
|
export const createFileSystemTreeItem = (item) => {
|
|
50
56
|
return {
|
|
51
57
|
name: item.name,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const detailHandlers: import("msw").RestHandler<import("msw/lib/glossary-de6278a9.js").M<import("msw/lib/glossary-de6278a9.js").h>>[];
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
const { rest } = window.MockServiceWorker;
|
|
2
|
+
import { umbMediaTypeData } from '../../data/media-type.data.js';
|
|
3
|
+
import { slug } from './slug.js';
|
|
4
|
+
import { umbracoPath } from '../../../shared/utils/index.js';
|
|
5
|
+
export const detailHandlers = [
|
|
6
|
+
rest.post(umbracoPath(`${slug}`), async (req, res, ctx) => {
|
|
7
|
+
const data = await req.json();
|
|
8
|
+
if (!data)
|
|
9
|
+
return;
|
|
10
|
+
umbMediaTypeData.insert(data);
|
|
11
|
+
return res(ctx.status(200));
|
|
12
|
+
}),
|
|
13
|
+
rest.get(umbracoPath(`${slug}/:id`), (req, res, ctx) => {
|
|
14
|
+
const id = req.params.id;
|
|
15
|
+
if (!id)
|
|
16
|
+
return;
|
|
17
|
+
const data = umbMediaTypeData.getById(id);
|
|
18
|
+
return res(ctx.status(200), ctx.json(data));
|
|
19
|
+
}),
|
|
20
|
+
rest.put(umbracoPath(`${slug}/:id`), async (req, res, ctx) => {
|
|
21
|
+
const id = req.params.id;
|
|
22
|
+
if (!id)
|
|
23
|
+
return;
|
|
24
|
+
const data = await req.json();
|
|
25
|
+
if (!data)
|
|
26
|
+
return;
|
|
27
|
+
const saved = umbMediaTypeData.save(id, data);
|
|
28
|
+
return res(ctx.status(200), ctx.json(saved));
|
|
29
|
+
}),
|
|
30
|
+
rest.delete(umbracoPath(`${slug}/:id`), async (req, res, ctx) => {
|
|
31
|
+
const id = req.params.id;
|
|
32
|
+
if (!id)
|
|
33
|
+
return;
|
|
34
|
+
umbMediaTypeData.delete([id]);
|
|
35
|
+
return res(ctx.status(200));
|
|
36
|
+
}),
|
|
37
|
+
];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const itemHandlers: import("msw").RestHandler<import("msw/lib/glossary-de6278a9.js").M<import("msw/lib/glossary-de6278a9.js").h>>[];
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const { rest } = window.MockServiceWorker;
|
|
2
|
+
import { umbMediaTypeData } from '../../data/media-type.data.js';
|
|
3
|
+
import { slug } from './slug.js';
|
|
4
|
+
import { umbracoPath } from '../../../shared/utils/index.js';
|
|
5
|
+
export const itemHandlers = [
|
|
6
|
+
rest.get(umbracoPath(`${slug}/item`), (req, res, ctx) => {
|
|
7
|
+
const ids = req.url.searchParams.getAll('id');
|
|
8
|
+
if (!ids)
|
|
9
|
+
return;
|
|
10
|
+
const items = umbMediaTypeData.getItems(ids);
|
|
11
|
+
return res(ctx.status(200), ctx.json(items));
|
|
12
|
+
}),
|
|
13
|
+
rest.get(umbracoPath(`/tree${slug}/item`), (req, res, ctx) => {
|
|
14
|
+
const ids = req.url.searchParams.getAll('id');
|
|
15
|
+
if (!ids)
|
|
16
|
+
return;
|
|
17
|
+
const items = umbMediaTypeData.getTreeItems(ids);
|
|
18
|
+
return res(ctx.status(200), ctx.json(items));
|
|
19
|
+
}),
|
|
20
|
+
];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const slug = "/media-type";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const slug = '/media-type';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const treeHandlers: import("msw").RestHandler<import("msw/lib/glossary-de6278a9.js").M<import("msw/lib/glossary-de6278a9.js").h>>[];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const { rest } = window.MockServiceWorker;
|
|
2
|
+
import { umbMediaTypeData } from '../../data/media-type.data.js';
|
|
3
|
+
import { slug } from './slug.js';
|
|
4
|
+
import { umbracoPath } from '../../../shared/utils/index.js';
|
|
5
|
+
export const treeHandlers = [
|
|
6
|
+
rest.get(umbracoPath(`/tree${slug}/root`), (req, res, ctx) => {
|
|
7
|
+
const rootItems = umbMediaTypeData.getTreeRoot();
|
|
8
|
+
const response = {
|
|
9
|
+
total: rootItems.length,
|
|
10
|
+
items: rootItems,
|
|
11
|
+
};
|
|
12
|
+
return res(ctx.status(200), ctx.json(response));
|
|
13
|
+
}),
|
|
14
|
+
rest.get(umbracoPath(`/tree${slug}/children`), (req, res, ctx) => {
|
|
15
|
+
const parentId = req.url.searchParams.get('parentId');
|
|
16
|
+
if (!parentId)
|
|
17
|
+
return;
|
|
18
|
+
const children = umbMediaTypeData.getTreeItemChildren(parentId);
|
|
19
|
+
const response = {
|
|
20
|
+
total: children.length,
|
|
21
|
+
items: children,
|
|
22
|
+
};
|
|
23
|
+
return res(ctx.status(200), ctx.json(response));
|
|
24
|
+
}),
|
|
25
|
+
];
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { MediaTypeItemResponseModel } from '../../../../external/backend-api/index.js';
|
|
2
|
+
import { UmbContextToken } from '../../../../libs/context-api/index.js';
|
|
3
|
+
import { UmbControllerHostElement } from '../../../../libs/controller-api/index.js';
|
|
4
|
+
import { UmbItemStore, UmbStoreBase } from '../../../core/store/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* @export
|
|
7
|
+
* @class UmbMediaTypeItemStore
|
|
8
|
+
* @extends {UmbStoreBase}
|
|
9
|
+
* @description - Data Store for Media Type items
|
|
10
|
+
*/
|
|
11
|
+
export declare class UmbMediaTypeItemStore extends UmbStoreBase<MediaTypeItemResponseModel> implements UmbItemStore<MediaTypeItemResponseModel> {
|
|
12
|
+
/**
|
|
13
|
+
* Creates an instance of UmbMediaTypeItemStore.
|
|
14
|
+
* @param {UmbControllerHostElement} host
|
|
15
|
+
* @memberof UmbMediaTypeItemStore
|
|
16
|
+
*/
|
|
17
|
+
constructor(host: UmbControllerHostElement);
|
|
18
|
+
items(ids: Array<string>): import("rxjs").Observable<MediaTypeItemResponseModel[]>;
|
|
19
|
+
}
|
|
20
|
+
export declare const UMB_MEDIA_TYPE_ITEM_STORE_CONTEXT_TOKEN: UmbContextToken<UmbMediaTypeItemStore, UmbMediaTypeItemStore>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { UmbContextToken } from '../../../../libs/context-api/index.js';
|
|
2
|
+
import { UmbStoreBase } from '../../../core/store/index.js';
|
|
3
|
+
import { UmbArrayState } from '../../../../libs/observable-api/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* @export
|
|
6
|
+
* @class UmbMediaTypeItemStore
|
|
7
|
+
* @extends {UmbStoreBase}
|
|
8
|
+
* @description - Data Store for Media Type items
|
|
9
|
+
*/
|
|
10
|
+
export class UmbMediaTypeItemStore extends UmbStoreBase {
|
|
11
|
+
/**
|
|
12
|
+
* Creates an instance of UmbMediaTypeItemStore.
|
|
13
|
+
* @param {UmbControllerHostElement} host
|
|
14
|
+
* @memberof UmbMediaTypeItemStore
|
|
15
|
+
*/
|
|
16
|
+
constructor(host) {
|
|
17
|
+
super(host, UMB_MEDIA_TYPE_ITEM_STORE_CONTEXT_TOKEN.toString(), new UmbArrayState([], (x) => x.id));
|
|
18
|
+
}
|
|
19
|
+
items(ids) {
|
|
20
|
+
return this._data.asObservablePart((items) => items.filter((item) => ids.includes(item.id ?? '')));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export const UMB_MEDIA_TYPE_ITEM_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbMediaTypeItemStore');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { MediaTypeDetails } from '../types.js';
|
|
2
1
|
import { UmbContextToken } from '../../../../libs/context-api/index.js';
|
|
3
2
|
import { UmbStoreBase } from '../../../core/store/index.js';
|
|
4
3
|
import { UmbControllerHostElement } from '../../../../libs/controller-api/index.js';
|
|
4
|
+
import { MediaTypeResponseModel } from '../../../../external/backend-api/index.js';
|
|
5
5
|
/**
|
|
6
6
|
* @export
|
|
7
7
|
* @class UmbMediaTypeDetailStore
|
|
@@ -10,7 +10,8 @@ import { UmbControllerHostElement } from '../../../../libs/controller-api/index.
|
|
|
10
10
|
*/
|
|
11
11
|
export declare class UmbMediaTypeStore extends UmbStoreBase {
|
|
12
12
|
constructor(host: UmbControllerHostElement);
|
|
13
|
-
|
|
13
|
+
byId(id: MediaTypeResponseModel['id']): import("rxjs").Observable<any>;
|
|
14
|
+
append(mediaType: MediaTypeResponseModel): void;
|
|
14
15
|
remove(uniques: string[]): void;
|
|
15
16
|
}
|
|
16
17
|
export declare const UMB_MEDIA_TYPE_STORE_CONTEXT_TOKEN: UmbContextToken<UmbMediaTypeStore, UmbMediaTypeStore>;
|
|
@@ -11,6 +11,9 @@ export class UmbMediaTypeStore extends UmbStoreBase {
|
|
|
11
11
|
constructor(host) {
|
|
12
12
|
super(host, UMB_MEDIA_TYPE_STORE_CONTEXT_TOKEN.toString(), new UmbArrayState([], (x) => x.id));
|
|
13
13
|
}
|
|
14
|
+
byId(id) {
|
|
15
|
+
return this._data.asObservablePart((x) => x.find((y) => y.id === id));
|
|
16
|
+
}
|
|
14
17
|
append(mediaType) {
|
|
15
18
|
this._data.append([mediaType]);
|
|
16
19
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { MediaTypeDetails } from '../types.js';
|
|
2
1
|
import { UmbControllerHostElement } from '../../../../libs/controller-api/index.js';
|
|
3
|
-
import { UmbTreeRepository } from '../../../core/repository/index.js';
|
|
4
|
-
import {
|
|
5
|
-
export declare class UmbMediaTypeRepository implements UmbTreeRepository<
|
|
2
|
+
import { UmbTreeRepository, UmbItemRepository, UmbDetailRepository } from '../../../core/repository/index.js';
|
|
3
|
+
import { CreateMediaTypeRequestModel, FolderTreeItemResponseModel, MediaTypeItemResponseModel, MediaTypeResponseModel, UpdateMediaTypeRequestModel } from '../../../../external/backend-api/index.js';
|
|
4
|
+
export declare class UmbMediaTypeRepository implements UmbItemRepository<MediaTypeItemResponseModel>, UmbTreeRepository<FolderTreeItemResponseModel>, UmbDetailRepository<CreateMediaTypeRequestModel, any, UpdateMediaTypeRequestModel, MediaTypeResponseModel> {
|
|
6
5
|
#private;
|
|
7
6
|
constructor(host: UmbControllerHostElement);
|
|
8
7
|
requestTreeRoot(): Promise<{
|
|
@@ -17,35 +16,39 @@ export declare class UmbMediaTypeRepository implements UmbTreeRepository<EntityT
|
|
|
17
16
|
requestRootTreeItems(): Promise<{
|
|
18
17
|
data: import("../../../core/repository/index.js").UmbPagedData<any> | undefined;
|
|
19
18
|
error: import("../../../../external/backend-api/index.js").ApiError | import("../../../../external/backend-api/index.js").CancelError | undefined;
|
|
20
|
-
asObservable: () => import("rxjs").Observable<EntityTreeItemResponseModel[]>;
|
|
19
|
+
asObservable: () => import("rxjs").Observable<import("../../../../external/backend-api/index.js").EntityTreeItemResponseModel[]>;
|
|
21
20
|
}>;
|
|
22
21
|
requestTreeItemsOf(parentId: string | null): Promise<{
|
|
23
22
|
data: import("../../../core/repository/index.js").UmbPagedData<any> | undefined;
|
|
24
23
|
error: import("../../../../external/backend-api/index.js").ApiError | import("../../../../external/backend-api/index.js").CancelError | undefined;
|
|
25
|
-
asObservable: () => import("rxjs").Observable<EntityTreeItemResponseModel[]>;
|
|
24
|
+
asObservable: () => import("rxjs").Observable<import("../../../../external/backend-api/index.js").EntityTreeItemResponseModel[]>;
|
|
26
25
|
}>;
|
|
26
|
+
byId(id: string): Promise<import("rxjs").Observable<any>>;
|
|
27
27
|
requestItemsLegacy(ids: Array<string>): Promise<{
|
|
28
28
|
data: any[] | undefined;
|
|
29
29
|
error: import("../../../../external/backend-api/index.js").ApiError | import("../../../../external/backend-api/index.js").CancelError | undefined;
|
|
30
|
-
asObservable: () => import("rxjs").Observable<EntityTreeItemResponseModel[]>;
|
|
31
|
-
}>;
|
|
32
|
-
rootTreeItems(): Promise<import("rxjs").Observable<EntityTreeItemResponseModel[]>>;
|
|
33
|
-
treeItemsOf(parentId: string | null): Promise<import("rxjs").Observable<EntityTreeItemResponseModel[]>>;
|
|
34
|
-
itemsLegacy(ids: Array<string>): Promise<import("rxjs").Observable<EntityTreeItemResponseModel[]>>;
|
|
35
|
-
createScaffold(): Promise<
|
|
36
|
-
|
|
30
|
+
asObservable: () => import("rxjs").Observable<import("../../../../external/backend-api/index.js").EntityTreeItemResponseModel[]>;
|
|
31
|
+
}>;
|
|
32
|
+
rootTreeItems(): Promise<import("rxjs").Observable<import("../../../../external/backend-api/index.js").EntityTreeItemResponseModel[]>>;
|
|
33
|
+
treeItemsOf(parentId: string | null): Promise<import("rxjs").Observable<import("../../../../external/backend-api/index.js").EntityTreeItemResponseModel[]>>;
|
|
34
|
+
itemsLegacy(ids: Array<string>): Promise<import("rxjs").Observable<import("../../../../external/backend-api/index.js").EntityTreeItemResponseModel[]>>;
|
|
35
|
+
createScaffold(parentId: string | null): Promise<import("../../../core/repository/index.js").DataSourceResponse<import("../../../../external/backend-api/index.js").CreateContentTypeRequestModelBaseCreateMediaTypePropertyTypeRequestModelCreateMediaTypePropertyTypeContainerRequestModel>>;
|
|
36
|
+
requestById(id: string): Promise<{
|
|
37
|
+
data: import("../../../../external/backend-api/index.js").ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel | undefined;
|
|
38
|
+
error: import("../../../../external/backend-api/index.js").ApiError | import("../../../../external/backend-api/index.js").CancelError | undefined;
|
|
37
39
|
}>;
|
|
38
|
-
|
|
39
|
-
data:
|
|
40
|
-
error:
|
|
40
|
+
requestItems(ids: Array<string>): Promise<{
|
|
41
|
+
data: MediaTypeItemResponseModel[] | undefined;
|
|
42
|
+
error: import("../../../../external/backend-api/index.js").ApiError | import("../../../../external/backend-api/index.js").CancelError | undefined;
|
|
43
|
+
asObservable: () => import("rxjs").Observable<MediaTypeItemResponseModel[]>;
|
|
41
44
|
}>;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
+
items(ids: Array<string>): Promise<import("rxjs").Observable<MediaTypeItemResponseModel[]>>;
|
|
46
|
+
delete(id: string): Promise<import("../../../core/repository/index.js").DataSourceResponse<unknown>>;
|
|
47
|
+
save(id: string, item: UpdateMediaTypeRequestModel): Promise<{
|
|
48
|
+
error: import("../../../../external/backend-api/index.js").ApiError | import("../../../../external/backend-api/index.js").CancelError | undefined;
|
|
45
49
|
}>;
|
|
46
|
-
create(mediaType:
|
|
47
|
-
|
|
48
|
-
error: any;
|
|
50
|
+
create(mediaType: CreateMediaTypeRequestModel): Promise<{
|
|
51
|
+
error: import("../../../../external/backend-api/index.js").ApiError | import("../../../../external/backend-api/index.js").CancelError | undefined;
|
|
49
52
|
}>;
|
|
50
53
|
move(): Promise<void>;
|
|
51
54
|
copy(): Promise<void>;
|
|
@@ -2,6 +2,8 @@ import { UMB_MEDIA_TYPE_TREE_STORE_CONTEXT_TOKEN } from './media-type.tree.store
|
|
|
2
2
|
import { UmbMediaTypeDetailServerDataSource } from './sources/media-type.detail.server.data.js';
|
|
3
3
|
import { UMB_MEDIA_TYPE_STORE_CONTEXT_TOKEN } from './media-type.detail.store.js';
|
|
4
4
|
import { UmbMediaTypeTreeServerDataSource } from './sources/media-type.tree.server.data.js';
|
|
5
|
+
import { UMB_MEDIA_TYPE_ITEM_STORE_CONTEXT_TOKEN } from './media-type-item.store.js';
|
|
6
|
+
import { UmbMediaTypeItemServerDataSource } from './sources/media-type-item.server.data.js';
|
|
5
7
|
import { UmbContextConsumerController } from '../../../../libs/context-api/index.js';
|
|
6
8
|
import { UMB_NOTIFICATION_CONTEXT_TOKEN } from '../../../core/notification/index.js';
|
|
7
9
|
export class UmbMediaTypeRepository {
|
|
@@ -10,26 +12,31 @@ export class UmbMediaTypeRepository {
|
|
|
10
12
|
#treeSource;
|
|
11
13
|
#treeStore;
|
|
12
14
|
#detailSource;
|
|
13
|
-
#
|
|
15
|
+
#detailStore;
|
|
16
|
+
#itemSource;
|
|
17
|
+
#itemStore;
|
|
14
18
|
#notificationContext;
|
|
15
19
|
constructor(host) {
|
|
16
20
|
this.#host = host;
|
|
17
21
|
// TODO: figure out how spin up get the correct data source
|
|
18
22
|
this.#treeSource = new UmbMediaTypeTreeServerDataSource(this.#host);
|
|
19
23
|
this.#detailSource = new UmbMediaTypeDetailServerDataSource(this.#host);
|
|
24
|
+
this.#itemSource = new UmbMediaTypeItemServerDataSource(this.#host);
|
|
20
25
|
this.#init = Promise.all([
|
|
21
26
|
new UmbContextConsumerController(this.#host, UMB_MEDIA_TYPE_STORE_CONTEXT_TOKEN, (instance) => {
|
|
22
|
-
this.#
|
|
27
|
+
this.#detailStore = instance;
|
|
23
28
|
}),
|
|
24
29
|
new UmbContextConsumerController(this.#host, UMB_MEDIA_TYPE_TREE_STORE_CONTEXT_TOKEN, (instance) => {
|
|
25
30
|
this.#treeStore = instance;
|
|
26
31
|
}),
|
|
32
|
+
new UmbContextConsumerController(this.#host, UMB_MEDIA_TYPE_ITEM_STORE_CONTEXT_TOKEN, (instance) => {
|
|
33
|
+
this.#itemStore = instance;
|
|
34
|
+
}),
|
|
27
35
|
new UmbContextConsumerController(this.#host, UMB_NOTIFICATION_CONTEXT_TOKEN, (instance) => {
|
|
28
36
|
this.#notificationContext = instance;
|
|
29
37
|
}),
|
|
30
38
|
]);
|
|
31
39
|
}
|
|
32
|
-
// TREE:
|
|
33
40
|
async requestTreeRoot() {
|
|
34
41
|
await this.#init;
|
|
35
42
|
const data = {
|
|
@@ -59,6 +66,12 @@ export class UmbMediaTypeRepository {
|
|
|
59
66
|
}
|
|
60
67
|
return { data, error, asObservable: () => this.#treeStore.childrenOf(parentId) };
|
|
61
68
|
}
|
|
69
|
+
async byId(id) {
|
|
70
|
+
if (!id)
|
|
71
|
+
throw new Error('Key is missing');
|
|
72
|
+
await this.#init;
|
|
73
|
+
return this.#detailStore.byId(id);
|
|
74
|
+
}
|
|
62
75
|
async requestItemsLegacy(ids) {
|
|
63
76
|
await this.#init;
|
|
64
77
|
if (!ids) {
|
|
@@ -80,58 +93,76 @@ export class UmbMediaTypeRepository {
|
|
|
80
93
|
return this.#treeStore.items(ids);
|
|
81
94
|
}
|
|
82
95
|
// DETAILS
|
|
83
|
-
async createScaffold() {
|
|
96
|
+
async createScaffold(parentId) {
|
|
97
|
+
if (parentId === undefined)
|
|
98
|
+
throw new Error('Parent id is missing');
|
|
84
99
|
await this.#init;
|
|
85
|
-
return this.#detailSource.createScaffold();
|
|
100
|
+
return this.#detailSource.createScaffold(parentId);
|
|
86
101
|
}
|
|
87
|
-
async
|
|
102
|
+
async requestById(id) {
|
|
88
103
|
await this.#init;
|
|
89
|
-
// TODO: should we show a notification if the id is missing?
|
|
90
|
-
// Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice?
|
|
91
104
|
if (!id) {
|
|
92
105
|
throw new Error('Id is missing');
|
|
93
106
|
}
|
|
94
107
|
const { data, error } = await this.#detailSource.get(id);
|
|
95
108
|
if (data) {
|
|
96
|
-
this.#
|
|
109
|
+
this.#detailStore?.append(data);
|
|
97
110
|
}
|
|
98
111
|
return { data, error };
|
|
99
112
|
}
|
|
113
|
+
async requestItems(ids) {
|
|
114
|
+
if (!ids)
|
|
115
|
+
throw new Error('Keys are missing');
|
|
116
|
+
await this.#init;
|
|
117
|
+
const { data, error } = await this.#itemSource.getItems(ids);
|
|
118
|
+
if (data) {
|
|
119
|
+
this.#itemStore?.appendItems(data);
|
|
120
|
+
}
|
|
121
|
+
return { data, error, asObservable: () => this.#itemStore.items(ids) };
|
|
122
|
+
}
|
|
123
|
+
async items(ids) {
|
|
124
|
+
await this.#init;
|
|
125
|
+
return this.#itemStore.items(ids);
|
|
126
|
+
}
|
|
100
127
|
async delete(id) {
|
|
101
128
|
await this.#init;
|
|
102
129
|
return this.#detailSource.delete(id);
|
|
103
130
|
}
|
|
104
|
-
async save(
|
|
131
|
+
async save(id, item) {
|
|
132
|
+
if (!id)
|
|
133
|
+
throw new Error('Data Type id is missing');
|
|
134
|
+
if (!item)
|
|
135
|
+
throw new Error('Media Type is missing');
|
|
105
136
|
await this.#init;
|
|
106
|
-
|
|
107
|
-
// Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice?
|
|
108
|
-
if (!mediaType || !mediaType.id) {
|
|
109
|
-
throw new Error('Media type is missing');
|
|
110
|
-
}
|
|
111
|
-
const { error } = await this.#detailSource.update(mediaType);
|
|
137
|
+
const { error } = await this.#detailSource.update(id, item);
|
|
112
138
|
if (!error) {
|
|
113
|
-
|
|
139
|
+
this.#detailStore?.append(item);
|
|
140
|
+
this.#treeStore?.updateItem(id, item);
|
|
141
|
+
const notification = { data: { message: `Media type '${item.name}' saved` } };
|
|
114
142
|
this.#notificationContext?.peek('positive', notification);
|
|
115
143
|
}
|
|
116
|
-
// TODO: we currently don't use the detail store for anything.
|
|
117
|
-
// Consider to look up the data before fetching from the server
|
|
118
|
-
// Consider notify a workspace if a media type is updated in the store while someone is editing it.
|
|
119
|
-
this.#store?.append(mediaType);
|
|
120
|
-
this.#treeStore?.updateItem(mediaType.id, { name: mediaType.name });
|
|
121
|
-
// TODO: would be nice to align the stores on methods/methodNames.
|
|
122
144
|
return { error };
|
|
123
145
|
}
|
|
124
146
|
async create(mediaType) {
|
|
147
|
+
if (!mediaType || !mediaType.id)
|
|
148
|
+
throw new Error('Document Type is missing');
|
|
125
149
|
await this.#init;
|
|
126
|
-
|
|
127
|
-
throw new Error('Name is missing');
|
|
128
|
-
}
|
|
129
|
-
const { data, error } = await this.#detailSource.insert(mediaType);
|
|
150
|
+
const { error } = await this.#detailSource.insert(mediaType);
|
|
130
151
|
if (!error) {
|
|
131
|
-
|
|
132
|
-
this.#
|
|
152
|
+
//TODO: Model mismatch. FIX
|
|
153
|
+
this.#detailStore?.append(mediaType);
|
|
154
|
+
const treeItem = {
|
|
155
|
+
type: 'media-type',
|
|
156
|
+
parentId: null,
|
|
157
|
+
name: mediaType.name,
|
|
158
|
+
id: mediaType.id,
|
|
159
|
+
isFolder: false,
|
|
160
|
+
isContainer: false,
|
|
161
|
+
hasChildren: false,
|
|
162
|
+
};
|
|
163
|
+
this.#treeStore?.appendItems([treeItem]);
|
|
133
164
|
}
|
|
134
|
-
return {
|
|
165
|
+
return { error };
|
|
135
166
|
}
|
|
136
167
|
async move() {
|
|
137
168
|
alert('move me!');
|