UNPKG

@alifd/meet-react

Version:

Fusion Mobile React UI System Component

222 lines (221 loc) 12.3 kB
"use strict"; exports.__esModule = true; exports.default = void 0; var _babelRuntimeJsxStyleTransform = require("@alifd/babel-runtime-jsx-style-transform"); var _tslib = require("tslib"); var _classnames = _interopRequireDefault(require("classnames")); var _react = _interopRequireWildcard(require("react")); var _meetReactComponentOne = require("@alifd/meet-react-component-one"); var _view = _interopRequireDefault(require("../view")); var _safeArea = _interopRequireDefault(require("../safe-area")); var _icon = _interopRequireDefault(require("../icon")); var _drawer = _interopRequireDefault(require("../drawer")); var _button = _interopRequireDefault(require("../button")); var _bottomButton = _interopRequireDefault(require("../bottom-button")); var _form = require("../form"); var _locale = require("../locale"); var _zhCn = _interopRequireDefault(require("../locale/lang/zh-cn")); var _utils = require("../utils"); var _children2 = require("../utils/children"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var SelectDrawer = function (props, ref) { var _classNames3, _classNames4, _classNames5; var _props$prefix = props.prefix, prefix = _props$prefix === void 0 ? 'mt-' : _props$prefix, alignProp = props.align, children = props.children, _props$drawerTitle = props.drawerTitle, drawerTitle = _props$drawerTitle === void 0 ? '' : _props$drawerTitle, _props$iconType = props.iconType, iconType = _props$iconType === void 0 ? 'arrow-right' : _props$iconType, _props$content = props.content, content = _props$content === void 0 ? '' : _props$content, placeholder = props.placeholder, _props$type = props.type, type = _props$type === void 0 ? 'normal' : _props$type, _props$buttonPosition = props.buttonPosition, buttonPosition = _props$buttonPosition === void 0 ? 'top' : _props$buttonPosition, className = props.className, drawerClassName = props.drawerClassName, _props$disabled = props.disabled, disabled = _props$disabled === void 0 ? false : _props$disabled, _props$readOnly = props.readOnly, readOnly = _props$readOnly === void 0 ? false : _props$readOnly, _props$showIcon = props.showIcon, showIcon = _props$showIcon === void 0 ? true : _props$showIcon, _props$hasClear = props.hasClear, hasClear = _props$hasClear === void 0 ? false : _props$hasClear, hideButton = props.hideButton, _props$showToolbar = props.showToolbar, showToolbarProp = _props$showToolbar === void 0 ? true : _props$showToolbar, notFoundContent = props.notFoundContent, onOk = props.onOk, onCancel = props.onCancel, onClear = props.onClear, onVisibleChange = props.onVisibleChange, okText = props.okText, cancelText = props.cancelText, zIndex = props.zIndex, sizeProp = props.size, disableScroll = props.disableScroll, others = (0, _tslib.__rest)(props, ["prefix", "align", "children", "drawerTitle", "iconType", "content", "placeholder", "type", "buttonPosition", "className", "drawerClassName", "disabled", "readOnly", "showIcon", "hasClear", "hideButton", "showToolbar", "notFoundContent", "onOk", "onCancel", "onClear", "onVisibleChange", "okText", "cancelText", "zIndex", "size", "disableScroll"]); var _useState = (0, _react.useState)(false), visible = _useState[0], setVisible = _useState[1]; var _useContext = (0, _react.useContext)(_form.ItemContext), contextAlign = _useContext.contentAlign, contextSize = _useContext.size, isInsideForm = _useContext.isInsideForm; var _children = (0, _children2.getValidChildren)(children); var align = alignProp || (isInsideForm ? contextAlign : null) || 'left'; var size = sizeProp || (isInsideForm ? contextSize : null) || 'medium'; var shouldShowClear = !disabled && hasClear && content; var isInverse = type === 'inverse'; var locale = (0, _locale.useLocale)('SelectDrawer', others, _zhCn.default.SelectDrawer); var clsPrefix = prefix + "selectdrawer"; var doHide = (0, _react.useCallback)(function () { if (visible) { setVisible(false); } if (onVisibleChange) { onVisibleChange(false); } }, [visible, setVisible, onVisibleChange]); var handleOk = (0, _react.useCallback)(function () { var shouldHide = true; if (onOk) { shouldHide = onOk(); } if (shouldHide !== false) { doHide(); } }, [onOk, doHide]); var handleCancel = (0, _react.useCallback)(function (reason) { var shouldHide = true; if (onCancel) { shouldHide = onCancel(reason); } if (shouldHide !== false) { doHide(); } }, [onCancel, doHide]); var handleClear = (0, _react.useCallback)(function (e) { e.preventDefault(); (0, _utils.stopPropagation)(e); if (onClear) { onClear(); } }, [onClear]); var handleOpen = function () { if (disabled || readOnly || visible) { return; } if (_children || notFoundContent) { setVisible(true); if (onVisibleChange) { onVisibleChange(true); } } }; (0, _react.useImperativeHandle)(ref, function () { return Object.assign(ref.current || {}, { hide: doHide, show: handleOpen, ok: handleOk, cancel: handleCancel }); }); return /*#__PURE__*/(0, _react.createElement)(_react.Fragment, null, /*#__PURE__*/(0, _react.createElement)(_view.default, _extends({ ref: ref }, others, { className: (0, _classnames.default)(clsPrefix, clsPrefix + "--" + size, className), onClick: handleOpen }), /*#__PURE__*/(0, _react.createElement)(_view.default, { className: (0, _classnames.default)(clsPrefix + "-content", clsPrefix + "-content--" + size, clsPrefix + "-content--" + align) }, function getContent() { if (!content) { var _classNames; return /*#__PURE__*/(0, _react.createElement)(_view.default, { className: (0, _classnames.default)((_classNames = {}, _classNames[clsPrefix + "-placeholder"] = true, _classNames[clsPrefix + "-placeholder--" + align] = true, _classNames[clsPrefix + "-placeholder--disabled"] = disabled, _classNames[clsPrefix + "-placeholder--inverse"] = isInverse, _classNames[clsPrefix + "-placeholder--inverse-disabled"] = disabled && isInverse, _classNames)) }, placeholder || locale.placeHolderText); } else if ((0, _utils.isString)(content)) { var _classNames2; return /*#__PURE__*/(0, _react.createElement)(_meetReactComponentOne.Text, { numberOfLines: 1, className: (0, _classnames.default)((_classNames2 = {}, _classNames2[clsPrefix + "-content-text"] = true, _classNames2[clsPrefix + "-content-text--" + align] = true, _classNames2[clsPrefix + "-content-text--" + size] = size, _classNames2[clsPrefix + "-content-text--disabled"] = disabled, _classNames2[clsPrefix + "-content-text--inverse"] = isInverse, _classNames2[clsPrefix + "-content-text--inverse-disabled"] = isInverse && disabled, _classNames2)), style: (0, _babelRuntimeJsxStyleTransform.rpx2vw4style)({ textAlign: align }) }, content); } else { return content; } }()), showIcon && !shouldShowClear ? /*#__PURE__*/(0, _react.createElement)(_view.default, { className: (0, _classnames.default)(clsPrefix + "-icon", clsPrefix + "-icon--" + size) }, /*#__PURE__*/(0, _react.createElement)(_icon.default, { className: (0, _classnames.default)(clsPrefix + "-icon-text", clsPrefix + "-icon-text--" + size, (_classNames3 = {}, _classNames3[clsPrefix + "-icon-text--inverse"] = isInverse, _classNames3[clsPrefix + "-icon-text--disabled"] = disabled, _classNames3[clsPrefix + "-icon-text--inverse-disabled"] = isInverse && disabled, _classNames3)), name: iconType })) : null, shouldShowClear ? /*#__PURE__*/(0, _react.createElement)(_view.default, { className: (0, _classnames.default)(clsPrefix + "-icon", clsPrefix + "-icon--" + size), onClick: handleClear }, /*#__PURE__*/(0, _react.createElement)(_icon.default, { className: (0, _classnames.default)(clsPrefix + "-icon-text--" + size, (_classNames4 = {}, _classNames4[clsPrefix + "-icon-text--inverse"] = isInverse, _classNames4[clsPrefix + "-icon-text--disabled"] = disabled, _classNames4[clsPrefix + "-icon-text--inverse-disabled"] = isInverse && disabled, _classNames4)), name: "delete-filling" })) : null), /*#__PURE__*/(0, _react.createElement)(_drawer.default, { visible: visible, placement: "bottom", closeMode: ['mask'], onClose: handleCancel, zIndex: zIndex, className: (0, _classnames.default)(clsPrefix + "-drawer", drawerClassName), containerClassName: clsPrefix + "-container", disableScroll: disableScroll }, showToolbarProp && (drawerTitle || buttonPosition === 'top' && !hideButton) ? /*#__PURE__*/(0, _react.createElement)(_view.default, { className: (0, _classnames.default)(clsPrefix + "-toolbar", (_classNames5 = {}, _classNames5[clsPrefix + "-toolbar--no-border"] = buttonPosition === 'bottom', _classNames5)) }, !hideButton && buttonPosition !== 'bottom' ? /*#__PURE__*/(0, _react.createElement)(_button.default, { className: clsPrefix + "-toolbar-btn-cancel", model: "text", onClick: function onClick() { return handleCancel('cancel-button'); } }, cancelText || locale.cancel) : null, /*#__PURE__*/(0, _react.createElement)(_view.default, { className: clsPrefix + "-toolbar-title" }, drawerTitle), !hideButton && buttonPosition !== 'bottom' ? /*#__PURE__*/(0, _react.createElement)(_button.default, { className: clsPrefix + "-toolbar-btn-ok", model: "text", type: "primary", onClick: handleOk }, okText || locale.ok) : null) : null, function renderChildren() { var ret = null; if (_children) { ret = /*#__PURE__*/(0, _react.createElement)(_view.default, { className: clsPrefix + "-drawer-content" }, _children); } else if ((0, _utils.isString)(notFoundContent)) { ret = /*#__PURE__*/(0, _react.createElement)(_view.default, { className: clsPrefix + "-drawer-content " + clsPrefix + "-drawer--empty" }, /*#__PURE__*/(0, _react.createElement)(_meetReactComponentOne.Text, { className: clsPrefix + "-drawer-empty-text" }, notFoundContent)); } else if (notFoundContent) { ret = /*#__PURE__*/(0, _react.createElement)(_view.default, { className: clsPrefix + "-drawer-content " + clsPrefix + "-drawer--empty" }, /*#__PURE__*/(0, _react.createElement)(_view.default, { className: clsPrefix + "-drawer-empty-text" }, notFoundContent)); } return ret; }(), showToolbarProp && buttonPosition === 'bottom' && !hideButton ? /*#__PURE__*/(0, _react.createElement)(_bottomButton.default, { okText: okText || locale.ok, cancelText: cancelText || locale.cancel, onOk: handleOk, onCancel: function () { return handleCancel('cancel-button'); } }) : /*#__PURE__*/(0, _react.createElement)(_safeArea.default, null))); }; SelectDrawer.displayName = 'SelectDrawer'; var _default = exports.default = /*#__PURE__*/(0, _react.forwardRef)(SelectDrawer);