I don't understand. What do you mean by *"handle those keys inside the
input field"*?
The problem is that if we prevent the default arrow key behaviour with
preventDefault, writing into the input field is also prevented.
On Thursday, July 28, 2016 at 1:33:00 PM UTC+2, Zeljko Nesic wrote:
>
> I today had a plan of rewriting my dropdown component from Angular to Elm,
> which was inspired by SemanticUI's one.
>
> Anyway, my solution was handle those keys inside the input field.
>
> Also, make sure, just to preventDefault, and let propagation fall through.
> == { stopPropagation = False , preventDefault = True }
>
> hope this helps
>
> On Monday, February 15, 2016 at 8:29:59 PM UTC+1, Bernd Meyer wrote:
>>
>> I'm trying to create a search selection widget like
>> http://semantic-ui.com/modules/dropdown.html#search-selection in elm. I
>> would the user to be able to browse through the options using the arrow
>> keys. In order to avoid scrolling in the browser when an arrow key is
>> pressed I'm using onWithOptions with preventDefault True. This seems to
>> work however, but the input functionality is broken since all keystrokes
>> are consumed by the key handler. Here is the relevant part of the code.
>>
>> handleKey: List String -> Int -> Action
>>> handleKey options code =
>>> case code of
>>> 13 -> Submit (List.head options)
>>> 27 -> Close
>>> _ -> NoOp
>>>
>>> openDropdown : Signal.Address Action -> Model -> List String -> Html
>>> openDropdown address model options =
>>> div [ attribute "aria-label" "Filter venue"
>>> , class "ui search selection dropdown active visible"
>>> , onWithOptions "keydown" evOptions keyCode (\code ->
>>> Signal.message address (handleKey options code))
>>> ]
>>> [ i [ class "dropdown icon" ] []
>>> , input
>>> [ on "input" targetValue (Signal.message address << Update)
>>> , placeholder model.value
>>> , tabindex 0] []
>>> , div [ class "text" ] [ text model.inputValue ]
>>> , div [ class "menu transition visible", attribute "style"
>>> "display: block !important;", tabindex -1 ]
>>> (itemsView address model.value filtered)
>>> ]
>>
>>
>>
--
You received this message because you are subscribed to the Google Groups "Elm
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.