@itwin/itwinui-react
Version:
A react component library for iTwinUI
51 lines (50 loc) • 1.79 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true,
});
Object.defineProperty(exports, 'ButtonBase', {
enumerable: true,
get: function () {
return ButtonBase;
},
});
const _interop_require_default = require('@swc/helpers/_/_interop_require_default');
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react'));
const _classnames = /*#__PURE__*/ _interop_require_default._(
require('classnames'),
);
const _Box = require('./Box.js');
const _useIsClient = require('../hooks/useIsClient.js');
const ButtonBase = _react.forwardRef((props, forwardedRef) => {
let {
as: asProp = 'button',
disabled: disabledProp,
htmlDisabled,
type: typeProp = 'button' === asProp ? 'button' : void 0,
...rest
} = props;
let isClient = (0, _useIsClient.useIsClient)();
let ariaDisabled =
disabledProp && !htmlDisabled && isClient && 'button' === asProp;
let handleIfEnabled = (handler) => (e) => {
if (disabledProp) return;
handler?.(e);
};
let type = 'button' === asProp && disabledProp ? 'button' : typeProp;
return _react.createElement(_Box.Box, {
as: asProp,
type: type,
ref: forwardedRef,
'aria-disabled': ariaDisabled ? 'true' : void 0,
'data-iui-disabled': disabledProp ? 'true' : void 0,
disabled: htmlDisabled ?? (!isClient && disabledProp) ? true : void 0,
...rest,
className: (0, _classnames.default)('iui-button-base', props.className),
onClick: handleIfEnabled(props.onClick),
onPointerDown: handleIfEnabled(props.onPointerDown),
onPointerUp: handleIfEnabled(props.onPointerUp),
});
});
if ('development' === process.env.NODE_ENV)
ButtonBase.displayName = 'ButtonBase';