@pantheon-systems/design-toolkit-react
Version:
Pantheon's React Design Toolkit
65 lines (62 loc) • 3.02 kB
JavaScript
import _defineProperty from '@babel/runtime/helpers/defineProperty';
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
import { faMinus, faCheck } from '@fortawesome/pro-regular-svg-icons';
import { useId } from '@reach/auto-id';
import PropTypes from 'prop-types';
import { forwardRef, useRef, useState, useEffect } from 'react';
import Icon from '../Icons/Icon.js';
import { jsxs, jsx } from 'react/jsx-runtime';
var _excluded = ["id", "indeterminate", "labelText"];
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
var IndeterminateCheckbox = /*#__PURE__*/forwardRef(function (_ref, ref) {
var id = _ref.id,
indeterminate = _ref.indeterminate,
labelText = _ref.labelText,
rest = _objectWithoutProperties(_ref, _excluded);
var elementId = useId(id);
var defaultRef = useRef();
var resolvedRef = ref || defaultRef;
var checked = rest.checked;
var _useState = useState(checked),
_useState2 = _slicedToArray(_useState, 2),
checkState = _useState2[0],
setCheckState = _useState2[1];
useEffect(function () {
resolvedRef.current.indeterminate = indeterminate;
if (indeterminate) {
setCheckState('mixed');
} else {
setCheckState(checked);
}
}, [checked, resolvedRef, indeterminate]);
var icon = checkState === 'mixed' ? faMinus : faCheck;
return /*#__PURE__*/jsxs("label", {
className: "custom-checkbox min-h-8",
htmlFor: elementId,
children: [/*#__PURE__*/jsx("input", _objectSpread({
"aria-checked": checkState,
className: "checkbox",
id: elementId,
ref: resolvedRef,
type: "checkbox"
}, rest)), /*#__PURE__*/jsx(Icon, {
icon: icon
}), /*#__PURE__*/jsx("span", {
className: "sr-only",
children: labelText
})]
});
});
IndeterminateCheckbox.defaultProps = {
id: null
};
IndeterminateCheckbox.propTypes = {
id: PropTypes.string,
indeterminate: PropTypes.bool.isRequired,
labelText: PropTypes.string.isRequired
};
var IndeterminateCheckbox$1 = IndeterminateCheckbox;
export { IndeterminateCheckbox$1 as default };
//# sourceMappingURL=IndeterminateCheckbox.js.map