Merge branch 'main' into feature/resource-api-mixin

This commit is contained in:
Jacob Overgaard
2022-12-16 14:38:53 +01:00
committed by GitHub
102 changed files with 867 additions and 869 deletions

View File

@@ -21,7 +21,7 @@ import { manifests as sectionManifests } from '../src/backoffice/sections/manife
import { manifests as propertyEditorModelManifests } from '../src/backoffice/property-editor-models/manifests';
import { manifests as propertyEditorUIManifests } from '../src/backoffice/property-editor-uis/manifests';
import { manifests as treeManifests } from '../src/backoffice/trees/manifests';
import { manifests as editorManifests } from '../src/backoffice/editors/manifests';
import { manifests as workspaceManifests } from '../src/backoffice/workspaces/manifests';
import { manifests as propertyActionManifests } from '../src/backoffice/property-actions/manifests';
import { umbExtensionsRegistry } from '../src/core/extensions-registry';
@@ -40,7 +40,7 @@ class UmbStoryBookElement extends LitElement {
this._registerExtensions(sectionManifests);
this._registerExtensions(treeManifests);
this._registerExtensions(editorManifests);
this._registerExtensions(workspaceManifests);
this._registerExtensions(propertyEditorModelManifests);
this._registerExtensions(propertyEditorUIManifests);
this._registerExtensions(propertyActionManifests);

View File

@@ -1,5 +1,5 @@
//TODO: we need to figure out what components should be available for extensions and load them upfront
import './editors/shared/editor-entity-layout/editor-entity-layout.element';
import './workspaces/shared/workspace-entity-layout/workspace-entity-layout.element';
import './components/ref-property-editor-ui/ref-property-editor-ui.element';
import './components/backoffice-frame/backoffice-header.element';
import './components/backoffice-frame/backoffice-main.element';
@@ -37,7 +37,7 @@ import { manifests as sectionManifests } from './sections/manifests';
import { manifests as propertyEditorModelManifests } from './property-editor-models/manifests';
import { manifests as propertyEditorUIManifests } from './property-editor-uis/manifests';
import { manifests as treeManifests } from './trees/manifests';
import { manifests as editorManifests } from './editors/manifests';
import { manifests as editorManifests } from './workspaces/manifests';
import { manifests as propertyActionManifests } from './property-actions/manifests';
import { manifests as externalLoginProviderManifests } from './external-login-providers/manifests';
import { manifests as userDashboards } from './user-dashboards/manifests';

View File

@@ -6,7 +6,7 @@ import { html } from 'lit-html';
import type { UmbBodyLayout } from './body-layout.element';
export default {
title: 'Editors/Shared/Editor Layout',
title: 'Workspaces/Shared/Workspace Layout',
component: 'umb-body-layout',
id: 'umb-body-layout',
} as Meta;

View File

@@ -8,7 +8,7 @@ import { UmbContextConsumerMixin } from '@umbraco-cms/context-api';
import type { ManifestPropertyEditorUI, ManifestTypes } from '@umbraco-cms/models';
import '../../property-actions/shared/property-action-menu/property-action-menu.element';
import '../../editors/shared/editor-property-layout/editor-property-layout.element';
import '../../workspaces/shared/workspace-property-layout/workspace-property-layout.element';
/**
* @element umb-entity-property
@@ -174,11 +174,10 @@ export class UmbEntityPropertyElement extends UmbContextConsumerMixin(UmbObserve
render() {
return html`
<umb-editor-property-layout id="layout" label="${this.label}" description="${this.description}">
<umb-workspace-property-layout id="layout" label="${this.label}" description="${this.description}">
${this._renderPropertyActionMenu()}
<div slot="editor">${this._element}</div>
</umb-editor-property-layout>
<hr />
</umb-workspace-property-layout>
`;
}

View File

@@ -128,7 +128,7 @@ export class UmbDashboardExamineSearcherElement extends UmbContextConsumerMixin(
}
private _onNameClick() {
const data: UmbNotificationDefaultData = { message: 'TODO: Open editor for this' }; // TODO
const data: UmbNotificationDefaultData = { message: 'TODO: Open workspace for this' }; // TODO
this._notificationService?.peek('warning', { data });
}
@@ -236,7 +236,7 @@ export class UmbDashboardExamineSearcherElement extends UmbContextConsumerMixin(
<uui-table-cell> ${rowData.score} </uui-table-cell>
<uui-table-cell> ${rowData.id} </uui-table-cell>
<uui-table-cell>
<uui-button look="secondary" label="Open editor for this document" @click="${this._onNameClick}">
<uui-button look="secondary" label="Open workspace for this document" @click="${this._onNameClick}">
${this.getSearchResultNodeName(rowData)}
</uui-button>
</uui-table-cell>

View File

@@ -1,18 +0,0 @@
import './editor-data-type.element';
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
import { data } from '../../../core/mocks/data/data-type.data';
import type { UmbEditorDataTypeElement } from './editor-data-type.element';
export default {
title: 'Editors/Data Type',
component: 'umb-editor-data-type',
id: 'umb-editor-data-type',
} as Meta;
export const AAAOverview: Story<UmbEditorDataTypeElement> = () =>
html` <umb-editor-data-type id="${data[0].key}"></umb-editor-data-type>`;
AAAOverview.storyName = 'Overview';

View File

@@ -1,18 +0,0 @@
import './editor-document-type.element';
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
import { data } from '../../../core/mocks/data/document-type.data';
import type { UmbEditorDocumentTypeElement } from './editor-document-type.element';
export default {
title: 'Editors/Document Type',
component: 'umb-editor-document-type',
id: 'umb-editor-document-type',
} as Meta;
export const AAAOverview: Story<UmbEditorDocumentTypeElement> = () =>
html` <umb-editor-document-type id="${data[0].key}"></umb-editor-document-type>`;
AAAOverview.storyName = 'Overview';

View File

@@ -1,25 +0,0 @@
import './editor-view-document-type-design.element';
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
import { data } from '../../../../../core/mocks/data/document-type.data';
import { UmbDocumentTypeContext } from '../../document-type.context';
import type { UmbEditorViewDocumentTypeDesignElement } from './editor-view-document-type-design.element';
export default {
title: 'Editors/Document Type/Views/Design',
component: 'umb-editor-view-document-type-design',
id: 'umb-editor-view-document-type-design',
decorators: [
(story) =>
html` <umb-context-provider key="umbDocumentTypeContext" .value=${new UmbDocumentTypeContext(data[0])}>
${story()}
</umb-context-provider>`,
],
} as Meta;
export const AAAOverview: Story<UmbEditorViewDocumentTypeDesignElement> = () =>
html` <umb-editor-view-document-type-design></umb-editor-view-document-type-design>`;
AAAOverview.storyName = 'Overview';

View File

@@ -1,18 +0,0 @@
import './editor-document.element';
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
import { data as documentNodes } from '../../../core/mocks/data/document.data';
import type { UmbEditorDocumentElement } from './editor-document.element';
export default {
title: 'Editors/Document',
component: 'umb-editor-document',
id: 'umb-editor-document',
} as Meta;
export const AAAOverview: Story<UmbEditorDocumentElement> = () =>
html` <umb-editor-document id="${documentNodes[0].key}"></umb-editor-document>`;
AAAOverview.storyName = 'Overview';

View File

@@ -1,16 +0,0 @@
import './editor-extensions.element';
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
import type { UmbEditorExtensionsElement } from './editor-extensions.element';
export default {
title: 'Editors/Extensions',
component: 'umb-editor-extensions',
id: 'umb-editor-extensions',
} as Meta;
export const AAAOverview: Story<UmbEditorExtensionsElement> = () =>
html` <umb-editor-extensions></umb-editor-extensions>`;
AAAOverview.storyName = 'Overview';

View File

@@ -1,121 +0,0 @@
import type { ManifestEditor } from '@umbraco-cms/models';
export const manifests: Array<ManifestEditor> = [
{
type: 'editor',
alias: 'Umb.Editor.Member',
name: 'Member Editor',
loader: () => import('./member/editor-member.element'),
meta: {
entityType: 'member',
},
},
{
type: 'editor',
alias: 'Umb.Editor.MemberGroup',
name: 'Member Group Editor',
loader: () => import('./member-group/editor-member-group.element'),
meta: {
entityType: 'member-group',
},
},
{
type: 'editor',
alias: 'Umb.Editor.DataType',
name: 'Data Type Editor',
loader: () => import('./data-type/editor-data-type.element'),
meta: {
entityType: 'data-type',
},
},
{
type: 'editor',
alias: 'Umb.Editor.DocumentType',
name: 'Document Type Editor',
loader: () => import('./document-type/editor-document-type.element'),
meta: {
entityType: 'document-type',
},
},
{
type: 'editor',
alias: 'Umb.Editor.MediaType',
name: 'Media Type Editor',
loader: () => import('./media-type/editor-media-type.element'),
meta: {
entityType: 'media-type',
},
},
{
type: 'editor',
alias: 'Umb.Editor.MemberType',
name: 'Member Type Editor',
loader: () => import('./member-type/editor-member-type.element'),
meta: {
entityType: 'member-type',
},
},
{
type: 'editor',
alias: 'Umb.Editor.Extensions',
name: 'Extensions Editor',
loader: () => import('./extensions/editor-extensions.element'),
meta: {
entityType: 'extensions-list',
},
},
{
type: 'editor',
alias: 'Umb.Editor.Media',
name: 'Media Editor',
loader: () => import('./media/editor-media.element'),
meta: {
entityType: 'media',
},
},
{
type: 'editor',
alias: 'Umb.Editor.Document',
name: 'Content Editor',
loader: () => import('./document/editor-document.element'),
meta: {
entityType: 'document',
},
},
{
type: 'editor',
alias: 'Umb.Editor.User',
name: 'User Editor',
loader: () => import('./user/editor-user.element'),
meta: {
entityType: 'user',
},
},
{
type: 'editor',
alias: 'Umb.Editor.UserGroup',
name: 'User Group Editor',
loader: () => import('./user-group/editor-user-group.element'),
meta: {
entityType: 'user-group',
},
},
{
type: 'editor',
alias: 'Umb.Editor.Package',
name: 'Package Editor',
loader: () => import('./package/editor-package.element'),
meta: {
entityType: 'package',
},
},
{
type: 'editor',
alias: 'Umb.Editor.PackageBuilder',
name: 'Package Builder Editor',
loader: () => import('./package-builder/editor-package-builder.element'),
meta: {
entityType: 'package-builder',
},
},
];

View File

@@ -1,34 +0,0 @@
import { UUITextStyles } from '@umbraco-ui/uui-css/lib';
import { css, html, LitElement } from 'lit';
import { customElement, property } from 'lit/decorators.js';
import '../shared/editor-entity-layout/editor-entity-layout.element';
@customElement('umb-editor-media-type')
export class UmbEditorMediaTypeElement extends LitElement {
static styles = [
UUITextStyles,
css`
:host {
display: block;
width: 100%;
height: 100%;
}
`,
];
@property()
id!: string;
render() {
return html` <umb-editor-entity-layout alias="Umb.Editor.MediaType">Media Type Editor</umb-editor-entity-layout> `;
}
}
export default UmbEditorMediaTypeElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-media-type': UmbEditorMediaTypeElement;
}
}

View File

@@ -1,18 +0,0 @@
import './editor-media.element';
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
import { data as mediaNodes } from '../../../core/mocks/data/media.data';
import type { UmbEditorMediaElement } from './editor-media.element';
export default {
title: 'Editors/Media',
component: 'umb-editor-media',
id: 'umb-editor-media',
} as Meta;
export const AAAOverview: Story<UmbEditorMediaElement> = () =>
html` <umb-editor-media id="${mediaNodes[0].key}"></umb-editor-media>`;
AAAOverview.storyName = 'Overview';

View File

@@ -1,31 +0,0 @@
import { UUITextStyles } from '@umbraco-ui/uui-css/lib';
import { css, html, LitElement } from 'lit';
import { customElement } from 'lit/decorators.js';
@customElement('umb-editor-package-builder')
export class UmbEditorPackageBuilderElement extends LitElement {
static styles = [
UUITextStyles,
css`
:host {
display: block;
width: 100%;
height: 100%;
}
`,
];
render() {
return html`<umb-editor-entity-layout alias="Umb.Editor.PackageBuilder"
>PACKAGE BUILDER</umb-editor-entity-layout
> `;
}
}
export default UmbEditorPackageBuilderElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-package-builder': UmbEditorPackageBuilderElement;
}
}

View File

@@ -1,18 +0,0 @@
import './editor-content.element';
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
import { data } from '../../../../core/mocks/data/document.data';
import type { UmbEditorContentElement } from './editor-content.element';
export default {
title: 'Editors/Shared/Node',
component: 'umb-editor-content',
id: 'umb-editor-content',
} as Meta;
export const AAAOverview: Story<UmbEditorContentElement> = () =>
html` <umb-editor-content id="${data[0].key}"></umb-editor-content>`;
AAAOverview.storyName = 'Overview';

View File

@@ -1,20 +0,0 @@
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
import type { UmbEditorPropertyLayoutElement } from './editor-property-layout.element';
import './editor-property-layout.element';
export default {
title: 'Editors/Shared/Editor Property Layout',
component: 'umb-editor-property-layout',
id: 'umb-editor-property-layout',
} as Meta;
export const AAAOverview: Story<UmbEditorPropertyLayoutElement> = () => html` <umb-editor-property-layout
label="Label"
description="Description">
<div slot="property-action-menu"><uui-button color="" look="placeholder">Menu</uui-button></div>
<div slot="editor"><uui-button color="" look="placeholder">Editor</uui-button></div>
</umb-editor-property-layout>`;
AAAOverview.storyName = 'Overview';

View File

@@ -1,7 +1,7 @@
import { html, LitElement } from 'lit';
import { customElement, state } from 'lit/decorators.js';
import { IRoute, IRoutingInfo } from 'router-slot';
import { UmbEditorEntityElement } from '../../../../editors/shared/editor-entity/editor-entity.element';
import { UmbWorkspaceEntityElement } from '../../../../workspaces/shared/workspace-entity/workspace-entity.element';
@customElement('umb-section-view-packages-created')
export class UmbSectionViewPackagesCreatedElement extends LitElement {
@@ -13,9 +13,9 @@ export class UmbSectionViewPackagesCreatedElement extends LitElement {
},
{
path: `:entityType/:key`,
component: () => import('../../../../editors/shared/editor-entity/editor-entity.element'),
component: () => import('../../../../workspaces/shared/workspace-entity/workspace-entity.element'),
setup: (component: HTMLElement, info: IRoutingInfo) => {
const element = component as UmbEditorEntityElement;
const element = component as UmbWorkspaceEntityElement;
element.entityKey = info.match.params.key;
element.entityType = info.match.params.entityType;
},

View File

@@ -1,7 +1,7 @@
import { html, LitElement } from 'lit';
import { customElement, state } from 'lit/decorators.js';
import { IRoute, IRoutingInfo } from 'router-slot';
import { UmbEditorEntityElement } from '../../../../editors/shared/editor-entity/editor-entity.element';
import { UmbWorkspaceEntityElement } from '../../../../workspaces/shared/workspace-entity/workspace-entity.element';
@customElement('umb-section-view-packages-installed')
export class UmbSectionViewPackagesInstalledElement extends LitElement {
@@ -13,9 +13,9 @@ export class UmbSectionViewPackagesInstalledElement extends LitElement {
},
{
path: `:entityType/:key`,
component: () => import('../../../../editors/shared/editor-entity/editor-entity.element'),
component: () => import('../../../../workspaces/shared/workspace-entity/workspace-entity.element'),
setup: (component: HTMLElement, info: IRoutingInfo) => {
const element = component as UmbEditorEntityElement;
const element = component as UmbWorkspaceEntityElement;
element.entityKey = info.match.params.key;
element.entityType = info.match.params.entityType;
},

View File

@@ -3,7 +3,7 @@ import { css, html, LitElement, nothing } from 'lit';
import { customElement, state } from 'lit/decorators.js';
import { map, switchMap, EMPTY, of } from 'rxjs';
import { UmbSectionContext } from '../section.context';
import { UmbEditorEntityElement } from '../../editors/shared/editor-entity/editor-entity.element';
import { UmbWorkspaceEntityElement } from '../../workspaces/shared/workspace-entity/workspace-entity.element';
import { UmbObserverMixin } from '@umbraco-cms/observable-api';
import { createExtensionElement } from '@umbraco-cms/extensions-api';
import { UmbContextConsumerMixin } from '@umbraco-cms/context-api';
@@ -85,16 +85,16 @@ export class UmbSectionElement extends UmbContextConsumerMixin(UmbObserverMixin(
},
{
path: `:entityType/:key`,
component: () => import('../../editors/shared/editor-entity/editor-entity.element'),
setup: (component: UmbEditorEntityElement, info: any) => {
component: () => import('../../workspaces/shared/workspace-entity/workspace-entity.element'),
setup: (component: UmbWorkspaceEntityElement, info: any) => {
component.entityKey = info.match.params.key;
component.entityType = info.match.params.entityType;
},
},
{
path: `:entityType`,
component: () => import('../../editors/shared/editor-entity/editor-entity.element'),
setup: (component: UmbEditorEntityElement, info: any) => {
component: () => import('../../workspaces/shared/workspace-entity/workspace-entity.element'),
setup: (component: UmbWorkspaceEntityElement, info: any) => {
component.entityType = info.match.params.entityType;
},
},

View File

@@ -1,12 +1,12 @@
import { html, LitElement } from 'lit';
import { customElement } from 'lit/decorators.js';
import './editor-view-user-groups.element';
import './workspace-view-user-groups.element';
@customElement('umb-section-view-user-groups')
export class UmbSectionViewUserGroupsElement extends LitElement {
render() {
return html`<umb-editor-view-user-groups></umb-editor-view-user-groups>`;
return html`<umb-workspace-view-user-groups></umb-workspace-view-user-groups>`;
}
}

View File

@@ -18,8 +18,8 @@ import './user-group-table-sections-column-layout.element';
import { UmbObserverMixin } from '@umbraco-cms/observable-api';
import { UmbUserGroupStore } from '@umbraco-cms/stores/user/user-group.store';
@customElement('umb-editor-view-user-groups')
export class UmbEditorViewUserGroupsElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
@customElement('umb-workspace-view-user-groups')
export class UmbWorkspaceViewUserGroupsElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
static styles = [
UUITextStyles,
css`
@@ -147,10 +147,10 @@ export class UmbEditorViewUserGroupsElement extends UmbContextConsumerMixin(UmbO
}
}
export default UmbEditorViewUserGroupsElement;
export default UmbWorkspaceViewUserGroupsElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-view-user-groups': UmbEditorViewUserGroupsElement;
'umb-workspace-view-user-groups': UmbWorkspaceViewUserGroupsElement;
}
}

View File

@@ -1,19 +0,0 @@
import { expect, fixture, html } from '@open-wc/testing';
//TODO: Test has been commented out while we figure out how to setup import maps for the test environment
// import { defaultA11yConfig } from '@umbraco-cms/test-utils';
// import UmbEditorViewUsersOverviewElement from './editor-view-users-overview.element';
// describe('UmbEditorViewUsersOverviewElement', () => {
// let element: UmbEditorViewUsersOverviewElement;
// beforeEach(async () => {
// element = await fixture(html`<umb-editor-view-users-overview></umb-editor-view-users-overview>`);
// });
// it('is defined with its own instance', () => {
// expect(element).to.be.instanceOf(UmbEditorViewUsersOverviewElement);
// });
// it('passes the a11y audit', async () => {
// await expect(element).shadowDom.to.be.accessible(defaultA11yConfig);
// });
// });

View File

@@ -1,19 +0,0 @@
import { expect, fixture, html } from '@open-wc/testing';
//TODO: Test has been commented out while we figure out how to setup import maps for the test environment
// import UmbEditorViewUsersSelectionElement from './editor-view-users-selection.element';
// import { defaultA11yConfig } from '@umbraco-cms/test-utils';
// describe('UmbEditorViewUsersSelectionElement', () => {
// let element: UmbEditorViewUsersSelectionElement;
// beforeEach(async () => {
// element = await fixture(html`<umb-editor-view-users-selection></umb-editor-view-users-selection>`);
// });
// it('is defined with its own instance', () => {
// expect(element).to.be.instanceOf(UmbEditorViewUsersSelectionElement);
// });
// it('passes the a11y audit', async () => {
// await expect(element).shadowDom.to.be.accessible(defaultA11yConfig);
// });
// });

View File

@@ -1,18 +0,0 @@
import { expect, fixture, html } from '@open-wc/testing';
import { UmbEditorViewUsersGridElement } from './editor-view-users-grid.element';
import { defaultA11yConfig } from '@umbraco-cms/test-utils';
describe('UmbEditorViewUsersCreateElement', () => {
let element: UmbEditorViewUsersGridElement;
beforeEach(async () => {
element = await fixture(html`<umb-editor-view-users-grid></umb-editor-view-users-grid>`);
});
it('is defined with its own instance', () => {
expect(element).to.be.instanceOf(UmbEditorViewUsersGridElement);
});
it('passes the a11y audit', async () => {
await expect(element).shadowDom.to.be.accessible(defaultA11yConfig);
});
});

View File

@@ -10,8 +10,8 @@ import type { UserDetails, UserEntity, UserGroupDetails, UserGroupEntity } from
import { UmbObserverMixin } from '@umbraco-cms/observable-api';
import { UmbUserGroupStore } from 'src/core/stores/user/user-group.store';
@customElement('umb-editor-view-users-grid')
export class UmbEditorViewUsersGridElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
@customElement('umb-workspace-view-users-grid')
export class UmbWorkspaceViewUsersGridElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
static styles = [
UUITextStyles,
css`
@@ -158,10 +158,10 @@ export class UmbEditorViewUsersGridElement extends UmbContextConsumerMixin(UmbOb
}
}
export default UmbEditorViewUsersGridElement;
export default UmbWorkspaceViewUsersGridElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-view-users-grid': UmbEditorViewUsersGridElement;
'umb-workspace-view-users-grid': UmbWorkspaceViewUsersGridElement;
}
}

View File

@@ -0,0 +1,18 @@
import { expect, fixture, html } from '@open-wc/testing';
import { UmbWorkspaceViewUsersGridElement } from './workspace-view-users-grid.element';
import { defaultA11yConfig } from '@umbraco-cms/test-utils';
describe('UmbWorkspaceViewUsersCreateElement', () => {
let element: UmbWorkspaceViewUsersGridElement;
beforeEach(async () => {
element = await fixture(html`<umb-workspace-view-users-grid></umb-workspace-view-users-grid>`);
});
it('is defined with its own instance', () => {
expect(element).to.be.instanceOf(UmbWorkspaceViewUsersGridElement);
});
it('passes the a11y audit', async () => {
await expect(element).shadowDom.to.be.accessible(defaultA11yConfig);
});
});

View File

@@ -19,8 +19,8 @@ import './column-layouts/name/user-table-name-column-layout.element';
import './column-layouts/status/user-table-status-column-layout.element';
import { UmbUserGroupStore } from 'src/core/stores/user/user-group.store';
@customElement('umb-editor-view-users-table')
export class UmbEditorViewUsersTableElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
@customElement('umb-workspace-view-users-table')
export class UmbWorkspaceViewUsersTableElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
static styles = [
UUITextStyles,
css`
@@ -184,10 +184,10 @@ export class UmbEditorViewUsersTableElement extends UmbContextConsumerMixin(UmbO
}
}
export default UmbEditorViewUsersTableElement;
export default UmbWorkspaceViewUsersTableElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-view-users-table': UmbEditorViewUsersTableElement;
'umb-workspace-view-users-table': UmbWorkspaceViewUsersTableElement;
}
}

View File

@@ -3,13 +3,13 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib';
import { customElement, state } from 'lit/decorators.js';
import { BehaviorSubject, Observable } from 'rxjs';
import type { IRoute, IRoutingInfo } from 'router-slot';
import UmbEditorEntityElement from '../../../../editors/shared/editor-entity/editor-entity.element';
import { UmbWorkspaceEntityElement } from '../../../../workspaces/shared/workspace-entity/workspace-entity.element';
import { UmbContextConsumerMixin, UmbContextProviderMixin } from '@umbraco-cms/context-api';
import './list-view-layouts/table/editor-view-users-table.element';
import './list-view-layouts/grid/editor-view-users-grid.element';
import './editor-view-users-selection.element';
import './editor-view-users-invite.element';
import './list-view-layouts/table/workspace-view-users-table.element';
import './list-view-layouts/grid/workspace-view-users-grid.element';
import './workspace-view-users-selection.element';
import './workspace-view-users-invite.element';
import type { UserDetails } from '@umbraco-cms/models';
import { UmbObserverMixin } from '@umbraco-cms/observable-api';
import { UmbUserStore } from 'src/core/stores/user/user.store';
@@ -31,13 +31,13 @@ export class UmbSectionViewUsersElement extends UmbContextProviderMixin(
private _routes: IRoute[] = [
{
path: 'overview',
component: () => import('./editor-view-users-overview.element'),
component: () => import('./workspace-view-users-overview.element'),
},
{
path: `:entityType/:key`,
component: () => import('../../../../editors/shared/editor-entity/editor-entity.element'),
component: () => import('../../../../workspaces/shared/workspace-entity/workspace-entity.element'),
setup: (component: HTMLElement, info: IRoutingInfo) => {
const element = component as UmbEditorEntityElement;
const element = component as UmbWorkspaceEntityElement;
element.entityKey = info.match.params.key;
element.entityType = info.match.params.entityType;
},
@@ -108,7 +108,7 @@ export class UmbSectionViewUsersElement extends UmbContextProviderMixin(
}
render() {
return html` <router-slot .routes=${this._routes}></router-slot> `;
return html`<router-slot .routes=${this._routes}></router-slot>`;
}
}

View File

@@ -9,8 +9,8 @@ import { UmbModalLayoutElement, UmbNotificationDefaultData, UmbNotificationServi
import { UmbUserStore } from '@umbraco-cms/stores/user/user.store';
export type UsersViewType = 'list' | 'grid';
@customElement('umb-editor-view-users-create')
export class UmbEditorViewUsersCreateElement extends UmbContextConsumerMixin(UmbModalLayoutElement) {
@customElement('umb-workspace-view-users-create')
export class UmbWorkspaceViewUsersCreateElement extends UmbContextConsumerMixin(UmbModalLayoutElement) {
static styles = [
UUITextStyles,
css`
@@ -203,10 +203,10 @@ export class UmbEditorViewUsersCreateElement extends UmbContextConsumerMixin(Umb
}
}
export default UmbEditorViewUsersCreateElement;
export default UmbWorkspaceViewUsersCreateElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-view-users-create': UmbEditorViewUsersCreateElement;
'umb-workspace-view-users-create': UmbWorkspaceViewUsersCreateElement;
}
}

View File

@@ -1,16 +1,16 @@
import { expect, fixture, html } from '@open-wc/testing';
//TODO: Test has been commented out while we figure out how to setup import maps for the test environment
// import { defaultA11yConfig } from '@umbraco-cms/test-utils';
// import UmbEditorViewUsersCreateElement from './editor-view-users-create.element';
// import UmbWorkspaceViewUsersCreateElement from './workspace-view-users-create.element';
// describe('UmbEditorViewUsersCreateElement', () => {
// let element: UmbEditorViewUsersCreateElement;
// describe('UmbWorkspaceViewUsersCreateElement', () => {
// let element: UmbWorkspaceViewUsersCreateElement;
// beforeEach(async () => {
// element = await fixture(html`<umb-editor-view-users-create></umb-editor-view-users-create>`);
// element = await fixture(html`<umb-workspace-view-users-create></umb-workspace-view-users-create>`);
// });
// it('is defined with its own instance', () => {
// expect(element).to.be.instanceOf(UmbEditorViewUsersCreateElement);
// expect(element).to.be.instanceOf(UmbWorkspaceViewUsersCreateElement);
// });
// it('passes the a11y audit', async () => {

View File

@@ -8,8 +8,8 @@ import { UmbModalLayoutElement } from '@umbraco-cms/services';
import { UmbUserStore } from '@umbraco-cms/stores/user/user.store';
export type UsersViewType = 'list' | 'grid';
@customElement('umb-editor-view-users-invite')
export class UmbEditorViewUsersInviteElement extends UmbContextConsumerMixin(UmbModalLayoutElement) {
@customElement('umb-workspace-view-users-invite')
export class UmbWorkspaceViewUsersInviteElement extends UmbContextConsumerMixin(UmbModalLayoutElement) {
static styles = [
UUITextStyles,
css`
@@ -183,10 +183,10 @@ export class UmbEditorViewUsersInviteElement extends UmbContextConsumerMixin(Umb
}
}
export default UmbEditorViewUsersInviteElement;
export default UmbWorkspaceViewUsersInviteElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-view-users-invite': UmbEditorViewUsersInviteElement;
'umb-workspace-view-users-invite': UmbWorkspaceViewUsersInviteElement;
}
}

View File

@@ -1,16 +1,16 @@
import { expect, fixture, html } from '@open-wc/testing';
//TODO: Test has been commented out while we figure out how to setup import maps for the test environment
// import UmbEditorViewUsersInviteElement from './editor-view-users-invite.element';
// import UmbWorkspaceViewUsersInviteElement from './workspace-view-users-invite.element';
// import { defaultA11yConfig } from '@umbraco-cms/test-utils';
// describe('UmbEditorViewUsersInviteElement', () => {
// let element: UmbEditorViewUsersInviteElement;
// describe('UmbWorkspaceViewUsersInviteElement', () => {
// let element: UmbWorkspaceViewUsersInviteElement;
// beforeEach(async () => {
// element = await fixture(html`<umb-editor-view-users-invite></umb-editor-view-users-invite>`);
// element = await fixture(html`<umb-workspace-view-users-invite></umb-workspace-view-users-invite>`);
// });
// it('is defined with its own instance', () => {
// expect(element).to.be.instanceOf(UmbEditorViewUsersInviteElement);
// expect(element).to.be.instanceOf(UmbWorkspaceViewUsersInviteElement);
// });
// it('passes the a11y audit', async () => {

View File

@@ -8,16 +8,16 @@ import type { UmbSectionViewUsersElement } from './section-view-users.element';
import { UmbContextConsumerMixin } from '@umbraco-cms/context-api';
import { UmbObserverMixin } from '@umbraco-cms/observable-api';
import './list-view-layouts/table/editor-view-users-table.element';
import './list-view-layouts/grid/editor-view-users-grid.element';
import './editor-view-users-selection.element';
import './editor-view-users-invite.element';
import './editor-view-users-create.element';
import './list-view-layouts/table/workspace-view-users-table.element';
import './list-view-layouts/grid/workspace-view-users-grid.element';
import './workspace-view-users-selection.element';
import './workspace-view-users-invite.element';
import './workspace-view-users-create.element';
import { UmbModalService } from '@umbraco-cms/services';
export type UsersViewType = 'list' | 'grid';
@customElement('umb-editor-view-users-overview')
export class UmbEditorViewUsersOverviewElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
@customElement('umb-workspace-view-users-overview')
export class UmbWorkspaceViewUsersOverviewElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
static styles = [
UUITextStyles,
css`
@@ -90,11 +90,11 @@ export class UmbEditorViewUsersOverviewElement extends UmbContextConsumerMixin(U
private _routes: IRoute[] = [
{
path: 'grid',
component: () => import('./list-view-layouts/grid/editor-view-users-grid.element'),
component: () => import('./list-view-layouts/grid/workspace-view-users-grid.element'),
},
{
path: 'list',
component: () => import('./list-view-layouts/table/editor-view-users-table.element'),
component: () => import('./list-view-layouts/table/workspace-view-users-table.element'),
},
{
path: '**',
@@ -136,7 +136,7 @@ export class UmbEditorViewUsersOverviewElement extends UmbContextConsumerMixin(U
private _renderSelection() {
if (this._selection.length === 0) return nothing;
return html`<umb-editor-view-users-selection></umb-editor-view-users-selection>`;
return html`<umb-workspace-view-users-selection></umb-workspace-view-users-selection>`;
}
private _handleTogglePopover(event: PointerEvent) {
@@ -163,9 +163,9 @@ export class UmbEditorViewUsersOverviewElement extends UmbContextConsumerMixin(U
private _showInviteOrCreate() {
let modal = undefined;
if (this.isCloud) {
modal = document.createElement('umb-editor-view-users-invite');
modal = document.createElement('umb-workspace-view-users-invite');
} else {
modal = document.createElement('umb-editor-view-users-create');
modal = document.createElement('umb-workspace-view-users-create');
}
this._modalService?.open(modal, { type: 'dialog' });
}
@@ -228,10 +228,10 @@ export class UmbEditorViewUsersOverviewElement extends UmbContextConsumerMixin(U
}
}
export default UmbEditorViewUsersOverviewElement;
export default UmbWorkspaceViewUsersOverviewElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-view-users-overview': UmbEditorViewUsersOverviewElement;
'umb-workspace-view-users-overview': UmbWorkspaceViewUsersOverviewElement;
}
}

View File

@@ -0,0 +1,19 @@
import { expect, fixture, html } from '@open-wc/testing';
//TODO: Test has been commented out while we figure out how to setup import maps for the test environment
// import { defaultA11yConfig } from '@umbraco-cms/test-utils';
// import UmbWorkspaceViewUsersOverviewElement from './workspace-view-users-overview.element';
// describe('UmbWorkspaceViewUsersOverviewElement', () => {
// let element: UmbWorkspaceViewUsersOverviewElement;
// beforeEach(async () => {
// element = await fixture(html`<umb-workspace-view-users-overview></umb-workspace-view-users-overview>`);
// });
// it('is defined with its own instance', () => {
// expect(element).to.be.instanceOf(UmbWorkspaceViewUsersOverviewElement);
// });
// it('passes the a11y audit', async () => {
// await expect(element).shadowDom.to.be.accessible(defaultA11yConfig);
// });
// });

View File

@@ -6,8 +6,8 @@ import { UmbContextConsumerMixin } from '@umbraco-cms/context-api';
import { UmbObserverMixin } from '@umbraco-cms/observable-api';
import { UmbUserStore } from '@umbraco-cms/stores/user/user.store';
@customElement('umb-editor-view-users-selection')
export class UmbEditorViewUsersSelectionElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
@customElement('umb-workspace-view-users-selection')
export class UmbWorkspaceViewUsersSelectionElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
static styles = [
UUITextStyles,
css`
@@ -74,10 +74,10 @@ export class UmbEditorViewUsersSelectionElement extends UmbContextConsumerMixin(
}
}
export default UmbEditorViewUsersSelectionElement;
export default UmbWorkspaceViewUsersSelectionElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-view-users-selection': UmbEditorViewUsersSelectionElement;
'umb-workspace-view-users-selection': UmbWorkspaceViewUsersSelectionElement;
}
}

View File

@@ -0,0 +1,19 @@
import { expect, fixture, html } from '@open-wc/testing';
//TODO: Test has been commented out while we figure out how to setup import maps for the test environment
// import UmbWorkspaceViewUsersSelectionElement from './workspace-view-users-selection.element';
// import { defaultA11yConfig } from '@umbraco-cms/test-utils';
// describe('UmbWorkspaceViewUsersSelectionElement', () => {
// let element: UmbWorkspaceViewUsersSelectionElement;
// beforeEach(async () => {
// element = await fixture(html`<umb-workspace-view-users-selection></umb-workspace-view-users-selection>`);
// });
// it('is defined with its own instance', () => {
// expect(element).to.be.instanceOf(UmbWorkspaceViewUsersSelectionElement);
// });
// it('passes the a11y audit', async () => {
// await expect(element).shadowDom.to.be.accessible(defaultA11yConfig);
// });
// });

View File

@@ -12,7 +12,7 @@ export const manifests: Array<ManifestTree> = [
label: 'Extensions',
icon: 'umb:favorite',
sections: ['Umb.Section.Settings'],
rootNodeEntityType: 'extensions-list', // TODO: how do we want to handle 'single node trees'. Trees without any children but still needs to open an editor? Currently an editor is chosen based on the entity type. The tree root node doesn't have one, so we need to tell which editor to use.
rootNodeEntityType: 'extensions-list', // TODO: how do we want to handle 'single node trees'. Trees without any children but still needs to open an workspace? Currently an workspace is chosen based on the entity type. The tree root node doesn't have one, so we need to tell which workspace to use.
},
},
{

View File

@@ -8,8 +8,8 @@ import { UmbDataTypeContext } from '../../data-type.context';
import { UmbContextConsumerMixin } from '@umbraco-cms/context-api';
import { UmbDataTypesStore } from 'src/core/stores/data-types/data-types.store';
@customElement('umb-editor-action-data-type-save')
export class UmbEditorActionDataTypeSaveElement extends UmbContextConsumerMixin(LitElement) {
@customElement('umb-workspace-action-data-type-save')
export class UmbWorkspaceActionDataTypeSaveElement extends UmbContextConsumerMixin(LitElement) {
static styles = [UUITextStyles, css``];
@state()
@@ -54,10 +54,10 @@ export class UmbEditorActionDataTypeSaveElement extends UmbContextConsumerMixin(
}
}
export default UmbEditorActionDataTypeSaveElement;
export default UmbWorkspaceActionDataTypeSaveElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-action-data-type-save': UmbEditorActionDataTypeSaveElement;
'umb-workspace-action-data-type-save': UmbWorkspaceActionDataTypeSaveElement;
}
}

View File

@@ -11,8 +11,8 @@ import { umbExtensionsRegistry } from '@umbraco-cms/extensions-registry';
import '../../../../property-editor-uis/shared/property-editor-config/property-editor-config.element';
import '../../../../components/ref-property-editor-ui/ref-property-editor-ui.element';
@customElement('umb-editor-view-data-type-edit')
export class UmbEditorViewDataTypeEditElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
@customElement('umb-workspace-view-data-type-edit')
export class UmbWorkspaceViewDataTypeEditElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
static styles = [
UUITextStyles,
css`
@@ -116,7 +116,7 @@ export class UmbEditorViewDataTypeEditElement extends UmbContextConsumerMixin(Um
private _renderPropertyEditorUI() {
return html`
<umb-editor-property-layout label="Property Editor" description="Select a property editor">
<umb-workspace-property-layout label="Property Editor" description="Select a property editor">
${this._propertyEditorUIAlias
? html`
<!-- TODO: border is a bit weird attribute name. Maybe single or standalone would be better? -->
@@ -140,7 +140,7 @@ export class UmbEditorViewDataTypeEditElement extends UmbContextConsumerMixin(Um
color="default"
@click=${this._openPropertyEditorUIPicker}></uui-button>
`}
</umb-editor-property-layout>
</umb-workspace-property-layout>
`;
}
@@ -159,10 +159,10 @@ export class UmbEditorViewDataTypeEditElement extends UmbContextConsumerMixin(Um
}
}
export default UmbEditorViewDataTypeEditElement;
export default UmbWorkspaceViewDataTypeEditElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-view-data-type-edit': UmbEditorViewDataTypeEditElement;
'umb-workspace-view-data-type-edit': UmbWorkspaceViewDataTypeEditElement;
}
}

View File

@@ -4,14 +4,14 @@ import { html } from 'lit-html';
import { data } from '../../../../../core/mocks/data/data-type.data';
import { UmbDataTypeContext } from '../../data-type.context';
import type { UmbEditorViewDataTypeEditElement } from './editor-view-data-type-edit.element';
import type { UmbWorkspaceViewDataTypeEditElement } from './workspace-view-data-type-edit.element';
import './editor-view-data-type-edit.element';
import './workspace-view-data-type-edit.element';
export default {
title: 'Editors/Data Type/Views/Edit',
component: 'umb-editor-view-data-type-edit',
id: 'umb-editor-view-data-type-edit',
title: 'Workspaces/Data Type/Views/Edit',
component: 'umb-workspace-view-data-type-edit',
id: 'umb-workspace-view-data-type-edit',
decorators: [
(story) =>
html` <umb-context-provider key="umbDataTypeContext" .value=${new UmbDataTypeContext(data[0])}>
@@ -20,6 +20,6 @@ export default {
],
} as Meta;
export const AAAOverview: Story<UmbEditorViewDataTypeEditElement> = () =>
html` <umb-editor-view-data-type-edit></umb-editor-view-data-type-edit>`;
export const AAAOverview: Story<UmbWorkspaceViewDataTypeEditElement> = () =>
html` <umb-workspace-view-data-type-edit></umb-workspace-view-data-type-edit>`;
AAAOverview.storyName = 'Overview';

View File

@@ -7,8 +7,8 @@ import type { DataTypeDetails } from '@umbraco-cms/models';
import { UmbObserverMixin } from '@umbraco-cms/observable-api';
import { UmbContextConsumerMixin } from '@umbraco-cms/context-api';
@customElement('umb-editor-view-data-type-info')
export class UmbEditorViewDataTypeInfoElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
@customElement('umb-workspace-view-data-type-info')
export class UmbWorkspaceViewDataTypeInfoElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
static styles = [UUITextStyles, css``];
@state()
@@ -40,20 +40,18 @@ export class UmbEditorViewDataTypeInfoElement extends UmbContextConsumerMixin(Um
private _renderGeneralInfo() {
return html`
<uui-box headline="General" style="margin-bottom: 20px;">
<umb-editor-property-layout label="Key">
<umb-workspace-property-layout label="Key">
<div slot="editor">${this._dataType?.key}</div>
</umb-editor-property-layout>
<umb-editor-property-layout
label="Property Editor Alias
">
</umb-workspace-property-layout>
<umb-workspace-property-layout
label="Property Editor Alias">
<div slot="editor">${this._dataType?.propertyEditorModelAlias}</div>
</umb-editor-property-layout>
</umb-workspace-property-layout>
<umb-editor-property-layout
label="Property Editor UI Alias
">
<umb-workspace-property-layout
label="Property Editor UI Alias">
<div slot="editor">${this._dataType?.propertyEditorUIAlias}</div>
</umb-editor-property-layout>
</umb-workspace-property-layout>
</uui-box>
`;
}
@@ -63,10 +61,10 @@ export class UmbEditorViewDataTypeInfoElement extends UmbContextConsumerMixin(Um
}
}
export default UmbEditorViewDataTypeInfoElement;
export default UmbWorkspaceViewDataTypeInfoElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-view-data-type-info': UmbEditorViewDataTypeInfoElement;
'umb-workspace-view-data-type-info': UmbWorkspaceViewDataTypeInfoElement;
}
}

View File

@@ -1,4 +1,4 @@
import './editor-view-data-type-info.element';
import './workspace-view-data-type-info.element';
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
@@ -6,12 +6,12 @@ import { html } from 'lit-html';
import { data } from '../../../../../core/mocks/data/data-type.data';
import { UmbDataTypeContext } from '../../data-type.context';
import type { UmbEditorViewDataTypeInfoElement } from './editor-view-data-type-info.element';
import type { UmbWorkspaceViewDataTypeInfoElement } from './workspace-view-data-type-info.element';
export default {
title: 'Editors/Data Type/Views/Info',
component: 'umb-editor-view-data-type-info',
id: 'umb-editor-view-data-type-info',
title: 'Workspaces/Data Type/Views/Info',
component: 'umb-workspace-view-data-type-info',
id: 'umb-workspace-view-data-type-info',
decorators: [
(story) =>
html` <umb-context-provider key="umbDataTypeContext" .value=${new UmbDataTypeContext(data[0])}>
@@ -20,6 +20,6 @@ export default {
],
} as Meta;
export const AAAOverview: Story<UmbEditorViewDataTypeInfoElement> = () =>
html` <umb-editor-view-data-type-info></umb-editor-view-data-type-info>`;
export const AAAOverview: Story<UmbWorkspaceViewDataTypeInfoElement> = () =>
html` <umb-workspace-view-data-type-info></umb-workspace-view-data-type-info>`;
AAAOverview.storyName = 'Overview';

View File

@@ -9,11 +9,11 @@ import { UmbObserverMixin } from '@umbraco-cms/observable-api';
import { UmbContextProviderMixin, UmbContextConsumerMixin } from '@umbraco-cms/context-api';
import { umbExtensionsRegistry } from '@umbraco-cms/extensions-registry';
/**
* @element umb-editor-data-type
* @description - Element for displaying a Data Type Editor
* @element umb-workspace-data-type
* @description - Element for displaying a Data Type Workspace
*/
@customElement('umb-editor-data-type')
export class UmbEditorDataTypeElement extends UmbContextProviderMixin(
@customElement('umb-workspace-data-type')
export class UmbWorkspaceDataTypeElement extends UmbContextProviderMixin(
UmbContextConsumerMixin(UmbObserverMixin(LitElement))
) {
static styles = [
@@ -58,38 +58,38 @@ export class UmbEditorDataTypeElement extends UmbContextProviderMixin(
private _registerExtensions() {
const extensions: Array<any> = [
{
type: 'editorView',
alias: 'Umb.EditorView.DataType.Edit',
name: 'Data Type Editor Edit View',
loader: () => import('./views/edit/editor-view-data-type-edit.element'),
type: 'workspaceView',
alias: 'Umb.WorkspaceView.DataType.Edit',
name: 'Data Type Workspace Edit View',
loader: () => import('./views/edit/workspace-view-data-type-edit.element'),
weight: 90,
meta: {
editors: ['Umb.Editor.DataType'],
workspaces: ['Umb.Workspace.DataType'],
label: 'Edit',
pathname: 'edit',
icon: 'edit',
},
},
{
type: 'editorView',
alias: 'Umb.EditorView.DataType.Info',
name: 'Data Type Editor Info View',
loader: () => import('./views/info/editor-view-data-type-info.element'),
type: 'workspaceView',
alias: 'Umb.WorkspaceView.DataType.Info',
name: 'Data Type Workspace Info View',
loader: () => import('./views/info/workspace-view-data-type-info.element'),
weight: 90,
meta: {
editors: ['Umb.Editor.DataType'],
workspaces: ['Umb.Workspace.DataType'],
label: 'Info',
pathname: 'info',
icon: 'info',
},
},
{
type: 'editorAction',
alias: 'Umb.EditorAction.DataType.Save',
name: 'Save Data Type Editor Action',
loader: () => import('./actions/save/editor-action-data-type-save.element'),
type: 'workspaceAction',
alias: 'Umb.WorkspaceAction.DataType.Save',
name: 'Save Data Type Workspace Action',
loader: () => import('./actions/save/workspace-action-data-type-save.element'),
meta: {
editors: ['Umb.Editor.DataType'],
workspaces: ['Umb.Workspace.DataType'],
},
},
];
@@ -126,7 +126,7 @@ export class UmbEditorDataTypeElement extends UmbContextProviderMixin(
this._dataTypeContext?.setPropertyValue(target?.alias, target?.value);
};
// TODO. find a way where we don't have to do this for all editors.
// TODO. find a way where we don't have to do this for all Workspaces.
private _handleInput(event: UUIInputEvent) {
if (event instanceof UUIInputEvent) {
const target = event.composedPath()[0] as UUIInputElement;
@@ -139,17 +139,17 @@ export class UmbEditorDataTypeElement extends UmbContextProviderMixin(
render() {
return html`
<umb-editor-entity-layout alias="Umb.Editor.DataType">
<umb-workspace-entity-layout alias="Umb.Workspace.DataType">
<uui-input id="header" slot="header" .value=${this._dataTypeName} @input="${this._handleInput}"></uui-input>
</umb-editor-entity-layout>
</umb-workspace-entity-layout>
`;
}
}
export default UmbEditorDataTypeElement;
export default UmbWorkspaceDataTypeElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-data-type': UmbEditorDataTypeElement;
'umb-workspace-data-type': UmbWorkspaceDataTypeElement;
}
}

View File

@@ -0,0 +1,18 @@
import './workspace-data-type.element';
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
import { data } from '../../../core/mocks/data/data-type.data';
import type { UmbWorkspaceDataTypeElement } from './workspace-data-type.element';
export default {
title: 'Workspaces/Data Type',
component: 'umb-workspace-data-type',
id: 'umb-workspace-data-type',
} as Meta;
export const AAAOverview: Story<UmbWorkspaceDataTypeElement> = () =>
html` <umb-workspace-data-type id="${data[0].key}"></umb-workspace-data-type>`;
AAAOverview.storyName = 'Overview';

View File

@@ -8,8 +8,9 @@ import { UmbDocumentTypeStore } from '../../../../../core/stores/document-type/d
import { UmbDocumentTypeContext } from '../../document-type.context';
import { UmbContextConsumerMixin } from '@umbraco-cms/context-api';
@customElement('umb-editor-action-document-type-save')
export class UmbEditorActionDocumentTypeSaveElement extends UmbContextConsumerMixin(LitElement) {
@customElement('umb-workspace-action-document-type-save')
export class UmbWorkspaceActionDocumentTypeSaveElement extends UmbContextConsumerMixin(LitElement) {
static styles = [UUITextStyles, css``];
@state()
@@ -57,10 +58,10 @@ export class UmbEditorActionDocumentTypeSaveElement extends UmbContextConsumerMi
}
}
export default UmbEditorActionDocumentTypeSaveElement;
export default UmbWorkspaceActionDocumentTypeSaveElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-action-document-type-save': UmbEditorActionDocumentTypeSaveElement;
'umb-workspace-action-document-type-save': UmbWorkspaceActionDocumentTypeSaveElement;
}
}

View File

@@ -7,8 +7,8 @@ import type { DocumentTypeDetails } from '@umbraco-cms/models';
import { UmbObserverMixin } from '@umbraco-cms/observable-api';
import { UmbContextConsumerMixin } from '@umbraco-cms/context-api';
@customElement('umb-editor-view-document-type-design')
export class UmbEditorViewDocumentTypeDesignElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
@customElement('umb-workspace-view-document-type-design')
export class UmbWorkspaceViewDocumentTypeDesignElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
static styles = [UUITextStyles, css``];
@state()
@@ -38,10 +38,10 @@ export class UmbEditorViewDocumentTypeDesignElement extends UmbContextConsumerMi
}
}
export default UmbEditorViewDocumentTypeDesignElement;
export default UmbWorkspaceViewDocumentTypeDesignElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-view-document-type-design': UmbEditorViewDocumentTypeDesignElement;
'umb-workspace-view-document-type-design': UmbWorkspaceViewDocumentTypeDesignElement;
}
}

