@plone/volto
Version:
Volto
58 lines (53 loc) • 1.62 kB
JSX
import React, { useRef } from 'react';
import { Button, Form, Input } from 'semantic-ui-react';
import Icon from '@plone/volto/components/theme/Icon/Icon';
import { defineMessages, useIntl } from 'react-intl';
import clearSVG from '@plone/volto/icons/clear.svg';
const messages = defineMessages({
search: {
id: 'Search',
defaultMessage: 'Search',
},
clear: {
id: 'Clear search',
defaultMessage: 'Clear search',
},
});
const BlockChooserSearch = ({ onChange, searchValue }) => {
const intl = useIntl();
const searchInput = useRef(null);
return (
<Form style={{ padding: '0.5em' }}>
<Form.Field
className="searchbox"
style={{ borderLeft: 0, height: '2em', padding: 0 }}
>
{/* eslint-disable jsx-a11y/no-autofocus */}
<Input
aria-label={intl.formatMessage(messages.search)}
onChange={(event) => onChange(event.target.value)}
name="SearchableText"
value={searchValue}
autoComplete="off"
placeholder={intl.formatMessage(messages.search)}
title={intl.formatMessage(messages.search)}
ref={searchInput}
/>
{searchValue && (
<Button
type="button"
className="clear-search-button"
aria-label={intl.formatMessage(messages.clear)}
onClick={() => {
onChange('');
searchInput.current.focus();
}}
>
<Icon name={clearSVG} size="18px" />
</Button>
)}
</Form.Field>
</Form>
);
};
export default BlockChooserSearch;