Hide filters on xs, Button to show

This commit is contained in:
Bernt Christian Egeland 2021-12-12 00:58:21 +01:00
parent fc3b94cdf3
commit 4e3f07f337
2 changed files with 56 additions and 37 deletions

View File

@ -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>
); );
} }

View File

@ -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;