UNPKG

shineout

Version:

Shein 前端组件库

213 lines (181 loc) 7.26 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _classnames = _interopRequireDefault(require("classnames")); var _btns = _interopRequireDefault(require("./btns")); var _component = require("../component"); var _Card = _interopRequireDefault(require("./Card")); var _styles = require("./styles"); var _context = _interopRequireDefault(require("./context")); var _select = _interopRequireDefault(require("./select")); var _config = require("../config"); var _getDataset = _interopRequireDefault(require("../utils/dom/getDataset")); var DefaultProps = { titles: [], data: [], footers: [], operations: [], operationIcon: true, renderItem: function renderItem(d) { return d; }, rowsInView: 20, lineHeight: 32, listHeight: 180 }; var Transfer = /*#__PURE__*/ function (_PureComponent) { (0, _inheritsLoose2.default)(Transfer, _PureComponent); function Transfer(props) { var _this; _this = _PureComponent.call(this, props) || this; _this.state = { selecteds: props.selectedKeys ? (0, _select.default)(props.selectedKeys, props) : (0, _select.default)(props.defaultSelectedKeys, props) || [[], []] }; _this.getSelected = _this.getSelected.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); _this.setSelecteds = _this.setSelecteds.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); _this.getLoading = _this.getLoading.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); return _this; } var _proto = Transfer.prototype; _proto.getLoading = function getLoading(index) { var loading = this.props.loading; if (Array.isArray(loading)) return loading[index]; return loading; }; _proto.getSelected = function getSelected() { if ('selectedKeys' in this.props) return (0, _select.default)(this.props.selectedKeys || [], this.props); return this.state.selecteds; }; _proto.setSelecteds = function setSelecteds(index, value) { var onSelectChange = this.props.onSelectChange; var selecteds = this.state.selecteds; var newSelecteds = index ? [selecteds[0], value] : [value, selecteds[1]]; if (onSelectChange) onSelectChange(newSelecteds[0], newSelecteds[1]); this.setState({ selecteds: newSelecteds }); }; _proto.render = function render() { var _this$props = this.props, _this$props$titles = _this$props.titles, titles = _this$props$titles === void 0 ? DefaultProps.titles : _this$props$titles, data = _this$props.data, datum = _this$props.datum, keygen = _this$props.keygen, renderItem = _this$props.renderItem, _this$props$footers = _this$props.footers, footers = _this$props$footers === void 0 ? DefaultProps.footers : _this$props$footers, _this$props$operation = _this$props.operations, operations = _this$props$operation === void 0 ? DefaultProps.operations : _this$props$operation, operationIcon = _this$props.operationIcon, className = _this$props.className, style = _this$props.style, listClassName = _this$props.listClassName, listStyle = _this$props.listStyle, onFilter = _this$props.onFilter, onSearch = _this$props.onSearch, empty = _this$props.empty, disabled = _this$props.disabled, itemClass = _this$props.itemClass, _this$props$rowsInVie = _this$props.rowsInView, rowsInView = _this$props$rowsInVie === void 0 ? DefaultProps.rowsInView : _this$props$rowsInVie, _this$props$lineHeigh = _this$props.lineHeight, lineHeight = _this$props$lineHeigh === void 0 ? DefaultProps.lineHeight : _this$props$lineHeigh, _this$props$listHeigh = _this$props.listHeight, listHeight = _this$props$listHeigh === void 0 ? DefaultProps.listHeight : _this$props$listHeigh, renderFilter = _this$props.renderFilter, children = _this$props.children; var selecteds = this.getSelected(); var datumValues = datum.getValue(); // use this.props.value prioritized if ('value' in this.props && datumValues !== this.props.value) { this.props.datum.setValue(this.props.value); } var sources = []; var targets = []; for (var i = 0; i < data.length; i++) { var d = data[i]; if (datum.check(d)) { targets.push(d); } else { sources.push(d); } } return _react.default.createElement("div", (0, _extends2.default)({ className: (0, _classnames.default)((0, _styles.transferClass)('_', (0, _config.isRTL)() && 'rtl'), className), style: style }, (0, _getDataset.default)(this.props)), _react.default.createElement(_context.default.Provider, { value: { selecteds: selecteds, setSelecteds: this.setSelecteds, itemClass: itemClass } }, _react.default.createElement(_Card.default, { title: titles[0], selecteds: selecteds[0], data: sources, keygen: keygen, renderItem: renderItem, setSelecteds: this.setSelecteds, index: 0, footer: footers[0], listClassName: listClassName, listStyle: listStyle, loading: this.getLoading(0), onFilter: onFilter, empty: empty, disabled: disabled, onSearch: onSearch, rowsInView: rowsInView, lineHeight: lineHeight, listHeight: listHeight, renderFilter: renderFilter, customRender: children, values: datumValues }), _react.default.createElement(_btns.default, { selecteds: selecteds, datum: datum, setSelecteds: this.setSelecteds, keygen: keygen, sources: sources, targets: targets, operations: operations, operationIcon: operationIcon, data: data, disabled: disabled }), _react.default.createElement(_Card.default, { title: titles[1], selecteds: selecteds[1], data: targets, keygen: keygen, renderItem: renderItem, loading: this.getLoading(1), setSelecteds: this.setSelecteds, index: 1, footer: footers[1], listClassName: listClassName, listStyle: listStyle, onFilter: onFilter, empty: empty, disabled: disabled, onSearch: onSearch, rowsInView: rowsInView, lineHeight: lineHeight, listHeight: listHeight, renderFilter: renderFilter, customRender: children, values: datumValues }))); }; return Transfer; }(_component.PureComponent); (0, _defineProperty2.default)(Transfer, "defaultProps", DefaultProps); var _default = Transfer; exports.default = _default;