fix lib imports
This commit is contained in:
@@ -2,7 +2,7 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
|
||||
import { UmbBasicState, UmbStringState } from '@umbraco-cms/backoffice/observable-api';
|
||||
import { UmbExtensionManifestController, UmbExtensionsManifestController } from '@umbraco-cms/backoffice/extension-api';
|
||||
import { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { ManifestSection } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import { ManifestSection, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export class UmbBackofficeContext {
|
||||
#activeSectionAlias = new UmbStringState(undefined);
|
||||
@@ -13,7 +13,7 @@ export class UmbBackofficeContext {
|
||||
public readonly allowedSections = this.#allowedSections.asObservable();
|
||||
|
||||
constructor(host: UmbControllerHost) {
|
||||
new UmbExtensionsManifestController(host, 'section', null, (sections) => {
|
||||
new UmbExtensionsManifestController(host, umbExtensionsRegistry, 'section', null, (sections) => {
|
||||
this.#allowedSections.next([...sections]);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -24,13 +24,15 @@ class UmbTestExtensionController extends UmbBaseExtensionController {
|
||||
}
|
||||
}
|
||||
|
||||
const testExtensionRegistry = new UmbExtensionRegistry<ManifestWithDynamicConditions | ManifestCondition>();
|
||||
type myTestManifests = ManifestWithDynamicConditions | ManifestCondition;
|
||||
const testExtensionRegistry = new UmbExtensionRegistry<myTestManifests>();
|
||||
|
||||
type PermittedControllerType = UmbTestExtensionController & {
|
||||
manifest: Required<Pick<UmbTestExtensionController, 'manifest'>>;
|
||||
};
|
||||
|
||||
class UmbTestExtensionsController extends UmbBaseExtensionsController<
|
||||
myTestManifests,
|
||||
'extension-type',
|
||||
ManifestWithDynamicConditions,
|
||||
UmbTestExtensionController,
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
import { map } from '@umbraco-cms/backoffice/external/rxjs';
|
||||
import {
|
||||
import type {
|
||||
ManifestBase,
|
||||
ManifestTypeMap,
|
||||
SpecificManifestTypeOrManifestBase,
|
||||
UmbBaseExtensionController,
|
||||
UmbExtensionRegistry,
|
||||
} from '@umbraco-cms/backoffice/extension-api';
|
||||
import { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import { UmbBaseController, UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
|
||||
export type PermittedControllerType<ControllerType extends { manifest: any }> = ControllerType & {
|
||||
@@ -16,6 +15,7 @@ export type PermittedControllerType<ControllerType extends { manifest: any }> =
|
||||
/**
|
||||
*/
|
||||
export abstract class UmbBaseExtensionsController<
|
||||
ManifestTypes extends ManifestBase,
|
||||
ManifestTypeName extends keyof ManifestTypeMap<ManifestTypes> | string,
|
||||
ManifestType extends ManifestBase = SpecificManifestTypeOrManifestBase<ManifestTypes, ManifestTypeName>,
|
||||
ControllerType extends UmbBaseExtensionController<ManifestType> = UmbBaseExtensionController<ManifestType>,
|
||||
|
||||
@@ -4,19 +4,27 @@ import {
|
||||
type ManifestTypeMap,
|
||||
type SpecificManifestTypeOrManifestBase,
|
||||
UmbExtensionElementController,
|
||||
type UmbExtensionRegistry,
|
||||
} from '@umbraco-cms/backoffice/extension-api';
|
||||
import { type ManifestTypes, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
|
||||
/**
|
||||
*/
|
||||
export class UmbExtensionsElementController<
|
||||
ManifestTypes extends ManifestBase,
|
||||
ManifestTypeName extends keyof ManifestTypeMap<ManifestTypes> | string = string,
|
||||
ManifestType extends ManifestBase = SpecificManifestTypeOrManifestBase<ManifestTypes, ManifestTypeName>,
|
||||
ControllerType extends UmbExtensionElementController<ManifestType> = UmbExtensionElementController<ManifestType>,
|
||||
MyPermittedControllerType extends ControllerType = PermittedControllerType<ControllerType>
|
||||
> extends UmbBaseExtensionsController<ManifestTypeName, ManifestType, ControllerType, MyPermittedControllerType> {
|
||||
> extends UmbBaseExtensionsController<
|
||||
ManifestTypes,
|
||||
ManifestTypeName,
|
||||
ManifestType,
|
||||
ControllerType,
|
||||
MyPermittedControllerType
|
||||
> {
|
||||
//
|
||||
#extensionRegistry;
|
||||
private _defaultElement?: string;
|
||||
#props?: Record<string, unknown>;
|
||||
|
||||
@@ -32,12 +40,14 @@ export class UmbExtensionsElementController<
|
||||
|
||||
constructor(
|
||||
host: UmbControllerHost,
|
||||
extensionRegistry: UmbExtensionRegistry<ManifestTypes>,
|
||||
type: ManifestTypeName,
|
||||
filter: undefined | null | ((manifest: ManifestType) => boolean),
|
||||
onChange: (permittedManifests: Array<MyPermittedControllerType>, controller: MyPermittedControllerType) => void,
|
||||
defaultElement?: string
|
||||
) {
|
||||
super(host, umbExtensionsRegistry, type, filter, onChange);
|
||||
super(host, extensionRegistry, type, filter, onChange);
|
||||
this.#extensionRegistry = extensionRegistry;
|
||||
this._defaultElement = defaultElement;
|
||||
this._init();
|
||||
}
|
||||
@@ -45,7 +55,7 @@ export class UmbExtensionsElementController<
|
||||
protected _createController(manifest: ManifestType) {
|
||||
const extController = new UmbExtensionElementController<ManifestType>(
|
||||
this,
|
||||
umbExtensionsRegistry,
|
||||
this.#extensionRegistry,
|
||||
manifest.alias,
|
||||
this._extensionChanged,
|
||||
this._defaultElement
|
||||
|
||||
@@ -4,32 +4,44 @@ import {
|
||||
ManifestBase,
|
||||
ManifestTypeMap,
|
||||
SpecificManifestTypeOrManifestBase,
|
||||
UmbExtensionRegistry,
|
||||
} from '@umbraco-cms/backoffice/extension-api';
|
||||
import { ManifestTypes, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
|
||||
/**
|
||||
*/
|
||||
export class UmbExtensionsManifestController<
|
||||
ManifestTypes extends ManifestBase,
|
||||
ManifestTypeName extends keyof ManifestTypeMap<ManifestTypes> | string,
|
||||
ManifestType extends ManifestBase = SpecificManifestTypeOrManifestBase<ManifestTypes, ManifestTypeName>,
|
||||
ControllerType extends UmbExtensionManifestController<ManifestType> = UmbExtensionManifestController<ManifestType>,
|
||||
MyPermittedControllerType extends ControllerType = PermittedControllerType<ControllerType>
|
||||
> extends UmbBaseExtensionsController<ManifestTypeName, ManifestType, ControllerType, MyPermittedControllerType> {
|
||||
> extends UmbBaseExtensionsController<
|
||||
ManifestTypes,
|
||||
ManifestTypeName,
|
||||
ManifestType,
|
||||
ControllerType,
|
||||
MyPermittedControllerType
|
||||
> {
|
||||
//
|
||||
#extensionRegistry: UmbExtensionRegistry<ManifestTypes>;
|
||||
|
||||
constructor(
|
||||
host: UmbControllerHost,
|
||||
extensionRegistry: UmbExtensionRegistry<ManifestTypes>,
|
||||
type: ManifestTypeName,
|
||||
filter: null | ((manifest: ManifestType) => boolean),
|
||||
onChange: (permittedManifests: Array<MyPermittedControllerType>, controller: MyPermittedControllerType) => void
|
||||
) {
|
||||
super(host, umbExtensionsRegistry, type, filter, onChange);
|
||||
super(host, extensionRegistry, type, filter, onChange);
|
||||
this.#extensionRegistry = extensionRegistry;
|
||||
this._init();
|
||||
}
|
||||
|
||||
protected _createController(manifest: ManifestType) {
|
||||
return new UmbExtensionManifestController<ManifestType>(
|
||||
this,
|
||||
umbExtensionsRegistry,
|
||||
this.#extensionRegistry,
|
||||
manifest.alias,
|
||||
this._extensionChanged
|
||||
) as ControllerType;
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
import { type ManifestTypes, umbExtensionsRegistry } from '../../extension-registry/index.js';
|
||||
import { css, repeat, customElement, property, state } from '@umbraco-cms/backoffice/external/lit';
|
||||
import { UmbExtensionElementController, UmbExtensionsElementController } from '@umbraco-cms/backoffice/extension-api';
|
||||
import {
|
||||
type UmbExtensionElementController,
|
||||
UmbExtensionsElementController,
|
||||
} from '@umbraco-cms/backoffice/extension-api';
|
||||
import { UmbLitElement } from '@umbraco-cms/internal/lit-element';
|
||||
|
||||
export type InitializedExtension = { alias: string; weight: number; component: HTMLElement | null };
|
||||
@@ -17,7 +21,7 @@ export type InitializedExtension = { alias: string; weight: number; component: H
|
||||
// TODO: Make property that reveals the amount of displayed/permitted extensions.
|
||||
@customElement('umb-extension-slot')
|
||||
export class UmbExtensionSlotElement extends UmbLitElement {
|
||||
#extensionsController?: UmbExtensionsElementController;
|
||||
#extensionsController?: UmbExtensionsElementController<ManifestTypes>;
|
||||
|
||||
@state()
|
||||
private _permittedExts: Array<UmbExtensionElementController> = [];
|
||||
@@ -51,17 +55,12 @@ export class UmbExtensionSlotElement extends UmbLitElement {
|
||||
|
||||
private _observeExtensions() {
|
||||
this.#extensionsController?.destroy();
|
||||
if (this.type === 'treeItem') {
|
||||
console.log('observe', this.type, this.defaultElement);
|
||||
}
|
||||
this.#extensionsController = new UmbExtensionsElementController(
|
||||
this,
|
||||
umbExtensionsRegistry,
|
||||
this.type,
|
||||
this.filter,
|
||||
(extensionControllers) => {
|
||||
if (extensionControllers[0].manifest?.type === 'treeItem') {
|
||||
console.log('extensionControllers', extensionControllers);
|
||||
}
|
||||
this._permittedExts = extensionControllers;
|
||||
},
|
||||
this.defaultElement
|
||||
|
||||
@@ -7,6 +7,7 @@ import {
|
||||
ManifestSectionSidebarApp,
|
||||
ManifestSectionSidebarAppMenuKind,
|
||||
UmbSectionExtensionElement,
|
||||
umbExtensionsRegistry,
|
||||
} from '@umbraco-cms/backoffice/extension-registry';
|
||||
import type { UmbRoute } from '@umbraco-cms/backoffice/router';
|
||||
import { UmbLitElement } from '@umbraco-cms/internal/lit-element';
|
||||
@@ -44,7 +45,7 @@ export class UmbSectionDefaultElement extends UmbLitElement implements UmbSectio
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
new UmbExtensionsElementController(this, 'sectionSidebarApp', null, (sidebarApps) => {
|
||||
new UmbExtensionsElementController(this, umbExtensionsRegistry, 'sectionSidebarApp', null, (sidebarApps) => {
|
||||
const oldValue = this._sidebarApps;
|
||||
this._sidebarApps = sidebarApps;
|
||||
this.requestUpdate('_sidebarApps', oldValue);
|
||||
|
||||
@@ -6,6 +6,7 @@ import {
|
||||
ManifestSectionView,
|
||||
UmbDashboardExtensionElement,
|
||||
UmbSectionViewExtensionElement,
|
||||
umbExtensionsRegistry,
|
||||
} from '@umbraco-cms/backoffice/extension-registry';
|
||||
import { UmbExtensionsManifestController, createExtensionElement } from '@umbraco-cms/backoffice/extension-api';
|
||||
import { UmbLitElement } from '@umbraco-cms/internal/lit-element';
|
||||
@@ -35,12 +36,12 @@ export class UmbSectionMainViewElement extends UmbLitElement {
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
new UmbExtensionsManifestController(this, 'dashboard', null, (dashboards) => {
|
||||
new UmbExtensionsManifestController(this, umbExtensionsRegistry, 'dashboard', null, (dashboards) => {
|
||||
this._dashboards = dashboards.map((dashboard) => dashboard.manifest);
|
||||
this.#createRoutes();
|
||||
});
|
||||
|
||||
new UmbExtensionsManifestController(this, 'sectionView', null, (views) => {
|
||||
new UmbExtensionsManifestController(this, umbExtensionsRegistry, 'sectionView', null, (views) => {
|
||||
this._views = views.map((view) => view.manifest);
|
||||
this.#createRoutes();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user