Commit 4f083434 authored by Phil Hughes's avatar Phil Hughes

Merge branch '48823-copy-gfm' into 'master'

Resolve "Copy diff file path as GFM" is broken

Closes #48823

See merge request gitlab-org/gitlab-ce!20725
parents 036c6db8 202e37bb
...@@ -108,6 +108,9 @@ export default { ...@@ -108,6 +108,9 @@ export default {
false, false,
); );
}, },
gfmCopyText() {
return `\`${this.diffFile.filePath}\``;
},
}, },
methods: { methods: {
...mapActions('diffs', ['toggleFileDiscussions']), ...mapActions('diffs', ['toggleFileDiscussions']),
...@@ -191,6 +194,7 @@ export default { ...@@ -191,6 +194,7 @@ export default {
<clipboard-button <clipboard-button
:title="__('Copy file path to clipboard')" :title="__('Copy file path to clipboard')"
:text="diffFile.filePath" :text="diffFile.filePath"
:gfm="gfmCopyText"
css-class="btn-default btn-transparent btn-clipboard" css-class="btn-default btn-transparent btn-clipboard"
/> />
......
...@@ -31,6 +31,11 @@ export default { ...@@ -31,6 +31,11 @@ export default {
type: String, type: String,
required: true, required: true,
}, },
gfm: {
type: String,
required: false,
default: null,
},
title: { title: {
type: String, type: String,
required: true, required: true,
...@@ -51,6 +56,14 @@ export default { ...@@ -51,6 +56,14 @@ export default {
default: 'btn-default', default: 'btn-default',
}, },
}, },
computed: {
clipboardText() {
if (this.gfm !== null) {
return JSON.stringify({ text: this.text, gfm: this.gfm });
}
return this.text;
},
},
}; };
</script> </script>
...@@ -59,7 +72,7 @@ export default { ...@@ -59,7 +72,7 @@ export default {
v-tooltip v-tooltip
:class="cssClass" :class="cssClass"
:title="title" :title="title"
:data-clipboard-text="text" :data-clipboard-text="clipboardText"
:data-container="tooltipContainer" :data-container="tooltipContainer"
:data-placement="tooltipPlacement" :data-placement="tooltipPlacement"
type="button" type="button"
......
---
title: Resolve Copy diff file path as GFM is broken
merge_request: 20725
author:
type: fixed
...@@ -303,7 +303,7 @@ describe('diff_file_header', () => { ...@@ -303,7 +303,7 @@ describe('diff_file_header', () => {
const button = vm.$el.querySelector('.btn-clipboard'); const button = vm.$el.querySelector('.btn-clipboard');
expect(button).not.toBe(null); expect(button).not.toBe(null);
expect(button.dataset.clipboardText).toBe(props.diffFile.filePath); expect(button.dataset.clipboardText).toBe('{"text":"files/ruby/popen.rb","gfm":"`files/ruby/popen.rb`"}');
}); });
describe('file mode', () => { describe('file mode', () => {
......
...@@ -6,6 +6,11 @@ describe('clipboard button', () => { ...@@ -6,6 +6,11 @@ describe('clipboard button', () => {
const Component = Vue.extend(clipboardButton); const Component = Vue.extend(clipboardButton);
let vm; let vm;
afterEach(() => {
vm.$destroy();
});
describe('without gfm', () => {
beforeEach(() => { beforeEach(() => {
vm = mountComponent(Component, { vm = mountComponent(Component, {
text: 'copy me', text: 'copy me',
...@@ -14,10 +19,6 @@ describe('clipboard button', () => { ...@@ -14,10 +19,6 @@ describe('clipboard button', () => {
}); });
}); });
afterEach(() => {
vm.$destroy();
});
it('renders a button for clipboard', () => { it('renders a button for clipboard', () => {
expect(vm.$el.tagName).toEqual('BUTTON'); expect(vm.$el.tagName).toEqual('BUTTON');
expect(vm.$el.getAttribute('data-clipboard-text')).toEqual('copy me'); expect(vm.$el.getAttribute('data-clipboard-text')).toEqual('copy me');
...@@ -33,4 +34,19 @@ describe('clipboard button', () => { ...@@ -33,4 +34,19 @@ describe('clipboard button', () => {
it('should render provided classname', () => { it('should render provided classname', () => {
expect(vm.$el.classList).toContain('btn-danger'); expect(vm.$el.classList).toContain('btn-danger');
}); });
});
describe('with gfm', () => {
it('sets data-clipboard-text with gfm', () => {
vm = mountComponent(Component, {
text: 'copy me',
gfm: '`path/to/file`',
title: 'Copy this value into Clipboard!',
cssClass: 'btn-danger',
});
expect(vm.$el.getAttribute('data-clipboard-text')).toEqual(
'{"text":"copy me","gfm":"`path/to/file`"}',
);
});
});
}); });
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