Improve e-mail input field

Closes: #987
This commit is contained in:
eikek 2021-11-13 00:21:04 +01:00
parent ee2a4aaaf0
commit 0cb2bde160
4 changed files with 42 additions and 5 deletions

View File

@ -21,7 +21,7 @@ import Data.DropdownStyle as DS
import Data.Flags exposing (Flags) import Data.Flags exposing (Flags)
import Html exposing (..) import Html exposing (..)
import Html.Attributes exposing (..) import Html.Attributes exposing (..)
import Html.Events exposing (onClick, onInput) import Html.Events exposing (onBlur, onClick, onInput)
import Http import Http
import Styles as S import Styles as S
import Util.Html exposing (onKeyUp) import Util.Html exposing (onKeyUp)
@ -34,6 +34,7 @@ type alias Model =
, menuOpen : Bool , menuOpen : Bool
, candidates : List String , candidates : List String
, active : Maybe String , active : Maybe String
, backspaceCount : Int
} }
@ -43,6 +44,7 @@ init =
, menuOpen = False , menuOpen = False
, candidates = [] , candidates = []
, active = Nothing , active = Nothing
, backspaceCount = 0
} }
@ -94,7 +96,14 @@ update flags current msg model =
email = email =
Maybe.withDefault model.input model.active Maybe.withDefault model.input model.active
in in
update flags current (AddEmail email) model if email == "" then
( model, Cmd.none, current )
else
update flags current (AddEmail email) model
removeLast =
( { model | backspaceCount = 0 }, Cmd.none, Util.List.dropRight 1 current )
in in
case Util.Html.intToKeyCode code of case Util.Html.intToKeyCode code of
Just Util.Html.Up -> Just Util.Html.Up ->
@ -128,6 +137,13 @@ update flags current msg model =
Just Util.Html.Space -> Just Util.Html.Space ->
addCurrent addCurrent
Just Util.Html.Backspace ->
if model.backspaceCount >= 1 then
removeLast
else
( { model | backspaceCount = model.backspaceCount + 1 }, Cmd.none, current )
_ -> _ ->
( model, Cmd.none, current ) ( model, Cmd.none, current )
@ -154,9 +170,12 @@ type alias ViewSettings =
view2 : ViewSettings -> List String -> Model -> Html Msg view2 : ViewSettings -> List String -> Model -> Html Msg
view2 cfg values model = view2 cfg values model =
div [ class "text-sm flex-row space-x-2 relative" ] div [ class "text-sm flex-row space-x-2 relative" ]
[ div [ class cfg.style.link ] [ div
[ class cfg.style.link
, class "flex-wrap"
]
[ div [ div
[ class "flex flex-row space-x-2 mr-2" [ class "flex flex-row space-x-2 mr-2 flex-wrap"
, classList [ ( "hidden", List.isEmpty values ) ] , classList [ ( "hidden", List.isEmpty values ) ]
] ]
(List.map renderValue2 values) (List.map renderValue2 values)
@ -166,6 +185,7 @@ view2 cfg values model =
, placeholder cfg.placeholder , placeholder cfg.placeholder
, onKeyUp KeyPress , onKeyUp KeyPress
, onInput SetInput , onInput SetInput
, onBlur (KeyPress 13)
, class "inline-flex w-24 border-0 px-0 focus:ring-0 h-6 text-sm" , class "inline-flex w-24 border-0 px-0 focus:ring-0 h-6 text-sm"
, class "placeholder-gray-400 dark:text-bluegray-200 dark:bg-bluegray-800 dark:border-bluegray-500" , class "placeholder-gray-400 dark:text-bluegray-200 dark:bg-bluegray-800 dark:border-bluegray-500"
] ]

View File

@ -44,6 +44,8 @@ type KeyCode
| Right | Right
| Enter | Enter
| Space | Space
| Backspace
| Tab
| ESC | ESC
| Letter_C | Letter_C
| Letter_N | Letter_N
@ -91,6 +93,12 @@ intToKeyCode code =
32 -> 32 ->
Just Space Just Space
8 ->
Just Backspace
9 ->
Just Tab
27 -> 27 ->
Just ESC Just ESC

View File

@ -34,7 +34,10 @@ field shows completion proposals from all contacts in your address
book (from organizations and persons). Choose an address by pressing book (from organizations and persons). Choose an address by pressing
*Enter* or by clicking a proposal from the list. The proposal list can *Enter* or by clicking a proposal from the list. The proposal list can
be iterated by the *Up* and *Down* arrows. You can type in any be iterated by the *Up* and *Down* arrows. You can type in any
address, of course, it doesn't need to match a proposal. address, of course, it doesn't need to match a proposal. If you type
in an arbitrary address, hit *Enter* or *Space* in order to add the
current address. You can hit *Backspace* two times to remove the last
e-mail address.
If you have multiple mail settings defined, you can choose in the top If you have multiple mail settings defined, you can choose in the top
dropdown which account to use for sending. dropdown which account to use for sending.

View File

@ -113,6 +113,12 @@ to copy it.
{{ figure(file="share-03.png") }} {{ figure(file="share-03.png") }}
When typing in an e-mail address, there are completion proposals
provided from your address book. If you type in an arbitrary address
(not in the proposals), hit *Enter* or *Space* in order to add the
current address. You can hit *Backspace* two times to remove the last
e-mail address.
The new share can now be found in *Collective Profile -> Shares*. The new share can now be found in *Collective Profile -> Shares*.
Clicking *Done* brings you back to the search results. Clicking *Done* brings you back to the search results.