UNPKG

@lyra/form-builder

Version:
94 lines (73 loc) 3.07 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _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; }; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _switch = require('part:@lyra/components/toggles/switch'); var _switch2 = _interopRequireDefault(_switch); var _checkbox = require('part:@lyra/components/toggles/checkbox'); var _checkbox2 = _interopRequireDefault(_checkbox); var _PatchEvent = require('../PatchEvent'); var _PatchEvent2 = _interopRequireDefault(_PatchEvent); 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; } /*:: import type {Type} from '../typedefs'*/ // Todo: support indeterminate state, see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox /*:: type Props = { type: Type, value: ?boolean, readOnly: ?boolean, level: number, description: ?string, onChange: PatchEvent => void }*/ class BooleanInput extends _react2.default.Component /*:: <Props>*/ { constructor(...args) { var _temp; return _temp = super(...args), this.handleChange = (event /*: SyntheticEvent<HTMLInputElement>*/) => { this.props.onChange(_PatchEvent2.default.from((0, _PatchEvent.set)(event.currentTarget.checked))); }, this.setInput = (input /*: ?(Checkbox | Switch)*/) => { this._input = input; }, _temp; } focus() { if (this._input) { this._input.focus(); } } render() { var _props = this.props; const value = _props.value, type = _props.type, readOnly = _props.readOnly, level = _props.level, description = _props.description, rest = _objectWithoutProperties(_props, ['value', 'type', 'readOnly', 'level', 'description']); const options = type.options || {}; const isCheckbox = options.layout === 'checkbox'; const displayIndeterminateAs = options.displayIndeterminateAs; return isCheckbox ? _react2.default.createElement( _checkbox2.default, _extends({}, rest, { displayIndeterminateAs: displayIndeterminateAs, readOnly: readOnly, onChange: this.handleChange, checked: value, ref: this.setInput, description: type.description }), type.title ) : _react2.default.createElement(_switch2.default, _extends({}, rest, { displayIndeterminateAs: displayIndeterminateAs, readOnly: readOnly, onChange: this.handleChange, checked: value, label: type.title, description: type.description, ref: this.setInput })); } } exports.default = BooleanInput;