mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-02 09:15:22 +03:00
Hide filters on xs, Button to show
This commit is contained in:
parent
fc3b94cdf3
commit
4e3f07f337
@ -59,7 +59,7 @@ export const DateFilterOptions = [
|
|||||||
|
|
||||||
export default function DatePicker({
|
export default function DatePicker({
|
||||||
helpText,
|
helpText,
|
||||||
keyboardType = 'date',
|
keyboardType = 'text',
|
||||||
inputRef,
|
inputRef,
|
||||||
label,
|
label,
|
||||||
leadingIcon: LeadingIcon,
|
leadingIcon: LeadingIcon,
|
||||||
@ -123,10 +123,15 @@ export default function DatePicker({
|
|||||||
className="flex space-x-2 items-center"
|
className="flex space-x-2 items-center"
|
||||||
data-testid={`label-${label.toLowerCase().replace(/[^\w]+/g, '_')}`}
|
data-testid={`label-${label.toLowerCase().replace(/[^\w]+/g, '_')}`}
|
||||||
>
|
>
|
||||||
|
{LeadingIcon ? (
|
||||||
|
<div className="w-10 h-full">
|
||||||
|
<LeadingIcon />
|
||||||
|
</div>
|
||||||
|
) : null}
|
||||||
<div className="relative w-full">
|
<div className="relative w-full">
|
||||||
<input
|
<input
|
||||||
className="h-6 mt-6 w-full bg-transparent focus:outline-none focus:ring-0"
|
className="h-6 mt-6 w-full bg-transparent focus:outline-none focus:ring-0"
|
||||||
type="text"
|
type={keyboardType}
|
||||||
readOnly
|
readOnly
|
||||||
onBlur={handleBlur}
|
onBlur={handleBlur}
|
||||||
onFocus={handleFocus}
|
onFocus={handleFocus}
|
||||||
@ -151,6 +156,7 @@ export default function DatePicker({
|
|||||||
) : null}
|
) : null}
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
{helpText ? <div className="text-xs pl-3 pt-1">{helpText}</div> : null}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,12 @@
|
|||||||
import { h } from 'preact';
|
import { h } from 'preact';
|
||||||
import Filter from './filter';
|
import Filter from './filter';
|
||||||
import { useConfig } from '../../../api';
|
import { useConfig } from '../../../api';
|
||||||
import { useMemo } from 'preact/hooks';
|
import { useMemo, useState } from 'preact/hooks';
|
||||||
import { DateFilterOptions } from '../../../components/DatePicker';
|
import { DateFilterOptions } from '../../../components/DatePicker';
|
||||||
|
import Button from '../../../components/Button';
|
||||||
|
|
||||||
const Filters = ({ onChange, searchParams }) => {
|
const Filters = ({ onChange, searchParams }) => {
|
||||||
|
const [viewFilters, setViewFilters] = useState(false);
|
||||||
const { data } = useConfig();
|
const { data } = useConfig();
|
||||||
const cameras = useMemo(() => Object.keys(data.cameras), [data]);
|
const cameras = useMemo(() => Object.keys(data.cameras), [data]);
|
||||||
|
|
||||||
@ -27,9 +29,16 @@ const Filters = ({ onChange, searchParams }) => {
|
|||||||
}, data.objects?.track || [])
|
}, data.objects?.track || [])
|
||||||
.filter((value, i, self) => self.indexOf(value) === i);
|
.filter((value, i, self) => self.indexOf(value) === i);
|
||||||
}, [data]);
|
}, [data]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex space-x-4">
|
<div>
|
||||||
|
<Button
|
||||||
|
onClick={() => setViewFilters(!viewFilters)}
|
||||||
|
className="block xs:hidden w-full mb-4 text-center"
|
||||||
|
type="text"
|
||||||
|
>
|
||||||
|
Filters
|
||||||
|
</Button>
|
||||||
|
<div className={`xs:flex space-y-1 xs:space-y-0 xs:space-x-4 ${viewFilters ? 'flex-col' : 'hidden'}`}>
|
||||||
<Filter
|
<Filter
|
||||||
type="dropdown"
|
type="dropdown"
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
@ -38,6 +47,7 @@ const Filters = ({ onChange, searchParams }) => {
|
|||||||
label="Camera"
|
label="Camera"
|
||||||
searchParams={searchParams}
|
searchParams={searchParams}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<Filter
|
<Filter
|
||||||
type="dropdown"
|
type="dropdown"
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
@ -46,6 +56,7 @@ const Filters = ({ onChange, searchParams }) => {
|
|||||||
label="Zone"
|
label="Zone"
|
||||||
searchParams={searchParams}
|
searchParams={searchParams}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<Filter
|
<Filter
|
||||||
type="dropdown"
|
type="dropdown"
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
@ -54,6 +65,7 @@ const Filters = ({ onChange, searchParams }) => {
|
|||||||
label="Label"
|
label="Label"
|
||||||
searchParams={searchParams}
|
searchParams={searchParams}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<Filter
|
<Filter
|
||||||
type="datepicker"
|
type="datepicker"
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
@ -63,6 +75,7 @@ const Filters = ({ onChange, searchParams }) => {
|
|||||||
searchParams={searchParams}
|
searchParams={searchParams}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
export default Filters;
|
export default Filters;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user