polaris-glints
Version:
Glints forked polaris react
52 lines (46 loc) • 1.53 kB
JavaScript
import React, { forwardRef, useRef, useImperativeHandle } from 'react';
import { classNames } from '../../utilities/css.js';
import styles from './CheckableButton.scss.js';
import { Checkbox } from '../Checkbox/Checkbox.js';
const CheckableButton = /*#__PURE__*/forwardRef(function CheckableButton({
accessibilityLabel,
label = '',
onToggleAll,
selected,
disabled,
ariaLive,
checkbox
}, ref) {
const checkBoxRef = useRef(null);
function focus() {
var _checkBoxRef$current;
checkBoxRef === null || checkBoxRef === void 0 ? void 0 : (_checkBoxRef$current = checkBoxRef.current) === null || _checkBoxRef$current === void 0 ? void 0 : _checkBoxRef$current.focus();
}
useImperativeHandle(ref, () => {
return {
focus
};
});
const className = classNames(styles.CheckableButton);
return /*#__PURE__*/React.createElement("div", {
className: className,
onClick: onToggleAll
}, /*#__PURE__*/React.createElement("div", {
className: styles.Checkbox
}, checkbox ? checkbox === null || checkbox === void 0 ? void 0 : checkbox({
onChange: onToggleAll,
checked: selected,
indeterminate: selected === 'indeterminate'
}) : /*#__PURE__*/React.createElement(Checkbox, {
label: accessibilityLabel,
labelHidden: true,
checked: selected,
disabled: disabled,
onChange: onToggleAll,
ref: checkBoxRef
})), /*#__PURE__*/React.createElement("span", {
className: styles.Label,
"aria-live": ariaLive
}, label));
});
export { CheckableButton };