fix(inspector): hide drawer when recording (#5548)

This commit is contained in:
Pavel Feldman 2021-02-22 15:35:38 -08:00 committed by GitHub
parent cadcd535e0
commit 096ddab972
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 16 additions and 14 deletions

View File

@ -19,30 +19,35 @@ import * as React from 'react';
export interface SplitViewProps { export interface SplitViewProps {
sidebarSize: number, sidebarSize: number,
sidebarHidden?: boolean
} }
const kMinSidebarSize = 50; const kMinSidebarSize = 50;
export const SplitView: React.FC<SplitViewProps> = ({ export const SplitView: React.FC<SplitViewProps> = ({
sidebarSize, sidebarSize,
sidebarHidden,
children children
}) => { }) => {
let [size, setSize] = React.useState<number>(Math.max(kMinSidebarSize, sidebarSize)); let [size, setSize] = React.useState<number>(Math.max(kMinSidebarSize, sidebarSize));
const [resizing, setResizing] = React.useState<{ offsetY: number, size: number } | null>(null); const [resizing, setResizing] = React.useState<{ offsetY: number, size: number } | null>(null);
const childrenArray = React.Children.toArray(children); const childrenArray = React.Children.toArray(children);
document.body.style.userSelect = resizing ? 'none' : 'inherit';
return <div className='split-view'> return <div className='split-view'>
<div className='split-view-main'>{childrenArray[0]}</div> <div className='split-view-main'>{childrenArray[0]}</div>
<div style={{flexBasis: size}} className='split-view-sidebar'>{childrenArray[1]}</div> { !sidebarHidden && <div style={{flexBasis: size}} className='split-view-sidebar'>{childrenArray[1]}</div> }
<div { !sidebarHidden && <div
style={{bottom: resizing ? 0 : size - 4, top: resizing ? 0 : undefined, height: resizing ? 'initial' : 8 }} style={{bottom: resizing ? 0 : size - 4, top: resizing ? 0 : undefined, height: resizing ? 'initial' : 8 }}
className='split-view-resizer' className='split-view-resizer'
onMouseDown={event => setResizing({ offsetY: event.clientY, size })} onMouseDown={event => setResizing({ offsetY: event.clientY, size })}
onMouseUp={() => setResizing(null)} onMouseUp={() => setResizing(null)}
onMouseMove={event => { onMouseMove={event => {
if (resizing) if (!event.buttons)
setResizing(null);
else if (resizing)
setSize(Math.max(kMinSidebarSize, resizing.size - event.clientY + resizing.offsetY)); setSize(Math.max(kMinSidebarSize, resizing.size - event.clientY + resizing.offsetY));
}} }}
></div> ></div> }
</div>; </div>;
}; };

View File

@ -32,7 +32,7 @@ const Template: Story<ToolbarProps> = () => <Toolbar>
export const Primary = Template.bind({}); export const Primary = Template.bind({});
const AllTemplate: Story = () => <Toolbar lineWrap={true}> const AllTemplate: Story = () => <Toolbar>
{[ {[
'add', 'plus', 'gist-new', 'repo-create', 'lightbulb', 'light-bulb', 'repo', 'repo-delete', 'gist-fork', 'repo-forked', 'add', 'plus', 'gist-new', 'repo-create', 'lightbulb', 'light-bulb', 'repo', 'repo-delete', 'gist-fork', 'repo-forked',
'git-pull-request', 'git-pull-request-abandoned', 'record-keys', 'keyboard', 'tag', 'tag-add', 'tag-remove', 'person', 'git-pull-request', 'git-pull-request-abandoned', 'record-keys', 'keyboard', 'tag', 'tag-add', 'tag-remove', 'person',

View File

@ -18,13 +18,10 @@ import './toolbar.css';
import * as React from 'react'; import * as React from 'react';
export interface ToolbarProps { export interface ToolbarProps {
lineWrap?: boolean
} }
export const Toolbar: React.FC<ToolbarProps> = ({ export const Toolbar: React.FC<ToolbarProps> = ({
lineWrap = false,
children children
}) => { }) => {
const className = lineWrap ? 'toolbar toolbar-linewrap' : 'toolbar'; return <div className='toolbar'>{children}</div>;
return <div className={className}>{children}</div>;
}; };

View File

@ -22,7 +22,7 @@
padding: 0; padding: 0;
margin-left: 10px; margin-left: 10px;
cursor: pointer; cursor: pointer;
display: flex; display: inline-flex;
align-items: center; align-items: center;
} }
@ -31,7 +31,7 @@
cursor: default; cursor: default;
} }
.toolbar-button:not(.disabled):not(.toggled):hover { .toolbar-button:not(.disabled):hover {
color: #555; color: #555;
} }

View File

@ -38,7 +38,7 @@
margin-left: 16px; margin-left: 16px;
} }
.recorder .toolbar-button.toggled.question { .recorder .toolbar-button.toggled.microscope {
color: #12a3ff; color: #12a3ff;
} }

View File

@ -109,11 +109,11 @@ export const Recorder: React.FC<RecorderProps> = ({
window.dispatch({ event: 'clear' }).catch(() => {}); window.dispatch({ event: 'clear' }).catch(() => {});
}}></ToolbarButton> }}></ToolbarButton>
</Toolbar> </Toolbar>
<SplitView sidebarSize={200}> <SplitView sidebarSize={200} sidebarHidden={mode === 'recording'}>
<SourceView text={source.text} language={source.language} highlight={source.highlight} revealLine={source.revealLine}></SourceView> <SourceView text={source.text} language={source.language} highlight={source.highlight} revealLine={source.revealLine}></SourceView>
<div className='vbox'> <div className='vbox'>
<Toolbar> <Toolbar>
<ToolbarButton icon='question' title='Explore' toggled={mode == 'inspecting'} onClick={() => { <ToolbarButton icon='microscope' title='Explore' toggled={mode == 'inspecting'} onClick={() => {
window.dispatch({ event: 'setMode', params: { mode: mode === 'inspecting' ? 'none' : 'inspecting' }}).catch(() => { }); window.dispatch({ event: 'setMode', params: { mode: mode === 'inspecting' ? 'none' : 'inspecting' }}).catch(() => { });
}}>Explore</ToolbarButton> }}>Explore</ToolbarButton>
<input ref={selectorInputRef} className='selector-input' placeholder='Playwright Selector' value={selector} disabled={mode !== 'none'} onChange={event => { <input ref={selectorInputRef} className='selector-input' placeholder='Playwright Selector' value={selector} disabled={mode !== 'none'} onChange={event => {