UNPKG

baseui-final-form

Version:

Adapter between `react-final-form` and `baseui`.

72 lines (61 loc) 3.68 kB
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } import * as React from 'react'; import { Button } from 'baseui/button'; import { ButtonGroup } from 'baseui/button-group/index'; import { FormControl } from 'baseui/form-control'; import { adaptToFormControl } from '../form-control'; import assignProps from '../util/assign-props'; export default function render(props) { var mode = props.mode ? props.mode : 'radio'; var $size = props.$size ? props.$size : 'default'; var _assignProps = assignProps(props), inputProps = _assignProps.inputProps, options = _assignProps.options, onChange = _assignProps.onChange, name = _assignProps.name; if (!Array.isArray(options)) { throw new Error('Missing options'); } var checkboxValues = mode === 'checkbox' ? inputProps.value || [] : []; var radioValue = mode === 'radio' ? inputProps.value : ''; return /*#__PURE__*/React.createElement(FormControl, adaptToFormControl(props), /*#__PURE__*/React.createElement(ButtonGroup, { selected: mode === 'radio' ? options.indexOf(options.find(function (option) { return option.id === radioValue; })) : checkboxValues.map(function (val) { return options.indexOf(options.find(function (option) { return option.id === val; })); }), mode: mode, onClick: function onClick(event, index) { if (mode === 'radio') { onChange(options[index].id); } else if (mode === 'checkbox') { var clickedOption = options[index]; if (checkboxValues.indexOf(clickedOption.id) === -1) { // If it doesn't exist, add it to values. onChange([].concat(_toConsumableArray(checkboxValues), [clickedOption.id])); } else { // If it does, remove it to values. onChange(checkboxValues.filter(function (val) { return val !== clickedOption.id; })); } } } }, options.map(function (option, index) { return /*#__PURE__*/React.createElement(Button, _extends({ $size: $size, name: "".concat(name, ".").concat(String(option.id)) }, option, { key: index }), option.label); }))); } export { render as AdaptedButtonGroup };