diff --git a/elm.json b/elm.json index cf4fb0b7..a44d57f7 100644 --- a/elm.json +++ b/elm.json @@ -50,7 +50,7 @@ "dillonkearns/elm-bcp47-language-tag": "1.0.1 <= v < 2.0.0", "dillonkearns/elm-cli-options-parser": "3.2.0 <= v < 4.0.0", "dillonkearns/elm-date-or-date-time": "2.0.0 <= v < 3.0.0", - "dillonkearns/elm-form": "2.0.2 <= v < 3.0.0", + "dillonkearns/elm-form": "3.0.0 <= v < 4.0.0", "elm/browser": "1.0.2 <= v < 2.0.0", "elm/bytes": "1.0.8 <= v < 2.0.0", "elm/core": "1.0.5 <= v < 2.0.0", diff --git a/examples/base-path/elm.json b/examples/base-path/elm.json index 8e22db76..ddfdf036 100644 --- a/examples/base-path/elm.json +++ b/examples/base-path/elm.json @@ -16,7 +16,7 @@ "danyx23/elm-mimetype": "4.0.1", "dillonkearns/elm-bcp47-language-tag": "1.0.1", "dillonkearns/elm-date-or-date-time": "2.0.0", - "dillonkearns/elm-form": "2.0.2", + "dillonkearns/elm-form": "3.0.0", "dillonkearns/elm-markdown": "7.0.1", "elm/browser": "1.0.2", "elm/bytes": "1.0.8", diff --git a/examples/base-path/package-lock.json b/examples/base-path/package-lock.json index 31537ee8..cdfa011b 100644 --- a/examples/base-path/package-lock.json +++ b/examples/base-path/package-lock.json @@ -17,7 +17,8 @@ } }, "../..": { - "version": "3.0.0-beta.38", + "name": "elm-pages", + "version": "3.0.0-beta.40", "dev": true, "license": "BSD-3-Clause", "dependencies": { diff --git a/examples/blog-engine/app/Route/Admin/Slug_.elm b/examples/blog-engine/app/Route/Admin/Slug_.elm index 2f22c072..b974bf4c 100644 --- a/examples/blog-engine/app/Route/Admin/Slug_.elm +++ b/examples/blog-engine/app/Route/Admin/Slug_.elm @@ -153,7 +153,6 @@ view app shared model = [ Html.h2 [] [ Html.text "Form" ] , form |> Pages.Form.renderHtml [] - Pages.Form.Serial (Form.options "form" |> Form.withInput app.data.post |> Form.withServerResponse @@ -166,7 +165,6 @@ view app shared model = else deleteForm |> Pages.Form.renderHtml [] - Pages.Form.Serial (Form.options "delete") app ] diff --git a/examples/blog-engine/elm.json b/examples/blog-engine/elm.json index 9c4334a6..82c6337e 100644 --- a/examples/blog-engine/elm.json +++ b/examples/blog-engine/elm.json @@ -19,7 +19,7 @@ "dillonkearns/elm-bcp47-language-tag": "1.0.1", "dillonkearns/elm-cli-options-parser": "3.2.0", "dillonkearns/elm-date-or-date-time": "2.0.0", - "dillonkearns/elm-form": "2.0.2", + "dillonkearns/elm-form": "3.0.0", "dillonkearns/elm-graphql": "5.0.11", "dillonkearns/elm-markdown": "7.0.1", "elm/browser": "1.0.2", diff --git a/examples/blog-engine/package-lock.json b/examples/blog-engine/package-lock.json index 05979de6..b7fa9ed8 100644 --- a/examples/blog-engine/package-lock.json +++ b/examples/blog-engine/package-lock.json @@ -28,7 +28,7 @@ }, "../..": { "name": "elm-pages", - "version": "3.0.0-beta.38", + "version": "3.0.0-beta.40", "dev": true, "license": "BSD-3-Clause", "dependencies": { diff --git a/examples/docs/elm.json b/examples/docs/elm.json index 811b07c0..13494944 100644 --- a/examples/docs/elm.json +++ b/examples/docs/elm.json @@ -15,7 +15,7 @@ "danyx23/elm-mimetype": "4.0.1", "dillonkearns/elm-bcp47-language-tag": "1.0.1", "dillonkearns/elm-date-or-date-time": "2.0.0", - "dillonkearns/elm-form": "2.0.2", + "dillonkearns/elm-form": "3.0.0", "dillonkearns/elm-markdown": "7.0.1", "dillonkearns/elm-oembed": "1.0.0", "dillonkearns/elm-rss": "2.0.3", diff --git a/examples/docs/package-lock.json b/examples/docs/package-lock.json index 3107ba05..3b12a98e 100644 --- a/examples/docs/package-lock.json +++ b/examples/docs/package-lock.json @@ -22,7 +22,7 @@ }, "../..": { "name": "elm-pages", - "version": "3.0.0-beta.38", + "version": "3.0.0-beta.40", "dev": true, "license": "BSD-3-Clause", "dependencies": { diff --git a/examples/end-to-end/app/Route/DarkMode.elm b/examples/end-to-end/app/Route/DarkMode.elm index 9755f13a..97fbd401 100644 --- a/examples/end-to-end/app/Route/DarkMode.elm +++ b/examples/end-to-end/app/Route/DarkMode.elm @@ -212,9 +212,9 @@ view app shared model = ] [ form |> Pages.Form.renderStyledHtml [] - Pages.Form.Parallel (Form.options "dark-mode" |> Form.withInput app.data.isDarkMode + |> Pages.Form.withConcurrent ) app , Html.text <| diff --git a/examples/end-to-end/app/Route/Fetcher.elm b/examples/end-to-end/app/Route/Fetcher.elm index 535d01ec..81dfa68e 100644 --- a/examples/end-to-end/app/Route/Fetcher.elm +++ b/examples/end-to-end/app/Route/Fetcher.elm @@ -240,7 +240,6 @@ view app sharedModel model = , form |> Pages.Form.renderStyledHtml [] - Pages.Form.Serial (Form.options ("add-item-" ++ String.fromInt model.itemIndex) |> Form.withOnSubmit (\_ -> AddItemSubmitted) ) @@ -249,8 +248,9 @@ view app sharedModel model = [ deleteForm |> Pages.Form.renderStyledHtml [] - Pages.Form.Parallel - (Form.options "delete-all") + (Form.options "delete-all" + |> Pages.Form.withConcurrent + ) app ] , optimisticItems diff --git a/examples/end-to-end/app/Route/Form.elm b/examples/end-to-end/app/Route/Form.elm index 3860e081..2e142e8b 100644 --- a/examples/end-to-end/app/Route/Form.elm +++ b/examples/end-to-end/app/Route/Form.elm @@ -252,7 +252,6 @@ view app shared = , Attr.style "flex-direction" "column" , Attr.style "gap" "20px" ] - Pages.Form.Serial (Form.options "user-form" |> Form.withInput defaultUser |> Form.withServerResponse (app.action |> Maybe.map .formResponse) diff --git a/examples/end-to-end/app/Route/GetForm.elm b/examples/end-to-end/app/Route/GetForm.elm index 18ed6b0b..4638f401 100644 --- a/examples/end-to-end/app/Route/GetForm.elm +++ b/examples/end-to-end/app/Route/GetForm.elm @@ -130,7 +130,6 @@ view app shared = , Attr.style "flex-direction" "column" , Attr.style "gap" "20px" ] - Pages.Form.Serial (Form.options "user-form" |> Form.withInput app.data.filters |> Form.withGetMethod diff --git a/examples/end-to-end/app/Route/Login.elm b/examples/end-to-end/app/Route/Login.elm index 17d4fd89..a033ed7b 100644 --- a/examples/end-to-end/app/Route/Login.elm +++ b/examples/end-to-end/app/Route/Login.elm @@ -222,7 +222,6 @@ view app shared = , form |> Pages.Form.renderStyledHtml [] - Pages.Form.Serial (Form.options "form" |> Form.withServerResponse (app.action |> Maybe.map .errors) ) diff --git a/examples/end-to-end/elm.json b/examples/end-to-end/elm.json index 9a8287fc..613cbe50 100644 --- a/examples/end-to-end/elm.json +++ b/examples/end-to-end/elm.json @@ -18,7 +18,7 @@ "dillonkearns/elm-bcp47-language-tag": "1.0.1", "dillonkearns/elm-cli-options-parser": "3.2.0", "dillonkearns/elm-date-or-date-time": "2.0.0", - "dillonkearns/elm-form": "2.0.2", + "dillonkearns/elm-form": "3.0.0", "elm/browser": "1.0.2", "elm/bytes": "1.0.8", "elm/core": "1.0.5", diff --git a/examples/end-to-end/package-lock.json b/examples/end-to-end/package-lock.json index 80f88a05..f75f9817 100644 --- a/examples/end-to-end/package-lock.json +++ b/examples/end-to-end/package-lock.json @@ -16,7 +16,7 @@ }, "../..": { "name": "elm-pages", - "version": "3.0.0-beta.39", + "version": "3.0.0-beta.40", "dev": true, "license": "BSD-3-Clause", "dependencies": { diff --git a/examples/escaping/elm.json b/examples/escaping/elm.json index 8e22db76..ddfdf036 100644 --- a/examples/escaping/elm.json +++ b/examples/escaping/elm.json @@ -16,7 +16,7 @@ "danyx23/elm-mimetype": "4.0.1", "dillonkearns/elm-bcp47-language-tag": "1.0.1", "dillonkearns/elm-date-or-date-time": "2.0.0", - "dillonkearns/elm-form": "2.0.2", + "dillonkearns/elm-form": "3.0.0", "dillonkearns/elm-markdown": "7.0.1", "elm/browser": "1.0.2", "elm/bytes": "1.0.8", diff --git a/examples/escaping/package-lock.json b/examples/escaping/package-lock.json index fbe64a3c..77b793b2 100644 --- a/examples/escaping/package-lock.json +++ b/examples/escaping/package-lock.json @@ -17,7 +17,8 @@ } }, "../..": { - "version": "3.0.0-beta.38", + "name": "elm-pages", + "version": "3.0.0-beta.40", "dev": true, "license": "BSD-3-Clause", "dependencies": { diff --git a/examples/escaping/src/Shared.elm b/examples/escaping/src/Shared.elm index de5d4698..2ad427b2 100644 --- a/examples/escaping/src/Shared.elm +++ b/examples/escaping/src/Shared.elm @@ -7,7 +7,7 @@ import Html exposing (Html) import Html.Styled import Pages.Flags import Pages.PageUrl exposing (PageUrl) -import Path exposing (Path) +import UrlPath exposing (UrlPath) import Route exposing (Route) import SharedTemplate exposing (SharedTemplate) import View exposing (View) @@ -26,7 +26,7 @@ template = type Msg = OnPageChange - { path : Path + { path : UrlPath , query : Maybe String , fragment : Maybe String } @@ -50,7 +50,7 @@ init : -> Maybe { path : - { path : Path + { path : UrlPath , query : Maybe String , fragment : Maybe String } @@ -71,7 +71,7 @@ update msg model = ( { model | showMobileMenu = False }, Effect.none ) -subscriptions : Path -> Model -> Sub Msg +subscriptions : UrlPath -> Model -> Sub Msg subscriptions _ _ = Sub.none @@ -84,7 +84,7 @@ data = view : Data -> - { path : Path + { path : UrlPath , route : Maybe Route } -> Model diff --git a/examples/hackernews/package-lock.json b/examples/hackernews/package-lock.json index ddc9b8b8..0020a6d0 100644 --- a/examples/hackernews/package-lock.json +++ b/examples/hackernews/package-lock.json @@ -23,7 +23,7 @@ }, "../..": { "name": "elm-pages", - "version": "3.0.0-beta.38", + "version": "3.0.0-beta.40", "dev": true, "license": "BSD-3-Clause", "dependencies": { diff --git a/examples/hello/elm.json b/examples/hello/elm.json index 2e646e78..c6f98052 100644 --- a/examples/hello/elm.json +++ b/examples/hello/elm.json @@ -15,7 +15,7 @@ "danyx23/elm-mimetype": "4.0.1", "dillonkearns/elm-bcp47-language-tag": "1.0.1", "dillonkearns/elm-date-or-date-time": "2.0.0", - "dillonkearns/elm-form": "2.0.2", + "dillonkearns/elm-form": "3.0.0", "dillonkearns/elm-markdown": "6.0.1", "elm/browser": "1.0.2", "elm/bytes": "1.0.8", diff --git a/examples/hello/package-lock.json b/examples/hello/package-lock.json index 5793b4f3..44a42f17 100644 --- a/examples/hello/package-lock.json +++ b/examples/hello/package-lock.json @@ -15,7 +15,7 @@ }, "../..": { "name": "elm-pages", - "version": "3.0.0-beta.38", + "version": "3.0.0-beta.40", "dev": true, "license": "BSD-3-Clause", "dependencies": { diff --git a/examples/pokedex/app/Route/Form.elm b/examples/pokedex/app/Route/Form.elm index b5652d0f..65bca4b7 100644 --- a/examples/pokedex/app/Route/Form.elm +++ b/examples/pokedex/app/Route/Form.elm @@ -267,7 +267,6 @@ view app shared = , Attr.style "flex-direction" "column" , Attr.style "gap" "20px" ] - Pages.Form.Serial (Form.options "test1" |> Form.withInput defaultUser ) diff --git a/examples/pokedex/app/Route/Search.elm b/examples/pokedex/app/Route/Search.elm index daa88db1..769b19c0 100644 --- a/examples/pokedex/app/Route/Search.elm +++ b/examples/pokedex/app/Route/Search.elm @@ -206,7 +206,6 @@ view static sharedModel model = , form |> Pages.Form.renderHtml [] - Pages.Form.Serial (Form.options "test1" |> Form.withGetMethod) -- TODO pass in server data static diff --git a/examples/pokedex/app/Route/Signup.elm b/examples/pokedex/app/Route/Signup.elm index a03ac955..325bea9c 100644 --- a/examples/pokedex/app/Route/Signup.elm +++ b/examples/pokedex/app/Route/Signup.elm @@ -265,7 +265,6 @@ view app shared model = , form |> Pages.Form.renderHtml [] - Pages.Form.Serial (Form.options "test1") -- TODO pass in server data app diff --git a/examples/pokedex/app/Route/TailwindForm.elm b/examples/pokedex/app/Route/TailwindForm.elm index b93e55f3..7075f294 100644 --- a/examples/pokedex/app/Route/TailwindForm.elm +++ b/examples/pokedex/app/Route/TailwindForm.elm @@ -703,7 +703,6 @@ view app model sharedModel = , form |> Pages.Form.renderStyledHtml [] - Pages.Form.Serial (Form.options "test" |> Form.withServerResponse (app.action |> Maybe.andThen .formResponse) diff --git a/examples/pokedex/elm.json b/examples/pokedex/elm.json index eb2b9aee..857e0d1d 100644 --- a/examples/pokedex/elm.json +++ b/examples/pokedex/elm.json @@ -17,7 +17,7 @@ "danyx23/elm-mimetype": "4.0.1", "dillonkearns/elm-bcp47-language-tag": "1.0.1", "dillonkearns/elm-date-or-date-time": "2.0.0", - "dillonkearns/elm-form": "2.0.2", + "dillonkearns/elm-form": "3.0.0", "dillonkearns/elm-graphql": "5.0.11", "dillonkearns/elm-markdown": "7.0.1", "dillonkearns/elm-sitemap": "1.0.2", diff --git a/examples/pokedex/package-lock.json b/examples/pokedex/package-lock.json index e21924f7..4a50610b 100644 --- a/examples/pokedex/package-lock.json +++ b/examples/pokedex/package-lock.json @@ -27,7 +27,7 @@ }, "../..": { "name": "elm-pages", - "version": "3.0.0-beta.38", + "version": "3.0.0-beta.40", "dev": true, "license": "BSD-3-Clause", "dependencies": { diff --git a/examples/repos/package-lock.json b/examples/repos/package-lock.json index 8f44ab39..30b951bc 100644 --- a/examples/repos/package-lock.json +++ b/examples/repos/package-lock.json @@ -17,7 +17,7 @@ }, "../..": { "name": "elm-pages", - "version": "3.0.0-beta.38", + "version": "3.0.0-beta.40", "dev": true, "license": "BSD-3-Clause", "dependencies": { diff --git a/examples/routing/app/Shared.elm b/examples/routing/app/Shared.elm index 31d3cd8a..e5e7f728 100644 --- a/examples/routing/app/Shared.elm +++ b/examples/routing/app/Shared.elm @@ -7,7 +7,7 @@ import Html exposing (Html) import Html.Styled import Pages.Flags import Pages.PageUrl exposing (PageUrl) -import Path exposing (Path) +import UrlPath exposing (UrlPath) import Route exposing (Route) import SharedTemplate exposing (SharedTemplate) import View exposing (View) @@ -26,7 +26,7 @@ template = type Msg = OnPageChange - { path : Path + { path : UrlPath , query : Maybe String , fragment : Maybe String } @@ -50,7 +50,7 @@ init : -> Maybe { path : - { path : Path + { path : UrlPath , query : Maybe String , fragment : Maybe String } @@ -71,7 +71,7 @@ update msg model = ( { model | showMobileMenu = False }, Effect.none ) -subscriptions : Path -> Model -> Sub Msg +subscriptions : UrlPath -> Model -> Sub Msg subscriptions _ _ = Sub.none @@ -86,7 +86,7 @@ data = view : Data -> - { path : Path + { path : UrlPath , route : Maybe Route } -> Model diff --git a/examples/routing/elm.json b/examples/routing/elm.json index 1ec5627e..1e50b82a 100644 --- a/examples/routing/elm.json +++ b/examples/routing/elm.json @@ -15,7 +15,7 @@ "danyx23/elm-mimetype": "4.0.1", "dillonkearns/elm-bcp47-language-tag": "1.0.1", "dillonkearns/elm-date-or-date-time": "2.0.0", - "dillonkearns/elm-form": "2.0.2", + "dillonkearns/elm-form": "3.0.0", "elm/browser": "1.0.2", "elm/bytes": "1.0.8", "elm/core": "1.0.5", diff --git a/examples/routing/package-lock.json b/examples/routing/package-lock.json index 7eded6ad..61d3791d 100644 --- a/examples/routing/package-lock.json +++ b/examples/routing/package-lock.json @@ -18,7 +18,7 @@ }, "../..": { "name": "elm-pages", - "version": "3.0.0-beta.38", + "version": "3.0.0-beta.40", "dev": true, "license": "BSD-3-Clause", "dependencies": { diff --git a/examples/slides/package-lock.json b/examples/slides/package-lock.json index 8f44ab39..30b951bc 100644 --- a/examples/slides/package-lock.json +++ b/examples/slides/package-lock.json @@ -17,7 +17,7 @@ }, "../..": { "name": "elm-pages", - "version": "3.0.0-beta.38", + "version": "3.0.0-beta.40", "dev": true, "license": "BSD-3-Clause", "dependencies": { diff --git a/examples/smoothies/package-lock.json b/examples/smoothies/package-lock.json index 07fad19e..36905d4a 100644 --- a/examples/smoothies/package-lock.json +++ b/examples/smoothies/package-lock.json @@ -26,7 +26,7 @@ }, "../..": { "name": "elm-pages", - "version": "3.0.0-beta.38", + "version": "3.0.0-beta.40", "dev": true, "license": "BSD-3-Clause", "dependencies": { diff --git a/examples/todos/app/Route/Login.elm b/examples/todos/app/Route/Login.elm index 95da0a1e..3103cb4c 100644 --- a/examples/todos/app/Route/Login.elm +++ b/examples/todos/app/Route/Login.elm @@ -398,8 +398,9 @@ view app shared = [ Html.text <| "Hello! You are already logged in as " ++ username , logoutForm |> Pages.Form.renderHtml [] - Pages.Form.Parallel - (Form.options "logout") + (Form.options "logout" + |> Pages.Form.withConcurrent + ) app ] @@ -408,7 +409,6 @@ view app shared = ] , form |> Pages.Form.renderHtml [] - Pages.Form.Serial (Form.options "login" |> Form.withServerResponse (app.action |> Maybe.andThen .maybeError) ) diff --git a/examples/todos/app/Route/Visibility__.elm b/examples/todos/app/Route/Visibility__.elm index 97b84926..d39bc46e 100644 --- a/examples/todos/app/Route/Visibility__.elm +++ b/examples/todos/app/Route/Visibility__.elm @@ -497,13 +497,13 @@ view app shared model = [ class "create-form" , hidden (not (List.isEmpty failedAddItemActions)) ] - Pages.Form.Parallel (Form.options ("new-item-" ++ (model.nextId |> Time.posixToMillis |> String.fromInt) ) |> Form.withInput Nothing |> Form.withOnSubmit (\_ -> NewItemSubmitted) + |> Pages.Form.withConcurrent ) app , div [] @@ -513,10 +513,10 @@ view app shared model = addItemForm |> Pages.Form.renderHtml [ class "create-form", hidden (index /= 0) ] - Pages.Form.Parallel (Form.options key |> Form.withOnSubmit (\_ -> NewItemSubmitted) |> Form.withInput (Just createFetcherErrors) + |> Pages.Form.withConcurrent ) app ) @@ -737,9 +737,9 @@ viewEntries app visibility entries = ] [ toggleAllForm |> Pages.Form.renderHtml [] - Pages.Form.Parallel (Form.options "toggle-all" |> Form.withInput { allCompleted = allCompleted } + |> Pages.Form.withConcurrent ) app , Keyed.ul [ class "todo-list" ] <| @@ -767,17 +767,17 @@ viewEntry app todo = [ class "view" ] [ checkItemForm |> Pages.Form.renderHtml [] - Pages.Form.Parallel (("toggle-" ++ todo.id) |> Form.options |> Form.withInput todo + |> Pages.Form.withConcurrent ) app , editItemForm |> Pages.Form.renderHtml [] - Pages.Form.Parallel (Form.options ("edit-" ++ todo.id) |> Form.withInput todo + |> Pages.Form.withConcurrent ) app , if todo.isSaving then @@ -786,9 +786,9 @@ viewEntry app todo = else deleteItemForm |> Pages.Form.renderHtml [] - Pages.Form.Parallel (Form.options ("delete-" ++ todo.id) |> Form.withInput todo + |> Pages.Form.withConcurrent ) app ] @@ -881,9 +881,9 @@ viewControlsClear : App Data ActionData RouteParams -> Int -> Html (PagesMsg Msg viewControlsClear app entriesCompleted = clearCompletedForm |> Pages.Form.renderHtml [] - Pages.Form.Parallel (Form.options "clear-completed" |> Form.withInput { entriesCompleted = entriesCompleted } + |> Pages.Form.withConcurrent ) app diff --git a/examples/todos/elm.json b/examples/todos/elm.json index aaebc492..2a546510 100644 --- a/examples/todos/elm.json +++ b/examples/todos/elm.json @@ -19,7 +19,7 @@ "dillonkearns/elm-bcp47-language-tag": "1.0.1", "dillonkearns/elm-cli-options-parser": "3.2.0", "dillonkearns/elm-date-or-date-time": "2.0.0", - "dillonkearns/elm-form": "2.0.2", + "dillonkearns/elm-form": "3.0.0", "dillonkearns/elm-graphql": "5.0.11", "dillonkearns/elm-markdown": "7.0.1", "elm/browser": "1.0.2", diff --git a/examples/todos/package-lock.json b/examples/todos/package-lock.json index 6b2031ab..14abb737 100644 --- a/examples/todos/package-lock.json +++ b/examples/todos/package-lock.json @@ -28,7 +28,7 @@ }, "../..": { "name": "elm-pages", - "version": "3.0.0-beta.38", + "version": "3.0.0-beta.40", "dev": true, "license": "BSD-3-Clause", "dependencies": { diff --git a/examples/trails/package-lock.json b/examples/trails/package-lock.json index 9af374ed..358c9777 100644 --- a/examples/trails/package-lock.json +++ b/examples/trails/package-lock.json @@ -23,7 +23,7 @@ }, "../..": { "name": "elm-pages", - "version": "3.0.0-beta.38", + "version": "3.0.0-beta.40", "dev": true, "license": "BSD-3-Clause", "dependencies": { diff --git a/src/Pages/Form.elm b/src/Pages/Form.elm index 84995079..7208225c 100644 --- a/src/Pages/Form.elm +++ b/src/Pages/Form.elm @@ -1,14 +1,17 @@ module Pages.Form exposing - ( Strategy(..), renderHtml, renderStyledHtml + ( renderHtml, renderStyledHtml , FormWithServerValidations, Handler + , Options, withConcurrent ) {-| -@docs Strategy, renderHtml, renderStyledHtml +@docs renderHtml, renderStyledHtml @docs FormWithServerValidations, Handler +@docs Options, withConcurrent + -} import BackendTask exposing (BackendTask) @@ -45,6 +48,15 @@ type alias Handler error combined = Form.Handler.Handler error (BackendTask FatalError (Validation error combined Never Never)) +type alias Options error parsed input msg = + Form.Options error parsed input msg { concurrent : Bool } + + +withConcurrent : Options error parsed input msg -> Options error parsed input msg +withConcurrent options_ = + { options_ | extras = Just { concurrent = True } } + + --init : -- (parsed -> combined) @@ -78,8 +90,7 @@ type Strategy {-| -} renderHtml : List (Html.Attribute (PagesMsg userMsg)) - -> Strategy - -> Form.Options error parsed input userMsg + -> Options error parsed input userMsg -> { --path : Path --, url : Maybe PageUrl @@ -91,7 +102,12 @@ renderHtml : } -> Form.Form error { combine : Validation error parsed named constraints, view : Form.Context error input -> List (Html.Html (PagesMsg userMsg)) } parsed input -> Html.Html (PagesMsg userMsg) -renderHtml attrs strategy options_ app form_ = +renderHtml attrs options_ app form_ = + let + concurrent : Bool + concurrent = + options_.extras |> Maybe.map .concurrent |> Maybe.withDefault False + in form_ |> Form.renderHtml { state = app.pageFormState @@ -137,7 +153,7 @@ renderHtml attrs strategy options_ app form_ = case submission.parsed of Form.Valid _ -> Pages.Internal.Msg.Submit - { useFetcher = strategy == Parallel + { useFetcher = concurrent , action = submission.action , fields = submission.fields , method = submission.method @@ -151,7 +167,7 @@ renderHtml attrs strategy options_ app form_ = Form.Invalid _ _ -> Pages.Internal.Msg.Submit - { useFetcher = strategy == Parallel + { useFetcher = concurrent , action = submission.action , method = submission.method , fields = submission.fields @@ -160,6 +176,7 @@ renderHtml attrs strategy options_ app form_ = , valid = False } ) + , extras = Nothing } attrs @@ -167,8 +184,7 @@ renderHtml attrs strategy options_ app form_ = {-| -} renderStyledHtml : List (Html.Styled.Attribute (PagesMsg userMsg)) - -> Strategy - -> Form.Options error parsed input userMsg + -> Options error parsed input userMsg -> { --path : Path --, url : Maybe PageUrl @@ -180,7 +196,12 @@ renderStyledHtml : } -> Form.Form error { combine : Validation error parsed named constraints, view : Form.Context error input -> List (Html.Styled.Html (PagesMsg userMsg)) } parsed input -> Html.Styled.Html (PagesMsg userMsg) -renderStyledHtml attrs strategy options_ app form_ = +renderStyledHtml attrs options_ app form_ = + let + concurrent : Bool + concurrent = + options_.extras |> Maybe.map .concurrent |> Maybe.withDefault False + in form_ |> Form.renderStyledHtml { state = app.pageFormState @@ -226,7 +247,7 @@ renderStyledHtml attrs strategy options_ app form_ = case submission.parsed of Form.Valid _ -> Pages.Internal.Msg.Submit - { useFetcher = strategy == Parallel + { useFetcher = concurrent , action = submission.action , fields = submission.fields , method = submission.method @@ -240,7 +261,7 @@ renderStyledHtml attrs strategy options_ app form_ = Form.Invalid _ _ -> Pages.Internal.Msg.Submit - { useFetcher = strategy == Parallel + { useFetcher = concurrent , action = submission.action , fields = submission.fields , method = submission.method @@ -249,5 +270,6 @@ renderStyledHtml attrs strategy options_ app form_ = , valid = False } ) + , extras = Nothing } attrs