use generic interfaces in composition modal
This commit is contained in:
@@ -1,20 +1,20 @@
|
||||
import type {
|
||||
UmbContentTypeCompositionRepository,
|
||||
UmbContentTypeCompositionCompatibleModel,
|
||||
UmbContentTypeCompositionReferenceModel,
|
||||
} from '../../composition/index.js';
|
||||
import type {
|
||||
UmbCompositionPickerModalData,
|
||||
UmbCompositionPickerModalValue,
|
||||
} from './composition-picker-modal.token.js';
|
||||
import { css, html, customElement, state, repeat, nothing } from '@umbraco-cms/backoffice/external/lit';
|
||||
import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal';
|
||||
import type {
|
||||
UmbDocumentTypeCompositionRepository,
|
||||
UmbDocumentTypeCompositionCompatibleModel,
|
||||
UmbDocumentTypeCompositionReferenceModel,
|
||||
} from '@umbraco-cms/backoffice/document-type';
|
||||
import { UmbExtensionApiInitializer } from '@umbraco-cms/backoffice/extension-api';
|
||||
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
interface CompatibleCompositions {
|
||||
path: string;
|
||||
compositions: Array<UmbDocumentTypeCompositionCompatibleModel>;
|
||||
compositions: Array<UmbContentTypeCompositionCompatibleModel>;
|
||||
}
|
||||
|
||||
@customElement('umb-composition-picker-modal')
|
||||
@@ -23,12 +23,12 @@ export class UmbCompositionPickerModalElement extends UmbModalBaseElement<
|
||||
UmbCompositionPickerModalValue
|
||||
> {
|
||||
// TODO: Loosen this from begin specific to Document Types, so we can have a general interface for composition repositories. [NL]
|
||||
#compositionRepository?: UmbDocumentTypeCompositionRepository;
|
||||
#compositionRepository?: UmbContentTypeCompositionRepository;
|
||||
#unique: string | null = null;
|
||||
#init?: Promise<void>;
|
||||
|
||||
@state()
|
||||
private _references: Array<UmbDocumentTypeCompositionReferenceModel> = [];
|
||||
private _references: Array<UmbContentTypeCompositionReferenceModel> = [];
|
||||
|
||||
@state()
|
||||
private _compatibleCompositions?: Array<CompatibleCompositions>;
|
||||
@@ -41,7 +41,7 @@ export class UmbCompositionPickerModalElement extends UmbModalBaseElement<
|
||||
const alias = this.data?.compositionRepositoryAlias;
|
||||
if (alias) {
|
||||
this.#init = new UmbExtensionApiInitializer(this, umbExtensionsRegistry, alias, [this], (permitted, ctrl) => {
|
||||
this.#compositionRepository = permitted ? (ctrl.api as UmbDocumentTypeCompositionRepository) : undefined;
|
||||
this.#compositionRepository = permitted ? (ctrl.api as UmbContentTypeCompositionRepository) : undefined;
|
||||
}).asPromise();
|
||||
} else {
|
||||
throw new Error('No composition repository alias provided');
|
||||
@@ -168,7 +168,7 @@ export class UmbCompositionPickerModalElement extends UmbModalBaseElement<
|
||||
}
|
||||
}
|
||||
|
||||
#renderCompositionsItems(compositionsList: Array<UmbDocumentTypeCompositionCompatibleModel>) {
|
||||
#renderCompositionsItems(compositionsList: Array<UmbContentTypeCompositionCompatibleModel>) {
|
||||
return repeat(
|
||||
compositionsList,
|
||||
(compositions) => compositions.unique,
|
||||
|
||||
Reference in New Issue
Block a user