toddler.dropdown
*dropdown*
dynamic
Dropdown context. Used by Input, Options and Popup to apply logic from use-dropdown hook context
Input
Component will render input DOM element using handlers and values from use-dropdown hook provided by dropdown context.
Options
Component will render options DOM elements using handlers and values from use-dropdown hook provided by dropdown context.
Popup
Component will render popup element using handlers and values from use-dropdown hook provided by dropdown context.
use-dropdown
(use-dropdown {:keys [value options on-change onChange new-fn search-fn area area-position disabled read-only context-fn], :or {search-fn str, context-fn (constantly nil)}})Abstracts dropdown mechanincs. Expects options prop that holds available options for dropdown, value and on-change callback that will be called with actual value of selected option.
Optional:
- search-fn - will be applied to options to display string representation
 - new-fn - when provided will be called when search-fn doesn’t match any of available options
 
Hook will return map with following state and handler keys:
- search - value that should be displayed in input
 - value - actual value
 - opened - true|false if dropdown is opened
 - options - dropdown options
 - focus - when called will focus option
 - cursor - position of selected value
 - input - reference that you should add to input element
 - area - reference that you should add to dropdown element
 - search-fn - function that will be used to compute how to display options. Should return string
 - ref-fn - function that should be provided to option :ref. So that focus can be called to scroll into view selected option
 - read-only true|false
 - discard! - when called will reset dropdown
 - toggle! - open|closes dropdown
 - open! - opens dropdown
 - close! - closes dropdown
 - select! - will call on change for value
 - popup - reference that should be passed to popup element
 - on-change - Should be passed to input element
 - on-key-down - Should be passed to input element