mirror of
https://github.com/dillonkearns/elm-pages-v3-beta.git
synced 2024-12-27 05:44:17 +03:00
Add Effect module to docs site.
This commit is contained in:
parent
979be6f3e4
commit
e6fb1047ec
51
examples/docs/app/Effect.elm
Normal file
51
examples/docs/app/Effect.elm
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
module Effect exposing (Effect(..), batch, fromCmd, map, none, perform)
|
||||||
|
|
||||||
|
import Http
|
||||||
|
import Json.Decode as Decode
|
||||||
|
|
||||||
|
|
||||||
|
type Effect msg
|
||||||
|
= None
|
||||||
|
| Cmd (Cmd msg)
|
||||||
|
| Batch (List (Effect msg))
|
||||||
|
|
||||||
|
|
||||||
|
none : Effect msg
|
||||||
|
none =
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
|
batch : List (Effect msg) -> Effect msg
|
||||||
|
batch =
|
||||||
|
Batch
|
||||||
|
|
||||||
|
|
||||||
|
fromCmd : Cmd msg -> Effect msg
|
||||||
|
fromCmd =
|
||||||
|
Cmd
|
||||||
|
|
||||||
|
|
||||||
|
map : (a -> b) -> Effect a -> Effect b
|
||||||
|
map fn effect =
|
||||||
|
case effect of
|
||||||
|
None ->
|
||||||
|
None
|
||||||
|
|
||||||
|
Cmd cmd ->
|
||||||
|
Cmd (Cmd.map fn cmd)
|
||||||
|
|
||||||
|
Batch list ->
|
||||||
|
Batch (List.map (map fn) list)
|
||||||
|
|
||||||
|
|
||||||
|
perform : (pageMsg -> msg) -> Effect pageMsg -> Cmd msg
|
||||||
|
perform fromPageMsg effect =
|
||||||
|
case effect of
|
||||||
|
None ->
|
||||||
|
Cmd.none
|
||||||
|
|
||||||
|
Cmd cmd ->
|
||||||
|
Cmd.map fromPageMsg cmd
|
||||||
|
|
||||||
|
Batch list ->
|
||||||
|
Cmd.batch (List.map (perform fromPageMsg) list)
|
@ -3,6 +3,7 @@ module Shared exposing (Data, Model, Msg, template)
|
|||||||
import Browser.Navigation
|
import Browser.Navigation
|
||||||
import DataSource
|
import DataSource
|
||||||
import DocsSection
|
import DocsSection
|
||||||
|
import Effect exposing (Effect)
|
||||||
import Html exposing (Html)
|
import Html exposing (Html)
|
||||||
import Html.Styled
|
import Html.Styled
|
||||||
import Pages.Flags
|
import Pages.Flags
|
||||||
@ -60,27 +61,27 @@ init :
|
|||||||
, metadata : route
|
, metadata : route
|
||||||
, pageUrl : Maybe PageUrl
|
, pageUrl : Maybe PageUrl
|
||||||
}
|
}
|
||||||
-> ( Model, Cmd Msg )
|
-> ( Model, Effect Msg )
|
||||||
init navigationKey flags maybePagePath =
|
init navigationKey flags maybePagePath =
|
||||||
( { showMobileMenu = False
|
( { showMobileMenu = False
|
||||||
, counter = 0
|
, counter = 0
|
||||||
, navigationKey = navigationKey
|
, navigationKey = navigationKey
|
||||||
}
|
}
|
||||||
, Cmd.none
|
, Effect.none
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
update : Msg -> Model -> ( Model, Cmd Msg )
|
update : Msg -> Model -> ( Model, Effect Msg )
|
||||||
update msg model =
|
update msg model =
|
||||||
case msg of
|
case msg of
|
||||||
OnPageChange _ ->
|
OnPageChange _ ->
|
||||||
( { model | showMobileMenu = False }, Cmd.none )
|
( { model | showMobileMenu = False }, Effect.none )
|
||||||
|
|
||||||
ToggleMobileMenu ->
|
ToggleMobileMenu ->
|
||||||
( { model | showMobileMenu = not model.showMobileMenu }, Cmd.none )
|
( { model | showMobileMenu = not model.showMobileMenu }, Effect.none )
|
||||||
|
|
||||||
IncrementFromChild ->
|
IncrementFromChild ->
|
||||||
( { model | counter = model.counter + 1 }, Cmd.none )
|
( { model | counter = model.counter + 1 }, Effect.none )
|
||||||
|
|
||||||
|
|
||||||
subscriptions : Path -> Model -> Sub Msg
|
subscriptions : Path -> Model -> Sub Msg
|
||||||
|
Loading…
Reference in New Issue
Block a user