Skip to content

thoughtbot/expirable

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Expirable

Manage values that expire after a period of time.

Example

import Expirable exposing (Expirable)


type alias Model =
    { toastMessages : List (Expirable String)
    }


type Msg
    = DecrementToastMessages Time.Posix


initial : Model
initial =
    { toastMessages =
        [ Expirable.build (Expirable.seconds 5) "Hi there"
        , Expirable.build (Expirable.seconds 30) "This goes longer"
        ]
    }


subscriptions : Model -> Sub Msg
subscriptions model =
    Expirable.subscription DecrementToastMessages


update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
    case msg of
        DecrementToastMessages time ->
            ( { model
                | toastMessages = Expirable.tickAll time model.toastMessages
              }
            , Cmd.none
            )

Development

To set up a working development environment, run:

yarn

Ensure that this project's node_modules/.bin is at the beginning of your $PATH, ensuring that any local NPM packages have the highest priority.

To ensure the package compiles:

yarn build

To run tests:

yarn test

License

See the LICENSE file.

About thoughtbot

thoughtbot

Expirable is maintained and funded by thoughtbot, inc. The names and logos for thoughtbot are trademarks of thoughtbot, inc.

We love open source software! See our other projects or hire us to design, develop, and grow your product.