@alifd/meet-react
Version:
Fusion Mobile React UI System Component
222 lines (221 loc) • 12.3 kB
JavaScript
"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);