language
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import type { UmbLanguageDetailModel } from '../../types.js';
|
||||
import { UMB_LANGUAGE_WORKSPACE_CONTEXT } from './language-workspace.context.js';
|
||||
import { UMB_LANGUAGE_WORKSPACE_CONTEXT } from './language-workspace.context-token.js';
|
||||
import type { UUIInputElement } from '@umbraco-cms/backoffice/external/uui';
|
||||
import { UUIInputEvent } from '@umbraco-cms/backoffice/external/uui';
|
||||
import { css, html, customElement, state, ifDefined } from '@umbraco-cms/backoffice/external/lit';
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
import type { UmbLanguageWorkspaceContext } from './language-workspace.context.js';
|
||||
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
|
||||
import type { UmbSaveableWorkspaceContextInterface } from '@umbraco-cms/backoffice/workspace';
|
||||
|
||||
export const UMB_LANGUAGE_WORKSPACE_CONTEXT = new UmbContextToken<
|
||||
UmbSaveableWorkspaceContextInterface,
|
||||
UmbLanguageWorkspaceContext
|
||||
>(
|
||||
'UmbWorkspaceContext',
|
||||
undefined,
|
||||
(context): context is UmbLanguageWorkspaceContext => context.getEntityType?.() === 'language',
|
||||
);
|
||||
@@ -1,17 +1,20 @@
|
||||
import { UmbLanguageDetailRepository } from '../../repository/index.js';
|
||||
import type { UmbLanguageDetailModel } from '../../types.js';
|
||||
import { UmbLanguageWorkspaceEditorElement } from './language-workspace-editor.element.js';
|
||||
import {
|
||||
type UmbSaveableWorkspaceContextInterface,
|
||||
UmbEditableWorkspaceContextBase,
|
||||
UmbWorkspaceRouteManager,
|
||||
UmbWorkspaceIsNewRedirectController,
|
||||
type UmbRoutableWorkspaceContext,
|
||||
} from '@umbraco-cms/backoffice/workspace';
|
||||
import { ApiError } from '@umbraco-cms/backoffice/external/backend-api';
|
||||
import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
|
||||
|
||||
export class UmbLanguageWorkspaceContext
|
||||
extends UmbEditableWorkspaceContextBase<UmbLanguageDetailModel>
|
||||
implements UmbSaveableWorkspaceContextInterface
|
||||
implements UmbSaveableWorkspaceContextInterface, UmbRoutableWorkspaceContext
|
||||
{
|
||||
public readonly repository: UmbLanguageDetailRepository = new UmbLanguageDetailRepository(this);
|
||||
|
||||
@@ -22,8 +25,34 @@ export class UmbLanguageWorkspaceContext
|
||||
#validationErrors = new UmbObjectState<any | undefined>(undefined);
|
||||
readonly validationErrors = this.#validationErrors.asObservable();
|
||||
|
||||
readonly routes = new UmbWorkspaceRouteManager(this);
|
||||
|
||||
constructor(host: UmbControllerHost) {
|
||||
super(host, 'Umb.Workspace.Language');
|
||||
|
||||
this.routes.setRoutes([
|
||||
{
|
||||
path: 'create',
|
||||
component: UmbLanguageWorkspaceEditorElement,
|
||||
setup: async () => {
|
||||
this.create();
|
||||
|
||||
new UmbWorkspaceIsNewRedirectController(
|
||||
this,
|
||||
this,
|
||||
this.getHostElement().shadowRoot!.querySelector('umb-router-slot')!,
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'edit/:unique',
|
||||
component: UmbLanguageWorkspaceEditorElement,
|
||||
setup: (_component, info) => {
|
||||
this.removeControllerByAlias('isNewRedirectController');
|
||||
this.load(info.match.params.unique);
|
||||
},
|
||||
},
|
||||
]);
|
||||
}
|
||||
|
||||
protected resetState(): void {
|
||||
@@ -116,11 +145,4 @@ export class UmbLanguageWorkspaceContext
|
||||
}
|
||||
}
|
||||
|
||||
export const UMB_LANGUAGE_WORKSPACE_CONTEXT = new UmbContextToken<
|
||||
UmbSaveableWorkspaceContextInterface,
|
||||
UmbLanguageWorkspaceContext
|
||||
>(
|
||||
'UmbWorkspaceContext',
|
||||
undefined,
|
||||
(context): context is UmbLanguageWorkspaceContext => context.getEntityType?.() === 'language',
|
||||
);
|
||||
export { UmbLanguageWorkspaceContext as api };
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
import { UmbLanguageWorkspaceContext } from './language-workspace.context.js';
|
||||
import { UmbLanguageWorkspaceEditorElement } from './language-workspace-editor.element.js';
|
||||
import { html, customElement, state } from '@umbraco-cms/backoffice/external/lit';
|
||||
import type { UmbRoute } from '@umbraco-cms/backoffice/router';
|
||||
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
|
||||
import { UmbWorkspaceIsNewRedirectController } from '@umbraco-cms/backoffice/workspace';
|
||||
|
||||
@customElement('umb-language-workspace')
|
||||
export class UmbLanguageWorkspaceElement extends UmbLitElement {
|
||||
#languageWorkspaceContext = new UmbLanguageWorkspaceContext(this);
|
||||
#createElement = () => new UmbLanguageWorkspaceEditorElement();
|
||||
|
||||
@state()
|
||||
_routes: UmbRoute[] = [
|
||||
{
|
||||
path: 'create',
|
||||
component: this.#createElement,
|
||||
setup: async () => {
|
||||
this.#languageWorkspaceContext.create();
|
||||
|
||||
new UmbWorkspaceIsNewRedirectController(
|
||||
this,
|
||||
this.#languageWorkspaceContext,
|
||||
this.shadowRoot!.querySelector('umb-router-slot')!,
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'edit/:unique',
|
||||
component: this.#createElement,
|
||||
setup: (_component, info) => {
|
||||
this.removeControllerByAlias('isNewRedirectController');
|
||||
this.#languageWorkspaceContext.load(info.match.params.unique);
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
render() {
|
||||
return html`<umb-router-slot .routes=${this._routes}></umb-router-slot>`;
|
||||
}
|
||||
}
|
||||
|
||||
export default UmbLanguageWorkspaceElement;
|
||||
|
||||
declare global {
|
||||
interface HTMLElementTagNameMap {
|
||||
'umb-language-workspace': UmbLanguageWorkspaceElement;
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,16 @@
|
||||
import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace';
|
||||
import type {
|
||||
ManifestWorkspace,
|
||||
ManifestWorkspaces,
|
||||
ManifestWorkspaceActions,
|
||||
ManifestWorkspaceView,
|
||||
} from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
const workspace: ManifestWorkspace = {
|
||||
const workspace: ManifestWorkspaces = {
|
||||
type: 'workspace',
|
||||
kind: 'routable',
|
||||
alias: 'Umb.Workspace.Language',
|
||||
name: 'Language Workspace',
|
||||
js: () => import('./language-workspace.element.js'),
|
||||
api: () => import('./language-workspace.context.js'),
|
||||
meta: {
|
||||
entityType: 'language',
|
||||
},
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { UMB_LANGUAGE_WORKSPACE_CONTEXT } from '../language-workspace.context.js';
|
||||
import { UMB_LANGUAGE_WORKSPACE_CONTEXT } from '../language-workspace.context-token.js';
|
||||
import type { UmbInputLanguageElement } from '../../../components/input-language/input-language.element.js';
|
||||
import type { UmbLanguageDetailModel } from '../../../types.js';
|
||||
import type { UmbLanguageItemModel } from '../../../repository/index.js';
|
||||
|
||||
@@ -3,6 +3,7 @@ import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
|
||||
import { css, html, customElement } from '@umbraco-cms/backoffice/external/lit';
|
||||
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
|
||||
import type { UmbRoute } from '@umbraco-cms/backoffice/router';
|
||||
import { UMB_USER_GROUP_ENTITY_TYPE } from '../entity.js';
|
||||
|
||||
@customElement('umb-user-group-section-view')
|
||||
export class UmbUserGroupSectionViewElement extends UmbLitElement {
|
||||
@@ -17,7 +18,11 @@ export class UmbUserGroupSectionViewElement extends UmbLitElement {
|
||||
},
|
||||
{
|
||||
path: 'user-group',
|
||||
component: () => import('../workspace/user-group-workspace.element.js'),
|
||||
component: () => {
|
||||
const element = document.createElement('umb-workspace');
|
||||
element.setAttribute('entityType', UMB_USER_GROUP_ENTITY_TYPE);
|
||||
return element;
|
||||
},
|
||||
},
|
||||
{
|
||||
path: '',
|
||||
|
||||
@@ -20,7 +20,7 @@ export class UmbSectionViewUsersElement extends UmbLitElement {
|
||||
path: 'user',
|
||||
component: () => {
|
||||
const element = document.createElement('umb-workspace');
|
||||
element.setAttribute('alias', UMB_USER_ENTITY_TYPE);
|
||||
element.setAttribute('entityType', UMB_USER_ENTITY_TYPE);
|
||||
return element;
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user