@@ -52,7 +52,8 @@ type ComponentM m a = H.HalogenM State Action ChildSlots Output m a
52
52
type ComponentRender m = State -> ComponentHTML m
53
53
54
54
type Input =
55
- { disabled :: Boolean
55
+ { defaultTime :: Maybe Time
56
+ , disabled :: Boolean
56
57
, interval :: Maybe Interval
57
58
, selection :: Maybe DateTime
58
59
, targetDate :: Maybe (Year /\ Month )
@@ -79,6 +80,7 @@ type Slot = H.Slot Query Output
79
80
80
81
type State =
81
82
{ date :: Maybe Date
83
+ , defaultTime :: Maybe Time
82
84
, disabled :: Boolean
83
85
, interval :: Maybe Interval
84
86
, targetDate :: Maybe (Year /\ Month )
@@ -110,14 +112,20 @@ handleAction = case _ of
110
112
HandleDate msg -> case msg of
111
113
DatePicker.SelectionChanged date' -> do
112
114
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
115
123
_ -> H .raise $ DateOutput msg
116
124
HandleTime msg -> case msg of
117
125
TimePicker.SelectionChanged time' -> do
118
126
state <- H .get
119
- raiseSelectionChanged state.interval state.date time'
120
127
H .modify_ _ { time = time' }
128
+ raiseSelectionChanged state.interval state.date time'
121
129
_ -> H .raise $ TimeOutput msg
122
130
Receive input -> do
123
131
H .modify_ _ { interval = input.interval }
@@ -144,6 +152,7 @@ handleQuery = case _ of
144
152
initialState :: Input -> State
145
153
initialState input =
146
154
{ date: input.selection <#> Date.DateTime .date
155
+ , defaultTime: input.defaultTime
147
156
, disabled: input.disabled
148
157
, interval: input.interval
149
158
, targetDate: input.targetDate
0 commit comments