make modal-data possibly optional in modal

This commit is contained in:
Niels Lyngsø
2024-04-25 16:09:45 +02:00
parent 2a29744f8c
commit cbe14907d9
3 changed files with 31 additions and 17 deletions

View File

@@ -11,16 +11,28 @@ import type { UmbDeepPartialObject } from '@umbraco-cms/backoffice/utils';
export type UmbModalRouteBuilder = (params: { [key: string]: string | number } | null) => string;
export type UmbModalRouteSetupReturn<UmbModalTokenData, UmbModalTokenValue> = UmbModalTokenValue extends undefined
? {
modal?: UmbDeepPartialObject<UmbModalConfig>;
data: UmbDeepPartialObject<UmbModalTokenData>;
value?: UmbModalTokenValue;
}
: {
modal?: UmbDeepPartialObject<UmbModalConfig>;
data: UmbDeepPartialObject<UmbModalTokenData>;
value: UmbModalTokenValue;
};
? UmbModalTokenValue extends undefined
? {
modal?: UmbDeepPartialObject<UmbModalConfig>;
data?: UmbDeepPartialObject<UmbModalTokenData>;
value?: UmbModalTokenValue;
}
: {
modal?: UmbDeepPartialObject<UmbModalConfig>;
data?: UmbDeepPartialObject<UmbModalTokenData>;
value: UmbModalTokenValue;
}
: UmbModalTokenValue extends undefined
? {
modal?: UmbDeepPartialObject<UmbModalConfig>;
data: UmbDeepPartialObject<UmbModalTokenData>;
value?: UmbModalTokenValue;
}
: {
modal?: UmbDeepPartialObject<UmbModalConfig>;
data: UmbDeepPartialObject<UmbModalTokenData>;
value: UmbModalTokenValue;
};
export class UmbModalRouteRegistrationController<
UmbModalTokenData extends { [key: string]: any } = { [key: string]: any },
UmbModalTokenValue = any,

View File

@@ -4,9 +4,10 @@ import { css, html, customElement, property, state, repeat, nothing } from '@umb
import { splitStringToArray } from '@umbraco-cms/backoffice/utils';
import { UmbChangeEvent } from '@umbraco-cms/backoffice/event';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import { UmbModalRouteRegistrationController, UMB_WORKSPACE_MODAL } from '@umbraco-cms/backoffice/modal';
import { UmbModalRouteRegistrationController } from '@umbraco-cms/backoffice/modal';
import { UmbSorterController } from '@umbraco-cms/backoffice/sorter';
import { UUIFormControlMixin } from '@umbraco-cms/backoffice/external/uui';
import { UMB_DOCUMENT_TYPE_WORKSPACE_MODAL } from '@umbraco-cms/backoffice/document-type';
@customElement('umb-input-document-type')
export class UmbInputDocumentTypeElement extends UUIFormControlMixin(UmbLitElement, '') {
@@ -97,7 +98,6 @@ export class UmbInputDocumentTypeElement extends UUIFormControlMixin(UmbLitEleme
public get value(): string {
return this.selection.join(',');
}
@state()
private _items?: Array<UmbDocumentTypeItemModel>;
@@ -109,10 +109,10 @@ export class UmbInputDocumentTypeElement extends UUIFormControlMixin(UmbLitEleme
constructor() {
super();
new UmbModalRouteRegistrationController(this, UMB_WORKSPACE_MODAL)
new UmbModalRouteRegistrationController(this, UMB_DOCUMENT_TYPE_WORKSPACE_MODAL)
.addAdditionalPath('document-type')
.onSetup(() => {
return { data: { entityType: 'document-type', preset: {} } };
return {};
})
.observeRouteBuilder((routeBuilder) => {
this._editPath = routeBuilder({});

View File

@@ -1,5 +1,7 @@
import type { UmbWorkspaceModalData, UmbWorkspaceModalValue } from '@umbraco-cms/backoffice/modal';
import { UMB_DOCUMENT_TYPE_ENTITY_TYPE } from '../entity.js';
import { UMB_WORKSPACE_MODAL, UmbModalToken } from '@umbraco-cms/backoffice/modal';
import type { UmbDeepPartialObject } from '@umbraco-cms/backoffice/utils';
import type { UmbWorkspaceModalData, UmbWorkspaceModalValue } from '@umbraco-cms/backoffice/modal';
export interface UmbDocumentTypeWorkspaceData extends UmbWorkspaceModalData {}
@@ -8,6 +10,6 @@ export const UMB_DOCUMENT_TYPE_WORKSPACE_MODAL = new UmbModalToken<
UmbWorkspaceModalValue
>('Umb.Modal.Workspace', {
modal: UMB_WORKSPACE_MODAL.getDefaultModal(),
data: { entityType: 'block', preset: {} },
data: { entityType: UMB_DOCUMENT_TYPE_ENTITY_TYPE, preset: {} },
// Recast the type, so the entityType data prop is not required:
}) as UmbModalToken<Omit<UmbWorkspaceModalData, 'entityType'>, UmbWorkspaceModalValue>;
}) as UmbModalToken<UmbDeepPartialObject<UmbDocumentTypeWorkspaceData>, UmbWorkspaceModalValue>;