Commit ad0f5fdc2729ac26268c2638c064abbf14134688
1 parent
172ad962
Exists in
spb-stable
and in
2 other branches
Improve mobile UI for issues and merge requests
Showing
9 changed files
with
119 additions
and
59 deletions
Show diff stats
CHANGELOG
... | ... | @@ -8,6 +8,7 @@ v 6.9.0 |
8 | 8 | - Fix syntax highlighting for code comments blocks |
9 | 9 | - Improve comments loading logic |
10 | 10 | - Stop refreshing comments when the tab is hidden |
11 | + - Improve issue and merge request mobile UI (Drew Blessing) | |
11 | 12 | |
12 | 13 | v 6.8.0 |
13 | 14 | - Ability to at mention users that are participating in issue and merge req. discussion | ... | ... |
app/assets/stylesheets/generic/issue_box.scss
... | ... | @@ -70,7 +70,6 @@ |
70 | 70 | } |
71 | 71 | |
72 | 72 | .state { |
73 | - height: 34px; | |
74 | 73 | border-bottom: 1px solid #DDD; |
75 | 74 | line-height: 32px; |
76 | 75 | } |
... | ... | @@ -89,6 +88,18 @@ |
89 | 88 | border: none; |
90 | 89 | border-top: 1px solid #eee; |
91 | 90 | padding: 15px 25px; |
91 | + | |
92 | + // Reset text align for children | |
93 | + .text-right > * { text-align: left; } | |
94 | + | |
95 | + @media (max-width: $screen-xs-max) { | |
96 | + // Don't right align on mobile | |
97 | + .text-right { text-align: left; } | |
98 | + | |
99 | + .row .col-md-6 { | |
100 | + padding-top: 5px; | |
101 | + } | |
102 | + } | |
92 | 103 | } |
93 | 104 | |
94 | 105 | .description { |
... | ... | @@ -106,7 +117,11 @@ |
106 | 117 | padding: 1px 25px; |
107 | 118 | text-align: center; |
108 | 119 | text-shadow: none; |
109 | - margin-right: 20px; | |
110 | 120 | display: inline-block; |
121 | + line-height: 34px; | |
122 | + } | |
123 | + | |
124 | + .creator { | |
125 | + padding: 2px 15px; | |
111 | 126 | } |
112 | 127 | } | ... | ... |
app/assets/stylesheets/sections/issues.scss
... | ... | @@ -143,3 +143,36 @@ form.edit-issue { |
143 | 143 | border-color: #E5E5E5; |
144 | 144 | } |
145 | 145 | } |
146 | + | |
147 | +@media (max-width: $screen-xs-max) { | |
148 | + .issue-btn-group { | |
149 | + width: 100%; | |
150 | + margin-top: 5px; | |
151 | + | |
152 | + .btn-group { | |
153 | + width: 100%; | |
154 | + | |
155 | + ul { | |
156 | + width: 100%; | |
157 | + text-align: center; | |
158 | + } | |
159 | + } | |
160 | + | |
161 | + .btn { | |
162 | + width: 100%; | |
163 | + margin-top: -1px; | |
164 | + | |
165 | + &:first-child:not(:last-child) { | |
166 | + border-radius: 4px 4px 0 0; | |
167 | + } | |
168 | + | |
169 | + &:not(:first-child):not(:last-child) { | |
170 | + border-radius: 0; | |
171 | + } | |
172 | + | |
173 | + &:last-child:not(:first-child) { | |
174 | + border-radius: 0 0 4px 4px; | |
175 | + } | |
176 | + } | |
177 | + } | |
178 | +} | ... | ... |
app/assets/stylesheets/sections/votes.scss
app/views/projects/issues/_issue_context.html.haml
1 | 1 | = form_for [@project, @issue], remote: true, html: {class: 'edit-issue inline-update'} do |f| |
2 | - %strong.append-right-10 | |
3 | - Assignee: | |
2 | + .row | |
3 | + .col-md-6 | |
4 | + %strong.append-right-10 | |
5 | + Assignee: | |
4 | 6 | |
5 | - - if can?(current_user, :modify_issue, @issue) | |
6 | - = project_users_select_tag('issue[assignee_id]', placeholder: 'Select assignee', class: 'custom-form-control', selected: @issue.assignee_id) | |
7 | - - elsif issue.assignee | |
8 | - = link_to_member(@project, @issue.assignee) | |
9 | - - else | |
10 | - None | |
7 | + - if can?(current_user, :modify_issue, @issue) | |
8 | + = project_users_select_tag('issue[assignee_id]', placeholder: 'Select assignee', class: 'custom-form-control', selected: @issue.assignee_id) | |
9 | + - elsif issue.assignee | |
10 | + = link_to_member(@project, @issue.assignee) | |
11 | + - else | |
12 | + None | |
11 | 13 | |
12 | - .pull-right | |
13 | - %strong.append-right-10 | |
14 | - Milestone: | |
15 | - - if can?(current_user, :modify_issue, @issue) | |
16 | - = f.select(:milestone_id, milestone_options(@issue), { include_blank: "Select milestone (none):" }, {class: 'select2 select2-compact'}) | |
17 | - = hidden_field_tag :issue_context | |
18 | - = f.submit class: 'btn' | |
19 | - - elsif issue.milestone | |
20 | - = link_to issue.milestone.title, project_milestone_path | |
21 | - - else | |
22 | - None | |
14 | + .col-md-6.text-right | |
15 | + %strong.append-right-10 | |
16 | + Milestone: | |
17 | + - if can?(current_user, :modify_issue, @issue) | |
18 | + = f.select(:milestone_id, milestone_options(@issue), { include_blank: "Select milestone" }, {class: 'select2 select2-compact'}) | |
19 | + = hidden_field_tag :issue_context | |
20 | + = f.submit class: 'btn' | |
21 | + - elsif issue.milestone | |
22 | + = link_to issue.milestone.title, project_milestone_path | |
23 | + - else | |
24 | + None | ... | ... |
app/views/projects/issues/show.html.haml
1 | 1 | %h3.page-title |
2 | 2 | Issue ##{@issue.iid} |
3 | 3 | |
4 | - %span.pull-right | |
4 | + %span.pull-right.issue-btn-group | |
5 | 5 | - if can?(current_user, :write_issue, @project) |
6 | 6 | = link_to new_project_issue_path(@project), class: "btn btn-grouped", title: "New Issue", id: "new_issue_link" do |
7 | 7 | %i.icon-plus |
... | ... | @@ -16,28 +16,29 @@ |
16 | 16 | %i.icon-edit |
17 | 17 | Edit |
18 | 18 | |
19 | -.votes-holder | |
20 | - #votes= render 'votes/votes_block', votable: @issue | |
19 | +.clearfix | |
20 | + .votes-holder | |
21 | + #votes= render 'votes/votes_block', votable: @issue | |
21 | 22 | |
22 | -.back-link | |
23 | - = link_to project_issues_path(@project) do | |
24 | - ← To issues list | |
25 | - %span.milestone-nav-link | |
26 | - - if @issue.milestone | |
27 | - | | |
28 | - %span.light Milestone | |
29 | - = link_to project_milestone_path(@project, @issue.milestone) do | |
30 | - = @issue.milestone.title | |
23 | + .back-link | |
24 | + = link_to project_issues_path(@project) do | |
25 | + ← To issues list | |
26 | + %span.milestone-nav-link | |
27 | + - if @issue.milestone | |
28 | + | | |
29 | + %span.light Milestone | |
30 | + = link_to project_milestone_path(@project, @issue.milestone) do | |
31 | + = @issue.milestone.title | |
31 | 32 | |
32 | 33 | .issue-box{ class: issue_box_class(@issue) } |
33 | - .state | |
34 | - %span.state-label | |
34 | + .state.clearfix | |
35 | + .state-label.col-sm-2.col-xs-12 | |
35 | 36 | - if @issue.closed? |
36 | 37 | Closed |
37 | 38 | - else |
38 | 39 | Open |
39 | 40 | |
40 | - %span.creator | |
41 | + %span.creator.col-sm-9.col-xs-12 | |
41 | 42 | Created by #{link_to_member(@project, @issue.author)} #{time_ago_with_tooltip(@issue.created_at)} |
42 | 43 | |
43 | 44 | %h4.title | ... | ... |
app/views/projects/merge_requests/show/_context.html.haml
1 | 1 | = form_for [@project, @merge_request], remote: true, html: {class: 'edit-merge_request inline-update'} do |f| |
2 | - %strong.append-right-10 | |
3 | - Assignee: | |
2 | + .row | |
3 | + .col-md-6 | |
4 | + %strong.append-right-10 | |
5 | + Assignee: | |
4 | 6 | |
5 | - - if can?(current_user, :modify_merge_request, @merge_request) | |
6 | - = project_users_select_tag('merge_request[assignee_id]', placeholder: 'Select assignee', class: 'custom-form-control', selected: @merge_request.assignee_id) | |
7 | - - elsif merge_request.assignee | |
8 | - = link_to_member(@project, @merge_request.assignee) | |
9 | - - else | |
10 | - None | |
7 | + - if can?(current_user, :modify_merge_request, @merge_request) | |
8 | + = project_users_select_tag('merge_request[assignee_id]', placeholder: 'Select assignee', class: 'custom-form-control', selected: @merge_request.assignee_id) | |
9 | + - elsif merge_request.assignee | |
10 | + = link_to_member(@project, @merge_request.assignee) | |
11 | + - else | |
12 | + None | |
11 | 13 | |
12 | - .pull-right | |
13 | - %strong.append-right-10 | |
14 | - Milestone: | |
15 | - - if can?(current_user, :modify_merge_request, @merge_request) | |
16 | - = f.select(:milestone_id, milestone_options(@merge_request), { include_blank: "Select milestone (none):" }, {class: 'select2 select2-compact'}) | |
17 | - = hidden_field_tag :merge_request_context | |
18 | - = f.submit class: 'btn' | |
19 | - - elsif merge_request.milestone | |
20 | - = link_to merge_request.milestone.title, project_milestone_path | |
21 | - - else | |
22 | - None | |
14 | + .col-md-6.text-right | |
15 | + %strong.append-right-10 | |
16 | + Milestone: | |
17 | + - if can?(current_user, :modify_merge_request, @merge_request) | |
18 | + = f.select(:milestone_id, milestone_options(@merge_request), { include_blank: "Select milestone" }, {class: 'select2 select2-compact'}) | |
19 | + = hidden_field_tag :merge_request_context | |
20 | + = f.submit class: 'btn' | |
21 | + - elsif merge_request.milestone | |
22 | + = link_to merge_request.milestone.title, project_milestone_path | |
23 | + - else | |
24 | + None | ... | ... |
app/views/projects/merge_requests/show/_mr_box.html.haml
1 | 1 | .issue-box{ class: issue_box_class(@merge_request) } |
2 | - .state | |
3 | - %span.state-label | |
2 | + .state.clearfix | |
3 | + %span.state-label.col-sm-2.col-xs-12 | |
4 | 4 | - if @merge_request.merged? |
5 | 5 | Merged |
6 | 6 | - elsif @merge_request.closed? |
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 | - else |
9 | 9 | Open |
10 | 10 | |
11 | - %span.creator | |
11 | + %span.creator.col-sm-9.col-xs-12 | |
12 | 12 | Created by #{link_to_member(@project, @merge_request.author)} #{time_ago_with_tooltip(@merge_request.created_at)} |
13 | 13 | |
14 | 14 | %h4.title | ... | ... |
app/views/projects/merge_requests/show/_mr_title.html.haml