Skip to content

Commit 5271731

Browse files
authored
Merge pull request #1812 from HuanFengYeh/fix-hierarchical-checkbox-icon
Refactor Hierarchical Menu UI: Toggle Icon, Checkbox Styling, and Layout.
2 parents 11191da + 86314be commit 5271731

File tree

2 files changed

+32
-14
lines changed

2 files changed

+32
-14
lines changed

components/search/HierarchicalMenuWidget.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import type { SearchResults } from "algoliasearch-helper"
33
import type { Connector } from "instantsearch.js"
44
import type { AdditionalWidgetProperties } from "react-instantsearch"
55
import { useCallback, useEffect, useMemo, useState } from "react"
6+
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
7+
import { faMinus, faPlus } from "@fortawesome/free-solid-svg-icons"
68

79
const cx = (...classNames: string[]): string =>
810
classNames.filter(Boolean).join(" ")
@@ -369,7 +371,11 @@ const MultiselectHierarchicalMenuItem = ({
369371
hasSubLevel ? "" : "--child"
370372
}`}
371373
>
372-
{isOpen ? "-" : "+"}
374+
{isOpen ? (
375+
<FontAwesomeIcon icon={faMinus} size="2xs" />
376+
) : (
377+
<FontAwesomeIcon icon={faPlus} size="2xs" />
378+
)}
373379
</button>
374380
) : (
375381
<input

components/search/SearchContainer.tsx

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ export const SearchContainer = styled.div`
149149
150150
.ais-MultiselectHierarchicalMenu-list {
151151
background-color: white;
152-
padding: 1rem;
152+
padding: 0.5rem 1rem 1rem;
153153
border-radius: 4px;
154154
margin-bottom: 1.5rem;
155155
max-height: 250px;
@@ -201,33 +201,34 @@ export const SearchContainer = styled.div`
201201
width: 100%;
202202
list-style: none;
203203
}
204+
204205
.ais-MultiselectHierarchicalMenu-checkbox--child {
205206
box-shadow: none;
206207
outline: 1px solid black;
207208
border-radius: 1px;
208209
color: var(--bs-blue);
209-
margin-right: 6px;
210210
cursor: pointer;
211+
appearance: none;
212+
background-color: #fff;
213+
border: 1px solid var(--bs-blue);
214+
height: 1rem;
215+
margin: 0 0.5rem 0 0;
216+
min-width: 1rem;
211217
}
212-
.ais-MultiselectHierarchicalMenu-item--selected
213-
.ais-MultiselectHierarchicalMenu-label {
214-
font-weight: bold;
215-
}
216-
.ais-MultiselectHierarchicalMenu-item--child--selected
217-
.ais-MultiselectHierarchicalMenu-label--child {
218-
font-weight: bold;
219-
}
218+
220219
.ais-MultiselectHierarchicalMenu-item--child--selected
221220
.ais-MultiselectHierarchicalMenu-checkbox--child {
222221
background-image: url("/check-solid.svg");
223222
background-size: 0.75rem;
224223
background-position: center;
225224
background-repeat: no-repeat;
226225
}
227-
.ais-MultiselectHierarchicalMenu-item--child {
228-
font-size: 1rem;
229-
border-top: dashed 1px;
226+
227+
.ais-MultiselectHierarchicalMenu-item--selected
228+
.ais-MultiselectHierarchicalMenu-label {
229+
font-weight: bold;
230230
}
231+
231232
.ais-MultiselectHierarchicalMenu-label--child {
232233
white-space: normal;
233234
display: flex;
@@ -236,6 +237,17 @@ export const SearchContainer = styled.div`
236237
gap: 10px;
237238
cursor: pointer;
238239
}
240+
241+
.ais-MultiselectHierarchicalMenu-item--child--selected
242+
.ais-MultiselectHierarchicalMenu-label--child {
243+
font-weight: bold;
244+
}
245+
246+
.ais-MultiselectHierarchicalMenu-item--child {
247+
font-size: 1rem;
248+
border-top: dashed 1px;
249+
}
250+
239251
.ais-MultiselectHierarchicalMenu-count--child {
240252
background: var(--bs-blue);
241253
color: white;

0 commit comments

Comments
 (0)