UNPKG

clickable-box

Version:

Add `onClick` to HTML elements without sacrificing accessibility.

3 lines (2 loc) 1.1 kB
function e(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=/*#__PURE__*/e(require("react"));function t(){return t=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},t.apply(this,arguments)}var n=["is","onClick","disabled","tabIndex","onKeyPress"],a=/*#__PURE__*/r.default.forwardRef(function(e,a){var i=e.is,o=void 0===i?"span":i,s=e.onClick,d=e.disabled,l=e.tabIndex,u=void 0===l?0:l,c=e.onKeyPress,f=function(e,r){if(null==e)return{};var t,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r.indexOf(t=i[n])>=0||(a[t]=e[t]);return a}(e,n);/*#__PURE__*/return r.default.createElement(o,t({tabIndex:d?void 0:u,role:"button",onKeyPress:d?void 0:function(e){switch(e.key){case" ":case"Spacebar":e.preventDefault(),s&&c||c?c(e):s&&s(e);break;case"Enter":if(c&&(c(e),e.isDefaultPrevented()))return;s&&s(e)}},onClick:d?void 0:s,"aria-disabled":d?"true":void 0,ref:a},f))});a.displayName="ClickableBox",module.exports=a; //# sourceMappingURL=clickable-box.cjs.map