UNPKG

antd

Version:

An enterprise-class UI design language and React components implementation

133 lines (101 loc) 4.33 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var React = _interopRequireWildcard(require("react")); var _button = _interopRequireDefault(require("../button")); var _button2 = require("../button/button"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function isThenable(thing) { return !!(thing && !!thing.then); } var ActionButton = function ActionButton(props) { var clickedRef = React.useRef(false); var ref = React.useRef(); var _React$useState = React.useState(false), _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2), loading = _React$useState2[0], setLoading = _React$useState2[1]; React.useEffect(function () { var timeoutId; if (props.autoFocus) { var $this = ref.current; timeoutId = setTimeout(function () { return $this.focus(); }); } return function () { if (timeoutId) { clearTimeout(timeoutId); } }; }, []); var handlePromiseOnOk = function handlePromiseOnOk(returnValueOfOnOk) { var close = props.close; if (!isThenable(returnValueOfOnOk)) { return; } setLoading(true); returnValueOfOnOk.then(function () { setLoading(false); close.apply(void 0, arguments); clickedRef.current = false; }, function (e) { // Emit error when catch promise reject // eslint-disable-next-line no-console console.error(e); // See: https://github.com/ant-design/ant-design/issues/6183 setLoading(false); clickedRef.current = false; }); }; var onClick = function onClick(e) { var actionFn = props.actionFn, close = props.close; if (clickedRef.current) { return; } clickedRef.current = true; if (!actionFn) { close(); return; } var returnValueOfOnOk; if (props.emitEvent) { returnValueOfOnOk = actionFn(e); if (props.quitOnNullishReturnValue && !isThenable(returnValueOfOnOk)) { clickedRef.current = false; close(e); return; } } else if (actionFn.length) { returnValueOfOnOk = actionFn(close); // https://github.com/ant-design/ant-design/issues/23358 clickedRef.current = false; } else { returnValueOfOnOk = actionFn(); if (!returnValueOfOnOk) { close(); return; } } handlePromiseOnOk(returnValueOfOnOk); }; var type = props.type, children = props.children, prefixCls = props.prefixCls, buttonProps = props.buttonProps; return /*#__PURE__*/React.createElement(_button["default"], (0, _extends2["default"])({}, (0, _button2.convertLegacyProps)(type), { onClick: onClick, loading: loading, prefixCls: prefixCls }, buttonProps, { ref: ref }), children); }; var _default = ActionButton; exports["default"] = _default;