Commit d88aafcb5d15827029a8f42e1a88ac313b1d218e

Authored by Dmitriy Zaporozhets
2 parents 12dbd0a4 04ad19dc

Merge branch 'select2' of /home/git/repositories/gitlab/gitlabhq

Gemfile
... ... @@ -144,7 +144,6 @@ gem "therubyracer"
144 144 gem 'turbolinks'
145 145 gem 'jquery-turbolinks'
146 146  
147   -gem 'chosen-rails', "1.0.1"
148 147 gem 'select2-rails'
149 148 gem 'jquery-atwho-rails', "~> 0.3.3"
150 149 gem "jquery-rails", "2.1.3"
... ...
Gemfile.lock
... ... @@ -71,12 +71,6 @@ GEM
71 71 celluloid (0.15.2)
72 72 timers (~> 1.1.0)
73 73 charlock_holmes (0.6.9.4)
74   - chosen-rails (1.0.1)
75   - coffee-rails (>= 3.2)
76   - compass-rails (>= 1.0)
77   - railties (>= 3.0)
78   - sass-rails (>= 3.2)
79   - chunky_png (1.2.9)
80 74 cliver (0.2.2)
81 75 code_analyzer (0.4.3)
82 76 sexp_processor
... ... @@ -92,12 +86,6 @@ GEM
92 86 coffee-script-source (1.6.3)
93 87 colored (1.2)
94 88 colorize (0.5.8)
95   - compass (0.12.2)
96   - chunky_png (~> 1.2)
97   - fssm (>= 0.2.7)
98   - sass (~> 3.1)
99   - compass-rails (1.1.1)
100   - compass (>= 0.12.2)
101 89 connection_pool (1.2.0)
102 90 coveralls (0.7.0)
103 91 multi_json (~> 1.3)
... ... @@ -161,7 +149,6 @@ GEM
161 149 dotenv (>= 0.7)
162 150 thor (>= 0.13.6)
163 151 formatador (0.2.4)
164   - fssm (0.2.10)
165 152 gemoji (1.3.1)
166 153 gherkin-ruby (0.3.1)
167 154 racc
... ... @@ -572,7 +559,6 @@ DEPENDENCIES
572 559 bootstrap-sass (~> 3.0)
573 560 capybara
574 561 carrierwave
575   - chosen-rails (= 1.0.1)
576 562 coffee-rails
577 563 colored
578 564 coveralls
... ...
app/assets/javascripts/application.js
... ... @@ -19,7 +19,6 @@
19 19 //= require jquery.turbolinks
20 20 //= require bootstrap
21 21 //= require modernizr
22   -//= require chosen-jquery
23 22 //= require select2
24 23 //= require raphael
25 24 //= require g.raphael-min
... ...
app/assets/javascripts/issues.js.coffee
... ... @@ -29,12 +29,10 @@
29 29 $('#filter_issue_search').val($('#issue_search').val())
30 30  
31 31 initSelects: ->
32   - $("#update_status").chosen()
33   - $("#update_assignee_id").chosen()
34   - $("#update_milestone_id").chosen()
35   - $("#label_name").chosen()
36   - $("#assignee_id").chosen()
37   - $("#milestone_id").chosen()
  32 + $("select#update_status").select2()
  33 + $("select#update_assignee_id").select2()
  34 + $("select#update_milestone_id").select2()
  35 + $("select#label_name").select2()
38 36 $("#milestone_id, #assignee_id, #label_name").on "change", ->
39 37 $(this).closest("form").submit()
40 38  
... ...
app/assets/javascripts/main.js.coffee
... ... @@ -67,8 +67,8 @@ $ ->
67 67 $('.appear-data').fadeIn()
68 68 e.preventDefault()
69 69  
70   - # Initialize chosen selects
71   - $('select.chosen').chosen()
  70 + # Initialize select2 selects
  71 + $('select.select2').select2(width: 'resolve', dropdownAutoWidth: true)
