lbry-desktop/ui/component/searchOptions/view.jsx

117 lines
3.6 KiB
React
Raw Normal View History

2019-02-18 18:24:56 +01:00
// @flow
import * as ICONS from 'constants/icons';
import React from 'react';
2019-02-18 18:24:56 +01:00
import { SEARCH_OPTIONS } from 'lbry-redux';
import { Form, FormField } from 'component/common/form';
import Button from 'component/button';
type Props = {
setSearchOption: (string, boolean | string | number) => void,
options: {},
expanded: boolean,
toggleSearchExpanded: () => void,
2019-02-18 18:24:56 +01:00
};
const SearchOptions = (props: Props) => {
2019-06-11 20:10:58 +02:00
const { options, setSearchOption, expanded, toggleSearchExpanded } = props;
2019-02-18 18:24:56 +01:00
const resultCount = options[SEARCH_OPTIONS.RESULT_COUNT];
return (
2019-06-11 20:10:58 +02:00
<div>
<Button
button="alt"
2019-06-28 09:33:07 +02:00
label={__('Filter')}
2019-06-11 20:10:58 +02:00
iconRight={expanded ? ICONS.UP : ICONS.DOWN}
onClick={toggleSearchExpanded}
/>
2019-09-26 18:07:11 +02:00
{expanded && (
<Form className="search__options">
<fieldset>
<legend className="search__legend--1">{__('Search For')}</legend>
{[
{
option: SEARCH_OPTIONS.INCLUDE_FILES,
label: __('Files'),
},
{
option: SEARCH_OPTIONS.INCLUDE_CHANNELS,
label: __('Channels'),
},
{
option: SEARCH_OPTIONS.INCLUDE_FILES_AND_CHANNELS,
label: __('Everything'),
},
].map(({ option, label }) => (
<FormField
key={option}
name={option}
type="radio"
blockWrap={false}
label={label}
checked={options[SEARCH_OPTIONS.CLAIM_TYPE] === option}
onChange={() => setSearchOption(SEARCH_OPTIONS.CLAIM_TYPE, option)}
/>
))}
</fieldset>
2019-02-18 18:24:56 +01:00
2019-09-26 18:07:11 +02:00
<fieldset>
<legend className="search__legend--2">{__('File Types')}</legend>
{[
{
option: SEARCH_OPTIONS.MEDIA_VIDEO,
label: __('Videos'),
},
{
option: SEARCH_OPTIONS.MEDIA_AUDIO,
label: __('Audio'),
},
{
option: SEARCH_OPTIONS.MEDIA_IMAGE,
label: __('Images'),
},
{
option: SEARCH_OPTIONS.MEDIA_TEXT,
label: __('Text'),
},
{
option: SEARCH_OPTIONS.MEDIA_APPLICATION,
label: __('Other Files'),
},
].map(({ option, label }) => (
2019-02-18 18:24:56 +01:00
<FormField
2019-09-26 18:07:11 +02:00
key={option}
name={option}
type="checkbox"
2019-02-18 18:24:56 +01:00
blockWrap={false}
2019-09-26 18:07:11 +02:00
disabled={options[SEARCH_OPTIONS.CLAIM_TYPE] === SEARCH_OPTIONS.INCLUDE_CHANNELS}
label={label}
checked={options[option]}
onChange={() => setSearchOption(option, !options[option])}
/>
))}
</fieldset>
<fieldset>
<legend className="search__legend--3">{__('Other Options')}</legend>
<FormField
type="select"
name="result-count"
value={resultCount}
onChange={e => setSearchOption(SEARCH_OPTIONS.RESULT_COUNT, e.target.value)}
blockWrap={false}
label={__('Returned Results')}
>
<option value={10}>10</option>
<option value={30}>30</option>
<option value={50}>50</option>
<option value={100}>100</option>
</FormField>
</fieldset>
</Form>
)}
2019-02-18 18:24:56 +01:00
</div>
);
};
export default SearchOptions;