View File

@@ -0,0 +1,25 @@
import './workspace-view-document-type-design.element';
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
import { data } from '../../../../../core/mocks/data/document-type.data';
import { UmbDocumentTypeContext } from '../../document-type.context';
import type { UmbWorkspaceViewDocumentTypeDesignElement } from './workspace-view-document-type-design.element';
export default {
title: 'Workspaces/Document Type/Views/Design',
component: 'umb-workspace-view-document-type-design',
id: 'umb-workspace-view-document-type-design',
decorators: [
(story) =>
html`<umb-context-provider key="umbDocumentTypeContext" .value=${new UmbDocumentTypeContext(data[0])}>
${story()}
</umb-context-provider>`,
],
} as Meta;
export const AAAOverview: Story<UmbWorkspaceViewDocumentTypeDesignElement> = () =>
html` <umb-workspace-view-document-type-design></umb-workspace-view-document-type-design>`;
AAAOverview.storyName = 'Overview';

View File

@@ -12,8 +12,8 @@ import { umbExtensionsRegistry } from '@umbraco-cms/extensions-registry';
import '../../property-editor-uis/icon-picker/property-editor-ui-icon-picker.element';
@customElement('umb-editor-document-type')
export class UmbEditorDocumentTypeElement extends UmbContextProviderMixin(
@customElement('umb-workspace-document-type')
export class UmbWorkspaceDocumentTypeElement extends UmbContextProviderMixin(
UmbContextConsumerMixin(UmbObserverMixin(LitElement))
) {
static styles = [
@@ -65,25 +65,25 @@ export class UmbEditorDocumentTypeElement extends UmbContextProviderMixin(
private _registerExtensions() {
const extensions: Array<ManifestTypes> = [
{
type: 'editorView',
alias: 'Umb.EditorView.DocumentType.Design',
name: 'Document Type Editor Design View',
loader: () => import('./views/design/editor-view-document-type-design.element'),
type: 'workspaceView',
alias: 'Umb.WorkspaceView.DocumentType.Design',
name: 'Document Type Workspace Design View',
loader: () => import('./views/design/workspace-view-document-type-design.element'),
weight: 100,
meta: {
editors: ['Umb.Editor.DocumentType'],
workspaces: ['Umb.Workspace.DocumentType'],
label: 'Design',
pathname: 'design',
icon: 'edit',
},
},
{
type: 'editorAction',
alias: 'Umb.EditorAction.DocumentType.Save',
name: 'Save Document Type Editor Action',
loader: () => import('./actions/save/editor-action-document-type-save.element'),
type: 'workspaceAction',
alias: 'Umb.WorkspaceAction.DocumentType.Save',
name: 'Save Document Type Workspace Action',
loader: () => import('./actions/save/workspace-action-document-type-save.element'),
meta: {
editors: ['Umb.Editor.DocumentType'],
workspaces: ['Umb.Workspace.DocumentType'],
},
},
];
@@ -114,7 +114,7 @@ export class UmbEditorDocumentTypeElement extends UmbContextProviderMixin(
});
}
// TODO. find a way where we don't have to do this for all editors.
// TODO. find a way where we don't have to do this for all workspaces.
private _handleInput(event: UUIInputEvent) {
if (event instanceof UUIInputEvent) {
const target = event.composedPath()[0] as UUIInputElement;
@@ -127,7 +127,7 @@ export class UmbEditorDocumentTypeElement extends UmbContextProviderMixin(
render() {
return html`
<umb-editor-entity-layout alias="Umb.Editor.DocumentType">
<umb-workspace-entity-layout alias="Umb.Workspace.DocumentType">
<div id="header" slot="header">
<umb-property-editor-ui-icon-picker></umb-property-editor-ui-icon-picker>
<uui-input id="name" .value=${this._documentType?.name} @input="${this._handleInput}">
@@ -136,15 +136,15 @@ export class UmbEditorDocumentTypeElement extends UmbContextProviderMixin(
</div>
<div slot="footer">Keyboard Shortcuts</div>
</umb-editor-entity-layout>
</umb-workspace-entity-layout>
`;
}
}
export default UmbEditorDocumentTypeElement;
export default UmbWorkspaceDocumentTypeElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-document-type': UmbEditorDocumentTypeElement;
'umb-workspace-document-type': UmbWorkspaceDocumentTypeElement;
}
}

View File

@@ -0,0 +1,18 @@
import './workspace-document-type.element';
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
import { data } from '../../../core/mocks/data/document-type.data';
import type { UmbWorkspaceDocumentTypeElement } from './workspace-document-type.element';
export default {
title: 'Workspaces/Document Type',
component: 'umb-workspace-document-type',
id: 'umb-workspace-document-type',
} as Meta;
export const AAAOverview: Story<UmbWorkspaceDocumentTypeElement> = () =>
html` <umb-workspace-document-type id="${data[0].key}"></umb-workspace-document-type>`;
AAAOverview.storyName = 'Overview';

View File

@@ -2,14 +2,14 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib';
import { css, html, LitElement } from 'lit';
import { customElement, property } from 'lit/decorators.js';
import { umbExtensionsRegistry } from '@umbraco-cms/extensions-registry';
import type { ManifestEditorView } from '@umbraco-cms/models';
import type { ManifestWorkspaceView } from '@umbraco-cms/models';
import { UmbContextConsumerMixin, UmbContextProviderMixin } from '@umbraco-cms/context-api';
import type { UmbDocumentStore } from 'src/core/stores/document/document.store';
import '../shared/editor-content/editor-content.element';
import '../shared/workspace-content/workspace-content.element';
@customElement('umb-editor-document')
export class UmbEditorDocumentElement extends UmbContextConsumerMixin(UmbContextProviderMixin(LitElement)) {
@customElement('umb-workspace-document')
export class UmbWorkspaceDocumentElement extends UmbContextConsumerMixin(UmbContextProviderMixin(LitElement)) {
static styles = [
UUITextStyles,
css`
@@ -27,36 +27,36 @@ export class UmbEditorDocumentElement extends UmbContextConsumerMixin(UmbContext
constructor() {
super();
this._registerEditorViews();
this._registerWorkspaceViews();
this.consumeContext('umbDocumentStore', (documentStore: UmbDocumentStore) => {
this.provideContext('umbContentStore', documentStore);
});
}
private _registerEditorViews() {
const dashboards: Array<ManifestEditorView> = [
private _registerWorkspaceViews() {
const dashboards: Array<ManifestWorkspaceView> = [
{
type: 'editorView',
alias: 'Umb.EditorView.Document.Edit',
name: 'Document Editor Edit View',
loader: () => import('../shared/editor-content/views/edit/editor-view-content-edit.element'),
type: 'workspaceView',
alias: 'Umb.WorkspaceView.Document.Edit',
name: 'Document Workspace Edit View',
loader: () => import('../shared/workspace-content/views/edit/workspace-view-content-edit.element'),
weight: 200,
meta: {
editors: ['Umb.Editor.Document'],
workspaces: ['Umb.Workspace.Document'],
label: 'Info',
pathname: 'content',
icon: 'document',
},
},
{
type: 'editorView',
alias: 'Umb.EditorView.Document.Info',
name: 'Document Editor Info View',
loader: () => import('../shared/editor-content/views/info/editor-view-content-info.element'),
type: 'workspaceView',
alias: 'Umb.WorkspaceView.Document.Info',
name: 'Document Workspace Info View',
loader: () => import('../shared/workspace-content/views/info/workspace-view-content-info.element'),
weight: 100,
meta: {
editors: ['Umb.Editor.Document'],
workspaces: ['Umb.Workspace.Document'],
label: 'Info',
pathname: 'info',
icon: 'info',
@@ -71,14 +71,14 @@ export class UmbEditorDocumentElement extends UmbContextConsumerMixin(UmbContext
}
render() {
return html`<umb-editor-content .entityKey=${this.entityKey} alias="Umb.Editor.Document"></umb-editor-content>`;
return html`<umb-workspace-content .entityKey=${this.entityKey} alias="Umb.Workspace.Document"></umb-workspace-content>`;
}
}
export default UmbEditorDocumentElement;
export default UmbWorkspaceDocumentElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-document': UmbEditorDocumentElement;
'umb-workspace-document': UmbWorkspaceDocumentElement;
}
}

View File

@@ -0,0 +1,18 @@
import './workspace-document.element';
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
import { data as documentNodes } from '../../../core/mocks/data/document.data';
import type { UmbWorkspaceDocumentElement } from './workspace-document.element';
export default {
title: 'Workspaces/Document',
component: 'umb-workspace-document',
id: 'umb-workspace-document',
} as Meta;
export const AAAOverview: Story<UmbWorkspaceDocumentElement> = () =>
html` <umb-workspace-document id="${documentNodes[0].key}"></umb-workspace-document>`;
AAAOverview.storyName = 'Overview';

View File

@@ -6,8 +6,9 @@ import { umbExtensionsRegistry } from '@umbraco-cms/extensions-registry';
import { UmbContextConsumerMixin } from '@umbraco-cms/context-api';
import type { ManifestTypes } from '@umbraco-cms/models';
@customElement('umb-editor-extensions')
export class UmbEditorExtensionsElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
@customElement('umb-workspace-extensions')
export class UmbWorkspaceExtensionsElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
@state()
private _extensions: Array<ManifestTypes> = [];
@@ -24,7 +25,7 @@ export class UmbEditorExtensionsElement extends UmbContextConsumerMixin(UmbObser
render() {
return html`
<umb-editor-entity-layout headline="Extensions" alias="Umb.Editor.Extensions">
<umb-workspace-entity-layout headline="Extensions" alias="Umb.Workspace.Extensions">
<uui-box>
<p>List of currently loaded extensions</p>
<uui-table>
@@ -49,15 +50,15 @@ export class UmbEditorExtensionsElement extends UmbContextConsumerMixin(UmbObser
)}
</uui-table>
</uui-box>
</umb-editor-entity-layout>
</umb-workspace-entity-layout>
`;
}
}
export default UmbEditorExtensionsElement;
export default UmbWorkspaceExtensionsElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-extensions': UmbEditorExtensionsElement;
'umb-workspace-extensions': UmbWorkspaceExtensionsElement;
}
}

View File

@@ -0,0 +1,16 @@
import './workspace-extensions.element';
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
import type { UmbWorkspaceExtensionsElement } from './workspace-extensions.element';
export default {
title: 'Workspaces/Extensions',
component: 'umb-workspace-extensions',
id: 'umb-workspace-extensions',
} as Meta;
export const AAAOverview: Story<UmbWorkspaceExtensionsElement> = () =>
html` <umb-workspace-extensions></umb-workspace-extensions>`;
AAAOverview.storyName = 'Overview';

View File

@@ -0,0 +1,121 @@
import type { ManifestWorkspace } from '@umbraco-cms/models';
export const manifests: Array<ManifestWorkspace> = [
{
type: 'workspace',
alias: 'Umb.Workspace.Member',
name: 'Member Workspace',
loader: () => import('./member/workspace-member.element'),
meta: {
entityType: 'member',
},
},
{
type: 'workspace',
alias: 'Umb.Workspace.MemberGroup',
name: 'Member Group Workspace',
loader: () => import('./member-group/workspace-member-group.element'),
meta: {
entityType: 'member-group',
},
},
{
type: 'workspace',
alias: 'Umb.Workspace.DataType',
name: 'Data Type Workspace',
loader: () => import('./data-type/workspace-data-type.element'),
meta: {
entityType: 'data-type',
},
},
{
type: 'workspace',
alias: 'Umb.Workspace.DocumentType',
name: 'Document Type Workspace',
loader: () => import('./document-type/workspace-document-type.element'),
meta: {
entityType: 'document-type',
},
},
{
type: 'workspace',
alias: 'Umb.Workspace.MediaType',
name: 'Media Type Workspace',
loader: () => import('./media-type/workspace-media-type.element'),
meta: {
entityType: 'media-type',
},
},
{
type: 'workspace',
alias: 'Umb.Workspace.MemberType',
name: 'Member Type Workspace',
loader: () => import('./member-type/workspace-member-type.element'),
meta: {
entityType: 'member-type',
},
},
{
type: 'workspace',
alias: 'Umb.Workspace.Extensions',
name: 'Extensions Workspace',
loader: () => import('./extensions/workspace-extensions.element'),
meta: {
entityType: 'extensions-list',
},
},
{
type: 'workspace',
alias: 'Umb.Workspace.Media',
name: 'Media Workspace',
loader: () => import('./media/workspace-media.element'),
meta: {
entityType: 'media',
},
},
{
type: 'workspace',
alias: 'Umb.Workspace.Document',
name: 'Content Workspace',
loader: () => import('./document/workspace-document.element'),
meta: {
entityType: 'document',
},
},
{
type: 'workspace',
alias: 'Umb.Workspace.User',
name: 'User Workspace',
loader: () => import('./user/workspace-user.element'),
meta: {
entityType: 'user',
},
},
{
type: 'workspace',
alias: 'Umb.Workspace.UserGroup',
name: 'User Group Workspace',
loader: () => import('./user-group/workspace-user-group.element'),
meta: {
entityType: 'user-group',
},
},
{
type: 'workspace',
alias: 'Umb.Workspace.Package',
name: 'Package Workspace',
loader: () => import('./package/workspace-package.element'),
meta: {
entityType: 'package',
},
},
{
type: 'workspace',
alias: 'Umb.Workspace.PackageBuilder',
name: 'Package Builder Workspace',
loader: () => import('./package-builder/workspace-package-builder.element'),
meta: {
entityType: 'package-builder',
},
},
];

View File

@@ -0,0 +1,34 @@
import { UUITextStyles } from '@umbraco-ui/uui-css/lib';
import { css, html, LitElement } from 'lit';
import { customElement, property } from 'lit/decorators.js';
import '../shared/workspace-entity-layout/workspace-entity-layout.element';
@customElement('umb-workspace-media-type')
export class UmbWorkspaceMediaTypeElement extends LitElement {
static styles = [
UUITextStyles,
css`
:host {
display: block;
width: 100%;
height: 100%;
}
`,
];
@property()
id!: string;
render() {
return html`<umb-workspace-entity-layout alias="Umb.Workspace.MediaType">Media Type Workspace</umb-workspace-entity-layout>`;
}
}
export default UmbWorkspaceMediaTypeElement;
declare global {
interface HTMLElementTagNameMap {
'umb-workspace-media-type': UmbWorkspaceMediaTypeElement;
}
}

View File

@@ -1,15 +1,15 @@
import { UUITextStyles } from '@umbraco-ui/uui-css/lib';
import { css, html, LitElement } from 'lit';
import { customElement, property } from 'lit/decorators.js';
import type { ManifestEditorView } from '@umbraco-cms/models';
import type { ManifestWorkspaceView } from '@umbraco-cms/models';
import { umbExtensionsRegistry } from '@umbraco-cms/extensions-registry';
import { UmbMediaStore } from 'src/core/stores/media/media.store';
import { UmbContextConsumerMixin, UmbContextProviderMixin } from '@umbraco-cms/context-api';
import '../shared/editor-content/editor-content.element';
import '../shared/workspace-content/workspace-content.element';
@customElement('umb-editor-media')
export class UmbEditorMediaElement extends UmbContextConsumerMixin(UmbContextProviderMixin(LitElement)) {
@customElement('umb-workspace-media')
export class UmbWorkspaceMediaElement extends UmbContextConsumerMixin(UmbContextProviderMixin(LitElement)) {
static styles = [
UUITextStyles,
css`
@@ -27,36 +27,36 @@ export class UmbEditorMediaElement extends UmbContextConsumerMixin(UmbContextPro
constructor() {
super();
this._registerEditorViews();
this._registerWorkspaceViews();
this.consumeContext('umbMediaStore', (mediaStore: UmbMediaStore) => {
this.provideContext('umbContentStore', mediaStore);
});
}
private _registerEditorViews() {
const dashboards: Array<ManifestEditorView> = [
private _registerWorkspaceViews() {
const dashboards: Array<ManifestWorkspaceView> = [
{
type: 'editorView',
alias: 'Umb.EditorView.Media.Edit',
name: 'Media Editor Edit View',
loader: () => import('../shared/editor-content/views/edit/editor-view-content-edit.element'),
type: 'workspaceView',
alias: 'Umb.WorkspaceView.Media.Edit',
name: 'Media Workspace Edit View',
loader: () => import('../shared/workspace-content/views/edit/workspace-view-content-edit.element'),
weight: 200,
meta: {
editors: ['Umb.Editor.Media'],
workspaces: ['Umb.Workspace.Media'],
label: 'Media',
pathname: 'media',
icon: 'umb:picture',
},
},
{
type: 'editorView',
alias: 'Umb.EditorView.Media.Info',
name: 'Media Editor Info View',
loader: () => import('../shared/editor-content/views/info/editor-view-content-info.element'),
type: 'workspaceView',
alias: 'Umb.WorkspaceView.Media.Info',
name: 'Media Workspace Info View',
loader: () => import('../shared/workspace-content/views/info/workspace-view-content-info.element'),
weight: 100,
meta: {
editors: ['Umb.Editor.Media'],
workspaces: ['Umb.Workspace.Media'],
label: 'Info',
pathname: 'info',
icon: 'info',
@@ -71,14 +71,14 @@ export class UmbEditorMediaElement extends UmbContextConsumerMixin(UmbContextPro
}
render() {
return html`<umb-editor-content .entityKey=${this.entityKey} alias="Umb.Editor.Media"></umb-editor-content>`;
return html`<umb-workspace-content .entityKey=${this.entityKey} alias="Umb.Workspace.Media"></umb-workspace-content>`;
}
}
export default UmbEditorMediaElement;
export default UmbWorkspaceMediaElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-media': UmbEditorMediaElement;
'umb-workspace-media': UmbWorkspaceMediaElement;
}
}

View File

@@ -0,0 +1,18 @@
import './workspace-media.element';
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
import { data as mediaNodes } from '../../../core/mocks/data/media.data';
import type { UmbWorkspaceMediaElement } from './workspace-media.element';
export default {
title: 'Workspaces/Media',
component: 'umb-workspace-media',
id: 'umb-workspace-media',
} as Meta;
export const AAAOverview: Story<UmbWorkspaceMediaElement> = () =>
html` <umb-workspace-media id="${mediaNodes[0].key}"></umb-workspace-media>`;
AAAOverview.storyName = 'Overview';

View File

@@ -2,8 +2,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib';
import { css, html, LitElement } from 'lit';
import { customElement, property } from 'lit/decorators.js';
@customElement('umb-editor-member-group')
export class UmbEditorMemberGroupElement extends LitElement {
@customElement('umb-workspace-member-group')
export class UmbWorkspaceMemberGroupElement extends LitElement {
static styles = [
UUITextStyles,
css`
@@ -20,15 +20,15 @@ export class UmbEditorMemberGroupElement extends LitElement {
render() {
return html`
<umb-editor-entity-layout alias="Umb.Editor.MemberGroup">Member Group Editor</umb-editor-entity-layout>
<umb-workspace-entity-layout alias="Umb.Workspace.MemberGroup">Member Group Workspace</umb-workspace-entity-layout>
`;
}
}
export default UmbEditorMemberGroupElement;
export default UmbWorkspaceMemberGroupElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-member-group': UmbEditorMemberGroupElement;
'umb-workspace-member-group': UmbWorkspaceMemberGroupElement;
}
}

View File

@@ -2,10 +2,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib';
import { css, html, LitElement } from 'lit';
import { customElement, property } from 'lit/decorators.js';
import '../shared/editor-entity-layout/editor-entity-layout.element';
import '../shared/workspace-entity-layout/workspace-entity-layout.element';
@customElement('umb-editor-member-type')
export class UmbEditorMemberTypeElement extends LitElement {
@customElement('umb-workspace-member-type')
export class UmbWorkspaceMemberTypeElement extends LitElement {
static styles = [
UUITextStyles,
css`
@@ -22,15 +22,15 @@ export class UmbEditorMemberTypeElement extends LitElement {
render() {
return html`
<umb-editor-entity-layout alias="Umb.Editor.MemberType">Member Type Editor</umb-editor-entity-layout>
<umb-workspace-entity-layout alias="Umb.Workspace.MemberType">Member Type Workspace</umb-workspace-entity-layout>
`;
}
}
export default UmbEditorMemberTypeElement;
export default UmbWorkspaceMemberTypeElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-member-type': UmbEditorMemberTypeElement;
'umb-workspace-member-type': UmbWorkspaceMemberTypeElement;
}
}

View File

@@ -2,8 +2,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib';
import { css, html, LitElement } from 'lit';
import { customElement, property } from 'lit/decorators.js';
@customElement('umb-editor-member')
export class UmbEditorMemberElement extends LitElement {
@customElement('umb-workspace-member')
export class UmbWorkspaceMemberElement extends LitElement {
static styles = [
UUITextStyles,
css`
@@ -19,14 +19,14 @@ export class UmbEditorMemberElement extends LitElement {
id!: string;
render() {
return html` <umb-editor-entity-layout alias="Umb.Editor.Member">Member Editor</umb-editor-entity-layout> `;
return html` <umb-workspace-entity-layout alias="Umb.Workspace.Member">Member Workspace</umb-workspace-entity-layout> `;
}
}
export default UmbEditorMemberElement;
export default UmbWorkspaceMemberElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-member': UmbEditorMemberElement;
'umb-workspace-member': UmbWorkspaceMemberElement;
}
}

View File

@@ -0,0 +1,31 @@
import { UUITextStyles } from '@umbraco-ui/uui-css/lib';
import { css, html, LitElement } from 'lit';
import { customElement } from 'lit/decorators.js';
@customElement('umb-workspace-package-builder')
export class UmbWorkspacePackageBuilderElement extends LitElement {
static styles = [
UUITextStyles,
css`
:host {
display: block;
width: 100%;
height: 100%;
}
`,
];
render() {
return html`<umb-workspace-entity-layout alias="Umb.Workspace.PackageBuilder"
>PACKAGE BUILDER</umb-workspace-entity-layout
> `;
}
}
export default UmbWorkspacePackageBuilderElement;
declare global {
interface HTMLElementTagNameMap {
'umb-workspace-package-builder': UmbWorkspacePackageBuilderElement;
}
}

View File

@@ -2,8 +2,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib';
import { css, html, LitElement } from 'lit';
import { customElement } from 'lit/decorators.js';
@customElement('umb-editor-package')
export class UmbEditorPackageElement extends LitElement {
@customElement('umb-workspace-package')
export class UmbWorkspacePackageElement extends LitElement {
static styles = [
UUITextStyles,
css`
@@ -16,14 +16,14 @@ export class UmbEditorPackageElement extends LitElement {
];
render() {
return html`<umb-editor-entity-layout alias="Umb.Editor.Package">PACKAGE EDITOR</umb-editor-entity-layout> `;
return html`<umb-workspace-entity-layout alias="Umb.Workspace.Package">PACKAGE Workspace</umb-workspace-entity-layout> `;
}
}
export default UmbEditorPackageElement;
export default UmbWorkspacePackageElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-package': UmbEditorPackageElement;
'umb-workspace-package': UmbWorkspacePackageElement;
}
}

View File

@@ -2,20 +2,20 @@ import { UUITextStyles } from '@umbraco-ui/uui';
import { CSSResultGroup, html, LitElement } from 'lit';
import { customElement, property, state } from 'lit/decorators.js';
import { createExtensionElement } from '@umbraco-cms/extensions-api';
import type { ManifestEditorAction } from '@umbraco-cms/models';
import type { ManifestWorkspaceAction } from '@umbraco-cms/models';
// Niels, thoughts, TODO: Consider naming this just actions, not extension as everything is an extension.
@customElement('umb-editor-action-extension')
export class UmbEditorActionExtensionElement extends LitElement {
@customElement('umb-workspace-action-extension')
export class UmbWorkspaceActionExtensionElement extends LitElement {
static styles: CSSResultGroup = [UUITextStyles];
private _editorAction?: ManifestEditorAction;
private _workspaceAction?: ManifestWorkspaceAction;
@property({ type: Object })
public get editorAction(): ManifestEditorAction | undefined {
return this._editorAction;
public get workspaceAction(): ManifestWorkspaceAction | undefined {
return this._workspaceAction;
}
public set editorAction(value: ManifestEditorAction | undefined) {
this._editorAction = value;
public set workspaceAction(value: ManifestWorkspaceAction | undefined) {
this._workspaceAction = value;
this._createElement();
}
@@ -23,13 +23,13 @@ export class UmbEditorActionExtensionElement extends LitElement {
private _element?: any;
private async _createElement() {
if (!this.editorAction) return;
if (!this.workspaceAction) return;
try {
this._element = await createExtensionElement(this.editorAction);
this._element = await createExtensionElement(this.workspaceAction);
if (!this._element) return;
this._element.editorAction = this.editorAction;
this._element.editorAction = this.workspaceAction;
} catch (error) {
// TODO: loading JS failed so we should do some nice UI. (This does only happen if extension has a js prop, otherwise we concluded that no source was needed resolved the load.)
}
@@ -42,6 +42,6 @@ export class UmbEditorActionExtensionElement extends LitElement {
declare global {
interface HTMLElementTagNameMap {
'umb-editor-action-extension': UmbEditorActionExtensionElement;
'umb-workspace-action-extension': UmbWorkspaceActionExtensionElement;
}
}

View File

@@ -9,8 +9,8 @@ import type { ContentProperty, ContentPropertyData, DocumentDetails, MediaDetail
import '../../../../../components/content-property/content-property.element';
@customElement('umb-editor-view-content-edit')
export class UmbEditorViewContentEditElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
@customElement('umb-workspace-view-content-edit')
export class UmbWorkspaceViewContentEditElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
static styles = [
UUITextStyles,
css`
@@ -62,10 +62,10 @@ export class UmbEditorViewContentEditElement extends UmbContextConsumerMixin(Umb
}
}
export default UmbEditorViewContentEditElement;
export default UmbWorkspaceViewContentEditElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-view-content-edit': UmbEditorViewContentEditElement;
'umb-workspace-view-content-edit': UmbWorkspaceViewContentEditElement;
}
}

View File

@@ -1,4 +1,4 @@
import './editor-view-content-info.element';
import './workspace-view-content-edit.element';
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
@@ -6,12 +6,12 @@ import { html } from 'lit-html';
import { data } from '../../../../../../core/mocks/data/document.data';
import { UmbNodeContext } from '../../node.context';
import type { UmbEditorViewContentInfoElement } from './editor-view-content-info.element';
import type { UmbWorkspaceViewContentEditElement } from './workspace-view-content-edit.element';
export default {
title: 'Editors/Shared/Node/Views/Info',
component: 'umb-editor-view-content-info',
id: 'umb-editor-view-content-info',
title: 'Workspaces/Shared/Node/Views/Edit',
component: 'umb-workspace-view-content-edit',
id: 'umb-workspace-view-content-edit',
decorators: [
(story) =>
html` <umb-context-provider key="umbNodeContext" .value=${new UmbNodeContext(data[0])}>
@@ -20,6 +20,6 @@ export default {
],
} as Meta;
export const AAAOverview: Story<UmbEditorViewContentInfoElement> = () =>
html` <umb-editor-view-content-info></umb-editor-view-content-info>`;
export const AAAOverview: Story<UmbWorkspaceViewContentEditElement> = () =>
html` <umb-workspace-view-content-edit></umb-workspace-view-content-edit>`;
AAAOverview.storyName = 'Overview';

View File

@@ -7,8 +7,8 @@ import { UmbObserverMixin } from '@umbraco-cms/observable-api';
import { UmbContextConsumerMixin } from '@umbraco-cms/context-api';
import type { DocumentDetails, MediaDetails } from '@umbraco-cms/models';
@customElement('umb-editor-view-content-info')
export class UmbEditorViewContentInfoElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
@customElement('umb-workspace-view-content-info')
export class UmbWorkspaceViewContentInfoElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
static styles = [
UUITextStyles,
css`
@@ -42,14 +42,14 @@ export class UmbEditorViewContentInfoElement extends UmbContextConsumerMixin(Umb
}
render() {
return html`<div>Info Editor View for ${this._nodeName}</div>`;
return html`<div>Info Workspace View for ${this._nodeName}</div>`;
}
}
export default UmbEditorViewContentInfoElement;
export default UmbWorkspaceViewContentInfoElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-view-content-info': UmbEditorViewContentInfoElement;
'umb-workspace-view-content-info': UmbWorkspaceViewContentInfoElement;
}
}

View File

@@ -1,4 +1,4 @@
import './editor-view-content-edit.element';
import './workspace-view-content-info.element';
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
@@ -6,12 +6,12 @@ import { html } from 'lit-html';
import { data } from '../../../../../../core/mocks/data/document.data';
import { UmbNodeContext } from '../../node.context';
import type { UmbEditorViewContentEditElement } from './editor-view-content-edit.element';
import type { UmbWorkspaceViewContentInfoElement } from './workspace-view-content-info.element';
export default {
title: 'Editors/Shared/Node/Views/Edit',
component: 'umb-editor-view-content-edit',
id: 'umb-editor-view-content-edit',
title: 'Workspaces/Shared/Node/Views/Info',
component: 'umb-workspace-view-content-info',
id: 'umb-workspace-view-content-info',
decorators: [
(story) =>
html` <umb-context-provider key="umbNodeContext" .value=${new UmbNodeContext(data[0])}>
@@ -20,6 +20,6 @@ export default {
],
} as Meta;
export const AAAOverview: Story<UmbEditorViewContentEditElement> = () =>
html` <umb-editor-view-content-edit></umb-editor-view-content-edit>`;
export const AAAOverview: Story<UmbWorkspaceViewContentInfoElement> = () =>
html` <umb-workspace-view-content-info></umb-workspace-view-content-info>`;
AAAOverview.storyName = 'Overview';

View File

@@ -12,15 +12,15 @@ import type { UmbDocumentStore } from 'src/core/stores/document/document.store';
import { UmbMediaStore } from 'src/core/stores/media/media.store';
import type { DocumentDetails, MediaDetails } from '@umbraco-cms/models';
import '../editor-entity-layout/editor-entity-layout.element';
import '../workspace-entity-layout/workspace-entity-layout.element';
// Lazy load
// TODO: Make this dynamic, use load-extensions method to loop over extensions for this node.
import './views/edit/editor-view-content-edit.element';
import './views/info/editor-view-content-info.element';
import './views/edit/workspace-view-content-edit.element';
import './views/info/workspace-view-content-info.element';
@customElement('umb-editor-content')
export class UmbEditorContentElement extends UmbContextProviderMixin(
@customElement('umb-workspace-content')
export class UmbWorkspaceContentElement extends UmbContextProviderMixin(
UmbContextConsumerMixin(UmbObserverMixin(LitElement))
) {
static styles = [
@@ -115,7 +115,7 @@ export class UmbEditorContentElement extends UmbContextProviderMixin(
if (!this._store) return;
this.observe<DocumentDetails | MediaDetails>(this._store.getByKey(this.entityKey), (content) => {
if (!content) return; // TODO: Handle nicely if there is no node.
if (!content) return; // TODO: Handle nicely if there is no content data.
if (!this._nodeContext) {
this._nodeContext = new UmbNodeContext(content);
@@ -135,7 +135,7 @@ export class UmbEditorContentElement extends UmbContextProviderMixin(
}
private _onSave() {
// TODO: What if store is not present, what if content is not loaded....
// TODO: What if store is not present, what if content is not loaded...
if (this._content) {
this._store?.save([this._content]).then(() => {
const data: UmbNotificationDefaultData = { message: 'Document Saved' };
@@ -148,7 +148,7 @@ export class UmbEditorContentElement extends UmbContextProviderMixin(
this._onSave();
}
// TODO. find a way where we don't have to do this for all editors.
// TODO. find a way where we don't have to do this for all workspaces.
private _handleInput(event: UUIInputEvent) {
if (event instanceof UUIInputEvent) {
const target = event.composedPath()[0] as UUIInputElement;
@@ -172,7 +172,7 @@ export class UmbEditorContentElement extends UmbContextProviderMixin(
render() {
return html`
<umb-editor-entity-layout alias=${this.alias}>
<umb-workspace-entity-layout alias=${this.alias}>
<div id="header" slot="header">
<uui-input id="name-input" .value=${this._content?.name} @input="${this._handleInput}">
<!-- Implement Variant Selector -->
@@ -206,7 +206,7 @@ export class UmbEditorContentElement extends UmbContextProviderMixin(
</div>
<div id="footer" slot="footer">Breadcrumbs</div>
<!-- TODO: convert document editor actions to extensions: -->
<!-- TODO: convert document workspace actions to extensions: -->
<uui-button slot="actions" @click=${this._onSaveAndPreview} label="Save and preview"></uui-button>
<uui-button slot="actions" @click=${this._onSave} look="secondary" label="Save"></uui-button>
<uui-button
@@ -215,15 +215,15 @@ export class UmbEditorContentElement extends UmbContextProviderMixin(
look="primary"
color="positive"
label="Save and publish"></uui-button>
</umb-editor-entity-layout>
</umb-workspace-entity-layout>
`;
}
}
export default UmbEditorContentElement;
export default UmbWorkspaceContentElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-content': UmbEditorContentElement;
'umb-workspace-content': UmbWorkspaceContentElement;
}
}

View File

@@ -0,0 +1,18 @@
import './workspace-content.element';
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
import { data } from '../../../../core/mocks/data/document.data';
import type { UmbWorkspaceContentElement } from './workspace-content.element';
export default {
title: 'Workspaces/Shared/Node',
component: 'umb-workspace-content',
id: 'umb-workspace-content',
} as Meta;
export const AAAOverview: Story<UmbWorkspaceContentElement> = () =>
html` <umb-workspace-content id="${data[0].key}"></umb-workspace-content>`;
AAAOverview.storyName = 'Overview';

View File

@@ -8,14 +8,14 @@ import { UmbObserverMixin } from '@umbraco-cms/observable-api';
import { createExtensionElement } from '@umbraco-cms/extensions-api';
import { umbExtensionsRegistry } from '@umbraco-cms/extensions-registry';
import { UmbContextConsumerMixin } from '@umbraco-cms/context-api';
import type { ManifestEditorView } from '@umbraco-cms/models';
import type { ManifestWorkspaceView } from '@umbraco-cms/models';
import '../../../components/body-layout/body-layout.element';
import '../../../components/extension-slot/extension-slot.element';
import '../editor-action-extension/editor-action-extension.element';
import '../workspace-action-extension/workspace-action-extension.element';
/**
* @element umb-editor-entity-layout
* @element umb-workspace-entity-layout
* @description
* @slot icon - Slot for rendering the entity icon
* @slot name - Slot for rendering the entity name
@@ -23,11 +23,11 @@ import '../editor-action-extension/editor-action-extension.element';
* @slot actions - Slot for rendering the entity actions
* @slot default - slot for main content
* @export
* @class UmbEditorEntityLayout
* @class UmbWorkspaceEntityLayout
* @extends {UmbContextConsumerMixin(LitElement)}
*/
@customElement('umb-editor-entity-layout')
export class UmbEditorEntityLayout extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
@customElement('umb-workspace-entity-layout')
export class UmbWorkspaceEntityLayout extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
static styles = [
UUITextStyles,
css`
@@ -50,7 +50,7 @@ export class UmbEditorEntityLayout extends UmbContextConsumerMixin(UmbObserverMi
];
/**
* Alias of the editor. The Layout will render the editor views that are registered for this editor alias.
* Alias of the workspace. The Layout will render the workspace views that are registered for this workspace alias.
* @public
* @type {string}
* @attr
@@ -63,7 +63,7 @@ export class UmbEditorEntityLayout extends UmbContextConsumerMixin(UmbObserverMi
public alias = '';
@state()
private _editorViews: Array<ManifestEditorView> = [];
private _workspaceViews: Array<ManifestWorkspaceView> = [];
@state()
private _currentView = '';
@@ -76,29 +76,29 @@ export class UmbEditorEntityLayout extends UmbContextConsumerMixin(UmbObserverMi
connectedCallback(): void {
super.connectedCallback();
this._observeEditorViews();
this._observeWorkspaceViews();
/* TODO: find a way to construct absolute urls */
this._routerFolder = window.location.pathname.split('/view')[0];
}
private _observeEditorViews() {
this.observe<ManifestEditorView[]>(
private _observeWorkspaceViews() {
this.observe<ManifestWorkspaceView[]>(
umbExtensionsRegistry
.extensionsOfType('editorView')
.pipe(map((extensions) => extensions.filter((extension) => extension.meta.editors.includes(this.alias)))),
(editorViews) => {
this._editorViews = editorViews;
.extensionsOfType('workspaceView')
.pipe(map((extensions) => extensions.filter((extension) => extension.meta.workspaces.includes(this.alias)))),
(workspaceViews) => {
this._workspaceViews = workspaceViews;
this._createRoutes();
}
);
}
private async _createRoutes() {
if (this._editorViews.length > 0) {
if (this._workspaceViews.length > 0) {
this._routes = [];
this._routes = this._editorViews.map((view) => {
this._routes = this._workspaceViews.map((view) => {
return {
path: `view/${view.meta.pathname}`,
component: () => createExtensionElement(view) as unknown as PageComponent,
@@ -110,7 +110,7 @@ export class UmbEditorEntityLayout extends UmbContextConsumerMixin(UmbObserverMi
this._routes.push({
path: '**',
redirectTo: `view/${this._editorViews?.[0].meta.pathname}`,
redirectTo: `view/${this._workspaceViews?.[0].meta.pathname}`,
});
this.requestUpdate();
@@ -130,11 +130,11 @@ export class UmbEditorEntityLayout extends UmbContextConsumerMixin(UmbObserverMi
private _renderTabs() {
return html`
${this._editorViews?.length > 0
${this._workspaceViews?.length > 0
? html`
<uui-tab-group slot="tabs">
${this._editorViews.map(
(view: ManifestEditorView) => html`
${this._workspaceViews.map(
(view: ManifestWorkspaceView) => html`
<uui-tab
.label="${view.meta.label || view.name}"
href="${this._routerFolder}/view/${view.meta.pathname}"
@@ -161,7 +161,7 @@ export class UmbEditorEntityLayout extends UmbContextConsumerMixin(UmbObserverMi
<slot></slot>
<slot name="footer" slot="footer"></slot>
<umb-extension-slot slot="actions" type="editorAction" .filter=${(extension: any) => extension.meta.editors.includes(this.alias)}></umb-extension-slot>
<umb-extension-slot slot="actions" type="workspaceAction" .filter=${(extension: any) => extension.meta.workspaces.includes(this.alias)}></umb-extension-slot>
<slot name="actions" slot="actions"></slot>
</umb-body-layout>
@@ -171,6 +171,6 @@ export class UmbEditorEntityLayout extends UmbContextConsumerMixin(UmbObserverMi
declare global {
interface HTMLElementTagNameMap {
'umb-editor-entity-layout': UmbEditorEntityLayout;
'umb-workspace-entity-layout': UmbWorkspaceEntityLayout;
}
}

View File

@@ -1,21 +1,21 @@
import './editor-entity-layout.element';
import './workspace-entity-layout.element';
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
import type { UmbEditorEntityLayout } from './editor-entity-layout.element';
import type { UmbWorkspaceEntityLayout } from './workspace-entity-layout.element';
export default {
title: 'Editors/Shared/Editor Entity Layout',
component: 'umb-editor-entity-layout',
id: 'umb-editor-entity-layout',
title: 'Workspaces/Shared/Editor Entity Layout',
component: 'umb-workspace-entity-layout',
id: 'umb-workspace-entity-layout',
} as Meta;
export const AAAOverview: Story<UmbEditorEntityLayout> = () => html` <umb-editor-entity-layout>
export const AAAOverview: Story<UmbWorkspaceEntityLayout> = () => html` <umb-workspace-entity-layout>
<div slot="icon"><uui-button color="" look="placeholder">Icon slot</uui-button></div>
<div slot="name"><uui-button color="" look="placeholder">Name slot</uui-button></div>
<div slot="footer"><uui-button color="" look="placeholder">Footer slot</uui-button></div>
<div slot="actions"><uui-button color="" look="placeholder">Actions slot</uui-button></div>
<uui-button color="" look="placeholder">Default slot</uui-button>
</umb-editor-entity-layout>`;
</umb-workspace-entity-layout>`;
AAAOverview.storyName = 'Overview';

View File

@@ -7,10 +7,10 @@ import { UmbObserverMixin } from '@umbraco-cms/observable-api';
import { createExtensionElement } from '@umbraco-cms/extensions-api';
import { umbExtensionsRegistry } from '@umbraco-cms/extensions-registry';
import { UmbContextConsumerMixin } from '@umbraco-cms/context-api';
import type { ManifestEditor } from '@umbraco-cms/models';
import type { ManifestWorkspace } from '@umbraco-cms/models';
@customElement('umb-editor-entity')
export class UmbEditorEntityElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
@customElement('umb-workspace-entity')
export class UmbWorkspaceEntityElement extends UmbContextConsumerMixin(UmbObserverMixin(LitElement)) {
static styles = [
UUITextStyles,
css`
@@ -32,51 +32,51 @@ export class UmbEditorEntityElement extends UmbContextConsumerMixin(UmbObserverM
}
public set entityType(value: string) {
this._entityType = value;
this._observeEditors();
this._observeWorkspace();
}
@state()
private _element?: HTMLElement;
private _currentEditorAlias:string | null = null;
private _currentWorkspaceAlias:string | null = null;
connectedCallback(): void {
super.connectedCallback();
this._observeEditors();
this._observeWorkspace();
}
/**
TODO: use future system of extension-slot, extension slots must use a condition-system which will be used to determine the filtering happening below.
This will first be possible to make when ContextApi is available, as conditions will use this system.
*/
private _observeEditors() {
this.observe<ManifestEditor | undefined>(
private _observeWorkspace() {
this.observe<ManifestWorkspace | undefined>(
umbExtensionsRegistry
.extensionsOfType('editor')
.pipe(map((editors) => editors.find((editor) => editor.meta.entityType === this.entityType))),
(editor) => {
// don't rerender editor if it's the same
const newEditorAlias = editor?.alias || '';
if (this._currentEditorAlias === newEditorAlias) return;
this._currentEditorAlias = newEditorAlias;
this._createElement(editor);
.extensionsOfType('workspace')
.pipe(map((workspaces) => workspaces.find((workspace) => workspace.meta.entityType === this.entityType))),
(workspace) => {
// don't rerender workspace if it's the same
const newWorkspaceAlias = workspace?.alias || '';
if (this._currentWorkspaceAlias === newWorkspaceAlias) return;
this._currentWorkspaceAlias = newWorkspaceAlias;
this._createElement(workspace);
}
);
}
private async _createElement(editor?: ManifestEditor) {
this._element = editor ? (await createExtensionElement(editor)) : undefined;
private async _createElement(workspace?: ManifestWorkspace) {
this._element = workspace ? (await createExtensionElement(workspace)) : undefined;
if (this._element) {
// TODO: use contextApi for this.
(this._element as any).entityKey = this.entityKey;
return;
}
// TODO: implement fallback editor
// TODO: implement fallback workspace
// Note for extension-slot, we must enable giving the extension-slot a fallback element.
const fallbackEditor = document.createElement('div');
fallbackEditor.innerHTML = '<p>No editor found</p>';
this._element = fallbackEditor;
const fallbackWorkspace = document.createElement('div');
fallbackWorkspace.innerHTML = '<p>No Workspace found</p>';
this._element = fallbackWorkspace;
}
render() {
@@ -84,10 +84,10 @@ export class UmbEditorEntityElement extends UmbContextConsumerMixin(UmbObserverM
}
}
export default UmbEditorEntityElement;
export default UmbWorkspaceEntityElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-entity': UmbEditorEntityElement;
'umb-workspace-entity': UmbWorkspaceEntityElement;
}
}

View File

@@ -3,13 +3,13 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib';
import { customElement, property } from 'lit/decorators.js';
/**
* @element umb-editor-property-layout
* @description - Element for displaying a property in an editor.
* @element umb-workspace-property-layout
* @description - Element for displaying a property in an workspace.
* @slot editor - Slot for rendering the Property Editor
* @slot property-action-menu - Slot for rendering the Property Action Menu
*/
@customElement('umb-editor-property-layout')
export class UmbEditorPropertyLayoutElement extends LitElement {
@customElement('umb-workspace-property-layout')
export class UmbWorkspacePropertyLayoutElement extends LitElement {
static styles = [
UUITextStyles,
css`
@@ -67,6 +67,6 @@ export class UmbEditorPropertyLayoutElement extends LitElement {
declare global {
interface HTMLElementTagNameMap {
'umb-editor-property-layout': UmbEditorPropertyLayoutElement;
'umb-workspace-property-layout': UmbWorkspacePropertyLayoutElement;
}
}

View File

@@ -0,0 +1,20 @@
import { Meta, Story } from '@storybook/web-components';
import { html } from 'lit-html';
import type { UmbWorkspacePropertyLayoutElement } from './workspace-property-layout.element';
import './workspace-property-layout.element';
export default {
title: 'Workspaces/Shared/Editor Property Layout',
component: 'umb-workspace-property-layout',
id: 'umb-workspace-property-layout',
} as Meta;
export const AAAOverview: Story<UmbWorkspacePropertyLayoutElement> = () => html` <umb-workspace-property-layout
label="Label"
description="Description">
<div slot="property-action-menu"><uui-button color="" look="placeholder">Menu</uui-button></div>
<div slot="editor"><uui-button color="" look="placeholder">Editor</uui-button></div>
</umb-workspace-property-layout>`;
AAAOverview.storyName = 'Overview';

View File

@@ -9,8 +9,8 @@ import { UmbContextConsumerMixin } from '@umbraco-cms/context-api';
import { UmbUserGroupStore } from 'src/core/stores/user/user-group.store';
import { UmbUserStore } from 'src/core/stores/user/user.store';
@customElement('umb-editor-action-user-group-save')
export class UmbEditorActionUserGroupSaveElement extends UmbContextConsumerMixin(LitElement) {
@customElement('umb-workspace-action-user-group-save')
export class UmbWorkspaceActionUserGroupSaveElement extends UmbContextConsumerMixin(LitElement) {
static styles = [UUITextStyles, css``];
@state()
@@ -67,10 +67,10 @@ export class UmbEditorActionUserGroupSaveElement extends UmbContextConsumerMixin
}
}
export default UmbEditorActionUserGroupSaveElement;
export default UmbWorkspaceActionUserGroupSaveElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-action-user-group-save': UmbEditorActionUserGroupSaveElement;
'umb-workspace-action-user-group-save': UmbWorkspaceActionUserGroupSaveElement;
}
}

View File

@@ -8,13 +8,13 @@ import { UmbObserverMixin } from '@umbraco-cms/observable-api';
import '@umbraco-cms/components/input-user/input-user.element';
import '@umbraco-cms/components/input-section/input-section.element';
import { UmbContextConsumerMixin, UmbContextProviderMixin } from '@umbraco-cms/context-api';
import type { ManifestEditorAction, UserDetails, UserGroupDetails } from '@umbraco-cms/models';
import type { ManifestWorkspaceAction, UserDetails, UserGroupDetails } from '@umbraco-cms/models';
import { umbExtensionsRegistry } from '@umbraco-cms/extensions-registry';
import { UmbUserGroupStore } from '@umbraco-cms/stores/user/user-group.store';
import { UmbUserStore } from '@umbraco-cms/stores/user/user.store';
@customElement('umb-editor-user-group')
export class UmbEditorUserGroupElement extends UmbContextProviderMixin(
@customElement('umb-workspace-user-group')
export class UmbWorkspaceUserGroupElement extends UmbContextProviderMixin(
UmbContextConsumerMixin(UmbObserverMixin(LitElement))
) {
static styles = [
@@ -201,18 +201,18 @@ export class UmbEditorUserGroupElement extends UmbContextProviderMixin(
constructor() {
super();
this._registerEditorActions();
this._registerWorkspaceActions();
}
private _registerEditorActions() {
const manifests: Array<ManifestEditorAction> = [
private _registerWorkspaceActions() {
const manifests: Array<ManifestWorkspaceAction> = [
{
type: 'editorAction',
alias: 'Umb.EditorAction.UserGroup.Save',
name: 'EditorActionUserGroupSave',
loader: () => import('./actions/editor-action-user-group-save.element'),
type: 'workspaceAction',
alias: 'Umb.WorkspaceAction.UserGroup.Save',
name: 'WorkspaceActionUserGroupSave',
loader: () => import('./actions/workspace-action-user-group-save.element'),
meta: {
editors: ['Umb.Editor.UserGroup'],
workspaces: ['Umb.Workspace.UserGroup'],
},
},
];
@@ -298,13 +298,13 @@ export class UmbEditorUserGroupElement extends UmbContextProviderMixin(
return html` <uui-box>
<div slot="headline">Assign access</div>
<umb-editor-property-layout label="Sections" description="Add sections to give users access">
<umb-workspace-property-layout label="Sections" description="Add sections to give users access">
<umb-input-section
slot="editor"
.value=${this._userGroup.sections}
@change=${(e: any) => this._updateProperty('sections', e.target.value)}></umb-input-section>
</umb-editor-property-layout>
<umb-editor-property-layout
</umb-workspace-property-layout>
<umb-workspace-property-layout
label="Content start node"
description="Limit the content tree to a specific start node">
<uui-ref-node slot="editor" name="Content Root" border>
@@ -312,8 +312,8 @@ export class UmbEditorUserGroupElement extends UmbContextProviderMixin(
<uui-button slot="actions" label="change"></uui-button>
<uui-button slot="actions" label="remove" color="danger"></uui-button>
</uui-ref-node>
</umb-editor-property-layout>
<umb-editor-property-layout
</umb-workspace-property-layout>
<umb-workspace-property-layout
label="Media start node"
description="Limit the media library to a specific start node">
<uui-ref-node slot="editor" name="Media Root" border>
@@ -321,7 +321,7 @@ export class UmbEditorUserGroupElement extends UmbContextProviderMixin(
<uui-button slot="actions" label="change"></uui-button>
<uui-button slot="actions" label="remove" color="danger"></uui-button>
</uui-ref-node>
</umb-editor-property-layout>
</umb-workspace-property-layout>
</uui-box>
<uui-box>
@@ -366,7 +366,7 @@ export class UmbEditorUserGroupElement extends UmbContextProviderMixin(
</uui-box>`;
}
// TODO. find a way where we don't have to do this for all editors.
// TODO: find a way where we don't have to do this for all Workspaces.
private _handleInput(event: UUIInputEvent) {
if (event instanceof UUIInputEvent) {
const target = event.composedPath()[0] as UUIInputElement;
@@ -377,21 +377,21 @@ export class UmbEditorUserGroupElement extends UmbContextProviderMixin(
if (!this._userGroup) return nothing;
return html`
<umb-editor-entity-layout alias="Umb.Editor.UserGroup">
<umb-workspace-entity-layout alias="Umb.Workspace.UserGroup">
<uui-input id="name" slot="header" .value=${this._userGroup.name} @input="${this._handleInput}"></uui-input>
<div id="main">
<div id="left-column">${this.renderLeftColumn()}</div>
<div id="right-column">${this.renderRightColumn()}</div>
</div>
</umb-editor-entity-layout>
</umb-workspace-entity-layout>
`;
}
}
export default UmbEditorUserGroupElement;
export default UmbWorkspaceUserGroupElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-user-group': UmbEditorUserGroupElement;
'umb-workspace-user-group': UmbWorkspaceUserGroupElement;
}
}

View File

@@ -1,17 +1,17 @@
import { expect, fixture, html } from '@open-wc/testing';
//TODO: Test has been commented out while we figure out how to setup import maps for the test environment
// import UmbEditorUserGroupElement from './editor-user-group.element';
// import UmbWorkspaceUserGroupElement from './editor-user-group.element';
// import { defaultA11yConfig } from '@umbraco-cms/test-utils';
// describe('UmbEditorUserGroupElement', () => {
// let element: UmbEditorUserGroupElement;
// describe('UmbWorkspaceUserGroupElement', () => {
// let element: UmbWorkspaceUserGroupElement;
// beforeEach(async () => {
// element = await fixture(html` <umb-editor-user-group></umb-editor-user-group> `);
// element = await fixture(html` <umb-workspace-user-group></umb-workspace-user-group> `);
// });
// it('is defined with its own instance', () => {
// expect(element).to.be.instanceOf(UmbEditorUserGroupElement);
// expect(element).to.be.instanceOf(UmbWorkspaceUserGroupElement);
// });
// it('passes the a11y audit', async () => {

View File

@@ -9,8 +9,8 @@ import type { UmbNotificationDefaultData } from '../../../../core/services/notif
import type { UmbNotificationService } from '../../../../core/services/notification';
import { UmbContextConsumerMixin } from '@umbraco-cms/context-api';
@customElement('umb-editor-action-user-save')
export class UmbEditorActionUserSaveElement extends UmbContextConsumerMixin(LitElement) {
@customElement('umb-workspace-action-user-save')
export class UmbWorkspaceActionUserSaveElement extends UmbContextConsumerMixin(LitElement) {
static styles = [UUITextStyles, css``];
@state()
@@ -56,10 +56,10 @@ export class UmbEditorActionUserSaveElement extends UmbContextConsumerMixin(LitE
}
}
export default UmbEditorActionUserSaveElement;
export default UmbWorkspaceActionUserSaveElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-action-user-save': UmbEditorActionUserSaveElement;
'umb-workspace-action-user-save': UmbWorkspaceActionUserSaveElement;
}
}

View File

@@ -10,19 +10,19 @@ import { UmbUserContext } from './user.context';
import { UmbUserStore } from '@umbraco-cms/stores/user/user.store';
import { UmbContextProviderMixin, UmbContextConsumerMixin } from '@umbraco-cms/context-api';
import type { ManifestEditorAction, UserDetails } from '@umbraco-cms/models';
import type { ManifestWorkspaceAction, UserDetails } from '@umbraco-cms/models';
import '../../property-editor-uis/content-picker/property-editor-ui-content-picker.element';
import '@umbraco-cms/components/input-user-group/input-user-group.element';
import { umbCurrentUserService } from 'src/core/services/current-user';
import { UmbModalService } from '@umbraco-cms/services';
import '../shared/editor-entity-layout/editor-entity-layout.element';
import '../shared/workspace-entity-layout/workspace-entity-layout.element';
import { umbExtensionsRegistry } from '@umbraco-cms/extensions-registry';
import { UmbObserverMixin } from '@umbraco-cms/observable-api';
@customElement('umb-editor-user')
export class UmbEditorUserElement extends UmbContextProviderMixin(
@customElement('umb-workspace-user')
export class UmbWorkspaceUserElement extends UmbContextProviderMixin(
UmbContextConsumerMixin(UmbObserverMixin(LitElement))
) {
static styles = [
@@ -113,7 +113,7 @@ export class UmbEditorUserElement extends UmbContextProviderMixin(
});
this._observeCurrentUser();
this._registerEditorActions();
this._registerWorkspaceActions();
}
private async _observeCurrentUser() {
@@ -153,15 +153,15 @@ export class UmbEditorUserElement extends UmbContextProviderMixin(
}
private _registerEditorActions() {
const manifests: Array<ManifestEditorAction> = [
private _registerWorkspaceActions() {
const manifests: Array<ManifestWorkspaceAction> = [
{
type: 'editorAction',
alias: 'Umb.EditorAction.User.Save',
name: 'EditorActionUserSave',
loader: () => import('./actions/editor-action-user-save.element'),
type: 'workspaceAction',
alias: 'Umb.WorkspaceAction.User.Save',
name: 'WorkspaceActionUserSave',
loader: () => import('./actions/workspace-action-user-save.element'),
meta: {
editors: ['Umb.Editor.User'],
workspaces: ['Umb.Workspace.User'],
},
},
];
@@ -187,7 +187,7 @@ export class UmbEditorUserElement extends UmbContextProviderMixin(
history.pushState(null, '', 'section/users/view/users/overview');
}
// TODO. find a way where we don't have to do this for all editors.
// TODO. find a way where we don't have to do this for all workspaces.
private _handleInput(event: UUIInputEvent) {
if (event instanceof UUIInputEvent) {
const target = event.composedPath()[0] as UUIInputElement;
@@ -267,35 +267,35 @@ export class UmbEditorUserElement extends UmbContextProviderMixin(
return html` <uui-box>
<div slot="headline">Profile</div>
<umb-editor-property-layout label="Email">
<umb-workspace-property-layout label="Email">
<uui-input slot="editor" name="email" label="email" readonly value=${this._user.email}></uui-input>
</umb-editor-property-layout>
<umb-editor-property-layout label="Language">
</umb-workspace-property-layout>
<umb-workspace-property-layout label="Language">
<uui-select slot="editor" name="language" label="language" .options=${this._languages}> </uui-select>
</umb-editor-property-layout>
</umb-workspace-property-layout>
</uui-box>
<uui-box>
<div slot="headline">Assign access</div>
<div id="assign-access">
<umb-editor-property-layout label="Groups" description="Add groups to assign access and permissions">
<umb-workspace-property-layout label="Groups" description="Add groups to assign access and permissions">
<umb-input-user-group
slot="editor"
.value=${this._user.userGroups}
@change=${(e: any) => this._updateProperty('userGroups', e.target.value)}></umb-input-user-group>
</umb-editor-property-layout>
<umb-editor-property-layout
</umb-workspace-property-layout>
<umb-workspace-property-layout
label="Content start node"
description="Limit the content tree to specific start nodes">
<umb-property-editor-ui-content-picker
.value=${this._user.contentStartNodes}
@property-editor-change=${(e: any) => this._updateProperty('contentStartNodes', e.target.value)}
slot="editor"></umb-property-editor-ui-content-picker>
</umb-editor-property-layout>
<umb-editor-property-layout
</umb-workspace-property-layout>
<umb-workspace-property-layout
label="Media start nodes"
description="Limit the media library to specific start nodes">
<b slot="editor">NEED MEDIA PICKER</b>
</umb-editor-property-layout>
</umb-workspace-property-layout>
</div>
</uui-box>
<uui-box headline="Access">
@@ -372,21 +372,21 @@ export class UmbEditorUserElement extends UmbContextProviderMixin(
if (!this._user) return html`User not found`;
return html`
<umb-editor-entity-layout alias="Umb.Editor.User">
<umb-workspace-entity-layout alias="Umb.Workspace.User">
<uui-input id="name" slot="name" .value=${this._userName} @input="${this._handleInput}"></uui-input>
<div id="main">
<div id="left-column">${this._renderLeftColumn()}</div>
<div id="right-column">${this._renderRightColumn()}</div>
</div>
</umb-editor-entity-layout>
</umb-workspace-entity-layout>
`;
}
}
export default UmbEditorUserElement;
export default UmbWorkspaceUserElement;
declare global {
interface HTMLElementTagNameMap {
'umb-editor-user': UmbEditorUserElement;
'umb-workspace-user': UmbWorkspaceUserElement;
}
}

View File

@@ -1,17 +1,17 @@
import { expect, fixture, html } from '@open-wc/testing';
//TODO: Test has been commented out while we figure out how to setup import maps for the test environment
// import { defaultA11yConfig } from '@umbraco-cms/test-utils';
// import UmbEditorUserElement from './editor-user.element';
// import UmbWorkspaceUserElement from './editor-user.element';
// describe('UmbEditorUserElement', () => {
// let element: UmbEditorUserElement;
// describe('UmbWorkspaceUserElement', () => {
// let element: UmbWorkspaceUserElement;
// beforeEach(async () => {
// element = await fixture(html`<umb-editor-user></umb-editor-user>`);
// element = await fixture(html`<umb-workspace-user></umb-workspace-user>`);
// });
// it('is defined with its own instance', () => {
// expect(element).to.be.instanceOf(UmbEditorUserElement);
// expect(element).to.be.instanceOf(UmbWorkspaceUserElement);
// });
// it('passes the a11y audit', async () => {

View File

@@ -40,7 +40,7 @@ describe('UmbContextRequestEvent', () => {
},
},
{
type: 'editor',
type: 'workspace',
name: 'test-editor-1',
alias: 'Umb.Test.Editor.1',
meta: {

View File

@@ -2,7 +2,7 @@ import { BehaviorSubject, map, Observable } from 'rxjs';
import type {
ManifestTypes,
ManifestDashboard,
ManifestEditorView,
ManifestWorkspaceView,
ManifestEntrypoint,
ManifestPropertyAction,
ManifestPropertyEditorUI,
@@ -11,14 +11,14 @@ import type {
ManifestSectionView,
ManifestTree,
ManifestTreeItemAction,
ManifestEditor,
ManifestEditorAction,
ManifestWorkspace,
ManifestWorkspaceAction,
ManifestCustom,
ManifestPackageView,
ManifestExternalLoginProvider,
ManifestHeaderApp,
} from '../../models';
import { createExtensionElement } from '../create-extension-element.function';
import { ManifestHeaderApp } from 'src/core/extensions-registry/header-app.models';
export class UmbExtensionRegistry {
private _extensions = new BehaviorSubject<Array<ManifestTypes>>([]);
@@ -72,11 +72,11 @@ export class UmbExtensionRegistry {
extensionsOfType(type: 'section'): Observable<Array<ManifestSection>>;
extensionsOfType(type: 'sectionView'): Observable<Array<ManifestSectionView>>;
extensionsOfType(type: 'tree'): Observable<Array<ManifestTree>>;
extensionsOfType(type: 'editor'): Observable<Array<ManifestEditor>>;
extensionsOfType(type: 'workspace'): Observable<Array<ManifestWorkspace>>;
extensionsOfType(type: 'treeItemAction'): Observable<Array<ManifestTreeItemAction>>;
extensionsOfType(type: 'dashboard'): Observable<Array<ManifestDashboard>>;
extensionsOfType(type: 'editorView'): Observable<Array<ManifestEditorView>>;
extensionsOfType(type: 'editorAction'): Observable<Array<ManifestEditorAction>>;
extensionsOfType(type: 'workspaceView'): Observable<Array<ManifestWorkspaceView>>;
extensionsOfType(type: 'workspaceAction'): Observable<Array<ManifestWorkspaceAction>>;
extensionsOfType(type: 'propertyEditorUI'): Observable<Array<ManifestPropertyEditorUI>>;
extensionsOfType(type: 'propertyEditorModel'): Observable<Array<ManifestPropertyEditorModel>>;
extensionsOfType(type: 'propertyAction'): Observable<Array<ManifestPropertyAction>>;

View File

@@ -1,10 +0,0 @@
import type { ManifestElement } from './models';
export interface ManifestEditorAction extends ManifestElement {
type: 'editorAction';
meta: MetaEditorAction;
}
export interface MetaEditorAction {
editors: Array<string>;
}

View File

@@ -4,9 +4,9 @@ import type { ManifestSection } from './section.models';
import type { ManifestSectionView } from './section-view.models';
import type { ManifestTree } from './tree.models';
import type { ManifestTreeItemAction } from './tree-item-action.models';
import type { ManifestEditor } from './editor.models';
import type { ManifestEditorAction } from './editor-action.models';
import type { ManifestEditorView } from './editor-view.models';
import type { ManifestWorkspace } from './workspace.models';
import type { ManifestWorkspaceAction } from './workspace-action.models';
import type { ManifestWorkspaceView } from './workspace-view.models';
import type { ManifestPropertyEditorUI, ManifestPropertyEditorModel } from './property-editor.models';
import type { ManifestDashboard } from './dashboard.models';
import type { ManifestUserDashboard } from './user-dashboard.models';
@@ -19,9 +19,9 @@ export * from './section.models';
export * from './section-view.models';
export * from './tree.models';
export * from './tree-item-action.models';
export * from './editor.models';
export * from './editor-action.models';
export * from './editor-view.models';
export * from './workspace.models';
export * from './workspace-action.models';
export * from './workspace-view.models';
export * from './property-editor.models';
export * from './dashboard.models';
export * from './user-dashboard.models';
@@ -34,9 +34,9 @@ export type ManifestTypes =
| ManifestSection
| ManifestSectionView
| ManifestTree
| ManifestEditor
| ManifestEditorAction
| ManifestEditorView
| ManifestWorkspace
| ManifestWorkspaceAction
| ManifestWorkspaceView
| ManifestTreeItemAction
| ManifestPropertyEditorUI
| ManifestPropertyEditorModel
@@ -53,9 +53,9 @@ export type ManifestStandardTypes =
| 'section'
| 'sectionView'
| 'tree'
| 'editor'
| 'editorView'
| 'editorAction'
| 'workspace'
| 'workspaceView'
| 'workspaceAction'
| 'treeItemAction'
| 'propertyEditorUI'
| 'propertyEditorModel'
@@ -71,13 +71,13 @@ export type ManifestElementType =
| ManifestSectionView
| ManifestTree
| ManifestTreeItemAction
| ManifestEditor
| ManifestWorkspace
| ManifestPropertyAction
| ManifestPropertyEditorUI
| ManifestDashboard
| ManifestUserDashboard
| ManifestEditorView
| ManifestEditorAction
| ManifestWorkspaceView
| ManifestWorkspaceAction
| ManifestPackageView
| ManifestExternalLoginProvider;

View File

@@ -0,0 +1,10 @@
import type { ManifestElement } from './models';
export interface ManifestWorkspaceAction extends ManifestElement {
type: 'workspaceAction';
meta: MetaEditorAction;
}
export interface MetaEditorAction {
workspaces: Array<string>;
}

View File

@@ -1,12 +1,12 @@
import type { ManifestElement } from './models';
export interface ManifestEditorView extends ManifestElement {
type: 'editorView';
export interface ManifestWorkspaceView extends ManifestElement {
type: 'workspaceView';
meta: MetaEditorView;
}
export interface MetaEditorView {
editors: string[];
workspaces: string[];
pathname: string;
label: string;
icon: string;

View File

@@ -1,7 +1,7 @@
import type { ManifestElement } from './models';
export interface ManifestEditor extends ManifestElement {
type: 'editor';
export interface ManifestWorkspace extends ManifestElement {
type: 'workspace';
meta: MetaEditor;
}

View File

@@ -32,7 +32,7 @@ export const data: Array<UserGroupDetails> = [
},
{
key: '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949',
name: 'Editors',
name: 'Workspaces',
icon: 'umb:tools',
parentKey: '',
type: 'user-group',

View File

@@ -73,7 +73,7 @@ export class UmbModalLayoutContentPickerElement extends UmbModalLayoutElement<Um
render() {
return html`
<umb-editor-entity-layout headline="Select Content">
<umb-workspace-entity-layout headline="Select Content">
<uui-box>
<uui-input></uui-input>
<hr />
@@ -87,7 +87,7 @@ export class UmbModalLayoutContentPickerElement extends UmbModalLayoutElement<Um
<uui-button label="Close" @click=${this._close}></uui-button>
<uui-button label="Submit" look="primary" color="positive" @click=${this._submit}></uui-button>
</div>
</umb-editor-entity-layout>
</umb-workspace-entity-layout>
`;
}
}

View File

@@ -233,7 +233,7 @@ export class UmbModalLayoutIconPickerElement extends UmbModalLayoutElement<UmbMo
render() {
return html`
<umb-editor-entity-layout headline="Select Icon">
<umb-workspace-entity-layout headline="Select Icon">
<div id="container">
${this.renderSearchbar()}
<hr />
@@ -247,7 +247,7 @@ export class UmbModalLayoutIconPickerElement extends UmbModalLayoutElement<UmbMo
<uui-button slot="actions" color="positive" look="primary" @click="${this._save}" label="save">
Save
</uui-button>
</umb-editor-entity-layout>
</umb-workspace-entity-layout>
`;
}

View File

@@ -20,7 +20,7 @@ export class UmbModalLayoutCurrentUserElement extends UmbContextConsumerMixin(Um
display: block;
}
:host,
umb-editor-entity-layout {
umb-workspace-entity-layout {
width: 100%;
height: 100%;
}
@@ -183,7 +183,7 @@ export class UmbModalLayoutCurrentUserElement extends UmbContextConsumerMixin(Um
render() {
return html`
<umb-editor-entity-layout headline="${this._currentUser?.name || ''}">
<umb-workspace-entity-layout headline="${this._currentUser?.name || ''}">
<div id="main">
<uui-box>
<b slot="headline">Your profile</b>
@@ -215,7 +215,7 @@ export class UmbModalLayoutCurrentUserElement extends UmbContextConsumerMixin(Um
<uui-button @click=${this._close} look="secondary">Close</uui-button>
<uui-button @click=${this._logout} look="primary" color="danger">Logout</uui-button>
</div>
</umb-editor-entity-layout>
</umb-workspace-entity-layout>
`;
}
}

View File

@@ -67,7 +67,7 @@ export class UmbPickerLayoutSectionElement extends UmbContextConsumerMixin(UmbOb
render() {
return html`
<umb-editor-entity-layout headline="Select sections">
<umb-workspace-entity-layout headline="Select sections">
<uui-box>
<uui-input label="search"></uui-input>
<hr />
@@ -88,7 +88,7 @@ export class UmbPickerLayoutSectionElement extends UmbContextConsumerMixin(UmbOb
<uui-button label="Close" @click=${this._close}></uui-button>
<uui-button label="Submit" look="primary" color="positive" @click=${this._submit}></uui-button>
</div>
</umb-editor-entity-layout>
</umb-workspace-entity-layout>
`;
}
}

View File

@@ -78,7 +78,7 @@ export class UmbPickerLayoutUserGroupElement extends UmbContextConsumerMixin(Umb
render() {
return html`
<umb-editor-entity-layout headline="Select user groups">
<umb-workspace-entity-layout headline="Select user groups">
<uui-box>
<uui-input label="search"></uui-input>
<hr />
@@ -100,7 +100,7 @@ export class UmbPickerLayoutUserGroupElement extends UmbContextConsumerMixin(Umb
<uui-button label="Close" @click=${this._close}></uui-button>
<uui-button label="Submit" look="primary" color="positive" @click=${this._submit}></uui-button>
</div>
</umb-editor-entity-layout>
</umb-workspace-entity-layout>
`;
}
}

View File

@@ -80,7 +80,7 @@ export class UmbPickerLayoutUserElement extends UmbContextConsumerMixin(UmbObser
render() {
return html`
<umb-editor-entity-layout headline="Select users">
<umb-workspace-entity-layout headline="Select users">
<uui-box>
<uui-input label="search"></uui-input>
<hr />
@@ -102,7 +102,7 @@ export class UmbPickerLayoutUserElement extends UmbContextConsumerMixin(UmbObser
<uui-button label="Close" @click=${this._close}></uui-button>
<uui-button label="Submit" look="primary" color="positive" @click=${this._submit}></uui-button>
</div>
</umb-editor-entity-layout>
</umb-workspace-entity-layout>
`;
}
}

View File

@@ -158,13 +158,13 @@ export class UmbModalLayoutPropertyEditorUIPickerElement extends UmbContextConsu
render() {
return html`
<umb-editor-entity-layout headline="Select Property Editor UI">
<umb-workspace-entity-layout headline="Select Property Editor UI">
<uui-box> ${this._renderFilter()} ${this._renderGrid()} </uui-box>
<div slot="actions">
<uui-button label="Close" @click=${this._close}></uui-button>
<uui-button label="${this._submitLabel}" look="primary" color="positive" @click=${this._submit}></uui-button>
</div>
</umb-editor-entity-layout>
</umb-workspace-entity-layout>
`;
}

Some files were not shown because too many files have changed in this diff Show More