|
1 | 1 | import React from "react"; |
2 | 2 | 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"; |
4 | 4 | import { faBagShopping, faBeerMugEmpty, faClock, faUtensils, faWheelchair } from "@/icons/fontAwesome"; |
| 5 | +import "./FilterModal.css"; |
5 | 6 |
|
6 | 7 | const FILTER_FIELDS = [ |
7 | 8 | { key: "drive_thru", label: "Drive-Thru Available" }, |
@@ -60,35 +61,52 @@ const FilterModal = ({ show, onHide, filters, onChange }) => { |
60 | 61 | <Modal.Body className="p-4"> |
61 | 62 | <Row> |
62 | 63 | <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> |
79 | 88 | </Col> |
80 | 89 | </Row> |
81 | 90 |
|
82 | 91 | <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> |
92 | 110 | </Col> |
93 | 111 | </Row> |
94 | 112 | <Row> |
|
0 commit comments