Scene Filter sidebar (#5714)

* Add Sidebar component
* Add PerformerQuickFilter to Scene filter sidebar
* Add other quick filters
* Add confirmVariant field to AlertModal
* Add SidebarSavedFilterList
* Add sidebar toggle button
* Add data-type attr for criterion option
* Refactor LabeledIdFilter
* Move search input into sidebar
* Save sidebar state in local forage
* Add sidebar rating filter
* Add organised filter
* Open sidebar to / key. Focus search input on sidebar open
* Blur clearable input on escape key
This commit is contained in:
WithoutPants
2025-06-11 15:55:10 +10:00
committed by GitHub
parent a91b9c4d92
commit ed4d17b8f0
33 changed files with 2883 additions and 232 deletions

View File

@@ -463,6 +463,19 @@ export class ListFilterModel {
};
}
public criteriaFor(type: CriterionType) {
return this.criteria.filter((c) => c.criterionOption.type === type);
}
public replaceCriteria(type: CriterionType, newCriteria: Criterion[]) {
const criteria = [
...this.criteria.filter((c) => c.criterionOption.type !== type),
...newCriteria,
];
return this.setCriteria(criteria);
}
public clearCriteria() {
const ret = this.clone();
ret.criteria = [];
@@ -470,6 +483,12 @@ export class ListFilterModel {
return ret;
}
public setCriteria(criteria: Criterion[]) {
const ret = this.clone();
ret.criteria = criteria;
return ret;
}
public removeCriterion(type: CriterionType) {
const ret = this.clone();
const c = ret.criteria.find((cc) => cc.criterionOption.type === type);