Skip to content

Commit a8c41c0

Browse files
authored
Merge pull request #171 from citizennet/FBCM-4154/citizengabe/Fix-meridiem-change
FBCM-4154 Fix meridiem change
2 parents ff279f2 + d5e7ffb commit a8c41c0

File tree

4 files changed

+36
-13
lines changed

4 files changed

+36
-13
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "purescript-ocelot",
3-
"version": "0.27.0",
3+
"version": "0.27.1",
44
"private": true,
55
"scripts": {
66
"build-all": "make build",
@@ -21,4 +21,4 @@
2121
"request": "^2.88.0",
2222
"yarn": "^1.16.0"
2323
}
24-
}
24+
}

spago.dhall

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ Authors:
99
"Forest Toney <https://github.com/foresttoney>",
1010
"Hardy Jones <https://github.com/joneshf-cn>",
1111
"Vance Palacio <https://github.com/vanceism7>"
12+
"Gabe Johnson <https://github.com/citizengabe>"
1213
-}
1314

1415
{ name = "ocelot"

src/Components/TimePicker/Component.purs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import Prelude
55
import Data.Array ((!!))
66
import Data.Array as Array
77
import Data.FunctorWithIndex (mapWithIndex)
8-
import Data.Maybe (Maybe(..))
8+
import Data.Maybe (Maybe(..), isNothing)
99
import Data.String (trim)
1010
import Data.Symbol (SProxy(..))
1111
import Data.Time (Time)
@@ -184,7 +184,9 @@ embeddedHandleAction = case _ of
184184
otherwise -> pure unit
185185

186186
OnBlur -> do
187-
handleSearch
187+
{ selection } <- H.get
188+
when (isNothing selection) handleSearch
189+
188190

189191
handleSearch :: forall m. MonadAff m => CompositeComponentM m Unit
190192
handleSearch = do
@@ -215,7 +217,7 @@ embeddedHandleMessage = case _ of
215217
synchronize
216218

217219
S.Searched text -> do
218-
H.modify_ _ { search = text }
220+
H.modify_ _ { search = text, selection = Nothing }
219221
-- we don't actually want to match on search, we want to wait
220222
-- until they hit ENTER and then we'll try to match their search
221223

src/Components/TimePicker/Utils.purs

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,43 @@ module Ocelot.Components.TimePicker.Utils where
22

33
import Prelude
44

5+
import Control.Alt ((<|>))
56
import Data.Array (length)
67
import Data.Array.NonEmpty (catMaybes, head)
78
import Data.DateTime (time)
89
import Data.Either (either, hush)
910
import Data.Formatter.DateTime (unformatDateTime)
1011
import Data.Maybe (Maybe(..), fromMaybe, maybe)
11-
import Data.String (joinWith)
12+
import Data.String (joinWith, toLower)
1213
import Data.String.Regex (match, parseFlags, regex)
1314
import Data.Time (Time)
1415

16+
data Meridiem
17+
= AM
18+
| PM
19+
20+
meridiemToString :: Meridiem -> String
21+
meridiemToString = case _ of
22+
AM -> "AM"
23+
PM -> "PM"
1524

1625
----------
1726
-- Search
1827
guessTime :: String -> Maybe Time
1928
guessTime "" = Nothing
2029
guessTime text =
21-
let meridian :: Maybe String
22-
meridian = either
23-
(const Nothing)
24-
(\r -> join $ head <$> match r text)
25-
(regex "p" $ parseFlags "i")
30+
let meridiem :: Maybe Meridiem
31+
meridiem = do
32+
let
33+
regexFlags = parseFlags "i"
34+
regexA <- hush (regex "a" $ regexFlags)
35+
regexP <- hush (regex "p" $ regexFlags)
36+
matched <- match regexA text <|> match regexP text
37+
meridiemString <- head matched
38+
case toLower meridiemString of
39+
"a" -> Just AM
40+
"p" -> Just PM
41+
_ -> Nothing
2642

2743
digits :: Array String
2844
digits = either
@@ -42,9 +58,13 @@ guessTime text =
4258
_ -> Nothing
4359

4460
format :: String
45-
format = (maybe "HHmm" (const "hhmm a") meridian)
61+
format = (maybe "HHmm" (const "hhmm a") meridiem)
62+
63+
suffix :: String
64+
suffix = maybe "" (\m -> " " <> meridiemToString m) meridiem
65+
4666

4767
guess :: Maybe String
48-
guess = (_ <> maybe "" (const " PM") meridian) <$> hourMin
68+
guess = (_ <> suffix) <$> hourMin
4969

5070
in time <$> (join $ hush <<< unformatDateTime format <$> guess)

0 commit comments

Comments
 (0)