From a42ac77d33dde763102779cda60f4a4b30ce5041 Mon Sep 17 00:00:00 2001 From: Siklos Date: Mon, 8 Aug 2022 11:23:15 +0200 Subject: [PATCH 1/3] Implement main bar + Change colors --- src/Components/Bar/Bar.tsx | 37 +++++++++++++++++ src/Components/Bar/BarIcon.tsx | 22 ++++++++++ .../ElementsSidebar/ElementsSidebar.test.tsx | 8 +--- .../ElementsSidebar/ElementsSidebar.tsx | 14 +++---- .../FloatingButton/FloatingButton.tsx | 2 +- src/Components/History/History.tsx | 10 ++--- src/Components/Properties/Properties.tsx | 10 ++--- src/Components/Sidebar/Sidebar.tsx | 27 ++++++++----- src/Components/UI/UI.tsx | 38 ++++++------------ src/assets/fonts/RobotoFlex-Regular.ttf | Bin 0 -> 109860 bytes src/index.scss | 30 +++++++++++++- src/utils/stringtools.ts | 6 +++ 12 files changed, 138 insertions(+), 66 deletions(-) create mode 100644 src/Components/Bar/Bar.tsx create mode 100644 src/Components/Bar/BarIcon.tsx create mode 100644 src/assets/fonts/RobotoFlex-Regular.ttf create mode 100644 src/utils/stringtools.ts diff --git a/src/Components/Bar/Bar.tsx b/src/Components/Bar/Bar.tsx new file mode 100644 index 0000000..672f80f --- /dev/null +++ b/src/Components/Bar/Bar.tsx @@ -0,0 +1,37 @@ +import { ClockIcon, CubeIcon, MapIcon } from '@heroicons/react/outline'; +import * as React from 'react'; +import { BarIcon } from './BarIcon'; + +interface IBarProps { + isSidebarOpen: boolean + isElementsSidebarOpen: boolean + isHistoryOpen: boolean + ToggleSidebar: () => void + ToggleElementsSidebar: () => void + ToggleTimeline: () => void +} + +export const Bar: React.FC = (props) => { + return ( +
+ props.ToggleSidebar()}> + + + props.ToggleElementsSidebar()}> + + + props.ToggleTimeline()}> + + +
+ ); +}; diff --git a/src/Components/Bar/BarIcon.tsx b/src/Components/Bar/BarIcon.tsx new file mode 100644 index 0000000..5afaae7 --- /dev/null +++ b/src/Components/Bar/BarIcon.tsx @@ -0,0 +1,22 @@ +import * as React from 'react'; + +interface IBarIconProps { + title: string + children: React.ReactElement + isActive: boolean + onClick: () => void +} + +export const BarIcon: React.FC = (props) => { + const isActiveClasses = props.isActive ? 'border-l-4 border-blue-500 bg-slate-200' : ''; + return ( + + ); +}; diff --git a/src/Components/ElementsSidebar/ElementsSidebar.test.tsx b/src/Components/ElementsSidebar/ElementsSidebar.test.tsx index d52fe97..2dd5080 100644 --- a/src/Components/ElementsSidebar/ElementsSidebar.test.tsx +++ b/src/Components/ElementsSidebar/ElementsSidebar.test.tsx @@ -1,4 +1,4 @@ -import { describe, test, expect, vi } from 'vitest'; +import { describe, expect, vi } from 'vitest'; import * as React from 'react'; import { fireEvent, render, screen } from '../../utils/test-utils'; import { ElementsSidebar } from './ElementsSidebar'; @@ -11,7 +11,6 @@ describe.concurrent('Elements sidebar', () => { isOpen={true} isHistoryOpen={false} SelectedContainer={null} - onClick={() => {}} onPropertyChange={() => {}} selectContainer={() => {}} />); @@ -39,7 +38,6 @@ describe.concurrent('Elements sidebar', () => { isOpen={true} isHistoryOpen={false} SelectedContainer={null} - onClick={() => {}} onPropertyChange={() => {}} selectContainer={() => {}} />); @@ -69,7 +67,6 @@ describe.concurrent('Elements sidebar', () => { isOpen={true} isHistoryOpen={false} SelectedContainer={MainContainer} - onClick={() => {}} onPropertyChange={() => {}} selectContainer={() => {}} />); @@ -154,7 +151,6 @@ describe.concurrent('Elements sidebar', () => { isOpen={true} isHistoryOpen={false} SelectedContainer={MainContainer} - onClick={() => {}} onPropertyChange={() => {}} selectContainer={() => {}} />); @@ -207,7 +203,6 @@ describe.concurrent('Elements sidebar', () => { isOpen={true} isHistoryOpen={false} SelectedContainer={SelectedContainer} - onClick={() => {}} onPropertyChange={() => {}} selectContainer={selectContainer} />); @@ -229,7 +224,6 @@ describe.concurrent('Elements sidebar', () => { isOpen={true} isHistoryOpen={false} SelectedContainer={SelectedContainer} - onClick={() => {}} onPropertyChange={() => {}} selectContainer={selectContainer} />); diff --git a/src/Components/ElementsSidebar/ElementsSidebar.tsx b/src/Components/ElementsSidebar/ElementsSidebar.tsx index caa6081..bbbcba5 100644 --- a/src/Components/ElementsSidebar/ElementsSidebar.tsx +++ b/src/Components/ElementsSidebar/ElementsSidebar.tsx @@ -9,7 +9,6 @@ interface IElementsSidebarProps { isOpen: boolean isHistoryOpen: boolean SelectedContainer: IContainerModel | null - onClick: () => void onPropertyChange: (key: string, value: string) => void selectContainer: (container: IContainerModel) => void } @@ -42,8 +41,8 @@ export class ElementsSidebar extends React.PureComponent const selectedClass: string = this.props.SelectedContainer !== undefined && this.props.SelectedContainer !== null && this.props.SelectedContainer.properties.id === container.properties.id - ? 'bg-blue-500 hover:bg-blue-600' - : 'bg-slate-400 hover:bg-slate-600'; + ? 'border-l-4 border-blue-500 bg-slate-400/60 hover:bg-slate-400' + : 'bg-slate-300/60 hover:bg-slate-300'; containerRows.push( }); return ( -
- -
+
+
Elements
-
+
{ containerRows }
diff --git a/src/Components/FloatingButton/FloatingButton.tsx b/src/Components/FloatingButton/FloatingButton.tsx index 3145f45..d55f01b 100644 --- a/src/Components/FloatingButton/FloatingButton.tsx +++ b/src/Components/FloatingButton/FloatingButton.tsx @@ -21,7 +21,7 @@ const FloatingButton: React.FC = (props: IFloatingButtonPr : ; return ( -
+
{ props.children }
diff --git a/src/Components/History/History.tsx b/src/Components/History/History.tsx index 7487de1..c01298d 100644 --- a/src/Components/History/History.tsx +++ b/src/Components/History/History.tsx @@ -5,7 +5,6 @@ interface IHistoryProps { history: IHistoryState[] historyCurrentStep: number isOpen: boolean - onClick: () => void jumpTo: (move: number) => void } @@ -46,12 +45,9 @@ export class History extends React.PureComponent { states.reverse(); return ( -
- -
- History +
+
+ Timeline
{ states } diff --git a/src/Components/Properties/Properties.tsx b/src/Components/Properties/Properties.tsx index 0d30d3d..adcebe6 100644 --- a/src/Components/Properties/Properties.tsx +++ b/src/Components/Properties/Properties.tsx @@ -18,7 +18,7 @@ export class Properties extends React.PureComponent { .forEach((pair) => this.handleProperties(pair, groupInput)); return ( -
+
{ groupInput }
); @@ -33,12 +33,12 @@ export class Properties extends React.PureComponent { const isDisabled = key === 'id' || key === 'parentId'; // hardcoded groupInput.push(
- + void buttonOnClick: (type: string) => void } export default class Sidebar extends React.PureComponent { public render(): JSX.Element { const listElements = this.props.componentOptions.map(componentOption => - ); - const isOpenClasses = this.props.isOpen ? 'left-0' : '-left-64'; + const isOpenClasses = this.props.isOpen ? 'left-16' : '-left-64'; return ( -
- -
+
+
Components
- {listElements} +
+ {listElements} +
); } diff --git a/src/Components/UI/UI.tsx b/src/Components/UI/UI.tsx index 7748c67..37420bd 100644 --- a/src/Components/UI/UI.tsx +++ b/src/Components/UI/UI.tsx @@ -7,6 +7,7 @@ import { ContainerModel } from '../../Interfaces/ContainerModel'; import { IHistoryState } from '../../App'; import { PhotographIcon, UploadIcon } from '@heroicons/react/outline'; import FloatingButton from '../FloatingButton/FloatingButton'; +import { Bar } from '../Bar/Bar'; interface IUIProps { current: IHistoryState @@ -58,7 +59,7 @@ export class UI extends React.PureComponent { /** * Toggle the elements */ - public ToggleHistory(): void { + public ToggleTimeline(): void { this.setState({ isHistoryOpen: !this.state.isHistoryOpen }); @@ -75,47 +76,34 @@ export class UI extends React.PureComponent { return ( <> + this.ToggleElementsSidebar()} + ToggleSidebar={() => this.ToggleSidebar()} + ToggleTimeline={() => this.ToggleTimeline()} + /> + this.ToggleSidebar()} buttonOnClick={(type: string) => this.props.AddContainer(type)} /> - - this.ToggleElementsSidebar()} onPropertyChange={this.props.OnPropertyChange} selectContainer={this.props.SelectContainer} /> - - this.ToggleHistory()} jumpTo={this.props.LoadState} /> - diff --git a/src/assets/fonts/RobotoFlex-Regular.ttf b/src/assets/fonts/RobotoFlex-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f857ae9c569eb2caa8700cab80905ae355e41ecb GIT binary patch literal 109860 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 Date: Mon, 8 Aug 2022 11:31:33 +0200 Subject: [PATCH 2/3] Fix svg viewer position --- src/Components/Bar/Bar.tsx | 2 ++ src/Components/SVG/SVG.tsx | 13 +++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Components/Bar/Bar.tsx b/src/Components/Bar/Bar.tsx index 672f80f..1738a3f 100644 --- a/src/Components/Bar/Bar.tsx +++ b/src/Components/Bar/Bar.tsx @@ -11,6 +11,8 @@ interface IBarProps { ToggleTimeline: () => void } +export const BAR_WIDTH = 64; // 4rem + export const Bar: React.FC = (props) => { return (

diff --git a/src/Components/SVG/SVG.tsx b/src/Components/SVG/SVG.tsx index 9ebe3af..a2e0e20 100644 --- a/src/Components/SVG/SVG.tsx +++ b/src/Components/SVG/SVG.tsx @@ -3,6 +3,7 @@ import { UncontrolledReactSVGPanZoom } from 'react-svg-pan-zoom'; import { Container } from './Elements/Container'; import { ContainerModel } from '../../Interfaces/ContainerModel'; import { Selector } from './Elements/Selector'; +import { BAR_WIDTH } from '../Bar/Bar'; interface ISVGProps { width: number @@ -12,8 +13,8 @@ interface ISVGProps { } interface ISVGState { - viewerWidth: number, - viewerHeight: number, + viewerWidth: number + viewerHeight: number } export class SVG extends React.PureComponent { @@ -23,14 +24,14 @@ export class SVG extends React.PureComponent { constructor(props: ISVGProps) { super(props); this.state = { - viewerWidth: window.innerWidth, + viewerWidth: window.innerWidth - BAR_WIDTH, viewerHeight: window.innerHeight }; } resizeViewBox(): void { this.setState({ - viewerWidth: window.innerWidth, + viewerWidth: window.innerWidth - BAR_WIDTH, viewerHeight: window.innerHeight }); } @@ -60,7 +61,7 @@ export class SVG extends React.PureComponent { } return ( -
+
{ miniatureProps={{ position: 'left', background: '#616264', - width: window.innerWidth - 12, + width: window.innerWidth - 12 - BAR_WIDTH, height: 120 }} > From 6b8531d3ae0cd0680e63f154a82423a4f988e5f1 Mon Sep 17 00:00:00 2001 From: Siklos Date: Mon, 8 Aug 2022 11:33:46 +0200 Subject: [PATCH 3/3] Update Sidebar test with new UI --- src/Components/Sidebar/Sidebar.test.tsx | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/Components/Sidebar/Sidebar.test.tsx b/src/Components/Sidebar/Sidebar.test.tsx index 8f283eb..0810741 100644 --- a/src/Components/Sidebar/Sidebar.test.tsx +++ b/src/Components/Sidebar/Sidebar.test.tsx @@ -5,29 +5,23 @@ import Sidebar from './Sidebar'; describe.concurrent('Sidebar', () => { it('Start default', () => { - const handleClick = vi.fn(); render( {}} /> ); const stuff = screen.queryByText(/stuff/i); - const close = screen.getByText(/close/i); expect(screen.getByText(/Components/i).classList.contains('left-0')).toBeDefined(); expect(stuff).toBeNull(); - fireEvent.click(close); - expect(handleClick).toHaveBeenCalledTimes(1); }); it('Start close', () => { render( {}} buttonOnClick={() => {}} />); @@ -49,7 +43,6 @@ describe.concurrent('Sidebar', () => { } ]} isOpen={true} - onClick={() => {}} buttonOnClick={handleButtonClick} />); const stuff = screen.getByText(/stuff/i);