From 26abc00fec03a331aca488b29efdca24dc627850 Mon Sep 17 00:00:00 2001 From: Paul Faure Date: Tue, 17 Mar 2026 17:27:16 -0400 Subject: [PATCH 1/3] Improve search filters layout per issue #353 Dropdowns (Type, Media Type, Tags) now display side-by-side in a flex row. Range fields (Size, Modified, ISO, Aperture, Focal Length) use vertical stacking (min above max) in a responsive grid. Text inputs remain full-width between the two groups. Co-Authored-By: Claude Opus 4.6 --- .../src/components/SearchFilters.vue | 379 +++++++++--------- 1 file changed, 200 insertions(+), 179 deletions(-) diff --git a/packages/web-app-advanced-search/src/components/SearchFilters.vue b/packages/web-app-advanced-search/src/components/SearchFilters.vue index 663c89a1..2efe956b 100644 --- a/packages/web-app-advanced-search/src/components/SearchFilters.vue +++ b/packages/web-app-advanced-search/src/components/SearchFilters.vue @@ -16,21 +16,8 @@
- -
- - -
- - -
+ +
-
- - -
-
- - -
- -
- - {{ $gettext('to') }} - -
-
- - -
- -
- - {{ $gettext('to') }} - -
-
- - -
+ +
+ + +
+
@@ -131,6 +73,57 @@ @keyup.enter="emit('search')" />
+ + +
+
+ +
+ + {{ $gettext('to') }} + +
+
+ +
+ +
+ + {{ $gettext('to') }} + +
+
+
@@ -155,8 +148,8 @@ {{ photoDataError }} - -
+ +
-
- - -
- -
- -
- - {{ $gettext('to') }} - + +
+
+ +
+ + {{ $gettext('to') }} + +
-
- -
- -
- - {{ $gettext('to') }} - +
+ +
+ + {{ $gettext('to') }} + +
-
- -
- -
- - {{ $gettext('to') }} - +
+ +
+ + {{ $gettext('to') }} + +
-
- -
- -
- - {{ $gettext('to') }} - +
+ +
+ + {{ $gettext('to') }} + +
@@ -669,11 +657,44 @@ const updateFocalLengthRange = (field: 'min' | 'max', value: string) => } .filter-group { + display: flex; + flex-direction: column; + gap: 0.75rem; +} + +.filter-row-inline { + display: flex; + flex-wrap: wrap; + gap: 0.75rem; +} + +.filter-row-inline > * { + flex: 1 1 180px; + min-width: 0; +} + +.filter-ranges { display: grid; - grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 0.75rem; } +.range-inputs-vertical { + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.range-inputs-vertical input { + width: 100%; +} + +.range-separator { + font-size: 0.75rem; + color: var(--oc-color-text-muted, #999); + text-align: center; +} + .filter-row { display: flex; flex-direction: column; From 5433c03113af71c9d692604046c7ee94e28ea190 Mon Sep 17 00:00:00 2001 From: Paul Faure Date: Fri, 20 Mar 2026 10:54:56 -0400 Subject: [PATCH 2/3] fix(advanced-search): refine filter layout per review feedback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Reduce gap between dropdown selectors (0.75rem → 0.5rem) - Cap dropdown max-width at 220px - Narrow range fields (max 220px) with more spacing between them (1rem) - Align input heights (2.125rem) with box-sizing - Left-align "to" separator to match label text Co-Authored-By: Claude Opus 4.6 --- .../src/components/SearchFilters.vue | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/web-app-advanced-search/src/components/SearchFilters.vue b/packages/web-app-advanced-search/src/components/SearchFilters.vue index 2efe956b..a8f85830 100644 --- a/packages/web-app-advanced-search/src/components/SearchFilters.vue +++ b/packages/web-app-advanced-search/src/components/SearchFilters.vue @@ -665,34 +665,37 @@ const updateFocalLengthRange = (field: 'min' | 'max', value: string) => .filter-row-inline { display: flex; flex-wrap: wrap; - gap: 0.75rem; + gap: 0.5rem; } .filter-row-inline > * { - flex: 1 1 180px; + flex: 1 1 150px; min-width: 0; + max-width: 220px; } .filter-ranges { display: grid; - grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); - gap: 0.75rem; + grid-template-columns: repeat(auto-fill, minmax(180px, 220px)); + gap: 1rem; } .range-inputs-vertical { display: flex; flex-direction: column; - gap: 0.25rem; + gap: 0.125rem; } .range-inputs-vertical input { width: 100%; + box-sizing: border-box; + height: 2.125rem; } .range-separator { font-size: 0.75rem; color: var(--oc-color-text-muted, #999); - text-align: center; + text-align: left; } .filter-row { From 8f06d512376b786c19e8755208c06a439b1492fa Mon Sep 17 00:00:00 2001 From: Paul Faure Date: Sun, 22 Mar 2026 20:09:53 -0400 Subject: [PATCH 3/3] fix(advanced-search): add vertical spacing between dropdown selectors and range items Adds margin below dropdown selector rows to visually distinguish them from the range filter items below, per Martin's review feedback. Co-Authored-By: Claude Opus 4.6 --- .../web-app-advanced-search/src/components/SearchFilters.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/web-app-advanced-search/src/components/SearchFilters.vue b/packages/web-app-advanced-search/src/components/SearchFilters.vue index a8f85830..4b7b8756 100644 --- a/packages/web-app-advanced-search/src/components/SearchFilters.vue +++ b/packages/web-app-advanced-search/src/components/SearchFilters.vue @@ -666,6 +666,7 @@ const updateFocalLengthRange = (field: 'min' | 'max', value: string) => display: flex; flex-wrap: wrap; gap: 0.5rem; + margin-bottom: 0.25rem; } .filter-row-inline > * {