diff --git a/src/Umbraco.Web.UI.Client/.storybook/preview.js b/src/Umbraco.Web.UI.Client/.storybook/preview.js
index abb33a59ec..f60ae29ac3 100644
--- a/src/Umbraco.Web.UI.Client/.storybook/preview.js
+++ b/src/Umbraco.Web.UI.Client/.storybook/preview.js
@@ -56,19 +56,27 @@ customElements.define('umb-storybook', UmbStoryBookElement);
const storybookProvider = (story) => html` ${story()} `;
const dataTypeStoreProvider = (story) => html`
- new UmbDataTypeStore(host)}>${story()}
+ new UmbDataTypeStore(host)}
+ >${story()}
`;
const documentTypeStoreProvider = (story) => html`
- new UmbDocumentTypeStore(host)}>${story()}
+ new UmbDocumentTypeStore(host)}
+ >${story()}
`;
const documentStoreProvider = (story) => html`
- new UmbDocumentStore(host)}>${story()}
+ new UmbDocumentStore(host)}
+ >${story()}
`;
const documentTreeStoreProvider = (story) => html`
- new UmbDocumentTreeStore(host)}>${story()}
+ new UmbDocumentTreeStore(host)}
+ >${story()}
`;
// Initialize MSW
diff --git a/src/Umbraco.Web.UI.Client/src/core/controller-host/controller-host-test.element.ts b/src/Umbraco.Web.UI.Client/src/core/controller-host/controller-host-test.element.ts
index 14d703ffe7..ce36b95797 100644
--- a/src/Umbraco.Web.UI.Client/src/core/controller-host/controller-host-test.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/core/controller-host/controller-host-test.element.ts
@@ -1,31 +1,34 @@
-import { html } from 'lit';
-import { customElement, property } from 'lit/decorators.js';
-import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller';
-import { UmbLitElement } from '@umbraco-cms/internal/lit-element';
+import { UmbControllerHostElement, UmbControllerHostMixin } from '@umbraco-cms/backoffice/controller';
-@customElement('umb-controller-host-test')
-export class UmbControllerHostTestElement extends UmbLitElement {
+export class UmbControllerHostInitializerElement
+ extends UmbControllerHostMixin(HTMLElement)
+ implements UmbControllerHostElement
+{
/**
* A way to initialize controllers.
* @required
*/
- @property({ type: Object, attribute: false })
create?: (host: UmbControllerHostElement) => void;
+ constructor() {
+ super();
+ this.attachShadow({ mode: 'open' });
+ const slot = document.createElement('slot');
+ this.shadowRoot?.appendChild(slot);
+ }
+
connectedCallback() {
super.connectedCallback();
if (this.create) {
this.create(this);
}
}
-
- render() {
- return html``;
- }
}
+customElements.define('umb-controller-host-initializer', UmbControllerHostInitializerElement);
+
declare global {
interface HTMLElementTagNameMap {
- 'umb-controller-host-test': UmbControllerHostTestElement;
+ 'umb-controller-host-initializer': UmbControllerHostInitializerElement;
}
}
diff --git a/src/Umbraco.Web.UI.Client/src/core/controller-host/controller-host-test.test.ts b/src/Umbraco.Web.UI.Client/src/core/controller-host/controller-host-test.test.ts
index 322bb7246c..5fa5a78ca1 100644
--- a/src/Umbraco.Web.UI.Client/src/core/controller-host/controller-host-test.test.ts
+++ b/src/Umbraco.Web.UI.Client/src/core/controller-host/controller-host-test.test.ts
@@ -1,11 +1,11 @@
import { expect, fixture, html } from '@open-wc/testing';
import { customElement } from 'lit/decorators.js';
-import { UmbControllerHostTestElement } from './controller-host-test.element';
+import { UmbControllerHostInitializerElement } from './controller-host-test.element';
import { UmbLitElement } from '@umbraco-cms/internal/lit-element';
import { UmbContextProviderController } from '@umbraco-cms/backoffice/context-api';
import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller';
-@customElement('umb-controller-host-test-consumer')
+@customElement('umb-controller-host-initializer-consumer')
export class UmbControllerHostTestConsumerElement extends UmbLitElement {
public value: string | null = null;
constructor() {
@@ -17,25 +17,25 @@ export class UmbControllerHostTestConsumerElement extends UmbLitElement {
}
describe('UmbControllerHostTestElement', () => {
- let element: UmbControllerHostTestElement;
+ let element: UmbControllerHostInitializerElement;
let consumer: UmbControllerHostTestConsumerElement;
const contextValue = 'test-value';
beforeEach(async () => {
element = await fixture(
- html`
new UmbContextProviderController(host, 'my-test-context-alias', contextValue)}>
-
- `
+
+ `
);
consumer = element.getElementsByTagName(
- 'umb-controller-host-test-consumer'
+ 'umb-controller-host-initializer-consumer'
)[0] as UmbControllerHostTestConsumerElement;
});
it('element is defined with its own instance', () => {
- expect(element).to.be.instanceOf(UmbControllerHostTestElement);
+ expect(element).to.be.instanceOf(UmbControllerHostInitializerElement);
});
it('provides the context', () => {