Add folder browser to path filter field (#3570)

This commit is contained in:
WithoutPants
2023-03-22 11:17:31 +11:00
committed by GitHub
parent cf0e7a4574
commit b1608128d6
8 changed files with 95 additions and 23 deletions

View File

@@ -12,6 +12,7 @@ import {
DateCriterion,
TimestampCriterion,
BooleanCriterion,
PathCriterionOption,
} from "src/models/list-filter/criteria/criterion";
import { useIntl } from "react-intl";
import {
@@ -36,6 +37,7 @@ import { RatingCriterion } from "../../models/list-filter/criteria/rating";
import { RatingFilter } from "./Filters/RatingFilter";
import { BooleanFilter } from "./Filters/BooleanFilter";
import { OptionsListFilter } from "./Filters/OptionsListFilter";
import { PathFilter } from "./Filters/PathFilter";
interface IGenericCriterionEditor {
criterion: Criterion<CriterionValue>;
@@ -137,6 +139,11 @@ const GenericCriterionEditor: React.FC<IGenericCriterionEditor> = ({
// <OptionsFilter criterion={criterion} onValueChanged={onValueChanged} />
// );
}
if (criterion.criterionOption instanceof PathCriterionOption) {
return (
<PathFilter criterion={criterion} onValueChanged={onValueChanged} />
);
}
if (criterion instanceof DurationCriterion) {
return (
<DurationFilter criterion={criterion} onValueChanged={onValueChanged} />

View File

@@ -0,0 +1,32 @@
import React from "react";
import { Form } from "react-bootstrap";
import { FolderSelect } from "src/components/Shared/FolderSelect/FolderSelect";
import { ConfigurationContext } from "src/hooks/Config";
import {
Criterion,
CriterionValue,
} from "../../../models/list-filter/criteria/criterion";
interface IInputFilterProps {
criterion: Criterion<CriterionValue>;
onValueChanged: (value: string) => void;
}
export const PathFilter: React.FC<IInputFilterProps> = ({
criterion,
onValueChanged,
}) => {
const { configuration } = React.useContext(ConfigurationContext);
const libraryPaths = configuration?.general.stashes.map((s) => s.path);
return (
<Form.Group>
<FolderSelect
currentDirectory={criterion.value ? criterion.value.toString() : ""}
setCurrentDirectory={(v) => onValueChanged(v)}
collapsible
defaultDirectories={libraryPaths}
/>
</Form.Group>
);
};