Commit 6fffddab authored by Clement Ho's avatar Clement Ho

Merge branch 'winh-pipeline-graph-dropdowns' into 'master'

Make pipeline dropdowns consistent

See merge request !13530
parents 6c21e6f9 0c8736a8
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
}; };
</script> </script>
<template> <template>
<div> <div class="ci-job-dropdown-container">
<button <button
v-tooltip v-tooltip
type="button" type="button"
......
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
}; };
</script> </script>
<template> <template>
<div> <div class="ci-job-component">
<a <a
v-tooltip v-tooltip
v-if="job.status.details_path" v-if="job.status.details_path"
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
}; };
</script> </script>
<template> <template>
<span> <span class="ci-job-name-component">
<ci-icon <ci-icon
:status="status" /> :status="status" />
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
.prepend-left-default { margin-left: $gl-padding; } .prepend-left-default { margin-left: $gl-padding; }
.prepend-left-20 { margin-left: 20px; } .prepend-left-20 { margin-left: 20px; }
.append-right-5 { margin-right: 5px; } .append-right-5 { margin-right: 5px; }
.append-right-8 { margin-right: 8px; }
.append-right-10 { margin-right: 10px; } .append-right-10 { margin-right: 10px; }
.append-right-default { margin-right: $gl-padding; } .append-right-default { margin-right: $gl-padding; }
.append-right-20 { margin-right: 20px; } .append-right-20 { margin-right: 20px; }
......
...@@ -749,7 +749,8 @@ ...@@ -749,7 +749,8 @@
} }
a, a,
button { button,
.menu-item {
border-radius: 0; border-radius: 0;
padding: 8px 16px; padding: 8px 16px;
......
...@@ -591,9 +591,10 @@ $ui-dev-kit-example-border: #ddd; ...@@ -591,9 +591,10 @@ $ui-dev-kit-example-border: #ddd;
/* /*
Pipeline Graph Pipeline Graph
*/ */
$stage-hover-bg: #eaf3fc; $stage-hover-bg: $gray-darker;
$stage-hover-border: #d1e7fc; $ci-action-icon-size: 22px;
$action-icon-color: #d6d6d6; $pipeline-dropdown-line-height: 20px;
$pipeline-dropdown-status-icon-size: 18px;
/* /*
Pipeline Schedules Pipeline Schedules
......
...@@ -174,17 +174,6 @@ ...@@ -174,17 +174,6 @@
vertical-align: top; vertical-align: top;
} }
.mini-pipeline-graph-dropdown-menu .mini-pipeline-graph-dropdown-item {
display: flex;
align-items: center;
.ci-status-text,
.ci-status-icon {
top: 0;
margin-right: 10px;
}
}
.normal { .normal {
line-height: 28px; line-height: 28px;
} }
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
.btn.btn-retry:hover, .btn.btn-retry:hover,
.btn.btn-retry:focus { .btn.btn-retry:focus {
border-color: $gray-darkest; border-color: $dropdown-toggle-active-border-color;
background-color: $white-normal; background-color: $white-normal;
} }
...@@ -206,8 +206,8 @@ ...@@ -206,8 +206,8 @@
.stage-cell { .stage-cell {
.mini-pipeline-graph-dropdown-toggle svg { .mini-pipeline-graph-dropdown-toggle svg {
height: 22px; height: $ci-action-icon-size;
width: 22px; width: $ci-action-icon-size;
position: absolute; position: absolute;
top: -1px; top: -1px;
left: -1px; left: -1px;
...@@ -219,7 +219,7 @@ ...@@ -219,7 +219,7 @@
display: inline-block; display: inline-block;
position: relative; position: relative;
vertical-align: middle; vertical-align: middle;
height: 22px; height: $ci-action-icon-size;
margin: 3px 0; margin: 3px 0;
+ .stage-container { + .stage-container {
...@@ -308,7 +308,7 @@ ...@@ -308,7 +308,7 @@
a { a {
text-decoration: none; text-decoration: none;
color: $gl-text-color-secondary; color: $gl-text-color;
} }
svg { svg {
...@@ -432,7 +432,11 @@ ...@@ -432,7 +432,11 @@
width: 186px; width: 186px;
margin-bottom: 10px; margin-bottom: 10px;
white-space: normal; white-space: normal;
color: $gl-text-color-secondary;
// ensure .build-content has hover style when action-icon is hovered
.ci-job-dropdown-container:hover .build-content {
@extend .build-content:hover;
}
// Action Icons in big pipeline-graph nodes // Action Icons in big pipeline-graph nodes
.ci-action-icon-container .ci-action-icon-wrapper { .ci-action-icon-container .ci-action-icon-wrapper {
...@@ -445,11 +449,11 @@ ...@@ -445,11 +449,11 @@
&:hover { &:hover {
background-color: $stage-hover-bg; background-color: $stage-hover-bg;
border: 1px solid $stage-hover-bg; border: 1px solid $dropdown-toggle-active-border-color;
} }
svg { svg {
fill: $border-color; fill: $gl-text-color-secondary;
position: relative; position: relative;
left: -1px; left: -1px;
top: -1px; top: -1px;
...@@ -475,19 +479,10 @@ ...@@ -475,19 +479,10 @@
background-color: transparent; background-color: transparent;
border: none; border: none;
padding: 0; padding: 0;
color: $gl-text-color-secondary;
&:focus { &:focus {
outline: none; outline: none;
} }
&:hover {
color: $gl-text-color;
.dropdown-counter-badge {
color: $gl-text-color;
}
}
} }
.build-content { .build-content {
...@@ -502,8 +497,7 @@ ...@@ -502,8 +497,7 @@
a.build-content:hover, a.build-content:hover,
button.build-content:hover { button.build-content:hover {
background-color: $stage-hover-bg; background-color: $stage-hover-bg;
border: 1px solid $stage-hover-border; border: 1px solid $dropdown-toggle-active-border-color;
color: $gl-text-color;
} }
...@@ -564,7 +558,6 @@ ...@@ -564,7 +558,6 @@
// Triggers the dropdown in the big pipeline graph // Triggers the dropdown in the big pipeline graph
.dropdown-counter-badge { .dropdown-counter-badge {
color: $border-color;
font-weight: 100; font-weight: 100;
font-size: 15px; font-size: 15px;
position: absolute; position: absolute;
...@@ -606,8 +599,8 @@ button.mini-pipeline-graph-dropdown-toggle { ...@@ -606,8 +599,8 @@ button.mini-pipeline-graph-dropdown-toggle {
background-color: $white-light; background-color: $white-light;
border-width: 1px; border-width: 1px;
border-style: solid; border-style: solid;
width: 22px; width: $ci-action-icon-size;
height: 22px; height: $ci-action-icon-size;
margin: 0; margin: 0;
padding: 0; padding: 0;
transition: all 0.2s linear; transition: all 0.2s linear;
...@@ -669,105 +662,119 @@ button.mini-pipeline-graph-dropdown-toggle { ...@@ -669,105 +662,119 @@ button.mini-pipeline-graph-dropdown-toggle {
} }
} }
@include new-style-dropdown('.big-pipeline-graph-dropdown-menu');
@include new-style-dropdown('.mini-pipeline-graph-dropdown-menu');
// dropdown content for big and mini pipeline // dropdown content for big and mini pipeline
.big-pipeline-graph-dropdown-menu, .big-pipeline-graph-dropdown-menu,
.mini-pipeline-graph-dropdown-menu { .mini-pipeline-graph-dropdown-menu {
width: 195px; width: 195px;
max-width: 195px; max-width: 195px;
li {
padding: 2px 3px;
}
.scrollable-menu { .scrollable-menu {
padding: 0; padding: 0;
max-height: 245px; max-height: 245px;
overflow: auto; overflow: auto;
} }
// Action icon on the right li {
a.ci-action-icon-wrapper { position: relative;
color: $action-icon-color;
border: 1px solid $action-icon-color;
border-radius: 20px;
width: 22px;
height: 22px;
padding: 2px 0 0 5px;
cursor: pointer;
float: right;
margin: -26px 9px 0 0;
font-size: 12px;
background-color: $white-light;
&:hover, // ensure .mini-pipeline-graph-dropdown-item has hover style when action-icon is hovered
&:focus { &:hover > .mini-pipeline-graph-dropdown-item,
background-color: $stage-hover-bg; &:hover > .ci-job-component > .mini-pipeline-graph-dropdown-item {
border: 1px solid transparent; @extend .mini-pipeline-graph-dropdown-item:hover;
} }
svg { // Action icon on the right
width: 22px; a.ci-action-icon-wrapper {
height: 22px; border-radius: 50%;
left: -6px; border: 1px solid $border-color;
position: relative; width: $ci-action-icon-size;
top: -3px; height: $ci-action-icon-size;
fill: $action-icon-color; padding: 2px 0 0 5px;
} font-size: 12px;
background-color: $white-light;
position: absolute;
top: 50%;
right: $gl-padding;
margin-top: -#{$ci-action-icon-size / 2};
&:hover svg, &:hover,
&:focus svg { &:focus {
fill: $gl-text-color; background-color: $stage-hover-bg;
} border: 1px solid $dropdown-toggle-active-border-color;
} }
// link to the build svg {
.mini-pipeline-graph-dropdown-item { fill: $gl-text-color-secondary;
padding: 3px 7px 4px; width: $ci-action-icon-size;
clear: both; height: $ci-action-icon-size;
font-weight: $gl-font-weight-normal; left: -6px;
line-height: 1.428571429; position: relative;
white-space: nowrap; top: -3px;
margin: 0 5px; }
border-radius: 3px;
// build name &:hover svg,
.ci-build-text, &:focus svg {
.ci-status-text { fill: $gl-text-color;
font-weight: 200; }
overflow: hidden; }
// link to the build
.mini-pipeline-graph-dropdown-item {
padding: 3px 7px 4px;
align-items: center;
clear: both;
display: flex;
font-weight: normal;
line-height: $line-height-base;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; border-radius: 3px;
max-width: 70%;
color: $gl-text-color-secondary;
margin-left: 2px;
display: inline-block;
top: 1px;
vertical-align: text-bottom;
position: relative;
@media (max-width: $screen-xs-max) { .ci-job-name-component {
max-width: 60%; align-items: center;
display: flex;
flex: 1;
} }
}
// status icon on the left // build name
.ci-status-icon { .ci-build-text,
top: 3px; .ci-status-text {
position: relative; font-weight: 200;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
max-width: 70%;
margin-left: 2px;
display: inline-block;
> svg { @media (max-width: $screen-xs-max) {
overflow: visible; max-width: 60%;
width: 18px; }
height: 18px;
} }
}
&:hover, .ci-status-icon {
&:focus { @extend .append-right-8;
outline: none;
text-decoration: none; position: relative;
color: $gl-text-color;
background-color: $stage-hover-bg; > svg {
width: $pipeline-dropdown-status-icon-size;
height: $pipeline-dropdown-status-icon-size;
margin: 3px 0;
position: relative;
overflow: visible;
display: block;
}
}
&:hover,
&:focus {
outline: none;
text-decoration: none;
background-color: $stage-hover-bg;
}
} }
} }
} }
...@@ -776,16 +783,9 @@ button.mini-pipeline-graph-dropdown-toggle { ...@@ -776,16 +783,9 @@ button.mini-pipeline-graph-dropdown-toggle {
.big-pipeline-graph-dropdown-menu { .big-pipeline-graph-dropdown-menu {
width: 195px; width: 195px;
min-width: 195px; min-width: 195px;
left: auto; left: 100%;
right: -195px; top: -10px;
top: -4px;
box-shadow: 0 1px 5px $black-transparent; box-shadow: 0 1px 5px $black-transparent;
.mini-pipeline-graph-dropdown-item {
.ci-status-icon {
top: -1px;
}
}
} }
/** /**
...@@ -806,15 +806,14 @@ button.mini-pipeline-graph-dropdown-toggle { ...@@ -806,15 +806,14 @@ button.mini-pipeline-graph-dropdown-toggle {
} }
&::before { &::before {
left: -5px; left: -6px;
margin-top: -6px; margin-top: 3px;
border-width: 7px 5px 7px 0; border-width: 7px 5px 7px 0;
border-right-color: $border-color; border-right-color: $border-color;
} }
&::after { &::after {
left: -4px; left: -5px;
margin-top: -9px;
border-width: 10px 7px 10px 0; border-width: 10px 7px 10px 0;
border-right-color: $white-light; border-right-color: $white-light;
} }
......
...@@ -6,14 +6,14 @@ ...@@ -6,14 +6,14 @@
- tooltip = "#{subject.name} - #{status.label}" - tooltip = "#{subject.name} - #{status.label}"
- if status.has_details? - if status.has_details?
= link_to status.details_path, class: 'mini-pipeline-graph-dropdown-item', data: { toggle: 'tooltip', title: tooltip } do = link_to status.details_path, class: 'mini-pipeline-graph-dropdown-item', data: { toggle: 'tooltip', title: tooltip, container: 'body' } do
%span{ class: klass }= custom_icon(status.icon) %span{ class: klass }= custom_icon(status.icon)
%span.ci-build-text= subject.name %span.ci-build-text= subject.name
- else - else
.mini-pipeline-graph-dropdown-item{ data: { toggle: 'tooltip', title: tooltip } } .menu-item.mini-pipeline-graph-dropdown-item{ data: { toggle: 'tooltip', title: tooltip, container: 'body' } }
%span{ class: klass }= custom_icon(status.icon) %span{ class: klass }= custom_icon(status.icon)
%span.ci-build-text= subject.name %span.ci-build-text= subject.name
- if status.has_action? - if status.has_action?
= link_to status.action_path, class: 'ci-action-icon-wrapper js-ci-action-icon', method: status.action_method, data: { toggle: 'tooltip', title: status.action_title } do = link_to status.action_path, class: 'ci-action-icon-wrapper js-ci-action-icon', method: status.action_method, data: { toggle: 'tooltip', title: status.action_title, container: 'body' } do
= custom_icon(status.action_icon) = custom_icon(status.action_icon)
...@@ -70,7 +70,7 @@ feature 'Mini Pipeline Graph', :js do ...@@ -70,7 +70,7 @@ feature 'Mini Pipeline Graph', :js do
it 'should show tooltip when hovered' do it 'should show tooltip when hovered' do
toggle.hover toggle.hover
expect(toggle.find(:xpath, '..')).to have_selector('.tooltip') expect(page).to have_selector('.tooltip')
end end
end end
...@@ -117,7 +117,7 @@ feature 'Mini Pipeline Graph', :js do ...@@ -117,7 +117,7 @@ feature 'Mini Pipeline Graph', :js do
it 'should show tooltip when hovered' do it 'should show tooltip when hovered' do
build_item.hover build_item.hover
expect(build_item.find(:xpath, '..')).to have_selector('.tooltip') expect(page).to have_selector('.tooltip')
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment