UNPKG

2.28 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 _react = _interopRequireWildcard(require("react"));
17
18var _Button = _interopRequireDefault(require("./Button"));
19
20var noop = function noop() {
21 return undefined;
22};
23
24var ToggleButton = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
25 var children = _ref.children,
26 name = _ref.name,
27 className = _ref.className,
28 checked = _ref.checked,
29 type = _ref.type,
30 onChange = _ref.onChange,
31 value = _ref.value,
32 disabled = _ref.disabled,
33 inputRef = _ref.inputRef,
34 props = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["children", "name", "className", "checked", "type", "onChange", "value", "disabled", "inputRef"]);
35
36 var _useState = (0, _react.useState)(false),
37 focused = _useState[0],
38 setFocused = _useState[1];
39
40 var handleFocus = (0, _react.useCallback)(function (e) {
41 if (e.target.tagName === 'INPUT') setFocused(true);
42 }, []);
43 var handleBlur = (0, _react.useCallback)(function (e) {
44 if (e.target.tagName === 'INPUT') setFocused(false);
45 }, []);
46 return /*#__PURE__*/_react.default.createElement(_Button.default, (0, _extends2.default)({}, props, {
47 ref: ref,
48 className: (0, _classnames.default)(className, focused && 'focus', disabled && 'disabled'),
49 type: undefined,
50 active: !!checked,
51 as: "label"
52 }), /*#__PURE__*/_react.default.createElement("input", {
53 name: name,
54 type: type,
55 value: value,
56 ref: inputRef,
57 autoComplete: "off",
58 checked: !!checked,
59 disabled: !!disabled,
60 onFocus: handleFocus,
61 onBlur: handleBlur,
62 onChange: onChange || noop
63 }), children);
64});
65
66ToggleButton.displayName = 'ToggleButton';
67var _default = ToggleButton;
68exports.default = _default;
69module.exports = exports["default"];
\No newline at end of file