({initialTag}: {initialTag?: string})
| 231 | }; |
| 232 | |
| 233 | function MobileNav({initialTag}: {initialTag?: string}) { |
| 234 | let {pages, currentPage} = useRouter(); |
| 235 | let overlayTriggerState = useContext(OverlayTriggerStateContext); |
| 236 | let [searchFocused, setSearchFocused] = useState(false); |
| 237 | let iconFilter = useIconFilter(); |
| 238 | let isOpen = !!overlayTriggerState?.isOpen; |
| 239 | |
| 240 | const { |
| 241 | selectedLibrary, |
| 242 | setSelectedLibrary, |
| 243 | orderedLibraries: libraries, |
| 244 | searchValue, |
| 245 | setSearchValue, |
| 246 | sectionTagsForDisplay: sectionTags, |
| 247 | selectedTagId: selectedSection, |
| 248 | setSelectedTagId: setSelectedSection, |
| 249 | handleTagSelectionChange, |
| 250 | filteredIcons, |
| 251 | isIconsSelected, |
| 252 | selectedItems, |
| 253 | getPlaceholderText |
| 254 | } = useSearchMenuState({ |
| 255 | pages, |
| 256 | currentPage, |
| 257 | initialTag, |
| 258 | isOpen |
| 259 | }); |
| 260 | |
| 261 | const filteredColors = useFilteredColors(searchValue); |
| 262 | const isColorsSelected = selectedSection === 'colors'; |
| 263 | const isTypographySelected = selectedSection === 'typography'; |
| 264 | |
| 265 | let handleSearchFocus = () => { |
| 266 | setSearchFocused(true); |
| 267 | }; |
| 268 | |
| 269 | let handleSearchBlur = () => { |
| 270 | if (searchValue === '') { |
| 271 | setSearchFocused(false); |
| 272 | } |
| 273 | }; |
| 274 | |
| 275 | let handleSearchChange = (value: string) => { |
| 276 | setSearchValue(value); |
| 277 | if (value === '' && !searchFocused) { |
| 278 | setSearchFocused(false); |
| 279 | } |
| 280 | }; |
| 281 | |
| 282 | // Delay closing until the page updates (or the skeleton shows). |
| 283 | let lastPage = useRef(currentPage); |
| 284 | useEffect(() => { |
| 285 | if (currentPage !== lastPage.current && overlayTriggerState?.isOpen) { |
| 286 | overlayTriggerState?.close(); |
| 287 | } |
| 288 | lastPage.current = currentPage; |
| 289 | }, [currentPage, overlayTriggerState]); |
| 290 |
nothing calls this directly
no test coverage detected