Files
github-stats-extended/apps/frontend/src/components/Generic/Input.jsx
T
Marco Pasqualetti 58e02dae29 feat: replace create-react-app with vite (#34)
* feat: replace `create-react-app` with `vite`

* fix: correct axios-override extension

* chore: add more extensions to lint-staged
2026-01-25 12:20:17 +01:00

66 lines
1.4 KiB
React

import React from "react";
import PropTypes from "prop-types";
import { classnames } from "../../utils";
// options is of form [{value: '', label: '', disabled: true/false}]
const Input = ({
options,
selectedOption,
setSelectedOption,
disabled,
className,
}) => {
return (
<select
className={classnames(
"text-gray-700 bg-white select select-sm w-40 rounded-sm mt-4",
className,
)}
value={selectedOption.label}
onChange={(e) => {
setSelectedOption(
options.find((item) => item.label === e.target.value),
);
}}
disabled={disabled}
>
{options.map((option) => (
<option
key={option.value}
disabled={option.disabled}
className={classnames(
option.label === selectedOption.label && "bg-blue-200",
)}
>
{option.label}
</option>
))}
</select>
);
};
Input.propTypes = {
options: PropTypes.arrayOf(
PropTypes.shape({
value: PropTypes.string.isRequired,
label: PropTypes.string.isRequired,
disabled: PropTypes.bool,
}),
).isRequired,
selectedOption: PropTypes.shape({
value: PropTypes.string.isRequired,
label: PropTypes.string.isRequired,
}).isRequired,
setSelectedOption: PropTypes.func.isRequired,
disabled: PropTypes.bool,
className: PropTypes.string,
};
Input.defaultProps = {
disabled: false,
className: "",
};
export { Input };