UNPKG

3.64 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
5var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
7exports.__esModule = true;
8exports.default = void 0;
9
10var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
12var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
13
14var _classnames = _interopRequireDefault(require("classnames"));
15
16var _all = _interopRequireDefault(require("prop-types-extra/lib/all"));
17
18var _react = _interopRequireWildcard(require("react"));
19
20var _Feedback = _interopRequireDefault(require("./Feedback"));
21
22var _FormCheckInput = _interopRequireDefault(require("./FormCheckInput"));
23
24var _FormCheckLabel = _interopRequireDefault(require("./FormCheckLabel"));
25
26var _FormContext = _interopRequireDefault(require("./FormContext"));
27
28var _ThemeProvider = require("./ThemeProvider");
29
30var defaultProps = {
31 type: 'checkbox',
32 inline: false,
33 disabled: false,
34 isValid: false,
35 isInvalid: false,
36 title: ''
37};
38
39var FormCheck = _react.default.forwardRef(function (_ref, ref) {
40 var id = _ref.id,
41 bsPrefix = _ref.bsPrefix,
42 bsCustomPrefix = _ref.bsCustomPrefix,
43 inline = _ref.inline,
44 disabled = _ref.disabled,
45 isValid = _ref.isValid,
46 isInvalid = _ref.isInvalid,
47 feedback = _ref.feedback,
48 className = _ref.className,
49 style = _ref.style,
50 title = _ref.title,
51 type = _ref.type,
52 label = _ref.label,
53 children = _ref.children,
54 propCustom = _ref.custom,
55 _ref$as = _ref.as,
56 as = _ref$as === void 0 ? 'input' : _ref$as,
57 props = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["id", "bsPrefix", "bsCustomPrefix", "inline", "disabled", "isValid", "isInvalid", "feedback", "className", "style", "title", "type", "label", "children", "custom", "as"]);
58 var custom = type === 'switch' ? true : propCustom;
59 bsPrefix = custom ? (0, _ThemeProvider.useBootstrapPrefix)(bsCustomPrefix, 'custom-control') : (0, _ThemeProvider.useBootstrapPrefix)(bsPrefix, 'form-check');
60
61 var _useContext = (0, _react.useContext)(_FormContext.default),
62 controlId = _useContext.controlId;
63
64 var innerFormContext = (0, _react.useMemo)(function () {
65 return {
66 controlId: id || controlId,
67 custom: custom
68 };
69 }, [controlId, custom, id]);
70 var hasLabel = label != null && label !== false && !children;
71
72 var input = _react.default.createElement(_FormCheckInput.default, (0, _extends2.default)({}, props, {
73 type: type === 'switch' ? 'checkbox' : type,
74 ref: ref,
75 isValid: isValid,
76 isInvalid: isInvalid,
77 isStatic: !hasLabel,
78 disabled: disabled,
79 as: as
80 }));
81
82 return _react.default.createElement(_FormContext.default.Provider, {
83 value: innerFormContext
84 }, _react.default.createElement("div", {
85 style: style,
86 className: (0, _classnames.default)(className, bsPrefix, custom && "custom-" + type, inline && bsPrefix + "-inline")
87 }, children || _react.default.createElement(_react.default.Fragment, null, input, hasLabel && _react.default.createElement(_FormCheckLabel.default, {
88 title: title
89 }, label), (isValid || isInvalid) && _react.default.createElement(_Feedback.default, {
90 type: isValid ? 'valid' : 'invalid'
91 }, feedback))));
92});
93
94FormCheck.displayName = 'FormCheck';
95FormCheck.defaultProps = defaultProps;
96FormCheck.Input = _FormCheckInput.default;
97FormCheck.Label = _FormCheckLabel.default;
98var _default = FormCheck;
99exports.default = _default;
100module.exports = exports["default"];
\No newline at end of file