diff --git a/src/Umbraco.Web.UI.Client/.eslintrc.json b/src/Umbraco.Web.UI.Client/.eslintrc.json index 69579d3900..7725f81d2c 100644 --- a/src/Umbraco.Web.UI.Client/.eslintrc.json +++ b/src/Umbraco.Web.UI.Client/.eslintrc.json @@ -34,7 +34,7 @@ "import/order": "warn", "local-rules/bad-type-import": "error", "local-rules/no-direct-api-import": "warn", - "local-rules/prefer-import-aliases": "warn", + "local-rules/prefer-import-aliases": "error", "@typescript-eslint/no-non-null-assertion": "off" }, "settings": { diff --git a/src/Umbraco.Web.UI.Client/e2e/installer.spec.ts b/src/Umbraco.Web.UI.Client/e2e/installer.spec.ts index 82ff532414..1de975d7c8 100644 --- a/src/Umbraco.Web.UI.Client/e2e/installer.spec.ts +++ b/src/Umbraco.Web.UI.Client/e2e/installer.spec.ts @@ -1,7 +1,7 @@ import { rest } from 'msw'; import { umbracoPath } from '@umbraco-cms/utils'; -import { ProblemDetailsModel, RuntimeLevelModel, ServerStatusModel } from '@umbraco-cms/backend-api'; +import { ProblemDetailsModel, RuntimeLevelModel, ServerStatusResponseModel } from '@umbraco-cms/backend-api'; import { expect, test } from './test'; test.describe('installer tests', () => { @@ -12,7 +12,7 @@ test.describe('installer tests', () => { return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ serverStatus: RuntimeLevelModel.INSTALL, }) ); diff --git a/src/Umbraco.Web.UI.Client/e2e/upgrader.spec.ts b/src/Umbraco.Web.UI.Client/e2e/upgrader.spec.ts index debb44f6cd..646f1811b5 100644 --- a/src/Umbraco.Web.UI.Client/e2e/upgrader.spec.ts +++ b/src/Umbraco.Web.UI.Client/e2e/upgrader.spec.ts @@ -1,6 +1,6 @@ import { rest } from 'msw'; import { umbracoPath } from '@umbraco-cms/utils'; -import { ProblemDetailsModel, RuntimeLevelModel, ServerStatusModel } from '@umbraco-cms/backend-api'; +import { ProblemDetailsModel, RuntimeLevelModel, ServerStatusResponseModel } from '@umbraco-cms/backend-api'; import { expect, test } from './test'; test.describe('upgrader tests', () => { @@ -11,7 +11,7 @@ test.describe('upgrader tests', () => { return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ serverStatus: RuntimeLevelModel.UPGRADE, }) ); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/CancelablePromise.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/CancelablePromise.ts index 800d901ec4..26ad303915 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/CancelablePromise.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/CancelablePromise.ts @@ -2,122 +2,127 @@ /* tslint:disable */ /* eslint-disable */ export class CancelError extends Error { - constructor(message: string) { - super(message); - this.name = 'CancelError'; - } - public get isCancelled(): boolean { - return true; - } + constructor(message: string) { + super(message); + this.name = 'CancelError'; + } + + public get isCancelled(): boolean { + return true; + } } export interface OnCancel { - readonly isResolved: boolean; - readonly isRejected: boolean; - readonly isCancelled: boolean; + readonly isResolved: boolean; + readonly isRejected: boolean; + readonly isCancelled: boolean; - (cancelHandler: () => void): void; + (cancelHandler: () => void): void; } export class CancelablePromise implements Promise { - readonly [Symbol.toStringTag]!: string; + readonly [Symbol.toStringTag]!: string; - private _isResolved: boolean; - private _isRejected: boolean; - private _isCancelled: boolean; - private readonly _cancelHandlers: (() => void)[]; - private readonly _promise: Promise; - private _resolve?: (value: T | PromiseLike) => void; - private _reject?: (reason?: any) => void; + private _isResolved: boolean; + private _isRejected: boolean; + private _isCancelled: boolean; + private readonly _cancelHandlers: (() => void)[]; + private readonly _promise: Promise; + private _resolve?: (value: T | PromiseLike) => void; + private _reject?: (reason?: any) => void; - constructor( - executor: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void, onCancel: OnCancel) => void - ) { - this._isResolved = false; - this._isRejected = false; - this._isCancelled = false; - this._cancelHandlers = []; - this._promise = new Promise((resolve, reject) => { - this._resolve = resolve; - this._reject = reject; + constructor( + executor: ( + resolve: (value: T | PromiseLike) => void, + reject: (reason?: any) => void, + onCancel: OnCancel + ) => void + ) { + this._isResolved = false; + this._isRejected = false; + this._isCancelled = false; + this._cancelHandlers = []; + this._promise = new Promise((resolve, reject) => { + this._resolve = resolve; + this._reject = reject; - const onResolve = (value: T | PromiseLike): void => { - if (this._isResolved || this._isRejected || this._isCancelled) { - return; - } - this._isResolved = true; - this._resolve?.(value); - }; + const onResolve = (value: T | PromiseLike): void => { + if (this._isResolved || this._isRejected || this._isCancelled) { + return; + } + this._isResolved = true; + this._resolve?.(value); + }; - const onReject = (reason?: any): void => { - if (this._isResolved || this._isRejected || this._isCancelled) { - return; - } - this._isRejected = true; - this._reject?.(reason); - }; + const onReject = (reason?: any): void => { + if (this._isResolved || this._isRejected || this._isCancelled) { + return; + } + this._isRejected = true; + this._reject?.(reason); + }; - const onCancel = (cancelHandler: () => void): void => { - if (this._isResolved || this._isRejected || this._isCancelled) { - return; - } - this._cancelHandlers.push(cancelHandler); - }; + const onCancel = (cancelHandler: () => void): void => { + if (this._isResolved || this._isRejected || this._isCancelled) { + return; + } + this._cancelHandlers.push(cancelHandler); + }; - Object.defineProperty(onCancel, 'isResolved', { - get: (): boolean => this._isResolved, - }); + Object.defineProperty(onCancel, 'isResolved', { + get: (): boolean => this._isResolved, + }); - Object.defineProperty(onCancel, 'isRejected', { - get: (): boolean => this._isRejected, - }); + Object.defineProperty(onCancel, 'isRejected', { + get: (): boolean => this._isRejected, + }); - Object.defineProperty(onCancel, 'isCancelled', { - get: (): boolean => this._isCancelled, - }); + Object.defineProperty(onCancel, 'isCancelled', { + get: (): boolean => this._isCancelled, + }); - return executor(onResolve, onReject, onCancel as OnCancel); - }); - } + return executor(onResolve, onReject, onCancel as OnCancel); + }); + } - public then( - onFulfilled?: ((value: T) => TResult1 | PromiseLike) | null, - onRejected?: ((reason: any) => TResult2 | PromiseLike) | null - ): Promise { - return this._promise.then(onFulfilled, onRejected); - } + public then( + onFulfilled?: ((value: T) => TResult1 | PromiseLike) | null, + onRejected?: ((reason: any) => TResult2 | PromiseLike) | null + ): Promise { + return this._promise.then(onFulfilled, onRejected); + } - public catch( - onRejected?: ((reason: any) => TResult | PromiseLike) | null - ): Promise { - return this._promise.catch(onRejected); - } + public catch( + onRejected?: ((reason: any) => TResult | PromiseLike) | null + ): Promise { + return this._promise.catch(onRejected); + } - public finally(onFinally?: (() => void) | null): Promise { - return this._promise.finally(onFinally); - } + public finally(onFinally?: (() => void) | null): Promise { + return this._promise.finally(onFinally); + } - public cancel(): void { - if (this._isResolved || this._isRejected || this._isCancelled) { - return; - } - this._isCancelled = true; - if (this._cancelHandlers.length) { - try { - for (const cancelHandler of this._cancelHandlers) { - cancelHandler(); - } - } catch (error) { - console.warn('Cancellation threw an error', error); - return; - } - } - this._cancelHandlers.length = 0; - this._reject?.(new CancelError('Request aborted')); - } + public cancel(): void { + if (this._isResolved || this._isRejected || this._isCancelled) { + return; + } + this._isCancelled = true; + if (this._cancelHandlers.length) { + try { + for (const cancelHandler of this._cancelHandlers) { + cancelHandler(); + } + } catch (error) { + console.warn('Cancellation threw an error', error); + return; + } + } + this._cancelHandlers.length = 0; + this._reject?.(new CancelError('Request aborted')); + } - public get isCancelled(): boolean { - return this._isCancelled; - } + public get isCancelled(): boolean { + return this._isCancelled; + } } diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/index.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/index.ts index 9bdac9c669..5e9a463517 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/index.ts @@ -10,169 +10,198 @@ export type { AuditLogBaseModel } from './models/AuditLogBaseModel'; export type { AuditLogResponseModel } from './models/AuditLogResponseModel'; export type { AuditLogWithUsernameResponseModel } from './models/AuditLogWithUsernameResponseModel'; export { AuditTypeModel } from './models/AuditTypeModel'; -export type { ConsentLevelModel } from './models/ConsentLevelModel'; +export type { ConsentLevelPresentationModel } from './models/ConsentLevelPresentationModel'; +export type { ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel } from './models/ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel'; export { ContentStateModel } from './models/ContentStateModel'; -export type { ContentTreeItemModel } from './models/ContentTreeItemModel'; +export type { ContentTreeItemResponseModel } from './models/ContentTreeItemResponseModel'; export type { ContentTypeCleanupModel } from './models/ContentTypeCleanupModel'; export type { ContentTypeCompositionModel } from './models/ContentTypeCompositionModel'; export { ContentTypeCompositionTypeModel } from './models/ContentTypeCompositionTypeModel'; +export type { ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel } from './models/ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel'; +export type { ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel } from './models/ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel'; export type { ContentTypeSortModel } from './models/ContentTypeSortModel'; -export type { ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel } from './models/ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel'; export type { ContentUrlInfoModel } from './models/ContentUrlInfoModel'; -export type { ContentViewModelBaseDocumentValueDocumentVariantModel } from './models/ContentViewModelBaseDocumentValueDocumentVariantModel'; -export type { CultureModel } from './models/CultureModel'; +export type { CopyDataTypeRequestModel } from './models/CopyDataTypeRequestModel'; +export type { CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel } from './models/CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel'; +export type { CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel } from './models/CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel'; +export type { CreateDataTypeRequestModel } from './models/CreateDataTypeRequestModel'; +export type { CreateDictionaryItemRequestModel } from './models/CreateDictionaryItemRequestModel'; +export type { CreateDocumentRequestModel } from './models/CreateDocumentRequestModel'; +export type { CreateFolderRequestModel } from './models/CreateFolderRequestModel'; +export type { CreateLanguageRequestModel } from './models/CreateLanguageRequestModel'; +export type { CreateMediaRequestModel } from './models/CreateMediaRequestModel'; +export type { CreatePackageRequestModel } from './models/CreatePackageRequestModel'; export type { CreateRelationTypeRequestModel } from './models/CreateRelationTypeRequestModel'; -export type { DatabaseInstallModel } from './models/DatabaseInstallModel'; -export type { DatabaseSettingsModel } from './models/DatabaseSettingsModel'; -export type { DataTypeCopyModel } from './models/DataTypeCopyModel'; -export type { DataTypeCreateModel } from './models/DataTypeCreateModel'; -export type { DataTypeModel } from './models/DataTypeModel'; +export type { CreateTemplateRequestModel } from './models/CreateTemplateRequestModel'; +export type { CultureReponseModel } from './models/CultureReponseModel'; +export type { DatabaseInstallResponseModel } from './models/DatabaseInstallResponseModel'; +export type { DatabaseSettingsPresentationModel } from './models/DatabaseSettingsPresentationModel'; export type { DataTypeModelBaseModel } from './models/DataTypeModelBaseModel'; -export type { DataTypeMoveModel } from './models/DataTypeMoveModel'; -export type { DataTypePropertyModel } from './models/DataTypePropertyModel'; +export type { DataTypePropertyPresentationModel } from './models/DataTypePropertyPresentationModel'; export type { DataTypePropertyReferenceModel } from './models/DataTypePropertyReferenceModel'; -export type { DataTypeReferenceModel } from './models/DataTypeReferenceModel'; -export type { DataTypeUpdateModel } from './models/DataTypeUpdateModel'; -export type { DictionaryImportModel } from './models/DictionaryImportModel'; -export type { DictionaryItemCreateModel } from './models/DictionaryItemCreateModel'; -export type { DictionaryItemModel } from './models/DictionaryItemModel'; +export type { DataTypeReferenceResponseModel } from './models/DataTypeReferenceResponseModel'; +export type { DataTypeResponseModel } from './models/DataTypeResponseModel'; export type { DictionaryItemModelBaseModel } from './models/DictionaryItemModelBaseModel'; -export type { DictionaryItemsImportModel } from './models/DictionaryItemsImportModel'; +export type { DictionaryItemResponseModel } from './models/DictionaryItemResponseModel'; export type { DictionaryItemTranslationModel } from './models/DictionaryItemTranslationModel'; -export type { DictionaryItemUpdateModel } from './models/DictionaryItemUpdateModel'; -export type { DictionaryMoveModel } from './models/DictionaryMoveModel'; -export type { DictionaryOverviewModel } from './models/DictionaryOverviewModel'; -export type { DictionaryUploadModel } from './models/DictionaryUploadModel'; +export type { DictionaryOverviewResponseModel } from './models/DictionaryOverviewResponseModel'; export { DirectionModel } from './models/DirectionModel'; -export type { DocumentBlueprintTreeItemModel } from './models/DocumentBlueprintTreeItemModel'; -export type { DocumentModel } from './models/DocumentModel'; -export type { DocumentTreeItemModel } from './models/DocumentTreeItemModel'; -export type { DocumentTypeModel } from './models/DocumentTypeModel'; -export type { DocumentTypePropertyTypeContainerModel } from './models/DocumentTypePropertyTypeContainerModel'; -export type { DocumentTypePropertyTypeModel } from './models/DocumentTypePropertyTypeModel'; -export type { DocumentTypeTreeItemModel } from './models/DocumentTypeTreeItemModel'; +export type { DocumentBlueprintTreeItemResponseModel } from './models/DocumentBlueprintTreeItemResponseModel'; +export type { DocumentResponseModel } from './models/DocumentResponseModel'; +export type { DocumentTreeItemResponseModel } from './models/DocumentTreeItemResponseModel'; +export type { DocumentTypePropertyTypeContainerResponseModel } from './models/DocumentTypePropertyTypeContainerResponseModel'; +export type { DocumentTypePropertyTypeResponseModel } from './models/DocumentTypePropertyTypeResponseModel'; +export type { DocumentTypeResponseModel } from './models/DocumentTypeResponseModel'; +export type { DocumentTypeTreeItemResponseModel } from './models/DocumentTypeTreeItemResponseModel'; export type { DocumentValueModel } from './models/DocumentValueModel'; -export type { DocumentVariantModel } from './models/DocumentVariantModel'; -export type { EntityTreeItemModel } from './models/EntityTreeItemModel'; -export type { FieldModel } from './models/FieldModel'; -export type { FileSystemTreeItemModel } from './models/FileSystemTreeItemModel'; -export type { FolderCreateModel } from './models/FolderCreateModel'; -export type { FolderModel } from './models/FolderModel'; +export type { DocumentVariantRequestModel } from './models/DocumentVariantRequestModel'; +export type { DocumentVariantResponseModel } from './models/DocumentVariantResponseModel'; +export type { DomainPresentationModel } from './models/DomainPresentationModel'; +export type { DomainsPresentationModelBaseModel } from './models/DomainsPresentationModelBaseModel'; +export type { DomainsResponseModel } from './models/DomainsResponseModel'; +export type { EntityTreeItemResponseModel } from './models/EntityTreeItemResponseModel'; +export type { FieldPresentationModel } from './models/FieldPresentationModel'; +export type { FileSystemTreeItemPresentationModel } from './models/FileSystemTreeItemPresentationModel'; export type { FolderModelBaseModel } from './models/FolderModelBaseModel'; -export type { FolderTreeItemModel } from './models/FolderTreeItemModel'; -export type { FolderUpdateModel } from './models/FolderUpdateModel'; -export type { HealthCheckActionModel } from './models/HealthCheckActionModel'; -export type { HealthCheckGroupModel } from './models/HealthCheckGroupModel'; -export type { HealthCheckGroupModelBaseModel } from './models/HealthCheckGroupModelBaseModel'; -export type { HealthCheckGroupWithResultModel } from './models/HealthCheckGroupWithResultModel'; +export type { FolderReponseModel } from './models/FolderReponseModel'; +export type { FolderTreeItemResponseModel } from './models/FolderTreeItemResponseModel'; +export type { HealthCheckActionRequestModel } from './models/HealthCheckActionRequestModel'; +export type { HealthCheckGroupPresentationBaseModel } from './models/HealthCheckGroupPresentationBaseModel'; +export type { HealthCheckGroupPresentationModel } from './models/HealthCheckGroupPresentationModel'; +export type { HealthCheckGroupResponseModel } from './models/HealthCheckGroupResponseModel'; +export type { HealthCheckGroupWithResultResponseModel } from './models/HealthCheckGroupWithResultResponseModel'; export type { HealthCheckModel } from './models/HealthCheckModel'; export type { HealthCheckModelBaseModel } from './models/HealthCheckModelBaseModel'; -export type { HealthCheckResultModel } from './models/HealthCheckResultModel'; -export type { HealthCheckWithResultModel } from './models/HealthCheckWithResultModel'; +export type { HealthCheckResultResponseModel } from './models/HealthCheckResultResponseModel'; +export type { HealthCheckWithResultPresentationModel } from './models/HealthCheckWithResultPresentationModel'; export { HealthStatusModel } from './models/HealthStatusModel'; -export type { HelpPageModel } from './models/HelpPageModel'; -export type { IndexModel } from './models/IndexModel'; -export type { InstallModel } from './models/InstallModel'; -export type { InstallSettingsModel } from './models/InstallSettingsModel'; -export type { LanguageCreateModel } from './models/LanguageCreateModel'; -export type { LanguageModel } from './models/LanguageModel'; +export type { HelpPageResponseModel } from './models/HelpPageResponseModel'; +export type { ImportDictionaryItemsPresentationModel } from './models/ImportDictionaryItemsPresentationModel'; +export type { ImportDictionaryRequestModel } from './models/ImportDictionaryRequestModel'; +export type { IndexResponseModel } from './models/IndexResponseModel'; +export type { InstallSettingsResponseModel } from './models/InstallSettingsResponseModel'; +export type { InstallVResponseModel } from './models/InstallVResponseModel'; export type { LanguageModelBaseModel } from './models/LanguageModelBaseModel'; -export type { LanguageUpdateModel } from './models/LanguageUpdateModel'; -export type { LoggerModel } from './models/LoggerModel'; -export type { LogLevelCountsModel } from './models/LogLevelCountsModel'; +export type { LanguageResponseModel } from './models/LanguageResponseModel'; +export type { LoggerResponseModel } from './models/LoggerResponseModel'; +export type { LogLevelCountsReponseModel } from './models/LogLevelCountsReponseModel'; export { LogLevelModel } from './models/LogLevelModel'; -export type { LogMessageModel } from './models/LogMessageModel'; -export type { LogMessagePropertyModel } from './models/LogMessagePropertyModel'; -export type { LogTemplateModel } from './models/LogTemplateModel'; -export type { ModelsBuilderModel } from './models/ModelsBuilderModel'; +export type { LogMessagePropertyPresentationModel } from './models/LogMessagePropertyPresentationModel'; +export type { LogMessageResponseModel } from './models/LogMessageResponseModel'; +export type { LogTemplateResponseModel } from './models/LogTemplateResponseModel'; +export type { MediaTypePropertyTypeContainerResponseModel } from './models/MediaTypePropertyTypeContainerResponseModel'; +export type { MediaTypePropertyTypeResponseModel } from './models/MediaTypePropertyTypeResponseModel'; +export type { MediaTypeResponseModel } from './models/MediaTypeResponseModel'; +export type { MediaValueModel } from './models/MediaValueModel'; +export type { MediaVariantRequestModel } from './models/MediaVariantRequestModel'; +export type { MediaVariantResponseModel } from './models/MediaVariantResponseModel'; +export type { ModelsBuilderResponseModel } from './models/ModelsBuilderResponseModel'; export { ModelsModeModel } from './models/ModelsModeModel'; +export type { MoveDataTypeRequestModel } from './models/MoveDataTypeRequestModel'; +export type { MoveDictionaryRequestModel } from './models/MoveDictionaryRequestModel'; +export type { ObjectTypeResponseModel } from './models/ObjectTypeResponseModel'; export type { OkResultModel } from './models/OkResultModel'; export { OperatorModel } from './models/OperatorModel'; -export type { OutOfDateStatusModel } from './models/OutOfDateStatusModel'; +export type { OutOfDateStatusResponseModel } from './models/OutOfDateStatusResponseModel'; export { OutOfDateTypeModel } from './models/OutOfDateTypeModel'; -export type { PackageCreateModel } from './models/PackageCreateModel'; -export type { PackageDefinitionModel } from './models/PackageDefinitionModel'; -export type { PackageManifestModel } from './models/PackageManifestModel'; -export type { PackageMigrationStatusModel } from './models/PackageMigrationStatusModel'; +export type { PackageDefinitionResponseModel } from './models/PackageDefinitionResponseModel'; +export type { PackageManifestResponseModel } from './models/PackageManifestResponseModel'; +export type { PackageMigrationStatusResponseModel } from './models/PackageMigrationStatusResponseModel'; export type { PackageModelBaseModel } from './models/PackageModelBaseModel'; -export type { PackageUpdateModel } from './models/PackageUpdateModel'; export type { PagedAuditLogResponseModel } from './models/PagedAuditLogResponseModel'; export type { PagedAuditLogWithUsernameResponseModel } from './models/PagedAuditLogWithUsernameResponseModel'; -export type { PagedContentTreeItemModel } from './models/PagedContentTreeItemModel'; -export type { PagedCultureModel } from './models/PagedCultureModel'; -export type { PagedDictionaryOverviewModel } from './models/PagedDictionaryOverviewModel'; -export type { PagedDocumentBlueprintTreeItemModel } from './models/PagedDocumentBlueprintTreeItemModel'; -export type { PagedDocumentTreeItemModel } from './models/PagedDocumentTreeItemModel'; -export type { PagedDocumentTypeTreeItemModel } from './models/PagedDocumentTypeTreeItemModel'; -export type { PagedEntityTreeItemModel } from './models/PagedEntityTreeItemModel'; -export type { PagedFileSystemTreeItemModel } from './models/PagedFileSystemTreeItemModel'; -export type { PagedFolderTreeItemModel } from './models/PagedFolderTreeItemModel'; -export type { PagedHealthCheckGroupModelBaseModel } from './models/PagedHealthCheckGroupModelBaseModel'; -export type { PagedHelpPageModel } from './models/PagedHelpPageModel'; -export type { PagedIndexModel } from './models/PagedIndexModel'; -export type { PagedLanguageModel } from './models/PagedLanguageModel'; -export type { PagedLoggerModel } from './models/PagedLoggerModel'; -export type { PagedLogMessageModel } from './models/PagedLogMessageModel'; -export type { PagedLogTemplateModel } from './models/PagedLogTemplateModel'; -export type { PagedPackageDefinitionModel } from './models/PagedPackageDefinitionModel'; -export type { PagedPackageMigrationStatusModel } from './models/PagedPackageMigrationStatusModel'; -export type { PagedRecycleBinItemModel } from './models/PagedRecycleBinItemModel'; -export type { PagedRedirectUrlModel } from './models/PagedRedirectUrlModel'; -export type { PagedRelationItemModel } from './models/PagedRelationItemModel'; -export type { PagedRelationModel } from './models/PagedRelationModel'; -export type { PagedSavedLogSearchModel } from './models/PagedSavedLogSearchModel'; -export type { PagedSearcherModel } from './models/PagedSearcherModel'; -export type { PagedSearchResultModel } from './models/PagedSearchResultModel'; -export type { PagedTelemetryModel } from './models/PagedTelemetryModel'; -export type { PagedUserGroupModel } from './models/PagedUserGroupModel'; +export type { PagedContentTreeItemResponseModel } from './models/PagedContentTreeItemResponseModel'; +export type { PagedCultureReponseModel } from './models/PagedCultureReponseModel'; +export type { PagedDictionaryOverviewResponseModel } from './models/PagedDictionaryOverviewResponseModel'; +export type { PagedDocumentBlueprintTreeItemResponseModel } from './models/PagedDocumentBlueprintTreeItemResponseModel'; +export type { PagedDocumentTreeItemResponseModel } from './models/PagedDocumentTreeItemResponseModel'; +export type { PagedDocumentTypeTreeItemResponseModel } from './models/PagedDocumentTypeTreeItemResponseModel'; +export type { PagedEntityTreeItemResponseModel } from './models/PagedEntityTreeItemResponseModel'; +export type { PagedFileSystemTreeItemPresentationModel } from './models/PagedFileSystemTreeItemPresentationModel'; +export type { PagedFolderTreeItemResponseModel } from './models/PagedFolderTreeItemResponseModel'; +export type { PagedHealthCheckGroupResponseModel } from './models/PagedHealthCheckGroupResponseModel'; +export type { PagedHelpPageResponseModel } from './models/PagedHelpPageResponseModel'; +export type { PagedIndexResponseModel } from './models/PagedIndexResponseModel'; +export type { PagedLanguageResponseModel } from './models/PagedLanguageResponseModel'; +export type { PagedLoggerResponseModel } from './models/PagedLoggerResponseModel'; +export type { PagedLogMessageResponseModel } from './models/PagedLogMessageResponseModel'; +export type { PagedLogTemplateResponseModel } from './models/PagedLogTemplateResponseModel'; +export type { PagedObjectTypeResponseModel } from './models/PagedObjectTypeResponseModel'; +export type { PagedPackageDefinitionResponseModel } from './models/PagedPackageDefinitionResponseModel'; +export type { PagedPackageMigrationStatusResponseModel } from './models/PagedPackageMigrationStatusResponseModel'; +export type { PagedRecycleBinItemResponseModel } from './models/PagedRecycleBinItemResponseModel'; +export type { PagedRedirectUrlResponseModel } from './models/PagedRedirectUrlResponseModel'; +export type { PagedRelationItemResponseModel } from './models/PagedRelationItemResponseModel'; +export type { PagedRelationResponseModel } from './models/PagedRelationResponseModel'; +export type { PagedSavedLogSearchResponseModel } from './models/PagedSavedLogSearchResponseModel'; +export type { PagedSearcherResponseModel } from './models/PagedSearcherResponseModel'; +export type { PagedSearchResultResponseModel } from './models/PagedSearchResultResponseModel'; +export type { PagedTelemetryResponseModel } from './models/PagedTelemetryResponseModel'; +export type { PagedUserGroupPresentationModel } from './models/PagedUserGroupPresentationModel'; export type { ProblemDetailsModel } from './models/ProblemDetailsModel'; -export type { ProfilingStatusModel } from './models/ProfilingStatusModel'; +export type { ProfilingStatusRequestModel } from './models/ProfilingStatusRequestModel'; +export type { ProfilingStatusResponseModel } from './models/ProfilingStatusResponseModel'; export type { PropertyTypeAppearanceModel } from './models/PropertyTypeAppearanceModel'; -export type { PropertyTypeContainerViewModelBaseModel } from './models/PropertyTypeContainerViewModelBaseModel'; +export type { PropertyTypeContainerResponseModelBaseModel } from './models/PropertyTypeContainerResponseModelBaseModel'; +export type { PropertyTypeResponseModelBaseModel } from './models/PropertyTypeResponseModelBaseModel'; export type { PropertyTypeValidationModel } from './models/PropertyTypeValidationModel'; -export type { PropertyTypeViewModelBaseModel } from './models/PropertyTypeViewModelBaseModel'; -export type { RecycleBinItemModel } from './models/RecycleBinItemModel'; +export type { RecycleBinItemResponseModel } from './models/RecycleBinItemResponseModel'; export { RedirectStatusModel } from './models/RedirectStatusModel'; -export type { RedirectUrlModel } from './models/RedirectUrlModel'; -export type { RedirectUrlStatusModel } from './models/RedirectUrlStatusModel'; -export type { RelationItemModel } from './models/RelationItemModel'; -export type { RelationModel } from './models/RelationModel'; +export type { RedirectUrlResponseModel } from './models/RedirectUrlResponseModel'; +export type { RedirectUrlStatusResponseModel } from './models/RedirectUrlStatusResponseModel'; +export type { RelationItemResponseModel } from './models/RelationItemResponseModel'; +export type { RelationResponseModel } from './models/RelationResponseModel'; export type { RelationTypeBaseModel } from './models/RelationTypeBaseModel'; export type { RelationTypeResponseModel } from './models/RelationTypeResponseModel'; export { RuntimeLevelModel } from './models/RuntimeLevelModel'; -export type { SavedLogSearchModel } from './models/SavedLogSearchModel'; -export type { SearcherModel } from './models/SearcherModel'; -export type { SearchResultModel } from './models/SearchResultModel'; -export type { ServerStatusModel } from './models/ServerStatusModel'; +export type { SavedLogSearchPresenationBaseModel } from './models/SavedLogSearchPresenationBaseModel'; +export type { SavedLogSearchRequestModel } from './models/SavedLogSearchRequestModel'; +export type { SavedLogSearchResponseModel } from './models/SavedLogSearchResponseModel'; +export type { SaveUserGroupRequestModel } from './models/SaveUserGroupRequestModel'; +export type { SearcherResponseModel } from './models/SearcherResponseModel'; +export type { SearchResultResponseModel } from './models/SearchResultResponseModel'; +export type { ServerStatusResponseModel } from './models/ServerStatusResponseModel'; export { StatusResultTypeModel } from './models/StatusResultTypeModel'; export { TelemetryLevelModel } from './models/TelemetryLevelModel'; -export type { TelemetryModel } from './models/TelemetryModel'; -export type { TemplateCreateModel } from './models/TemplateCreateModel'; -export type { TemplateModel } from './models/TemplateModel'; +export type { TelemetryRepresentationBaseModel } from './models/TelemetryRepresentationBaseModel'; +export type { TelemetryRequestModel } from './models/TelemetryRequestModel'; +export type { TelemetryResponseModel } from './models/TelemetryResponseModel'; export type { TemplateModelBaseModel } from './models/TemplateModelBaseModel'; -export type { TemplateQueryExecuteFilterModel } from './models/TemplateQueryExecuteFilterModel'; +export type { TemplateQueryExecuteFilterPresentationModel } from './models/TemplateQueryExecuteFilterPresentationModel'; export type { TemplateQueryExecuteModel } from './models/TemplateQueryExecuteModel'; export type { TemplateQueryExecuteSortModel } from './models/TemplateQueryExecuteSortModel'; export type { TemplateQueryOperatorModel } from './models/TemplateQueryOperatorModel'; -export type { TemplateQueryPropertyModel } from './models/TemplateQueryPropertyModel'; +export type { TemplateQueryPropertyPresentationModel } from './models/TemplateQueryPropertyPresentationModel'; export { TemplateQueryPropertyTypeModel } from './models/TemplateQueryPropertyTypeModel'; -export type { TemplateQueryResultItemModel } from './models/TemplateQueryResultItemModel'; -export type { TemplateQueryResultModel } from './models/TemplateQueryResultModel'; -export type { TemplateQuerySettingsModel } from './models/TemplateQuerySettingsModel'; -export type { TemplateScaffoldModel } from './models/TemplateScaffoldModel'; -export type { TemplateUpdateModel } from './models/TemplateUpdateModel'; -export type { TreeItemModel } from './models/TreeItemModel'; +export type { TemplateQueryResultItemPresentationModel } from './models/TemplateQueryResultItemPresentationModel'; +export type { TemplateQueryResultResponseModel } from './models/TemplateQueryResultResponseModel'; +export type { TemplateQuerySettingsResponseModel } from './models/TemplateQuerySettingsResponseModel'; +export type { TemplateResponseModel } from './models/TemplateResponseModel'; +export type { TemplateScaffoldResponseModel } from './models/TemplateScaffoldResponseModel'; +export type { TreeItemPresentationModel } from './models/TreeItemPresentationModel'; +export type { UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel } from './models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel'; +export type { UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel } from './models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel'; +export type { UpdateDataTypeRequestModel } from './models/UpdateDataTypeRequestModel'; +export type { UpdateDictionaryItemRequestModel } from './models/UpdateDictionaryItemRequestModel'; +export type { UpdateDocumentRequestModel } from './models/UpdateDocumentRequestModel'; +export type { UpdateDomainsRequestModel } from './models/UpdateDomainsRequestModel'; +export type { UpdateFolderReponseModel } from './models/UpdateFolderReponseModel'; +export type { UpdateLanguageRequestModel } from './models/UpdateLanguageRequestModel'; +export type { UpdateMediaRequestModel } from './models/UpdateMediaRequestModel'; +export type { UpdatePackageRequestModel } from './models/UpdatePackageRequestModel'; export type { UpdateRelationTypeRequestModel } from './models/UpdateRelationTypeRequestModel'; -export type { UpgradeSettingsModel } from './models/UpgradeSettingsModel'; +export type { UpdateTemplateRequestModel } from './models/UpdateTemplateRequestModel'; +export type { UpdateUserGroupRequestModel } from './models/UpdateUserGroupRequestModel'; +export type { UpgradeSettingsResponseModel } from './models/UpgradeSettingsResponseModel'; +export type { UploadDictionaryResponseModel } from './models/UploadDictionaryResponseModel'; export type { UserGroupBaseModel } from './models/UserGroupBaseModel'; -export type { UserGroupModel } from './models/UserGroupModel'; -export type { UserGroupSaveModel } from './models/UserGroupSaveModel'; -export type { UserGroupUpdateModel } from './models/UserGroupUpdateModel'; -export type { UserInstallModel } from './models/UserInstallModel'; +export type { UserGroupPresentationModel } from './models/UserGroupPresentationModel'; +export type { UserInstallResponseModel } from './models/UserInstallResponseModel'; export type { UserSettingsModel } from './models/UserSettingsModel'; -export type { ValueViewModelBaseModel } from './models/ValueViewModelBaseModel'; -export type { VariantViewModelBaseModel } from './models/VariantViewModelBaseModel'; -export type { VersionModel } from './models/VersionModel'; +export type { ValueModelBaseModel } from './models/ValueModelBaseModel'; +export type { VariantModelBaseModel } from './models/VariantModelBaseModel'; +export type { VariantResponseModelBaseModel } from './models/VariantResponseModelBaseModel'; +export type { VersionResponseModel } from './models/VersionResponseModel'; export { AuditLogResource } from './services/AuditLogResource'; export { CultureResource } from './services/CultureResource'; @@ -192,6 +221,7 @@ export { MediaTypeResource } from './services/MediaTypeResource'; export { MemberGroupResource } from './services/MemberGroupResource'; export { MemberTypeResource } from './services/MemberTypeResource'; export { ModelsBuilderResource } from './services/ModelsBuilderResource'; +export { ObjectTypesResource } from './services/ObjectTypesResource'; export { PackageResource } from './services/PackageResource'; export { PartialViewResource } from './services/PartialViewResource'; export { ProfilingResource } from './services/ProfilingResource'; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogBaseModel.ts index 8da67f825a..1e56192c01 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogBaseModel.ts @@ -13,4 +13,3 @@ export type AuditLogBaseModel = { comment?: string | null; parameters?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogResponseModel.ts index 53aaafdb87..150aed42b7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogResponseModel.ts @@ -5,4 +5,3 @@ import type { AuditLogBaseModel } from './AuditLogBaseModel'; export type AuditLogResponseModel = AuditLogBaseModel; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogWithUsernameResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogWithUsernameResponseModel.ts index eb768a7c43..3cc6f615f3 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogWithUsernameResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogWithUsernameResponseModel.ts @@ -5,7 +5,6 @@ import type { AuditLogBaseModel } from './AuditLogBaseModel'; export type AuditLogWithUsernameResponseModel = (AuditLogBaseModel & { - userName?: string | null; - userAvatars?: Array | null; +userName?: string | null; +userAvatars?: Array | null; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelPresentationModel.ts similarity index 81% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelPresentationModel.ts index 713ad10919..f8481a3c36 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelPresentationModel.ts @@ -4,8 +4,7 @@ import type { TelemetryLevelModel } from './TelemetryLevelModel'; -export type ConsentLevelModel = { +export type ConsentLevelPresentationModel = { level?: TelemetryLevelModel; description?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentViewModelBaseDocumentValueDocumentVariantModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel.ts similarity index 50% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentViewModelBaseDocumentValueDocumentVariantModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel.ts index 4f95f27cbe..ed77830467 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentViewModelBaseDocumentValueDocumentVariantModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel.ts @@ -3,12 +3,11 @@ /* eslint-disable */ import type { DocumentValueModel } from './DocumentValueModel'; -import type { DocumentVariantModel } from './DocumentVariantModel'; +import type { DocumentVariantResponseModel } from './DocumentVariantResponseModel'; -export type ContentViewModelBaseDocumentValueDocumentVariantModel = { +export type ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel = { + values?: Array; + variants?: Array; key?: string; contentTypeKey?: string; - values?: Array; - variants?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemModel.ts deleted file mode 100644 index 2144bc6a1f..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { EntityTreeItemModel } from './EntityTreeItemModel'; - -export type ContentTreeItemModel = (EntityTreeItemModel & { - $type: string; - noAccess?: boolean; - isTrashed?: boolean; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemResponseModel.ts new file mode 100644 index 0000000000..d87dbd5e82 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemResponseModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { EntityTreeItemResponseModel } from './EntityTreeItemResponseModel'; + +export type ContentTreeItemResponseModel = (EntityTreeItemResponseModel & { +$type: string; +noAccess?: boolean; +isTrashed?: boolean; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCleanupModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCleanupModel.ts index 7ea186e255..6d5a4bdf54 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCleanupModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCleanupModel.ts @@ -7,4 +7,3 @@ export type ContentTypeCleanupModel = { keepAllVersionsNewerThanDays?: number | null; keepLatestVersionPerDayForDays?: number | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCompositionModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCompositionModel.ts index eefcd22a19..55cd2c0c03 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCompositionModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCompositionModel.ts @@ -8,4 +8,3 @@ export type ContentTypeCompositionModel = { key?: string; compositionType?: ContentTypeCompositionTypeModel; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel.ts similarity index 51% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel.ts index f4edc901a6..34a78a67b9 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel.ts @@ -2,13 +2,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTypeCleanupModel } from './ContentTypeCleanupModel'; import type { ContentTypeCompositionModel } from './ContentTypeCompositionModel'; import type { ContentTypeSortModel } from './ContentTypeSortModel'; -import type { DocumentTypePropertyTypeContainerModel } from './DocumentTypePropertyTypeContainerModel'; -import type { DocumentTypePropertyTypeModel } from './DocumentTypePropertyTypeModel'; +import type { DocumentTypePropertyTypeContainerResponseModel } from './DocumentTypePropertyTypeContainerResponseModel'; +import type { DocumentTypePropertyTypeResponseModel } from './DocumentTypePropertyTypeResponseModel'; -export type ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel = { +export type ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel = { key?: string; alias?: string; name?: string; @@ -18,10 +17,8 @@ export type ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypeProperty variesByCulture?: boolean; variesBySegment?: boolean; isElement?: boolean; - properties?: Array; - containers?: Array; + properties?: Array; + containers?: Array; allowedContentTypes?: Array; compositions?: Array; - cleanup?: ContentTypeCleanupModel; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel.ts new file mode 100644 index 0000000000..0cae4423f3 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel.ts @@ -0,0 +1,24 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ContentTypeCompositionModel } from './ContentTypeCompositionModel'; +import type { ContentTypeSortModel } from './ContentTypeSortModel'; +import type { MediaTypePropertyTypeContainerResponseModel } from './MediaTypePropertyTypeContainerResponseModel'; +import type { MediaTypePropertyTypeResponseModel } from './MediaTypePropertyTypeResponseModel'; + +export type ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel = { + key?: string; + alias?: string; + name?: string; + description?: string | null; + icon?: string; + allowedAsRoot?: boolean; + variesByCulture?: boolean; + variesBySegment?: boolean; + isElement?: boolean; + properties?: Array; + containers?: Array; + allowedContentTypes?: Array; + compositions?: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeSortModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeSortModel.ts index 63b6a44a11..bf4f78b7d6 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeSortModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeSortModel.ts @@ -6,4 +6,3 @@ export type ContentTypeSortModel = { key?: string; sortOrder?: number; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentUrlInfoModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentUrlInfoModel.ts index aabc5314c5..0afeb120d3 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentUrlInfoModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentUrlInfoModel.ts @@ -6,4 +6,3 @@ export type ContentUrlInfoModel = { culture?: string | null; url?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryMoveModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CopyDataTypeRequestModel.ts similarity index 71% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryMoveModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CopyDataTypeRequestModel.ts index c58b2262a1..d15502deef 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryMoveModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CopyDataTypeRequestModel.ts @@ -2,7 +2,6 @@ /* tslint:disable */ /* eslint-disable */ -export type DictionaryMoveModel = { +export type CopyDataTypeRequestModel = { targetKey?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts new file mode 100644 index 0000000000..6e7608eca4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DocumentValueModel } from './DocumentValueModel'; +import type { DocumentVariantRequestModel } from './DocumentVariantRequestModel'; + +export type CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel = { + values?: Array; + variants?: Array; + parentKey?: string | null; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts new file mode 100644 index 0000000000..a8ecb5c7bb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { MediaValueModel } from './MediaValueModel'; +import type { MediaVariantRequestModel } from './MediaVariantRequestModel'; + +export type CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel = { + values?: Array; + variants?: Array; + parentKey?: string | null; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeCreateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDataTypeRequestModel.ts similarity index 60% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeCreateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDataTypeRequestModel.ts index 0c686d4136..df4380d8ad 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeCreateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDataTypeRequestModel.ts @@ -4,7 +4,6 @@ import type { DataTypeModelBaseModel } from './DataTypeModelBaseModel'; -export type DataTypeCreateModel = (DataTypeModelBaseModel & { - parentKey?: string | null; +export type CreateDataTypeRequestModel = (DataTypeModelBaseModel & { +parentKey?: string | null; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemCreateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDictionaryItemRequestModel.ts similarity index 59% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemCreateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDictionaryItemRequestModel.ts index 211bed9e4f..fb32c43da5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemCreateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDictionaryItemRequestModel.ts @@ -4,7 +4,6 @@ import type { DictionaryItemModelBaseModel } from './DictionaryItemModelBaseModel'; -export type DictionaryItemCreateModel = (DictionaryItemModelBaseModel & { - parentKey?: string | null; +export type CreateDictionaryItemRequestModel = (DictionaryItemModelBaseModel & { +parentKey?: string | null; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDocumentRequestModel.ts new file mode 100644 index 0000000000..a789b2c4fa --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDocumentRequestModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel } from './CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel'; + +export type CreateDocumentRequestModel = (CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel & { +contentTypeKey?: string; +templateKey?: string | null; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderCreateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateFolderRequestModel.ts similarity index 61% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderCreateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateFolderRequestModel.ts index 1ae49bc7fa..6f23857001 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderCreateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateFolderRequestModel.ts @@ -4,7 +4,6 @@ import type { FolderModelBaseModel } from './FolderModelBaseModel'; -export type FolderCreateModel = (FolderModelBaseModel & { - parentKey?: string | null; +export type CreateFolderRequestModel = (FolderModelBaseModel & { +parentKey?: string | null; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageCreateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateLanguageRequestModel.ts similarity index 62% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageCreateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateLanguageRequestModel.ts index 69149b0561..4eed24634f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageCreateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateLanguageRequestModel.ts @@ -4,7 +4,6 @@ import type { LanguageModelBaseModel } from './LanguageModelBaseModel'; -export type LanguageCreateModel = (LanguageModelBaseModel & { - isoCode?: string; +export type CreateLanguageRequestModel = (LanguageModelBaseModel & { +isoCode?: string; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateMediaRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateMediaRequestModel.ts new file mode 100644 index 0000000000..bf4333b9da --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateMediaRequestModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel } from './CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel'; + +export type CreateMediaRequestModel = (CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel & { +contentTypeKey?: string; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageCreateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreatePackageRequestModel.ts similarity index 69% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageCreateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreatePackageRequestModel.ts index 4061ed4560..2cfedb1c03 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageCreateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreatePackageRequestModel.ts @@ -4,5 +4,4 @@ import type { PackageModelBaseModel } from './PackageModelBaseModel'; -export type PackageCreateModel = PackageModelBaseModel; - +export type CreatePackageRequestModel = PackageModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts index 4c538765ed..de6232ee5c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts @@ -5,6 +5,5 @@ import type { RelationTypeBaseModel } from './RelationTypeBaseModel'; export type CreateRelationTypeRequestModel = (RelationTypeBaseModel & { - key?: string | null; +key?: string | null; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateUpdateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateTemplateRequestModel.ts similarity index 69% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateUpdateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateTemplateRequestModel.ts index 64da7cb574..e2d8afb847 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateUpdateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateTemplateRequestModel.ts @@ -4,5 +4,4 @@ import type { TemplateModelBaseModel } from './TemplateModelBaseModel'; -export type TemplateUpdateModel = TemplateModelBaseModel; - +export type CreateTemplateRequestModel = TemplateModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureReponseModel.ts similarity index 76% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureReponseModel.ts index 8a6836bd00..3b17cfc739 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureReponseModel.ts @@ -2,8 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type CultureModel = { +export type CultureReponseModel = { name?: string; englishName?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModelBaseModel.ts index 85a98bebfb..9c8b59ed42 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModelBaseModel.ts @@ -2,12 +2,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { DataTypePropertyModel } from './DataTypePropertyModel'; +import type { DataTypePropertyPresentationModel } from './DataTypePropertyPresentationModel'; export type DataTypeModelBaseModel = { name?: string; propertyEditorAlias?: string; propertyEditorUiAlias?: string | null; - data?: Array; + values?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyPresentationModel.ts similarity index 68% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyPresentationModel.ts index 89e844f606..10ca3bc30c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyPresentationModel.ts @@ -2,8 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type DataTypePropertyModel = { +export type DataTypePropertyPresentationModel = { alias?: string; value?: any; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyReferenceModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyReferenceModel.ts index f891dd3af0..d78ee8d9f8 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyReferenceModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyReferenceModel.ts @@ -6,4 +6,3 @@ export type DataTypePropertyReferenceModel = { name?: string; alias?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceResponseModel.ts similarity index 84% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceResponseModel.ts index fef54b8bec..4586e124d8 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceResponseModel.ts @@ -4,9 +4,8 @@ import type { DataTypePropertyReferenceModel } from './DataTypePropertyReferenceModel'; -export type DataTypeReferenceModel = { +export type DataTypeReferenceResponseModel = { key?: string; type?: string; properties?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeResponseModel.ts similarity index 54% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeResponseModel.ts index 18401c998f..ab8d3cef09 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeResponseModel.ts @@ -4,9 +4,8 @@ import type { DataTypeModelBaseModel } from './DataTypeModelBaseModel'; -export type DataTypeModel = (DataTypeModelBaseModel & { - $type: string; - key?: string; - parentKey?: string | null; +export type DataTypeResponseModel = (DataTypeModelBaseModel & { +$type: string; +key?: string; +parentKey?: string | null; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallResponseModel.ts similarity index 87% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallResponseModel.ts index fca252ff44..48dac68577 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallResponseModel.ts @@ -2,7 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type DatabaseInstallModel = { +export type DatabaseInstallResponseModel = { id: string; providerName: string; server?: string | null; @@ -12,4 +12,3 @@ export type DatabaseInstallModel = { useIntegratedAuthentication?: boolean; connectionString?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsPresentationModel.ts similarity index 89% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsPresentationModel.ts index 1dd2cfcf83..ed0057f69f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsPresentationModel.ts @@ -2,7 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type DatabaseSettingsModel = { +export type DatabaseSettingsPresentationModel = { id?: string; sortOrder?: number; displayName?: string; @@ -15,4 +15,3 @@ export type DatabaseSettingsModel = { supportsIntegratedAuthentication?: boolean; requiresConnectionTest?: boolean; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModelBaseModel.ts index cd1a89d95a..1ffac7af64 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModelBaseModel.ts @@ -8,4 +8,3 @@ export type DictionaryItemModelBaseModel = { name?: string; translations?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemResponseModel.ts similarity index 60% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemResponseModel.ts index 22e1edb1e3..b691fd7c96 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemResponseModel.ts @@ -4,8 +4,7 @@ import type { DictionaryItemModelBaseModel } from './DictionaryItemModelBaseModel'; -export type DictionaryItemModel = (DictionaryItemModelBaseModel & { - $type: string; - key?: string; +export type DictionaryItemResponseModel = (DictionaryItemModelBaseModel & { +$type: string; +key?: string; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemTranslationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemTranslationModel.ts index 9bc10a302f..37e5189a01 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemTranslationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemTranslationModel.ts @@ -6,4 +6,3 @@ export type DictionaryItemTranslationModel = { isoCode?: string; translation?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewResponseModel.ts similarity index 79% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewResponseModel.ts index 9955664ba7..f0744047dc 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewResponseModel.ts @@ -2,10 +2,9 @@ /* tslint:disable */ /* eslint-disable */ -export type DictionaryOverviewModel = { +export type DictionaryOverviewResponseModel = { name?: string | null; key?: string; parentKey?: string | null; translatedIsoCodes?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryUploadModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryUploadModel.ts deleted file mode 100644 index b8191ffc6d..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryUploadModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DictionaryItemsImportModel } from './DictionaryItemsImportModel'; - -export type DictionaryUploadModel = { - dictionaryItems?: Array; - fileName?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemModel.ts deleted file mode 100644 index f2a937ba4e..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { EntityTreeItemModel } from './EntityTreeItemModel'; - -export type DocumentBlueprintTreeItemModel = (EntityTreeItemModel & { - $type: string; - documentTypeKey?: string; - documentTypeAlias?: string; - documentTypeName?: string | null; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts new file mode 100644 index 0000000000..6821ca9675 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { EntityTreeItemResponseModel } from './EntityTreeItemResponseModel'; + +export type DocumentBlueprintTreeItemResponseModel = (EntityTreeItemResponseModel & { +$type: string; +documentTypeKey?: string; +documentTypeAlias?: string; +documentTypeName?: string | null; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentModel.ts deleted file mode 100644 index dd0c6f24d0..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ContentUrlInfoModel } from './ContentUrlInfoModel'; -import type { ContentViewModelBaseDocumentValueDocumentVariantModel } from './ContentViewModelBaseDocumentValueDocumentVariantModel'; - -export type DocumentModel = (ContentViewModelBaseDocumentValueDocumentVariantModel & { - urls?: Array; - templateKey?: string | null; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentResponseModel.ts new file mode 100644 index 0000000000..af1dbfa151 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentResponseModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel } from './ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel'; +import type { ContentUrlInfoModel } from './ContentUrlInfoModel'; + +export type DocumentResponseModel = (ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel & { +urls?: Array; +templateKey?: string | null; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemModel.ts deleted file mode 100644 index 0376baedf3..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ContentTreeItemModel } from './ContentTreeItemModel'; - -export type DocumentTreeItemModel = (ContentTreeItemModel & { - $type: string; - isProtected?: boolean; - isPublished?: boolean; - isEdited?: boolean; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemResponseModel.ts new file mode 100644 index 0000000000..2f49967d81 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemResponseModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ContentTreeItemResponseModel } from './ContentTreeItemResponseModel'; + +export type DocumentTreeItemResponseModel = (ContentTreeItemResponseModel & { +$type: string; +isProtected?: boolean; +isPublished?: boolean; +isEdited?: boolean; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeModel.ts deleted file mode 100644 index 6885b3e0c3..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel } from './ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel'; - -export type DocumentTypeModel = (ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel & { - allowedTemplateKeys?: Array; - defaultTemplateKey?: string | null; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerModel.ts deleted file mode 100644 index 69737e93e0..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerModel.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PropertyTypeContainerViewModelBaseModel } from './PropertyTypeContainerViewModelBaseModel'; - -export type DocumentTypePropertyTypeContainerModel = PropertyTypeContainerViewModelBaseModel; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts new file mode 100644 index 0000000000..0aa23dce56 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PropertyTypeContainerResponseModelBaseModel } from './PropertyTypeContainerResponseModelBaseModel'; + +export type DocumentTypePropertyTypeContainerResponseModel = PropertyTypeContainerResponseModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeModel.ts deleted file mode 100644 index 6fa071b539..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeModel.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PropertyTypeViewModelBaseModel } from './PropertyTypeViewModelBaseModel'; - -export type DocumentTypePropertyTypeModel = PropertyTypeViewModelBaseModel; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts new file mode 100644 index 0000000000..2cd2e32d6e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PropertyTypeResponseModelBaseModel } from './PropertyTypeResponseModelBaseModel'; + +export type DocumentTypePropertyTypeResponseModel = PropertyTypeResponseModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeResponseModel.ts new file mode 100644 index 0000000000..7e0adcb071 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeResponseModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ContentTypeCleanupModel } from './ContentTypeCleanupModel'; +import type { ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel } from './ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel'; + +export type DocumentTypeResponseModel = (ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel & { +allowedTemplateKeys?: Array; +defaultTemplateKey?: string | null; +cleanup?: ContentTypeCleanupModel; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemModel.ts deleted file mode 100644 index 13f61975bb..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FolderTreeItemModel } from './FolderTreeItemModel'; - -export type DocumentTypeTreeItemModel = (FolderTreeItemModel & { - $type: string; - isElement?: boolean; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts new file mode 100644 index 0000000000..f6737ab3af --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { FolderTreeItemResponseModel } from './FolderTreeItemResponseModel'; + +export type DocumentTypeTreeItemResponseModel = (FolderTreeItemResponseModel & { +$type: string; +isElement?: boolean; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentValueModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentValueModel.ts index da3e425d98..3f856dc060 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentValueModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentValueModel.ts @@ -2,7 +2,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { ValueViewModelBaseModel } from './ValueViewModelBaseModel'; - -export type DocumentValueModel = ValueViewModelBaseModel; +import type { ValueModelBaseModel } from './ValueModelBaseModel'; +export type DocumentValueModel = (ValueModelBaseModel & { +$type: string; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantModel.ts deleted file mode 100644 index b2d7431caa..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ContentStateModel } from './ContentStateModel'; -import type { VariantViewModelBaseModel } from './VariantViewModelBaseModel'; - -export type DocumentVariantModel = (VariantViewModelBaseModel & { - state?: ContentStateModel; - publishDate?: string | null; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantRequestModel.ts new file mode 100644 index 0000000000..a362a5d53c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantRequestModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { VariantModelBaseModel } from './VariantModelBaseModel'; + +export type DocumentVariantRequestModel = (VariantModelBaseModel & { +$type: string; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantResponseModel.ts new file mode 100644 index 0000000000..1ec48739e2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantResponseModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ContentStateModel } from './ContentStateModel'; +import type { VariantResponseModelBaseModel } from './VariantResponseModelBaseModel'; + +export type DocumentVariantResponseModel = (VariantResponseModelBaseModel & { +$type: string; +state?: ContentStateModel; +publishDate?: string | null; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainPresentationModel.ts new file mode 100644 index 0000000000..05f340dbb8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainPresentationModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type DomainPresentationModel = { + domainName?: string; + isoCode?: string; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsPresentationModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsPresentationModelBaseModel.ts new file mode 100644 index 0000000000..0109e12809 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsPresentationModelBaseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DomainPresentationModel } from './DomainPresentationModel'; + +export type DomainsPresentationModelBaseModel = { + defaultIsoCode?: string | null; + domains?: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsResponseModel.ts new file mode 100644 index 0000000000..4ef04f4c24 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DomainsPresentationModelBaseModel } from './DomainsPresentationModelBaseModel'; + +export type DomainsResponseModel = DomainsPresentationModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemModel.ts deleted file mode 100644 index 9dd2539305..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TreeItemModel } from './TreeItemModel'; - -export type EntityTreeItemModel = (TreeItemModel & { - $type: string; - key?: string; - isContainer?: boolean; - parentKey?: string | null; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemResponseModel.ts new file mode 100644 index 0000000000..7efeefad1e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemResponseModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { TreeItemPresentationModel } from './TreeItemPresentationModel'; + +export type EntityTreeItemResponseModel = (TreeItemPresentationModel & { +$type: string; +key?: string; +isContainer?: boolean; +parentKey?: string | null; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldPresentationModel.ts similarity index 75% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldPresentationModel.ts index 0ef3d38779..14255377d9 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldPresentationModel.ts @@ -2,8 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type FieldModel = { +export type FieldPresentationModel = { name?: string; values?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemModel.ts deleted file mode 100644 index 970c0ef60f..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TreeItemModel } from './TreeItemModel'; - -export type FileSystemTreeItemModel = (TreeItemModel & { - path?: string; - isFolder?: boolean; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemPresentationModel.ts new file mode 100644 index 0000000000..98c014b13c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemPresentationModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { TreeItemPresentationModel } from './TreeItemPresentationModel'; + +export type FileSystemTreeItemPresentationModel = (TreeItemPresentationModel & { +path?: string; +isFolder?: boolean; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModelBaseModel.ts index bb5a9dab5b..f4fa285d6a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModelBaseModel.ts @@ -5,4 +5,3 @@ export type FolderModelBaseModel = { name?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderReponseModel.ts similarity index 54% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderReponseModel.ts index ab789bb8eb..c3606779e5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderReponseModel.ts @@ -4,9 +4,8 @@ import type { FolderModelBaseModel } from './FolderModelBaseModel'; -export type FolderModel = (FolderModelBaseModel & { - $type: string; - key?: string; - parentKey?: string | null; +export type FolderReponseModel = (FolderModelBaseModel & { +$type: string; +key?: string; +parentKey?: string | null; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemModel.ts deleted file mode 100644 index 618a10ba2f..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { EntityTreeItemModel } from './EntityTreeItemModel'; - -export type FolderTreeItemModel = (EntityTreeItemModel & { - $type: string; - isFolder?: boolean; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemResponseModel.ts new file mode 100644 index 0000000000..25c0f50fd2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { EntityTreeItemResponseModel } from './EntityTreeItemResponseModel'; + +export type FolderTreeItemResponseModel = (EntityTreeItemResponseModel & { +$type: string; +isFolder?: boolean; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionRequestModel.ts similarity index 88% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionRequestModel.ts index 82f2cd7448..0a64ed3f60 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionRequestModel.ts @@ -2,7 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type HealthCheckActionModel = { +export type HealthCheckActionRequestModel = { healthCheckKey?: string; alias?: string | null; name?: string | null; @@ -12,4 +12,3 @@ export type HealthCheckActionModel = { providedValueValidation?: string | null; providedValueValidationRegex?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupModel.ts deleted file mode 100644 index 7f452c35ed..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { HealthCheckGroupModelBaseModel } from './HealthCheckGroupModelBaseModel'; -import type { HealthCheckModel } from './HealthCheckModel'; - -export type HealthCheckGroupModel = (HealthCheckGroupModelBaseModel & { - checks?: Array; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationBaseModel.ts similarity index 63% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupModelBaseModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationBaseModel.ts index e024867963..fbc62be4ff 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationBaseModel.ts @@ -2,7 +2,6 @@ /* tslint:disable */ /* eslint-disable */ -export type HealthCheckGroupModelBaseModel = { +export type HealthCheckGroupPresentationBaseModel = { name?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationModel.ts new file mode 100644 index 0000000000..dfdf778e12 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HealthCheckGroupPresentationBaseModel } from './HealthCheckGroupPresentationBaseModel'; +import type { HealthCheckModel } from './HealthCheckModel'; + +export type HealthCheckGroupPresentationModel = (HealthCheckGroupPresentationBaseModel & { +checks?: Array; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupResponseModel.ts new file mode 100644 index 0000000000..5a038bd74e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HealthCheckGroupPresentationBaseModel } from './HealthCheckGroupPresentationBaseModel'; + +export type HealthCheckGroupResponseModel = HealthCheckGroupPresentationBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultModel.ts deleted file mode 100644 index 4fe58a6a10..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { HealthCheckWithResultModel } from './HealthCheckWithResultModel'; - -export type HealthCheckGroupWithResultModel = { - checks?: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultResponseModel.ts new file mode 100644 index 0000000000..45f3b948df --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultResponseModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HealthCheckWithResultPresentationModel } from './HealthCheckWithResultPresentationModel'; + +export type HealthCheckGroupWithResultResponseModel = { + checks?: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModel.ts index 9a85add96d..56ca3e0121 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModel.ts @@ -5,7 +5,6 @@ import type { HealthCheckModelBaseModel } from './HealthCheckModelBaseModel'; export type HealthCheckModel = (HealthCheckModelBaseModel & { - name?: string; - description?: string | null; +name?: string; +description?: string | null; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModelBaseModel.ts index 053af0b984..55f41c4618 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModelBaseModel.ts @@ -5,4 +5,3 @@ export type HealthCheckModelBaseModel = { key?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultResponseModel.ts similarity index 55% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultResponseModel.ts index 4665a20f16..d5a99706b5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultResponseModel.ts @@ -2,13 +2,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { HealthCheckActionModel } from './HealthCheckActionModel'; +import type { HealthCheckActionRequestModel } from './HealthCheckActionRequestModel'; import type { StatusResultTypeModel } from './StatusResultTypeModel'; -export type HealthCheckResultModel = { +export type HealthCheckResultResponseModel = { message?: string; resultType?: StatusResultTypeModel; - actions?: Array | null; + actions?: Array | null; readMoreLink?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultModel.ts deleted file mode 100644 index a75a4c52a8..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { HealthCheckModelBaseModel } from './HealthCheckModelBaseModel'; -import type { HealthCheckResultModel } from './HealthCheckResultModel'; - -export type HealthCheckWithResultModel = (HealthCheckModelBaseModel & { - results?: Array | null; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultPresentationModel.ts new file mode 100644 index 0000000000..12929e62f8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultPresentationModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HealthCheckModelBaseModel } from './HealthCheckModelBaseModel'; +import type { HealthCheckResultResponseModel } from './HealthCheckResultResponseModel'; + +export type HealthCheckWithResultPresentationModel = (HealthCheckModelBaseModel & { +results?: Array | null; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageResponseModel.ts similarity index 82% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageResponseModel.ts index 7a56b0085e..43a41c82c6 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageResponseModel.ts @@ -2,10 +2,9 @@ /* tslint:disable */ /* eslint-disable */ -export type HelpPageModel = { +export type HelpPageResponseModel = { name?: string | null; description?: string | null; url?: string | null; type?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemsImportModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryItemsPresentationModel.ts similarity index 72% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemsImportModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryItemsPresentationModel.ts index 73d0d2c31e..ae77e85dbc 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemsImportModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryItemsPresentationModel.ts @@ -2,9 +2,8 @@ /* tslint:disable */ /* eslint-disable */ -export type DictionaryItemsImportModel = { +export type ImportDictionaryItemsPresentationModel = { key?: string; name?: string | null; parentKey?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryImportModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryRequestModel.ts similarity index 73% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryImportModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryRequestModel.ts index 3f0b6be219..f08dd2599a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryImportModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryRequestModel.ts @@ -2,8 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type DictionaryImportModel = { +export type ImportDictionaryRequestModel = { fileName?: string; parentKey?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexResponseModel.ts similarity index 90% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexResponseModel.ts index a9aec87082..befb90a467 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexResponseModel.ts @@ -4,7 +4,7 @@ import type { HealthStatusModel } from './HealthStatusModel'; -export type IndexModel = { +export type IndexResponseModel = { name: string; healthStatus?: HealthStatusModel; canRebuild: boolean; @@ -13,4 +13,3 @@ export type IndexModel = { fieldCount: number; providerProperties?: Record | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallModel.ts deleted file mode 100644 index d1898faede..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DatabaseInstallModel } from './DatabaseInstallModel'; -import type { TelemetryLevelModel } from './TelemetryLevelModel'; -import type { UserInstallModel } from './UserInstallModel'; - -export type InstallModel = { - user: UserInstallModel; - database: DatabaseInstallModel; - telemetryLevel?: TelemetryLevelModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsModel.ts deleted file mode 100644 index b5b8065fdf..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DatabaseSettingsModel } from './DatabaseSettingsModel'; -import type { UserSettingsModel } from './UserSettingsModel'; - -export type InstallSettingsModel = { - user?: UserSettingsModel; - databases?: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsResponseModel.ts new file mode 100644 index 0000000000..2b432cb901 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsResponseModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DatabaseSettingsPresentationModel } from './DatabaseSettingsPresentationModel'; +import type { UserSettingsModel } from './UserSettingsModel'; + +export type InstallSettingsResponseModel = { + user?: UserSettingsModel; + databases?: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallVResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallVResponseModel.ts new file mode 100644 index 0000000000..0754a817a4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallVResponseModel.ts @@ -0,0 +1,13 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DatabaseInstallResponseModel } from './DatabaseInstallResponseModel'; +import type { TelemetryLevelModel } from './TelemetryLevelModel'; +import type { UserInstallResponseModel } from './UserInstallResponseModel'; + +export type InstallVResponseModel = { + user: UserInstallResponseModel; + database: DatabaseInstallResponseModel; + telemetryLevel?: TelemetryLevelModel; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModelBaseModel.ts index eaff3e8d4e..b7dd8054d4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModelBaseModel.ts @@ -8,4 +8,3 @@ export type LanguageModelBaseModel = { isMandatory?: boolean; fallbackIsoCode?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageResponseModel.ts similarity index 64% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageResponseModel.ts index cba035758b..77993ea4ae 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageResponseModel.ts @@ -4,7 +4,6 @@ import type { LanguageModelBaseModel } from './LanguageModelBaseModel'; -export type LanguageModel = (LanguageModelBaseModel & { - isoCode?: string; +export type LanguageResponseModel = (LanguageModelBaseModel & { +isoCode?: string; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts similarity index 80% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts index 6fbb50efba..8a423396d7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts @@ -2,11 +2,10 @@ /* tslint:disable */ /* eslint-disable */ -export type LogLevelCountsModel = { +export type LogLevelCountsReponseModel = { information?: number; debug?: number; warning?: number; error?: number; fatal?: number; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyPresentationModel.ts similarity index 69% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyPresentationModel.ts index 098e1d9228..51a22a6a2b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyPresentationModel.ts @@ -2,8 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type LogMessagePropertyModel = { +export type LogMessagePropertyPresentationModel = { name?: string; value?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageResponseModel.ts similarity index 58% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageResponseModel.ts index 750fb168e8..38e9321909 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageResponseModel.ts @@ -3,14 +3,13 @@ /* eslint-disable */ import type { LogLevelModel } from './LogLevelModel'; -import type { LogMessagePropertyModel } from './LogMessagePropertyModel'; +import type { LogMessagePropertyPresentationModel } from './LogMessagePropertyPresentationModel'; -export type LogMessageModel = { +export type LogMessageResponseModel = { timestamp?: string; level?: LogLevelModel; messageTemplate?: string | null; renderedMessage?: string | null; - properties?: Array; + properties?: Array; exception?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateResponseModel.ts similarity index 76% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateResponseModel.ts index 30919c8239..2731cd2df8 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateResponseModel.ts @@ -2,8 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type LogTemplateModel = { +export type LogTemplateResponseModel = { messageTemplate?: string | null; count?: number; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerResponseModel.ts similarity index 82% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerResponseModel.ts index 2eeedc8142..6615168857 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerResponseModel.ts @@ -4,8 +4,7 @@ import type { LogLevelModel } from './LogLevelModel'; -export type LoggerModel = { +export type LoggerResponseModel = { name?: string; level?: LogLevelModel; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts new file mode 100644 index 0000000000..dea0899aee --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PropertyTypeContainerResponseModelBaseModel } from './PropertyTypeContainerResponseModelBaseModel'; + +export type MediaTypePropertyTypeContainerResponseModel = PropertyTypeContainerResponseModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts new file mode 100644 index 0000000000..30de030f1a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PropertyTypeResponseModelBaseModel } from './PropertyTypeResponseModelBaseModel'; + +export type MediaTypePropertyTypeResponseModel = PropertyTypeResponseModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeResponseModel.ts new file mode 100644 index 0000000000..ba0ca6251c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel } from './ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel'; + +export type MediaTypeResponseModel = ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaValueModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaValueModel.ts new file mode 100644 index 0000000000..3df317dfed --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaValueModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ValueModelBaseModel } from './ValueModelBaseModel'; + +export type MediaValueModel = (ValueModelBaseModel & { +$type: string; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantRequestModel.ts new file mode 100644 index 0000000000..49b8b7b4e6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantRequestModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { VariantModelBaseModel } from './VariantModelBaseModel'; + +export type MediaVariantRequestModel = (VariantModelBaseModel & { +$type: string; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantResponseModel.ts new file mode 100644 index 0000000000..b76e970304 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantResponseModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { VariantResponseModelBaseModel } from './VariantResponseModelBaseModel'; + +export type MediaVariantResponseModel = (VariantResponseModelBaseModel & { +$type: string; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderResponseModel.ts similarity index 89% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderResponseModel.ts index 745bba54df..cb7477ebdf 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderResponseModel.ts @@ -4,7 +4,7 @@ import type { ModelsModeModel } from './ModelsModeModel'; -export type ModelsBuilderModel = { +export type ModelsBuilderResponseModel = { mode?: ModelsModeModel; canGenerate?: boolean; outOfDateModels?: boolean; @@ -13,4 +13,3 @@ export type ModelsBuilderModel = { modelsNamespace?: string | null; trackingOutOfDateModels?: boolean; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeMoveModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDataTypeRequestModel.ts similarity index 71% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeMoveModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDataTypeRequestModel.ts index 2c8513a405..2470cac98c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeMoveModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDataTypeRequestModel.ts @@ -2,7 +2,6 @@ /* tslint:disable */ /* eslint-disable */ -export type DataTypeMoveModel = { +export type MoveDataTypeRequestModel = { targetKey?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeCopyModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDictionaryRequestModel.ts similarity index 70% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeCopyModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDictionaryRequestModel.ts index 163d127437..742605cfcc 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeCopyModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDictionaryRequestModel.ts @@ -2,7 +2,6 @@ /* tslint:disable */ /* eslint-disable */ -export type DataTypeCopyModel = { +export type MoveDictionaryRequestModel = { targetKey?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ObjectTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ObjectTypeResponseModel.ts new file mode 100644 index 0000000000..4b5b44cb19 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ObjectTypeResponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type ObjectTypeResponseModel = { + name?: string | null; + id?: string; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OkResultModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OkResultModel.ts index 886e643b17..0b041f81ee 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OkResultModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OkResultModel.ts @@ -5,4 +5,3 @@ export type OkResultModel = { statusCode?: number; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusResponseModel.ts similarity index 79% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusResponseModel.ts index 7493102346..3525c5b9a3 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusResponseModel.ts @@ -4,7 +4,6 @@ import type { OutOfDateTypeModel } from './OutOfDateTypeModel'; -export type OutOfDateStatusModel = { +export type OutOfDateStatusResponseModel = { status?: OutOfDateTypeModel; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionResponseModel.ts similarity index 57% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionResponseModel.ts index 70f174f33d..1e40334b1d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionResponseModel.ts @@ -4,8 +4,7 @@ import type { PackageModelBaseModel } from './PackageModelBaseModel'; -export type PackageDefinitionModel = (PackageModelBaseModel & { - key?: string; - packagePath?: string; +export type PackageDefinitionResponseModel = (PackageModelBaseModel & { +key?: string; +packagePath?: string; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestResponseModel.ts similarity index 76% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestResponseModel.ts index 0c0518f0ed..1ac843ab9b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestResponseModel.ts @@ -2,9 +2,8 @@ /* tslint:disable */ /* eslint-disable */ -export type PackageManifestModel = { +export type PackageManifestResponseModel = { name?: string; version?: string | null; extensions?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusResponseModel.ts similarity index 72% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusResponseModel.ts index a0317649c5..f2aa442a61 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusResponseModel.ts @@ -2,8 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type PackageMigrationStatusModel = { +export type PackageMigrationStatusResponseModel = { packageName?: string; hasPendingMigrations?: boolean; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageModelBaseModel.ts index a405b0ecc2..4ccfb1eacf 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageModelBaseModel.ts @@ -18,4 +18,3 @@ export type PackageModelBaseModel = { languages?: Array; dictionaryItems?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogResponseModel.ts index 28e4883e9d..4d8cbdd238 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogResponseModel.ts @@ -8,4 +8,3 @@ export type PagedAuditLogResponseModel = { total: number; items: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts index 2faa8a352c..32531185f4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts @@ -8,4 +8,3 @@ export type PagedAuditLogWithUsernameResponseModel = { total: number; items: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemModel.ts deleted file mode 100644 index 397bd30608..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ContentTreeItemModel } from './ContentTreeItemModel'; -import type { DocumentTreeItemModel } from './DocumentTreeItemModel'; - -export type PagedContentTreeItemModel = { - total: number; - items: Array<(ContentTreeItemModel | DocumentTreeItemModel)>; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemResponseModel.ts new file mode 100644 index 0000000000..baa7dc3c36 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemResponseModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ContentTreeItemResponseModel } from './ContentTreeItemResponseModel'; +import type { DocumentTreeItemResponseModel } from './DocumentTreeItemResponseModel'; + +export type PagedContentTreeItemResponseModel = { + total: number; + items: Array<(ContentTreeItemResponseModel | DocumentTreeItemResponseModel)>; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureModel.ts deleted file mode 100644 index 3c15f63914..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { CultureModel } from './CultureModel'; - -export type PagedCultureModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureReponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureReponseModel.ts new file mode 100644 index 0000000000..266daa8cd2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureReponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { CultureReponseModel } from './CultureReponseModel'; + +export type PagedCultureReponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewModel.ts deleted file mode 100644 index 14418fbd87..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DictionaryOverviewModel } from './DictionaryOverviewModel'; - -export type PagedDictionaryOverviewModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewResponseModel.ts new file mode 100644 index 0000000000..990d186c40 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DictionaryOverviewResponseModel } from './DictionaryOverviewResponseModel'; + +export type PagedDictionaryOverviewResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemModel.ts deleted file mode 100644 index 699f2e1741..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentBlueprintTreeItemModel } from './DocumentBlueprintTreeItemModel'; - -export type PagedDocumentBlueprintTreeItemModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemResponseModel.ts new file mode 100644 index 0000000000..8dc4a5165e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DocumentBlueprintTreeItemResponseModel } from './DocumentBlueprintTreeItemResponseModel'; + +export type PagedDocumentBlueprintTreeItemResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemModel.ts deleted file mode 100644 index 3a919899d1..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTreeItemModel } from './DocumentTreeItemModel'; - -export type PagedDocumentTreeItemModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemResponseModel.ts new file mode 100644 index 0000000000..d8dd2f0fc6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DocumentTreeItemResponseModel } from './DocumentTreeItemResponseModel'; + +export type PagedDocumentTreeItemResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemModel.ts deleted file mode 100644 index 36a53706fd..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypeTreeItemModel } from './DocumentTypeTreeItemModel'; - -export type PagedDocumentTypeTreeItemModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemResponseModel.ts new file mode 100644 index 0000000000..ba0f93c358 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DocumentTypeTreeItemResponseModel } from './DocumentTypeTreeItemResponseModel'; + +export type PagedDocumentTypeTreeItemResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemModel.ts deleted file mode 100644 index ba5f939425..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemModel.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ContentTreeItemModel } from './ContentTreeItemModel'; -import type { DocumentBlueprintTreeItemModel } from './DocumentBlueprintTreeItemModel'; -import type { DocumentTreeItemModel } from './DocumentTreeItemModel'; -import type { DocumentTypeTreeItemModel } from './DocumentTypeTreeItemModel'; -import type { EntityTreeItemModel } from './EntityTreeItemModel'; -import type { FolderTreeItemModel } from './FolderTreeItemModel'; - -export type PagedEntityTreeItemModel = { - total: number; - items: Array<(EntityTreeItemModel | ContentTreeItemModel | DocumentBlueprintTreeItemModel | DocumentTreeItemModel | DocumentTypeTreeItemModel | FolderTreeItemModel)>; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemResponseModel.ts new file mode 100644 index 0000000000..9df2b4b601 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemResponseModel.ts @@ -0,0 +1,15 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ContentTreeItemResponseModel } from './ContentTreeItemResponseModel'; +import type { DocumentBlueprintTreeItemResponseModel } from './DocumentBlueprintTreeItemResponseModel'; +import type { DocumentTreeItemResponseModel } from './DocumentTreeItemResponseModel'; +import type { DocumentTypeTreeItemResponseModel } from './DocumentTypeTreeItemResponseModel'; +import type { EntityTreeItemResponseModel } from './EntityTreeItemResponseModel'; +import type { FolderTreeItemResponseModel } from './FolderTreeItemResponseModel'; + +export type PagedEntityTreeItemResponseModel = { + total: number; + items: Array<(EntityTreeItemResponseModel | ContentTreeItemResponseModel | DocumentBlueprintTreeItemResponseModel | DocumentTreeItemResponseModel | DocumentTypeTreeItemResponseModel | FolderTreeItemResponseModel)>; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemModel.ts deleted file mode 100644 index 4b45c03949..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemTreeItemModel } from './FileSystemTreeItemModel'; - -export type PagedFileSystemTreeItemModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemPresentationModel.ts new file mode 100644 index 0000000000..be96ca744e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemPresentationModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { FileSystemTreeItemPresentationModel } from './FileSystemTreeItemPresentationModel'; + +export type PagedFileSystemTreeItemPresentationModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemModel.ts deleted file mode 100644 index 25377aa29c..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypeTreeItemModel } from './DocumentTypeTreeItemModel'; -import type { FolderTreeItemModel } from './FolderTreeItemModel'; - -export type PagedFolderTreeItemModel = { - total: number; - items: Array<(FolderTreeItemModel | DocumentTypeTreeItemModel)>; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemResponseModel.ts new file mode 100644 index 0000000000..3543ba5636 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemResponseModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DocumentTypeTreeItemResponseModel } from './DocumentTypeTreeItemResponseModel'; +import type { FolderTreeItemResponseModel } from './FolderTreeItemResponseModel'; + +export type PagedFolderTreeItemResponseModel = { + total: number; + items: Array<(FolderTreeItemResponseModel | DocumentTypeTreeItemResponseModel)>; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupModelBaseModel.ts deleted file mode 100644 index 8a2687142d..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupModelBaseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { HealthCheckGroupModel } from './HealthCheckGroupModel'; -import type { HealthCheckGroupModelBaseModel } from './HealthCheckGroupModelBaseModel'; - -export type PagedHealthCheckGroupModelBaseModel = { - total: number; - items: Array<(HealthCheckGroupModelBaseModel | HealthCheckGroupModel)>; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupResponseModel.ts new file mode 100644 index 0000000000..8bcb42c1d8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HealthCheckGroupResponseModel } from './HealthCheckGroupResponseModel'; + +export type PagedHealthCheckGroupResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageModel.ts deleted file mode 100644 index a5fe785cea..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { HelpPageModel } from './HelpPageModel'; - -export type PagedHelpPageModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageResponseModel.ts new file mode 100644 index 0000000000..fb379bf641 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HelpPageResponseModel } from './HelpPageResponseModel'; + +export type PagedHelpPageResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexModel.ts deleted file mode 100644 index ffb2a4a1ca..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { IndexModel } from './IndexModel'; - -export type PagedIndexModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexResponseModel.ts new file mode 100644 index 0000000000..a84e061c7c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { IndexResponseModel } from './IndexResponseModel'; + +export type PagedIndexResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageModel.ts deleted file mode 100644 index 700a00b67c..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { LanguageModel } from './LanguageModel'; - -export type PagedLanguageModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageResponseModel.ts new file mode 100644 index 0000000000..d749a241cb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { LanguageResponseModel } from './LanguageResponseModel'; + +export type PagedLanguageResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageModel.ts deleted file mode 100644 index 2e0370b852..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { LogMessageModel } from './LogMessageModel'; - -export type PagedLogMessageModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageResponseModel.ts new file mode 100644 index 0000000000..88457e9701 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { LogMessageResponseModel } from './LogMessageResponseModel'; + +export type PagedLogMessageResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateModel.ts deleted file mode 100644 index eefc94d7d1..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { LogTemplateModel } from './LogTemplateModel'; - -export type PagedLogTemplateModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateResponseModel.ts new file mode 100644 index 0000000000..801c440db4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { LogTemplateResponseModel } from './LogTemplateResponseModel'; + +export type PagedLogTemplateResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerModel.ts deleted file mode 100644 index 7f2e381960..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { LoggerModel } from './LoggerModel'; - -export type PagedLoggerModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerResponseModel.ts new file mode 100644 index 0000000000..273205e323 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { LoggerResponseModel } from './LoggerResponseModel'; + +export type PagedLoggerResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedObjectTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedObjectTypeResponseModel.ts new file mode 100644 index 0000000000..e72657d180 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedObjectTypeResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ObjectTypeResponseModel } from './ObjectTypeResponseModel'; + +export type PagedObjectTypeResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionModel.ts deleted file mode 100644 index 3a596e659a..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PackageDefinitionModel } from './PackageDefinitionModel'; - -export type PagedPackageDefinitionModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionResponseModel.ts new file mode 100644 index 0000000000..8582af874a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PackageDefinitionResponseModel } from './PackageDefinitionResponseModel'; + +export type PagedPackageDefinitionResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusModel.ts deleted file mode 100644 index b9a95529d8..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PackageMigrationStatusModel } from './PackageMigrationStatusModel'; - -export type PagedPackageMigrationStatusModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusResponseModel.ts new file mode 100644 index 0000000000..114244e919 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PackageMigrationStatusResponseModel } from './PackageMigrationStatusResponseModel'; + +export type PagedPackageMigrationStatusResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemModel.ts deleted file mode 100644 index 530f70a624..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { RecycleBinItemModel } from './RecycleBinItemModel'; - -export type PagedRecycleBinItemModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemResponseModel.ts new file mode 100644 index 0000000000..4077e2d0d5 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { RecycleBinItemResponseModel } from './RecycleBinItemResponseModel'; + +export type PagedRecycleBinItemResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlModel.ts deleted file mode 100644 index 6bd46c9a32..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { RedirectUrlModel } from './RedirectUrlModel'; - -export type PagedRedirectUrlModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlResponseModel.ts new file mode 100644 index 0000000000..3026d71af4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { RedirectUrlResponseModel } from './RedirectUrlResponseModel'; + +export type PagedRedirectUrlResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemModel.ts deleted file mode 100644 index fc7f3bc0db..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { RelationItemModel } from './RelationItemModel'; - -export type PagedRelationItemModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemResponseModel.ts new file mode 100644 index 0000000000..4ad8badc22 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { RelationItemResponseModel } from './RelationItemResponseModel'; + +export type PagedRelationItemResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationModel.ts deleted file mode 100644 index 155680334e..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { RelationModel } from './RelationModel'; - -export type PagedRelationModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationResponseModel.ts new file mode 100644 index 0000000000..5a4d95e4c1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { RelationResponseModel } from './RelationResponseModel'; + +export type PagedRelationResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchModel.ts deleted file mode 100644 index 069463afc4..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { SavedLogSearchModel } from './SavedLogSearchModel'; - -export type PagedSavedLogSearchModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchResponseModel.ts new file mode 100644 index 0000000000..6f5b02d4f3 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { SavedLogSearchResponseModel } from './SavedLogSearchResponseModel'; + +export type PagedSavedLogSearchResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultModel.ts deleted file mode 100644 index 849f5368a8..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { SearchResultModel } from './SearchResultModel'; - -export type PagedSearchResultModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultResponseModel.ts new file mode 100644 index 0000000000..2a95a2d85b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { SearchResultResponseModel } from './SearchResultResponseModel'; + +export type PagedSearchResultResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherModel.ts deleted file mode 100644 index 83c716fe93..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { SearcherModel } from './SearcherModel'; - -export type PagedSearcherModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherResponseModel.ts new file mode 100644 index 0000000000..b8c9c60dab --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { SearcherResponseModel } from './SearcherResponseModel'; + +export type PagedSearcherResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryModel.ts deleted file mode 100644 index a447d38f2e..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TelemetryModel } from './TelemetryModel'; - -export type PagedTelemetryModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryResponseModel.ts new file mode 100644 index 0000000000..6a8ddbabfd --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { TelemetryResponseModel } from './TelemetryResponseModel'; + +export type PagedTelemetryResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupModel.ts deleted file mode 100644 index c4d0191652..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { UserGroupModel } from './UserGroupModel'; - -export type PagedUserGroupModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupPresentationModel.ts new file mode 100644 index 0000000000..8a01377edf --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupPresentationModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { UserGroupPresentationModel } from './UserGroupPresentationModel'; + +export type PagedUserGroupPresentationModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusRequestModel.ts similarity index 68% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusRequestModel.ts index b2a7cc321c..cc933cc8d4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusRequestModel.ts @@ -2,7 +2,6 @@ /* tslint:disable */ /* eslint-disable */ -export type ProfilingStatusModel = { +export type ProfilingStatusRequestModel = { enabled?: boolean; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusResponseModel.ts new file mode 100644 index 0000000000..98b69d1149 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type ProfilingStatusResponseModel = { + enabled?: boolean; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeAppearanceModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeAppearanceModel.ts index e8138d4992..cdbf7325af 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeAppearanceModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeAppearanceModel.ts @@ -5,4 +5,3 @@ export type PropertyTypeAppearanceModel = { labelOnTop?: boolean; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerViewModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerResponseModelBaseModel.ts similarity index 76% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerViewModelBaseModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerResponseModelBaseModel.ts index 7c8e755156..44c151e3a4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerViewModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerResponseModelBaseModel.ts @@ -2,11 +2,10 @@ /* tslint:disable */ /* eslint-disable */ -export type PropertyTypeContainerViewModelBaseModel = { +export type PropertyTypeContainerResponseModelBaseModel = { key?: string; parentKey?: string | null; name?: string | null; type?: string; sortOrder?: number; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeViewModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeResponseModelBaseModel.ts similarity index 91% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeViewModelBaseModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeResponseModelBaseModel.ts index 11fe857a2c..57f4f6c6dd 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeViewModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeResponseModelBaseModel.ts @@ -5,7 +5,7 @@ import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; -export type PropertyTypeViewModelBaseModel = { +export type PropertyTypeResponseModelBaseModel = { key?: string; containerKey?: string | null; alias?: string; @@ -17,4 +17,3 @@ export type PropertyTypeViewModelBaseModel = { validation?: PropertyTypeValidationModel; appearance?: PropertyTypeAppearanceModel; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeValidationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeValidationModel.ts index 6966054e27..efdc5b51ec 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeValidationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeValidationModel.ts @@ -8,4 +8,3 @@ export type PropertyTypeValidationModel = { regEx?: string | null; regExMessage?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemResponseModel.ts similarity index 85% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemResponseModel.ts index 17bef97f12..203b715fb4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemResponseModel.ts @@ -2,7 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type RecycleBinItemModel = { +export type RecycleBinItemResponseModel = { $type: string; key?: string; name?: string; @@ -12,4 +12,3 @@ export type RecycleBinItemModel = { isContainer?: boolean; parentKey?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlResponseModel.ts similarity index 84% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlResponseModel.ts index fe39dcab56..d2c743ba79 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlResponseModel.ts @@ -2,7 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type RedirectUrlModel = { +export type RedirectUrlResponseModel = { key?: string; originalUrl?: string; destinationUrl?: string; @@ -10,4 +10,3 @@ export type RedirectUrlModel = { contentKey?: string; culture?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusResponseModel.ts similarity index 81% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusResponseModel.ts index c97804bab7..6ef9f24316 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusResponseModel.ts @@ -4,8 +4,7 @@ import type { RedirectStatusModel } from './RedirectStatusModel'; -export type RedirectUrlStatusModel = { +export type RedirectUrlStatusResponseModel = { status?: RedirectStatusModel; userIsAdmin?: boolean; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemResponseModel.ts similarity index 90% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemResponseModel.ts index d99d9050a5..2b261d21d2 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemResponseModel.ts @@ -2,7 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type RelationItemModel = { +export type RelationItemResponseModel = { nodeKey?: string; nodeName?: string | null; nodeType?: string | null; @@ -14,4 +14,3 @@ export type RelationItemModel = { relationTypeIsBidirectional?: boolean; relationTypeIsDependency?: boolean; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationResponseModel.ts similarity index 86% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationResponseModel.ts index 47de4a65d7..4fe5555e69 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationResponseModel.ts @@ -2,7 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type RelationModel = { +export type RelationResponseModel = { parentId?: number; parentName?: string | null; childId?: number; @@ -10,4 +10,3 @@ export type RelationModel = { createDate?: string; comment?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts index 0213197525..e7de6f1945 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts @@ -9,4 +9,3 @@ export type RelationTypeBaseModel = { childObjectType?: string | null; isDependency?: boolean; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts index 0866014d89..dab718bbf1 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts @@ -5,11 +5,10 @@ import type { RelationTypeBaseModel } from './RelationTypeBaseModel'; export type RelationTypeResponseModel = (RelationTypeBaseModel & { - key?: string; - alias?: string | null; - path?: string; - isSystemRelationType?: boolean; - parentObjectTypeName?: string | null; - childObjectTypeName?: string | null; +key?: string; +alias?: string | null; +path?: string; +isSystemRelationType?: boolean; +parentObjectTypeName?: string | null; +childObjectTypeName?: string | null; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupSaveModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SaveUserGroupRequestModel.ts similarity index 69% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupSaveModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SaveUserGroupRequestModel.ts index a729fbff90..14466b644d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupSaveModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SaveUserGroupRequestModel.ts @@ -4,5 +4,4 @@ import type { UserGroupBaseModel } from './UserGroupBaseModel'; -export type UserGroupSaveModel = UserGroupBaseModel; - +export type SaveUserGroupRequestModel = UserGroupBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchPresenationBaseModel.ts similarity index 68% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchPresenationBaseModel.ts index f75781f02a..2cc7b02658 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchPresenationBaseModel.ts @@ -2,8 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type SavedLogSearchModel = { +export type SavedLogSearchPresenationBaseModel = { name?: string; query?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchRequestModel.ts new file mode 100644 index 0000000000..e2e7aecf61 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchRequestModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { SavedLogSearchPresenationBaseModel } from './SavedLogSearchPresenationBaseModel'; + +export type SavedLogSearchRequestModel = SavedLogSearchPresenationBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchResponseModel.ts new file mode 100644 index 0000000000..1a89ce91c6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { SavedLogSearchPresenationBaseModel } from './SavedLogSearchPresenationBaseModel'; + +export type SavedLogSearchResponseModel = SavedLogSearchPresenationBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultModel.ts deleted file mode 100644 index 82f9cf64de..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FieldModel } from './FieldModel'; - -export type SearchResultModel = { - id?: string; - score?: number; - readonly fieldCount?: number; - fields?: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultResponseModel.ts new file mode 100644 index 0000000000..9706011ad7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultResponseModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { FieldPresentationModel } from './FieldPresentationModel'; + +export type SearchResultResponseModel = { + id?: string; + score?: number; + readonly fieldCount?: number; + fields?: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherResponseModel.ts similarity index 70% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherResponseModel.ts index e20520f4d6..898a4172a8 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherResponseModel.ts @@ -2,7 +2,6 @@ /* tslint:disable */ /* eslint-disable */ -export type SearcherModel = { +export type SearcherResponseModel = { name?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusResponseModel.ts similarity index 80% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusResponseModel.ts index 8c338954f5..5ba10b5849 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusResponseModel.ts @@ -4,7 +4,6 @@ import type { RuntimeLevelModel } from './RuntimeLevelModel'; -export type ServerStatusModel = { +export type ServerStatusResponseModel = { serverStatus?: RuntimeLevelModel; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRepresentationBaseModel.ts similarity index 78% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRepresentationBaseModel.ts index 9cf2ab4b30..1734020f3e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRepresentationBaseModel.ts @@ -4,7 +4,6 @@ import type { TelemetryLevelModel } from './TelemetryLevelModel'; -export type TelemetryModel = { +export type TelemetryRepresentationBaseModel = { telemetryLevel?: TelemetryLevelModel; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRequestModel.ts new file mode 100644 index 0000000000..08f54adf7c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRequestModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { TelemetryRepresentationBaseModel } from './TelemetryRepresentationBaseModel'; + +export type TelemetryRequestModel = TelemetryRepresentationBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryResponseModel.ts new file mode 100644 index 0000000000..3ddf37ec02 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { TelemetryRepresentationBaseModel } from './TelemetryRepresentationBaseModel'; + +export type TelemetryResponseModel = TelemetryRepresentationBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModelBaseModel.ts index 7471d8b826..11e0260809 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModelBaseModel.ts @@ -7,4 +7,3 @@ export type TemplateModelBaseModel = { alias?: string; content?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterPresentationModel.ts similarity index 78% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterPresentationModel.ts index 1befb86885..83a2625447 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterPresentationModel.ts @@ -4,9 +4,8 @@ import type { OperatorModel } from './OperatorModel'; -export type TemplateQueryExecuteFilterModel = { +export type TemplateQueryExecuteFilterPresentationModel = { propertyAlias?: string; constraintValue?: string; operator?: OperatorModel; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteModel.ts index 029409b196..29ad0c52ae 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteModel.ts @@ -2,14 +2,13 @@ /* tslint:disable */ /* eslint-disable */ -import type { TemplateQueryExecuteFilterModel } from './TemplateQueryExecuteFilterModel'; +import type { TemplateQueryExecuteFilterPresentationModel } from './TemplateQueryExecuteFilterPresentationModel'; import type { TemplateQueryExecuteSortModel } from './TemplateQueryExecuteSortModel'; export type TemplateQueryExecuteModel = { rootContentKey?: string | null; contentTypeAlias?: string | null; - filters?: Array | null; + filters?: Array | null; sort?: TemplateQueryExecuteSortModel | null; take?: number; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteSortModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteSortModel.ts index d3a1b6cf56..a733632dcc 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteSortModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteSortModel.ts @@ -6,4 +6,3 @@ export type TemplateQueryExecuteSortModel = { propertyAlias?: string; direction?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryOperatorModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryOperatorModel.ts index 5b24f440a5..df264e1646 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryOperatorModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryOperatorModel.ts @@ -9,4 +9,3 @@ export type TemplateQueryOperatorModel = { operator?: OperatorModel; applicableTypes?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyPresentationModel.ts similarity index 80% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyPresentationModel.ts index 545d021964..dfd201f49e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyPresentationModel.ts @@ -4,8 +4,7 @@ import type { TemplateQueryPropertyTypeModel } from './TemplateQueryPropertyTypeModel'; -export type TemplateQueryPropertyModel = { +export type TemplateQueryPropertyPresentationModel = { alias?: string; type?: TemplateQueryPropertyTypeModel; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemPresentationModel.ts similarity index 66% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemPresentationModel.ts index 43d24a4c62..a2082853e0 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemPresentationModel.ts @@ -2,8 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type TemplateQueryResultItemModel = { +export type TemplateQueryResultItemPresentationModel = { icon?: string; name?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultModel.ts deleted file mode 100644 index 1839c4e456..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TemplateQueryResultItemModel } from './TemplateQueryResultItemModel'; - -export type TemplateQueryResultModel = { - queryExpression?: string; - sampleResults?: Array; - resultCount?: number; - executionTime?: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultResponseModel.ts new file mode 100644 index 0000000000..c32ff1d249 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultResponseModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { TemplateQueryResultItemPresentationModel } from './TemplateQueryResultItemPresentationModel'; + +export type TemplateQueryResultResponseModel = { + queryExpression?: string; + sampleResults?: Array; + resultCount?: number; + executionTime?: number; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsResponseModel.ts similarity index 52% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsResponseModel.ts index 67723966b6..b49bbae056 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsResponseModel.ts @@ -3,11 +3,10 @@ /* eslint-disable */ import type { TemplateQueryOperatorModel } from './TemplateQueryOperatorModel'; -import type { TemplateQueryPropertyModel } from './TemplateQueryPropertyModel'; +import type { TemplateQueryPropertyPresentationModel } from './TemplateQueryPropertyPresentationModel'; -export type TemplateQuerySettingsModel = { +export type TemplateQuerySettingsResponseModel = { contentTypeAliases?: Array; - properties?: Array; + properties?: Array; operators?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateResponseModel.ts similarity index 60% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateResponseModel.ts index 7f14861ddd..1044f35131 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateResponseModel.ts @@ -4,8 +4,7 @@ import type { TemplateModelBaseModel } from './TemplateModelBaseModel'; -export type TemplateModel = (TemplateModelBaseModel & { - $type: string; - key?: string; +export type TemplateResponseModel = (TemplateModelBaseModel & { +$type: string; +key?: string; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldResponseModel.ts similarity index 67% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldResponseModel.ts index 47040df1dc..d616c8c655 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldResponseModel.ts @@ -2,7 +2,6 @@ /* tslint:disable */ /* eslint-disable */ -export type TemplateScaffoldModel = { +export type TemplateScaffoldResponseModel = { content?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemPresentationModel.ts similarity index 78% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemPresentationModel.ts index b16725118d..e62a6043a5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemPresentationModel.ts @@ -2,10 +2,9 @@ /* tslint:disable */ /* eslint-disable */ -export type TreeItemModel = { +export type TreeItemPresentationModel = { name?: string; type?: string; icon?: string; hasChildren?: boolean; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts new file mode 100644 index 0000000000..c2d856a916 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DocumentValueModel } from './DocumentValueModel'; +import type { DocumentVariantRequestModel } from './DocumentVariantRequestModel'; + +export type UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel = { + values?: Array; + variants?: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts new file mode 100644 index 0000000000..5c95019eb1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { MediaValueModel } from './MediaValueModel'; +import type { MediaVariantRequestModel } from './MediaVariantRequestModel'; + +export type UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel = { + values?: Array; + variants?: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeUpdateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDataTypeRequestModel.ts similarity index 69% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeUpdateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDataTypeRequestModel.ts index 9905f91b45..fce11fbc4e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeUpdateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDataTypeRequestModel.ts @@ -4,5 +4,4 @@ import type { DataTypeModelBaseModel } from './DataTypeModelBaseModel'; -export type DataTypeUpdateModel = DataTypeModelBaseModel; - +export type UpdateDataTypeRequestModel = DataTypeModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemUpdateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDictionaryItemRequestModel.ts similarity index 66% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemUpdateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDictionaryItemRequestModel.ts index 7ec1024f75..2c4af9822a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemUpdateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDictionaryItemRequestModel.ts @@ -4,5 +4,4 @@ import type { DictionaryItemModelBaseModel } from './DictionaryItemModelBaseModel'; -export type DictionaryItemUpdateModel = DictionaryItemModelBaseModel; - +export type UpdateDictionaryItemRequestModel = DictionaryItemModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentRequestModel.ts new file mode 100644 index 0000000000..2b10730abb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentRequestModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel } from './UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel'; + +export type UpdateDocumentRequestModel = (UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel & { +templateKey?: string | null; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDomainsRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDomainsRequestModel.ts new file mode 100644 index 0000000000..06caa5c458 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDomainsRequestModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DomainsPresentationModelBaseModel } from './DomainsPresentationModelBaseModel'; + +export type UpdateDomainsRequestModel = DomainsPresentationModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderUpdateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateFolderReponseModel.ts similarity index 69% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderUpdateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateFolderReponseModel.ts index cadefa91e6..1644854933 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderUpdateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateFolderReponseModel.ts @@ -4,5 +4,4 @@ import type { FolderModelBaseModel } from './FolderModelBaseModel'; -export type FolderUpdateModel = FolderModelBaseModel; - +export type UpdateFolderReponseModel = FolderModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageUpdateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateLanguageRequestModel.ts similarity index 69% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageUpdateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateLanguageRequestModel.ts index 43ede0907e..45f9f1a76c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageUpdateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateLanguageRequestModel.ts @@ -4,5 +4,4 @@ import type { LanguageModelBaseModel } from './LanguageModelBaseModel'; -export type LanguageUpdateModel = LanguageModelBaseModel; - +export type UpdateLanguageRequestModel = LanguageModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateMediaRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateMediaRequestModel.ts new file mode 100644 index 0000000000..8363477f55 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateMediaRequestModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel } from './UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel'; + +export type UpdateMediaRequestModel = UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageUpdateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdatePackageRequestModel.ts similarity index 61% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageUpdateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdatePackageRequestModel.ts index e8bbd052fe..ab91b916f3 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageUpdateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdatePackageRequestModel.ts @@ -4,7 +4,6 @@ import type { PackageModelBaseModel } from './PackageModelBaseModel'; -export type PackageUpdateModel = (PackageModelBaseModel & { - packagePath?: string; +export type UpdatePackageRequestModel = (PackageModelBaseModel & { +packagePath?: string; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts index d4ec475f57..df64f4fb41 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts @@ -5,4 +5,3 @@ import type { RelationTypeBaseModel } from './RelationTypeBaseModel'; export type UpdateRelationTypeRequestModel = RelationTypeBaseModel; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateCreateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateTemplateRequestModel.ts similarity index 69% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateCreateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateTemplateRequestModel.ts index 7096084213..a95046e2f9 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateCreateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateTemplateRequestModel.ts @@ -4,5 +4,4 @@ import type { TemplateModelBaseModel } from './TemplateModelBaseModel'; -export type TemplateCreateModel = TemplateModelBaseModel; - +export type UpdateTemplateRequestModel = TemplateModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupUpdateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupRequestModel.ts similarity index 68% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupUpdateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupRequestModel.ts index 9d329770d4..7e357408c1 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupUpdateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupRequestModel.ts @@ -4,5 +4,4 @@ import type { UserGroupBaseModel } from './UserGroupBaseModel'; -export type UserGroupUpdateModel = UserGroupBaseModel; - +export type UpdateUserGroupRequestModel = UserGroupBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsResponseModel.ts similarity index 82% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsResponseModel.ts index 0486d96ff8..8331fa652a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsResponseModel.ts @@ -2,11 +2,10 @@ /* tslint:disable */ /* eslint-disable */ -export type UpgradeSettingsModel = { +export type UpgradeSettingsResponseModel = { currentState?: string; newState?: string; newVersion?: string; oldVersion?: string; readonly reportUrl?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UploadDictionaryResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UploadDictionaryResponseModel.ts new file mode 100644 index 0000000000..3394ac66c7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UploadDictionaryResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ImportDictionaryItemsPresentationModel } from './ImportDictionaryItemsPresentationModel'; + +export type UploadDictionaryResponseModel = { + dictionaryItems?: Array; + fileName?: string | null; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupBaseModel.ts index 3b22ff01eb..5da0876910 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupBaseModel.ts @@ -12,4 +12,3 @@ export type UserGroupBaseModel = { mediaStartNodeKey?: string | null; permissions?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupPresentationModel.ts similarity index 60% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupPresentationModel.ts index 0aae1e4cf7..e812fc9384 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupPresentationModel.ts @@ -4,8 +4,7 @@ import type { UserGroupBaseModel } from './UserGroupBaseModel'; -export type UserGroupModel = (UserGroupBaseModel & { - $type: string; - key?: string; +export type UserGroupPresentationModel = (UserGroupBaseModel & { +$type: string; +key?: string; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallResponseModel.ts similarity index 81% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallResponseModel.ts index 9c89afe57b..c107963227 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallResponseModel.ts @@ -2,10 +2,9 @@ /* tslint:disable */ /* eslint-disable */ -export type UserInstallModel = { +export type UserInstallResponseModel = { name: string; email: string; password: string; readonly subscribeToNewsletter?: boolean; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserSettingsModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserSettingsModel.ts index af052a9cc7..e5837a651d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserSettingsModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserSettingsModel.ts @@ -2,11 +2,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { ConsentLevelModel } from './ConsentLevelModel'; +import type { ConsentLevelPresentationModel } from './ConsentLevelPresentationModel'; export type UserSettingsModel = { minCharLength?: number; minNonAlphaNumericLength?: number; - consentLevels?: Array; + consentLevels?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueViewModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueModelBaseModel.ts similarity index 75% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueViewModelBaseModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueModelBaseModel.ts index f63bda6058..ef9d722992 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueViewModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueModelBaseModel.ts @@ -2,10 +2,10 @@ /* tslint:disable */ /* eslint-disable */ -export type ValueViewModelBaseModel = { +export type ValueModelBaseModel = { + $type: string; culture?: string | null; segment?: string | null; alias?: string; value?: any; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantModelBaseModel.ts new file mode 100644 index 0000000000..b2227d9a71 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantModelBaseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type VariantModelBaseModel = { + $type: string; + culture?: string | null; + segment?: string | null; + name?: string; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantViewModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantResponseModelBaseModel.ts similarity index 75% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantViewModelBaseModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantResponseModelBaseModel.ts index 6e2f7e0a05..a0b2fa88a5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantViewModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantResponseModelBaseModel.ts @@ -2,11 +2,11 @@ /* tslint:disable */ /* eslint-disable */ -export type VariantViewModelBaseModel = { +export type VariantResponseModelBaseModel = { + $type: string; culture?: string | null; segment?: string | null; name?: string; createDate?: string; updateDate?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionResponseModel.ts similarity index 71% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionResponseModel.ts index a4405a253b..b454174231 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionResponseModel.ts @@ -2,7 +2,6 @@ /* tslint:disable */ /* eslint-disable */ -export type VersionModel = { +export type VersionResponseModel = { version?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/AuditLogResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/AuditLogResource.ts index 20a267dcb5..f1c3b47e92 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/AuditLogResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/AuditLogResource.ts @@ -17,16 +17,16 @@ export class AuditLogResource { * @throws ApiError */ public static getAuditLog({ - orderDirection, - sinceDate, - skip, - take = 100, - }: { - orderDirection?: DirectionModel, - sinceDate?: string, - skip?: number, - take?: number, - }): CancelablePromise { +orderDirection, +sinceDate, +skip, +take = 100, +}: { +orderDirection?: DirectionModel, +sinceDate?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/audit-log', @@ -44,18 +44,18 @@ export class AuditLogResource { * @throws ApiError */ public static getAuditLogByKey({ - key, - orderDirection, - sinceDate, - skip, - take = 100, - }: { - key: string, - orderDirection?: DirectionModel, - sinceDate?: string, - skip?: number, - take?: number, - }): CancelablePromise { +key, +orderDirection, +sinceDate, +skip, +take = 100, +}: { +key: string, +orderDirection?: DirectionModel, +sinceDate?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/audit-log/{key}', @@ -76,16 +76,16 @@ export class AuditLogResource { * @throws ApiError */ public static getAuditLogTypeByLogType({ - logType, - sinceDate, - skip, - take = 100, - }: { - logType: AuditTypeModel, - sinceDate?: string, - skip?: number, - take?: number, - }): CancelablePromise { +logType, +sinceDate, +skip, +take = 100, +}: { +logType: AuditTypeModel, +sinceDate?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/audit-log/type/{logType}', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/CultureResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/CultureResource.ts index 1c0efea89e..16fe49b915 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/CultureResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/CultureResource.ts @@ -1,7 +1,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PagedCultureModel } from '../models/PagedCultureModel'; +import type { PagedCultureReponseModel } from '../models/PagedCultureReponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -10,16 +10,16 @@ import { request as __request } from '../core/request'; export class CultureResource { /** - * @returns PagedCultureModel Success + * @returns PagedCultureReponseModel Success * @throws ApiError */ public static getCulture({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/culture', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts index 29f0ca82bd..dddb4cd14f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts @@ -1,18 +1,18 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DataTypeCopyModel } from '../models/DataTypeCopyModel'; -import type { DataTypeCreateModel } from '../models/DataTypeCreateModel'; -import type { DataTypeModel } from '../models/DataTypeModel'; -import type { DataTypeMoveModel } from '../models/DataTypeMoveModel'; -import type { DataTypeReferenceModel } from '../models/DataTypeReferenceModel'; -import type { DataTypeUpdateModel } from '../models/DataTypeUpdateModel'; -import type { DocumentTypeTreeItemModel } from '../models/DocumentTypeTreeItemModel'; -import type { FolderCreateModel } from '../models/FolderCreateModel'; -import type { FolderModel } from '../models/FolderModel'; -import type { FolderTreeItemModel } from '../models/FolderTreeItemModel'; -import type { FolderUpdateModel } from '../models/FolderUpdateModel'; -import type { PagedFolderTreeItemModel } from '../models/PagedFolderTreeItemModel'; +import type { CopyDataTypeRequestModel } from '../models/CopyDataTypeRequestModel'; +import type { CreateDataTypeRequestModel } from '../models/CreateDataTypeRequestModel'; +import type { CreateFolderRequestModel } from '../models/CreateFolderRequestModel'; +import type { DataTypeReferenceResponseModel } from '../models/DataTypeReferenceResponseModel'; +import type { DataTypeResponseModel } from '../models/DataTypeResponseModel'; +import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; +import type { FolderReponseModel } from '../models/FolderReponseModel'; +import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; +import type { MoveDataTypeRequestModel } from '../models/MoveDataTypeRequestModel'; +import type { PagedFolderTreeItemResponseModel } from '../models/PagedFolderTreeItemResponseModel'; +import type { UpdateDataTypeRequestModel } from '../models/UpdateDataTypeRequestModel'; +import type { UpdateFolderReponseModel } from '../models/UpdateFolderReponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -25,10 +25,10 @@ export class DataTypeResource { * @throws ApiError */ public static postDataType({ - requestBody, - }: { - requestBody?: DataTypeCreateModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: CreateDataTypeRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/data-type', @@ -47,10 +47,10 @@ export class DataTypeResource { * @throws ApiError */ public static getDataTypeByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/data-type/{key}', @@ -68,10 +68,10 @@ export class DataTypeResource { * @throws ApiError */ public static deleteDataTypeByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/data-type/{key}', @@ -90,12 +90,12 @@ export class DataTypeResource { * @throws ApiError */ public static putDataTypeByKey({ - key, - requestBody, - }: { - key: string, - requestBody?: DataTypeUpdateModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: UpdateDataTypeRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/data-type/{key}', @@ -116,12 +116,12 @@ export class DataTypeResource { * @throws ApiError */ public static postDataTypeByKeyCopy({ - key, - requestBody, - }: { - key: string, - requestBody?: DataTypeCopyModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: CopyDataTypeRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/data-type/{key}/copy', @@ -142,12 +142,12 @@ export class DataTypeResource { * @throws ApiError */ public static postDataTypeByKeyMove({ - key, - requestBody, - }: { - key: string, - requestBody?: DataTypeMoveModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: MoveDataTypeRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/data-type/{key}/move', @@ -167,10 +167,10 @@ export class DataTypeResource { * @throws ApiError */ public static getDataTypeByKeyReferences({ - key, - }: { - key: string, - }): CancelablePromise> { +key, +}: { +key: string, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/data-type/{key}/references', @@ -188,10 +188,10 @@ export class DataTypeResource { * @throws ApiError */ public static postDataTypeFolder({ - requestBody, - }: { - requestBody?: FolderCreateModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: CreateFolderRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/data-type/folder', @@ -206,10 +206,10 @@ export class DataTypeResource { * @throws ApiError */ public static getDataTypeFolderByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/data-type/folder/{key}', @@ -227,10 +227,10 @@ export class DataTypeResource { * @throws ApiError */ public static deleteDataTypeFolderByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/data-type/folder/{key}', @@ -248,12 +248,12 @@ export class DataTypeResource { * @throws ApiError */ public static putDataTypeFolderByKey({ - key, - requestBody, - }: { - key: string, - requestBody?: FolderUpdateModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: UpdateFolderReponseModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/data-type/folder/{key}', @@ -269,20 +269,20 @@ export class DataTypeResource { } /** - * @returns PagedFolderTreeItemModel Success + * @returns PagedFolderTreeItemResponseModel Success * @throws ApiError */ public static getTreeDataTypeChildren({ - parentKey, - skip, - take = 100, - foldersOnly = false, - }: { - parentKey?: string, - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { +parentKey, +skip, +take = 100, +foldersOnly = false, +}: { +parentKey?: string, +skip?: number, +take?: number, +foldersOnly?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/data-type/children', @@ -300,10 +300,10 @@ export class DataTypeResource { * @throws ApiError */ public static getTreeDataTypeItem({ - key, - }: { - key?: Array, - }): CancelablePromise> { +key, +}: { +key?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/data-type/item', @@ -314,18 +314,18 @@ export class DataTypeResource { } /** - * @returns PagedFolderTreeItemModel Success + * @returns PagedFolderTreeItemResponseModel Success * @throws ApiError */ public static getTreeDataTypeRoot({ - skip, - take = 100, - foldersOnly = false, - }: { - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { +skip, +take = 100, +foldersOnly = false, +}: { +skip?: number, +take?: number, +foldersOnly?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/data-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts index 3b4d8125e7..b2a18ac44d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts @@ -1,16 +1,16 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DictionaryImportModel } from '../models/DictionaryImportModel'; -import type { DictionaryItemCreateModel } from '../models/DictionaryItemCreateModel'; -import type { DictionaryItemModel } from '../models/DictionaryItemModel'; -import type { DictionaryItemUpdateModel } from '../models/DictionaryItemUpdateModel'; -import type { DictionaryMoveModel } from '../models/DictionaryMoveModel'; -import type { DictionaryUploadModel } from '../models/DictionaryUploadModel'; -import type { DocumentTypeTreeItemModel } from '../models/DocumentTypeTreeItemModel'; -import type { FolderTreeItemModel } from '../models/FolderTreeItemModel'; -import type { PagedDictionaryOverviewModel } from '../models/PagedDictionaryOverviewModel'; -import type { PagedEntityTreeItemModel } from '../models/PagedEntityTreeItemModel'; +import type { CreateDictionaryItemRequestModel } from '../models/CreateDictionaryItemRequestModel'; +import type { DictionaryItemResponseModel } from '../models/DictionaryItemResponseModel'; +import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; +import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; +import type { ImportDictionaryRequestModel } from '../models/ImportDictionaryRequestModel'; +import type { MoveDictionaryRequestModel } from '../models/MoveDictionaryRequestModel'; +import type { PagedDictionaryOverviewResponseModel } from '../models/PagedDictionaryOverviewResponseModel'; +import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; +import type { UpdateDictionaryItemRequestModel } from '../models/UpdateDictionaryItemRequestModel'; +import type { UploadDictionaryResponseModel } from '../models/UploadDictionaryResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -19,16 +19,16 @@ import { request as __request } from '../core/request'; export class DictionaryResource { /** - * @returns PagedDictionaryOverviewModel Success + * @returns PagedDictionaryOverviewResponseModel Success * @throws ApiError */ public static getDictionary({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/dictionary', @@ -44,10 +44,10 @@ export class DictionaryResource { * @throws ApiError */ public static postDictionary({ - requestBody, - }: { - requestBody?: DictionaryItemCreateModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: CreateDictionaryItemRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/dictionary', @@ -67,10 +67,10 @@ export class DictionaryResource { * @throws ApiError */ public static getDictionaryByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/dictionary/{key}', @@ -88,10 +88,10 @@ export class DictionaryResource { * @throws ApiError */ public static deleteDictionaryByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/dictionary/{key}', @@ -110,12 +110,12 @@ export class DictionaryResource { * @throws ApiError */ public static putDictionaryByKey({ - key, - requestBody, - }: { - key: string, - requestBody?: DictionaryItemUpdateModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: UpdateDictionaryItemRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/dictionary/{key}', @@ -136,12 +136,12 @@ export class DictionaryResource { * @throws ApiError */ public static getDictionaryByKeyExport({ - key, - includeChildren = false, - }: { - key: string, - includeChildren?: boolean, - }): CancelablePromise { +key, +includeChildren = false, +}: { +key: string, +includeChildren?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/dictionary/{key}/export', @@ -162,12 +162,12 @@ export class DictionaryResource { * @throws ApiError */ public static postDictionaryByKeyMove({ - key, - requestBody, - }: { - key: string, - requestBody?: DictionaryMoveModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: MoveDictionaryRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/dictionary/{key}/move', @@ -188,10 +188,10 @@ export class DictionaryResource { * @throws ApiError */ public static postDictionaryImport({ - requestBody, - }: { - requestBody?: DictionaryImportModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: ImportDictionaryRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/dictionary/import', @@ -210,10 +210,10 @@ export class DictionaryResource { * @throws ApiError */ public static postDictionaryUpload({ - requestBody, - }: { - requestBody?: any, - }): CancelablePromise { +requestBody, +}: { +requestBody?: any, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/dictionary/upload', @@ -225,18 +225,18 @@ export class DictionaryResource { } /** - * @returns PagedEntityTreeItemModel Success + * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError */ public static getTreeDictionaryChildren({ - parentKey, - skip, - take = 100, - }: { - parentKey?: string, - skip?: number, - take?: number, - }): CancelablePromise { +parentKey, +skip, +take = 100, +}: { +parentKey?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/dictionary/children', @@ -253,10 +253,10 @@ export class DictionaryResource { * @throws ApiError */ public static getTreeDictionaryItem({ - key, - }: { - key?: Array, - }): CancelablePromise> { +key, +}: { +key?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/dictionary/item', @@ -267,16 +267,16 @@ export class DictionaryResource { } /** - * @returns PagedEntityTreeItemModel Success + * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError */ public static getTreeDictionaryRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/dictionary/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts index 3513d34d4e..5a31940e98 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DocumentBlueprintTreeItemModel } from '../models/DocumentBlueprintTreeItemModel'; -import type { PagedDocumentBlueprintTreeItemModel } from '../models/PagedDocumentBlueprintTreeItemModel'; +import type { DocumentBlueprintTreeItemResponseModel } from '../models/DocumentBlueprintTreeItemResponseModel'; +import type { PagedDocumentBlueprintTreeItemResponseModel } from '../models/PagedDocumentBlueprintTreeItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -15,10 +15,10 @@ export class DocumentBlueprintResource { * @throws ApiError */ public static getTreeDocumentBlueprintItem({ - key, - }: { - key?: Array, - }): CancelablePromise> { +key, +}: { +key?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-blueprint/item', @@ -29,16 +29,16 @@ export class DocumentBlueprintResource { } /** - * @returns PagedDocumentBlueprintTreeItemModel Success + * @returns PagedDocumentBlueprintTreeItemResponseModel Success * @throws ApiError */ public static getTreeDocumentBlueprintRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-blueprint/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts index 470fa0033c..8d30863d05 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts @@ -1,10 +1,13 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DocumentModel } from '../models/DocumentModel'; -import type { DocumentTreeItemModel } from '../models/DocumentTreeItemModel'; -import type { PagedDocumentTreeItemModel } from '../models/PagedDocumentTreeItemModel'; -import type { PagedRecycleBinItemModel } from '../models/PagedRecycleBinItemModel'; +import type { CreateDocumentRequestModel } from '../models/CreateDocumentRequestModel'; +import type { DocumentResponseModel } from '../models/DocumentResponseModel'; +import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; +import type { PagedDocumentTreeItemResponseModel } from '../models/PagedDocumentTreeItemResponseModel'; +import type { PagedRecycleBinItemResponseModel } from '../models/PagedRecycleBinItemResponseModel'; +import type { UpdateDocumentRequestModel } from '../models/UpdateDocumentRequestModel'; +import type { UpdateDomainsRequestModel } from '../models/UpdateDomainsRequestModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -12,15 +15,37 @@ import { request as __request } from '../core/request'; export class DocumentResource { + /** + * @returns string Created + * @throws ApiError + */ + public static postDocument({ +requestBody, +}: { +requestBody?: CreateDocumentRequestModel, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/document', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Location', + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + /** * @returns any Success * @throws ApiError */ public static getDocumentByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/document/{key}', @@ -34,18 +59,106 @@ export class DocumentResource { } /** - * @returns PagedRecycleBinItemModel Success + * @returns any Success + * @throws ApiError + */ + public static deleteDocumentByKey({ +key, +}: { +key: string, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/document/{key}', + path: { + 'key': key, + }, + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static putDocumentByKey({ +key, +requestBody, +}: { +key: string, +requestBody?: UpdateDocumentRequestModel, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document/{key}', + path: { + 'key': key, + }, + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getDocumentByKeyDomains({ +key, +}: { +key: string, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document/{key}/domains', + path: { + 'key': key, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static putDocumentByKeyDomains({ +key, +requestBody, +}: { +key: string, +requestBody?: UpdateDomainsRequestModel, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document/{key}/domains', + path: { + 'key': key, + }, + body: requestBody, + mediaType: 'application/json', + }); + } + + /** + * @returns PagedRecycleBinItemResponseModel Success * @throws ApiError */ public static getRecycleBinDocumentChildren({ - parentKey, - skip, - take = 100, - }: { - parentKey?: string, - skip?: number, - take?: number, - }): CancelablePromise { +parentKey, +skip, +take = 100, +}: { +parentKey?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/recycle-bin/document/children', @@ -61,16 +174,16 @@ export class DocumentResource { } /** - * @returns PagedRecycleBinItemModel Success + * @returns PagedRecycleBinItemResponseModel Success * @throws ApiError */ public static getRecycleBinDocumentRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/recycle-bin/document/root', @@ -85,22 +198,22 @@ export class DocumentResource { } /** - * @returns PagedDocumentTreeItemModel Success + * @returns PagedDocumentTreeItemResponseModel Success * @throws ApiError */ public static getTreeDocumentChildren({ - parentKey, - skip, - take = 100, - dataTypeKey, - culture, - }: { - parentKey?: string, - skip?: number, - take?: number, - dataTypeKey?: string, - culture?: string, - }): CancelablePromise { +parentKey, +skip, +take = 100, +dataTypeKey, +culture, +}: { +parentKey?: string, +skip?: number, +take?: number, +dataTypeKey?: string, +culture?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document/children', @@ -119,14 +232,14 @@ export class DocumentResource { * @throws ApiError */ public static getTreeDocumentItem({ - key, - dataTypeKey, - culture, - }: { - key?: Array, - dataTypeKey?: string, - culture?: string, - }): CancelablePromise> { +key, +dataTypeKey, +culture, +}: { +key?: Array, +dataTypeKey?: string, +culture?: string, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document/item', @@ -139,20 +252,20 @@ export class DocumentResource { } /** - * @returns PagedDocumentTreeItemModel Success + * @returns PagedDocumentTreeItemResponseModel Success * @throws ApiError */ public static getTreeDocumentRoot({ - skip, - take = 100, - dataTypeKey, - culture, - }: { - skip?: number, - take?: number, - dataTypeKey?: string, - culture?: string, - }): CancelablePromise { +skip, +take = 100, +dataTypeKey, +culture, +}: { +skip?: number, +take?: number, +dataTypeKey?: string, +culture?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts index a36a6081cc..5d034deb83 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts @@ -1,9 +1,9 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DocumentTypeModel } from '../models/DocumentTypeModel'; -import type { DocumentTypeTreeItemModel } from '../models/DocumentTypeTreeItemModel'; -import type { PagedDocumentTypeTreeItemModel } from '../models/PagedDocumentTypeTreeItemModel'; +import type { DocumentTypeResponseModel } from '../models/DocumentTypeResponseModel'; +import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; +import type { PagedDocumentTypeTreeItemResponseModel } from '../models/PagedDocumentTypeTreeItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -16,10 +16,10 @@ export class DocumentTypeResource { * @throws ApiError */ public static getDocumentTypeByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/document-type/{key}', @@ -33,20 +33,20 @@ export class DocumentTypeResource { } /** - * @returns PagedDocumentTypeTreeItemModel Success + * @returns PagedDocumentTypeTreeItemResponseModel Success * @throws ApiError */ public static getTreeDocumentTypeChildren({ - parentKey, - skip, - take = 100, - foldersOnly = false, - }: { - parentKey?: string, - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { +parentKey, +skip, +take = 100, +foldersOnly = false, +}: { +parentKey?: string, +skip?: number, +take?: number, +foldersOnly?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-type/children', @@ -64,10 +64,10 @@ export class DocumentTypeResource { * @throws ApiError */ public static getTreeDocumentTypeItem({ - key, - }: { - key?: Array, - }): CancelablePromise> { +key, +}: { +key?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-type/item', @@ -78,18 +78,18 @@ export class DocumentTypeResource { } /** - * @returns PagedDocumentTypeTreeItemModel Success + * @returns PagedDocumentTypeTreeItemResponseModel Success * @throws ApiError */ public static getTreeDocumentTypeRoot({ - skip, - take = 100, - foldersOnly = false, - }: { - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { +skip, +take = 100, +foldersOnly = false, +}: { +skip?: number, +take?: number, +foldersOnly?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HealthCheckResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HealthCheckResource.ts index 1497c8ac6f..d7100791c1 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HealthCheckResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HealthCheckResource.ts @@ -1,11 +1,11 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { HealthCheckActionModel } from '../models/HealthCheckActionModel'; -import type { HealthCheckGroupModel } from '../models/HealthCheckGroupModel'; -import type { HealthCheckGroupWithResultModel } from '../models/HealthCheckGroupWithResultModel'; -import type { HealthCheckResultModel } from '../models/HealthCheckResultModel'; -import type { PagedHealthCheckGroupModelBaseModel } from '../models/PagedHealthCheckGroupModelBaseModel'; +import type { HealthCheckActionRequestModel } from '../models/HealthCheckActionRequestModel'; +import type { HealthCheckGroupPresentationModel } from '../models/HealthCheckGroupPresentationModel'; +import type { HealthCheckGroupWithResultResponseModel } from '../models/HealthCheckGroupWithResultResponseModel'; +import type { HealthCheckResultResponseModel } from '../models/HealthCheckResultResponseModel'; +import type { PagedHealthCheckGroupResponseModel } from '../models/PagedHealthCheckGroupResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -14,16 +14,16 @@ import { request as __request } from '../core/request'; export class HealthCheckResource { /** - * @returns PagedHealthCheckGroupModelBaseModel Success + * @returns PagedHealthCheckGroupResponseModel Success * @throws ApiError */ public static getHealthCheckGroup({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/health-check-group', @@ -39,10 +39,10 @@ export class HealthCheckResource { * @throws ApiError */ public static getHealthCheckGroupByName({ - name, - }: { - name: string, - }): CancelablePromise { +name, +}: { +name: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/health-check-group/{name}', @@ -60,10 +60,10 @@ export class HealthCheckResource { * @throws ApiError */ public static postHealthCheckGroupByNameCheck({ - name, - }: { - name: string, - }): CancelablePromise { +name, +}: { +name: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/health-check-group/{name}/check', @@ -81,10 +81,10 @@ export class HealthCheckResource { * @throws ApiError */ public static postHealthCheckExecuteAction({ - requestBody, - }: { - requestBody?: HealthCheckActionModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: HealthCheckActionRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/health-check/execute-action', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HelpResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HelpResource.ts index 86bf5f9a4f..c9377a09fc 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HelpResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HelpResource.ts @@ -1,7 +1,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PagedHelpPageModel } from '../models/PagedHelpPageModel'; +import type { PagedHelpPageResponseModel } from '../models/PagedHelpPageResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -10,22 +10,22 @@ import { request as __request } from '../core/request'; export class HelpResource { /** - * @returns PagedHelpPageModel Success + * @returns PagedHelpPageResponseModel Success * @throws ApiError */ public static getHelp({ - section, - tree, - skip, - take, - baseUrl = 'https://our.umbraco.com', - }: { - section?: string, - tree?: string, - skip?: number, - take?: number, - baseUrl?: string, - }): CancelablePromise { +section, +tree, +skip, +take, +baseUrl = 'https://our.umbraco.com', +}: { +section?: string, +tree?: string, +skip?: number, +take?: number, +baseUrl?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/help', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/IndexerResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/IndexerResource.ts index e59bb94642..0ba53cc918 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/IndexerResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/IndexerResource.ts @@ -1,9 +1,9 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { IndexModel } from '../models/IndexModel'; +import type { IndexResponseModel } from '../models/IndexResponseModel'; import type { OkResultModel } from '../models/OkResultModel'; -import type { PagedIndexModel } from '../models/PagedIndexModel'; +import type { PagedIndexResponseModel } from '../models/PagedIndexResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -12,16 +12,16 @@ import { request as __request } from '../core/request'; export class IndexerResource { /** - * @returns PagedIndexModel Success + * @returns PagedIndexResponseModel Success * @throws ApiError */ public static getIndexer({ - skip, - take, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/indexer', @@ -37,10 +37,10 @@ export class IndexerResource { * @throws ApiError */ public static getIndexerByIndexName({ - indexName, - }: { - indexName: string, - }): CancelablePromise { +indexName, +}: { +indexName: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/indexer/{indexName}', @@ -58,10 +58,10 @@ export class IndexerResource { * @throws ApiError */ public static postIndexerByIndexNameRebuild({ - indexName, - }: { - indexName: string, - }): CancelablePromise { +indexName, +}: { +indexName: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/indexer/{indexName}/rebuild', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/InstallResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/InstallResource.ts index d5e8ae2949..dcf826bbcf 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/InstallResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/InstallResource.ts @@ -1,9 +1,9 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DatabaseInstallModel } from '../models/DatabaseInstallModel'; -import type { InstallModel } from '../models/InstallModel'; -import type { InstallSettingsModel } from '../models/InstallSettingsModel'; +import type { DatabaseInstallResponseModel } from '../models/DatabaseInstallResponseModel'; +import type { InstallSettingsResponseModel } from '../models/InstallSettingsResponseModel'; +import type { InstallVResponseModel } from '../models/InstallVResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -15,7 +15,7 @@ export class InstallResource { * @returns any Success * @throws ApiError */ - public static getInstallSettings(): CancelablePromise { + public static getInstallSettings(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/install/settings', @@ -31,10 +31,10 @@ export class InstallResource { * @throws ApiError */ public static postInstallSetup({ - requestBody, - }: { - requestBody?: InstallModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: InstallVResponseModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/install/setup', @@ -52,10 +52,10 @@ export class InstallResource { * @throws ApiError */ public static postInstallValidateDatabase({ - requestBody, - }: { - requestBody?: DatabaseInstallModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: DatabaseInstallResponseModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/install/validate-database', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts index b724860487..51967f3fce 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts @@ -1,10 +1,10 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { LanguageCreateModel } from '../models/LanguageCreateModel'; -import type { LanguageModel } from '../models/LanguageModel'; -import type { LanguageUpdateModel } from '../models/LanguageUpdateModel'; -import type { PagedLanguageModel } from '../models/PagedLanguageModel'; +import type { CreateLanguageRequestModel } from '../models/CreateLanguageRequestModel'; +import type { LanguageResponseModel } from '../models/LanguageResponseModel'; +import type { PagedLanguageResponseModel } from '../models/PagedLanguageResponseModel'; +import type { UpdateLanguageRequestModel } from '../models/UpdateLanguageRequestModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -13,16 +13,16 @@ import { request as __request } from '../core/request'; export class LanguageResource { /** - * @returns PagedLanguageModel Success + * @returns PagedLanguageResponseModel Success * @throws ApiError */ public static getLanguage({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/language', @@ -38,10 +38,10 @@ export class LanguageResource { * @throws ApiError */ public static postLanguage({ - requestBody, - }: { - requestBody?: LanguageCreateModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: CreateLanguageRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/language', @@ -60,10 +60,10 @@ export class LanguageResource { * @throws ApiError */ public static getLanguageByIsoCode({ - isoCode, - }: { - isoCode: string, - }): CancelablePromise { +isoCode, +}: { +isoCode: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/language/{isoCode}', @@ -81,10 +81,10 @@ export class LanguageResource { * @throws ApiError */ public static deleteLanguageByIsoCode({ - isoCode, - }: { - isoCode: string, - }): CancelablePromise { +isoCode, +}: { +isoCode: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/language/{isoCode}', @@ -103,12 +103,12 @@ export class LanguageResource { * @throws ApiError */ public static putLanguageByIsoCode({ - isoCode, - requestBody, - }: { - isoCode: string, - requestBody?: LanguageUpdateModel, - }): CancelablePromise { +isoCode, +requestBody, +}: { +isoCode: string, +requestBody?: UpdateLanguageRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/language/{isoCode}', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts index b768fba3a1..ef9b3cbf79 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts @@ -2,13 +2,14 @@ /* tslint:disable */ /* eslint-disable */ import type { DirectionModel } from '../models/DirectionModel'; -import type { LogLevelCountsModel } from '../models/LogLevelCountsModel'; +import type { LogLevelCountsReponseModel } from '../models/LogLevelCountsReponseModel'; import type { LogLevelModel } from '../models/LogLevelModel'; -import type { PagedLoggerModel } from '../models/PagedLoggerModel'; -import type { PagedLogMessageModel } from '../models/PagedLogMessageModel'; -import type { PagedLogTemplateModel } from '../models/PagedLogTemplateModel'; -import type { PagedSavedLogSearchModel } from '../models/PagedSavedLogSearchModel'; -import type { SavedLogSearchModel } from '../models/SavedLogSearchModel'; +import type { PagedLoggerResponseModel } from '../models/PagedLoggerResponseModel'; +import type { PagedLogMessageResponseModel } from '../models/PagedLogMessageResponseModel'; +import type { PagedLogTemplateResponseModel } from '../models/PagedLogTemplateResponseModel'; +import type { PagedSavedLogSearchResponseModel } from '../models/PagedSavedLogSearchResponseModel'; +import type { SavedLogSearchRequestModel } from '../models/SavedLogSearchRequestModel'; +import type { SavedLogSearchResponseModel } from '../models/SavedLogSearchResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -17,16 +18,16 @@ import { request as __request } from '../core/request'; export class LogViewerResource { /** - * @returns PagedLoggerModel Success + * @returns PagedLoggerResponseModel Success * @throws ApiError */ public static getLogViewerLevel({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/level', @@ -42,12 +43,12 @@ export class LogViewerResource { * @throws ApiError */ public static getLogViewerLevelCount({ - startDate, - endDate, - }: { - startDate?: string, - endDate?: string, - }): CancelablePromise { +startDate, +endDate, +}: { +startDate?: string, +endDate?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/level-count', @@ -62,26 +63,26 @@ export class LogViewerResource { } /** - * @returns PagedLogMessageModel Success + * @returns PagedLogMessageResponseModel Success * @throws ApiError */ public static getLogViewerLog({ - skip, - take = 100, - orderDirection, - filterExpression, - logLevel, - startDate, - endDate, - }: { - skip?: number, - take?: number, - orderDirection?: DirectionModel, - filterExpression?: string, - logLevel?: Array, - startDate?: string, - endDate?: string, - }): CancelablePromise { +skip, +take = 100, +orderDirection, +filterExpression, +logLevel, +startDate, +endDate, +}: { +skip?: number, +take?: number, +orderDirection?: DirectionModel, +filterExpression?: string, +logLevel?: Array, +startDate?: string, +endDate?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/log', @@ -98,20 +99,20 @@ export class LogViewerResource { } /** - * @returns PagedLogTemplateModel Success + * @returns PagedLogTemplateResponseModel Success * @throws ApiError */ public static getLogViewerMessageTemplate({ - skip, - take = 100, - startDate, - endDate, - }: { - skip?: number, - take?: number, - startDate?: string, - endDate?: string, - }): CancelablePromise { +skip, +take = 100, +startDate, +endDate, +}: { +skip?: number, +take?: number, +startDate?: string, +endDate?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/message-template', @@ -128,16 +129,16 @@ export class LogViewerResource { } /** - * @returns PagedSavedLogSearchModel Success + * @returns PagedSavedLogSearchResponseModel Success * @throws ApiError */ public static getLogViewerSavedSearch({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/saved-search', @@ -153,10 +154,10 @@ export class LogViewerResource { * @throws ApiError */ public static postLogViewerSavedSearch({ - requestBody, - }: { - requestBody?: SavedLogSearchModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: SavedLogSearchRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/log-viewer/saved-search', @@ -174,10 +175,10 @@ export class LogViewerResource { * @throws ApiError */ public static getLogViewerSavedSearchByName({ - name, - }: { - name: string, - }): CancelablePromise { +name, +}: { +name: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', @@ -195,10 +196,10 @@ export class LogViewerResource { * @throws ApiError */ public static deleteLogViewerSavedSearchByName({ - name, - }: { - name: string, - }): CancelablePromise { +name, +}: { +name: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', @@ -216,12 +217,12 @@ export class LogViewerResource { * @throws ApiError */ public static getLogViewerValidateLogsSize({ - startDate, - endDate, - }: { - startDate?: string, - endDate?: string, - }): CancelablePromise { +startDate, +endDate, +}: { +startDate?: string, +endDate?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/validate-logs-size', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts index 074a7704cb..bd2f3e59d6 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts @@ -1,10 +1,13 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ContentTreeItemModel } from '../models/ContentTreeItemModel'; -import type { DocumentTreeItemModel } from '../models/DocumentTreeItemModel'; -import type { PagedContentTreeItemModel } from '../models/PagedContentTreeItemModel'; -import type { PagedRecycleBinItemModel } from '../models/PagedRecycleBinItemModel'; +import type { ContentTreeItemResponseModel } from '../models/ContentTreeItemResponseModel'; +import type { CreateMediaRequestModel } from '../models/CreateMediaRequestModel'; +import type { DocumentResponseModel } from '../models/DocumentResponseModel'; +import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; +import type { PagedContentTreeItemResponseModel } from '../models/PagedContentTreeItemResponseModel'; +import type { PagedRecycleBinItemResponseModel } from '../models/PagedRecycleBinItemResponseModel'; +import type { UpdateMediaRequestModel } from '../models/UpdateMediaRequestModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -13,18 +16,109 @@ import { request as __request } from '../core/request'; export class MediaResource { /** - * @returns PagedRecycleBinItemModel Success + * @returns string Created + * @throws ApiError + */ + public static postMedia({ +requestBody, +}: { +requestBody?: CreateMediaRequestModel, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/media', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Location', + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getMediaByKey({ +key, +}: { +key: string, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/media/{key}', + path: { + 'key': key, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static deleteMediaByKey({ +key, +}: { +key: string, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/media/{key}', + path: { + 'key': key, + }, + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static putMediaByKey({ +key, +requestBody, +}: { +key: string, +requestBody?: UpdateMediaRequestModel, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/media/{key}', + path: { + 'key': key, + }, + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns PagedRecycleBinItemResponseModel Success * @throws ApiError */ public static getRecycleBinMediaChildren({ - parentKey, - skip, - take = 100, - }: { - parentKey?: string, - skip?: number, - take?: number, - }): CancelablePromise { +parentKey, +skip, +take = 100, +}: { +parentKey?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/recycle-bin/media/children', @@ -40,16 +134,16 @@ export class MediaResource { } /** - * @returns PagedRecycleBinItemModel Success + * @returns PagedRecycleBinItemResponseModel Success * @throws ApiError */ public static getRecycleBinMediaRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/recycle-bin/media/root', @@ -64,20 +158,20 @@ export class MediaResource { } /** - * @returns PagedContentTreeItemModel Success + * @returns PagedContentTreeItemResponseModel Success * @throws ApiError */ public static getTreeMediaChildren({ - parentKey, - skip, - take = 100, - dataTypeKey, - }: { - parentKey?: string, - skip?: number, - take?: number, - dataTypeKey?: string, - }): CancelablePromise { +parentKey, +skip, +take = 100, +dataTypeKey, +}: { +parentKey?: string, +skip?: number, +take?: number, +dataTypeKey?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media/children', @@ -95,12 +189,12 @@ export class MediaResource { * @throws ApiError */ public static getTreeMediaItem({ - key, - dataTypeKey, - }: { - key?: Array, - dataTypeKey?: string, - }): CancelablePromise> { +key, +dataTypeKey, +}: { +key?: Array, +dataTypeKey?: string, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media/item', @@ -112,18 +206,18 @@ export class MediaResource { } /** - * @returns PagedContentTreeItemModel Success + * @returns PagedContentTreeItemResponseModel Success * @throws ApiError */ public static getTreeMediaRoot({ - skip, - take = 100, - dataTypeKey, - }: { - skip?: number, - take?: number, - dataTypeKey?: string, - }): CancelablePromise { +skip, +take = 100, +dataTypeKey, +}: { +skip?: number, +take?: number, +dataTypeKey?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts index 3f4b9b1eed..e8cd962868 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts @@ -1,9 +1,10 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DocumentTypeTreeItemModel } from '../models/DocumentTypeTreeItemModel'; -import type { FolderTreeItemModel } from '../models/FolderTreeItemModel'; -import type { PagedFolderTreeItemModel } from '../models/PagedFolderTreeItemModel'; +import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; +import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; +import type { MediaTypeResponseModel } from '../models/MediaTypeResponseModel'; +import type { PagedFolderTreeItemResponseModel } from '../models/PagedFolderTreeItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -12,20 +13,41 @@ import { request as __request } from '../core/request'; export class MediaTypeResource { /** - * @returns PagedFolderTreeItemModel Success + * @returns any Success + * @throws ApiError + */ + public static getMediaTypeByKey({ +key, +}: { +key: string, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/media-type/{key}', + path: { + 'key': key, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns PagedFolderTreeItemResponseModel Success * @throws ApiError */ public static getTreeMediaTypeChildren({ - parentKey, - skip, - take = 100, - foldersOnly = false, - }: { - parentKey?: string, - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { +parentKey, +skip, +take = 100, +foldersOnly = false, +}: { +parentKey?: string, +skip?: number, +take?: number, +foldersOnly?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media-type/children', @@ -43,10 +65,10 @@ export class MediaTypeResource { * @throws ApiError */ public static getTreeMediaTypeItem({ - key, - }: { - key?: Array, - }): CancelablePromise> { +key, +}: { +key?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media-type/item', @@ -57,18 +79,18 @@ export class MediaTypeResource { } /** - * @returns PagedFolderTreeItemModel Success + * @returns PagedFolderTreeItemResponseModel Success * @throws ApiError */ public static getTreeMediaTypeRoot({ - skip, - take = 100, - foldersOnly = false, - }: { - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { +skip, +take = 100, +foldersOnly = false, +}: { +skip?: number, +take?: number, +foldersOnly?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts index 0229bafb93..d0845c8968 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts @@ -1,13 +1,13 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ContentTreeItemModel } from '../models/ContentTreeItemModel'; -import type { DocumentBlueprintTreeItemModel } from '../models/DocumentBlueprintTreeItemModel'; -import type { DocumentTreeItemModel } from '../models/DocumentTreeItemModel'; -import type { DocumentTypeTreeItemModel } from '../models/DocumentTypeTreeItemModel'; -import type { EntityTreeItemModel } from '../models/EntityTreeItemModel'; -import type { FolderTreeItemModel } from '../models/FolderTreeItemModel'; -import type { PagedEntityTreeItemModel } from '../models/PagedEntityTreeItemModel'; +import type { ContentTreeItemResponseModel } from '../models/ContentTreeItemResponseModel'; +import type { DocumentBlueprintTreeItemResponseModel } from '../models/DocumentBlueprintTreeItemResponseModel'; +import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; +import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; +import type { EntityTreeItemResponseModel } from '../models/EntityTreeItemResponseModel'; +import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; +import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -20,10 +20,10 @@ export class MemberGroupResource { * @throws ApiError */ public static getTreeMemberGroupItem({ - key, - }: { - key?: Array, - }): CancelablePromise> { +key, +}: { +key?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/member-group/item', @@ -34,16 +34,16 @@ export class MemberGroupResource { } /** - * @returns PagedEntityTreeItemModel Success + * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError */ public static getTreeMemberGroupRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/member-group/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts index c0bda15f8a..3336953d5a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts @@ -1,13 +1,13 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ContentTreeItemModel } from '../models/ContentTreeItemModel'; -import type { DocumentBlueprintTreeItemModel } from '../models/DocumentBlueprintTreeItemModel'; -import type { DocumentTreeItemModel } from '../models/DocumentTreeItemModel'; -import type { DocumentTypeTreeItemModel } from '../models/DocumentTypeTreeItemModel'; -import type { EntityTreeItemModel } from '../models/EntityTreeItemModel'; -import type { FolderTreeItemModel } from '../models/FolderTreeItemModel'; -import type { PagedEntityTreeItemModel } from '../models/PagedEntityTreeItemModel'; +import type { ContentTreeItemResponseModel } from '../models/ContentTreeItemResponseModel'; +import type { DocumentBlueprintTreeItemResponseModel } from '../models/DocumentBlueprintTreeItemResponseModel'; +import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; +import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; +import type { EntityTreeItemResponseModel } from '../models/EntityTreeItemResponseModel'; +import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; +import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -20,10 +20,10 @@ export class MemberTypeResource { * @throws ApiError */ public static getTreeMemberTypeItem({ - key, - }: { - key?: Array, - }): CancelablePromise> { +key, +}: { +key?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/member-type/item', @@ -34,16 +34,16 @@ export class MemberTypeResource { } /** - * @returns PagedEntityTreeItemModel Success + * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError */ public static getTreeMemberTypeRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/member-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ModelsBuilderResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ModelsBuilderResource.ts index 2d078b6c4c..de6f0498bc 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ModelsBuilderResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ModelsBuilderResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ModelsBuilderModel } from '../models/ModelsBuilderModel'; -import type { OutOfDateStatusModel } from '../models/OutOfDateStatusModel'; +import type { ModelsBuilderResponseModel } from '../models/ModelsBuilderResponseModel'; +import type { OutOfDateStatusResponseModel } from '../models/OutOfDateStatusResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -28,7 +28,7 @@ export class ModelsBuilderResource { * @returns any Success * @throws ApiError */ - public static getModelsBuilderDashboard(): CancelablePromise { + public static getModelsBuilderDashboard(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/models-builder/dashboard', @@ -39,7 +39,7 @@ export class ModelsBuilderResource { * @returns any Success * @throws ApiError */ - public static getModelsBuilderStatus(): CancelablePromise { + public static getModelsBuilderStatus(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/models-builder/status', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ObjectTypesResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ObjectTypesResource.ts new file mode 100644 index 0000000000..c87823f5aa --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ObjectTypesResource.ts @@ -0,0 +1,33 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { PagedObjectTypeResponseModel } from '../models/PagedObjectTypeResponseModel'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import { OpenAPI } from '../core/OpenAPI'; +import { request as __request } from '../core/request'; + +export class ObjectTypesResource { + + /** + * @returns PagedObjectTypeResponseModel Success + * @throws ApiError + */ + public static getObjectTypes({ +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/object-types', + query: { + 'skip': skip, + 'take': take, + }, + }); + } + +} diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PackageResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PackageResource.ts index 4af66aa239..d33c63d582 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PackageResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PackageResource.ts @@ -1,12 +1,12 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PackageCreateModel } from '../models/PackageCreateModel'; -import type { PackageDefinitionModel } from '../models/PackageDefinitionModel'; -import type { PackageManifestModel } from '../models/PackageManifestModel'; -import type { PackageUpdateModel } from '../models/PackageUpdateModel'; -import type { PagedPackageDefinitionModel } from '../models/PagedPackageDefinitionModel'; -import type { PagedPackageMigrationStatusModel } from '../models/PagedPackageMigrationStatusModel'; +import type { CreatePackageRequestModel } from '../models/CreatePackageRequestModel'; +import type { PackageDefinitionResponseModel } from '../models/PackageDefinitionResponseModel'; +import type { PackageManifestResponseModel } from '../models/PackageManifestResponseModel'; +import type { PagedPackageDefinitionResponseModel } from '../models/PagedPackageDefinitionResponseModel'; +import type { PagedPackageMigrationStatusResponseModel } from '../models/PagedPackageMigrationStatusResponseModel'; +import type { UpdatePackageRequestModel } from '../models/UpdatePackageRequestModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -19,10 +19,10 @@ export class PackageResource { * @throws ApiError */ public static postPackageByNameRunMigration({ - name, - }: { - name: string, - }): CancelablePromise { +name, +}: { +name: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/package/{name}/run-migration', @@ -37,16 +37,16 @@ export class PackageResource { } /** - * @returns PagedPackageDefinitionModel Success + * @returns PagedPackageDefinitionResponseModel Success * @throws ApiError */ public static getPackageCreated({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/package/created', @@ -62,10 +62,10 @@ export class PackageResource { * @throws ApiError */ public static postPackageCreated({ - requestBody, - }: { - requestBody?: PackageCreateModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: CreatePackageRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/package/created', @@ -84,10 +84,10 @@ export class PackageResource { * @throws ApiError */ public static getPackageCreatedByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/package/created/{key}', @@ -105,10 +105,10 @@ export class PackageResource { * @throws ApiError */ public static deletePackageCreatedByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/package/created/{key}', @@ -126,12 +126,12 @@ export class PackageResource { * @throws ApiError */ public static putPackageCreatedByKey({ - key, - requestBody, - }: { - key: string, - requestBody?: PackageUpdateModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: UpdatePackageRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/package/created/{key}', @@ -151,10 +151,10 @@ export class PackageResource { * @throws ApiError */ public static getPackageCreatedByKeyDownload({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/package/created/{key}/download', @@ -171,7 +171,7 @@ export class PackageResource { * @returns any Success * @throws ApiError */ - public static getPackageManifest(): CancelablePromise> { + public static getPackageManifest(): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/package/manifest', @@ -179,16 +179,16 @@ export class PackageResource { } /** - * @returns PagedPackageMigrationStatusModel Success + * @returns PagedPackageMigrationStatusResponseModel Success * @throws ApiError */ public static getPackageMigrationStatus({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/package/migration-status', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts index 4ec4cce563..f249b42346 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemTreeItemModel } from '../models/FileSystemTreeItemModel'; -import type { PagedFileSystemTreeItemModel } from '../models/PagedFileSystemTreeItemModel'; +import type { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; +import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -11,18 +11,18 @@ import { request as __request } from '../core/request'; export class PartialViewResource { /** - * @returns PagedFileSystemTreeItemModel Success + * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError */ public static getTreePartialViewChildren({ - path, - skip, - take = 100, - }: { - path?: string, - skip?: number, - take?: number, - }): CancelablePromise { +path, +skip, +take = 100, +}: { +path?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/partial-view/children', @@ -39,10 +39,10 @@ export class PartialViewResource { * @throws ApiError */ public static getTreePartialViewItem({ - path, - }: { - path?: Array, - }): CancelablePromise> { +path, +}: { +path?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/partial-view/item', @@ -53,16 +53,16 @@ export class PartialViewResource { } /** - * @returns PagedFileSystemTreeItemModel Success + * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError */ public static getTreePartialViewRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/partial-view/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ProfilingResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ProfilingResource.ts index c5d65d6bdc..ddd5d31988 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ProfilingResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ProfilingResource.ts @@ -1,7 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ProfilingStatusModel } from '../models/ProfilingStatusModel'; +import type { ProfilingStatusRequestModel } from '../models/ProfilingStatusRequestModel'; +import type { ProfilingStatusResponseModel } from '../models/ProfilingStatusResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -13,7 +14,7 @@ export class ProfilingResource { * @returns any Success * @throws ApiError */ - public static getProfilingStatus(): CancelablePromise { + public static getProfilingStatus(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/profiling/status', @@ -25,10 +26,10 @@ export class ProfilingResource { * @throws ApiError */ public static putProfilingStatus({ - requestBody, - }: { - requestBody?: ProfilingStatusModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: ProfilingStatusRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/profiling/status', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RedirectManagementResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RedirectManagementResource.ts index aa15ce40ac..2c82d24fcd 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RedirectManagementResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RedirectManagementResource.ts @@ -1,9 +1,9 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PagedRedirectUrlModel } from '../models/PagedRedirectUrlModel'; +import type { PagedRedirectUrlResponseModel } from '../models/PagedRedirectUrlResponseModel'; import type { RedirectStatusModel } from '../models/RedirectStatusModel'; -import type { RedirectUrlStatusModel } from '../models/RedirectUrlStatusModel'; +import type { RedirectUrlStatusResponseModel } from '../models/RedirectUrlStatusResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -12,18 +12,18 @@ import { request as __request } from '../core/request'; export class RedirectManagementResource { /** - * @returns PagedRedirectUrlModel Success + * @returns PagedRedirectUrlResponseModel Success * @throws ApiError */ public static getRedirectManagement({ - filter, - skip, - take, - }: { - filter?: string, - skip?: number, - take?: number, - }): CancelablePromise { +filter, +skip, +take, +}: { +filter?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/redirect-management', @@ -39,18 +39,18 @@ export class RedirectManagementResource { } /** - * @returns PagedRedirectUrlModel Success + * @returns PagedRedirectUrlResponseModel Success * @throws ApiError */ public static getRedirectManagementByKey({ - key, - skip, - take, - }: { - key: string, - skip?: number, - take?: number, - }): CancelablePromise { +key, +skip, +take, +}: { +key: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/redirect-management/{key}', @@ -69,10 +69,10 @@ export class RedirectManagementResource { * @throws ApiError */ public static deleteRedirectManagementByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/redirect-management/{key}', @@ -86,7 +86,7 @@ export class RedirectManagementResource { * @returns any Success * @throws ApiError */ - public static getRedirectManagementStatus(): CancelablePromise { + public static getRedirectManagementStatus(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/redirect-management/status', @@ -98,10 +98,10 @@ export class RedirectManagementResource { * @throws ApiError */ public static postRedirectManagementStatus({ - status, - }: { - status?: RedirectStatusModel, - }): CancelablePromise { +status, +}: { +status?: RedirectStatusModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/redirect-management/status', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts index 594e05cf7a..69d6c06860 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PagedRelationModel } from '../models/PagedRelationModel'; -import type { RelationModel } from '../models/RelationModel'; +import type { PagedRelationResponseModel } from '../models/PagedRelationResponseModel'; +import type { RelationResponseModel } from '../models/RelationResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -15,10 +15,10 @@ export class RelationResource { * @throws ApiError */ public static getRelationById({ - id, - }: { - id: number, - }): CancelablePromise { +id, +}: { +id: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/relation/{id}', @@ -32,20 +32,20 @@ export class RelationResource { } /** - * @returns PagedRelationModel Success + * @returns PagedRelationResponseModel Success * @throws ApiError */ public static getRelationChildRelationByChildId({ - childId, - skip, - take, - relationTypeAlias = '', - }: { - childId: number, - skip?: number, - take?: number, - relationTypeAlias?: string, - }): CancelablePromise { +childId, +skip, +take, +relationTypeAlias = '', +}: { +childId: number, +skip?: number, +take?: number, +relationTypeAlias?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/relation/child-relation/{childId}', @@ -61,18 +61,18 @@ export class RelationResource { } /** - * @returns PagedRelationModel Success + * @returns PagedRelationResponseModel Success * @throws ApiError */ public static getRelationTypeByKey({ - key, - skip, - take = 100, - }: { - key: string, - skip?: number, - take?: number, - }): CancelablePromise { +key, +skip, +take = 100, +}: { +key: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/relation/type/{key}', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts index f449ec9485..1c9c7bb266 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts @@ -2,9 +2,9 @@ /* tslint:disable */ /* eslint-disable */ import type { CreateRelationTypeRequestModel } from '../models/CreateRelationTypeRequestModel'; -import type { DocumentTypeTreeItemModel } from '../models/DocumentTypeTreeItemModel'; -import type { FolderTreeItemModel } from '../models/FolderTreeItemModel'; -import type { PagedEntityTreeItemModel } from '../models/PagedEntityTreeItemModel'; +import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; +import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; +import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; import type { RelationTypeResponseModel } from '../models/RelationTypeResponseModel'; import type { UpdateRelationTypeRequestModel } from '../models/UpdateRelationTypeRequestModel'; @@ -19,10 +19,10 @@ export class RelationTypeResource { * @throws ApiError */ public static postRelationType({ - requestBody, - }: { - requestBody?: CreateRelationTypeRequestModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: CreateRelationTypeRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/relation-type', @@ -40,10 +40,10 @@ export class RelationTypeResource { * @throws ApiError */ public static getRelationTypeByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/relation-type/{key}', @@ -61,10 +61,10 @@ export class RelationTypeResource { * @throws ApiError */ public static deleteRelationTypeByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/relation-type/{key}', @@ -82,12 +82,12 @@ export class RelationTypeResource { * @throws ApiError */ public static putRelationTypeByKey({ - key, - requestBody, - }: { - key: string, - requestBody?: UpdateRelationTypeRequestModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: UpdateRelationTypeRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/relation-type/{key}', @@ -108,10 +108,10 @@ export class RelationTypeResource { * @throws ApiError */ public static getTreeRelationTypeItem({ - key, - }: { - key?: Array, - }): CancelablePromise> { +key, +}: { +key?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/relation-type/item', @@ -122,16 +122,16 @@ export class RelationTypeResource { } /** - * @returns PagedEntityTreeItemModel Success + * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError */ public static getTreeRelationTypeRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/relation-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts index 0b36985d82..db3cb6e256 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemTreeItemModel } from '../models/FileSystemTreeItemModel'; -import type { PagedFileSystemTreeItemModel } from '../models/PagedFileSystemTreeItemModel'; +import type { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; +import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -11,18 +11,18 @@ import { request as __request } from '../core/request'; export class ScriptResource { /** - * @returns PagedFileSystemTreeItemModel Success + * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError */ public static getTreeScriptChildren({ - path, - skip, - take = 100, - }: { - path?: string, - skip?: number, - take?: number, - }): CancelablePromise { +path, +skip, +take = 100, +}: { +path?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/script/children', @@ -39,10 +39,10 @@ export class ScriptResource { * @throws ApiError */ public static getTreeScriptItem({ - path, - }: { - path?: Array, - }): CancelablePromise> { +path, +}: { +path?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/script/item', @@ -53,16 +53,16 @@ export class ScriptResource { } /** - * @returns PagedFileSystemTreeItemModel Success + * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError */ public static getTreeScriptRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/script/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/SearcherResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/SearcherResource.ts index 7792b73095..b284454529 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/SearcherResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/SearcherResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PagedSearcherModel } from '../models/PagedSearcherModel'; -import type { PagedSearchResultModel } from '../models/PagedSearchResultModel'; +import type { PagedSearcherResponseModel } from '../models/PagedSearcherResponseModel'; +import type { PagedSearchResultResponseModel } from '../models/PagedSearchResultResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -11,16 +11,16 @@ import { request as __request } from '../core/request'; export class SearcherResource { /** - * @returns PagedSearcherModel Success + * @returns PagedSearcherResponseModel Success * @throws ApiError */ public static getSearcher({ - skip, - take, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/searcher', @@ -32,20 +32,20 @@ export class SearcherResource { } /** - * @returns PagedSearchResultModel Success + * @returns PagedSearchResultResponseModel Success * @throws ApiError */ public static getSearcherBySearcherNameQuery({ - searcherName, - term, - skip, - take, - }: { - searcherName: string, - term?: string, - skip?: number, - take?: number, - }): CancelablePromise { +searcherName, +term, +skip, +take, +}: { +searcherName: string, +term?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/searcher/{searcherName}/query', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ServerResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ServerResource.ts index a2351ca654..364c15ac2a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ServerResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ServerResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ServerStatusModel } from '../models/ServerStatusModel'; -import type { VersionModel } from '../models/VersionModel'; +import type { ServerStatusResponseModel } from '../models/ServerStatusResponseModel'; +import type { VersionResponseModel } from '../models/VersionResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -14,7 +14,7 @@ export class ServerResource { * @returns any Success * @throws ApiError */ - public static getServerStatus(): CancelablePromise { + public static getServerStatus(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/server/status', @@ -28,7 +28,7 @@ export class ServerResource { * @returns any Success * @throws ApiError */ - public static getServerVersion(): CancelablePromise { + public static getServerVersion(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/server/version', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts index 2ed706ee95..240af80ee8 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemTreeItemModel } from '../models/FileSystemTreeItemModel'; -import type { PagedFileSystemTreeItemModel } from '../models/PagedFileSystemTreeItemModel'; +import type { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; +import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -11,18 +11,18 @@ import { request as __request } from '../core/request'; export class StaticFileResource { /** - * @returns PagedFileSystemTreeItemModel Success + * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError */ public static getTreeStaticFileChildren({ - path, - skip, - take = 100, - }: { - path?: string, - skip?: number, - take?: number, - }): CancelablePromise { +path, +skip, +take = 100, +}: { +path?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/static-file/children', @@ -39,10 +39,10 @@ export class StaticFileResource { * @throws ApiError */ public static getTreeStaticFileItem({ - path, - }: { - path?: Array, - }): CancelablePromise> { +path, +}: { +path?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/static-file/item', @@ -53,16 +53,16 @@ export class StaticFileResource { } /** - * @returns PagedFileSystemTreeItemModel Success + * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError */ public static getTreeStaticFileRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/static-file/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts index 1e48b59a58..b504ba6aab 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemTreeItemModel } from '../models/FileSystemTreeItemModel'; -import type { PagedFileSystemTreeItemModel } from '../models/PagedFileSystemTreeItemModel'; +import type { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; +import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -11,18 +11,18 @@ import { request as __request } from '../core/request'; export class StylesheetResource { /** - * @returns PagedFileSystemTreeItemModel Success + * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError */ public static getTreeStylesheetChildren({ - path, - skip, - take = 100, - }: { - path?: string, - skip?: number, - take?: number, - }): CancelablePromise { +path, +skip, +take = 100, +}: { +path?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/stylesheet/children', @@ -39,10 +39,10 @@ export class StylesheetResource { * @throws ApiError */ public static getTreeStylesheetItem({ - path, - }: { - path?: Array, - }): CancelablePromise> { +path, +}: { +path?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/stylesheet/item', @@ -53,16 +53,16 @@ export class StylesheetResource { } /** - * @returns PagedFileSystemTreeItemModel Success + * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError */ public static getTreeStylesheetRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/stylesheet/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TelemetryResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TelemetryResource.ts index 2c27fcfa93..289f0f8e46 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TelemetryResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TelemetryResource.ts @@ -1,8 +1,9 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PagedTelemetryModel } from '../models/PagedTelemetryModel'; -import type { TelemetryModel } from '../models/TelemetryModel'; +import type { PagedTelemetryResponseModel } from '../models/PagedTelemetryResponseModel'; +import type { TelemetryRequestModel } from '../models/TelemetryRequestModel'; +import type { TelemetryResponseModel } from '../models/TelemetryResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -11,16 +12,16 @@ import { request as __request } from '../core/request'; export class TelemetryResource { /** - * @returns PagedTelemetryModel Success + * @returns PagedTelemetryResponseModel Success * @throws ApiError */ public static getTelemetry({ - skip, - take, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/telemetry', @@ -35,7 +36,7 @@ export class TelemetryResource { * @returns any Success * @throws ApiError */ - public static getTelemetryLevel(): CancelablePromise { + public static getTelemetryLevel(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/telemetry/level', @@ -47,10 +48,10 @@ export class TelemetryResource { * @throws ApiError */ public static postTelemetryLevel({ - requestBody, - }: { - requestBody?: TelemetryModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: TelemetryRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/telemetry/level', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts index 32a9e49aae..d5133dc6a7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts @@ -1,20 +1,20 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ContentTreeItemModel } from '../models/ContentTreeItemModel'; -import type { DocumentBlueprintTreeItemModel } from '../models/DocumentBlueprintTreeItemModel'; -import type { DocumentTreeItemModel } from '../models/DocumentTreeItemModel'; -import type { DocumentTypeTreeItemModel } from '../models/DocumentTypeTreeItemModel'; -import type { EntityTreeItemModel } from '../models/EntityTreeItemModel'; -import type { FolderTreeItemModel } from '../models/FolderTreeItemModel'; -import type { PagedEntityTreeItemModel } from '../models/PagedEntityTreeItemModel'; -import type { TemplateCreateModel } from '../models/TemplateCreateModel'; -import type { TemplateModel } from '../models/TemplateModel'; +import type { ContentTreeItemResponseModel } from '../models/ContentTreeItemResponseModel'; +import type { CreateTemplateRequestModel } from '../models/CreateTemplateRequestModel'; +import type { DocumentBlueprintTreeItemResponseModel } from '../models/DocumentBlueprintTreeItemResponseModel'; +import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; +import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; +import type { EntityTreeItemResponseModel } from '../models/EntityTreeItemResponseModel'; +import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; +import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; import type { TemplateQueryExecuteModel } from '../models/TemplateQueryExecuteModel'; -import type { TemplateQueryResultModel } from '../models/TemplateQueryResultModel'; -import type { TemplateQuerySettingsModel } from '../models/TemplateQuerySettingsModel'; -import type { TemplateScaffoldModel } from '../models/TemplateScaffoldModel'; -import type { TemplateUpdateModel } from '../models/TemplateUpdateModel'; +import type { TemplateQueryResultResponseModel } from '../models/TemplateQueryResultResponseModel'; +import type { TemplateQuerySettingsResponseModel } from '../models/TemplateQuerySettingsResponseModel'; +import type { TemplateResponseModel } from '../models/TemplateResponseModel'; +import type { TemplateScaffoldResponseModel } from '../models/TemplateScaffoldResponseModel'; +import type { UpdateTemplateRequestModel } from '../models/UpdateTemplateRequestModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -27,10 +27,10 @@ export class TemplateResource { * @throws ApiError */ public static postTemplate({ - requestBody, - }: { - requestBody?: TemplateCreateModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: CreateTemplateRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/template', @@ -49,10 +49,10 @@ export class TemplateResource { * @throws ApiError */ public static getTemplateByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/template/{key}', @@ -70,10 +70,10 @@ export class TemplateResource { * @throws ApiError */ public static deleteTemplateByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/template/{key}', @@ -92,12 +92,12 @@ export class TemplateResource { * @throws ApiError */ public static putTemplateByKey({ - key, - requestBody, - }: { - key: string, - requestBody?: TemplateUpdateModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: UpdateTemplateRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/template/{key}', @@ -118,10 +118,10 @@ export class TemplateResource { * @throws ApiError */ public static postTemplateQueryExecute({ - requestBody, - }: { - requestBody?: TemplateQueryExecuteModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: TemplateQueryExecuteModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/template/query/execute', @@ -134,7 +134,7 @@ export class TemplateResource { * @returns any Success * @throws ApiError */ - public static getTemplateQuerySettings(): CancelablePromise { + public static getTemplateQuerySettings(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/template/query/settings', @@ -145,7 +145,7 @@ export class TemplateResource { * @returns any Success * @throws ApiError */ - public static getTemplateScaffold(): CancelablePromise { + public static getTemplateScaffold(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/template/scaffold', @@ -156,18 +156,18 @@ export class TemplateResource { } /** - * @returns PagedEntityTreeItemModel Success + * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError */ public static getTreeTemplateChildren({ - parentKey, - skip, - take = 100, - }: { - parentKey?: string, - skip?: number, - take?: number, - }): CancelablePromise { +parentKey, +skip, +take = 100, +}: { +parentKey?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/template/children', @@ -184,10 +184,10 @@ export class TemplateResource { * @throws ApiError */ public static getTreeTemplateItem({ - key, - }: { - key?: Array, - }): CancelablePromise> { +key, +}: { +key?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/template/item', @@ -198,16 +198,16 @@ export class TemplateResource { } /** - * @returns PagedEntityTreeItemModel Success + * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError */ public static getTreeTemplateRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/template/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TrackedReferenceResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TrackedReferenceResource.ts index e5637971a9..3c1a145658 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TrackedReferenceResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TrackedReferenceResource.ts @@ -1,7 +1,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PagedRelationItemModel } from '../models/PagedRelationItemModel'; +import type { PagedRelationItemResponseModel } from '../models/PagedRelationItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -10,20 +10,20 @@ import { request as __request } from '../core/request'; export class TrackedReferenceResource { /** - * @returns PagedRelationItemModel Success + * @returns PagedRelationItemResponseModel Success * @throws ApiError */ public static getTrackedReferenceByKey({ - key, - skip, - take = 20, - filterMustBeIsDependency = false, - }: { - key: string, - skip?: number, - take?: number, - filterMustBeIsDependency?: boolean, - }): CancelablePromise { +key, +skip, +take = 20, +filterMustBeIsDependency = false, +}: { +key: string, +skip?: number, +take?: number, +filterMustBeIsDependency?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tracked-reference/{key}', @@ -39,20 +39,20 @@ export class TrackedReferenceResource { } /** - * @returns PagedRelationItemModel Success + * @returns PagedRelationItemResponseModel Success * @throws ApiError */ public static getTrackedReferenceDescendantsByParentKey({ - parentKey, - skip, - take, - filterMustBeIsDependency = true, - }: { - parentKey: string, - skip?: number, - take?: number, - filterMustBeIsDependency?: boolean, - }): CancelablePromise { +parentKey, +skip, +take, +filterMustBeIsDependency = true, +}: { +parentKey: string, +skip?: number, +take?: number, +filterMustBeIsDependency?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tracked-reference/descendants/{parentKey}', @@ -68,20 +68,20 @@ export class TrackedReferenceResource { } /** - * @returns PagedRelationItemModel Success + * @returns PagedRelationItemResponseModel Success * @throws ApiError */ public static getTrackedReferenceItem({ - key, - skip, - take = 20, - filterMustBeIsDependency = true, - }: { - key?: Array, - skip?: number, - take?: number, - filterMustBeIsDependency?: boolean, - }): CancelablePromise { +key, +skip, +take = 20, +filterMustBeIsDependency = true, +}: { +key?: Array, +skip?: number, +take?: number, +filterMustBeIsDependency?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tracked-reference/item', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UpgradeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UpgradeResource.ts index 472f46ea16..9ea941f41d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UpgradeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UpgradeResource.ts @@ -1,7 +1,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { UpgradeSettingsModel } from '../models/UpgradeSettingsModel'; +import type { UpgradeSettingsResponseModel } from '../models/UpgradeSettingsResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -28,7 +28,7 @@ export class UpgradeResource { * @returns any Success * @throws ApiError */ - public static getUpgradeSettings(): CancelablePromise { + public static getUpgradeSettings(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/upgrade/settings', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UserGroupsResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UserGroupsResource.ts index eefa1fcb91..4c9f40614a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UserGroupsResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UserGroupsResource.ts @@ -1,10 +1,10 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PagedUserGroupModel } from '../models/PagedUserGroupModel'; -import type { UserGroupModel } from '../models/UserGroupModel'; -import type { UserGroupSaveModel } from '../models/UserGroupSaveModel'; -import type { UserGroupUpdateModel } from '../models/UserGroupUpdateModel'; +import type { PagedUserGroupPresentationModel } from '../models/PagedUserGroupPresentationModel'; +import type { SaveUserGroupRequestModel } from '../models/SaveUserGroupRequestModel'; +import type { UpdateUserGroupRequestModel } from '../models/UpdateUserGroupRequestModel'; +import type { UserGroupPresentationModel } from '../models/UserGroupPresentationModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -17,10 +17,10 @@ export class UserGroupsResource { * @throws ApiError */ public static postUserGroups({ - requestBody, - }: { - requestBody?: UserGroupSaveModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: SaveUserGroupRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/user-groups', @@ -34,16 +34,16 @@ export class UserGroupsResource { } /** - * @returns PagedUserGroupModel Success + * @returns PagedUserGroupPresentationModel Success * @throws ApiError */ public static getUserGroups({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/user-groups', @@ -59,10 +59,10 @@ export class UserGroupsResource { * @throws ApiError */ public static getUserGroupsByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/user-groups/{key}', @@ -80,10 +80,10 @@ export class UserGroupsResource { * @throws ApiError */ public static deleteUserGroupsByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/user-groups/{key}', @@ -101,12 +101,12 @@ export class UserGroupsResource { * @throws ApiError */ public static putUserGroupsByKey({ - key, - requestBody, - }: { - key: string, - requestBody?: UserGroupUpdateModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: UpdateUserGroupRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/user-groups/{key}', diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/entity-action/rollup.config.js new file mode 100644 index 0000000000..35421e5ce7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/rollup.config.js @@ -0,0 +1,3 @@ +import config from '../../utils/rollup.config.js'; + +export default config; diff --git a/src/Umbraco.Web.UI.Client/libs/events/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/events/rollup.config.js new file mode 100644 index 0000000000..35421e5ce7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/events/rollup.config.js @@ -0,0 +1,3 @@ +import config from '../../utils/rollup.config.js'; + +export default config; diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/extensions-api/rollup.config.js new file mode 100644 index 0000000000..35421e5ce7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/rollup.config.js @@ -0,0 +1,3 @@ +import config from '../../utils/rollup.config.js'; + +export default config; diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/umb-lifecycle.interface.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/umb-lifecycle.interface.ts index c90a871320..f602a5d9cc 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/umb-lifecycle.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/umb-lifecycle.interface.ts @@ -1,9 +1,11 @@ -import type { UmbExtensionRegistry } from "./registry/extension.registry"; -import type { UmbControllerHostInterface } from "@umbraco-cms/controller"; +import type { UmbExtensionRegistry } from './registry/extension.registry'; +import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; + +export type UmbEntrypointOnInit = (host: UmbControllerHostInterface, extensionRegistry: UmbExtensionRegistry) => void; /** * Interface containing supported life-cycle functions for ESModule entrypoints */ export interface UmbEntrypointModule { - onInit: (host: UmbControllerHostInterface, extensionRegistry: UmbExtensionRegistry) => void + onInit: UmbEntrypointOnInit; } diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/collection-view.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/collection-view.models.ts index 7a5770e3fd..2eb599c1b8 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/collection-view.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/collection-view.models.ts @@ -1,6 +1,6 @@ -import type { ManifestElement } from './models'; +import type { ManifestElement, ManifestWithConditions } from './models'; -export interface ManifestCollectionView extends ManifestElement { +export interface ManifestCollectionView extends ManifestElement, ManifestWithConditions { type: 'collectionView'; meta: MetaCollectionView; } @@ -8,6 +8,9 @@ export interface ManifestCollectionView extends ManifestElement { export interface MetaCollectionView { label: string; icon: string; - entityType: string; pathName: string; } + +export interface ConditionsCollectionView { + entityType: string; +} diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard-collection.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard-collection.models.ts index b41add8d85..3255547b42 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard-collection.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard-collection.models.ts @@ -3,12 +3,16 @@ import type { ManifestBase } from './models'; export interface ManifestDashboardCollection extends ManifestBase { type: 'dashboardCollection'; meta: MetaDashboardCollection; + conditions: ConditionsDashboardCollection; } export interface MetaDashboardCollection { - sections: string[]; pathname: string; label?: string; - entityType: string; repositoryAlias: string; } + +export interface ConditionsDashboardCollection { + sections: string[]; + entityType: string; +} diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard.models.ts index 70bb0d379d..cf40a2748c 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard.models.ts @@ -1,12 +1,15 @@ -import type { ManifestElement } from './models'; +import type { ManifestElement, ManifestWithConditions } from './models'; -export interface ManifestDashboard extends ManifestElement { +export interface ManifestDashboard extends ManifestElement, ManifestWithConditions { type: 'dashboard'; meta: MetaDashboard; } export interface MetaDashboard { - sections: string[]; pathname: string; label?: string; } + +export interface ConditionsDashboard { + sections: string[]; +} diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-action.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-action.models.ts index ddc7e5363b..dbea8f833f 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-action.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-action.models.ts @@ -3,12 +3,16 @@ import type { ManifestElement } from './models'; export interface ManifestEntityAction extends ManifestElement { type: 'entityAction'; meta: MetaEntityAction; + conditions: ConditionsEntityAction; } export interface MetaEntityAction { icon?: string; label: string; - entityType: string; api: any; // create interface repositoryAlias: string; } + +export interface ConditionsEntityAction { + entityType: string; +} diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-bulk-action.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-bulk-action.models.ts index 51db3ce5fe..b7bd23a997 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-bulk-action.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-bulk-action.models.ts @@ -1,13 +1,16 @@ -import type { ManifestElement } from './models'; +import type { ManifestElement, ManifestWithConditions } from './models'; -export interface ManifestEntityBulkAction extends ManifestElement { +export interface ManifestEntityBulkAction extends ManifestElement, ManifestWithConditions { type: 'entityBulkAction'; meta: MetaEntityBulkAction; } export interface MetaEntityBulkAction { label: string; - entityType: string; api: any; // create interface repositoryAlias: string; } + +export interface ConditionsEntityBulkAction { + entityType: string; +} diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts index 783713e834..56c81a7de8 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts @@ -3,11 +3,15 @@ import type { ManifestElement } from './models'; export interface ManifestMenuItem extends ManifestElement { type: 'menuItem'; meta: MetaMenuItem; + conditions: ConditionsMenuItem; } export interface MetaMenuItem { label: string; icon: string; - menus: Array; entityType?: string; } + +export interface ConditionsMenuItem { + menus: Array; +} diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts index b77b89de5e..4655df55d8 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -100,6 +100,10 @@ export interface ManifestBase { weight?: number; } +export interface ManifestWithConditions { + conditions: ConditionsType; +} + export interface ManifestWithLoader extends ManifestBase { loader?: () => Promise; } diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/property-action.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/property-action.models.ts index 640849b9d7..8c98a0da0d 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/property-action.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/property-action.models.ts @@ -1,10 +1,9 @@ -import type { ManifestElement } from './models'; +import type { ManifestElement, ManifestWithConditions } from './models'; -export interface ManifestPropertyAction extends ManifestElement { +export interface ManifestPropertyAction extends ManifestElement, ManifestWithConditions { type: 'propertyAction'; - meta: MetaPropertyAction; } -export interface MetaPropertyAction { +export interface ConditionsPropertyAction { propertyEditors: string[]; } diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-app.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-app.models.ts index 544e64021e..5b188b3aa2 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-app.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-app.models.ts @@ -2,20 +2,21 @@ import type { ManifestElement } from './models'; export interface ManifestSectionSidebarApp extends ManifestElement { type: 'sectionSidebarApp'; - meta: MetaSectionSidebarApp; + conditions: ConditionsSectionSidebarApp; } -export interface MetaSectionSidebarApp { +export interface ConditionsSectionSidebarApp { sections: Array; } // TODO: this is a temp solution until we implement kinds -export interface ManifestMenuSectionSidebarApp extends ManifestElement { +export interface ManifestMenuSectionSidebarApp extends Omit { type: 'menuSectionSidebarApp'; meta: MetaMenuSectionSidebarApp; + conditions: ConditionsSectionSidebarApp; } -export interface MetaMenuSectionSidebarApp extends MetaSectionSidebarApp { +export interface MetaMenuSectionSidebarApp { label: string; menu: string; } diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-view.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-view.models.ts index 37c59c90ba..5bd892e818 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-view.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-view.models.ts @@ -1,14 +1,16 @@ -import type { ManifestElement } from './models'; +import type { ManifestElement, ManifestWithConditions } from './models'; -export interface ManifestSectionView extends ManifestElement { +export interface ManifestSectionView extends ManifestElement, ManifestWithConditions { type: 'sectionView'; meta: MetaSectionView; } export interface MetaSectionView { - sections: Array; label: string; pathname: string; - weight: number; icon: string; } + +export interface ConditionsSectionView { + sections: Array; +} diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-action.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-action.models.ts index b18c358d5f..2ba63ea647 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-action.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-action.models.ts @@ -6,12 +6,16 @@ import type { ClassConstructor } from '@umbraco-cms/models'; export interface ManifestWorkspaceAction extends ManifestElement { type: 'workspaceAction'; meta: MetaWorkspaceAction; + conditions: ConditionsWorkspaceAction; } export interface MetaWorkspaceAction { - workspaces: Array; label?: string; //TODO: Use or implement additional label-key look?: InterfaceLook; color?: InterfaceColor; api: ClassConstructor; } + +export interface ConditionsWorkspaceAction { + workspaces: Array; +} diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view-collection.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view-collection.models.ts index 366dd3cdbe..309a2af11b 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view-collection.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view-collection.models.ts @@ -1,13 +1,14 @@ -import type { ManifestBase } from './models'; +import type { ManifestBase, ManifestWithConditions } from './models'; -export interface ManifestWorkspaceViewCollection extends ManifestBase { +export interface ManifestWorkspaceViewCollection + extends ManifestBase, + ManifestWithConditions { type: 'workspaceViewCollection'; meta: MetaEditorViewCollection; } // TODO: Get rid of store alias, when we are done migrating to repositories(remember to enforce repositoryAlias): export interface MetaEditorViewCollection { - workspaces: string[]; pathname: string; label: string; icon: string; @@ -15,3 +16,7 @@ export interface MetaEditorViewCollection { storeAlias?: string; repositoryAlias?: string; } + +export interface ConditionsEditorViewCollection { + workspaces: string[]; +} diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view.models.ts index acfc5e9062..6f2898de75 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view.models.ts @@ -2,12 +2,16 @@ import type { ManifestWithView } from './models'; export interface ManifestWorkspaceView extends ManifestWithView { type: 'workspaceView'; - meta: MetaEditorView; + meta: MetaWorkspaceView; + conditions: ConditionsWorkspaceView; } -export interface MetaEditorView { - workspaces: string[]; +export interface MetaWorkspaceView { pathname: string; label: string; icon: string; } + +export interface ConditionsWorkspaceView { + workspaces: string[]; +} diff --git a/src/Umbraco.Web.UI.Client/libs/models/index.ts b/src/Umbraco.Web.UI.Client/libs/models/index.ts index 6a677de13d..9a0da3170f 100644 --- a/src/Umbraco.Web.UI.Client/libs/models/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/models/index.ts @@ -1,9 +1,9 @@ import { - ContentTreeItemModel, + ContentTreeItemResponseModel, DictionaryItemTranslationModel, - EntityTreeItemModel, - FolderTreeItemModel, - PackageManifestModel, + EntityTreeItemResponseModel, + FolderTreeItemResponseModel, + PackageManifestResponseModel, ProblemDetailsModel, } from '@umbraco-cms/backend-api'; @@ -26,7 +26,7 @@ export interface Entity { parentKey: string | null; } -export interface ContentDetails extends ContentTreeItemModel { +export interface ContentDetails extends ContentTreeItemResponseModel { isTrashed: boolean; // TODO: remove only temp part of refactor properties: Array; //data: Array; @@ -80,7 +80,7 @@ export interface DataTypeProperty { */ // TODO: Make sure Entity Type/interface. -export interface MemberTypeDetails extends EntityTreeItemModel { +export interface MemberTypeDetails extends EntityTreeItemResponseModel { key: string; // TODO: Remove this when the backend is fixed alias: string; properties: []; @@ -100,7 +100,7 @@ export interface ContentPropertyData { } // Media -export interface MediaDetails extends ContentTreeItemModel { +export interface MediaDetails extends ContentTreeItemResponseModel { key: string; // TODO: Remove this when the backend is fixed isTrashed: boolean; // TODO: remove only temp part of refactor properties: Array; @@ -111,23 +111,23 @@ export interface MediaDetails extends ContentTreeItemModel { // Media Types -export interface MediaTypeDetails extends FolderTreeItemModel { +export interface MediaTypeDetails extends FolderTreeItemResponseModel { key: string; // TODO: Remove this when the backend is fixed alias: string; properties: []; } // Member Groups -export interface MemberGroupDetails extends EntityTreeItemModel { +export interface MemberGroupDetails extends EntityTreeItemResponseModel { key: string; // TODO: Remove this when the backend is fixed } -export interface MemberDetails extends EntityTreeItemModel { +export interface MemberDetails extends EntityTreeItemResponseModel { key: string; // TODO: Remove this when the backend is fixed } // Dictionary -export interface DictionaryDetails extends EntityTreeItemModel { +export interface DictionaryDetails extends EntityTreeItemResponseModel { key: string; // TODO: Remove this when the backend is fixed translations: DictionaryItemTranslationModel[]; } @@ -153,7 +153,7 @@ export interface SwatchDetails { value: string; } -export type UmbPackage = PackageManifestModel; +export type UmbPackage = PackageManifestResponseModel; export type PackageManifestResponse = UmbPackage[]; diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.test.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.test.ts index 3ff159c362..6964402153 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.test.ts @@ -2,8 +2,7 @@ import { expect } from '@open-wc/testing'; import { ArrayState } from './array-state'; describe('ArrayState', () => { - - type ObjectType = {key: string, another: string}; + type ObjectType = { key: string; another: string }; type ArrayType = ObjectType[]; let subject: ArrayState; @@ -11,29 +10,30 @@ describe('ArrayState', () => { beforeEach(() => { initialData = [ - {key: '1', another: 'myValue1'}, - {key: '2', another: 'myValue2'}, - {key: '3', another: 'myValue3'} + { key: '1', another: 'myValue1' }, + { key: '2', another: 'myValue2' }, + { key: '3', another: 'myValue3' }, ]; - subject = new ArrayState(initialData, x => x.key); + subject = new ArrayState(initialData, (x) => x.key); }); - it('replays latests, no matter the amount of subscriptions.', (done) => { - + let amountOfCallbacks = 0; const observer = subject.asObservable(); observer.subscribe((value) => { + amountOfCallbacks++; expect(value).to.be.equal(initialData); }); observer.subscribe((value) => { + amountOfCallbacks++; expect(value).to.be.equal(initialData); - done(); + if (amountOfCallbacks === 2) { + done(); + } }); - }); it('remove method, removes the one with the key', (done) => { - const expectedData = [initialData[0], initialData[2]]; subject.remove(['2']); @@ -42,25 +42,21 @@ describe('ArrayState', () => { expect(JSON.stringify(value)).to.be.equal(JSON.stringify(expectedData)); done(); }); - }); it('filter method, removes anything that is not true of the given predicate method', (done) => { - const expectedData = [initialData[0], initialData[2]]; - subject.filter(x => x.key !== '2'); + subject.filter((x) => x.key !== '2'); const observer = subject.asObservable(); observer.subscribe((value) => { expect(JSON.stringify(value)).to.be.equal(JSON.stringify(expectedData)); done(); }); - }); it('add new item via appendOne method.', (done) => { - - const newItem = {key: '4', another: 'myValue4'}; + const newItem = { key: '4', another: 'myValue4' }; subject.appendOne(newItem); const expectedData = [...initialData, newItem]; @@ -71,37 +67,31 @@ describe('ArrayState', () => { expect(value[3].another).to.be.equal(expectedData[3].another); done(); }); - }); - it('getObservablePart for a specific entry of array', (done) => { - - const subObserver = subject.getObservablePart(data => data.find(x => x.key === '2')); + const subObserver = subject.getObservablePart((data) => data.find((x) => x.key === '2')); subObserver.subscribe((entry) => { - if(entry) { + if (entry) { expect(entry.another).to.be.equal(initialData[1].another); done(); } }); - }); - it('getObservablePart returns undefined if item does not exist', (done) => { - let amountOfCallbacks = 0; - const newItem = {key: '4', another: 'myValue4'}; + const newItem = { key: '4', another: 'myValue4' }; - const subObserver = subject.getObservablePart(data => data.find(x => x.key === newItem.key)); + const subObserver = subject.getObservablePart((data) => data.find((x) => x.key === newItem.key)); subObserver.subscribe((entry) => { amountOfCallbacks++; - if(amountOfCallbacks === 1) { - expect(entry).to.be.equal(undefined);// First callback should give null, cause we didn't have this entry when the subscription was made. + if (amountOfCallbacks === 1) { + expect(entry).to.be.equal(undefined); // First callback should give null, cause we didn't have this entry when the subscription was made. } - if(amountOfCallbacks === 2) { - expect(entry).to.be.equal(newItem);// Second callback should give us the right data: - if(entry) { + if (amountOfCallbacks === 2) { + expect(entry).to.be.equal(newItem); // Second callback should give us the right data: + if (entry) { expect(entry.another).to.be.equal(newItem.another); done(); } @@ -109,13 +99,10 @@ describe('ArrayState', () => { }); subject.appendOne(newItem); - }); - it('asObservable returns the replaced item', (done) => { - - const newItem = {key: '2', another: 'myValue4'}; + const newItem = { key: '2', another: 'myValue4' }; subject.appendOne(newItem); const expectedData = [initialData[0], newItem, initialData[2]]; @@ -126,24 +113,61 @@ describe('ArrayState', () => { expect(value[1].another).to.be.equal(newItem.another); done(); }); - }); it('getObservablePart returns the replaced item', (done) => { - - const newItem = {key: '2', another: 'myValue4'}; + const newItem = { key: '2', another: 'myValue4' }; subject.appendOne(newItem); - const subObserver = subject.getObservablePart(data => data.find(x => x.key === newItem.key)); + const subObserver = subject.getObservablePart((data) => data.find((x) => x.key === newItem.key)); subObserver.subscribe((entry) => { - expect(entry).to.be.equal(newItem);// Second callback should give us the right data: - if(entry) { + expect(entry).to.be.equal(newItem); // Second callback should give us the right data: + if (entry) { expect(entry.another).to.be.equal(newItem.another); done(); } }); - }); + it('getObservablePart replays existing data to any amount of subscribers.', (done) => { + let amountOfCallbacks = 0; + const subObserver = subject.getObservablePart((data) => data.find((x) => x.key === '2')); + subObserver.subscribe((entry) => { + if (entry) { + amountOfCallbacks++; + expect(entry.another).to.be.equal(initialData[1].another); + } + }); + subObserver.subscribe((entry) => { + if (entry) { + amountOfCallbacks++; + expect(entry.another).to.be.equal(initialData[1].another); + if (amountOfCallbacks === 2) { + done(); + } + } + }); + }); + + it('getObservablePart replays existing data to any amount of subscribers.', (done) => { + let amountOfCallbacks = 0; + + const subObserver = subject.getObservablePart((data) => data.find((x) => x.key === '2')); + subObserver.subscribe((entry) => { + if (entry) { + amountOfCallbacks++; + expect(entry.another).to.be.equal(initialData[1].another); + } + }); + subObserver.subscribe((entry) => { + if (entry) { + amountOfCallbacks++; + expect(entry.another).to.be.equal(initialData[1].another); + if (amountOfCallbacks === 2) { + done(); + } + } + }); + }); }); diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts index 38f51421cc..98b1575241 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts @@ -13,6 +13,7 @@ export class UmbObserverController extends UmbObserver implement this._alias = alias; // Lets check if controller is already here: + // No we don't want this, as multiple different controllers might be looking at the same source. /* if (this._subscriptions.has(source)) { const subscription = this._subscriptions.get(source); @@ -22,8 +23,4 @@ export class UmbObserverController extends UmbObserver implement host.addController(this); } - - hostConnected() { - return; - } } diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/observer.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/observer.ts index bf7210c284..0ce9ce6fef 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/observer.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/observer.ts @@ -1,15 +1,20 @@ import { Observable, Subscription } from 'rxjs'; export class UmbObserver { + #source!: Observable; + #callback!: (_value: T) => void; #subscription!: Subscription; constructor(source: Observable, callback: (_value: T) => void) { - this.#subscription = source.subscribe((value) => { - callback(value); - }); + this.#source = source; + this.#subscription = source.subscribe(callback); } - // Notice controller class implements empty hostConnected(). + hostConnected() { + if (this.#subscription.closed) { + this.#subscription = this.#source.subscribe(this.#callback); + } + } hostDisconnected() { this.#subscription.unsubscribe(); diff --git a/src/Umbraco.Web.UI.Client/libs/property-editor/index.ts b/src/Umbraco.Web.UI.Client/libs/property-editor/index.ts index e2a222e019..61b6a23c04 100644 --- a/src/Umbraco.Web.UI.Client/libs/property-editor/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/property-editor/index.ts @@ -1,6 +1,6 @@ -import { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; export interface UmbPropertyEditorElement extends HTMLElement { value: unknown; - config: DataTypePropertyModel[]; + config: DataTypePropertyPresentationModel[]; } diff --git a/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts index aff4ec4451..7e51e5a566 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts @@ -1,8 +1,8 @@ -import { EntityTreeItemModel, PagedEntityTreeItemModel } from '@umbraco-cms/backend-api'; +import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { DataSourceResponse } from '@umbraco-cms/models'; export interface RepositoryTreeDataSource { - getRootItems(): Promise>; - getChildrenOf(parentKey: string): Promise>; - getItems(key: Array): Promise>; + getRootItems(): Promise>; + getChildrenOf(parentKey: string): Promise>; + getItems(key: Array): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/libs/repository/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/repository/rollup.config.js new file mode 100644 index 0000000000..35421e5ce7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/repository/rollup.config.js @@ -0,0 +1,3 @@ +import config from '../../utils/rollup.config.js'; + +export default config; diff --git a/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts index 16d4d1ca51..b702adaaec 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts @@ -1,19 +1,24 @@ import type { Observable } from 'rxjs'; -import { EntityTreeItemModel, PagedEntityTreeItemModel, ProblemDetailsModel } from '@umbraco-cms/backend-api'; +import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel, ProblemDetailsModel } from '@umbraco-cms/backend-api'; export interface UmbTreeRepository { requestRootTreeItems: () => Promise<{ - data: PagedEntityTreeItemModel | undefined; + data: PagedEntityTreeItemResponseModel | undefined; error: ProblemDetailsModel | undefined; - asObservable?: () => Observable; + asObservable?: () => Observable; + }>; + requestTreeItemsOf: (parentKey: string | null) => Promise<{ + data: PagedEntityTreeItemResponseModel | undefined; + error: ProblemDetailsModel | undefined; + asObservable?: () => Observable; }>; requestTreeItems: (keys: string[]) => Promise<{ - data: Array | undefined; + data: Array | undefined; error: ProblemDetailsModel | undefined; - asObservable?: () => Observable; + asObservable?: () => Observable; }>; - rootTreeItems: () => Promise>; - treeItemsOf: (parentKey: string | null) => Promise>; - treeItems: (keys: string[]) => Promise>; + rootTreeItems: () => Promise>; + treeItemsOf: (parentKey: string | null) => Promise>; + treeItems: (keys: string[]) => Promise>; } diff --git a/src/Umbraco.Web.UI.Client/libs/store/icon/icon.store.ts b/src/Umbraco.Web.UI.Client/libs/store/icon/icon.store.ts index ad55a9948d..db6e4f237c 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/icon/icon.store.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/icon/icon.store.ts @@ -1,4 +1,4 @@ -import { UUIIconRegistry } from '@umbraco-ui/uui'; +import { UUIIconRegistry } from '@umbraco-ui/uui-icon-registry'; import icons from '../../../public-assets/icons/icons.json'; interface UmbIconDescriptor { diff --git a/src/Umbraco.Web.UI.Client/libs/store/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/store/rollup.config.js new file mode 100644 index 0000000000..35421e5ce7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/store/rollup.config.js @@ -0,0 +1,3 @@ +import config from '../../utils/rollup.config.js'; + +export default config; diff --git a/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts b/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts index feab80cb01..0f199a1f3b 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts @@ -1,4 +1,4 @@ -import { EntityTreeItemModel } from '@umbraco-cms/backend-api'; +import { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import { ArrayState, partialUpdateFrozenArray } from '@umbraco-cms/observable-api'; import { UmbStoreBase } from '@umbraco-cms/store'; @@ -10,14 +10,14 @@ import { UmbStoreBase } from '@umbraco-cms/store'; */ // TODO: consider if tree store could be turned into a general EntityTreeStore class? export class UmbTreeStoreBase extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.key); /** * Appends items to the store * @param {Array} items * @memberof UmbTreeStoreBase */ - appendItems(items: Array) { + appendItems(items: Array) { this.#data.append(items); } @@ -27,7 +27,7 @@ export class UmbTreeStoreBase extends UmbStoreBase { * @param {Partial} data * @memberof UmbTreeStoreBase */ - updateItem(key: string, data: Partial) { + updateItem(key: string, data: Partial) { this.#data.next(partialUpdateFrozenArray(this.#data.getValue(), data, (entry) => entry.key === key)); } diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 9228699b0d..45bc7cf754 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -28,13 +28,13 @@ "@open-wc/testing": "^3.1.7", "@playwright/test": "^1.30.0", "@rollup/plugin-json": "^6.0.0", - "@storybook/addon-a11y": "^7.0.0-beta.59", - "@storybook/addon-actions": "^7.0.0-beta.59", - "@storybook/addon-essentials": "^7.0.0-beta.59", - "@storybook/addon-links": "^7.0.0-beta.59", + "@storybook/addon-a11y": "^7.0.0-rc.3", + "@storybook/addon-actions": "^7.0.0-rc.3", + "@storybook/addon-essentials": "^7.0.0-rc.3", + "@storybook/addon-links": "^7.0.0-rc.3", "@storybook/mdx2-csf": "^1.0.0-next.5", - "@storybook/web-components": "^7.0.0-beta.59", - "@storybook/web-components-vite": "^7.0.0-beta.59", + "@storybook/web-components": "^7.0.0-rc.3", + "@storybook/web-components-vite": "^7.0.0-rc.3", "@types/chai": "^4.3.4", "@types/lodash-es": "^4.17.6", "@types/mocha": "^10.0.0", @@ -69,7 +69,7 @@ "rollup-plugin-dts": "^5.2.0", "rollup-plugin-esbuild": "^5.0.0", "rollup-plugin-url": "^3.0.1", - "storybook": "^7.0.0-beta.59", + "storybook": "^7.0.0-rc.3", "tiny-glob": "^0.2.9", "typescript": "^4.9.5", "vite": "^4.1.4", @@ -2264,22 +2264,22 @@ } }, "node_modules/@jest/transform": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.4.3.tgz", - "integrity": "sha512-8u0+fBGWolDshsFgPQJESkDa72da/EVwvL+II0trN2DR66wMwiQ9/CihaGfHdlLGFzbBZwMykFtxuwFdZqlKwg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", + "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/types": "^29.4.3", + "@jest/types": "^29.5.0", "@jridgewell/trace-mapping": "^0.3.15", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.3", + "jest-haste-map": "^29.5.0", "jest-regex-util": "^29.4.3", - "jest-util": "^29.4.3", + "jest-util": "^29.5.0", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -2348,9 +2348,9 @@ } }, "node_modules/@jest/types": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.3.tgz", - "integrity": "sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "dependencies": { "@jest/schemas": "^29.4.3", @@ -2810,21 +2810,21 @@ "dev": true }, "node_modules/@storybook/addon-a11y": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-7.0.0-beta.59.tgz", - "integrity": "sha512-rQLyNv/qmxjQD750MUO8YKZikVHtvYDD6IsJxrhO4xM0UUqaOeZC1JUeppNJKCwItyB3AyANcy6Cl8O0Cc/U3Q==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-7.0.0-rc.3.tgz", + "integrity": "sha512-V/wl19IzsOA0OkUofKKbL09Qj93ywRHW3Pjq3pOLRE178zCumWuBKxpr+dS4C1lNwecIU1ffp8408RSzZ4K5sA==", "dev": true, "dependencies": { - "@storybook/addon-highlight": "7.0.0-beta.59", - "@storybook/channels": "7.0.0-beta.59", - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/addon-highlight": "7.0.0-rc.3", + "@storybook/channels": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/theming": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/theming": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "axe-core": "^4.2.0", "lodash": "^4.17.21", "react-resize-detector": "^7.1.2" @@ -2847,19 +2847,19 @@ } }, "node_modules/@storybook/addon-actions": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.0.0-beta.59.tgz", - "integrity": "sha512-yK4fZCkYG+/FppEw/a1eUFIiNEEmElzlo42TXn0DHywsZaBEMei5JCvqh1+KprUVJo20mGuTxLDMkRri4JHXYw==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.0.0-rc.3.tgz", + "integrity": "sha512-kyPuSN/PzBnW3w9D/KBEmMqfeGpBeY6Ha2VVPz3BBqcWSHfw0AbHFqvnqluubaHZl1VokE88QT6RxkdyBg33uw==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/theming": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/theming": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "dequal": "^2.0.2", "lodash": "^4.17.21", "polished": "^4.2.2", @@ -2887,19 +2887,19 @@ } }, "node_modules/@storybook/addon-backgrounds": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.0-beta.59.tgz", - "integrity": "sha512-eB30laoU/5uqk6Q6zYb6ckkkvxXCi6O/vf0kg5H8RzKOwHc+OccCqCNLSKltoKTD3OGzGj6T+dLSCdzRcQ3+PQ==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.0-rc.3.tgz", + "integrity": "sha512-6qIwuNwzLFdsLCjj5rO6TCaBvAGUYbrLpw2EQyKg5J/5GxqhMU/HsinCViok2VEn/z45vji9FI1W6bmo7t4LNQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/theming": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/theming": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "memoizerific": "^1.11.3", "ts-dedent": "^2.0.0" }, @@ -2921,20 +2921,20 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.0.0-beta.59.tgz", - "integrity": "sha512-pSpIxKYLAcvgp5eOC44BEY4jIW5rjCSvqchieblflF4eScPy886gC1nPRV3oo7QRckiZT3HE5UZ96YK1U3Ahew==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.0.0-rc.3.tgz", + "integrity": "sha512-16E0AJ1+psFDbL6abOfLFg0zWhUQeJjcM3RKEzJjYZEBuKKL86LAvKhnlkyCUW3VlLN23V0akY6Gev81DR/BfA==", "dev": true, "dependencies": { - "@storybook/blocks": "7.0.0-beta.59", - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/core-common": "7.0.0-beta.59", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/node-logger": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/theming": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/blocks": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/core-common": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/theming": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" }, @@ -2956,28 +2956,28 @@ } }, "node_modules/@storybook/addon-docs": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.0.0-beta.59.tgz", - "integrity": "sha512-oipJtO/O2+/0sC5n9r+9crHnz+f0XEAMkYN/O/H5B0Z+N6T3uP4xnKTFdowpBUcEP6UaRL2oNYHNywzILdQYlA==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.0.0-rc.3.tgz", + "integrity": "sha512-UPy+o7IBly2TgCQ7hviaExq++KQSPS7/+/8iLUdv81mtRm3hMBMARmom+wjXfciGHp1re1bazQQYoDsOcorDhA==", "dev": true, "dependencies": { "@babel/core": "^7.20.2", "@babel/plugin-transform-react-jsx": "^7.19.0", "@jest/transform": "^29.3.1", "@mdx-js/react": "^2.1.5", - "@storybook/blocks": "7.0.0-beta.59", - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/csf-plugin": "7.0.0-beta.59", - "@storybook/csf-tools": "7.0.0-beta.59", + "@storybook/blocks": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/csf-plugin": "7.0.0-rc.3", + "@storybook/csf-tools": "7.0.0-rc.3", "@storybook/global": "^5.0.0", "@storybook/mdx2-csf": "next", - "@storybook/node-logger": "7.0.0-beta.59", - "@storybook/postinstall": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/react-dom-shim": "7.0.0-beta.59", - "@storybook/theming": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/postinstall": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/react-dom-shim": "7.0.0-rc.3", + "@storybook/theming": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "fs-extra": "^11.1.0", "remark-external-links": "^8.0.0", "remark-slug": "^6.0.0", @@ -2999,24 +2999,24 @@ } }, "node_modules/@storybook/addon-essentials": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.0.0-beta.59.tgz", - "integrity": "sha512-yVGQR8HT4OOZ2lMaRK4KsB6sahzIRvspwkwAEyk/tRm4NZ6KUxv05y1cMFlbMJ/JUX/tN5TBOwMIvumbUu/J+w==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.0.0-rc.3.tgz", + "integrity": "sha512-RLA1RgjwuDsRKp2QjBAx2XsgTZ+Dura2k8xCTyBLf0yxnleC8hiAxLwTJSSdDEUuiXxWsBbu0vhHzYnCCVTDnw==", "dev": true, "dependencies": { - "@storybook/addon-actions": "7.0.0-beta.59", - "@storybook/addon-backgrounds": "7.0.0-beta.59", - "@storybook/addon-controls": "7.0.0-beta.59", - "@storybook/addon-docs": "7.0.0-beta.59", - "@storybook/addon-highlight": "7.0.0-beta.59", - "@storybook/addon-measure": "7.0.0-beta.59", - "@storybook/addon-outline": "7.0.0-beta.59", - "@storybook/addon-toolbars": "7.0.0-beta.59", - "@storybook/addon-viewport": "7.0.0-beta.59", - "@storybook/core-common": "7.0.0-beta.59", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/node-logger": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", + "@storybook/addon-actions": "7.0.0-rc.3", + "@storybook/addon-backgrounds": "7.0.0-rc.3", + "@storybook/addon-controls": "7.0.0-rc.3", + "@storybook/addon-docs": "7.0.0-rc.3", + "@storybook/addon-highlight": "7.0.0-rc.3", + "@storybook/addon-measure": "7.0.0-rc.3", + "@storybook/addon-outline": "7.0.0-rc.3", + "@storybook/addon-toolbars": "7.0.0-rc.3", + "@storybook/addon-viewport": "7.0.0-rc.3", + "@storybook/core-common": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", "ts-dedent": "^2.0.0" }, "funding": { @@ -3029,14 +3029,14 @@ } }, "node_modules/@storybook/addon-highlight": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.0.0-beta.59.tgz", - "integrity": "sha512-JY3nChLZCWtAzjOUnztbPQzaXA2CKHi2bB0xfdgMLeWLN5bhYNpcmwMyAdu34vy6MYOHRlZutkifksUMUI2nDg==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.0.0-rc.3.tgz", + "integrity": "sha512-MeFIKfDpFrF33TPdl2ko2rie485AhfG2n0MFXA73L8Yzj5JPV+LVNa5eIKUUFyOMUGSkVjfFS6n63F08eqHbCw==", "dev": true, "dependencies": { - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.0.0-beta.59" + "@storybook/preview-api": "7.0.0-rc.3" }, "funding": { "type": "opencollective", @@ -3044,19 +3044,19 @@ } }, "node_modules/@storybook/addon-links": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.0.0-beta.59.tgz", - "integrity": "sha512-9nDi8Zvy3mTBNTDIuZfIz6OevK2iCcUUOSspKn/1rJV+nMZ5xYtrWUGnW9P+z7WqOJ6CfXLIg4/sw97WLoJVyA==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.0.0-rc.3.tgz", + "integrity": "sha512-K2PMxVooGAgb8hCEU2oGUMzKjPLEPACH8NcRLs/fz9PKadepmijY0hBDC50SGkZd2HWSxXxyt6d5WaXTxhP8aw==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/csf": "next", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/router": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/router": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "prop-types": "^15.7.2", "ts-dedent": "^2.0.0" }, @@ -3078,18 +3078,18 @@ } }, "node_modules/@storybook/addon-measure": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.0.0-beta.59.tgz", - "integrity": "sha512-iCGVzoGFJUj2oVqe+W5itKTZ9d+fIDdCuHBYB6I3KTuwJq9BEO9JivoIJScghADO9gaq20fVb5Hf+5IWb0riAA==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.0.0-rc.3.tgz", + "integrity": "sha512-N0HjObHjktlgWvOQcOqyC6/vFXERHzH7aP8L1RRrSnz+mP0XDO+62eBZunlnDGu4uAECH+AV/7LO+bmTMohulg==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59" + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3" }, "funding": { "type": "opencollective", @@ -3109,18 +3109,18 @@ } }, "node_modules/@storybook/addon-outline": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.0.0-beta.59.tgz", - "integrity": "sha512-7GeLPyD+e4MNlMiLqa1GstvTQOqBeWDXClV+1QUa9dEbjqpe6SDLNWx0HoBvRFzW6/qtuutmxiNRJmBtvCVaWA==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.0.0-rc.3.tgz", + "integrity": "sha512-SocPRmzzu2wR3SiqMsPskfFumOd0Ph8MUTeJ2cwnaonqqHjjqxaEaFYio8AGmGaHLpY8PKtW0s75jU0oDh9Ezg==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "ts-dedent": "^2.0.0" }, "funding": { @@ -3141,16 +3141,16 @@ } }, "node_modules/@storybook/addon-toolbars": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.0.0-beta.59.tgz", - "integrity": "sha512-1MJIAXbBI/E93c0z7Sm66xGNpzm3OQbfK+jShgdKHYAwWkv1HMGDAwIJdA4Z5bf4tuU2vri4SSdi4GnQlXy4EA==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.0.0-rc.3.tgz", + "integrity": "sha512-qnvMWZAa3ELRNiVjj1sy0dJb2GzE5fga9SbsbVQQT2zBvou2e8XbiPRw0WHdwUU2Zj9t9/PVjz2+av7P8B+Cqg==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/theming": "7.0.0-beta.59" + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/theming": "7.0.0-rc.3" }, "funding": { "type": "opencollective", @@ -3170,18 +3170,18 @@ } }, "node_modules/@storybook/addon-viewport": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.0.0-beta.59.tgz", - "integrity": "sha512-2cqs7+KKERWRpIE6Omfr/JaLcz8apu0JIJxL+pMUEQcYBl7noPNgXSOyDHVJYWcNM6cQTb8LkEKlZ9bJ5ut40w==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.0.0-rc.3.tgz", + "integrity": "sha512-GXBi7f4WNeM4yvKXKYNAMLDHauTOcLpimzf1wtyVapBLpwzcJHBaJTCHQ02yIcm6mU2TFbKXMmzC1uBZcCa+5w==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/theming": "7.0.0-beta.59", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/theming": "7.0.0-rc.3", "memoizerific": "^1.11.3", "prop-types": "^15.7.2" }, @@ -3472,22 +3472,22 @@ } }, "node_modules/@storybook/blocks": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.0.0-beta.59.tgz", - "integrity": "sha512-3srAVSWxP07gGQuB309T2gqd7yP9b4rkMwMiIal3o7jsxYFHmZjRONJa52XAT2CQkqjJx1NoMdNlHNMnMzRehg==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.0.0-rc.3.tgz", + "integrity": "sha512-mh4LQk2f/Q9n7Sqo6t02CspHubXmSgDY4S5vF3dTgVBM/sD0OxkAY3Pv+HTsXH36lQHYYUft7U7OfhZapgS4ng==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.0-beta.59", - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/channels": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/csf": "next", - "@storybook/docs-tools": "7.0.0-beta.59", + "@storybook/docs-tools": "7.0.0-rc.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/theming": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/theming": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "@types/lodash": "^4.14.167", "color-convert": "^2.0.1", "dequal": "^2.0.2", @@ -3510,15 +3510,15 @@ } }, "node_modules/@storybook/builder-manager": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.0.0-beta.59.tgz", - "integrity": "sha512-cWm5eCGZraW9fAnL0Cp80M5QYMXeWZ538k9WWq2uG1FYXLCnEl6J7X4acJ4d2hYTF+XvwEMeWB5i4z435kgi/Q==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.0.0-rc.3.tgz", + "integrity": "sha512-aScwYA9MWtqgiD39SkcwUlrR9RFbngv7jPoOaVMdXuMgNabMNz9417L9bCwSPwgO4XZ5a/nSEbGNLfOHfBemsw==", "dev": true, "dependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "7.0.0-beta.59", - "@storybook/manager": "7.0.0-beta.59", - "@storybook/node-logger": "7.0.0-beta.59", + "@storybook/core-common": "7.0.0-rc.3", + "@storybook/manager": "7.0.0-rc.3", + "@storybook/node-logger": "7.0.0-rc.3", "@types/ejs": "^3.1.1", "@types/find-cache-dir": "^3.2.1", "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", @@ -3539,21 +3539,21 @@ } }, "node_modules/@storybook/builder-vite": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-7.0.0-beta.59.tgz", - "integrity": "sha512-s7FbS/RisUrkmpSoY++FjUxYR3jXsCM5HE7rWxBkBFVwfURq6LcVC6ZZy9rdcp9NyvoW2ne2LqQP8sg+S2o00Q==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-7.0.0-rc.3.tgz", + "integrity": "sha512-v2d04PWfcITD7zI68d7XbCbOd+5vl3gIMEX5Xdsmuw3WcaqYxvDSE8GhL6zsBhrUyygV/8xhSaaxyfv8ImM0+w==", "dev": true, "dependencies": { - "@storybook/channel-postmessage": "7.0.0-beta.59", - "@storybook/channel-websocket": "7.0.0-beta.59", - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/core-common": "7.0.0-beta.59", - "@storybook/csf-plugin": "7.0.0-beta.59", + "@storybook/channel-postmessage": "7.0.0-rc.3", + "@storybook/channel-websocket": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/core-common": "7.0.0-rc.3", + "@storybook/csf-plugin": "7.0.0-rc.3", "@storybook/mdx2-csf": "next", - "@storybook/node-logger": "7.0.0-beta.59", - "@storybook/preview": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/preview": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "browser-assert": "^1.2.1", "es-module-lexer": "^0.9.3", "express": "^4.17.3", @@ -3591,14 +3591,14 @@ } }, "node_modules/@storybook/channel-postmessage": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-7.0.0-beta.59.tgz", - "integrity": "sha512-TVvUBJpaxfmF9ap4lbA76ez4EJUM8BO4tpXn2w4tcs0HZUUFmCaltcUVk+KJLE2ZcQpDFNhXtR9nk1DPJtHy9A==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-7.0.0-rc.3.tgz", + "integrity": "sha512-1uptuCjA4vAvvoxNoIJPTIpSARzJnLU7eahRhTPwELBnCH0ObqvgInge0cvbYsaTRDNV90oBbEKlxLf1Zb1BhQ==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.0-beta.59", - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/channels": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/global": "^5.0.0", "qs": "^6.10.0", "telejson": "^7.0.3" @@ -3609,13 +3609,13 @@ } }, "node_modules/@storybook/channel-websocket": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-7.0.0-beta.59.tgz", - "integrity": "sha512-C7a1vF6neYqyh7pqSf7JUtNntpF9eOzgcDVJAnjrP+nfqcdU3Av8pwO90K3M9qL2sP+V/oDuM/jA8fysxTs2BA==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-7.0.0-rc.3.tgz", + "integrity": "sha512-706jopde+OZZkqsmrRuwd9utusqiKianiF8cvjAxrxogSx8LwHk8jxrEKHxHiZUEWDS3JxJoIYSV8gxH9hcjsA==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.0-beta.59", - "@storybook/client-logger": "7.0.0-beta.59", + "@storybook/channels": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.0-rc.3", "@storybook/global": "^5.0.0", "telejson": "^7.0.3" }, @@ -3625,9 +3625,9 @@ } }, "node_modules/@storybook/channels": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0-beta.59.tgz", - "integrity": "sha512-dd0kHUfIM8oolqMq2R9/YcN5+NPq9hQz8upnAsiJZ++TrJyarBUAGaR5njC8gVhFKouxyUZsltVZ3X/9T1BIsg==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0-rc.3.tgz", + "integrity": "sha512-jaODIck+um16Fn2k1vwHK9RNk2J8hLVyzLSkoGM40TsMF5nichwI3rA6225pLk015itJbhCAi/RhaMFBI+ZtsA==", "dev": true, "funding": { "type": "opencollective", @@ -3635,21 +3635,21 @@ } }, "node_modules/@storybook/cli": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.0.0-beta.59.tgz", - "integrity": "sha512-jiZhBh5F0TJm8WZlojeaVC8GgGort9ppHeX+mXip5KGCyN3iewa/hdCt1CdkdQB/mzG4NPoEaP3QlyDDzfBFhQ==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.0.0-rc.3.tgz", + "integrity": "sha512-g1nWHLI1fiDK2dnLpmbhbrm6ZaAwuZkUgEGtlEQCPTHWVRZj2fJT0y5zjgBIhFpdkB/X8MZzgVxqhTJF0uX39Q==", "dev": true, "dependencies": { "@babel/core": "^7.20.2", "@babel/preset-env": "^7.20.2", - "@ndelangen/get-tarball": "^3.0.3", - "@storybook/codemod": "7.0.0-beta.59", - "@storybook/core-common": "7.0.0-beta.59", - "@storybook/core-server": "7.0.0-beta.59", - "@storybook/csf-tools": "7.0.0-beta.59", - "@storybook/node-logger": "7.0.0-beta.59", - "@storybook/telemetry": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@ndelangen/get-tarball": "^3.0.7", + "@storybook/codemod": "7.0.0-rc.3", + "@storybook/core-common": "7.0.0-rc.3", + "@storybook/core-server": "7.0.0-rc.3", + "@storybook/csf-tools": "7.0.0-rc.3", + "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/telemetry": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "@types/semver": "^7.3.4", "boxen": "^5.1.2", "chalk": "^4.1.0", @@ -3909,9 +3909,9 @@ "dev": true }, "node_modules/@storybook/client-logger": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0-beta.59.tgz", - "integrity": "sha512-xEl+RNAsMZ+AvdatVd8GVzIvH6Dm4kaIXs3iyCRr4HXIdAxNB53tReqDDdzsK4LamMf5003Mlo4Szcb4QTkskQ==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0-rc.3.tgz", + "integrity": "sha512-cC7lq+S4n5fFooDCyefgTAOfipadiZskNuzsQF7drE9nQLZ8GflLdmTKK//5NQUHKPzF7r+4Q5DAK4I3nqIkxA==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0" @@ -3922,18 +3922,18 @@ } }, "node_modules/@storybook/codemod": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.0.0-beta.59.tgz", - "integrity": "sha512-G8hR7ooZMkS0gpIP+2IutGaTu18Mb6wcjv5D6NidRW3R/t6PBS53tTsd0RYLCmEnmKgOn4gibBUgQtM1dtG0jQ==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.0.0-rc.3.tgz", + "integrity": "sha512-P965X5g4WIBfrYMLYPQIvwp9wfIf5bnUIVgwjeGUDLDLIst6RXmHGik9MHLy2Ic/MXTsf/kwK5qY9pj95t8DZg==", "dev": true, "dependencies": { "@babel/core": "~7.21.0", "@babel/preset-env": "~7.20.2", "@babel/types": "~7.21.2", "@storybook/csf": "next", - "@storybook/csf-tools": "7.0.0-beta.59", - "@storybook/node-logger": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/csf-tools": "7.0.0-rc.3", + "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "cross-spawn": "^7.0.3", "globby": "^11.0.2", "jscodeshift": "^0.14.0", @@ -3947,16 +3947,16 @@ } }, "node_modules/@storybook/components": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.0.0-beta.59.tgz", - "integrity": "sha512-Cmfs2B0YgT7pqRJL6EhI6ipIQ2Ma72IVrFpM7gD6X8H81u8BjtsFFpfZnUUtkN9CbIsk8uQ52efv8aw38AzK9g==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.0.0-rc.3.tgz", + "integrity": "sha512-PeQFr2hZvLnxLswKihw1Ro5wCqmNZeSE4q+tFdifhLVIqP/OwHG+ShiLCHQ1aEa0Z3Ub+80m7uPzg69+y9m+bQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", "@storybook/csf": "next", "@storybook/global": "^5.0.0", - "@storybook/theming": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/theming": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "memoizerific": "^1.11.3", "use-resize-observer": "^9.1.0", "util-deprecate": "^1.0.2" @@ -3971,13 +3971,13 @@ } }, "node_modules/@storybook/core-client": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.0.0-beta.59.tgz", - "integrity": "sha512-M/APRzOEyhjkhVXLHVs3lMkNI+MC11PF6Z2M8hXSlv+xqHSnC2bHGwoay5KSjLY29yEZkxuauCYwvOywzTdJQw==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.0.0-rc.3.tgz", + "integrity": "sha512-epUiHzFQNoEr5PYq9069SliQzHl5fVQj94aWdGZWCQPGldxiFtCNB7o32NzwwIVzXOKPzU38qg2B4738jt/1XQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59" + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3" }, "funding": { "type": "opencollective", @@ -3985,13 +3985,13 @@ } }, "node_modules/@storybook/core-common": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.0.0-beta.59.tgz", - "integrity": "sha512-oHj+QisjtPhAt4uvbBf8bdVLifsKyu2HkwTwy++eCnMGCEb/L370TFQyPqL4olJY7vVNHx2aFduUTP9qoUawrQ==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.0.0-rc.3.tgz", + "integrity": "sha512-uUIs14+35ubRcpYwuX0OHW05tSDC5jeNEY8gv2EjcexBLeNozfGV4Tf5/ncG8glVbp8jGUlu2S3XJZoHKHDSqQ==", "dev": true, "dependencies": { - "@storybook/node-logger": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "@types/node": "^16.0.0", "@types/pretty-hrtime": "^1.0.0", "chalk": "^4.1.0", @@ -4017,9 +4017,9 @@ } }, "node_modules/@storybook/core-common/node_modules/@types/node": { - "version": "16.18.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.14.tgz", - "integrity": "sha512-wvzClDGQXOCVNU4APPopC2KtMYukaF1MN/W3xAmslx22Z4/IF1/izDMekuyoUlwfnDHYCIZGaj7jMwnJKBTxKw==", + "version": "16.18.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.16.tgz", + "integrity": "sha512-ZOzvDRWp8dCVBmgnkIqYCArgdFOO9YzocZp8Ra25N/RStKiWvMOXHMz+GjSeVNe5TstaTmTWPucGJkDw0XXJWA==", "dev": true }, "node_modules/@storybook/core-common/node_modules/ansi-styles": { @@ -4075,9 +4075,9 @@ } }, "node_modules/@storybook/core-events": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.0.0-beta.59.tgz", - "integrity": "sha512-kmCui9J/u70m4dMaj8ZfqXwgbdPr5stYBTmwdB3sbiFDH4YJpI1QC4pYQdN7vQLMuLF6IDsVhNlJro/aeuwBEg==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.0.0-rc.3.tgz", + "integrity": "sha512-EBihNmxxiIJbPt6OhCTXFPl2T/9OXNVKtsy8hchBNEzp+UJGyeHx+t9K6tRvbcmt5TG/y7C7ZsYx9U28JTwNkg==", "dev": true, "funding": { "type": "opencollective", @@ -4085,25 +4085,25 @@ } }, "node_modules/@storybook/core-server": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.0.0-beta.59.tgz", - "integrity": "sha512-OdbrZEnXmWy4ie6hNypEWQpFci9NciAavS6ggN1ga06OD1b2L3rrbFo+5nNKv9tHqlTDvyL2s1Da4JTYtVdMLg==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.0.0-rc.3.tgz", + "integrity": "sha512-211514C7w8hvu/bLP97KdF7TM8FpcchgDAhldODDvKFyxFTHMcQFj3ABlptsWFO6JxZsy32hG8qi6phFUtceQA==", "dev": true, "dependencies": { "@aw-web-design/x-default-browser": "1.4.88", "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "7.0.0-beta.59", - "@storybook/core-common": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/builder-manager": "7.0.0-rc.3", + "@storybook/core-common": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/csf": "next", - "@storybook/csf-tools": "7.0.0-beta.59", + "@storybook/csf-tools": "7.0.0-rc.3", "@storybook/docs-mdx": "next", "@storybook/global": "^5.0.0", - "@storybook/manager": "7.0.0-beta.59", - "@storybook/node-logger": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/telemetry": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/manager": "7.0.0-rc.3", + "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/telemetry": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "@types/detect-port": "^1.3.0", "@types/node": "^16.0.0", "@types/node-fetch": "^2.5.7", @@ -4140,9 +4140,9 @@ } }, "node_modules/@storybook/core-server/node_modules/@types/node": { - "version": "16.18.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.14.tgz", - "integrity": "sha512-wvzClDGQXOCVNU4APPopC2KtMYukaF1MN/W3xAmslx22Z4/IF1/izDMekuyoUlwfnDHYCIZGaj7jMwnJKBTxKw==", + "version": "16.18.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.16.tgz", + "integrity": "sha512-ZOzvDRWp8dCVBmgnkIqYCArgdFOO9YzocZp8Ra25N/RStKiWvMOXHMz+GjSeVNe5TstaTmTWPucGJkDw0XXJWA==", "dev": true }, "node_modules/@storybook/core-server/node_modules/ansi-styles": { @@ -4240,12 +4240,12 @@ } }, "node_modules/@storybook/csf-plugin": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.0.0-beta.59.tgz", - "integrity": "sha512-+C5pWY1Bhr7vtDG7OI2wjKDKz1o7DFLiChG8M1hdX/o3TD97bh24GVmJW9GEXk+A+7rG7XuxHcu2x0piq3Fs8g==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.0.0-rc.3.tgz", + "integrity": "sha512-+r2m09o/5B846Q8ykDWjwPJSZXc3i4Z6vLc04SxIR/VJffF7K0Z/vFmTcPz8Qg5wFdfvy/HFqTLpaOJtVwWBdA==", "dev": true, "dependencies": { - "@storybook/csf-tools": "7.0.0-beta.59", + "@storybook/csf-tools": "7.0.0-rc.3", "unplugin": "^0.10.2" }, "funding": { @@ -4254,9 +4254,9 @@ } }, "node_modules/@storybook/csf-tools": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.0.0-beta.59.tgz", - "integrity": "sha512-b8wxDFKOFZS5CQUjmb+vToSERYmbpIkFSMv+7/jixfYdS1O6Z8z3mXxqm+XljkNrKhi6EID42D8RsxBNhg/8gg==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.0.0-rc.3.tgz", + "integrity": "sha512-I3QG2buAswIYVbYlstmZAamwLopW6daHj2+wrod+whTmeKShp0rbOrVkU0M3Hpj9CVzFM1/4YqCNOBkS2XTnsw==", "dev": true, "dependencies": { "@babel/generator": "~7.21.1", @@ -4264,7 +4264,7 @@ "@babel/traverse": "~7.21.2", "@babel/types": "~7.21.2", "@storybook/csf": "next", - "@storybook/types": "7.0.0-beta.59", + "@storybook/types": "7.0.0-rc.3", "fs-extra": "^11.1.0", "recast": "^0.23.1", "ts-dedent": "^2.0.0" @@ -4281,15 +4281,15 @@ "dev": true }, "node_modules/@storybook/docs-tools": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.0.0-beta.59.tgz", - "integrity": "sha512-UatE0EFvPy2dsSa7zqcsQ5mUmGopKE+/2RyQkCE+tTqY38KssyOuHSrg0mc6dUvBZngD3AWKIOuNZlLB1Eg21w==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.0.0-rc.3.tgz", + "integrity": "sha512-1uGIMq0+t8AUJyj0jkta7Imr3vFLkX8oRXhX5zi7znjWMhgeXKskEFujvCcz7eI1NIU9x2WvFwbtSzWDpdC/0g==", "dev": true, "dependencies": { "@babel/core": "^7.12.10", - "@storybook/core-common": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/core-common": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "@types/doctrine": "^0.0.3", "doctrine": "^3.0.0", "lodash": "^4.17.21" @@ -4306,9 +4306,9 @@ "dev": true }, "node_modules/@storybook/manager": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.0.0-beta.59.tgz", - "integrity": "sha512-xwSuk/izrjUn0hGzs6uiu+YfMZgvnyzGIrEWqPEwQWomW2oVyY/pdtCEsR/9Yv6smlLk4f6xh++1qG26XgceCg==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.0.0-rc.3.tgz", + "integrity": "sha512-8Q/vpHkvWQ/fZHRPFOgGC4Qhgpmafe9GV2QKk3yRA/p9zcW4UzP9fbL4qw6tq+5GLM/kFKArBu28ZA7L7sKB9A==", "dev": true, "funding": { "type": "opencollective", @@ -4316,19 +4316,19 @@ } }, "node_modules/@storybook/manager-api": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.0.0-beta.59.tgz", - "integrity": "sha512-mNbqUNEzLWacxjACnXOfufmcMB70z/z5XDjoP1zYc6QDrnCaLF/L7FwMhTo1J2/6wvQXcvYj25RiCZHm75gMXQ==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.0.0-rc.3.tgz", + "integrity": "sha512-Pa+LabGYakPd9RuS8G7tCp3hPjZwGZL95Dj+yef0bM9WmYBimNjaUsqVJOGttuE4TLXjUIU9+58YImN7QrGfbQ==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.0-beta.59", - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/channels": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/csf": "next", "@storybook/global": "^5.0.0", - "@storybook/router": "7.0.0-beta.59", - "@storybook/theming": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/router": "7.0.0-rc.3", + "@storybook/theming": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", @@ -4386,9 +4386,9 @@ "dev": true }, "node_modules/@storybook/node-logger": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.0.0-beta.59.tgz", - "integrity": "sha512-DJOtqed/iL/Mpbci3ZwDmZwvnheqZzSOmrk2YsKmJagnQzS0A9+ZZg7tu/eFuvBnILmhVDzFBOloD8hXRSOC7w==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.0.0-rc.3.tgz", + "integrity": "sha512-ViWIJUdFUTrFtcoO88T3h55ryjl73aMNyn8vPvIgejJoJfYMTB5ErI4zLquN23HNc+H9AKKm/qMFFSf9xjGORQ==", "dev": true, "dependencies": { "@types/npmlog": "^4.1.2", @@ -4454,9 +4454,9 @@ } }, "node_modules/@storybook/postinstall": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.0.0-beta.59.tgz", - "integrity": "sha512-/SD0kacKKkvhr2qLQlPrJY+pYyP819RfwZDL4QY56/YpOwzEwWNhZDksQDuJTNCu8tr2XTLyqlfm0wFwi/DaGg==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.0.0-rc.3.tgz", + "integrity": "sha512-kOCJjixFwdnZxR6K45XR+6Q4UBzOLdabzh3aednQ/piiqj7ZdldaF75ZfoDhKPK4cjrd5AGU6/OWbsJQ+DLVMg==", "dev": true, "funding": { "type": "opencollective", @@ -4464,9 +4464,9 @@ } }, "node_modules/@storybook/preview": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.0.0-beta.59.tgz", - "integrity": "sha512-4ve/fELgVFFShX7P8QfEiW5BUZ2oZxBi7AKEPJ6gR7ZXjAmuKE7Potn1WWKH2T9uRUZh8nM6v+Waf0WU5q7bww==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.0.0-rc.3.tgz", + "integrity": "sha512-7FeJjOV2pNVesdNljzy1DvzhhShZ/pjQOmhFs4GXBXTJCPNQP5iZTSR6b3ehN8L96yVPT5JsdjX4MiyGw2QPnQ==", "dev": true, "funding": { "type": "opencollective", @@ -4474,18 +4474,18 @@ } }, "node_modules/@storybook/preview-api": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.0.0-beta.59.tgz", - "integrity": "sha512-ZRTStJ57wi/ovN0Y1OXp5Ap9WJ5KDDNfmk8cCVgyyPZ1QrwqnrTkHwbLl+DlmFYMJBAiF0s2Rfvcm70hQfJK8Q==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.0.0-rc.3.tgz", + "integrity": "sha512-iIifbFRmrFIlLzApTZyCWmI3JNt2IxfM8Dm4rNlMJBifjtgHfpxA+DsQI8mW8UGM64a8N1wF7azkN6cnRz6v2w==", "dev": true, "dependencies": { - "@storybook/channel-postmessage": "7.0.0-beta.59", - "@storybook/channels": "7.0.0-beta.59", - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/channel-postmessage": "7.0.0-rc.3", + "@storybook/channels": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/csf": "next", "@storybook/global": "^5.0.0", - "@storybook/types": "7.0.0-beta.59", + "@storybook/types": "7.0.0-rc.3", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", @@ -4502,9 +4502,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.0.0-beta.59.tgz", - "integrity": "sha512-YI8DiC7kMutDx2H8q/jVNotjTAv/W74a9LzYlPwn67yWnyj4rVNFfCTCsd/ji5rLDe3SZZc/b3sN7TOumCdBQQ==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.0.0-rc.3.tgz", + "integrity": "sha512-3rQsOPwNlHyV93311GaGP28BFobEaNfw+djxDBxocNrL07xvY3u/XE6bShKOJ6R28ATaGwXUxmj2Cwtd2GxASg==", "dev": true, "funding": { "type": "opencollective", @@ -4516,12 +4516,12 @@ } }, "node_modules/@storybook/router": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.0.0-beta.59.tgz", - "integrity": "sha512-WBX6d5XzElzd0bUHaV5RxlTbynhaJOU1vMB13EgAMgjN0orqOJcTxou/EtjsqqxxnXGwDCNhkjZgY3wTAhhN4g==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.0.0-rc.3.tgz", + "integrity": "sha512-D3Uoz1WRFWH3QUjyrDObwCVRYXdSGZGpCN2eh6gjlKC9VQ9ohaGerEdXSsYnAj2lovhfze8oXp+PS1VKJTlpgg==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", "memoizerific": "^1.11.3", "qs": "^6.10.0" }, @@ -4603,13 +4603,13 @@ } }, "node_modules/@storybook/telemetry": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.0.0-beta.59.tgz", - "integrity": "sha512-63ynNAYq8/SV7VUzH90rrLy//Kj5F9ALiF2VFoqpQb8PPeX8f0UYZMyCyPnnQPSZju36xtXnx46rNUYkrV42Dw==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.0.0-rc.3.tgz", + "integrity": "sha512-0vPVA1aTWCA6jr3iSOPCu8x3zpNUsyxYN30B4b6d3o2iO6YU/CZdm8rxzInv+bKkz2fHFDzCDsfZTgQ5VEggEw==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/core-common": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/core-common": "7.0.0-rc.3", "chalk": "^4.1.0", "detect-package-manager": "^2.0.1", "fetch-retry": "^5.0.2", @@ -4676,13 +4676,13 @@ } }, "node_modules/@storybook/theming": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.0-beta.59.tgz", - "integrity": "sha512-LBSZWZq/b4kUC9QsknUlOvahQ1aAKRjGnZ8GRbsyTIXy/8EvMx4YTGPOjbnS+3H5DIhm+YwG/OM8efJX75Yc1A==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.0-rc.3.tgz", + "integrity": "sha512-sVt8Egv9CmeDnTJYPsyvlvHE+GX8hAczc1SvuoLeXs/1gsEsnVn6ovCFGSV0Rc7sAr5oSv794/pFUsboU8tYqg==", "dev": true, "dependencies": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" }, @@ -4696,12 +4696,12 @@ } }, "node_modules/@storybook/types": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0-beta.59.tgz", - "integrity": "sha512-vDhf84KeE8zUmy1LGZLdhrrLCLTTh2Fd8ddSJs8M94PfiToPcawf0KMzaE8yPY9JHl0CtubvjPVDX6xw4v0oAw==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0-rc.3.tgz", + "integrity": "sha512-2xxgs4zL1QZUdut+Zt5sQdgNCUP0n/y5CRbvEpDwkcuE4KWbfJYixJNumioZ6UwK17ZE9gf4ZxVgttvexmW8eg==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.0-beta.59", + "@storybook/channels": "7.0.0-rc.3", "@types/babel__core": "^7.0.0", "@types/express": "^4.7.0", "file-system-cache": "^2.0.0" @@ -4712,18 +4712,18 @@ } }, "node_modules/@storybook/web-components": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/web-components/-/web-components-7.0.0-beta.59.tgz", - "integrity": "sha512-xbo5pbV9OC2gA75s7sN8TowEusVKiklpH8yBfvWFFouhNGjJ7XTPWN7Z42gw6xxlaqJNfnT59eBLV/DMbO6qmQ==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/web-components/-/web-components-7.0.0-rc.3.tgz", + "integrity": "sha512-enG/VoXu7i5r39Ao4qg6a4Q/aPX5LYkkFaj955BLkUJXW1ZANwjRqo6JSquC4tW8Dm1FYN8sJBAzO6M8YRlbnA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/core-client": "7.0.0-beta.59", - "@storybook/docs-tools": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/core-client": "7.0.0-rc.3", + "@storybook/docs-tools": "7.0.0-rc.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "ts-dedent": "^2.0.0" }, "engines": { @@ -4738,15 +4738,15 @@ } }, "node_modules/@storybook/web-components-vite": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/web-components-vite/-/web-components-vite-7.0.0-beta.59.tgz", - "integrity": "sha512-G7GHjYv5FSn1C8zWVfrOhM4h9NlnxHwv2HMKXXXSlOfUtDsTJm05OV7N0IDqnPdbEduqJnb4WCB0KdQwOLKrCg==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/web-components-vite/-/web-components-vite-7.0.0-rc.3.tgz", + "integrity": "sha512-A/+tm879pmD9UwWDJdYimwuIaSQPYyf2FSwL/+zIJ6ZS63LFimkIkt/C7hWD6pYNzk1w36VESfRhEeP3Hu4VNA==", "dev": true, "dependencies": { - "@storybook/builder-vite": "7.0.0-beta.59", - "@storybook/core-server": "7.0.0-beta.59", - "@storybook/node-logger": "7.0.0-beta.59", - "@storybook/web-components": "7.0.0-beta.59", + "@storybook/builder-vite": "7.0.0-rc.3", + "@storybook/core-server": "7.0.0-rc.3", + "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/web-components": "7.0.0-rc.3", "magic-string": "^0.27.0" }, "engines": { @@ -8506,9 +8506,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.29.0.tgz", - "integrity": "sha512-ScMn3uZNAFhK2DGoEfErguoiAHhV2Ju+oJo/jK08p7B3f3UhocUrCCkTvnZaiS+edl5nlIoiBXKcwMc6elv4KQ==", + "version": "3.29.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.29.1.tgz", + "integrity": "sha512-QmchCua884D8wWskMX8tW5ydINzd8oSJVx38lx/pVkFGqztxt73GYre3pm/hyYq8bPf+MW5In4I/uRShFDsbrA==", "dev": true, "dependencies": { "browserslist": "^4.21.5" @@ -9022,9 +9022,9 @@ "dev": true }, "node_modules/ejs": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", "dev": true, "dependencies": { "jake": "^10.8.5" @@ -10471,9 +10471,9 @@ "dev": true }, "node_modules/flow-parser": { - "version": "0.200.1", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.200.1.tgz", - "integrity": "sha512-N6gxgo0iQx0G2m3aJjg3RLxNLUG3EBYgBN/xDDPGQXSjvqNkTdEd2t1myE36Xi7GndZQWngDP7jf0GvxdL6pRg==", + "version": "0.201.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.201.0.tgz", + "integrity": "sha512-G4oeDNpNGyIrweF9EnoHatncAihMT0tQgV6NMdyM5I7fhrz9Pr13PJ2KLQ673O4wj9KooTdBpeeYHdDNAQoyyw==", "dev": true, "engines": { "node": ">=0.4.0" @@ -12234,20 +12234,20 @@ } }, "node_modules/jest-haste-map": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.4.3.tgz", - "integrity": "sha512-eZIgAS8tvm5IZMtKlR8Y+feEOMfo2pSQkmNbufdbMzMSn9nitgGxF1waM/+LbryO3OkMcKS98SUb+j/cQxp/vQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", + "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", "dev": true, "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.5.0", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", "jest-regex-util": "^29.4.3", - "jest-util": "^29.4.3", - "jest-worker": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", "micromatch": "^4.0.4", "walker": "^1.0.8" }, @@ -12268,12 +12268,12 @@ } }, "node_modules/jest-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.3.tgz", - "integrity": "sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -12337,13 +12337,13 @@ } }, "node_modules/jest-worker": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.4.3.tgz", - "integrity": "sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", + "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", "dev": true, "dependencies": { "@types/node": "*", - "jest-util": "^29.4.3", + "jest-util": "^29.5.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -13390,9 +13390,9 @@ } }, "node_modules/minipass": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", - "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz", + "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==", "dev": true, "engines": { "node": ">=8" @@ -15401,9 +15401,9 @@ } }, "node_modules/regexpu-core": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.1.tgz", - "integrity": "sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, "dependencies": { "@babel/regjsgen": "^0.8.0", @@ -16363,12 +16363,12 @@ "dev": true }, "node_modules/storybook": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.0.0-beta.59.tgz", - "integrity": "sha512-YqG++MuzR1b6caFqVPZAHJKaBml0LL9OfhLtk+dCfsVNBAF5ZHuzXw4Okl+HTb6Fzup/LNmca3W1fM/iyDZ91w==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.0.0-rc.3.tgz", + "integrity": "sha512-1EFr7o7dcgFKsI6TBqvxYEKGPzKvJ8qzCl3BM/1kZP5BmWqQPbanOQLVkTb4zDb5e+Q+ibDNH5k8D1lQFdsHcg==", "dev": true, "dependencies": { - "@storybook/cli": "7.0.0-beta.59" + "@storybook/cli": "7.0.0-rc.3" }, "bin": { "sb": "index.js", @@ -19589,22 +19589,22 @@ } }, "@jest/transform": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.4.3.tgz", - "integrity": "sha512-8u0+fBGWolDshsFgPQJESkDa72da/EVwvL+II0trN2DR66wMwiQ9/CihaGfHdlLGFzbBZwMykFtxuwFdZqlKwg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", + "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/types": "^29.4.3", + "@jest/types": "^29.5.0", "@jridgewell/trace-mapping": "^0.3.15", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.3", + "jest-haste-map": "^29.5.0", "jest-regex-util": "^29.4.3", - "jest-util": "^29.4.3", + "jest-util": "^29.5.0", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -19654,9 +19654,9 @@ } }, "@jest/types": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.3.tgz", - "integrity": "sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { "@jest/schemas": "^29.4.3", @@ -20024,40 +20024,40 @@ "dev": true }, "@storybook/addon-a11y": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-7.0.0-beta.59.tgz", - "integrity": "sha512-rQLyNv/qmxjQD750MUO8YKZikVHtvYDD6IsJxrhO4xM0UUqaOeZC1JUeppNJKCwItyB3AyANcy6Cl8O0Cc/U3Q==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-7.0.0-rc.3.tgz", + "integrity": "sha512-V/wl19IzsOA0OkUofKKbL09Qj93ywRHW3Pjq3pOLRE178zCumWuBKxpr+dS4C1lNwecIU1ffp8408RSzZ4K5sA==", "dev": true, "requires": { - "@storybook/addon-highlight": "7.0.0-beta.59", - "@storybook/channels": "7.0.0-beta.59", - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/addon-highlight": "7.0.0-rc.3", + "@storybook/channels": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/theming": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/theming": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "axe-core": "^4.2.0", "lodash": "^4.17.21", "react-resize-detector": "^7.1.2" } }, "@storybook/addon-actions": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.0.0-beta.59.tgz", - "integrity": "sha512-yK4fZCkYG+/FppEw/a1eUFIiNEEmElzlo42TXn0DHywsZaBEMei5JCvqh1+KprUVJo20mGuTxLDMkRri4JHXYw==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.0.0-rc.3.tgz", + "integrity": "sha512-kyPuSN/PzBnW3w9D/KBEmMqfeGpBeY6Ha2VVPz3BBqcWSHfw0AbHFqvnqluubaHZl1VokE88QT6RxkdyBg33uw==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/theming": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/theming": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "dequal": "^2.0.2", "lodash": "^4.17.21", "polished": "^4.2.2", @@ -20069,65 +20069,65 @@ } }, "@storybook/addon-backgrounds": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.0-beta.59.tgz", - "integrity": "sha512-eB30laoU/5uqk6Q6zYb6ckkkvxXCi6O/vf0kg5H8RzKOwHc+OccCqCNLSKltoKTD3OGzGj6T+dLSCdzRcQ3+PQ==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.0-rc.3.tgz", + "integrity": "sha512-6qIwuNwzLFdsLCjj5rO6TCaBvAGUYbrLpw2EQyKg5J/5GxqhMU/HsinCViok2VEn/z45vji9FI1W6bmo7t4LNQ==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/theming": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/theming": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "memoizerific": "^1.11.3", "ts-dedent": "^2.0.0" } }, "@storybook/addon-controls": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.0.0-beta.59.tgz", - "integrity": "sha512-pSpIxKYLAcvgp5eOC44BEY4jIW5rjCSvqchieblflF4eScPy886gC1nPRV3oo7QRckiZT3HE5UZ96YK1U3Ahew==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.0.0-rc.3.tgz", + "integrity": "sha512-16E0AJ1+psFDbL6abOfLFg0zWhUQeJjcM3RKEzJjYZEBuKKL86LAvKhnlkyCUW3VlLN23V0akY6Gev81DR/BfA==", "dev": true, "requires": { - "@storybook/blocks": "7.0.0-beta.59", - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/core-common": "7.0.0-beta.59", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/node-logger": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/theming": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/blocks": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/core-common": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/theming": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" } }, "@storybook/addon-docs": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.0.0-beta.59.tgz", - "integrity": "sha512-oipJtO/O2+/0sC5n9r+9crHnz+f0XEAMkYN/O/H5B0Z+N6T3uP4xnKTFdowpBUcEP6UaRL2oNYHNywzILdQYlA==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.0.0-rc.3.tgz", + "integrity": "sha512-UPy+o7IBly2TgCQ7hviaExq++KQSPS7/+/8iLUdv81mtRm3hMBMARmom+wjXfciGHp1re1bazQQYoDsOcorDhA==", "dev": true, "requires": { "@babel/core": "^7.20.2", "@babel/plugin-transform-react-jsx": "^7.19.0", "@jest/transform": "^29.3.1", "@mdx-js/react": "^2.1.5", - "@storybook/blocks": "7.0.0-beta.59", - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/csf-plugin": "7.0.0-beta.59", - "@storybook/csf-tools": "7.0.0-beta.59", + "@storybook/blocks": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/csf-plugin": "7.0.0-rc.3", + "@storybook/csf-tools": "7.0.0-rc.3", "@storybook/global": "^5.0.0", "@storybook/mdx2-csf": "next", - "@storybook/node-logger": "7.0.0-beta.59", - "@storybook/postinstall": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/react-dom-shim": "7.0.0-beta.59", - "@storybook/theming": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/postinstall": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/react-dom-shim": "7.0.0-rc.3", + "@storybook/theming": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "fs-extra": "^11.1.0", "remark-external-links": "^8.0.0", "remark-slug": "^6.0.0", @@ -20135,113 +20135,113 @@ } }, "@storybook/addon-essentials": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.0.0-beta.59.tgz", - "integrity": "sha512-yVGQR8HT4OOZ2lMaRK4KsB6sahzIRvspwkwAEyk/tRm4NZ6KUxv05y1cMFlbMJ/JUX/tN5TBOwMIvumbUu/J+w==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.0.0-rc.3.tgz", + "integrity": "sha512-RLA1RgjwuDsRKp2QjBAx2XsgTZ+Dura2k8xCTyBLf0yxnleC8hiAxLwTJSSdDEUuiXxWsBbu0vhHzYnCCVTDnw==", "dev": true, "requires": { - "@storybook/addon-actions": "7.0.0-beta.59", - "@storybook/addon-backgrounds": "7.0.0-beta.59", - "@storybook/addon-controls": "7.0.0-beta.59", - "@storybook/addon-docs": "7.0.0-beta.59", - "@storybook/addon-highlight": "7.0.0-beta.59", - "@storybook/addon-measure": "7.0.0-beta.59", - "@storybook/addon-outline": "7.0.0-beta.59", - "@storybook/addon-toolbars": "7.0.0-beta.59", - "@storybook/addon-viewport": "7.0.0-beta.59", - "@storybook/core-common": "7.0.0-beta.59", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/node-logger": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", + "@storybook/addon-actions": "7.0.0-rc.3", + "@storybook/addon-backgrounds": "7.0.0-rc.3", + "@storybook/addon-controls": "7.0.0-rc.3", + "@storybook/addon-docs": "7.0.0-rc.3", + "@storybook/addon-highlight": "7.0.0-rc.3", + "@storybook/addon-measure": "7.0.0-rc.3", + "@storybook/addon-outline": "7.0.0-rc.3", + "@storybook/addon-toolbars": "7.0.0-rc.3", + "@storybook/addon-viewport": "7.0.0-rc.3", + "@storybook/core-common": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", "ts-dedent": "^2.0.0" } }, "@storybook/addon-highlight": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.0.0-beta.59.tgz", - "integrity": "sha512-JY3nChLZCWtAzjOUnztbPQzaXA2CKHi2bB0xfdgMLeWLN5bhYNpcmwMyAdu34vy6MYOHRlZutkifksUMUI2nDg==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.0.0-rc.3.tgz", + "integrity": "sha512-MeFIKfDpFrF33TPdl2ko2rie485AhfG2n0MFXA73L8Yzj5JPV+LVNa5eIKUUFyOMUGSkVjfFS6n63F08eqHbCw==", "dev": true, "requires": { - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.0.0-beta.59" + "@storybook/preview-api": "7.0.0-rc.3" } }, "@storybook/addon-links": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.0.0-beta.59.tgz", - "integrity": "sha512-9nDi8Zvy3mTBNTDIuZfIz6OevK2iCcUUOSspKn/1rJV+nMZ5xYtrWUGnW9P+z7WqOJ6CfXLIg4/sw97WLoJVyA==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.0.0-rc.3.tgz", + "integrity": "sha512-K2PMxVooGAgb8hCEU2oGUMzKjPLEPACH8NcRLs/fz9PKadepmijY0hBDC50SGkZd2HWSxXxyt6d5WaXTxhP8aw==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/csf": "next", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/router": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/router": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "prop-types": "^15.7.2", "ts-dedent": "^2.0.0" } }, "@storybook/addon-measure": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.0.0-beta.59.tgz", - "integrity": "sha512-iCGVzoGFJUj2oVqe+W5itKTZ9d+fIDdCuHBYB6I3KTuwJq9BEO9JivoIJScghADO9gaq20fVb5Hf+5IWb0riAA==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.0.0-rc.3.tgz", + "integrity": "sha512-N0HjObHjktlgWvOQcOqyC6/vFXERHzH7aP8L1RRrSnz+mP0XDO+62eBZunlnDGu4uAECH+AV/7LO+bmTMohulg==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59" + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3" } }, "@storybook/addon-outline": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.0.0-beta.59.tgz", - "integrity": "sha512-7GeLPyD+e4MNlMiLqa1GstvTQOqBeWDXClV+1QUa9dEbjqpe6SDLNWx0HoBvRFzW6/qtuutmxiNRJmBtvCVaWA==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.0.0-rc.3.tgz", + "integrity": "sha512-SocPRmzzu2wR3SiqMsPskfFumOd0Ph8MUTeJ2cwnaonqqHjjqxaEaFYio8AGmGaHLpY8PKtW0s75jU0oDh9Ezg==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "ts-dedent": "^2.0.0" } }, "@storybook/addon-toolbars": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.0.0-beta.59.tgz", - "integrity": "sha512-1MJIAXbBI/E93c0z7Sm66xGNpzm3OQbfK+jShgdKHYAwWkv1HMGDAwIJdA4Z5bf4tuU2vri4SSdi4GnQlXy4EA==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.0.0-rc.3.tgz", + "integrity": "sha512-qnvMWZAa3ELRNiVjj1sy0dJb2GzE5fga9SbsbVQQT2zBvou2e8XbiPRw0WHdwUU2Zj9t9/PVjz2+av7P8B+Cqg==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/theming": "7.0.0-beta.59" + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/theming": "7.0.0-rc.3" } }, "@storybook/addon-viewport": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.0.0-beta.59.tgz", - "integrity": "sha512-2cqs7+KKERWRpIE6Omfr/JaLcz8apu0JIJxL+pMUEQcYBl7noPNgXSOyDHVJYWcNM6cQTb8LkEKlZ9bJ5ut40w==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.0.0-rc.3.tgz", + "integrity": "sha512-GXBi7f4WNeM4yvKXKYNAMLDHauTOcLpimzf1wtyVapBLpwzcJHBaJTCHQ02yIcm6mU2TFbKXMmzC1uBZcCa+5w==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/theming": "7.0.0-beta.59", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/theming": "7.0.0-rc.3", "memoizerific": "^1.11.3", "prop-types": "^15.7.2" } @@ -20445,22 +20445,22 @@ } }, "@storybook/blocks": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.0.0-beta.59.tgz", - "integrity": "sha512-3srAVSWxP07gGQuB309T2gqd7yP9b4rkMwMiIal3o7jsxYFHmZjRONJa52XAT2CQkqjJx1NoMdNlHNMnMzRehg==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.0.0-rc.3.tgz", + "integrity": "sha512-mh4LQk2f/Q9n7Sqo6t02CspHubXmSgDY4S5vF3dTgVBM/sD0OxkAY3Pv+HTsXH36lQHYYUft7U7OfhZapgS4ng==", "dev": true, "requires": { - "@storybook/channels": "7.0.0-beta.59", - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/components": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/channels": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/components": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/csf": "next", - "@storybook/docs-tools": "7.0.0-beta.59", + "@storybook/docs-tools": "7.0.0-rc.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/theming": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/theming": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "@types/lodash": "^4.14.167", "color-convert": "^2.0.1", "dequal": "^2.0.2", @@ -20475,15 +20475,15 @@ } }, "@storybook/builder-manager": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.0.0-beta.59.tgz", - "integrity": "sha512-cWm5eCGZraW9fAnL0Cp80M5QYMXeWZ538k9WWq2uG1FYXLCnEl6J7X4acJ4d2hYTF+XvwEMeWB5i4z435kgi/Q==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.0.0-rc.3.tgz", + "integrity": "sha512-aScwYA9MWtqgiD39SkcwUlrR9RFbngv7jPoOaVMdXuMgNabMNz9417L9bCwSPwgO4XZ5a/nSEbGNLfOHfBemsw==", "dev": true, "requires": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "7.0.0-beta.59", - "@storybook/manager": "7.0.0-beta.59", - "@storybook/node-logger": "7.0.0-beta.59", + "@storybook/core-common": "7.0.0-rc.3", + "@storybook/manager": "7.0.0-rc.3", + "@storybook/node-logger": "7.0.0-rc.3", "@types/ejs": "^3.1.1", "@types/find-cache-dir": "^3.2.1", "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", @@ -20500,21 +20500,21 @@ } }, "@storybook/builder-vite": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-7.0.0-beta.59.tgz", - "integrity": "sha512-s7FbS/RisUrkmpSoY++FjUxYR3jXsCM5HE7rWxBkBFVwfURq6LcVC6ZZy9rdcp9NyvoW2ne2LqQP8sg+S2o00Q==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-7.0.0-rc.3.tgz", + "integrity": "sha512-v2d04PWfcITD7zI68d7XbCbOd+5vl3gIMEX5Xdsmuw3WcaqYxvDSE8GhL6zsBhrUyygV/8xhSaaxyfv8ImM0+w==", "dev": true, "requires": { - "@storybook/channel-postmessage": "7.0.0-beta.59", - "@storybook/channel-websocket": "7.0.0-beta.59", - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/core-common": "7.0.0-beta.59", - "@storybook/csf-plugin": "7.0.0-beta.59", + "@storybook/channel-postmessage": "7.0.0-rc.3", + "@storybook/channel-websocket": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/core-common": "7.0.0-rc.3", + "@storybook/csf-plugin": "7.0.0-rc.3", "@storybook/mdx2-csf": "next", - "@storybook/node-logger": "7.0.0-beta.59", - "@storybook/preview": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/preview": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "browser-assert": "^1.2.1", "es-module-lexer": "^0.9.3", "express": "^4.17.3", @@ -20527,53 +20527,53 @@ } }, "@storybook/channel-postmessage": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-7.0.0-beta.59.tgz", - "integrity": "sha512-TVvUBJpaxfmF9ap4lbA76ez4EJUM8BO4tpXn2w4tcs0HZUUFmCaltcUVk+KJLE2ZcQpDFNhXtR9nk1DPJtHy9A==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-7.0.0-rc.3.tgz", + "integrity": "sha512-1uptuCjA4vAvvoxNoIJPTIpSARzJnLU7eahRhTPwELBnCH0ObqvgInge0cvbYsaTRDNV90oBbEKlxLf1Zb1BhQ==", "dev": true, "requires": { - "@storybook/channels": "7.0.0-beta.59", - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/channels": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/global": "^5.0.0", "qs": "^6.10.0", "telejson": "^7.0.3" } }, "@storybook/channel-websocket": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-7.0.0-beta.59.tgz", - "integrity": "sha512-C7a1vF6neYqyh7pqSf7JUtNntpF9eOzgcDVJAnjrP+nfqcdU3Av8pwO90K3M9qL2sP+V/oDuM/jA8fysxTs2BA==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-7.0.0-rc.3.tgz", + "integrity": "sha512-706jopde+OZZkqsmrRuwd9utusqiKianiF8cvjAxrxogSx8LwHk8jxrEKHxHiZUEWDS3JxJoIYSV8gxH9hcjsA==", "dev": true, "requires": { - "@storybook/channels": "7.0.0-beta.59", - "@storybook/client-logger": "7.0.0-beta.59", + "@storybook/channels": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.0-rc.3", "@storybook/global": "^5.0.0", "telejson": "^7.0.3" } }, "@storybook/channels": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0-beta.59.tgz", - "integrity": "sha512-dd0kHUfIM8oolqMq2R9/YcN5+NPq9hQz8upnAsiJZ++TrJyarBUAGaR5njC8gVhFKouxyUZsltVZ3X/9T1BIsg==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0-rc.3.tgz", + "integrity": "sha512-jaODIck+um16Fn2k1vwHK9RNk2J8hLVyzLSkoGM40TsMF5nichwI3rA6225pLk015itJbhCAi/RhaMFBI+ZtsA==", "dev": true }, "@storybook/cli": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.0.0-beta.59.tgz", - "integrity": "sha512-jiZhBh5F0TJm8WZlojeaVC8GgGort9ppHeX+mXip5KGCyN3iewa/hdCt1CdkdQB/mzG4NPoEaP3QlyDDzfBFhQ==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.0.0-rc.3.tgz", + "integrity": "sha512-g1nWHLI1fiDK2dnLpmbhbrm6ZaAwuZkUgEGtlEQCPTHWVRZj2fJT0y5zjgBIhFpdkB/X8MZzgVxqhTJF0uX39Q==", "dev": true, "requires": { "@babel/core": "^7.20.2", "@babel/preset-env": "^7.20.2", - "@ndelangen/get-tarball": "^3.0.3", - "@storybook/codemod": "7.0.0-beta.59", - "@storybook/core-common": "7.0.0-beta.59", - "@storybook/core-server": "7.0.0-beta.59", - "@storybook/csf-tools": "7.0.0-beta.59", - "@storybook/node-logger": "7.0.0-beta.59", - "@storybook/telemetry": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@ndelangen/get-tarball": "^3.0.7", + "@storybook/codemod": "7.0.0-rc.3", + "@storybook/core-common": "7.0.0-rc.3", + "@storybook/core-server": "7.0.0-rc.3", + "@storybook/csf-tools": "7.0.0-rc.3", + "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/telemetry": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "@types/semver": "^7.3.4", "boxen": "^5.1.2", "chalk": "^4.1.0", @@ -20775,27 +20775,27 @@ } }, "@storybook/client-logger": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0-beta.59.tgz", - "integrity": "sha512-xEl+RNAsMZ+AvdatVd8GVzIvH6Dm4kaIXs3iyCRr4HXIdAxNB53tReqDDdzsK4LamMf5003Mlo4Szcb4QTkskQ==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0-rc.3.tgz", + "integrity": "sha512-cC7lq+S4n5fFooDCyefgTAOfipadiZskNuzsQF7drE9nQLZ8GflLdmTKK//5NQUHKPzF7r+4Q5DAK4I3nqIkxA==", "dev": true, "requires": { "@storybook/global": "^5.0.0" } }, "@storybook/codemod": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.0.0-beta.59.tgz", - "integrity": "sha512-G8hR7ooZMkS0gpIP+2IutGaTu18Mb6wcjv5D6NidRW3R/t6PBS53tTsd0RYLCmEnmKgOn4gibBUgQtM1dtG0jQ==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.0.0-rc.3.tgz", + "integrity": "sha512-P965X5g4WIBfrYMLYPQIvwp9wfIf5bnUIVgwjeGUDLDLIst6RXmHGik9MHLy2Ic/MXTsf/kwK5qY9pj95t8DZg==", "dev": true, "requires": { "@babel/core": "~7.21.0", "@babel/preset-env": "~7.20.2", "@babel/types": "~7.21.2", "@storybook/csf": "next", - "@storybook/csf-tools": "7.0.0-beta.59", - "@storybook/node-logger": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/csf-tools": "7.0.0-rc.3", + "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "cross-spawn": "^7.0.3", "globby": "^11.0.2", "jscodeshift": "^0.14.0", @@ -20805,39 +20805,39 @@ } }, "@storybook/components": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.0.0-beta.59.tgz", - "integrity": "sha512-Cmfs2B0YgT7pqRJL6EhI6ipIQ2Ma72IVrFpM7gD6X8H81u8BjtsFFpfZnUUtkN9CbIsk8uQ52efv8aw38AzK9g==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.0.0-rc.3.tgz", + "integrity": "sha512-PeQFr2hZvLnxLswKihw1Ro5wCqmNZeSE4q+tFdifhLVIqP/OwHG+ShiLCHQ1aEa0Z3Ub+80m7uPzg69+y9m+bQ==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", "@storybook/csf": "next", "@storybook/global": "^5.0.0", - "@storybook/theming": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/theming": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "memoizerific": "^1.11.3", "use-resize-observer": "^9.1.0", "util-deprecate": "^1.0.2" } }, "@storybook/core-client": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.0.0-beta.59.tgz", - "integrity": "sha512-M/APRzOEyhjkhVXLHVs3lMkNI+MC11PF6Z2M8hXSlv+xqHSnC2bHGwoay5KSjLY29yEZkxuauCYwvOywzTdJQw==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.0.0-rc.3.tgz", + "integrity": "sha512-epUiHzFQNoEr5PYq9069SliQzHl5fVQj94aWdGZWCQPGldxiFtCNB7o32NzwwIVzXOKPzU38qg2B4738jt/1XQ==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59" + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3" } }, "@storybook/core-common": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.0.0-beta.59.tgz", - "integrity": "sha512-oHj+QisjtPhAt4uvbBf8bdVLifsKyu2HkwTwy++eCnMGCEb/L370TFQyPqL4olJY7vVNHx2aFduUTP9qoUawrQ==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.0.0-rc.3.tgz", + "integrity": "sha512-uUIs14+35ubRcpYwuX0OHW05tSDC5jeNEY8gv2EjcexBLeNozfGV4Tf5/ncG8glVbp8jGUlu2S3XJZoHKHDSqQ==", "dev": true, "requires": { - "@storybook/node-logger": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "@types/node": "^16.0.0", "@types/pretty-hrtime": "^1.0.0", "chalk": "^4.1.0", @@ -20859,9 +20859,9 @@ }, "dependencies": { "@types/node": { - "version": "16.18.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.14.tgz", - "integrity": "sha512-wvzClDGQXOCVNU4APPopC2KtMYukaF1MN/W3xAmslx22Z4/IF1/izDMekuyoUlwfnDHYCIZGaj7jMwnJKBTxKw==", + "version": "16.18.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.16.tgz", + "integrity": "sha512-ZOzvDRWp8dCVBmgnkIqYCArgdFOO9YzocZp8Ra25N/RStKiWvMOXHMz+GjSeVNe5TstaTmTWPucGJkDw0XXJWA==", "dev": true }, "ansi-styles": { @@ -20901,31 +20901,31 @@ } }, "@storybook/core-events": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.0.0-beta.59.tgz", - "integrity": "sha512-kmCui9J/u70m4dMaj8ZfqXwgbdPr5stYBTmwdB3sbiFDH4YJpI1QC4pYQdN7vQLMuLF6IDsVhNlJro/aeuwBEg==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.0.0-rc.3.tgz", + "integrity": "sha512-EBihNmxxiIJbPt6OhCTXFPl2T/9OXNVKtsy8hchBNEzp+UJGyeHx+t9K6tRvbcmt5TG/y7C7ZsYx9U28JTwNkg==", "dev": true }, "@storybook/core-server": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.0.0-beta.59.tgz", - "integrity": "sha512-OdbrZEnXmWy4ie6hNypEWQpFci9NciAavS6ggN1ga06OD1b2L3rrbFo+5nNKv9tHqlTDvyL2s1Da4JTYtVdMLg==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.0.0-rc.3.tgz", + "integrity": "sha512-211514C7w8hvu/bLP97KdF7TM8FpcchgDAhldODDvKFyxFTHMcQFj3ABlptsWFO6JxZsy32hG8qi6phFUtceQA==", "dev": true, "requires": { "@aw-web-design/x-default-browser": "1.4.88", "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "7.0.0-beta.59", - "@storybook/core-common": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/builder-manager": "7.0.0-rc.3", + "@storybook/core-common": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/csf": "next", - "@storybook/csf-tools": "7.0.0-beta.59", + "@storybook/csf-tools": "7.0.0-rc.3", "@storybook/docs-mdx": "next", "@storybook/global": "^5.0.0", - "@storybook/manager": "7.0.0-beta.59", - "@storybook/node-logger": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/telemetry": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/manager": "7.0.0-rc.3", + "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/telemetry": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "@types/detect-port": "^1.3.0", "@types/node": "^16.0.0", "@types/node-fetch": "^2.5.7", @@ -20958,9 +20958,9 @@ }, "dependencies": { "@types/node": { - "version": "16.18.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.14.tgz", - "integrity": "sha512-wvzClDGQXOCVNU4APPopC2KtMYukaF1MN/W3xAmslx22Z4/IF1/izDMekuyoUlwfnDHYCIZGaj7jMwnJKBTxKw==", + "version": "16.18.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.16.tgz", + "integrity": "sha512-ZOzvDRWp8dCVBmgnkIqYCArgdFOO9YzocZp8Ra25N/RStKiWvMOXHMz+GjSeVNe5TstaTmTWPucGJkDw0XXJWA==", "dev": true }, "ansi-styles": { @@ -21033,19 +21033,19 @@ } }, "@storybook/csf-plugin": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.0.0-beta.59.tgz", - "integrity": "sha512-+C5pWY1Bhr7vtDG7OI2wjKDKz1o7DFLiChG8M1hdX/o3TD97bh24GVmJW9GEXk+A+7rG7XuxHcu2x0piq3Fs8g==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.0.0-rc.3.tgz", + "integrity": "sha512-+r2m09o/5B846Q8ykDWjwPJSZXc3i4Z6vLc04SxIR/VJffF7K0Z/vFmTcPz8Qg5wFdfvy/HFqTLpaOJtVwWBdA==", "dev": true, "requires": { - "@storybook/csf-tools": "7.0.0-beta.59", + "@storybook/csf-tools": "7.0.0-rc.3", "unplugin": "^0.10.2" } }, "@storybook/csf-tools": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.0.0-beta.59.tgz", - "integrity": "sha512-b8wxDFKOFZS5CQUjmb+vToSERYmbpIkFSMv+7/jixfYdS1O6Z8z3mXxqm+XljkNrKhi6EID42D8RsxBNhg/8gg==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.0.0-rc.3.tgz", + "integrity": "sha512-I3QG2buAswIYVbYlstmZAamwLopW6daHj2+wrod+whTmeKShp0rbOrVkU0M3Hpj9CVzFM1/4YqCNOBkS2XTnsw==", "dev": true, "requires": { "@babel/generator": "~7.21.1", @@ -21053,7 +21053,7 @@ "@babel/traverse": "~7.21.2", "@babel/types": "~7.21.2", "@storybook/csf": "next", - "@storybook/types": "7.0.0-beta.59", + "@storybook/types": "7.0.0-rc.3", "fs-extra": "^11.1.0", "recast": "^0.23.1", "ts-dedent": "^2.0.0" @@ -21066,15 +21066,15 @@ "dev": true }, "@storybook/docs-tools": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.0.0-beta.59.tgz", - "integrity": "sha512-UatE0EFvPy2dsSa7zqcsQ5mUmGopKE+/2RyQkCE+tTqY38KssyOuHSrg0mc6dUvBZngD3AWKIOuNZlLB1Eg21w==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.0.0-rc.3.tgz", + "integrity": "sha512-1uGIMq0+t8AUJyj0jkta7Imr3vFLkX8oRXhX5zi7znjWMhgeXKskEFujvCcz7eI1NIU9x2WvFwbtSzWDpdC/0g==", "dev": true, "requires": { "@babel/core": "^7.12.10", - "@storybook/core-common": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/core-common": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "@types/doctrine": "^0.0.3", "doctrine": "^3.0.0", "lodash": "^4.17.21" @@ -21087,25 +21087,25 @@ "dev": true }, "@storybook/manager": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.0.0-beta.59.tgz", - "integrity": "sha512-xwSuk/izrjUn0hGzs6uiu+YfMZgvnyzGIrEWqPEwQWomW2oVyY/pdtCEsR/9Yv6smlLk4f6xh++1qG26XgceCg==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.0.0-rc.3.tgz", + "integrity": "sha512-8Q/vpHkvWQ/fZHRPFOgGC4Qhgpmafe9GV2QKk3yRA/p9zcW4UzP9fbL4qw6tq+5GLM/kFKArBu28ZA7L7sKB9A==", "dev": true }, "@storybook/manager-api": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.0.0-beta.59.tgz", - "integrity": "sha512-mNbqUNEzLWacxjACnXOfufmcMB70z/z5XDjoP1zYc6QDrnCaLF/L7FwMhTo1J2/6wvQXcvYj25RiCZHm75gMXQ==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.0.0-rc.3.tgz", + "integrity": "sha512-Pa+LabGYakPd9RuS8G7tCp3hPjZwGZL95Dj+yef0bM9WmYBimNjaUsqVJOGttuE4TLXjUIU9+58YImN7QrGfbQ==", "dev": true, "requires": { - "@storybook/channels": "7.0.0-beta.59", - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/channels": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/csf": "next", "@storybook/global": "^5.0.0", - "@storybook/router": "7.0.0-beta.59", - "@storybook/theming": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/router": "7.0.0-rc.3", + "@storybook/theming": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", @@ -21148,9 +21148,9 @@ "dev": true }, "@storybook/node-logger": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.0.0-beta.59.tgz", - "integrity": "sha512-DJOtqed/iL/Mpbci3ZwDmZwvnheqZzSOmrk2YsKmJagnQzS0A9+ZZg7tu/eFuvBnILmhVDzFBOloD8hXRSOC7w==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.0.0-rc.3.tgz", + "integrity": "sha512-ViWIJUdFUTrFtcoO88T3h55ryjl73aMNyn8vPvIgejJoJfYMTB5ErI4zLquN23HNc+H9AKKm/qMFFSf9xjGORQ==", "dev": true, "requires": { "@types/npmlog": "^4.1.2", @@ -21196,30 +21196,30 @@ } }, "@storybook/postinstall": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.0.0-beta.59.tgz", - "integrity": "sha512-/SD0kacKKkvhr2qLQlPrJY+pYyP819RfwZDL4QY56/YpOwzEwWNhZDksQDuJTNCu8tr2XTLyqlfm0wFwi/DaGg==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.0.0-rc.3.tgz", + "integrity": "sha512-kOCJjixFwdnZxR6K45XR+6Q4UBzOLdabzh3aednQ/piiqj7ZdldaF75ZfoDhKPK4cjrd5AGU6/OWbsJQ+DLVMg==", "dev": true }, "@storybook/preview": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.0.0-beta.59.tgz", - "integrity": "sha512-4ve/fELgVFFShX7P8QfEiW5BUZ2oZxBi7AKEPJ6gR7ZXjAmuKE7Potn1WWKH2T9uRUZh8nM6v+Waf0WU5q7bww==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.0.0-rc.3.tgz", + "integrity": "sha512-7FeJjOV2pNVesdNljzy1DvzhhShZ/pjQOmhFs4GXBXTJCPNQP5iZTSR6b3ehN8L96yVPT5JsdjX4MiyGw2QPnQ==", "dev": true }, "@storybook/preview-api": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.0.0-beta.59.tgz", - "integrity": "sha512-ZRTStJ57wi/ovN0Y1OXp5Ap9WJ5KDDNfmk8cCVgyyPZ1QrwqnrTkHwbLl+DlmFYMJBAiF0s2Rfvcm70hQfJK8Q==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.0.0-rc.3.tgz", + "integrity": "sha512-iIifbFRmrFIlLzApTZyCWmI3JNt2IxfM8Dm4rNlMJBifjtgHfpxA+DsQI8mW8UGM64a8N1wF7azkN6cnRz6v2w==", "dev": true, "requires": { - "@storybook/channel-postmessage": "7.0.0-beta.59", - "@storybook/channels": "7.0.0-beta.59", - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/core-events": "7.0.0-beta.59", + "@storybook/channel-postmessage": "7.0.0-rc.3", + "@storybook/channels": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/core-events": "7.0.0-rc.3", "@storybook/csf": "next", "@storybook/global": "^5.0.0", - "@storybook/types": "7.0.0-beta.59", + "@storybook/types": "7.0.0-rc.3", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", @@ -21232,18 +21232,18 @@ } }, "@storybook/react-dom-shim": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.0.0-beta.59.tgz", - "integrity": "sha512-YI8DiC7kMutDx2H8q/jVNotjTAv/W74a9LzYlPwn67yWnyj4rVNFfCTCsd/ji5rLDe3SZZc/b3sN7TOumCdBQQ==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.0.0-rc.3.tgz", + "integrity": "sha512-3rQsOPwNlHyV93311GaGP28BFobEaNfw+djxDBxocNrL07xvY3u/XE6bShKOJ6R28ATaGwXUxmj2Cwtd2GxASg==", "dev": true }, "@storybook/router": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.0.0-beta.59.tgz", - "integrity": "sha512-WBX6d5XzElzd0bUHaV5RxlTbynhaJOU1vMB13EgAMgjN0orqOJcTxou/EtjsqqxxnXGwDCNhkjZgY3wTAhhN4g==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.0.0-rc.3.tgz", + "integrity": "sha512-D3Uoz1WRFWH3QUjyrDObwCVRYXdSGZGpCN2eh6gjlKC9VQ9ohaGerEdXSsYnAj2lovhfze8oXp+PS1VKJTlpgg==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", "memoizerific": "^1.11.3", "qs": "^6.10.0" } @@ -21298,13 +21298,13 @@ } }, "@storybook/telemetry": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.0.0-beta.59.tgz", - "integrity": "sha512-63ynNAYq8/SV7VUzH90rrLy//Kj5F9ALiF2VFoqpQb8PPeX8f0UYZMyCyPnnQPSZju36xtXnx46rNUYkrV42Dw==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.0.0-rc.3.tgz", + "integrity": "sha512-0vPVA1aTWCA6jr3iSOPCu8x3zpNUsyxYN30B4b6d3o2iO6YU/CZdm8rxzInv+bKkz2fHFDzCDsfZTgQ5VEggEw==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/core-common": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/core-common": "7.0.0-rc.3", "chalk": "^4.1.0", "detect-package-manager": "^2.0.1", "fetch-retry": "^5.0.2", @@ -21351,55 +21351,55 @@ } }, "@storybook/theming": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.0-beta.59.tgz", - "integrity": "sha512-LBSZWZq/b4kUC9QsknUlOvahQ1aAKRjGnZ8GRbsyTIXy/8EvMx4YTGPOjbnS+3H5DIhm+YwG/OM8efJX75Yc1A==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.0-rc.3.tgz", + "integrity": "sha512-sVt8Egv9CmeDnTJYPsyvlvHE+GX8hAczc1SvuoLeXs/1gsEsnVn6ovCFGSV0Rc7sAr5oSv794/pFUsboU8tYqg==", "dev": true, "requires": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" } }, "@storybook/types": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0-beta.59.tgz", - "integrity": "sha512-vDhf84KeE8zUmy1LGZLdhrrLCLTTh2Fd8ddSJs8M94PfiToPcawf0KMzaE8yPY9JHl0CtubvjPVDX6xw4v0oAw==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0-rc.3.tgz", + "integrity": "sha512-2xxgs4zL1QZUdut+Zt5sQdgNCUP0n/y5CRbvEpDwkcuE4KWbfJYixJNumioZ6UwK17ZE9gf4ZxVgttvexmW8eg==", "dev": true, "requires": { - "@storybook/channels": "7.0.0-beta.59", + "@storybook/channels": "7.0.0-rc.3", "@types/babel__core": "^7.0.0", "@types/express": "^4.7.0", "file-system-cache": "^2.0.0" } }, "@storybook/web-components": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/web-components/-/web-components-7.0.0-beta.59.tgz", - "integrity": "sha512-xbo5pbV9OC2gA75s7sN8TowEusVKiklpH8yBfvWFFouhNGjJ7XTPWN7Z42gw6xxlaqJNfnT59eBLV/DMbO6qmQ==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/web-components/-/web-components-7.0.0-rc.3.tgz", + "integrity": "sha512-enG/VoXu7i5r39Ao4qg6a4Q/aPX5LYkkFaj955BLkUJXW1ZANwjRqo6JSquC4tW8Dm1FYN8sJBAzO6M8YRlbnA==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-beta.59", - "@storybook/core-client": "7.0.0-beta.59", - "@storybook/docs-tools": "7.0.0-beta.59", + "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/core-client": "7.0.0-rc.3", + "@storybook/docs-tools": "7.0.0-rc.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-beta.59", - "@storybook/preview-api": "7.0.0-beta.59", - "@storybook/types": "7.0.0-beta.59", + "@storybook/manager-api": "7.0.0-rc.3", + "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/types": "7.0.0-rc.3", "ts-dedent": "^2.0.0" } }, "@storybook/web-components-vite": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/@storybook/web-components-vite/-/web-components-vite-7.0.0-beta.59.tgz", - "integrity": "sha512-G7GHjYv5FSn1C8zWVfrOhM4h9NlnxHwv2HMKXXXSlOfUtDsTJm05OV7N0IDqnPdbEduqJnb4WCB0KdQwOLKrCg==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@storybook/web-components-vite/-/web-components-vite-7.0.0-rc.3.tgz", + "integrity": "sha512-A/+tm879pmD9UwWDJdYimwuIaSQPYyf2FSwL/+zIJ6ZS63LFimkIkt/C7hWD6pYNzk1w36VESfRhEeP3Hu4VNA==", "dev": true, "requires": { - "@storybook/builder-vite": "7.0.0-beta.59", - "@storybook/core-server": "7.0.0-beta.59", - "@storybook/node-logger": "7.0.0-beta.59", - "@storybook/web-components": "7.0.0-beta.59", + "@storybook/builder-vite": "7.0.0-rc.3", + "@storybook/core-server": "7.0.0-rc.3", + "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/web-components": "7.0.0-rc.3", "magic-string": "^0.27.0" } }, @@ -24557,9 +24557,9 @@ "dev": true }, "core-js-compat": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.29.0.tgz", - "integrity": "sha512-ScMn3uZNAFhK2DGoEfErguoiAHhV2Ju+oJo/jK08p7B3f3UhocUrCCkTvnZaiS+edl5nlIoiBXKcwMc6elv4KQ==", + "version": "3.29.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.29.1.tgz", + "integrity": "sha512-QmchCua884D8wWskMX8tW5ydINzd8oSJVx38lx/pVkFGqztxt73GYre3pm/hyYq8bPf+MW5In4I/uRShFDsbrA==", "dev": true, "requires": { "browserslist": "^4.21.5" @@ -24969,9 +24969,9 @@ "dev": true }, "ejs": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", "dev": true, "requires": { "jake": "^10.8.5" @@ -26096,9 +26096,9 @@ "dev": true }, "flow-parser": { - "version": "0.200.1", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.200.1.tgz", - "integrity": "sha512-N6gxgo0iQx0G2m3aJjg3RLxNLUG3EBYgBN/xDDPGQXSjvqNkTdEd2t1myE36Xi7GndZQWngDP7jf0GvxdL6pRg==", + "version": "0.201.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.201.0.tgz", + "integrity": "sha512-G4oeDNpNGyIrweF9EnoHatncAihMT0tQgV6NMdyM5I7fhrz9Pr13PJ2KLQ673O4wj9KooTdBpeeYHdDNAQoyyw==", "dev": true }, "for-each": { @@ -27379,12 +27379,12 @@ } }, "jest-haste-map": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.4.3.tgz", - "integrity": "sha512-eZIgAS8tvm5IZMtKlR8Y+feEOMfo2pSQkmNbufdbMzMSn9nitgGxF1waM/+LbryO3OkMcKS98SUb+j/cQxp/vQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", + "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", "dev": true, "requires": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.5.0", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", @@ -27392,8 +27392,8 @@ "fsevents": "^2.3.2", "graceful-fs": "^4.2.9", "jest-regex-util": "^29.4.3", - "jest-util": "^29.4.3", - "jest-worker": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", "micromatch": "^4.0.4", "walker": "^1.0.8" } @@ -27405,12 +27405,12 @@ "dev": true }, "jest-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.3.tgz", - "integrity": "sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -27455,13 +27455,13 @@ } }, "jest-worker": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.4.3.tgz", - "integrity": "sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", + "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", "dev": true, "requires": { "@types/node": "*", - "jest-util": "^29.4.3", + "jest-util": "^29.5.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -28289,9 +28289,9 @@ "dev": true }, "minipass": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", - "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz", + "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==", "dev": true }, "minizlib": { @@ -29765,9 +29765,9 @@ "dev": true }, "regexpu-core": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.1.tgz", - "integrity": "sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, "requires": { "@babel/regjsgen": "^0.8.0", @@ -30517,12 +30517,12 @@ "dev": true }, "storybook": { - "version": "7.0.0-beta.59", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.0.0-beta.59.tgz", - "integrity": "sha512-YqG++MuzR1b6caFqVPZAHJKaBml0LL9OfhLtk+dCfsVNBAF5ZHuzXw4Okl+HTb6Fzup/LNmca3W1fM/iyDZ91w==", + "version": "7.0.0-rc.3", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.0.0-rc.3.tgz", + "integrity": "sha512-1EFr7o7dcgFKsI6TBqvxYEKGPzKvJ8qzCl3BM/1kZP5BmWqQPbanOQLVkTb4zDb5e+Q+ibDNH5k8D1lQFdsHcg==", "dev": true, "requires": { - "@storybook/cli": "7.0.0-beta.59" + "@storybook/cli": "7.0.0-rc.3" } }, "stream-shift": { diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index b28138d72b..4658635c7f 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -77,13 +77,13 @@ "@open-wc/testing": "^3.1.7", "@playwright/test": "^1.30.0", "@rollup/plugin-json": "^6.0.0", - "@storybook/addon-a11y": "^7.0.0-beta.59", - "@storybook/addon-actions": "^7.0.0-beta.59", - "@storybook/addon-essentials": "^7.0.0-beta.59", - "@storybook/addon-links": "^7.0.0-beta.59", + "@storybook/addon-a11y": "^7.0.0-rc.3", + "@storybook/addon-actions": "^7.0.0-rc.3", + "@storybook/addon-essentials": "^7.0.0-rc.3", + "@storybook/addon-links": "^7.0.0-rc.3", "@storybook/mdx2-csf": "^1.0.0-next.5", - "@storybook/web-components": "^7.0.0-beta.59", - "@storybook/web-components-vite": "^7.0.0-beta.59", + "@storybook/web-components": "^7.0.0-rc.3", + "@storybook/web-components-vite": "^7.0.0-rc.3", "@types/chai": "^4.3.4", "@types/lodash-es": "^4.17.6", "@types/mocha": "^10.0.0", @@ -118,7 +118,7 @@ "rollup-plugin-dts": "^5.2.0", "rollup-plugin-esbuild": "^5.0.0", "rollup-plugin-url": "^3.0.1", - "storybook": "^7.0.0-beta.59", + "storybook": "^7.0.0-rc.3", "tiny-glob": "^0.2.9", "typescript": "^4.9.5", "vite": "^4.1.4", diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/manifests.ts index c56e2a1154..6ebc283a4c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/manifests.ts @@ -9,9 +9,11 @@ const dashboards: Array = [ weight: 10, meta: { label: 'Redirect Management', - sections: ['Umb.Section.Content'], pathname: 'redirect-management', }, + conditions: { + sections: ['Umb.Section.Content'], + }, }, { type: 'dashboard', @@ -21,10 +23,12 @@ const dashboards: Array = [ weight: 20, meta: { label: 'Welcome', - sections: ['Umb.Section.Content'], pathname: 'welcome', }, - } + conditions: { + sections: ['Umb.Section.Content'], + }, + }, ]; export const manifests = [...dashboards]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts index cff6bf9108..45e447f840 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts @@ -5,7 +5,7 @@ import { UUIButtonState, UUIPaginationElement, UUIPaginationEvent } from '@umbra import { UMB_CONFIRM_MODAL_TOKEN } from '../../../shared/modals/confirm'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; import { UmbLitElement } from '@umbraco-cms/element'; -import { RedirectManagementResource, RedirectStatusModel, RedirectUrlModel } from '@umbraco-cms/backend-api'; +import { RedirectManagementResource, RedirectStatusModel, RedirectUrlResponseModel } from '@umbraco-cms/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @customElement('umb-dashboard-redirect-management') @@ -83,7 +83,7 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { itemsPerPage = 20; @state() - private _redirectData?: RedirectUrlModel[]; + private _redirectData?: RedirectUrlResponseModel[]; @state() private _trackerStatus = true; @@ -126,7 +126,7 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { if (data && data.status) this._trackerStatus = data.status === RedirectStatusModel.ENABLED ? true : false; } - private _removeRedirectHandler(data: RedirectUrlModel) { + private _removeRedirectHandler(data: RedirectUrlResponseModel) { const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { headline: 'Delete', content: html` @@ -145,7 +145,7 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { }); } - private async _removeRedirect(r: RedirectUrlModel) { + private async _removeRedirect(r: RedirectUrlResponseModel) { if (!r.key) return; const res = await tryExecuteAndNotify( this, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/menu-item/manifests.ts index 976c314278..fba786754b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/menu-item/manifests.ts @@ -8,9 +8,11 @@ const menuItem: ManifestMenuItem = { meta: { label: 'Document Blueprints', icon: 'umb:blueprint', - menus: ['Umb.Menu.Settings'], entityType: 'document-blueprint-root', }, + conditions: { + menus: ['Umb.Menu.Settings'], + }, }; export const manifests = [menuItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/workspace/document-blueprint-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/workspace/document-blueprint-root-workspace.element.ts index 0cd1a02646..b1440f2681 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/workspace/document-blueprint-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/workspace/document-blueprint-root-workspace.element.ts @@ -4,7 +4,7 @@ import { customElement } from 'lit/decorators.js'; @customElement('umb-document-blueprint-root-workspace') export class UmbDocumentBlueprintRootWorkspaceElement extends LitElement { render() { - return html`
Document Blueprint Root Workspace
`; + return html`
Document Blueprint Root Workspace
`; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/manifests.ts index 02774edbeb..5a38adea8f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/manifests.ts @@ -2,5 +2,12 @@ import { manifests as menuItemManifests } from './menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; import { manifests as repositoryManifests } from './repository/manifests'; +import { manifests as modalManifests } from './modals/manifests'; -export const manifests = [...menuItemManifests, ...treeManifests, ...repositoryManifests, ...workspaceManifests]; +export const manifests = [ + ...menuItemManifests, + ...treeManifests, + ...repositoryManifests, + ...workspaceManifests, + ...modalManifests, +]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/document-types-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/document-types-menu-item.element.ts index 83abf9d6b6..7362cf82cb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/document-types-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/document-types-menu-item.element.ts @@ -2,6 +2,7 @@ import { html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/element'; +// TODO: align menu items and tree items @customElement('umb-document-types-sidebar-menu-item') export class UmbDocumentTypesSidebarMenuItemElement extends UmbLitElement { @state() @@ -19,14 +20,17 @@ export class UmbDocumentTypesSidebarMenuItemElement extends UmbLitElement { // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)? // TODO: can we make this reusable? render() { - return html` - ${this._renderTree ? html`` : nothing} - `; + return html` + + ${this._renderTree ? html`` : nothing} + + `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts index a74b49aab2..fd1020a010 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts @@ -9,6 +9,8 @@ const menuItem: ManifestMenuItem = { meta: { label: 'Document Types', icon: 'umb:folder', + }, + conditions: { menus: ['Umb.Menu.Settings'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts new file mode 100644 index 0000000000..c515f6007f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts @@ -0,0 +1,71 @@ +import { html, nothing } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, state } from 'lit/decorators.js'; +import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { UmbDocumentTypeRepository } from '../../repository/document-type.repository'; +import { UmbAllowedDocumentTypesModalData, UmbAllowedDocumentTypesModalResult } from '.'; +import { UmbModalBaseElement } from '@umbraco-cms/modal'; +import { DocumentTypeTreeItemResponseModel } from '@umbraco-cms/backend-api'; + +@customElement('umb-allowed-document-types-modal') +export class UmbAllowedDocumentTypesModalElement extends UmbModalBaseElement< + UmbAllowedDocumentTypesModalData, + UmbAllowedDocumentTypesModalResult +> { + static styles = [UUITextStyles]; + + #documentTypeRepository = new UmbDocumentTypeRepository(this); + + @state() + private _allowedDocumentTypes: DocumentTypeTreeItemResponseModel[] = []; + + async firstUpdated() { + // TODO: show error + if (!this.data?.key) return; + + const { data } = await this.#documentTypeRepository.requestAllowedChildTypesOf(this.data.key); + + if (data) { + this._allowedDocumentTypes = data; + } + } + + private _handleCancel() { + this.modalHandler?.reject(); + } + + #onClick(event: PointerEvent) { + event.stopPropagation(); + const target = event.target as HTMLButtonElement; + const documentTypeKey = target.dataset.key; + if (!documentTypeKey) throw new Error('No document type key found'); + this.modalHandler?.submit({ documentTypeKey }); + } + + render() { + return html` + + + ${this._allowedDocumentTypes.length === 0 ? html`

No allowed types

` : nothing} + ${this._allowedDocumentTypes.map( + (item) => + html` + + ${item.icon ? html`` : nothing} + + ` + )} +
+ Cancel +
+ `; + } +} + +export default UmbAllowedDocumentTypesModalElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-allowed-document-types-modal': UmbAllowedDocumentTypesModalElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/index.ts new file mode 100644 index 0000000000..940cbc3074 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/index.ts @@ -0,0 +1,17 @@ +import { UmbModalToken } from '@umbraco-cms/modal'; + +export interface UmbAllowedDocumentTypesModalData { + key: string | null; +} + +export interface UmbAllowedDocumentTypesModalResult { + documentTypeKey: string; +} + +export const UMB_ALLOWED_DOCUMENT_TYPES_MODAL_TOKEN = new UmbModalToken< + UmbAllowedDocumentTypesModalData, + UmbAllowedDocumentTypesModalResult +>('Umb.Modal.AllowedDocumentTypes', { + type: 'sidebar', + size: 'small', +}); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/manifests.ts new file mode 100644 index 0000000000..f6be3880fb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/manifests.ts @@ -0,0 +1,12 @@ +import type { ManifestModal } from '@umbraco-cms/extensions-registry'; + +const modals: Array = [ + { + type: 'modal', + alias: 'Umb.Modal.AllowedDocumentTypes', + name: 'Allowed Document Types Modal', + loader: () => import('./allowed-document-types/allowed-document-types-modal.element'), + }, +]; + +export const manifests = [...modals]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts index 683880d36e..c5a1a610d5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts @@ -5,17 +5,13 @@ import { UmbDocumentTypeTreeStore, UMB_DOCUMENT_TYPE_TREE_STORE_CONTEXT_TOKEN } import { UmbDocumentTypeStore, UMB_DOCUMENT_TYPE_STORE_CONTEXT_TOKEN } from './document-type.store'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { ProblemDetailsModel, DocumentTypeModel } from '@umbraco-cms/backend-api'; +import { ProblemDetailsModel, DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; import type { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; import { UmbDetailRepository } from '@umbraco-cms/repository'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; -type ItemType = DocumentTypeModel; +type ItemType = DocumentTypeResponseModel; -// Move to documentation / JSdoc -/* We need to create a new instance of the repository from within the element context. We want the notifications to be displayed in the right context. */ -// element -> context -> repository -> (store) -> data source -// All methods should be async and return a promise. Some methods might return an observable as part of the promise response. export class UmbDocumentTypeRepository implements UmbTreeRepository, UmbDetailRepository { #init!: Promise; @@ -114,24 +110,15 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, UmbDetailRe // DETAILS: async createScaffold(parentKey: string | null) { + if (!parentKey) throw new Error('Parent key is missing'); await this.#init; - - if (!parentKey) { - throw new Error('Parent key is missing'); - } - return this.#detailDataSource.createScaffold(parentKey); } async requestByKey(key: string) { + if (!key) throw new Error('Key is missing'); await this.#init; - // TODO: should we show a notification if the key is missing? - // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { - const error: ProblemDetailsModel = { title: 'Key is missing' }; - return { error }; - } const { data, error } = await this.#detailDataSource.get(key); if (data) { @@ -142,54 +129,56 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, UmbDetailRe } async byKey(key: string) { + if (!key) throw new Error('Key is missing'); await this.#init; return this.#detailStore!.byKey(key); } + // TODO: we need to figure out where to put this + async requestAllowedChildTypesOf(key: string) { + if (!key) throw new Error('Key is missing'); + await this.#init; + return this.#detailDataSource.getAllowedChildrenOf(key); + } + // Could potentially be general methods: async create(template: ItemType) { + if (!template || !template.key) throw new Error('Template is missing'); await this.#init; - if (!template || !template.key) { - throw new Error('Template is missing'); - } - const { error } = await this.#detailDataSource.insert(template); if (!error) { const notification = { data: { message: `Document created` } }; this.#notificationContext?.peek('positive', notification); - } - // TODO: we currently don't use the detail store for anything. - // Consider to look up the data before fetching from the server - this.#detailStore?.append(template); - // TODO: Update tree store with the new item? or ask tree to request the new item? + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server + this.#detailStore?.append(template); + // TODO: Update tree store with the new item? or ask tree to request the new item? + } return { error }; } async save(item: ItemType) { + if (!item || !item.key) throw new Error('Document-Type is missing'); await this.#init; - if (!item || !item.key) { - throw new Error('Document-Type is missing'); - } - const { error } = await this.#detailDataSource.update(item); if (!error) { const notification = { data: { message: `Document saved` } }; this.#notificationContext?.peek('positive', notification); - } - // TODO: we currently don't use the detail store for anything. - // Consider to look up the data before fetching from the server - // Consider notify a workspace if a template is updated in the store while someone is editing it. - this.#detailStore?.append(item); - this.#treeStore?.updateItem(item.key, { name: item.name }); - // TODO: would be nice to align the stores on methods/methodNames. + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server + // Consider notify a workspace if a template is updated in the store while someone is editing it. + this.#detailStore?.append(item); + this.#treeStore?.updateItem(item.key, { name: item.name }); + // TODO: would be nice to align the stores on methods/methodNames. + } return { error }; } @@ -197,25 +186,22 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, UmbDetailRe // General: async delete(key: string) { + if (!key) throw new Error('Document key is missing'); await this.#init; - if (!key) { - throw new Error('Document key is missing'); - } - const { error } = await this.#detailDataSource.delete(key); if (!error) { const notification = { data: { message: `Document deleted` } }; this.#notificationContext?.peek('positive', notification); - } - // TODO: we currently don't use the detail store for anything. - // Consider to look up the data before fetching from the server. - // Consider notify a workspace if a template is deleted from the store while someone is editing it. - this.#detailStore?.remove([key]); - this.#treeStore?.removeItem(key); - // TODO: would be nice to align the stores on methods/methodNames. + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server. + // Consider notify a workspace if a template is deleted from the store while someone is editing it. + this.#detailStore?.remove([key]); + this.#treeStore?.removeItem(key); + // TODO: would be nice to align the stores on methods/methodNames. + } return { error }; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts index 7b38c47233..b1ff1f9bea 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts @@ -1,4 +1,4 @@ -import { DocumentTypeModel } from '@umbraco-cms/backend-api'; +import { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; import { UmbContextToken } from '@umbraco-cms/context-api'; import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase } from '@umbraco-cms/store'; @@ -11,7 +11,7 @@ import { UmbControllerHostInterface } from '@umbraco-cms/controller'; * @description - Data Store for Document Types */ export class UmbDocumentTypeStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.key); /** * Creates an instance of UmbDocumentTypeStore. @@ -27,7 +27,7 @@ export class UmbDocumentTypeStore extends UmbStoreBase { * @param {DocumentTypeModel} document * @memberof UmbDocumentTypeStore */ - append(document: DocumentTypeModel) { + append(document: DocumentTypeResponseModel) { this.#data.append([document]); } @@ -36,7 +36,7 @@ export class UmbDocumentTypeStore extends UmbStoreBase { * @param {DocumentTypeModel} document * @memberof UmbDocumentTypeStore */ - byKey(key: DocumentTypeModel['key']) { + byKey(key: DocumentTypeResponseModel['key']) { return this.#data.getObservablePart((x) => x.find((y) => y.key === key)); } @@ -45,7 +45,7 @@ export class UmbDocumentTypeStore extends UmbStoreBase { * @param {string[]} uniques * @memberof UmbDocumentTypeStore */ - remove(uniques: Array) { + remove(uniques: Array) { this.#data.remove(uniques); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts index 5f1a282ed4..62bdb7cf4a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts @@ -1,5 +1,5 @@ import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; -import { DocumentTypeResource, ProblemDetailsModel, DocumentTypeModel } from '@umbraco-cms/backend-api'; +import { DocumentTypeResource, ProblemDetailsModel, DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -9,7 +9,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/resources'; * @class UmbDocumentTypeServerDataSource * @implements {RepositoryDetailDataSource} */ -export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSource { +export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSource { #host: UmbControllerHostInterface; /** @@ -48,7 +48,7 @@ export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSour * @memberof UmbDocumentTypeServerDataSource */ async createScaffold(parentKey: string | null) { - const data: DocumentTypeModel = { + const data: DocumentTypeResponseModel = { properties: [], }; @@ -61,7 +61,7 @@ export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSour * @return {*} * @memberof UmbDocumentTypeServerDataSource */ - async insert(document: DocumentTypeModel) { + async insert(document: DocumentTypeResponseModel) { if (!document.key) { //const error: ProblemDetails = { title: 'Document key is missing' }; return Promise.reject(); @@ -78,7 +78,7 @@ export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSour } //return tryExecuteAndNotify(this.#host, DocumentTypeResource.postDocument(payload)); // TODO: use resources when end point is ready: - return tryExecuteAndNotify( + return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/document-type', { method: 'POST', @@ -97,7 +97,7 @@ export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSour * @memberof UmbDocumentTypeServerDataSource */ // TODO: Error mistake in this: - async update(document: DocumentTypeModel) { + async update(document: DocumentTypeResponseModel) { if (!document.key) { const error: ProblemDetailsModel = { title: 'Document key is missing' }; return { error }; @@ -114,7 +114,7 @@ export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSour } // TODO: use resources when end point is ready: - return tryExecuteAndNotify( + return tryExecuteAndNotify( this.#host, fetch(`/umbraco/management/api/v1/document-type/${document.key}`, { method: 'PUT', @@ -139,7 +139,7 @@ export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSour } // TODO: use resources when end point is ready: - return tryExecuteAndNotify( + return tryExecuteAndNotify( this.#host, fetch(`/umbraco/management/api/v1/document-type/${key}`, { method: 'DELETE', @@ -186,4 +186,31 @@ export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSour ); */ } + + /** + * Get the allowed document types for a given parent key + * @param {string} key + * @return {*} + * @memberof UmbDocumentTypeServerDataSource + */ + async getAllowedChildrenOf(key: string) { + if (!key) throw new Error('Key is missing'); + + let problemDetails: ProblemDetailsModel | undefined = undefined; + let data = undefined; + + try { + const res = await fetch(`/umbraco/management/api/v1/document-type/allowed-children-of/${key}`, { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + }, + }); + data = await res.json(); + } catch (error) { + problemDetails = { title: `Get allowed children of ${key} failed` }; + } + + return { data, error: problemDetails }; + } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts new file mode 100644 index 0000000000..5192564679 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts @@ -0,0 +1,121 @@ +import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { UMB_ICON_PICKER_MODAL_TOKEN } from '../../../shared/modals/icon-picker'; +import { UmbWorkspaceDocumentTypeContext } from './document-type-workspace.context'; +import type { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; + +@customElement('umb-document-type-workspace-edit') +export class UmbDocumentTypeWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + + #header { + display: flex; + flex: 1 1 auto; + margin: 0 var(--uui-size-layout-1); + } + + #name { + width: 100%; + flex: 1 1 auto; + align-items: center; + } + + #alias { + padding: 0 var(--uui-size-space-3); + } + + #icon { + font-size: calc(var(--uui-size-layout-3) / 2); + } + `, + ]; + + private _icon = { + color: '#000000', + name: 'umb:document-dashed-line', + }; + + #workspaceContext?: UmbWorkspaceDocumentTypeContext; + + @state() + private _documentType?: DocumentTypeResponseModel; + + private _modalContext?: UmbModalContext; + + constructor() { + super(); + + this.consumeContext('umbWorkspaceContext', (instance) => { + this.#workspaceContext = instance; + this.#observeDocumentType(); + }); + + this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { + this._modalContext = instance; + }); + } + + #observeDocumentType() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.data, (data) => (this._documentType = data)); + } + + // TODO. find a way where we don't have to do this for all workspaces. + private _handleInput(event: UUIInputEvent) { + if (event instanceof UUIInputEvent) { + const target = event.composedPath()[0] as UUIInputElement; + + if (typeof target?.value === 'string') { + this.#workspaceContext?.setName(target.value); + } + } + } + + private async _handleIconClick() { + const modalHandler = this._modalContext?.open(UMB_ICON_PICKER_MODAL_TOKEN); + + modalHandler?.onSubmit().then((saved) => { + if (saved.icon) this.#workspaceContext?.setIcon(saved.icon); + // TODO save color ALIAS as well + }); + } + + render() { + return html` + + + +
Keyboard Shortcuts
+
+ `; + } +} + +export default UmbDocumentTypeWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-document-type-workspace-edit': UmbDocumentTypeWorkspaceEditElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.context.ts index 4fcef85092..1ec5daf8fe 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.context.ts @@ -1,14 +1,14 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; -import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbDocumentTypeRepository } from '../repository/document-type.repository'; -import type { DocumentTypeModel } from '@umbraco-cms/backend-api'; +import type { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { ObjectState } from '@umbraco-cms/observable-api'; -type EntityType = DocumentTypeModel; +type EntityType = DocumentTypeResponseModel; export class UmbWorkspaceDocumentTypeContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { #data = new ObjectState(undefined); data = this.#data.asObservable(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts index 5e5a660c77..8bcd5f7aff 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts @@ -1,118 +1,32 @@ -import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { css, html } from 'lit'; +import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import type { UmbWorkspaceEntityElement } from '../../../shared/components/workspace/workspace-entity-element.interface'; -import { UMB_ICON_PICKER_MODAL_TOKEN } from '../../../shared/modals/icon-picker'; import { UmbWorkspaceDocumentTypeContext } from './document-type-workspace.context'; -import type { DocumentTypeModel } from '@umbraco-cms/backend-api'; +import { UmbDocumentTypeWorkspaceEditElement } from './document-type-workspace-edit.element'; +import { IRoutingInfo } from '@umbraco-cms/router'; import { UmbLitElement } from '@umbraco-cms/element'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; @customElement('umb-document-type-workspace') -export class UmbDocumentTypeWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { - static styles = [ - UUITextStyles, - css` - :host { - display: block; - width: 100%; - height: 100%; - } +export class UmbDocumentTypeWorkspaceElement extends UmbLitElement { + static styles = [UUITextStyles]; - #header { - display: flex; - flex: 1 1 auto; - margin: 0 var(--uui-size-layout-1); - } - - #name { - width: 100%; - flex: 1 1 auto; - align-items: center; - } - - #alias { - padding: 0 var(--uui-size-space-3); - } - - #icon { - font-size: calc(var(--uui-size-layout-3) / 2); - } - `, - ]; - - private _icon = { - color: '#000000', - name: 'umb:document-dashed-line', - }; - - private _workspaceContext: UmbWorkspaceDocumentTypeContext = new UmbWorkspaceDocumentTypeContext(this); + #workspaceContext = new UmbWorkspaceDocumentTypeContext(this); + #element = new UmbDocumentTypeWorkspaceEditElement(); @state() - private _documentType?: DocumentTypeModel; - - private _modalContext?: UmbModalContext; - - constructor() { - super(); - - this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { - this._modalContext = instance; - }); - - this.observe(this._workspaceContext.data, (data) => { - // TODO: make method to identify if data is of type DocumentType - this._documentType = data as DocumentType; - }); - } - - public load(entityKey: string) { - this._workspaceContext.load(entityKey); - } - - public create(parentKey: string | null) { - this._workspaceContext.createScaffold(parentKey); - } - - // TODO. find a way where we don't have to do this for all workspaces. - private _handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this._workspaceContext?.setName(target.value); - } - } - } - - private async _handleIconClick() { - const modalHandler = this._modalContext?.open(UMB_ICON_PICKER_MODAL_TOKEN); - - modalHandler?.onSubmit().then((saved) => { - if (saved.icon) this._workspaceContext?.setIcon(saved.icon); - // TODO save color ALIAS as well - }); - } + _routes = [ + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, + ]; render() { - return html` - - - -
Keyboard Shortcuts
-
- `; + return html` `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts index 576ba9435f..4ea7c3095f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts @@ -1,8 +1,9 @@ -import './document-type-workspace.element'; +import './document-type-workspace-edit.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit-html'; +import { ifDefined } from 'lit/directives/if-defined.js'; +import { treeData } from '../../../../core/mocks/data/document-type.data'; import type { UmbDocumentTypeWorkspaceElement } from './document-type-workspace.element'; -import { treeData } from 'src/core/mocks/data/document-type.data'; export default { title: 'Workspaces/Document Type', @@ -11,5 +12,5 @@ export default { } as Meta; export const AAAOverview: Story = () => - html` `; + html` `; AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/manifests.ts index 114efb3e7e..c2f912764b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/manifests.ts @@ -19,11 +19,13 @@ const workspaceViews: Array = [ loader: () => import('./views/design/workspace-view-document-type-design.element'), weight: 100, meta: { - workspaces: ['Umb.Workspace.DocumentType'], label: 'Design', pathname: 'design', icon: 'edit', }, + conditions: { + workspaces: ['Umb.Workspace.DocumentType'], + }, }, ]; @@ -33,12 +35,14 @@ const workspaceActions: Array = [ alias: 'Umb.WorkspaceAction.DocumentType.Save', name: 'Save Document Type Workspace Action', meta: { - workspaces: ['Umb.Workspace.DocumentType'], label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.DocumentType'], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts index 3e48456f2d..2e453ded63 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts @@ -3,7 +3,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import { UmbWorkspaceDocumentTypeContext } from '../../document-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DocumentTypeModel } from '@umbraco-cms/backend-api'; +import type { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; import '../../../../../shared/property-creator/property-creator.element.ts'; @customElement('umb-workspace-view-document-type-design') @@ -20,7 +20,7 @@ export class UmbWorkspaceViewDocumentTypeDesignElement extends UmbLitElement { ]; @state() - _documentType?: DocumentTypeModel; + _documentType?: DocumentTypeResponseModel; private _workspaceContext?: UmbWorkspaceDocumentTypeContext; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/manifests.ts index 0942914f4a..46a81915a4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/manifests.ts @@ -7,10 +7,12 @@ export const manifests: Array = [ name: 'Document Table Collection View', loader: () => import('./views/table/document-table-collection-view.element'), weight: 200, + conditions: { + entityType: 'document', + }, meta: { label: 'Table', icon: 'umb:box', - entityType: 'document', pathName: 'table', }, }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts index e669b51c40..18c642313e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts @@ -15,11 +15,11 @@ import { UmbTableSelectedEvent, } from '../../../../../shared/components/table'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DocumentTreeItemModel, EntityTreeItemModel } from '@umbraco-cms/backend-api'; +import { DocumentTreeItemResponseModel, EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import './column-layouts/document-table-actions-column-layout.element'; -type EntityType = DocumentTreeItemModel; +type EntityType = DocumentTreeItemResponseModel; @customElement('umb-document-table-collection-view') export class UmbDocumentTableCollectionViewElement extends UmbLitElement { @@ -42,7 +42,7 @@ export class UmbDocumentTableCollectionViewElement extends UmbLitElement { ]; @state() - private _items?: Array; + private _items?: Array; @state() private _tableConfig: UmbTableConfig = { @@ -94,7 +94,7 @@ export class UmbDocumentTableCollectionViewElement extends UmbLitElement { }); } - private _createTableItems(items: Array) { + private _createTableItems(items: Array) { this._tableItems = items.map((item) => { // TODO: use unique instead of key if (!item.key) throw new Error('Item key is missing.'); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create-document-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create-document-modal.element.ts deleted file mode 100644 index e438a3e3e4..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create-document-modal.element.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { html } from 'lit'; -import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { customElement } from 'lit/decorators.js'; -import { UmbCreateDocumentModalData, UmbCreateDocumentModalResultData } from '.'; -import { UmbModalBaseElement } from '@umbraco-cms/modal'; - -@customElement('umb-create-document-modal') -export class UmbCreateDocumentModalElement extends UmbModalBaseElement< - UmbCreateDocumentModalData, - UmbCreateDocumentModalResultData -> { - static styles = [UUITextStyles]; - - private _handleCancel() { - this.modalHandler?.reject(); - } - - #onClick(event: PointerEvent) { - event.stopPropagation(); - const target = event.target as HTMLButtonElement; - const documentType = target.value; - this.modalHandler?.submit({ documentType }); - } - - render() { - return html` - -
Render list of create options for ${this.data?.unique}
- -
    -
  • -
  • -
  • -
- - Cancel -
- `; - } -} - -export default UmbCreateDocumentModalElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-create-document-modal': UmbCreateDocumentModalElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts index fcdcc7be3c..864248e63a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts @@ -1,14 +1,10 @@ -import { UmbDocumentRepository } from '../../repository/document.repository'; -import type { UmbCreateDocumentModalResultData } from '.'; -import { UMB_CREATE_DOCUMENT_MODAL_TOKEN } from '.'; +import { UMB_ALLOWED_DOCUMENT_TYPES_MODAL_TOKEN } from '../../../document-types/modals/allowed-document-types'; +import type { UmbDocumentRepository } from '../../repository/document.repository'; import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -// TODO: temp import -import './create-document-modal.element.ts'; - export class UmbCreateDocumentEntityAction extends UmbEntityActionBase { #modalContext?: UmbModalContext; @@ -23,13 +19,18 @@ export class UmbCreateDocumentEntityAction extends UmbEntityActionBase('Umb.Modal.CreateDocument', { - type: 'sidebar', - size: 'small', -}); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/manifests.ts index 3ae95fe8ee..428dbc55e5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/manifests.ts @@ -24,12 +24,14 @@ const entityActions: Array = [ name: 'Create Document Entity Action', weight: 1000, meta: { - entityType, icon: 'umb:add', label: 'Create', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbCreateDocumentEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -37,12 +39,14 @@ const entityActions: Array = [ name: 'Trash Document Entity Action', weight: 900, meta: { - entityType, icon: 'umb:trash', label: 'Trash', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbTrashEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -50,12 +54,14 @@ const entityActions: Array = [ name: 'Create Document Blueprint Entity Action', weight: 800, meta: { - entityType, icon: 'umb:blueprint', label: 'Create Content Template', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbCreateDocumentBlueprintEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -63,12 +69,14 @@ const entityActions: Array = [ name: 'Move Document Entity Action', weight: 700, meta: { - entityType, icon: 'umb:enter', label: 'Move', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbMoveEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -76,12 +84,14 @@ const entityActions: Array = [ name: 'Copy Document Entity Action', weight: 600, meta: { - entityType, icon: 'umb:documents', label: 'Copy', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbCopyEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -89,12 +99,14 @@ const entityActions: Array = [ name: 'Sort Document Entity Action', weight: 500, meta: { - entityType, icon: 'umb:navigation-vertical', label: 'Sort', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbSortChildrenOfEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -102,72 +114,84 @@ const entityActions: Array = [ name: 'Culture And Hostnames Document Entity Action', weight: 400, meta: { - entityType, icon: 'umb:home', label: 'Culture And Hostnames', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbDocumentCultureAndHostnamesEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', alias: 'Umb.EntityAction.Document.Permissions', name: 'Document Permissions Entity Action', meta: { - entityType, icon: 'umb:vcard', label: 'Permissions', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbDocumentPermissionsEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', alias: 'Umb.EntityAction.Document.PublicAccess', name: 'Document Permissions Entity Action', meta: { - entityType, icon: 'umb:lock', label: 'Public Access', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbDocumentPublicAccessEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', alias: 'Umb.EntityAction.Document.Publish', name: 'Publish Document Entity Action', meta: { - entityType, icon: 'umb:globe', label: 'Publish', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbPublishDocumentEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', alias: 'Umb.EntityAction.Document.Unpublish', name: 'Unpublish Document Entity Action', meta: { - entityType, icon: 'umb:globe', label: 'Unpublish', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbUnpublishDocumentEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', alias: 'Umb.EntityAction.Document.Rollback', name: 'Rollback Document Entity Action', meta: { - entityType, icon: 'umb:undo', label: 'Rollback', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbRollbackDocumentEntityAction, }, + conditions: { + entityType, + }, }, ]; @@ -176,7 +200,7 @@ const modals: Array = [ type: 'modal', alias: 'Umb.Modal.CreateDocument', name: 'Create Document Modal', - loader: () => import('./create/create-document-modal.element'), + loader: () => import('../../document-types/modals/allowed-document-types/allowed-document-types-modal.element'), }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/manifests.ts index 7edd0952e3..b7032e2bc7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/manifests.ts @@ -12,11 +12,13 @@ const entityActions: Array = [ name: 'Move Document Entity Bulk Action', weight: 10, meta: { - entityType, label: 'Move', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbDocumentMoveEntityBulkAction, }, + conditions: { + entityType, + }, }, { type: 'entityBulkAction', @@ -24,11 +26,13 @@ const entityActions: Array = [ name: 'Copy Document Entity Bulk Action', weight: 9, meta: { - entityType, label: 'Copy', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbDocumentCopyEntityBulkAction, }, + conditions: { + entityType, + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts index 104b9092df..0595eba64a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts @@ -5,12 +5,12 @@ import { UmbDocumentStore, UMB_DOCUMENT_STORE_CONTEXT_TOKEN } from './document.s import { UmbDocumentServerDataSource } from './sources/document.server.data'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { ProblemDetailsModel, DocumentModel } from '@umbraco-cms/backend-api'; +import { ProblemDetailsModel, DocumentResponseModel } from '@umbraco-cms/backend-api'; import type { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; import { UmbDetailRepository } from '@umbraco-cms/repository'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; -type ItemType = DocumentModel; +type ItemType = DocumentResponseModel; // Move to documentation / JSdoc /* We need to create a new instance of the repository from within the element context. We want the notifications to be displayed in the right context. */ @@ -113,14 +113,10 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDetailReposi // DETAILS: - async createScaffold(parentKey: string | null) { + async createScaffold(documentTypeKey: string) { + if (!documentTypeKey) throw new Error('Document type key is missing'); await this.#init; - - if (!parentKey) { - throw new Error('Parent key is missing'); - } - - return this.#detailDataSource.createScaffold(parentKey); + return this.#detailDataSource.createScaffold(documentTypeKey); } async requestByKey(key: string) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts index 0dfd392794..2fb2a87fe4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts @@ -1,4 +1,4 @@ -import { DocumentModel } from '@umbraco-cms/backend-api'; +import { DocumentResponseModel } from '@umbraco-cms/backend-api'; import { UmbContextToken } from '@umbraco-cms/context-api'; import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase } from '@umbraco-cms/store'; @@ -11,7 +11,7 @@ import { UmbControllerHostInterface } from '@umbraco-cms/controller'; * @description - Data Store for Template Details */ export class UmbDocumentStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.key); /** * Creates an instance of UmbDocumentDetailStore. @@ -27,7 +27,7 @@ export class UmbDocumentStore extends UmbStoreBase { * @param {DocumentDetails} document * @memberof UmbDocumentDetailStore */ - append(document: DocumentModel) { + append(document: DocumentResponseModel) { this.#data.append([document]); } @@ -36,7 +36,7 @@ export class UmbDocumentStore extends UmbStoreBase { * @param {DocumentModel} document * @memberof UmbDocumentStore */ - byKey(key: DocumentModel['key']) { + byKey(key: DocumentResponseModel['key']) { return this.#data.getObservablePart((x) => x.find((y) => y.key === key)); } @@ -45,7 +45,7 @@ export class UmbDocumentStore extends UmbStoreBase { * @param {string[]} uniques * @memberof UmbDocumentDetailStore */ - remove(uniques: Array) { + remove(uniques: Array) { this.#data.remove(uniques); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts index 5fe01e86d2..59b9e2f0c8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts @@ -1,5 +1,11 @@ +import { v4 as uuidv4 } from 'uuid'; import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; -import { DocumentResource, ProblemDetailsModel, DocumentModel } from '@umbraco-cms/backend-api'; +import { + DocumentResource, + ProblemDetailsModel, + DocumentResponseModel, + ContentStateModel, +} from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -9,7 +15,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/resources'; * @class UmbDocumentServerDataSource * @implements {RepositoryDetailDataSource} */ -export class UmbDocumentServerDataSource implements RepositoryDetailDataSource { +export class UmbDocumentServerDataSource implements RepositoryDetailDataSource { #host: UmbControllerHostInterface; /** @@ -47,10 +53,25 @@ export class UmbDocumentServerDataSource implements RepositoryDetailDataSource( + return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/document/save', { method: 'POST', @@ -98,7 +119,7 @@ export class UmbDocumentServerDataSource implements RepositoryDetailDataSource( + return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/document/save', { method: 'POST', @@ -140,7 +161,7 @@ export class UmbDocumentServerDataSource implements RepositoryDetailDataSource( + return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/document/trash', { method: 'POST', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts index c7cc44fc92..bb7b3aeefb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts @@ -1,7 +1,8 @@ -import { DocumentModel } from '@umbraco-cms/backend-api'; +import { DocumentResponseModel } from '@umbraco-cms/backend-api'; import type { DataSourceResponse } from '@umbraco-cms/models'; import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; -export interface UmbDocumentDataSource extends RepositoryDetailDataSource { - trash(key: string): Promise>; +export interface UmbDocumentDataSource extends RepositoryDetailDataSource { + createScaffold(documentTypeKey: string): Promise>; + trash(key: string): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/sidebar-menu-item/manifests.ts index e4bfc4a260..06754de189 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/sidebar-menu-item/manifests.ts @@ -9,6 +9,8 @@ const menuItem: ManifestMenuItem = { meta: { label: 'Documents', icon: 'umb:folder', + }, + conditions: { menus: ['Umb.Menu.Content'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts new file mode 100644 index 0000000000..e427be75ba --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts @@ -0,0 +1,144 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { IRoute, IRoutingInfo } from 'router-slot'; +import { UmbVariantId } from '../../../shared/variants/variant-id.class'; +import { ActiveVariant } from '../../../shared/components/workspace/workspace-context/workspace-split-view-manager.class'; +import { UmbDocumentWorkspaceContext } from './document-workspace.context'; +import { UmbDocumentWorkspaceSplitViewElement } from './document-workspace-split-view.element'; +import { UmbRouterSlotInitEvent } from '@umbraco-cms/router'; +import { UmbLitElement } from '@umbraco-cms/element'; +import '../../../shared/components/workspace/workspace-variant/workspace-variant.element'; +import { VariantModelBaseModel } from '@umbraco-cms/backend-api'; + +@customElement('umb-document-workspace-edit') +export class UmbDocumentWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + `, + ]; + + //private _defaultVariant?: VariantViewModelBaseModel; + private splitViewElement = new UmbDocumentWorkspaceSplitViewElement(); + + @state() + _unique?: string; + + @state() + _routes?: Array; + + @state() + _availableVariants: Array = []; + + @state() + _workspaceSplitViews: Array = []; + + #workspaceContext?: UmbDocumentWorkspaceContext; + + constructor() { + super(); + + this.consumeContext('umbWorkspaceContext', (instance: UmbDocumentWorkspaceContext) => { + this.#workspaceContext = instance; + this.#observeVariants(); + this.#observeSplitViews(); + }); + } + + #observeVariants() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.variants, (variants) => { + this._availableVariants = variants; + this._generateRoutes(); + }); + } + + #observeSplitViews() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.splitView.activeVariantsInfo, (variants) => { + this._workspaceSplitViews = variants; + }); + } + + private _handleVariantFolderPart(index: number, folderPart: string) { + const variantSplit = folderPart.split('_'); + const culture = variantSplit[0]; + const segment = variantSplit[1]; + this.#workspaceContext?.splitView.setActiveVariant(index, culture, segment); + } + + private _generateRoutes() { + if (!this._availableVariants || this._availableVariants.length === 0) return; + + // Generate split view routes for all available routes + const routes: Array = []; + + // Split view routes: + this._availableVariants.forEach((variantA) => { + this._availableVariants.forEach((variantB) => { + routes.push({ + path: new UmbVariantId(variantA).toString() + '_&_' + new UmbVariantId(variantB).toString(), + //component: () => import('./document-workspace-split-view.element'), + component: this.splitViewElement, + setup: (component: HTMLElement | Promise, info: IRoutingInfo) => { + // Set split view/active info.. + const variantSplit = info.match.fragments.consumed.split('_&_'); + variantSplit.forEach((part, index) => { + this._handleVariantFolderPart(index, part); + }); + }, + }); + }); + }); + + // Single view: + this._availableVariants.forEach((variant) => { + routes.push({ + path: new UmbVariantId(variant).toString(), + //component: () => import('./document-workspace-split-view.element'), + component: this.splitViewElement, + setup: (component: HTMLElement | Promise, info: IRoutingInfo) => { + // cause we might come from a split-view, we need to reset index 1. + this.#workspaceContext?.splitView.removeActiveVariant(1); + this._handleVariantFolderPart(0, info.match.fragments.consumed); + }, + }); + }); + + if (routes.length !== 0) { + // Using first single view as the default route for now (hence the math below): + routes.push({ + path: '**', + redirectTo: routes[this._availableVariants.length * this._availableVariants.length]?.path, + }); + } + + this._routes = routes; + } + + private _gotWorkspaceRoute = (e: UmbRouterSlotInitEvent) => { + this.#workspaceContext?.splitView.setWorkspaceRoute(e.target.absoluteRouterPath); + }; + + render() { + return this._routes + ? html`${this.splitViewElement}` + : ''; + } +} + +export default UmbDocumentWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-document-workspace-edit': UmbDocumentWorkspaceEditElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.context.ts index f62c5943fc..f7ac814b09 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.context.ts @@ -5,14 +5,14 @@ import { UmbWorkspaceVariableEntityContextInterface } from '../../../shared/comp import { UmbVariantId } from '../../../shared/variants/variant-id.class'; import { UmbWorkspacePropertyStructureManager } from '../../../shared/components/workspace/workspace-context/workspace-property-structure-manager.class'; import { UmbWorkspaceSplitViewManager } from '../../../shared/components/workspace/workspace-context/workspace-split-view-manager.class'; -import type { DocumentModel } from '@umbraco-cms/backend-api'; +import type { DocumentResponseModel } from '@umbraco-cms/backend-api'; import { partialUpdateFrozenArray, ObjectState, UmbObserverController } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; // TODO: should this context be called DocumentDraft instead of workspace? or should the draft be part of this? // TODO: Should we have a DocumentStructureContext and maybe even a DocumentDraftContext? -type EntityType = DocumentModel; +type EntityType = DocumentResponseModel; export class UmbDocumentWorkspaceContext extends UmbWorkspaceContext implements UmbWorkspaceVariableEntityContextInterface @@ -57,8 +57,8 @@ export class UmbDocumentWorkspaceContext return data || undefined; } - async createScaffold(parentKey: string | null) { - const { data } = await this.repository.createScaffold(parentKey); + async createScaffold(documentTypeKey: string) { + const { data } = await this.repository.createScaffold(documentTypeKey); if (!data) return undefined; this.setIsNew(true); @@ -180,3 +180,5 @@ export class UmbDocumentWorkspaceContext this.#draft.complete(); } } + +export default UmbDocumentWorkspaceContext; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts index d2f69c3f86..d51b7ae609 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts @@ -1,144 +1,42 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { css, html } from 'lit'; +import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { IRoute, IRoutingInfo } from 'router-slot'; -import type { UmbWorkspaceEntityElement } from '../../../shared/components/workspace/workspace-entity-element.interface'; -import { UmbVariantId } from '../../../shared/variants/variant-id.class'; -import { ActiveVariant } from '../../../shared/components/workspace/workspace-context/workspace-split-view-manager.class'; import { UmbDocumentWorkspaceContext } from './document-workspace.context'; -import { UmbDocumentWorkspaceSplitViewElement } from './document-workspace-split-view.element'; import { UmbLitElement } from '@umbraco-cms/element'; -import '../../../shared/components/workspace/workspace-variant/workspace-variant.element'; -import { DocumentModel, VariantViewModelBaseModel } from '@umbraco-cms/backend-api'; -import { UmbRouterSlotInitEvent } from '@umbraco-cms/router'; + +import './document-workspace-edit.element'; @customElement('umb-document-workspace') -export class UmbDocumentWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { - static styles = [ - UUITextStyles, - css` - :host { - display: block; - width: 100%; - height: 100%; - } - `, +export class UmbDocumentWorkspaceElement extends UmbLitElement { + static styles = [UUITextStyles]; + + #workspaceContext = new UmbDocumentWorkspaceContext(this); + #element = document.createElement('umb-document-workspace-edit'); + + @state() + _routes: IRoute[] = [ + { + path: 'create/:parentKey/:documentTypeKey', + component: () => this.#element, + setup: async (component: HTMLElement, info: IRoutingInfo) => { + const parentKey = info.match.params.parentKey; + const documentTypeKey = info.match.params.documentTypeKey; + this.#workspaceContext.createScaffold(documentTypeKey); + }, + }, + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, ]; - private _workspaceContext: UmbDocumentWorkspaceContext = new UmbDocumentWorkspaceContext(this); - //private _defaultVariant?: VariantViewModelBaseModel; - private splitViewElement = new UmbDocumentWorkspaceSplitViewElement(); - - @state() - _unique?: string; - - @state() - _routes?: Array; - - @state() - _availableVariants: Array = []; - - @state() - _workspaceSplitViews: Array = []; - - constructor() { - super(); - - this.observe(this._workspaceContext.variants, (variants) => { - this._availableVariants = variants; - this._generateRoutes(); - }); - this.observe(this._workspaceContext.splitView.activeVariantsInfo, (variants) => { - this._workspaceSplitViews = variants; - }); - } - - public async load(entityKey: string) { - const data = await this._workspaceContext.load(entityKey); - this._gotDocumentData(data); - } - - public async create(parentKey: string | null) { - const data = await this._workspaceContext.createScaffold(parentKey); - this._gotDocumentData(data); - } - - private _gotDocumentData(data: DocumentModel | undefined) { - if (data && data.variants && data.variants.length > 0) { - //this._defaultVariant = data.variants[0]; - this._unique = data.key; - // Maybe we need to re-generate routes here? - } else { - // Fail beautifully? - } - } - - private _handleVariantFolderPart(index: number, folderPart: string) { - const variantSplit = folderPart.split('_'); - const culture = variantSplit[0]; - const segment = variantSplit[1]; - this._workspaceContext.splitView.setActiveVariant(index, culture, segment); - } - - private _generateRoutes() { - if (!this._availableVariants || this._availableVariants.length === 0) return; - - // Generate split view routes for all available routes - const routes: Array = []; - - // Split view routes: - this._availableVariants.forEach((variantA) => { - this._availableVariants.forEach((variantB) => { - routes.push({ - path: new UmbVariantId(variantA).toString() + '_&_' + new UmbVariantId(variantB).toString(), - //component: () => import('./document-workspace-split-view.element'), - component: this.splitViewElement, - setup: (component: HTMLElement | Promise, info: IRoutingInfo) => { - // Set split view/active info.. - const variantSplit = info.match.fragments.consumed.split('_&_'); - variantSplit.forEach((part, index) => { - this._handleVariantFolderPart(index, part); - }); - }, - }); - }); - }); - - // Single view: - this._availableVariants.forEach((variant) => { - routes.push({ - path: new UmbVariantId(variant).toString(), - //component: () => import('./document-workspace-split-view.element'), - component: this.splitViewElement, - setup: (component: HTMLElement | Promise, info: IRoutingInfo) => { - // cause we might come from a split-view, we need to reset index 1. - this._workspaceContext.splitView.removeActiveVariant(1); - this._handleVariantFolderPart(0, info.match.fragments.consumed); - }, - }); - }); - - if (routes.length !== 0) { - // Using first single view as the default route for now (hence the math below): - routes.push({ - path: '**', - redirectTo: routes[this._availableVariants.length * this._availableVariants.length]?.path, - }); - } - - this._routes = routes; - } - - private _gotWorkspaceRoute = (e: UmbRouterSlotInitEvent) => { - this._workspaceContext.splitView.setWorkspaceRoute(e.target.absoluteRouterPath); - }; - render() { - return this._routes - ? html`${this.splitViewElement}` - : ''; + return html``; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.stories.ts index 8475de493d..ce3a24444b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.stories.ts @@ -1,7 +1,6 @@ -import './document-workspace.element'; +import './document-workspace-edit.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit-html'; -import { data as documentNodes } from '../../../../core/mocks/data/document.data'; import type { UmbDocumentWorkspaceElement } from './document-workspace.element'; export default { @@ -11,5 +10,5 @@ export default { } as Meta; export const AAAOverview: Story = () => - html` `; + html` `; AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.test.ts index 3849929e42..99dbc4d512 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.test.ts @@ -17,13 +17,4 @@ describe('UmbDocumentWorkspaceElement', () => { // TODO: should we use shadowDom here? await expect(element).to.be.accessible(defaultA11yConfig); }); - - describe('methods', () => { - it('has a load method', () => { - expect(element).to.have.property('load').that.is.a('function'); - }); - it('has a create method', () => { - expect(element).to.have.property('create').that.is.a('function'); - }); - }); }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/manifests.ts index be404bc875..07342f39d0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/manifests.ts @@ -1,4 +1,3 @@ -import { DOCUMENT_REPOSITORY_ALIAS } from '../repository/manifests'; import { UmbDocumentSaveAndPublishWorkspaceAction } from './actions/save-and-publish.action'; import { UmbDocumentSaveAndPreviewWorkspaceAction } from './actions/save-and-preview.action'; import { UmbSaveAndScheduleDocumentWorkspaceAction } from './actions/save-and-schedule.action'; @@ -28,11 +27,13 @@ const workspaceViews: Array = [ loader: () => import('./views/document-workspace-view-edit.element'), weight: 200, meta: { - workspaces: ['Umb.Workspace.Document'], label: 'Content', pathname: 'content', icon: 'document', }, + conditions: { + workspaces: ['Umb.Workspace.Document'], + }, }, { type: 'workspaceView', @@ -42,11 +43,13 @@ const workspaceViews: Array = [ import('../../../shared/components/workspace/workspace-content/views/info/workspace-view-content-info.element'), weight: 100, meta: { - workspaces: ['Umb.Workspace.Document'], label: 'Info', pathname: 'info', icon: 'info', }, + conditions: { + workspaces: ['Umb.Workspace.Document'], + }, }, ]; @@ -59,13 +62,15 @@ const workspaceViewCollections: Array = [ name: 'Document Workspace Collection View', weight: 300, meta: { - workspaces: ['Umb.Workspace.Document'], label: 'Documents', pathname: 'collection', icon: 'umb:grid', entityType: 'document', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, }, + conditions: { + workspaces: ['Umb.Workspace.Document'], + } }, */ ]; @@ -77,12 +82,14 @@ const workspaceActions: Array = [ name: 'Save And Publish Document Workspace Action', weight: 100, meta: { - workspaces: ['Umb.Workspace.Document'], label: 'Save And Publish', look: 'primary', color: 'positive', api: UmbDocumentSaveAndPublishWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.Document'], + }, }, { type: 'workspaceAction', @@ -90,11 +97,13 @@ const workspaceActions: Array = [ name: 'Save Document Workspace Action', weight: 90, meta: { - workspaces: ['Umb.Workspace.Document'], label: 'Save', look: 'secondary', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.Document'], + }, }, { type: 'workspaceAction', @@ -102,10 +111,12 @@ const workspaceActions: Array = [ name: 'Save And Preview Document Workspace Action', weight: 80, meta: { - workspaces: ['Umb.Workspace.Document'], label: 'Save And Preview', api: UmbDocumentSaveAndPreviewWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.Document'], + }, }, { type: 'workspaceAction', @@ -113,10 +124,12 @@ const workspaceActions: Array = [ name: 'Save And Schedule Document Workspace Action', weight: 70, meta: { - workspaces: ['Umb.Workspace.Document'], label: 'Save And Schedule', api: UmbSaveAndScheduleDocumentWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.Document'], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-properties.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-properties.element.ts index 6bd3840d8a..e9bfd39eec 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-properties.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-properties.element.ts @@ -4,7 +4,7 @@ import { customElement, property, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DocumentTypePropertyTypeModel, PropertyTypeContainerViewModelBaseModel } from '@umbraco-cms/backend-api'; +import { DocumentTypePropertyTypeResponseModel, PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backend-api'; @customElement('umb-document-workspace-view-edit-properties') export class UmbDocumentWorkspaceViewEditPropertiesElement extends UmbLitElement { @@ -45,10 +45,10 @@ export class UmbDocumentWorkspaceViewEditPropertiesElement extends UmbLitElement } @state() - _groupContainers: Array = []; + _groupContainers: Array = []; @state() - _propertyStructure: Array = []; + _propertyStructure: Array = []; private _workspaceContext?: UmbDocumentWorkspaceContext; @@ -81,7 +81,7 @@ export class UmbDocumentWorkspaceViewEditPropertiesElement extends UmbLitElement ); } - private _observePropertyStructureOfGroup(group: PropertyTypeContainerViewModelBaseModel) { + private _observePropertyStructureOfGroup(group: PropertyTypeContainerResponseModelBaseModel) { if (!this._workspaceContext || !group.key) return; // TODO: Should be no need to update this observable if its already there. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-tab.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-tab.element.ts index 9f1f88145d..8992495248 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-tab.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-tab.element.ts @@ -4,7 +4,7 @@ import { customElement, property, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { PropertyTypeContainerViewModelBaseModel } from '@umbraco-cms/backend-api'; +import { PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backend-api'; import './document-workspace-view-edit-properties.element'; @customElement('umb-document-workspace-view-edit-tab') @@ -55,13 +55,13 @@ export class UmbDocumentWorkspaceViewEditTabElement extends UmbLitElement { } @state() - _tabContainers: PropertyTypeContainerViewModelBaseModel[] = []; + _tabContainers: PropertyTypeContainerResponseModelBaseModel[] = []; @state() _hasTabProperties = false; @state() - _groups: Array = []; + _groups: Array = []; private _workspaceContext?: UmbDocumentWorkspaceContext; @@ -134,7 +134,7 @@ export class UmbDocumentWorkspaceViewEditTabElement extends UmbLitElement { ); } - private _insertGroupContainers = (groupContainers: PropertyTypeContainerViewModelBaseModel[]) => { + private _insertGroupContainers = (groupContainers: PropertyTypeContainerResponseModelBaseModel[]) => { groupContainers.forEach((group) => { if (group.name) { if (!this._groups.find((x) => x.name === group.name)) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit.element.ts index 6dfc9ca79b..36032110ec 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit.element.ts @@ -5,7 +5,7 @@ import { repeat } from 'lit/directives/repeat.js'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent, IRoute } from '@umbraco-cms/router'; import { UmbLitElement } from '@umbraco-cms/element'; -import { PropertyTypeContainerViewModelBaseModel } from '@umbraco-cms/backend-api'; +import { PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backend-api'; @customElement('umb-document-workspace-view-edit') export class UmbDocumentWorkspaceViewEditElement extends UmbLitElement { @@ -26,7 +26,7 @@ export class UmbDocumentWorkspaceViewEditElement extends UmbLitElement { private _routes: IRoute[] = []; @state() - _tabs: Array = []; + _tabs: Array = []; @state() private _routerPath?: string; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts index d8919a3689..a50e038ea8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts @@ -20,9 +20,11 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { weight: 100, meta: { label: 'Content', - sections: [sectionAlias], menu: 'Umb.Menu.Content', }, + conditions: { + sections: [sectionAlias], + }, }; export const manifests = [section, menuSectionSidebarApp]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/manifests.ts index cd094dcd3d..8970c9af81 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/manifests.ts @@ -14,12 +14,14 @@ const entityActions: Array = [ name: 'Create Media Type Entity Action', weight: 500, meta: { - entityType, icon: 'umb:add', label: 'Create', repositoryAlias, api: UmbCreateMediaTypeEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -27,12 +29,14 @@ const entityActions: Array = [ name: 'Move Media Type Entity Action', weight: 400, meta: { - entityType, icon: 'umb:enter', label: 'Move', repositoryAlias, api: UmbMoveEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -40,12 +44,14 @@ const entityActions: Array = [ name: 'Copy Media Type Entity Action', weight: 300, meta: { - entityType, icon: 'umb:documents', label: 'Copy', repositoryAlias, api: UmbCopyEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -53,12 +59,14 @@ const entityActions: Array = [ name: 'Delete Media Type Entity Action', weight: 200, meta: { - entityType, icon: 'umb:trash', label: 'Delete', repositoryAlias, api: UmbDeleteEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -66,12 +74,14 @@ const entityActions: Array = [ name: 'Reload Media Type Entity Action', weight: 100, meta: { - entityType, icon: 'umb:refresh', label: 'Reload', repositoryAlias, api: UmbReloadMediaTypeEntityAction, }, + conditions: { + entityType, + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts index 5cb7de2e11..cdbdf67653 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts @@ -9,6 +9,8 @@ const menuItem: ManifestMenuItem = { meta: { label: 'Media Types', icon: 'umb:folder', + }, + conditions: { menus: ['Umb.Menu.Settings'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/media-types-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/media-types-menu-item.element.ts index f38a1bb8d1..f4c95d9248 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/media-types-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/media-types-menu-item.element.ts @@ -19,14 +19,14 @@ export class UmbMediaTypesMenuItemElement extends UmbLitElement { // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)? // TODO: can we make this reusable? render() { - return html` + has-children + > ${this._renderTree ? html`` : nothing} - `; + `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace-edit.element.ts new file mode 100644 index 0000000000..b1b9497677 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace-edit.element.ts @@ -0,0 +1,69 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; +import { UmbWorkspaceMediaTypeContext } from './media-type-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/element'; + +@customElement('umb-media-type-workspace-edit') +export class UmbMediaTypeWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + #header { + display: flex; + padding: 0 var(--uui-size-space-6); + gap: var(--uui-size-space-4); + width: 100%; + } + uui-input { + width: 100%; + } + `, + ]; + + @state() + private _mediaTypeName?: string | null = ''; + #workspaceContext?: UmbWorkspaceMediaTypeContext; + + constructor() { + super(); + + this.consumeContext('umbWorkspaceContext', (instance) => { + this.#workspaceContext = instance; + this.#observeName(); + }); + } + + #observeName() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.name, (name) => { + this._mediaTypeName = name; + }); + } + + // TODO. find a way where we don't have to do this for all Workspaces. + #handleInput(event: UUIInputEvent) { + if (event instanceof UUIInputEvent) { + const target = event.composedPath()[0] as UUIInputElement; + + if (typeof target?.value === 'string') { + this.#workspaceContext?.setName(target.value); + } + } + } + + render() { + return html` + + `; + } +} + +export default UmbMediaTypeWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-media-type-workspace-edit': UmbMediaTypeWorkspaceEditElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.context.ts index 2e89adea0b..d08f00a937 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.context.ts @@ -1,5 +1,5 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; -import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbMediaTypeRepository } from '../repository/media-type.repository'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { ObjectState } from '@umbraco-cms/observable-api'; @@ -8,7 +8,7 @@ import type { MediaTypeDetails } from '@umbraco-cms/models'; type EntityType = MediaTypeDetails; export class UmbWorkspaceMediaTypeContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { #data = new ObjectState(undefined); data = this.#data.asObservable(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts index 10c235c581..7235c843d0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts @@ -1,13 +1,13 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; -import { customElement, property, state } from 'lit/decorators.js'; -import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; -import { UmbWorkspaceEntityElement } from '../../../../backoffice/shared/components/workspace/workspace-entity-element.interface'; +import { customElement, state } from 'lit/decorators.js'; import { UmbWorkspaceMediaTypeContext } from './media-type-workspace.context'; +import { UmbMediaTypeWorkspaceEditElement } from './media-type-workspace-edit.element'; import { UmbLitElement } from '@umbraco-cms/element'; +import { IRoutingInfo } from '@umbraco-cms/router'; @customElement('umb-media-type-workspace') -export class UmbMediaTypeWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { +export class UmbMediaTypeWorkspaceElement extends UmbLitElement { static styles = [ UUITextStyles, css` @@ -23,49 +23,23 @@ export class UmbMediaTypeWorkspaceElement extends UmbLitElement implements UmbWo `, ]; - @state() - private _unique?: string; - - @state() - private _mediaTypeName?: string | null = ''; - - @property() - id!: string; - #workspaceContext = new UmbWorkspaceMediaTypeContext(this); + #element = new UmbMediaTypeWorkspaceEditElement(); - public load(entityKey: string) { - this.#workspaceContext.load(entityKey); - this._unique = entityKey; - } - - public create() { - this.#workspaceContext.createScaffold(); - } - - async connectedCallback() { - super.connectedCallback(); - - this.observe(this.#workspaceContext.name, (name) => { - this._mediaTypeName = name; - }); - } - - // TODO. find a way where we don't have to do this for all Workspaces. - #handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this.#workspaceContext.setName(target.value); - } - } - } + @state() + _routes: any[] = [ + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, + ]; render() { - return html` - - `; + return html``; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-actions/manifests.ts index e34ec47335..10d74bb1ae 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-actions/manifests.ts @@ -8,12 +8,14 @@ const entityActions: Array = [ alias: 'Umb.EntityAction.Media.Trash', name: 'Trash Media Entity Action ', meta: { - entityType: 'media', icon: 'umb:trash', label: 'Trash', api: UmbTrashEntityAction, repositoryAlias: MEDIA_REPOSITORY_ALIAS, }, + conditions: { + entityType: 'media', + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/manifests.ts index 86b84b2856..a7159898b0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/manifests.ts @@ -13,11 +13,13 @@ const entityActions: Array = [ name: 'Move Media Entity Bulk Action', weight: 100, meta: { - entityType, label: 'Move', repositoryAlias: MEDIA_REPOSITORY_ALIAS, api: UmbMediaMoveEntityBulkAction, }, + conditions: { + entityType, + }, }, { type: 'entityBulkAction', @@ -25,11 +27,13 @@ const entityActions: Array = [ name: 'Copy Media Entity Bulk Action', weight: 90, meta: { - entityType, label: 'Copy', repositoryAlias: MEDIA_REPOSITORY_ALIAS, api: UmbMediaCopyEntityBulkAction, }, + conditions: { + entityType, + }, }, { type: 'entityBulkAction', @@ -37,11 +41,13 @@ const entityActions: Array = [ name: 'Trash Media Entity Bulk Action', weight: 80, meta: { - entityType, label: 'Trash', repositoryAlias: MEDIA_REPOSITORY_ALIAS, api: UmbMediaTrashEntityBulkAction, }, + conditions: { + entityType, + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/trash/trash.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/trash/trash.action.ts index c4d2a6a7cd..4ff8837bfd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/trash/trash.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/trash/trash.action.ts @@ -1,10 +1,10 @@ import { html } from 'lit'; import type { UmbMediaRepository } from '../../repository/media.repository'; +import { UMB_CONFIRM_MODAL_TOKEN } from '../../../../shared/modals/confirm'; import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { UMB_CONFIRM_MODAL_TOKEN } from 'src/backoffice/shared/modals/confirm'; export class UmbMediaTrashEntityBulkAction extends UmbEntityBulkActionBase { #modalContext?: UmbModalContext; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/manifests.ts index e4287b17f3..337bb74407 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/manifests.ts @@ -9,6 +9,8 @@ const menuItem: ManifestMenuItem = { meta: { label: 'Media', icon: 'umb:folder', + }, + conditions: { menus: ['Umb.Menu.Media'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts index a070665602..9028802a8d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts @@ -1,4 +1,4 @@ -import { EntityTreeItemModel } from '@umbraco-cms/backend-api'; +import { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import { UmbContextToken } from '@umbraco-cms/context-api'; import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbTreeStoreBase } from '@umbraco-cms/store'; @@ -13,7 +13,7 @@ export const UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken([], (x) => x.key); + #data = new ArrayState([], (x) => x.key); /** * Creates an instance of UmbMediaTreeStore. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/manifests.ts index 3c363283c7..5b26b451bc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/manifests.ts @@ -26,11 +26,13 @@ const workspaceViews: Array = [ import('../../../shared/components/workspace/workspace-content/views/edit/workspace-view-content-edit.element'), weight: 200, meta: { - workspaces: ['Umb.Workspace.Media'], label: 'Media', pathname: 'media', icon: 'umb:picture', }, + conditions: { + workspaces: ['Umb.Workspace.Media'], + }, }, { type: 'workspaceView', @@ -40,11 +42,13 @@ const workspaceViews: Array = [ import('../../../shared/components/workspace/workspace-content/views/info/workspace-view-content-info.element'), weight: 100, meta: { - workspaces: ['Umb.Workspace.Media'], label: 'Info', pathname: 'info', icon: 'info', }, + conditions: { + workspaces: ['Umb.Workspace.Media'], + }, }, ]; @@ -55,13 +59,15 @@ const workspaceViewCollections: Array = [ name: 'Media Workspace Collection View', weight: 300, meta: { - workspaces: ['Umb.Workspace.Media'], label: 'Media', pathname: 'collection', icon: 'umb:grid', entityType: 'media', repositoryAlias: MEDIA_REPOSITORY_ALIAS, }, + conditions: { + workspaces: ['Umb.Workspace.Media'], + }, }, ]; @@ -71,12 +77,14 @@ const workspaceActions: Array = [ alias: 'Umb.WorkspaceAction.Media.Save', name: 'Save Media Workspace Action', meta: { - workspaces: ['Umb.Workspace.Media'], label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.Media'], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts new file mode 100644 index 0000000000..e7f23ea7bc --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts @@ -0,0 +1,59 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html, nothing } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { UmbMediaWorkspaceContext } from './media-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/element'; + +@customElement('umb-media-workspace-edit') +export class UmbMediaWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + `, + ]; + + @state() + _key?: string; + + #umbWorkspaceContext?: UmbMediaWorkspaceContext; + + constructor() { + super(); + + this.consumeContext('umbWorkspaceContext', (instance) => { + this.#umbWorkspaceContext = instance; + this.#observeKey(); + }); + } + + #observeKey() { + if (!this.#umbWorkspaceContext) return; + this.observe(this.#umbWorkspaceContext.data, (data) => (this._key = data?.key)); + } + + render() { + return html` + ${this._key + ? html` + + ` + : nothing} + `; + } +} + +export default UmbMediaWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-media-workspace-edit': UmbMediaWorkspaceEditElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.context.ts index 89847721d6..a2eee22259 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.context.ts @@ -1,6 +1,6 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbMediaRepository } from '../repository/media.repository'; -import type { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import type { UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { appendToFrozenArray, ObjectState } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import type { MediaDetails } from '@umbraco-cms/models'; @@ -8,7 +8,7 @@ import type { MediaDetails } from '@umbraco-cms/models'; type EntityType = MediaDetails; export class UmbMediaWorkspaceContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { #data = new ObjectState(undefined); data = this.#data.asObservable(); @@ -22,6 +22,7 @@ export class UmbMediaWorkspaceContext return this.#data.getValue(); } + // TODO: this should be async because it can only return the key if the data is loaded. getEntityKey() { return this.getData()?.key || ''; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts index 3b0a59f0d5..6e78b7a7ad 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts @@ -1,12 +1,13 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { css, html, nothing } from 'lit'; +import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import type { UmbWorkspaceEntityElement } from '../../../shared/components/workspace/workspace-entity-element.interface'; import { UmbMediaWorkspaceContext } from './media-workspace.context'; +import { UmbMediaWorkspaceEditElement } from './media-workspace-edit.element'; +import { IRoute, IRoutingInfo } from '@umbraco-cms/router'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-media-workspace') -export class UmbMediaWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { +export class UmbMediaWorkspaceElement extends UmbLitElement { static styles = [ UUITextStyles, css` @@ -18,31 +19,23 @@ export class UmbMediaWorkspaceElement extends UmbLitElement implements UmbWorksp `, ]; - private _workspaceContext: UmbMediaWorkspaceContext = new UmbMediaWorkspaceContext(this); + #workspaceContext = new UmbMediaWorkspaceContext(this); + #element = new UmbMediaWorkspaceEditElement(); @state() - _unique?: string; - - public load(entityKey: string) { - this._workspaceContext.load(entityKey); - this._unique = entityKey; - } - - public create(parentKey: string | null) { - this._workspaceContext.createScaffold(parentKey); - } + _routes: IRoute[] = [ + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, + ]; render() { - return html` - ${this._unique - ? html` - - ` - : nothing} - `; + return html``; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts index e888dd5f0f..019047dc04 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts @@ -1,8 +1,8 @@ import './media-workspace.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit-html'; +import { data as mediaNodes } from '../../../../core/mocks/data/media.data'; import type { UmbMediaWorkspaceElement } from './media-workspace.element'; -import { data as mediaNodes } from 'src/core/mocks/data/media.data'; export default { title: 'Workspaces/Media', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/section.manifests.ts index 9ba71485a5..c11cb83ab3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/section.manifests.ts @@ -22,11 +22,13 @@ const dashboards: Array = [ weight: 10, meta: { label: 'Media', - sections: [sectionAlias], pathname: 'media-management', - entityType: 'media', repositoryAlias: MEDIA_REPOSITORY_ALIAS, }, + conditions: { + sections: [sectionAlias], + entityType: 'media', + }, }, ]; @@ -37,9 +39,11 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { weight: 100, meta: { label: 'Media', - sections: [sectionAlias], menu: 'Umb.Menu.Media', }, + conditions: { + sections: [sectionAlias], + }, }; export const manifests = [section, menuSectionSidebarApp, ...dashboards]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/entity-actions/manifests.ts index e132cc6f8f..35d0341dbb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/entity-actions/manifests.ts @@ -8,12 +8,14 @@ const entityActions: Array = [ alias: 'Umb.EntityAction.MemberGroup.Delete', name: 'Delete Member Group Entity Action ', meta: { - entityType: 'member-group', icon: 'umb:trash', label: 'Delete', api: UmbDeleteEntityAction, repositoryAlias: MEMBER_GROUP_REPOSITORY_ALIAS, }, + conditions: { + entityType: 'member-group', + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts index cccc4c0247..e9880b658f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts @@ -9,6 +9,8 @@ const menuItem: ManifestMenuItem = { meta: { label: 'Member Groups', icon: 'umb:folder', + }, + conditions: { menus: ['Umb.Menu.Members'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/member-groups-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/member-groups-menu-item.element.ts index aaa72bd20a..2a215bad63 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/member-groups-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/member-groups-menu-item.element.ts @@ -19,14 +19,14 @@ export class UmbMemberGroupsMenuItemElement extends UmbLitElement { // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)? // TODO: can we make this reusable? render() { - return html` + has-children + > ${this._renderTree ? html`` : nothing} - `; + `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/manifests.ts index 74c4fd94d3..9a1f8802e9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/manifests.ts @@ -19,11 +19,13 @@ const workspaceViews: Array = [ loader: () => import('./views/info/workspace-view-member-group-info.element'), weight: 90, meta: { - workspaces: ['Umb.Workspace.MemberGroup'], label: 'Info', pathname: 'info', icon: 'info', }, + conditions: { + workspaces: ['Umb.Workspace.MemberGroup'], + }, }, ]; @@ -33,12 +35,14 @@ const workspaceActions: Array = [ alias: 'Umb.WorkspaceAction.MemberGroup.SaveAndPublish', name: 'Save Member Group Workspace Action', meta: { - workspaces: ['Umb.Workspace.MemberGroup'], label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.MemberGroup'], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace-edit.element.ts new file mode 100644 index 0000000000..bf1a593e9a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace-edit.element.ts @@ -0,0 +1,34 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement } from 'lit/decorators.js'; +import { UmbLitElement } from '@umbraco-cms/element'; + +/** + * @element umb-member-group-edit-workspace + * @description - Element for displaying a Member Group Workspace + */ +@customElement('umb-member-group-workspace-edit') +export class UmbMemberGroupWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + `, + ]; + + render() { + return html` Member Group `; + } +} + +export default UmbMemberGroupWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-member-group-workspace-edit': UmbMemberGroupWorkspaceEditElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.context.ts index 6acdae22d8..9f5828a437 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.context.ts @@ -1,4 +1,4 @@ -import { UmbWorkspaceEntityContextInterface } from '../../../../backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface } from '../../../../backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbWorkspaceContext } from '../../../../backoffice/shared/components/workspace/workspace-context/workspace-context'; import { UmbMemberGroupRepository } from '../repository/member-group.repository'; import type { MemberGroupDetails } from '@umbraco-cms/models'; @@ -8,7 +8,7 @@ import { ObjectState } from '@umbraco-cms/observable-api'; type EntityType = MemberGroupDetails; export class UmbWorkspaceMemberGroupContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { #data = new ObjectState(undefined); data = this.#data.asObservable(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts index 745e405049..368b175a4d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts @@ -1,9 +1,9 @@ -import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UmbWorkspaceEntityElement } from '../../../../backoffice/shared/components/workspace/workspace-entity-element.interface'; +import { IRoutingInfo } from 'router-slot'; import { UmbWorkspaceMemberGroupContext } from './member-group-workspace.context'; +import { UmbMemberGroupWorkspaceEditElement } from './member-group-workspace-edit.element'; import { UmbLitElement } from '@umbraco-cms/element'; /** @@ -11,7 +11,7 @@ import { UmbLitElement } from '@umbraco-cms/element'; * @description - Element for displaying a Member Group Workspace */ @customElement('umb-member-group-workspace') -export class UmbMemberGroupWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { +export class UmbMemberGroupWorkspaceElement extends UmbLitElement { static styles = [ UUITextStyles, css` @@ -20,59 +20,26 @@ export class UmbMemberGroupWorkspaceElement extends UmbLitElement implements Umb width: 100%; height: 100%; } - - #header { - /* TODO: can this be applied from layout slot CSS? */ - margin: 0 var(--uui-size-layout-1); - flex: 1 1 auto; - } `, ]; - + + #workspaceContext = new UmbWorkspaceMemberGroupContext(this); + #element = new UmbMemberGroupWorkspaceEditElement(); + @state() - _unique?: string; - - @state() - private _memberGroupName = ''; - - #workspaceContext: UmbWorkspaceMemberGroupContext = new UmbWorkspaceMemberGroupContext(this); - - public load(entityKey: string) { - this.#workspaceContext.load(entityKey); - this._unique = entityKey; - } - - public create() { - this.#workspaceContext.createScaffold(); - } - - async connectedCallback() { - super.connectedCallback(); - - this.observe(this.#workspaceContext.data, (memberGroup) => { - if (memberGroup && memberGroup.name !== this._memberGroupName) { - this._memberGroupName = memberGroup.name ?? ''; - } - }); - } - - // TODO. find a way where we don't have to do this for all Workspaces. - private _handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this.#workspaceContext.setName(target.value); - } - } - } + _routes: any[] = [ + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, + ]; render() { - return html` - - - - `; + return html` `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/entity-actions/manifests.ts index 71e673d409..b569d782c6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/entity-actions/manifests.ts @@ -12,12 +12,14 @@ const entityActions: Array = [ name: 'Delete Member Type Entity Action', weight: 100, meta: { - entityType, icon: 'umb:trash', label: 'Delete', repositoryAlias, api: UmbDeleteEntityAction, }, + conditions: { + entityType, + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts index 02892c46d9..02c64aa21a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts @@ -9,6 +9,8 @@ const menuItem: ManifestMenuItem = { meta: { label: 'Member Types', icon: 'umb:folder', + }, + conditions: { menus: ['Umb.Menu.Settings'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/member-types-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/member-types-menu-item.element.ts index 42e3449cc6..d1bcb90473 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/member-types-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/member-types-menu-item.element.ts @@ -19,14 +19,14 @@ export class UmbMemberTypesMenuItemElement extends UmbLitElement { // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)? // TODO: can we make this reusable? render() { - return html` + has-children + > ${this._renderTree ? html`` : nothing} - `; + `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace-edit.element.ts new file mode 100644 index 0000000000..99d8acb36b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace-edit.element.ts @@ -0,0 +1,38 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement } from 'lit/decorators.js'; +import { UmbLitElement } from '@umbraco-cms/element'; + +@customElement('umb-member-type-workspace-edit') +export class UmbMemberTypeWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + + #header { + /* TODO: can this be applied from layout slot CSS? */ + margin: 0 var(--uui-size-layout-1); + flex: 1 1 auto; + } + `, + ]; + + render() { + return html` + Member Type Workspace + `; + } +} + +export default UmbMemberTypeWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-member-type-workspace-edit': UmbMemberTypeWorkspaceEditElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.context.ts index ac7107e361..359230671f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.context.ts @@ -1,5 +1,5 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; -import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface as UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbMemberTypeRepository } from '../repository/member-type.repository'; import { ObjectState } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -7,9 +7,9 @@ import { UmbControllerHostInterface } from '@umbraco-cms/controller'; // TODO => use correct tpye type EntityType = any; -export class UmbWorkspaceMemberTypeContext +export class UmbMemberTypeWorkspaceContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { #data = new ObjectState(undefined); name = this.#data.getObservablePart((data) => data?.name); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts index 2b27e9c6e8..8345578924 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts @@ -1,8 +1,9 @@ -import { UUIInputEvent, UUIInputElement } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UmbWorkspaceMemberTypeContext } from './member-type-workspace.context'; +import { IRoutingInfo } from 'router-slot'; +import { UmbMemberTypeWorkspaceEditElement } from './member-type-workspace-edit.element'; +import { UmbMemberTypeWorkspaceContext } from './member-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-member-type-workspace') @@ -15,58 +16,26 @@ export class UmbMemberTypeWorkspaceElement extends UmbLitElement { width: 100%; height: 100%; } - - #header { - /* TODO: can this be applied from layout slot CSS? */ - margin: 0 var(--uui-size-layout-1); - flex: 1 1 auto; - } `, ]; - @state() - private _memberTypeName = ''; + #workspaceContext = new UmbMemberTypeWorkspaceContext(this); + #element = new UmbMemberTypeWorkspaceEditElement(); @state() - private _unique?: string; - - #workspaceContext = new UmbWorkspaceMemberTypeContext(this); - - public load(entityKey: string) { - this.#workspaceContext?.load(entityKey); - this._unique = entityKey; - } - - public create() { - this.#workspaceContext.createScaffold(); - } - - constructor() { - super(); - this.observe(this.#workspaceContext.name, (memberTypeName) => { - if (memberTypeName !== this._memberTypeName) { - this._memberTypeName = memberTypeName ?? ''; - } - }); - } - - // TODO. find a way where we don't have to do this for all Workspaces. - private _handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this.#workspaceContext.setName(target.value); - } - } - } + _routes: any[] = [ + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, + ]; render() { - return html` - - - - `; + return html` `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/entity-actions/manifests.ts index 57654c41d0..cef15f5563 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/entity-actions/manifests.ts @@ -8,12 +8,14 @@ const entityActions: Array = [ alias: 'Umb.EntityAction.Member.Delete', name: 'Delete Member Entity Action ', meta: { - entityType: 'member', icon: 'umb:trash', label: 'Delete', api: UmbDeleteEntityAction, repositoryAlias: MEMBER_REPOSITORY_ALIAS, }, + conditions: { + entityType: 'member', + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts index 0a79950126..a3a52703fb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts @@ -1,10 +1,10 @@ import { Observable } from 'rxjs'; +import { umbMemberData } from '../../../core/mocks/data/member.data'; import type { MemberDetails, MemberGroupDetails } from '@umbraco-cms/models'; import { UmbContextToken } from '@umbraco-cms/context-api'; import { ArrayState, createObservablePart } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbEntityDetailStore, UmbStoreBase } from '@umbraco-cms/store'; -import { umbMemberData } from 'src/core/mocks/data/member.data'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts index 4ab22621b1..375f8a5ac5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts @@ -10,6 +10,8 @@ const menuItem: ManifestMenuItem = { label: 'Members', icon: 'umb:folder', entityType: 'member', + }, + conditions: { menus: ['Umb.Menu.Members'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/members-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/members-menu-item.element.ts index a5ab1f7248..2d89af68e8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/members-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/members-menu-item.element.ts @@ -19,14 +19,14 @@ export class UmbMembersMenuItemElement extends UmbLitElement { // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)? // TODO: can we make this reusable? render() { - return html` + has-children + > ${this._renderTree ? html`` : nothing} - `; + `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/index.ts index 66a63ad20d..8659bec685 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/index.ts @@ -1,7 +1,7 @@ import type { DataSourceResponse } from '@umbraco-cms/models'; -import type { EntityTreeItemModel, PagedEntityTreeItemModel } from '@umbraco-cms/backend-api'; +import type { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; export interface MemberTreeDataSource { - getRootItems(): Promise>; - getItems(key: Array): Promise>; + getRootItems(): Promise>; + getItems(key: Array): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace-edit.element.ts new file mode 100644 index 0000000000..abebd0f1da --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace-edit.element.ts @@ -0,0 +1,29 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html, LitElement } from 'lit'; +import { customElement } from 'lit/decorators.js'; + +@customElement('umb-member-workspace-edit') +export class UmbMemberWorkspaceEditElement extends LitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + `, + ]; + + render() { + return html` Member Workspace `; + } +} + +export default UmbMemberWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-member-workspace-edit': UmbMemberWorkspaceEditElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.context.ts index a032a5fefc..96aae13705 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.context.ts @@ -1,39 +1,38 @@ -import { UmbEntityWorkspaceManager } from '../../../shared/components/workspace/workspace-context/entity-manager-controller'; import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; -import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; -import { UMB_MEMBER_STORE_CONTEXT_TOKEN } from '../member.detail.store'; +import { UmbEntityWorkspaceContextInterface as UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbMemberRepository } from '../repository/member.repository'; import type { MemberDetails } from '@umbraco-cms/models'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -export class UmbWorkspaceMemberContext +export class UmbMemberWorkspaceContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { - #manager = new UmbEntityWorkspaceManager(this.host, 'member', UMB_MEMBER_STORE_CONTEXT_TOKEN); - - public readonly data = this.#manager.state.asObservable(); - public readonly name = this.#manager.state.getObservablePart((state) => state?.name); - constructor(host: UmbControllerHostInterface) { super(host, new UmbMemberRepository(host)); } - setPropertyValue(alias: string, value: string) { - return; + getEntityType(): string { + return 'member'; } - setName(name: string) { - this.#manager.state.update({ name }); + getEntityKey() { + return '1234'; } - getEntityType = this.#manager.getEntityType; - getUnique = this.#manager.getEntityKey; - getEntityKey = this.#manager.getEntityKey; - getStore = this.#manager.getStore; - getData = this.#manager.getData as any; // TODO: fix this type mismatch, but this will be done when we move to repositories. - load = this.#manager.load; - create = this.#manager.create; - save = this.#manager.save; - destroy = this.#manager.destroy; + getData() { + return 'fake' as unknown as MemberDetails; + } + + async save() { + console.log('save'); + } + + async load(key: string) { + console.log('load', key); + } + + public destroy(): void { + console.log('destroy'); + } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts index a7d516bdf0..dc78cf8575 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts @@ -1,9 +1,13 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { css, html, LitElement } from 'lit'; -import { customElement, property } from 'lit/decorators.js'; +import { css, html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { IRoutingInfo } from 'router-slot'; +import { UmbMemberWorkspaceEditElement } from './member-workspace-edit.element'; +import { UmbMemberWorkspaceContext } from './member-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-member-workspace') -export class UmbMemberWorkspaceElement extends LitElement { +export class UmbMemberWorkspaceElement extends UmbLitElement { static styles = [ UUITextStyles, css` @@ -15,11 +19,23 @@ export class UmbMemberWorkspaceElement extends LitElement { `, ]; - @property() - id!: string; + #workspaceContext = new UmbMemberWorkspaceContext(this); + #element = new UmbMemberWorkspaceEditElement(); + + @state() + _routes: any[] = [ + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, + ]; render() { - return html` Member Workspace `; + return html` `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/section.manifests.ts index bfc8719566..50b4a5b254 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/section.manifests.ts @@ -22,9 +22,11 @@ const dashboards: Array = [ loader: () => import('./dashboards/welcome/dashboard-members-welcome.element'), meta: { label: 'Members', - sections: [sectionAlias], pathname: 'members', }, + conditions: { + sections: [sectionAlias], + }, }, ]; @@ -35,9 +37,11 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { weight: 100, meta: { label: 'Members', - sections: [sectionAlias], menu: 'Umb.Menu.Members', }, + conditions: { + sections: [sectionAlias], + }, }; export const manifests = [section, menuSectionSidebarApp, ...dashboards]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts index 26b897a91b..4023dfd261 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts @@ -7,7 +7,7 @@ import { UmbInputDocumentPickerElement } from '../../../shared/components/input- import { UmbInputMediaPickerElement } from '../../../shared/components/input-media-picker/input-media-picker.element'; import { UmbInputLanguagePickerElement } from '../../../shared/components/input-language-picker/input-language-picker.element'; import { UmbLitElement } from '@umbraco-cms/element'; -import { PackageDefinitionModel, PackageResource } from '@umbraco-cms/backend-api'; +import { PackageDefinitionResponseModel, PackageResource } from '@umbraco-cms/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; @@ -41,7 +41,7 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { entityKey?: string; @state() - private _package: PackageDefinitionModel = {}; + private _package: PackageDefinitionResponseModel = {}; @query('#package-name-input') private _packageNameInput!: UUIInputElement; @@ -64,7 +64,7 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { if (!this.entityKey) return; const { data } = await tryExecuteAndNotify(this, PackageResource.getPackageCreatedByKey({ key: this.entityKey })); if (!data) return; - this._package = data as PackageDefinitionModel; + this._package = data as PackageDefinitionResponseModel; } async #download() { @@ -88,7 +88,7 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { PackageResource.postPackageCreated({ requestBody: this._package }) ); if (!response.data || response.error) return; - this._package = response.data as PackageDefinitionModel; + this._package = response.data as PackageDefinitionResponseModel; this.#navigateBack(); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/manifests.ts index 8272eb0470..c67ff995cc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/manifests.ts @@ -19,39 +19,45 @@ const sectionsViews: Array = [ alias: 'Umb.SectionView.Packages.Repo', name: 'Packages Repo Section View', loader: () => import('./views/market-place/packages-market-place-section-view.element'), + weight: 300, meta: { - sections: [sectionAlias], label: 'Packages', pathname: 'packages', - weight: 300, icon: 'umb:cloud', }, + conditions: { + sections: [sectionAlias], + }, }, { type: 'sectionView', alias: 'Umb.SectionView.Packages.Installed', name: 'Installed Packages Section View', loader: () => import('./views/installed/installed-packages-section-view.element'), + weight: 200, meta: { - sections: [sectionAlias], label: 'Installed', pathname: 'installed', - weight: 200, icon: 'umb:box', }, + conditions: { + sections: [sectionAlias], + }, }, { type: 'sectionView', alias: 'Umb.SectionView.Packages.Builder', name: 'Packages Builder Section View', loader: () => import('./views/created/created-packages-section-view.element'), + weight: 100, meta: { - sections: [sectionAlias], label: 'Created', pathname: 'created', - weight: 100, icon: 'umb:files', }, + conditions: { + sections: [sectionAlias], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts index 0d23f0c4ef..02af893cbd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts @@ -3,11 +3,11 @@ import { ifDefined } from 'lit/directives/if-defined.js'; import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { UUIPaginationEvent } from '@umbraco-ui/uui'; -import { PackageDefinitionModel, PackageResource } from '@umbraco-cms/backend-api'; +import { UMB_CONFIRM_MODAL_TOKEN } from '../../../../shared/modals/confirm'; +import { PackageDefinitionResponseModel, PackageResource } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { UMB_CONFIRM_MODAL_TOKEN } from 'src/backoffice/shared/modals/confirm'; @customElement('umb-packages-created-overview') export class UmbPackagesCreatedOverviewElement extends UmbLitElement { @@ -44,7 +44,7 @@ export class UmbPackagesCreatedOverviewElement extends UmbLitElement { private _loading = true; @state() - private _createdPackages: PackageDefinitionModel[] = []; + private _createdPackages: PackageDefinitionResponseModel[] = []; @state() private _currentPage = 1; @@ -103,7 +103,7 @@ export class UmbPackagesCreatedOverviewElement extends UmbLitElement { `; } - #renderPackageItem(p: PackageDefinitionModel) { + #renderPackageItem(p: PackageDefinitionResponseModel) { return html` this.#deletePackage(p)} label="Delete package"> @@ -113,7 +113,7 @@ export class UmbPackagesCreatedOverviewElement extends UmbLitElement { `; } - #packageBuilder(p: PackageDefinitionModel) { + #packageBuilder(p: PackageDefinitionResponseModel) { if (!p.key) return; window.history.pushState({}, '', `/section/packages/view/created/package-builder/${p.key}`); } @@ -133,7 +133,7 @@ export class UmbPackagesCreatedOverviewElement extends UmbLitElement { this.#getPackages(); } - async #deletePackage(p: PackageDefinitionModel) { + async #deletePackage(p: PackageDefinitionResponseModel) { if (!p.key) return; const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { color: 'danger', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view-item.element.ts index e8ff26a0dd..063afe1b25 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view-item.element.ts @@ -4,6 +4,7 @@ import { customElement, property, state } from 'lit/decorators.js'; import { firstValueFrom, map } from 'rxjs'; import { UUIButtonState } from '@umbraco-ui/uui'; +import { UMB_CONFIRM_MODAL_TOKEN } from '../../../../shared/modals/confirm'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; @@ -12,7 +13,6 @@ import { UmbLitElement } from '@umbraco-cms/element'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import { PackageResource } from '@umbraco-cms/backend-api'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; -import { UMB_CONFIRM_MODAL_TOKEN } from 'src/backoffice/shared/modals/confirm'; @customElement('umb-installed-packages-section-view-item') export class UmbInstalledPackagesSectionViewItem extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts index 18120d46a9..f7bcfc0b11 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts @@ -3,7 +3,7 @@ import { UmbContextToken } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbStoreBase } from '@umbraco-cms/store'; import type { ManifestBase, UmbPackage } from '@umbraco-cms/models'; -import type { PackageMigrationStatusModel } from '@umbraco-cms/backend-api'; +import type { PackageMigrationStatusResponseModel } from '@umbraco-cms/backend-api'; import { ArrayState } from '@umbraco-cms/observable-api'; export const UMB_PACKAGE_STORE_TOKEN = new UmbContextToken('UmbPackageStore'); @@ -22,7 +22,7 @@ export class UmbPackageStore extends UmbStoreBase { #extensions = new ArrayState([], (e) => e.alias); - #migrations = new ArrayState([], (e) => e.packageName); + #migrations = new ArrayState([], (e) => e.packageName); /** * Observable of packages with extensions @@ -56,7 +56,7 @@ export class UmbPackageStore extends UmbStoreBase { this.#extensions.append(extensions); } - appendMigrations(migrations: PackageMigrationStatusModel[]) { + appendMigrations(migrations: PackageMigrationStatusResponseModel[]) { this.#migrations.append(migrations); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/sources/index.ts index 8b3555ed3f..3abfe139d2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/sources/index.ts @@ -1,4 +1,4 @@ -import { PagedCultureModel } from '@umbraco-cms/backend-api'; +import { PagedCultureReponseModel } from '@umbraco-cms/backend-api'; import type { DataSourceResponse } from '@umbraco-cms/models'; // TODO: This is a temporary solution until we have a proper paging interface @@ -8,5 +8,5 @@ type paging = { }; export interface UmbCultureDataSource { - getCollection(paging: paging): Promise>; + getCollection(paging: paging): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-viewer.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-viewer.element.ts index 9ef00638de..84f319ab80 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-viewer.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-viewer.element.ts @@ -2,10 +2,10 @@ import { html, css, nothing } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement } from 'lit/decorators.js'; import { UmbModalBaseElement } from '@umbraco-cms/modal'; -import type { SearchResultModel } from '@umbraco-cms/backend-api'; +import type { SearchResultResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-modal-element-fields-viewer') -export class UmbModalElementFieldsViewerElement extends UmbModalBaseElement { +export class UmbModalElementFieldsViewerElement extends UmbModalBaseElement { static styles = [ UUITextStyles, css` diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-indexers.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-indexers.ts index 1fcfb4384d..05ff3cf331 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-indexers.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-indexers.ts @@ -2,11 +2,11 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UUIButtonState } from '@umbraco-ui/uui-button'; +import { UMB_CONFIRM_MODAL_TOKEN } from '../../../../shared/modals/confirm'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { HealthStatusModel, IndexModel, IndexerResource } from '@umbraco-cms/backend-api'; +import { HealthStatusModel, IndexResponseModel, IndexerResource } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; -import { UMB_CONFIRM_MODAL_TOKEN } from 'src/backoffice/shared/modals/confirm'; import './section-view-examine-searchers'; @@ -85,7 +85,7 @@ export class UmbDashboardExamineIndexElement extends UmbLitElement { private _buttonState?: UUIButtonState = undefined; @state() - private _indexData?: IndexModel; + private _indexData?: IndexResponseModel; @state() private _loading = true; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-overview.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-overview.ts index 3ac9fb989b..beb5218eed 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-overview.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-overview.ts @@ -4,9 +4,9 @@ import { customElement, state } from 'lit/decorators.js'; import { HealthStatusModel, - IndexModel, + IndexResponseModel, IndexerResource, - SearcherModel, + SearcherResponseModel, SearcherResource, } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -58,10 +58,10 @@ export class UmbDashboardExamineOverviewElement extends UmbLitElement { ]; @state() - private _indexers?: IndexModel[]; + private _indexers?: IndexResponseModel[]; @state() - private _searchers?: SearcherModel[]; + private _searchers?: SearcherResponseModel[]; @state() private _loadingIndexers = false; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts index fd7f1b6f14..62c8d2280d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, state, query, property } from 'lit/decorators.js'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { SearchResultModel, SearcherResource, FieldModel } from '@umbraco-cms/backend-api'; +import { SearchResultResponseModel, SearcherResource, FieldPresentationModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -106,7 +106,7 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { searcherName!: string; @state() - private _searchResults?: SearchResultModel[]; + private _searchResults?: SearchResultResponseModel[]; @state() private _exposedFields?: ExposedSearchResultField[]; @@ -202,7 +202,7 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { } // Find the field named 'nodeName' and return its value if it exists in the fields array - private getSearchResultNodeName(searchResult: SearchResultModel): string { + private getSearchResultNodeName(searchResult: SearchResultResponseModel): string { const nodeNameField = searchResult.fields?.find((field) => field.name?.toUpperCase() === 'NODENAME'); return nodeNameField?.values?.join(', ') ?? ''; } @@ -284,7 +284,7 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { })}`; } - renderBodyCells(cellData: FieldModel[]) { + renderBodyCells(cellData: FieldPresentationModel[]) { return html`${this._exposedFields?.map((slot) => { return cellData.map((field) => { return slot.exposed && field.name == slot.name diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts index ce95990d04..486f315d04 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts @@ -11,7 +11,7 @@ import { UmbLitElement } from '@umbraco-cms/element'; import { ManifestHealthCheck } from '@umbraco-cms/extensions-registry'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; -import { HealthCheckGroupModel, HealthCheckResource } from '@umbraco-cms/backend-api'; +import { HealthCheckGroupResponseModel, HealthCheckResource } from '@umbraco-cms/backend-api'; @customElement('umb-dashboard-health-check') export class UmbDashboardHealthCheckElement extends UmbLitElement { @@ -53,7 +53,7 @@ export class UmbDashboardHealthCheckElement extends UmbLitElement { this.#register(manifests); }; - #createManifests(groups: HealthCheckGroupModel[]): Array { + #createManifests(groups: HealthCheckGroupResponseModel[]): Array { return groups.map((group) => { return { type: 'healthCheck', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check.context.ts index 920af65be7..70cdf9d5bb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check.context.ts @@ -1,14 +1,18 @@ import { BehaviorSubject } from 'rxjs'; -import { HealthCheckGroupModel, HealthCheckGroupWithResultModel, HealthCheckResource } from '@umbraco-cms/backend-api'; +import { + HealthCheckGroupPresentationModel, + HealthCheckGroupWithResultResponseModel, + HealthCheckResource, +} from '@umbraco-cms/backend-api'; import { UmbContextToken } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; export class UmbHealthCheckContext { - private _checks = new BehaviorSubject(undefined); + private _checks = new BehaviorSubject(undefined); public readonly checks = this._checks.asObservable(); - private _results = new BehaviorSubject(undefined); + private _results = new BehaviorSubject(undefined); public readonly results = this._results.asObservable(); public host: UmbControllerHostInterface; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-action.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-action.element.ts index 606c606c4e..00958c21c4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-action.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-action.element.ts @@ -4,7 +4,7 @@ import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; -import { HealthCheckActionModel, HealthCheckResource } from '@umbraco-cms/backend-api'; +import { HealthCheckActionRequestModel, HealthCheckResource } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -54,7 +54,7 @@ export class UmbDashboardHealthCheckActionElement extends UmbLitElement { ]; @property({ reflect: true }) - action!: HealthCheckActionModel; + action!: HealthCheckActionRequestModel; @state() private _buttonState?: UUIButtonState; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group-box-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group-box-overview.element.ts index 31fa419b08..3f880f186a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group-box-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group-box-overview.element.ts @@ -8,7 +8,7 @@ import { } from '../health-check-dashboard.context'; import { ensureSlash, path } from '@umbraco-cms/router'; import type { ManifestHealthCheck } from '@umbraco-cms/models'; -import { HealthCheckGroupWithResultModel, StatusResultTypeModel } from '@umbraco-cms/backend-api'; +import { HealthCheckGroupWithResultResponseModel, StatusResultTypeModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-health-check-group-box-overview') @@ -64,7 +64,7 @@ export class UmbHealthCheckGroupBoxOverviewElement extends UmbLitElement { private _tagResults?: any = []; @state() - private _keyResults?: HealthCheckGroupWithResultModel; + private _keyResults?: HealthCheckGroupWithResultResponseModel; constructor() { super(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts index 45f503dd59..0b9467d1e4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts @@ -10,11 +10,11 @@ import { UMB_HEALTHCHECK_DASHBOARD_CONTEXT_TOKEN, } from '../health-check-dashboard.context'; import { - HealthCheckActionModel, - HealthCheckGroupModel, + HealthCheckActionRequestModel, + HealthCheckGroupPresentationModel, HealthCheckModel, HealthCheckResource, - HealthCheckWithResultModel, + HealthCheckWithResultPresentationModel, StatusResultTypeModel, } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -74,7 +74,7 @@ export class UmbDashboardHealthCheckGroupElement extends UmbLitElement { private _buttonState: UUIButtonState; @state() - private _group?: HealthCheckGroupModel; + private _group?: HealthCheckGroupPresentationModel; private _healthCheckContext?: UmbHealthCheckDashboardContext; @@ -82,7 +82,7 @@ export class UmbDashboardHealthCheckGroupElement extends UmbLitElement { private _checks?: HealthCheckModel[]; @state() - private _keyResults?: HealthCheckWithResultModel[]; + private _keyResults?: HealthCheckWithResultPresentationModel[]; private _api?: UmbHealthCheckContext; @@ -112,7 +112,7 @@ export class UmbDashboardHealthCheckGroupElement extends UmbLitElement { this._buttonState = 'success'; } - private _onActionClick(action: HealthCheckActionModel) { + private _onActionClick(action: HealthCheckActionRequestModel) { return tryExecuteAndNotify(this, HealthCheckResource.postHealthCheckExecuteAction({ requestBody: action })); } @@ -197,7 +197,7 @@ export class UmbDashboardHealthCheckGroupElement extends UmbLitElement { } } - private renderActions(actions: HealthCheckActionModel[]) { + private renderActions(actions: HealthCheckActionRequestModel[]) { if (actions.length) return html`
${actions.map( diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/manifests.ts index f3475347ba..45891534c5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/manifests.ts @@ -10,9 +10,11 @@ const dashboards: Array = [ weight: 500, meta: { label: 'Welcome', - sections: ['Umb.Section.Settings'], pathname: 'welcome', }, + conditions: { + sections: ['Umb.Section.Settings'], + }, }, { type: 'dashboard', @@ -23,9 +25,11 @@ const dashboards: Array = [ weight: 400, meta: { label: 'Examine Management', - sections: ['Umb.Section.Settings'], pathname: 'examine-management', }, + conditions: { + sections: ['Umb.Section.Settings'], + }, }, { type: 'dashboard', @@ -36,9 +40,11 @@ const dashboards: Array = [ weight: 300, meta: { label: 'Models Builder', - sections: ['Umb.Section.Settings'], pathname: 'models-builder', }, + conditions: { + sections: ['Umb.Section.Settings'], + }, }, { type: 'dashboard', @@ -49,9 +55,11 @@ const dashboards: Array = [ weight: 200, meta: { label: 'Published Status', - sections: ['Umb.Section.Settings'], pathname: 'published-status', }, + conditions: { + sections: ['Umb.Section.Settings'], + }, }, { type: 'dashboard', @@ -62,9 +70,11 @@ const dashboards: Array = [ weight: 102, meta: { label: 'Health Check', - sections: ['Umb.Section.Settings'], pathname: 'health-check', }, + conditions: { + sections: ['Umb.Section.Settings'], + }, }, { type: 'dashboard', @@ -75,9 +85,11 @@ const dashboards: Array = [ weight: 101, meta: { label: 'Profiling', - sections: ['Umb.Section.Settings'], pathname: 'profiling', }, + conditions: { + sections: ['Umb.Section.Settings'], + }, }, { type: 'dashboard', @@ -88,9 +100,11 @@ const dashboards: Array = [ weight: 100, meta: { label: 'Telemetry Data', - sections: ['Umb.Section.Settings'], pathname: 'telemetry', }, + conditions: { + sections: ['Umb.Section.Settings'], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts index a9f60aa0c8..b9f792af70 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts @@ -3,7 +3,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { ModelsBuilderModel, ModelsBuilderResource, ModelsModeModel } from '@umbraco-cms/backend-api'; +import { ModelsBuilderResponseModel, ModelsBuilderResource, ModelsModeModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -41,7 +41,7 @@ export class UmbDashboardModelsBuilderElement extends UmbLitElement { ]; @state() - private _modelsBuilder?: ModelsBuilderModel; + private _modelsBuilder?: ModelsBuilderResponseModel; @state() private _buttonStateBuild: UUIButtonState = undefined; @@ -90,7 +90,11 @@ export class UmbDashboardModelsBuilderElement extends UmbLitElement {

Models Builder

- + Reload
diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts index 3d79b89afc..6f4fd6a691 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts @@ -140,9 +140,10 @@ export class UmbDashboardPublishedStatusElement extends UmbLitElement { type="button" look="primary" color="danger" - @click=${this._onRefreshCacheHandler} - >Refresh Status + label="Refresh Status" + @click=${this._onRefreshCacheHandler}> + Refresh Status +
@@ -156,10 +157,11 @@ export class UmbDashboardPublishedStatusElement extends UmbLitElement { type="button" look="primary" color="danger" + label="Reload Memory Cache" @click=${this._onReloadCacheHandler} - .state=${this._buttonStateReload} - >Reload Memory Cache + .state=${this._buttonStateReload}> + Reload Memory Cache + @@ -172,10 +174,11 @@ export class UmbDashboardPublishedStatusElement extends UmbLitElement { type="button" look="primary" color="danger" + label="Rebuild Database Cache" @click=${this._onRebuildCacheHandler} - .state=${this._buttonStateRebuild} - >Rebuild Database Cache + .state=${this._buttonStateRebuild}> + Rebuild Database Cache + @@ -187,10 +190,11 @@ export class UmbDashboardPublishedStatusElement extends UmbLitElement { type="button" look="primary" color="danger" + label="Snapshot Internal Cache" @click=${this._onSnapshotCacheHandler} - .state=${this._buttonStateCollect} - >Snapshot Internal Cache + .state=${this._buttonStateCollect}> + Snapshot Internal Cache + `; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/settings-welcome/dashboard-settings-welcome.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/settings-welcome/dashboard-settings-welcome.element.ts index 4bb62e1605..83cdf0b0d9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/settings-welcome/dashboard-settings-welcome.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/settings-welcome/dashboard-settings-welcome.element.ts @@ -2,64 +2,111 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, LitElement } from 'lit'; import { customElement } from 'lit/decorators.js'; - @customElement('umb-dashboard-settings-welcome') export class UmbDashboardSettingsWelcomeElement extends LitElement { - static styles = [UUITextStyles, css` - #settings-dashboard { - display: grid; - grid-gap:var(--uui-size-7); - grid-template-columns: repeat(3, 1fr); - } - - @media(max-width: 1200px) { + static styles = [ + UUITextStyles, + css` #settings-dashboard { - grid-template-columns: repeat(2, 1fr); + display: grid; + grid-gap: var(--uui-size-7); + grid-template-columns: repeat(3, 1fr); } - } - @media(max-width: 800px) { - #settings-dashboard { - grid-template-columns: repeat(1, 1fr); + @media (max-width: 1200px) { + #settings-dashboard { + grid-template-columns: repeat(2, 1fr); + } } - } - `]; + + @media (max-width: 800px) { + #settings-dashboard { + grid-template-columns: repeat(1, 1fr); + } + } + `, + ]; render() { return html` -
+

Documentation

Read more about working with the items in Settings in our Documentation.

- Get the help you need + + Get the help you need +

Community

Ask a question in the community forum or our Discord community

- Go to the forum - Chat with the community + + Go to the forum + + + Chat with the community +

Training

+

Find out about real-life training and certification opportunities

- Get Certified + + Get Certified +

Support

Ask a question in the community forum or our Discord community.

- Get the help you need + + Get the help you need +

Videos

-

Watch our free tutorial videos on the Umbraco Learning Base YouTube channel, to get upto speed quickly with Umbraco.

- Watch the videos +

+ Watch our free tutorial videos on the Umbraco Learning Base YouTube channel, to get upto speed quickly with + Umbraco. +

+ + Watch the videos +
-
- + `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.element.ts index 71a89c4b72..ee02adaf77 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.element.ts @@ -3,7 +3,7 @@ import { customElement, state } from 'lit/decorators.js'; import { unsafeHTML } from 'lit/directives/unsafe-html.js'; import { UUIButtonState } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { TelemetryModel, TelemetryLevelModel, TelemetryResource } from '@umbraco-cms/backend-api'; +import { TelemetryResponseModel, TelemetryLevelModel, TelemetryResource } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -22,7 +22,7 @@ export class UmbDashboardTelemetryElement extends UmbLitElement { private _telemetryFormData = TelemetryLevelModel.BASIC; @state() - private _telemetryLevels: TelemetryModel[] = []; + private _telemetryLevels: TelemetryResponseModel[] = []; @state() private _errorMessage = ''; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/data-types-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/data-types-menu-item.element.ts index 2887568f1b..47ad62cf81 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/data-types-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/data-types-menu-item.element.ts @@ -19,15 +19,14 @@ export class UmbDataTypesMenuItemElement extends UmbLitElement { // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)? // TODO: can we make this reusable? render() { - return html` + has-children + > ${this._renderTree ? html`` : nothing} - `; + `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts index 25eb1fdef7..75408bab4d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts @@ -10,6 +10,8 @@ const menuItem: ManifestMenuItem = { label: 'Data Types', icon: 'umb:folder', entityType: 'data-type', + }, + conditions: { menus: ['Umb.Menu.Settings'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts index e440812256..d69e722a9b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts @@ -5,12 +5,12 @@ import { UmbDataTypeStore, UMB_DATA_TYPE_STORE_CONTEXT_TOKEN } from './data-type import { DataTypeTreeServerDataSource } from './sources/data-type.tree.server.data'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { ProblemDetailsModel, DataTypeModel } from '@umbraco-cms/backend-api'; +import { ProblemDetailsModel, DataTypeResponseModel } from '@umbraco-cms/backend-api'; import type { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; import { UmbDetailRepository } from '@umbraco-cms/repository'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; -type ItemType = DataTypeModel; +type ItemType = DataTypeResponseModel; // Move to documentation / JSdoc /* We need to create a new instance of the repository from within the element context. We want the notifications to be displayed in the right context. */ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts index d6d8ef2d94..169e7499e7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts @@ -1,4 +1,4 @@ -import type { DataTypeModel } from '@umbraco-cms/backend-api'; +import type { DataTypeResponseModel } from '@umbraco-cms/backend-api'; import { UmbContextToken } from '@umbraco-cms/context-api'; import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase } from '@umbraco-cms/store'; @@ -13,7 +13,7 @@ export const UMB_DATA_TYPE_STORE_CONTEXT_TOKEN = new UmbContextToken([], (x) => x.key); + #data = new ArrayState([], (x) => x.key); /** * Creates an instance of UmbDataTypeStore. @@ -29,7 +29,7 @@ export class UmbDataTypeStore extends UmbStoreBase { * @param {DataTypeModel} dataType * @memberof UmbDataTypeStore */ - append(dataType: DataTypeModel) { + append(dataType: DataTypeResponseModel) { this.#data.append([dataType]); } @@ -38,7 +38,7 @@ export class UmbDataTypeStore extends UmbStoreBase { * @param {key} DataTypeModel key. * @memberof UmbDataTypeStore */ - byKey(key: DataTypeModel['key']) { + byKey(key: DataTypeResponseModel['key']) { return this.#data.getObservablePart((x) => x.find((y) => y.key === key)); } @@ -47,7 +47,7 @@ export class UmbDataTypeStore extends UmbStoreBase { * @param {string[]} uniques * @memberof UmbDataTypeStore */ - remove(uniques: Array) { + remove(uniques: Array) { this.#data.remove(uniques); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts index 2af70e06fe..254b052954 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts @@ -1,10 +1,10 @@ +import { v4 as uuidv4 } from 'uuid'; import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; import { ProblemDetailsModel, DataTypeResource, - DataTypeModel, - DataTypeCreateModel, - DataTypeUpdateModel, + DataTypeResponseModel, + DataTypeModelBaseModel, } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -15,7 +15,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/resources'; * @class UmbDataTypeServerDataSource * @implements {RepositoryDetailDataSource} */ -export class UmbDataTypeServerDataSource implements RepositoryDetailDataSource { +export class UmbDataTypeServerDataSource implements RepositoryDetailDataSource { #host: UmbControllerHostInterface; /** @@ -54,9 +54,10 @@ export class UmbDataTypeServerDataSource implements RepositoryDetailDataSource( + return tryExecuteAndNotify( this.#host, // TODO: avoid this any?.. tryExecuteAndNotify( @@ -90,21 +91,21 @@ export class UmbDataTypeServerDataSource implements RepositoryDetailDataSource( + return tryExecuteAndNotify( this.#host, DataTypeResource.putDataTypeByKey({ key: dataType.key, @@ -126,7 +127,7 @@ export class UmbDataTypeServerDataSource implements RepositoryDetailDataSource( + return tryExecuteAndNotify( this.#host, DataTypeResource.deleteDataTypeByKey({ key, @@ -147,7 +148,7 @@ export class UmbDataTypeServerDataSource implements RepositoryDetailDataSource( + return tryExecuteAndNotify( this.#host, DataTypeResource.deleteDataTypeByKey({ key, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts new file mode 100644 index 0000000000..260103dec1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts @@ -0,0 +1,88 @@ +import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement, property, state } from 'lit/decorators.js'; +import { UmbDataTypeWorkspaceContext } from './data-type-workspace.context'; +import { UmbRouteLocation } from '@umbraco-cms/router'; +import { UmbLitElement } from '@umbraco-cms/element'; +import { ManifestWorkspace } from '@umbraco-cms/extensions-registry'; + +/** + * @element umb-data-type-workspace-edit-element + * @description - Element for displaying the Data Type Workspace edit route. + */ +@customElement('umb-data-type-workspace-edit-element') +export class UmbDataTypeWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + + #header { + /* TODO: can this be applied from layout slot CSS? */ + margin: 0 var(--uui-size-layout-1); + flex: 1 1 auto; + } + `, + ]; + + @property() + manifest?: ManifestWorkspace; + + @property() + location?: UmbRouteLocation; + + @state() + private _dataTypeName = ''; + + #workspaceContext?: UmbDataTypeWorkspaceContext; + + constructor() { + super(); + + this.consumeContext('umbWorkspaceContext', (workspaceContext: UmbDataTypeWorkspaceContext) => { + this.#workspaceContext = workspaceContext; + this.#observeName(); + }); + } + + #observeName() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.name, (dataTypeName) => { + if (dataTypeName !== this._dataTypeName) { + this._dataTypeName = dataTypeName ?? ''; + } + }); + } + + // TODO. find a way where we don't have to do this for all Workspaces. + #handleInput(event: UUIInputEvent) { + if (event instanceof UUIInputEvent) { + const target = event.composedPath()[0] as UUIInputElement; + + if (typeof target?.value === 'string') { + this.#workspaceContext?.setName(target.value); + } + } + } + + render() { + return html` + + + + `; + } +} + +export default UmbDataTypeWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-data-type-workspace-edit-element': UmbDataTypeWorkspaceEditElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.context.ts index 531531c39d..73421518ad 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.context.ts @@ -1,15 +1,15 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; -import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbDataTypeRepository } from '../repository/data-type.repository'; -import type { DataTypeModel } from '@umbraco-cms/backend-api'; +import type { DataTypeResponseModel } from '@umbraco-cms/backend-api'; import { appendToFrozenArray, ObjectState } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbDataTypeWorkspaceContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { - #data = new ObjectState(undefined); + #data = new ObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); key = this.#data.getObservablePart((data) => data?.key); @@ -28,9 +28,9 @@ export class UmbDataTypeWorkspaceContext async createScaffold(parentKey: string | null) { const { data } = await this.repository.createScaffold(parentKey); - if (!data) return; this.setIsNew(true); this.#data.next(data); + return { data }; } getData() { @@ -63,8 +63,8 @@ export class UmbDataTypeWorkspaceContext const currentData = this.#data.value; if (currentData) { // TODO: make a partial update method for array of data, (idea/concept, use if this case is getting common) - const newDataSet = appendToFrozenArray(currentData.data || [], entry, (x) => x.alias); - this.#data.update({ data: newDataSet }); + const newDataSet = appendToFrozenArray(currentData.values || [], entry, (x) => x.alias); + this.#data.update({ values: newDataSet }); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts index 9dbc32333b..3562dd7418 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts @@ -1,73 +1,49 @@ -import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; -import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbDataTypeWorkspaceContext } from './data-type-workspace.context'; +import { UmbRouterSlotInitEvent, IRoute, IRoutingInfo } from '@umbraco-cms/router'; import { UmbLitElement } from '@umbraco-cms/element'; -/** - * @element umb-data-type-workspace - * @description - Element for displaying a Data Type Workspace - */ +import './data-type-workspace-edit.element'; + @customElement('umb-data-type-workspace') export class UmbDataTypeWorkspaceElement extends UmbLitElement { - static styles = [ - UUITextStyles, - css` - :host { - display: block; - width: 100%; - height: 100%; - } - - #header { - /* TODO: can this be applied from layout slot CSS? */ - margin: 0 var(--uui-size-layout-1); - flex: 1 1 auto; - } - `, - ]; + static styles = [UUITextStyles, css``]; #workspaceContext = new UmbDataTypeWorkspaceContext(this); + #routerPath? = ''; + + #element = document.createElement('umb-data-type-workspace-edit-element'); + #key = ''; + @state() - private _dataTypeName = ''; - - public load(value: string) { - this.#workspaceContext?.load(value); - //this._unique = entityKey; - } - - public create(parentKey: string | null) { - this.#workspaceContext.createScaffold(parentKey); - } - - constructor() { - super(); - this.observe(this.#workspaceContext.name, (dataTypeName) => { - if (dataTypeName !== this._dataTypeName) { - this._dataTypeName = dataTypeName ?? ''; - } - }); - } - - // TODO. find a way where we don't have to do this for all Workspaces. - #handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this.#workspaceContext.setName(target.value); - } - } - } + _routes: IRoute[] = [ + { + path: 'create/:parentKey', + component: () => this.#element, + setup: async (component: HTMLElement, info: IRoutingInfo) => { + const parentKey = info.match.params.parentKey; + this.#workspaceContext.createScaffold(parentKey); + }, + }, + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, + ]; render() { - return html` - - - - `; + return html` { + this.#routerPath = event.target.absoluteRouterPath; + }}>`; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/manifests.ts index f23cb76d4e..6a966d092d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/manifests.ts @@ -16,14 +16,16 @@ const workspaceViews: Array = [ type: 'workspaceView', alias: 'Umb.WorkspaceView.DataType.Edit', name: 'Data Type Workspace Edit View', - loader: () => import('./views/edit/data-type-workspace-view-edit.element'), + loader: () => import('./views/details/data-type-details-workspace-view.element'), weight: 90, meta: { - workspaces: ['Umb.Workspace.DataType'], - label: 'Edit', - pathname: 'edit', + label: 'Details', + pathname: 'details', icon: 'edit', }, + conditions: { + workspaces: ['Umb.Workspace.DataType'], + }, }, { type: 'workspaceView', @@ -32,11 +34,13 @@ const workspaceViews: Array = [ loader: () => import('./views/info/workspace-view-data-type-info.element'), weight: 90, meta: { - workspaces: ['Umb.Workspace.DataType'], label: 'Info', pathname: 'info', icon: 'info', }, + conditions: { + workspaces: ['Umb.Workspace.DataType'], + }, }, ]; @@ -46,12 +50,14 @@ const workspaceActions: Array = [ alias: 'Umb.WorkspaceAction.DataType.Save', name: 'Save Data Type Workspace Action', meta: { - workspaces: ['Umb.Workspace.DataType'], label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.MemberGroup'], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/edit/data-type-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.element.ts similarity index 91% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/edit/data-type-workspace-view-edit.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.element.ts index fd12cca7b2..8a46de7cae 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/edit/data-type-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.element.ts @@ -5,14 +5,14 @@ import { UmbDataTypeWorkspaceContext } from '../../data-type-workspace.context'; import { UMB_PROPERTY_EDITOR_UI_PICKER_MODAL_TOKEN } from '../../../../../shared/property-editors/modals/property-editor-ui-picker'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DataTypeModel } from '@umbraco-cms/backend-api'; +import type { DataTypeResponseModel } from '@umbraco-cms/backend-api'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import '../../../../../shared/property-editors/shared/property-editor-config/property-editor-config.element'; import '../../../../../shared/components/ref-property-editor-ui/ref-property-editor-ui.element'; -@customElement('umb-data-type-workspace-view-edit') -export class UmbDataTypeWorkspaceViewEditElement extends UmbLitElement { +@customElement('umb-data-type-details-workspace-view') +export class UmbDataTypeDetailsWorkspaceViewEditElement extends UmbLitElement { static styles = [ UUITextStyles, css` @@ -24,7 +24,7 @@ export class UmbDataTypeWorkspaceViewEditElement extends UmbLitElement { ]; @state() - _dataType?: DataTypeModel; + _dataType?: DataTypeResponseModel; @state() private _propertyEditorUIIcon = ''; @@ -73,8 +73,8 @@ export class UmbDataTypeWorkspaceViewEditElement extends UmbLitElement { this._observePropertyEditorUI(this._dataType.propertyEditorUiAlias || undefined); } - if (this._dataType.data && this._dataType.data !== this._data) { - this._data = this._dataType.data; + if (this._dataType.values && this._dataType.values !== this._data) { + this._data = this._dataType.values; } }); } @@ -168,10 +168,10 @@ export class UmbDataTypeWorkspaceViewEditElement extends UmbLitElement { } } -export default UmbDataTypeWorkspaceViewEditElement; +export default UmbDataTypeDetailsWorkspaceViewEditElement; declare global { interface HTMLElementTagNameMap { - 'umb-data-type-workspace-view-edit': UmbDataTypeWorkspaceViewEditElement; + 'umb-data-type-details-workspace-view': UmbDataTypeDetailsWorkspaceViewEditElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/edit/data-type-workspace-view-edit.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.stories.ts similarity index 76% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/edit/data-type-workspace-view-edit.stories.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.stories.ts index 5e3aab4cdf..466e56d2b0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/edit/data-type-workspace-view-edit.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.stories.ts @@ -3,9 +3,9 @@ import { html } from 'lit-html'; //import { data } from '../../../../../core/mocks/data/data-type.data'; -import type { UmbDataTypeWorkspaceViewEditElement } from './data-type-workspace-view-edit.element'; +import type { UmbDataTypeDetailsWorkspaceViewEditElement } from './data-type-details-workspace-view.element'; -import './data-type-workspace-view-edit.element'; +import './data-type-details-workspace-view.element'; //import { UmbDataTypeWorkspaceContext } from '../../workspace-data-type.context'; export default { @@ -22,6 +22,6 @@ export default { ], } as Meta; -export const AAAOverview: Story = () => +export const AAAOverview: Story = () => html` `; AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts index d7e9f35ac5..7ea6345d41 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts @@ -4,14 +4,14 @@ import { customElement, state } from 'lit/decorators.js'; import { UmbDataTypeWorkspaceContext } from '../../data-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DataTypeModel } from '@umbraco-cms/backend-api'; +import { DataTypeResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-workspace-view-data-type-info') export class UmbWorkspaceViewDataTypeInfoElement extends UmbLitElement { static styles = [UUITextStyles, css``]; @state() - _dataType?: DataTypeModel; + _dataType?: DataTypeResponseModel; private _workspaceContext?: UmbDataTypeWorkspaceContext; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/menu-item/manifests.ts index aa8ba20a12..82c1c4b7a4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/menu-item/manifests.ts @@ -9,6 +9,8 @@ const menuItem: ManifestMenuItem = { label: 'Extensions', icon: 'umb:wand', entityType: 'extension-root', + }, + conditions: { menus: ['Umb.Menu.Settings'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts index f53810199b..2f5d2ecfcb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts @@ -1,10 +1,10 @@ import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; +import { UMB_CONFIRM_MODAL_TOKEN } from '../../../shared/modals/confirm'; import { isManifestElementNameType, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import type { ManifestBase } from '@umbraco-cms/models'; import { UmbLitElement } from '@umbraco-cms/element'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { UMB_CONFIRM_MODAL_TOKEN } from 'src/backoffice/shared/modals/confirm'; @customElement('umb-extension-root-workspace') export class UmbExtensionRootWorkspaceElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts index a69f693017..9c4c8165fb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts @@ -7,7 +7,7 @@ import { UUIMenuItemEvent } from '@umbraco-ui/uui'; import { UmbLanguageRepository } from '../repository/language.repository'; import { UMB_APP_LANGUAGE_CONTEXT_TOKEN, UmbAppLanguageContext } from './app-language.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { LanguageModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-app-language-select') export class UmbAppLanguageSelectElement extends UmbLitElement { @@ -43,10 +43,10 @@ export class UmbAppLanguageSelectElement extends UmbLitElement { ]; @state() - private _languages: Array = []; + private _languages: Array = []; @state() - private _appLanguage?: LanguageModel; + private _appLanguage?: LanguageResponseModel; @state() private _isOpen = false; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts index 867f876579..bd9686fe99 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts @@ -2,15 +2,15 @@ import { UmbLanguageRepository } from '../repository/language.repository'; import { ObjectState, UmbObserverController } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextToken } from '@umbraco-cms/context-api'; -import { LanguageModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; export class UmbAppLanguageContext { #host: UmbControllerHostInterface; #languageRepository: UmbLanguageRepository; - #languages: Array = []; + #languages: Array = []; - #appLanguage = new ObjectState(undefined); + #appLanguage = new ObjectState(undefined); appLanguage = this.#appLanguage.asObservable(); constructor(host: UmbControllerHostInterface) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/manifests.ts index 345c971563..874da97023 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/manifests.ts @@ -6,7 +6,7 @@ const entityActions: Array = [ alias: 'Umb.SectionSidebarItem.LanguageSelect', name: 'App Language Select Section Sidebar Item', loader: () => import('./app-language-select.element'), - meta: { + conditions: { sections: ['Umb.Section.Content'], }, }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/entity-actions/manifests.ts index 7852f3e09c..b9dd61f2b9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/entity-actions/manifests.ts @@ -10,12 +10,14 @@ const entityActions: Array = [ alias: 'Umb.EntityAction.Language.Delete', name: 'Delete Language Entity Action', meta: { - entityType, repositoryAlias: LANGUAGE_REPOSITORY_ALIAS, icon: 'umb:trash', label: 'Delete', api: UmbDeleteEntityAction, }, + conditions: { + entityType, + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/menu-item/manifests.ts index 258f0a95c1..55fc1b1c0c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/menu-item/manifests.ts @@ -9,6 +9,8 @@ const menuItem: ManifestMenuItem = { label: 'Languages', icon: 'umb:globe', entityType: 'language-root', + }, + conditions: { menus: ['Umb.Menu.Settings'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/index.ts index 5f551178ad..f057aa3800 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/index.ts @@ -1,10 +1,10 @@ -import { LanguageModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; import { UmbModalToken } from '@umbraco-cms/modal'; export interface UmbLanguagePickerModalData { multiple?: boolean; selection?: Array; - filter?: (language: LanguageModel) => boolean; + filter?: (language: LanguageResponseModel) => boolean; } export interface UmbLanguagePickerModalResult { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/language-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/language-picker-modal.element.ts index 98a4407e97..53bf09acbd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/language-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/language-picker-modal.element.ts @@ -6,14 +6,14 @@ import { UUIMenuItemElement, UUIMenuItemEvent } from '@umbraco-ui/uui'; import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UmbLanguageRepository } from '../../repository/language.repository'; import { UmbModalElementPickerBase } from '@umbraco-cms/modal'; -import { LanguageModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-language-picker-modal') -export class UmbLanguagePickerModalElement extends UmbModalElementPickerBase { +export class UmbLanguagePickerModalElement extends UmbModalElementPickerBase { static styles = [UUITextStyles, css``]; @state() - private _languages: Array = []; + private _languages: Array = []; private _languageRepository = new UmbLanguageRepository(this); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.repository.ts index ef87ea9abe..6339112735 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.repository.ts @@ -3,7 +3,7 @@ import { UmbLanguageStore, UMB_LANGUAGE_STORE_CONTEXT_TOKEN } from './language.s import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; -import { LanguageModel, ProblemDetailsModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel, ProblemDetailsModel } from '@umbraco-cms/backend-api'; export class UmbLanguageRepository { #init!: Promise; @@ -84,7 +84,7 @@ export class UmbLanguageRepository { return this.#dataSource.createScaffold(); } - async create(language: LanguageModel) { + async create(language: LanguageResponseModel) { await this.#init; const { error } = await this.#dataSource.insert(language); @@ -104,7 +104,7 @@ export class UmbLanguageRepository { * @return {*} * @memberof UmbLanguageRepository */ - async save(language: LanguageModel) { + async save(language: LanguageResponseModel) { await this.#init; const { error } = await this.#dataSource.update(language); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.store.ts index 3da9a5a38a..18f10bc156 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.store.ts @@ -2,7 +2,7 @@ import { UmbContextToken } from '@umbraco-cms/context-api'; import { UmbStoreBase } from '@umbraco-cms/store'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { ArrayState } from '@umbraco-cms/observable-api'; -import { LanguageModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; export const UMB_LANGUAGE_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbLanguageStore'); @@ -13,14 +13,14 @@ export const UMB_LANGUAGE_STORE_CONTEXT_TOKEN = new UmbContextToken([], (x) => x.isoCode); + #data = new ArrayState([], (x) => x.isoCode); data = this.#data.asObservable(); constructor(host: UmbControllerHostInterface) { super(host, UMB_LANGUAGE_STORE_CONTEXT_TOKEN.toString()); } - append(language: LanguageModel) { + append(language: LanguageResponseModel) { this.#data.append([language]); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts index 81efc0303f..449c07448b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts @@ -1,4 +1,4 @@ -import { LanguageModel, PagedLanguageModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel, PagedLanguageResponseModel } from '@umbraco-cms/backend-api'; import type { DataSourceResponse } from '@umbraco-cms/models'; import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; @@ -8,9 +8,9 @@ type paging = { take: number; }; -export interface UmbLanguageDataSource extends RepositoryDetailDataSource { - createScaffold(): Promise>; - get(isoCode: string): Promise>; - delete(isoCode: string): Promise>; - getCollection(paging: paging): Promise>; +export interface UmbLanguageDataSource extends RepositoryDetailDataSource { + createScaffold(): Promise>; + get(isoCode: string): Promise>; + delete(isoCode: string): Promise>; + getCollection(paging: paging): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts index cca5af2960..98653be2ed 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts @@ -1,4 +1,4 @@ -import { ProblemDetailsModel, LanguageResource, LanguageModel } from '@umbraco-cms/backend-api'; +import { ProblemDetailsModel, LanguageResource, LanguageResponseModel } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -47,7 +47,7 @@ export class UmbLanguageServerDataSource implements UmbLanguageServerDataSource * @memberof UmbLanguageServerDataSource */ async createScaffold() { - const data: LanguageModel = { + const data: LanguageResponseModel = { name: '', isDefault: false, isMandatory: false, @@ -60,11 +60,11 @@ export class UmbLanguageServerDataSource implements UmbLanguageServerDataSource /** * Inserts a new Language on the server - * @param {LanguageModel} language + * @param {LanguageResponseModel} language * @return {*} * @memberof UmbLanguageServerDataSource */ - async insert(language: LanguageModel) { + async insert(language: LanguageResponseModel) { if (!language.isoCode) { const error: ProblemDetailsModel = { title: 'Language iso code is missing' }; return { error }; @@ -75,11 +75,11 @@ export class UmbLanguageServerDataSource implements UmbLanguageServerDataSource /** * Updates a Language on the server - * @param {LanguageModel} language + * @param {LanguageResponseModel} language * @return {*} * @memberof UmbLanguageServerDataSource */ - async update(language: LanguageModel) { + async update(language: LanguageResponseModel) { if (!language.isoCode) { const error: ProblemDetailsModel = { title: 'Language iso code is missing' }; return { error }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-table-delete-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/components/language-root-table-delete-column-layout.element.ts similarity index 93% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-table-delete-column-layout.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/components/language-root-table-delete-column-layout.element.ts index d318a967fa..081addf7c2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-table-delete-column-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/components/language-root-table-delete-column-layout.element.ts @@ -3,14 +3,14 @@ import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UmbLitElement } from '@umbraco-cms/element'; -import { LanguageModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-language-root-table-delete-column-layout') export class UmbLanguageRootTableDeleteColumnLayoutElement extends UmbLitElement { static styles = [UUITextStyles, css``]; @property({ attribute: false }) - value!: LanguageModel; + value!: LanguageResponseModel; @state() _isOpen = false; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-table-name-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/components/language-root-table-name-column-layout.element.ts similarity index 78% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-table-name-column-layout.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/components/language-root-table-name-column-layout.element.ts index 5ffa2fd7c9..741de51621 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-table-name-column-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/components/language-root-table-name-column-layout.element.ts @@ -7,12 +7,12 @@ export class UmbLanguageRootTableNameColumnLayoutElement extends LitElement { static styles = [UUITextStyles, css``]; @property({ attribute: false }) - value!: { key: string; name: string }; + value!: { isoCode: string; name: string }; render() { if (!this.value) return nothing; - return html`${this.value.name}`; + return html`${this.value.name}`; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts index aba3ffb008..7ddd6809bd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts @@ -4,10 +4,10 @@ import { customElement, state } from 'lit/decorators.js'; import { UmbTableColumn, UmbTableConfig, UmbTableItem } from '../../../../shared/components/table'; import { UmbLanguageRepository } from '../../repository/language.repository'; import { UmbLitElement } from '@umbraco-cms/element'; -import { LanguageModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; -import './language-root-table-delete-column-layout.element'; -import './language-root-table-name-column-layout.element'; +import './components/language-root-table-delete-column-layout.element'; +import './components/language-root-table-name-column-layout.element'; @customElement('umb-language-root-workspace') export class UmbLanguageRootWorkspaceElement extends UmbLitElement { @@ -79,7 +79,7 @@ export class UmbLanguageRootWorkspaceElement extends UmbLitElement { } } - #createTableItems(languages: Array) { + #createTableItems(languages: Array) { this._tableItems = languages.map((language) => { return { key: language.isoCode ?? '', @@ -89,7 +89,7 @@ export class UmbLanguageRootWorkspaceElement extends UmbLitElement { columnAlias: 'languageName', value: { name: language.name, - key: language.isoCode, + isoCode: language.isoCode, }, }, { @@ -126,7 +126,7 @@ export class UmbLanguageRootWorkspaceElement extends UmbLitElement { label="Add language" look="outline" color="default" - href="section/settings/language/create/root"> + href="section/settings/workspace/language/create">
diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts new file mode 100644 index 0000000000..9128a4c69a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts @@ -0,0 +1,76 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css'; +import { css, html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; +import { UmbLanguageWorkspaceContext } from './language-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/element'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; + +@customElement('umb-language-workspace-thingy') +export class UmbLanguageWorkspaceThingyElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + #header { + display: flex; + padding: 0 var(--uui-size-space-6); + gap: var(--uui-size-space-4); + width: 100%; + } + uui-input { + width: 100%; + } + `, + ]; + + #workspaceContext?: UmbLanguageWorkspaceContext; + + @state() + _language?: LanguageResponseModel; + + constructor() { + super(); + + this.consumeContext('umbWorkspaceContext', (context) => { + this.#workspaceContext = context; + this.#observeData(); + }); + } + + #observeData() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.data, (data) => { + this._language = data; + }); + } + + #handleInput(event: UUIInputEvent) { + if (event instanceof UUIInputEvent) { + const target = event.composedPath()[0] as UUIInputElement; + + if (typeof target?.value === 'string') { + this.#workspaceContext?.setName(target.value); + } + } + } + + render() { + return html` + + `; + } +} + +export default UmbLanguageWorkspaceThingyElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-language-workspace-thingy': UmbLanguageWorkspaceThingyElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.context.ts index a31db582a7..3dd49bcd97 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.context.ts @@ -1,11 +1,11 @@ import { UmbLanguageRepository } from '../../repository/language.repository'; import { UmbWorkspaceContext } from '../../../../shared/components/workspace/workspace-context/workspace-context'; -import type { LanguageModel } from '@umbraco-cms/backend-api'; +import type { LanguageResponseModel } from '@umbraco-cms/backend-api'; import { ObjectState } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbLanguageWorkspaceContext extends UmbWorkspaceContext { - #data = new ObjectState(undefined); + #data = new ObjectState(undefined); data = this.#data.asObservable(); // TODO: this is a temp solution to bubble validation errors to the UI @@ -29,6 +29,7 @@ export class UmbLanguageWorkspaceContext extends UmbWorkspaceContext { - this._language = data; - }); - } - - load(key: string): void { - this.#languageWorkspaceContext.load(key); - } - - create(): void { - this.#languageWorkspaceContext.createScaffold(); - } - - #handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this.#languageWorkspaceContext?.setName(target.value); - } - } - } + // TODO: add create route + @state() + _routes = [ + { + path: 'edit/:isoCode', + component: () => import('./language-workspace-edit.element'), + setup: (component: HTMLElement, info: IRoutingInfo) => { + this.#languageWorkspaceContext.load(info.match.params.isoCode); + }, + }, + ]; render() { - if (!this._language) return nothing; - - return html` - - - - `; + return html` { + this.#routerPath = event.target.absoluteRouterPath; + }}>`; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/manifests.ts index 94bc97a049..8c13575889 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/manifests.ts @@ -1,4 +1,3 @@ -import { LANGUAGE_REPOSITORY_ALIAS } from '../../repository/manifests'; import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; @@ -15,16 +14,18 @@ const workspace: ManifestWorkspace = { const workspaceViews: Array = [ { type: 'workspaceView', - alias: 'Umb.WorkspaceView.Language.Edit', - name: 'Language Workspace Edit View', - loader: () => import('./views/edit/edit-language-workspace-view.element'), + alias: 'Umb.WorkspaceView.Language.Details', + name: 'Language Workspace Details View', + loader: () => import('./views/details/language-details-workspace-view.element'), weight: 90, meta: { - workspaces: ['Umb.Workspace.Language'], - label: 'Edit', - pathname: 'edit', + label: 'Details', + pathname: 'details', icon: 'edit', }, + conditions: { + workspaces: ['Umb.Workspace.Language'], + }, }, ]; @@ -34,12 +35,14 @@ const workspaceActions: Array = [ alias: 'Umb.WorkspaceAction.Language.Save', name: 'Save Language Workspace Action', meta: { - workspaces: ['Umb.Workspace.Language'], look: 'primary', color: 'positive', label: 'Save', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.Language'], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/edit/edit-language-workspace-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/details/language-details-workspace-view.element.ts similarity index 94% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/edit/edit-language-workspace-view.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/details/language-details-workspace-view.element.ts index 0c27e84f7d..270df84963 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/edit/edit-language-workspace-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/details/language-details-workspace-view.element.ts @@ -8,10 +8,10 @@ import UmbInputCultureSelectElement from '../../../../../../shared/components/in import UmbInputLanguagePickerElement from '../../../../../../shared/components/input-language-picker/input-language-picker.element'; import { UmbChangeEvent } from '@umbraco-cms/events'; import { UmbLitElement } from '@umbraco-cms/element'; -import { LanguageModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; -@customElement('umb-edit-language-workspace-view') -export class UmbEditLanguageWorkspaceViewElement extends UmbLitElement { +@customElement('umb-language-details-workspace-view') +export class UmbLanguageDetailsWorkspaceViewElement extends UmbLitElement { static styles = [ UUITextStyles, css` @@ -45,7 +45,7 @@ export class UmbEditLanguageWorkspaceViewElement extends UmbLitElement { ]; @state() - _language?: LanguageModel; + _language?: LanguageResponseModel; @state() _isDefaultLanguage = false; @@ -201,7 +201,7 @@ export class UmbEditLanguageWorkspaceViewElement extends UmbLitElement { slot="editor" max="1" @change=${this.#handleFallbackChange} - .filter=${(language: LanguageModel) => + .filter=${(language: LanguageResponseModel) => language.isoCode !== this._language?.isoCode}> @@ -209,10 +209,10 @@ export class UmbEditLanguageWorkspaceViewElement extends UmbLitElement { } } -export default UmbEditLanguageWorkspaceViewElement; +export default UmbLanguageDetailsWorkspaceViewElement; declare global { interface HTMLElementTagNameMap { - 'umb-edit-language-workspace-view': UmbEditLanguageWorkspaceViewElement; + 'umb-language-details-workspace-view': UmbLanguageDetailsWorkspaceViewElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/menu-item/manifests.ts index 558df963b7..160e8e0a5c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/menu-item/manifests.ts @@ -9,6 +9,8 @@ const menuItem: ManifestMenuItem = { label: 'Log Viewer', icon: 'umb:box-alt', entityType: 'logviewer', + }, + conditions: { menus: ['Umb.Menu.Settings'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/index.ts index 518a5e18af..5b70410caf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/index.ts @@ -1,12 +1,12 @@ import { DirectionModel, - LogLevelCountsModel, + LogLevelCountsReponseModel, LogLevelModel, - PagedLoggerModel, - PagedLogMessageModel, - PagedLogTemplateModel, - PagedSavedLogSearchModel, - SavedLogSearchModel, + PagedLoggerResponseModel, + PagedLogMessageResponseModel, + PagedLogTemplateResponseModel, + PagedSavedLogSearchResponseModel, + SavedLogSearchResponseModel, } from '@umbraco-cms/backend-api'; import type { DataSourceResponse } from '@umbraco-cms/models'; @@ -19,25 +19,25 @@ export interface LogSearchDataSource { }: { skip?: number; take?: number; - }): Promise>; - getSavedSearchByName({ name }: { name: string }): Promise>; + }): Promise>; + getSavedSearchByName({ name }: { name: string }): Promise>; deleteSavedSearchByName({ name }: { name: string }): Promise>; postLogViewerSavedSearch({ requestBody, }: { - requestBody?: SavedLogSearchModel; + requestBody?: SavedLogSearchResponseModel; }): Promise>; } export interface LogMessagesDataSource { - getLogViewerLevel({ skip, take }: { skip?: number; take?: number }): Promise>; + getLogViewerLevel({ skip, take }: { skip?: number; take?: number }): Promise>; getLogViewerLevelCount({ startDate, endDate, }: { startDate?: string; endDate?: string; - }): Promise>; + }): Promise>; getLogViewerLogs({ skip, take = 100, @@ -54,7 +54,7 @@ export interface LogMessagesDataSource { logLevel?: Array; startDate?: string; endDate?: string; - }): Promise>; + }): Promise>; getLogViewerMessageTemplate({ skip, take = 100, @@ -65,5 +65,5 @@ export interface LogMessagesDataSource { take?: number; startDate?: string; endDate?: string; - }): Promise>; + }): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/log-viewer.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/log-viewer.server.data.ts index ebdf1264e5..822f63f8e4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/log-viewer.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/log-viewer.server.data.ts @@ -1,5 +1,5 @@ import { LogMessagesDataSource, LogSearchDataSource } from '.'; -import { DirectionModel, LogLevelModel, LogViewerResource, SavedLogSearchModel } from '@umbraco-cms/backend-api'; +import { DirectionModel, LogLevelModel, LogViewerResource, SavedLogSearchResponseModel } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -49,7 +49,7 @@ export class UmbLogSearchesServerDataSource implements LogSearchDataSource { * @return {*} * @memberof UmbLogSearchesServerDataSource */ - async postLogViewerSavedSearch({ requestBody }: { requestBody?: SavedLogSearchModel }) { + async postLogViewerSavedSearch({ requestBody }: { requestBody?: SavedLogSearchResponseModel }) { return await tryExecuteAndNotify(this.#host, LogViewerResource.postLogViewerSavedSearch({ requestBody })); } /** diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts index 8579ccc331..53d29fabfc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts @@ -84,7 +84,9 @@ export class UmbLogViewerWorkspaceElement extends UmbLitElement { this.observe( umbExtensionsRegistry .extensionsOfTypes(['workspaceView']) - .pipe(map((extensions) => extensions.filter((extension) => extension.meta.workspaces.includes(this._alias)))), + .pipe( + map((extensions) => extensions.filter((extension) => extension.conditions.workspaces.includes(this._alias))) + ), (workspaceViews) => { this._workspaceViews = workspaceViews; this._createRoutes(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts index c740c29aa1..6e01d52f37 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts @@ -20,11 +20,13 @@ const workspaceViews: Array = [ loader: () => import('../views/overview/index'), weight: 300, meta: { - workspaces: [workspaceAlias], label: 'Overview', pathname: 'overview', icon: 'umb:box-alt', }, + conditions: { + workspaces: [workspaceAlias], + }, }, { type: 'workspaceView', @@ -33,11 +35,13 @@ const workspaceViews: Array = [ loader: () => import('../views/search/index'), weight: 200, meta: { - workspaces: [workspaceAlias], label: 'Search', pathname: 'search', icon: 'umb:search', }, + conditions: { + workspaces: [workspaceAlias], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts index 93d7896cc6..57539c9aa4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts @@ -2,12 +2,12 @@ import { UmbLogViewerRepository } from '../repository/log-viewer.repository'; import { ArrayState, createObservablePart, DeepState, ObjectState, StringState } from '@umbraco-cms/observable-api'; import { DirectionModel, - LogLevelCountsModel, + LogLevelCountsReponseModel, LogLevelModel, - PagedLoggerModel, - PagedLogMessageModel, - PagedLogTemplateModel, - PagedSavedLogSearchModel, + PagedLoggerResponseModel, + PagedLogMessageResponseModel, + PagedLogTemplateResponseModel, + PagedSavedLogSearchResponseModel, } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextToken } from '@umbraco-cms/context-api'; @@ -50,16 +50,16 @@ export class UmbLogViewerWorkspaceContext { endDate: this.today, }; - #savedSearches = new DeepState(undefined); + #savedSearches = new DeepState(undefined); savedSearches = createObservablePart(this.#savedSearches, (data) => data?.items); - #logCount = new DeepState(null); + #logCount = new DeepState(null); logCount = createObservablePart(this.#logCount, (data) => data); #dateRange = new DeepState(this.defaultDateRange); dateRange = createObservablePart(this.#dateRange, (data) => data); - #loggers = new DeepState(null); + #loggers = new DeepState(null); loggers = createObservablePart(this.#loggers, (data) => data?.items); #canShowLogs = new BasicState(null); @@ -68,13 +68,13 @@ export class UmbLogViewerWorkspaceContext { #filterExpression = new StringState(''); filterExpression = createObservablePart(this.#filterExpression, (data) => data); - #messageTemplates = new DeepState(null); + #messageTemplates = new DeepState(null); messageTemplates = createObservablePart(this.#messageTemplates, (data) => data); #logLevelsFilter = new ArrayState([]); logLevelsFilter = createObservablePart(this.#logLevelsFilter, (data) => data); - #logs = new DeepState(null); + #logs = new DeepState(null); logs = createObservablePart(this.#logs, (data) => data?.items); logsTotal = createObservablePart(this.#logs, (data) => data?.total); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-level-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-level-overview.element.ts index 2aeafb27fa..4cce6a35ec 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-level-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-level-overview.element.ts @@ -2,7 +2,7 @@ import { html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { LoggerModel } from '@umbraco-cms/backend-api'; +import { LoggerResponseModel } from '@umbraco-cms/backend-api'; //TODO: implement the saved searches pagination when the API total bug is fixed @customElement('umb-log-viewer-log-level-overview') @@ -18,7 +18,7 @@ export class UmbLogViewerLogLevelOverviewElement extends UmbLitElement { } @state() - private _loggers: LoggerModel[] = []; + private _loggers: LoggerResponseModel[] = []; /** * The name of the logger to get the level for. Defaults to 'Global'. * diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts index 1c7ec7a927..051d554f90 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts @@ -1,9 +1,8 @@ -import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { LogLevelCountsModel } from '@umbraco-cms/backend-api'; +import { LogLevelCountsReponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-log-viewer-log-types-chart') export class UmbLogViewerLogTypesChartElement extends UmbLitElement { @@ -80,7 +79,7 @@ export class UmbLogViewerLogTypesChartElement extends UmbLitElement { } @state() - private _logLevelCount: LogLevelCountsModel | null = null; + private _logLevelCount: LogLevelCountsReponseModel | null = null; @state() private logLevelCount: [string, number][] = []; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts index 5c9cd6f754..4b71250eb3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts @@ -3,7 +3,7 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { PagedLogTemplateModel, SavedLogSearchModel } from '@umbraco-cms/backend-api'; +import { PagedLogTemplateResponseModel, SavedLogSearchResponseModel } from '@umbraco-cms/backend-api'; //TODO: fix pagination bug when API is fixed @customElement('umb-log-viewer-message-templates-overview') @@ -39,7 +39,7 @@ export class UmbLogViewerMessageTemplatesOverviewElement extends UmbLitElement { ]; @state() - private _messageTemplates: PagedLogTemplateModel | null = null; + private _messageTemplates: PagedLogTemplateResponseModel | null = null; #logViewerContext?: UmbLogViewerWorkspaceContext; constructor() { @@ -63,7 +63,7 @@ export class UmbLogViewerMessageTemplatesOverviewElement extends UmbLitElement { this.#logViewerContext?.getMessageTemplates(0, take + 10); } - #renderSearchItem = (searchListItem: SavedLogSearchModel) => { + #renderSearchItem = (searchListItem: SavedLogSearchResponseModel) => { return html`
  • { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts index 588e51bd9f..205c5d0626 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts @@ -3,7 +3,7 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { SavedLogSearchModel } from '@umbraco-cms/backend-api'; +import { SavedLogSearchResponseModel } from '@umbraco-cms/backend-api'; //TODO: implement the saved searches pagination when the API total bug is fixed @customElement('umb-log-viewer-saved-searches-overview') @@ -37,7 +37,7 @@ export class UmbLogViewerSavedSearchesOverviewElement extends UmbLitElement { ]; @state() - private _savedSearches: SavedLogSearchModel[] = []; + private _savedSearches: SavedLogSearchResponseModel[] = []; #logViewerContext?: UmbLogViewerWorkspaceContext; constructor() { @@ -60,7 +60,7 @@ export class UmbLogViewerSavedSearchesOverviewElement extends UmbLitElement { this.#logViewerContext?.setFilterExpression(query); } - #renderSearchItem = (searchListItem: SavedLogSearchModel) => { + #renderSearchItem = (searchListItem: SavedLogSearchResponseModel) => { return html`
  • { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts index 38191cf274..c4c3be8e8b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts @@ -1,7 +1,7 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../logviewer.context'; -import { LogLevelCountsModel } from '@umbraco-cms/backend-api'; +import { LogLevelCountsReponseModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; //TODO: add a disabled attribute to the show more button when the total number of items is correctly returned from the endpoint @@ -88,7 +88,7 @@ export class UmbLogViewerOverviewViewElement extends UmbLitElement { private _errorCount = 0; @state() - private _logLevelCount: LogLevelCountsModel | null = null; + private _logLevelCount: LogLevelCountsReponseModel | null = null; @state() private _canShowLogs = false; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts index 8bc5edb9c6..c0adf422c3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, PropertyValueMap } from 'lit'; import { customElement, property, query, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; -import { LogLevelModel, LogMessagePropertyModel } from '@umbraco-cms/backend-api'; +import { LogLevelModel, LogMessagePropertyPresentationModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; //TODO: check how to display EventId field in the message properties @@ -132,7 +132,7 @@ export class UmbLogViewerMessageElement extends UmbLitElement { renderedMessage = ''; @property({ attribute: false }) - properties: Array = []; + properties: Array = []; @property({ type: Boolean }) open = false; @@ -210,7 +210,7 @@ export class UmbLogViewerMessageElement extends UmbLitElement { private _propertiesWithSearchMenu: Array = ['HttpRequestNumber', 'SourceContext', 'MachineName']; - private _findLogsWithProperty({ name, value }: LogMessagePropertyModel) { + private _findLogsWithProperty({ name, value }: LogMessagePropertyPresentationModel) { let queryString = ''; if (isNaN(+(value ?? ''))) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-messages-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-messages-list.element.ts index 1fc81d55fa..aca5bcf552 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-messages-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-messages-list.element.ts @@ -4,7 +4,7 @@ import { css, html } from 'lit'; import { customElement, query, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DirectionModel, LogMessageModel } from '@umbraco-cms/backend-api'; +import { DirectionModel, LogMessageResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-log-viewer-messages-list') export class UmbLogViewerMessagesListElement extends UmbLitElement { @@ -56,7 +56,7 @@ export class UmbLogViewerMessagesListElement extends UmbLitElement { private _sortingDirection: DirectionModel = DirectionModel.ASCENDING; @state() - private _logs: LogMessageModel[] = []; + private _logs: LogMessageResponseModel[] = []; @state() private _logsTotal = 0; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts index c4ca1a8ffa..445127aefd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts @@ -3,7 +3,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, query, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; -import { SavedLogSearchModel } from '@umbraco-cms/backend-api'; +import { SavedLogSearchResponseModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-log-viewer-search-input') @@ -87,7 +87,7 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement { private _savedSearchesExpandSymbol!: UUISymbolExpandElement; @state() - private _savedSearches: SavedLogSearchModel[] = []; + private _savedSearches: SavedLogSearchResponseModel[] = []; @state() private _inputQuery = ''; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts index 90b8cb4a4c..c3a5633155 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts @@ -20,9 +20,11 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { weight: 100, meta: { label: 'Settings', - sections: [sectionAlias], menu: 'Umb.Menu.Settings', }, + conditions: { + sections: [sectionAlias], + }, }; export const manifests = [section, menuSectionSidebarApp]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-selection-actions.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-selection-actions.element.ts index 099877a7b1..0b663112f6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-selection-actions.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-selection-actions.element.ts @@ -94,7 +94,7 @@ export class UmbCollectionSelectionActionsElement extends UmbLitElement { this.observe( umbExtensionsRegistry.extensionsOfType('entityBulkAction').pipe( map((extensions) => { - return extensions.filter((extension) => extension.meta.entityType === this.entityType); + return extensions.filter((extension) => extension.conditions.entityType === this.entityType); }) ), (bulkActions) => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-toolbar.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-toolbar.element.ts index a3e6fcaa28..13a1c7e426 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-toolbar.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-toolbar.element.ts @@ -74,7 +74,7 @@ export class UmbCollectionToolbarElement extends UmbLitElement { this.observe( umbExtensionsRegistry.extensionsOfType('collectionView').pipe( map((extensions) => { - return extensions.filter((extension) => extension.meta.entityType === 'media'); + return extensions.filter((extension) => extension.conditions.entityType === 'media'); }) ), (layouts) => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts index 7ad8352aa4..164cbdee97 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts @@ -1,4 +1,5 @@ -import type { ContentTreeItemModel, EntityTreeItemModel } from '@umbraco-cms/backend-api'; +import { Observable } from 'rxjs'; +import type { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { UmbTreeStore } from '@umbraco-cms/store'; import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextToken, UmbContextConsumerController } from '@umbraco-cms/context-api'; @@ -9,7 +10,7 @@ import { UmbTreeRepository } from '@umbraco-cms/repository'; // TODO: Clean up the need for store as Media has switched to use Repositories(repository). export class UmbCollectionContext< - DataType extends ContentTreeItemModel, + DataType extends EntityTreeItemResponseModel = EntityTreeItemResponseModel, StoreType extends UmbTreeStore = UmbTreeStore > { private _host: UmbControllerHostInterface; @@ -19,9 +20,9 @@ export class UmbCollectionContext< #repository?: UmbTreeRepository; private _store?: StoreType; - protected _dataObserver?: UmbObserverController; + protected _dataObserver?: UmbObserverController; - #data = new ArrayState(>[]); + #data = new ArrayState(>[]); public readonly data = this.#data.asObservable(); #selection = new ArrayState(>[]); @@ -123,7 +124,7 @@ export class UmbCollectionContext< const observable = (await this.#repository.requestTreeItemsOf(this._entityKey)).asObservable?.(); if (observable) { - this._dataObserver = new UmbObserverController(this._host, observable, (nodes) => { + this._dataObserver = new UmbObserverController(this._host, observable as Observable, (nodes) => { if (nodes) { this.#data.next(nodes); } @@ -133,7 +134,7 @@ export class UmbCollectionContext< const observable = (await this.#repository.requestRootTreeItems()).asObservable?.(); if (observable) { - this._dataObserver = new UmbObserverController(this._host, observable, (nodes) => { + this._dataObserver = new UmbObserverController(this._host, observable as Observable, (nodes) => { if (nodes) { this.#data.next(nodes); } @@ -174,6 +175,4 @@ export class UmbCollectionContext< } } -export const UMB_COLLECTION_CONTEXT_TOKEN = new UmbContextToken>( - 'UmbCollectionContext' -); +export const UMB_COLLECTION_CONTEXT_TOKEN = new UmbContextToken>('UmbCollectionContext'); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.element.ts index 313aea4af4..5e1922a789 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.element.ts @@ -72,7 +72,7 @@ export class UmbCollectionElement extends UmbLitElement { // TODO: could we make some helper methods for this scenario: umbExtensionsRegistry?.extensionsOfType('collectionView').pipe( map((extensions) => { - return extensions.filter((extension) => extension.meta.entityType === this._entityType); + return extensions.filter((extension) => extension.conditions.entityType === this._entityType); }) ), (views) => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts index d34573e22e..d73b5edcbd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts @@ -4,7 +4,7 @@ import { customElement, state } from 'lit/decorators.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UmbCollectionContext, UMB_COLLECTION_CONTEXT_TOKEN } from '../../../shared/collection/collection.context'; import type { ManifestDashboardCollection } from '@umbraco-cms/models'; -import type { FolderTreeItemModel } from '@umbraco-cms/backend-api'; +import type { FolderTreeItemResponseModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; import '../collection.element'; @@ -25,7 +25,7 @@ export class UmbDashboardCollectionElement extends UmbLitElement { ]; // TODO: Use the right type here: - private _collectionContext?: UmbCollectionContext; + private _collectionContext?: UmbCollectionContext; public manifest!: ManifestDashboardCollection; @@ -36,9 +36,8 @@ export class UmbDashboardCollectionElement extends UmbLitElement { super.connectedCallback(); if (!this._collectionContext) { - const manifestMeta = this.manifest.meta; - const repositoryAlias = manifestMeta.repositoryAlias; - this._entityType = manifestMeta.entityType; + const repositoryAlias = this.manifest.meta.repositoryAlias; + this._entityType = this.manifest.conditions.entityType; this._collectionContext = new UmbCollectionContext(this, this._entityType, null, '', repositoryAlias); this.provideContext(UMB_COLLECTION_CONTEXT_TOKEN, this._collectionContext); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/collection-view-media-grid.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/collection-view-media-grid.element.ts index 722d32d8fc..dd3c39e2af 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/collection-view-media-grid.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/collection-view-media-grid.element.ts @@ -4,7 +4,7 @@ import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbCollectionContext, UMB_COLLECTION_CONTEXT_TOKEN } from '../collection.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { EntityTreeItemModel } from '@umbraco-cms/backend-api'; +import { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-collection-view-media-grid') export class UmbCollectionViewsMediaGridElement extends UmbLitElement { @@ -65,12 +65,12 @@ export class UmbCollectionViewsMediaGridElement extends UmbLitElement { ]; @state() - private _mediaItems?: Array; + private _mediaItems?: Array; @state() private _selection: Array = []; - private _collectionContext?: UmbCollectionContext; + private _collectionContext?: UmbCollectionContext; constructor() { super(); @@ -115,31 +115,31 @@ export class UmbCollectionViewsMediaGridElement extends UmbLitElement { }); } - private _handleOpenItem(mediaItem: EntityTreeItemModel) { + private _handleOpenItem(mediaItem: EntityTreeItemResponseModel) { //TODO: Fix when we have dynamic routing history.pushState(null, '', 'section/media/media/edit/' + mediaItem.key); } - private _handleSelect(mediaItem: EntityTreeItemModel) { + private _handleSelect(mediaItem: EntityTreeItemResponseModel) { if (mediaItem.key) { this._collectionContext?.select(mediaItem.key); } } - private _handleDeselect(mediaItem: EntityTreeItemModel) { + private _handleDeselect(mediaItem: EntityTreeItemResponseModel) { if (mediaItem.key) { this._collectionContext?.deselect(mediaItem.key); } } - private _isSelected(mediaItem: EntityTreeItemModel) { + private _isSelected(mediaItem: EntityTreeItemResponseModel) { if (mediaItem.key) { return this._selection.includes(mediaItem.key); } return false; } - private _renderMediaItem(item: EntityTreeItemModel) { + private _renderMediaItem(item: EntityTreeItemResponseModel) { const name = item.name || ''; //TODO: fix the file extension when media items have a file extension. return html`; + private _mediaItems?: Array; @state() private _tableConfig: UmbTableConfig = { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/manifests.ts index 87f14782b3..e56717323b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/manifests.ts @@ -11,9 +11,11 @@ export const manifests: Array = [ meta: { label: 'Grid', icon: 'umb:grid', - entityType: 'media', pathName: 'grid', }, + conditions: { + entityType: 'media', + }, }, { type: 'collectionView', @@ -25,9 +27,11 @@ export const manifests: Array = [ meta: { label: 'Table', icon: 'umb:box', - entityType: 'media', pathName: 'table', }, + conditions: { + entityType: 'media', + }, }, { type: 'collectionView', @@ -39,8 +43,10 @@ export const manifests: Array = [ meta: { label: 'Test', icon: 'umb:newspaper', - entityType: 'media', pathName: 'test', }, + conditions: { + entityType: 'media', + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts index 2ef3862bf0..9924de36fa 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts @@ -3,8 +3,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { state } from 'lit/decorators.js'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section/section.context'; +import { UmbSectionElement } from '../section/section.element'; import { UmbBackofficeContext, UMB_BACKOFFICE_CONTEXT_TOKEN } from './backoffice.context'; -import type { UmbRouterSlotChangeEvent } from '@umbraco-cms/router'; +import type { IRoutingInfo, UmbRouterSlotChangeEvent } from '@umbraco-cms/router'; import type { ManifestSection } from '@umbraco-cms/models'; import { UmbLitElement } from '@umbraco-cms/element'; import { createExtensionElementOrFallback } from '@umbraco-cms/extensions-api'; @@ -67,6 +68,11 @@ export class UmbBackofficeMain extends UmbLitElement { return { path: this._routePrefix + section.meta.pathname, component: () => createExtensionElementOrFallback(section, 'umb-section'), + setup: (component: Promise) => { + component.then((element) => { + element.manifest = section; + }); + }, }; }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action-list.element.ts index 920b3b91f5..6b1f0d61b2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action-list.element.ts @@ -32,7 +32,7 @@ class UmbEntityActionListElement extends UmbLitElement { this.observe( umbExtensionsRegistry.extensionsOfType('entityAction').pipe( map((extensions) => { - return extensions.filter((extension) => extension.meta.entityType === this.entityType); + return extensions.filter((extension) => extension.conditions.entityType === this.entityType); }) ), (actions) => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts index eec5648e04..db97e5a9a2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts @@ -38,8 +38,8 @@ export class UmbExtensionSlotElement extends UmbLitElement { public defaultElement = ''; @property() - public renderMethod: (manifest: InitializedExtension) => TemplateResult<1 | 2> | HTMLElement | null = (manifest) => - manifest.component; + public renderMethod: (extension: InitializedExtension) => TemplateResult<1 | 2> | HTMLElement | null = (extension) => + extension.component; connectedCallback(): void { super.connectedCallback(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts index b9d6afd8ba..1030779e98 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts @@ -54,9 +54,11 @@ describe('UmbExtensionSlotElement', () => { name: 'unit-test-extension', elementName: 'test-extension-slot-manifest-element', meta: { - sections: ['test'], pathname: 'test/test', }, + conditions: { + sections: ['test'], + }, }); }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-culture-select/input-culture-select.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-culture-select/input-culture-select.element.ts index bdcf53b259..ed3f11f018 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-culture-select/input-culture-select.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-culture-select/input-culture-select.element.ts @@ -8,7 +8,7 @@ import { UUIComboboxElement, UUIComboboxEvent } from '@umbraco-ui/uui'; import { UmbCultureRepository } from '../../../settings/cultures/repository/culture.repository'; import { UmbChangeEvent } from '@umbraco-cms/events'; import { UmbLitElement } from '@umbraco-cms/element'; -import { CultureModel } from '@umbraco-cms/backend-api'; +import { CultureReponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-input-culture-select') export class UmbInputCultureSelectElement extends FormControlMixin(UmbLitElement) { @@ -33,7 +33,7 @@ export class UmbInputCultureSelectElement extends FormControlMixin(UmbLitElement readonly = false; @state() - private _cultures: CultureModel[] = []; + private _cultures: CultureReponseModel[] = []; @state() private _search = ''; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts index b7a16996bc..f51dc2af03 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts @@ -9,7 +9,7 @@ import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; import { UMB_DOCUMENT_PICKER_MODAL_TOKEN } from '../../../documents/documents/modals/document-picker'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DocumentTreeItemModel, FolderTreeItemModel } from '@umbraco-cms/backend-api'; +import type { DocumentTreeItemResponseModel, EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { UmbObserverController } from '@umbraco-cms/observable-api'; @customElement('umb-input-document-picker') @@ -77,11 +77,11 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen } @state() - private _items?: Array; + private _items?: Array; private _modalContext?: UmbModalContext; private _documentStore?: UmbDocumentTreeStore; - private _pickedItemsObserver?: UmbObserverController; + private _pickedItemsObserver?: UmbObserverController; constructor() { super(); @@ -133,7 +133,7 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen }); } - private async _removeItem(item: FolderTreeItemModel) { + private async _removeItem(item: EntityTreeItemResponseModel) { const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { color: 'danger', headline: `Remove ${item.name}?`, @@ -158,9 +158,9 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen `; } - private _renderItem(item: FolderTreeItemModel) { + private _renderItem(item: EntityTreeItemResponseModel) { // TODO: remove when we have a way to handle trashed items - const tempItem = item as FolderTreeItemModel & { isTrashed: boolean }; + const tempItem = item as EntityTreeItemResponseModel & { isTrashed: boolean }; return html` diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-language-picker/input-language-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-language-picker/input-language-picker.element.ts index 4b4bcc091d..7372d64a27 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-language-picker/input-language-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-language-picker/input-language-picker.element.ts @@ -5,12 +5,12 @@ import { ifDefined } from 'lit-html/directives/if-defined.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UmbLanguageRepository } from '../../../settings/languages/repository/language.repository'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; +import { UMB_LANGUAGE_PICKER_MODAL_TOKEN } from '../../../settings/languages/modals/language-picker'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; import { UmbChangeEvent } from '@umbraco-cms/events'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { LanguageModel } from '@umbraco-cms/backend-api'; +import type { LanguageResponseModel } from '@umbraco-cms/backend-api'; import type { UmbObserverController } from '@umbraco-cms/observable-api'; -import { UMB_LANGUAGE_PICKER_MODAL_TOKEN } from 'src/backoffice/settings/languages/modals/language-picker'; @customElement('umb-input-language-picker') export class UmbInputLanguagePickerElement extends FormControlMixin(UmbLitElement) { @@ -59,7 +59,7 @@ export class UmbInputLanguagePickerElement extends FormControlMixin(UmbLitElemen maxMessage = 'This field exceeds the allowed amount of items'; @property({ type: Object, attribute: false }) - public filter: (language: LanguageModel) => boolean = () => true; + public filter: (language: LanguageResponseModel) => boolean = () => true; private _selectedIsoCodes: Array = []; public get selectedIsoCodes(): Array { @@ -79,11 +79,11 @@ export class UmbInputLanguagePickerElement extends FormControlMixin(UmbLitElemen } @state() - private _items?: Array; + private _items?: Array; private _modalContext?: UmbModalContext; private _repository = new UmbLanguageRepository(this); - private _pickedItemsObserver?: UmbObserverController; + private _pickedItemsObserver?: UmbObserverController; constructor() { super(); @@ -132,7 +132,7 @@ export class UmbInputLanguagePickerElement extends FormControlMixin(UmbLitElemen }); } - private _removeItem(item: LanguageModel) { + private _removeItem(item: LanguageResponseModel) { const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { color: 'danger', headline: `Remove ${item.name}?`, @@ -165,7 +165,7 @@ export class UmbInputLanguagePickerElement extends FormControlMixin(UmbLitElemen `; } - private _renderItem(item: LanguageModel) { + private _renderItem(item: LanguageResponseModel) { return html` diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts index 8778092f1c..ef74cc83da 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts @@ -8,7 +8,7 @@ import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; import { UMB_MEDIA_PICKER_MODAL_TOKEN } from '../../../media/media/modals/media-picker'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { EntityTreeItemModel, FolderTreeItemModel } from '@umbraco-cms/backend-api'; +import type { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { UmbObserverController } from '@umbraco-cms/observable-api'; @customElement('umb-input-media-picker') @@ -88,10 +88,10 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) } @state() - private _items?: Array; + private _items?: Array; private _modalContext?: UmbModalContext; - private _pickedItemsObserver?: UmbObserverController; + private _pickedItemsObserver?: UmbObserverController; private _repository = new UmbMediaRepository(this); constructor() { @@ -147,7 +147,7 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) }); } - private _removeItem(item: FolderTreeItemModel) { + private _removeItem(item: EntityTreeItemResponseModel) { const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { color: 'danger', headline: `Remove ${item.name}?`, @@ -177,9 +177,9 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) `; } - private _renderItem(item: FolderTreeItemModel) { + private _renderItem(item: EntityTreeItemResponseModel) { // TODO: remove when we have a way to handle trashed items - const tempItem = item as FolderTreeItemModel & { isTrashed: boolean }; + const tempItem = item as EntityTreeItemResponseModel & { isTrashed: boolean }; return html` { + this.#sectionContext = sectionContext; + this._observeSection(); + }); + } + + private _observeSection() { + if (!this.#sectionContext) return; + + this.observe(this.#sectionContext?.pathname, (pathname) => { + if (!pathname) return; + this._href = this._constructPath(pathname); + }); + } + + // TODO: how do we handle this? + private _constructPath(sectionPathname: string) { + return `section/${sectionPathname}/workspace/${this.manifest.meta.entityType}`; + } + render() { - return html``; + return html` `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu/menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu/menu.element.ts index 6e5e62bbd6..86dffedd6f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu/menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu/menu.element.ts @@ -16,7 +16,7 @@ export class UmbMenuElement extends UmbLitElement { render() { return html` items.meta.menus.includes(this.manifest!.alias)} + .filter=${(items: ManifestMenuItem) => items.conditions.menus.includes(this.manifest!.alias)} default-element="umb-menu-item">`; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts index 2e26102210..5bfae994a8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts @@ -5,7 +5,11 @@ import { customElement, property, state } from 'lit/decorators.js'; import { UmbDataTypeRepository } from '../../../settings/data-types/repository/data-type.repository'; import { UmbVariantId } from '../../variants/variant-id.class'; import { UmbDocumentWorkspaceContext } from '../../../documents/documents/workspace/document-workspace.context'; -import type { DataTypeModel, DataTypePropertyModel, PropertyTypeViewModelBaseModel } from '@umbraco-cms/backend-api'; +import type { + DataTypeResponseModel, + DataTypePropertyPresentationModel, + PropertyTypeResponseModelBaseModel, +} from '@umbraco-cms/backend-api'; import '../workspace-property/workspace-property.element'; import { UmbLitElement } from '@umbraco-cms/element'; import { UmbObserverController } from '@umbraco-cms/observable-api'; @@ -22,10 +26,10 @@ export class UmbPropertyTypeBasedPropertyElement extends UmbLitElement { ]; @property({ type: Object, attribute: false }) - public get property(): PropertyTypeViewModelBaseModel | undefined { + public get property(): PropertyTypeResponseModelBaseModel | undefined { return this._property; } - public set property(value: PropertyTypeViewModelBaseModel | undefined) { + public set property(value: PropertyTypeResponseModelBaseModel | undefined) { const oldProperty = this._property; this._property = value; if (this._property?.dataTypeKey !== oldProperty?.dataTypeKey) { @@ -33,16 +37,16 @@ export class UmbPropertyTypeBasedPropertyElement extends UmbLitElement { this._observeProperty(); } } - private _property?: PropertyTypeViewModelBaseModel; + private _property?: PropertyTypeResponseModelBaseModel; @state() private _propertyEditorUiAlias?: string; @state() - private _dataTypeData: DataTypePropertyModel[] = []; + private _dataTypeData: DataTypePropertyPresentationModel[] = []; private _dataTypeRepository: UmbDataTypeRepository = new UmbDataTypeRepository(this); - private _dataTypeObserver?: UmbObserverController; + private _dataTypeObserver?: UmbObserverController; @state() private _value?: unknown; @@ -98,7 +102,7 @@ export class UmbPropertyTypeBasedPropertyElement extends UmbLitElement { this._dataTypeObserver = this.observe( await this._dataTypeRepository.byKey(dataTypeKey), (dataType) => { - this._dataTypeData = dataType?.data || []; + this._dataTypeData = dataType?.values || []; this._propertyEditorUiAlias = dataType?.propertyEditorUiAlias || undefined; }, 'observeDataType' diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-dashboards/section-dashboards.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-dashboards/section-dashboards.element.ts deleted file mode 100644 index fdd455c893..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-dashboards/section-dashboards.element.ts +++ /dev/null @@ -1,184 +0,0 @@ -import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { css, html, nothing } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; -import { first, map } from 'rxjs'; -import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section.context'; -import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent, IRoutingInfo } from '@umbraco-cms/router'; -import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import type { ManifestDashboard, ManifestDashboardCollection } from '@umbraco-cms/models'; - -import { UmbLitElement } from '@umbraco-cms/element'; - -@customElement('umb-section-dashboards') -export class UmbSectionDashboardsElement extends UmbLitElement { - static styles = [ - UUITextStyles, - css` - :host { - display: flex; - flex-direction: column; - height: 100%; - } - - #tabs { - background-color: var(--uui-color-surface); - height: 70px; - border-bottom: 1px solid var(--uui-color-border); - box-sizing: border-box; - } - - #scroll-container { - flex: 1; - position: relative; - } - - #router-slot { - box-sizing: border-box; - display: block; - padding: var(--uui-size-5); - } - - #header { - display: flex; - align-items: center; - justify-content: space-between; - width: 100%; - min-height: 60px; - box-sizing: border-box; - margin: 0; - padding: 0 var(--uui-size-5); - background-color: var(--uui-color-surface); - border-bottom: 1px solid var(--uui-color-border); - } - `, - ]; - - @state() - private _dashboards?: Array; - - @state() - private _routes: Array = []; - - @state() - private _routerPath?: string; - - @state() - private _activePath?: string; - - private _currentSectionAlias?: string; - private _sectionContext?: UmbSectionContext; - - constructor() { - super(); - - this.consumeContext(UMB_SECTION_CONTEXT_TOKEN, (context) => { - this._sectionContext = context; - this._observeSectionContext(); - }); - } - - private _observeSectionContext() { - if (!this._sectionContext) return; - - this.observe(this._sectionContext.alias.pipe(first()), (alias) => { - this._currentSectionAlias = alias; - this._observeDashboards(); - }); - } - - private _observeDashboards() { - if (!this._currentSectionAlias) return; - - this.observe( - umbExtensionsRegistry - ?.extensionsOfTypes(['dashboard', 'dashboardCollection']) - .pipe( - map((extensions) => - extensions.filter((extension) => extension.meta.sections.includes(this._currentSectionAlias ?? '')) - ) - ), - (dashboards) => { - this._dashboards = dashboards || undefined; - this._createRoutes(); - } - ); - } - - private _createRoutes() { - this._routes = []; - - if (this._dashboards) { - this._routes = this._dashboards.map((dashboard) => { - return { - path: `${dashboard.meta.pathname}`, - component: () => { - if (dashboard.type === 'dashboardCollection') { - return import('src/backoffice/shared/collection/dashboards/dashboard-collection.element'); - } - return createExtensionElement(dashboard); - }, - setup: (component: Promise | HTMLElement, info: IRoutingInfo) => { - // When its using import, we get an element, when using createExtensionElement we get a Promise. - // TODO: this is a bit hacky, can we do it in a more appropriate way: - if ((component as any).then) { - (component as any).then((el: any) => (el.manifest = dashboard)); - } else { - (component as any).manifest = dashboard; - } - }, - }; - }); - - this._routes.push({ - path: '**', - redirectTo: this._dashboards?.[0]?.meta.pathname, - }); - } - } - - private _renderNavigation() { - return html` - ${this._dashboards && this._dashboards.length > 1 - ? html` - - ${this._dashboards.map( - (dashboard) => html` - - ` - )} - - ` - : this._dashboards?.length === 1 - ? html`` - : nothing} - `; - } - - render() { - return html` - ${this._renderNavigation()} - - { - this._routerPath = event.target.absoluteRouterPath; - }} - @change=${(event: UmbRouterSlotChangeEvent) => { - this._activePath = event.target.localActiveViewPath; - }}> - - `; - } -} - -export default UmbSectionDashboardsElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-section-dashboards': UmbSectionDashboardsElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-dashboards/section-dashboards.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-dashboards/section-dashboards.stories.ts deleted file mode 100644 index 28c3096f16..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-dashboards/section-dashboards.stories.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; -import { manifests } from '../../../../documents/section.manifests'; -import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section.context'; -import type { UmbSectionDashboardsElement } from './section-dashboards.element'; -import type { ManifestSection } from '@umbraco-cms/models'; -import './section-dashboards.element'; - -const contentSectionManifest = manifests.find((m) => m.alias === 'Umb.Section.Content') as ManifestSection; - -export default { - title: 'Sections/Shared/Section Dashboards', - component: 'umb-section-dashboards', - id: 'umb-section-dashboards', - decorators: [ - (story) => - html` - ${story()} - `, - ], -} as Meta; - -export const AAAOverview: Story = () => - html` `; -AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-main/section-main.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-main/section-main.element.ts index 92fc067235..332b308b3c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-main/section-main.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-main/section-main.element.ts @@ -11,6 +11,7 @@ export class UmbSectionMainElement extends LitElement { flex: 1 1 auto; height: 100%; } + slot { display: flex; flex-direction: column; @@ -20,7 +21,11 @@ export class UmbSectionMainElement extends LitElement { ]; render() { - return html``; + return html` +
    + +
    + `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts index fe8129400f..5dba7bfcba 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts @@ -1,13 +1,15 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, nothing } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; +import { customElement, property, state } from 'lit/decorators.js'; import { map, of } from 'rxjs'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section.context'; -import type { ManifestSectionView } from '@umbraco-cms/models'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; +import { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/router'; +import type { ManifestDashboard, ManifestSectionView } from '@umbraco-cms/models'; +import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import { UmbLitElement } from '@umbraco-cms/element'; import { UmbObserverController } from '@umbraco-cms/observable-api'; +// TODO: this might need a new name, since it's both view and dashboard now @customElement('umb-section-views') export class UmbSectionViewsElement extends UmbLitElement { static styles = [ @@ -16,106 +18,170 @@ export class UmbSectionViewsElement extends UmbLitElement { #header { background-color: var(--uui-color-surface); border-bottom: 1px solid var(--uui-color-divider-standalone); + display: flex; + justify-content: space-between; + align-items: center; } - uui-tab-group { + #views { justify-content: flex-end; --uui-tab-divider: var(--uui-color-divider-standalone); } - uui-tab-group uui-tab:first-child { + #views uui-tab:first-child { border-left: 1px solid var(--uui-color-divider-standalone); } `, ]; + @property({ type: String, attribute: 'section-alias' }) + public sectionAlias?: string; + @state() private _views: Array = []; @state() - private _routerFolder = ''; + private _dashboards: Array = []; @state() - private _activeViewPathname?: string; + private _routerPath?: string; + + @state() + private _activePath?: string; + + @state() + private _routes: Array = []; private _sectionContext?: UmbSectionContext; - private _extensionsObserver?: UmbObserverController; + private _extensionsObserver?: UmbObserverController; + private _viewsObserver?: UmbObserverController; + private _dashboardObserver?: UmbObserverController; constructor() { super(); this.consumeContext(UMB_SECTION_CONTEXT_TOKEN, (sectionContext) => { this._sectionContext = sectionContext; - this._observeViews(); - this._observeActiveView(); + this._observeSectionAlias(); }); } - connectedCallback(): void { - super.connectedCallback(); - /* TODO: find a way to construct absolute urls */ - this._routerFolder = window.location.pathname.split('/view')[0]; + async #createRoutes() { + const dashboardRoutes = this._dashboards?.map((manifest) => { + return { + path: 'dashboard/' + manifest.meta.pathname, + component: () => createExtensionElement(manifest), + }; + }); + + const viewRoutes = this._views?.map((manifest) => { + return { + path: 'view/' + manifest.meta.pathname, + component: () => createExtensionElement(manifest), + }; + }); + + const routes = [...dashboardRoutes, ...viewRoutes]; + this._routes = routes?.length > 0 ? [...routes, { path: '**', redirectTo: routes?.[0]?.path }] : []; } - private _observeViews() { + private _observeSectionAlias() { if (!this._sectionContext) return; - this.observe(this._sectionContext.alias, (sectionAlias) => { - this._observeExtensions(sectionAlias); - }, 'viewsObserver') + this.observe( + this._sectionContext.alias, + (sectionAlias) => { + this._observeViews(sectionAlias); + this._observeDashboards(sectionAlias); + }, + 'viewsObserver' + ); } - private _observeExtensions(sectionAlias?: string) { - this._extensionsObserver?.destroy(); - if(sectionAlias) { - this._extensionsObserver = this.observe( - umbExtensionsRegistry?.extensionsOfType('sectionView').pipe( - map((views) => - views - .filter((view) => view.meta.sections.includes(sectionAlias)) - .sort((a, b) => b.meta.weight - a.meta.weight) - ) - ) ?? of([]) - , - (views) => { - this._views = views; - } + + private _observeViews(sectionAlias?: string) { + this._viewsObserver?.destroy(); + if (sectionAlias) { + this._viewsObserver = this.observe( + umbExtensionsRegistry + ?.extensionsOfType('sectionView') + .pipe(map((views) => views.filter((view) => view.conditions.sections.includes(sectionAlias)))) ?? of([]), + (views) => { + this._views = views; + this.#createRoutes(); + } ); } } - private _observeActiveView() { - if(this._sectionContext) { - this.observe(this._sectionContext?.activeViewPathname, (pathname) => { - this._activeViewPathname = pathname; - }, 'activeViewPathnameObserver'); + private _observeDashboards(sectionAlias?: string) { + this._dashboardObserver?.destroy(); + + if (sectionAlias) { + this._dashboardObserver = this.observe( + umbExtensionsRegistry + ?.extensionsOfType('dashboard') + .pipe(map((views) => views.filter((view) => view.conditions.sections.includes(sectionAlias)))) ?? of([]), + (views) => { + this._dashboards = views; + this.#createRoutes(); + } + ); } } render() { - return html` ${this._views.length > 0 ? html` ` : nothing} `; - } - - private _renderViews() { return html` - ${this._views?.length > 0 + ${this._routes.length > 0 ? html` - - ${this._views.map( - (view: ManifestSectionView) => html` - - - ${view.meta.label || view.name} - - ` - )} - + + { + this._routerPath = event.target.absoluteRouterPath; + }} + @change=${(event: UmbRouterSlotChangeEvent) => { + this._activePath = event.target.localActiveViewPath; + }}> + ` : nothing} `; } + + #renderDashboards() { + return html` + + ${this._dashboards.map( + (dashboard) => html` + + ${dashboard.meta.label || dashboard.name} + + ` + )} + + `; + } + + #renderViews() { + return html` + + ${this._views.map( + (view) => html` + + + ${view.meta.label || view.name} + + ` + )} + + `; + } } export default UmbSectionViewsElement; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts index b46b979b94..2c4e8a4068 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts @@ -22,10 +22,6 @@ export class UmbSectionContext { #activeTreeItem = new ObjectState(undefined); public readonly activeTreeItem = this.#activeTreeItem.asObservable(); - // TODO: what is the best context to put this in? - #activeViewPathname = new StringState(undefined); - public readonly activeViewPathname = this.#activeViewPathname.asObservable(); - constructor(manifest: ManifestSection) { this.setManifest(manifest); } @@ -46,10 +42,6 @@ export class UmbSectionContext { public setActiveTreeItem(item?: ActiveTreeItemType) { this.#activeTreeItem.next(item); } - - public setActiveView(view?: ManifestSectionView) { - this.#activeViewPathname.next(view?.meta.pathname); - } } export const UMB_SECTION_CONTEXT_TOKEN = new UmbContextToken('UmbSectionContext'); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts index 1b211a40b9..e45c54f975 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts @@ -1,18 +1,21 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; +import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; -import type { UmbWorkspaceEntityElement } from '../workspace/workspace-entity-element.interface'; -import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from './section.context'; -import type { UmbRouterSlotChangeEvent, IRoutingInfo } from '@umbraco-cms/router'; -import type { ManifestSectionView, ManifestWorkspace, ManifestMenuSectionSidebarApp } from '@umbraco-cms/models'; -import { umbExtensionsRegistry, createExtensionElement } from '@umbraco-cms/extensions-api'; +import type { UmbWorkspaceElement } from '../workspace/workspace.element'; +import type { UmbSectionViewsElement } from './section-views/section-views.element'; +import type { IRoutingInfo } from '@umbraco-cms/router'; +import type { ManifestMenuSectionSidebarApp, ManifestSection } from '@umbraco-cms/models'; +import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import { UmbLitElement } from '@umbraco-cms/element'; import './section-sidebar-menu/section-sidebar-menu.element'; -import './section-views/section-views.element'; -import '../../../settings/languages/app-language-select/app-language-select.element'; +/** + * @export + * @class UmbSectionElement + * @description - Element hosting sections and section navigation. + */ @customElement('umb-section') export class UmbSectionElement extends UmbLitElement { static styles = [ @@ -35,160 +38,57 @@ export class UmbSectionElement extends UmbLitElement { `, ]; + @property() + public manifest?: ManifestSection; + @state() private _routes?: Array; @state() private _menus?: Array; - @state() - private _views?: Array; - - private _workspaces?: Array; - private _sectionContext?: UmbSectionContext; - private _sectionAlias?: string; - - constructor() { - super(); - - this.consumeContext(UMB_SECTION_CONTEXT_TOKEN, (instance) => { - this._sectionContext = instance; - - // TODO: currently they don't corporate, as they overwrite each other... - this._observeMenuItems(); - this._observeSection(); - }); + connectedCallback() { + super.connectedCallback(); + this.#observeSectionSidebarApps(); + this.#createRoutes(); } - private _observeMenuItems() { - if (!this._sectionContext) return; - - this.observe(this._sectionContext?.alias, (alias) => { - this._observeSidebarMenus(alias); - }); - - this.observe(umbExtensionsRegistry.extensionsOfType('workspace'), (workspaceExtensions) => { - this._workspaces = workspaceExtensions; - this._createWorkspaceRoutes(); - }); - } - - private _observeSidebarMenus(sectionAlias?: string) { - if (sectionAlias) { - this.observe( - umbExtensionsRegistry - ?.extensionsOfType('menuSectionSidebarApp') - .pipe(map((manifests) => manifests.filter((manifest) => manifest.meta.sections.includes(sectionAlias)))), - (manifests) => { - this._menus = manifests; - } - ); - } else { - this._menus = []; - } - } - - private _createWorkspaceRoutes() { - if (!this._workspaces) return; - // TODO: find a way to make this reuseable across: - // TODO: Move workspace 'handlers/routes' to the workspace-element. So it becomes local. - const workspaceRoutes = this._workspaces?.map((workspace: ManifestWorkspace) => { - return [ - { - path: `${workspace.meta.entityType}/edit/:key`, - component: () => createExtensionElement(workspace), - setup: (component: Promise, info: IRoutingInfo) => { - component.then((el) => { - el.load(info.match.params.key); - }); - }, - }, - { - path: `${workspace.meta.entityType}/create/root`, - component: () => createExtensionElement(workspace), - setup: (component: Promise) => { - component.then((el) => { - el.create(null); - }); - }, - }, - { - path: `${workspace.meta.entityType}/create/:parentKey`, - component: () => createExtensionElement(workspace), - setup: (component: Promise, info: IRoutingInfo) => { - component.then((el) => { - el.create(info.match.params.parentKey); - }); - }, - }, - { - path: workspace.meta.entityType, - component: () => createExtensionElement(workspace), - }, - ]; - }); + #createRoutes() { + this._routes = []; this._routes = [ { - path: 'dashboard', - component: () => import('./section-dashboards/section-dashboards.element'), + path: 'workspace/:entityType', + component: () => import('../workspace/workspace.element'), + setup: (element: UmbWorkspaceElement, info: IRoutingInfo) => { + element.entityType = info.match.params.entityType; + }, }, - ...(workspaceRoutes?.flat() || []), { path: '**', - redirectTo: 'dashboard', + component: () => import('../section/section-views/section-views.element'), + setup: (element: UmbSectionViewsElement) => { + element.sectionAlias = this.manifest?.alias; + }, }, ]; } - private _observeSection() { - if (!this._sectionContext) return; - - this.observe(this._sectionContext.alias, (alias) => { - this._sectionAlias = alias; - this._observeViews(); - }); - } - - private _observeViews() { - this.observe(umbExtensionsRegistry?.extensionsOfType('sectionView'), (views) => { - const sectionViews = views - .filter((view) => { - return this._sectionAlias ? view.meta.sections.includes(this._sectionAlias) : false; - }) - .sort((a, b) => b.meta.weight - a.meta.weight); - if (sectionViews.length > 0) { - this._views = sectionViews; - this._createViewRoutes(); + #observeSectionSidebarApps() { + this.observe( + umbExtensionsRegistry + ?.extensionsOfType('menuSectionSidebarApp') + .pipe( + map((manifests) => + manifests.filter((manifest) => manifest.conditions.sections.includes(this.manifest?.alias || '')) + ) + ), + (manifests) => { + this._menus = manifests; } - }); + ); } - private _createViewRoutes() { - this._routes = []; - this._routes = - this._views?.map((view) => { - return { - path: 'view/' + view.meta.pathname, - component: () => createExtensionElement(view), - }; - }) ?? []; - - if (this._views && this._views.length > 0) { - this._routes.push({ - path: '**', - redirectTo: 'view/' + this._views?.[0]?.meta.pathname, - }); - } - } - - private _onRouteChange = (event: UmbRouterSlotChangeEvent) => { - const currentPath = event.target.localActiveViewPath; - const view = this._views?.find((view) => 'view/' + view.meta.pathname === currentPath); - if (!view) return; - this._sectionContext?.setActiveView(view); - }; - render() { return html` ${this._menus && this._menus.length > 0 @@ -198,23 +98,19 @@ export class UmbSectionElement extends UmbLitElement { - items.meta.sections.includes(this._sectionAlias || '')}> + items.conditions.sections.includes(this.manifest?.alias || '')}> - items.meta.sections.includes(this._sectionAlias || '')} + items.conditions.sections.includes(this.manifest?.alias || '')} default-element="umb-section-sidebar-menu"> ` : nothing} - ${this._views && this._views.length > 0 ? html`` : nothing} ${this._routes && this._routes.length > 0 - ? html`` + ? html`` : nothing} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts index f64476795e..322191fe83 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts @@ -15,6 +15,7 @@ import type { UmbTreeStore } from '@umbraco-cms/store'; import { UmbLitElement } from '@umbraco-cms/element'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; +// TODO: align menu items and tree items @customElement('umb-tree-item') export class UmbTreeItem extends UmbLitElement { static styles = [UUITextStyles, css``]; @@ -153,7 +154,7 @@ export class UmbTreeItem extends UmbLitElement { this.observe( umbExtensionsRegistry .extensionsOfType('entityAction') - .pipe(map((actions) => actions.filter((action) => action.meta.entityType === this._entityType))), + .pipe(map((actions) => actions.filter((action) => action.conditions.entityType === this._entityType))), (actions) => { this._hasActions = actions.length > 0; } @@ -162,7 +163,7 @@ export class UmbTreeItem extends UmbLitElement { // TODO: how do we handle this? private _constructPath(sectionPathname: string, type: string, key: string) { - return type ? `section/${sectionPathname}/${type}/edit/${key}` : undefined; + return type ? `section/${sectionPathname}/workspace/${type}/edit/${key}` : undefined; } // TODO: do we want to catch and emit a backoffice event here? diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts index 6baa96b9c7..9d8d713690 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts @@ -9,7 +9,7 @@ import { } from '../workspace/workspace-variant/workspace-variant.context'; import { ActiveVariant } from '../workspace/workspace-context/workspace-split-view-manager.class'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DocumentVariantModel } from '@umbraco-cms/backend-api'; +import type { DocumentVariantResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-variant-selector') export class UmbVariantSelectorElement extends UmbLitElement { @@ -50,7 +50,7 @@ export class UmbVariantSelectorElement extends UmbLitElement { alias!: string; @state() - _variants: Array = []; + _variants: Array = []; // TODO: Stop using document context specific ActiveVariant type. @state() @@ -178,12 +178,12 @@ export class UmbVariantSelectorElement extends UmbLitElement { this._variantSelectorIsOpen = false; } - private _switchVariant(variant: DocumentVariantModel) { + private _switchVariant(variant: DocumentVariantResponseModel) { this._variantContext?.switchVariant(variant); this._close(); } - private _openSplitView(variant: DocumentVariantModel) { + private _openSplitView(variant: DocumentVariantResponseModel) { this._variantContext?.openSplitView(variant); this._close(); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variantable-property/variantable-property.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variantable-property/variantable-property.element.ts index 35cd55ba18..1441bd9fc0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variantable-property/variantable-property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variantable-property/variantable-property.element.ts @@ -3,7 +3,7 @@ import { css, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UmbVariantId } from '../../variants/variant-id.class'; import { UMB_WORKSPACE_VARIANT_CONTEXT_TOKEN } from '../workspace/workspace-variant/workspace-variant.context'; -import type { PropertyTypeViewModelBaseModel } from '@umbraco-cms/backend-api'; +import type { PropertyTypeResponseModelBaseModel } from '@umbraco-cms/backend-api'; import '../workspace-property/workspace-property.element'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -18,12 +18,12 @@ export class UmbVariantablePropertyElement extends UmbLitElement { `, ]; - private _property?: PropertyTypeViewModelBaseModel | undefined; + private _property?: PropertyTypeResponseModelBaseModel | undefined; @property({ type: Object, attribute: false }) - public get property(): PropertyTypeViewModelBaseModel | undefined { + public get property(): PropertyTypeResponseModelBaseModel | undefined { return this._property; } - public set property(property: PropertyTypeViewModelBaseModel | undefined) { + public set property(property: PropertyTypeResponseModelBaseModel | undefined) { this._property = property; this._updatePropertyVariantId(); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts index 5474e323a9..7f6cf7aa62 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts @@ -1,7 +1,7 @@ import { UmbVariantId } from '../../variants/variant-id.class'; import { UmbWorkspaceVariableEntityContextInterface } from '../workspace/workspace-context/workspace-variable-entity-context.interface'; import { UMB_WORKSPACE_VARIANT_CONTEXT_TOKEN } from '../workspace/workspace-variant/workspace-variant.context'; -import type { DataTypeModel } from '@umbraco-cms/backend-api'; +import type { DataTypeResponseModel } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { ObjectState, StringState, UmbObserverController } from '@umbraco-cms/observable-api'; import { UmbContextConsumerController, UmbContextProviderController } from '@umbraco-cms/context-api'; @@ -12,7 +12,7 @@ export type WorkspacePropertyData = { label?: string; description?: string; value?: ValueType | null; - config?: DataTypeModel['data']; // This could potentially then come from hardcoded JS object and not the DataType store. + config?: DataTypeResponseModel['values']; // This could potentially then come from hardcoded JS object and not the DataType store. }; export class UmbWorkspacePropertyContext { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts index 634b4a8d7c..f1be387b72 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts @@ -4,15 +4,15 @@ import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UmbVariantId } from '../../variants/variant-id.class'; import { UmbWorkspacePropertyContext } from './workspace-property.context'; +import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import type { ManifestPropertyEditorUI, ManifestTypes } from '@umbraco-cms/models'; +import type { ManifestPropertyEditorUI } from '@umbraco-cms/models'; import '../../property-actions/shared/property-action-menu/property-action-menu.element'; import '../../../../backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.element'; import { UmbObserverController } from '@umbraco-cms/observable-api'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DataTypePropertyModel } from '@umbraco-cms/backend-api'; -import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; +import { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; /** * @element umb-workspace-property @@ -114,7 +114,7 @@ export class UmbWorkspacePropertyElement extends UmbLitElement { * @default '' */ @property({ type: Object, attribute: false }) - public set config(value: DataTypePropertyModel[]) { + public set config(value: DataTypePropertyPresentationModel[]) { this._propertyContext.setConfig(value); } @@ -151,10 +151,10 @@ export class UmbWorkspacePropertyElement extends UmbLitElement { private _propertyContext = new UmbWorkspacePropertyContext(this); - private propertyEditorUIObserver?: UmbObserverController; + private propertyEditorUIObserver?: UmbObserverController; private _valueObserver?: UmbObserverController; - private _configObserver?: UmbObserverController; + private _configObserver?: UmbObserverController; constructor() { super(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts index 1cf0cd994d..1433dbb675 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UmbWorkspaceEntityContextInterface } from '../workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface } from '../workspace-context/workspace-entity-context.interface'; import { UmbExecutedEvent } from '@umbraco-cms/events'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -34,7 +34,7 @@ export class UmbWorkspaceActionMenuElement extends UmbLitElement { @state() private _actionMenuIsOpen = false; - private _workspaceContext?: UmbWorkspaceEntityContextInterface; + private _workspaceContext?: UmbEntityWorkspaceContextInterface; @state() _entityKey?: string; @@ -45,7 +45,7 @@ export class UmbWorkspaceActionMenuElement extends UmbLitElement { constructor() { super(); - this.consumeContext('umbWorkspaceContext', (context) => { + this.consumeContext('umbWorkspaceContext', (context) => { this._workspaceContext = context; this._observeInfo(); }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts index c171c79007..6e83dc0810 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts @@ -8,9 +8,9 @@ import { } from '../../../../../../shared/collection/collection.context'; import '../../../../../../shared/collection/dashboards/dashboard-collection.element'; -import type { UmbWorkspaceEntityContextInterface } from '../../../workspace-context/workspace-entity-context.interface'; +import type { UmbEntityWorkspaceContextInterface } from '../../../workspace-context/workspace-entity-context.interface'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { FolderTreeItemModel } from '@umbraco-cms/backend-api'; +import type { FolderTreeItemResponseModel } from '@umbraco-cms/backend-api'; import { ManifestWorkspaceViewCollection } from '@umbraco-cms/extensions-registry'; @customElement('umb-workspace-view-collection') @@ -27,16 +27,16 @@ export class UmbWorkspaceViewCollectionElement extends UmbLitElement { public manifest!: ManifestWorkspaceViewCollection; - private _workspaceContext?: UmbWorkspaceEntityContextInterface; + private _workspaceContext?: UmbEntityWorkspaceContextInterface; // TODO: add type for the collection context. - private _collectionContext?: UmbCollectionContext; + private _collectionContext?: UmbCollectionContext; constructor() { super(); // TODO: Figure out how to get the magic string for the workspace context. - this.consumeContext('umbWorkspaceContext', (nodeContext) => { + this.consumeContext('umbWorkspaceContext', (nodeContext) => { this._workspaceContext = nodeContext; this._provideWorkspace(); }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/edit/workspace-view-content-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/edit/workspace-view-content-edit.element.ts index 90274f9258..ff99c2a05d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/edit/workspace-view-content-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/edit/workspace-view-content-edit.element.ts @@ -2,7 +2,7 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; -import type { UmbWorkspaceEntityContextInterface } from '../../../workspace-context/workspace-entity-context.interface'; +import type { UmbEntityWorkspaceContextInterface } from '../../../workspace-context/workspace-entity-context.interface'; import type { ContentProperty, ContentPropertyData, MediaTypeDetails } from '@umbraco-cms/models'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -25,13 +25,13 @@ export class UmbWorkspaceViewContentEditElement extends UmbLitElement { @state() _data: ContentPropertyData[] = []; - private _workspaceContext?: UmbWorkspaceEntityContextInterface; + private _workspaceContext?: UmbEntityWorkspaceContextInterface; constructor() { super(); // TODO: Figure out how to get the magic string for the workspace context. - this.consumeContext>( + this.consumeContext>( 'umbWorkspaceContext', (workspaceContext) => { this._workspaceContext = workspaceContext; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/info/workspace-view-content-info.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/info/workspace-view-content-info.element.ts index 3a884755fb..ba86f7da12 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/info/workspace-view-content-info.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/info/workspace-view-content-info.element.ts @@ -3,8 +3,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { repeat } from 'lit/directives/repeat.js'; import { customElement, state } from 'lit/decorators.js'; import { UUIPaginationEvent } from '@umbraco-ui/uui'; -import { UmbWorkspaceEntityContextInterface } from '../../../workspace-context/workspace-entity-context.interface'; -import type { DocumentModel } from '@umbraco-cms/backend-api'; +import { UmbEntityWorkspaceContextInterface } from '../../../workspace-context/workspace-entity-context.interface'; +import type { DocumentResponseModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; interface HistoryNode { @@ -184,17 +184,20 @@ export class UmbWorkspaceViewContentInfoElement extends UmbLitElement { @state() private _nodeName = ''; - private _workspaceContext?: UmbWorkspaceEntityContextInterface; + private _workspaceContext?: UmbEntityWorkspaceContextInterface; private itemsPerPage = 10; constructor() { super(); // TODO: Figure out how to get the magic string for the workspace context. - this.consumeContext>('umbWorkspaceContext', (nodeContext) => { - this._workspaceContext = nodeContext; - this._observeContent(); - }); + this.consumeContext>( + 'umbWorkspaceContext', + (nodeContext) => { + this._workspaceContext = nodeContext; + this._observeContent(); + } + ); } private _observeContent() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts index 62c920a95a..0fdd21a59e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts @@ -7,20 +7,20 @@ import { UMB_NOTIFICATION_CONTEXT_TOKEN, } from '@umbraco-cms/notification'; import { ObjectState, UmbObserverController } from '@umbraco-cms/observable-api'; -import type { EntityTreeItemModel } from '@umbraco-cms/backend-api'; +import type { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import { UmbEntityDetailStore } from '@umbraco-cms/store'; // Extend entityType base type?, so we are sure to have parentKey? // TODO: switch to use EntityDetailItem ? if we can have such type? export class UmbEntityWorkspaceManager< StoreType extends UmbEntityDetailStore, - EntityDetailsType extends EntityTreeItemModel = ReturnType + EntityDetailsType extends EntityTreeItemResponseModel = ReturnType > { private _host; state = new ObjectState(undefined); - protected _storeSubscription?: UmbObserverController; + protected _storeSubscription?: UmbObserverController; private _notificationContext?: UmbNotificationContext; private _store?: StoreType; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface.ts index cc11f9ff1c..3ab4890af3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface.ts @@ -1,7 +1,6 @@ -import { Observable } from 'rxjs'; import type { UmbWorkspaceContextInterface } from './workspace-context.interface'; -export interface UmbWorkspaceEntityContextInterface extends UmbWorkspaceContextInterface { +export interface UmbEntityWorkspaceContextInterface extends UmbWorkspaceContextInterface { getEntityKey(): string | undefined; // COnsider if this should go away now that we have getUnique() getEntityType(): string; getData(): T; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-invariantable-entity-context.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-invariantable-entity-context.interface.ts index 85bfff1251..0817a78a65 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-invariantable-entity-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-invariantable-entity-context.interface.ts @@ -1,13 +1,13 @@ import type { Observable } from 'rxjs'; -import type { UmbWorkspaceEntityContextInterface } from './workspace-entity-context.interface'; -import type { ValueViewModelBaseModel } from '@umbraco-cms/backend-api'; +import type { UmbEntityWorkspaceContextInterface } from './workspace-entity-context.interface'; +import type { ValueModelBaseModel } from '@umbraco-cms/backend-api'; export interface UmbWorkspaceInvariantableEntityContextInterface - extends UmbWorkspaceEntityContextInterface { + extends UmbEntityWorkspaceContextInterface { getName(): void; setName(name: string): void; - propertyDataByAlias(alias: string): Observable; + propertyDataByAlias(alias: string): Observable; propertyValueByAlias(alias: string): Observable; getPropertyValue(alias: string): void; setPropertyValue(alias: string, value: unknown): void; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-manager.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-manager.class.ts index 96a9c72b21..f067de9822 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-manager.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-manager.class.ts @@ -1,8 +1,8 @@ import { UmbDocumentTypeRepository } from '../../../../documents/document-types/repository/document-type.repository'; import { - DocumentTypeModel, - DocumentTypePropertyTypeModel, - PropertyTypeContainerViewModelBaseModel, + DocumentTypeResponseModel, + DocumentTypePropertyTypeResponseModel, + PropertyTypeContainerResponseModelBaseModel, } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { ArrayState, UmbObserverController } from '@umbraco-cms/observable-api'; @@ -10,7 +10,7 @@ import { ArrayState, UmbObserverController } from '@umbraco-cms/observable-api'; export type PropertyContainerTypes = 'Group' | 'Tab'; // TODO: get this type from the repository, or use some generic type. -type T = DocumentTypeModel; +type T = DocumentTypeResponseModel; // TODO: make general interface for NodeTypeRepository, to replace UmbDocumentTypeRepository: export class UmbWorkspacePropertyStructureManager { @@ -20,7 +20,7 @@ export class UmbWorkspacePropertyStructureManager([], (x) => x.key); - #containers = new ArrayState([], (x) => x.key); + #containers = new ArrayState([], (x) => x.key); constructor(host: UmbControllerHostInterface, typeRepository: R) { this.#host = host; @@ -85,7 +85,7 @@ export class UmbWorkspacePropertyStructureManager { - const props: DocumentTypePropertyTypeModel[] = []; + const props: DocumentTypePropertyTypeResponseModel[] = []; docTypes.forEach((docType) => { docType.properties?.forEach((property) => { if (property.containerKey === containerKey) { @@ -110,7 +110,7 @@ export class UmbWorkspacePropertyStructureManager { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-variable-entity-context.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-variable-entity-context.interface.ts index 7167156eea..00c97b20d1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-variable-entity-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-variable-entity-context.interface.ts @@ -1,20 +1,20 @@ import type { Observable } from 'rxjs'; import { UmbVariantId } from '../../../variants/variant-id.class'; -import type { UmbWorkspaceEntityContextInterface } from './workspace-entity-context.interface'; +import type { UmbEntityWorkspaceContextInterface } from './workspace-entity-context.interface'; import { UmbWorkspaceSplitViewManager } from './workspace-split-view-manager.class'; -import type { ValueViewModelBaseModel, VariantViewModelBaseModel } from '@umbraco-cms/backend-api'; +import type { ValueModelBaseModel, VariantResponseModelBaseModel } from '@umbraco-cms/backend-api'; -export interface UmbWorkspaceVariableEntityContextInterface extends UmbWorkspaceEntityContextInterface { - variants: Observable>; +export interface UmbWorkspaceVariableEntityContextInterface extends UmbEntityWorkspaceContextInterface { + variants: Observable>; splitView: UmbWorkspaceSplitViewManager; getName(variantId?: UmbVariantId): void; setName(name: string, variantId?: UmbVariantId): void; - getVariant(variantId: UmbVariantId): VariantViewModelBaseModel | undefined; + getVariant(variantId: UmbVariantId): VariantResponseModelBaseModel | undefined; - propertyDataByAlias(alias: string, variantId?: UmbVariantId): Observable; + propertyDataByAlias(alias: string, variantId?: UmbVariantId): Observable; propertyValueByAlias(alias: string, variantId?: UmbVariantId): Observable; getPropertyValue(alias: string, variantId?: UmbVariantId): void; setPropertyValue(alias: string, value: unknown, variantId?: UmbVariantId): void; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-entity-element.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-entity-element.interface.ts deleted file mode 100644 index f701853c32..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-entity-element.interface.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface UmbWorkspaceEntityElement { - load(key: string): void; - create(parentKey: string | null): void; -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-footer-layout/workspace-footer-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-footer-layout/workspace-footer-layout.element.ts index 6af6b320fa..a979b5f533 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-footer-layout/workspace-footer-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-footer-layout/workspace-footer-layout.element.ts @@ -61,7 +61,7 @@ export class UmbWorkspaceFooterLayout extends UmbLitElement { extension.meta.workspaces.includes(this.alias)} + .filter=${(extension: ManifestWorkspaceAction) => extension.conditions.workspaces.includes(this.alias)} default-element="umb-workspace-action"> diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts index 8abacffa60..7831dd7202 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts @@ -99,7 +99,9 @@ export class UmbWorkspaceLayout extends UmbLitElement { this.observe( umbExtensionsRegistry .extensionsOfTypes(['workspaceView', 'workspaceViewCollection']) - .pipe(map((extensions) => extensions.filter((extension) => extension.meta.workspaces.includes(this.alias)))), + .pipe( + map((extensions) => extensions.filter((extension) => extension.conditions.workspaces.includes(this.alias))) + ), (workspaceViews) => { this._workspaceViews = workspaceViews; this._createRoutes(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.element.ts index 5fc679c887..f39fd6f368 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.element.ts @@ -44,10 +44,12 @@ export class UmbWorkspacePropertyLayoutElement extends LitElement { p { margin-bottom: 0; } + #header { position: sticky; top: var(--uui-size-space-4); height: min-content; + z-index: 2; } `, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-variant/workspace-variant.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-variant/workspace-variant.context.ts index 9d2d06494d..7c50a77570 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-variant/workspace-variant.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-variant/workspace-variant.context.ts @@ -5,7 +5,7 @@ import { ActiveVariant } from '../workspace-context/workspace-split-view-manager import { UmbContextConsumerController, UmbContextProviderController, UmbContextToken } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { ClassState, NumberState, ObjectState, UmbObserverController } from '@umbraco-cms/observable-api'; -import { DocumentVariantModel } from '@umbraco-cms/backend-api'; +import { DocumentVariantResponseModel } from '@umbraco-cms/backend-api'; //type EntityType = DocumentModel; @@ -20,7 +20,7 @@ export class UmbWorkspaceVariantContext { #index = new NumberState(undefined); index = this.#index.asObservable(); - #currentVariant = new ObjectState(undefined); + #currentVariant = new ObjectState(undefined); currentVariant = this.#currentVariant.asObservable(); name = this.#currentVariant.getObservablePart((x) => x?.name); @@ -49,7 +49,7 @@ export class UmbWorkspaceVariantContext { }); } - public switchVariant(variant: DocumentVariantModel) { + public switchVariant(variant: DocumentVariantResponseModel) { const index = this.#index.value; if (index === undefined) return; this.#workspaceContext?.splitView.switchVariant(index, new UmbVariantId(variant)); @@ -61,7 +61,7 @@ export class UmbWorkspaceVariantContext { this.#workspaceContext?.splitView.closeSplitView(index); } - public openSplitView(variant: DocumentVariantModel) { + public openSplitView(variant: DocumentVariantResponseModel) { this.#workspaceContext?.splitView.openSplitView(new UmbVariantId(variant)); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts new file mode 100644 index 0000000000..7d9a4d6bd7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts @@ -0,0 +1,28 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html, nothing } from 'lit'; +import { customElement, property } from 'lit/decorators.js'; +import { UmbLitElement } from '@umbraco-cms/element'; +import { ManifestWorkspace } from '@umbraco-cms/extensions-registry'; + +@customElement('umb-workspace') +export class UmbWorkspaceElement extends UmbLitElement { + static styles = [UUITextStyles, css``]; + + @property({ type: String, attribute: 'entity-type' }) + entityType = ''; + + render() { + if (!this.entityType) nothing; + return html` manifest.meta.entityType === this.entityType}>`; + } +} + +export default UmbWorkspaceElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-workspace': UmbWorkspaceElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/manifests.ts index 1b5a1b4307..cb7ae924dd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/manifests.ts @@ -6,7 +6,7 @@ export const manifests: Array = [ alias: 'Umb.PropertyAction.Copy', name: 'Copy Property Action', loader: () => import('./copy/property-action-copy.element'), - meta: { + conditions: { propertyEditors: ['Umb.PropertyEditorUI.TextBox'], }, }, @@ -15,7 +15,7 @@ export const manifests: Array = [ alias: 'Umb.PropertyAction.Clear', name: 'Clear Property Action', loader: () => import('./clear/property-action-clear.element'), - meta: { + conditions: { propertyEditors: ['Umb.PropertyEditorUI.TextBox'], }, }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/shared/property-action-menu/property-action-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/shared/property-action-menu/property-action-menu.element.ts index 1320ed1f17..ccaf533fdb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/shared/property-action-menu/property-action-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/shared/property-action-menu/property-action-menu.element.ts @@ -78,7 +78,7 @@ export class UmbPropertyActionMenuElement extends UmbLitElement { this._actionsObserver = this.observe( umbExtensionsRegistry.extensionsOfType('propertyAction').pipe( map((propertyActions) => { - return propertyActions.filter((propertyAction) => propertyAction.meta.propertyEditors.includes(alias)); + return propertyActions.filter((propertyAction) => propertyAction.conditions.propertyEditors.includes(alias)); }) ), (manifests) => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/checkbox-list/property-editor-ui-checkbox-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/checkbox-list/property-editor-ui-checkbox-list.element.ts index c46d39e441..17eecc2687 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/checkbox-list/property-editor-ui-checkbox-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/checkbox-list/property-editor-ui-checkbox-list.element.ts @@ -4,7 +4,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { UmbInputCheckboxListElement } from '../../../components/input-checkbox-list/input-checkbox-list.element'; import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import type { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; /** * @element umb-property-editor-ui-checkbox-list @@ -23,7 +23,7 @@ export class UmbPropertyEditorUICheckboxListElement extends UmbLitElement implem } @property({ type: Array, attribute: false }) - public set config(config: Array) { + public set config(config: Array) { const listData = config.find((x) => x.alias === 'items'); if (!listData) return; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/color-picker/property-editor-ui-color-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/color-picker/property-editor-ui-color-picker.element.ts index eb68421589..edd33f33d6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/color-picker/property-editor-ui-color-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/color-picker/property-editor-ui-color-picker.element.ts @@ -4,7 +4,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { UUIColorSwatchesEvent } from '@umbraco-ui/uui'; import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import type { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; import type { SwatchDetails } from '@umbraco-cms/models'; /** @@ -24,7 +24,7 @@ export class UmbPropertyEditorUIColorPickerElement extends UmbLitElement impleme private _swatches: SwatchDetails[] = []; @property({ type: Array, attribute: false }) - public set config(config: Array) { + public set config(config: Array) { const useLabel = config.find((x) => x.alias === 'useLabel'); if (useLabel) this._showLabels = useLabel.value; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/property-editor-ui-document-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/property-editor-ui-document-picker.element.ts index 1247db88b2..028f6239a8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/property-editor-ui-document-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/property-editor-ui-document-picker.element.ts @@ -4,7 +4,7 @@ import type { UmbInputDocumentPickerElement } from '../../../components/input-do import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; import '../../../components/input-document-picker/input-document-picker.element'; -import type { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import type { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; @customElement('umb-property-editor-ui-document-picker') export class UmbPropertyEditorUIContentPickerElement extends UmbLitElement implements UmbPropertyEditorElement { @@ -19,7 +19,7 @@ export class UmbPropertyEditorUIContentPickerElement extends UmbLitElement imple } @property({ type: Array, attribute: false }) - public set config(config: Array) { + public set config(config: Array) { const validationLimit = config.find((x) => x.alias === 'validationLimit'); this._limitMin = (validationLimit?.value as any).min; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/eye-dropper/property-editor-ui-eye-dropper.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/eye-dropper/property-editor-ui-eye-dropper.element.ts index 96bb3ccbd2..dafc9c6cd3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/eye-dropper/property-editor-ui-eye-dropper.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/eye-dropper/property-editor-ui-eye-dropper.element.ts @@ -4,7 +4,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { UUIColorPickerChangeEvent } from '@umbraco-ui/uui'; import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import type { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; /** * @element umb-property-editor-ui-eye-dropper @@ -23,7 +23,7 @@ export class UmbPropertyEditorUIEyeDropperElement extends UmbLitElement implemen private _swatches: string[] = []; @property({ type: Array, attribute: false }) - public set config(config: Array) { + public set config(config: Array) { const showAlpha = config.find((x) => x.alias === 'showAlpha'); if (showAlpha) this._opacity = showAlpha.value; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/icon-picker/property-editor-ui-icon-picker.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/icon-picker/property-editor-ui-icon-picker.stories.ts index b48f69befe..37beb48855 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/icon-picker/property-editor-ui-icon-picker.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/icon-picker/property-editor-ui-icon-picker.stories.ts @@ -1,9 +1,9 @@ import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit-html'; +import type { UmbIconPickerModalElement } from '../../../../shared/modals/icon-picker/icon-picker-modal.element'; import type { UmbPropertyEditorUIIconPickerElement } from './property-editor-ui-icon-picker.element'; import './property-editor-ui-icon-picker.element'; -import type { UmbIconPickerModalElement } from 'src/backoffice/shared/modals/icon-picker/icon-picker-modal.element'; export default { title: 'Property Editor UIs/Icon Picker', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/media-picker/property-editor-ui-media-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/media-picker/property-editor-ui-media-picker.element.ts index a4228b08eb..680ce17e96 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/media-picker/property-editor-ui-media-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/media-picker/property-editor-ui-media-picker.element.ts @@ -3,7 +3,7 @@ import { customElement, property, state } from 'lit/decorators.js'; import { UmbInputMediaPickerElement } from '../../../../../backoffice/shared/components/input-media-picker/input-media-picker.element'; import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import type { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; /** * @element umb-property-editor-ui-media-picker @@ -21,7 +21,7 @@ export class UmbPropertyEditorUIMediaPickerElement extends UmbLitElement impleme } @property({ type: Array, attribute: false }) - public set config(config: Array) { + public set config(config: Array) { const validationLimit = config.find((x) => x.alias === 'validationLimit'); if (!validationLimit) return; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts index 1d74448439..f770c86d23 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts @@ -6,7 +6,7 @@ import { UmbInputMultiUrlPickerElement } from '../../../../shared/components/inp import { UmbLinkPickerLink } from '../../../../shared/modals/link-picker'; import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; /** * @element umb-property-editor-ui-multi-url-picker @@ -20,7 +20,7 @@ export class UmbPropertyEditorUIMultiUrlPickerElement extends UmbLitElement impl value: UmbLinkPickerLink[] = []; @property({ type: Array, attribute: false }) - public set config(config: DataTypePropertyModel[]) { + public set config(config: DataTypePropertyPresentationModel[]) { const overlaySize = config.find((x) => x.alias === 'overlaySize'); if (overlaySize) this._overlaySize = overlaySize.value; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/input-multiple-text-string-item/input-multiple-text-string-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/input-multiple-text-string-item/input-multiple-text-string-item.element.ts index 44ce7f16a8..2c187b7e19 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/input-multiple-text-string-item/input-multiple-text-string-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/input-multiple-text-string-item/input-multiple-text-string-item.element.ts @@ -4,10 +4,10 @@ import { customElement, property, query } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUIInputEvent } from '@umbraco-ui/uui-input'; import { UUIInputElement } from '@umbraco-ui/uui'; +import { UMB_CONFIRM_MODAL_TOKEN } from '../../../../modals/confirm'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; import { UmbChangeEvent, UmbInputEvent, UmbDeleteEvent } from '@umbraco-cms/events'; import { UmbLitElement } from '@umbraco-cms/element'; -import { UMB_CONFIRM_MODAL_TOKEN } from 'src/backoffice/shared/modals/confirm'; /** * @element umb-input-multiple-text-string-item diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/radio-button-list/property-editor-ui-radio-button-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/radio-button-list/property-editor-ui-radio-button-list.element.ts index da082889df..2a7d1897b7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/radio-button-list/property-editor-ui-radio-button-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/radio-button-list/property-editor-ui-radio-button-list.element.ts @@ -5,7 +5,7 @@ import '../../../components/input-radio-button-list/input-radio-button-list.elem import type { UmbInputRadioButtonListElement } from '../../../components/input-radio-button-list/input-radio-button-list.element'; import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import type { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; /** * @element umb-property-editor-ui-radio-button-list @@ -24,7 +24,7 @@ export class UmbPropertyEditorUIRadioButtonListElement extends UmbLitElement imp } @property({ type: Array, attribute: false }) - public set config(config: Array) { + public set config(config: Array) { const listData = config.find((x) => x.alias === 'items'); if (!listData) return; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/slider/property-editor-ui-slider.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/slider/property-editor-ui-slider.element.ts index 6e81051161..b6e38081fe 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/slider/property-editor-ui-slider.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/slider/property-editor-ui-slider.element.ts @@ -4,7 +4,7 @@ import { customElement, property, state } from 'lit/decorators.js'; import UmbInputSliderElement from '../../../../shared/components/input-slider/input-slider.element'; import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; /** * @element umb-property-editor-ui-slider @@ -38,7 +38,7 @@ export class UmbPropertyEditorUISliderElement extends UmbLitElement implements U _max?: number; @property({ type: Array, attribute: false }) - public set config(config: Array) { + public set config(config: Array) { const enableRange = config.find((x) => x.alias === 'enableRange'); if (enableRange) this._enableRange = enableRange.value as boolean; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/toggle/property-editor-ui-toggle.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/toggle/property-editor-ui-toggle.element.ts index 7c942602c3..42f49b8b7b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/toggle/property-editor-ui-toggle.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/toggle/property-editor-ui-toggle.element.ts @@ -4,7 +4,7 @@ import { customElement, property, state } from 'lit/decorators.js'; import { UmbInputToggleElement } from '../../../components/input-toggle/input-toggle.element'; import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; /** * @element umb-property-editor-ui-toggle @@ -26,7 +26,7 @@ export class UmbPropertyEditorUIToggleElement extends UmbLitElement implements U _showLabels?: boolean; @property({ type: Array, attribute: false }) - public set config(config: Array) { + public set config(config: Array) { const defaultValue = config.find((x) => x.alias === 'default'); if (defaultValue) this.value = defaultValue.value as boolean; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/menu.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/menu.manifests.ts index 700ff9b7be..cf14f344c1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/menu.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/menu.manifests.ts @@ -16,9 +16,11 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { weight: 100, meta: { label: 'Templating', - sections: ['Umb.Section.Settings'], menu: 'Umb.Menu.Templating', }, + conditions: { + sections: ['Umb.Section.Settings'], + }, }; export const manifests = [menu, menuSectionSidebarApp]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/manifests.ts index eead35cbed..9ae77ff254 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/manifests.ts @@ -9,24 +9,28 @@ const entityActions: Array = [ alias: 'Umb.EntityAction.Template.Create', name: 'Create Template Entity Action', meta: { - entityType: 'template', icon: 'umb:add', label: 'Create', api: UmbCreateEntityAction, repositoryAlias: TEMPLATE_REPOSITORY_ALIAS, }, + conditions: { + entityType: 'template', + }, }, { type: 'entityAction', alias: 'Umb.EntityAction.Template.Delete', name: 'Delete Template Entity Action', meta: { - entityType: 'template', icon: 'umb:trash', label: 'Delete', api: UmbDeleteEntityAction, repositoryAlias: TEMPLATE_REPOSITORY_ALIAS, }, + conditions: { + entityType: 'template', + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts index 1f84068f1d..6ae9d7ce71 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts @@ -10,6 +10,8 @@ const menuItem: ManifestMenuItem = { label: 'Templates', icon: 'umb:folder', entityType: 'template', + }, + conditions: { menus: ['Umb.Menu.Templating'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/templates-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/templates-menu-item.element.ts index d9b9600990..b596857303 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/templates-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/templates-menu-item.element.ts @@ -19,15 +19,14 @@ export class UmbTemplatesMenuItemElement extends UmbLitElement { // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)? // TODO: can we make this reusable? render() { - return html` + has-children + > ${this._renderTree ? html`` : nothing} - `; + `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts index 35c6f99794..f1aedc8712 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts @@ -1,8 +1,8 @@ import type { DataSourceResponse } from '@umbraco-cms/models'; -import type { EntityTreeItemModel, PagedEntityTreeItemModel } from '@umbraco-cms/backend-api'; +import type { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; export interface TemplateTreeDataSource { - getRootItems(): Promise>; - getChildrenOf(parentKey: string): Promise>; - getItems(key: Array): Promise>; + getRootItems(): Promise>; + getChildrenOf(parentKey: string): Promise>; + getItems(key: Array): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts index 0d6f39e347..f689c80083 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts @@ -1,14 +1,14 @@ import { v4 as uuid } from 'uuid'; -import { ProblemDetailsModel, TemplateModel, TemplateResource } from '@umbraco-cms/backend-api'; +import { ProblemDetailsModel, TemplateResponseModel, TemplateResource } from '@umbraco-cms/backend-api'; import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import type { DataSourceResponse } from '@umbraco-cms/models'; export interface TemplateDetailDataSource { - createScaffold(): Promise>; - get(key: string): Promise>; - insert(template: TemplateModel): Promise; - update(template: TemplateModel): Promise; + createScaffold(): Promise>; + get(key: string): Promise>; + insert(template: TemplateResponseModel): Promise; + update(template: TemplateResponseModel): Promise; delete(key: string): Promise; } @@ -48,7 +48,7 @@ export class UmbTemplateDetailServerDataSource implements TemplateDetailDataSour */ async createScaffold() { const error = undefined; - const data: TemplateModel = { + const data: TemplateResponseModel = { $type: '', key: uuid(), name: '', @@ -77,7 +77,7 @@ export class UmbTemplateDetailServerDataSource implements TemplateDetailDataSour * @return {*} * @memberof UmbTemplateDetailServerDataSource */ - async insert(template: TemplateModel) { + async insert(template: TemplateResponseModel) { const payload = { requestBody: template }; // TODO: fix type mismatch return tryExecuteAndNotify( @@ -92,7 +92,7 @@ export class UmbTemplateDetailServerDataSource implements TemplateDetailDataSour * @return {*} * @memberof UmbTemplateDetailServerDataSource */ - async update(template: TemplateModel) { + async update(template: TemplateResponseModel) { if (!template.key) { const error: ProblemDetailsModel = { title: 'Template key is missing' }; return { error }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts index 3c8cf551b1..ceab20906a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts @@ -5,11 +5,11 @@ import { UmbTemplateTreeStore, UMB_TEMPLATE_TREE_STORE_CONTEXT_TOKEN } from './t import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { ProblemDetailsModel, TemplateModel } from '@umbraco-cms/backend-api'; +import { ProblemDetailsModel, TemplateResponseModel } from '@umbraco-cms/backend-api'; import { UmbDetailRepository } from 'libs/repository/detail-repository.interface'; import { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; -export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailRepository { +export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailRepository { #init; #host: UmbControllerHostInterface; @@ -135,7 +135,7 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailReposi // Could potentially be general methods: - async create(template: TemplateModel) { + async create(template: TemplateResponseModel) { await this.#init; if (!template || !template.key) { @@ -157,7 +157,7 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailReposi return { error }; } - async save(template: TemplateModel) { + async save(template: TemplateResponseModel) { await this.#init; if (!template || !template.key) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts index 0051164f79..516c846430 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts @@ -1,7 +1,7 @@ import { UmbContextToken } from '@umbraco-cms/context-api'; import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase } from '@umbraco-cms/store'; -import type { TemplateModel } from '@umbraco-cms/backend-api'; +import type { TemplateResponseModel } from '@umbraco-cms/backend-api'; import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; /** @@ -11,7 +11,7 @@ import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; * @description - Data Store for Templates */ export class UmbTemplateStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.key); /** * Creates an instance of UmbTemplateStore. @@ -27,7 +27,7 @@ export class UmbTemplateStore extends UmbStoreBase { * @param {Template} template * @memberof UmbTemplateStore */ - append(template: TemplateModel) { + append(template: TemplateResponseModel) { this.#data.append([template]); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/manifests.ts index 6330096a9c..efdf248d95 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/manifests.ts @@ -23,10 +23,12 @@ const workspaceActions: Array = [ meta: { look: 'primary', color: 'positive', - workspaces: ['Umb.Workspace.Template'], label: 'Save', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.Template'], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts index 16886f30de..8677e10898 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts @@ -1,11 +1,11 @@ import { UmbTemplateRepository } from '../repository/template.repository'; import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { createObservablePart, DeepState } from '@umbraco-cms/observable-api'; -import { TemplateModel } from '@umbraco-cms/backend-api'; +import { TemplateResponseModel } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbTemplateWorkspaceContext extends UmbWorkspaceContext { - #data = new DeepState(undefined); + #data = new DeepState(undefined); data = this.#data.asObservable(); name = createObservablePart(this.#data, (data) => data?.name); content = createObservablePart(this.#data, (data) => data?.content); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/themes/theme.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/themes/theme.context.ts index 5e246bc46e..9f5f0d36fb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/themes/theme.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/themes/theme.context.ts @@ -14,9 +14,9 @@ export class UmbThemeContext { #theme = new StringState('umb-light-theme'); public readonly theme = this.#theme.asObservable(); - private themeSubscription?: UmbObserverController; + private themeSubscription?: UmbObserverController; - #styleElement: HTMLLinkElement| HTMLStyleElement | null = null; + #styleElement: HTMLLinkElement | HTMLStyleElement | null = null; constructor(host: UmbControllerHostInterface) { this._host = host; @@ -43,25 +43,21 @@ export class UmbThemeContext { async (themes) => { this.#styleElement?.remove(); if (themes.length > 0) { - if(themes[0].loader) { - - const styleEl = this.#styleElement = document.createElement('style'); + if (themes[0].loader) { + const styleEl = (this.#styleElement = document.createElement('style')); styleEl.setAttribute('type', 'text/css'); document.head.appendChild(styleEl); const result = await themes[0].loader(); // Checking that this is still our styleElement, it has not been replaced with another theme in between. - if(styleEl === this.#styleElement) { + if (styleEl === this.#styleElement) { (styleEl as any).appendChild(document.createTextNode(result)); } - } else if (themes[0].css) { - this.#styleElement = document.createElement('link'); this.#styleElement.setAttribute('rel', 'stylesheet'); this.#styleElement.setAttribute('href', themes[0].css); document.head.appendChild(this.#styleElement); - } } else { localStorage.removeItem(LOCAL_STORAGE_KEY); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts index 38b5625580..57136031c7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts @@ -4,12 +4,9 @@ import { customElement, state } from 'lit/decorators.js'; import { when } from 'lit-html/directives/when.js'; import { UmbTableConfig, UmbTableColumn, UmbTableItem } from '../../../../backoffice/shared/components/table'; import { UmbDictionaryRepository } from '../../dictionary/repository/dictionary.repository'; -import { - UmbCreateDictionaryModalResult, - UMB_CREATE_DICTIONARY_MODAL_TOKEN, -} from '../../dictionary/entity-actions/create/'; +import { UMB_CREATE_DICTIONARY_MODAL_TOKEN } from '../../dictionary/entity-actions/create/'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DictionaryOverviewModel, LanguageModel } from '@umbraco-cms/backend-api'; +import { DictionaryOverviewResponseModel, LanguageResponseModel } from '@umbraco-cms/backend-api'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; @@ -50,7 +47,7 @@ export class UmbDashboardTranslationDictionaryElement extends UmbLitElement { @state() private _tableItemsFiltered: Array = []; - #dictionaryItems: DictionaryOverviewModel[] = []; + #dictionaryItems: DictionaryOverviewResponseModel[] = []; #repo!: UmbDictionaryRepository; @@ -60,7 +57,7 @@ export class UmbDashboardTranslationDictionaryElement extends UmbLitElement { #tableColumns: Array = []; - #languages: Array = []; + #languages: Array = []; constructor() { super(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal-layout.element.ts index b178a42ac3..4eba5b2679 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal-layout.element.ts @@ -6,7 +6,7 @@ import { repeat } from 'lit/directives/repeat.js'; import { UmbTreeElement } from '../../../../shared/components/tree/tree.element'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; import { UmbImportDictionaryModalData, UmbImportDictionaryModalResult } from '.'; -import { DictionaryUploadModel } from '@umbraco-cms/backend-api'; +import { UploadDictionaryResponseModel } from '@umbraco-cms/backend-api'; import { UmbModalBaseElement } from '@umbraco-cms/modal'; @customElement('umb-import-dictionary-modal-layout') @@ -27,7 +27,7 @@ export class UmbImportDictionaryModalLayoutElement extends UmbModalBaseElement< private _form!: HTMLFormElement; @state() - private _uploadedDictionary?: DictionaryUploadModel; + private _uploadedDictionary?: UploadDictionaryResponseModel; @state() private _showUploadView = true; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/manifests.ts index 7e75f56e94..2164157fed 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/manifests.ts @@ -16,12 +16,14 @@ const entityActions: Array = [ name: 'Create Dictionary Entity Action', weight: 600, meta: { - entityType, icon: 'umb:add', label: 'Create', repositoryAlias, api: UmbCreateDictionaryEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -29,12 +31,14 @@ const entityActions: Array = [ name: 'Move Dictionary Entity Action', weight: 500, meta: { - entityType, icon: 'umb:enter', label: 'Move', repositoryAlias, api: UmbMoveEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -42,12 +46,14 @@ const entityActions: Array = [ name: 'Export Dictionary Entity Action', weight: 400, meta: { - entityType, icon: 'umb:download-alt', label: 'Export', repositoryAlias, api: UmbExportDictionaryEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -55,12 +61,14 @@ const entityActions: Array = [ name: 'Import Dictionary Entity Action', weight: 300, meta: { - entityType, icon: 'umb:page-up', label: 'Import', repositoryAlias, api: UmbImportDictionaryEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -68,12 +76,14 @@ const entityActions: Array = [ name: 'Reload Dictionary Entity Action', weight: 200, meta: { - entityType, icon: 'umb:refresh', label: 'Reload', repositoryAlias, api: UmbReloadDictionaryEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -81,12 +91,14 @@ const entityActions: Array = [ name: 'Delete Dictionary Entity Action', weight: 100, meta: { - entityType, icon: 'umb:trash', label: 'Delete', repositoryAlias, api: UmbDeleteEntityAction, }, + conditions: { + entityType, + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/menu-item/manifests.ts index c62856cc82..03f15f69a3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/menu-item/manifests.ts @@ -10,6 +10,8 @@ const menuItem: ManifestMenuItem = { label: 'Dictionary', icon: 'umb:book-alt', entityType: 'dictionary-item', + }, + conditions: { menus: ['Umb.Menu.Dictionary'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts index 8606fa42fe..98fe5572d1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts @@ -2,7 +2,7 @@ import { DictionaryDetailDataSource } from './dictionary.details.server.data.int import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import { - DictionaryItemCreateModel, + CreateDictionaryItemRequestModel, DictionaryResource, LanguageResource, ProblemDetailsModel, @@ -80,7 +80,7 @@ export class UmbDictionaryDetailServerDataSource implements DictionaryDetailData * @memberof UmbDictionaryDetailServerDataSource */ async insert(data: DictionaryDetails) { - const requestBody: DictionaryItemCreateModel = { + const requestBody: CreateDictionaryItemRequestModel = { parentKey: data.parentKey, name: data.name, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts index 238702d0bc..df4bb03087 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts @@ -1,21 +1,21 @@ import { - DictionaryItemModel, - DictionaryUploadModel, - PagedDictionaryOverviewModel, - PagedLanguageModel, + DictionaryItemResponseModel, + UploadDictionaryResponseModel, + PagedDictionaryOverviewResponseModel, + PagedLanguageResponseModel, } from '@umbraco-cms/backend-api'; import type { DataSourceResponse, DictionaryDetails } from '@umbraco-cms/models'; export interface DictionaryDetailDataSource { - createScaffold(parentKey: string): Promise>; - list(skip?: number, take?: number): Promise>; - get(key: string): Promise>; + createScaffold(parentKey: string): Promise>; + list(skip?: number, take?: number): Promise>; + get(key: string): Promise>; insert(data: DictionaryDetails): Promise; - update(dictionary: DictionaryItemModel): Promise; + update(dictionary: DictionaryItemResponseModel): Promise; delete(key: string): Promise; export(key: string, includeChildren: boolean): Promise>; import(fileName: string, parentKey?: string): Promise>; - upload(formData: FormData): Promise>; + upload(formData: FormData): Promise>; // TODO - temp only - getLanguages(): Promise>; + getLanguages(): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace-edit.element.ts new file mode 100644 index 0000000000..adde5f347e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace-edit.element.ts @@ -0,0 +1,75 @@ +import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { UmbDictionaryWorkspaceContext } from './dictionary-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/element'; + +@customElement('umb-dictionary-workspace-edit') +export class UmbDictionaryWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + #header { + display: flex; + padding: 0 var(--uui-size-space-6); + gap: var(--uui-size-space-4); + width: 100%; + } + uui-input { + width: 100%; + } + `, + ]; + + @state() + private _name?: string | null = ''; + + #workspaceContext?: UmbDictionaryWorkspaceContext; + + constructor() { + super(); + + this.consumeContext('umbWorkspaceContext', (instance) => { + this.#workspaceContext = instance; + this.#observeName(); + }); + } + + #observeName() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.name, (name) => (this._name = name)); + } + + // TODO. find a way where we don't have to do this for all workspaces. + #handleInput(event: UUIInputEvent) { + if (event instanceof UUIInputEvent) { + const target = event.composedPath()[0] as UUIInputElement; + + if (typeof target?.value === 'string') { + this.#workspaceContext?.setName(target.value); + } + } + } + + render() { + return html` + + + + `; + } +} + +export default UmbDictionaryWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-dictionary-workspace-edit': UmbDictionaryWorkspaceEditElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.context.ts index 9ee60311ee..7fe9e78adb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.context.ts @@ -1,14 +1,15 @@ import { UmbDictionaryRepository } from '../repository/dictionary.repository'; import { UmbWorkspaceContext } from '../../../../backoffice/shared/components/workspace/workspace-context/workspace-context'; -import { UmbWorkspaceEntityContextInterface } from '../../../../backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface } from '../../../../backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { ObjectState } from '@umbraco-cms/observable-api'; import type { DictionaryDetails } from '@umbraco-cms/models'; type EntityType = DictionaryDetails; -export class UmbWorkspaceDictionaryContext + +export class UmbDictionaryWorkspaceContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { #data = new ObjectState(undefined); data = this.#data.asObservable(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts index 8bc48e4d75..a4849a5815 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts @@ -1,75 +1,32 @@ -import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { css, html } from 'lit'; +import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UmbWorkspaceEntityElement } from '../../../../backoffice/shared/components/workspace/workspace-entity-element.interface'; -import { UmbWorkspaceDictionaryContext } from './dictionary-workspace.context'; +import { IRoutingInfo } from 'router-slot'; +import { UmbDictionaryWorkspaceContext } from './dictionary-workspace.context'; +import { UmbDictionaryWorkspaceEditElement } from './dictionary-workspace-edit.element'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-dictionary-workspace') -export class UmbWorkspaceDictionaryElement extends UmbLitElement implements UmbWorkspaceEntityElement { - static styles = [ - UUITextStyles, - css` - #header { - display: flex; - padding: 0 var(--uui-size-space-6); - gap: var(--uui-size-space-4); - width: 100%; - } - uui-input { - width: 100%; - } - `, +export class UmbWorkspaceDictionaryElement extends UmbLitElement { + static styles = [UUITextStyles]; + + #workspaceContext = new UmbDictionaryWorkspaceContext(this); + #element = new UmbDictionaryWorkspaceEditElement(); + + @state() + _routes: any[] = [ + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, ]; - @state() - _unique?: string; - - public load(entityKey: string) { - this.#workspaceContext.load(entityKey); - this._unique = entityKey; - } - - public create(parentKey: string | null) { - this.#workspaceContext.createScaffold(parentKey); - } - - @state() - private _name?: string | null = ''; - - #workspaceContext = new UmbWorkspaceDictionaryContext(this); - - async connectedCallback() { - super.connectedCallback(); - - this.observe(this.#workspaceContext.name, (name) => { - this._name = name; - }); - } - - // TODO. find a way where we don't have to do this for all workspaces. - #handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this.#workspaceContext?.setName(target.value); - } - } - } - render() { - return html` - - - - `; + return html` `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/manifests.ts index 38d81ac4bb..ba5e4c16ec 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/manifests.ts @@ -22,11 +22,13 @@ const workspaceViews: Array = [ loader: () => import('./views/edit/workspace-view-dictionary-edit.element'), weight: 100, meta: { - workspaces: [workspaceAlias], label: 'Edit', pathname: 'edit', icon: 'edit', }, + conditions: { + workspaces: [workspaceAlias], + }, }, ]; @@ -37,12 +39,14 @@ const workspaceActions: Array = [ name: 'Save Dictionary Workspace Action', weight: 90, meta: { - workspaces: ['Umb.Workspace.Dictionary'], label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.Dictionary'], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.element.ts index 7ca550a636..bb5d774b81 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.element.ts @@ -4,10 +4,10 @@ import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UUITextareaElement, UUITextareaEvent } from '@umbraco-ui/uui'; -import { UmbWorkspaceDictionaryContext } from '../../dictionary-workspace.context'; +import { UmbDictionaryWorkspaceContext } from '../../dictionary-workspace.context'; import { UmbDictionaryRepository } from '../../../repository/dictionary.repository'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DictionaryItemModel, LanguageModel } from '@umbraco-cms/backend-api'; +import { DictionaryItemResponseModel, LanguageResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-workspace-view-dictionary-edit') export class UmbWorkspaceViewDictionaryEditElement extends UmbLitElement { @@ -22,14 +22,14 @@ export class UmbWorkspaceViewDictionaryEditElement extends UmbLitElement { ]; @state() - private _dictionary?: DictionaryItemModel; + private _dictionary?: DictionaryItemResponseModel; #repo!: UmbDictionaryRepository; @state() - private _languages: Array = []; + private _languages: Array = []; - #workspaceContext!: UmbWorkspaceDictionaryContext; + #workspaceContext!: UmbDictionaryWorkspaceContext; async connectedCallback() { super.connectedCallback(); @@ -37,7 +37,7 @@ export class UmbWorkspaceViewDictionaryEditElement extends UmbLitElement { this.#repo = new UmbDictionaryRepository(this); this._languages = await this.#repo.getLanguages(); - this.consumeContext('umbWorkspaceContext', (_instance) => { + this.consumeContext('umbWorkspaceContext', (_instance) => { this.#workspaceContext = _instance; this.#observeDictionary(); }); @@ -49,7 +49,7 @@ export class UmbWorkspaceViewDictionaryEditElement extends UmbLitElement { }); } - #renderTranslation(language: LanguageModel) { + #renderTranslation(language: LanguageResponseModel) { if (!language.isoCode) return; const translation = this._dictionary?.translations?.find((x) => x.isoCode === language.isoCode); @@ -68,7 +68,7 @@ export class UmbWorkspaceViewDictionaryEditElement extends UmbLitElement { if (e instanceof UUITextareaEvent) { const target = e.composedPath()[0] as UUITextareaElement; const translation = target.value.toString(); - const isoCode = target.getAttribute('name')!; + const isoCode = target.getAttribute('name')!; this.#workspaceContext.setPropertyValue(isoCode, translation); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/section.manifest.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/section.manifest.ts index aeaee59e29..59be737e0d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/section.manifest.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/section.manifest.ts @@ -20,9 +20,11 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { weight: 100, meta: { label: 'Dictionary', - sections: [sectionAlias], menu: 'Umb.Menu.Dictionary', }, + conditions: { + sections: [sectionAlias], + }, }; const dashboards: Array = [ @@ -34,9 +36,11 @@ const dashboards: Array = [ loader: () => import('./dashboards/dictionary/dashboard-translation-dictionary.element'), meta: { label: 'Dictionary overview', - sections: [sectionAlias], pathname: '', }, + conditions: { + sections: [sectionAlias], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/actions/workspace-action-user-group-save.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/actions/workspace-action-user-group-save.element.ts index 3977037d08..7b35e2b307 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/actions/workspace-action-user-group-save.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/actions/workspace-action-user-group-save.element.ts @@ -2,7 +2,7 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import type { UUIButtonState } from '@umbraco-ui/uui'; -import { UmbWorkspaceUserContext } from '../../../users/workspace/user-workspace.context'; +import { UmbUserWorkspaceContext } from '../../../users/workspace/user-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-workspace-action-user-group-save') @@ -12,13 +12,13 @@ export class UmbWorkspaceActionUserGroupSaveElement extends UmbLitElement { @state() private _saveButtonState?: UUIButtonState; - private _workspaceContext?: UmbWorkspaceUserContext; + private _workspaceContext?: UmbUserWorkspaceContext; constructor() { super(); // TODO: Figure out how to get the magic string for the workspace context. - this.consumeContext('umbWorkspaceContext', (instance) => { + this.consumeContext('umbWorkspaceContext', (instance) => { this._workspaceContext = instance; }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts new file mode 100644 index 0000000000..2e108a3447 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts @@ -0,0 +1,371 @@ +import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; +import { UUITextStyles } from '@umbraco-ui/uui-css'; +import { css, html, nothing } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { repeat } from 'lit/directives/repeat.js'; +import { UmbUserStore } from '../../users/repository/user.store'; +import { UmbUserGroupWorkspaceContext } from './user-group-workspace.context'; +import type { UserGroupDetails } from '@umbraco-cms/models'; +import { UmbLitElement } from '@umbraco-cms/element'; + +import '../../../shared/components/input-user/input-user.element'; +import '../../../shared/components/input-section/input-section.element'; + +@customElement('umb-user-group-workspace-edit') +export class UmbUserGroupWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + height: 100%; + } + + #main { + display: grid; + grid-template-columns: 1fr 350px; + gap: var(--uui-size-space-6); + padding: var(--uui-size-space-6); + } + #left-column { + display: flex; + flex-direction: column; + gap: var(--uui-size-space-4); + } + #right-column > uui-box > div { + display: flex; + flex-direction: column; + gap: var(--uui-size-space-2); + } + hr { + border: none; + border-bottom: 1px solid var(--uui-color-divider); + width: 100%; + } + uui-input { + width: 100%; + } + .faded-text { + color: var(--uui-color-text-alt); + font-size: 0.8rem; + } + #default-permissions { + display: flex; + flex-direction: column; + gap: var(--uui-size-space-4); + } + .default-permission { + display: flex; + align-items: center; + gap: var(--uui-size-space-4); + padding: var(--uui-size-space-2); + } + .default-permission:not(:last-child) { + border-bottom: 1px solid var(--uui-color-divider); + } + .permission-info { + display: flex; + flex-direction: column; + } + `, + ]; + + defaultPermissions: Array<{ + name: string; + permissions: Array<{ name: string; description: string; value: boolean }>; + }> = [ + { + name: 'Administration', + permissions: [ + { + name: 'Culture and Hostnames', + description: 'Allow access to assign culture and hostnames', + value: false, + }, + { + name: 'Restrict Public Access', + description: 'Allow access to set and change access restrictions for a node', + value: false, + }, + { + name: 'Rollback', + description: 'Allow access to roll back a node to a previous state', + value: false, + }, + ], + }, + { + name: 'Content', + permissions: [ + { + name: 'Browse Node', + description: 'Allow access to view a node', + value: false, + }, + { + name: 'Create Content Template', + description: 'Allow access to create a Content Template', + value: false, + }, + { + name: 'Delete', + description: 'Allow access to delete nodes', + value: false, + }, + { + name: 'Create', + description: 'Allow access to create nodes', + value: false, + }, + { + name: 'Publish', + description: 'Allow access to publish nodes', + value: false, + }, + { + name: 'Permissions', + description: 'Allow access to change permissions for a node', + value: false, + }, + { + name: 'Send To Publish', + description: 'Allow access to send a node for approval before publishing', + value: false, + }, + { + name: 'Unpublish', + description: 'Allow access to unpublish a node', + value: false, + }, + { + name: 'Update', + description: 'Allow access to save a node', + value: false, + }, + { + name: 'Full restore', + description: 'Allow the user to restore items', + value: false, + }, + { + name: 'Partial restore', + description: 'Allow the user to partial restore items', + value: false, + }, + { + name: 'Queue for transfer', + description: 'Allow the user to queue item(s)', + value: false, + }, + ], + }, + { + name: 'Structure', + permissions: [ + { + name: 'Copy', + description: 'Allow access to copy a node', + value: false, + }, + { + name: 'Move', + description: 'Allow access to move a node', + value: false, + }, + { + name: 'Sort', + description: 'Allow access to change the sort order for nodes', + value: false, + }, + ], + }, + ]; + + private _userStore?: UmbUserStore; + + #workspaceContext?: UmbUserGroupWorkspaceContext; + + @state() + private _userGroup?: UserGroupDetails; + + @state() + private _userKeys?: Array; + + constructor() { + super(); + + this.consumeContext('umbWorkspaceContext', (instance) => { + this.#workspaceContext = instance; + this.observeUserGroup(); + }); + } + + observeUserGroup() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.data, (userGroup) => (this._userGroup = userGroup as any)); + } + + private _observeUsers() { + if (!this._userStore) return; + + // TODO: Create method to only get users from this userGroup + // TODO: Find a better way to only call this once at the start + this.observe(this._userStore.getAll(), (users) => { + // TODO: handle if there is no users. + if (!this._userKeys && users.length > 0) { + const entityKey = this.#workspaceContext?.getEntityKey(); + if (!entityKey) return; + this._userKeys = users.filter((user) => user.userGroups.includes(entityKey)).map((user) => user.key); + //this._updateProperty('users', this._userKeys); + // TODO: make a method on the UmbWorkspaceUserGroupContext: + //this._workspaceContext.setUsers(); + } + }); + } + + private _updateUserKeys(userKeys: Array) { + this._userKeys = userKeys; + // TODO: make a method on the UmbWorkspaceUserGroupContext: + //this._workspaceContext.setUsers(); + } + + private _updatePermission(permission: { name: string; description: string; value: boolean }) { + if (!this.#workspaceContext) return; + + const checkValue = this._checkPermission(permission); + //const selectedPermissions = this._workspaceContext.getData().permissions; + // TODO: make a method on the UmbWorkspaceUserGroupContext: + //const selectedPermissions = this._workspaceContext.getPermissions(); + + /* + let newPermissions = []; + if (checkValue === false) { + newPermissions = [...selectedPermissions, permission.name]; + } else { + newPermissions = selectedPermissions.filter((p) => p !== permission.name); + } + */ + + //this._updateProperty('permissions', newPermissions); + // TODO: make a method on the UmbWorkspaceUserGroupContext: + //this._workspaceContext.setPermissions(); + } + + private _checkPermission(permission: { name: string; description: string; value: boolean }) { + if (!this.#workspaceContext) return false; + + //return this._workspaceContext.getPermissions().includes(permission.name); + return false; + } + + private _updateSections(value: string[]) { + console.log('To be done'); + //this._workspaceContext.setSections(value); + } + + private renderLeftColumn() { + if (!this._userGroup) return nothing; + + return html` +
    Assign access
    + + this._updateSections(e.target.value)}> + + + + + + + + + + + + + + + +
    + + +
    Default Permissions
    +
    + ${repeat( + this.defaultPermissions, + (defaultPermission) => html` +
    + ${defaultPermission.name} + ${repeat( + defaultPermission.permissions, + (permission) => html` +
    + this._updatePermission(permission)}> +
    + ${permission.name} + ${permission.description} +
    +
    + ` + )} +
    + ` + )} +
    +
    + + +
    Granular permissions
    +
    `; + } + + private renderRightColumn() { + return html` +
    Users
    + this._updateUserKeys((e.target as any).value)} + .value=${this._userKeys || []}> +
    `; + } + + // TODO: find a way where we don't have to do this for all Workspaces. + private _handleInput(event: UUIInputEvent) { + if (event instanceof UUIInputEvent) { + const target = event.composedPath()[0] as UUIInputElement; + + if (typeof target?.value === 'string') { + this.#workspaceContext?.setName(target.value); + } + } + } + + render() { + if (!this._userGroup) return nothing; + + return html` + + +
    +
    ${this.renderLeftColumn()}
    +
    ${this.renderRightColumn()}
    +
    +
    + `; + } +} + +export default UmbUserGroupWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-user-group-workspace-edit': UmbUserGroupWorkspaceEditElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.context.ts index bdf1d7f7ac..93ca1089b1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.context.ts @@ -1,14 +1,14 @@ import { UmbEntityWorkspaceManager } from '../../../shared/components/workspace/workspace-context/entity-manager-controller'; import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; -import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UMB_USER_GROUP_STORE_CONTEXT_TOKEN } from '../repository/user-group.store'; import { UmbUserGroupRepository } from '../repository/user-group.repository'; import type { UserGroupDetails } from '@umbraco-cms/models'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -export class UmbWorkspaceUserGroupContext +export class UmbUserGroupWorkspaceContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { #manager = new UmbEntityWorkspaceManager( this.host, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.element.ts index 733034d8a4..6e17186afe 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.element.ts @@ -1,223 +1,27 @@ -import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { css, html, nothing } from 'lit'; +import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { repeat } from 'lit/directives/repeat.js'; -import { UmbUserStore, UMB_USER_STORE_CONTEXT_TOKEN } from '../../users/repository/user.store'; -import { UmbWorkspaceEntityElement } from '../../../shared/components/workspace/workspace-entity-element.interface'; -import { UmbWorkspaceUserGroupContext } from './user-group-workspace.context'; +import { UmbUserGroupWorkspaceContext } from './user-group-workspace.context'; +import { UmbUserGroupWorkspaceEditElement } from './user-group-workspace-edit.element'; import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; -import type { ManifestWorkspaceAction, UserGroupDetails } from '@umbraco-cms/models'; +import type { ManifestWorkspaceAction } from '@umbraco-cms/models'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; - -import '../../../shared/components/input-user/input-user.element'; -import '../../../shared/components/input-section/input-section.element'; import { UmbLitElement } from '@umbraco-cms/element'; +import { IRoutingInfo } from '@umbraco-cms/router'; @customElement('umb-user-group-workspace') -export class UmbUserGroupWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { - static styles = [ - UUITextStyles, - css` - :host { - display: block; - height: 100%; - } +export class UmbUserGroupWorkspaceElement extends UmbLitElement { + static styles = [UUITextStyles]; - #main { - display: grid; - grid-template-columns: 1fr 350px; - gap: var(--uui-size-space-6); - padding: var(--uui-size-space-6); - } - #left-column { - display: flex; - flex-direction: column; - gap: var(--uui-size-space-4); - } - #right-column > uui-box > div { - display: flex; - flex-direction: column; - gap: var(--uui-size-space-2); - } - hr { - border: none; - border-bottom: 1px solid var(--uui-color-divider); - width: 100%; - } - uui-input { - width: 100%; - } - .faded-text { - color: var(--uui-color-text-alt); - font-size: 0.8rem; - } - #default-permissions { - display: flex; - flex-direction: column; - gap: var(--uui-size-space-4); - } - .default-permission { - display: flex; - align-items: center; - gap: var(--uui-size-space-4); - padding: var(--uui-size-space-2); - } - .default-permission:not(:last-child) { - border-bottom: 1px solid var(--uui-color-divider); - } - .permission-info { - display: flex; - flex-direction: column; - } - `, - ]; - - defaultPermissions: Array<{ - name: string; - permissions: Array<{ name: string; description: string; value: boolean }>; - }> = [ - { - name: 'Administration', - permissions: [ - { - name: 'Culture and Hostnames', - description: 'Allow access to assign culture and hostnames', - value: false, - }, - { - name: 'Restrict Public Access', - description: 'Allow access to set and change access restrictions for a node', - value: false, - }, - { - name: 'Rollback', - description: 'Allow access to roll back a node to a previous state', - value: false, - }, - ], - }, - { - name: 'Content', - permissions: [ - { - name: 'Browse Node', - description: 'Allow access to view a node', - value: false, - }, - { - name: 'Create Content Template', - description: 'Allow access to create a Content Template', - value: false, - }, - { - name: 'Delete', - description: 'Allow access to delete nodes', - value: false, - }, - { - name: 'Create', - description: 'Allow access to create nodes', - value: false, - }, - { - name: 'Publish', - description: 'Allow access to publish nodes', - value: false, - }, - { - name: 'Permissions', - description: 'Allow access to change permissions for a node', - value: false, - }, - { - name: 'Send To Publish', - description: 'Allow access to send a node for approval before publishing', - value: false, - }, - { - name: 'Unpublish', - description: 'Allow access to unpublish a node', - value: false, - }, - { - name: 'Update', - description: 'Allow access to save a node', - value: false, - }, - { - name: 'Full restore', - description: 'Allow the user to restore items', - value: false, - }, - { - name: 'Partial restore', - description: 'Allow the user to partial restore items', - value: false, - }, - { - name: 'Queue for transfer', - description: 'Allow the user to queue item(s)', - value: false, - }, - ], - }, - { - name: 'Structure', - permissions: [ - { - name: 'Copy', - description: 'Allow access to copy a node', - value: false, - }, - { - name: 'Move', - description: 'Allow access to move a node', - value: false, - }, - { - name: 'Sort', - description: 'Allow access to change the sort order for nodes', - value: false, - }, - ], - }, - ]; - - private _userStore?: UmbUserStore; - - private _workspaceContext: UmbWorkspaceUserGroupContext = new UmbWorkspaceUserGroupContext(this); - - @state() - private _userGroup?: UserGroupDetails; - - @state() - private _userKeys?: Array; + #workspaceContext = new UmbUserGroupWorkspaceContext(this); + #element = new UmbUserGroupWorkspaceEditElement(); constructor() { super(); - this._registerWorkspaceActions(); - - this.consumeContext(UMB_USER_STORE_CONTEXT_TOKEN, (instance) => { - this._userStore = instance; - this._observeUsers(); - }); - - this.observe(this._workspaceContext.data, (userGroup) => { - // TODO: Fix type mismatch - this._userGroup = userGroup as any; - }); - } - - public load(entityKey: string) { - this._workspaceContext.load(entityKey); - } - - public create(parentKey: string | null) { - this._workspaceContext.create(parentKey); } + // TODO: move this to a manifest file private _registerWorkspaceActions() { const manifests: Array = [ { @@ -225,12 +29,14 @@ export class UmbUserGroupWorkspaceElement extends UmbLitElement implements UmbWo alias: 'Umb.WorkspaceAction.UserGroup.Save', name: 'Save User Group Workspace Action', meta: { - workspaces: ['Umb.Workspace.UserGroup'], label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.UserGroup'], + }, }, ]; @@ -240,159 +46,20 @@ export class UmbUserGroupWorkspaceElement extends UmbLitElement implements UmbWo }); } - private _observeUsers() { - if (!this._userStore) return; - - // TODO: Create method to only get users from this userGroup - // TODO: Find a better way to only call this once at the start - this.observe(this._userStore.getAll(), (users) => { - // TODO: handle if there is no users. - if (!this._userKeys && users.length > 0) { - const entityKey = this._workspaceContext.getEntityKey(); - this._userKeys = users.filter((user) => user.userGroups.includes(entityKey)).map((user) => user.key); - //this._updateProperty('users', this._userKeys); - // TODO: make a method on the UmbWorkspaceUserGroupContext: - //this._workspaceContext.setUsers(); - } - }); - } - - private _updateUserKeys(userKeys: Array) { - this._userKeys = userKeys; - // TODO: make a method on the UmbWorkspaceUserGroupContext: - //this._workspaceContext.setUsers(); - } - - private _updatePermission(permission: { name: string; description: string; value: boolean }) { - if (!this._workspaceContext) return; - - const checkValue = this._checkPermission(permission); - //const selectedPermissions = this._workspaceContext.getData().permissions; - // TODO: make a method on the UmbWorkspaceUserGroupContext: - //const selectedPermissions = this._workspaceContext.getPermissions(); - - /* - let newPermissions = []; - if (checkValue === false) { - newPermissions = [...selectedPermissions, permission.name]; - } else { - newPermissions = selectedPermissions.filter((p) => p !== permission.name); - } - */ - - //this._updateProperty('permissions', newPermissions); - // TODO: make a method on the UmbWorkspaceUserGroupContext: - //this._workspaceContext.setPermissions(); - } - - private _checkPermission(permission: { name: string; description: string; value: boolean }) { - if (!this._workspaceContext) return false; - - //return this._workspaceContext.getPermissions().includes(permission.name); - return false; - } - - private _updateSections(value: string[]) { - console.log('To be done'); - //this._workspaceContext.setSections(value); - } - - private renderLeftColumn() { - if (!this._userGroup) return nothing; - - return html` -
    Assign access
    - - this._updateSections(e.target.value)}> - - - - - - - - - - - - - - - -
    - - -
    Default Permissions
    -
    - ${repeat( - this.defaultPermissions, - (defaultPermission) => html` -
    - ${defaultPermission.name} - ${repeat( - defaultPermission.permissions, - (permission) => html` -
    - this._updatePermission(permission)}> -
    - ${permission.name} - ${permission.description} -
    -
    - ` - )} -
    - ` - )} -
    -
    - - -
    Granular permissions
    -
    `; - } - - private renderRightColumn() { - return html` -
    Users
    - this._updateUserKeys((e.target as any).value)} - .value=${this._userKeys || []}> -
    `; - } - - // TODO: find a way where we don't have to do this for all Workspaces. - private _handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this._workspaceContext.setName(target.value); - } - } - } + @state() + _routes: any[] = [ + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, + ]; render() { - if (!this._userGroup) return nothing; - - return html` - - -
    -
    ${this.renderLeftColumn()}
    -
    ${this.renderRightColumn()}
    -
    -
    - `; + return html` `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/manifests.ts index 227eb3bb15..c1ab8f5cd4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/manifests.ts @@ -19,26 +19,30 @@ const sectionsViews: Array = [ alias: 'Umb.SectionView.Users.Users', name: 'Users Section View', loader: () => import('./views/users/section-view-users.element'), + weight: 200, meta: { - sections: [sectionAlias], label: 'Users', pathname: 'users', - weight: 200, icon: 'umb:user', }, + conditions: { + sections: [sectionAlias], + }, }, { type: 'sectionView', alias: 'Umb.SectionView.Users.UserGroups', name: 'User Groups Section View', loader: () => import('./views/user-groups/section-view-user-groups.element'), + weight: 100, meta: { - sections: [sectionAlias], label: 'User Groups', pathname: 'user-groups', - weight: 100, icon: 'umb:users', }, + conditions: { + sections: [sectionAlias], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/user-group-table-name-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/user-group-table-name-column-layout.element.ts index 5bab9476c1..4a1f79127f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/user-group-table-name-column-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/user-group-table-name-column-layout.element.ts @@ -1,6 +1,6 @@ import { html, LitElement } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { UmbTableItem } from 'src/backoffice/shared/components/table'; +import { UmbTableItem } from '../../../../shared/components/table'; @customElement('umb-user-group-table-name-column-layout') export class UmbUserGroupTableNameColumnLayoutElement extends LitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/user-group-table-sections-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/user-group-table-sections-column-layout.element.ts index d63199aba5..e966a125ee 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/user-group-table-sections-column-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/user-group-table-sections-column-layout.element.ts @@ -1,7 +1,7 @@ import { html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; +import { UmbTableItem } from '../../../../shared/components/table'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { UmbTableItem } from 'src/backoffice/shared/components/table'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-user-group-table-sections-column-layout') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/workspace-view-user-groups.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/workspace-view-user-groups.element.ts index 9c2e101940..4e2940ab73 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/workspace-view-user-groups.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/workspace-view-user-groups.element.ts @@ -1,6 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; + import { UmbTableColumn, UmbTableConfig, @@ -9,15 +10,16 @@ import { UmbTableItem, UmbTableOrderedEvent, UmbTableSelectedEvent, -} from 'src/backoffice/shared/components/table'; +} from '../../../../shared/components/table'; +import { + UmbUserGroupStore, + UMB_USER_GROUP_STORE_CONTEXT_TOKEN, +} from '../../../user-groups/repository/user-group.store'; + import type { UserGroupDetails } from '@umbraco-cms/models'; import './user-group-table-name-column-layout.element'; import './user-group-table-sections-column-layout.element'; -import { - UmbUserGroupStore, - UMB_USER_GROUP_STORE_CONTEXT_TOKEN, -} from 'src/backoffice/users/user-groups/repository/user-group.store'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-workspace-view-user-groups') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/workspace-view-users-table.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/workspace-view-users-table.element.ts index eb997c2d60..341bae823e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/workspace-view-users-table.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/workspace-view-users-table.element.ts @@ -11,14 +11,14 @@ import { UmbTableConfig, UmbTableOrderedEvent, } from '../../../../../../shared/components/table/table.element'; +import { + UmbUserGroupStore, + UMB_USER_GROUP_STORE_CONTEXT_TOKEN, +} from '../../../../../user-groups/repository/user-group.store'; import type { UserDetails, UserGroupEntity } from '@umbraco-cms/models'; import './column-layouts/name/user-table-name-column-layout.element'; import './column-layouts/status/user-table-status-column-layout.element'; -import { - UmbUserGroupStore, - UMB_USER_GROUP_STORE_CONTEXT_TOKEN, -} from 'src/backoffice/users/user-groups/repository/user-group.store'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-workspace-view-users-table') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-selection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-selection.element.ts index 8a293d92da..1b2c0a24ab 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-selection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-selection.element.ts @@ -1,8 +1,8 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; +import { UmbUserStore, UMB_USER_STORE_CONTEXT_TOKEN } from '../../../../users/users/repository/user.store'; import { UmbSectionViewUsersElement } from './section-view-users.element'; -import { UmbUserStore, UMB_USER_STORE_CONTEXT_TOKEN } from 'src/backoffice/users/users/repository/user.store'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-workspace-view-users-selection') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/actions/workspace-action-user-save.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/actions/workspace-action-user-save.element.ts index 000e11c34d..a91e83a1fe 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/actions/workspace-action-user-save.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/actions/workspace-action-user-save.element.ts @@ -2,7 +2,7 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import type { UUIButtonState } from '@umbraco-ui/uui'; -import { UmbWorkspaceUserContext } from '../user-workspace.context'; +import { UmbUserWorkspaceContext } from '../user-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-workspace-action-user-save') @@ -12,13 +12,13 @@ export class UmbWorkspaceActionUserSaveElement extends UmbLitElement { @state() private _saveButtonState?: UUIButtonState; - private _workspaceContext?: UmbWorkspaceUserContext; + private _workspaceContext?: UmbUserWorkspaceContext; constructor() { super(); // TODO: Figure out how to get the magic string for the workspace context. - this.consumeContext('umbWorkspaceContext', (instance) => { + this.consumeContext('umbWorkspaceContext', (instance) => { this._workspaceContext = instance; }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/manifests.ts index eeb5c42f4b..2193225a7b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/manifests.ts @@ -18,12 +18,14 @@ const workspaceActions: Array = [ alias: 'Umb.WorkspaceAction.User.Save', name: 'Save User Workspace Action', meta: { - workspaces: ['Umb.Workspace.User'], label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.User'], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts new file mode 100644 index 0000000000..1a7a038763 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts @@ -0,0 +1,348 @@ +import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; +import { css, html, nothing, TemplateResult } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, state } from 'lit/decorators.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; +import { repeat } from 'lit/directives/repeat.js'; + +import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from '../../current-user/current-user.store'; +import { UMB_CHANGE_PASSWORD_MODAL_TOKEN } from '../../current-user/modals/change-password'; +import { UmbUserWorkspaceContext } from './user-workspace.context'; +import type { UmbModalContext } from '@umbraco-cms/modal'; +import { getLookAndColorFromUserStatus } from '@umbraco-cms/utils'; +import type { UserDetails } from '@umbraco-cms/models'; +import { UmbLitElement } from '@umbraco-cms/element'; + +import '../../../shared/components/input-user-group/input-user-group.element'; +import '../../../shared/property-editors/uis/document-picker/property-editor-ui-document-picker.element'; +import '../../../shared/components/workspace/workspace-layout/workspace-layout.element'; + +@customElement('umb-user-workspace-edit') +export class UmbUserWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + height: 100%; + } + + #main { + display: grid; + grid-template-columns: 1fr 350px; + gap: var(--uui-size-space-6); + padding: var(--uui-size-space-6); + } + + #left-column { + display: flex; + flex-direction: column; + gap: var(--uui-size-space-4); + } + #right-column > uui-box > div { + display: flex; + flex-direction: column; + gap: var(--uui-size-space-2); + } + uui-avatar { + font-size: var(--uui-size-16); + place-self: center; + } + hr { + border: none; + border-bottom: 1px solid var(--uui-color-divider); + width: 100%; + } + uui-input { + width: 100%; + } + .faded-text { + color: var(--uui-color-text-alt); + font-size: 0.8rem; + } + uui-tag { + width: fit-content; + } + #user-info { + display: flex; + gap: var(--uui-size-space-6); + } + #user-info > div { + display: flex; + flex-direction: column; + } + #assign-access { + display: flex; + flex-direction: column; + } + `, + ]; + + @state() + private _currentUser?: UserDetails; + + private _currentUserStore?: UmbCurrentUserStore; + private _modalContext?: UmbModalContext; + + private _languages = []; //TODO Add languages + + private _workspaceContext: UmbUserWorkspaceContext = new UmbUserWorkspaceContext(this); + + @state() + private _user?: UserDetails; + + @state() + private _userName = ''; + + constructor() { + super(); + + this.consumeContext(UMB_CURRENT_USER_STORE_CONTEXT_TOKEN, (store) => { + this._currentUserStore = store; + this._observeCurrentUser(); + }); + + this.observe(this._workspaceContext.data, (user) => { + // TODO: fix type mismatch: + this._user = user as any; + if (user && user.name !== this._userName) { + this._userName = user.name || ''; + } + }); + } + + private async _observeCurrentUser() { + if (!this._currentUserStore) return; + + // TODO: do not have static current user service, we need to make a ContextAPI for this. + this.observe(this._currentUserStore.currentUser, (currentUser) => { + this._currentUser = currentUser; + }); + } + + private _updateUserStatus() { + if (!this._user || !this._workspaceContext) return; + + const isDisabled = this._user.status === 'disabled'; + // TODO: make sure we use the workspace for this: + /* + isDisabled + ? this._workspaceContext.getStore()?.enableUsers([this._user.key]) + : this._workspaceContext.getStore()?.disableUsers([this._user.key]); + */ + } + + private _deleteUser() { + if (!this._user || !this._workspaceContext) return; + + // TODO: make sure we use the workspace for this: + //this._workspaceContext.getStore()?.deleteUsers([this._user.key]); + + history.pushState(null, '', 'section/users/view/users/overview'); + } + + // TODO. find a way where we don't have to do this for all workspaces. + private _handleInput(event: UUIInputEvent) { + if (event instanceof UUIInputEvent) { + const target = event.composedPath()[0] as UUIInputElement; + + if (typeof target?.value === 'string') { + this._updateProperty('name', target.value); + } + } + } + + private _updateProperty(propertyName: string, value: unknown) { + this._workspaceContext?.update({ [propertyName]: value }); + } + + private _renderContentStartNodes() { + if (!this._user) return; + + if (this._user.contentStartNodes.length < 1) + return html` + + + + `; + + //TODO Render the name of the content start node instead of it's key. + return repeat( + this._user.contentStartNodes, + (node) => node, + (node) => { + return html` + + + + `; + } + ); + } + + private _changePassword() { + this._modalContext?.open(UMB_CHANGE_PASSWORD_MODAL_TOKEN, { + requireOldPassword: this._currentUserStore?.isAdmin === false, + }); + } + + private _renderActionButtons() { + if (!this._user) return; + + const buttons: TemplateResult[] = []; + + if (this._currentUserStore?.isAdmin === false) return nothing; + + if (this._user?.status !== 'invited') + buttons.push( + html` + + ` + ); + + if (this._currentUser?.key !== this._user?.key) + buttons.push(html` `); + + buttons.push( + html` ` + ); + + return buttons; + } + + private _renderLeftColumn() { + if (!this._user) return nothing; + + return html` +
    Profile
    + + + + + + +
    + +
    Assign access
    +
    + + this._updateProperty('userGroups', e.target.value)}> + + + this._updateProperty('contentStartNodes', e.target.value)} + slot="editor"> + + + NEED MEDIA PICKER + +
    +
    + +
    + Based on the assigned groups and start nodes, the user has access to the following nodes +
    + + Content + ${this._renderContentStartNodes()} +
    + Media + + + +
    `; + } + + private _renderRightColumn() { + if (!this._user || !this._workspaceContext) return nothing; + + const statusLook = getLookAndColorFromUserStatus(this._user.status); + + return html` +
    + + +
    + ${this._renderActionButtons()} +
    + Status: + + ${this._user.status} + +
    + ${this._user?.status === 'invited' + ? html` + + + ` + : nothing} +
    + Last login: + ${this._user.lastLoginDate || `${this._user.name} has not logged in yet`} +
    +
    + Failed login attempts + ${this._user.failedLoginAttempts} +
    +
    + Last lockout date: + ${this._user.lastLockoutDate || `${this._user.name} has not been locked out`} +
    +
    + Password last changed: + ${this._user.lastLoginDate || `${this._user.name} has not changed password`} +
    +
    + User created: + ${this._user.createDate} +
    +
    + User last updated: + ${this._user.updateDate} +
    +
    + Key: + ${this._user.key} +
    +
    +
    `; + } + + render() { + if (!this._user) return html`User not found`; + + return html` + + +
    +
    ${this._renderLeftColumn()}
    +
    ${this._renderRightColumn()}
    +
    +
    + `; + } +} + +export default UmbUserWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-user-workspace-edit': UmbUserWorkspaceEditElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.context.ts index 71e99083fc..a872285078 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.context.ts @@ -1,14 +1,14 @@ import { UMB_USER_STORE_CONTEXT_TOKEN } from '../repository/user.store'; import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; -import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbEntityWorkspaceManager } from '../../../shared/components/workspace/workspace-context/entity-manager-controller'; import { UmbUserRepository } from '../repository/user.repository'; import type { UserDetails } from '@umbraco-cms/models'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -export class UmbWorkspaceUserContext +export class UmbUserWorkspaceContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { #manager = new UmbEntityWorkspaceManager( this.host, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts index 3ef980f51e..e300f73190 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts @@ -1,350 +1,36 @@ -import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; -import { css, html, nothing, TemplateResult } from 'lit'; +import { html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; -import { ifDefined } from 'lit/directives/if-defined.js'; -import { repeat } from 'lit/directives/repeat.js'; - -import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from '../../current-user/current-user.store'; -import type { UmbWorkspaceEntityElement } from '../../../shared/components/workspace/workspace-entity-element.interface'; -import { UMB_CHANGE_PASSWORD_MODAL_TOKEN } from '../../current-user/modals/change-password'; -import { UmbWorkspaceUserContext } from './user-workspace.context'; -import type { UmbModalContext } from '@umbraco-cms/modal'; -import { getLookAndColorFromUserStatus } from '@umbraco-cms/utils'; -import type { UserDetails } from '@umbraco-cms/models'; +import { UmbUserWorkspaceContext } from './user-workspace.context'; +import { UmbUserWorkspaceEditElement } from './user-workspace-edit.element'; +import { UmbLitElement } from '@umbraco-cms/element'; +import { IRoutingInfo } from '@umbraco-cms/router'; import '../../../shared/components/input-user-group/input-user-group.element'; import '../../../shared/property-editors/uis/document-picker/property-editor-ui-document-picker.element'; import '../../../shared/components/workspace/workspace-layout/workspace-layout.element'; -import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-user-workspace') -export class UmbUserWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { - static styles = [ - UUITextStyles, - css` - :host { - display: block; - height: 100%; - } +export class UmbUserWorkspaceElement extends UmbLitElement { + static styles = [UUITextStyles]; - #main { - display: grid; - grid-template-columns: 1fr 350px; - gap: var(--uui-size-space-6); - padding: var(--uui-size-space-6); - } + #workspaceContext = new UmbUserWorkspaceContext(this); + #element = new UmbUserWorkspaceEditElement(); - #left-column { - display: flex; - flex-direction: column; - gap: var(--uui-size-space-4); - } - #right-column > uui-box > div { - display: flex; - flex-direction: column; - gap: var(--uui-size-space-2); - } - uui-avatar { - font-size: var(--uui-size-16); - place-self: center; - } - hr { - border: none; - border-bottom: 1px solid var(--uui-color-divider); - width: 100%; - } - uui-input { - width: 100%; - } - .faded-text { - color: var(--uui-color-text-alt); - font-size: 0.8rem; - } - uui-tag { - width: fit-content; - } - #user-info { - display: flex; - gap: var(--uui-size-space-6); - } - #user-info > div { - display: flex; - flex-direction: column; - } - #assign-access { - display: flex; - flex-direction: column; - } - `, + @state() + _routes: any[] = [ + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, ]; - @state() - private _currentUser?: UserDetails; - - private _currentUserStore?: UmbCurrentUserStore; - private _modalContext?: UmbModalContext; - - private _languages = []; //TODO Add languages - - private _workspaceContext: UmbWorkspaceUserContext = new UmbWorkspaceUserContext(this); - - @state() - private _user?: UserDetails; - - @state() - private _userName = ''; - - constructor() { - super(); - - this.consumeContext(UMB_CURRENT_USER_STORE_CONTEXT_TOKEN, (store) => { - this._currentUserStore = store; - this._observeCurrentUser(); - }); - - this.observe(this._workspaceContext.data, (user) => { - // TODO: fix type mismatch: - this._user = user as any; - if (user && user.name !== this._userName) { - this._userName = user.name || ''; - } - }); - } - - public load(entityKey: string) { - this._workspaceContext.load(entityKey); - } - - public create(parentKey: string | null) { - this._workspaceContext.create(parentKey); - } - - private async _observeCurrentUser() { - if (!this._currentUserStore) return; - - // TODO: do not have static current user service, we need to make a ContextAPI for this. - this.observe(this._currentUserStore.currentUser, (currentUser) => { - this._currentUser = currentUser; - }); - } - - private _updateUserStatus() { - if (!this._user || !this._workspaceContext) return; - - const isDisabled = this._user.status === 'disabled'; - // TODO: make sure we use the workspace for this: - /* - isDisabled - ? this._workspaceContext.getStore()?.enableUsers([this._user.key]) - : this._workspaceContext.getStore()?.disableUsers([this._user.key]); - */ - } - - private _deleteUser() { - if (!this._user || !this._workspaceContext) return; - - // TODO: make sure we use the workspace for this: - //this._workspaceContext.getStore()?.deleteUsers([this._user.key]); - - history.pushState(null, '', 'section/users/view/users/overview'); - } - - // TODO. find a way where we don't have to do this for all workspaces. - private _handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this._updateProperty('name', target.value); - } - } - } - - private _updateProperty(propertyName: string, value: unknown) { - this._workspaceContext?.update({ [propertyName]: value }); - } - - private _renderContentStartNodes() { - if (!this._user) return; - - if (this._user.contentStartNodes.length < 1) - return html` - - - - `; - - //TODO Render the name of the content start node instead of it's key. - return repeat( - this._user.contentStartNodes, - (node) => node, - (node) => { - return html` - - - - `; - } - ); - } - - private _changePassword() { - this._modalContext?.open(UMB_CHANGE_PASSWORD_MODAL_TOKEN, { - requireOldPassword: this._currentUserStore?.isAdmin === false, - }); - } - - private _renderActionButtons() { - if (!this._user) return; - - const buttons: TemplateResult[] = []; - - if (this._currentUserStore?.isAdmin === false) return nothing; - - if (this._user?.status !== 'invited') - buttons.push( - html` - - ` - ); - - if (this._currentUser?.key !== this._user?.key) - buttons.push(html` `); - - buttons.push( - html` ` - ); - - return buttons; - } - - private _renderLeftColumn() { - if (!this._user) return nothing; - - return html` -
    Profile
    - - - - - - -
    - -
    Assign access
    -
    - - this._updateProperty('userGroups', e.target.value)}> - - - this._updateProperty('contentStartNodes', e.target.value)} - slot="editor"> - - - NEED MEDIA PICKER - -
    -
    - -
    - Based on the assigned groups and start nodes, the user has access to the following nodes -
    - - Content - ${this._renderContentStartNodes()} -
    - Media - - - -
    `; - } - - private _renderRightColumn() { - if (!this._user || !this._workspaceContext) return nothing; - - const statusLook = getLookAndColorFromUserStatus(this._user.status); - - return html` -
    - - -
    - ${this._renderActionButtons()} -
    - Status: - - ${this._user.status} - -
    - ${this._user?.status === 'invited' - ? html` - - - ` - : nothing} -
    - Last login: - ${this._user.lastLoginDate || `${this._user.name} has not logged in yet`} -
    -
    - Failed login attempts - ${this._user.failedLoginAttempts} -
    -
    - Last lockout date: - ${this._user.lastLockoutDate || `${this._user.name} has not been locked out`} -
    -
    - Password last changed: - ${this._user.lastLoginDate || `${this._user.name} has not changed password`} -
    -
    - User created: - ${this._user.createDate} -
    -
    - User last updated: - ${this._user.updateDate} -
    -
    - Key: - ${this._user.key} -
    -
    -
    `; - } - render() { - if (!this._user) return html`User not found`; - - return html` - - -
    -
    ${this._renderLeftColumn()}
    -
    ${this._renderRightColumn()}
    -
    -
    - `; + return html` `; } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/culture.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/culture.data.ts index 87d0f3904d..8d8bbc82b6 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/culture.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/culture.data.ts @@ -1,12 +1,12 @@ -import type { CultureModel, PagedCultureModel } from '@umbraco-cms/backend-api'; +import type { CultureReponseModel, PagedCultureReponseModel } from '@umbraco-cms/backend-api'; class UmbCulturesData { - get(): PagedCultureModel { + get(): PagedCultureReponseModel { return { total: culturesMock.length, items: culturesMock }; } } -export const culturesMock: Array = [ +export const culturesMock: Array = [ { name: 'af', englishName: 'Afrikaans', diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts index fd0b0b01c0..f3d7a0071c 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts @@ -1,9 +1,9 @@ import { UmbEntityData } from './entity.data'; import { createFolderTreeItem } from './utils'; -import type { FolderTreeItemModel, DataTypeModel } from '@umbraco-cms/backend-api'; +import type { FolderTreeItemResponseModel, DataTypeResponseModel } from '@umbraco-cms/backend-api'; // TODO: investigate why we don't get an entity type as part of the DataTypeModel -export const data: Array = [ +export const data: Array = [ { $type: 'data-type', type: 'data-type', @@ -12,7 +12,7 @@ export const data: Array = [ name: 'Textstring', propertyEditorAlias: 'Umbraco.TextBox', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TextBox', - data: [], + values: [], }, { $type: 'data-type', @@ -22,7 +22,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.TextBox', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TextBox', - data: [ + values: [ { alias: 'maxChars', value: 10, @@ -37,7 +37,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.TextArea', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TextArea', - data: [], + values: [], }, { $type: 'data-type', @@ -47,7 +47,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.JSON', propertyEditorUiAlias: 'My.PropertyEditorUI.Custom', - data: [], + values: [], }, { $type: 'data-type', @@ -57,7 +57,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.ColorPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.ColorPicker', - data: [ + values: [ { alias: 'useLabel', value: true, @@ -113,7 +113,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.ContentPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.DocumentPicker', - data: [ + values: [ { alias: 'validationLimit', value: { min: 2, max: 4 }, @@ -128,7 +128,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.ColorPicker.EyeDropper', propertyEditorUiAlias: 'Umb.PropertyEditorUI.EyeDropper', - data: [ + values: [ { //showPalette alias: 'palette', @@ -165,7 +165,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.MultiUrlPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MultiUrlPicker', - data: [ + values: [ { alias: 'overlaySize', value: 'small', @@ -196,7 +196,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.MultiNodeTreePicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TreePicker', - data: [], + values: [], }, { $type: 'data-type', @@ -206,7 +206,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.DateTime', propertyEditorUiAlias: 'Umb.PropertyEditorUI.DatePicker', - data: [ + values: [ { alias: 'format', value: 'YYYY-MM-DD', @@ -225,7 +225,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.DateTime', propertyEditorUiAlias: 'Umb.PropertyEditorUI.DatePicker', - data: [ + values: [ { alias: 'format', value: 'YYYY-MM-DD HH:mm:ss', @@ -244,7 +244,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.DateTime', propertyEditorUiAlias: 'Umb.PropertyEditorUI.DatePicker', - data: [ + values: [ { alias: 'format', value: 'HH:mm:ss', @@ -263,7 +263,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.EmailAddress', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Email', - data: [], + values: [], }, { $type: 'data-type', @@ -273,7 +273,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.MultipleTextString', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MultipleTextString', - data: [ + values: [ { alias: 'minNumber', value: 2, @@ -292,7 +292,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.DropDown.Flexible', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Dropdown', - data: [], + values: [], }, { $type: 'data-type', @@ -302,7 +302,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.Slider', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Slider', - data: [ + values: [ { alias: 'enableRange', value: true, @@ -337,7 +337,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.TrueFalse', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Toggle', - data: [ + values: [ { alias: 'default', value: false, @@ -364,7 +364,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.Tags', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Tags', - data: [], + values: [], }, { $type: 'data-type', @@ -374,7 +374,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.MarkdownEditor', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MarkdownEditor', - data: [], + values: [], }, { $type: 'data-type', @@ -384,7 +384,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.RadioButtonList', propertyEditorUiAlias: 'Umb.PropertyEditorUI.RadioButtonList', - data: [ + values: [ { alias: 'items', value: { @@ -403,7 +403,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.CheckboxList', propertyEditorUiAlias: 'Umb.PropertyEditorUI.CheckboxList', - data: [ + values: [ { alias: 'items', value: { @@ -422,7 +422,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.BlockList', propertyEditorUiAlias: 'Umb.PropertyEditorUI.BlockList', - data: [], + values: [], }, { $type: 'data-type', @@ -432,7 +432,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.MediaPicker3', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MediaPicker', - data: [], + values: [], }, { $type: 'data-type', @@ -442,7 +442,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.ImageCropper', propertyEditorUiAlias: 'Umb.PropertyEditorUI.ImageCropper', - data: [], + values: [], }, { $type: 'data-type', @@ -452,7 +452,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.UploadField', propertyEditorUiAlias: 'Umb.PropertyEditorUI.UploadField', - data: [], + values: [], }, { $type: 'data-type', @@ -462,7 +462,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.BlockGrid', propertyEditorUiAlias: 'Umb.PropertyEditorUI.BlockGrid', - data: [], + values: [], }, { $type: 'data-type', @@ -472,7 +472,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.ListView', propertyEditorUiAlias: 'Umb.PropertyEditorUI.CollectionView', - data: [], + values: [], }, { $type: 'data-type', @@ -482,7 +482,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.IconPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.IconPicker', - data: [], + values: [], }, { $type: 'data-type', @@ -492,7 +492,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.JSON', propertyEditorUiAlias: 'Umb.PropertyEditorUI.NumberRange', - data: [], + values: [], }, { $type: 'data-type', @@ -502,7 +502,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.JSON', propertyEditorUiAlias: 'Umb.PropertyEditorUI.OrderDirection', - data: [], + values: [], }, { $type: 'data-type', @@ -512,7 +512,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.JSON', propertyEditorUiAlias: 'Umb.PropertyEditorUI.OverlaySize', - data: [], + values: [], }, { $type: 'data-type', @@ -522,7 +522,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.TinyMCE', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TinyMCE', - data: [], + values: [], }, { $type: 'data-type', @@ -532,7 +532,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.Label', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Label', - data: [], + values: [], }, { $type: 'data-type', @@ -542,7 +542,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.Integer', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Integer', - data: [], + values: [], }, { $type: 'data-type', @@ -552,7 +552,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.Decimal', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Decimal', - data: [], + values: [], }, { $type: 'data-type', @@ -562,7 +562,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.UserPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.UserPicker', - data: [], + values: [], }, { $type: 'data-type', @@ -572,7 +572,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.MemberPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MemberPicker', - data: [], + values: [], }, { $type: 'data-type', @@ -582,7 +582,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.MemberGroupPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MemberGroupPicker', - data: [], + values: [], }, ]; @@ -590,22 +590,22 @@ export const data: Array = [ // TODO: all properties are optional in the server schema. I don't think this is correct. // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore -class UmbDataTypeData extends UmbEntityData { +class UmbDataTypeData extends UmbEntityData { constructor() { super(data); } - getTreeRoot(): Array { + getTreeRoot(): Array { const rootItems = this.data.filter((item) => item.parentKey === null); return rootItems.map((item) => createFolderTreeItem(item)); } - getTreeItemChildren(key: string): Array { + getTreeItemChildren(key: string): Array { const childItems = this.data.filter((item) => item.parentKey === key); return childItems.map((item) => createFolderTreeItem(item)); } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.data.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createFolderTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts index b73bc7e0a5..761220c11d 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts @@ -1,6 +1,6 @@ import { UmbEntityData } from './entity.data'; import { createEntityTreeItem } from './utils'; -import type { EntityTreeItemModel } from '@umbraco-cms/backend-api'; +import type { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { DictionaryDetails } from '@umbraco-cms/models'; export const data: Array = [ @@ -55,17 +55,17 @@ class UmbDictionaryData extends UmbEntityData { super(data); } - getTreeRoot(): Array { + getTreeRoot(): Array { const rootItems = this.data.filter((item) => item.parentKey === null); return rootItems.map((item) => createEntityTreeItem(item)); } - getTreeItemChildren(key: string): Array { + getTreeItemChildren(key: string): Array { const childItems = this.data.filter((item) => item.parentKey === key); return childItems.map((item) => createEntityTreeItem(item)); } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.data.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createEntityTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts index 2b25677dfc..c366f64703 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts @@ -1,12 +1,12 @@ import { UmbEntityData } from './entity.data'; import { createDocumentTypeTreeItem } from './utils'; import { - DocumentTypeTreeItemModel, - DocumentTypeModel, + DocumentTypeTreeItemResponseModel, + DocumentTypeResponseModel, ContentTypeCompositionTypeModel, } from '@umbraco-cms/backend-api'; -export const data: Array = [ +export const data: Array = [ { allowedTemplateKeys: [], defaultTemplateKey: null, @@ -889,9 +889,131 @@ export const data: Array = [ keepLatestVersionPerDayForDays: null, }, }, + { + allowedTemplateKeys: [], + defaultTemplateKey: null, + key: 'simple-document-type-key', + alias: 'simpleDocumentType', + name: 'Simple Document Type', + description: null, + icon: 'umb:document', + allowedAsRoot: true, + variesByCulture: false, + variesBySegment: false, + isElement: false, + properties: [ + { + key: '1680d4d2-cda8-4ac2-affd-a69fc10382b1', + containerKey: '341b8521-fd43-4333-ae7a-a10cbbc6f4b0', + alias: 'prop1', + name: 'Prop 1', + description: null, + dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + variesByCulture: false, + variesBySegment: false, + validation: { + mandatory: false, + mandatoryMessage: null, + regEx: null, + regExMessage: null, + }, + appearance: { + labelOnTop: false, + }, + }, + ], + containers: [ + { + key: '341b8521-fd43-4333-ae7a-a10cbbc6f4b0', + parentKey: null, + name: 'Content', + type: 'Group', + sortOrder: 0, + }, + ], + allowedContentTypes: [ + { key: 'simple-document-type-key', sortOrder: 0 }, + { key: 'simple-document-type-2-key', sortOrder: 0 }, + ], + compositions: [], + cleanup: { + preventCleanup: false, + keepAllVersionsNewerThanDays: null, + keepLatestVersionPerDayForDays: null, + }, + }, + { + allowedTemplateKeys: [], + defaultTemplateKey: null, + key: 'simple-document-type-2-key', + alias: 'simpleDocumentType2', + name: 'Simple Document Type 2', + description: null, + icon: 'umb:document', + allowedAsRoot: true, + variesByCulture: false, + variesBySegment: false, + isElement: false, + properties: [ + { + key: '82d4b050-b128-42fe-ac8e-d5586e533592', + containerKey: 'b275052a-1868-4901-bc8c-2b35b78a9ab2', + alias: 'prop1', + name: 'Prop 1', + description: null, + dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + variesByCulture: false, + variesBySegment: false, + validation: { + mandatory: false, + mandatoryMessage: null, + regEx: null, + regExMessage: null, + }, + appearance: { + labelOnTop: false, + }, + }, + { + key: 'beadc69a-d669-4d01-9919-98bafba31e57', + containerKey: 'b275052a-1868-4901-bc8c-2b35b78a9ab2', + alias: 'prop2', + name: 'Prop 2', + description: null, + dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + variesByCulture: false, + variesBySegment: false, + validation: { + mandatory: false, + mandatoryMessage: null, + regEx: null, + regExMessage: null, + }, + appearance: { + labelOnTop: false, + }, + }, + ], + containers: [ + { + key: 'b275052a-1868-4901-bc8c-2b35b78a9ab2', + parentKey: null, + name: 'Content', + type: 'Group', + sortOrder: 0, + }, + ], + allowedContentTypes: [{ key: 'simple-document-type-key', sortOrder: 0 }], + compositions: [], + cleanup: { + preventCleanup: false, + keepAllVersionsNewerThanDays: null, + keepLatestVersionPerDayForDays: null, + }, + }, ]; -export const treeData: Array = [ +export const treeData: Array = [ { $type: 'DocumentTypeTreeItemViewModel', name: 'All property editors document type', @@ -922,33 +1044,60 @@ export const treeData: Array = [ parentKey: null, icon: '', }, + { + $type: 'DocumentTypeTreeItemViewModel', + name: 'Simple Document Type', + type: 'document-type', + hasChildren: false, + key: 'simple-document-type-key', + isContainer: false, + parentKey: null, + icon: 'umb:document', + }, + { + $type: 'DocumentTypeTreeItemViewModel', + name: 'Simple Document Type 2', + type: 'document-type', + hasChildren: false, + key: 'simple-document-type-2-key', + isContainer: false, + parentKey: null, + icon: 'umb:document', + }, ]; // Temp mocked database // TODO: all properties are optional in the server schema. I don't think this is correct. // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore -class UmbDocumentTypeData extends UmbEntityData { +class UmbDocumentTypeData extends UmbEntityData { private treeData = treeData; constructor() { super(data); } - getTreeRoot(): Array { + getTreeRoot(): Array { const rootItems = this.treeData.filter((item) => item.parentKey === null); return rootItems.map((item) => createDocumentTypeTreeItem(item)); } - getTreeItemChildren(key: string): Array { + getTreeItemChildren(key: string): Array { const childItems = this.treeData.filter((item) => item.parentKey === key); return childItems.map((item) => createDocumentTypeTreeItem(item)); } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.treeData.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createDocumentTypeTreeItem(item)); } + + getAllowedTypesOf(key: string): Array { + const documentType = this.getByKey(key); + const allowedTypeKeys = documentType?.allowedContentTypes?.map((documentType) => documentType.key) ?? []; + const items = this.treeData.filter((item) => allowedTypeKeys.includes(item.key ?? '')); + return items.map((item) => createDocumentTypeTreeItem(item)); + } } export const umbDocumentTypeData = new UmbDocumentTypeData(); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts index 8f5b4bfd10..f239f430f7 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts @@ -2,12 +2,12 @@ import { UmbEntityData } from './entity.data'; import { createDocumentTreeItem } from './utils'; import { ContentStateModel, - DocumentModel, - DocumentTreeItemModel, - PagedDocumentTreeItemModel, + DocumentResponseModel, + DocumentTreeItemResponseModel, + PagedDocumentTreeItemResponseModel, } from '@umbraco-cms/backend-api'; -export const data: Array = [ +export const data: Array = [ { urls: [ { @@ -20,204 +20,238 @@ export const data: Array = [ contentTypeKey: 'all-property-editors-document-type-key', values: [ { + $type: '', alias: 'email', culture: null, segment: null, value: null, }, { + $type: '', alias: 'colorPicker', culture: null, segment: null, value: null, }, { + $type: '', alias: 'contentPicker', culture: null, segment: null, value: null, }, { + $type: '', alias: 'eyeDropper', culture: null, segment: null, value: null, }, { + $type: '', alias: 'multiUrlPicker', culture: null, segment: null, value: null, }, { + $type: '', alias: 'multiNodeTreePicker', culture: null, segment: null, value: null, }, { + $type: '', alias: 'datePicker', culture: null, segment: null, value: '2023-12-24', }, { + $type: '', alias: 'datePickerTime', culture: null, segment: null, value: '2023-12-24 14:52', }, { + $type: '', alias: 'time', culture: null, segment: null, value: '14:52:00', }, { + $type: '', alias: 'email', culture: null, segment: null, value: null, }, { + $type: '', alias: 'textBox', culture: null, segment: null, value: null, }, { + $type: '', alias: 'dropdown', culture: null, segment: null, value: null, }, { + $type: '', alias: 'textArea', culture: null, segment: null, value: null, }, { + $type: '', alias: 'slider', culture: null, segment: null, value: null, }, { + $type: '', alias: 'toggle', culture: null, segment: null, value: null, }, { + $type: '', alias: 'tags', culture: null, segment: null, value: null, }, { + $type: '', alias: 'markdownEditor', culture: null, segment: null, value: null, }, { + $type: '', alias: 'radioButtonList', culture: null, segment: null, value: null, }, { + $type: '', alias: 'checkboxList', culture: null, segment: null, value: null, }, { + $type: '', alias: 'blockList', culture: null, segment: null, value: null, }, { + $type: '', alias: 'mediaPicker', culture: null, segment: null, value: null, }, { + $type: '', alias: 'imageCropper', culture: null, segment: null, value: null, }, { + $type: '', alias: 'uploadField', culture: null, segment: null, value: null, }, { + $type: '', alias: 'blockGrid', culture: null, segment: null, value: null, }, { + $type: '', alias: 'blockGrid', culture: null, segment: null, value: null, }, { + $type: '', alias: 'numberRange', culture: null, segment: null, value: null, }, { + $type: '', alias: 'orderDirection', culture: null, segment: null, value: null, }, { + $type: '', alias: 'overlaySize', culture: null, segment: null, value: null, }, { + $type: '', alias: 'label', culture: null, segment: null, value: null, }, { + $type: '', alias: 'integer', culture: null, segment: null, value: null, }, { + $type: '', alias: 'decimal', culture: null, segment: null, value: null, }, { + $type: '', alias: 'memberPicker', culture: null, segment: null, value: null, }, { + $type: '', alias: 'memberGroupPicker', culture: null, segment: null, value: null, }, { + $type: '', alias: 'userPicker', culture: null, segment: null, @@ -226,6 +260,7 @@ export const data: Array = [ ], variants: [ { + $type: '', state: ContentStateModel.PUBLISHED, publishDate: '2023-02-06T15:31:51.354764', culture: 'en-us', @@ -248,60 +283,70 @@ export const data: Array = [ contentTypeKey: '29643452-cff9-47f2-98cd-7de4b6807681', values: [ { + $type: '', culture: null, segment: null, alias: 'masterText', value: 'i have a master text', }, { + $type: '', culture: null, segment: null, alias: 'pageTitle', value: 'with a page title', }, { + $type: '', culture: null, segment: null, alias: 'blogPostText', value: 'My first blog post', }, { + $type: '', culture: 'en-us', segment: null, alias: 'blogTextStringUnderMasterTab', value: 'in the master tab', }, { + $type: '', culture: 'en-us', segment: null, alias: 'blogTextStringUnderGroupUnderMasterTab', value: 'which is under another group in the tab', }, { + $type: '', culture: 'da-dk', segment: null, alias: 'blogTextStringUnderMasterTab', value: 'på master dokument tab B', }, { + $type: '', culture: 'da-dk', segment: null, alias: 'blogTextStringUnderGroupUnderMasterTab', value: 'denne er under en anden gruppe i tab B', }, { + $type: '', culture: 'no-no', segment: null, alias: 'blogTextStringUnderMasterTab', value: 'Norsk på master dokument tab B', }, { + $type: '', culture: 'no-no', segment: null, alias: 'blogTextStringUnderGroupUnderMasterTab', value: 'Norsk denne er under en anden gruppe i tab B', }, { + $type: '', culture: null, segment: null, alias: 'localBlogTabString', @@ -310,6 +355,7 @@ export const data: Array = [ ], variants: [ { + $type: '', state: ContentStateModel.PUBLISHED, publishDate: '2023-02-06T15:31:51.354764', culture: 'en-us', @@ -319,6 +365,7 @@ export const data: Array = [ updateDate: '2023-02-06T15:31:51.354764', }, { + $type: '', state: ContentStateModel.PUBLISHED, publishDate: '2023-02-06T15:31:51.354764', culture: 'da-dk', @@ -328,6 +375,7 @@ export const data: Array = [ updateDate: '2023-02-06T15:31:51.354764', }, { + $type: '', state: ContentStateModel.PUBLISHED, publishDate: '2023-02-06T15:31:51.354764', culture: 'no-no', @@ -345,48 +393,56 @@ export const data: Array = [ contentTypeKey: '29643452-cff9-47f2-98cd-7de4b6807681', values: [ { + $type: '', culture: null, segment: null, alias: 'masterText', value: 'i have a master text B', }, { + $type: '', culture: null, segment: null, alias: 'pageTitle', value: 'with a page title B', }, { + $type: '', culture: null, segment: null, alias: 'blogPostText', value: 'My first blog post B', }, { + $type: '', culture: 'en-us', segment: null, alias: 'blogTextStringUnderMasterTab', value: 'in the master tab B', }, { + $type: '', culture: 'en-us', segment: null, alias: 'blogTextStringUnderGroupUnderMasterTab', value: 'which is under another group in the tab B', }, { + $type: '', culture: 'da-dk', segment: null, alias: 'blogTextStringUnderMasterTab', value: 'på master dokument tab B', }, { + $type: '', culture: 'da-dk', segment: null, alias: 'blogTextStringUnderGroupUnderMasterTab', value: 'denne er under en anden gruppe i tab B', }, { + $type: '', culture: null, segment: null, alias: 'localBlogTabString', @@ -395,6 +451,25 @@ export const data: Array = [ ], variants: [ { + $type: '', + state: ContentStateModel.DRAFT, + publishDate: '2023-02-06T15:32:24.957009', + culture: 'en-us', + segment: null, + name: 'Blog post B', + createDate: '2023-02-06T15:32:05.350038', + updateDate: '2023-02-06T15:32:24.957009', + }, + ], + }, + { + urls: [], + templateKey: null, + key: 'simple-document-key', + contentTypeKey: 'simple-document-type-key', + variants: [ + { + $type: '', state: ContentStateModel.DRAFT, publishDate: '2023-02-06T15:32:24.957009', culture: 'en-us', @@ -407,7 +482,7 @@ export const data: Array = [ }, ]; -export const treeData: Array = [ +export const treeData: Array = [ { $type: 'DocumentTreeItemViewModel', isProtected: false, @@ -468,34 +543,49 @@ export const treeData: Array = [ isEdited: false, isTrashed: false, }, + { + $type: 'DocumentTreeItemViewModel', + name: 'Simple', + type: 'document', + icon: 'document', + hasChildren: false, + key: 'simple-document-key', + isContainer: false, + parentKey: null, + noAccess: false, + isProtected: false, + isPublished: false, + isEdited: false, + isTrashed: false, + }, ]; // Temp mocked database // TODO: all properties are optional in the server schema. I don't think this is correct. // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore -class UmbDocumentData extends UmbEntityData { +class UmbDocumentData extends UmbEntityData { private treeData = treeData; constructor() { super(data); } - getTreeRoot(): PagedDocumentTreeItemModel { + getTreeRoot(): PagedDocumentTreeItemResponseModel { const items = this.treeData.filter((item) => item.parentKey === null); const treeItems = items.map((item) => createDocumentTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedDocumentTreeItemModel { + getTreeItemChildren(key: string): PagedDocumentTreeItemResponseModel { const items = this.treeData.filter((item) => item.parentKey === key); const treeItems = items.map((item) => createDocumentTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.treeData.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createDocumentTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/examine.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/examine.data.ts index ab0a0ed3e6..bc30b8eacb 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/examine.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/examine.data.ts @@ -1,4 +1,4 @@ -import { HealthStatusModel, IndexModel, PagedIndexModel, SearchResultModel } from '@umbraco-cms/backend-api'; +import { HealthStatusModel, IndexResponseModel, PagedIndexResponseModel, SearchResultResponseModel } from '@umbraco-cms/backend-api'; export function getIndexByName(indexName: string) { return Indexers.find((index) => { @@ -7,11 +7,11 @@ export function getIndexByName(indexName: string) { }); } -export function getSearchResultsMockData(): SearchResultModel[] { +export function getSearchResultsMockData(): SearchResultResponseModel[] { return searchResultMockData; } -export const Indexers: IndexModel[] = [ +export const Indexers: IndexResponseModel[] = [ { name: 'ExternalIndex', canRebuild: true, @@ -71,12 +71,12 @@ export const Indexers: IndexModel[] = [ }, ]; -export const PagedIndexers: PagedIndexModel = { +export const PagedIndexers: PagedIndexResponseModel = { items: Indexers, total: 0, }; -export const searchResultMockData: SearchResultModel[] = [ +export const searchResultMockData: SearchResultResponseModel[] = [ { id: '1', score: 1, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/health-check.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/health-check.data.ts index ae7bfdac46..b16477292d 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/health-check.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/health-check.data.ts @@ -1,6 +1,6 @@ import { - HealthCheckGroupModel, - HealthCheckGroupWithResultModel, + HealthCheckGroupPresentationModel, + HealthCheckGroupWithResultResponseModel, StatusResultTypeModel, } from '@umbraco-cms/backend-api'; @@ -12,7 +12,7 @@ export function getGroupWithResultsByName(name: string) { return healthGroups.find((group) => group.name.toLowerCase() === name.toLowerCase()); } -export const healthGroups: Array = [ +export const healthGroups: Array = [ { name: 'Configuration', checks: [ @@ -211,7 +211,7 @@ export const healthGroups: Array { - constructor(data: LanguageModel[]) { +class UmbLanguagesData extends UmbData { + constructor(data: LanguageResponseModel[]) { super(data); } // skip can be number or null - getAll(skip = 0, take = this.data.length): Array { + getAll(skip = 0, take = this.data.length): Array { return this.data.slice(skip, take); } @@ -16,7 +16,7 @@ class UmbLanguagesData extends UmbData { return this.data.find((item) => item.isoCode === key); } - insert(language: LanguageModel) { + insert(language: LanguageResponseModel) { const foundIndex = this.data.findIndex((item) => item.isoCode === language.isoCode); if (foundIndex !== -1) { @@ -26,7 +26,7 @@ class UmbLanguagesData extends UmbData { this.data.push(language); } - save(saveItems: Array) { + save(saveItems: Array) { saveItems.forEach((saveItem) => { const foundIndex = this.data.findIndex((item) => item.isoCode === saveItem.isoCode); if (foundIndex !== -1) { @@ -60,7 +60,7 @@ class UmbLanguagesData extends UmbData { return keys; } - updateData(updateItem: LanguageModel) { + updateData(updateItem: LanguageResponseModel) { const itemIndex = this.data.findIndex((item) => item.isoCode === updateItem.isoCode); const item = this.data[itemIndex]; if (!item) return; @@ -91,7 +91,7 @@ class UmbLanguagesData extends UmbData { } } -export const MockData: Array = [ +export const MockData: Array = [ { name: 'English', isoCode: 'en', diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/log-viewer.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/log-viewer.data.ts index b74e755fa9..bf3ddfc0b7 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/log-viewer.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/log-viewer.data.ts @@ -1,15 +1,15 @@ import { logs } from './logs.data'; import { UmbData } from './data'; -import { LogMessageModel, LogTemplateModel, SavedLogSearchModel } from '@umbraco-cms/backend-api'; +import { LogMessageResponseModel, LogTemplateResponseModel, SavedLogSearchResponseModel } from '@umbraco-cms/backend-api'; // Temp mocked database -class UmbLogviewerSearchesData extends UmbData { - constructor(data: SavedLogSearchModel[]) { +class UmbLogviewerSearchesData extends UmbData { + constructor(data: SavedLogSearchResponseModel[]) { super(data); } // skip can be number or null - getSavedSearches(skip = 0, take = this.data.length): Array { + getSavedSearches(skip = 0, take = this.data.length): Array { return this.data.slice(skip, take); } @@ -18,24 +18,24 @@ class UmbLogviewerSearchesData extends UmbData { } } -class UmbLogviewerTemplatesData extends UmbData { - constructor(data: LogTemplateModel[]) { +class UmbLogviewerTemplatesData extends UmbData { + constructor(data: LogTemplateResponseModel[]) { super(data); } // skip can be number or null - getTemplates(skip = 0, take = this.data.length): Array { + getTemplates(skip = 0, take = this.data.length): Array { return this.data.slice(skip, take); } } -class UmbLogviewerMessagesData extends UmbData { - constructor(data: LogTemplateModel[]) { +class UmbLogviewerMessagesData extends UmbData { + constructor(data: LogTemplateResponseModel[]) { super(data); } // skip can be number or null - getLogs(skip = 0, take = this.data.length): Array { + getLogs(skip = 0, take = this.data.length): Array { return this.data.slice(skip, take); } @@ -51,7 +51,7 @@ class UmbLogviewerMessagesData extends UmbData { } } -export const savedSearches: Array = [ +export const savedSearches: Array = [ { name: 'Find all logs where the Level is NOT Verbose and NOT Debug', query: "Not(@Level='Verbose') and Not(@Level='Debug')", @@ -98,7 +98,7 @@ export const savedSearches: Array = [ }, ]; -export const messageTemplates: LogTemplateModel[] = [ +export const messageTemplates: LogTemplateResponseModel[] = [ { messageTemplate: 'Create Foreign Key:\n {Sql}', count: 90, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/logs.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/logs.data.ts index 974ec00f50..67c0f25616 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/logs.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/logs.data.ts @@ -1,4 +1,4 @@ -import { LogLevelModel, LogMessageModel } from '@umbraco-cms/backend-api'; +import { LogLevelModel, LogMessageResponseModel } from '@umbraco-cms/backend-api'; const allLogs = [ { @@ -7309,7 +7309,7 @@ const randomEnumValue = (enumeration: any): LogLevelModel => { return enumeration[enumKey]; }; -export const logs: LogMessageModel[] = allLogs.map((log) => { +export const logs: LogMessageResponseModel[] = allLogs.map((log) => { const randomLevel = randomEnumValue(LogLevelModel); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts index e5189fbd01..ea23722ab6 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts @@ -1,6 +1,6 @@ import { UmbEntityData } from './entity.data'; import { createFolderTreeItem } from './utils'; -import { FolderTreeItemModel, PagedFolderTreeItemModel } from '@umbraco-cms/backend-api'; +import { FolderTreeItemResponseModel, PagedFolderTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { MediaTypeDetails } from '@umbraco-cms/models'; export const data: Array = [ @@ -41,21 +41,21 @@ class UmbMediaTypeData extends UmbEntityData { super(data); } - getTreeRoot(): PagedFolderTreeItemModel { + getTreeRoot(): PagedFolderTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === null); const treeItems = items.map((item) => createFolderTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedFolderTreeItemModel { + getTreeItemChildren(key: string): PagedFolderTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === key); const treeItems = items.map((item) => createFolderTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.data.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createFolderTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts index e77e6d2691..a4136bab24 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts @@ -1,6 +1,6 @@ import { UmbEntityData } from './entity.data'; import { createContentTreeItem } from './utils'; -import { ContentTreeItemModel, PagedContentTreeItemModel } from '@umbraco-cms/backend-api'; +import { ContentTreeItemResponseModel, PagedContentTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { MediaDetails } from '@umbraco-cms/models'; export const data: Array = [ @@ -207,21 +207,21 @@ class UmbMediaData extends UmbEntityData { super(data); } - getTreeRoot(): PagedContentTreeItemModel { + getTreeRoot(): PagedContentTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === null); const treeItems = items.map((item) => createContentTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedContentTreeItemModel { + getTreeItemChildren(key: string): PagedContentTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === key); const treeItems = items.map((item) => createContentTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.data.filter((item) => keys.includes(item.key)); return items.map((item) => createContentTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts index 5e88700348..d1240b9c4c 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts @@ -1,7 +1,7 @@ import { UmbEntityData } from './entity.data'; import { createEntityTreeItem } from './utils'; import type { MemberGroupDetails } from '@umbraco-cms/models'; -import { EntityTreeItemModel, PagedEntityTreeItemModel } from '@umbraco-cms/backend-api'; +import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; export const data: Array = [ { @@ -25,21 +25,21 @@ class UmbMemberGroupData extends UmbEntityData { super(data); } - getTreeRoot(): PagedEntityTreeItemModel { + getTreeRoot(): PagedEntityTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === null); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedEntityTreeItemModel { + getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === key); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.data.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createEntityTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts index 5220847f6b..71631866af 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts @@ -1,6 +1,6 @@ import { UmbData } from './data'; import { createEntityTreeItem } from './utils'; -import { EntityTreeItemModel, PagedEntityTreeItemModel } from '@umbraco-cms/backend-api'; +import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { MemberTypeDetails } from '@umbraco-cms/models'; export const data: Array = [ @@ -24,21 +24,21 @@ class UmbMemberTypeData extends UmbData { super(data); } - getTreeRoot(): PagedEntityTreeItemModel { + getTreeRoot(): PagedEntityTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === null); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedEntityTreeItemModel { + getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === key); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.data.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createEntityTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts index 2a77411e27..bf617e82c9 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts @@ -1,7 +1,7 @@ import { UmbEntityData } from './entity.data'; import { createEntityTreeItem } from './utils'; import type { MemberDetails } from '@umbraco-cms/models'; -import type { EntityTreeItemModel, PagedEntityTreeItemModel } from '@umbraco-cms/backend-api'; +import type { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; export const data: Array = [ { @@ -25,21 +25,21 @@ class UmbMemberData extends UmbEntityData { super(data); } - getTreeRoot(): PagedEntityTreeItemModel { + getTreeRoot(): PagedEntityTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === null); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedEntityTreeItemModel { + getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === key); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.data.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createEntityTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts index e7ad3d0c8c..bcb69b3ccc 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts @@ -2,16 +2,16 @@ import { v4 as uuid } from 'uuid'; import { UmbEntityData } from './entity.data'; import { createEntityTreeItem } from './utils'; import { - EntityTreeItemModel, - PagedEntityTreeItemModel, - TemplateModel, - TemplateCreateModel, - TemplateScaffoldModel, + EntityTreeItemResponseModel, + PagedEntityTreeItemResponseModel, + TemplateResponseModel, + TemplateModelBaseModel, + TemplateScaffoldResponseModel, } from '@umbraco-cms/backend-api'; -type TemplateDBItem = TemplateModel & EntityTreeItemModel; +type TemplateDBItem = TemplateResponseModel & EntityTreeItemResponseModel; -const createTemplate = (dbItem: TemplateDBItem): TemplateModel => { +const createTemplate = (dbItem: TemplateDBItem): TemplateResponseModel => { return { $type: '', key: dbItem.key, @@ -76,18 +76,18 @@ class UmbTemplateData extends UmbEntityData { super(data); } - getByKey(key: string): TemplateModel | undefined { + getByKey(key: string): TemplateResponseModel | undefined { const item = this.data.find((item) => item.key === key); return item ? createTemplate(item) : undefined; } - getScaffold(masterTemplateAlias: string): TemplateScaffoldModel { + getScaffold(masterTemplateAlias: string): TemplateScaffoldResponseModel { return { content: `Template Scaffold Mock: Layout = ${masterTemplateAlias || null};`, }; } - create(templateData: TemplateCreateModel) { + create(templateData: TemplateModelBaseModel) { const template = { $type: '', key: uuid(), @@ -97,26 +97,26 @@ class UmbTemplateData extends UmbEntityData { return template; } - update(template: TemplateModel) { + update(template: TemplateResponseModel) { this.updateData(template); return template; } - getTreeRoot(): PagedEntityTreeItemModel { + getTreeRoot(): PagedEntityTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === null); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedEntityTreeItemModel { + getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === key); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.data.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createEntityTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts index 2b470d3ebc..81dd7be9b9 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts @@ -1,14 +1,14 @@ import type { - ContentTreeItemModel, - DocumentTreeItemModel, - DocumentTypeTreeItemModel, - EntityTreeItemModel, - FolderTreeItemModel, - DocumentTypeModel, - DocumentModel, + ContentTreeItemResponseModel, + DocumentTreeItemResponseModel, + DocumentTypeTreeItemResponseModel, + EntityTreeItemResponseModel, + FolderTreeItemResponseModel, + DocumentTypeResponseModel, + DocumentResponseModel, } from '@umbraco-cms/backend-api'; -export const createEntityTreeItem = (item: any): EntityTreeItemModel => { +export const createEntityTreeItem = (item: any): EntityTreeItemResponseModel => { return { $type: '', name: item.name, @@ -21,7 +21,7 @@ export const createEntityTreeItem = (item: any): EntityTreeItemModel => { }; }; -export const createFolderTreeItem = (item: any): FolderTreeItemModel => { +export const createFolderTreeItem = (item: any): FolderTreeItemResponseModel => { return { ...createEntityTreeItem(item), isFolder: item.isFolder, @@ -29,7 +29,7 @@ export const createFolderTreeItem = (item: any): FolderTreeItemModel => { }; // TODO: remove isTrashed type extension when we have found a solution to trashed items -export const createContentTreeItem = (item: any): ContentTreeItemModel & { isTrashed: boolean } => { +export const createContentTreeItem = (item: any): ContentTreeItemResponseModel & { isTrashed: boolean } => { return { ...createEntityTreeItem(item), noAccess: item.noAccess, @@ -38,7 +38,7 @@ export const createContentTreeItem = (item: any): ContentTreeItemModel & { isTra }; // TODO: remove isTrashed type extension when we have found a solution to trashed items -export const createDocumentTreeItem = (item: DocumentModel): DocumentTreeItemModel & { isTrashed: boolean } => { +export const createDocumentTreeItem = (item: DocumentResponseModel): DocumentTreeItemResponseModel & { isTrashed: boolean } => { return { ...createContentTreeItem(item), /* @@ -51,7 +51,7 @@ export const createDocumentTreeItem = (item: DocumentModel): DocumentTreeItemMod }; }; -export const createDocumentTypeTreeItem = (item: DocumentTypeModel): DocumentTypeTreeItemModel => { +export const createDocumentTypeTreeItem = (item: DocumentTypeResponseModel): DocumentTypeTreeItemResponseModel => { return { ...createFolderTreeItem(item), isElement: item.isElement, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts index cba8bd2327..ba47b8ec0b 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts @@ -1,9 +1,9 @@ import { rest } from 'msw'; import { umbDictionaryData } from '../data/dictionary.data'; -import { DictionaryImportModel, DictionaryOverviewModel } from '@umbraco-cms/backend-api'; +import { ImportDictionaryRequestModel, DictionaryOverviewResponseModel } from '@umbraco-cms/backend-api'; import type { DictionaryDetails } from '@umbraco-cms/models'; -const uploadResponse: DictionaryImportModel = { +const uploadResponse: ImportDictionaryRequestModel = { fileName: 'c:/path/to/tempfilename.udt', parentKey: 'b7e7d0ab-53ba-485d-dddd-12537f9925aa', }; @@ -31,7 +31,7 @@ const importResponse: DictionaryDetails = { }; // alternate data for dashboard view -const overviewData: Array = [ +const overviewData: Array = [ { name: 'Hello', key: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts index bc06e3b5b8..02fd203f22 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts @@ -1,10 +1,10 @@ import { rest } from 'msw'; import { umbDocumentTypeData } from '../data/document-type.data'; -import type { DocumentTypeModel } from '@umbraco-cms/backend-api'; +import type { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; // TODO: add schema export const handlers = [ - rest.post('/umbraco/management/api/v1/document-type/:key', (req, res, ctx) => { + rest.post('/umbraco/management/api/v1/document-type/:key', (req, res, ctx) => { const data = req.body; if (!data) return; @@ -22,7 +22,7 @@ export const handlers = [ return res(ctx.status(200), ctx.json([document])); }), - rest.post('/umbraco/management/api/v1/document-type/details/save', (req, res, ctx) => { + rest.post('/umbraco/management/api/v1/document-type/details/save', (req, res, ctx) => { const data = req.body; if (!data) return; @@ -67,8 +67,17 @@ export const handlers = [ const key = req.params.key as string; if (!key) return; - const document = umbDocumentTypeData.getByKey(key); + const documentType = umbDocumentTypeData.getByKey(key); - return res(ctx.status(200), ctx.json(document)); + return res(ctx.status(200), ctx.json(documentType)); + }), + + rest.get('/umbraco/management/api/v1/document-type/allowed-children-of/:key', (req, res, ctx) => { + const key = req.params.key as string; + if (!key) return; + + const items = umbDocumentTypeData.getAllowedTypesOf(key); + + return res(ctx.status(200), ctx.json(items)); }), ]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts index 560b50131e..440bfce534 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts @@ -1,6 +1,6 @@ import { rest } from 'msw'; import { umbDocumentData } from '../data/document.data'; -import type { DocumentModel } from '@umbraco-cms/backend-api'; +import type { DocumentResponseModel } from '@umbraco-cms/backend-api'; import { umbracoPath } from '@umbraco-cms/utils'; // TODO: add schema @@ -35,7 +35,7 @@ export const handlers = [ return res(ctx.status(200), ctx.json(items)); }), - rest.post('/umbraco/management/api/v1/document/:key', async (req, res, ctx) => { + rest.post('/umbraco/management/api/v1/document/:key', async (req, res, ctx) => { const data = await req.json(); if (!data) return; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/examine-management.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/examine-management.handlers.ts index e0e704fa4a..55ffafd837 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/examine-management.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/examine-management.handlers.ts @@ -2,14 +2,14 @@ import { rest } from 'msw'; import { searchResultMockData, getIndexByName, PagedIndexers } from '../data/examine.data'; import { umbracoPath } from '@umbraco-cms/utils'; -import { IndexModel, PagedIndexModel, PagedSearcherModel, PagedSearchResultModel } from '@umbraco-cms/backend-api'; +import { IndexResponseModel, PagedIndexResponseModel, PagedSearcherResponseModel, PagedSearchResultResponseModel } from '@umbraco-cms/backend-api'; export const handlers = [ rest.get(umbracoPath('/indexer'), (_req, res, ctx) => { return res( // Respond with a 200 status code ctx.status(200), - ctx.json(PagedIndexers) + ctx.json(PagedIndexers) ); }), @@ -20,7 +20,7 @@ export const handlers = [ const indexFound = getIndexByName(indexName); if (indexFound) { - return res(ctx.status(200), ctx.json(indexFound)); + return res(ctx.status(200), ctx.json(indexFound)); } else { return res(ctx.status(404)); } @@ -43,7 +43,7 @@ export const handlers = [ rest.get(umbracoPath('/searcher'), (_req, res, ctx) => { return res( ctx.status(200), - ctx.json({ + ctx.json({ total: 0, items: [{ name: 'ExternalSearcher' }, { name: 'InternalSearcher' }, { name: 'InternalMemberSearcher' }], }) @@ -61,7 +61,7 @@ export const handlers = [ if (searcherName) { return res( ctx.status(200), - ctx.json({ + ctx.json({ total: 0, items: searchResultMockData, }) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/health-check.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/health-check.handlers.ts index 7756158382..ac0378f76a 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/health-check.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/health-check.handlers.ts @@ -8,11 +8,11 @@ import { } from '../data/health-check.data'; import { - HealthCheckActionModel, - HealthCheckGroupModel, - HealthCheckGroupWithResultModel, - HealthCheckResultModel, - PagedHealthCheckGroupModelBaseModel, + HealthCheckActionRequestModel, + HealthCheckGroupResponseModel, + HealthCheckGroupWithResultResponseModel, + HealthCheckResultResponseModel, + PagedHealthCheckGroupResponseModel, StatusResultTypeModel, } from '@umbraco-cms/backend-api'; import { umbracoPath } from '@umbraco-cms/utils'; @@ -22,7 +22,7 @@ export const handlers = [ return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ total: 9999, items: healthGroupsWithoutResult }) + ctx.json({ total: 9999, items: healthGroupsWithoutResult }) ); }), @@ -33,7 +33,7 @@ export const handlers = [ const group = getGroupByName(name); if (group) { - return res(ctx.status(200), ctx.json(group)); + return res(ctx.status(200), ctx.json(group)); } else { return res(ctx.status(404)); } @@ -46,14 +46,14 @@ export const handlers = [ const group = getGroupWithResultsByName(name); if (group) { - return res(ctx.status(200), ctx.json(group)); + return res(ctx.status(200), ctx.json(group)); } else { return res(ctx.status(404)); } }), - rest.post(umbracoPath('/health-check/execute-action'), async (req, res, ctx) => { - const body = await req.json(); + rest.post(umbracoPath('/health-check/execute-action'), async (req, res, ctx) => { + const body = await req.json(); const healthCheckKey = body.healthCheckKey; // Find the health check based on the healthCheckKey from the healthGroups[].checks const healthCheck = healthGroups.flatMap((group) => group.checks).find((check) => check?.key === healthCheckKey); @@ -74,7 +74,7 @@ export const handlers = [ // Respond with a 200 status code ctx.delay(1000), ctx.status(200), - ctx.json(result) + ctx.json(result) ); }), ]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/install.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/install.handlers.ts index 3bd73fa492..3f73a4bbb5 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/install.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/install.handlers.ts @@ -1,8 +1,8 @@ import { rest } from 'msw'; import { - DatabaseInstallModel, - InstallModel, - InstallSettingsModel, + DatabaseInstallResponseModel, + InstallVResponseModel, + InstallSettingsResponseModel, ProblemDetailsModel, TelemetryLevelModel, } from '@umbraco-cms/backend-api'; @@ -13,7 +13,7 @@ export const handlers = [ return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ user: { minCharLength: 2, minNonAlphaNumericLength: 0, @@ -79,7 +79,7 @@ export const handlers = [ }), rest.post(umbracoPath('/install/validate-database'), async (req, res, ctx) => { - const body = await req.json(); + const body = await req.json(); if (body.name === 'validate') { return res( @@ -99,7 +99,7 @@ export const handlers = [ }), rest.post(umbracoPath('/install/setup'), async (req, res, ctx) => { - const body = await req.json(); + const body = await req.json(); if (body.database?.name === 'fail') { return res( diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/language.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/language.handlers.ts index 153894b174..e9614b68c7 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/language.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/language.handlers.ts @@ -1,6 +1,6 @@ import { rest } from 'msw'; import { umbLanguagesData } from '../data/languages.data'; -import { LanguageModel, ProblemDetailsModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel, ProblemDetailsModel } from '@umbraco-cms/backend-api'; import { umbracoPath } from '@umbraco-cms/utils'; // TODO: add schema @@ -30,7 +30,7 @@ export const handlers = [ return res(ctx.status(200), ctx.json(item)); }), - rest.post(umbracoPath('/language'), async (req, res, ctx) => { + rest.post(umbracoPath('/language'), async (req, res, ctx) => { const data = await req.json(); if (!data) return; @@ -53,7 +53,7 @@ export const handlers = [ } }), - rest.put(umbracoPath('/language/:key'), async (req, res, ctx) => { + rest.put(umbracoPath('/language/:key'), async (req, res, ctx) => { const data = await req.json(); if (!data) return; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/log-viewer.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/log-viewer.handlers.ts index 70eabc1d7c..7d22630d9d 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/log-viewer.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/log-viewer.handlers.ts @@ -1,7 +1,7 @@ import { rest } from 'msw'; import { umbLogviewerData } from '../data/log-viewer.data'; import { umbracoPath } from '@umbraco-cms/utils'; -import { SavedLogSearchModel } from '@umbraco-cms/backend-api'; +import { SavedLogSearchRequestModel } from '@umbraco-cms/backend-api'; export const handlers = [ //#region Searches @@ -30,7 +30,7 @@ export const handlers = [ return res(ctx.delay(), ctx.status(200), ctx.json(item)); }), - rest.post(umbracoPath('/log-viewer/saved-search'), async (req, res, ctx) => { + rest.post(umbracoPath('/log-viewer/saved-search'), async (req, res, ctx) => { return res(ctx.delay(), ctx.status(200)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/modelsbuilder.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/modelsbuilder.handlers.ts index ce5c859bff..113e6195a5 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/modelsbuilder.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/modelsbuilder.handlers.ts @@ -1,7 +1,7 @@ import { rest } from 'msw'; import { umbracoPath } from '@umbraco-cms/utils'; -import { ModelsBuilderModel, ModelsModeModel, OutOfDateStatusModel } from '@umbraco-cms/backend-api'; +import { ModelsBuilderResponseModel, ModelsModeModel, OutOfDateStatusResponseModel } from '@umbraco-cms/backend-api'; export const handlers = [ rest.post(umbracoPath('/models-builder/build'), async (_req, res, ctx) => { @@ -15,20 +15,20 @@ export const handlers = [ }), rest.get(umbracoPath('/models-builder/dashboard'), async (_req, res, ctx) => { - return res(ctx.status(200), ctx.json(model)); + return res(ctx.status(200), ctx.json(model)); }), rest.get(umbracoPath('/models-builder/status'), async (_req, res, ctx) => { return res( // Respond with a 200 status code ctx.status(200), - ctx.json({}) + ctx.json({}) ); }), ]; // Mock Data for now -const modelBeforeBuild: ModelsBuilderModel = { +const modelBeforeBuild: ModelsBuilderResponseModel = { mode: ModelsModeModel.IN_MEMORY_AUTO, canGenerate: true, outOfDateModels: true, @@ -49,7 +49,7 @@ at async TransformContext.transform (file:///C:/Users/Umbraco/Documents/Umbraco. trackingOutOfDateModels: true, }; -const modelAfterBuild: ModelsBuilderModel = { +const modelAfterBuild: ModelsBuilderResponseModel = { mode: ModelsModeModel.IN_MEMORY_AUTO, canGenerate: true, outOfDateModels: false, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts index c056cc616a..b56a347048 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts @@ -3,10 +3,10 @@ import { v4 as uuidv4 } from 'uuid'; import { umbracoPath } from '@umbraco-cms/utils'; import { - PackageCreateModel, - PackageDefinitionModel, - PagedPackageDefinitionModel, - PagedPackageMigrationStatusModel, + PackageMigrationStatusResponseModel, + PackageDefinitionResponseModel, + PagedPackageDefinitionResponseModel, + PagedPackageMigrationStatusResponseModel, } from '@umbraco-cms/backend-api'; export const handlers = [ @@ -14,7 +14,7 @@ export const handlers = [ return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ total: 3, items: [ { @@ -44,7 +44,7 @@ export const handlers = [ // read all return res( ctx.status(200), - ctx.json({ + ctx.json({ total: packageArray.length, items: packageArray, }) @@ -53,10 +53,10 @@ export const handlers = [ rest.post(umbracoPath('/package/created'), async (_req, res, ctx) => { //save - const data: PackageCreateModel = await _req.json(); - const newPackage: PackageDefinitionModel = { ...data, key: uuidv4() }; + const data: PackageMigrationStatusResponseModel = await _req.json(); + const newPackage: PackageDefinitionResponseModel = { ...data, key: uuidv4() }; packageArray.push(newPackage); - return res(ctx.status(200), ctx.json(newPackage)); + return res(ctx.status(200), ctx.json(newPackage)); }), rest.get(umbracoPath('/package/created/:key'), (_req, res, ctx) => { @@ -65,12 +65,12 @@ export const handlers = [ if (!key) return res(ctx.status(404)); const found = packageArray.find((p) => p.key == key); if (!found) return res(ctx.status(404)); - return res(ctx.status(200), ctx.json(found)); + return res(ctx.status(200), ctx.json(found)); }), rest.put(umbracoPath('/package/created/:key'), async (_req, res, ctx) => { //update - const data: PackageDefinitionModel = await _req.json(); + const data: PackageDefinitionResponseModel = await _req.json(); if (!data.key) return; const index = packageArray.findIndex((x) => x.key === data.key); packageArray[index] = data; @@ -93,7 +93,7 @@ export const handlers = [ }), ]; -const packageArray: PackageDefinitionModel[] = [ +const packageArray: PackageDefinitionResponseModel[] = [ { key: '2a0181ec-244b-4068-a1d7-2f95ed7e6da6', packagePath: undefined, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/performance-profiling.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/performance-profiling.handlers.ts index 074a7c6edb..2ed61aadf4 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/performance-profiling.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/performance-profiling.handlers.ts @@ -1,14 +1,14 @@ import { rest } from 'msw'; import { umbracoPath } from '@umbraco-cms/utils'; -import type { ProfilingStatusModel } from '@umbraco-cms/backend-api'; +import type { ProfilingStatusResponseModel } from '@umbraco-cms/backend-api'; export const handlers = [ rest.get(umbracoPath('/profiling/status'), (_req, res, ctx) => { return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ enabled: true }) + ctx.json({ enabled: true }) ); }), ]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/redirect-management.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/redirect-management.handlers.ts index dc72903041..49b8cd7c4a 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/redirect-management.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/redirect-management.handlers.ts @@ -1,10 +1,10 @@ import { rest } from 'msw'; import { umbracoPath } from '@umbraco-cms/utils'; import { - PagedRedirectUrlModel, - RedirectUrlModel, + PagedRedirectUrlResponseModel, + RedirectUrlResponseModel, RedirectStatusModel, - RedirectUrlStatusModel, + RedirectUrlStatusResponseModel, } from '@umbraco-cms/backend-api'; export const handlers = [ @@ -14,35 +14,35 @@ export const handlers = [ const take = parseInt(_req.url.searchParams.get('take') ?? '20', 10); if (filter) { - const filtered: RedirectUrlModel[] = []; + const filtered: RedirectUrlResponseModel[] = []; PagedRedirectUrlData.items.forEach((item) => { if (item.originalUrl?.includes(filter)) filtered.push(item); }); - const filteredPagedData: PagedRedirectUrlModel = { + const filteredPagedData: PagedRedirectUrlResponseModel = { total: filtered.length, items: filtered.slice(skip, skip + take), }; - return res(ctx.status(200), ctx.json(filteredPagedData)); + return res(ctx.status(200), ctx.json(filteredPagedData)); } else { const items = PagedRedirectUrlData.items.slice(skip, skip + take); - const PagedData: PagedRedirectUrlModel = { + const PagedData: PagedRedirectUrlResponseModel = { total: PagedRedirectUrlData.total, items, }; - return res(ctx.status(200), ctx.json(PagedData)); + return res(ctx.status(200), ctx.json(PagedData)); } }), rest.get(umbracoPath('/redirect-management/:key'), async (_req, res, ctx) => { const key = _req.params.key as string; if (!key) return res(ctx.status(404)); - if (key === 'status') return res(ctx.status(200), ctx.json(UrlTracker)); + if (key === 'status') return res(ctx.status(200), ctx.json(UrlTracker)); const PagedRedirectUrlObject = _getRedirectUrlByKey(key); - return res(ctx.status(200), ctx.json(PagedRedirectUrlObject)); + return res(ctx.status(200), ctx.json(PagedRedirectUrlObject)); }), rest.delete(umbracoPath('/redirect-management/:key'), async (_req, res, ctx) => { @@ -67,10 +67,10 @@ export const handlers = [ // Mock Data -const UrlTracker: RedirectUrlStatusModel = { status: RedirectStatusModel.ENABLED, userIsAdmin: true }; +const UrlTracker: RedirectUrlStatusResponseModel = { status: RedirectStatusModel.ENABLED, userIsAdmin: true }; const _getRedirectUrlByKey = (key: string) => { - const PagedResult: PagedRedirectUrlModel = { + const PagedResult: PagedRedirectUrlResponseModel = { total: 0, items: [], }; @@ -86,14 +86,14 @@ const _getRedirectUrlByKey = (key: string) => { const _deleteRedirectUrlByKey = (key: string) => { const index = RedirectUrlData.findIndex((data) => data.key === key); if (index > -1) RedirectUrlData.splice(index, 1); - const PagedResult: PagedRedirectUrlModel = { + const PagedResult: PagedRedirectUrlResponseModel = { items: RedirectUrlData, total: RedirectUrlData.length, }; return PagedResult; }; -const RedirectUrlData: RedirectUrlModel[] = [ +const RedirectUrlData: RedirectUrlResponseModel[] = [ { key: '1', created: '2022-12-05T13:59:43.6827244', @@ -173,7 +173,7 @@ const RedirectUrlData: RedirectUrlModel[] = [ }, ]; -const PagedRedirectUrlData: PagedRedirectUrlModel = { +const PagedRedirectUrlData: PagedRedirectUrlResponseModel = { total: RedirectUrlData.length, items: RedirectUrlData, }; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/server.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/server.handlers.ts index 97a80dc6b1..0493ebf2d3 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/server.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/server.handlers.ts @@ -1,12 +1,12 @@ import { rest } from 'msw'; -import { RuntimeLevelModel, ServerStatusModel, VersionModel } from '@umbraco-cms/backend-api'; +import { RuntimeLevelModel, ServerStatusResponseModel, VersionResponseModel } from '@umbraco-cms/backend-api'; import { umbracoPath } from '@umbraco-cms/utils'; export const serverRunningHandler = rest.get(umbracoPath('/server/status'), (_req, res, ctx) => { return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ serverStatus: RuntimeLevelModel.RUN, }) ); @@ -16,7 +16,7 @@ export const serverMustInstallHandler = rest.get(umbracoPath('/server/status'), return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ serverStatus: RuntimeLevelModel.INSTALL, }) ); @@ -26,7 +26,7 @@ export const serverMustUpgradeHandler = rest.get(umbracoPath('/server/status'), return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ serverStatus: RuntimeLevelModel.UPGRADE, }) ); @@ -36,7 +36,7 @@ export const serverVersionHandler = rest.get(umbracoPath('/server/version'), (_r return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ version: '13.0.0', }) ); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/telemetry.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/telemetry.handlers.ts index b8651b539e..978a5e9c10 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/telemetry.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/telemetry.handlers.ts @@ -1,7 +1,7 @@ import { rest } from 'msw'; import { umbracoPath } from '@umbraco-cms/utils'; -import { PagedTelemetryModel, TelemetryModel, TelemetryLevelModel } from '@umbraco-cms/backend-api'; +import { PagedTelemetryResponseModel, TelemetryResponseModel, TelemetryLevelModel } from '@umbraco-cms/backend-api'; let telemetryLevel = TelemetryLevelModel.BASIC; @@ -10,7 +10,7 @@ export const handlers = [ return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ telemetryLevel, }) ); @@ -20,7 +20,7 @@ export const handlers = [ return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ total: 3, items: [ { telemetryLevel: TelemetryLevelModel.MINIMAL }, @@ -31,8 +31,8 @@ export const handlers = [ ); }), - rest.post(umbracoPath('/telemetry/level'), async (_req, res, ctx) => { - const newLevel = (await _req.json()).telemetryLevel; + rest.post(umbracoPath('/telemetry/level'), async (_req, res, ctx) => { + const newLevel = (await _req.json()).telemetryLevel; if (newLevel) { telemetryLevel = newLevel; return res( diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts index 6b159c625e..38bb5d16cb 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts @@ -1,7 +1,7 @@ import { rest } from 'msw'; import { umbTemplateData } from '../data/template.data'; import { umbracoPath } from '@umbraco-cms/utils'; -import { TemplateCreateModel, TemplateUpdateModel } from '@umbraco-cms/backend-api'; +import { TemplateModelBaseModel } from '@umbraco-cms/backend-api'; // TODO: add schema export const handlers = [ @@ -42,7 +42,7 @@ export const handlers = [ return res(ctx.status(200), ctx.json(response)); }), - rest.put(umbracoPath('/template/:key'), async (req, res, ctx) => { + rest.put(umbracoPath('/template/:key'), async (req, res, ctx) => { const key = req.params.key as string; const data = await req.json(); if (!key) return; @@ -51,7 +51,7 @@ export const handlers = [ return res(ctx.status(200)); }), - rest.post(umbracoPath('/template'), async (req, res, ctx) => { + rest.post(umbracoPath('/template'), async (req, res, ctx) => { const data = await req.json(); if (!data) return; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/upgrade.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/upgrade.handlers.ts index d947764f8c..5a1695cd76 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/upgrade.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/upgrade.handlers.ts @@ -1,14 +1,14 @@ import { rest } from 'msw'; import { umbracoPath } from '@umbraco-cms/utils'; -import type { UpgradeSettingsModel } from '@umbraco-cms/backend-api'; +import type { UpgradeSettingsResponseModel } from '@umbraco-cms/backend-api'; export const handlers = [ rest.get(umbracoPath('/upgrade/settings'), (_req, res, ctx) => { return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ currentState: '2b20c6e7', newState: '2b20c6e8', oldVersion: '13.0.0', diff --git a/src/Umbraco.Web.UI.Client/src/core/router/index.ts b/src/Umbraco.Web.UI.Client/src/core/router/index.ts index 75fd79f5e4..e05a188067 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/index.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/index.ts @@ -2,3 +2,4 @@ export * from 'router-slot'; export * from './router-slot.element'; export * from './router-slot-change.event'; export * from './router-slot-init.event'; +export * from './route-location.interface'; diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route-location.interface.ts b/src/Umbraco.Web.UI.Client/src/core/router/route-location.interface.ts new file mode 100644 index 0000000000..ef5f56188f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/router/route-location.interface.ts @@ -0,0 +1,6 @@ +export interface UmbRouteLocation { + name?: string; + params: { + [key: string]: string; + }; +} diff --git a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts index 1269dcd227..3f44377ec5 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts @@ -6,7 +6,7 @@ import { UmbRouterSlotInitEvent } from './router-slot-init.event'; import { UmbRouterSlotChangeEvent } from './router-slot-change.event'; /** - * @element umb-router-slot-element + * @element umb-router-slot * @description - Component for wrapping Router Slot element, providing some local events for implementation. * @extends UmbRouterSlotElement * @fires {UmbRouterSlotInitEvent} init - fires when the router is connected diff --git a/src/Umbraco.Web.UI.Client/src/installer/consent/installer-consent.element.ts b/src/Umbraco.Web.UI.Client/src/installer/consent/installer-consent.element.ts index cf243a7f8d..ee3969304d 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/consent/installer-consent.element.ts +++ b/src/Umbraco.Web.UI.Client/src/installer/consent/installer-consent.element.ts @@ -3,7 +3,7 @@ import { customElement, state } from 'lit/decorators.js'; import { unsafeHTML } from 'lit/directives/unsafe-html.js'; import { UmbInstallerContext, UMB_INSTALLER_CONTEXT_TOKEN } from '../installer.context'; -import { ConsentLevelModel, TelemetryModel, TelemetryLevelModel } from '@umbraco-cms/backend-api'; +import { ConsentLevelPresentationModel, TelemetryResponseModel, TelemetryLevelModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-installer-consent') @@ -45,10 +45,10 @@ export class UmbInstallerConsentElement extends UmbLitElement { ]; @state() - private _telemetryLevels: ConsentLevelModel[] = []; + private _telemetryLevels: ConsentLevelPresentationModel[] = []; @state() - private _telemetryFormData?: TelemetryModel['telemetryLevel']; + private _telemetryFormData?: TelemetryResponseModel['telemetryLevel']; private _installerContext?: UmbInstallerContext; diff --git a/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.element.ts b/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.element.ts index 40d9cf223c..7507389ceb 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.element.ts +++ b/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.element.ts @@ -4,8 +4,8 @@ import { customElement, property, query, state } from 'lit/decorators.js'; import { UmbInstallerContext, UMB_INSTALLER_CONTEXT_TOKEN } from '../installer.context'; import { - DatabaseInstallModel, - DatabaseSettingsModel, + DatabaseInstallResponseModel, + DatabaseSettingsPresentationModel, InstallResource, ProblemDetailsModel, } from '@umbraco-cms/backend-api'; @@ -82,16 +82,16 @@ export class UmbInstallerDatabaseElement extends UmbLitElement { private _installButton!: UUIButtonElement; @property({ attribute: false }) - public databaseFormData!: DatabaseInstallModel; + public databaseFormData!: DatabaseInstallResponseModel; @state() private _options: Option[] = []; @state() - private _databases: DatabaseSettingsModel[] = []; + private _databases: DatabaseSettingsPresentationModel[] = []; @state() - private _preConfiguredDatabase?: DatabaseSettingsModel; + private _preConfiguredDatabase?: DatabaseSettingsPresentationModel; @state() private _validationErrorMessage = ''; @@ -151,7 +151,7 @@ export class UmbInstallerDatabaseElement extends UmbLitElement { value[target.name] = target.checked ?? target.value; // handle boolean and text inputs // TODO: Mark id and providerName as non-optional in schema - const database: DatabaseInstallModel = { + const database: DatabaseInstallResponseModel = { id: '0', providerName: '', ...this._installerContext?.getData().database, @@ -161,7 +161,7 @@ export class UmbInstallerDatabaseElement extends UmbLitElement { this._setDatabase(database); } - private _setDatabase(database: DatabaseInstallModel) { + private _setDatabase(database: DatabaseInstallResponseModel) { this._installerContext?.appendData({ database }); } @@ -199,7 +199,7 @@ export class UmbInstallerDatabaseElement extends UmbLitElement { } if (selectedDatabase.requiresConnectionTest) { - const databaseDetails: DatabaseInstallModel = { + const databaseDetails: DatabaseInstallResponseModel = { id, username, password, @@ -221,7 +221,7 @@ export class UmbInstallerDatabaseElement extends UmbLitElement { } } - const database: DatabaseInstallModel = { + const database: DatabaseInstallResponseModel = { ...this._installerContext?.getData().database, id, username, @@ -397,7 +397,7 @@ export class UmbInstallerDatabaseElement extends UmbLitElement { ${this._renderSettings()} `; - private _renderPreConfiguredDatabase = (database: DatabaseSettingsModel) => html` + private _renderPreConfiguredDatabase = (database: DatabaseSettingsPresentationModel) => html`

    A database has already been pre-configured on the server and will be used:

    Type: ${database.displayName} diff --git a/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.stories.ts b/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.stories.ts index dd2537af89..7df3e7a8b2 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.stories.ts @@ -7,7 +7,7 @@ import { rest } from 'msw'; import { installerContextProvider } from '../shared/utils.story-helpers'; import type { UmbInstallerDatabaseElement } from './installer-database.element'; -import type { InstallSettingsModel } from '@umbraco-cms/backend-api'; +import type { InstallSettingsResponseModel } from '@umbraco-cms/backend-api'; export default { title: 'Apps/Installer/Steps', component: 'umb-installer-database', @@ -30,7 +30,7 @@ Step3DatabasePreconfigured.parameters = { rest.get('/umbraco/backoffice/install/settings', (_req, res, ctx) => { return res( ctx.status(200), - ctx.json({ + ctx.json({ user: { consentLevels: [], minCharLength: 2, minNonAlphaNumericLength: 2 }, databases: [ { diff --git a/src/Umbraco.Web.UI.Client/src/installer/installer.context.ts b/src/Umbraco.Web.UI.Client/src/installer/installer.context.ts index d51f3d2c28..5ffa75da16 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/installer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/installer/installer.context.ts @@ -1,8 +1,8 @@ import { Observable } from 'rxjs'; import { - InstallModel, + InstallVResponseModel, InstallResource, - InstallSettingsModel, + InstallSettingsResponseModel, ProblemDetailsModel, TelemetryLevelModel, } from '@umbraco-cms/backend-api'; @@ -16,7 +16,7 @@ import { ObjectState, NumberState } from '@umbraco-cms/observable-api'; * @class UmbInstallerContext */ export class UmbInstallerContext { - private _data = new ObjectState({ + private _data = new ObjectState({ user: { name: '', email: '', password: '', subscribeToNewsletter: false }, database: { id: '', providerName: '' }, telemetryLevel: TelemetryLevelModel.BASIC, @@ -26,7 +26,7 @@ export class UmbInstallerContext { private _currentStep = new NumberState(1); public readonly currentStep = this._currentStep.asObservable(); - private _settings = new ObjectState(undefined); + private _settings = new ObjectState(undefined); public readonly settings = this._settings.asObservable(); private _installStatus = new ObjectState(null); @@ -90,7 +90,7 @@ export class UmbInstallerContext { * @param {Partial} data * @memberof UmbInstallerContext */ - public appendData(data: Partial): void { + public appendData(data: Partial): void { this._data.next({ ...this.getData(), ...data }); } @@ -100,7 +100,7 @@ export class UmbInstallerContext { * @return {*} {PostInstallRequest} * @memberof UmbInstallerContext */ - public getData(): InstallModel { + public getData(): InstallVResponseModel { return this._data.getValue(); } diff --git a/src/Umbraco.Web.UI.Client/src/stories/extending/entity-actions.mdx b/src/Umbraco.Web.UI.Client/src/stories/extending/entity-actions.mdx index e7847203d0..3298aabe03 100644 --- a/src/Umbraco.Web.UI.Client/src/stories/extending/entity-actions.mdx +++ b/src/Umbraco.Web.UI.Client/src/stories/extending/entity-actions.mdx @@ -64,12 +64,14 @@ const manifest = { name: 'My Entity Action', weight: 10, meta: { - entityType: 'my-entity', icon: 'umb:add', label: 'My Entity Action', repositoryAlias: 'My.Repository', api: MyEntityAction, }, + conditions: { + entityType: 'my-entity', + }, }; extensionRegistry.register(manifest); @@ -155,12 +157,14 @@ const manifest = { name: 'My Entity Bulk Action', weight: 10, meta: { - entityType: 'my-entity', icon: 'umb:add', label: 'My Entity Bulk Action', repositoryAlias: 'My.Repository', api: MyEntityBulkAction, }, + conditions: { + entityType: 'my-entity', + }, }; extensionRegistry.register(manifest); diff --git a/src/Umbraco.Web.UI.Client/src/stories/extending/workspaces/actions.mdx b/src/Umbraco.Web.UI.Client/src/stories/extending/workspaces/actions.mdx index 994c52edd7..ffb2564407 100644 --- a/src/Umbraco.Web.UI.Client/src/stories/extending/workspaces/actions.mdx +++ b/src/Umbraco.Web.UI.Client/src/stories/extending/workspaces/actions.mdx @@ -26,10 +26,12 @@ const manifest = { alias: 'My.WorkspaceAction', name: 'My Workspace Action', meta: { - workspaces: ['My.Workspace'], label: 'My Action', api: MyWorkspaceAction, }, + conditions: { + workspaces: ['My.Workspace'], + }, }; extensionRegistry.register(manifest); diff --git a/src/Umbraco.Web.UI.Client/src/upgrader/upgrader-view.element.ts b/src/Umbraco.Web.UI.Client/src/upgrader/upgrader-view.element.ts index 44de67977d..36df7b5171 100644 --- a/src/Umbraco.Web.UI.Client/src/upgrader/upgrader-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/upgrader/upgrader-view.element.ts @@ -1,7 +1,7 @@ import { css, CSSResultGroup, html, LitElement } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; -import { UpgradeSettingsModel } from '@umbraco-cms/backend-api'; +import { UpgradeSettingsResponseModel } from '@umbraco-cms/backend-api'; /** * @element umb-upgrader-view @@ -32,7 +32,7 @@ export class UmbUpgraderView extends LitElement { errorMessage = ''; @property({ type: Object, reflect: true }) - settings?: UpgradeSettingsModel; + settings?: UpgradeSettingsResponseModel; private _renderLayout() { return html` diff --git a/src/Umbraco.Web.UI.Client/src/upgrader/upgrader.element.ts b/src/Umbraco.Web.UI.Client/src/upgrader/upgrader.element.ts index bd38add924..c520db8565 100644 --- a/src/Umbraco.Web.UI.Client/src/upgrader/upgrader.element.ts +++ b/src/Umbraco.Web.UI.Client/src/upgrader/upgrader.element.ts @@ -3,7 +3,7 @@ import './upgrader-view.element'; import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UpgradeResource, UpgradeSettingsModel } from '@umbraco-cms/backend-api'; +import { UpgradeResource, UpgradeSettingsResponseModel } from '@umbraco-cms/backend-api'; import { tryExecute } from '@umbraco-cms/resources'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -13,7 +13,7 @@ import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-upgrader') export class UmbUpgrader extends UmbLitElement { @state() - private upgradeSettings?: UpgradeSettingsModel; + private upgradeSettings?: UpgradeSettingsResponseModel; @state() private fetching = true;