Skip to content

Commit

Permalink
🍟 Fix #274
Browse files Browse the repository at this point in the history
  • Loading branch information
fonsp committed Nov 21, 2023
1 parent 0406410 commit dec4333
Showing 1 changed file with 59 additions and 14 deletions.
73 changes: 59 additions & 14 deletions src/Builtins.jl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
### A Pluto.jl notebook ###
# v0.19.31
# v0.19.32

using Markdown
using InteractiveUtils
Expand Down Expand Up @@ -657,7 +657,7 @@ begin
"""<select>$(
map(enumerate(select.options)) do (i,o)
@htl(
"<option value=$(i) selected=$(!ismissing(select.default) && o.first == select.default)>$(
"<option value='puiselect-$(i)' selected=$(!ismissing(select.default) && o.first == select.default)>$(
string(o.second)
)</option>")
end
Expand All @@ -670,24 +670,33 @@ begin
Bonds.possible_values(select::Select) = (string(i) for i in 1:length(select.options))

function Bonds.transform_value(select::Select, val_from_js)
# val_from_js will be a String, but let's allow Integers as well, there's no harm in that
val_num = val_from_js isa Integer ? val_from_js : tryparse(Int64, val_from_js)
select.options[val_num].first
if startswith(val_from_js, "puiselect-")
val_num = tryparse(Int64, @view val_from_js[begin+10:end])
select.options[val_num].first
else
# and OldSelect was rendered
val_from_js
end
end

function Bonds.validate_value(select::Select, val_from_js)
# val_from_js will be a String, but let's allow Integers as well, there's no harm in that
val_num = val_from_js isa Integer ? val_from_js : tryparse(Int64, val_from_js)
val_num isa Integer && 1 <= val_num <= length(select.options)
(val_from_js isa String) || return false
if startswith(val_from_js, "puiselect-")
val_num = tryparse(Int64, @view val_from_js[begin+10:end])
val_num isa Integer && val_num ∈ eachindex(select.options)
else
# and OldSelect was rendered
any(key == val_from_js for (key,val) in select.options)
end
end

result
end

# ╔═║ d64bb805-b700-4fd6-8894-2980152ce250
# ╔═║ 2d8ddc76-dcd6-496a-aa4b-b6697c2fa741
# ╠═║ skip_as_script = true
#=╠═║
Select(["a" => "βœ…", "b" => "πŸ†˜", "c" => "πŸ†˜"])
se_validate_test = Select(["a" => "βœ…", "b" => "πŸ†˜", "c" => "πŸ†˜"])
╠═║ =#

# ╔═║ 4f3ba840-28ce-4790-b929-ce6af8920189
Expand All @@ -711,7 +720,12 @@ OldSelect(["a" => "πŸ†˜", "b" => "βœ…", "c" => "πŸ†˜"]; default="b")
# ╔═║ 6459df3f-143f-4d1a-a238-4447b11cc56c
# ╠═║ skip_as_script = true
#=╠═║
HTML(repr(MIME"text/html"(), Select(["a" => "βœ…", "b" => "πŸ†˜", "c" => "πŸ†˜"])))
HTML(repr(MIME"text/html"(), @bind ose2 Select(["a" => "βœ…", "b" => "πŸ†˜", "c" => "πŸ†˜"])))
╠═║ =#

# ╔═║ a8ea11dd-703f-428a-9c3f-04114afcd069
#=╠═║
ose2
╠═║ =#

# ╔═║ f3bef89c-61ac-4dcf-bf47-3824f11db26f
Expand Down Expand Up @@ -1569,6 +1583,11 @@ bse = @bind se1 Select(["a" => "default", teststr => teststr])
bse
╠═║ =#

# ╔═║ e3369696-eeea-4010-bcf2-6033d806f10a
#=╠═║
HTML(repr(MIME"text/html"(), bse))
╠═║ =#

# ╔═║ c9a291c5-b5f5-40a6-acb3-eff4882c1516
# ╠═║ skip_as_script = true
#=╠═║
Expand All @@ -1592,6 +1611,26 @@ bse
se1, se2, se3, se3(123), se4
╠═║ =#

# ╔═║ d64bb805-b700-4fd6-8894-2980152ce250
#=╠═║
Bonds.validate_value(se_validate_test, "a")
╠═║ =#

# ╔═║ e60d8ebc-c4b9-4452-8c68-93bb905ddc4d
#=╠═║
Bonds.validate_value(se_validate_test, "aa")
╠═║ =#

# ╔═║ 8953e87a-da9d-48ca-9e32-5d635fcf1fb1
#=╠═║
Bonds.validate_value(se_validate_test, "puiselect-1")
╠═║ =#

# ╔═║ 19e5b312-8dd8-4dcd-bf66-d0d0078c090c
#=╠═║
Bonds.validate_value(se_validate_test, "puiselect-20")
╠═║ =#

# ╔═║ 294263fe-0986-4be1-bff5-cd9f7d261c09
#=╠═║
bose = @bind ose1 Select(["a" => "default", teststr => teststr])
Expand Down Expand Up @@ -1901,7 +1940,7 @@ export Slider, NumberField, Button, LabelButton, CounterButton, CheckBox, TextFi
# ╠═dc3b6628-f453-46d9-b6a1-957608a20764
# ╠═a203d9d4-cd7b-4368-9f6d-e040a5757565
# ╠═98d251ff-67e7-4b16-b2e0-3e2102918ca2
# ╠═0baae341-aa0d-42fd-9f21-d40dd5a03af9
# β•Ÿβ”€0baae341-aa0d-42fd-9f21-d40dd5a03af9
# ╠═c2b473f4-b56b-4a91-8377-6c86da895cbe
# ╠═5caa34e8-e501-4248-be65-ef9c6303d025
# ╠═46a90b45-8fef-493e-9bd1-a71d1f9c53f6
Expand Down Expand Up @@ -1961,14 +2000,19 @@ export Slider, NumberField, Button, LabelButton, CounterButton, CheckBox, TextFi
# ╠═d4bf5249-6027-43c5-bd20-48ad95721e27
# ╠═d8c60294-0ca6-4cb0-b51d-9f6d6b370b28
# ╠═fbc6e4c1-4bd8-43a2-ac82-e6f76033fd8e
# β•Ÿβ”€eb4e17fd-07ba-4031-a39f-0d9fccd3d886
# ╠═eb4e17fd-07ba-4031-a39f-0d9fccd3d886
# ╠═57a7d0c9-2f4a-44e6-9b7a-0bbd98611c9d
# ╠═c9a291c5-b5f5-40a6-acb3-eff4882c1516
# ╠═9729fa52-7cff-4905-9d1c-1d0eefc8ad6e
# ╠═d08b571c-fe08-4911-b9f3-5a1075be50ea
# ╠═a58e383a-3837-4b4c-aa84-cf64436cd870
# ╠═e3369696-eeea-4010-bcf2-6033d806f10a
# ╠═7f05f0b5-051e-4c75-b484-944daf8a274d
# ╠═2d8ddc76-dcd6-496a-aa4b-b6697c2fa741
# ╠═d64bb805-b700-4fd6-8894-2980152ce250
# ╠═e60d8ebc-c4b9-4452-8c68-93bb905ddc4d
# ╠═8953e87a-da9d-48ca-9e32-5d635fcf1fb1
# ╠═19e5b312-8dd8-4dcd-bf66-d0d0078c090c
# ╠═4f3ba840-28ce-4790-b929-ce6af8920189
# β•Ÿβ”€edfdbaee-ec31-40c2-9ad5-28250fe6b651
# ╠═294263fe-0986-4be1-bff5-cd9f7d261c09
Expand All @@ -1977,8 +2021,9 @@ export Slider, NumberField, Button, LabelButton, CounterButton, CheckBox, TextFi
# ╠═b34d3a01-f8d6-4586-b655-5da84d586cd5
# ╠═609ab7f4-4fc4-4122-986d-9bfe54fa715d
# ╠═6459df3f-143f-4d1a-a238-4447b11cc56c
# ╠═a8ea11dd-703f-428a-9c3f-04114afcd069
# ╠═f3bef89c-61ac-4dcf-bf47-3824f11db26f
# ╠═42e9e5ab-7d34-4300-a6c0-47f5cde658d8
# β•Ÿβ”€42e9e5ab-7d34-4300-a6c0-47f5cde658d8
# ╠═57232d88-b74f-4823-be61-8db450c93f5c
# ╠═04ed1e71-d806-423e-b99c-476ea702feb3
# β•Ÿβ”€7c4303a1-19be-41a2-a6c7-90146e01401d
Expand Down

0 comments on commit dec4333

Please sign in to comment.