Skip to content

Commit 7ecc168

Browse files
committed
FixedOverlay and Spinner widgets
1 parent d910fe8 commit 7ecc168

File tree

7 files changed

+80
-125
lines changed

7 files changed

+80
-125
lines changed

ghcjs/delivery-calculator/src/App/Widgets/Main.hs

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,36 +11,37 @@ import qualified Functora.Miso.Widgets.Dialog as Dialog
1111
import qualified Functora.Miso.Widgets.Field as Field
1212
import qualified Functora.Miso.Widgets.FieldPairs as FieldPairs
1313
import qualified Functora.Miso.Widgets.Grid as Grid
14+
import qualified Functora.Miso.Widgets.Spinner as Spinner
1415
import qualified Functora.Money as Money
1516
import Lens.Micro ((^..))
1617
import Miso hiding (at, view)
1718

1819
mainWidget :: Model -> View Action
1920
mainWidget st =
2021
section_
21-
[ class_ "main-widget"
22+
[ style_
23+
[ ("margin", "0"),
24+
("padding", "0"),
25+
("width", "100%"),
26+
("min-height", "100vh"),
27+
("display", "flex"),
28+
("flex-direction", "column"),
29+
("justify-content", "space-between")
30+
]
2231
]
2332
$ [ header_ mempty $ Menu.menu st
2433
]
2534
<> [ main_
26-
[class_ "main-widget-middle"]
35+
[style_ [("max-width", "550px")]]
2736
$ screenWidget st
2837
]
2938
<> [ footer_
3039
[style_ [("text-align", "center")]]
3140
[tosWidget]
3241
]
33-
<> ( if st ^. #modelLoading
34-
then
35-
[ div_
36-
[ class_
37-
"mdc-dialog mdc-dialog--fullscreen fullscreen-dialog mdc-dialog--open mdc-dialog-scroll-divider-footer mdc-dialog--scrollable"
38-
]
39-
[ div_ [class_ "mdc-dialog__scrim"] mempty,
40-
div_ [class_ "lds-dual-ring"] mempty
41-
]
42-
]
43-
else mempty
42+
<> ( if not $ st ^. #modelLoading
43+
then mempty
44+
else [Spinner.spinner]
4445
)
4546

4647
screenWidget :: Model -> [View Action]

ghcjs/delivery-calculator/static/app.css

Lines changed: 0 additions & 77 deletions
This file was deleted.

ghcjs/delivery-calculator/static/css/app.css

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,13 @@ footer {
1212
padding-bottom: 18px;
1313
}
1414

15-
.main-widget {
16-
margin: 0;
17-
padding: 0;
18-
width: 100%;
19-
min-height: 100vh;
20-
display: flex;
21-
flex-direction: column;
22-
justify-content: space-between;
23-
/* overflow-x: hidden; */
24-
}
25-
26-
.main-widget-middle {
27-
max-width: 550px;
28-
}
29-
3015
textarea {
3116
resize: vertical;
3217
pointer-events: auto;
33-
min-height: 72px;
18+
}
19+
20+
dialog {
21+
overflow: auto;
3422
}
3523

3624
@media print {

ghcjs/miso-functora/miso-functora.cabal

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,14 @@ library
111111
Functora.Miso.Widgets.Dialog
112112
Functora.Miso.Widgets.Field
113113
Functora.Miso.Widgets.FieldPairs
114+
Functora.Miso.Widgets.FixedOverlay
114115
Functora.Miso.Widgets.Flex
115116
Functora.Miso.Widgets.Grid
116117
Functora.Miso.Widgets.Icon
117118
Functora.Miso.Widgets.Money
118119
Functora.Miso.Widgets.Qr
119120
Functora.Miso.Widgets.Select
121+
Functora.Miso.Widgets.Spinner
120122
Functora.Miso.Widgets.Switch
121123

122124
test-suite miso-functora-test
@@ -146,12 +148,14 @@ test-suite miso-functora-test
146148
Functora.Miso.Widgets.Dialog
147149
Functora.Miso.Widgets.Field
148150
Functora.Miso.Widgets.FieldPairs
151+
Functora.Miso.Widgets.FixedOverlay
149152
Functora.Miso.Widgets.Flex
150153
Functora.Miso.Widgets.Grid
151154
Functora.Miso.Widgets.Icon
152155
Functora.Miso.Widgets.Money
153156
Functora.Miso.Widgets.Qr
154157
Functora.Miso.Widgets.Select
158+
Functora.Miso.Widgets.Spinner
155159
Functora.Miso.Widgets.Switch
156160

157161
else

ghcjs/miso-functora/src/Functora/Miso/Widgets/Dialog.hs

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ where
1010

1111
import Functora.Miso.Prelude
1212
import Functora.Miso.Types
13+
import qualified Functora.Miso.Widgets.FixedOverlay as FixedOverlay
1314
import qualified Functora.Miso.Widgets.Icon as Icon
1415
import qualified Language.Javascript.JSaddle as JS
1516

@@ -50,30 +51,31 @@ dialog ::
5051
Args model action ->
5152
[View action]
5253
dialog opts args =
53-
singleton
54-
. nodeHtml
55-
"dialog"
56-
[ id_ $ getDialogUid (argsModel args) (argsOptic args)
57-
]
58-
$ if args
59-
^? #argsModel
60-
. cloneTraversal (argsOptic args)
61-
. #uniqueValue
62-
/= Just Opened
63-
then mempty
64-
else
65-
newFlex
54+
if not opened
55+
then mempty
56+
else
57+
singleton
58+
. FixedOverlay.fixedOverlay
59+
. singleton
60+
. nodeHtml "dialog" [boolProp "open" True]
61+
$ newFlex
6662
header_
6763
id
6864
(optsHeaderLeft opts defHeaderLeft)
6965
(optsHeaderRight opts defHeaderRight)
70-
<> argsContent args
71-
<> newFlex
72-
footer_
73-
id
74-
(optsFooterLeft opts defFooterRight)
75-
(optsFooterRight opts mempty)
66+
<> argsContent args
67+
<> newFlex
68+
footer_
69+
id
70+
(optsFooterLeft opts defFooterRight)
71+
(optsFooterRight opts mempty)
7672
where
73+
opened =
74+
args
75+
^? #argsModel
76+
. cloneTraversal (argsOptic args)
77+
. #uniqueValue
78+
== Just Opened
7779
defHeaderLeft =
7880
maybeToList
7981
. fmap
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
module Functora.Miso.Widgets.FixedOverlay
2+
( fixedOverlay,
3+
)
4+
where
5+
6+
import Functora.Miso.Prelude
7+
8+
fixedOverlay :: [View action] -> View action
9+
fixedOverlay =
10+
div_
11+
. singleton
12+
$ style_
13+
[ ("position", "fixed"),
14+
("top", "0"),
15+
("left", "0"),
16+
("width", "100%"),
17+
("height", "100%"),
18+
("backdrop-filter", "blur(2px)"),
19+
("background-color", "rgba(0, 0, 0, 0.5)"),
20+
("z-index", "9999"),
21+
("display", "flex"),
22+
("justify-content", "center"),
23+
("align-items", "center")
24+
]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
module Functora.Miso.Widgets.Spinner
2+
( spinner,
3+
)
4+
where
5+
6+
import Functora.Miso.Prelude
7+
import Functora.Miso.Widgets.FixedOverlay as FixedOverlay
8+
9+
spinner :: View action
10+
spinner =
11+
FixedOverlay.fixedOverlay
12+
[ div_ [class_ "lds-dual-ring"] mempty
13+
]

0 commit comments

Comments
 (0)