add TreeContextBase class

This commit is contained in:
Mads Rasmussen
2022-09-05 10:23:34 +02:00
parent 5966437deb
commit 00256b27ea
10 changed files with 51 additions and 101 deletions

View File

@@ -1,19 +1,9 @@
import { BehaviorSubject, map, Observable } from 'rxjs';
import { UmbEntityStore } from '../../../core/stores/entity.store';
import { UmbTreeContext } from '../tree.context';
export class UmbTreeDataTypesContext implements UmbTreeContext {
public entityStore: UmbEntityStore;
private _selectable: BehaviorSubject<boolean> = new BehaviorSubject(false);
public readonly selectable: Observable<boolean> = this._selectable.asObservable();
import { map } from 'rxjs';
import { UmbTreeContextBase } from '../tree.context';
export class UmbTreeDataTypesContext extends UmbTreeContextBase {
private _rootKey = '29d78e6c-c1bf-4c15-b820-d511c237ffae';
constructor(entityStore: UmbEntityStore) {
this.entityStore = entityStore;
}
public fetchRoot() {
const data = {
key: this._rootKey,
@@ -37,8 +27,4 @@ export class UmbTreeDataTypesContext implements UmbTreeContext {
return this.entityStore.entities.pipe(map((items) => items.filter((item) => item.parentKey === key)));
}
public setSelectable(value: boolean) {
this._selectable.next(value);
}
}

View File

@@ -1,16 +1,9 @@
import { map } from 'rxjs';
import { UmbEntityStore } from '../../../core/stores/entity.store';
import { UmbTreeContext } from '../tree.context';
export class UmbTreeDocumentTypesContext implements UmbTreeContext {
public entityStore: UmbEntityStore;
import { UmbTreeContextBase } from '../tree.context';
export class UmbTreeDocumentTypesContext extends UmbTreeContextBase {
private _rootKey = 'f50eb86d-3ef2-4011-8c5d-c56c04eec0da';
constructor(entityStore: UmbEntityStore) {
this.entityStore = entityStore;
}
public fetchRoot() {
const data = {
key: this._rootKey,

View File

@@ -1,22 +1,9 @@
import { BehaviorSubject, map, Observable } from 'rxjs';
import { UmbEntityStore } from '../../../core/stores/entity.store';
import { UmbTreeContext } from '../tree.context';
export class UmbTreeDocumentContext implements UmbTreeContext {
public entityStore: UmbEntityStore;
private _selectable: BehaviorSubject<boolean> = new BehaviorSubject(false);
public readonly selectable: Observable<boolean> = this._selectable.asObservable();
private _selection: BehaviorSubject<Array<string>> = new BehaviorSubject(<Array<string>>[]);
public readonly selection: Observable<Array<string>> = this._selection.asObservable();
import { map } from 'rxjs';
import { UmbTreeContextBase } from '../tree.context';
export class UmbTreeDocumentContext extends UmbTreeContextBase {
private _rootKey = 'ba23245c-d8c0-46f7-a2bc-7623743d6eba';
constructor(entityStore: UmbEntityStore) {
this.entityStore = entityStore;
}
public fetchRoot() {
fetch(`/umbraco/backoffice/entities/documents?parentKey=${this._rootKey}`)
.then((res) => res.json())
@@ -41,19 +28,4 @@ export class UmbTreeDocumentContext implements UmbTreeContext {
map((items) => items.filter((item) => item.parentKey === key && !item.isTrashed))
);
}
public select(key: string) {
const selection = this._selection.getValue();
this._selection.next([...selection, key]);
}
public setSelectable(value: boolean) {
this._selectable.next(value);
}
public setSelection(value: Array<string>) {
console.log('SET SELECTION', value);
this._selection.next(value);
console.log(this._selection.getValue());
}
}

View File

@@ -1,16 +1,9 @@
import { map } from 'rxjs';
import { UmbEntityStore } from '../../../core/stores/entity.store';
import { UmbTreeContext } from '../tree.context';
export class UmbTreeExtensionsContext implements UmbTreeContext {
public entityStore: UmbEntityStore;
import { UmbTreeContextBase } from '../tree.context';
export class UmbTreeExtensionsContext extends UmbTreeContextBase {
private _rootKey = 'fd32ea8b-893b-4ee9-b1d0-72f41c4a6d38';
constructor(entityStore: UmbEntityStore) {
this.entityStore = entityStore;
}
public fetchRoot() {
const data = {
key: this._rootKey,

View File

@@ -1,16 +1,9 @@
import { map } from 'rxjs';
import { UmbEntityStore } from '../../../core/stores/entity.store';
import { UmbTreeContext } from '../tree.context';
export class UmbTreeMediaContext implements UmbTreeContext {
public entityStore: UmbEntityStore;
import { UmbTreeContextBase } from '../tree.context';
export class UmbTreeMediaContext extends UmbTreeContextBase {
private _rootKey = 'c0858d71-52be-4bb2-822f-42fa0c9a1ea5';
constructor(entityStore: UmbEntityStore) {
this.entityStore = entityStore;
}
public fetchRoot() {
fetch(`/umbraco/backoffice/entities/media?parentKey=${this._rootKey}`)
.then((res) => res.json())

View File

@@ -1,16 +1,9 @@
import { map } from 'rxjs';
import { UmbEntityStore } from '../../../core/stores/entity.store';
import { UmbTreeContext } from '../tree.context';
export class UmbTreeMemberGroupsContext implements UmbTreeContext {
public entityStore: UmbEntityStore;
import { UmbTreeContextBase } from '../tree.context';
export class UmbTreeMemberGroupsContext extends UmbTreeContextBase {
private _rootKey = '575645a5-0f25-4671-b9a0-be515096ad6b';
constructor(entityStore: UmbEntityStore) {
this.entityStore = entityStore;
}
public fetchRoot() {
const data = {
key: this._rootKey,

View File

@@ -1,16 +1,9 @@
import { map } from 'rxjs';
import { UmbEntityStore } from '../../../core/stores/entity.store';
import { UmbTreeContext } from '../tree.context';
export class UmbTreeMembersContext implements UmbTreeContext {
public entityStore: UmbEntityStore;
import { UmbTreeContextBase } from '../tree.context';
export class UmbTreeMembersContext extends UmbTreeContextBase {
private _rootKey = '8f974b62-392b-4ddd-908c-03c2e03ab1a6';
constructor(entityStore: UmbEntityStore) {
this.entityStore = entityStore;
}
public fetchRoot() {
const data = {
key: this._rootKey,

View File

@@ -2,7 +2,7 @@ import { css, html, LitElement } from 'lit';
import { UUITextStyles } from '@umbraco-ui/uui-css/lib';
import { customElement, property, state } from 'lit/decorators.js';
import { UmbContextConsumerMixin } from '../../../core/context';
import { UmbTreeContext } from '../tree.context';
import { UmbTreeContextBase } from '../tree.context';
import { UUIMenuItemEvent } from '@umbraco-ui/uui';
import { UmbSectionContext } from '../../sections/section.context';
import { map, Subscription } from 'rxjs';
@@ -40,7 +40,7 @@ export class UmbTreeItem extends UmbContextConsumerMixin(LitElement) {
@state()
private _selected = false;
private _treeContext?: UmbTreeContext;
private _treeContext?: UmbTreeContextBase;
private _sectionContext?: UmbSectionContext;
private _sectionSubscription?: Subscription;
private _childrenSubscription?: Subscription;
@@ -51,7 +51,7 @@ export class UmbTreeItem extends UmbContextConsumerMixin(LitElement) {
constructor() {
super();
this.consumeContext('umbTreeContext', (treeContext: UmbTreeContext) => {
this.consumeContext('umbTreeContext', (treeContext: UmbTreeContextBase) => {
this._treeContext = treeContext;
this._observeSelectable();
this._observeSelection();

View File

@@ -3,7 +3,7 @@ import { repeat } from 'lit/directives/repeat.js';
import { UUITextStyles } from '@umbraco-ui/uui-css/lib';
import { customElement, state } from 'lit/decorators.js';
import { UmbContextConsumerMixin } from '../../../core/context';
import { UmbTreeContext } from '../tree.context';
import { UmbTreeContextBase } from '../tree.context';
import './tree-item.element';
import { Subscription } from 'rxjs';
@@ -16,7 +16,7 @@ export class UmbTreeNavigator extends UmbContextConsumerMixin(LitElement) {
@state()
private _loading = true;
private _treeContext?: UmbTreeContext;
private _treeContext?: UmbTreeContextBase;
private _treeRootSubscription?: Subscription;
@state()

View File

@@ -1,13 +1,40 @@
import { Observable } from 'rxjs';
import { BehaviorSubject, Observable } from 'rxjs';
import type { UmbEntityStore } from '../../core/stores/entity.store';
import { Entity } from '../../mocks/data/entity.data';
export interface UmbTreeContext {
entityStore: UmbEntityStore;
selectable: Observable<boolean>;
selection: Observable<Array<string>>;
readonly selectable: Observable<boolean>;
readonly selection: Observable<Array<string>>;
fetchRoot?(): Observable<Entity[]>;
fetchChildren?(key: string): Observable<Entity[]>;
setSelectable(value: boolean): void;
select(key: string): void;
}
export class UmbTreeContextBase implements UmbTreeContext {
public entityStore: UmbEntityStore;
private _selectable: BehaviorSubject<boolean> = new BehaviorSubject(false);
public readonly selectable: Observable<boolean> = this._selectable.asObservable();
private _selection: BehaviorSubject<Array<string>> = new BehaviorSubject(<Array<string>>[]);
public readonly selection: Observable<Array<string>> = this._selection.asObservable();
constructor(entityStore: UmbEntityStore) {
this.entityStore = entityStore;
}
public setSelectable(value: boolean) {
this._selectable.next(value);
}
public setSelection(value: Array<string>) {
this._selection.next(value);
}
public select(key: string) {
const selection = this._selection.getValue();
this._selection.next([...selection, key]);
}
}