diff --git a/src/Umbraco.Web.UI.Client/src/external/router-slot/router-slot.ts b/src/Umbraco.Web.UI.Client/src/external/router-slot/router-slot.ts index 85ca8d15d8..6c60cdee95 100644 --- a/src/Umbraco.Web.UI.Client/src/external/router-slot/router-slot.ts +++ b/src/Umbraco.Web.UI.Client/src/external/router-slot/router-slot.ts @@ -45,6 +45,11 @@ ensureAnchorHistory(); * @event changestate - Dispatched when the router slot state changes. */ export class RouterSlot extends HTMLElement implements IRouterSlot { + /** + * Method to cancel navigation if changed. + */ + private _cancelNavigation ?:() => void; + /** * Listeners on the router. */ @@ -200,9 +205,13 @@ export class RouterSlot extends HTMLElement implements IRouter // If navigate is not determined, then we will check if we have a route match. If not then we will re-render. [NL] navigate = this._routeMatch === null; if (navigate === false) { - const newMatch = this.getRouteMatch(); - // Check if this match matches the current match (aka. If the path has changed), if so we should navigate. [NL] - navigate = this._routeMatch?.route.path !== newMatch?.route.path; + if (this.isConnected) { + const newMatch = this.getRouteMatch(); + // Check if this match matches the current match (aka. If the path has changed), if so we should navigate. [NL] + if(newMatch) { + navigate = shouldNavigate(this.match, newMatch); + } + } } } @@ -327,10 +336,17 @@ export class RouterSlot extends HTMLElement implements IRouter // Only change route if its a new route. const navigate = shouldNavigate(this.match, match); if (navigate) { + + // If another navigation is still begin resolved in this very moment, then we need to cancel that so it does not end up overriding this new navigation.[NL] + this._cancelNavigation?.(); // Listen for another push state event. If another push state event happens // while we are about to navigate we have to cancel. let navigationInvalidated = false; - const cancelNavigation = () => (navigationInvalidated = true); + const cancelNavigation = () => { + navigationInvalidated = true; + this._cancelNavigation = undefined; + }; + this._cancelNavigation = cancelNavigation; const removeChangeListener: EventListenerSubscription = addListener( GLOBAL_ROUTER_EVENTS_TARGET, 'changestate', diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/content/workspace/views/edit/content-editor-properties.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/content/workspace/views/edit/content-editor-properties.element.ts index aa03023a26..18173790f5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/content/workspace/views/edit/content-editor-properties.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content/workspace/views/edit/content-editor-properties.element.ts @@ -41,7 +41,6 @@ export class UmbContentWorkspaceViewEditPropertiesElement extends UmbLitElement ); }); this.consumeContext(UMB_PROPERTY_DATASET_CONTEXT, (datasetContext) => { - console.log(this, datasetContext) this.#variantId = datasetContext.getVariantId(); this.#generatePropertyDataPath(); }); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-editor/workspace-editor.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-editor/workspace-editor.element.ts index 485f8569bd..ccac1676b7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-editor/workspace-editor.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-editor/workspace-editor.element.ts @@ -49,8 +49,6 @@ export class UmbWorkspaceEditorElement extends UmbLitElement { constructor() { super(); - console.log("workspace editor created.") - new UmbExtensionsManifestInitializer(this, umbExtensionsRegistry, 'workspaceView', null, (workspaceViews) => { this._workspaceViews = workspaceViews.map((view) => view.manifest); this._createRoutes(); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-split-view/workspace-split-view.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-split-view/workspace-split-view.context.ts index 73c074a102..9a39d69ae0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-split-view/workspace-split-view.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-split-view/workspace-split-view.context.ts @@ -1,9 +1,9 @@ -import { UMB_VARIANT_WORKSPACE_CONTEXT } from '../../contexts/index.js'; -import { UmbVariantId } from '@umbraco-cms/backoffice/variant'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbContextBase } from '@umbraco-cms/backoffice/class-api'; import { UmbNumberState } from '@umbraco-cms/backoffice/observable-api'; +import { UMB_VARIANT_WORKSPACE_CONTEXT } from '../../contexts/index.js'; +import { UmbVariantId } from '@umbraco-cms/backoffice/variant'; import type { UmbPropertyDatasetContext } from '@umbraco-cms/backoffice/property'; export class UmbWorkspaceSplitViewContext extends UmbContextBase { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-split-view/workspace-split-view.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-split-view/workspace-split-view.element.ts index 75b4ea0180..ab5edb1996 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-split-view/workspace-split-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-split-view/workspace-split-view.element.ts @@ -35,8 +35,6 @@ export class UmbWorkspaceSplitViewElement extends UmbLitElement { override render() { - console.log("workspace split view render") - return html` { this._variants = variants; - console.log("______variants: ", variants[0]) }, '_observeActiveVariantsInfo', ); } - override connectedCallback(): void { - super.connectedCallback(); - console.log("connected callback------") - } - - override disconnectedCallback(): void { - super.disconnectedCallback(); - console.log("DISconnected callback------") - } - - override destroy(): void { - super.destroy(); - console.log("split view ot destroyed") - } - override render() { return this._variants ? html`