import { ChildrenLike, RxHTMLElement, VirtualDOM } from '@youwol/rx-vdom' import { ExplorerState } from '../../explorer.state' import { AnyFolderNode, AnyItemNode, ItemNode, ProgressNode } from '../../nodes' import { ItemView, ProgressItemView } from './item.view' import { installContextMenu } from '../../context-menu/context-menu' export class DetailsContentView implements VirtualDOM<'div'> { public readonly tag = 'div' public readonly class = 'fv-text-primary w-100 h-100 d-flex flex-column text-center overflow-auto' public readonly style = { maxHeight: '100%' } public readonly children: ChildrenLike public readonly folder: AnyFolderNode public readonly items: AnyItemNode[] public readonly state: ExplorerState public readonly onclick = () => this.state.selectedItem$.next(undefined) public readonly oncontextmenu = () => this.state.selectedItem$.next(undefined) public readonly connectedCallback = (elem: RxHTMLElement<'div'>) => { installContextMenu({ state: this.state, div: elem, node: this.folder, }) } constructor(params: { state: ExplorerState items: AnyItemNode[] folder: AnyFolderNode }) { Object.assign(this, params) this.children = [ { tag: 'div', class: 'flex-grow-1 overflow-auto', children: this.items.map((item: ItemNode) => item instanceof ProgressNode ? new ProgressItemView({ state: this.state, item }) : new ItemView({ state: this.state, item }), ), }, ] } }