You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CustomInput.js 3.8 KiB

3 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. exports.__esModule = true;
  4. exports.default = void 0;
  5. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  6. var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
  7. var _react = _interopRequireDefault(require("react"));
  8. var _propTypes = _interopRequireDefault(require("prop-types"));
  9. var _classnames = _interopRequireDefault(require("classnames"));
  10. var _utils = require("./utils");
  11. var propTypes = {
  12. className: _propTypes.default.string,
  13. id: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]).isRequired,
  14. type: _propTypes.default.string.isRequired,
  15. label: _propTypes.default.node,
  16. inline: _propTypes.default.bool,
  17. valid: _propTypes.default.bool,
  18. invalid: _propTypes.default.bool,
  19. bsSize: _propTypes.default.string,
  20. cssModule: _propTypes.default.object,
  21. children: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.array, _propTypes.default.func]),
  22. innerRef: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.string, _propTypes.default.func])
  23. };
  24. function CustomInput(props) {
  25. var className = props.className,
  26. label = props.label,
  27. inline = props.inline,
  28. valid = props.valid,
  29. invalid = props.invalid,
  30. cssModule = props.cssModule,
  31. children = props.children,
  32. bsSize = props.bsSize,
  33. innerRef = props.innerRef,
  34. attributes = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "label", "inline", "valid", "invalid", "cssModule", "children", "bsSize", "innerRef"]);
  35. var type = attributes.type;
  36. var customClass = (0, _utils.mapToCssModules)((0, _classnames.default)(className, "custom-" + type, bsSize ? "custom-" + type + "-" + bsSize : false), cssModule);
  37. var validationClassNames = (0, _utils.mapToCssModules)((0, _classnames.default)(invalid && 'is-invalid', valid && 'is-valid'), cssModule);
  38. if (type === 'select') {
  39. return _react.default.createElement("select", (0, _extends2.default)({}, attributes, {
  40. ref: innerRef,
  41. className: (0, _classnames.default)(validationClassNames, customClass)
  42. }), children);
  43. }
  44. if (type === 'file') {
  45. return _react.default.createElement("div", {
  46. className: customClass
  47. }, _react.default.createElement("input", (0, _extends2.default)({}, attributes, {
  48. ref: innerRef,
  49. className: (0, _classnames.default)(validationClassNames, (0, _utils.mapToCssModules)('custom-file-input', cssModule))
  50. })), _react.default.createElement("label", {
  51. className: (0, _utils.mapToCssModules)('custom-file-label', cssModule),
  52. htmlFor: attributes.id
  53. }, label || 'Choose file'));
  54. }
  55. if (type !== 'checkbox' && type !== 'radio' && type !== 'switch') {
  56. return _react.default.createElement("input", (0, _extends2.default)({}, attributes, {
  57. ref: innerRef,
  58. className: (0, _classnames.default)(validationClassNames, customClass)
  59. }));
  60. }
  61. var wrapperClasses = (0, _classnames.default)(customClass, (0, _utils.mapToCssModules)((0, _classnames.default)('custom-control', {
  62. 'custom-control-inline': inline
  63. }), cssModule));
  64. return _react.default.createElement("div", {
  65. className: wrapperClasses
  66. }, _react.default.createElement("input", (0, _extends2.default)({}, attributes, {
  67. type: type === 'switch' ? 'checkbox' : type,
  68. ref: innerRef,
  69. className: (0, _classnames.default)(validationClassNames, (0, _utils.mapToCssModules)('custom-control-input', cssModule))
  70. })), _react.default.createElement("label", {
  71. className: (0, _utils.mapToCssModules)('custom-control-label', cssModule),
  72. htmlFor: attributes.id
  73. }, label), children);
  74. }
  75. CustomInput.propTypes = propTypes;
  76. var _default = CustomInput;
  77. exports.default = _default;