UNPKG

shineout

Version:

Shein 前端组件库

192 lines (176 loc) 6.48 kB
import _extends from "@babel/runtime/helpers/extends"; import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized"; import _defineProperty from "@babel/runtime/helpers/defineProperty"; import React from 'react'; import classnames from 'classnames'; import Btns from './btns'; import { PureComponent } from '../component'; import Card from './Card'; import { transferClass } from './styles'; import Context from './context'; import splitSelecteds from './select'; import { isRTL } from '../config'; import getDataset from '../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) { _inheritsLoose(Transfer, _PureComponent); function Transfer(props) { var _this; _this = _PureComponent.call(this, props) || this; _this.state = { selecteds: props.selectedKeys ? splitSelecteds(props.selectedKeys, props) : splitSelecteds(props.defaultSelectedKeys, props) || [[], []] }; _this.getSelected = _this.getSelected.bind(_assertThisInitialized(_assertThisInitialized(_this))); _this.setSelecteds = _this.setSelecteds.bind(_assertThisInitialized(_assertThisInitialized(_this))); _this.getLoading = _this.getLoading.bind(_assertThisInitialized(_assertThisInitialized(_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 splitSelecteds(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.createElement("div", _extends({ className: classnames(transferClass('_', isRTL() && 'rtl'), className), style: style }, getDataset(this.props)), React.createElement(Context.Provider, { value: { selecteds: selecteds, setSelecteds: this.setSelecteds, itemClass: itemClass } }, React.createElement(Card, { 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.createElement(Btns, { selecteds: selecteds, datum: datum, setSelecteds: this.setSelecteds, keygen: keygen, sources: sources, targets: targets, operations: operations, operationIcon: operationIcon, data: data, disabled: disabled }), React.createElement(Card, { 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; }(PureComponent); _defineProperty(Transfer, "defaultProps", DefaultProps); export default Transfer;