diff --git a/packages/server/src/ui/app.css b/packages/server/src/ui/app.css index 505710f26..9de8df9f4 100644 --- a/packages/server/src/ui/app.css +++ b/packages/server/src/ui/app.css @@ -59,8 +59,8 @@ --compare-color: var(--color-blue-500); --compare-highlight-color: var(--color-blue-100); - --dev-branch-color: var(--color-deep-orange-a200); - --master-branch-color: var(--color-deep-purple-400); + --dev-branch-color: var(--color-gray-600); + --master-branch-color: var(--color-gray-800); --base-font-family: 'Roboto', sans-serif; --base-font-weight: 400; diff --git a/packages/server/src/ui/routes/build-view/build-hash-selector.css b/packages/server/src/ui/routes/build-view/build-hash-selector.css index da249685c..a9de8dd4e 100644 --- a/packages/server/src/ui/routes/build-view/build-hash-selector.css +++ b/packages/server/src/ui/routes/build-view/build-hash-selector.css @@ -27,28 +27,35 @@ padding: 0; } -.build-hash-selector__list li { +.build-hash-selector__item { + position: relative; + height: var(--line-item-height); + width: 100%; + font-weight: var(--medium-font-weight); +} + +.build-hash-selector__item > div.container { display: flex; flex-direction: row; align-items: center; height: var(--line-item-height); padding: calc(var(--base-spacing) / 2); - font-weight: var(--medium-font-weight); - border-radius: 5px; } -.build-hash-selector__list li:hover { +.build-hash-selector__item:hover, +.build-hash-selector__item--selected { cursor: pointer; background: var(--compare-highlight-color); } -.build-hash-selector--base li:hover { +.build-hash-selector--base li:hover, +.build-hash-selector--base .build-hash-selector__item--selected { cursor: pointer; background: var(--neutral-highlight-color); } -.build-hash-selector__list li.build-hash-selector__label-li:hover { +.build-hash-selector__item.build-hash-selector__label-li:hover { cursor: initial; background: none; } @@ -58,6 +65,35 @@ min-width: 90px; } +.build-hash-selector__selection .pill--compare.pill--solid, +.build-hash-selector__selection .pill--base.pill--solid { + text-transform: uppercase; + width: 90%; + text-align: center; + font-size: var(--subtext-font-size); +} + +.build-hash-selector__selection .pill--compare.pill--solid { + background: var(--compare-color); + color: var(--inverted-text-color); +} + +.build-hash-selector__selection .pill--base.pill--solid { + background: var(--neutral-color); + color: var(--inverted-text-color); +} + +.build-hash-selector__selector-selection { + position: absolute; + right: calc(var(--base-spacing)); + bottom: calc((var(--line-item-height) - 24px) / 2); + color: var(--compare-color); +} + +.build-hash-selector--base .build-hash-selector__selector-selection { + color: var(--neutral-color); +} + .build-hash-selector__hash { color: var(--base-text-color); font-family: var(--monospace-font-family); @@ -84,7 +120,7 @@ white-space: nowrap; } -.build-hash-selector__list li:hover .build-hash-selector__links { +.build-hash-selector__item:hover .build-hash-selector__links { display: inline; } diff --git a/packages/server/src/ui/routes/build-view/build-hash-selector.jsx b/packages/server/src/ui/routes/build-view/build-hash-selector.jsx index 899181dac..4f7f4c823 100644 --- a/packages/server/src/ui/routes/build-view/build-hash-selector.jsx +++ b/packages/server/src/ui/routes/build-view/build-hash-selector.jsx @@ -5,6 +5,7 @@ */ import {h, Fragment} from 'preact'; +import clsx from 'clsx'; import * as _ from '@lhci/utils/src/lodash.js'; import './build-hash-selector.css'; import {useBranchBuilds} from '../../hooks/use-api-data'; @@ -31,19 +32,21 @@ const GitViz = props => { const LabelLineItem = props => { const variant = props.branch === 'master' ? 'master-branch' : 'dev-branch'; return ( -
  • - - - - {props.branch} - +
  • +
    + + + + {props.branch} + +
  • ); }; @@ -53,10 +56,15 @@ const BuildLineItem = props => { const {build, compareBuild, baseBuild, selector} = props; const isCompareBranch = build.id === compareBuild.id; const isBaseBranch = build.id === (baseBuild && baseBuild.id); + const isSelected = + (selector === 'base' && isBaseBranch) || (selector === 'compare' && isCompareBranch); const variant = build.branch === 'master' ? 'master-branch' : 'dev-branch'; return (
  • { if (isCompareBranch && selector === 'compare') return; @@ -75,32 +83,39 @@ const BuildLineItem = props => { window.location.href = url.href; }} > - - {isCompareBranch && ( - - compare - - )} - {isBaseBranch && ( - - base - - )} - - - - {build.hash.slice(0, 8)} - {' '} - {build.author} - {build.commitMessage} - - {build.externalBuildUrl ? View Build : } - +
    + + {isCompareBranch && selector === 'base' && ( + + compare + + )} + {isBaseBranch && selector === 'compare' && ( + + base + + )} + + + + {build.hash.slice(0, 8)} + {' '} + {build.author} + {build.commitMessage} + + {build.externalBuildUrl ? View Build : } + +
    + {isSelected ? ( + check + ) : ( + + )}
  • ); }; @@ -143,29 +158,27 @@ const BuildHashSelector_ = props => { }, [props.close]); return ( -
    - -
    + ); }; diff --git a/packages/server/src/ui/routes/build-view/build-selector-pill.css b/packages/server/src/ui/routes/build-view/build-selector-pill.css index 1d0ff867f..53689c60b 100644 --- a/packages/server/src/ui/routes/build-view/build-selector-pill.css +++ b/packages/server/src/ui/routes/build-view/build-selector-pill.css @@ -43,3 +43,11 @@ font-weight: var(--medium-font-weight); padding-right: var(--pill-spacing); } + +.build-selector-pill--open { + border-width: 2px; +} + +.build-selector-pill--dim { + opacity: 0.5; +} diff --git a/packages/server/src/ui/routes/build-view/build-selector-pill.jsx b/packages/server/src/ui/routes/build-view/build-selector-pill.jsx index d785164b9..2d8a5006a 100644 --- a/packages/server/src/ui/routes/build-view/build-selector-pill.jsx +++ b/packages/server/src/ui/routes/build-view/build-selector-pill.jsx @@ -26,13 +26,14 @@ const Selection = props => { }; /** - * @param {{build: LHCI.ServerCommand.Build | null, variant: 'base'|'compare', isOpen?: boolean, onClick?: () => void}} props + * @param {{build: LHCI.ServerCommand.Build | null, variant: 'base'|'compare', isOpen?: boolean, isDimmed?: boolean, onClick?: () => void}} props */ export const BuildSelectorPill = props => { return (
    diff --git a/packages/server/src/ui/routes/build-view/build-view.jsx b/packages/server/src/ui/routes/build-view/build-view.jsx index 1b8e16a9a..047a509cf 100644 --- a/packages/server/src/ui/routes/build-view/build-view.jsx +++ b/packages/server/src/ui/routes/build-view/build-view.jsx @@ -185,23 +185,17 @@ const BuildView_ = props => { - {openBuildHash === null ? ( - - ) : ( -
    - arrow_back - Select {_.startCase(openBuildHash)} -
    - )} setOpenBuild(openBuildHash === 'base' ? null : 'base')} /> setOpenBuild(openBuildHash === 'compare' ? null : 'compare')} />