Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 

92 linhas
2.4 KiB

  1. import React from "react";
  2. // nodejs library to set properties for components
  3. import PropTypes from "prop-types";
  4. // nodejs library that concatenates classes
  5. import classNames from "classnames";
  6. // @material-ui/core components
  7. import { makeStyles } from "@material-ui/core/styles";
  8. import FormControl from "@material-ui/core/FormControl";
  9. import InputLabel from "@material-ui/core/InputLabel";
  10. import Input from "@material-ui/core/Input";
  11. import styles from "assets/jss/nextjs-material-kit/components/customInputStyle.js";
  12. const useStyles = makeStyles(styles);
  13. export default function CustomInput(props) {
  14. const classes = useStyles();
  15. const {
  16. formControlProps,
  17. labelText,
  18. id,
  19. labelProps,
  20. inputProps,
  21. error,
  22. white,
  23. inputRootCustomClasses,
  24. success
  25. } = props;
  26. const labelClasses = classNames({
  27. [" " + classes.labelRootError]: error,
  28. [" " + classes.labelRootSuccess]: success && !error
  29. });
  30. const underlineClasses = classNames({
  31. [classes.underlineError]: error,
  32. [classes.underlineSuccess]: success && !error,
  33. [classes.underline]: true,
  34. [classes.whiteUnderline]: white
  35. });
  36. const marginTop = classNames({
  37. [inputRootCustomClasses]: inputRootCustomClasses !== undefined
  38. });
  39. const inputClasses = classNames({
  40. [classes.input]: true,
  41. [classes.whiteInput]: white
  42. });
  43. var formControlClasses;
  44. if (formControlProps !== undefined) {
  45. formControlClasses = classNames(
  46. formControlProps.className,
  47. classes.formControl
  48. );
  49. } else {
  50. formControlClasses = classes.formControl;
  51. }
  52. return (
  53. <FormControl {...formControlProps} className={formControlClasses}>
  54. {labelText !== undefined ? (
  55. <InputLabel
  56. className={classes.labelRoot + " " + labelClasses}
  57. htmlFor={id}
  58. {...labelProps}
  59. >
  60. {labelText}
  61. </InputLabel>
  62. ) : null}
  63. <Input
  64. classes={{
  65. input: inputClasses,
  66. root: marginTop,
  67. disabled: classes.disabled,
  68. underline: underlineClasses
  69. }}
  70. id={id}
  71. {...inputProps}
  72. />
  73. </FormControl>
  74. );
  75. }
  76. CustomInput.propTypes = {
  77. labelText: PropTypes.node,
  78. labelProps: PropTypes.object,
  79. id: PropTypes.string,
  80. inputProps: PropTypes.object,
  81. formControlProps: PropTypes.object,
  82. inputRootCustomClasses: PropTypes.string,
  83. error: PropTypes.bool,
  84. success: PropTypes.bool,
  85. white: PropTypes.bool
  86. };