ocsigen / js_of_ocaml

Compiler from OCaml to Javascript.
http://ocsigen.org/js_of_ocaml/
Other
947 stars 185 forks source link

[BUG][Tyxml] multiple a_class for a single element are not supported. #968

Open clembu opened 4 years ago

clembu commented 4 years ago

Describe the bug Given the following function:

let wrap ?(a = []) contents =
 Js_of_ocaml_tyxml.Tyxml_js.Html.(div ~a:(a_class [ "wrapper" ] :: a) contents)

calling wrap ~a:[a_class [ "some-other-class" ]] some_contents results in a structure having either only "wrapper" or "some-other-class".

Expected behavior The classes are gathered into a single list and properly reflect the final list of attributes, without having to separate classes, event handlers, and all others, in order to bundle them all at the lowest structure-creation level.

Versions Ocaml: 4.08.1 Js_of_ocaml-tyxml: 3.5.2

hhugo commented 4 years ago

@Drup, is this something we would want to support in tyxml directly ?

Drup commented 4 years ago

I'm not sure, do you have a pragmatic solution ? I feel like we should treat attributes as an string table, instead of an association list, and ask concrete implementation to do the right thing.

hhugo commented 4 years ago

I do not have any solution in mind, I didn't really think about it.