From c222bc06f9c123d3e2fa4a428d74032f54887485 Mon Sep 17 00:00:00 2001
From: eug-vs <eug-vs@keemail.me>
Date: Sat, 17 Apr 2021 19:56:30 +0300
Subject: feat: add ServiceSearch

---
 src/lib/ServiceSearch.tsx | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)
 create mode 100644 src/lib/ServiceSearch.tsx

(limited to 'src/lib/ServiceSearch.tsx')

diff --git a/src/lib/ServiceSearch.tsx b/src/lib/ServiceSearch.tsx
new file mode 100644
index 0000000..b2509d3
--- /dev/null
+++ b/src/lib/ServiceSearch.tsx
@@ -0,0 +1,31 @@
+import React, { useContext } from 'react';
+import _ from 'lodash';
+import { InputBase } from '../components/Input';
+import ServiceContext from './ServiceContext';
+import useQuery from '../hooks/useQuery';
+
+const ServiceSearch: React.FC = () => {
+  const service = useContext(ServiceContext);
+  const { query, setQuery } = useQuery();
+
+  const placeholder = `Искать ${service.name.toLowerCase()}`;
+
+  const handleChange = _.debounce((event: React.ChangeEvent<HTMLInputElement>) => {
+    if (service.searchBy) {
+      const newQuery = service.searchBy.reduce((acc, key) => {
+        acc[`${key}[$regex]`] = event.target.value;
+        return acc;
+      }, query);
+
+      setQuery(newQuery);
+    }
+  }, 250);
+
+  return (
+    <div className="mr-6 flex items-center">
+      <InputBase placeholder={placeholder} onChange={handleChange} />
+    </div>
+  );
+};
+
+export default ServiceSearch;
-- 
cgit v1.2.3

