From 6dd5ff724cc9193dfc8573cda7a7fd7d35745e78 Mon Sep 17 00:00:00 2001 From: Brenda Wallace Date: Wed, 4 Nov 2026 18:43:21 +1300 Subject: [PATCH] Add month sowing chips and update filters for responsive design --- app/helpers/seed_filters_helper.rb | 22 +++++++++--- app/helpers/seeds_helper.rb | 2 +- app/javascript/components/SeedLibrary.jsx | 6 ++-- .../components/SeedLibrary.test.jsx | 20 +++++++++++ spec/features/seeds/live_filters_spec.rb | 7 ++++ spec/features/seeds/removing_filters_spec.rb | 2 +- spec/helpers/seed_filters_helper_spec.rb | 35 ++++++++++++++++--- 7 files changed, 81 insertions(+), 13 deletions(-) diff --git a/app/helpers/seed_filters_helper.rb b/app/helpers/seed_filters_helper.rb index 6607e3089..26303df88 100644 --- a/app/helpers/seed_filters_helper.rb +++ b/app/helpers/seed_filters_helper.rb @@ -39,16 +39,30 @@ module SeedFiltersHelper ['Shared for trading', { shared: 1 }]] end + # "Sow now": this month, and next in the last days of it. + def seed_sow_now_label + "Sow now (#{Seed.sow_now_months.map { |month| Date::MONTHNAMES[month] }.join(' & ')})" + end + + # Every month as a chip, for a screen wide enough to show them all. + def seed_month_chips + [['Any month', { sow_month: nil }], + [seed_sow_now_label, { sow_month: 'now' }], + *Date::MONTHNAMES.compact.each_with_index.map { |name, index| [name, { sow_month: index + 1 }] }] + end + # The chips in their labelled groups. How far away only means something on # other people's seeds, and sharing only on a gardener's own: everyone's are - # all shared. + # all shared. The months are chips on a wide screen and a select on a narrow + # one, so that group says it is `wide_only`. def seed_filter_groups(everyone:) - [['Source', seed_source_chips], + [['Month to sow', seed_month_chips, true], + ['Source', seed_source_chips], (['Distance', seed_distance_chips] if everyone && current_member&.latitude), (['Sharing', seed_sharing_chips] unless everyone), ['Heirloom or hybrid', seed_heirloom_chips], - ['Planted', seed_planted_chips]].compact.map do |label, chips| - { label:, chips: chips.map { |chip_label, params| { label: chip_label, params: } } } + ['Planted', seed_planted_chips]].compact.map do |label, chips, wide_only| + { label:, wide_only: wide_only || false, chips: chips.map { |chip_label, params| { label: chip_label, params: } } } end end diff --git a/app/helpers/seeds_helper.rb b/app/helpers/seeds_helper.rb index 340a0dbb9..26b469f2b 100644 --- a/app/helpers/seeds_helper.rb +++ b/app/helpers/seeds_helper.rb @@ -182,7 +182,7 @@ module SeedsHelper { groups: everyone ? SEED_GROUPS + [%w(gardener Gardener)] : SEED_GROUPS, filters: seed_filter_groups(everyone:), - sow_now: "Sow now (#{Seed.sow_now_months.map { |month| Date::MONTHNAMES[month] }.join(' & ')})", + sow_now: seed_sow_now_label, gardeners: (seed_friend_names if everyone), months: Date::MONTHNAMES.compact.each_with_index.map { |name, index| [index + 1, name] }, clear: seed_filters_off.merge(crop: nil), diff --git a/app/javascript/components/SeedLibrary.jsx b/app/javascript/components/SeedLibrary.jsx index 851acb43d..ddb8a1325 100644 --- a/app/javascript/components/SeedLibrary.jsx +++ b/app/javascript/components/SeedLibrary.jsx @@ -181,7 +181,7 @@ export default function SeedLibrary({scope: initialScope, tabs: initialTabs, htm Clear all filters )} -
+