diff --git a/app/assets/javascripts/projects/index.js b/app/assets/javascripts/projects/index.js index 3850dfbf2..6107c8196 100644 --- a/app/assets/javascripts/projects/index.js +++ b/app/assets/javascripts/projects/index.js @@ -538,12 +538,12 @@ } function initSorting() { - $('#sortMenuDropdown li').click(function() { + $('#sortMenuDropdown a').click(function() { if (projectsCurrentSort !== $(this).data('sort')) { - $('#sortMenuDropdown li').removeClass('active'); + $('#sortMenuDropdown a').removeClass('selected'); projectsCurrentSort = $(this).data('sort'); loadCardsView(); - $(this).addClass('active'); + $(this).addClass('selected'); $('#sortMenu').dropdown('toggle'); } }); diff --git a/app/assets/stylesheets/projects.scss b/app/assets/stylesheets/projects.scss index ac0261c9d..2be17e39d 100644 --- a/app/assets/stylesheets/projects.scss +++ b/app/assets/stylesheets/projects.scss @@ -1,5 +1,8 @@ // scss-lint:disable SelectorDepth // scss-lint:disable NestingDepth +// scss-lint:disable SelectorFormat +// scss-lint:disable IdSelector + @import 'constants'; @import "mixins"; @@ -557,19 +560,52 @@ li.module-hover { } } - .sort-projects-menu { - li.active::after { - @include font-awesome; - content: "\f00c"; - position: absolute; - right: 1em; - } - } - .header-actions { align-items: center; display: flex; margin-left: auto; + + .projects-sort-menu { + display: inline-block; + + #sortMenu { + background: $color-white; + + &:focus, + &:active { + box-shadow: none; + } + + &:hover { + background: $color-concrete; + } + } + + .dropdown-menu { + @include font-button; + min-width: 150px; + padding: .5em 0; + + a { + border-radius: unset; + cursor: pointer; + padding: .5em 1em; + text-align: left; + + &:hover { + background: $color-concrete; + } + + &.selected::after { + @include font-awesome; + content: $font-fas-check; + margin-left: auto; + position: absolute; + right: 1em; + } + } + } + } } .filter-container { diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index c30964b4c..f14fc6507 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -25,9 +25,9 @@ module ProjectsHelper records.sort_by { |c| c.name.downcase } when 'ztoa' records.sort_by { |c| c.name.downcase }.reverse! - when 'archived_first' + when 'arch_old' records.sort_by { |c| [c.class.to_s, c.archived_on] } - when 'archived_last' + when 'arch_new' records.sort_by { |c| [c.class.to_s, -c.archived_on.to_i] } end folders_recursive_builder(nil, records) diff --git a/app/models/team.rb b/app/models/team.rb index 643c29eae..0c1e36a4b 100644 --- a/app/models/team.rb +++ b/app/models/team.rb @@ -58,7 +58,7 @@ class Team < ApplicationRecord def validate_view_state(view_state) if %w(new old atoz ztoa).exclude?(view_state.state.dig('projects', 'active', 'sort')) || - %w(new old atoz ztoa archived_first archived_last) + %w(new old atoz ztoa arch_new arch_old) .exclude?(view_state.state.dig('projects', 'archived', 'sort')) || %w(active archived).exclude?(view_state.state.dig('projects', 'view_mode')) view_state.errors.add(:state, :wrong_state) diff --git a/app/services/projects_overview_service.rb b/app/services/projects_overview_service.rb index 63681d36e..c94ba4ffc 100644 --- a/app/services/projects_overview_service.rb +++ b/app/services/projects_overview_service.rb @@ -19,7 +19,7 @@ class ProjectsOverviewService # Update sort if chanhed @sort = @view_state.state.dig('projects', @view_mode, 'sort') if @params[:sort] && @sort != @params[:sort] && - %w(new old atoz ztoa archived_first archived_last).include?(@params[:sort]) + %w(new old atoz ztoa arch_old arch_new).include?(@params[:sort]) @view_state.state['projects'].merge!(Hash[@view_mode, { 'sort': @params[:sort] }.stringify_keys]) @view_state.save! @sort = @view_state.state.dig('projects', @view_mode, 'sort') @@ -168,9 +168,9 @@ class ProjectsOverviewService records.order(:name) when 'ztoa' records.order(name: :desc) - when 'archived_first' + when 'arch_old' records.order(archived_on: :asc) - when 'archived_last' + when 'arch_new' records.order(archived_on: :desc) else records @@ -187,9 +187,9 @@ class ProjectsOverviewService records.sort_by { |c| c.name.downcase } when 'ztoa' records.sort_by { |c| c.name.downcase }.reverse! - when 'archived_first' + when 'arch_old' records.sort_by { |c| [c.class.to_s, c.archived_on] } - when 'archived_last' + when 'arch_new' records.sort_by { |c| [c.class.to_s, -c.archived_on.to_i] } end end diff --git a/app/views/projects/index/_header.html.erb b/app/views/projects/index/_header.html.erb index fc1327576..b7fa2bc06 100644 --- a/app/views/projects/index/_header.html.erb +++ b/app/views/projects/index/_header.html.erb @@ -129,18 +129,21 @@ -