Skip to content

Commit 80292a7

Browse files
committed
wip
1 parent 8e8df88 commit 80292a7

File tree

1 file changed

+59
-65
lines changed
  • ghcjs/miso-functora/src/Functora/Miso/Widgets

1 file changed

+59
-65
lines changed

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

Lines changed: 59 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ module Functora.Miso.Widgets.Field
1515
dynamicField,
1616
passwordField,
1717
fieldViewer,
18+
fieldIcon,
1819
)
1920
where
2021

@@ -27,8 +28,6 @@ import qualified Functora.Miso.Widgets.Grid as Grid
2728
import qualified Functora.Miso.Widgets.Qr as Qr
2829
import qualified Functora.Miso.Widgets.Select as Select
2930
import qualified Language.Javascript.JSaddle as JS
30-
import qualified Material.IconButton as IconButton
31-
import qualified Material.TextField as TextField
3231
import qualified Miso.String as MS
3332

3433
data Args model action t f = Args
@@ -120,7 +119,7 @@ field ::
120119
Full model action t Unique ->
121120
Opts model action ->
122121
View action
123-
field full@Full {fullArgs = args, fullParser = parser, fullViewer = viewer} opts =
122+
field Full {fullArgs = args, fullParser = parser, fullViewer = viewer} opts =
124123
Grid.cell
125124
$ ( do
126125
x0 <-
@@ -142,41 +141,42 @@ field full@Full {fullArgs = args, fullParser = parser, fullViewer = viewer} opts
142141
)
143142
<> [ keyed
144143
uid
145-
$ TextField.outlined
146-
$ TextField.config
147-
& TextField.setType
148-
( fmap htmlFieldType (st ^? cloneTraversal optic . #fieldType)
149-
)
150-
& TextField.setOnInput onInputAction
151-
& TextField.setDisabled (opts ^. #optsDisabled)
152-
& TextField.setLabel
153-
( Just $ opts ^. #optsPlaceholder
154-
)
155-
& TextField.setLeadingIcon
156-
( fmap
157-
(fieldIcon Leading full opts)
158-
(opts ^? #optsLeadingWidget . _Just . cloneTraversal widgetOptic)
159-
)
160-
& TextField.setTrailingIcon
161-
( fmap
162-
(fieldIcon Trailing full opts)
163-
(opts ^? #optsTrailingWidget . _Just . cloneTraversal widgetOptic)
164-
)
165-
& TextField.setAttributes
166-
( [ id_
167-
. either impureThrow id
168-
. decodeUtf8Strict
169-
. unTagged
170-
$ htmlUid uid,
171-
onKeyDown $ action . optsOnKeyDownAction opts uid,
172-
onBlur onBlurAction,
173-
Css.fullWidth
174-
]
175-
<> ( opts ^. #optsExtraAttributes
176-
)
144+
. input_
145+
$ ( catMaybes
146+
[ fmap
147+
(type_ . htmlFieldType)
148+
(st ^? cloneTraversal optic . #fieldType),
149+
Just $ onInput onInputAction,
150+
Just . disabled_ $ opts ^. #optsDisabled,
151+
Just . placeholder_ $ opts ^. #optsPlaceholder,
152+
Just
153+
. id_
154+
. either impureThrow id
155+
. decodeUtf8Strict
156+
. unTagged
157+
$ htmlUid uid,
158+
Just . onKeyDown $ action . optsOnKeyDownAction opts uid,
159+
Just $ onBlur onBlurAction,
160+
Just Css.fullWidth
161+
]
177162
)
163+
<> ( opts ^. #optsExtraAttributes
164+
)
178165
]
179166
where
167+
--
168+
-- TODO : implement
169+
--
170+
-- & TextField.setLeadingIcon
171+
-- ( fmap
172+
-- (fieldIcon Leading full opts)
173+
-- (opts ^? #optsLeadingWidget . _Just . cloneTraversal widgetOptic)
174+
-- )
175+
-- & TextField.setTrailingIcon
176+
-- ( fmap
177+
-- (fieldIcon Trailing full opts)
178+
-- (opts ^? #optsTrailingWidget . _Just . cloneTraversal widgetOptic)
179+
-- )
180180
st = argsModel args
181181
optic = argsOptic args
182182
action = argsAction args
@@ -276,20 +276,19 @@ passwordField args opts =
276276
)
277277

278278
fieldIcon ::
279-
LeadingOrTrailing ->
280279
Full model action t Unique ->
281280
Opts model action ->
282281
OptsWidget model action ->
283-
TextField.Icon action
284-
fieldIcon lot full opts = \case
282+
View action
283+
fieldIcon full opts = \case
285284
CopyWidget ->
286-
fieldIconSimple lot "content_copy" mempty
285+
fieldIconSimple "content_copy" mempty
287286
. action
288287
$ case st ^? cloneTraversal optic . #fieldInput . #uniqueValue of
289288
Nothing -> PureUpdate id
290289
Just txt -> Jsm.shareText txt
291290
ClearWidget ->
292-
fieldIconSimple lot "close" mempty
291+
fieldIconSimple "close" mempty
293292
. ( fromMaybe action
294293
$ optsOnInputAction opts
295294
)
@@ -316,49 +315,49 @@ fieldIcon lot full opts = \case
316315
pure id
317316
)
318317
PasteWidget ->
319-
fieldIconSimple lot "content_paste_go" mempty
318+
fieldIconSimple "content_paste_go" mempty
320319
$ insertAction full Jsm.selectClipboard
321320
ScanQrWidget ->
322-
fieldIconSimple lot "qr_code_scanner" mempty
321+
fieldIconSimple "qr_code_scanner" mempty
323322
$ insertAction full Jsm.selectBarcode
324323
ShowOrHideWidget ->
325324
case st ^? cloneTraversal optic . #fieldType of
326325
Just FieldTypePassword ->
327-
fieldIconSimple lot "visibility_off" mempty
326+
fieldIconSimple "visibility_off" mempty
328327
. action
329328
. PureUpdate
330329
$ cloneTraversal optic
331330
. #fieldType
332331
.~ FieldTypeText
333332
_ ->
334-
fieldIconSimple lot "visibility" mempty
333+
fieldIconSimple "visibility" mempty
335334
. action
336335
. PureUpdate
337336
$ cloneTraversal optic
338337
. #fieldType
339338
.~ FieldTypePassword
340339
UpWidget opt idx attrs ->
341-
fieldIconSimple lot "keyboard_double_arrow_up" attrs
340+
fieldIconSimple "keyboard_double_arrow_up" attrs
342341
. action
343342
$ Jsm.moveUp opt idx
344343
DownWidget opt idx attrs ->
345-
fieldIconSimple lot "keyboard_double_arrow_down" attrs
344+
fieldIconSimple "keyboard_double_arrow_down" attrs
346345
. action
347346
$ Jsm.moveDown opt idx
348347
DeleteWidget opt idx attrs ->
349-
fieldIconSimple lot "delete_forever" attrs
348+
fieldIconSimple "delete_forever" attrs
350349
. action
351350
$ Jsm.removeAt opt idx
352351
ModalWidget (ModalItemWidget opt idx _ _ ooc) ->
353-
fieldIconSimple lot "settings" mempty
352+
fieldIconSimple "settings" mempty
354353
. action
355354
. PureUpdate
356355
$ cloneTraversal opt
357356
. ix idx
358357
. cloneTraversal ooc
359358
.~ Opened
360359
ModalWidget (ModalFieldWidget opt idx access _) ->
361-
fieldIconSimple lot "settings" mempty
360+
fieldIconSimple "settings" mempty
362361
. action
363362
. PureUpdate
364363
$ cloneTraversal opt
@@ -367,14 +366,14 @@ fieldIcon lot full opts = \case
367366
. #fieldModalState
368367
.~ Opened
369368
ModalWidget (ModalMiniWidget opt) ->
370-
fieldIconSimple lot "settings" mempty
369+
fieldIconSimple "settings" mempty
371370
. action
372371
. PureUpdate
373372
$ cloneTraversal opt
374373
. #fieldModalState
375374
.~ Opened
376375
ActionWidget icon attrs act ->
377-
fieldIconSimple lot icon attrs act
376+
fieldIconSimple icon attrs act
378377
where
379378
st = full ^. #fullArgs . #argsModel
380379
optic = full ^. #fullArgs . #argsOptic
@@ -387,24 +386,21 @@ fieldIcon lot full opts = \case
387386
. #uniqueUid
388387

389388
fieldIconSimple ::
390-
LeadingOrTrailing ->
391389
Unicode ->
392390
[Attribute action] ->
393391
action ->
394-
TextField.Icon action
395-
fieldIconSimple lot txt attrs action =
396-
TextField.icon
397-
( [ class_ $ case lot of
398-
Leading -> "mdc-text-field__icon--leading"
399-
Trailing -> "mdc-text-field__icon--trailing",
400-
style_ [("pointer-events", "auto")],
392+
View action
393+
fieldIconSimple txt attrs action =
394+
button_
395+
( [ style_ [("pointer-events", "auto")],
401396
textProp "role" "button",
402397
intProp "tabindex" 0,
403398
onClick action
404399
]
405400
<> attrs
406401
)
407-
txt
402+
[ text txt
403+
]
408404

409405
fieldModal :: Args model action t f -> ModalWidget' model -> [View action]
410406
fieldModal args@Args {argsAction = action} (ModalItemWidget opt idx fps lbl ooc) =
@@ -726,11 +722,9 @@ genericFieldViewer args widget =
726722

727723
fieldViewerIcon :: Unicode -> action -> View action
728724
fieldViewerIcon icon action =
729-
IconButton.iconButton
730-
( IconButton.config
731-
& IconButton.setOnClick action
732-
)
733-
icon
725+
button_
726+
[onClick action]
727+
[text icon]
734728

735729
truncateFieldViewer ::
736730
Bool ->

0 commit comments

Comments
 (0)