UNPKG

zent

Version:

一套前端设计语言和基于React的实现

301 lines (245 loc) 8.65 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _select = require('../../select'); var _select2 = _interopRequireDefault(_select); var _checkbox = require('../../checkbox'); var _checkbox2 = _interopRequireDefault(_checkbox); var _SKUContainer = require('./SKUContainer'); var _SKUContainer2 = _interopRequireDefault(_SKUContainer); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var noop = function noop(res) { return res; }; var _ref2 = _react2['default'].createElement( 'div', { className: 'sku-group-cont' }, _react2['default'].createElement( 'p', { className: 'help-block' }, '\u76EE\u524D\u53EA\u652F\u6301\u4E3A\u7B2C\u4E00\u4E2A\u89C4\u683C\u8BBE\u7F6E\u4E0D\u540C\u7684\u89C4\u683C\u56FE\u7247' ), _react2['default'].createElement( 'p', { className: 'help-block' }, '\u8BBE\u7F6E\u540E\uFF0C\u7528\u6237\u9009\u62E9\u4E0D\u540C\u89C4\u683C\u4F1A\u663E\u793A\u4E0D\u540C\u56FE\u7247' ), _react2['default'].createElement( 'p', { className: 'help-block' }, '\u5EFA\u8BAE\u5C3A\u5BF8\uFF1A640 x 640\u50CF\u7D20' ) ); var _ref3 = _react2['default'].createElement('div', { className: 'sku-group-cont' }); var SKUGroup = function (_ref) { (0, _inherits3['default'])(SKUGroup, _ref); function SKUGroup(props) { (0, _classCallCheck3['default'])(this, SKUGroup); var _this = (0, _possibleConstructorReturn3['default'])(this, (SKUGroup.__proto__ || Object.getPrototypeOf(SKUGroup)).call(this, props)); _this.filterHandler = function (item, keyword) { var maxSKUTextLength = _this.context.maxSKUTextLength; if (maxSKUTextLength && maxSKUTextLength > 0) { keyword = keyword.substring(0, maxSKUTextLength); } return item.text.indexOf(keyword) > -1; }; _this.selectSKUHandler = function (evt, sku) { var _this$props = _this.props, index = _this$props.index, onSKUChange = _this$props.onSKUChange; var _this$context = _this.context, optionValue = _this$context.optionValue, optionText = _this$context.optionText; sku.leaf = []; if (sku[optionValue] === _this.props.sku[optionValue]) return; if (sku[optionValue]) { onSKUChange(sku, index); return; } _this.createSKU(sku[optionText], index); }; _this.asyncFilterSKU = function (keyword) { var skuTree = _this.props.skuTree; var _this$context2 = _this.context, optionText = _this$context2.optionText, maxSKUTextLength = _this$context2.maxSKUTextLength; if (maxSKUTextLength && maxSKUTextLength > 0) { keyword = keyword.substring(0, maxSKUTextLength); } if (skuTree.some(function (item) { return item[optionText] === keyword; })) return; _this.setState({ newSKUText: keyword }); }; _this.onSKULeafChange = function (leaf) { var _this$props2 = _this.props, sku = _this$props2.sku, index = _this$props2.index, onSKUChange = _this$props2.onSKUChange; sku.leaf = leaf; onSKUChange(sku, index); }; _this.checkSKUImage = function (evt) { var _this$props3 = _this.props, sku = _this$props3.sku, index = _this$props3.index, onSKUChange = _this$props3.onSKUChange; var isShow = evt.target.checked; sku.is_show = isShow; sku.leaf = sku.leaf.map(function (item) { item.is_show = isShow; return item; }); _this.setState({ hasSKUImage: isShow }); onSKUChange(sku, index); }; _this.handleReset = function () { _this.setState({ newSKUText: '' }); }; _this.state = { newSKUText: '', hasSKUImage: props.sku.leaf ? props.sku.leaf.some(function (item) { return item.img_url; }) : false }; return _this; } // 选择sku (0, _createClass3['default'])(SKUGroup, [{ key: 'createSKU', // 创建sku value: function createSKU(text) { var _this2 = this; var _props = this.props, sku = _props.sku, index = _props.index, onSKUChange = _props.onSKUChange; var _context = this.context, onCreateGroup = _context.onCreateGroup, optionValue = _context.optionValue, optionText = _context.optionText; onCreateGroup(text).then(function (data) { if (data > 0) { sku[optionValue] = data; sku[optionText] = text; _this2.setState({ newSKUText: '' }); onSKUChange(sku, index); } }); } }, { key: 'rebuildSKULeaf', value: function rebuildSKULeaf(sku, index) { var subGroup = this.state.subGroup; if (subGroup[index]) { subGroup[index].leaf = [].concat(sku); } this.setState({ subGroup: subGroup }); this.props.onChange(subGroup); } }, { key: 'render', value: function render() { var _props2 = this.props, sku = _props2.sku, index = _props2.index, skuTree = _props2.skuTree; var _context2 = this.context, optionValue = _context2.optionValue, optionText = _context2.optionText; var _state = this.state, newSKUText = _state.newSKUText, hasSKUImage = _state.hasSKUImage; var prefix = this.context.prefix + '-group'; if (newSKUText) { skuTree = [].concat(skuTree); if (skuTree[0][optionValue] === 0) { skuTree[0][optionText] = newSKUText; } else { var newSKU = {}; newSKU[optionValue] = 0; newSKU[optionText] = newSKUText; skuTree.unshift(newSKU); } } return _react2['default'].createElement( 'div', { className: prefix }, _react2['default'].createElement( 'h3', { className: 'group-title' }, _react2['default'].createElement(_select2['default'], { open: typeof sku[optionValue] === 'undefined', optionValue: optionValue, data: skuTree, onChange: this.selectSKUHandler, filter: this.filterHandler, onAsyncFilter: this.asyncFilterSKU, onOpen: this.handleReset, value: sku[optionValue] || '' }), index === 0 ? _react2['default'].createElement( _checkbox2['default'], { checked: hasSKUImage, onChange: this.checkSKUImage }, '\u6DFB\u52A0\u89C4\u683C\u56FE\u7247' ) : '', _react2['default'].createElement( 'span', { className: 'group-remove', onClick: this.props.onSKUDelete }, '\xD7' ) ), _react2['default'].createElement(_SKUContainer2['default'], { sku: (0, _extends3['default'])({}, sku), hasSKUImage: hasSKUImage, onSKULeafChange: this.onSKULeafChange }), hasSKUImage ? _ref2 : _ref3 ); } }]); return SKUGroup; }(_react.PureComponent || _react.Component); SKUGroup.contextTypes = { prefix: _propTypes2['default'].string, maxSKUTextLength: _propTypes2['default'].number, optionValue: _propTypes2['default'].string, optionText: _propTypes2['default'].string, onCreateGroup: _propTypes2['default'].func }; SKUGroup.propTypes = { index: _propTypes2['default'].number, sku: _propTypes2['default'].object.isRequired, onSKUDelete: _propTypes2['default'].func, onSKUChange: _propTypes2['default'].func }; SKUGroup.defaultProps = { index: 0, data: {}, onSKUDelete: noop, onSKUChange: noop }; exports['default'] = SKUGroup;