UNPKG

vantui-edit

Version:

一套适用于Taro3及React的vantui组件库

200 lines (165 loc) 7.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.Toast = Toast; exports.default = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _components = require("@tarojs/components"); var _react = require("react"); var _index = _interopRequireDefault(require("../transition/index")); var _index2 = _interopRequireDefault(require("../overlay/index")); var _index3 = _interopRequireDefault(require("../icon/index")); var _index4 = _interopRequireDefault(require("../loading/index")); var _validator = require("../common/validator"); var _events = require("./events"); var _toast = _interopRequireDefault(require("./toast")); var _jsxRuntime = require("react/jsx-runtime"); var _excluded = ["style", "className", "children", "zIndex"]; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } var defaultId = 'van-toast'; var defaultOptions = { show: true, duration: 2000, mask: false, forbidClick: false, type: 'text', position: 'middle', message: '', loadingType: 'circular', selector: '#van-toast', id: defaultId }; // let queue: any = [] var currentOptions = Object.assign({}, defaultOptions); var timer = null; function parseOptions(message) { return (0, _validator.isObj)(message) ? message : { message: message }; } function Toast(props) { var _useState = (0, _react.useState)({ show: false, duration: 2000, mask: false, forbidClick: false, type: 'text', position: 'middle', message: '', loadingType: 'circular', selector: '#van-toast' }), _useState2 = (0, _slicedToArray2.default)(_useState, 2), state = _useState2[0], setState = _useState2[1]; /* eslint-disable-next-line */ var style = props.style, className = props.className, children = props.children, zIndex = props.zIndex, others = (0, _objectWithoutProperties2.default)(props, _excluded); var _id = props.id || defaultId; (0, _react.useLayoutEffect)(function () { setState(function (state) { return _objectSpread({}, state); }); }, [props]); var noop = function noop() {}; var clear = (0, _react.useCallback)(function (toastOptions) { var _toastOptions$onClose; setState(function (state) { return _objectSpread(_objectSpread({}, state), {}, { show: false }); }); toastOptions === null || toastOptions === void 0 ? void 0 : (_toastOptions$onClose = toastOptions.onClose) === null || _toastOptions$onClose === void 0 ? void 0 : _toastOptions$onClose.call(toastOptions); }, []); var tShowListener = function tShowListener(toastOptions) { var options = Object.assign(Object.assign({}, currentOptions), parseOptions(toastOptions)); if (options.selector === '#van-toast' || options.selector.replace('#', '') === _id) { _toast.default.clear(); setState(function (state) { return _objectSpread(_objectSpread({}, state), options); }); clearTimeout(timer); if (options.duration != null && options.duration > 0) { timer = setTimeout(function () { (0, _events.trigger)('toast_clear', toastOptions); }, options.duration); } } }; var tClearListener = (0, _react.useCallback)(function (toastOptions) { clear(toastOptions); }, []); var tSetDftOptsListener = (0, _react.useCallback)(function (options) { currentOptions = Object.assign(currentOptions, options); }, []); var tResetDftOptsListener = (0, _react.useCallback)(function () { currentOptions = Object.assign({}, defaultOptions); }, []); (0, _react.useEffect)(function () { (0, _events.on)('toast_show', tShowListener); (0, _events.on)('toast_clear', tClearListener); (0, _events.on)('toast_setDefaultOptions', tSetDftOptsListener); (0, _events.on)('toast_resetDefaultOptions', tResetDftOptsListener); return function () { (0, _events.off)('toast_show', tShowListener); (0, _events.off)('toast_clear', tClearListener); (0, _events.off)('toast_setDefaultOptions', tSetDftOptsListener); (0, _events.off)('toast_resetDefaultOptions', tResetDftOptsListener); }; /* eslint-disable-next-line */ }, []); return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.View, { children: [(state.mask || state.forbidClick) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.default, { show: state.show, zIndex: zIndex, style: state.mask ? '' : 'background-color: transparent;' }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.default, { show: state.show, style: zIndex ? { zIndex: zIndex } : {}, className: "van-toast__container", children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.View, _objectSpread(_objectSpread({ id: "van-toast", className: 'van-toast van-toast--' + (state.type === 'text' || state.type === 'html' ? 'text' : 'icon') + " van-toast--".concat(state.position, " ").concat(className), style: style, onTouchMove: noop }, others), {}, { children: [state.type === 'text' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Text, { children: state.message }) : state.type === 'html' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.RichText, { nodes: state.message }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.View, { className: "van-toast__box", children: [state.type === 'loading' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_index4.default, { color: "white", type: state.loadingType, className: "van-toast__loading" }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_index3.default, { className: "van-toast__icon", name: state.type }), state.message && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Text, { className: "van-toast__text", children: state.message })] }), children] })) })] }); } Toast.show = _toast.default; Toast.loading = _toast.default.loading; Toast.success = _toast.default.success; Toast.fail = _toast.default.fail; Toast.clear = _toast.default.clear; Toast.setDefaultOptions = _toast.default.setDefaultOptions; Toast.resetDefaultOptions = _toast.default.resetDefaultOptions; var _default = Toast; exports.default = _default;