frontend/app/browse/BrowseFilter.tsx (81 lines of code) (raw):

import React from "react"; import { Grid, makeStyles, Typography, Input, Select, MenuItem } from "@material-ui/core"; interface BrowseFilterProps { filterString: string; filterStringChanged: (newString:string)=>void; typeString: string; typeStringChanged: (newString:string)=>void; } const useStyles = makeStyles({ selector: { width: "100%" } }); const BrowseFilter:React.FC<BrowseFilterProps> = (props) => { const classes = useStyles(); return <Grid container direction="column" > <Grid item> <Typography variant="h6">Filter</Typography> </Grid> <Grid item> <Input id="filter-input" value={props.filterString} onChange={(evt) => props.filterStringChanged(evt.target.value as string)} /> </Grid> <Grid item style={{ marginTop: 8 }}> Type: <Select id="filter-type" value={props.typeString} onChange={(evt) => props.typeStringChanged(evt.target.value as string)} > <MenuItem value="Any">Any</MenuItem> <MenuItem value="application/gzip">application/gzip</MenuItem> <MenuItem value="application/javascript">application/javascript</MenuItem> <MenuItem value="application/json">application/json</MenuItem> <MenuItem value="application/msword">application/msword</MenuItem> <MenuItem value="application/mxf">application/mxf</MenuItem> <MenuItem value="application/octet-stream">application/octet-stream</MenuItem> <MenuItem value="application/pdf">application/pdf</MenuItem> <MenuItem value="application/photoshop">application/photoshop</MenuItem> <MenuItem value="application/postscript">application/postscript</MenuItem> <MenuItem value="application/psd">application/psd</MenuItem> <MenuItem value="application/rtf">application/rtf</MenuItem> <MenuItem value="application/x-7z-compressed">application/x-7z-compressed</MenuItem> <MenuItem value="application/x-cdf">application/x-cdf</MenuItem> <MenuItem value="application/x-gzip">application/x-gzip</MenuItem> <MenuItem value="application/x-photoshop">application/x-photoshop</MenuItem> <MenuItem value="application/x-tar">application/x-tar</MenuItem> <MenuItem value="application/xml">application/xml</MenuItem> <MenuItem value="application/zip">application/zip</MenuItem> <MenuItem value="audio/aac">audio/aac</MenuItem> <MenuItem value="audio/aiff">audio/aiff</MenuItem> <MenuItem value="audio/midi">audio/midi</MenuItem> <MenuItem value="audio/mpeg">audio/mpeg</MenuItem> <MenuItem value="audio/ogg">audio/ogg</MenuItem> <MenuItem value="audio/wav">audio/wav</MenuItem> <MenuItem value="audio/x-aiff">audio/x-aiff</MenuItem> <MenuItem value="audio/x-wav">audio/x-wav</MenuItem> <MenuItem value="binary/octet-stream">binary/octet-stream</MenuItem> <MenuItem value="image/bmp">image/bmp</MenuItem> <MenuItem value="image/gif">image/gif</MenuItem> <MenuItem value="image/jpeg">image/jpeg</MenuItem> <MenuItem value="image/png">image/png</MenuItem> <MenuItem value="image/psd">image/psd</MenuItem> <MenuItem value="image/tiff">image/tiff</MenuItem> <MenuItem value="image/vnd.adobe.photoshop">image/vnd.adobe.photoshop</MenuItem> <MenuItem value="image/x-icon">image/x-icon</MenuItem> <MenuItem value="text/css">text/css</MenuItem> <MenuItem value="text/csv">text/csv</MenuItem> <MenuItem value="text/html">text/html</MenuItem> <MenuItem value="text/plain">text/plain</MenuItem> <MenuItem value="text/richtext">text/richtext</MenuItem> <MenuItem value="text/xml">text/xml</MenuItem> <MenuItem value="video/mp4">video/mp4</MenuItem> <MenuItem value="video/mpeg">video/mpeg</MenuItem> <MenuItem value="video/ogg">video/ogg</MenuItem> <MenuItem value="video/quicktime">video/quicktime</MenuItem> <MenuItem value="video/webm">video/webm</MenuItem> <MenuItem value="video/x-msvideo">video/x-msvideo</MenuItem> <MenuItem value="video/x-sgi-movie">video/x-sgi-movie</MenuItem> <MenuItem value="video/x-flv">video/x-flv</MenuItem> </Select> </Grid> </Grid> } export default BrowseFilter;