make modal-data possibly optional in modal
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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({});
|
||||
|
||||
@@ -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>;
|
||||
|
||||
Reference in New Issue
Block a user