Files
pezkuwi-apps/packages/page-assets/src/Overview/Query.tsx
T

56 lines
1.3 KiB
TypeScript

// Copyright 2017-2026 @pezkuwi/app-explorer authors & contributors
// SPDX-License-Identifier: Apache-2.0
import React, { useCallback, useState } from 'react';
import { Button, FilterOverlay, Input, styled } from '@pezkuwi/react-components';
import { useTranslation } from '../translate.js';
interface Props {
className?: string;
onQuery?: (value: string) => void;
}
function Query ({ className = '', onQuery }: Props): React.ReactElement<Props> {
const { t } = useTranslation();
const [input, setInput] = useState('');
const _onChange = useCallback(
(value: string): void => setInput(value),
[]
);
const _onQuery = useCallback(
(): void => {
onQuery && onQuery(input);
},
[input, onQuery]
);
return (
<StyledFilterOverlay className={`${className} ui--FilterOverlay hasOwnMaxWidth`}>
<Input
className='asset--query'
onChange={_onChange}
onEnter={_onQuery}
placeholder={t('asset id or name to query')}
withLabel={false}
>
<Button
icon='play'
onClick={_onQuery}
/>
</Input>
</StyledFilterOverlay>
);
}
const StyledFilterOverlay = styled(FilterOverlay)`
.asset--query {
width: 20em;
}
`;
export default React.memo(Query);