UNPKG

acud

Version:

acg react 组件库

175 lines (173 loc) • 8.09 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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var React = _interopRequireWildcard(require("react")); var _classnames2 = _interopRequireDefault(require("classnames")); var _OutlinedRight = _interopRequireDefault(require("acud-icon/lib/icons/OutlinedRight")); var _OutlinedDown = _interopRequireDefault(require("acud-icon/lib/icons/OutlinedDown")); var _virtualList = _interopRequireDefault(require("../virtual-list")); var _checkbox = _interopRequireDefault(require("../checkbox")); var _util = require("./util"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } /* * transfer 穿梭框 * author zhousheng */ var SourceList = function SourceList(props) { var filterSource = props.filterSource, prefixCls = props.prefixCls, render = props.render, targetKeys = props.tKeys, setTargetKeys = props.setTKeys, _props$defaultExpandG = props.defaultExpandGroupKey, defaultExpandGroupKey = _props$defaultExpandG === void 0 ? false : _props$defaultExpandG, showSearch = props.showSearch, _props$leftStyle = props.leftStyle, leftStyle = _props$leftStyle === void 0 ? {} : _props$leftStyle, _props$virtual = props.virtual, virtual = _props$virtual === void 0 ? true : _props$virtual, onSourceExpandChange = props.onSourceExpandChange; var listHeight = React.useMemo(function () { return (0, _util.getBodyHeight)(leftStyle, showSearch === true || showSearch === 'left'); }, [leftStyle, showSearch]); var itemToggle = React.useCallback(function (data) { if (data.disabled) { return; } var newTargetKeys = (0, _toConsumableArray2["default"])(targetKeys); if (data.group) { // const groupKeys = data.childrenKeys; var undisabledKeys = data.children.filter(function (child) { return !child.disabled; }).map(function (child) { return child.key; }); var checkedKeys = undisabledKeys.filter(function (key) { return targetKeys.includes(key); }); if (undisabledKeys.length === checkedKeys.length) { newTargetKeys = newTargetKeys.filter(function (tKey) { return !undisabledKeys.includes(tKey); }); } else { newTargetKeys = (0, _toConsumableArray2["default"])(new Set([].concat((0, _toConsumableArray2["default"])(newTargetKeys), (0, _toConsumableArray2["default"])(undisabledKeys)))); } } else if (targetKeys.includes(data.key)) { newTargetKeys.splice(targetKeys.indexOf(data.key), 1); } else { newTargetKeys.push(data.key); } setTargetKeys(newTargetKeys); }, [targetKeys]); var groupKeys = filterSource.filter(function (source) { return source.group; }).map(function (source) { return source.key; }); var expandGroupKeys = []; if (defaultExpandGroupKey === true) { // 默认展开所有折叠项 expandGroupKeys = groupKeys; } else if (Array.isArray(defaultExpandGroupKey)) { expandGroupKeys = defaultExpandGroupKey; } else if (typeof defaultExpandGroupKey === 'string' || typeof defaultExpandGroupKey === 'number') { expandGroupKeys = [defaultExpandGroupKey]; } var _React$useState = React.useState(expandGroupKeys), _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2), expandGroupKey = _React$useState2[0], setExpandGroupKey = _React$useState2[1]; var expandGroup = React.useCallback(function (e, groupKey) { var isOpen = false; if (expandGroupKey.includes(groupKey)) { setExpandGroupKey(function (keys) { keys.splice(keys.indexOf(groupKey), 1); return (0, _toConsumableArray2["default"])(keys); }); isOpen = false; } else { setExpandGroupKey(function (keys) { keys.push(groupKey); return (0, _toConsumableArray2["default"])(keys); }); isOpen = true; } onSourceExpandChange && onSourceExpandChange(groupKey, isOpen); e.stopPropagation(); }, [expandGroupKey]); var getSourceItem = React.useCallback(function (data) { var checked = targetKeys.includes(data.key); var indeterminate = false; if (data.group) { var undisabledKeys = data.children.filter(function (child) { return !child.disabled; }).map(function (child) { return child.key; }); var checkedKeys = undisabledKeys.filter(function (key) { return targetKeys.includes(key); }); if (undisabledKeys.length === checkedKeys.length) { checked = true; indeterminate = false; } else if (checkedKeys.length) { indeterminate = true; checked = false; } else { checked = false; indeterminate = false; } } var itemCls = (0, _classnames2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, "".concat(prefixCls, "-datasource-item"), true), "".concat(prefixCls, "-datasource-item-disabeld"), data.disabled), "".concat(prefixCls, "-datasource-item-group"), data.group), "".concat(prefixCls, "-datasource-item-group-option"), data.groupOption)); return /*#__PURE__*/React.createElement("div", { key: data.key, "aria-disabled": data.disabled, className: itemCls, onClick: function onClick() { return itemToggle(data); }, style: { display: data.groupOption && !expandGroupKey.includes(data.groupKey) ? 'none' : '' } }, data.group && /*#__PURE__*/React.createElement("span", { className: "".concat(prefixCls, "-datasource-item-arrow"), onClick: function onClick(e) { return expandGroup(e, data.key); } }, expandGroupKey.includes(data.key) ? /*#__PURE__*/React.createElement(_OutlinedDown["default"], null) : /*#__PURE__*/React.createElement(_OutlinedRight["default"], null)), /*#__PURE__*/React.createElement(_checkbox["default"], { className: "".concat(prefixCls, "-datasource-item-checkbox"), checked: checked, disabled: data.disabled, indeterminate: indeterminate }), render ? render(data) : /*#__PURE__*/React.createElement("span", { className: "".concat(prefixCls, "-datasource-item-title"), title: data.title }, data.title)); }, [targetKeys, expandGroupKey, render]); var virtualData = React.useMemo(function () { return filterSource.filter(function (data) { return !(data.groupOption && !expandGroupKey.includes(data.groupKey)); }); }, [filterSource, expandGroupKey]); return /*#__PURE__*/React.createElement("div", { className: "".concat(prefixCls, "-datasource-list") }, virtual && /*#__PURE__*/React.createElement(_virtualList["default"], { itemKey: "key", data: virtualData, height: listHeight, fullHeight: false, itemHeight: _util.ITEM_HEIGHT }, function (data) { return getSourceItem(data); }), !virtual && filterSource.map(function (data) { return getSourceItem(data); })); }; var _default = exports["default"] = SourceList;