diff --git a/packages/datalib/src/GridDisplay.ts b/packages/datalib/src/GridDisplay.ts index 626499baf..2d4c67c3c 100644 --- a/packages/datalib/src/GridDisplay.ts +++ b/packages/datalib/src/GridDisplay.ts @@ -138,7 +138,7 @@ export abstract class GridDisplay { getDisplayColumn(table: TableInfo, col: ColumnInfo, parentPath: string[]) { const uniquePath = [...parentPath, col.columnName]; const uniqueName = uniquePath.join('.'); - console.log('this.config.addedColumns', this.config.addedColumns, uniquePath); + // console.log('this.config.addedColumns', this.config.addedColumns, uniquePath); return { ...col, pureName: table.pureName, diff --git a/packages/web/src/TabContent.js b/packages/web/src/TabContent.js index 8d1b48d3c..b9be4ece2 100644 --- a/packages/web/src/TabContent.js +++ b/packages/web/src/TabContent.js @@ -1,18 +1,58 @@ import React from 'react'; +import _ from 'lodash'; import styled from 'styled-components'; -import theme from './theme'; import tabs from './tabs'; - import { useOpenedTabs } from './utility/globalState'; +const TabContainer = styled.div` + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + visibility: ${props => + // @ts-ignore + props.tabVisible ? 'visible' : 'hidden'}; +`; + +function createTabComponent(selectedTab) { + const TabComponent = tabs[selectedTab.tabComponent]; + if (TabComponent) { + return { + TabComponent, + props: selectedTab.props, + }; + } + return null; +} + export default function TabContent() { const files = useOpenedTabs(); + const [mountedTabs, setMountedTabs] = React.useState({}); + + // cleanup closed tabs + if (_.difference(_.keys(mountedTabs), _.map(files, 'tabid')).length > 0) { + setMountedTabs(_.pickBy(mountedTabs, (v, k) => files.find(x => x.tabid == k))); + } + const selectedTab = files.find(x => x.selected); - if (!selectedTab) return null; + if (selectedTab) { + const { tabid } = selectedTab; + if (tabid && !mountedTabs[tabid]) + setMountedTabs({ + ...mountedTabs, + [tabid]: createTabComponent(selectedTab), + }); + } - const TabComponent = tabs[selectedTab.tabComponent]; - if (TabComponent) return ; - - return null; + return _.keys(mountedTabs).map(tabid => { + const { TabComponent, props } = mountedTabs[tabid]; + return ( + // @ts-ignore + + + + ); + }); } diff --git a/packages/web/src/datagrid/DataGridCore.js b/packages/web/src/datagrid/DataGridCore.js index ebd97e068..f1eb0714f 100644 --- a/packages/web/src/datagrid/DataGridCore.js +++ b/packages/web/src/datagrid/DataGridCore.js @@ -310,7 +310,7 @@ export default function DataGridCore(props) { setCurrentCell(cell); setSelectedCells(getCellRange(cell, cell)); setDragStartCell(cell); - console.log('START', cell); + // console.log('START', cell); } function handleGridMouseMove(event) {