diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/media-type/media-type.data.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/media-type/media-type.data.ts index 74f5b0fcca..8535971a82 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/media-type/media-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/media-type/media-type.data.ts @@ -67,7 +67,7 @@ export const data: Array = [ sortOrder: 0, }, ], - allowedAsRoot: false, + allowedAsRoot: true, variesByCulture: false, variesBySegment: false, isElement: false, diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/media-type/media-type.db.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/media-type/media-type.db.ts index dc4b98d1f9..e6c08f434a 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/media-type/media-type.db.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/media-type/media-type.db.ts @@ -7,11 +7,14 @@ import type { UmbMockMediaTypeModel } from './media-type.data.js'; import { data } from './media-type.data.js'; import { UmbId } from '@umbraco-cms/backoffice/id'; import type { + AllowedMediaTypeModel, CreateFolderRequestModel, CreateMediaTypeRequestModel, MediaTypeItemResponseModel, MediaTypeResponseModel, + MediaTypeSortModel, MediaTypeTreeItemResponseModel, + PagedAllowedMediaTypeModel, } from '@umbraco-cms/backoffice/external/backend-api'; class UmbMediaTypeMockDB extends UmbEntityMockDbBase { @@ -27,6 +30,21 @@ class UmbMediaTypeMockDB extends UmbEntityMockDbBase { constructor(data: Array) { super(data); } + + getAllowedChildren(id: string): PagedAllowedMediaTypeModel { + const mediaType = this.detail.read(id); + const allowedMediaTypes = mediaType.allowedMediaTypes.map((sortModel: MediaTypeSortModel) => + this.detail.read(sortModel.mediaType.id), + ); + const mappedItems = allowedMediaTypes.map((item: UmbMockMediaTypeModel) => allowedMediaTypeMapper(item)); + return { items: mappedItems, total: mappedItems.length }; + } + + getAllowedAtRoot(): PagedAllowedMediaTypeModel { + const mockItems = this.data.filter((item) => item.allowedAsRoot); + const mappedItems = mockItems.map((item) => allowedMediaTypeMapper(item)); + return { items: mappedItems, total: mappedItems.length }; + } } const createMockMediaTypeFolderMapper = (request: CreateFolderRequestModel): UmbMockMediaTypeModel => { @@ -108,4 +126,13 @@ const mediaTypeItemMapper = (item: UmbMockMediaTypeModel): MediaTypeItemResponse }; }; +const allowedMediaTypeMapper = (item: UmbMockMediaTypeModel): AllowedMediaTypeModel => { + return { + id: item.id, + name: item.name, + description: item.description, + icon: item.icon, + }; +}; + export const umbMediaTypeMockDb = new UmbMediaTypeMockDB(data); diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/media-type/index.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/media-type/index.ts index 4f09cd2e16..35a0b233f7 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/media-type/index.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/media-type/index.ts @@ -1,6 +1,7 @@ import { treeHandlers } from './tree.handlers.js'; -import { itemHandlers } from './item.handlers.js'; import { detailHandlers } from './detail.handlers.js'; +import { itemHandlers } from './item.handlers.js'; import { folderHandlers } from './folder.handlers.js'; +import { structureHandlers } from './structure.handlers.js'; -export const handlers = [...treeHandlers, ...itemHandlers, ...folderHandlers, ...detailHandlers]; +export const handlers = [...treeHandlers, ...itemHandlers, ...folderHandlers, ...structureHandlers, ...detailHandlers]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/media-type/structure.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/media-type/structure.handlers.ts new file mode 100644 index 0000000000..6506d1c59a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/media-type/structure.handlers.ts @@ -0,0 +1,18 @@ +const { rest } = window.MockServiceWorker; +import { umbMediaTypeMockDb } from '../../data/media-type/media-type.db.js'; +import { UMB_SLUG } from './slug.js'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const structureHandlers = [ + rest.get(umbracoPath(`${UMB_SLUG}/:id/allowed-children`), (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return res(ctx.status(400)); + const response = umbMediaTypeMockDb.getAllowedChildren(id); + return res(ctx.status(200), ctx.json(response)); + }), + + rest.get(umbracoPath(`${UMB_SLUG}/allowed-at-root`), (req, res, ctx) => { + const response = umbMediaTypeMockDb.getAllowedAtRoot(); + return res(ctx.status(200), ctx.json(response)); + }), +];