@pdftron/webviewer-react-toolkit
Version:
A React component library for integrating with PDFTron WebViewer API.
35 lines (34 loc) • 2.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ToolButton = void 0;
var tslib_1 = require("tslib");
var classnames_1 = tslib_1.__importDefault(require("classnames"));
var react_1 = tslib_1.__importStar(require("react"));
var hooks_1 = require("../../hooks");
var Icon_1 = require("../Icon");
var IconButton_1 = require("../IconButton");
exports.ToolButton = react_1.forwardRef(function (_a, ref) {
var className = _a.className, expandProps = _a.expandProps, children = _a.children, onClick = _a.onClick, buttonProps = tslib_1.__rest(_a, ["className", "expandProps", "children", "onClick"]);
var handleOnClick = hooks_1.useOnClick(onClick, { stopPropagation: true });
var isUserTabbing = hooks_1.useAccessibleFocus();
var positionRight = (expandProps === null || expandProps === void 0 ? void 0 : expandProps.position) === 'right';
var expandClass = expandProps === null || expandProps === void 0 ? void 0 : expandProps.className;
var hasExpandProps = !!expandProps;
var classes = react_1.useMemo(function () {
var enabledObj = {
'ui__toolButton--disabled': buttonProps.disabled,
'ui__toolButton--tabbing': isUserTabbing,
'ui__toolButton--expanded': hasExpandProps,
'ui__toolButton--right': positionRight,
'ui__toolButton--bottom': !positionRight,
};
var wrapper = classnames_1.default('ui__base ui__toolButton', enabledObj);
var action = classnames_1.default('ui__toolButton__action', enabledObj, className);
var expand = classnames_1.default('ui__toolButton__expand', enabledObj, expandClass);
return { wrapper: wrapper, action: action, expand: expand };
}, [buttonProps.disabled, className, expandClass, hasExpandProps, isUserTabbing, positionRight]);
return (react_1.default.createElement("div", { className: classes.wrapper },
react_1.default.createElement(IconButton_1.IconButton, tslib_1.__assign({ disabled: buttonProps.disabled }, buttonProps, { className: classes.action, onClick: handleOnClick, ref: ref }), children),
expandProps ? (react_1.default.createElement(IconButton_1.IconButton, tslib_1.__assign({ disabled: buttonProps.disabled }, expandProps, { className: classes.expand }),
react_1.default.createElement(Icon_1.Icon, { icon: "ChevronDown" }))) : undefined));
});