@@ -9,14 +9,6 @@ open Aardvark.UI.Generic
9
9
module SimplePrimitives =
10
10
open System
11
11
12
-
13
- let private bootCheckBox =
14
- String.concat " " [
15
- " $('#__ID__').checkbox().checkbox('__INITIALSTATE__');"
16
- " $('#__ID__').get(0).addEventListener('click', function(e) { aardvark.processEvent('__ID__', 'onclick'); e.stopPropagation(); }, true);"
17
- " isChecked.onmessage = function(s) { if (s) { $('#__ID__').checkbox('check'); } else { $('#__ID__').checkbox('uncheck'); } };"
18
- ]
19
-
20
12
module internal Html =
21
13
22
14
let semui =
@@ -200,37 +192,33 @@ module SimplePrimitives =
200
192
None
201
193
202
194
let checkbox ( atts : AttributeMap < 'msg >) ( state : aval < bool >) ( toggle : 'msg ) ( l : list < DomNode < 'msg >>) =
203
- let state = if state.IsConstant then AVal.custom ( fun t -> state.GetValue t) else state
204
-
205
- let ev =
206
- {
207
- clientSide = fun _ _ -> " "
208
- serverSide = fun _ _ _ -> Seq.singleton toggle
209
- }
210
-
211
- let boot = bootCheckBox.Replace( " __INITIALSTATE__" , if state.GetValue() then " check" else " uncheck" )
195
+ let boot =
196
+ String.concat " " [
197
+ " const $self = $('#__ID__');"
198
+ " $self.checkbox();"
199
+ " $self[0].addEventListener('click', function(e) { aardvark.processEvent('__ID__', 'onclick'); e.stopPropagation(); }, true);"
200
+ " isChecked.onmessage = function(s) { const behavior = s ? 'set checked' : 'set unchecked'; $self.checkbox(behavior); };"
201
+ ]
212
202
213
203
let myAtts =
214
204
AttributeMap.ofList [
215
- " onclick " , AttributeValue.Event ev
216
- " class " , AttributeValue.String " ui checkbox "
205
+ clazz " ui checkbox "
206
+ onClick ( fun _ -> toggle )
217
207
]
218
208
219
209
let atts = AttributeMap.union atts myAtts
220
210
require Html.semui (
221
211
onBoot' [ " isChecked" , AVal.channel state] boot (
222
- Incremental.div atts (
223
- alist {
224
- yield input [ attribute " type" " checkbox" ]
225
- match l with
226
- | [ l] ->
227
- match l.NodeTag with
228
- | Some " label" -> yield l
229
- | _ -> yield label [] [ l]
230
- | _ ->
231
- yield label [] l
232
- }
233
- )
212
+ Incremental.div atts <| AList.ofList [
213
+ yield input [ attribute " type" " checkbox" ]
214
+ match l with
215
+ | [ l] ->
216
+ match l.NodeTag with
217
+ | Some " label" -> yield l
218
+ | _ -> yield label [] [ l]
219
+ | _ ->
220
+ yield label [] l
221
+ ]
234
222
)
235
223
)
236
224
0 commit comments