wix-style-react
Version:
wix-style-react
37 lines • 1.92 kB
JavaScript
import { tooltipLegacyDriverFactory } from '../Tooltip/Tooltip.driver';
import textDriverFactory from '../Text/Text.driver';
import { dataHooks } from './constants';
import * as DATA_ATTR from './DataAttr';
const checkboxDriverFactory = ({ element, eventTrigger }) => {
const byHook = hook => element.querySelector(`[data-hook*="${hook}"]`);
const input = () => element.querySelector('input');
const checkbox = () => element.querySelector(dataHooks.box);
const isChecked = () => input().checked;
const labelText = () => element.querySelector(`[data-hook="${dataHooks.children}"]`);
const labelTextDriver = () => textDriverFactory({ element: labelText() });
const getTooltipDriver = () => tooltipLegacyDriverFactory({
element: byHook(dataHooks.boxTooltip),
eventTrigger,
});
return {
exists: () => !!element,
click: () => eventTrigger.change(input(), { target: { checked: !isChecked() } }),
/** Trigger focus on the element */
focus: () => eventTrigger.focus(checkbox()),
/** Checks whether the checkbox is focused */
isFocused: () => element === document.activeElement,
/** trigger blur on the element */
blur: () => eventTrigger.blur(checkbox()),
isChecked,
isDisabled: () => element.getAttribute(DATA_ATTR.DATA_DISABLED) === 'true',
isIndeterminate: () => element.getAttribute(DATA_ATTR.DATA_CHECK_TYPE) ===
DATA_ATTR.CHECK_TYPES.INDETERMINATE,
isTooltipEnabled: () => !!getTooltipDriver().getTooltipText(),
hasError: () => element.getAttribute(DATA_ATTR.DATA_HAS_ERROR) === 'true',
getTooltipContent: () => getTooltipDriver().getTooltipText(),
getLabel: () => labelTextDriver().getText(),
getLabelSize: () => labelTextDriver().getSize(),
};
};
export default checkboxDriverFactory;
//# sourceMappingURL=Checkbox.driver.js.map