@pdftron/webviewer-react-toolkit
Version:
A React component library for integrating with PDFTron WebViewer API.
20 lines (19 loc) • 1.55 kB
JavaScript
import { __assign, __rest } from "tslib";
import classnames from 'classnames';
import React, { forwardRef, useImperativeHandle, useRef } from 'react';
import { useAccessibleFocus, useKeyForClick, useOnClick } from '../../hooks';
export var ClickableDiv = forwardRef(function (_a, ref) {
var onClick = _a.onClick, onKeyPress = _a.onKeyPress, disabled = _a.disabled, noFocusStyle = _a.noFocusStyle, usePointer = _a.usePointer, className = _a.className, children = _a.children, tabIndex = _a.tabIndex, divProps = __rest(_a, ["onClick", "onKeyPress", "disabled", "noFocusStyle", "usePointer", "className", "children", "tabIndex"]);
var clickableDivRef = useRef(null);
useImperativeHandle(ref, function () { return clickableDivRef.current; });
var handleOnClick = useOnClick(onClick, { disabled: disabled, stopPropagation: true });
var handleKeyPress = useKeyForClick(onKeyPress, clickableDivRef);
var isUserTabbing = useAccessibleFocus();
var clickableDivClass = classnames('ui__base ui__clickableDiv', {
'ui__clickableDiv--disabled': disabled,
'ui__clickableDiv--tabbing': isUserTabbing,
'ui__clickableDiv--noFocusStyle': noFocusStyle,
'ui__clickableDiv--usePointer': usePointer && !disabled,
}, className);
return (React.createElement("div", __assign({}, divProps, { role: "button", tabIndex: disabled ? -1 : tabIndex !== null && tabIndex !== void 0 ? tabIndex : 0, className: clickableDivClass, onClick: handleOnClick, onKeyPress: handleKeyPress, ref: clickableDivRef }), children));
});