diff --git a/src/client/dd-hub-react/src/sections/document/bool-filter.tsx b/src/client/dd-hub-react/src/sections/document/bool-filter.tsx new file mode 100644 index 0000000..e3f6a3c --- /dev/null +++ b/src/client/dd-hub-react/src/sections/document/bool-filter.tsx @@ -0,0 +1,34 @@ +import { useState } from 'react'; + +import Switch from '@mui/material/Switch'; +import Checkbox from '@mui/material/Checkbox'; +import FormGroup from '@mui/material/FormGroup'; +import AddBoxIcon from '@mui/icons-material/AddBox'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import AddBoxTwoToneIcon from '@mui/icons-material/AddBoxTwoTone'; +// ---------------------------------------------------------------------- + +type BoolFilterProps = { + label: string; + onClick?: React.MouseEventHandler; +} + +export function BoolFilter({ label }: BoolFilterProps) { + const [disabled, setDisabled] = useState(true); + + return ( + + } + checkedIcon={} + onClick={() => setDisabled(!disabled)} + /> + { + disabled + ? } label={label} /> + : } label={label} /> + } + + ); +} \ No newline at end of file diff --git a/src/client/dd-hub-react/src/sections/document/view/doc-search-view.tsx b/src/client/dd-hub-react/src/sections/document/view/doc-search-view.tsx index 24bd046..51962f6 100644 --- a/src/client/dd-hub-react/src/sections/document/view/doc-search-view.tsx +++ b/src/client/dd-hub-react/src/sections/document/view/doc-search-view.tsx @@ -3,15 +3,9 @@ import { useState, useCallback, useEffect } from 'react'; import Box from '@mui/material/Box'; import Grid from '@mui/material/Grid'; import Button from '@mui/material/Button'; -import Switch from '@mui/material/Switch'; -import Checkbox from '@mui/material/Checkbox'; -import FormGroup from '@mui/material/FormGroup'; import TextField from '@mui/material/TextField'; import Typography from '@mui/material/Typography'; import Pagination from '@mui/material/Pagination'; -import AddBoxIcon from '@mui/icons-material/AddBox'; -import FormControlLabel from '@mui/material/FormControlLabel'; -import AddBoxTwoToneIcon from '@mui/icons-material/AddBoxTwoTone'; import { DashboardContent } from 'src/layouts/dashboard'; import { Filter, getFiltersAsync } from 'src/api/filter-service'; @@ -19,6 +13,7 @@ import { Filter, getFiltersAsync } from 'src/api/filter-service'; import { Iconify } from 'src/components/iconify'; import { DocItem } from '../doc-item'; +import { BoolFilter } from '../bool-filter'; import type { IDocItem } from '../doc-item'; // ---------------------------------------------------------------------- @@ -107,20 +102,7 @@ export function DocSearchView({ posts }: Props) { let filterComp; switch (filter.type) { case 'BOOLEAN': - filterComp = - - } - checkedIcon={} - onClick={() => setDisabledState(index, !disabledStates[index])} - /> - { - disabledStates[index] === undefined || disabledStates[index] - ? } label={filter.label ?? filter.name} /> - : } label={filter.label ?? filter.name} /> - } - + filterComp = break; case 'VARCHAR': case 'INTEGER':