Quick Filter Bar
The UI for the Quick Filter Bar is split into quickFilterBar.js which operates on the DOM and QuickFilterManager.sys.mjs, which is responsible for the state management of the UI.
The actual filtering is done in the folder view.
The filters are made up of boolean toggles, a text filter with its own boolean toggles, and the tags filters.
Filter State Propagation
All UI elements that update with the state of the quick filter actions are
registered as filters to the QuickFilterManager
. This includes for example the
result count.
The quickFilterBar.js
plumbs the connections to the actual DOM based on the
registered filters and based on events from the DBView. That means it will call
domBindExtra
on the filter implementation. To propagate changes in the filter
state, it uses a QuickFilterState
instance where it calls setFilterValue
and
then uses its createSearchTerms
to create QuickFilterSerchListener
instances.
If the filter definition has an onCommand
method it is also called whenever the
UI element is interacted with and is used to provide the value that is set for
the filter.
Creating the QuickFilterState
calls propagateState
on the filter definition.
The state is recreated whenever the folder is switched, allowing propagateState
to manage the stick feature.
createSearchTerms
on QuickFilterState
uses QuickFilterManager
to connect
back to the registered filter definitions and calls appendTerms
on them.
Once the onMessagesChanged
event is called because the filters were applied,
the special “results” filter is updated and any filter with postFilterProcess
has a chance to update its filter value and potentially have reflectInDOM
called.