diff options
author | eug-vs <eug-vs@keemail.me> | 2021-03-14 12:28:07 +0300 |
---|---|---|
committer | eug-vs <eug-vs@keemail.me> | 2021-03-14 12:44:18 +0300 |
commit | 887688bb93b56cf2bd6ec42230912ff7f0513a1d (patch) | |
tree | 7e73c44369122721b9053f9755bde53c83e72dbf /src/components | |
parent | 8e011b65f346386abe26afcce737dd59c5865988 (diff) | |
download | commercel-ui-887688bb93b56cf2bd6ec42230912ff7f0513a1d.tar.gz |
feat: add Select component
Diffstat (limited to 'src/components')
-rw-r--r-- | src/components/Select.tsx | 34 |
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; |