zent
Version:
一套前端设计语言和基于React的实现
119 lines (100 loc) • 3.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getValue = getValue;
exports.getCurrentValue = getCurrentValue;
exports.getDisplayName = getDisplayName;
exports.silenceEvent = silenceEvent;
exports.silenceEvents = silenceEvents;
exports.prefixName = prefixName;
exports.isFunctional = isFunctional;
var _isPlainObject = require('lodash/isPlainObject');
var _isPlainObject2 = _interopRequireDefault(_isPlainObject);
var _assign = require('lodash/assign');
var _assign2 = _interopRequireDefault(_assign);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var getSelectedValues = function getSelectedValues(options) {
var result = [];
if (options) {
for (var i = 0; i < options.length; i++) {
var option = options[i];
if (option.selected) {
result.push(option.value);
}
}
}
return result;
};
var isEvent = function isEvent(candidate) {
return !!(candidate && candidate.stopPropagation && candidate.preventDefault);
};
function getValue(event) {
// 简单判断是否是一个原生事件对象
if (isEvent(event)) {
var _event$target = event.target,
type = _event$target.type,
value = _event$target.value,
checked = _event$target.checked,
files = _event$target.files,
dataTransfer = event.dataTransfer;
if (type === 'checkbox') {
return checked;
}
if (type === 'file') {
return files || dataTransfer && dataTransfer.files;
}
if (type === 'select-multiple') {
return getSelectedValues(event.target.options);
}
if (value !== '' && (type === 'number' || type === 'range')) {
return parseFloat(value);
}
return value;
}
// 自定义组件需要直接抛出value或者把value放在一个对象中
return event && event.value !== undefined ? event.value : event;
}
// 根据旧值和变化值,得到当前值
function getCurrentValue(changedValue, prevValue) {
var currentValue = void 0;
if (prevValue && (0, _isPlainObject2['default'])(prevValue)) {
currentValue = (0, _assign2['default'])({}, prevValue, changedValue);
} else {
currentValue = changedValue;
}
return currentValue;
}
function getDisplayName(Component) {
return Component.displayName || Component.name || 'Component';
}
function silenceEvent(event) {
var is = isEvent(event);
if (is) {
event.preventDefault();
}
return is;
}
function silenceEvents(fn) {
return function (event) {
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
silenceEvent(event) ? fn.apply(undefined, args) : fn.apply(undefined, [event].concat(args));
};
}
function prefixName(zentForm, name) {
var prefix = zentForm.prefix;
var newName = void 0;
if (!prefix) {
newName = name;
} else if (/^\[\d+\]/.test(name)) {
newName = '' + prefix + name;
} else {
newName = prefix + '.' + name;
}
return newName;
}
function isFunctional(Component) {
return typeof Component !== 'string' && typeof Component.prototype.render !== 'function';
}