Skip to content

Commit a3db7c7

Browse files
committed
filter modal improvements
1 parent a4dd471 commit a3db7c7

4 files changed

Lines changed: 90 additions & 28 deletions

File tree

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#filterModal .filter-field-list,
2+
#filterModal .publish-filter-list {
3+
border-radius: 0.5rem;
4+
overflow: hidden;
5+
}
6+
7+
#filterModal .filter-field-item {
8+
display: flex;
9+
align-items: center;
10+
gap: 0.75rem;
11+
cursor: pointer;
12+
user-select: none;
13+
background-color: rgba(255, 255, 255, 0.02);
14+
border-color: var(--bs-border-color-translucent);
15+
transition: background-color 0.15s ease, border-color 0.15s ease;
16+
}
17+
18+
#filterModal .filter-field-item:hover {
19+
background-color: rgba(var(--fishfry-primary-rgb), 0.12);
20+
border-color: rgba(var(--fishfry-primary-rgb), 0.35);
21+
}
22+
23+
#filterModal .filter-field-item:focus-within {
24+
box-shadow: inset 0 0 0 2px var(--fishfry-primary-focus);
25+
}
26+
27+
#filterModal .filter-field-item.is-checked {
28+
background-color: rgba(var(--fishfry-primary-rgb), 0.2);
29+
border-color: rgba(var(--fishfry-primary-rgb), 0.45);
30+
}
31+
32+
#filterModal .filter-field-checkbox {
33+
margin-top: 0;
34+
flex-shrink: 0;
35+
}
36+
37+
#filterModal .filter-field-item-label {
38+
flex: 1;
39+
line-height: 1.35;
40+
font-size: 1.1rem;
41+
}

src/features/filters/FilterModal.jsx

Lines changed: 44 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import React from "react";
22
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
3-
import { Button, Col, Form, Modal, Row } from "react-bootstrap";
3+
import { Button, Col, Form, ListGroup, Modal, Row } from "react-bootstrap";
44
import { faBagShopping, faBeerMugEmpty, faClock, faUtensils, faWheelchair } from "@/icons/fontAwesome";
5+
import "./FilterModal.css";
56

67
const FILTER_FIELDS = [
78
{ key: "drive_thru", label: "Drive-Thru Available" },
@@ -60,35 +61,52 @@ const FilterModal = ({ show, onHide, filters, onChange }) => {
6061
<Modal.Body className="p-4">
6162
<Row>
6263
<Col >
63-
{FILTER_FIELDS.map((filter) => (
64-
<Form.Group className="mb-3" key={filter.key}>
65-
<h4>
66-
<Form.Check
67-
className="filter"
68-
inline
69-
id={filter.key}
70-
type="checkbox"
71-
checked={Boolean(filters[filter.key])}
72-
onChange={(event) => onChange(filter.key, event.target.checked)}
73-
label={filter.label}
74-
/>
75-
</h4>
76-
<hr />
77-
</Form.Group>
78-
))}
64+
<ListGroup className="filter-field-list mb-3">
65+
{FILTER_FIELDS.map((filter) => {
66+
const isChecked = Boolean(filters[filter.key]);
67+
68+
return (
69+
<ListGroup.Item
70+
as="label"
71+
action
72+
className={`filter-field-item ${isChecked ? "is-checked" : ""}`}
73+
htmlFor={filter.key}
74+
key={filter.key}
75+
>
76+
<Form.Check.Input
77+
className="filter-field-checkbox"
78+
id={filter.key}
79+
type="checkbox"
80+
checked={isChecked}
81+
onChange={(event) => onChange(filter.key, event.target.checked)}
82+
/>
83+
<span className="filter-field-item-label">{filter.label}</span>
84+
</ListGroup.Item>
85+
);
86+
})}
87+
</ListGroup>
7988
</Col>
8089
</Row>
8190

8291
<Row>
83-
<Col className="bg-primary rounded py-2 my-2">
84-
<Form.Check
85-
className="filter"
86-
id="publish"
87-
type="checkbox"
88-
checked={Boolean(filters.publish)}
89-
onChange={(event) => onChange("publish", event.target.checked)}
90-
label={`Show only those verified for ${thisYear}.`}
91-
/>
92+
<Col>
93+
<ListGroup className="publish-filter-list my-2">
94+
<ListGroup.Item
95+
as="label"
96+
action
97+
className={`filter-field-item ${Boolean(filters.publish) ? "is-checked" : ""}`}
98+
htmlFor="publish"
99+
>
100+
<Form.Check.Input
101+
className="filter-field-checkbox"
102+
id="publish"
103+
type="checkbox"
104+
checked={Boolean(filters.publish)}
105+
onChange={(event) => onChange("publish", event.target.checked)}
106+
/>
107+
<span className="filter-field-item-label">Show only those verified for {thisYear}.</span>
108+
</ListGroup.Item>
109+
</ListGroup>
92110
</Col>
93111
</Row>
94112
<Row>

src/features/map/LeafletController.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,10 @@ export class LeafletController {
152152
this.map.addControl(
153153
L.control.basemaps({
154154
position: "topright",
155-
basemaps: [this.baseLayers.dark, this.baseLayers.light],
155+
basemaps: [
156+
this.baseLayers.dark,
157+
this.baseLayers.light,
158+
],
156159
tileX: 4550,
157160
tileY: 6176,
158161
tileZ: 14

src/features/modals/FeatureModal.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ const FeatureModal = ({ show, onHide, feature, goodFridayDate, currentYear }) =>
174174
</Col>
175175
</Row>
176176

177-
<Row xs={1} sm={2} md={3} lg={5} xl={12} className="g-2 mb-3">
177+
<Row xs={2} sm={2} md={3} lg={5} xl={12} className="g-2 mb-3">
178178
{booleanPanels.map((panel) => (
179179
<Col key={panel.label}>
180180
<BooleanPanel label={panel.label} value={panel.value} />

0 commit comments

Comments
 (0)