Make transition strategy the default and move formId argument to rendering.

This commit is contained in:
Dillon Kearns 2023-03-03 18:45:25 -08:00
parent a8b8e7421d
commit f4cf8a7069
21 changed files with 70 additions and 80 deletions

View File

@ -188,8 +188,7 @@ createFile { moduleName, fields } =
Just justFormHelp ->
[ Html.h2 [] [ Html.text "Form" ]
, justFormHelp.form
|> Form.toDynamicTransition "form"
|> Form.renderHtml [] (Elm.get "errors" >> Elm.just) app Elm.unit
|> Form.renderHtml "form" [] (Elm.get "errors" >> Elm.just) app Elm.unit
]
Nothing ->
@ -266,8 +265,8 @@ errorsView =
(Type.namedWith [ "Html" ]
"Html"
[ Type.namedWith
[ "Pages", "Msg" ]
"Msg"
[ "PagesMsg" ]
"PagesMsg"
[ Type.named [] "Msg" ]
]
)

View File

@ -215,8 +215,8 @@ view app shared model =
)
]
[ form
|> Form.toDynamicFetcher "dark-mode"
|> Form.renderStyledHtml [] (.formResponse >> Just) app app.data.isDarkMode
|> Form.toDynamicFetcher
|> Form.renderStyledHtml "dark-mode" [] (.formResponse >> Just) app app.data.isDarkMode
, Html.text <|
"Current mode: "
++ (if app.data.isDarkMode then

View File

@ -245,8 +245,7 @@ view app shared =
[]
[ Html.text <| "Edit profile " ++ user.first ++ " " ++ user.last ]
, form
|> Form.toDynamicTransition "user-form"
|> Form.renderHtml
|> Form.renderHtml "user-form"
[ Attr.style "display" "flex"
, Attr.style "flex-direction" "column"
, Attr.style "gap" "20px"

View File

@ -123,9 +123,8 @@ view app shared =
{ title = "GET Form Example"
, body =
[ form
|> Form.toDynamicTransition "user-form"
|> Form.withGetMethod
|> Form.renderHtml
|> Form.renderHtml "user-form"
[ Attr.style "display" "flex"
, Attr.style "flex-direction" "column"
, Attr.style "gap" "20px"

View File

@ -218,8 +218,8 @@ view app shared =
)
]
, form
|> Form.toDynamicTransition "form"
|> Form.renderStyledHtml []
|> Form.renderStyledHtml "form"
[]
(.errors >> Just)
app
()

View File

@ -379,8 +379,7 @@ createFile moduleName fields =
Elm.list
[ Html.h2 [] [ Html.text "Form" ]
, form.call []
|> Gen.Form.toDynamicTransition "form"
|> Gen.Form.renderStyledHtml [] (Elm.get "errors" >> Elm.just) app Elm.unit
|> Gen.Form.renderStyledHtml "form" [] (Elm.get "errors" >> Elm.just) app Elm.unit
]
}
, update =

View File

@ -261,8 +261,7 @@ view app shared =
[]
[ Html.text <| "Edit profile " ++ user.first ++ " " ++ user.last ]
, form
|> Form.toDynamicTransition "test1"
|> Form.renderHtml
|> Form.renderHtml "test1"
[ Attr.style "display" "flex"
, Attr.style "flex-direction" "column"
, Attr.style "gap" "20px"

View File

@ -201,9 +201,9 @@ view static sharedModel model =
, body =
[ Html.h2 [] [ Html.text "Search" ]
, form
|> Form.toDynamicTransition "test1"
|> Form.withGetMethod
|> Form.renderHtml []
|> Form.renderHtml "test1"
[]
-- TODO pass in server data
(\_ -> Nothing)
static

View File

@ -265,8 +265,8 @@ view app shared model =
]
, flashView app.data.flashMessage
, form
|> Form.toDynamicTransition "test1"
|> Form.renderHtml []
|> Form.renderHtml "test1"
[]
-- TODO pass in server data
(\_ -> Nothing)
app

View File

@ -719,8 +719,9 @@ view app model sharedModel =
|> Debug.toString
)
, form
|> Form.toDynamicTransition "test"
|> Form.renderStyledHtml []
|> Form.toDynamicTransition
|> Form.renderStyledHtml "test"
[]
--app.action
-- |> Maybe.andThen .formResponse
(\_ -> Nothing)

View File

@ -126,8 +126,7 @@ view maybeUrl sharedModel model app =
{ title = "Create Group"
, body =
[ postForm
|> Form.toDynamicTransition "create-group"
|> Form.renderHtml []
|> Form.renderHtml "create-group" []
-- TODO pass in form response from ActionData
Nothing
app

View File

@ -129,8 +129,8 @@ view maybeUrl sharedModel model app =
, body =
[ Html.h2 [] [ Html.text "Example" ]
, dependentParser
|> Form.toDynamicTransition "dependent-example"
|> Form.renderHtml []
|> Form.toDynamicTransition
|> Form.renderHtml "dependent-example" []
-- TODO pass in form response from ActionData
Nothing
app

View File

@ -264,7 +264,6 @@ view maybeUrl sharedModel app =
)
]
, form
|> Form.toDynamicTransition "login"
|> Form.renderHtml [] app.action app ()
|> Form.renderHtml "login" [] app.action app ()
]
}

View File

@ -210,8 +210,7 @@ view maybeUrl sharedModel model app =
, body =
[ Html.h2 [] [ Html.text "New item" ]
, form
|> Form.toDynamicTransition "form"
|> Form.renderHtml
|> Form.renderHtml "form"
[ Attr.style "display" "flex"
, Attr.style "flex-direction" "column"
, Attr.style "gap" "20px"

View File

@ -120,8 +120,7 @@ view maybeUrl sharedModel model app =
, body =
[ Html.h2 [] [ Html.text "Example" ]
, dependentParser
|> Form.toDynamicTransition "form"
|> Form.renderHtml []
|> Form.renderHtml "form" []
-- TODO pass in form response from ActionData
Nothing
app

View File

@ -279,8 +279,7 @@ view maybeUrl sharedModel model app =
_ ->
Html.text "No errors"
, formParser
|> Form.toDynamicTransition "edit-form"
|> Form.renderHtml
|> Form.renderHtml "edit-form"
[ Attr.style "display" "flex"
, Attr.style "flex-direction" "column"
, Attr.style "gap" "20px"

View File

@ -340,8 +340,7 @@ view maybeUrl sharedModel model app =
, body =
[ Html.h2 [] [ Html.text "Update item" ]
, form
|> Form.toDynamicTransition "form"
|> Form.renderHtml
|> Form.renderHtml "form"
[ Attr.style "display" "flex"
, Attr.style "flex-direction" "column"
, Attr.style "gap" "20px"
@ -354,8 +353,8 @@ view maybeUrl sharedModel model app =
|> Maybe.map pendingView
|> Maybe.withDefault (Html.div [] [])
, deleteForm
|> Form.toDynamicTransition "delete-form"
|> Form.renderHtml []
|> Form.toDynamicTransition
|> Form.renderHtml "delete-form" []
-- TODO
Nothing
app

View File

@ -395,8 +395,9 @@ view app shared =
Html.div []
[ Html.text <| "Hello! You are already logged in as " ++ username
, logoutForm
|> Form.toDynamicTransition "logout"
|> Form.renderHtml []
|> Form.toDynamicTransition
|> Form.renderHtml "logout"
[]
(\_ -> Nothing)
app
()
@ -406,8 +407,7 @@ view app shared =
Html.text "You aren't logged in yet."
]
, form
|> Form.toDynamicTransition "login"
|> Form.renderHtml [] .maybeError app ()
|> Form.renderHtml "login" [] .maybeError app ()
]
]
}

View File

@ -493,11 +493,11 @@ view app shared model =
[ class "todoapp" ]
[ addItemForm
|> Form.toDynamicFetcher
|> Form.withOnSubmit (\_ -> NewItemSubmitted)
|> Form.renderHtml
("new-item-"
++ (model.nextId |> Time.posixToMillis |> String.fromInt)
)
|> Form.withOnSubmit (\_ -> NewItemSubmitted)
|> Form.renderHtml
[ class "create-form"
, hidden (not (List.isEmpty failedAddItemActions))
]
@ -509,9 +509,10 @@ view app shared model =
|> List.indexedMap
(\index ( key, createFetcherErrors ) ->
addItemForm
|> Form.toDynamicFetcher key
|> Form.toDynamicFetcher
|> Form.withOnSubmit (\_ -> NewItemSubmitted)
|> Form.renderHtml [ class "create-form", hidden (index /= 0) ]
|> Form.renderHtml key
[ class "create-form", hidden (index /= 0) ]
(\_ -> Nothing)
app
(Just createFetcherErrors)
@ -735,8 +736,8 @@ viewEntries app visibility entries =
, style "visibility" cssVisibility
]
[ toggleAllForm
|> Form.toDynamicFetcher "toggle-all"
|> Form.renderHtml [] (\_ -> Nothing) app { allCompleted = allCompleted }
|> Form.toDynamicFetcher
|> Form.renderHtml "toggle-all" [] (\_ -> Nothing) app { allCompleted = allCompleted }
, Keyed.ul [ class "todo-list" ] <|
List.map (viewKeyedEntry app) (List.filter isVisible entries)
]
@ -761,18 +762,18 @@ viewEntry app todo =
[ div
[ class "view" ]
[ checkItemForm
|> Form.toDynamicFetcher ("toggle-" ++ todo.id)
|> Form.renderHtml [] (\_ -> Nothing) app todo
|> Form.toDynamicFetcher
|> Form.renderHtml ("toggle-" ++ todo.id) [] (\_ -> Nothing) app todo
, editItemForm
|> Form.toDynamicFetcher ("edit-" ++ todo.id)
|> Form.renderHtml [] (\_ -> Nothing) app todo
|> Form.toDynamicFetcher
|> Form.renderHtml ("edit-" ++ todo.id) [] (\_ -> Nothing) app todo
, if todo.isSaving then
LoadingSpinner.view
else
deleteItemForm
|> Form.toDynamicFetcher ("delete-" ++ todo.id)
|> Form.renderHtml [] (\_ -> Nothing) app todo
|> Form.toDynamicFetcher
|> Form.renderHtml ("delete-" ++ todo.id) [] (\_ -> Nothing) app todo
]
]
@ -862,8 +863,8 @@ visibilitySwap visibilityParam visibility actualVisibility =
viewControlsClear : App Data ActionData RouteParams -> Int -> Html (PagesMsg Msg)
viewControlsClear app entriesCompleted =
clearCompletedForm
|> Form.toDynamicFetcher "clear-completed"
|> Form.renderHtml [] (\_ -> Nothing) app { entriesCompleted = entriesCompleted }
|> Form.toDynamicFetcher
|> Form.renderHtml "clear-completed" [] (\_ -> Nothing) app { entriesCompleted = entriesCompleted }
infoFooter : Html msg

View File

@ -52,9 +52,8 @@ type alias PagesMsg userMsg =
-- `Form.renderHtml` gives us `Html (PagesMsg msg)`, so we don't need to wrap its Msg type
, logoutForm
|> Form.toDynamicTransition "logout"
|> Form.withOnSubmit (\_ -> NewItemSubmitted)
|> Form.renderHtml [] (\_ -> Nothing) app Nothing
|> Form.renderHtml "logout" [] (\_ -> Nothing) app Nothing
]
}

View File

@ -170,7 +170,7 @@ buildNoState definitions builder_ =
ServerRender declarations builder ->
userFunction builder.moduleName
{ view =
\shared _ app ->
\app shared _ ->
definitions.view
{ shared = shared
, app = app
@ -191,7 +191,7 @@ buildNoState definitions builder_ =
PreRender declarations builder ->
userFunction builder.moduleName
{ view =
\shared _ app ->
\app shared _ ->
definitions.view
{ shared = shared
, app = app
@ -257,7 +257,7 @@ buildWithLocalState definitions builder_ =
ServerRender declarations builder ->
userFunction builder.moduleName
{ view =
\shared model app ->
\app shared model ->
definitions.view
{ shared = shared
, model = model
@ -266,7 +266,7 @@ buildWithLocalState definitions builder_ =
, localState =
Just
{ update =
\shared app msg model ->
\app shared msg model ->
definitions.update
{ shared = shared
, app = app
@ -274,7 +274,7 @@ buildWithLocalState definitions builder_ =
, model = model
}
, init =
\shared app ->
\app shared ->
definitions.init
{ shared = shared
, app = app
@ -304,7 +304,7 @@ buildWithLocalState definitions builder_ =
PreRender declarations builder ->
userFunction builder.moduleName
{ view =
\shared model app ->
\app shared model ->
definitions.view
{ shared = shared
, model = model
@ -313,7 +313,7 @@ buildWithLocalState definitions builder_ =
, localState =
Just
{ update =
\shared app msg model ->
\app shared msg model ->
definitions.update
{ shared = shared
, app = app
@ -321,7 +321,7 @@ buildWithLocalState definitions builder_ =
, model = model
}
, init =
\shared app ->
\app shared ->
definitions.init
{ shared = shared
, app = app
@ -385,7 +385,7 @@ buildWithSharedState definitions builder_ =
ServerRender declarations builder ->
userFunction builder.moduleName
{ view =
\shared model app ->
\app shared model ->
definitions.view
{ shared = shared
, model = model
@ -394,7 +394,7 @@ buildWithSharedState definitions builder_ =
, localState =
Just
{ update =
\shared app msg model ->
\app shared msg model ->
definitions.update
{ shared = shared
, app = app
@ -402,7 +402,7 @@ buildWithSharedState definitions builder_ =
, model = model
}
, init =
\shared app ->
\app shared ->
definitions.init
{ shared = shared
, app = app
@ -432,7 +432,7 @@ buildWithSharedState definitions builder_ =
PreRender declarations builder ->
userFunction builder.moduleName
{ view =
\shared model app ->
\app shared model ->
definitions.view
{ shared = shared
, model = model
@ -441,7 +441,7 @@ buildWithSharedState definitions builder_ =
, localState =
Just
{ update =
\shared app msg model ->
\app shared msg model ->
definitions.update
{ shared = shared
, app = app
@ -449,7 +449,7 @@ buildWithSharedState definitions builder_ =
, model = model
}
, init =
\shared app ->
\app shared ->
definitions.init
{ shared = shared
, app = app
@ -520,13 +520,13 @@ userFunction moduleName definitions =
case definitions.localState of
Just _ ->
Elm.Declare.fn3 "view"
( "app", Just appType )
( "shared"
, Just (Elm.Annotation.named [ "Shared" ] "Model")
)
( "model", Just (Elm.Annotation.named [] "Model") )
( "app", Just appType )
(\shared model app ->
definitions.view shared model app
(\app shared model ->
definitions.view app shared model
|> Elm.withType
(Elm.Annotation.namedWith [ "View" ]
"View"
@ -547,14 +547,14 @@ userFunction moduleName definitions =
}
viewDeclaration =
Elm.Declare.fn2 "view"
( "app", Just appType )
( "shared"
, Just (Elm.Annotation.named [ "Shared" ] "Model")
)
( "app", Just appType )
(definitions.view Elm.unit)
in
{ declaration = viewDeclaration.declaration
, call = \_ -> viewDeclaration.call
, call = \app shared _ -> viewDeclaration.call app shared
, callFrom = \a _ c d -> viewDeclaration.callFrom a c d
}
@ -575,17 +575,17 @@ userFunction moduleName definitions =
(\localState ->
{ updateFn =
Elm.Declare.fn4 "update"
( "shared", Just (Elm.Annotation.named [ "Shared" ] "Model") )
( "app", Just appType )
( "shared", Just (Elm.Annotation.named [ "Shared" ] "Model") )
( "msg", Just (Elm.Annotation.named [] "Msg") )
( "model", Just (Elm.Annotation.named [] "Model") )
localState.update
, initFn =
Elm.Declare.fn2 "init"
( "shared", Just (Elm.Annotation.named [ "Shared" ] "Model") )
( "app", Just appType )
( "shared", Just (Elm.Annotation.named [ "Shared" ] "Model") )
(\shared app ->
localState.init shared app
localState.init app shared
|> Elm.withType
(Elm.Annotation.tuple
(localType "Model")