Skip to content

Commit 222d981

Browse files
committed
don't raise DateTimePicker.SelectionChanged with incomplete input
Before user selecting both Date and Time, we don't want to raise selection and trigger validation.
1 parent a20d3e2 commit 222d981

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

src/DateTimePicker.purs

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -164,16 +164,22 @@ raiseSelectionChanged ::
164164
Maybe Date ->
165165
Maybe Time ->
166166
ComponentM m Unit
167-
raiseSelectionChanged mInterval mDate mTime = case mInterval of
168-
Nothing -> H.raise $ SelectionChanged mDateTime
169-
Just interval -> case mDateTime of
170-
Nothing -> H.raise $ SelectionChanged mDateTime
171-
Just dateTime
172-
| isWithinInterval interval dateTime -> H.raise $ SelectionChanged mDateTime
173-
| otherwise -> pure unit -- NOTE transient state during parent-child synchronization
167+
raiseSelectionChanged mInterval mDate mTime = case maybeSelection of
168+
Nothing -> pure unit
169+
Just selection -> case mInterval of
170+
Nothing -> H.raise $ SelectionChanged selection
171+
Just interval -> case selection of
172+
Nothing -> H.raise $ SelectionChanged selection
173+
Just dateTime
174+
| isWithinInterval interval dateTime -> H.raise $ SelectionChanged selection
175+
| otherwise -> pure unit -- NOTE transient state during parent-child synchronization
174176
where
175-
mDateTime :: Maybe DateTime
176-
mDateTime = DateTime <$> mDate <*> mTime
177+
maybeSelection :: Maybe (Maybe DateTime)
178+
maybeSelection = case mDate, mTime of
179+
Nothing, Nothing -> Just Nothing
180+
Nothing, Just _ -> Nothing
181+
Just _, Nothing -> Nothing
182+
Just date, Just time -> Just $ Just $ Date.DateTime.DateTime date time
177183

178184
render :: forall m. MonadAff m => ComponentRender m
179185
render state =

0 commit comments

Comments
 (0)