blob: dc55b60d1e16c96d7fa5f5456fdaf6b3bcb70d78 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
module Dialog.AddCategory.View exposing
( button
)
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (..)
import Task
import Form exposing (Form)
import Form.Field as Field exposing (Field)
import Utils.Form as Form
import Dialog
import Dialog.AddCategory.Model as AddCategory
import Dialog.Msg as DialogMsg
import Tooltip
import View.Form as Form
import View.Events exposing (onSubmitPrevDefault)
import Msg exposing (Msg)
import LoggedIn.Msg as LoggedInMsg
import LoggedIn.Home.Msg as HomeMsg
import Model.Translations exposing (getMessage)
import Model.View exposing (View(LoggedInView))
import LoggedData exposing (LoggedData)
import LoggedIn.Home.Model as HomeModel
button : LoggedData -> List (String, Field) -> String -> Html Msg -> Maybe String -> Html Msg
button loggedData initialForm title buttonContent tooltip =
let dialogConfig =
{ className = "categoryDialog"
, title = getMessage loggedData.translations title
, body = \model -> addCategoryForm loggedData model.addCategory
, confirm = getMessage loggedData.translations "Confirm"
, confirmMsg = submitForm << .addCategory
, undo = getMessage loggedData.translations "Undo"
}
in Html.button
( ( case tooltip of
Just message -> Tooltip.show Msg.Tooltip message
Nothing -> []
)
++ [ onClick (Msg.Dialog <| Dialog.OpenWithUpdate dialogConfig (DialogMsg.Init "categoryname" (DialogMsg.AddCategoryMsg (Form.Reset initialForm)))) ]
)
[ buttonContent ]
addCategoryForm : LoggedData -> Form String AddCategory.Model -> Html Msg
addCategoryForm loggedData addCategory =
let htmlMap = Html.map (Msg.Dialog << Dialog.Update << DialogMsg.AddCategoryMsg)
in Html.form
[ onSubmitPrevDefault Msg.NoOp ]
[ htmlMap <| Form.textInput loggedData.translations addCategory "category" "name"
, htmlMap <| Form.colorInput loggedData.translations addCategory "category" "color"
, Form.hiddenSubmit (submitForm addCategory)
]
submitForm : Form String AddCategory.Model -> Msg
submitForm addCategory =
case Form.getOutput addCategory of
Just data ->
case data.id of
Just categoryId ->
Msg.Dialog <| Dialog.UpdateAndClose <| Msg.EditCategory categoryId (String.trim data.name) data.color
Nothing ->
Msg.Dialog <| Dialog.UpdateAndClose <| Msg.CreateCategory (String.trim data.name) data.color
Nothing ->
Msg.Dialog <| Dialog.Update <| DialogMsg.AddCategoryMsg <| Form.Submit
|