weex-nuke
Version:
基于 Rax 、Weex 的高性能组件体系 ~~
113 lines (93 loc) • 3.18 kB
JavaScript
/** @jsx createElement */
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _rax = require('rax');
var _nukeWebPicker = require('../WebPicker/index.js');
var _nukeWebPicker2 = _interopRequireDefault(_nukeWebPicker);
var _locale = require('./locale.js');
var _locale2 = _interopRequireDefault(_locale);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var noop = function noop() {};
var pickerInstance = null;
var container = null;
function formatDataSource(dataSource) {
var result = [];
dataSource.forEach(function (item, index) {
result.push({ key: index, value: item });
});
return result;
}
function formatResult(result) {
return { data: result[0].key };
}
function show() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var onSelect = arguments[1];
var onCancel = arguments[2];
var onShow = arguments[3];
var onFail = arguments[4];
var title = options.title,
dataSource = options.dataSource,
selectedKey = options.selectedKey,
_options$maskClosable = options.maskClosable,
maskClosable = _options$maskClosable === undefined ? true : _options$maskClosable,
_options$locale = options.locale,
locale = _options$locale === undefined ? {} : _options$locale,
others = _objectWithoutProperties(options, ['title', 'dataSource', 'selectedKey', 'maskClosable', 'locale']);
onSelect = onSelect || noop;
onShow = onShow || noop;
onCancel = onCancel || noop;
onFail = onFail || noop;
if (!dataSource) {
onFail({ err: 'empty dataSource' });
return;
}
if (!selectedKey) {
if (dataSource[0].children) {
selectedKey = [dataSource[0].key, dataSource[0].children[0].key];
} else {
selectedKey = dataSource[0].key;
}
}
if (!selectedKey) {
if (dataSource[0].children) {
selectedKey = [dataSource[0].key, dataSource[0].children[0].key];
} else {
selectedKey = [dataSource[0].key];
}
}
if (typeof selectedKey === 'string') {
selectedKey = [selectedKey];
}
if (typeof selectedKey === 'number') {
selectedKey = [selectedKey.toString()];
}
_nukeWebPicker2.default.show({
title: title,
dataSource: formatDataSource(dataSource, options.selectedKey),
selectedKey: selectedKey,
hasToolbar: true,
hasToolbarButton: true,
locale: {
confirm: locale.confirm || _locale2.default.confirm,
cancel: locale.cancel || _locale2.default.cancel
}
}, function (result) {
onSelect(formatResult(result));
}, onCancel, onShow, onFail);
function onSelectCallback(res) {
var result = { success: true };
if (res && res[0] && res.length > 0) {
result.data = res[0];
}
onSelect(result);
}
}
function hide() {
_nukeWebPicker2.default.hide();
}
exports.default = { show: show, hide: hide };
module.exports = exports['default'];