Commit 04a6ed69 authored by Clement Ho's avatar Clement Ho

Merge branch '54514-tooltips' into 'master'

Fixes tooltip overflowing in mini pipeline

Closes #54514

See merge request gitlab-org/gitlab-ce!23486
parents 1ddde35e 699e1180
...@@ -84,10 +84,6 @@ export default { ...@@ -84,10 +84,6 @@ export default {
return textBuilder.join(' '); return textBuilder.join(' ');
}, },
tooltipBoundary() {
return this.dropdownLength < 5 ? 'viewport' : null;
},
/** /**
* Verifies if the provided job has an action path * Verifies if the provided job has an action path
* *
...@@ -108,7 +104,7 @@ export default { ...@@ -108,7 +104,7 @@ export default {
<div class="ci-job-component"> <div class="ci-job-component">
<gl-link <gl-link
v-if="status.has_details" v-if="status.has_details"
v-gl-tooltip="{ boundary: tooltipBoundary }" v-gl-tooltip
:href="status.details_path" :href="status.details_path"
:title="tooltipText" :title="tooltipText"
:class="cssClassJobName" :class="cssClassJobName"
......
...@@ -139,57 +139,17 @@ describe('pipeline graph job item', () => { ...@@ -139,57 +139,17 @@ describe('pipeline graph job item', () => {
}); });
}); });
describe('tooltip placement', () => {
it('does not set tooltip boundary by default', () => {
component = mountComponent(JobComponent, {
job: mockJob,
});
expect(component.tooltipBoundary).toBeNull();
});
it('sets tooltip boundary to viewport for small dropdowns', () => {
component = mountComponent(JobComponent, {
job: mockJob,
dropdownLength: 1,
});
expect(component.tooltipBoundary).toEqual('viewport');
});
it('does not set tooltip boundary for large lists', () => {
component = mountComponent(JobComponent, {
job: mockJob,
dropdownLength: 7,
});
expect(component.tooltipBoundary).toBeNull();
});
});
describe('for delayed job', () => { describe('for delayed job', () => {
beforeEach(() => { it('displays remaining time in tooltip', () => {
const fifteenMinutesInMilliseconds = 900000;
spyOn(Date, 'now').and.callFake(
() => new Date(delayedJobFixture.scheduled_at).getTime() - fifteenMinutesInMilliseconds,
);
});
it('displays remaining time in tooltip', done => {
component = mountComponent(JobComponent, { component = mountComponent(JobComponent, {
job: delayedJobFixture, job: delayedJobFixture,
}); });
Vue.nextTick() expect(
.then(() => { component.$el
expect( .querySelector('.js-pipeline-graph-job-link')
component.$el .getAttribute('data-original-title'),
.querySelector('.js-pipeline-graph-job-link') ).toEqual(`delayed job - delayed manual action (${component.remainingTime})`);
.getAttribute('data-original-title'),
).toEqual('delayed job - delayed manual action (00:15:00)');
})
.then(done)
.catch(done.fail);
}); });
}); });
}); });
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