From 3f1359d179e1c8ec99e92036155b559541dcaf17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 22 Dec 2022 09:45:30 +0100 Subject: [PATCH] collection-media --- .../collection/collection-media.element.ts | 49 ++++++++++--------- .../dashboard-media-management.element.ts | 2 +- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/components/collection/collection-media.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/components/collection/collection-media.element.ts index 0ed1917047..c248c2ce04 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/components/collection/collection-media.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/components/collection/collection-media.element.ts @@ -1,6 +1,6 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, LitElement, nothing } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; +import { customElement, state, property } from 'lit/decorators.js'; import { map } from 'rxjs'; import './collection-selection-actions.element'; import './collection-toolbar.element'; @@ -30,21 +30,28 @@ export class UmbCollectionMediaElement extends UmbContextConsumerMixin(UmbObserv @state() private _routes: Array = []; - @state() - private _collectionViews: Array = []; - - @state() - private _currentLayoutPathName = ''; - @state() private _selection: Array = []; private _mediaContext?: UmbDashboardMediaManagementElement; + + private _entityType!: string; + @property() + public get entityType(): string { + return this._entityType; + } + public set entityType(value: string) { + this._entityType = value; + this._observeCollectionViews(); + } + + private _collectionViewUnsubscribe?:() => void; + + constructor() { super(); - this._observeCollectionViews(); this.consumeAllContexts(['umbMediaContext'], (instance) => { this._mediaContext = instance['umbMediaContext']; this._observeMediaContext(); @@ -60,36 +67,34 @@ export class UmbCollectionMediaElement extends UmbContextConsumerMixin(UmbObserv } private _observeCollectionViews() { - this.observe>( + + this._collectionViewUnsubscribe?.(); + this._collectionViewUnsubscribe = this.observe>( umbExtensionsRegistry?.extensionsOfType('collectionView').pipe( map((extensions) => { - return extensions.filter((extension) => extension.meta.entityType === 'media'); + return extensions.filter((extension) => extension.meta.entityType === this._entityType); }) ), - (layouts) => { - if (layouts?.length === 0) return; - this._collectionViews = layouts; - this._createRoutes(); + (views) => { + if (views?.length === 0) return; + this._createRoutes(views); } ); } - private _createRoutes() { + private _createRoutes(views: ManifestCollectionView[]) { this._routes = []; - this._routes = this._collectionViews.map((layout) => { + this._routes = views.map((view) => { return { - path: `${layout.meta.pathName}`, - component: () => createExtensionElement(layout), - setup: (_element: ManifestCollectionView, info: IRoutingInfo) => { - this._currentLayoutPathName = info.match.route.path; - }, + path: `${view.meta.pathName}`, + component: () => createExtensionElement(view) }; }); this._routes.push({ path: '**', - redirectTo: this._collectionViews?.[0]?.meta.pathName, + redirectTo: views?.[0]?.meta.pathName, }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/media-management/dashboard-media-management.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/media-management/dashboard-media-management.element.ts index c41173ea3c..063f925898 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/media-management/dashboard-media-management.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/media-management/dashboard-media-management.element.ts @@ -89,7 +89,7 @@ export class UmbDashboardMediaManagementElement extends UmbContextProviderMixin( } render() { - return html``; + return html``; } }