Fixes
Processor::process(): preventextraParamsfrom leaking between filters. A filter that does not declareextraParamsno longer sees values requested by another filter earlier in the chain (#374).Like::_setEscaper(): replace brittlesubstr_comparedriver detection withinstanceofchecks, and stop caching the resolved escaper into the filter config so each query resolves afresh. Custom or sub-classed Sqlserver/Postgres drivers now select the correct escaper (#374).
Improvements
- New
Mappedfilter for applying a default condition without triggeringisSearch()— useful when you want a filter to be active by default (e.g. "show only enabled records") but the Reset link should only appear once the user changes the value. Configured via amap(form value → filter condition, withnullmeaning "no filter") and adefaultkey marking which value is the non-search default. Unmapped non-empty values pass through as the condition (#373). Likefilter: newescapersconfig option lets apps register custom driver-to-escaper mappings without subclassing the filter. Shipped defaults (Sqlserver, Postgres) are merged in via_defaultConfig; entries are evaluated in iteration order withinstanceofmatching, falling back toSearch.Defaultwhen nothing matches (#375).Likefilter: added a Postgres branch with a newPostgresEscaperclass (currently inherits fromDefaultEscaper) so driver-specific wildcard rules can diverge in the future without breaking the public API (#374).Callback::process(): deprecatenullreturns from user callbacks. The documented contract is that callbacks returnboolto driveisSearch(); missing return values are still coerced totruebut now emit a deprecation pointing at the offending callback by name. Update your callbacks to return an explicit boolean (#374).
Full Changelog: 7.8.0...7.9.0