* REFACTOR: reworks all the search-advanced-options panel
This commit includes the following changes:
- prevents any mutation of external (to the component) values
- get rid of observers
- uses @action
- minor UI tweaks
- dropped the unecessary debounce
- drops all the legacy code for badges/groups which is not being used
- replaces user-selector by user-chooser and improves multi-select to not show `search` if maximum has been reached
Most importantly this refactor should fix multiple bugs due to _update() being called multiple times if searchTerm was empty and other various bugs where some changes in searchTerm was not applied to the sidebar.
A first step to adding automatic dark mode color scheme switching. Adds a new SCSS file at `color_definitions.scss` that serves to output all SCSS color variables as CSS custom properties. And replaces all SCSS color variables with the new CSS custom properties throughout the stylesheets.
This is an alpha feature at this point, can only be enabled via console using the `default_dark_mode_color_scheme_id` site setting.
The global setting disable_search_queue_threshold
(DISCOURSE_DISABLE_SEARCH_QUEUE_THRESHOLD) which default to 1 second was
added.
This protection ensures that when the application is unable to keep up with
requests it will simply turn off search till it is not backed up.
To disable this protection set this to 0.
Run `prettier --write "app/assets/stylesheets/**/*.scss" "plugins/**/*.scss"` after making sure you installed it with `yarn`
It's recommended to configure your editor to run prettier on file save.
Prior:
Entering `test after:5` and then removing the 5 via the search text field would result in the UI not updating
After:
UI updates after half a second
Removing it from the UI, removes it from the search field immediately.
Change the regex to detect filter words. This now matches what happens in search.rb, which gives a lot more flexibility (such as iterating over multiple `in:` terms)
Return [] when searchTerm is empty
Move .trim() to this.set('searchTerm', searchTerm) so it doesn't run twice (which was very obvious when watching the search term field)
More refactoring to make this a bit less complex
Update code based on review comments
FEATURE: Add common `in:` options
Properly support Categories so it updates the search box correctly
Use category id, as it is more consistent with search results than using the slugs, especially for parent/subcategory
Added Status
Improve AutoComplete so it can receive updates
Added the ability for AutoComplete to receive updates to badge-selector and group-selector
Respect null, which is set via web-hooks
Support both # and category: for category detection.
Only update the searchedTerms if they differ from its current value (this helps the Category Selector receive updates)
Opt in receive updates (#3)
* Make the selectors opt-in for receiving updates
* Opt-in to receive updates
* Fix category detection for search-advanced-options
Fix eslint error
Update user-selector so it can receive updates live too
Make the canReceiveUpdates check validate against 'true'
Converted to use template literals
Refactor the regex involved with this feature
Split apart the init to make it a bit more manageable/testable
Switch the category selector to category-chooser, so it is a dropdown of categories instead of auto-complete
Reduce RegEx to make this happier with unicode languages and reduce some of the complexity