UNPKG

zent

Version:

一套前端设计语言和基于React的实现

58 lines (51 loc) 1.46 kB
const getSelectedValues = options => { const result = []; if (options) { for (let i = 0; i < options.length; i++) { const option = options[i]; if (option.selected) { result.push(option.value); } } } return result; }; const isEvent = candidate => !!(candidate && candidate.stopPropagation && candidate.preventDefault); export function getValue(event) { // 简单判断是否是一个原生事件对象 if (isEvent(event)) { const { target: { type, value, checked, files }, dataTransfer } = event; 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; } export function getDisplayName(Component) { return Component.displayName || Component.name || 'Component'; } export function silenceEvent(event) { const is = isEvent(event); if (is) { event.preventDefault(); } return is; } export function silenceEvents(fn) { return (event, ...args) => { silenceEvent(event) ? fn(...args) : fn(event, ...args); }; }