[
    {
        "name": "DatePicker",
        "comment": " This module provides a material-style date picker for Elm.\n[You can check out the demo here.](http://abradley2.github.io/elm-datepicker/)\nSince this date picker\nuses material-icons, you will need to have these included on your page.\nAlso include the `DatePicker.css` found in the root of this directory.\n\n\n    <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"DatePicker.css\" />\n\n\nTo alter the color theme edit `./styl/Variables.styl`, then run\n`npm install && npm run build-styles`.\n\n\n# Tea / Initialization\n@docs Msg, init, update, Model\n\n# Rendering and Settings\n@docs view, Props, defaultProps\n\n# Helpers\n@docs setIndexDate\n\n# Types\n@docs SelectionMode\n",
        "unions": [
            {
                "name": "Msg",
                "comment": " You will first need to add the `DatePicker.Msg` to the type consumed by your `update` function so\nit recognizes this type.\n\n    import DatePicker\n    ...\n    type Msg\n        = FireZeMissiles\n        | DatePickerMsg DatePicker.Msg\n",
                "args": [],
                "cases": []
            },
            {
                "name": "SelectionMode",
                "comment": " Represents the current mode the picker is set to\n\n    type SelectionMode\n        = Calendar\n        | YearPicker\n",
                "args": [],
                "cases": []
            }
        ],
        "aliases": [
            {
                "name": "Model",
                "comment": " The `DatePicker.Model` type needs to be added to any data structure that requires a picker instance\n\n    import DatePicker\n    ...\n    type alias Model =\n        { datePickerData : DatePicker.Model\n        }\n    }\n\n\nThis is mostly an opaque type you don't have to worry about, though there are some important fields you will\nwant to use:\n\n* `today` is the default \"selected\" day of the picker before the user has actually clicked to \"select\" a day.\nThis is needed so the head display isn't empty before the user has selected anything, without forcing there be a default selected date of \"today\".\n* `indexDate` is a date used to track which month the calendar is currently showing. Do not set this directly. Use the `setIndexDate` helper\n* `selectedDate` is the last date the user clicked on in the calendar that was selectable\n* `selectionMode` determines whether the user sees the `Calendar` or the `YearPicker`\n",
                "args": [],
                "type": "{ id : String, today : Maybe Date, indexDate : Maybe Date, currentMonthMap : Maybe (List ( Int, Date )), previousMonthMap : Maybe (List ( Int, Date )), selectedDate : Maybe Date, previousSelectedDate : Maybe Date, selectionMode : SelectionMode, monthChange : MonthChange, yearList : List Int }"
            },
            {
                "name": "Props",
                "comment": " The second argument passed to `DatePicker.view`. These are configuration properties\nthat generally determine the range of selectable dates\n",
                "args": [],
                "type": "{ canSelectYear : Int -> Bool, canSelectMonth : Int -> Int -> Bool, canSelectDate : Date -> Bool, hideFooter : Bool }"
            }
        ],
        "values": [
            {
                "name": "defaultProps",
                "comment": " Use the default props if you don't want to support any sort of configuration.\nThese mostly center around limiting the user to a specific selection range of dates.\nBy default, nothing is restricted.\n\n    defaultProps =\n        { canSelectYear = \\year -> True\n        , canSelectMonth = \\year month -> True\n        , canSelectDate = \\date -> True\n        , hideFooter = False\n        }\n",
                "type": "Props"
            },
            {
                "name": "init",
                "comment": " `DatePicker.init` returns an initialized record of `DatePicker.Model`. Do not throw out the returned command!\nThe command is used to get today's current date which the date picker uses as the default for display.\nThe string passed as the first argument must be a unique `id` for the date picker\n\n    import DatePicker\n\n    init : (Model, Cmd Msg)\n    init =\n        let\n            (datePickerData, datePickerInitCmd) =\n                DatePicker.init \"my-datepicker-id\"\n        in\n            ( { datePickerData = datePickerData\n              , selectedDate = Nothing\n              }\n            , Cmd.map DatePickerMsg datePickerInitCmd\n            )\n",
                "type": "String -> ( Model, Cmd Msg )"
            },
            {
                "name": "setIndexDate",
                "comment": " Takes any of type `DatePicker.Model` and returns a new one with the given index date. It is\nimportant to not just set indexDate directly as this will not refresh the data to completely\nreflect this\n",
                "type": "Model -> Date -> Model"
            },
            {
                "name": "update",
                "comment": " `DatePicker.update` consumes the message you've mapped and a `DatePicker.Model` record to output `( DatePicker.Model, Cmd DatePicker.Msg)`.\nYou will need to alter your update function to handle any `DatePicker.Msg` that flows through.\n\n\n    import DatePicker exposing (Msg(SelectDate))\n    ...\n    handleDatePickerMsg model datePickerMsg =\n        let\n            (datePickerData, datePickerCmd) =\n                DatePicker.update datePickerMsg model.datePickerData\n        in\n            ( { model\n              | datePickerData = datePickerData\n              }\n            , Cmd.map DatePickerMsg datePickerCmd\n            )\n    ...\n    update : Msg -> Model -> ( Model, Cmd Msg )\n    update msg model =\n        case msg of\n            NoOp ->\n                ( model, Cmd.none )\n\n            DatePickerMsg datePickerMsg ->\n                handleDatePickerMsg model datePickerMsg\n",
                "type": "Msg -> Model -> ( Model, Cmd Msg )"
            },
            {
                "name": "view",
                "comment": "\nThe main view for the date picker. Use `Html.map` so the returned type doesn't conflict with\nyour view's type.\n\n    import DatePicker\n    ...\n    view : Model -> Html Msg\n    view model =\n        Html.map DatePickerMsg <|\n            DatePicker.view\n                model.datePickerData\n                DatePicker.defaultProps\n\n",
                "type": "Model -> Props -> Html Msg"
            }
        ],
        "binops": []
    }
]