From 0f0067288da550c5bd29a3d384eaacc4cbb575ac Mon Sep 17 00:00:00 2001 From: George Tsiolis <tsiolis.g@gmail.com> Date: Fri, 28 Sep 2018 16:01:01 +0300 Subject: [PATCH 1/7] Add link component to markdown header component --- .../vue_shared/components/markdown/header.vue | 9 +++++---- changelogs/unreleased/add-gl-link-to-markdown-header.yml | 5 +++++ 2 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 changelogs/unreleased/add-gl-link-to-markdown-header.yml diff --git a/app/assets/javascripts/vue_shared/components/markdown/header.vue b/app/assets/javascripts/vue_shared/components/markdown/header.vue index 704adf7864ffaf10..9690a48c83c18a1b 100644 --- a/app/assets/javascripts/vue_shared/components/markdown/header.vue +++ b/app/assets/javascripts/vue_shared/components/markdown/header.vue @@ -1,4 +1,5 @@ <script> +<<<<<<< HEAD import $ from 'jquery'; import tooltip from '../../directives/tooltip'; import toolbarButton from './toolbar_button.vue'; @@ -68,27 +69,27 @@ export default { :class="{ active: !previewMarkdown }" class="md-header-tab" > - <a + <gl-link class="js-write-link" href="#md-write-holder" tabindex="-1" @click.prevent="writeMarkdownTab($event)" > Write - </a> + </gl-link> </li> <li :class="{ active: previewMarkdown }" class="md-header-tab" > - <a + <gl-link class="js-preview-link js-md-preview-button" href="#md-preview-holder" tabindex="-1" @click.prevent="previewMarkdownTab($event)" > Preview - </a> + </gl-link> </li> <li :class="{ active: !previewMarkdown }" diff --git a/changelogs/unreleased/add-gl-link-to-markdown-header.yml b/changelogs/unreleased/add-gl-link-to-markdown-header.yml new file mode 100644 index 0000000000000000..13982f3700f73c97 --- /dev/null +++ b/changelogs/unreleased/add-gl-link-to-markdown-header.yml @@ -0,0 +1,5 @@ +--- +title: Add link component to markdown header component +merge_request: 21988 +author: George Tsiolis +type: other -- GitLab From 6e65cd48f3092f0a0a50218b84690629bbb421e1 Mon Sep 17 00:00:00 2001 From: George Tsiolis <tsiolis.g@gmail.com> Date: Tue, 2 Oct 2018 01:19:59 +0300 Subject: [PATCH 2/7] Change markdown header tab anchor links to buttons --- .../vue_shared/components/markdown/header.vue | 21 +++++++-------- .../stylesheets/framework/markdown_area.scss | 27 +++++++++++++++++++ app/views/projects/_md_preview.html.haml | 4 +-- .../add-gl-link-to-markdown-header.yml | 2 +- .../components/markdown/header_spec.js | 2 +- 5 files changed, 41 insertions(+), 15 deletions(-) diff --git a/app/assets/javascripts/vue_shared/components/markdown/header.vue b/app/assets/javascripts/vue_shared/components/markdown/header.vue index 9690a48c83c18a1b..a4a2948805733891 100644 --- a/app/assets/javascripts/vue_shared/components/markdown/header.vue +++ b/app/assets/javascripts/vue_shared/components/markdown/header.vue @@ -1,17 +1,16 @@ <script> -<<<<<<< HEAD import $ from 'jquery'; -import tooltip from '../../directives/tooltip'; -import toolbarButton from './toolbar_button.vue'; -import icon from '../icon.vue'; +import Tooltip from '../../directives/tooltip'; +import ToolbarButton from './toolbar_button.vue'; +import Icon from '../icon.vue'; export default { directives: { - tooltip, + Tooltip, }, components: { - toolbarButton, - icon, + ToolbarButton, + Icon, }, props: { previewMarkdown: { @@ -69,27 +68,27 @@ export default { :class="{ active: !previewMarkdown }" class="md-header-tab" > - <gl-link + <button class="js-write-link" href="#md-write-holder" tabindex="-1" @click.prevent="writeMarkdownTab($event)" > Write - </gl-link> + </button> </li> <li :class="{ active: previewMarkdown }" class="md-header-tab" > - <gl-link + <button class="js-preview-link js-md-preview-button" href="#md-preview-holder" tabindex="-1" @click.prevent="previewMarkdownTab($event)" > Preview - </gl-link> + </button> </li> <li :class="{ active: !previewMarkdown }" diff --git a/app/assets/stylesheets/framework/markdown_area.scss b/app/assets/stylesheets/framework/markdown_area.scss index 44211ff0e6cce32e..b05bc77683aa0ff1 100644 --- a/app/assets/stylesheets/framework/markdown_area.scss +++ b/app/assets/stylesheets/framework/markdown_area.scss @@ -70,6 +70,33 @@ padding-top: 10px; } } + + li.md-header-tab { + button { + width: 100%; + font-size: 14px; + line-height: 19px; + color: $gl-text-color-secondary; + padding: $gl-btn-padding; + padding-top: 0; + border: 0; + border-bottom: 2px solid transparent; + + &:hover { + color: $black; + border-color: $gray-darkest; + } + } + + &.active{ + button { + font-weight: 600; + color: $black; + border-bottom: 2px solid $theme-gray-800; + } + } + + } } } diff --git a/app/views/projects/_md_preview.html.haml b/app/views/projects/_md_preview.html.haml index f398d97028b1b8ef..59bc3007a3c04136 100644 --- a/app/views/projects/_md_preview.html.haml +++ b/app/views/projects/_md_preview.html.haml @@ -11,10 +11,10 @@ .md-header %ul.nav.nav-tabs.nav-links.clearfix %li.md-header-tab.active - %a.js-md-write-button{ href: "#md-write-holder", tabindex: -1 } + %button.js-md-write-button{ href: "#md-write-holder", tabindex: -1 } Write %li.md-header-tab - %a.js-md-preview-button{ href: "#md-preview-holder", tabindex: -1 } + %button.js-md-preview-button{ href: "#md-preview-holder", tabindex: -1 } Preview %li.md-header-toolbar.active diff --git a/changelogs/unreleased/add-gl-link-to-markdown-header.yml b/changelogs/unreleased/add-gl-link-to-markdown-header.yml index 13982f3700f73c97..b8fe66ab52a6eeaf 100644 --- a/changelogs/unreleased/add-gl-link-to-markdown-header.yml +++ b/changelogs/unreleased/add-gl-link-to-markdown-header.yml @@ -1,5 +1,5 @@ --- -title: Add link component to markdown header component +title: Change markdown header tab anchor links to buttons merge_request: 21988 author: George Tsiolis type: other diff --git a/spec/javascripts/vue_shared/components/markdown/header_spec.js b/spec/javascripts/vue_shared/components/markdown/header_spec.js index 6c4bc3602c124e58..59613faa49ffa9ea 100644 --- a/spec/javascripts/vue_shared/components/markdown/header_spec.js +++ b/spec/javascripts/vue_shared/components/markdown/header_spec.js @@ -76,7 +76,7 @@ describe('Markdown field header component', () => { }); it('blurs preview link after click', done => { - const link = vm.$el.querySelector('li:nth-child(2) a'); + const link = vm.$el.querySelector('li:nth-child(2) button'); spyOn(HTMLElement.prototype, 'blur'); link.click(); -- GitLab From 6250595e3413c20fad95bbc6afad6d4edc44ebca Mon Sep 17 00:00:00 2001 From: George Tsiolis <tsiolis.g@gmail.com> Date: Tue, 2 Oct 2018 13:22:07 +0300 Subject: [PATCH 3/7] Update specs for markdown header tab buttons --- .../vue_shared/components/markdown/header.vue | 8 +++--- .../stylesheets/framework/markdown_area.scss | 27 ------------------- .../secondary_navigation_elements.scss | 14 ++++++++-- app/views/projects/_md_preview.html.haml | 4 +-- spec/features/groups/milestone_spec.rb | 6 ++--- .../issues/user_creates_issue_spec.rb | 6 ++--- spec/features/issues/user_edits_issue_spec.rb | 4 +-- .../user_views_open_merge_request_spec.rb | 6 ++--- .../commit/comments/user_adds_comment_spec.rb | 10 +++---- .../commit/user_comments_on_commit_spec.rb | 6 ++--- 10 files changed, 37 insertions(+), 54 deletions(-) diff --git a/app/assets/javascripts/vue_shared/components/markdown/header.vue b/app/assets/javascripts/vue_shared/components/markdown/header.vue index a4a2948805733891..3ddb39730c4a8a25 100644 --- a/app/assets/javascripts/vue_shared/components/markdown/header.vue +++ b/app/assets/javascripts/vue_shared/components/markdown/header.vue @@ -70,9 +70,9 @@ export default { > <button class="js-write-link" - href="#md-write-holder" tabindex="-1" - @click.prevent="writeMarkdownTab($event)" + type="button" + @click="writeMarkdownTab($event)" > Write </button> @@ -83,9 +83,9 @@ export default { > <button class="js-preview-link js-md-preview-button" - href="#md-preview-holder" tabindex="-1" - @click.prevent="previewMarkdownTab($event)" + type="button" + @click="previewMarkdownTab($event)" > Preview </button> diff --git a/app/assets/stylesheets/framework/markdown_area.scss b/app/assets/stylesheets/framework/markdown_area.scss index b05bc77683aa0ff1..44211ff0e6cce32e 100644 --- a/app/assets/stylesheets/framework/markdown_area.scss +++ b/app/assets/stylesheets/framework/markdown_area.scss @@ -70,33 +70,6 @@ padding-top: 10px; } } - - li.md-header-tab { - button { - width: 100%; - font-size: 14px; - line-height: 19px; - color: $gl-text-color-secondary; - padding: $gl-btn-padding; - padding-top: 0; - border: 0; - border-bottom: 2px solid transparent; - - &:hover { - color: $black; - border-color: $gray-darkest; - } - } - - &.active{ - button { - font-weight: 600; - color: $black; - border-bottom: 2px solid $theme-gray-800; - } - } - - } } } diff --git a/app/assets/stylesheets/framework/secondary_navigation_elements.scss b/app/assets/stylesheets/framework/secondary_navigation_elements.scss index 710dd46bcf4616ea..c6e3aeb80184700e 100644 --- a/app/assets/stylesheets/framework/secondary_navigation_elements.scss +++ b/app/assets/stylesheets/framework/secondary_navigation_elements.scss @@ -11,12 +11,13 @@ li { display: flex; - a { + a, + button { padding: $gl-btn-padding; - padding-bottom: 11px; font-size: 14px; line-height: 28px; color: $gl-text-color-secondary; + border: 0; border-bottom: 2px solid transparent; white-space: nowrap; @@ -33,7 +34,12 @@ } } + button { + padding-top: 0; + } + &.active a, + &.active button, a.active { color: $black; font-weight: $gl-font-weight-bold; @@ -42,6 +48,10 @@ color: $black; } } + + &.md-header-tab.active button { + border-bottom: 2px solid $theme-gray-800; + } } } diff --git a/app/views/projects/_md_preview.html.haml b/app/views/projects/_md_preview.html.haml index 59bc3007a3c04136..0f709c65d0e67559 100644 --- a/app/views/projects/_md_preview.html.haml +++ b/app/views/projects/_md_preview.html.haml @@ -11,10 +11,10 @@ .md-header %ul.nav.nav-tabs.nav-links.clearfix %li.md-header-tab.active - %button.js-md-write-button{ href: "#md-write-holder", tabindex: -1 } + %button.js-md-write-button{ tabindex: -1 } Write %li.md-header-tab - %button.js-md-preview-button{ href: "#md-preview-holder", tabindex: -1 } + %button.js-md-preview-button{ tabindex: -1 } Preview %li.md-header-toolbar.active diff --git a/spec/features/groups/milestone_spec.rb b/spec/features/groups/milestone_spec.rb index 80df0618a6a4c732..e8ca6a6714fa4b62 100644 --- a/spec/features/groups/milestone_spec.rb +++ b/spec/features/groups/milestone_spec.rb @@ -23,17 +23,17 @@ description.native.send_keys('') - click_link('Preview') + click_button('Preview') preview = find('.js-md-preview') expect(preview).to have_content('Nothing to preview.') - click_link('Write') + click_button('Write') description.native.send_keys(':+1: Nice') - click_link('Preview') + click_button('Preview') expect(preview).to have_css('gl-emoji') expect(find('#milestone_description', visible: false)).not_to be_visible diff --git a/spec/features/issues/user_creates_issue_spec.rb b/spec/features/issues/user_creates_issue_spec.rb index 5e8662100c537250..687a6f1eafc5ba58 100644 --- a/spec/features/issues/user_creates_issue_spec.rb +++ b/spec/features/issues/user_creates_issue_spec.rb @@ -47,15 +47,15 @@ textarea = first(".gfm-form textarea") page.within(form) do - click_link("Preview") + click_button("Preview") preview = find(".js-md-preview") # this element is findable only when the "Preview" link is clicked. expect(preview).to have_content("Nothing to preview.") - click_link("Write") + click_button("Write") fill_in("Description", with: "Bug fixed :smile:") - click_link("Preview") + click_button("Preview") expect(preview).to have_css("gl-emoji") expect(textarea).not_to be_visible diff --git a/spec/features/issues/user_edits_issue_spec.rb b/spec/features/issues/user_edits_issue_spec.rb index 1d9c3abc20feb92b..60b88ef4bdf4a001 100644 --- a/spec/features/issues/user_edits_issue_spec.rb +++ b/spec/features/issues/user_edits_issue_spec.rb @@ -17,9 +17,9 @@ page.within(form) do fill_in("Description", with: "Bug fixed :smile:") - click_link("Preview") + click_button("Preview") end - expect(form).to have_link("Write") + expect(form).to have_button("Write") end end diff --git a/spec/features/merge_request/user_views_open_merge_request_spec.rb b/spec/features/merge_request/user_views_open_merge_request_spec.rb index 6ac495aa03d9f493..71022c6bb0832730 100644 --- a/spec/features/merge_request/user_views_open_merge_request_spec.rb +++ b/spec/features/merge_request/user_views_open_merge_request_spec.rb @@ -41,7 +41,7 @@ find('.gfm-form').fill_in(:merge_request_description, with: '') page.within('.gfm-form') do - click_link('Preview') + click_button('Preview') expect(find('.js-md-preview')).to have_content('Nothing to preview.') end @@ -51,12 +51,12 @@ find('.gfm-form').fill_in(:merge_request_description, with: ':+1: Nice') page.within('.gfm-form') do - click_link('Preview') + click_button('Preview') expect(find('.js-md-preview')).to have_css('gl-emoji') end - expect(find('.gfm-form')).to have_css('.js-md-preview').and have_link('Write') + expect(find('.gfm-form')).to have_css('.js-md-preview').and have_button('Write') expect(find('#merge_request_description', visible: false)).not_to be_visible end end diff --git a/spec/features/projects/commit/comments/user_adds_comment_spec.rb b/spec/features/projects/commit/comments/user_adds_comment_spec.rb index 6397df086a702bd6..29442a58ea4a15f2 100644 --- a/spec/features/projects/commit/comments/user_adds_comment_spec.rb +++ b/spec/features/projects/commit/comments/user_adds_comment_spec.rb @@ -28,19 +28,19 @@ fill_in("note[note]", with: "#{comment_text} #{emoji}") # Check on `Preview` tab - click_link("Preview") + click_button("Preview") expect(find(".js-md-preview")).to have_content(comment_text).and have_css("gl-emoji") expect(page).not_to have_css(".js-note-text") # Check on the `Write` tab - click_link("Write") + click_button("Write") expect(page).to have_field("note[note]", with: "#{comment_text} #{emoji}") # Submit comment from the `Preview` tab to get rid of a separate `it` block # which would specially tests if everything gets cleared from the note form. - click_link("Preview") + click_button("Preview") click_button("Comment") end @@ -88,13 +88,13 @@ # Test Preview feature for both forms. page.within("form[data-line-code='#{sample_commit.line_code}']") do - click_link("Preview") + click_button("Preview") end page.within("form[data-line-code='#{sample_commit.del_line_code}']") do fill_in("note[note]", with: another_comment_text) - click_link("Preview") + click_button("Preview") end expect(page).to have_css(".js-md-preview", visible: true, count: 2) diff --git a/spec/features/projects/commit/user_comments_on_commit_spec.rb b/spec/features/projects/commit/user_comments_on_commit_spec.rb index 6397a8ad8454845e..73ce8d2b996bb7ca 100644 --- a/spec/features/projects/commit/user_comments_on_commit_spec.rb +++ b/spec/features/projects/commit/user_comments_on_commit_spec.rb @@ -25,19 +25,19 @@ fill_in("note[note]", with: "#{comment_text} #{emoji_code}") # Check on `Preview` tab - click_link("Preview") + click_button("Preview") expect(find(".js-md-preview")).to have_content(comment_text).and have_css("gl-emoji") expect(page).not_to have_css(".js-note-text") # Check on `Write` tab - click_link("Write") + click_button("Write") expect(page).to have_field("note[note]", with: "#{comment_text} #{emoji_code}") # Submit comment from the `Preview` tab to get rid of a separate `it` block # which would specially tests if everything gets cleared from the note form. - click_link("Preview") + click_button("Preview") click_button("Comment") end -- GitLab From a1ec1af31be0a588dd529380e28a8f47c7320aa6 Mon Sep 17 00:00:00 2001 From: George Tsiolis <tsiolis.g@gmail.com> Date: Mon, 8 Oct 2018 15:11:24 +0300 Subject: [PATCH 4/7] Restore markdown header tab layout --- .../framework/secondary_navigation_elements.scss | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/assets/stylesheets/framework/secondary_navigation_elements.scss b/app/assets/stylesheets/framework/secondary_navigation_elements.scss index c6e3aeb80184700e..dfacccb83752da0d 100644 --- a/app/assets/stylesheets/framework/secondary_navigation_elements.scss +++ b/app/assets/stylesheets/framework/secondary_navigation_elements.scss @@ -8,12 +8,13 @@ height: auto; border-bottom: 1px solid $border-color; - li { + li:not(.md-header-toolbar) { display: flex; a, button { padding: $gl-btn-padding; + padding-bottom: 11px; font-size: 14px; line-height: 28px; color: $gl-text-color-secondary; @@ -49,6 +50,10 @@ } } + &.md-header-tab button { + line-height: 19px; + } + &.md-header-tab.active button { border-bottom: 2px solid $theme-gray-800; } -- GitLab From 139e58c7c1ea1393783553943a605d13624ad16b Mon Sep 17 00:00:00 2001 From: George Tsiolis <tsiolis.g@gmail.com> Date: Tue, 16 Oct 2018 23:45:38 +0300 Subject: [PATCH 5/7] Restore theme based border for md header tabs --- app/assets/stylesheets/framework/gitlab_theme.scss | 1 + .../stylesheets/framework/secondary_navigation_elements.scss | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/app/assets/stylesheets/framework/gitlab_theme.scss b/app/assets/stylesheets/framework/gitlab_theme.scss index 50ebc6d0dd12cb69..b8bb9e1e07b7675e 100644 --- a/app/assets/stylesheets/framework/gitlab_theme.scss +++ b/app/assets/stylesheets/framework/gitlab_theme.scss @@ -161,6 +161,7 @@ .nav-links li { &.active a, + &.md-header-tab.active button, a.active { border-bottom: 2px solid $active-tab-border; diff --git a/app/assets/stylesheets/framework/secondary_navigation_elements.scss b/app/assets/stylesheets/framework/secondary_navigation_elements.scss index dfacccb83752da0d..78eed832e9cfa187 100644 --- a/app/assets/stylesheets/framework/secondary_navigation_elements.scss +++ b/app/assets/stylesheets/framework/secondary_navigation_elements.scss @@ -53,10 +53,6 @@ &.md-header-tab button { line-height: 19px; } - - &.md-header-tab.active button { - border-bottom: 2px solid $theme-gray-800; - } } } -- GitLab From 1b837e7a5371582cb15ad109d953df89bc41ec29 Mon Sep 17 00:00:00 2001 From: George Tsiolis <tsiolis.g@gmail.com> Date: Tue, 16 Oct 2018 23:58:50 +0300 Subject: [PATCH 6/7] Add flex direction in md header tabs --- app/assets/stylesheets/framework/markdown_area.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/stylesheets/framework/markdown_area.scss b/app/assets/stylesheets/framework/markdown_area.scss index 44211ff0e6cce32e..841eb6204987d2f7 100644 --- a/app/assets/stylesheets/framework/markdown_area.scss +++ b/app/assets/stylesheets/framework/markdown_area.scss @@ -76,6 +76,7 @@ .md-header-tab { @include media-breakpoint-down(xs) { flex: 1; + flex-direction: column; width: 100%; border-bottom: 1px solid $border-color; text-align: center; -- GitLab From 97d2a9a651e0d65b3729918ccc645cd81bed61a8 Mon Sep 17 00:00:00 2001 From: George Tsiolis <tsiolis.g@gmail.com> Date: Fri, 19 Oct 2018 13:27:51 +0300 Subject: [PATCH 7/7] Update specs for markdown header tab buttons s in epics --- ee/spec/features/epics/update_epic_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ee/spec/features/epics/update_epic_spec.rb b/ee/spec/features/epics/update_epic_spec.rb index 40f55fe170dcabd1..1790e1dc54678f56 100644 --- a/ee/spec/features/epics/update_epic_spec.rb +++ b/ee/spec/features/epics/update_epic_spec.rb @@ -47,7 +47,7 @@ fill_in 'issue-description', with: 'New epic description' page.within('.detail-page-description') do - click_link('Preview') + click_button('Preview') expect(find('.md-preview')).to have_content('New epic description') end @@ -97,7 +97,7 @@ expect(page.find_field("issue-description").value).to have_content('banana_sample') page.within('.detail-page-description') do - click_link('Preview') + click_button('Preview') wait_for_requests within('.md-preview') do -- GitLab