UNPKG

lm-carpicker

Version:

* 作者:liuduan * 邮箱:liuduan.05.05@163.com * 版本:**`0.3.5`**

215 lines (182 loc) 7.18 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _jsxFileName = 'src/picker.js'; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _pickerHoc = require('./pickerHoc'); var _pickerHoc2 = _interopRequireDefault(_pickerHoc); var _popupHoc = require('./popupHoc'); var _popupHoc2 = _interopRequireDefault(_popupHoc); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var Picker = function Picker(props) { var uuid = 0; var data = props.data, selected = props.selected, onSelect = props.onSelect, renderList = props.renderList; var component = null; // 列表渲染函数 if (!renderList) renderList = function renderList() { var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var selected = arguments[1]; var onSelect = arguments[2]; var isModel = arguments[3]; if (data instanceof Array && data.length) { return data.map(function (item, i) { var text = item.text, value = item.value, difftext = item.difftext, modelid = item.modelid; return _react2.default.createElement( 'li', _defineProperty({ key: value || modelid, className: 'item ' + (selected && [value, modelid].indexOf(selected) !== -1 ? 'active' : ''), onClick: function onClick() { onSelect(isModel ? modelid : value, text); }, __source: { fileName: _jsxFileName, lineNumber: 19 }, __self: undefined }, '__self', undefined), _react2.default.createElement( 'p', _defineProperty({ __source: { fileName: _jsxFileName, lineNumber: 24 }, __self: undefined }, '__self', undefined), text ), difftext && _react2.default.createElement( 'p', _defineProperty({ className: 'desc', __source: { fileName: _jsxFileName, lineNumber: 25 }, __self: undefined }, '__self', undefined), difftext ) ); }); } else { return null; } }; // 车品牌/渲染 var renderComponent = function renderComponent(data) { var demoData = data && data[0]; if (!demoData) return null; if (!checkData(demoData)) { return _react2.default.createElement( 'div', _defineProperty({ className: 'area', __source: { fileName: _jsxFileName, lineNumber: 43 }, __self: undefined }, '__self', undefined), _react2.default.createElement( 'ul', _defineProperty({ className: 'list', __source: { fileName: _jsxFileName, lineNumber: 44 }, __self: undefined }, '__self', undefined), renderList(data, selected, onSelect) ) ); } return data.map(function (listData, i) { var zimu = listData.zimu, brandList = listData.brandList, year = listData.year, modelList = listData.modelList, _listData$list = listData.list, list = _listData$list === undefined ? [] : _listData$list; var isModel = 'modelList' in listData; zimu = zimu === '热门' ? '热门品牌' : zimu; return _react2.default.createElement( 'div', _defineProperty({ key: uuid++, className: 'area', __source: { fileName: _jsxFileName, lineNumber: 56 }, __self: undefined }, '__self', undefined), isModel || zimu ? _react2.default.createElement( 'h4', _defineProperty({ className: 'title', id: zimu || year || i, __source: { fileName: _jsxFileName, lineNumber: 59 }, __self: undefined }, '__self', undefined), isModel ? year : zimu ) : null, _react2.default.createElement( 'ul', _defineProperty({ className: 'list', __source: { fileName: _jsxFileName, lineNumber: 62 }, __self: undefined }, '__self', undefined), renderList(isModel ? modelList : brandList || list, selected, onSelect, isModel) ) ); }); }; // 执行渲染 if (data.length) component = renderComponent(data); return _react2.default.createElement( 'div', _defineProperty({ className: 'main', __source: { fileName: _jsxFileName, lineNumber: 75 }, __self: undefined }, '__self', undefined), component ); }; Picker.propTypes = { index: _propTypes2.default.number, data: _propTypes2.default.array.isRequired, selected: _propTypes2.default.string, onSelect: _propTypes2.default.func }; Picker.defaultProps = { index: 0, data: [], selected: '', onSelect: function onSelect() {} }; exports.default = (0, _popupHoc2.default)((0, _pickerHoc2.default)(Picker)); function checkData() { var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var flag = false; var arr = Object.keys(data); var i = 0, l = arr.length; for (; i < l; i++) { var val = data[arr[i]]; if (Object.prototype.toString.call(val) === '[object Array]') { flag = true; break; } } return flag; } module.exports = exports['default'];