lazy load workspace editor element
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import { UUITextStyles } from '@umbraco-ui/uui-css';
|
import { UUITextStyles } from '@umbraco-ui/uui-css';
|
||||||
import { css, html } from 'lit';
|
import { css, html } from 'lit';
|
||||||
import { customElement, state } from 'lit/decorators.js';
|
import { customElement, state } from 'lit/decorators.js';
|
||||||
import { IRoutingInfo } from 'router-slot';
|
import { IRoutingInfo, ModuleResolver } from 'router-slot';
|
||||||
import { UmbLanguageWorkspaceContext } from './language-workspace.context';
|
import { UmbLanguageWorkspaceContext } from './language-workspace.context';
|
||||||
import { UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router';
|
import { UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router';
|
||||||
import { UmbLitElement } from '@umbraco-cms/internal/lit-element';
|
import { UmbLitElement } from '@umbraco-cms/internal/lit-element';
|
||||||
@@ -14,24 +14,37 @@ export class UmbLanguageWorkspaceElement extends UmbLitElement {
|
|||||||
static styles = [UUITextStyles, css``];
|
static styles = [UUITextStyles, css``];
|
||||||
|
|
||||||
#languageWorkspaceContext = new UmbLanguageWorkspaceContext(this);
|
#languageWorkspaceContext = new UmbLanguageWorkspaceContext(this);
|
||||||
#element = document.createElement('umb-language-workspace-edit');
|
|
||||||
|
/**
|
||||||
|
* Workspace editor element, lazy loaded but shared across several user flows.
|
||||||
|
*/
|
||||||
|
#editorElement?: HTMLElement;
|
||||||
|
|
||||||
#routerPath? = '';
|
#routerPath? = '';
|
||||||
|
|
||||||
|
#getComponentElement = () => {
|
||||||
|
if (this.#editorElement) {
|
||||||
|
return this.#editorElement;
|
||||||
|
}
|
||||||
|
return import('./language-workspace-edit.element');
|
||||||
|
};
|
||||||
|
|
||||||
@state()
|
@state()
|
||||||
_routes = [
|
_routes = [
|
||||||
{
|
{
|
||||||
path: 'edit/:isoCode',
|
path: 'edit/:isoCode',
|
||||||
component: () => this.#element,
|
component: this.#getComponentElement,
|
||||||
setup: (component: HTMLElement, info: IRoutingInfo) => {
|
setup: (component: HTMLElement, info: IRoutingInfo) => {
|
||||||
|
this.#editorElement = component;
|
||||||
this.removeControllerByUnique('_observeIsNew');
|
this.removeControllerByUnique('_observeIsNew');
|
||||||
this.#languageWorkspaceContext.load(info.match.params.isoCode);
|
this.#languageWorkspaceContext.load(info.match.params.isoCode);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'create',
|
path: 'create',
|
||||||
component: () => this.#element,
|
component: this.#getComponentElement,
|
||||||
setup: async () => {
|
setup: async (component: HTMLElement) => {
|
||||||
|
this.#editorElement = component;
|
||||||
this.#languageWorkspaceContext.createScaffold();
|
this.#languageWorkspaceContext.createScaffold();
|
||||||
|
|
||||||
// Navigate to edit route when language is created:
|
// Navigate to edit route when language is created:
|
||||||
|
|||||||
Reference in New Issue
Block a user