芝麻web文件管理V1.00
编辑当前文件:/home/freeclou/app.optimyar.com/backend/node_modules/@buffetjs/core/src/components/Select/index.js
/** * * Select * */ import React from 'react'; import PropTypes from 'prop-types'; import invariant from 'invariant'; import { Select as StyledSelect } from '@buffetjs/styles'; function Select({ autoFocus, id, name, onChange, options, tabIndex, value, ...rest }) { const lengthOfReactElementsInOptions = options.filter(option => React.isValidElement(option) ).length; const formatOptions = () => options.map(option => { let optionValue = option; // Type check // Use option.value if it is defined (ie. even when it is an empty string) if (option && typeof option.value !== 'undefined') { optionValue = option.value; } return (
{option.label || option}
); }); const renderOptions = () => { const areOptionsValidReactElements = options.every(option => React.isValidElement(option) ); return areOptionsValidReactElements ? options : formatOptions(); }; if (lengthOfReactElementsInOptions > 0) { invariant( lengthOfReactElementsInOptions === options.length, 'You have mixed up React Elements and non React Elements in your options array ' ); } return (
{renderOptions()}
); } Select.defaultProps = { autoComplete: 'off', autoFocus: false, id: null, options: [], placeholder: null, tabIndex: '0', }; Select.propTypes = { autoComplete: PropTypes.string, autoFocus: PropTypes.bool, id: PropTypes.string, name: PropTypes.string.isRequired, onChange: PropTypes.func.isRequired, options: PropTypes.arrayOf( PropTypes.oneOfType([ PropTypes.shape({ label: PropTypes.string, value: PropTypes.oneOfType([ PropTypes.string, PropTypes.number, PropTypes.object, ]), }), PropTypes.string, PropTypes.node, ]) ), placeholder: PropTypes.string, tabIndex: PropTypes.string, value: PropTypes.oneOfType([ PropTypes.string, PropTypes.number, PropTypes.object, ]).isRequired, }; export default Select;