Skip to content

Commit a15179d

Browse files
committed
add defaultTime to DateTimePicker.Input
for auto populating Time with a default value when Date is selected
1 parent 222d981 commit a15179d

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

src/DateTimePicker.purs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ type ComponentM m a = H.HalogenM State Action ChildSlots Output m a
5252
type ComponentRender m = State -> ComponentHTML m
5353

5454
type Input =
55-
{ disabled :: Boolean
55+
{ defaultTime :: Maybe Time
56+
, disabled :: Boolean
5657
, interval :: Maybe Interval
5758
, selection :: Maybe DateTime
5859
, targetDate :: Maybe (Year /\ Month)
@@ -79,6 +80,7 @@ type Slot = H.Slot Query Output
7980

8081
type State =
8182
{ date :: Maybe Date
83+
, defaultTime :: Maybe Time
8284
, disabled :: Boolean
8385
, interval :: Maybe Interval
8486
, targetDate :: Maybe (Year /\ Month)
@@ -110,14 +112,20 @@ handleAction = case _ of
110112
HandleDate msg -> case msg of
111113
DatePicker.SelectionChanged date' -> do
112114
state <- H.get
113-
raiseSelectionChanged state.interval date' state.time
114-
H.modify_ _ { date = date' }
115+
case state.defaultTime, state.time of
116+
Just defaultTime, Nothing -> do
117+
H.tell _timepicker unit $ TimePicker.SetSelection $ Just defaultTime
118+
H.modify_ _ { date = date', time = Just defaultTime }
119+
raiseSelectionChanged state.interval date' (Just defaultTime)
120+
_, _ -> do
121+
H.modify_ _ { date = date' }
122+
raiseSelectionChanged state.interval date' state.time
115123
_ -> H.raise $ DateOutput msg
116124
HandleTime msg -> case msg of
117125
TimePicker.SelectionChanged time' -> do
118126
state <- H.get
119-
raiseSelectionChanged state.interval state.date time'
120127
H.modify_ _ { time = time' }
128+
raiseSelectionChanged state.interval state.date time'
121129
_ -> H.raise $ TimeOutput msg
122130
Receive input -> do
123131
H.modify_ _ { interval = input.interval }
@@ -144,6 +152,7 @@ handleQuery = case _ of
144152
initialState :: Input -> State
145153
initialState input =
146154
{ date: input.selection <#> Date.DateTime.date
155+
, defaultTime: input.defaultTime
147156
, disabled: input.disabled
148157
, interval: input.interval
149158
, targetDate: input.targetDate

0 commit comments

Comments
 (0)