lm-carpicker
Version:
* 作者:liuduan * 邮箱:liuduan.05.05@163.com * 版本:**`0.3.5`**
215 lines (182 loc) • 7.18 kB
JavaScript
'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'];