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.
 
 
 
 

102 lines
3.9 KiB

  1. "use strict";
  2. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  4. exports.__esModule = true;
  5. exports.default = void 0;
  6. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  7. var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
  8. var _classnames = _interopRequireDefault(require("classnames"));
  9. var _react = _interopRequireWildcard(require("react"));
  10. var _all = _interopRequireDefault(require("prop-types-extra/lib/all"));
  11. var _Feedback = _interopRequireDefault(require("./Feedback"));
  12. var _FormFileInput = _interopRequireDefault(require("./FormFileInput"));
  13. var _FormFileLabel = _interopRequireDefault(require("./FormFileLabel"));
  14. var _FormContext = _interopRequireDefault(require("./FormContext"));
  15. var _ThemeProvider = require("./ThemeProvider");
  16. var defaultProps = {
  17. disabled: false,
  18. isValid: false,
  19. isInvalid: false
  20. };
  21. var FormFile = _react.default.forwardRef(function (_ref, ref) {
  22. var id = _ref.id,
  23. bsPrefix = _ref.bsPrefix,
  24. bsCustomPrefix = _ref.bsCustomPrefix,
  25. disabled = _ref.disabled,
  26. isValid = _ref.isValid,
  27. isInvalid = _ref.isInvalid,
  28. feedback = _ref.feedback,
  29. className = _ref.className,
  30. style = _ref.style,
  31. label = _ref.label,
  32. children = _ref.children,
  33. custom = _ref.custom,
  34. lang = _ref.lang,
  35. dataBrowse = _ref['data-browse'],
  36. _ref$as = _ref.as,
  37. Component = _ref$as === void 0 ? 'div' : _ref$as,
  38. _ref$inputAs = _ref.inputAs,
  39. inputAs = _ref$inputAs === void 0 ? 'input' : _ref$inputAs,
  40. props = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["id", "bsPrefix", "bsCustomPrefix", "disabled", "isValid", "isInvalid", "feedback", "className", "style", "label", "children", "custom", "lang", "data-browse", "as", "inputAs"]);
  41. var _ref2 = custom ? [bsCustomPrefix, 'custom'] : [bsPrefix, 'form-file'],
  42. prefix = _ref2[0],
  43. defaultPrefix = _ref2[1];
  44. bsPrefix = (0, _ThemeProvider.useBootstrapPrefix)(prefix, defaultPrefix);
  45. var type = 'file';
  46. var _useContext = (0, _react.useContext)(_FormContext.default),
  47. controlId = _useContext.controlId;
  48. var innerFormContext = (0, _react.useMemo)(function () {
  49. return {
  50. controlId: id || controlId,
  51. custom: custom
  52. };
  53. }, [controlId, custom, id]);
  54. var hasLabel = label != null && label !== false && !children;
  55. var input = /*#__PURE__*/_react.default.createElement(_FormFileInput.default, (0, _extends2.default)({}, props, {
  56. ref: ref,
  57. isValid: isValid,
  58. isInvalid: isInvalid,
  59. disabled: disabled,
  60. as: inputAs,
  61. lang: lang
  62. }));
  63. return /*#__PURE__*/_react.default.createElement(_FormContext.default.Provider, {
  64. value: innerFormContext
  65. }, /*#__PURE__*/_react.default.createElement(Component, {
  66. style: style,
  67. className: (0, _classnames.default)(className, bsPrefix, custom && "custom-" + type)
  68. }, children || /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, custom ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, input, hasLabel && /*#__PURE__*/_react.default.createElement(_FormFileLabel.default, {
  69. "data-browse": dataBrowse
  70. }, label)) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, hasLabel && /*#__PURE__*/_react.default.createElement(_FormFileLabel.default, null, label), input), (isValid || isInvalid) && /*#__PURE__*/_react.default.createElement(_Feedback.default, {
  71. type: isValid ? 'valid' : 'invalid'
  72. }, feedback))));
  73. });
  74. FormFile.displayName = 'FormFile';
  75. FormFile.defaultProps = defaultProps;
  76. FormFile.Input = _FormFileInput.default;
  77. FormFile.Label = _FormFileLabel.default;
  78. var _default = FormFile;
  79. exports.default = _default;
  80. module.exports = exports["default"];