update to UI models
This commit is contained in:
@@ -1,14 +1,17 @@
|
||||
import type { UmbPagedData } from './types.js';
|
||||
import type { DataSourceResponse } from './data-source-response.interface.js';
|
||||
import { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { UmbTreeItemModel } from '@umbraco-cms/backoffice/tree';
|
||||
import { UmbEntityTreeRootModel, UmbTreeItemModel, UmbTreeItemModelBase } from '@umbraco-cms/backoffice/tree';
|
||||
|
||||
export interface UmbTreeDataSourceConstructor<TreeItemType extends UmbTreeItemModel = UmbTreeItemModel> {
|
||||
new (host: UmbControllerHost): UmbTreeDataSource<TreeItemType>;
|
||||
}
|
||||
|
||||
export interface UmbTreeDataSource<TreeItemType extends UmbTreeItemModel = UmbTreeItemModel> {
|
||||
getTreeRoot?(): Promise<DataSourceResponse<TreeItemType>>;
|
||||
export interface UmbTreeDataSource<
|
||||
TreeItemType extends UmbTreeItemModel = UmbTreeItemModel,
|
||||
TreeRootType extends UmbTreeItemModelBase = UmbEntityTreeRootModel,
|
||||
> {
|
||||
getTreeRoot?(): Promise<DataSourceResponse<TreeRootType>>;
|
||||
getRootItems(): Promise<DataSourceResponse<UmbPagedData<TreeItemType>>>;
|
||||
getChildrenOf(parentUnique: string | null): Promise<DataSourceResponse<UmbPagedData<TreeItemType>>>;
|
||||
// TODO: remove this when all repositories are migrated to the new items interface
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
import { type UmbTreeItemModel } from '../tree/types.js';
|
||||
import { type UmbPagedData } from './data-source/types.js';
|
||||
import { UmbTreeItemModelBase, type UmbTreeItemModel, UmbEntityTreeRootModel } from '@umbraco-cms/backoffice/tree';
|
||||
import { type Observable } from '@umbraco-cms/backoffice/external/rxjs';
|
||||
import { ProblemDetails } from '@umbraco-cms/backoffice/backend-api';
|
||||
import { UmbApi } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export interface UmbTreeRepository<TreeItemType extends UmbTreeItemModel = UmbTreeItemModel> extends UmbApi {
|
||||
export interface UmbTreeRepository<
|
||||
TreeItemType extends UmbTreeItemModel = UmbTreeItemModel,
|
||||
TreeRootType extends UmbTreeItemModelBase = UmbEntityTreeRootModel,
|
||||
> extends UmbApi {
|
||||
requestTreeRoot: () => Promise<{
|
||||
data?: TreeItemType;
|
||||
data?: TreeRootType;
|
||||
error?: ProblemDetails;
|
||||
}>;
|
||||
|
||||
|
||||
@@ -8,18 +8,3 @@ export * from './tree.element.js';
|
||||
export * from './types.js';
|
||||
|
||||
export { UmbEntityTreeRepositoryBase } from './entity-tree.repository.js';
|
||||
|
||||
export interface UmbTreeRootModel {
|
||||
type: string;
|
||||
name: string;
|
||||
hasChildren: boolean;
|
||||
icon?: string;
|
||||
}
|
||||
|
||||
export interface UmbTreeRootEntityModel extends UmbTreeRootModel {
|
||||
id: string | null;
|
||||
}
|
||||
|
||||
export interface UmbTreeRootFileSystemModel extends UmbTreeRootModel {
|
||||
path: string | null;
|
||||
}
|
||||
|
||||
@@ -1,15 +1,20 @@
|
||||
import { UmbTreeItemModelBase, type UmbTreeItemModel } from './types.js';
|
||||
import { Observable } from '@umbraco-cms/backoffice/external/rxjs';
|
||||
import { UmbPagedData, UmbTreeRepository } from '@umbraco-cms/backoffice/repository';
|
||||
import { type ManifestRepository, type ManifestTree, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import {
|
||||
type ManifestRepository,
|
||||
type ManifestTree,
|
||||
umbExtensionsRegistry,
|
||||
} from '@umbraco-cms/backoffice/extension-registry';
|
||||
import { UmbBooleanState } from '@umbraco-cms/backoffice/observable-api';
|
||||
import { UmbBaseController, UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { UmbExtensionApiInitializer } from '@umbraco-cms/backoffice/extension-api';
|
||||
import { ProblemDetails, TreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api';
|
||||
import { ProblemDetails } from '@umbraco-cms/backoffice/backend-api';
|
||||
import { UmbSelectionManager } from '@umbraco-cms/backoffice/utils';
|
||||
import { UmbSelectionChangeEvent } from '@umbraco-cms/backoffice/event';
|
||||
|
||||
// TODO: update interface
|
||||
export interface UmbTreeContext<TreeItemType extends TreeItemPresentationModel> extends UmbBaseController {
|
||||
export interface UmbTreeContext<TreeItemType extends UmbTreeItemModelBase> extends UmbBaseController {
|
||||
readonly selectable: Observable<boolean>;
|
||||
readonly selection: Observable<Array<string | null>>;
|
||||
setSelectable(value: boolean): void;
|
||||
@@ -27,7 +32,7 @@ export interface UmbTreeContext<TreeItemType extends TreeItemPresentationModel>
|
||||
}>;
|
||||
}
|
||||
|
||||
export class UmbTreeContextBase<TreeItemType extends TreeItemPresentationModel>
|
||||
export class UmbTreeContextBase<TreeItemType extends UmbTreeItemModelBase>
|
||||
extends UmbBaseController
|
||||
implements UmbTreeContext<TreeItemType>
|
||||
{
|
||||
@@ -153,9 +158,15 @@ export class UmbTreeContextBase<TreeItemType extends TreeItemPresentationModel>
|
||||
const repositoryAlias = treeManifest.meta.repositoryAlias;
|
||||
if (!repositoryAlias) throw new Error('Tree must have a repository alias.');
|
||||
|
||||
new UmbExtensionApiInitializer<ManifestRepository<UmbTreeRepository<TreeItemType>>>(this, umbExtensionsRegistry, repositoryAlias, [this._host], (permitted, ctrl) => {
|
||||
this.repository = permitted ? ctrl.api : undefined;
|
||||
this.#checkIfInitialized();
|
||||
});
|
||||
new UmbExtensionApiInitializer<ManifestRepository<UmbTreeRepository<TreeItemType>>>(
|
||||
this,
|
||||
umbExtensionsRegistry,
|
||||
repositoryAlias,
|
||||
[this._host],
|
||||
(permitted, ctrl) => {
|
||||
this.repository = permitted ? ctrl.api : undefined;
|
||||
this.#checkIfInitialized();
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,27 @@
|
||||
export interface UmbTreeItemModel {
|
||||
export interface UmbTreeItemModelBase {
|
||||
type?: string; // TODO: remove option to be undefined when we have our own types
|
||||
name?: string;
|
||||
hasChildren?: boolean;
|
||||
icon?: string | null;
|
||||
parentId?: string | null;
|
||||
}
|
||||
|
||||
export interface UmbTreeItemModel extends UmbTreeItemModelBase {
|
||||
parentId?: string | null; // TODO: remove option to be undefined when server returns the same or when we get our own types
|
||||
}
|
||||
|
||||
export interface UmbEntityTreeItemModel extends UmbTreeItemModel {
|
||||
id?: string; // TODO: remove option to be undefined when server returns the same
|
||||
id?: string; // TODO: remove option to be undefined when server returns the same or when we get our own types
|
||||
}
|
||||
|
||||
export interface UmbFileSystemTreeItemModel {
|
||||
path?: string; // TODO: remove option to be undefined when server returns the same
|
||||
export interface UmbFileSystemTreeItemModel extends UmbTreeItemModel {
|
||||
path?: string; // TODO: remove option to be undefined when server returns the same or when we get our own types
|
||||
}
|
||||
|
||||
// Root
|
||||
export interface UmbEntityTreeRootModel extends UmbTreeItemModelBase {
|
||||
id: null;
|
||||
}
|
||||
|
||||
export interface UmbFileSystemTreeRootModel extends UmbTreeItemModelBase {
|
||||
path: null;
|
||||
}
|
||||
|
||||
@@ -33,12 +33,13 @@ import {
|
||||
UpdateStylesheetRequestModel,
|
||||
UpdateTextFileViewModelBaseModel,
|
||||
} from '@umbraco-cms/backoffice/backend-api';
|
||||
import type { UmbTreeRootFileSystemModel } from '@umbraco-cms/backoffice/tree';
|
||||
import type { UmbFileSystemTreeRootModel } from '@umbraco-cms/backoffice/tree';
|
||||
import { UmbApi } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export class UmbStylesheetRepository extends UmbBaseController
|
||||
export class UmbStylesheetRepository
|
||||
extends UmbBaseController
|
||||
implements
|
||||
UmbTreeRepository<FileSystemTreeItemPresentationModel, UmbTreeRootFileSystemModel>,
|
||||
UmbTreeRepository<FileSystemTreeItemPresentationModel, UmbFileSystemTreeRootModel>,
|
||||
UmbDetailRepository<CreateStylesheetRequestModel, string, UpdateStylesheetRequestModel, StylesheetDetails>,
|
||||
UmbFolderRepository,
|
||||
UmbApi
|
||||
|
||||
Reference in New Issue
Block a user