diff options
author | Phil Hughes <me@iamphill.com> | 2018-07-02 12:57:51 +0000 |
---|---|---|
committer | Phil Hughes <me@iamphill.com> | 2018-07-02 12:57:51 +0000 |
commit | a4618662f4424eb90bfcb768fa145099d33de348 (patch) | |
tree | 1c1ad93bbe251aed7ad8e475bb4e6fb743565096 | |
parent | e7a5a3151492c0bc6b1a262e5caffd66bd25674c (diff) | |
parent | aac6b2b770119d54a005484be9958b6caf1bfe33 (diff) | |
download | gitlab-ce-a4618662f4424eb90bfcb768fa145099d33de348.tar.gz |
Merge branch 'ce-backport-5605-epic-autocomplete' into 'master'
CE Backport: Add support for autocompleting Epics within Issues & MRs and Labels within Epics
See merge request gitlab-org/gitlab-ce!20238
-rw-r--r-- | app/assets/javascripts/gfm_auto_complete.js | 3 | ||||
-rw-r--r-- | app/assets/javascripts/gl_form.js | 7 | ||||
-rw-r--r-- | app/assets/javascripts/pages/snippets/form.js | 1 | ||||
-rw-r--r-- | app/assets/javascripts/shared/milestones/form.js | 3 | ||||
-rw-r--r-- | app/assets/javascripts/vue_shared/components/markdown/field.vue | 1 | ||||
-rw-r--r-- | app/helpers/notes_helper.rb | 1 | ||||
-rw-r--r-- | spec/features/projects/milestones/new_spec.rb | 4 | ||||
-rw-r--r-- | spec/features/projects/wiki/user_creates_wiki_page_spec.rb | 4 | ||||
-rw-r--r-- | spec/features/projects/wiki/user_updates_wiki_page_spec.rb | 4 | ||||
-rw-r--r-- | spec/features/tags/master_creates_tag_spec.rb | 4 | ||||
-rw-r--r-- | spec/features/tags/master_updates_tag_spec.rb | 4 |
11 files changed, 24 insertions, 12 deletions
diff --git a/app/assets/javascripts/gfm_auto_complete.js b/app/assets/javascripts/gfm_auto_complete.js index 09186a865e4..73b2cd0b2c7 100644 --- a/app/assets/javascripts/gfm_auto_complete.js +++ b/app/assets/javascripts/gfm_auto_complete.js @@ -12,7 +12,7 @@ export const defaultAutocompleteConfig = { members: true, issues: true, mergeRequests: true, - epics: false, + epics: true, milestones: true, labels: true, }; @@ -493,6 +493,7 @@ GfmAutoComplete.atTypeMap = { '@': 'members', '#': 'issues', '!': 'mergeRequests', + '&': 'epics', '~': 'labels', '%': 'milestones', '/': 'commands', diff --git a/app/assets/javascripts/gl_form.js b/app/assets/javascripts/gl_form.js index f802971a3ca..c74de7ac34d 100644 --- a/app/assets/javascripts/gl_form.js +++ b/app/assets/javascripts/gl_form.js @@ -9,6 +9,13 @@ export default class GLForm { this.form = form; this.textarea = this.form.find('textarea.js-gfm-input'); this.enableGFM = Object.assign({}, GFMConfig.defaultAutocompleteConfig, enableGFM); + // Disable autocomplete for keywords which do not have dataSources available + const dataSources = (gl.GfmAutoComplete && gl.GfmAutoComplete.dataSources) || {}; + Object.keys(this.enableGFM).forEach(item => { + if (item !== 'emojis') { + this.enableGFM[item] = !!dataSources[item]; + } + }); // Before we start, we should clean up any previous data for this form this.destroy(); // Setup the form diff --git a/app/assets/javascripts/pages/snippets/form.js b/app/assets/javascripts/pages/snippets/form.js index 758bbafead3..f369c7ef9a6 100644 --- a/app/assets/javascripts/pages/snippets/form.js +++ b/app/assets/javascripts/pages/snippets/form.js @@ -8,6 +8,7 @@ export default () => { members: false, issues: false, mergeRequests: false, + epics: false, milestones: false, labels: false, }); diff --git a/app/assets/javascripts/shared/milestones/form.js b/app/assets/javascripts/shared/milestones/form.js index 060f374310c..8681a1776c6 100644 --- a/app/assets/javascripts/shared/milestones/form.js +++ b/app/assets/javascripts/shared/milestones/form.js @@ -8,10 +8,11 @@ export default (initGFM = true) => { new DueDateSelectors(); // eslint-disable-line no-new // eslint-disable-next-line no-new new GLForm($('.milestone-form'), { - emojis: initGFM, + emojis: true, members: initGFM, issues: initGFM, mergeRequests: initGFM, + epics: initGFM, milestones: initGFM, labels: initGFM, }); diff --git a/app/assets/javascripts/vue_shared/components/markdown/field.vue b/app/assets/javascripts/vue_shared/components/markdown/field.vue index fba67681777..298971a36b2 100644 --- a/app/assets/javascripts/vue_shared/components/markdown/field.vue +++ b/app/assets/javascripts/vue_shared/components/markdown/field.vue @@ -67,6 +67,7 @@ members: this.enableAutocomplete, issues: this.enableAutocomplete, mergeRequests: this.enableAutocomplete, + epics: this.enableAutocomplete, milestones: this.enableAutocomplete, labels: this.enableAutocomplete, }); diff --git a/app/helpers/notes_helper.rb b/app/helpers/notes_helper.rb index e1a0cf1604c..3fa2e5452c8 100644 --- a/app/helpers/notes_helper.rb +++ b/app/helpers/notes_helper.rb @@ -148,6 +148,7 @@ module NotesHelper members: autocomplete, issues: autocomplete, mergeRequests: autocomplete, + epics: autocomplete, milestones: autocomplete, labels: autocomplete } diff --git a/spec/features/projects/milestones/new_spec.rb b/spec/features/projects/milestones/new_spec.rb index f7900210fe6..6595bff549b 100644 --- a/spec/features/projects/milestones/new_spec.rb +++ b/spec/features/projects/milestones/new_spec.rb @@ -9,9 +9,9 @@ feature 'Creating a new project milestone', :js do visit new_project_milestone_path(project) end - it 'description has autocomplete' do + it 'description has emoji autocomplete' do find('#milestone_description').native.send_keys('') - fill_in 'milestone_description', with: '@' + fill_in 'milestone_description', with: ':' expect(page).to have_selector('.atwho-view') end diff --git a/spec/features/projects/wiki/user_creates_wiki_page_spec.rb b/spec/features/projects/wiki/user_creates_wiki_page_spec.rb index 706894f4b32..733e6c89de7 100644 --- a/spec/features/projects/wiki/user_creates_wiki_page_spec.rb +++ b/spec/features/projects/wiki/user_creates_wiki_page_spec.rb @@ -242,7 +242,7 @@ describe "User creates wiki page" do end end - it "shows the autocompletion dropdown" do + it "shows the emoji autocompletion dropdown" do click_link("New page") page.within("#modal-new-wiki") do @@ -254,7 +254,7 @@ describe "User creates wiki page" do page.within(".wiki-form") do find("#wiki_content").native.send_keys("") - fill_in(:wiki_content, with: "@") + fill_in(:wiki_content, with: ":") end expect(page).to have_selector(".atwho-view") diff --git a/spec/features/projects/wiki/user_updates_wiki_page_spec.rb b/spec/features/projects/wiki/user_updates_wiki_page_spec.rb index 272dac127dd..2ccbc15b6da 100644 --- a/spec/features/projects/wiki/user_updates_wiki_page_spec.rb +++ b/spec/features/projects/wiki/user_updates_wiki_page_spec.rb @@ -96,11 +96,11 @@ describe 'User updates wiki page' do expect(find('textarea#wiki_content').value).to eq('') end - it 'shows the autocompletion dropdown', :js do + it 'shows the emoji autocompletion dropdown', :js do click_link('Edit') find('#wiki_content').native.send_keys('') - fill_in(:wiki_content, with: '@') + fill_in(:wiki_content, with: ':') expect(page).to have_selector('.atwho-view') end diff --git a/spec/features/tags/master_creates_tag_spec.rb b/spec/features/tags/master_creates_tag_spec.rb index 8a8f6933fa5..6701f575a23 100644 --- a/spec/features/tags/master_creates_tag_spec.rb +++ b/spec/features/tags/master_creates_tag_spec.rb @@ -75,9 +75,9 @@ feature 'Master creates tag' do visit new_project_tag_path(project) end - it 'description has autocomplete', :js do + it 'description has emoji autocomplete', :js do find('#release_description').native.send_keys('') - fill_in 'release_description', with: '@' + fill_in 'release_description', with: ':' expect(page).to have_selector('.atwho-view') end diff --git a/spec/features/tags/master_updates_tag_spec.rb b/spec/features/tags/master_updates_tag_spec.rb index 1c370a99b13..26f51bee887 100644 --- a/spec/features/tags/master_updates_tag_spec.rb +++ b/spec/features/tags/master_updates_tag_spec.rb @@ -25,13 +25,13 @@ feature 'Master updates tag' do expect(page).to have_content 'Awesome release notes' end - scenario 'description has autocomplete', :js do + scenario 'description has emoji autocomplete', :js do page.within(first('.content-list .controls')) do click_link 'Edit release notes' end find('#release_description').native.send_keys('') - fill_in 'release_description', with: '@' + fill_in 'release_description', with: ':' expect(page).to have_selector('.atwho-view') end |