DEV: refactor custom-user-selector to use DMultiSelect #304
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.
This replaces the jquery-based autocomplete in user-selector with the DMultiSelect component (similar to what was done in discourse/discourse#34685).
Existing behaviour:
text-field-user-selector.mov
Caveat:
I'm unsure how the higher level wizard components depend on the user-selector being a TextField-based component.. If we can't use DMultiSelect here, the alternative would be applying the
DAutocomplete
modifier directly to the text field (example: discourse/discourse#34131).Key Changes
Converted custom-user-selector from Classic Ember component to Glimmer component, passing in required properties explicitly from parent Classic component
Replaced jQuery autocomplete with DMultiSelect for modern UI patterns
Maintained backward compatibility with existing @onchangecallback interface
Automatic user exclusion: DMultiSelect automatically filters selected users from search results (eliminates
custom excludedUsernames() logic)
Built-in keyboard navigation and accessibility features
Search results display: Users show avatars + username/name, groups show group icon + name
Selected items display: Plain text (username for users, name for groups) without icons - matches original
behavior
Modern dropdown positioning using FloatKit with configurable placement options
Removed Legacy Options
Testing
New behaviour:
d-multi-select-user-selector.mov