index.js 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  3. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  4. Object.defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = void 0;
  8. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  9. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  10. var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
  11. var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
  12. var React = _interopRequireWildcard(require("react"));
  13. var _classnames = _interopRequireDefault(require("classnames"));
  14. var _useMergedState3 = _interopRequireDefault(require("rc-util/lib/hooks/useMergedState"));
  15. var _KeyCode = _interopRequireDefault(require("rc-util/lib/KeyCode"));
  16. var _excluded = ["prefixCls", "className", "checked", "defaultChecked", "disabled", "loadingIcon", "checkedChildren", "unCheckedChildren", "onClick", "onChange", "onKeyDown"];
  17. var Switch = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
  18. var _classNames;
  19. var _ref$prefixCls = _ref.prefixCls,
  20. prefixCls = _ref$prefixCls === void 0 ? 'rc-switch' : _ref$prefixCls,
  21. className = _ref.className,
  22. checked = _ref.checked,
  23. defaultChecked = _ref.defaultChecked,
  24. disabled = _ref.disabled,
  25. loadingIcon = _ref.loadingIcon,
  26. checkedChildren = _ref.checkedChildren,
  27. unCheckedChildren = _ref.unCheckedChildren,
  28. onClick = _ref.onClick,
  29. onChange = _ref.onChange,
  30. onKeyDown = _ref.onKeyDown,
  31. restProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
  32. var _useMergedState = (0, _useMergedState3.default)(false, {
  33. value: checked,
  34. defaultValue: defaultChecked
  35. }),
  36. _useMergedState2 = (0, _slicedToArray2.default)(_useMergedState, 2),
  37. innerChecked = _useMergedState2[0],
  38. setInnerChecked = _useMergedState2[1];
  39. function triggerChange(newChecked, event) {
  40. var mergedChecked = innerChecked;
  41. if (!disabled) {
  42. mergedChecked = newChecked;
  43. setInnerChecked(mergedChecked);
  44. onChange === null || onChange === void 0 ? void 0 : onChange(mergedChecked, event);
  45. }
  46. return mergedChecked;
  47. }
  48. function onInternalKeyDown(e) {
  49. if (e.which === _KeyCode.default.LEFT) {
  50. triggerChange(false, e);
  51. } else if (e.which === _KeyCode.default.RIGHT) {
  52. triggerChange(true, e);
  53. }
  54. onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);
  55. }
  56. function onInternalClick(e) {
  57. var ret = triggerChange(!innerChecked, e);
  58. // [Legacy] trigger onClick with value
  59. onClick === null || onClick === void 0 ? void 0 : onClick(ret, e);
  60. }
  61. var switchClassName = (0, _classnames.default)(prefixCls, className, (_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-checked"), innerChecked), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-disabled"), disabled), _classNames));
  62. return /*#__PURE__*/React.createElement("button", (0, _extends2.default)({}, restProps, {
  63. type: "button",
  64. role: "switch",
  65. "aria-checked": innerChecked,
  66. disabled: disabled,
  67. className: switchClassName,
  68. ref: ref,
  69. onKeyDown: onInternalKeyDown,
  70. onClick: onInternalClick
  71. }), loadingIcon, /*#__PURE__*/React.createElement("span", {
  72. className: "".concat(prefixCls, "-inner")
  73. }, /*#__PURE__*/React.createElement("span", {
  74. className: "".concat(prefixCls, "-inner-checked")
  75. }, checkedChildren), /*#__PURE__*/React.createElement("span", {
  76. className: "".concat(prefixCls, "-inner-unchecked")
  77. }, unCheckedChildren)));
  78. });
  79. Switch.displayName = 'Switch';
  80. var _default = Switch;
  81. exports.default = _default;