Merge pull request #1440 from umbraco/feature/context-base-fixing-missing-parts
Improvements: forgotten improvements from old PR
This commit is contained in:
@@ -1,17 +1,16 @@
|
||||
import type { UmbAppContextConfig } from './app-context-config.interface.js';
|
||||
import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
|
||||
import { UmbContextBase } from '@umbraco-cms/backoffice/class-api';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
|
||||
|
||||
export class UmbAppContext extends UmbControllerBase {
|
||||
export class UmbAppContext extends UmbContextBase<UmbAppContext> {
|
||||
#serverUrl: string;
|
||||
#backofficePath: string;
|
||||
|
||||
constructor(host: UmbControllerHost, config: UmbAppContextConfig) {
|
||||
super(host);
|
||||
super(host, UMB_APP_CONTEXT);
|
||||
this.#serverUrl = config.serverUrl;
|
||||
this.#backofficePath = config.backofficePath;
|
||||
this.provideContext(UMB_APP_CONTEXT, this);
|
||||
}
|
||||
|
||||
getBackofficePath() {
|
||||
|
||||
@@ -3,10 +3,10 @@ import { UMB_AUTH_CONTEXT } from './auth.context.token.js';
|
||||
import type { UmbOpenApiConfiguration } from './models/openApiConfiguration.js';
|
||||
import { OpenAPI } from '@umbraco-cms/backoffice/external/backend-api';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
|
||||
import { UmbContextBase } from '@umbraco-cms/backoffice/class-api';
|
||||
import { UmbBooleanState } from '@umbraco-cms/backoffice/observable-api';
|
||||
|
||||
export class UmbAuthContext extends UmbControllerBase {
|
||||
export class UmbAuthContext extends UmbContextBase<UmbAuthContext> {
|
||||
#isAuthorized = new UmbBooleanState<boolean>(false);
|
||||
readonly isAuthorized = this.#isAuthorized.asObservable();
|
||||
|
||||
@@ -16,13 +16,12 @@ export class UmbAuthContext extends UmbControllerBase {
|
||||
#authFlow;
|
||||
|
||||
constructor(host: UmbControllerHost, serverUrl: string, backofficePath: string, isBypassed: boolean) {
|
||||
super(host);
|
||||
super(host, UMB_AUTH_CONTEXT);
|
||||
this.#isBypassed = isBypassed;
|
||||
this.#serverUrl = serverUrl;
|
||||
this.#backofficePath = backofficePath;
|
||||
|
||||
this.#authFlow = new UmbAuthFlow(serverUrl, this.#getRedirectUrl());
|
||||
this.provideContext(UMB_AUTH_CONTEXT, this);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,14 +3,14 @@ import { createRoutePathBuilder } from './generate-route-path-builder.function.j
|
||||
import type { IRoutingInfo, IRouterSlot } from '@umbraco-cms/backoffice/external/router-slot';
|
||||
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
|
||||
import { UmbContextBase } from '@umbraco-cms/backoffice/class-api';
|
||||
import { UMB_MODAL_MANAGER_CONTEXT, type UmbModalRouteRegistration } from '@umbraco-cms/backoffice/modal';
|
||||
|
||||
const EmptyDiv = document.createElement('div');
|
||||
|
||||
type UmbRoutePlusModalKey = UmbRoute & { __modalKey: string };
|
||||
|
||||
export class UmbRouteContext extends UmbControllerBase {
|
||||
export class UmbRouteContext extends UmbContextBase<UmbRouteContext> {
|
||||
#mainRouter: IRouterSlot;
|
||||
#modalRouter: IRouterSlot;
|
||||
#modalRegistrations: UmbModalRouteRegistration[] = [];
|
||||
@@ -21,10 +21,9 @@ export class UmbRouteContext extends UmbControllerBase {
|
||||
#activeModalPath?: string;
|
||||
|
||||
constructor(host: UmbControllerHost, mainRouter: IRouterSlot, modalRouter: IRouterSlot) {
|
||||
super(host);
|
||||
super(host, UMB_ROUTE_CONTEXT);
|
||||
this.#mainRouter = mainRouter;
|
||||
this.#modalRouter = modalRouter;
|
||||
this.provideContext(UMB_ROUTE_CONTEXT, this);
|
||||
this.consumeContext(UMB_MODAL_MANAGER_CONTEXT, (context) => {
|
||||
this.#modalContext = context;
|
||||
this.#generateModalRoutes();
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
|
||||
import { UmbContextBase } from '@umbraco-cms/backoffice/class-api';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { UmbStringState, UmbBooleanState } from '@umbraco-cms/backoffice/observable-api';
|
||||
|
||||
export class UmbSectionSidebarContext {
|
||||
#host: UmbControllerHost;
|
||||
export class UmbSectionSidebarContext extends UmbContextBase<UmbSectionSidebarContext> {
|
||||
#contextMenuIsOpen = new UmbBooleanState(false);
|
||||
contextMenuIsOpen = this.#contextMenuIsOpen.asObservable();
|
||||
|
||||
@@ -17,7 +17,7 @@ export class UmbSectionSidebarContext {
|
||||
headline = this.#headline.asObservable();
|
||||
|
||||
constructor(host: UmbControllerHost) {
|
||||
this.#host = host;
|
||||
super(host, UMB_SECTION_SIDEBAR_CONTEXT);
|
||||
}
|
||||
|
||||
toggleContextMenu(entityType: string, unique: string | null | undefined, headline: string | undefined) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { UmbSectionSidebarContext, UMB_SECTION_SIDEBAR_CONTEXT } from './section-sidebar.context.js';
|
||||
import { UmbSectionSidebarContext } from './section-sidebar.context.js';
|
||||
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';
|
||||
@@ -7,11 +7,6 @@ import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
|
||||
export class UmbSectionSidebarElement extends UmbLitElement {
|
||||
#sectionSidebarContext = new UmbSectionSidebarContext(this);
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
this.provideContext(UMB_SECTION_SIDEBAR_CONTEXT, this.#sectionSidebarContext);
|
||||
}
|
||||
|
||||
render() {
|
||||
return html`
|
||||
<umb-section-sidebar-context-menu>
|
||||
|
||||
@@ -3,14 +3,14 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
|
||||
import type { UmbObserverController } from '@umbraco-cms/backoffice/observable-api';
|
||||
import { UmbStringState } from '@umbraco-cms/backoffice/observable-api';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
|
||||
import { UmbContextBase } from '@umbraco-cms/backoffice/class-api';
|
||||
import type { ManifestTheme } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import { loadManifestPlainCss } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
const LOCAL_STORAGE_KEY = 'umb-theme-alias';
|
||||
|
||||
export class UmbThemeContext extends UmbControllerBase {
|
||||
export class UmbThemeContext extends UmbContextBase<UmbThemeContext> {
|
||||
#theme = new UmbStringState('umb-light-theme');
|
||||
#themeObserver?: UmbObserverController<ManifestTheme[]>;
|
||||
|
||||
@@ -19,9 +19,7 @@ export class UmbThemeContext extends UmbControllerBase {
|
||||
#styleElement: HTMLLinkElement | HTMLStyleElement | null = null;
|
||||
|
||||
constructor(host: UmbControllerHost) {
|
||||
super(host);
|
||||
|
||||
this.provideContext(UMB_THEME_CONTEXT, this);
|
||||
super(host, UMB_THEME_CONTEXT);
|
||||
|
||||
const storedTheme = localStorage.getItem(LOCAL_STORAGE_KEY);
|
||||
if (storedTheme) {
|
||||
|
||||
@@ -2,11 +2,11 @@ import { UMB_VARIANT_WORKSPACE_CONTEXT } from '../../workspace-context/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 { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
|
||||
import { UmbContextBase } from '@umbraco-cms/backoffice/class-api';
|
||||
import { UmbNumberState } from '@umbraco-cms/backoffice/observable-api';
|
||||
import type { UmbPropertyDatasetContext } from '@umbraco-cms/backoffice/property';
|
||||
|
||||
export class UmbWorkspaceSplitViewContext extends UmbControllerBase {
|
||||
export class UmbWorkspaceSplitViewContext extends UmbContextBase<UmbWorkspaceSplitViewContext> {
|
||||
#workspaceContext?: typeof UMB_VARIANT_WORKSPACE_CONTEXT.TYPE;
|
||||
public getWorkspaceContext() {
|
||||
return this.#workspaceContext;
|
||||
@@ -21,7 +21,7 @@ export class UmbWorkspaceSplitViewContext extends UmbControllerBase {
|
||||
//variantId = this.#variantId.asObservable();
|
||||
|
||||
constructor(host: UmbControllerHost) {
|
||||
super(host);
|
||||
super(host, UMB_WORKSPACE_SPLIT_VIEW_CONTEXT);
|
||||
|
||||
this.consumeContext(UMB_VARIANT_WORKSPACE_CONTEXT, (context) => {
|
||||
this.#workspaceContext = context;
|
||||
@@ -31,8 +31,6 @@ export class UmbWorkspaceSplitViewContext extends UmbControllerBase {
|
||||
this.observe(this.index, () => {
|
||||
this._observeVariant();
|
||||
});
|
||||
|
||||
this.provideContext(UMB_WORKSPACE_SPLIT_VIEW_CONTEXT, this);
|
||||
}
|
||||
|
||||
private _observeVariant() {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import type { UmbPropertyDatasetContext, UmbNameablePropertyDatasetContext } from '@umbraco-cms/backoffice/property';
|
||||
import { UMB_PROPERTY_DATASET_CONTEXT } from '@umbraco-cms/backoffice/property';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
|
||||
import { UmbContextBase } from '@umbraco-cms/backoffice/class-api';
|
||||
import { UmbVariantId } from '@umbraco-cms/backoffice/variant';
|
||||
import type { UmbInvariantableWorkspaceContextInterface } from '@umbraco-cms/backoffice/workspace';
|
||||
|
||||
@@ -11,7 +11,7 @@ import type { UmbInvariantableWorkspaceContextInterface } from '@umbraco-cms/bac
|
||||
export class UmbInvariantWorkspacePropertyDatasetContext<
|
||||
WorkspaceType extends UmbInvariantableWorkspaceContextInterface = UmbInvariantableWorkspaceContextInterface,
|
||||
>
|
||||
extends UmbControllerBase
|
||||
extends UmbContextBase<UmbPropertyDatasetContext>
|
||||
implements UmbPropertyDatasetContext, UmbNameablePropertyDatasetContext
|
||||
{
|
||||
#workspace: WorkspaceType;
|
||||
@@ -37,13 +37,10 @@ export class UmbInvariantWorkspacePropertyDatasetContext<
|
||||
}
|
||||
|
||||
constructor(host: UmbControllerHost, workspace: WorkspaceType) {
|
||||
// The controller alias, is a very generic name cause we want only one of these for this controller host.
|
||||
super(host, 'variantContext');
|
||||
super(host, UMB_PROPERTY_DATASET_CONTEXT);
|
||||
this.#workspace = workspace;
|
||||
|
||||
this.name = this.#workspace.name;
|
||||
|
||||
this.provideContext(UMB_PROPERTY_DATASET_CONTEXT, this);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,8 +8,10 @@ import {
|
||||
} from '@umbraco-cms/backoffice/external/backend-api';
|
||||
import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';
|
||||
|
||||
// TODO: Turn this into a Repository with a Store that holds the cache [NL]
|
||||
/**
|
||||
* A context for fetching and caching the document configuration.
|
||||
* @deprecated Do not use this one, it will have ot change in near future.
|
||||
*/
|
||||
export class UmbDocumentConfigurationContext extends UmbControllerBase implements UmbApi {
|
||||
/**
|
||||
@@ -44,6 +46,9 @@ export class UmbDocumentConfigurationContext extends UmbControllerBase implement
|
||||
// Export as default to work as a global context:
|
||||
export default UmbDocumentConfigurationContext;
|
||||
|
||||
/**
|
||||
* @deprecated Do not use this one, it will have ot change in near future.
|
||||
*/
|
||||
export const UMB_DOCUMENT_CONFIGURATION_CONTEXT = new UmbContextToken<UmbDocumentConfigurationContext>(
|
||||
'UmbDocumentConfigurationContext',
|
||||
);
|
||||
|
||||
@@ -3,11 +3,11 @@ import type { UmbDocumentPropertyDataContext } from './document-property-dataset
|
||||
import type { UmbPropertyDatasetContext } from '@umbraco-cms/backoffice/property';
|
||||
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
|
||||
|
||||
export const IsDocumentVariantContext = (
|
||||
export const IsDocumentPropertyDatasetContext = (
|
||||
context: UmbPropertyDatasetContext,
|
||||
): context is UmbDocumentPropertyDataContext => context.getEntityType() === UMB_DOCUMENT_ENTITY_TYPE;
|
||||
|
||||
export const UMB_DOCUMENT_VARIANT_CONTEXT = new UmbContextToken<
|
||||
export const UMB_DOCUMENT_PROPERTY_DATASET_CONTEXT = new UmbContextToken<
|
||||
UmbPropertyDatasetContext,
|
||||
UmbDocumentPropertyDataContext
|
||||
>('UmbVariantContext', undefined, IsDocumentVariantContext);
|
||||
>('UmbVariantContext', undefined, IsDocumentPropertyDatasetContext);
|
||||
|
||||
@@ -2,11 +2,13 @@ import { UmbLanguageCollectionRepository } from '../collection/index.js';
|
||||
import type { UmbLanguageDetailModel } from '../types.js';
|
||||
import { UmbArrayState, UmbObjectState, createObservablePart } from '@umbraco-cms/backoffice/observable-api';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
|
||||
import { UmbContextBase } from '@umbraco-cms/backoffice/class-api';
|
||||
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
|
||||
import type { UmbApi } from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export class UmbAppLanguageContext extends UmbControllerBase implements UmbApi {
|
||||
// TODO: Make a store for the App Languages.
|
||||
// TODO: Implement default language end-point, in progress at backend team, so we can avoid getting all languages.
|
||||
export class UmbAppLanguageContext extends UmbContextBase<UmbAppLanguageContext> implements UmbApi {
|
||||
#languageCollectionRepository: UmbLanguageCollectionRepository;
|
||||
#languages = new UmbArrayState<UmbLanguageDetailModel>([], (x) => x.unique);
|
||||
|
||||
@@ -24,8 +26,7 @@ export class UmbAppLanguageContext extends UmbControllerBase implements UmbApi {
|
||||
}
|
||||
|
||||
constructor(host: UmbControllerHost) {
|
||||
super(host);
|
||||
this.provideContext(UMB_APP_LANGUAGE_CONTEXT, this);
|
||||
super(host, UMB_APP_LANGUAGE_CONTEXT);
|
||||
this.#languageCollectionRepository = new UmbLanguageCollectionRepository(this);
|
||||
this.#observeLanguages();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user