use generic interfaces in composition modal

This commit is contained in:
Mads Rasmussen
2024-04-25 13:01:23 +02:00
parent 595652fd91
commit c89806edbb

View File

@@ -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,