72 72  
73 73 # Initialize tooltips
74 74 $('.has_tooltip').tooltip()
... ... @@ -126,12 +126,6 @@ $ ->
126 126 $(@).remove()
127 127  
128 128 (($) ->
129   - _chosen = $.fn.chosen
130   - $.fn.extend chosen: (options) ->
131   - default_options = search_contains: "true"
132   - $.extend default_options, options
133   - _chosen.apply @, [default_options]
134   -
135 129 # Disable an element and add the 'disabled' Bootstrap class
136 130 $.fn.extend disable: ->
137 131 $(@).attr('disabled', 'disabled').addClass('disabled')
... ...
app/assets/javascripts/merge_requests.js.coffee
... ... @@ -2,8 +2,8 @@
2 2 # * Filter merge requests
3 3 #
4 4 @merge_requestsPage = ->
5   - $('#assignee_id').chosen()
6   - $('#milestone_id').chosen()
  5 + $('#assignee_id').select2()
  6 + $('#milestone_id').select2()
7 7 $('#milestone_id, #assignee_id').on 'change', ->
8 8 $(this).closest('form').submit()
9 9  
... ...
app/assets/stylesheets/application.scss
... ... @@ -4,7 +4,6 @@
4 4 * the top of the compiled file, but it's generally better to create a new file per style scope.
5 5 *= require jquery.ui.gitlab
6 6 *= require jquery.atwho
7   - *= require chosen
8 7 *= require select2
9 8 *= require_self
10 9 */
... ...
app/assets/stylesheets/generic/selects.scss
1   -/** Chosen.js selectbox style override **/
2   -.chosen-container {
3   - min-width: 100px;
  1 +/** Select2 selectbox style override **/
4 2  
5   - .chosen-single {
6   - height: 26px;
7   - background: #EEE !important;
8   - border: 1px solid #DDD !important;
9   - @include box-shadow(none !important);
10   - @include border-radius(4px !important);
11   - }
12   -
13   - .chosen-results li.highlighted {
14   - background: #29b;
15   - }
  3 +.select2-container {
  4 + .select2-choice {
  5 + background: #FFF;
  6 + border-color: #BBB;
16 7  
17   - .chosen-drop {
18   - margin-top: 10px;
19   - border: 1px solid #DDD !important;
20   - @include border-radius(4px !important);
21   - }
22   -
23   - .chosen-search input {
24   - border: 1px solid #CCC !important;
25   - @include box-shadow(none !important);
  8 + .select2-arrow {
  9 + background: #FFF;
  10 + }
26 11 }
27 12 }
28 13  
29   -/** Select2 styling **/
30   -.select2-container .select2-choice {
31   - @include bg-light-gray-gradient;
32   -}
33   -
34   -.select2-container .select2-choice div {
35   - border: none;
36   - background: none;
37   -}
38   -
39   -.select2-drop {
40   - padding-top: 8px;
41   -}
42   -
43   -.select2-no-results, .select2-searching {
44   - padding: 7px;
45   - color: #666;
46   -}
47   -
48   -.chosen-container .chosen-single div b {
49   - background-position-y: 0px !important;
50   -}
51   -
52   -.chosen-container .chosen-drop .chosen-search input {
53   - background-position-y: -24px !important;
54   -}
55   -
56   -.chosen-compact {
57   - max-width: 170px !important;
  14 +.select2-drop-active {
  15 + border: 1px solid #BBB;
  16 + margin-top: 4px;
58 17 }
59 18  
60 19 select {
61   - &.chosen {
  20 + &.select2 {
62 21 width: 100px;
63 22 }
64 23  
65   - &.chosen-sm {
  24 + &.select2-sm {
66 25 width: 100px;
67 26 }
68 27 }
69 28  
70 29 @media (min-width: $screen-sm-min) {
71 30 select {
72   - &.chosen {
  31 + &.select2 {
73 32 width: 150px;
74 33 }
75   - &.chosen-sm {
  34 + &.select2-sm {
76 35 width: 120px;
77 36 }
78 37 }
... ... @@ -81,10 +40,10 @@ select {
81 40 /* Medium devices (desktops, 992px and up) */
82 41 @media (min-width: $screen-md-min) {
83 42 select {
84   - &.chosen {
  43 + &.select2 {
85 44 width: 170px;
86 45 }
87   - &.chosen-sm {
  46 + &.select2-sm {
88 47 width: 140px;
89 48 }
90 49 }
... ... @@ -93,11 +52,17 @@ select {
93 52 /* Large devices (large desktops, 1200px and up) */
94 53 @media (min-width: $screen-lg-min) {
95 54 select {
96   - &.chosen {
  55 + &.select2 {
97 56 width: 200px;
98 57 }
99   - &.chosen-sm {
  58 + &.select2-sm {
100 59 width: 150px;
101 60 }
102 61 }
103 62 }
  63 +
  64 +
  65 +/** Branch/tag selector **/
  66 +.project-refs-form .select2-container {
  67 + margin-right: 10px;
  68 +}
... ...
app/assets/stylesheets/sections/issues.scss
... ... @@ -77,8 +77,8 @@ input.check_all_issues {
77 77 @media (min-width: 800px) { .issues_filters select { width: 160px; } }
78 78 @media (min-width: 1200px) { .issues_filters select { width: 220px; } }
79 79  
80   -@media (min-width: 800px) { .issues_bulk_update .chosen-container { min-width: 120px; } }
81   -@media (min-width: 1200px) { .issues_bulk_update .chosen-container { min-width: 160px; } }
  80 +@media (min-width: 800px) { .issues_bulk_update .select2-container { min-width: 120px; } }
  81 +@media (min-width: 1200px) { .issues_bulk_update .select2-container { min-width: 160px; } }
82 82  
83 83 .issues-holder {
84 84 .issues_filters {
... ... @@ -105,7 +105,7 @@ input.check_all_issues {
105 105 }
106 106  
107 107 .issues_bulk_update {
108   - .chosen-container {
  108 + .select2-container {
109 109 text-shadow: none;
110 110 }
111 111 }
... ...
app/assets/stylesheets/sections/merge_requests.scss
... ... @@ -95,7 +95,7 @@
95 95 font-weight: normal !important;
96 96 }
97 97  
98   - .chosen-container .chosen-single {
  98 + .select2-container .select2-single {
99 99 span {
100 100 font-weight: bold;
101 101 color: #555;
... ...
app/assets/stylesheets/sections/projects.scss
... ... @@ -75,7 +75,7 @@
75 75 .project-home-dropdown + & {
76 76 margin-right: 45px;
77 77 }
78   -
  78 +
79 79 .btn,
80 80 .form-control {
81 81 border: 1px solid #E1E1E1;
... ... @@ -230,43 +230,10 @@ ul.nav.nav-projects-tabs {
230 230 }
231 231 }
232 232  
233   -.transfer-project .chosen-container {
  233 +.transfer-project .select2-container {
234 234 min-width: 200px;
235 235 }
236 236  
237   -/** Branch/tag selector **/
238   -.project-refs-form {
239   - margin: 0;
240   - span {
241   - background:none !important;
242   - position:static !important;
243   - width:auto !important;
244   - height:auto !important;
245   - }
246   -}
247   -
248   -.project-refs-form .chosen-container {
249   - position: relative;
250   - top: 0;
251   - left: 0;
252   - margin-right: 10px;
253   -
254   - .chosen-single span {
255   - font-weight: bold;
256   - color: #555;
257   - }
258   -
259   - &.chosen-container-active {
260   - .chosen-drop {
261   - min-width: 400px;
262   - }
263   -
264   - .chosen-results {
265   - max-height: 400px;
266   - }
267   - }
268   -}
269   -
270 237 .deploy-project-label {
271 238 margin: 1px;
272 239 }
... ...
app/views/admin/groups/show.html.haml
... ... @@ -57,7 +57,7 @@
57 57 %div
58 58 = users_select_tag(:user_ids, multiple: true)
59 59 %div.prepend-top-10
60   - = select_tag :group_access, options_for_select(UsersGroup.group_access_roles), class: "project-access-select chosen"
  60 + = select_tag :group_access, options_for_select(UsersGroup.group_access_roles), class: "project-access-select select2"
61 61 %hr
62 62 = submit_tag 'Add users into group', class: "btn btn-create"
63 63 .ui-box
... ...
app/views/groups/_new_group_member.html.haml
... ... @@ -12,7 +12,7 @@
12 12 %p 2. Set access level for them
13 13 .form-group
14 14 = f.label :group_access, "Group Access", class: 'control-label'
15   - .col-sm-10= select_tag :group_access, options_for_select(UsersGroup.group_access_roles, @users_group.group_access), class: "project-access-select chosen"
  15 + .col-sm-10= select_tag :group_access, options_for_select(UsersGroup.group_access_roles, @users_group.group_access), class: "project-access-select select2"
16 16  
17 17 .form-actions
18 18 = f.submit 'Add users into group', class: "btn btn-create"
... ...
app/views/projects/edit.html.haml
... ... @@ -26,7 +26,7 @@
26 26 - if @project.repository.exists? && @project.repository.branch_names.any?
27 27 .form-group
28 28 = f.label :default_branch, "Default Branch", class: 'control-label'
29   - .col-sm-10= f.select(:default_branch, @repository.branch_names, {}, {class: 'chosen select-wide'})
  29 + .col-sm-10= f.select(:default_branch, @repository.branch_names, {}, {class: 'select2 select-wide'})
30 30  
31 31  
32 32 = render "visibility_level", f: f, visibility_level: @project.visibility_level, can_change_visibility_level: can?(current_user, :change_visibility_level, @project)
... ... @@ -145,7 +145,7 @@
145 145 %span Namespace
146 146 .col-sm-10
147 147 .form-group
148   - = f.select :namespace_id, namespaces_options(@project.namespace_id), { prompt: 'Choose a project namespace' }, { class: 'chosen' }
  148 + = f.select :namespace_id, namespaces_options(@project.namespace_id), { prompt: 'Choose a project namespace' }, { class: 'select2' }
149 149 %ul
150 150 %li Be careful. Changing the project's namespace can have unintended side effects.
151 151 %li You can only transfer the project to namespaces you manage.
... ...
app/views/projects/issues/_form.html.haml
... ... @@ -24,7 +24,7 @@
24 24 %i.icon-user
25 25 Assign to
26 26 .col-sm-10
27   - = f.select(:assignee_id, assignee_options(@issue), { include_blank: "Select a user" }, {class: 'chosen'})
  27 + = f.select(:assignee_id, assignee_options(@issue), { include_blank: "Select a user" }, {class: 'select2'})
28 28  
29 29 = link_to 'Assign to me', '#', class: 'btn btn-small assign-to-me-link'
30 30 .form-group
... ... @@ -32,7 +32,7 @@
32 32 = f.label :milestone_id, class: 'control-label' do
33 33 %i.icon-time
34 34 Milestone
35   - .col-sm-10= f.select(:milestone_id, milestone_options(@issue), { include_blank: "Select milestone" }, {class: 'chosen'})
  35 + .col-sm-10= f.select(:milestone_id, milestone_options(@issue), { include_blank: "Select milestone" }, {class: 'select2'})
36 36  
37 37 .form-group
38 38 = f.label :label_list, class: 'control-label' do
... ... @@ -87,6 +87,6 @@
87 87 });
88 88  
89 89 $('.assign-to-me-link').on('click', function(e){
90   - $('#issue_assignee_id').val("#{current_user.id}").trigger("chosen:updated");
  90 + $('#issue_assignee_id').val("#{current_user.id}").trigger("change");
91 91 e.preventDefault();
92 92 });
... ...
app/views/projects/issues/_issue_context.html.haml
... ... @@ -6,7 +6,7 @@
6 6 - if can?(current_user, :modify_issue, @issue)
7 7 = link_to profile_path(issue.assignee) do
8 8 = image_tag(avatar_icon(issue.assignee.email), class: 'avatar avatar-inline s16 assignee') if issue.assignee
9   - = f.select(:assignee_id, assignee_options(@issue), { include_blank: "Assign to user (none):" }, {class: 'chosen'})
  9 + = f.select(:assignee_id, assignee_options(@issue), { include_blank: "Assign to user (none):" }, {class: 'select2'})
10 10 - elsif issue.assignee
11 11 = link_to_member(@project, @issue.assignee)
12 12  
... ... @@ -17,7 +17,7 @@
17 17 %cite.cgray Attached to milestone
18 18  
19 19 - if can?(current_user, :modify_issue, @issue)
20   - = f.select(:milestone_id, milestone_options(@issue), { include_blank: "Select milestone (none):" }, {class: 'chosen chosen-compact'})
  20 + = f.select(:milestone_id, milestone_options(@issue), { include_blank: "Select milestone (none):" }, {class: 'select2 select2-compact'})
21 21  
22 22 = hidden_field_tag :issue_context
23 23 = f.submit class: 'btn'
... ...
app/views/projects/issues/update.js.haml
... ... @@ -5,7 +5,7 @@
5 5 - elsif params[:issue_context]
6 6 $('.issue-box .context').html("#{escape_javascript(render partial: 'issue_context', locals: { issue: @issue })}");
7 7 $('.issue-box .context').effect('highlight');
8   - $('.chosen').chosen();
  8 + $('.select2').select2();
9 9 $('.edit-issue.inline-update input[type="submit"]').hide();
10 10 - if @issue.milestone
11 11 $('.milestone-nav-link').replaceWith("<span class='milestone-nav-link'>| <span class='light'>Milestone</span> #{escape_javascript(link_to @issue.milestone.title, project_milestone_path(@issue.project, @issue.milestone))}</span>")
... ...
app/views/projects/merge_requests/_form.html.haml
... ... @@ -10,10 +10,10 @@
10 10 .col-md-5
11 11 .clearfix
12 12 .pull-left
13   - = f.select(:source_project_id, [[@merge_request.source_project_path,@merge_request.source_project.id]] , {}, { class: 'source_project chosen span3', disabled: @merge_request.persisted? })
  13 + = f.select(:source_project_id, [[@merge_request.source_project_path,@merge_request.source_project.id]] , {}, { class: 'source_project select2 span3', disabled: @merge_request.persisted? })
14 14 .pull-left
15 15 &nbsp;
16   - = f.select(:source_branch, @merge_request.source_project.repository.branch_names, { include_blank: "Select branch" }, {class: 'source_branch chosen span2'})
  16 + = f.select(:source_branch, @merge_request.source_project.repository.branch_names, { include_blank: "Select branch" }, {class: 'source_branch select2 span2'})
17 17 .mr_source_commit.prepend-top-10
18 18 .col-md-2
19 19 .merge-request-angle
... ... @@ -22,10 +22,10 @@
22 22 .clearfix
23 23 .pull-left
24 24 - projects = @project.forked_from_project.nil? ? [@project] : [ @project,@project.forked_from_project]
25   - = f.select(:target_project_id, options_from_collection_for_select(projects, 'id', 'path_with_namespace'), {}, { class: 'target_project chosen span3', disabled: @merge_request.persisted? })
  25 + = f.select(:target_project_id, options_from_collection_for_select(projects, 'id', 'path_with_namespace'), {}, { class: 'target_project select2 span3', disabled: @merge_request.persisted? })
26 26 .pull-left
27 27 &nbsp;
28   - = f.select(:target_branch, @target_branches, { include_blank: "Select branch" }, {class: 'target_branch chosen span2'})
  28 + = f.select(:target_branch, @target_branches, { include_blank: "Select branch" }, {class: 'target_branch select2 span2'})
29 29 .mr_target_commit.prepend-top-10
30 30  
31 31 %hr
... ... @@ -47,7 +47,7 @@
47 47 %i.icon-user
48 48 Assign to
49 49 .col-sm-10
50   - = f.select(:assignee_id, assignee_options(@merge_request), { include_blank: "Select a user" }, {class: 'chosen'})
  50 + = f.select(:assignee_id, assignee_options(@merge_request), { include_blank: "Select a user" }, {class: 'select2'})
51 51 &nbsp;
52 52 = link_to 'Assign to me', '#', class: 'btn btn-small assign-to-me-link'
53 53 .form-group
... ... @@ -55,7 +55,7 @@
55 55 = f.label :milestone_id, class: 'control-label' do
56 56 %i.icon-time
57 57 Milestone
58   - .col-sm-10= f.select(:milestone_id, milestone_options(@merge_request), { include_blank: "Select milestone" }, {class: 'chosen'})
  58 + .col-sm-10= f.select(:milestone_id, milestone_options(@merge_request), { include_blank: "Select milestone" }, {class: 'select2'})
59 59  
60 60  
61 61 .form-actions
... ... @@ -90,6 +90,6 @@
90 90 $.get("#{branch_to_project_merge_requests_path(@source_project)}", {target_project_id: target_project.val(),ref: $(this).val() });
91 91 });
92 92 $('.assign-to-me-link').on('click', function(e){
93   - $('#merge_request_assignee_id').val("#{current_user.id}").trigger("chosen:updated");
  93 + $('#merge_request_assignee_id').val("#{current_user.id}").trigger("select2:updated");
94 94 e.preventDefault();
95 95 });
... ...
app/views/projects/merge_requests/update_branches.js.haml
1 1 :plain
2 2 $(".target_branch").html("#{escape_javascript(options_for_select(@target_branches))}");
3   - $(".target_branch").trigger("chosen:updated");
  3 + $(".target_branch").trigger("select2:updated");
4 4 $(".mr_target_commit").html("");
5 5 $(".target_branch").trigger("change");
... ...
app/views/projects/new.html.haml
... ... @@ -27,7 +27,7 @@
27 27 = f.label :namespace_id, class: 'control-label' do
28 28 %span Namespace
29 29 .col-sm-10
30   - = f.select :namespace_id, namespaces_options(params[:namespace_id] || :current_user), {}, {class: 'chosen', tabindex: 2}
  30 + = f.select :namespace_id, namespaces_options(params[:namespace_id] || :current_user), {}, {class: 'select2', tabindex: 2}
31 31  
32 32 .form-group
33 33 .col-sm-2
... ...
app/views/projects/protected_branches/index.html.haml
... ... @@ -22,7 +22,7 @@
22 22 .entry.clearfix
23 23 = f.label :name, "Branch"
24 24 .col-md-3
25   - = f.select(:name, @project.open_branches.map { |br| [br.name, br.name] } , {include_blank: "Select branch"}, {class: "chosen span3"})
  25 + = f.select(:name, @project.open_branches.map { |br| [br.name, br.name] } , {include_blank: "Select branch"}, {class: "select2 span3"})
26 26 &nbsp;
27 27 = f.submit 'Protect', class: "btn-create btn"
28 28 - unless @branches.empty?
... ...
app/views/projects/snippets/_form.html.haml
... ... @@ -14,7 +14,7 @@
14 14 .col-sm-10= f.text_field :title, placeholder: "Example Snippet", class: 'form-control', required: true
15 15 .form-group
16 16 = f.label "Lifetime"
17   - .col-sm-10= f.select :expires_at, lifetime_select_options, {}, {class: 'chosen span2'}
  17 + .col-sm-10= f.select :expires_at, lifetime_select_options, {}, {class: 'select2 span2'}
18 18 .form-group
19 19 .file-editor
20 20 = f.label :file_name, "File"
... ...
app/views/projects/team_members/_form.html.haml
... ... @@ -17,7 +17,7 @@
17 17 %p 2. Set access level for them
18 18 .form-group
19 19 = f.label :project_access, "Project Access", class: 'control-label'
20   - .col-sm-10= select_tag :project_access, options_for_select(Gitlab::Access.options, @user_project_relation.project_access), class: "project-access-select chosen"
  20 + .col-sm-10= select_tag :project_access, options_for_select(Gitlab::Access.options, @user_project_relation.project_access), class: "project-access-select select2"
21 21  
22 22 .form-actions
23 23 = f.submit 'Add users', class: "btn btn-create"
... ...
app/views/projects/team_members/import.html.haml
... ... @@ -6,7 +6,7 @@
6 6 = form_tag apply_import_project_team_members_path(@project), method: 'post', class: 'form-horizontal' do
7 7 .form-group
8 8 = label_tag :source_project_id, "Project", class: 'control-label'
9   - .col-sm-10= select_tag(:source_project_id, options_from_collection_for_select(current_user.authorized_projects, :id, :name_with_namespace), prompt: "Select project", class: "chosen lg", required: true)
  9 + .col-sm-10= select_tag(:source_project_id, options_from_collection_for_select(current_user.authorized_projects, :id, :name_with_namespace), prompt: "Select project", class: "select2 lg", required: true)
10 10  
11 11 .form-actions
12 12 = submit_tag 'Import project members', class: "btn btn-create"
... ...
app/views/shared/_ref_switcher.html.haml
1 1 = form_tag switch_project_refs_path(@project), method: :get, class: "project-refs-form" do
2   - = select_tag "ref", grouped_options_refs, class: "project-refs-select chosen chosen-sm"
  2 + = select_tag "ref", grouped_options_refs, class: "project-refs-select select2 select2-sm"
3 3 = hidden_field_tag :destination, destination
4 4 - if defined?(path)
5 5 = hidden_field_tag :path, path
... ...
features/steps/project/project_forked_merge_requests.rb
... ... @@ -3,7 +3,7 @@ class ProjectForkedMergeRequests &lt; Spinach::FeatureSteps
3 3 include SharedProject
4 4 include SharedNote
5 5 include SharedPaths
6   - include ChosenHelper
  6 + include Select2Helper
7 7  
8 8 step 'I am a member of project "Shop"' do
9 9 @project = Project.find_by_name "Shop"
... ... @@ -42,14 +42,14 @@ class ProjectForkedMergeRequests &lt; Spinach::FeatureSteps
42 42 end
43 43  
44 44 step 'I fill out a "Merge Request On Forked Project" merge request' do
45   - chosen @forked_project.id, from: "#merge_request_source_project_id"
46   - chosen @project.id, from: "#merge_request_target_project_id"
  45 + select2 @forked_project.id, from: "#merge_request_source_project_id"
  46 + select2 @project.id, from: "#merge_request_target_project_id"
47 47  
48 48 find(:select, "merge_request_source_project_id", {}).value.should == @forked_project.id.to_s
49 49 find(:select, "merge_request_target_project_id", {}).value.should == @project.id.to_s
50 50  
51   - chosen "master", from: "#merge_request_source_branch"
52   - chosen "stable", from: "#merge_request_target_branch"
  51 + select2 "master", from: "#merge_request_source_branch"
  52 + select2 "stable", from: "#merge_request_target_branch"
53 53  
54 54 find(:select, "merge_request_source_branch", {}).value.should == 'master'
55 55 find(:select, "merge_request_target_branch", {}).value.should == 'stable'
... ...
features/steps/project/project_network_graph.rb
... ... @@ -15,11 +15,11 @@ class ProjectNetworkGraph &lt; Spinach::FeatureSteps
15 15 end
16 16  
17 17 And 'page should select "master" in select box' do
18   - page.should have_selector '.chosen-single span', text: "master"
  18 + page.should have_selector '.select2-chosen', text: "master"
19 19 end
20 20  
21 21 And 'page should select "v2.1.0" in select box' do
22   - page.should have_selector '.chosen-single span', text: "v2.1.0"
  22 + page.should have_selector '.select2-chosen', text: "v2.1.0"
23 23 end
24 24  
25 25 And 'page should have "master" on graph' do
... ... @@ -56,11 +56,11 @@ class ProjectNetworkGraph &lt; Spinach::FeatureSteps
56 56 end
57 57  
58 58 And 'page should select "stable" in select box' do
59   - page.should have_selector '.chosen-single span', text: "stable"
  59 + page.should have_selector '.select2-chosen', text: "stable"
60 60 end
61 61  
62 62 And 'page should select "v2.1.0" in select box' do
63   - page.should have_selector '.chosen-single span', text: "v2.1.0"
  63 + page.should have_selector '.select2-chosen', text: "v2.1.0"
64 64 end
65 65  
66 66 And 'page should have "stable" on graph' do
... ...
features/support/env.rb
... ... @@ -15,7 +15,7 @@ require &#39;spinach/capybara&#39;
15 15 require 'sidekiq/testing/inline'
16 16  
17 17  
18   -%w(valid_commit big_commits select2_helper chosen_helper test_env).each do |f|
  18 +%w(valid_commit big_commits select2_helper test_env).each do |f|
19 19 require Rails.root.join('spec', 'support', f)
20 20 end
21 21  
... ...
spec/support/chosen_helper.rb
... ... @@ -1,21 +0,0 @@
1   -# Chosen programmatic helper
2   -# It allows you to select value from chosen select
3   -#
4   -# Params
5   -# value - real value of selected item
6   -# opts - options containing css selector
7   -#
8   -# Usage:
9   -#
10   -# chosen(2, from: '#user_ids')
11   -#
12   -
13   -module ChosenHelper
14   - def chosen(value, options={})
15   - raise "Must pass a hash containing 'from'" if not options.is_a?(Hash) or not options.has_key?(:from)
16   -
17   - selector = options[:from]
18   -
19   - page.execute_script("$('#{selector}').val('#{value}').trigger('chosen:updated');")
20   - end
21   -end