JuliaPluto / PlutoUI.jl

https://featured.plutojl.org/basic/plutoui.jl
The Unlicense
302 stars 55 forks source link

PlutoUI's Select type has the order of the pairs wrong #159

Closed KronosTheLate closed 2 years ago

KronosTheLate commented 2 years ago

Copy of this discourse post:

The Select type allows the user to create down-down menus with the @bind macro. Awesome feature. The current behaviour is image|690x126, 75%

The docs for Select look like this: image

So in the language of the docs, "1" is the key, and "one" is the value. key=>value is consistent with Dict, and feels right. But it feels to me as the entry visible in the drop-down is the key, used to index to the right value. The key has a name that makes sense, but the value is what you are really interested in. But currently, the opposite is the case.

Additionally, keys are of type string, but values are of type any. I want variables to have any type, but drop-down entries to have type String. The other way around, which is currently the case, makes no sense: image

Could I be right in saying that the first value, the key of type String, should be shown in the drop-down? And that the second value, the value of type Any, should be bound to the variable? It makes more sense, and is a lot more powerful.

fonsp commented 2 years ago

Thanks for pointing this out, I keep getting confused about this myself!

It looks like I allowed Any on the wrong side in #148 , let me fix this and clear up the docs!

KronosTheLate commented 2 years ago

Great! Thank you so much - the feauture is really helpful ^_^

Do you have any thought on my feeling that it would be more logical to have the first item in the pair be the displayed one, and the second to bind to the variable? It is so massivly breaking that it is probably not worth it, but I am curius about your thoughts.

fonsp commented 2 years ago

Right! Like you say, it's too breaking to change now, but I also get confused sometimes. I think both make sense

KronosTheLate commented 2 years ago

Yhea, there is not a clear answer, and I can see that both make some sense. I guess the best solution then is to make the order really clear in the documentation ^_^