UNPKG

@alifd/meet-react

Version:

Fusion Mobile React UI System Component

238 lines 13.3 kB
import { rpx2vw4style as __rpx2vw__ } from "@alifd/babel-runtime-jsx-style-transform"; 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); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } import { __rest } from "tslib"; import React, { createElement, forwardRef, useEffect, useState } from "react"; import classNames from 'classnames'; import View from '../view'; import Icon from '../icon'; import Button from '../button'; import Checkbox from '../checkbox'; import { changeCheckedItem, checkAllData, filterTransferValue, getDataStatus, setCheckedItem, setListDisabled } from './utils'; var Transfer = function Transfer(props, ref) { var _props$dataSource = props.dataSource, dataSource = _props$dataSource === void 0 ? [] : _props$dataSource, _props$value = props.value, value = _props$value === void 0 ? [] : _props$value, _props$titles = props.titles, titles = _props$titles === void 0 ? [] : _props$titles, _props$tabIndex = props.tabIndex, tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex, _props$defaultValue = props.defaultValue, defaultValue = _props$defaultValue === void 0 ? [] : _props$defaultValue, _props$tabChange = props.tabChange, tabChange = _props$tabChange === void 0 ? function () {} : _props$tabChange, _props$disabled = props.disabled, disabled = _props$disabled === void 0 ? false : _props$disabled, _props$leftDisabled = props.leftDisabled, leftDisabled = _props$leftDisabled === void 0 ? false : _props$leftDisabled, _props$rightDisabled = props.rightDisabled, rightDisabled = _props$rightDisabled === void 0 ? false : _props$rightDisabled, _props$notFoundConten = props.notFoundContent, notFoundContent = _props$notFoundConten === void 0 ? 'Not Found' : _props$notFoundConten, _props$defaultLeftChe = props.defaultLeftChecked, defaultLeftChecked = _props$defaultLeftChe === void 0 ? [] : _props$defaultLeftChe, _props$defaultRightCh = props.defaultRightChecked, defaultRightChecked = _props$defaultRightCh === void 0 ? [] : _props$defaultRightCh, _props$onChange = props.onChange, onChange = _props$onChange === void 0 ? function () {} : _props$onChange, _props$buttonText = props.buttonText, buttonText = _props$buttonText === void 0 ? 'Transfer to' : _props$buttonText, _props$selectItemText = props.selectItemText, selectItemText = _props$selectItemText === void 0 ? 'Item' : _props$selectItemText, _props$style = props.style, style = _props$style === void 0 ? {} : _props$style, others = __rest(props, ["dataSource", "value", "titles", "tabIndex", "defaultValue", "tabChange", "disabled", "leftDisabled", "rightDisabled", "notFoundContent", "defaultLeftChecked", "defaultRightChecked", "onChange", "buttonText", "selectItemText", "style"]); var rightValue = props.value || defaultValue || []; var _useState = useState(tabIndex), _useState2 = _slicedToArray(_useState, 2), currentTabIndex = _useState2[0], setTabIndex = _useState2[1]; var _filterTransferValue = filterTransferValue(dataSource, rightValue), leftList = _filterTransferValue.leftList, rightList = _filterTransferValue.rightList; if ('defaultLeftChecked' in props) { leftList = setCheckedItem(leftList, defaultLeftChecked); } if ('defaultRightChecked' in props) { rightList = setCheckedItem(rightList, defaultRightChecked); } var useStateLeft = useState(leftList); var transferLeftList = useStateLeft[0]; var setTransferLeftList = useStateLeft[1]; var useStateRight = useState(rightList); var transferRightList = useStateRight[0]; var setTransferRightList = useStateRight[1]; if (leftDisabled) { transferLeftList = setListDisabled(transferLeftList); } if (rightDisabled) { transferRightList = setListDisabled(transferRightList); } if (disabled) { transferLeftList = setListDisabled(transferLeftList); transferRightList = setListDisabled(transferRightList); } var transferButtonText = currentTabIndex === 0 ? titles[1] : titles[0]; var transferList = currentTabIndex === 0 ? transferLeftList : transferRightList; var _getDataStatus = getDataStatus(transferList), listDataSize = _getDataStatus.listDataSize, disabledSize = _getDataStatus.disabledSize, checkedSize = _getDataStatus.checkedSize, isCheckAll = _getDataStatus.isCheckAll; var prefix = 'mt-'; var classNameObj = { transferCls: classNames("".concat(prefix, "transfer")), tabCls: classNames("".concat(prefix, "transfer-tab")), tabMainWrap: classNames("".concat(prefix, "transfer-tab-main")), tabItemCls: classNames("".concat(prefix, "transfer-tab-main-item")), tabIconWrapCls: classNames("".concat(prefix, "transfer-tab-icon-wrap")), tabIconCls: classNames("".concat(prefix, "transfer-tab-icon-wrap-icon")), tabItemActiveCls: classNames("".concat(prefix, "transfer-tab-main-item"), "".concat(prefix, "transfer-tab-main-item--selected")), transferList: classNames("".concat(prefix, "transfer-list"), "".concat(prefix, "transfer-list--selected")), transferItem: classNames("".concat(prefix, "transfer-list-item")), transferTips: classNames("".concat(prefix, "transfer-select-tip")), checkbox: classNames("".concat(prefix, "transfer-checkbox")), transferListScroll: classNames("".concat(prefix, "transfer-list-scroll")), transferEmptyContent: classNames("".concat(prefix, "transfer-empty-content")), transferButton: classNames("".concat(prefix, "transfer-button")) }; var handleClickTab = function handleClickTab(e, item, index) { setTabIndex(index); if (tabChange) { tabChange(e, item, index); } }; var handleClickItem = function handleClickItem(checked, e, item, index) { if (currentTabIndex === 0) { var newTransferLeftList = transferLeftList.map(function (obj) { return Object.assign({}, obj); }); newTransferLeftList[index].isChecked = checked; setTransferLeftList(newTransferLeftList); } else { var newTransferRightList = transferRightList.map(function (obj) { return Object.assign({}, obj); }); newTransferRightList[index].isChecked = checked; setTransferRightList(newTransferRightList); } }; var handleClickSelectTip = function handleClickSelectTip(checked, e) { if (currentTabIndex === 0) { var newTransferLeftList = checkAllData(transferLeftList, checked); setTransferLeftList(_toConsumableArray(newTransferLeftList)); } else { var newTransferRightList = checkAllData(transferRightList, checked); setTransferRightList(_toConsumableArray(newTransferRightList)); } }; var handleChangeButton = function handleChangeButton(e) { var tabsIndex = currentTabIndex === 0 ? 1 : 0; var startList = currentTabIndex === 0 ? transferLeftList : transferRightList; var endList = currentTabIndex === 0 ? transferRightList : transferLeftList; var _changeCheckedItem = changeCheckedItem(startList, endList), initList = _changeCheckedItem.initList, initValue = _changeCheckedItem.initValue, goalList = _changeCheckedItem.goalList, goalValue = _changeCheckedItem.goalValue, changeList = _changeCheckedItem.changeList, changeListValue = _changeCheckedItem.changeListValue; var leftData = currentTabIndex === 0 ? initList : goalList; var rightData = currentTabIndex === 0 ? goalList : initList; setTransferLeftList(_toConsumableArray(leftData)); setTransferRightList(_toConsumableArray(rightData)); setTabIndex(tabsIndex); if (onChange) { onChange(currentTabIndex === 0 ? goalValue : initValue, currentTabIndex === 0 ? goalList : initList, { leftValue: currentTabIndex === 0 ? initValue : goalValue, leftData: currentTabIndex === 0 ? initList : goalList, movedValue: changeListValue, movedData: changeList, redirection: currentTabIndex === 0 ? 'right' : 'left' }); } }; useEffect(function () { if ('value' in props) { if (useStateLeft[0].toString() !== leftList.toString()) { setTransferLeftList(leftList); } if (useStateRight[0].toString() !== rightList.toString()) { setTransferRightList(rightList); } } }, [value, props.dataSource]); return /*#__PURE__*/React.createElement(View, _extends({}, others, { ref: ref, className: classNameObj.transferCls, style: __rpx2vw__(props.style) }), /*#__PURE__*/React.createElement(View, { className: classNameObj.tabCls }, /*#__PURE__*/React.createElement(View, { className: classNameObj.tabMainWrap }, titles.map(function (item, index) { return /*#__PURE__*/React.createElement(View, { className: currentTabIndex === index ? classNameObj.tabItemActiveCls : classNameObj.tabItemCls, key: index, onClick: function onClick(e) { return handleClickTab(e, item, index); } }, item); })), /*#__PURE__*/React.createElement(View, { className: classNameObj.tabIconWrapCls }, /*#__PURE__*/React.createElement(Icon, { name: "switch", className: classNameObj.tabIconCls }))), /*#__PURE__*/React.createElement(View, { className: classNameObj.transferList }, listDataSize > 0 ? /*#__PURE__*/React.createElement(View, { className: classNameObj.transferTips }, /*#__PURE__*/React.createElement(Checkbox, { size: "medium", disabled: disabledSize === listDataSize, checked: isCheckAll, indeterminate: !!(!isCheckAll && checkedSize > 0), onChange: function onChange(checked, e) { return handleClickSelectTip(checked, e); } }, checkedSize > 0 ? "".concat(checkedSize, "/") : '', listDataSize, " ", selectItemText)) : null, /*#__PURE__*/React.createElement(View, { className: classNameObj.transferListScroll }, transferList.map(function (item, index) { return /*#__PURE__*/React.createElement(View, { className: classNameObj.transferItem, key: index }, /*#__PURE__*/React.createElement(Checkbox, { size: "medium", className: classNameObj.checkbox, disabled: item.disabled, checked: item.isChecked, onChange: function onChange(checked, e) { return handleClickItem(checked, e, item, index); } }, item.label)); }), listDataSize <= 0 ? /*#__PURE__*/React.createElement(View, { className: classNameObj.transferEmptyContent }, notFoundContent) : null)), /*#__PURE__*/React.createElement(View, { className: classNameObj.transferButton }, /*#__PURE__*/React.createElement(Button, { type: "primary", size: "large", disabled: disabledSize === listDataSize || checkedSize === 0, fullWidth: true, onClick: function onClick(e) { return handleChangeButton(e); } }, buttonText, " ", transferButtonText))); }; Transfer.displayName = 'Transfer'; export default /*#__PURE__*/forwardRef(Transfer);