UNPKG

zmp-react

Version:

Build full featured iOS & Android apps using ZMP & React

63 lines (60 loc) 1.84 kB
import _extends from "@babel/runtime/helpers/extends"; import React, { forwardRef, useRef, useImperativeHandle, useEffect } from 'react'; import { classNames, getExtraAttrs, emit } from '../shared/utils'; import { colorClasses } from '../shared/mixins'; var Checkbox = /*#__PURE__*/forwardRef(function (props, ref) { var className = props.className, id = props.id, style = props.style, children = props.children, name = props.name, value = props.value, disabled = props.disabled, readonly = props.readonly, checked = props.checked, defaultChecked = props.defaultChecked, indeterminate = props.indeterminate; var extraAttrs = getExtraAttrs(props); var elRef = useRef(null); var inputElRef = useRef(null); useImperativeHandle(ref, function () { return { el: elRef.current, inputEl: inputElRef.current }; }); var onChange = function onChange(event) { emit(props, 'change', event); }; useEffect(function () { if (inputElRef.current) { inputElRef.current.indeterminate = !!indeterminate; } }, [indeterminate]); var inputEl = /*#__PURE__*/React.createElement("input", { ref: inputElRef, type: "checkbox", name: name, value: value, disabled: disabled, readOnly: readonly, checked: checked, defaultChecked: defaultChecked, onChange: onChange }); var iconEl = /*#__PURE__*/React.createElement("i", { className: "icon-checkbox" }); var classes = classNames(className, { checkbox: true, disabled: disabled }, colorClasses(props)); return /*#__PURE__*/React.createElement("label", _extends({ id: id, style: style, className: classes, ref: elRef }, extraAttrs), inputEl, iconEl, children); }); Checkbox.displayName = 'zmp-checkbox'; export default Checkbox;