UNPKG

@massds/mayflower-react

Version:

React versions of Mayflower design system UI components

165 lines (164 loc) 6.64 kB
"use strict"; exports.__esModule = true; exports["default"] = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var _is = _interopRequireDefault(require("is")); var _index = _interopRequireDefault(require("../Input/index.js")); var _error = _interopRequireDefault(require("../Input/error.js")); var _context = require("../Input/context.js"); var _excluded = ["icon", "label", "onChange", "onKeyDown", "value", "tabIndex", "role"]; /** * InputCheckBox module. * @module @massds/mayflower-react/InputCheckBox * @requires module:@massds/mayflower-assets/scss/01-atoms/input-checkbox * @requires module:@massds/mayflower-assets/scss/01-atoms/helper-text * @requires module:@massds/mayflower-assets/scss/01-atoms/svg-icons * @requires module:@massds/mayflower-assets/scss/01-atoms/svg-loc-icons */ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; } var CheckBox = function CheckBox(props) { var context = _react["default"].useContext(_context.InputContext); var value = context.value; var icon = props.icon, label = props.label, disabled = props.disabled, required = props.required, id = props.id, defaultValue = props.defaultValue, onKeyDown = props.onKeyDown, onChange = props.onChange, tabIndex = props.tabIndex, role = props.role; _react["default"].useEffect(function () { context.updateState({ value: defaultValue }); }, [defaultValue]); var handleClick = function handleClick(e) { e.persist(); context.updateState({ value: !value ? props.value : !value }, function () { if (_is["default"].fn(onChange)) { onChange(e, context.getValue(), id); } }); if (!!value && required) { context.updateState({ showError: true }); } else { context.updateState({ showError: false }); } }; var checkboxClasses = (0, _classnames["default"])({ 'ma__input-checkbox': true, 'ma__input-checkbox--disabled': disabled }); var inputProps = { type: 'checkbox', id: id, value: props.value, checked: value === props.value, onClick: handleClick, tabIndex: tabIndex, disabled: disabled, role: role }; if (_is["default"].fn(onKeyDown)) { inputProps.onKeyDown = onKeyDown; } return /*#__PURE__*/_react["default"].createElement("span", { className: checkboxClasses }, /*#__PURE__*/_react["default"].createElement("input", inputProps), icon && icon, /*#__PURE__*/_react["default"].createElement("label", { htmlFor: id, tabIndex: -1 }, /*#__PURE__*/_react["default"].createElement("span", null, label))); }; CheckBox.propTypes = process.env.NODE_ENV !== "production" ? { icon: _propTypes["default"].shape({ name: _propTypes["default"].string, title: _propTypes["default"].string, width: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]), height: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]), className: _propTypes["default"].string, fill: _propTypes["default"].string }), label: _propTypes["default"].string, disabled: _propTypes["default"].bool, required: _propTypes["default"].bool, id: _propTypes["default"].string, value: _propTypes["default"].string, onChange: _propTypes["default"].func, onKeyDown: _propTypes["default"].func, defaultValue: _propTypes["default"].string, tabIndex: _propTypes["default"].number, role: _propTypes["default"].string } : {}; var InputCheckBox = function InputCheckBox(props) { var icon = props.icon, label = props.label, onChange = props.onChange, onKeyDown = props.onKeyDown, value = props.value, tabIndex = props.tabIndex, role = props.role, inputProps = _objectWithoutPropertiesLoose(props, _excluded); // Input and checkBox share the props.checked, props.id values. var checkBoxProps = { icon: icon, label: label, id: props.id, value: value, required: props.required, onChange: onChange, onKeyDown: onKeyDown, tabIndex: tabIndex, disabled: props.disabled, defaultValue: props.defaultValue, role: role }; return /*#__PURE__*/_react["default"].createElement(_index["default"], inputProps, /*#__PURE__*/_react["default"].createElement(CheckBox, checkBoxProps), /*#__PURE__*/_react["default"].createElement(_error["default"], { id: props.id })); }; InputCheckBox.propTypes = process.env.NODE_ENV !== "production" ? { /** Id of the input that the label is tied to and the value is associated with in the formContext. */ id: _propTypes["default"].string, /** Value of the input that is associated with in the formContext. (required) */ value: _propTypes["default"].string.isRequired, /** Default input value. */ defaultValue: _propTypes["default"].string, /** Tab index for the checkbox input. */ tabIndex: _propTypes["default"].number, /** Label for the checkbox input. */ label: _propTypes["default"].string, /** Icon that renders after the label. */ icon: _propTypes["default"].shape({ title: _propTypes["default"].string, width: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]), height: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]), className: _propTypes["default"].string, fill: _propTypes["default"].string }), /** Custom callback function called when input checked value is changed. */ onChange: _propTypes["default"].func, /** Custom callback function called when a keyboard action is triggered. */ onKeyDown: _propTypes["default"].func, /** Whether the input is disabled. */ disabled: _propTypes["default"].bool, /** Whether checked is required. */ required: _propTypes["default"].bool, /** The label text for the input field, can be a string or a component */ labelText: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].object]).isRequired, /** Pass array of classNames to input wrapper div */ classes: _propTypes["default"].arrayOf(_propTypes["default"].string), role: _propTypes["default"].string } : {}; var _default = exports["default"] = InputCheckBox; module.exports = exports.default;