diff --git a/src/Components/ElementsList/ElementsSideBar.tsx b/src/Components/ElementsSidebar/ElementsSidebar.tsx similarity index 81% rename from src/Components/ElementsList/ElementsSideBar.tsx rename to src/Components/ElementsSidebar/ElementsSidebar.tsx index 78d9b6b..e39bf2d 100644 --- a/src/Components/ElementsList/ElementsSideBar.tsx +++ b/src/Components/ElementsSidebar/ElementsSidebar.tsx @@ -1,21 +1,22 @@ import * as React from 'react'; -import { useState } from 'react'; import useSize from '@react-hook/size'; import { FixedSizeList as List } from 'react-window'; import { ExclamationTriangleIcon } from '@heroicons/react/24/outline'; import { ContainerProperties } from '../ContainerProperties/ContainerProperties'; -import { IContainerModel } from '../../Interfaces/IContainerModel'; +import { type IContainerModel } from '../../Interfaces/IContainerModel'; import { FindContainerById, MakeRecursionDFSIterator } from '../../utils/itertools'; -import { ISymbolModel } from '../../Interfaces/ISymbolModel'; -import { PropertyType } from '../../Enums/PropertyType'; +import { type ISymbolModel } from '../../Interfaces/ISymbolModel'; +import { type PropertyType } from '../../Enums/PropertyType'; import { ToggleSideBar } from '../Sidebar/ToggleSideBar/ToggleSideBar'; import { Text } from '../Text/Text'; +import { ExtendedSidebar } from '../UI/UI'; -interface IElementsSideBarProps { +interface IElementsSidebarProps { containers: Map mainContainer: IContainerModel symbols: Map selectedContainer: IContainerModel | undefined + selectedExtendedSidebar: ExtendedSidebar onPropertyChange: ( key: string, value: string | number | boolean | number[], @@ -23,8 +24,7 @@ interface IElementsSideBarProps { ) => void selectContainer: (containerId: string) => void addContainer: (index: number, type: string, parent: string) => void - isExpanded: boolean - onExpandChange: () => void + onExpandChange: (value: ExtendedSidebar) => void } function RemoveBorderClasses(target: HTMLButtonElement, exception: string = ''): void { @@ -124,11 +124,10 @@ function HandleOnDrop( } } -export function ElementsSideBar(props: IElementsSideBarProps): JSX.Element { +export function ElementsSidebar(props: IElementsSidebarProps): JSX.Element { // States const divRef = React.useRef(null); const [,height] = useSize(divRef); - const [showProperties, setShowProperties] = useState(props.isExpanded); // Render const it = MakeRecursionDFSIterator(props.mainContainer, props.containers, 0, [0, 0], true); @@ -167,18 +166,27 @@ export function ElementsSideBar(props: IElementsSideBarProps): JSX.Element { return (
- {showProperties && -
- -
+ {props.selectedExtendedSidebar === ExtendedSidebar.Property && +
+ +
}
- { setShowProperties(newValue); props.onExpandChange(); }} /> + { + const newValue = props.selectedExtendedSidebar !== ExtendedSidebar.Property + ? ExtendedSidebar.Property + : ExtendedSidebar.None; + props.onExpandChange(newValue); + }} + />
selectContainer(container.properties.id)} - onDrop={(event) => HandleOnDrop(event, containers, mainContainer, addContainer)} - onDragOver={(event) => HandleDragOver(event, mainContainer)} - onDragLeave={(event) => HandleDragLeave(event)} + onClick={() => { selectContainer(container.properties.id); }} + onDrop={(event) => { HandleOnDrop(event, containers, mainContainer, addContainer); }} + onDragOver={(event) => { HandleDragOver(event, mainContainer); }} + onDragLeave={(event) => { HandleDragLeave(event); }} > {verticalBars} {text} diff --git a/src/Components/Sidebar/ToggleSideBar/ToggleSideBar.tsx b/src/Components/Sidebar/ToggleSideBar/ToggleSideBar.tsx index 61a35d9..7d7a082 100644 --- a/src/Components/Sidebar/ToggleSideBar/ToggleSideBar.tsx +++ b/src/Components/Sidebar/ToggleSideBar/ToggleSideBar.tsx @@ -4,16 +4,16 @@ import './ToggleSideBar.scss'; interface IToggleSidebarProps { title: string checked: boolean - onChange: (newValue: boolean) => void + onClick: () => void } -export function ToggleSideBar({ title, checked, onChange }: IToggleSidebarProps): JSX.Element { +export function ToggleSideBar({ title, checked, onClick }: IToggleSidebarProps): JSX.Element { return (