mirror of
https://github.com/harness/drone.git
synced 2025-05-21 11:29:52 +08:00
Unify Pipelines Checks / Terminal scrolling experience + bolder icons (#559)
This commit is contained in:
parent
32a5999555
commit
c00c3c0947
@ -73,7 +73,7 @@ const App: React.FC<AppProps> = React.memo(function App({
|
|||||||
}}>
|
}}>
|
||||||
<IconoirProvider
|
<IconoirProvider
|
||||||
iconProps={{
|
iconProps={{
|
||||||
strokeWidth: 1,
|
strokeWidth: 1.5,
|
||||||
width: '16px',
|
width: '16px',
|
||||||
height: '16px'
|
height: '16px'
|
||||||
}}>
|
}}>
|
||||||
|
@ -6,7 +6,7 @@ import css from './LogViewer.module.scss'
|
|||||||
|
|
||||||
export interface LogViewerProps {
|
export interface LogViewerProps {
|
||||||
search?: string
|
search?: string
|
||||||
content: string
|
content?: string
|
||||||
className?: string
|
className?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -14,7 +14,7 @@ const LogTerminal: React.FC<LogViewerProps> = ({ content, className }) => {
|
|||||||
const ref = useRef<HTMLDivElement | null>(null)
|
const ref = useRef<HTMLDivElement | null>(null)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
content.split(/\r?\n/).forEach(line => ref.current?.appendChild(lineElement(line)))
|
content?.split(/\r?\n/).forEach(line => ref.current?.appendChild(lineElement(line)))
|
||||||
}, [content])
|
}, [content])
|
||||||
|
|
||||||
return <Container ref={ref} className={cx(css.main, className)} />
|
return <Container ref={ref} className={cx(css.main, className)} />
|
||||||
|
@ -92,7 +92,7 @@ const CheckPipelineStep: React.FC<CheckPipelineStepsProps & { step: TypesStep }>
|
|||||||
|
|
||||||
eventSourceRef.current.onmessage = event => {
|
eventSourceRef.current.onmessage = event => {
|
||||||
try {
|
try {
|
||||||
const scrollParent = containerRef.current?.closest(`.${css.pipelineSteps}`) as HTMLDivElement
|
const scrollParent = containerRef.current?.closest(`.${css.content}`) as HTMLDivElement
|
||||||
const autoScroll =
|
const autoScroll =
|
||||||
scrollParent && scrollParent.scrollTop === scrollParent.scrollHeight - scrollParent.offsetHeight
|
scrollParent && scrollParent.scrollTop === scrollParent.scrollHeight - scrollParent.offsetHeight
|
||||||
|
|
||||||
@ -153,11 +153,7 @@ const CheckPipelineStep: React.FC<CheckPipelineStepsProps & { step: TypesStep }>
|
|||||||
onClick={() => {
|
onClick={() => {
|
||||||
setExpanded(!expanded)
|
setExpanded(!expanded)
|
||||||
}}>
|
}}>
|
||||||
<NavArrowRight
|
<NavArrowRight color={Utils.getRealCSSColor(Color.GREY_500)} className={cx(css.noShrink, css.chevron)} />
|
||||||
color={Utils.getRealCSSColor(Color.GREY_500)}
|
|
||||||
className={cx(css.noShrink, css.chevron)}
|
|
||||||
strokeWidth="1.5"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<ExecutionStatus
|
<ExecutionStatus
|
||||||
className={cx(css.status, css.noShrink)}
|
className={cx(css.status, css.noShrink)}
|
||||||
@ -184,7 +180,7 @@ const CheckPipelineStep: React.FC<CheckPipelineStepsProps & { step: TypesStep }>
|
|||||||
</Render>
|
</Render>
|
||||||
</Layout.Horizontal>
|
</Layout.Horizontal>
|
||||||
<Render when={expanded}>
|
<Render when={expanded}>
|
||||||
<Container className={css.stepLogViewer} ref={containerRef}></Container>
|
<Container className={css.stepLogContainer} ref={containerRef}></Container>
|
||||||
</Render>
|
</Render>
|
||||||
</Container>
|
</Container>
|
||||||
)
|
)
|
||||||
|
@ -111,6 +111,7 @@
|
|||||||
|
|
||||||
.content {
|
.content {
|
||||||
background-color: var(--black);
|
background-color: var(--black);
|
||||||
|
overflow: auto;
|
||||||
|
|
||||||
&.markdown {
|
&.markdown {
|
||||||
:global {
|
:global {
|
||||||
@ -120,22 +121,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
padding: 0 var(--spacing-large) var(--spacing-medium);
|
padding: 0 var(--spacing-large) var(--spacing-medium);
|
||||||
overflow: auto;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&.terminal {
|
&.terminal {
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
padding: var(--spacing-medium) var(--spacing-large) 0;
|
padding: var(--spacing-medium) var(--spacing-large) 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
:global {
|
|
||||||
.terminal.xterm {
|
|
||||||
padding: var(--spacing-small) var(--spacing-large) 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
span[data-icon='execution-success'] svg {
|
span[data-icon='execution-success'] svg {
|
||||||
circle {
|
circle {
|
||||||
color: transparent !important;
|
color: transparent !important;
|
||||||
@ -149,6 +141,7 @@
|
|||||||
top: 0;
|
top: 0;
|
||||||
background-color: var(--black);
|
background-color: var(--black);
|
||||||
height: var(--log-content-header-height);
|
height: var(--log-content-header-height);
|
||||||
|
z-index: 3;
|
||||||
|
|
||||||
.headerLayout {
|
.headerLayout {
|
||||||
border-bottom: 1px solid var(--grey-800);
|
border-bottom: 1px solid var(--grey-800);
|
||||||
@ -162,14 +155,8 @@
|
|||||||
padding-left: var(--spacing-small);
|
padding-left: var(--spacing-small);
|
||||||
}
|
}
|
||||||
|
|
||||||
.terminalContainer {
|
|
||||||
height: calc(100% - var(--log-content-header-height));
|
|
||||||
|
|
||||||
.logViewer {
|
.logViewer {
|
||||||
padding: var(--spacing-medium) var(--spacing-large) var(--spacing-medium) var(--spacing-xxlarge);
|
padding: var(--spacing-medium) var(--spacing-medium) var(--spacing-medium) var(--spacing-xxlarge);
|
||||||
overflow: auto;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -204,8 +191,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.pipelineSteps {
|
.pipelineSteps {
|
||||||
height: 100%;
|
|
||||||
overflow: auto;
|
|
||||||
padding: 10px 20px 0 !important;
|
padding: 10px 20px 0 !important;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@ -228,7 +213,7 @@
|
|||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
padding: 0 10px 0 6px;
|
padding: 0 10px 0 6px;
|
||||||
position: sticky;
|
position: sticky;
|
||||||
top: 0;
|
top: 74px;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
background-color: var(--black);
|
background-color: var(--black);
|
||||||
|
|
||||||
@ -263,7 +248,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.stepLogViewer {
|
.stepLogContainer {
|
||||||
padding: 15px 36px;
|
padding: 15px 36px;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
|
|
||||||
|
@ -25,9 +25,8 @@ export declare const selected: string
|
|||||||
export declare const spinner: string
|
export declare const spinner: string
|
||||||
export declare const status: string
|
export declare const status: string
|
||||||
export declare const stepHeader: string
|
export declare const stepHeader: string
|
||||||
export declare const stepLogViewer: string
|
export declare const stepLogContainer: string
|
||||||
export declare const subMenu: string
|
export declare const subMenu: string
|
||||||
export declare const terminal: string
|
export declare const terminal: string
|
||||||
export declare const terminalContainer: string
|
|
||||||
export declare const text: string
|
export declare const text: string
|
||||||
export declare const uid: string
|
export declare const uid: string
|
||||||
|
@ -115,7 +115,6 @@ export const Checks: React.FC<ChecksProps> = ({ repoMetadata, pullRequestMetadat
|
|||||||
</Container>
|
</Container>
|
||||||
</Truthy>
|
</Truthy>
|
||||||
<Falsy>
|
<Falsy>
|
||||||
<Container className={css.terminalContainer}>
|
|
||||||
<Match expr={selectedStage}>
|
<Match expr={selectedStage}>
|
||||||
<Truthy>
|
<Truthy>
|
||||||
<CheckPipelineSteps
|
<CheckPipelineSteps
|
||||||
@ -130,7 +129,6 @@ export const Checks: React.FC<ChecksProps> = ({ repoMetadata, pullRequestMetadat
|
|||||||
<LogViewer content={logContent} className={css.logViewer} />
|
<LogViewer content={logContent} className={css.logViewer} />
|
||||||
</Falsy>
|
</Falsy>
|
||||||
</Match>
|
</Match>
|
||||||
</Container>
|
|
||||||
</Falsy>
|
</Falsy>
|
||||||
</Match>
|
</Match>
|
||||||
</Container>
|
</Container>
|
||||||
|
@ -88,7 +88,7 @@ export interface SourceCodeEditorProps {
|
|||||||
autoHeight?: boolean
|
autoHeight?: boolean
|
||||||
wordWrap?: boolean
|
wordWrap?: boolean
|
||||||
onChange?: (value: string) => void
|
onChange?: (value: string) => void
|
||||||
schema?: Record<string, any>
|
schema?: Record<string, unknown>
|
||||||
}
|
}
|
||||||
|
|
||||||
// Monaco editor has a bug where when its value is set, the value
|
// Monaco editor has a bug where when its value is set, the value
|
||||||
|
Loading…
Reference in New Issue
Block a user