Merge branch 'v15/dev' into v15/feature/member-sidebar-menu
This commit is contained in:
@@ -2,7 +2,7 @@ import { defineConfig } from '@hey-api/openapi-ts';
|
||||
|
||||
export default defineConfig({
|
||||
client: 'fetch',
|
||||
input: 'https://raw.githubusercontent.com/umbraco/Umbraco-CMS/v14/dev/src/Umbraco.Cms.Api.Management/OpenApi.json',
|
||||
input: 'https://raw.githubusercontent.com/umbraco/Umbraco-CMS/v15/dev/src/Umbraco.Cms.Api.Management/OpenApi.json',
|
||||
output: {
|
||||
path: 'src/external/backend-api/src',
|
||||
format: 'prettier',
|
||||
|
||||
961
src/Umbraco.Web.UI.Client/package-lock.json
generated
961
src/Umbraco.Web.UI.Client/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -190,8 +190,8 @@
|
||||
"@types/diff": "^5.2.1",
|
||||
"@types/dompurify": "^3.0.5",
|
||||
"@types/uuid": "^10.0.0",
|
||||
"@umbraco-ui/uui": "^1.9.0",
|
||||
"@umbraco-ui/uui-css": "^1.9.0",
|
||||
"@umbraco-ui/uui": "^v1.10.0-rc.0",
|
||||
"@umbraco-ui/uui-css": "^v1.10.0-rc.0",
|
||||
"base64-js": "^1.5.1",
|
||||
"diff": "^5.2.0",
|
||||
"dompurify": "^3.1.6",
|
||||
|
||||
@@ -10,6 +10,7 @@ import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import type { UmbExtensionManifestInitializer } from '@umbraco-cms/backoffice/extension-api';
|
||||
import { UMB_AUTH_CONTEXT } from '@umbraco-cms/backoffice/auth';
|
||||
import { UMB_CURRENT_USER_CONTEXT } from '@umbraco-cms/backoffice/current-user';
|
||||
import { UmbSysinfoRepository } from '@umbraco-cms/backoffice/sysinfo';
|
||||
|
||||
export class UmbBackofficeContext extends UmbContextBase<UmbBackofficeContext> {
|
||||
#activeSectionAlias = new UmbStringState(undefined);
|
||||
@@ -76,6 +77,12 @@ export class UmbBackofficeContext extends UmbContextBase<UmbBackofficeContext> {
|
||||
public setActiveSectionAlias(alias: string) {
|
||||
this.#activeSectionAlias.setValue(alias);
|
||||
}
|
||||
|
||||
public async serverUpgradeCheck(): Promise<boolean> {
|
||||
const repository = new UmbSysinfoRepository(this);
|
||||
const check = await repository.serverUpgradeCheck();
|
||||
return !!check;
|
||||
}
|
||||
}
|
||||
|
||||
export const UMB_BACKOFFICE_CONTEXT = new UmbContextToken<UmbBackofficeContext>('UmbBackofficeContext');
|
||||
|
||||
@@ -17,6 +17,7 @@ const CORE_PACKAGES = [
|
||||
import('../../packages/data-type/umbraco-package.js'),
|
||||
import('../../packages/dictionary/umbraco-package.js'),
|
||||
import('../../packages/documents/umbraco-package.js'),
|
||||
import('../../packages/extension-insights/umbraco-package.js'),
|
||||
import('../../packages/health-check/umbraco-package.js'),
|
||||
import('../../packages/help/umbraco-package.js'),
|
||||
import('../../packages/language/umbraco-package.js'),
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { isCurrentUserAnAdmin } from '@umbraco-cms/backoffice/current-user';
|
||||
import { UMB_BACKOFFICE_CONTEXT } from '../backoffice.context.js';
|
||||
import { isCurrentUserAnAdmin } from '@umbraco-cms/backoffice/current-user';
|
||||
import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit';
|
||||
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
|
||||
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
|
||||
import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal';
|
||||
import { UMB_SYSINFO_MODAL } from '@umbraco-cms/backoffice/sysinfo';
|
||||
import { UMB_NEWVERSION_MODAL, UMB_SYSINFO_MODAL } from '@umbraco-cms/backoffice/sysinfo';
|
||||
|
||||
@customElement('umb-backoffice-header-logo')
|
||||
export class UmbBackofficeHeaderLogoElement extends UmbLitElement {
|
||||
@@ -14,6 +14,11 @@ export class UmbBackofficeHeaderLogoElement extends UmbLitElement {
|
||||
@state()
|
||||
private _isUserAdmin = false;
|
||||
|
||||
@state()
|
||||
private _serverUpgradeCheck = false;
|
||||
|
||||
#backofficeContext?: typeof UMB_BACKOFFICE_CONTEXT.TYPE;
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
@@ -26,6 +31,8 @@ export class UmbBackofficeHeaderLogoElement extends UmbLitElement {
|
||||
},
|
||||
'_observeVersion',
|
||||
);
|
||||
|
||||
this.#backofficeContext = context;
|
||||
});
|
||||
|
||||
this.#isAdmin();
|
||||
@@ -33,6 +40,10 @@ export class UmbBackofficeHeaderLogoElement extends UmbLitElement {
|
||||
|
||||
async #isAdmin() {
|
||||
this._isUserAdmin = await isCurrentUserAnAdmin(this);
|
||||
|
||||
if (this._isUserAdmin) {
|
||||
this._serverUpgradeCheck = this.#backofficeContext ? await this.#backofficeContext.serverUpgradeCheck() : false;
|
||||
}
|
||||
}
|
||||
|
||||
override render() {
|
||||
@@ -50,6 +61,14 @@ export class UmbBackofficeHeaderLogoElement extends UmbLitElement {
|
||||
height="82"
|
||||
loading="lazy" />
|
||||
<span>${this._version}</span>
|
||||
|
||||
${this._serverUpgradeCheck
|
||||
? html`<uui-button
|
||||
@click=${this.#openNewVersion}
|
||||
color="danger"
|
||||
label=${this.localize.term('general_newVersionAvailable')}></uui-button>`
|
||||
: ''}
|
||||
|
||||
<a href="https://umbraco.com" target="_blank" rel="noopener">Umbraco.com</a>
|
||||
|
||||
${this._isUserAdmin
|
||||
@@ -72,6 +91,14 @@ export class UmbBackofficeHeaderLogoElement extends UmbLitElement {
|
||||
.catch(() => {});
|
||||
}
|
||||
|
||||
async #openNewVersion() {
|
||||
const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT);
|
||||
modalManager
|
||||
.open(this, UMB_NEWVERSION_MODAL)
|
||||
.onSubmit()
|
||||
.catch(() => {});
|
||||
}
|
||||
|
||||
static override styles = [
|
||||
UmbTextStyles,
|
||||
css`
|
||||
|
||||
@@ -910,6 +910,7 @@ export default {
|
||||
lastUpdated: 'Last Updated',
|
||||
skipToMenu: 'Skip to menu',
|
||||
skipToContent: 'Skip to content',
|
||||
newVersionAvailable: 'Ny version tilgængelig',
|
||||
},
|
||||
colors: {
|
||||
blue: 'Blå',
|
||||
|
||||
@@ -879,6 +879,7 @@ export default {
|
||||
header: 'Kopf',
|
||||
systemField: 'System Feld',
|
||||
lastUpdated: 'Zuletzt geändert',
|
||||
newVersionAvailable: 'Neue Version verfügbar',
|
||||
},
|
||||
colors: {
|
||||
blue: 'Blau',
|
||||
|
||||
@@ -921,6 +921,7 @@ export default {
|
||||
skipToMenu: 'Skip to menu',
|
||||
skipToContent: 'Skip to content',
|
||||
restore: 'Restore',
|
||||
newVersionAvailable: 'New version available',
|
||||
},
|
||||
colors: {
|
||||
blue: 'Blue',
|
||||
|
||||
@@ -934,6 +934,7 @@ export default {
|
||||
media: 'Media',
|
||||
revert: 'Revert',
|
||||
validate: 'Validate',
|
||||
newVersionAvailable: 'New version available',
|
||||
},
|
||||
colors: {
|
||||
blue: 'Blue',
|
||||
|
||||
@@ -1,14 +1,21 @@
|
||||
export type ApiRequestOptions<T = unknown> = {
|
||||
readonly method: 'GET' | 'PUT' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'PATCH';
|
||||
readonly url: string;
|
||||
readonly path?: Record<string, unknown>;
|
||||
readonly cookies?: Record<string, unknown>;
|
||||
readonly headers?: Record<string, unknown>;
|
||||
readonly query?: Record<string, unknown>;
|
||||
readonly formData?: Record<string, unknown>;
|
||||
readonly body?: any;
|
||||
readonly cookies?: Record<string, unknown>;
|
||||
readonly errors?: Record<number | string, string>;
|
||||
readonly formData?: Record<string, unknown> | any[] | Blob | File;
|
||||
readonly headers?: Record<string, unknown>;
|
||||
readonly mediaType?: string;
|
||||
readonly method:
|
||||
| 'DELETE'
|
||||
| 'GET'
|
||||
| 'HEAD'
|
||||
| 'OPTIONS'
|
||||
| 'PATCH'
|
||||
| 'POST'
|
||||
| 'PUT';
|
||||
readonly path?: Record<string, unknown>;
|
||||
readonly query?: Record<string, unknown>;
|
||||
readonly responseHeader?: string;
|
||||
readonly responseTransformer?: (data: unknown) => Promise<T>;
|
||||
readonly errors?: Record<number | string, string>;
|
||||
readonly url: string;
|
||||
};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@@ -62,7 +62,7 @@ export class UmbMockEntityTreeManager<T extends { id: string; parent?: { id: str
|
||||
const destinationItem = this.#db.read(destinationId);
|
||||
if (!destinationItem) throw new Error(`Destination item with id ${destinationId} not found`);
|
||||
|
||||
// TODO: Notice we don't add numbers to the 'copy' name.
|
||||
// Notice we don't add numbers to the 'copy' name.
|
||||
const items: Array<any> = [];
|
||||
|
||||
ids.forEach((id) => {
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
const { rest } = window.MockServiceWorker;
|
||||
import {
|
||||
type ServerStatusResponseModel,
|
||||
type ServerInformationResponseModel,
|
||||
type ServerTroubleshootingResponseModel,
|
||||
RuntimeLevelModel,
|
||||
RuntimeModeModel,
|
||||
type GetServerUpgradeCheckResponse,
|
||||
type GetServerTroubleshootingResponse,
|
||||
type GetServerInformationResponse,
|
||||
type GetServerConfigurationResponse,
|
||||
type GetServerStatusResponse,
|
||||
} from '@umbraco-cms/backoffice/external/backend-api';
|
||||
import { umbracoPath } from '@umbraco-cms/backoffice/utils';
|
||||
|
||||
@@ -12,7 +14,7 @@ export const serverRunningHandler = rest.get(umbracoPath('/server/status'), (_re
|
||||
return res(
|
||||
// Respond with a 200 status code
|
||||
ctx.status(200),
|
||||
ctx.json<ServerStatusResponseModel>({
|
||||
ctx.json<GetServerStatusResponse>({
|
||||
serverStatus: RuntimeLevelModel.RUN,
|
||||
}),
|
||||
);
|
||||
@@ -22,7 +24,7 @@ export const serverMustInstallHandler = rest.get(umbracoPath('/server/status'),
|
||||
return res(
|
||||
// Respond with a 200 status code
|
||||
ctx.status(200),
|
||||
ctx.json<ServerStatusResponseModel>({
|
||||
ctx.json<GetServerStatusResponse>({
|
||||
serverStatus: RuntimeLevelModel.INSTALL,
|
||||
}),
|
||||
);
|
||||
@@ -32,20 +34,41 @@ export const serverMustUpgradeHandler = rest.get(umbracoPath('/server/status'),
|
||||
return res(
|
||||
// Respond with a 200 status code
|
||||
ctx.status(200),
|
||||
ctx.json<ServerStatusResponseModel>({
|
||||
ctx.json<GetServerStatusResponse>({
|
||||
serverStatus: RuntimeLevelModel.UPGRADE,
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
export const serverInformationHandlers = [
|
||||
rest.get(umbracoPath('/server/configuration'), (_req, res, ctx) => {
|
||||
return res(
|
||||
// Respond with a 200 status code
|
||||
ctx.status(200),
|
||||
ctx.json<GetServerConfigurationResponse>({
|
||||
allowPasswordReset: true,
|
||||
versionCheckPeriod: 7, // days
|
||||
}),
|
||||
);
|
||||
}),
|
||||
rest.get(umbracoPath('/server/upgrade-check'), (_req, res, ctx) => {
|
||||
return res(
|
||||
// Respond with a 200 status code
|
||||
ctx.status(200),
|
||||
ctx.json<GetServerUpgradeCheckResponse>({
|
||||
type: 'Minor',
|
||||
comment: "14.2.0.0 is released. Upgrade today - it's free!",
|
||||
url: 'https://our.umbraco.com/download/releases/1420',
|
||||
}),
|
||||
);
|
||||
}),
|
||||
rest.get(umbracoPath('/server/information'), (_req, res, ctx) => {
|
||||
return res(
|
||||
// Respond with a 200 status code
|
||||
ctx.status(200),
|
||||
ctx.json<ServerInformationResponseModel>({
|
||||
version: '14.0.0-preview004',
|
||||
assemblyVersion: '14.0.0-preview004',
|
||||
ctx.json<GetServerInformationResponse>({
|
||||
version: '14.0.0',
|
||||
assemblyVersion: '14.0.0',
|
||||
baseUtcOffset: '01:00:00',
|
||||
runtimeMode: RuntimeModeModel.BACKOFFICE_DEVELOPMENT,
|
||||
}),
|
||||
@@ -55,7 +78,7 @@ export const serverInformationHandlers = [
|
||||
return res(
|
||||
// Respond with a 200 status code
|
||||
ctx.status(200),
|
||||
ctx.json<ServerTroubleshootingResponseModel>({
|
||||
ctx.json<GetServerTroubleshootingResponse>({
|
||||
items: [
|
||||
{ name: 'Umbraco base url', data: location.origin },
|
||||
{ name: 'Mocked server', data: 'true' },
|
||||
|
||||
@@ -21,6 +21,6 @@ export interface ManifestBlockEditorCustomView extends ManifestElement<UmbBlockE
|
||||
|
||||
declare global {
|
||||
interface UmbExtensionManifestMap {
|
||||
blockEditorCustomView: ManifestBlockEditorCustomView;
|
||||
umbBlockEditorCustomView: ManifestBlockEditorCustomView;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,11 +47,10 @@ export class UmbRefListBlockElement extends UmbLitElement {
|
||||
}
|
||||
|
||||
override render() {
|
||||
// TODO: apply `slot="name"` to the `umb-ufm-render` element, when UUI supports it. [NL]
|
||||
return html`
|
||||
<uui-ref-node standalone href=${this._workspaceEditPath ?? '#'}>
|
||||
<umb-icon slot="icon" .name=${this.icon}></umb-icon>
|
||||
<umb-ufm-render inline .markdown=${this.label} .value=${this._content}></umb-ufm-render>
|
||||
<umb-ufm-render slot="name" inline .markdown=${this.label} .value=${this._content}></umb-ufm-render>
|
||||
</uui-ref-node>
|
||||
`;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
import type { UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export type BlockWorkspaceHasSettingsConditionConfig =
|
||||
UmbConditionConfigBase<'Umb.Condition.BlockWorkspaceHasSettings'>;
|
||||
|
||||
export type BlockEntryShowContentEditConditionConfig =
|
||||
UmbConditionConfigBase<'Umb.Condition.BlockEntryShowContentEdit'>;
|
||||
|
||||
declare global {
|
||||
interface UmbExtensionConditionMap {
|
||||
umbBlock: BlockEntryShowContentEditConditionConfig | BlockWorkspaceHasSettingsConditionConfig;
|
||||
}
|
||||
}
|
||||
@@ -4,10 +4,11 @@ import { html, customElement, property, state, ifDefined } from '@umbraco-cms/ba
|
||||
import type { UUIButtonState } from '@umbraco-cms/backoffice/external/uui';
|
||||
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
|
||||
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbBackofficeManifestKind, ManifestCollectionAction } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestCollectionAction } from '@umbraco-cms/backoffice/collection';
|
||||
import { createExtensionApi } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
const manifest: UmbBackofficeManifestKind = {
|
||||
const manifest: UmbExtensionManifestKind = {
|
||||
type: 'kind',
|
||||
alias: 'Umb.Kind.CollectionAction.Button',
|
||||
matchKind: 'button',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { ManifestCollectionView } from '../extension-registry/models/index.js';
|
||||
import type { ManifestCollectionView } from './extensions/index.js';
|
||||
import { umbExtensionsRegistry } from '../extension-registry/index.js';
|
||||
import { UmbCollectionViewManager } from './collection-view.manager.js';
|
||||
import { expect } from '@open-wc/testing';
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import type { ManifestCollectionView } from './extensions/index.js';
|
||||
import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
|
||||
import { UmbExtensionsManifestInitializer, createExtensionElement } from '@umbraco-cms/backoffice/extension-api';
|
||||
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import { UmbArrayState, UmbObjectState, UmbStringState } from '@umbraco-cms/backoffice/observable-api';
|
||||
import type { ManifestCollectionView } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import type { UmbRoute } from '@umbraco-cms/backoffice/router';
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import type { UmbCollectionConfiguration } from './types.js';
|
||||
import type { ManifestCollection } from './extensions/index.js';
|
||||
import { customElement, property } from '@umbraco-cms/backoffice/external/lit';
|
||||
import { UmbExtensionElementAndApiSlotElementBase } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestCollection } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbApi } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
const elementName = 'umb-collection';
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import type { UmbDefaultCollectionContext } from '../default/index.js';
|
||||
import { UMB_COLLECTION_CONTEXT } from '../default/index.js';
|
||||
import type { UmbCollectionLayoutConfiguration } from '../types.js';
|
||||
import type { ManifestCollectionView } from '../extensions/index.js';
|
||||
import { css, html, customElement, state, nothing, repeat, query } from '@umbraco-cms/backoffice/external/lit';
|
||||
import { observeMultiple } from '@umbraco-cms/backoffice/observable-api';
|
||||
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
|
||||
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
|
||||
import { UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/workspace';
|
||||
import type { ManifestCollectionView } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UUIPopoverContainerElement } from '@umbraco-cms/backoffice/external/uui';
|
||||
|
||||
interface UmbCollectionViewLayout {
|
||||
|
||||
@@ -8,6 +8,7 @@ import type {
|
||||
} from '../types.js';
|
||||
import type { UmbCollectionFilterModel } from '../collection-filter-model.interface.js';
|
||||
import type { UmbCollectionRepository } from '../repository/collection-repository.interface.js';
|
||||
import type { ManifestCollection } from '../extensions/index.js';
|
||||
import { UMB_COLLECTION_CONTEXT } from './collection-default.context-token.js';
|
||||
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import { UmbArrayState, UmbNumberState, UmbObjectState } from '@umbraco-cms/backoffice/observable-api';
|
||||
@@ -15,7 +16,7 @@ import { UmbChangeEvent } from '@umbraco-cms/backoffice/event';
|
||||
import { UmbContextBase } from '@umbraco-cms/backoffice/class-api';
|
||||
import { UmbExtensionApiInitializer } from '@umbraco-cms/backoffice/extension-api';
|
||||
import { UmbSelectionManager, UmbPaginationManager } from '@umbraco-cms/backoffice/utils';
|
||||
import type { ManifestCollection, ManifestRepository } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestRepository } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbApi } from '@umbraco-cms/backoffice/extension-api';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import {
|
||||
|
||||
@@ -4,10 +4,10 @@ import { css, html, customElement, state } from '@umbraco-cms/backoffice/externa
|
||||
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
|
||||
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
|
||||
import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbRoute } from '@umbraco-cms/backoffice/router';
|
||||
|
||||
const manifest: UmbBackofficeManifestKind = {
|
||||
const manifest: UmbExtensionManifestKind = {
|
||||
type: 'kind',
|
||||
alias: 'Umb.Kind.Collection.Default',
|
||||
matchKind: 'default',
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
/**
|
||||
@@ -6,7 +5,9 @@ import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbr
|
||||
* For example for content you may wish to create a new document etc
|
||||
*/
|
||||
// TODO: create interface for API
|
||||
export interface ManifestCollectionAction extends ManifestElementAndApi, ManifestWithDynamicConditions<ConditionTypes> {
|
||||
export interface ManifestCollectionAction
|
||||
extends ManifestElementAndApi,
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'collectionAction';
|
||||
meta: MetaCollectionAction;
|
||||
}
|
||||
@@ -15,3 +16,9 @@ export interface MetaCollectionAction {
|
||||
label: string;
|
||||
href?: string;
|
||||
}
|
||||
|
||||
declare global {
|
||||
interface UmbExtensionManifestMap {
|
||||
umbCollectionAction: ManifestCollectionAction;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { ManifestElement, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export interface ManifestCollectionView extends ManifestElement, ManifestWithDynamicConditions<ConditionTypes> {
|
||||
export interface ManifestCollectionView extends ManifestElement, ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'collectionView';
|
||||
meta: MetaCollectionView;
|
||||
}
|
||||
@@ -37,3 +36,9 @@ export interface ConditionsCollectionView {
|
||||
*/
|
||||
entityType: string;
|
||||
}
|
||||
|
||||
declare global {
|
||||
interface UmbExtensionManifestMap {
|
||||
umbCollectionView: ManifestCollectionView;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,8 @@
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export interface ManifestCollection extends ManifestElementAndApi, ManifestWithDynamicConditions<ConditionTypes> {
|
||||
export interface ManifestCollection
|
||||
extends ManifestElementAndApi,
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'collection';
|
||||
meta: MetaCollection;
|
||||
}
|
||||
@@ -9,3 +10,9 @@ export interface ManifestCollection extends ManifestElementAndApi, ManifestWithD
|
||||
export interface MetaCollection {
|
||||
repositoryAlias: string;
|
||||
}
|
||||
|
||||
declare global {
|
||||
interface UmbExtensionManifestMap {
|
||||
umbCollection: ManifestCollection;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
export * from './collection-action.extension.js';
|
||||
export * from './collection-view.extension.js';
|
||||
export * from './collection.extension.js';
|
||||
@@ -10,14 +10,10 @@ export * from './collection-item-picker-modal/index.js';
|
||||
export * from './default/collection-default.context.js';
|
||||
export * from './default/collection-default.context-token.js';
|
||||
export * from './collection-filter-model.interface.js';
|
||||
export * from './types.js';
|
||||
|
||||
export { UMB_COLLECTION_ALIAS_CONDITION } from './collection-alias.manifest.js';
|
||||
export { UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION } from './collection-bulk-action-permission.manifest.js';
|
||||
|
||||
export { UmbCollectionActionElement, UmbCollectionActionBase } from './action/index.js';
|
||||
export type { UmbCollectionDataSource, UmbCollectionRepository } from './repository/index.js';
|
||||
export type {
|
||||
UmbCollectionBulkActionPermissions,
|
||||
UmbCollectionConfiguration,
|
||||
UmbCollectionColumnConfiguration,
|
||||
} from './types.js';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { ManifestCollection } from './extensions/index.js';
|
||||
import type { Observable } from '@umbraco-cms/backoffice/external/rxjs';
|
||||
import type { ManifestCollection } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbPaginationManager } from '@umbraco-cms/backoffice/utils';
|
||||
|
||||
export interface UmbCollectionBulkActionPermissions {
|
||||
@@ -47,3 +47,5 @@ export interface UmbCollectionContext {
|
||||
items: Observable<any[]>;
|
||||
totalItems: Observable<number>;
|
||||
}
|
||||
|
||||
export * from './extensions/index.js';
|
||||
|
||||
@@ -1,14 +1,11 @@
|
||||
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
|
||||
import type { CSSResultGroup } from '@umbraco-cms/backoffice/external/lit';
|
||||
import { css, html, customElement, ifDefined } from '@umbraco-cms/backoffice/external/lit';
|
||||
import type {
|
||||
ManifestHeaderAppButtonKind,
|
||||
UmbBackofficeManifestKind,
|
||||
} from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestHeaderAppButtonKind, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
|
||||
|
||||
const manifest: UmbBackofficeManifestKind = {
|
||||
const manifest: UmbExtensionManifestKind = {
|
||||
type: 'kind',
|
||||
alias: 'Umb.Kind.Button',
|
||||
matchKind: 'button',
|
||||
|
||||
@@ -46,8 +46,20 @@ export class UmbContentTypeStructureManager<
|
||||
(x) => x.find((y) => y.unique === this.#ownerContentTypeUnique)?.compositions,
|
||||
);
|
||||
|
||||
readonly #contentTypeContainers = this.#contentTypes.asObservablePart(() => {
|
||||
return this.#contentTypes.getValue().flatMap((x) => x.containers ?? []);
|
||||
readonly #contentTypeContainers = this.#contentTypes.asObservablePart((contentTypes) => {
|
||||
// Notice this may need to use getValue to avoid resetting it self. [NL]
|
||||
return contentTypes.flatMap((x) => x.containers ?? []);
|
||||
});
|
||||
readonly contentTypeProperties = this.#contentTypes.asObservablePart((contentTypes) => {
|
||||
// Notice this may need to use getValue to avoid resetting it self. [NL]
|
||||
return contentTypes.flatMap((x) => x.properties ?? []);
|
||||
});
|
||||
readonly contentTypeHasProperties = this.#contentTypes.asObservablePart((contentTypes) => {
|
||||
// Notice this may need to use getValue to avoid resetting it self. [NL]
|
||||
return contentTypes.some((x) => x.properties.length > 0);
|
||||
});
|
||||
readonly contentTypePropertyAliases = this.#contentTypes.asObservablePart((contentTypes) => {
|
||||
return contentTypes.flatMap((x) => x.properties ?? []).map((x) => x.alias);
|
||||
});
|
||||
readonly contentTypeUniques = this.#contentTypes.asObservablePart((x) => x.map((y) => y.unique));
|
||||
readonly contentTypeAliases = this.#contentTypes.asObservablePart((x) => x.map((y) => y.alias));
|
||||
@@ -77,7 +89,8 @@ export class UmbContentTypeStructureManager<
|
||||
/**
|
||||
* loadType will load the ContentType and all inherited and composed ContentTypes.
|
||||
* This will give us all the structure for properties and containers.
|
||||
* @param unique
|
||||
* @param {string} unique - The unique of the ContentType to load.
|
||||
* @returns {Promise} - Promise resolved
|
||||
*/
|
||||
public async loadType(unique?: string) {
|
||||
this._reset();
|
||||
@@ -219,6 +232,14 @@ export class UmbContentTypeStructureManager<
|
||||
return this.#ownerContentTypeUnique;
|
||||
}
|
||||
|
||||
/**
|
||||
* Figure out if any of the Content Types has a Property.
|
||||
* @returns {boolean} - true if any of the Content Type in this composition has a Property.
|
||||
*/
|
||||
getHasProperties() {
|
||||
return this.#contentTypes.getValue().some((y) => y.properties.length > 0);
|
||||
}
|
||||
|
||||
updateOwnerContentType(entry: Partial<T>) {
|
||||
this.#contentTypes.updateOne(this.#ownerContentTypeUnique, entry);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const contentTypeDesignEditorManifest: UmbBackofficeManifestKind = {
|
||||
export const contentTypeDesignEditorManifest: UmbExtensionManifestKind = {
|
||||
type: 'kind',
|
||||
alias: 'Umb.Kind.WorkspaceView.ContentTypeDesignEditor',
|
||||
matchKind: 'contentTypeDesignEditor',
|
||||
|
||||
@@ -16,12 +16,11 @@ export class UmbContentHasPropertiesWorkspaceCondition
|
||||
|
||||
this.consumeContext(UMB_CONTENT_WORKSPACE_CONTEXT, (context) => {
|
||||
this.observe(
|
||||
context.structure.contentTypes,
|
||||
(contentTypes) => {
|
||||
const hasProperties = contentTypes.some((contentType) => contentType.properties.length > 0);
|
||||
context.structure.contentTypeHasProperties,
|
||||
(hasProperties) => {
|
||||
this.permitted = hasProperties;
|
||||
},
|
||||
'contentTypesObserver',
|
||||
'hasPropertiesObserver',
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { manifests as conditionsManifests } from './conditions/manifests.js';
|
||||
import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
const contentEditorManifest: UmbBackofficeManifestKind = {
|
||||
const contentEditorManifest: UmbExtensionManifestKind = {
|
||||
type: 'kind',
|
||||
alias: 'Umb.Kind.WorkspaceView.ContentEditor',
|
||||
matchKind: 'contentEditor',
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UMB_ENTITY_ACTION_DEFAULT_KIND_MANIFEST } from '../../default/default.action.kind.js';
|
||||
import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifest: UmbBackofficeManifestKind = {
|
||||
export const manifest: UmbExtensionManifestKind = {
|
||||
type: 'kind',
|
||||
alias: 'Umb.Kind.EntityAction.Delete',
|
||||
matchKind: 'delete',
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UMB_ENTITY_ACTION_DEFAULT_KIND_MANIFEST } from '../../default/default.action.kind.js';
|
||||
import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifest: UmbBackofficeManifestKind = {
|
||||
export const manifest: UmbExtensionManifestKind = {
|
||||
type: 'kind',
|
||||
alias: 'Umb.Kind.EntityAction.Duplicate',
|
||||
matchKind: 'duplicate',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { manifest as duplicateKindManifest } from './duplicate.action.kind.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [duplicateKindManifest];
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [duplicateKindManifest];
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const UMB_ENTITY_ACTION_DEFAULT_KIND_MANIFEST: UmbBackofficeManifestKind = {
|
||||
export const UMB_ENTITY_ACTION_DEFAULT_KIND_MANIFEST: UmbExtensionManifestKind = {
|
||||
type: 'kind',
|
||||
alias: 'Umb.Kind.EntityAction.Default',
|
||||
matchKind: 'default',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { manifest as defaultKindManifest } from './default.action.kind.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [defaultKindManifest];
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [defaultKindManifest];
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { manifests as defaultEntityActionManifests } from './default/manifests.js';
|
||||
import { manifests as deleteEntityActionManifests } from './common/delete/manifests.js';
|
||||
import { manifests as duplicateEntityActionManifests } from './common/duplicate/manifests.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [
|
||||
...defaultEntityActionManifests,
|
||||
...deleteEntityActionManifests,
|
||||
...duplicateEntityActionManifests,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UMB_ENTITY_BULK_ACTION_DEFAULT_KIND_MANIFEST } from '../../default/default.action.kind.js';
|
||||
import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifest: UmbBackofficeManifestKind = {
|
||||
export const manifest: UmbExtensionManifestKind = {
|
||||
type: 'kind',
|
||||
alias: 'Umb.Kind.EntityBulkAction.DuplicateTo',
|
||||
matchKind: 'duplicateTo',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { manifest as duplicateToKindManifest } from './duplicate-to.action.kind.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [duplicateToKindManifest];
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [duplicateToKindManifest];
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { manifest as moveToKindManifest } from './move-to.action.kind.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [moveToKindManifest];
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [moveToKindManifest];
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UMB_ENTITY_BULK_ACTION_DEFAULT_KIND_MANIFEST } from '../../default/default.action.kind.js';
|
||||
import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifest: UmbBackofficeManifestKind = {
|
||||
export const manifest: UmbExtensionManifestKind = {
|
||||
type: 'kind',
|
||||
alias: 'Umb.Kind.EntityBulkAction.MoveTo',
|
||||
matchKind: 'moveTo',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { manifest as trashKindManifest } from './trash.action.kind.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [trashKindManifest];
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [trashKindManifest];
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UMB_ENTITY_BULK_ACTION_DEFAULT_KIND_MANIFEST } from '../../default/default.action.kind.js';
|
||||
import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifest: UmbBackofficeManifestKind = {
|
||||
export const manifest: UmbExtensionManifestKind = {
|
||||
type: 'kind',
|
||||
alias: 'Umb.Kind.EntityBulkAction.Trash',
|
||||
matchKind: 'trash',
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const UMB_ENTITY_BULK_ACTION_DEFAULT_KIND_MANIFEST: UmbBackofficeManifestKind = {
|
||||
export const UMB_ENTITY_BULK_ACTION_DEFAULT_KIND_MANIFEST: UmbExtensionManifestKind = {
|
||||
type: 'kind',
|
||||
alias: 'Umb.Kind.EntityBulkAction.Default',
|
||||
matchKind: 'default',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { manifest as defaultKindManifest } from './default.action.kind.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [defaultKindManifest];
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [defaultKindManifest];
|
||||
|
||||
@@ -2,9 +2,9 @@ import { manifests as defaultEntityBulkActionManifests } from './default/manifes
|
||||
import { manifests as duplicateEntityBulkActionManifests } from './common/duplicate-to/manifests.js';
|
||||
import { manifests as moveToEntityBulkActionManifests } from './common/move-to/manifests.js';
|
||||
import { manifests as trashEntityBulkActionManifests } from './common/trash/manifests.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [
|
||||
...defaultEntityBulkActionManifests,
|
||||
...duplicateEntityBulkActionManifests,
|
||||
...moveToEntityBulkActionManifests,
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
import { UMB_EXTENSION_COLLECTION_REPOSITORY_ALIAS } from './repository/index.js';
|
||||
import { manifests as collectionRepositoryManifests } from './repository/manifests.js';
|
||||
import { manifests as collectionViewManifests } from './views/manifests.js';
|
||||
import type { ManifestCollection, ManifestTypes } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const UMB_EXTENSION_COLLECTION_ALIAS = 'Umb.Collection.Extension';
|
||||
|
||||
const collectionManifest: ManifestCollection = {
|
||||
type: 'collection',
|
||||
kind: 'default',
|
||||
alias: UMB_EXTENSION_COLLECTION_ALIAS,
|
||||
name: 'Extension Collection',
|
||||
element: () => import('./extension-collection.element.js'),
|
||||
meta: {
|
||||
repositoryAlias: UMB_EXTENSION_COLLECTION_REPOSITORY_ALIAS,
|
||||
},
|
||||
};
|
||||
|
||||
export const manifests: Array<ManifestTypes> = [
|
||||
collectionManifest,
|
||||
...collectionRepositoryManifests,
|
||||
...collectionViewManifests,
|
||||
];
|
||||
@@ -1,24 +0,0 @@
|
||||
import { UMB_COLLECTION_ALIAS_CONDITION } from '@umbraco-cms/backoffice/collection';
|
||||
import type { ManifestCollectionView, ManifestTypes } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const UMB_EXTENSION_TABLE_COLLECTION_VIEW_ALIAS = 'Umb.CollectionView.Extension.Table';
|
||||
|
||||
const tableCollectionView: ManifestCollectionView = {
|
||||
type: 'collectionView',
|
||||
alias: UMB_EXTENSION_TABLE_COLLECTION_VIEW_ALIAS,
|
||||
name: 'Extension Table Collection View',
|
||||
element: () => import('./table/extension-table-collection-view.element.js'),
|
||||
meta: {
|
||||
label: 'Table',
|
||||
icon: 'icon-list',
|
||||
pathName: 'table',
|
||||
},
|
||||
conditions: [
|
||||
{
|
||||
alias: UMB_COLLECTION_ALIAS_CONDITION,
|
||||
match: 'Umb.Collection.Extension',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export const manifests: Array<ManifestTypes> = [tableCollectionView];
|
||||
@@ -1,4 +1,8 @@
|
||||
export { UmbSwitchCondition } from './switch.condition.js';
|
||||
export { UmbConditionBase } from './condition-base.controller.js';
|
||||
|
||||
export type { BlockEntryShowContentEditConditionConfig, BlockWorkspaceHasSettingsConditionConfig } from './types.js';
|
||||
export type {
|
||||
BlockEntryShowContentEditConditionConfig,
|
||||
BlockWorkspaceHasSettingsConditionConfig,
|
||||
ConditionTypes,
|
||||
} from './types.js';
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
import type { ManifestTypes } from '../models/index.js';
|
||||
import { manifest as menuAliasConditionManifest } from './menu-alias.condition.js';
|
||||
import { manifest as multipleAppLanguagesConditionManifest } from './multiple-app-languages.condition.js';
|
||||
import { manifest as sectionAliasConditionManifest } from './section-alias.condition.js';
|
||||
import { manifest as switchConditionManifest } from './switch.condition.js';
|
||||
|
||||
export const manifests: Array<ManifestTypes> = [
|
||||
menuAliasConditionManifest,
|
||||
multipleAppLanguagesConditionManifest,
|
||||
sectionAliasConditionManifest,
|
||||
switchConditionManifest,
|
||||
|
||||
@@ -4,19 +4,9 @@ import type { UmbSectionUserPermissionConditionConfig } from '../../section/cond
|
||||
import type { SectionAliasConditionConfig } from './section-alias.condition.js';
|
||||
import type { SwitchConditionConfig } from './switch.condition.js';
|
||||
import type { UmbMultipleAppLanguageConditionConfig } from './multiple-app-languages.condition.js';
|
||||
import type {
|
||||
WorkspaceAliasConditionConfig,
|
||||
WorkspaceEntityTypeConditionConfig,
|
||||
WorkspaceContentTypeAliasConditionConfig,
|
||||
} from '@umbraco-cms/backoffice/workspace';
|
||||
import type { UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api';
|
||||
import type { UmbDocumentUserPermissionConditionConfig } from '@umbraco-cms/backoffice/document';
|
||||
|
||||
/* TODO: in theory should't the core package import from other packages.
|
||||
Are there any other way we can do this?
|
||||
Niels: Sadly I don't see any other solutions currently. But are very open for ideas :-) now that I think about it maybe there is some ability to extend a global type, similar to the 'declare global' trick we use on Elements.
|
||||
*/
|
||||
|
||||
// temp location to avoid circular dependencies
|
||||
export type BlockWorkspaceHasSettingsConditionConfig =
|
||||
UmbConditionConfigBase<'Umb.Condition.BlockWorkspaceHasSettings'>;
|
||||
@@ -34,7 +24,37 @@ export type ConditionTypes =
|
||||
| UmbConditionConfigBase
|
||||
| UmbDocumentUserPermissionConditionConfig
|
||||
| UmbMultipleAppLanguageConditionConfig
|
||||
| UmbSectionUserPermissionConditionConfig
|
||||
| WorkspaceAliasConditionConfig
|
||||
| WorkspaceContentTypeAliasConditionConfig
|
||||
| WorkspaceEntityTypeConditionConfig;
|
||||
| UmbSectionUserPermissionConditionConfig;
|
||||
|
||||
type UnionOfProperties<T> = T extends object ? T[keyof T] : never;
|
||||
|
||||
declare global {
|
||||
/**
|
||||
* This global type allows to declare condition types from its own module.
|
||||
* @example
|
||||
```js
|
||||
declare global {
|
||||
interface UmbExtensionConditionMap {
|
||||
My_UNIQUE_CONDITION_NAME: MyExtensionConditionType;
|
||||
}
|
||||
}
|
||||
```
|
||||
If you have multiple types, you can declare them in this way:
|
||||
```js
|
||||
declare global {
|
||||
interface UmbExtensionConditionMap {
|
||||
My_UNIQUE_CONDITION_NAME: MyExtensionConditionTypeA | MyExtensionConditionTypeB;
|
||||
}
|
||||
}
|
||||
```
|
||||
*/
|
||||
interface UmbExtensionConditionMap {
|
||||
UMB_CORE: ConditionTypes;
|
||||
}
|
||||
|
||||
/**
|
||||
* This global type provides a union of all declared manifest types.
|
||||
* If this is a local package that declares additional Manifest Types, then these will also be included in this union.
|
||||
*/
|
||||
type UmbExtensionCondition = UnionOfProperties<UmbExtensionConditionMap>;
|
||||
}
|
||||
|
||||
@@ -1,14 +1,4 @@
|
||||
import { manifests as conditionManifests } from './conditions/manifests.js';
|
||||
import { manifests as menuItemManifests } from './menu-item/manifests.js';
|
||||
import { manifests as workspaceManifests } from './workspace/manifests.js';
|
||||
import { manifests as collectionManifests } from './collection/manifests.js';
|
||||
import { manifests as entityActionManifests } from './entity-actions/manifests.js';
|
||||
import type { ManifestTypes } from './models/index.js';
|
||||
|
||||
export const manifests: Array<ManifestTypes> = [
|
||||
...conditionManifests,
|
||||
...menuItemManifests,
|
||||
...workspaceManifests,
|
||||
...collectionManifests,
|
||||
...entityActionManifests,
|
||||
];
|
||||
export const manifests: Array<ManifestTypes> = [...conditionManifests];
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { UmbAction } from '../../action/action.interface.js';
|
||||
import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
|
||||
import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api';
|
||||
@@ -24,7 +23,7 @@ export interface UmbCurrentUserAction<ArgsMetaType = never> extends UmbAction<Um
|
||||
|
||||
export interface ManifestCurrentUserAction<MetaType extends MetaCurrentUserAction = MetaCurrentUserAction>
|
||||
extends ManifestElementAndApi<UmbControllerHostElement, UmbCurrentUserAction<MetaType>>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'currentUserAction';
|
||||
meta: MetaType;
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { UmbDashboardElement } from '../interfaces/index.js';
|
||||
import type { ManifestElement, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export interface ManifestDashboard
|
||||
extends ManifestElement<UmbDashboardElement>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'dashboard';
|
||||
meta: MetaDashboard;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api';
|
||||
import type { UmbEntityAction, UmbEntityActionElement } from '@umbraco-cms/backoffice/entity-action';
|
||||
import type { UmbModalToken, UmbPickerModalData, UmbPickerModalValue } from '@umbraco-cms/backoffice/modal';
|
||||
@@ -9,7 +8,7 @@ import type { UmbModalToken, UmbPickerModalData, UmbPickerModalValue } from '@um
|
||||
*/
|
||||
export interface ManifestEntityAction<MetaType extends MetaEntityAction = MetaEntityAction>
|
||||
extends ManifestElementAndApi<UmbEntityActionElement, UmbEntityAction<MetaType>>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'entityAction';
|
||||
forEntityTypes: Array<string>;
|
||||
meta: MetaType;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { UmbEntityBulkActionElement } from '../../entity-bulk-action/entity-bulk-action-element.interface.js';
|
||||
import type { UmbEntityBulkAction } from '@umbraco-cms/backoffice/entity-bulk-action';
|
||||
import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api';
|
||||
@@ -9,7 +8,7 @@ import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbr
|
||||
*/
|
||||
export interface ManifestEntityBulkAction<MetaType extends MetaEntityBulkAction = MetaEntityBulkAction>
|
||||
extends ManifestElementAndApi<UmbEntityBulkActionElement, UmbEntityBulkAction<MetaType>>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'entityBulkAction';
|
||||
forEntityTypes: Array<string>;
|
||||
meta: MetaType;
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
import type { ManifestAuthProvider } from './auth-provider.model.js';
|
||||
import type { ManifestCollection } from './collection.models.js';
|
||||
import type { ManifestCollectionView } from './collection-view.model.js';
|
||||
import type { ManifestCurrentUserAction, ManifestCurrentUserActionDefaultKind } from './current-user-action.model.js';
|
||||
import type { ManifestDashboard } from './dashboard.model.js';
|
||||
import type { ManifestDashboardCollection } from './dashboard-collection.model.js';
|
||||
@@ -62,7 +60,6 @@ import type {
|
||||
} from './workspace-view.model.js';
|
||||
import type { ManifestEntityUserPermission } from './entity-user-permission.model.js';
|
||||
import type { ManifestGranularUserPermission } from './user-granular-permission.model.js';
|
||||
import type { ManifestCollectionAction } from './collection-action.model.js';
|
||||
import type { ManifestMfaLoginProvider } from './mfa-login-provider.model.js';
|
||||
import type { ManifestSearchProvider } from './search-provider.model.js';
|
||||
import type { ManifestSearchResultItem } from './search-result-item.model.js';
|
||||
@@ -77,9 +74,6 @@ import type { ManifestBase, ManifestBundle, ManifestCondition } from '@umbraco-c
|
||||
export type * from './app-entry-point.model.js';
|
||||
export type * from './auth-provider.model.js';
|
||||
export type * from './backoffice-entry-point.model.js';
|
||||
export type * from './collection-action.model.js';
|
||||
export type * from './collection-view.model.js';
|
||||
export type * from './collection.models.js';
|
||||
export type * from './current-user-action.model.js';
|
||||
export type * from './dashboard-collection.model.js';
|
||||
export type * from './dashboard.model.js';
|
||||
@@ -159,9 +153,6 @@ export type ManifestTypes =
|
||||
| ManifestAuthProvider
|
||||
| ManifestBackofficeEntryPoint
|
||||
| ManifestBundle<ManifestTypes>
|
||||
| ManifestCollection
|
||||
| ManifestCollectionAction
|
||||
| ManifestCollectionView
|
||||
| ManifestCondition
|
||||
| ManifestCurrentUserAction
|
||||
| ManifestCurrentUserActionDefaultKind
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
import type { UmbMenuItemElement } from '../interfaces/menu-item-element.interface.js';
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { ManifestWithDynamicConditions, ManifestElement } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export interface ManifestMenuItem
|
||||
extends ManifestElement<UmbMenuItemElement>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'menuItem';
|
||||
meta: MetaMenuItem;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { UmbPropertyAction } from '../../property-action/components/property-action/property-action.interface.js';
|
||||
import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
|
||||
import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export interface ManifestPropertyAction<MetaType extends MetaPropertyAction = MetaPropertyAction>
|
||||
extends ManifestElementAndApi<UmbControllerHostElement, UmbPropertyAction<MetaType>>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'propertyAction';
|
||||
forPropertyEditorUis: string[];
|
||||
meta: MetaType;
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { UmbApi, ManifestApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api';
|
||||
// TODO: Consider adding a ClassType for this manifest. (Currently we cannot know the scope of a repository, therefor we are going with ExtensionApi for now.)
|
||||
export interface ManifestRepository<ApiType extends UmbApi = UmbApi>
|
||||
extends ManifestApi<ApiType>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'repository';
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { UmbSectionSidebarAppElement } from '../interfaces/section-sidebar-app-element.interface.js';
|
||||
import type { ManifestElement, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export interface ManifestSectionSidebarApp
|
||||
extends ManifestElement<UmbSectionSidebarAppElement>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'sectionSidebarApp';
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { UmbSectionViewElement } from '../interfaces/section-view-element.interface.js';
|
||||
import type { ManifestElement, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export interface ManifestSectionView
|
||||
extends ManifestElement<UmbSectionViewElement>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'sectionView';
|
||||
meta: MetaSectionView;
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { UmbSectionElement } from '../interfaces/index.js';
|
||||
import type { ManifestElement, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export interface ManifestSection
|
||||
extends ManifestElement<UmbSectionElement>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'section';
|
||||
meta: MetaSection;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export interface ManifestTree extends ManifestElementAndApi, ManifestWithDynamicConditions<ConditionTypes> {
|
||||
export interface ManifestTree extends ManifestElementAndApi, ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'tree';
|
||||
meta: MetaTree;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { UmbWorkspaceActionMenuItem } from '../../workspace/components/workspace-action-menu-item/workspace-action-menu-item.interface.js';
|
||||
import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
|
||||
import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api';
|
||||
@@ -6,7 +5,7 @@ import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbr
|
||||
export interface ManifestWorkspaceActionMenuItem<
|
||||
MetaType extends MetaWorkspaceActionMenuItem = MetaWorkspaceActionMenuItem,
|
||||
> extends ManifestElementAndApi<UmbControllerHostElement, UmbWorkspaceActionMenuItem<MetaType>>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'workspaceActionMenuItem';
|
||||
/**
|
||||
* Define which workspace actions this menu item should be shown for.
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { UUIInterfaceColor, UUIInterfaceLook } from '@umbraco-cms/backoffice/external/uui';
|
||||
import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api';
|
||||
import type { UmbWorkspaceAction } from '@umbraco-cms/backoffice/workspace';
|
||||
@@ -6,7 +5,7 @@ import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controlle
|
||||
|
||||
export interface ManifestWorkspaceAction<MetaType extends MetaWorkspaceAction = MetaWorkspaceAction>
|
||||
extends ManifestElementAndApi<UmbControllerHostElement, UmbWorkspaceAction<MetaType>>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'workspaceAction';
|
||||
meta: MetaType;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { ManifestApi, ManifestWithDynamicConditions, UmbApi } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export interface ManifestWorkspaceContext extends ManifestWithDynamicConditions<ConditionTypes>, ManifestApi<UmbApi> {
|
||||
export interface ManifestWorkspaceContext
|
||||
extends ManifestWithDynamicConditions<UmbExtensionCondition>,
|
||||
ManifestApi<UmbApi> {
|
||||
type: 'workspaceContext';
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
|
||||
import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export interface ManifestWorkspaceFooterApp
|
||||
extends ManifestElementAndApi<UmbControllerHostElement, any>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'workspaceFooterApp';
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import type { ConditionTypes } from '../conditions/types.js';
|
||||
import type { UmbWorkspaceViewElement } from '../interfaces/workspace-view-element.interface.js';
|
||||
import type {
|
||||
ManifestWithDynamicConditions,
|
||||
@@ -8,7 +7,7 @@ import type {
|
||||
|
||||
export interface ManifestWorkspaceView<MetaType extends MetaWorkspaceView = MetaWorkspaceView>
|
||||
extends ManifestWithView<UmbWorkspaceViewElement>,
|
||||
ManifestWithDynamicConditions<ConditionTypes> {
|
||||
ManifestWithDynamicConditions<UmbExtensionCondition> {
|
||||
type: 'workspaceView';
|
||||
meta: MetaType;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
import type { ManifestKind } from '@umbraco-cms/backoffice/extension-api';
|
||||
import { UmbExtensionRegistry } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export type UmbBackofficeManifestKind = ManifestKind<UmbExtensionManifest>;
|
||||
export type UmbExtensionManifestKind = ManifestKind<UmbExtensionManifest>;
|
||||
export type UmbBackofficeExtensionRegistry = UmbExtensionRegistry<UmbExtensionManifest>;
|
||||
|
||||
export const umbExtensionsRegistry = new UmbExtensionRegistry<UmbExtensionManifest>() as UmbBackofficeExtensionRegistry;
|
||||
|
||||
/**
|
||||
* @deprecated Use `UmbExtensionManifestKind` instead.
|
||||
*/
|
||||
export type UmbBackofficeManifestKind = ManifestKind<UmbExtensionManifest>;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { UmbChangeEvent } from '@umbraco-cms/backoffice/event';
|
||||
import { css, html, customElement, query, state, property } from '@umbraco-cms/backoffice/external/lit';
|
||||
import type { UUIComboboxElement, UUIComboboxEvent } from '@umbraco-cms/backoffice/external/uui';
|
||||
import type { UUISelectEvent } from '@umbraco-cms/backoffice/external/uui';
|
||||
import { UUIFormControlMixin } from '@umbraco-cms/backoffice/external/uui';
|
||||
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
|
||||
import type { ManifestLocalization } from '@umbraco-cms/backoffice/extension-registry';
|
||||
@@ -59,24 +59,22 @@ export class UmbUiCultureInputElement extends UUIFormControlMixin(UmbLitElement,
|
||||
return this._selectElement;
|
||||
}
|
||||
|
||||
#onChange(event: UUIComboboxEvent) {
|
||||
event.stopPropagation();
|
||||
const target = event.target as UUIComboboxElement;
|
||||
|
||||
if (typeof target?.value === 'string') {
|
||||
this.value = target.value;
|
||||
this.dispatchEvent(new UmbChangeEvent());
|
||||
}
|
||||
#onCustomValidationChange(event: UUISelectEvent) {
|
||||
this.value = event.target.value.toString();
|
||||
this.dispatchEvent(new UmbChangeEvent());
|
||||
}
|
||||
|
||||
override render() {
|
||||
return html` <uui-combobox value="${this.value}" @change=${this.#onChange}>
|
||||
<uui-combobox-list>
|
||||
${this._options.map(
|
||||
(option) => html`<uui-combobox-list-option value="${option.value}">${option.name}</uui-combobox-list-option>`,
|
||||
)}
|
||||
</uui-combobox-list>
|
||||
</uui-combobox>`;
|
||||
return html`
|
||||
<uui-select
|
||||
style="margin-top: var(--uui-size-space-1)"
|
||||
@change=${this.#onCustomValidationChange}
|
||||
.options=${this._options.map((e) => ({
|
||||
name: e.name,
|
||||
value: e.value,
|
||||
selected: e.value == this.value,
|
||||
}))}></uui-select>
|
||||
`;
|
||||
}
|
||||
|
||||
static override styles = [
|
||||
|
||||
@@ -22,9 +22,9 @@ import { manifests as themeManifests } from './themes/manifests.js';
|
||||
import { manifests as treeManifests } from './tree/manifests.js';
|
||||
import { manifests as workspaceManifests } from './workspace/manifests.js';
|
||||
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from './extension-registry/index.js';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from './extension-registry/index.js';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [
|
||||
...authManifests,
|
||||
...collectionManifests,
|
||||
...contentManifests,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [
|
||||
export const manifests: Array<UmbExtensionManifest | UmbExtensionManifestKind> = [
|
||||
{
|
||||
type: 'kind',
|
||||
alias: 'Umb.Kind.MenuItem.Link',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { manifests as linkManifests } from './link/manifests.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [...linkManifests];
|
||||
export const manifests: Array<UmbExtensionManifest | UmbExtensionManifestKind> = [...linkManifests];
|
||||
|
||||
@@ -1,17 +1,13 @@
|
||||
import { UMB_MENU_CONTEXT } from '../../menu/components/menu/menu.context.js';
|
||||
import { UmbConditionBase } from './condition-base.controller.js';
|
||||
import { UMB_MENU_CONTEXT } from '../components/menu/menu.context.js';
|
||||
import { UmbConditionBase } from '../../extension-registry/conditions/condition-base.controller.js';
|
||||
import type { MenuAliasConditionConfig } from './types.js';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import type {
|
||||
ManifestCondition,
|
||||
UmbConditionConfigBase,
|
||||
UmbConditionControllerArguments,
|
||||
UmbExtensionCondition,
|
||||
} from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export type MenuAliasConditionConfig = UmbConditionConfigBase & {
|
||||
match: string;
|
||||
};
|
||||
|
||||
export class UmbMenuAliasCondition extends UmbConditionBase<MenuAliasConditionConfig> implements UmbExtensionCondition {
|
||||
constructor(host: UmbControllerHost, args: UmbConditionControllerArguments<MenuAliasConditionConfig>) {
|
||||
super(host, args);
|
||||
@@ -0,0 +1,5 @@
|
||||
import type { UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export type MenuAliasConditionConfig = UmbConditionConfigBase & {
|
||||
match: string;
|
||||
};
|
||||
@@ -1,4 +1,8 @@
|
||||
import { manifests as menuItemManifests } from './components/menu-item/manifests.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import { manifest as menuAliasConditionManifest } from './conditions/menu-alias.condition.js';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [...menuItemManifests];
|
||||
export const manifests: Array<UmbExtensionManifest | UmbExtensionManifestKind> = [
|
||||
...menuItemManifests,
|
||||
menuAliasConditionManifest,
|
||||
];
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import type { UmbEntityModel } from '@umbraco-cms/backoffice/entity';
|
||||
export type * from './conditions/types.js';
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
||||
export interface UmbStructureItemModelBase extends UmbEntityModel {}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { manifests as searchManifests } from './search/manifests.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [...searchManifests];
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [...searchManifests];
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { manifests as resultItemManifests } from './result-item/manifests.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [...resultItemManifests];
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [...resultItemManifests];
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [
|
||||
{
|
||||
type: 'kind',
|
||||
alias: 'Umb.Kind.PickerSearchResultItem.Default',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { manifests as defaultManifests } from './default/manifests.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [...defaultManifests];
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [...defaultManifests];
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifest: UmbBackofficeManifestKind = {
|
||||
export const manifest: UmbExtensionManifestKind = {
|
||||
type: 'kind',
|
||||
alias: 'Umb.Kind.PropertyAction.Default',
|
||||
matchKind: 'default',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { manifest as defaultKindManifest } from './default.action.kind.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [defaultKindManifest];
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [defaultKindManifest];
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { manifests as defaultWorkspaceActionManifests } from './default/manifests.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [...defaultWorkspaceActionManifests];
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [...defaultWorkspaceActionManifests];
|
||||
|
||||
@@ -2,7 +2,7 @@ import { manifests as defaultManifests } from './components/property-action/mani
|
||||
import type {
|
||||
ManifestPropertyActions,
|
||||
ManifestTypes,
|
||||
UmbBackofficeManifestKind,
|
||||
UmbExtensionManifestKind,
|
||||
} from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
import { UMB_WRITABLE_PROPERTY_CONDITION_ALIAS } from '@umbraco-cms/backoffice/property';
|
||||
@@ -44,7 +44,7 @@ export const propertyActionManifests: Array<ManifestPropertyActions> = [
|
||||
},
|
||||
];
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [
|
||||
...defaultManifests,
|
||||
...propertyActionManifests,
|
||||
];
|
||||
|
||||
@@ -16,10 +16,10 @@ export class UmbPropertyDatasetElement extends UmbLitElement {
|
||||
|
||||
public readonly context: UmbPropertyDatasetContextBase;
|
||||
|
||||
@property({ attribute: false })
|
||||
/**
|
||||
* The value of the dataset.
|
||||
* @returns {Array<UmbPropertyValueData>}
|
||||
* @memberof UmbBasicVariantElement
|
||||
* @returns {Array<UmbPropertyValueData>} - The value of the dataset
|
||||
* @example
|
||||
* ```ts
|
||||
* const dataSet = [
|
||||
@@ -46,7 +46,6 @@ export class UmbPropertyDatasetElement extends UmbLitElement {
|
||||
* `
|
||||
* ```
|
||||
*/
|
||||
@property({ attribute: false })
|
||||
public set value(value: Array<UmbPropertyValueData>) {
|
||||
this.#allowChangeEvent = false;
|
||||
this.context.setValues(value);
|
||||
@@ -57,11 +56,12 @@ export class UmbPropertyDatasetElement extends UmbLitElement {
|
||||
return this.context.getValues();
|
||||
}
|
||||
|
||||
@property({ attribute: false })
|
||||
/**
|
||||
* The name of the dataset, this name varies depending on the use-case. But this is either
|
||||
* @property name
|
||||
* @type {string}
|
||||
* @returns {string}
|
||||
* @memberof UmbBasicVariantElement
|
||||
* @example
|
||||
* ```ts
|
||||
* html`
|
||||
@@ -70,7 +70,6 @@ export class UmbPropertyDatasetElement extends UmbLitElement {
|
||||
* </umb-property-dataset>
|
||||
* `
|
||||
*/
|
||||
@property({ attribute: false })
|
||||
public set name(value: string | undefined) {
|
||||
this.#allowChangeEvent = false;
|
||||
this.context.setName(value);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UMB_ENTITY_ACTION_DEFAULT_KIND_MANIFEST } from '../../../entity-action/default/default.action.kind.js';
|
||||
import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifest: UmbBackofficeManifestKind = {
|
||||
export const manifest: UmbExtensionManifestKind = {
|
||||
type: 'kind',
|
||||
alias: 'Umb.Kind.EntityAction.RecycleBin.Empty',
|
||||
matchKind: 'emptyRecycleBin',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { manifest as emptyRecycleBinKindManifest } from './empty-recycle-bin.action.kind.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [emptyRecycleBinKindManifest];
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [emptyRecycleBinKindManifest];
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { manifest as kindManifest } from './restore-from-recycle-bin.action.kind.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [
|
||||
kindManifest,
|
||||
{
|
||||
type: 'modal',
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UMB_ENTITY_ACTION_DEFAULT_KIND_MANIFEST } from '../../../entity-action/default/default.action.kind.js';
|
||||
import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifest: UmbBackofficeManifestKind = {
|
||||
export const manifest: UmbExtensionManifestKind = {
|
||||
type: 'kind',
|
||||
alias: 'Umb.Kind.EntityAction.RecycleBin.Restore',
|
||||
matchKind: 'restoreFromRecycleBin',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { manifest as trashKindManifest } from './trash.action.kind.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [trashKindManifest];
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [trashKindManifest];
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { UMB_ENTITY_ACTION_DEFAULT_KIND_MANIFEST } from '../../../entity-action/default/default.action.kind.js';
|
||||
import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifest: UmbBackofficeManifestKind = {
|
||||
export const manifest: UmbExtensionManifestKind = {
|
||||
type: 'kind',
|
||||
alias: 'Umb.Kind.EntityAction.Trash',
|
||||
matchKind: 'trash',
|
||||
|
||||
@@ -2,9 +2,9 @@ import { manifests as trashEntityActionManifests } from './entity-action/trash/m
|
||||
import { manifests as restoreFromRecycleBinEntityActionManifests } from './entity-action/restore-from-recycle-bin/manifests.js';
|
||||
import { manifests as emptyRecycleBinEntityActionManifests } from './entity-action/empty-recycle-bin/manifests.js';
|
||||
import { manifests as conditionManifests } from './conditions/manifests.js';
|
||||
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { ManifestTypes, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [
|
||||
export const manifests: Array<ManifestTypes | UmbExtensionManifestKind> = [
|
||||
...conditionManifests,
|
||||
...emptyRecycleBinEntityActionManifests,
|
||||
...restoreFromRecycleBinEntityActionManifests,
|
||||
|
||||
@@ -12,7 +12,6 @@ import { UmbExtensionsManifestInitializer, createExtensionElement } from '@umbra
|
||||
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
|
||||
import { pathFolderName } from '@umbraco-cms/backoffice/utils';
|
||||
|
||||
// TODO: this might need a new name, since it's both views and dashboards
|
||||
@customElement('umb-section-main-views')
|
||||
export class UmbSectionMainViewElement extends UmbLitElement {
|
||||
@property({ type: String, attribute: 'section-alias' })
|
||||
@@ -48,12 +47,12 @@ export class UmbSectionMainViewElement extends UmbLitElement {
|
||||
}
|
||||
|
||||
#constructDashboardPath(manifest: ManifestDashboard) {
|
||||
const dashboardName = manifest.meta.label ?? manifest.name;
|
||||
const dashboardName = manifest.meta.label ?? manifest.name ?? manifest.alias;
|
||||
return 'dashboard/' + (manifest.meta.pathname ? manifest.meta.pathname : pathFolderName(dashboardName));
|
||||
}
|
||||
|
||||
#constructViewPath(manifest: ManifestSectionView) {
|
||||
const viewName = manifest.meta.label ?? manifest.name;
|
||||
const viewName = manifest.meta.label ?? manifest.name ?? manifest.alias;
|
||||
return 'view/' + (manifest.meta.pathname ? manifest.meta.pathname : pathFolderName(viewName));
|
||||
}
|
||||
|
||||
@@ -119,7 +118,9 @@ export class UmbSectionMainViewElement extends UmbLitElement {
|
||||
return html`
|
||||
<uui-tab
|
||||
href="${this._routerPath}/${dashboardPath}"
|
||||
label="${dashboard.meta.label ? this.localize.string(dashboard.meta.label) : dashboard.name}"
|
||||
label="${dashboard.meta.label
|
||||
? this.localize.string(dashboard.meta.label)
|
||||
: (dashboard.name ?? dashboard.alias)}"
|
||||
?active="${this._activePath === dashboardPath}"></uui-tab>
|
||||
`;
|
||||
})}
|
||||
@@ -134,7 +135,7 @@ export class UmbSectionMainViewElement extends UmbLitElement {
|
||||
? html`
|
||||
<uui-tab-group slot="navigation" id="views">
|
||||
${this._views.map((view) => {
|
||||
const viewName = view.meta.label ? this.localize.string(view.meta.label) : view.name;
|
||||
const viewName = view.meta.label ? this.localize.string(view.meta.label) : (view.name ?? view.alias);
|
||||
const viewPath = this.#constructViewPath(view);
|
||||
return html`
|
||||
<uui-tab
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user