mirror of
https://github.com/CommunityOx/ox_lib.git
synced 2026-08-18 15:36:02 +01:00
* tweak(interface/menu): SetNuiFocusKeepInput Default to allow input; disable with "disableInput = false" during registration. * refactor(web/dialog): Split interfaces for better typing of row options for different input types * fix(web/dialog): Use proper type for onChange event Co-authored-by: Linden <65407488+thelindat@users.noreply.github.com>
68 lines
1.8 KiB
TypeScript
68 lines
1.8 KiB
TypeScript
import {
|
|
Box,
|
|
InputGroup,
|
|
InputLeftElement,
|
|
InputRightElement,
|
|
Text,
|
|
Input,
|
|
} from "@chakra-ui/react";
|
|
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
import { useEffect } from "react";
|
|
import { IInput } from "../../../interfaces/dialog";
|
|
|
|
interface Props {
|
|
row: IInput;
|
|
index: number;
|
|
handleChange: (value: string, index: number) => void;
|
|
passwordStates: boolean[];
|
|
handlePasswordStates: (index: number) => void;
|
|
}
|
|
|
|
const InputField: React.FC<Props> = (props) => {
|
|
useEffect(() => {
|
|
if(props.row.default) props.handleChange(props.row.default, props.index);
|
|
}, []);
|
|
|
|
return (
|
|
<>
|
|
<Box mb={3} textAlign="left">
|
|
<Text>{props.row.label}</Text>
|
|
<InputGroup>
|
|
{props.row.icon && (
|
|
<InputLeftElement
|
|
pointerEvents="none"
|
|
children={<FontAwesomeIcon icon={props.row.icon} />}
|
|
/>
|
|
)}
|
|
<Input
|
|
onChange={(e: React.ChangeEvent<HTMLInputElement>) => props.handleChange(e.target.value, props.index)}
|
|
placeholder={props.row.placeholder}
|
|
defaultValue={props.row.default}
|
|
type={
|
|
!props.row.password || props.passwordStates[props.index]
|
|
? "text"
|
|
: "password"
|
|
}
|
|
/>
|
|
{props.row.password && (
|
|
<InputRightElement
|
|
cursor="pointer"
|
|
onClick={() => props.handlePasswordStates(props.index)}
|
|
children={
|
|
<FontAwesomeIcon
|
|
fixedWidth
|
|
icon={props.passwordStates[props.index] ? "eye" : "eye-slash"}
|
|
fontSize="1em"
|
|
style={{ paddingRight: 8 }}
|
|
/>
|
|
}
|
|
/>
|
|
)}
|
|
</InputGroup>
|
|
</Box>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default InputField;
|