Fix namespacing for Shiny modules #126
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR fixes the namespacing issue described in #100 where
update_rank_list()fails inside Shiny modules because nested rank-list element IDs are not correctly namespaced.Background
Shiny namespacing applies only to top-level input IDs and does not automatically propagate to nested widget element IDs inside
inputMessages. As a result, rank-list updates were being sent to non-namespaced DOM IDs, and the client-side binding could not locate the correct list container.What this PR changes
as_rank_list_id()is updated to append the module namespace (id) instead of prepending it.setValue()correctly applies the namespace to inputIDs inside the message object.update_rank_list()explicitly stores the namespace of it's session into the message object, so that the shiny binding can apply it.Why this works
With this fix:
session$ns()becomes compatible with sortable’s internal ID patterns.update_rank_list()correctly updates the UI inside modules.Related Issue
Fixes #100