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
This commit is contained in:
commit
4f08343463
5 changed files with 60 additions and 22 deletions
|
@ -108,6 +108,9 @@ export default {
|
|||
false,
|
||||
);
|
||||
},
|
||||
gfmCopyText() {
|
||||
return `\`${this.diffFile.filePath}\``;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
...mapActions('diffs', ['toggleFileDiscussions']),
|
||||
|
@ -191,6 +194,7 @@ export default {
|
|||
<clipboard-button
|
||||
:title="__('Copy file path to clipboard')"
|
||||
:text="diffFile.filePath"
|
||||
:gfm="gfmCopyText"
|
||||
css-class="btn-default btn-transparent btn-clipboard"
|
||||
/>
|
||||
|
||||
|
|
|
@ -31,6 +31,11 @@ export default {
|
|||
type: String,
|
||||
required: true,
|
||||
},
|
||||
gfm: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: null,
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
required: true,
|
||||
|
@ -51,6 +56,14 @@ export default {
|
|||
default: 'btn-default',
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
clipboardText() {
|
||||
if (this.gfm !== null) {
|
||||
return JSON.stringify({ text: this.text, gfm: this.gfm });
|
||||
}
|
||||
return this.text;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -59,7 +72,7 @@ export default {
|
|||
v-tooltip
|
||||
:class="cssClass"
|
||||
:title="title"
|
||||
:data-clipboard-text="text"
|
||||
:data-clipboard-text="clipboardText"
|
||||
:data-container="tooltipContainer"
|
||||
:data-placement="tooltipPlacement"
|
||||
type="button"
|
||||
|
|
5
changelogs/unreleased/48823-copy-gfm.yml
Normal file
5
changelogs/unreleased/48823-copy-gfm.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Resolve Copy diff file path as GFM is broken
|
||||
merge_request: 20725
|
||||
author:
|
||||
type: fixed
|
|
@ -303,7 +303,7 @@ describe('diff_file_header', () => {
|
|||
|
||||
const button = vm.$el.querySelector('.btn-clipboard');
|
||||
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', () => {
|
||||
|
|
|
@ -6,31 +6,47 @@ describe('clipboard button', () => {
|
|||
const Component = Vue.extend(clipboardButton);
|
||||
let vm;
|
||||
|
||||
beforeEach(() => {
|
||||
vm = mountComponent(Component, {
|
||||
text: 'copy me',
|
||||
title: 'Copy this value into Clipboard!',
|
||||
cssClass: 'btn-danger',
|
||||
});
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
vm.$destroy();
|
||||
});
|
||||
|
||||
it('renders a button for clipboard', () => {
|
||||
expect(vm.$el.tagName).toEqual('BUTTON');
|
||||
expect(vm.$el.getAttribute('data-clipboard-text')).toEqual('copy me');
|
||||
expect(vm.$el).toHaveSpriteIcon('duplicate');
|
||||
describe('without gfm', () => {
|
||||
beforeEach(() => {
|
||||
vm = mountComponent(Component, {
|
||||
text: 'copy me',
|
||||
title: 'Copy this value into Clipboard!',
|
||||
cssClass: 'btn-danger',
|
||||
});
|
||||
});
|
||||
|
||||
it('renders a button for clipboard', () => {
|
||||
expect(vm.$el.tagName).toEqual('BUTTON');
|
||||
expect(vm.$el.getAttribute('data-clipboard-text')).toEqual('copy me');
|
||||
expect(vm.$el).toHaveSpriteIcon('duplicate');
|
||||
});
|
||||
|
||||
it('should have a tooltip with default values', () => {
|
||||
expect(vm.$el.getAttribute('data-original-title')).toEqual('Copy this value into Clipboard!');
|
||||
expect(vm.$el.getAttribute('data-placement')).toEqual('top');
|
||||
expect(vm.$el.getAttribute('data-container')).toEqual(null);
|
||||
});
|
||||
|
||||
it('should render provided classname', () => {
|
||||
expect(vm.$el.classList).toContain('btn-danger');
|
||||
});
|
||||
});
|
||||
|
||||
it('should have a tooltip with default values', () => {
|
||||
expect(vm.$el.getAttribute('data-original-title')).toEqual('Copy this value into Clipboard!');
|
||||
expect(vm.$el.getAttribute('data-placement')).toEqual('top');
|
||||
expect(vm.$el.getAttribute('data-container')).toEqual(null);
|
||||
});
|
||||
|
||||
it('should render provided classname', () => {
|
||||
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`"}',
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue