diff --git a/src/Umbraco.Web.UI.Client/.eslintrc.json b/src/Umbraco.Web.UI.Client/.eslintrc.json index 12235e837e..88caa66773 100644 --- a/src/Umbraco.Web.UI.Client/.eslintrc.json +++ b/src/Umbraco.Web.UI.Client/.eslintrc.json @@ -43,6 +43,7 @@ "local-rules/prefer-import-aliases": "error", "local-rules/enforce-element-suffix-on-element-class-name": "error", "local-rules/prefer-umbraco-cms-imports": "error", + "local-rules/no-external-imports": "error", "@typescript-eslint/no-non-null-assertion": "off" }, "settings": { diff --git a/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs b/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs index cf5a8913b1..ed1c5036cd 100644 --- a/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs +++ b/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs @@ -43,7 +43,7 @@ module.exports = { type: 'suggestion', docs: { description: - 'Ensures that any API resources from the `@umbraco-cms/backend-api` module are not used directly. Instead you should use the `tryExecuteAndNotify` function from the `@umbraco-cms/resources` module.', + 'Ensures that any API resources from the `@umbraco-cms/backoffice/backend-api` module are not used directly. Instead you should use the `tryExecuteAndNotify` function from the `@umbraco-cms/resources` module.', category: 'Best Practices', recommended: true, }, @@ -107,6 +107,7 @@ module.exports = { }; }, }, + /** @type {import('eslint').Rule.RuleModule} */ 'enforce-element-suffix-on-element-class-name': { meta: { @@ -138,6 +139,7 @@ module.exports = { }; }, }, + // TODO: Its not bullet proof, but it will catch most/some cases. /** @type {import('eslint').Rule.RuleModule} */ 'prefer-umbraco-cms-imports': { @@ -172,4 +174,35 @@ module.exports = { }; }, }, + + /** @type {import('eslint').Rule.RuleModule} */ + 'no-external-imports': { + meta: { + type: 'problem', + docs: { + description: + 'Ensures that the application does not rely on imports from external packages. Instead, use the @umbraco-cms/backoffice libs.', + recommended: true, + }, + fixable: 'code', + schema: [], + }, + create: function (context) { + return { + ImportDeclaration: function (node) { + // Check for imports from "router-slot" + if (node.source.value.startsWith('router-slot')) { + context.report({ + node, + message: + 'Use the `@umbraco-cms/backoffice/router` package instead of importing directly from "router-slot" because we might change that dependency in the future.', + fix: (fixer) => { + return fixer.replaceTextRange(node.source.range, `'@umbraco-cms/backoffice/router'`); + }, + }); + } + }, + }; + }, + }, }; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/request.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/request.ts index 1743c2b225..0a87eb5f1c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/request.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/request.ts @@ -9,265 +9,262 @@ import type { OnCancel } from './CancelablePromise'; import type { OpenAPIConfig } from './OpenAPI'; const isDefined = (value: T | null | undefined): value is Exclude => { - return value !== undefined && value !== null; + return value !== undefined && value !== null; }; const isString = (value: any): value is string => { - return typeof value === 'string'; + return typeof value === 'string'; }; const isStringWithValue = (value: any): value is string => { - return isString(value) && value !== ''; + return isString(value) && value !== ''; }; const isBlob = (value: any): value is Blob => { - return ( - typeof value === 'object' && - typeof value.type === 'string' && - typeof value.stream === 'function' && - typeof value.arrayBuffer === 'function' && - typeof value.constructor === 'function' && - typeof value.constructor.name === 'string' && - /^(Blob|File)$/.test(value.constructor.name) && - /^(Blob|File)$/.test(value[Symbol.toStringTag]) - ); + return ( + typeof value === 'object' && + typeof value.type === 'string' && + typeof value.stream === 'function' && + typeof value.arrayBuffer === 'function' && + typeof value.constructor === 'function' && + typeof value.constructor.name === 'string' && + /^(Blob|File)$/.test(value.constructor.name) && + /^(Blob|File)$/.test(value[Symbol.toStringTag]) + ); }; const isFormData = (value: any): value is FormData => { - return value instanceof FormData; + return value instanceof FormData; }; const base64 = (str: string): string => { - try { - return btoa(str); - } catch (err) { - // @ts-ignore - return Buffer.from(str).toString('base64'); - } + try { + return btoa(str); + } catch (err) { + // @ts-ignore + return Buffer.from(str).toString('base64'); + } }; const getQueryString = (params: Record): string => { - const qs: string[] = []; + const qs: string[] = []; - const append = (id: string, value: any) => { - qs.push(`${encodeURIComponent(id)}=${encodeURIComponent(String(value))}`); - }; + const append = (key: string, value: any) => { + qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`); + }; - const process = (id: string, value: any) => { - if (isDefined(value)) { - if (Array.isArray(value)) { - value.forEach((v) => { - process(id, v); - }); - } else if (typeof value === 'object') { - Object.entries(value).forEach(([k, v]) => { - process(`${id}[${k}]`, v); - }); - } else { - append(id, value); - } - } - }; + const process = (key: string, value: any) => { + if (isDefined(value)) { + if (Array.isArray(value)) { + value.forEach(v => { + process(key, v); + }); + } else if (typeof value === 'object') { + Object.entries(value).forEach(([k, v]) => { + process(`${key}[${k}]`, v); + }); + } else { + append(key, value); + } + } + }; - Object.entries(params).forEach(([id, value]) => { - process(id, value); - }); + Object.entries(params).forEach(([key, value]) => { + process(key, value); + }); - if (qs.length > 0) { - return `?${qs.join('&')}`; - } + if (qs.length > 0) { + return `?${qs.join('&')}`; + } - return ''; + return ''; }; const getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => { - const encoder = config.ENCODE_PATH || encodeURI; + const encoder = config.ENCODE_PATH || encodeURI; - const path = options.url - .replace('{api-version}', config.VERSION) - .replace(/{(.*?)}/g, (substring: string, group: string) => { - if (options.path?.hasOwnProperty(group)) { - return encoder(String(options.path[group])); - } - return substring; - }); + const path = options.url + .replace('{api-version}', config.VERSION) + .replace(/{(.*?)}/g, (substring: string, group: string) => { + if (options.path?.hasOwnProperty(group)) { + return encoder(String(options.path[group])); + } + return substring; + }); - const url = `${config.BASE}${path}`; - if (options.query) { - return `${url}${getQueryString(options.query)}`; - } - return url; + const url = `${config.BASE}${path}`; + if (options.query) { + return `${url}${getQueryString(options.query)}`; + } + return url; }; const getFormData = (options: ApiRequestOptions): FormData | undefined => { - if (options.formData) { - const formData = new FormData(); + if (options.formData) { + const formData = new FormData(); - const process = (id: string, value: any) => { - if (isString(value) || isBlob(value)) { - formData.append(id, value); - } else { - formData.append(id, JSON.stringify(value)); - } - }; + const process = (key: string, value: any) => { + if (isString(value) || isBlob(value)) { + formData.append(key, value); + } else { + formData.append(key, JSON.stringify(value)); + } + }; - Object.entries(options.formData) - .filter(([_, value]) => isDefined(value)) - .forEach(([id, value]) => { - if (Array.isArray(value)) { - value.forEach((v) => process(id, v)); - } else { - process(id, value); - } - }); + Object.entries(options.formData) + .filter(([_, value]) => isDefined(value)) + .forEach(([key, value]) => { + if (Array.isArray(value)) { + value.forEach(v => process(key, v)); + } else { + process(key, value); + } + }); - return formData; - } - return undefined; + return formData; + } + return undefined; }; type Resolver = (options: ApiRequestOptions) => Promise; const resolve = async (options: ApiRequestOptions, resolver?: T | Resolver): Promise => { - if (typeof resolver === 'function') { - return (resolver as Resolver)(options); - } - return resolver; + if (typeof resolver === 'function') { + return (resolver as Resolver)(options); + } + return resolver; }; const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions): Promise => { - const token = await resolve(options, config.TOKEN); - const username = await resolve(options, config.USERNAME); - const password = await resolve(options, config.PASSWORD); - const additionalHeaders = await resolve(options, config.HEADERS); + const token = await resolve(options, config.TOKEN); + const username = await resolve(options, config.USERNAME); + const password = await resolve(options, config.PASSWORD); + const additionalHeaders = await resolve(options, config.HEADERS); - const headers = Object.entries({ - Accept: 'application/json', - ...additionalHeaders, - ...options.headers, - }) - .filter(([_, value]) => isDefined(value)) - .reduce( - (headers, [id, value]) => ({ - ...headers, - [id]: String(value), - }), - {} as Record - ); + const headers = Object.entries({ + Accept: 'application/json', + ...additionalHeaders, + ...options.headers, + }) + .filter(([_, value]) => isDefined(value)) + .reduce((headers, [key, value]) => ({ + ...headers, + [key]: String(value), + }), {} as Record); - if (isStringWithValue(token)) { - headers['Authorization'] = `Bearer ${token}`; - } + if (isStringWithValue(token)) { + headers['Authorization'] = `Bearer ${token}`; + } - if (isStringWithValue(username) && isStringWithValue(password)) { - const credentials = base64(`${username}:${password}`); - headers['Authorization'] = `Basic ${credentials}`; - } + if (isStringWithValue(username) && isStringWithValue(password)) { + const credentials = base64(`${username}:${password}`); + headers['Authorization'] = `Basic ${credentials}`; + } - if (options.body) { - if (options.mediaType) { - headers['Content-Type'] = options.mediaType; - } else if (isBlob(options.body)) { - headers['Content-Type'] = options.body.type || 'application/octet-stream'; - } else if (isString(options.body)) { - headers['Content-Type'] = 'text/plain'; - } else if (!isFormData(options.body)) { - headers['Content-Type'] = 'application/json'; - } - } + if (options.body) { + if (options.mediaType) { + headers['Content-Type'] = options.mediaType; + } else if (isBlob(options.body)) { + headers['Content-Type'] = options.body.type || 'application/octet-stream'; + } else if (isString(options.body)) { + headers['Content-Type'] = 'text/plain'; + } else if (!isFormData(options.body)) { + headers['Content-Type'] = 'application/json'; + } + } - return new Headers(headers); + return new Headers(headers); }; const getRequestBody = (options: ApiRequestOptions): any => { - if (options.body) { - if (options.mediaType?.includes('/json')) { - return JSON.stringify(options.body); - } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) { - return options.body; - } else { - return JSON.stringify(options.body); - } - } - return undefined; + if (options.body) { + if (options.mediaType?.includes('/json')) { + return JSON.stringify(options.body) + } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) { + return options.body; + } else { + return JSON.stringify(options.body); + } + } + return undefined; }; export const sendRequest = async ( - config: OpenAPIConfig, - options: ApiRequestOptions, - url: string, - body: any, - formData: FormData | undefined, - headers: Headers, - onCancel: OnCancel + config: OpenAPIConfig, + options: ApiRequestOptions, + url: string, + body: any, + formData: FormData | undefined, + headers: Headers, + onCancel: OnCancel ): Promise => { - const controller = new AbortController(); + const controller = new AbortController(); - const request: RequestInit = { - headers, - body: body ?? formData, - method: options.method, - signal: controller.signal, - }; + const request: RequestInit = { + headers, + body: body ?? formData, + method: options.method, + signal: controller.signal, + }; - if (config.WITH_CREDENTIALS) { - request.credentials = config.CREDENTIALS; - } + if (config.WITH_CREDENTIALS) { + request.credentials = config.CREDENTIALS; + } - onCancel(() => controller.abort()); + onCancel(() => controller.abort()); - return await fetch(url, request); + return await fetch(url, request); }; const getResponseHeader = (response: Response, responseHeader?: string): string | undefined => { - if (responseHeader) { - const content = response.headers.get(responseHeader); - if (isString(content)) { - return content; - } - } - return undefined; + if (responseHeader) { + const content = response.headers.get(responseHeader); + if (isString(content)) { + return content; + } + } + return undefined; }; const getResponseBody = async (response: Response): Promise => { - if (response.status !== 204) { - try { - const contentType = response.headers.get('Content-Type'); - if (contentType) { - const isJSON = contentType.toLowerCase().startsWith('application/json'); - if (isJSON) { - return await response.json(); - } else { - return await response.text(); - } - } - } catch (error) { - console.error(error); - } - } - return undefined; + if (response.status !== 204) { + try { + const contentType = response.headers.get('Content-Type'); + if (contentType) { + const isJSON = contentType.toLowerCase().startsWith('application/json'); + if (isJSON) { + return await response.json(); + } else { + return await response.text(); + } + } + } catch (error) { + console.error(error); + } + } + return undefined; }; const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => { - const errors: Record = { - 400: 'Bad Request', - 401: 'Unauthorized', - 403: 'Forbidden', - 404: 'Not Found', - 500: 'Internal Server Error', - 502: 'Bad Gateway', - 503: 'Service Unavailable', - ...options.errors, - }; + const errors: Record = { + 400: 'Bad Request', + 401: 'Unauthorized', + 403: 'Forbidden', + 404: 'Not Found', + 500: 'Internal Server Error', + 502: 'Bad Gateway', + 503: 'Service Unavailable', + ...options.errors, + } - const error = errors[result.status]; - if (error) { - throw new ApiError(options, result, error); - } + const error = errors[result.status]; + if (error) { + throw new ApiError(options, result, error); + } - if (!result.ok) { - throw new ApiError(options, result, 'Generic Error'); - } + if (!result.ok) { + throw new ApiError(options, result, 'Generic Error'); + } }; /** @@ -278,32 +275,32 @@ const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => * @throws ApiError */ export const request = (config: OpenAPIConfig, options: ApiRequestOptions): CancelablePromise => { - return new CancelablePromise(async (resolve, reject, onCancel) => { - try { - const url = getUrl(config, options); - const formData = getFormData(options); - const body = getRequestBody(options); - const headers = await getHeaders(config, options); + return new CancelablePromise(async (resolve, reject, onCancel) => { + try { + const url = getUrl(config, options); + const formData = getFormData(options); + const body = getRequestBody(options); + const headers = await getHeaders(config, options); - if (!onCancel.isCancelled) { - const response = await sendRequest(config, options, url, body, formData, headers, onCancel); - const responseBody = await getResponseBody(response); - const responseHeader = getResponseHeader(response, options.responseHeader); + if (!onCancel.isCancelled) { + const response = await sendRequest(config, options, url, body, formData, headers, onCancel); + const responseBody = await getResponseBody(response); + const responseHeader = getResponseHeader(response, options.responseHeader); - const result: ApiResult = { - url, - ok: response.ok, - status: response.status, - statusText: response.statusText, - body: responseHeader ?? responseBody, - }; + const result: ApiResult = { + url, + ok: response.ok, + status: response.status, + statusText: response.statusText, + body: responseHeader ?? responseBody, + }; - catchErrorCodes(options, result); + catchErrorCodes(options, result); - resolve(result.body); - } - } catch (error) { - reject(error); - } - }); + resolve(result.body); + } + } catch (error) { + reject(error); + } + }); }; 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 326b993f2f..9919e60217 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 @@ -39,21 +39,26 @@ export type { CreateUserResponseModel } from './models/CreateUserResponseModel'; export type { CultureReponseModel } from './models/CultureReponseModel'; export type { DatabaseInstallResponseModel } from './models/DatabaseInstallResponseModel'; export type { DatabaseSettingsPresentationModel } from './models/DatabaseSettingsPresentationModel'; +export type { DataTypeItemResponseModel } from './models/DataTypeItemResponseModel'; export type { DataTypeModelBaseModel } from './models/DataTypeModelBaseModel'; export type { DataTypePropertyPresentationModel } from './models/DataTypePropertyPresentationModel'; export type { DataTypePropertyReferenceModel } from './models/DataTypePropertyReferenceModel'; export type { DataTypeReferenceResponseModel } from './models/DataTypeReferenceResponseModel'; export type { DataTypeResponseModel } from './models/DataTypeResponseModel'; +export type { DictionaryItemItemResponseModel } from './models/DictionaryItemItemResponseModel'; export type { DictionaryItemModelBaseModel } from './models/DictionaryItemModelBaseModel'; export type { DictionaryItemResponseModel } from './models/DictionaryItemResponseModel'; export type { DictionaryItemTranslationModel } from './models/DictionaryItemTranslationModel'; export type { DictionaryOverviewResponseModel } from './models/DictionaryOverviewResponseModel'; export { DirectionModel } from './models/DirectionModel'; export type { DisableUserRequestModel } from './models/DisableUserRequestModel'; +export type { DocumentBlueprintResponseModel } from './models/DocumentBlueprintResponseModel'; export type { DocumentBlueprintTreeItemResponseModel } from './models/DocumentBlueprintTreeItemResponseModel'; +export type { DocumentItemResponseModel } from './models/DocumentItemResponseModel'; export type { DocumentNotificationResponseModel } from './models/DocumentNotificationResponseModel'; export type { DocumentResponseModel } from './models/DocumentResponseModel'; export type { DocumentTreeItemResponseModel } from './models/DocumentTreeItemResponseModel'; +export type { DocumentTypeItemResponseModel } from './models/DocumentTypeItemResponseModel'; export type { DocumentTypePropertyTypeContainerResponseModel } from './models/DocumentTypePropertyTypeContainerResponseModel'; export type { DocumentTypePropertyTypeResponseModel } from './models/DocumentTypePropertyTypeResponseModel'; export type { DocumentTypeResponseModel } from './models/DocumentTypeResponseModel'; @@ -67,6 +72,7 @@ export type { DomainsResponseModel } from './models/DomainsResponseModel'; export type { EnableUserRequestModel } from './models/EnableUserRequestModel'; export type { EntityTreeItemResponseModel } from './models/EntityTreeItemResponseModel'; export type { FieldPresentationModel } from './models/FieldPresentationModel'; +export type { FileItemResponseModelBaseModel } from './models/FileItemResponseModelBaseModel'; export type { FileSystemTreeItemPresentationModel } from './models/FileSystemTreeItemPresentationModel'; export type { FolderModelBaseModel } from './models/FolderModelBaseModel'; export type { FolderReponseModel } from './models/FolderReponseModel'; @@ -87,6 +93,8 @@ export type { IndexResponseModel } from './models/IndexResponseModel'; export type { InstallSettingsResponseModel } from './models/InstallSettingsResponseModel'; export type { InstallVResponseModel } from './models/InstallVResponseModel'; export type { InviteUserRequestModel } from './models/InviteUserRequestModel'; +export type { ItemResponseModelBaseModel } from './models/ItemResponseModelBaseModel'; +export type { LanguageItemResponseModel } from './models/LanguageItemResponseModel'; export type { LanguageModelBaseModel } from './models/LanguageModelBaseModel'; export type { LanguageResponseModel } from './models/LanguageResponseModel'; export type { LoggerResponseModel } from './models/LoggerResponseModel'; @@ -95,12 +103,16 @@ export { LogLevelModel } from './models/LogLevelModel'; export type { LogMessagePropertyPresentationModel } from './models/LogMessagePropertyPresentationModel'; export type { LogMessageResponseModel } from './models/LogMessageResponseModel'; export type { LogTemplateResponseModel } from './models/LogTemplateResponseModel'; +export type { MediaItemResponseModel } from './models/MediaItemResponseModel'; +export type { MediaTypeItemResponseModel } from './models/MediaTypeItemResponseModel'; 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 { MemberGroupItemReponseModel } from './models/MemberGroupItemReponseModel'; +export type { MemberTypeItemResponseModel } from './models/MemberTypeItemResponseModel'; export type { ModelsBuilderResponseModel } from './models/ModelsBuilderResponseModel'; export { ModelsModeModel } from './models/ModelsModeModel'; export type { MoveDataTypeRequestModel } from './models/MoveDataTypeRequestModel'; @@ -145,6 +157,7 @@ export type { PagedSearchResultResponseModel } from './models/PagedSearchResultR export type { PagedTelemetryResponseModel } from './models/PagedTelemetryResponseModel'; export type { PagedUserGroupPresentationModel } from './models/PagedUserGroupPresentationModel'; export type { PagedUserResponseModel } from './models/PagedUserResponseModel'; +export type { PartialViewItemResponseModel } from './models/PartialViewItemResponseModel'; export type { ProblemDetailsModel } from './models/ProblemDetailsModel'; export type { ProfilingStatusRequestModel } from './models/ProfilingStatusRequestModel'; export type { ProfilingStatusResponseModel } from './models/ProfilingStatusResponseModel'; @@ -159,21 +172,26 @@ export type { RedirectUrlStatusResponseModel } from './models/RedirectUrlStatusR export type { RelationItemResponseModel } from './models/RelationItemResponseModel'; export type { RelationResponseModel } from './models/RelationResponseModel'; export type { RelationTypeBaseModel } from './models/RelationTypeBaseModel'; +export type { RelationTypeItemResponseModel } from './models/RelationTypeItemResponseModel'; export type { RelationTypeResponseModel } from './models/RelationTypeResponseModel'; export { RuntimeLevelModel } from './models/RuntimeLevelModel'; 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 { ScriptItemResponseModel } from './models/ScriptItemResponseModel'; export type { SearcherResponseModel } from './models/SearcherResponseModel'; export type { SearchResultResponseModel } from './models/SearchResultResponseModel'; export type { ServerStatusResponseModel } from './models/ServerStatusResponseModel'; export type { SetAvatarRequestModel } from './models/SetAvatarRequestModel'; +export type { StaticFileItemResponseModel } from './models/StaticFileItemResponseModel'; export { StatusResultTypeModel } from './models/StatusResultTypeModel'; +export type { StylesheetItemResponseModel } from './models/StylesheetItemResponseModel'; export { TelemetryLevelModel } from './models/TelemetryLevelModel'; export type { TelemetryRepresentationBaseModel } from './models/TelemetryRepresentationBaseModel'; export type { TelemetryRequestModel } from './models/TelemetryRequestModel'; export type { TelemetryResponseModel } from './models/TelemetryResponseModel'; +export type { TemplateItemResponseModel } from './models/TemplateItemResponseModel'; export type { TemplateModelBaseModel } from './models/TemplateModelBaseModel'; export type { TemplateQueryExecuteFilterPresentationModel } from './models/TemplateQueryExecuteFilterPresentationModel'; export type { TemplateQueryExecuteModel } from './models/TemplateQueryExecuteModel'; @@ -258,3 +276,4 @@ export { TrackedReferenceResource } from './services/TrackedReferenceResource'; export { UpgradeResource } from './services/UpgradeResource'; export { UserGroupsResource } from './services/UserGroupsResource'; export { UsersResource } from './services/UsersResource'; +export { V1Resource } from './services/V1Resource'; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeItemResponseModel.ts new file mode 100644 index 0000000000..e277363f47 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type DataTypeItemResponseModel = (ItemResponseModelBaseModel & { + icon?: string | null; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemItemResponseModel.ts new file mode 100644 index 0000000000..bcc5a02867 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemItemResponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type DictionaryItemItemResponseModel = ItemResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintResponseModel.ts new file mode 100644 index 0000000000..fd6b735c5b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintResponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type DocumentBlueprintResponseModel = ItemResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentItemResponseModel.ts new file mode 100644 index 0000000000..3bf495dc8d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type DocumentItemResponseModel = (ItemResponseModelBaseModel & { + icon?: string | null; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeItemResponseModel.ts new file mode 100644 index 0000000000..f085ce11bc --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeItemResponseModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type DocumentTypeItemResponseModel = (ItemResponseModelBaseModel & { + isElement?: boolean; + icon?: string | null; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileItemResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileItemResponseModelBaseModel.ts new file mode 100644 index 0000000000..6867fcab7f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileItemResponseModelBaseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type FileItemResponseModelBaseModel = { + name?: string; + path?: string; + icon?: string; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ItemResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ItemResponseModelBaseModel.ts new file mode 100644 index 0000000000..486b5df6f8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ItemResponseModelBaseModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type ItemResponseModelBaseModel = { + name?: string; + id?: string; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageItemResponseModel.ts new file mode 100644 index 0000000000..f9a7e78419 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageItemResponseModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type LanguageItemResponseModel = { + name?: string; + isoCode?: string; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts index d8e5543810..a1064cc7a4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts @@ -3,9 +3,10 @@ /* eslint-disable */ export type LogLevelCountsReponseModel = { - information?: number; - debug?: number; - warning?: number; - error?: number; - fatal?: number; + information?: number; + debug?: number; + warning?: number; + error?: number; + fatal?: number; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaItemResponseModel.ts new file mode 100644 index 0000000000..1b28cf9a1d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type MediaItemResponseModel = (ItemResponseModelBaseModel & { + icon?: string | null; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeItemResponseModel.ts new file mode 100644 index 0000000000..536d0ce369 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type MediaTypeItemResponseModel = (ItemResponseModelBaseModel & { + icon?: string | null; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MemberGroupItemReponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MemberGroupItemReponseModel.ts new file mode 100644 index 0000000000..d42cc718f6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MemberGroupItemReponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type MemberGroupItemReponseModel = ItemResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MemberTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MemberTypeItemResponseModel.ts new file mode 100644 index 0000000000..8d42b882cb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MemberTypeItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type MemberTypeItemResponseModel = (ItemResponseModelBaseModel & { + icon?: string | null; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PartialViewItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PartialViewItemResponseModel.ts new file mode 100644 index 0000000000..545b2ebdd8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PartialViewItemResponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { FileItemResponseModelBaseModel } from './FileItemResponseModelBaseModel'; + +export type PartialViewItemResponseModel = FileItemResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeItemResponseModel.ts new file mode 100644 index 0000000000..8458385428 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeItemResponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type RelationTypeItemResponseModel = ItemResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ScriptItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ScriptItemResponseModel.ts new file mode 100644 index 0000000000..1092e37cb1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ScriptItemResponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { FileItemResponseModelBaseModel } from './FileItemResponseModelBaseModel'; + +export type ScriptItemResponseModel = FileItemResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/StaticFileItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/StaticFileItemResponseModel.ts new file mode 100644 index 0000000000..793190a8b7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/StaticFileItemResponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { FileItemResponseModelBaseModel } from './FileItemResponseModelBaseModel'; + +export type StaticFileItemResponseModel = FileItemResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/StylesheetItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/StylesheetItemResponseModel.ts new file mode 100644 index 0000000000..6b09804191 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/StylesheetItemResponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { FileItemResponseModelBaseModel } from './FileItemResponseModelBaseModel'; + +export type StylesheetItemResponseModel = FileItemResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateItemResponseModel.ts new file mode 100644 index 0000000000..023262e3b2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateItemResponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type TemplateItemResponseModel = ItemResponseModelBaseModel; + 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 fec4ff09e8..ccf865111c 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 @@ -4,11 +4,10 @@ import type { CopyDataTypeRequestModel } from '../models/CopyDataTypeRequestModel'; import type { CreateDataTypeRequestModel } from '../models/CreateDataTypeRequestModel'; import type { CreateFolderRequestModel } from '../models/CreateFolderRequestModel'; +import type { DataTypeItemResponseModel } from '../models/DataTypeItemResponseModel'; 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'; @@ -268,6 +267,24 @@ export class DataTypeResource { }); } + /** + * @returns any Success + * @throws ApiError + */ + public static getDataTypeItem({ + id, + }: { + id?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/data-type/item', + query: { + 'id': id, + }, + }); + } + /** * @returns PagedFolderTreeItemResponseModel Success * @throws ApiError @@ -295,24 +312,6 @@ export class DataTypeResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDataTypeItem({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/data-type/item', - query: { - 'id': id, - }, - }); - } - /** * @returns PagedFolderTreeItemResponseModel Success * @throws ApiError 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 74af557479..bbc8823aa0 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 @@ -2,9 +2,8 @@ /* tslint:disable */ /* eslint-disable */ import type { CreateDictionaryItemRequestModel } from '../models/CreateDictionaryItemRequestModel'; +import type { DictionaryItemItemResponseModel } from '../models/DictionaryItemItemResponseModel'; 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'; @@ -204,6 +203,24 @@ export class DictionaryResource { }); } + /** + * @returns any Success + * @throws ApiError + */ + public static getDictionaryItem({ + id, + }: { + id?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/dictionary/item', + query: { + 'id': id, + }, + }); + } + /** * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError @@ -228,24 +245,6 @@ export class DictionaryResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDictionaryItem({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/dictionary/item', - query: { - 'id': id, - }, - }); - } - /** * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError 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 61330ba056..1708739c36 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,7 +1,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DocumentBlueprintTreeItemResponseModel } from '../models/DocumentBlueprintTreeItemResponseModel'; +import type { DocumentBlueprintResponseModel } from '../models/DocumentBlueprintResponseModel'; import type { PagedDocumentBlueprintTreeItemResponseModel } from '../models/PagedDocumentBlueprintTreeItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; @@ -14,14 +14,14 @@ export class DocumentBlueprintResource { * @returns any Success * @throws ApiError */ - public static getTreeDocumentBlueprintItem({ + public static getDocumentBlueprintItem({ id, }: { id?: Array, - }): CancelablePromise> { + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/tree/document-blueprint/item', + url: '/umbraco/management/api/v1/document-blueprint/item', query: { 'id': id, }, 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 0ab286ae37..5758389b26 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 @@ -2,9 +2,9 @@ /* tslint:disable */ /* eslint-disable */ import type { CreateDocumentRequestModel } from '../models/CreateDocumentRequestModel'; +import type { DocumentItemResponseModel } from '../models/DocumentItemResponseModel'; import type { DocumentNotificationResponseModel } from '../models/DocumentNotificationResponseModel'; 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 { UpdateDocumentNotificationsRequestModel } from '../models/UpdateDocumentNotificationsRequestModel'; @@ -194,6 +194,30 @@ export class DocumentResource { }); } + /** + * @returns any Success + * @throws ApiError + */ + public static getDocumentItem({ + id, + dataTypeId, + culture, + }: { + id?: Array, + dataTypeId?: string, + culture?: string, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document/item', + query: { + 'id': id, + 'dataTypeId': dataTypeId, + 'culture': culture, + }, + }); + } + /** * @returns PagedRecycleBinItemResponseModel Success * @throws ApiError @@ -275,30 +299,6 @@ export class DocumentResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDocumentItem({ - id, - dataTypeId, - culture, - }: { - id?: Array, - dataTypeId?: string, - culture?: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/document/item', - query: { - 'id': id, - 'dataTypeId': dataTypeId, - 'culture': culture, - }, - }); - } - /** * @returns PagedDocumentTreeItemResponseModel Success * @throws ApiError 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 5c908b4ccf..430d840e9d 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,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ +import type { DocumentTypeItemResponseModel } from '../models/DocumentTypeItemResponseModel'; import type { DocumentTypeResponseModel } from '../models/DocumentTypeResponseModel'; -import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; import type { PagedDocumentTypeTreeItemResponseModel } from '../models/PagedDocumentTypeTreeItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; @@ -32,6 +32,24 @@ export class DocumentTypeResource { }); } + /** + * @returns any Success + * @throws ApiError + */ + public static getDocumentTypeItem({ + id, + }: { + id?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document-type/item', + query: { + 'id': id, + }, + }); + } + /** * @returns PagedDocumentTypeTreeItemResponseModel Success * @throws ApiError @@ -59,24 +77,6 @@ export class DocumentTypeResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDocumentTypeItem({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/document-type/item', - query: { - 'id': id, - }, - }); - } - /** * @returns PagedDocumentTypeTreeItemResponseModel Success * @throws ApiError 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 56e3f9b7c7..cc77a2ee60 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 @@ -2,6 +2,7 @@ /* tslint:disable */ /* eslint-disable */ import type { CreateLanguageRequestModel } from '../models/CreateLanguageRequestModel'; +import type { LanguageItemResponseModel } from '../models/LanguageItemResponseModel'; import type { LanguageResponseModel } from '../models/LanguageResponseModel'; import type { PagedLanguageResponseModel } from '../models/PagedLanguageResponseModel'; import type { UpdateLanguageRequestModel } from '../models/UpdateLanguageRequestModel'; @@ -124,4 +125,22 @@ export class LanguageResource { }); } + /** + * @returns any Success + * @throws ApiError + */ + public static getLanguageItem({ + isoCode, + }: { + isoCode?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/language/item', + query: { + 'isoCode': 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 e3d16d571b..dc8cf7baa1 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 @@ -16,218 +16,224 @@ import { OpenAPI } from '../core/OpenAPI'; import { request as __request } from '../core/request'; export class LogViewerResource { - /** - * @returns PagedLoggerResponseModel Success - * @throws ApiError - */ - public static getLogViewerLevel({ - skip, - take = 100, - }: { - skip?: number; - take?: number; - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/level', - query: { - skip: skip, - take: take, - }, - }); - } - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerLevelCount({ - startDate, - endDate, - }: { - startDate?: string; - endDate?: string; - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/level-count', - query: { - startDate: startDate, - endDate: endDate, - }, - errors: { - 400: `Bad Request`, - }, - }); - } + /** + * @returns PagedLoggerResponseModel Success + * @throws ApiError + */ + public static getLogViewerLevel({ + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/level', + query: { + 'skip': skip, + 'take': take, + }, + }); + } - /** - * @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 { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/log', - query: { - skip: skip, - take: take, - orderDirection: orderDirection, - filterExpression: filterExpression, - logLevel: logLevel, - startDate: startDate, - endDate: endDate, - }, - }); - } + /** + * @returns any Success + * @throws ApiError + */ + public static getLogViewerLevelCount({ + startDate, + endDate, + }: { + startDate?: string, + endDate?: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/level-count', + query: { + 'startDate': startDate, + 'endDate': endDate, + }, + errors: { + 400: `Bad Request`, + }, + }); + } - /** - * @returns PagedLogTemplateResponseModel Success - * @throws ApiError - */ - public static getLogViewerMessageTemplate({ - 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', - query: { - skip: skip, - take: take, - startDate: startDate, - endDate: endDate, - }, - errors: { - 400: `Bad Request`, - }, - }); - } + /** + * @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 { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/log', + query: { + 'skip': skip, + 'take': take, + 'orderDirection': orderDirection, + 'filterExpression': filterExpression, + 'logLevel': logLevel, + 'startDate': startDate, + 'endDate': endDate, + }, + }); + } - /** - * @returns PagedSavedLogSearchResponseModel Success - * @throws ApiError - */ - public static getLogViewerSavedSearch({ - skip, - take = 100, - }: { - skip?: number; - take?: number; - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/saved-search', - query: { - skip: skip, - take: take, - }, - }); - } + /** + * @returns PagedLogTemplateResponseModel Success + * @throws ApiError + */ + public static getLogViewerMessageTemplate({ + 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', + query: { + 'skip': skip, + 'take': take, + 'startDate': startDate, + 'endDate': endDate, + }, + errors: { + 400: `Bad Request`, + }, + }); + } - /** - * @returns string Created - * @throws ApiError - */ - public static postLogViewerSavedSearch({ - requestBody, - }: { - requestBody?: SavedLogSearchRequestModel; - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/log-viewer/saved-search', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Location', - errors: { - 400: `Bad Request`, - }, - }); - } + /** + * @returns PagedSavedLogSearchResponseModel Success + * @throws ApiError + */ + public static getLogViewerSavedSearch({ + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/saved-search', + query: { + 'skip': skip, + 'take': take, + }, + }); + } - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerSavedSearchByName({ - name, - }: { - name: string; - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', - path: { - name: name, - }, - errors: { - 404: `Not Found`, - }, - }); - } + /** + * @returns string Created + * @throws ApiError + */ + public static postLogViewerSavedSearch({ + requestBody, + }: { + requestBody?: SavedLogSearchRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/log-viewer/saved-search', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Location', + errors: { + 400: `Bad Request`, + }, + }); + } - /** - * @returns any Success - * @throws ApiError - */ - public static deleteLogViewerSavedSearchByName({ name }: { name: string }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', - path: { - name: name, - }, - errors: { - 404: `Not Found`, - }, - }); - } + /** + * @returns any Success + * @throws ApiError + */ + public static getLogViewerSavedSearchByName({ + name, + }: { + name: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', + path: { + 'name': name, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static deleteLogViewerSavedSearchByName({ + name, + }: { + name: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', + path: { + 'name': name, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getLogViewerValidateLogsSize({ + startDate, + endDate, + }: { + startDate?: string, + endDate?: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/validate-logs-size', + query: { + 'startDate': startDate, + 'endDate': endDate, + }, + errors: { + 400: `Bad Request`, + }, + }); + } - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerValidateLogsSize({ - startDate, - endDate, - }: { - startDate?: string; - endDate?: string; - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/validate-logs-size', - query: { - startDate: startDate, - endDate: endDate, - }, - errors: { - 400: `Bad Request`, - }, - }); - } } 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 27690e5cf2..4e0385a534 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 @@ -5,6 +5,7 @@ import type { ContentTreeItemResponseModel } from '../models/ContentTreeItemResp import type { CreateMediaRequestModel } from '../models/CreateMediaRequestModel'; import type { DocumentResponseModel } from '../models/DocumentResponseModel'; import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; +import type { MediaItemResponseModel } from '../models/MediaItemResponseModel'; import type { PagedContentTreeItemResponseModel } from '../models/PagedContentTreeItemResponseModel'; import type { PagedRecycleBinItemResponseModel } from '../models/PagedRecycleBinItemResponseModel'; import type { UpdateMediaRequestModel } from '../models/UpdateMediaRequestModel'; @@ -106,6 +107,27 @@ export class MediaResource { }); } + /** + * @returns any Success + * @throws ApiError + */ + public static getMediaItem({ + id, + dataTypeId, + }: { + id?: Array, + dataTypeId?: string, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/media/item', + query: { + 'id': id, + 'dataTypeId': dataTypeId, + }, + }); + } + /** * @returns PagedRecycleBinItemResponseModel Success * @throws ApiError 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 8d583f4fd4..c86145f403 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,8 +1,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; -import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; +import type { MediaTypeItemResponseModel } from '../models/MediaTypeItemResponseModel'; import type { MediaTypeResponseModel } from '../models/MediaTypeResponseModel'; import type { PagedFolderTreeItemResponseModel } from '../models/PagedFolderTreeItemResponseModel'; @@ -33,6 +32,24 @@ export class MediaTypeResource { }); } + /** + * @returns any Success + * @throws ApiError + */ + public static getMediaTypeItem({ + id, + }: { + id?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/media-type/item', + query: { + 'id': id, + }, + }); + } + /** * @returns PagedFolderTreeItemResponseModel Success * @throws ApiError @@ -60,24 +77,6 @@ export class MediaTypeResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeMediaTypeItem({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/media-type/item', - query: { - 'id': id, - }, - }); - } - /** * @returns PagedFolderTreeItemResponseModel Success * @throws ApiError 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 7144009cb1..3ef4601fe2 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,12 +1,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -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 { MemberGroupItemReponseModel } from '../models/MemberGroupItemReponseModel'; import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; @@ -19,14 +14,14 @@ export class MemberGroupResource { * @returns any Success * @throws ApiError */ - public static getTreeMemberGroupItem({ + public static getMemberGroupItem({ id, }: { id?: Array, - }): CancelablePromise> { + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/tree/member-group/item', + url: '/umbraco/management/api/v1/member-group/item', query: { 'id': id, }, 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 df77ec68fd..3545cb4bca 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,12 +1,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -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 { MemberTypeItemResponseModel } from '../models/MemberTypeItemResponseModel'; import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; @@ -19,14 +14,14 @@ export class MemberTypeResource { * @returns any Success * @throws ApiError */ - public static getTreeMemberTypeItem({ + public static getMemberTypeItem({ id, }: { id?: Array, - }): CancelablePromise> { + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/tree/member-type/item', + url: '/umbraco/management/api/v1/member-type/item', query: { 'id': id, }, 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 4f44e0cf12..3bceafadbc 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 { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; +import type { PartialViewItemResponseModel } from '../models/PartialViewItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -10,6 +10,24 @@ import { request as __request } from '../core/request'; export class PartialViewResource { + /** + * @returns any Success + * @throws ApiError + */ + public static getPartialViewItem({ + id, + }: { + id?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/partial-view/item', + query: { + 'id': id, + }, + }); + } + /** * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError @@ -34,24 +52,6 @@ export class PartialViewResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreePartialViewItem({ - path, - }: { - path?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/partial-view/item', - query: { - 'path': path, - }, - }); - } - /** * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError 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 ae5d2ffd04..76f60d04a6 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,8 @@ /* tslint:disable */ /* eslint-disable */ import type { CreateRelationTypeRequestModel } from '../models/CreateRelationTypeRequestModel'; -import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; -import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; +import type { RelationTypeItemResponseModel } from '../models/RelationTypeItemResponseModel'; import type { RelationTypeResponseModel } from '../models/RelationTypeResponseModel'; import type { UpdateRelationTypeRequestModel } from '../models/UpdateRelationTypeRequestModel'; @@ -107,14 +106,14 @@ export class RelationTypeResource { * @returns any Success * @throws ApiError */ - public static getTreeRelationTypeItem({ + public static getRelationTypeItem({ id, }: { id?: Array, - }): CancelablePromise> { + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/tree/relation-type/item', + url: '/umbraco/management/api/v1/relation-type/item', query: { 'id': id, }, 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 573b19912c..7804889dd5 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 { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; +import type { ScriptItemResponseModel } from '../models/ScriptItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -10,6 +10,24 @@ import { request as __request } from '../core/request'; export class ScriptResource { + /** + * @returns any Success + * @throws ApiError + */ + public static getScriptItem({ + path, + }: { + path?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/script/item', + query: { + 'path': path, + }, + }); + } + /** * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError @@ -34,24 +52,6 @@ export class ScriptResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeScriptItem({ - path, - }: { - path?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/script/item', - query: { - 'path': path, - }, - }); - } - /** * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError 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 4379b0aafa..83645d7d1f 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,7 +1,6 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; import type { CancelablePromise } from '../core/CancelablePromise'; @@ -34,24 +33,6 @@ export class StaticFileResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeStaticFileItem({ - path, - }: { - path?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/static-file/item', - query: { - 'path': path, - }, - }); - } - /** * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError 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 5d85a44b41..f219e34cfd 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 { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; +import type { ScriptItemResponseModel } from '../models/ScriptItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -10,6 +10,24 @@ import { request as __request } from '../core/request'; export class StylesheetResource { + /** + * @returns any Success + * @throws ApiError + */ + public static getStylesheetItem({ + path, + }: { + path?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/stylesheet/item', + query: { + 'path': path, + }, + }); + } + /** * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError @@ -34,24 +52,6 @@ export class StylesheetResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeStylesheetItem({ - path, - }: { - path?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/stylesheet/item', - query: { - 'path': path, - }, - }); - } - /** * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError 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 ab2c55cccd..b7568d4a24 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,14 +1,9 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -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 { TemplateItemResponseModel } from '../models/TemplateItemResponseModel'; import type { TemplateQueryExecuteModel } from '../models/TemplateQueryExecuteModel'; import type { TemplateQueryResultResponseModel } from '../models/TemplateQueryResultResponseModel'; import type { TemplateQuerySettingsResponseModel } from '../models/TemplateQuerySettingsResponseModel'; @@ -113,6 +108,24 @@ export class TemplateResource { }); } + /** + * @returns any Success + * @throws ApiError + */ + public static getTemplateItem({ + id, + }: { + id?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/template/item', + query: { + 'id': id, + }, + }); + } + /** * @returns any Success * @throws ApiError @@ -179,24 +192,6 @@ export class TemplateResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeTemplateItem({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/template/item', - query: { - 'id': id, - }, - }); - } - /** * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/V1Resource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/V1Resource.ts new file mode 100644 index 0000000000..d63c01efe2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/V1Resource.ts @@ -0,0 +1,30 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { StaticFileItemResponseModel } from '../models/StaticFileItemResponseModel'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import { OpenAPI } from '../core/OpenAPI'; +import { request as __request } from '../core/request'; + +export class V1Resource { + + /** + * @returns any Success + * @throws ApiError + */ + public static getItem({ + path, + }: { + path?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/item', + query: { + 'path': path, + }, + }); + } + +} diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/create-extension-element.function.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/create-extension-element.function.ts index 4da597bcb4..ccb92df877 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/create-extension-element.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/create-extension-element.function.ts @@ -3,8 +3,9 @@ import { isManifestElementNameType } from './is-manifest-element-name-type.funct import { loadExtension } from './load-extension.function'; import type { HTMLElementConstructor } from '@umbraco-cms/backoffice/models'; import type { ManifestElement } from '@umbraco-cms/backoffice/extensions-registry'; +import type { PageComponent } from '@umbraco-cms/backoffice/router'; -export async function createExtensionElement(manifest: ManifestElement): Promise { +export async function createExtensionElement(manifest: ManifestElement): Promise { //TODO: Write tests for these extension options: const js = await loadExtension(manifest); diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts index 095da5f546..3c7f7e7557 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts @@ -1,8 +1,8 @@ -import type { Params } from 'router-slot'; import { v4 as uuidv4 } from 'uuid'; import { UmbModalHandler } from './modal-handler'; import { UmbModalConfig, UmbModalContext } from './modal.context'; import { UmbModalToken } from './token/modal-token'; +import type { Params } from '@umbraco-cms/backoffice/router'; export type UmbModalRouteBuilder = (params: { [key: string]: string | number }) => string; diff --git a/src/Umbraco.Web.UI.Client/libs/router/generate-route-path-builder.function.ts b/src/Umbraco.Web.UI.Client/libs/router/generate-route-path-builder.function.ts index 152465e701..98e0dbd653 100644 --- a/src/Umbraco.Web.UI.Client/libs/router/generate-route-path-builder.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/router/generate-route-path-builder.function.ts @@ -1,4 +1,4 @@ -import type { ISlashOptions } from '@umbraco-cms/internal/router'; +import type { ISlashOptions } from '@umbraco-cms/backoffice/router'; const PARAM_IDENTIFIER = /:([^\\/]+)/g; diff --git a/src/Umbraco.Web.UI.Client/libs/router/index.ts b/src/Umbraco.Web.UI.Client/libs/router/index.ts index 45b593eca7..3cfb67ff4a 100644 --- a/src/Umbraco.Web.UI.Client/libs/router/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/router/index.ts @@ -1,3 +1,5 @@ +export type * from 'router-slot/model'; +export * from 'router-slot/util'; export * from './route-location.interface'; export * from './route.context'; export * from './route.interface'; diff --git a/src/Umbraco.Web.UI.Client/libs/router/route.context.ts b/src/Umbraco.Web.UI.Client/libs/router/route.context.ts index fe561c2121..3e2b4cdab8 100644 --- a/src/Umbraco.Web.UI.Client/libs/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/libs/router/route.context.ts @@ -1,12 +1,13 @@ -import type { IRoutingInfo, ISlashOptions } from 'router-slot'; -import { UmbRoute } from './route.interface'; -import { generateRoutePathBuilder } from '.'; +// eslint-disable-next-line local-rules/no-external-imports +import type { IRoutingInfo } from 'router-slot/model'; +import type { UmbRoute } from './route.interface'; +import { generateRoutePathBuilder } from './generate-route-path-builder.function'; import { UmbContextConsumerController, UmbContextProviderController, UmbContextToken, } from '@umbraco-cms/backoffice/context-api'; -import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; +import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UMB_MODAL_CONTEXT_TOKEN, UmbModalRouteRegistration } from '@umbraco-cms/backoffice/modal'; const EmptyDiv = document.createElement('div'); @@ -48,7 +49,7 @@ export class UmbRouteContext { return { path: this.#getModalRoutePath(modalRegistration), component: EmptyDiv, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { if (!this.#modalContext) return; const modalHandler = modalRegistration.routeSetup(this.#modalContext, info.match.params); if (modalHandler) { diff --git a/src/Umbraco.Web.UI.Client/libs/router/route.interface.ts b/src/Umbraco.Web.UI.Client/libs/router/route.interface.ts index b76705bd13..8c7f94ac63 100644 --- a/src/Umbraco.Web.UI.Client/libs/router/route.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/router/route.interface.ts @@ -1,3 +1 @@ -import type { IRoute } from 'router-slot/model'; - -export type UmbRoute = IRoute; +export type { IRoute as UmbRoute } from 'router-slot/model'; diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index b01c305fa1..f257dae220 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -15,7 +15,7 @@ "lit": "^2.7.0", "lodash-es": "4.17.21", "monaco-editor": "^0.36.1", - "router-slot": "file:router-slot-1.6.1.tgz", + "router-slot": "file:router-slot-2.0.0.tgz", "rxjs": "^7.8.0", "uuid": "^9.0.0" }, @@ -16114,9 +16114,9 @@ "dev": true }, "node_modules/router-slot": { - "version": "1.6.1", - "resolved": "file:router-slot-1.6.1.tgz", - "integrity": "sha512-lrqzUL9wfSQR7L9rFvRsq/I+BGo2bw0Hn45eZ+qhrjPFv2gn+LRz2TaWa6CVqkiXhdWMrUEmEyD8nzl4cqV0Fw==", + "version": "2.0.0", + "resolved": "file:router-slot-2.0.0.tgz", + "integrity": "sha512-J2E+sDJR7Q/S761Q6vXVCTWFN1kKidX3fparKoipm/NaX9XEdwmCSOEqYyUHbnIyDDo5O5PMhsH8EazLmCQJXw==", "license": "MIT" }, "node_modules/run-async": { @@ -30376,8 +30376,8 @@ } }, "router-slot": { - "version": "file:router-slot-1.6.1.tgz", - "integrity": "sha512-lrqzUL9wfSQR7L9rFvRsq/I+BGo2bw0Hn45eZ+qhrjPFv2gn+LRz2TaWa6CVqkiXhdWMrUEmEyD8nzl4cqV0Fw==" + "version": "file:router-slot-2.0.0.tgz", + "integrity": "sha512-J2E+sDJR7Q/S761Q6vXVCTWFN1kKidX3fparKoipm/NaX9XEdwmCSOEqYyUHbnIyDDo5O5PMhsH8EazLmCQJXw==" }, "run-async": { "version": "2.4.1", diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 2a76669d0e..46d864b4a3 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -66,7 +66,7 @@ "lit": "^2.7.0", "lodash-es": "4.17.21", "monaco-editor": "^0.36.1", - "router-slot": "file:router-slot-1.6.1.tgz", + "router-slot": "file:router-slot-2.0.0.tgz", "rxjs": "^7.8.0", "uuid": "^9.0.0" }, diff --git a/src/Umbraco.Web.UI.Client/router-slot-1.6.1.tgz b/src/Umbraco.Web.UI.Client/router-slot-1.6.1.tgz deleted file mode 100644 index a5285852af..0000000000 Binary files a/src/Umbraco.Web.UI.Client/router-slot-1.6.1.tgz and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/router-slot-2.0.0.tgz b/src/Umbraco.Web.UI.Client/router-slot-2.0.0.tgz new file mode 100644 index 0000000000..e2e34160de Binary files /dev/null and b/src/Umbraco.Web.UI.Client/router-slot-2.0.0.tgz differ diff --git a/src/Umbraco.Web.UI.Client/src/app.ts b/src/Umbraco.Web.UI.Client/src/app.ts index 9f1337ba18..5707e9ec4d 100644 --- a/src/Umbraco.Web.UI.Client/src/app.ts +++ b/src/Umbraco.Web.UI.Client/src/app.ts @@ -10,10 +10,11 @@ import './core/modal/modal-element.element'; import { UUIIconRegistryEssential } from '@umbraco-ui/uui'; import { css, html } from 'lit'; -import { customElement, property, state } from 'lit/decorators.js'; +import { customElement, property } from 'lit/decorators.js'; import { UmbIconStore } from './core/stores/icon/icon.store'; -import type { Guard, IRoute } from '@umbraco-cms/internal/router'; +import type { Guard, IRoute } from '@umbraco-cms/backoffice/router'; +import { pathWithoutBasePath } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { OpenAPI, RuntimeLevelModel, ServerResource } from '@umbraco-cms/backoffice/backend-api'; @@ -37,8 +38,7 @@ export class UmbAppElement extends UmbLitElement { @property({ type: String }) private umbracoUrl?: string; - @state() - private _routes: IRoute[] = [ + private _routes: IRoute[] = [ { path: 'install', component: () => import('./installer/installer.element'), @@ -68,7 +68,7 @@ export class UmbAppElement extends UmbLitElement { this._setup(); } - async connectedCallback() { + connectedCallback() { super.connectedCallback(); OpenAPI.BASE = @@ -79,8 +79,7 @@ export class UmbAppElement extends UmbLitElement { this.provideContext('UMBRACOBASE', OpenAPI.BASE); - await this._setInitStatus(); - this._redirect(); + this._setInitStatus(); // Listen for the debug event from the component this.addEventListener(umbDebugContextEventType, (event: any) => { @@ -89,7 +88,7 @@ export class UmbAppElement extends UmbLitElement { // we have collected whilst coming up through the DOM // and pass it back down to the callback in // the component that originally fired the event - if(event.callback){ + if (event.callback) { event.callback(event.instances); } @@ -97,40 +96,43 @@ export class UmbAppElement extends UmbLitElement { // Why? Can't send contexts data directly - browser seems to not serialize it and says its null // But a simple object works fine for browser extension to consume const data = { - contexts: contextData(event.instances) + contexts: contextData(event.instances), }; // Emit this new event for the browser extension to listen for this.dispatchEvent(new CustomEvent('umb:debug-contexts:data', { detail: data, bubbles: true })); - }); } private async _setup() { + await this._setInitStatus(); this._iconRegistry.attach(this); } private async _setInitStatus() { const { data } = await tryExecuteAndNotify(this, ServerResource.getServerStatus()); this._runtimeLevel = data?.serverStatus ?? RuntimeLevelModel.UNKNOWN; + this._redirect(); } private _redirect() { switch (this._runtimeLevel) { case RuntimeLevelModel.INSTALL: - history.replaceState(null, '', '/install'); + history.replaceState(null, '', 'install'); break; case RuntimeLevelModel.UPGRADE: - history.replaceState(null, '', '/upgrade'); + history.replaceState(null, '', 'upgrade'); break; case RuntimeLevelModel.RUN: { - const pathname = - window.location.pathname === '/install' || window.location.pathname === '/upgrade' - ? '/' - : window.location.pathname; - history.replaceState(null, '', pathname); + const pathname = pathWithoutBasePath({ start: true, end: false }); + + // If we are on the installer or upgrade page, redirect to the root + // but if not, keep the current path but replace state anyway to initialize the router + const finalPath = pathname === '/install' || pathname === '/upgrade' ? '/' : location.href; + + history.replaceState(null, '', finalPath); break; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts index 7447fcad49..fd3cee9ccb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts @@ -93,7 +93,7 @@ export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, - DocumentTypeResource.getTreeDocumentTypeItem({ + DocumentTypeResource.getDocumentTypeItem({ id: ids, }) ); 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 73abc9e6ef..78b74edc56 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 @@ -3,7 +3,7 @@ import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbDocumentTypeWorkspaceContext } from './document-type-workspace.context'; import { UmbDocumentTypeWorkspaceEditorElement } from './document-type-workspace-editor.element'; -import { IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-document-type-workspace') @@ -14,11 +14,11 @@ export class UmbDocumentTypeWorkspaceElement extends UmbLitElement { #element = new UmbDocumentTypeWorkspaceEditorElement(); @state() - _routes = [ + _routes: IRoute[] = [ { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts index 7054f9502c..b09416588d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts @@ -4,10 +4,12 @@ import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbDocumentTypeWorkspaceContext } from '../../document-type-workspace.context'; import { UmbWorkspaceContainerStructureHelper } from '../../../../../shared/components/workspace/workspace-context/workspace-container-structure-helper.class'; -import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent, IRoute } from '@umbraco-cms/internal/router'; +import type { UmbDocumentTypeWorkspaceViewEditTabElement } from './document-type-workspace-view-edit-tab.element'; +import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; import { UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/context-api'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; @customElement('umb-document-type-workspace-view-edit') export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement { @@ -82,7 +84,7 @@ export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement { } private _createRoutes() { - const routes: any[] = []; + const routes: IRoute[] = []; if (this._tabs.length > 0) { this._tabs?.forEach((tab) => { @@ -90,9 +92,9 @@ export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement { routes.push({ path: `tab/${encodeURI(tabName || '').toString()}`, component: () => import('./document-type-workspace-view-edit-tab.element'), - setup: (component: Promise) => { - (component as any).tabName = tabName; - (component as any).ownerTabId = tab.id; + setup: (component) => { + (component as UmbDocumentTypeWorkspaceViewEditTabElement).tabName = tabName ?? ''; + (component as UmbDocumentTypeWorkspaceViewEditTabElement).ownerTabId = tab.id; }, }); }); @@ -102,8 +104,8 @@ export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement { routes.push({ path: '', component: () => import('./document-type-workspace-view-edit-tab.element'), - setup: (component: Promise) => { - (component as any).noTabName = true; + setup: (component) => { + (component as UmbDocumentTypeWorkspaceViewEditTabElement).noTabName = true; }, }); } 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 7a5b8b3e31..62a8480101 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 @@ -33,7 +33,7 @@ export class UmbCreateDocumentEntityAction extends UmbEntityActionBase, info: IRoutingInfo) => { + setup: (_component, info) => { // Set split view/active info.. const variantSplit = info.match.fragments.consumed.split('_&_'); variantSplit.forEach((part, index) => { @@ -102,7 +102,7 @@ export class UmbDocumentWorkspaceEditorElement extends UmbLitElement { routes.push({ path: new UmbVariantId(variant).toString(), component: this.splitViewElement, - setup: (component: HTMLElement | Promise, info: IRoutingInfo) => { + setup: (_component, info) => { // 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); 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 67656c3380..19301cf90a 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,8 +1,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoute, IRoutingInfo } from 'router-slot'; import { UmbDocumentWorkspaceContext } from './document-workspace.context'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import './document-workspace-editor.element'; @@ -19,7 +19,7 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement { { path: 'create/:parentId/:documentTypeKey', component: () => this.#element, - setup: async (component: HTMLElement, info: IRoutingInfo) => { + setup: async (_component, info) => { // TODO: use parent id: // TODO: Notice the perspective of permissions here, we need to check if the user has access to create a document of this type under this parent? const parentId = info.match.params.parentId; @@ -30,7 +30,7 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement { { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/edit/document-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/edit/document-workspace-view-edit.element.ts index 2a13eb9cc8..e1b10e8229 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/edit/document-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/edit/document-workspace-view-edit.element.ts @@ -4,10 +4,11 @@ import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbDocumentWorkspaceContext } from '../../document-workspace.context'; import { UmbWorkspaceContainerStructureHelper } from '../../../../../shared/components/workspace/workspace-context/workspace-container-structure-helper.class'; -import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent, IRoute } from '@umbraco-cms/internal/router'; +import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; import { UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/context-api'; +import { IRoute } from '@umbraco-cms/backoffice/router'; @customElement('umb-document-workspace-view-edit') export class UmbDocumentWorkspaceViewEditElement extends UmbLitElement { @@ -72,7 +73,7 @@ export class UmbDocumentWorkspaceViewEditElement extends UmbLitElement { } private _createRoutes() { - const routes: any[] = []; + const routes: IRoute[] = []; if (this._tabs.length > 0) { this._tabs?.forEach((tab) => { @@ -80,7 +81,7 @@ export class UmbDocumentWorkspaceViewEditElement extends UmbLitElement { routes.push({ path: `tab/${encodeURI(tabName || '').toString()}`, component: () => import('./document-workspace-view-edit-tab.element'), - setup: (component: Promise) => { + setup: (component) => { (component as any).tabName = tabName; }, }); @@ -91,7 +92,7 @@ export class UmbDocumentWorkspaceViewEditElement extends UmbLitElement { routes.push({ path: '', component: () => import('./document-workspace-view-edit-tab.element'), - setup: (component: Promise) => { + setup: (component) => { (component as any).noTabName = true; }, }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts index c66dc1b224..6d164599f4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts @@ -64,7 +64,7 @@ export class MediaTypeTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, - MediaTypeResource.getTreeMediaTypeItem({ + MediaTypeResource.getMediaTypeItem({ id: ids, }) ); 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 44b19e7eae..a2f98ec9c6 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 @@ -4,7 +4,7 @@ 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/internal/lit-element'; -import { IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; @customElement('umb-media-type-workspace') export class UmbMediaTypeWorkspaceElement extends UmbLitElement { @@ -27,11 +27,11 @@ export class UmbMediaTypeWorkspaceElement extends UmbLitElement { #element = new UmbMediaTypeWorkspaceEditElement(); @state() - _routes: any[] = [ + _routes: IRoute[] = [ { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, 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 eb12659f04..aab70442d0 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 @@ -3,7 +3,7 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbMediaWorkspaceContext } from './media-workspace.context'; import { UmbMediaWorkspaceEditElement } from './media-workspace-edit.element'; -import { IRoute, IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-media-workspace') @@ -27,7 +27,7 @@ export class UmbMediaWorkspaceElement extends UmbLitElement { { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts index c016dc7bb6..bfb95a7473 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts @@ -55,7 +55,7 @@ export class MemberGroupTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, - MemberGroupResource.getTreeMemberGroupItem({ + MemberGroupResource.getMemberGroupItem({ id: ids, }) ); 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 d97a7067e1..8639559f35 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 { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoutingInfo } from 'router-slot'; import { UmbWorkspaceMemberGroupContext } from './member-group-workspace.context'; import { UmbMemberGroupWorkspaceEditElement } from './member-group-workspace-edit.element'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; /** @@ -27,11 +27,11 @@ export class UmbMemberGroupWorkspaceElement extends UmbLitElement { #element = new UmbMemberGroupWorkspaceEditElement(); @state() - _routes: any[] = [ + _routes: IRoute[] = [ { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts index 7ec6a36505..0c1abf952a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts @@ -55,7 +55,7 @@ export class MemberTypeTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, - MemberTypeResource.getTreeMemberTypeItem({ + MemberTypeResource.getMemberTypeItem({ id: ids, }) ); 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 830a0ff7cd..f7cbc5f788 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,9 +1,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoutingInfo } from 'router-slot'; import { UmbMemberTypeWorkspaceEditElement } from './member-type-workspace-edit.element'; import { UmbMemberTypeWorkspaceContext } from './member-type-workspace.context'; +import { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-member-type-workspace') @@ -23,11 +23,11 @@ export class UmbMemberTypeWorkspaceElement extends UmbLitElement { #element = new UmbMemberTypeWorkspaceEditElement(); @state() - _routes: any[] = [ + _routes: IRoute[] = [ { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, 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 57e37d3dc3..dbe2e140cf 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,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; 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 type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-member-workspace') @@ -23,11 +23,11 @@ export class UmbMemberWorkspaceElement extends UmbLitElement { #element = new UmbMemberWorkspaceEditElement(); @state() - _routes: any[] = [ + _routes: IRoute[] = [ { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, 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 791dfa1758..9dce5a6dca 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 @@ -102,7 +102,7 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { } #navigateBack() { - window.history.pushState({}, '', '/section/packages/view/created'); + window.history.pushState({}, '', 'section/packages/view/created'); } render() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-repo/workspace/workspace-package.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-repo/workspace/workspace-package.element.ts index 8ab92ec194..8738fa7f4f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-repo/workspace/workspace-package.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-repo/workspace/workspace-package.element.ts @@ -35,7 +35,7 @@ export class UmbWorkspacePackageElement extends LitElement { } private _navigateBack() { - window.history.pushState({}, '', '/section/packages/view/installed'); + window.history.pushState({}, '', 'section/packages/view/installed'); } private _renderHeader() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts index 75414bd547..4f22319e4f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts @@ -1,6 +1,6 @@ import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import type { IRoute, IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import type { ManifestTree, ManifestWorkspace } from '@umbraco-cms/backoffice/extensions-registry'; import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -23,7 +23,7 @@ export class UmbCreatedPackagesSectionViewElement extends UmbLitElement { } private _createRoutes() { - const routes: any[] = [ + const routes: IRoute[] = [ { path: 'overview', component: () => import('./packages-created-overview.element'), @@ -35,10 +35,10 @@ export class UmbCreatedPackagesSectionViewElement extends UmbLitElement { routes.push({ path: `${workspace.meta.entityType}/:id`, component: () => createExtensionElement(workspace), - setup: (component: Promise, info: IRoutingInfo) => { - component.then((el: HTMLElement) => { - (el as any).entityId = info.match.params.id; - }); + setup: (component, info) => { + if (component) { + (component as any).entityId = info.match.params.id; + } }, }); routes.push({ 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 ced8c1afc8..0ae1e74eec 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 @@ -77,7 +77,7 @@ export class UmbPackagesCreatedOverviewElement extends UmbLitElement { } #createNewPackage() { - window.history.pushState({}, '', `/section/packages/view/created/package-builder`); + window.history.pushState({}, '', `section/packages/view/created/package-builder`); } render() { @@ -114,7 +114,7 @@ export class UmbPackagesCreatedOverviewElement extends UmbLitElement { #packageBuilder(p: PackageDefinitionResponseModel) { if (!p.id) return; - window.history.pushState({}, '', `/section/packages/view/created/package-builder/${p.id}`); + window.history.pushState({}, '', `section/packages/view/created/package-builder/${p.id}`); } #renderPagination() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/dashboard-examine-management.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/dashboard-examine-management.element.ts index 4fdafa6210..3c9b8fe4db 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/dashboard-examine-management.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/dashboard-examine-management.element.ts @@ -3,7 +3,8 @@ import { customElement, state } from 'lit/decorators.js'; import { UmbDashboardExamineIndexElement } from './views/section-view-examine-indexers'; import { UmbDashboardExamineSearcherElement } from './views/section-view-examine-searchers'; -import type { IRoute, IRoutingInfo, UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; +import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -26,7 +27,7 @@ export class UmbDashboardExamineManagementElement extends UmbLitElement { { path: `/index/:indexerName`, component: () => import('./views/section-view-examine-indexers'), - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { const element = component as UmbDashboardExamineIndexElement; element.indexName = info.match.params.indexerName; }, @@ -34,7 +35,7 @@ export class UmbDashboardExamineManagementElement extends UmbLitElement { { path: `/searcher/:searcherName`, component: () => import('./views/section-view-examine-searchers'), - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { const element = component as UmbDashboardExamineSearcherElement; element.searcherName = info.match.params.searcherName; }, 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 1828d225a1..cce292cb19 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 @@ -6,7 +6,7 @@ import { UMB_HEALTHCHECK_DASHBOARD_CONTEXT_TOKEN, } from './health-check-dashboard.context'; import { UmbHealthCheckContext } from './health-check.context'; -import type { IRoute, IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { ManifestHealthCheck } from '@umbraco-cms/backoffice/extensions-registry'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; @@ -20,7 +20,7 @@ export class UmbDashboardHealthCheckElement extends UmbLitElement { { path: `/:groupName`, component: () => import('./views/health-check-group.element'), - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { const element = component as UmbDashboardHealthCheckGroupElement; element.groupName = decodeURI(info.match.params.groupName); }, 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 a298ec6672..53296360cf 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 @@ -6,7 +6,7 @@ import { UMB_HEALTHCHECK_DASHBOARD_CONTEXT_TOKEN, UmbHealthCheckDashboardContext, } from '../health-check-dashboard.context'; -import { ensureSlash, path } from '@umbraco-cms/internal/router'; +import { ensureSlash, path } from '@umbraco-cms/backoffice/router'; import type { ManifestHealthCheck } from '@umbraco-cms/backoffice/extensions-registry'; import { HealthCheckGroupWithResultResponseModel, StatusResultTypeModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts index 22364ce3da..f1da0afaa9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts @@ -57,7 +57,7 @@ export class UmbDataTypeTreeServerDataSource implements UmbTreeDataSource { if (!ids) throw new Error('Ids are missing'); return tryExecuteAndNotify( this.#host, - DataTypeResource.getTreeDataTypeItem({ + DataTypeResource.getDataTypeItem({ id: ids, }) ); 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 93455e437f..0ea7ef470f 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 @@ -2,7 +2,7 @@ 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/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import './data-type-workspace-edit.element'; @@ -20,7 +20,7 @@ export class UmbDataTypeWorkspaceElement extends UmbLitElement { { path: 'create/:parentId', component: () => this.#element, - setup: async (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const parentId = info.match.params.parentId; this.#workspaceContext.createScaffold(parentId); }, @@ -28,7 +28,7 @@ export class UmbDataTypeWorkspaceElement extends UmbLitElement { { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts index 4059948227..025646ddc6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts @@ -1,8 +1,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoutingInfo } from 'router-slot'; import { UmbLanguageWorkspaceContext } from './language-workspace.context'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -22,20 +22,20 @@ export class UmbLanguageWorkspaceElement extends UmbLitElement { #routerPath? = ''; - #getComponentElement = () => { + #getComponentElement = async () => { if (this.#editorElement) { return this.#editorElement; } - return import('./language-workspace-edit.element'); + this.#editorElement = (await import('./language-workspace-edit.element')) as unknown as HTMLElement; + return this.#editorElement; }; @state() - _routes = [ + _routes: IRoute[] = [ { path: 'edit/:isoCode', component: this.#getComponentElement, - setup: (component: HTMLElement, info: IRoutingInfo) => { - this.#editorElement = component; + setup: (_component, info) => { this.removeControllerByUnique('_observeIsNew'); this.#languageWorkspaceContext.load(info.match.params.isoCode); }, @@ -43,8 +43,7 @@ export class UmbLanguageWorkspaceElement extends UmbLitElement { { path: 'create', component: this.#getComponentElement, - setup: async (component: HTMLElement) => { - this.#editorElement = component; + setup: async () => { this.#languageWorkspaceContext.createScaffold(); // Navigate to edit route when language is created: diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-date-range-selector.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-date-range-selector.element.ts index 4ae57c93cd..cab197ce92 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-date-range-selector.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-date-range-selector.element.ts @@ -1,7 +1,6 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, property, queryAll, state } from 'lit/decorators.js'; -import { query } from 'router-slot'; import { LogViewerDateRange, UmbLogViewerWorkspaceContext, 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 46382e5690..5a009a7deb 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 @@ -2,7 +2,6 @@ import './components'; import { map } from 'rxjs'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoutingInfo } from 'router-slot'; import { UUITextStyles } from '@umbraco-ui/uui-css'; import { repeat } from 'lit/directives/repeat.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../logviewer.context'; @@ -10,6 +9,7 @@ import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { umbExtensionsRegistry, createExtensionElement } from '@umbraco-cms/backoffice/extensions-api'; import { ManifestWorkspaceView, ManifestWorkspaceViewCollection } from '@umbraco-cms/backoffice/extensions-registry'; import { UmbRouterSlotInitEvent, UmbRouterSlotChangeEvent } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; //TODO make uui-input accept min and max values @customElement('umb-logviewer-workspace') @@ -51,7 +51,7 @@ export class UmbLogViewerWorkspaceElement extends UmbLitElement { private _workspaceViews: Array = []; @state() - private _routes: any[] = []; + private _routes: IRoute[] = []; @state() private _activePath?: string; @@ -104,13 +104,8 @@ export class UmbLogViewerWorkspaceElement extends UmbLitElement { component: () => { return createExtensionElement(view); }, - setup: (component: Promise | HTMLElement, info: IRoutingInfo) => { - // When its using import, we get an element, when using createExtensionElement we get a Promise. - if ((component as any).then) { - (component as any).then((el: any) => (el.manifest = view)); - } else { - (component as any).manifest = view; - } + setup: (component) => { + (component as any).manifest = view; }, }; }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts index e00c22f97b..f8ff932071 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts @@ -1,7 +1,7 @@ import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; -import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { ItemResponseModelBaseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; export interface RelationTypeTreeDataSource { getRootItems(): Promise>; - getItems(ids: Array): Promise>; + getItems(ids: Array): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts index 6afc19326f..1dc64b51b5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts @@ -78,7 +78,7 @@ export class RelationTypeTreeServerDataSource implements RelationTypeTreeDataSou return tryExecuteAndNotify( this.#host, - RelationTypeResource.getTreeRelationTypeItem({ + RelationTypeResource.getRelationTypeItem({ id: ids, }) ); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts index 3827c75a7e..eb96b21baf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts @@ -3,7 +3,8 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbRelationTypeWorkspaceContext } from './relation-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UmbRouterSlotInitEvent, IRoute, IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import './relation-type-workspace-edit.element'; @@ -27,7 +28,7 @@ export class UmbRelationTypeWorkspaceElement extends UmbLitElement { { path: 'create/:parentId', component: () => this.#element, - setup: async (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const parentId = info.match.params.parentId; this.#workspaceContext.createScaffold(parentId); }, @@ -35,7 +36,7 @@ export class UmbRelationTypeWorkspaceElement extends UmbLitElement { { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, 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 656f0c03e6..9b883b69bd 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 @@ -9,6 +9,7 @@ import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/back import type { ManifestCollectionView } from '@umbraco-cms/backoffice/extensions-registry'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import type { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; @customElement('umb-collection') export class UmbCollectionElement extends UmbLitElement { @@ -30,7 +31,7 @@ export class UmbCollectionElement extends UmbLitElement { ]; @state() - private _routes: Array = []; + private _routes: Array = []; @state() private _selection?: Array | null; @@ -95,7 +96,7 @@ export class UmbCollectionElement extends UmbLitElement { this._routes.push({ path: '**', - redirectTo: views?.[0]?.meta.pathName, + redirectTo: views?.[0]?.meta.pathName ?? '/', }); } 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 2654b4ed12..59ab21030a 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 @@ -5,6 +5,7 @@ import { state } from 'lit/decorators.js'; import { UmbSectionElement } from '../section/section.element'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section/section.context'; import { UmbBackofficeContext, UMB_BACKOFFICE_CONTEXT_TOKEN } from './backoffice.context'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import type { UmbRouterSlotChangeEvent } from '@umbraco-cms/internal/router'; import type { ManifestSection } from '@umbraco-cms/backoffice/extensions-registry'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -24,7 +25,7 @@ export class UmbBackofficeMainElement extends UmbLitElement { ]; @state() - private _routes: Array = []; + private _routes: Array = []; @state() private _sections: Array = []; @@ -63,10 +64,8 @@ export class UmbBackofficeMainElement extends UmbLitElement { return { path: this._routePrefix + section.meta.pathname, component: () => createExtensionElementOrFallback(section, 'umb-section'), - setup: (component: Promise) => { - component.then((element) => { - element.manifest = section; - }); + setup: (component) => { + (component as UmbSectionElement).manifest = section; }, }; }); 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 890f27e0a9..a75bcc02fc 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 @@ -3,7 +3,8 @@ import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { map, of } from 'rxjs'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section.context'; -import { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; +import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; import type { ManifestDashboard, ManifestSectionView } from '@umbraco-cms/backoffice/extensions-registry'; import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -21,7 +22,7 @@ export class UmbSectionViewsElement extends UmbLitElement { display: flex; justify-content: space-between; align-items: center; - height:var(--umb-header-layout-height); + height: var(--umb-header-layout-height); box-sizing: border-box; } @@ -52,7 +53,7 @@ export class UmbSectionViewsElement extends UmbLitElement { private _activePath?: string; @state() - private _routes: Array = []; + private _routes: Array = []; private _sectionContext?: UmbSectionContext; private _extensionsObserver?: UmbObserverController; 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 3cc798c083..2a9b530b68 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 @@ -6,7 +6,7 @@ import type { UmbWorkspaceElement } from '../workspace/workspace.element'; import type { UmbSectionViewsElement } from './section-views/section-views.element'; import type { ManifestSection, ManifestSectionSidebarApp } from '@umbraco-cms/backoffice/extensions-registry'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; -import type { IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import './section-sidebar-menu/section-sidebar-menu.element'; @@ -37,7 +37,7 @@ export class UmbSectionElement extends UmbLitElement { public manifest?: ManifestSection; @state() - private _routes?: Array; + private _routes?: Array; @state() private _menus?: Array>; @@ -55,15 +55,15 @@ export class UmbSectionElement extends UmbLitElement { { path: 'workspace/:entityType', component: () => import('../workspace/workspace.element'), - setup: (element: UmbWorkspaceElement, info: IRoutingInfo) => { - element.entityType = info.match.params.entityType; + setup: (element, info) => { + (element as UmbWorkspaceElement).entityType = info.match.params.entityType; }, }, { path: '**', component: () => import('../section/section-views/section-views.element'), - setup: (element: UmbSectionViewsElement) => { - element.sectionAlias = this.manifest?.alias; + setup: (element) => { + (element as UmbSectionViewsElement).sectionAlias = this.manifest?.alias; }, }, ]; 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 1c430fa534..48c6859ea2 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 @@ -4,7 +4,8 @@ import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; import { repeat } from 'lit/directives/repeat.js'; -import type { UmbRouterSlotInitEvent, UmbRouterSlotChangeEvent, IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; +import type { UmbRouterSlotInitEvent, UmbRouterSlotChangeEvent } from '@umbraco-cms/internal/router'; import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import type { ManifestWorkspaceView, @@ -97,7 +98,7 @@ export class UmbWorkspaceLayoutElement extends UmbLitElement { private _workspaceViews: Array = []; @state() - private _routes?: any[]; + private _routes?: IRoute[]; @state() private _routerPath?: string; @@ -130,16 +131,18 @@ export class UmbWorkspaceLayoutElement extends UmbLitElement { if (view.type === 'workspaceViewCollection') { return import( '../../../../shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element' - ); + ) as unknown as Promise; } return createExtensionElement(view); }, - setup: (component: Promise | HTMLElement, info: IRoutingInfo) => { - // When its using import, we get an element, when using createExtensionElement we get a Promise. - if ((component as any).then) { - (component as any).then((el: any) => (el.manifest = view)); + setup: (component, info) => { + if (component && 'manifest' in component) { + component.manifest = view; } else { - (component as any).manifest = view; + console.group(`[UmbWorkspaceLayout] Failed to setup component for route: ${info.match.route.path}`); + console.log('Matched route', info.match.route); + console.error('Missing property "manifest" on component', component); + console.groupEnd(); } }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid-inner-test.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid-inner-test.element.ts index e5d20fa8f0..682577eec5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid-inner-test.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid-inner-test.element.ts @@ -1,9 +1,9 @@ import { html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { IRoute, IRoutingInfo } from 'router-slot'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; +import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; /** * @element umb-property-editor-ui-block-grid-inner-test @@ -28,7 +28,7 @@ export class UmbPropertyEditorUIBlockGridInnerTestElement extends UmbLitElement component: () => { return import('./property-editor-ui-block-grid-inner-test.element'); }, - setup: (component: Promise | HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { console.log('block route inner', info); if (component instanceof HTMLElement) { (component as any).name = 'inner-1'; @@ -41,7 +41,7 @@ export class UmbPropertyEditorUIBlockGridInnerTestElement extends UmbLitElement component: () => { return import('./property-editor-ui-block-grid-inner-test.element'); }, - setup: (component: Promise | HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { console.log('block route inner', info); if (component instanceof HTMLElement) { (component as any).name = 'inner-2'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.element.ts index 8939911174..774bdc20b0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.element.ts @@ -1,11 +1,11 @@ import { html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { IRoute, IRoutingInfo } from 'router-slot'; import { UmbVariantId } from '../../../../shared/variants/variant-id.class'; import { UMB_WORKSPACE_VARIANT_CONTEXT_TOKEN } from '../../../../shared/components/workspace/workspace-variant/workspace-variant.context'; import { UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN } from '../../../../shared/components/workspace-property/workspace-property.context'; -import { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; +import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; import { UmbPropertyEditorElement } from '@umbraco-cms/backoffice/property-editor'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -56,7 +56,7 @@ export class UmbPropertyEditorUIBlockGridElement extends UmbLitElement implement component: () => { return import('./property-editor-ui-block-grid-inner-test.element'); }, - setup: (component: Promise | HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { console.log('block route', info); if (component instanceof HTMLElement) { (component as any).name = 'block-grid-1'; @@ -69,7 +69,7 @@ export class UmbPropertyEditorUIBlockGridElement extends UmbLitElement implement component: () => { return import('./property-editor-ui-block-grid-inner-test.element'); }, - setup: (component: Promise | HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { console.log('block route', info); if (component instanceof HTMLElement) { (component as any).name = 'block-grid-2'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts index 1618d1ee59..5b7674f6df 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts @@ -60,7 +60,7 @@ export class UmbStylesheetTreeServerDataSource async getItems(path: Array) { return tryExecuteAndNotify( this.#host, - StylesheetResource.getTreeStylesheetItem({ + StylesheetResource.getStylesheetItem({ path, }) ); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts index a0e2ba7e85..0d9d3487c1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts @@ -1,10 +1,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoutingInfo } from 'router-slot'; import { serverFilePathFromUrlFriendlyPath } from '../../utils'; import { UmbStylesheetWorkspaceEditElement } from './stylesheet-workspace-edit.element'; import { UmbStylesheetWorkspaceContext } from './stylesheet-workspace.context'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-stylesheet-workspace') @@ -24,11 +24,11 @@ export class UmbStylesheetWorkspaceElement extends UmbLitElement { #element = new UmbStylesheetWorkspaceEditElement(); @state() - _routes: any[] = [ + _routes: IRoute[] = [ { path: 'edit/:path', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const path = info.match.params.path; const serverPath = serverFilePathFromUrlFriendlyPath(path); this.#workspaceContext.load(serverPath); 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 c93ced1dd9..934e2e05ed 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,11 +1,8 @@ import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; -import type { - EntityTreeItemResponseModel, - PagedEntityTreeItemResponseModel, -} from '@umbraco-cms/backoffice/backend-api'; +import type { ItemResponseModelBaseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; export interface TemplateTreeDataSource { getRootItems(): Promise>; getChildrenOf(parentId: string): Promise>; - getItems(ids: Array): Promise>; + getItems(ids: Array): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts index cdc77d176b..ed7be4b8d9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts @@ -64,7 +64,7 @@ export class TemplateTreeServerDataSource implements TemplateTreeDataSource { return tryExecuteAndNotify( this.#host, - TemplateResource.getTreeTemplateItem({ + TemplateResource.getTemplateItem({ id: ids, }) ); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts index 9113af0673..a24572eb9f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts @@ -64,7 +64,7 @@ export class DictionaryTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, - DictionaryResource.getTreeDictionaryItem({ + DictionaryResource.getDictionaryItem({ id: ids, }) ); 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 22303e180b..68d93ba9c5 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,9 +1,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoutingInfo } from 'router-slot'; import { UmbDictionaryWorkspaceContext } from './dictionary-workspace.context'; import { UmbDictionaryWorkspaceEditElement } from './dictionary-workspace-edit.element'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-dictionary-workspace') @@ -14,11 +14,11 @@ export class UmbWorkspaceDictionaryElement extends UmbLitElement { #element = new UmbDictionaryWorkspaceEditElement(); @state() - _routes: any[] = [ + _routes: IRoute[] = [ { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-profile.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-profile.element.ts index a1baf152c4..840b280c6a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-profile.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-profile.element.ts @@ -42,7 +42,7 @@ export class UmbUserProfileAppProfileElement extends UmbLitElement { private _edit() { if (!this._currentUser) return; - history.pushState(null, '', '/section/users/view/users/user/' + this._currentUser.id); //TODO Change to a tag with href and make dynamic + history.pushState(null, '', 'section/users/view/users/user/' + this._currentUser.id); //TODO Change to a tag with href and make dynamic //TODO Implement modal routing for the current-user-modal, so that the modal closes when navigating to the edit profile page } private _changePassword() { 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 aae4ff5fe6..e27f918e93 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 @@ -7,7 +7,7 @@ import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestWorkspaceAction } from '@umbraco-cms/backoffice/extensions-registry'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; @customElement('umb-user-group-workspace') export class UmbUserGroupWorkspaceElement extends UmbLitElement { @@ -47,11 +47,11 @@ export class UmbUserGroupWorkspaceElement extends UmbLitElement { } @state() - _routes: any[] = [ + _routes: IRoute[] = [ { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts index 3523c9c190..2cebe636ce 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.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 { UmbUserStore, UMB_USER_STORE_CONTEXT_TOKEN } from '../../../users/repository/user.store'; -import type { IRoute, IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { umbExtensionsRegistry, createExtensionElement } from '@umbraco-cms/backoffice/extensions-api'; import './list-view-layouts/table/workspace-view-users-table.element'; @@ -65,7 +65,7 @@ export class UmbSectionViewUsersElement extends UmbLitElement { } private _createRoutes() { - const routes: any[] = [ + const routes: IRoute[] = [ { path: 'overview', component: () => import('./workspace-view-users-overview.element'), @@ -77,10 +77,10 @@ export class UmbSectionViewUsersElement extends UmbLitElement { routes.push({ path: `${workspace.meta.entityType}/:id`, component: () => createExtensionElement(workspace), - setup: (component: Promise, info: IRoutingInfo) => { - component.then((el: HTMLElement) => { - (el as any).entityId = info.match.params.id; - }); + setup: (component, info) => { + if (component) { + (component as any).entityId = info.match.params.id; + } }, }); routes.push({ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-overview.element.ts index 5aa001acf5..b770de3c2b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-overview.element.ts @@ -9,7 +9,7 @@ import { UMB_INVITE_USER_MODAL, UMB_CREATE_USER_MODAL, } from '@umbraco-cms/backoffice/modal'; -import type { IRoute } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/create-user/create-user-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/create-user/create-user-modal.element.ts index d86530ad45..39573a4e2c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/create-user/create-user-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/create-user/create-user-modal.element.ts @@ -126,7 +126,7 @@ export class UmbCreateUserModalElement extends UmbModalBaseElement { if (!this._createdUser) return; this._closeModal(); - history.pushState(null, '', '/section/users/view/users/user/' + this._createdUser?.id); //TODO: URL Should be dynamic + history.pushState(null, '', 'section/users/view/users/user/' + this._createdUser?.id); //TODO: URL Should be dynamic } private _renderForm() { 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 29f5f99569..7cfea7028f 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 @@ -4,7 +4,7 @@ import { customElement, state } from 'lit/decorators.js'; import { UmbUserWorkspaceContext } from './user-workspace.context'; import { UmbUserWorkspaceEditElement } from './user-workspace-edit.element'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import '../../../shared/components/input-user-group/input-user-group.element'; import '../../../shared/property-editors/uis/document-picker/property-editor-ui-document-picker.element'; @@ -18,11 +18,11 @@ export class UmbUserWorkspaceElement extends UmbLitElement { #element = new UmbUserWorkspaceEditElement(); @state() - _routes: any[] = [ + _routes: IRoute[] = [ { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, 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 d3c5361842..fbbe29d96c 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/index.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/index.ts @@ -1,4 +1,3 @@ -export * from 'router-slot'; export * from './router-slot.element'; export * from './router-slot-change.event'; export * from './router-slot-init.event'; 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 a7c2fbf904..d055f41278 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 @@ -1,5 +1,5 @@ -import type { IRoute } from 'router-slot/model'; -import { RouterSlot } from 'router-slot'; +// eslint-disable-next-line local-rules/no-external-imports +import { RouterSlot } from 'router-slot/router-slot'; import { css, html, PropertyValueMap } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import { UmbLitElement } from '../lit-element'; @@ -36,10 +36,10 @@ export class UmbRouterSlotElement extends UmbLitElement { @property() public get routes(): UmbRoute[] | undefined { - return (this.#router as any).routes; + return this.#router.routes; } public set routes(value: UmbRoute[] | undefined) { - this.#router.routes = (value as IRoute[]) || []; + this.#router.routes = value || []; } private _routerPath?: string; @@ -57,7 +57,7 @@ export class UmbRouterSlotElement extends UmbLitElement { } #routeContext = new UmbRouteContext(this, (contextRoutes) => { - (this.#modalRouter as any).routes = contextRoutes; + this.#modalRouter.routes = contextRoutes; // Force a render? this.#modalRouter.render(); }); 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 7bb1c6c9e4..7b6f8921df 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 @@ -253,7 +253,7 @@ export class UmbInstallerDatabaseElement extends UmbLitElement { // TODO: The post install will probably return a user in the future, so we have to set that context somewhere to let the client know that it is authenticated console.warn('TODO: Set up real authentication'); sessionStorage.setItem('is-authenticated', 'true'); - history.replaceState(null, '', '/content'); + history.replaceState(null, '', 'section/content'); } private _handleRejected(e: ProblemDetailsModel) { 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 2ff39b81f7..b483b5c8e2 100644 --- a/src/Umbraco.Web.UI.Client/src/upgrader/upgrader.element.ts +++ b/src/Umbraco.Web.UI.Client/src/upgrader/upgrader.element.ts @@ -64,7 +64,7 @@ export class UmbUpgraderElement extends UmbLitElement { if (error) { this.errorMessage = error.detail || 'Unknown error, please try again'; } else { - history.pushState(null, '', '/'); + history.pushState(null, '', 'section/content'); } this.upgrading = false;