* applied eslint * add locales and lint the project * removed error boundary * updated locales * fix min files * fix locales
49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
import React, { useEffect, useState } from 'react';
|
|
import { observer } from 'mobx-react-lite';
|
|
import { useStore } from 'App/mstore';
|
|
import { Icon } from 'UI';
|
|
import { debounce } from 'App/utils';
|
|
|
|
let debounceUpdate: any = () => {};
|
|
|
|
function FFlagsSearch() {
|
|
const { featureFlagsStore } = useStore();
|
|
const [query, setQuery] = useState(featureFlagsStore.sort.query);
|
|
|
|
useEffect(() => {
|
|
debounceUpdate = debounce((value: string) => {
|
|
featureFlagsStore.setSort({
|
|
order: featureFlagsStore.sort.order,
|
|
query: value,
|
|
});
|
|
featureFlagsStore.setPage(1);
|
|
void featureFlagsStore.fetchFlags();
|
|
}, 250);
|
|
}, []);
|
|
|
|
const write = ({
|
|
target: { value },
|
|
}: React.ChangeEvent<HTMLInputElement>) => {
|
|
setQuery(value.replace(/\s/g, '-'));
|
|
debounceUpdate(value.replace(/\s/g, '-'));
|
|
};
|
|
|
|
return (
|
|
<div className="relative">
|
|
<Icon
|
|
name="search"
|
|
className="absolute top-0 bottom-0 ml-2 m-auto"
|
|
size="16"
|
|
/>
|
|
<input
|
|
value={query}
|
|
name="flagsSearch"
|
|
className="bg-white p-2 border border-borderColor-gray-light-shade rounded w-full pl-10"
|
|
placeholder="Filter by key"
|
|
onChange={write}
|
|
/>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export default observer(FFlagsSearch);
|