Filters
The continuation and new home of @particles/filters
components.
Installation
yarn add @procore/labs-filters
Dependencies
@procore/core-react
and react
are listed as external peer dependencies. The package will not bundle the code, and requires the app client to provide it as a dependency
. The external peer dep is to assure React Context is consistent in a client's React tree, the child consumers can reference the correct parent provider. If the package uses latest features or bug fixes and a new minimum version of core-react is required, it should be considered a breaking change as the peer dependency version must be met.
Motivation
While integrating @particles/filters
in Procore, it was found to have several design and implementation issues that needed to be addressed, which resulted in code duplication within the micro-frontend architecture.
labs-filters
main goal is to eliminate code duplication within the app, but it also addresses other issues of @particles/filters
, such as:
-
@particles/filters
implicitly provides controlled and uncontrolled ways of using it, which violates interface segregation principle -
onChange
method is only provided with an unordered list of selected filters, making persistance of selected filters a problem -
onChange
is overloaded with unnecessary concerns, such as handling "filter unfocused" events - Filters are not displayed in the correct order when used via controlled API