diff --git a/src/Umbraco.Web.UI.Client/.storybook/preview.js b/src/Umbraco.Web.UI.Client/.storybook/preview.js index 10c6daa7b0..84908541be 100644 --- a/src/Umbraco.Web.UI.Client/.storybook/preview.js +++ b/src/Umbraco.Web.UI.Client/.storybook/preview.js @@ -55,11 +55,11 @@ customElements.define('umb-storybook', UmbStoryBookElement); const storybookProvider = (story) => html` ${story()} `; const dataTypeStoreProvider = (story) => html` - ${story()} + new UmbDataTypeDetailStore(host)}>${story()} `; const documentTypeStoreProvider = (story) => html` - new UmbDocumentTypeDetailStore(host)} >${story()} `; diff --git a/src/Umbraco.Web.UI.Client/libs/element/context-provider.element.ts b/src/Umbraco.Web.UI.Client/libs/element/context-provider.element.ts index 7155397b84..9d04a92ab2 100644 --- a/src/Umbraco.Web.UI.Client/libs/element/context-provider.element.ts +++ b/src/Umbraco.Web.UI.Client/libs/element/context-provider.element.ts @@ -1,9 +1,18 @@ import { html } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import { UmbLitElement } from './lit-element.element'; +import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; @customElement('umb-context-provider') export class UmbContextProviderElement extends UmbLitElement { + + /** + * The value to provide to the context. + * @required + */ + @property({ type: Object, attribute: false }) + create?: (host:UmbControllerHostInterface) => unknown; + /** * The value to provide to the context. * @required @@ -23,7 +32,9 @@ export class UmbContextProviderElement extends UmbLitElement { if (!this.key) { throw new Error('The key property is required.'); } - if (!this.value) { + if (this.create) { + this.value = this.create(this); + } else if (!this.value) { throw new Error('The value property is required.'); } this.provideContext(this.key, this.value);