Skip to content

Commit

Permalink
transfer picker validation to dateInput
Browse files Browse the repository at this point in the history
  • Loading branch information
markus-mind committed Dec 29, 2024
1 parent 0599586 commit 3eb3134
Show file tree
Hide file tree
Showing 8 changed files with 240 additions and 118 deletions.
2 changes: 1 addition & 1 deletion examples/src/DurationDatePickerExample.elm
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import Html.Events exposing (onClick)
import Task
import Time exposing (Month(..), Posix, Zone)
import Time.Extra as TimeExtra exposing (Interval(..))
import Utilities exposing (posixToDateString, posixToTimeString, isDateBeforeToday, adjustAllowedTimesOfDayToClientZone)
import Utilities exposing (adjustAllowedTimesOfDayToClientZone, isDateBeforeToday, posixToDateString, posixToTimeString)


type Msg
Expand Down
2 changes: 1 addition & 1 deletion examples/src/ModalPickerExample.elm
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import SingleDatePicker
import Task
import Time exposing (Month(..), Posix, Zone)
import Time.Extra as TimeExtra exposing (Interval(..))
import Utilities exposing (posixToDateString, posixToTimeString, isDateBeforeToday, adjustAllowedTimesOfDayToClientZone)
import Utilities exposing (adjustAllowedTimesOfDayToClientZone, isDateBeforeToday, posixToDateString, posixToTimeString)


type Msg
Expand Down
30 changes: 27 additions & 3 deletions examples/src/SingleDatePickerExample.elm
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
module SingleDatePickerExample exposing (Model, Msg, init, subscriptions, update, view)

import Css
import DatePicker.DateInput as DateInput
import DatePicker.Settings
exposing
( Settings
Expand All @@ -15,7 +16,7 @@ import SingleDatePicker
import Task
import Time exposing (Month(..), Posix, Zone)
import Time.Extra as TimeExtra exposing (Interval(..))
import Utilities exposing (posixToDateString, posixToTimeString, isDateBeforeToday, adjustAllowedTimesOfDayToClientZone)
import Utilities exposing (adjustAllowedTimesOfDayToClientZone, isDateBeforeToday, posixToDateString, posixToTimeString)


type Msg
Expand Down Expand Up @@ -58,6 +59,18 @@ userDefinedDatePickerSettings zone today =
let
defaults =
defaultSettings zone

allowedTimesOfDay =
\clientZone datetime -> adjustAllowedTimesOfDayToClientZone Time.utc clientZone today datetime

dateFormat =
DateInput.defaultDateFormat

timeFormat =
DateInput.defaultTimeFormat

dateInputSettings =
{ format = DateInput.DateTime dateFormat { timeFormat | allowedTimesOfDay = allowedTimesOfDay }, getErrorMessage = getErrorMessage }
in
{ defaults
| isDayDisabled = \clientZone datetime -> isDateBeforeToday (TimeExtra.floor Day clientZone today) datetime
Expand All @@ -71,9 +84,20 @@ userDefinedDatePickerSettings zone today =
}
, showCalendarWeekNumbers = True
, presets = []
, dateInputSettings = dateInputSettings
}


getErrorMessage : DateInput.InputError -> String
getErrorMessage error =
case error of
DateInput.ValueInvalid ->
"Invalid value. Make sure to use the correct format."

DateInput.ValueNotAllowed ->
"Date not allowed."


view : Model -> Html Msg
view model =
div
Expand All @@ -93,8 +117,8 @@ view model =
Nothing ->
text "No date selected yet!"
, div []
[ SingleDatePicker.viewDateInput [ onClick OpenPicker ]
(userDefinedDatePickerSettings model.zone model.currentTime)
[ SingleDatePicker.viewDateInput [ onClick OpenPicker ]
(userDefinedDatePickerSettings model.zone model.currentTime)
model.picker
]
]
Expand Down
9 changes: 6 additions & 3 deletions examples/src/Utilities.elm
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@

module Utilities exposing (posixToDateString, posixToTimeString, isDateBeforeToday, adjustAllowedTimesOfDayToClientZone)
module Utilities exposing (adjustAllowedTimesOfDayToClientZone, isDateBeforeToday, posixToDateString, posixToTimeString)

import Time exposing (Month(..), Posix, Zone)
import Time.Extra as TimeExtra exposing (Interval(..))


addLeadingZero : Int -> String
addLeadingZero value =
let
Expand All @@ -16,6 +16,7 @@ addLeadingZero value =
else
string


monthToNmbString : Month -> String
monthToNmbString month =
case month of
Expand Down Expand Up @@ -55,10 +56,12 @@ monthToNmbString month =
Dec ->
"12"


isDateBeforeToday : Posix -> Posix -> Bool
isDateBeforeToday today datetime =
Time.posixToMillis today > Time.posixToMillis datetime


posixToDateString : Zone -> Posix -> String
posixToDateString zone date =
addLeadingZero (Time.toDay zone date)
Expand Down Expand Up @@ -127,4 +130,4 @@ adjustAllowedTimesOfDayToClientZone baseZone clientZone today datetimeBeingProce
bounds

else
bounds
bounds
Loading

0 comments on commit 3eb3134

Please sign in to comment.