betanet-mini-ui
Version:
为 Taro 而设计的 UI Library
112 lines (91 loc) • 3.66 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireDefault(require("react"));
var _components = require("@tarojs/components");
var _excluded = ["value", "placeholder", "options", "optionKey", "optionValue", "onChange", "mode"];
var BmPicker = function BmPicker(_ref) {
var value = _ref.value,
placeholder = _ref.placeholder,
options = _ref.options,
optionKey = _ref.optionKey,
_ref$optionValue = _ref.optionValue,
optionValue = _ref$optionValue === void 0 ? optionKey : _ref$optionValue,
onChange = _ref.onChange,
mode = _ref.mode,
rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
var handleChange = function handleChange(e) {
var reValue = e.detail.value;
switch (mode) {
case 'time':
case 'date':
onChange(reValue, reValue);
break;
case 'multiSelector':
var _analysisMultiData = analysisMultiData(reValue),
_analysisMultiData2 = (0, _slicedToArray2.default)(_analysisMultiData, 2),
item = _analysisMultiData2[0],
itemObj = _analysisMultiData2[1];
onChange(item, itemObj);
break;
default:
var fValue = optionKey ? options[reValue][optionValue] : options[reValue];
onChange(fValue, options[reValue]);
break;
}
};
var analysisMultiData = function analysisMultiData(param) {
var itemObj = [];
var item = param.map(function (p, i) {
if (optionKey) {
itemObj.push(options[i][p]);
return options[i][p][optionValue];
}
itemObj.push(options[i][p]);
return options[i][p];
});
return [item, itemObj];
};
var getCurrentDisplay = function getCurrentDisplay() {
if (!optionKey) return !value || typeof value === 'string' ? value : value.join(',');
if (mode === 'multiSelector') {
var f = value === null || value === void 0 ? void 0 : value.map(function (v, i) {
var c = options[i].find(function (item) {
return item[optionValue] === v;
});
return c[optionKey];
});
return f === null || f === void 0 ? void 0 : f.join(',');
}
var currentItem = (options === null || options === void 0 ? void 0 : options.find(function (item) {
return item[optionValue] == value;
})) || {};
return currentItem[optionKey];
};
return /*#__PURE__*/_react.default.createElement(_components.View, {
className: "bm-picker"
}, /*#__PURE__*/_react.default.createElement(_components.Picker, (0, _extends2.default)({}, rest, {
mode: mode,
range: options,
rangeKey: optionKey,
onChange: handleChange
}), /*#__PURE__*/_react.default.createElement(_components.View, {
className: "bm-picker-item"
}, /*#__PURE__*/_react.default.createElement(_components.Text, null, getCurrentDisplay() || placeholder), /*#__PURE__*/_react.default.createElement(_components.Image, {
className: "bm-picker-item-arrow",
src: require('../../assets/images/arrow-down.svg')
}))));
};
BmPicker.defaultProps = {
placeholder: '请点击选择',
options: [],
onChange: function onChange() {}
};
var _default = BmPicker;
exports.default = _default;