Student searchbar: Migrate to React component and optimize for larger lists #2485
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 builds on #2194 and replaces it.
Who is this PR for?
districtwide admin, school admin in large buildings
What problem does this PR fix?
This searchbar can be quite slow for districtwide admin or schoolwide admin in large buildings.
The existing jQuery autocomplete UI doesn't have good hooks for truncating the results returned, and uses a library we'd like to remove as a dependency to limit pieces of UI we depend on.
Right now the way the student searchbar matches it won't match last name, first name or with partial matches.
What does this PR do?
Updates the student searchbar so that it matches any part of the student name in any order (eg, either last name or first name first is fine). Replaces autocomplete with react-autocomplete, keeping the same sessionStorage caching.
Revise the label text ahead of potentially adding a new searchbar for the feed notes, and add a placeholder text to the input.
Add some optimizations for truncating large lists (eg, >500 students), and in that case offer to link to the My students page instead.
Screenshot (if adding a client-side feature)
This shows fake names from (fake_names.rb):

Checklists
Which features or pages does this PR touch?
Does this PR use tests to help verify we can deploy these changes quickly and confidently?