Sha256: 261c15cc6517dd274ec28009d31acafc8f8f3504c83b7c3ea3a2a65f9e9212a1
Contents?: true
Size: 1.22 KB
Versions: 1
Compression:
Stored size: 1.22 KB
Contents
import React, { useContext } from "react"; import DropdownContext from "../context"; export const useHandleOnKeyDown = () => { const { focusedOptionIndex, filteredOptions, setFocusedOptionIndex, handleOptionClick, setIsDropDownClosed, handleBackspace, selected }= useContext(DropdownContext) return (e: React.KeyboardEvent) => { switch (e.key) { case "Backspace": case "Delete": handleBackspace(); break; case "ArrowDown": { e.preventDefault(); setIsDropDownClosed(false); const nextIndex = (focusedOptionIndex + 1) % filteredOptions.length; setFocusedOptionIndex(nextIndex); break; } case "ArrowUp": { e.preventDefault(); const nextIndexUp = (focusedOptionIndex - 1 + filteredOptions.length) % filteredOptions.length; setFocusedOptionIndex(nextIndexUp); break; } case "Enter": if (focusedOptionIndex !== -1) { e.preventDefault(); handleOptionClick(filteredOptions[focusedOptionIndex]); setFocusedOptionIndex(-1) } break; default: if (selected && selected.label) { e.preventDefault(); handleBackspace(); } break; } } };
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
playbook_ui-13.24.0.pre.alpha.PBNTR261NewKitDropdown2681 | app/pb_kits/playbook/pb_dropdown/hooks/useHandleOnKeydown.tsx |