summaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
authoreug-vs <eug-vs@keemail.me>2021-03-14 12:28:07 +0300
committereug-vs <eug-vs@keemail.me>2021-03-14 12:44:18 +0300
commit887688bb93b56cf2bd6ec42230912ff7f0513a1d (patch)
tree7e73c44369122721b9053f9755bde53c83e72dbf /src/components
parent8e011b65f346386abe26afcce737dd59c5865988 (diff)
downloadcommercel-ui-887688bb93b56cf2bd6ec42230912ff7f0513a1d.tar.gz
feat: add Select component
Diffstat (limited to 'src/components')
-rw-r--r--src/components/Select.tsx34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/components/Select.tsx b/src/components/Select.tsx
new file mode 100644
index 0000000..18eb0ed
--- /dev/null
+++ b/src/components/Select.tsx
@@ -0,0 +1,34 @@
+import React from 'react';
+import { Field } from 'formik';
+
+interface Option {
+ key: string;
+ label: string;
+}
+
+export interface Props extends React.SelectHTMLAttributes<HTMLSelectElement> {
+ label?: string;
+ options: Option[];
+}
+
+const SelectBase: React.FC<Props> = ({ label, options, ...props }) => {
+ return (
+ <div className="m-2 mb-4 flex flex-col">
+ <label htmlFor={props?.name} className="mb-1 text-gray-700">{label}</label>
+ <select
+ id={props?.name}
+ placeholder={label}
+ className="p-2 border-2 border-black bg-white focus:outline-none"
+ {...props}
+ >
+ {options?.map(option => (
+ <option value={option.key} key={option.key}>{option.label}</option>
+ ))}
+ </select>
+ </div>
+ );
+};
+
+const Select: React.FC<Props> = props => <Field {...props} as={SelectBase} />;
+
+export default Select;