UNPKG

@styleless-ui/react

Version:

Completely unstyled, headless and accessible React UI components.

1 lines 4.21 kB
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var u=Object.getOwnPropertyDescriptor(t,r);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,u)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&__createBinding(t,e,r);return __setModuleDefault(t,e),t},__spreadArray=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,u=0,l=t.length;u<l;u++)!n&&u in t||(n||(n=Array.prototype.slice.call(t,0,u)),n[u]=t[u]);return e.concat(n||Array.prototype.slice.call(t))};Object.defineProperty(exports,"__esModule",{value:!0});var React=__importStar(require("react")),_1=require("."),internals_1=require("../internals"),useCheckBase=function(e){var t=e.checked,r=e.value,n=void 0===r?"":r,u=e.groupCtx,l=e.defaultChecked,i=e.onBlur,a=e.onChange,s=e.onFocus,c=e.onKeyDown,o=e.onKeyUp,d=e.keyboardActivationBehavior,f=void 0===d?"automatic":d,y=e.enterKeyFunctionality,_=void 0===y?"request-form-submit":y,v=e.strategy,h=void 0===v?"check-control":v,m=e.autoFocus,p=void 0!==m&&m,g=e.toggle,b=void 0!==g&&g,k=e.disabled,S=void 0!==k&&k,E=(0,_1.useIsMounted)(),C=(0,_1.useControlledProp)(t,l,!1),R=C[0],K=C[1],F=u?"check-control"===h?u.value.includes(n):u.value===n:R,A=(0,_1.useIsFocusVisible)(),P=A.isFocusVisibleRef,T=A.onBlur,D=A.onFocus,O=A.ref,B=React.useRef(),j=(0,_1.useForkedRefs)(B,O),w=React.useRef(!1),M=React.useRef(!1),q=React.useState((function(){return!S&&p})),I=q[0],N=q[1];React.useEffect((function(){S&&I&&N(!1)})),React.useEffect((function(){P.current=I})),(0,_1.useIsomorphicLayoutEffect)((function(){var e;I&&(null===(e=B.current)||void 0===e||e.focus())}),[]);var x=function(e){!S&&E()&&("radio-control"===h&&F&&!b||(K(e),null==u||u.onChange(e,n),null==a||a(e)))},L=(0,_1.useEventCallback)((function(e){e.preventDefault(),!S&&E()&&x(!F)})),U=(0,_1.useEventCallback)((function(e){!S&&E()&&(B.current||(B.current=e.currentTarget),D(e),P.current&&N(!0),null==s||s(e))})),V=(0,_1.useEventCallback)((function(e){!S&&E()&&(T(e),!1===P.current&&N(!1),null==i||i(e))})),G=(0,_1.useEventCallback)((function(e){var t,r,l;if(!S&&E()){if(I&&(!1===w.current&&e.key===internals_1.SystemKeys.SPACE&&(w.current=!0),!1===M.current&&e.key===internals_1.SystemKeys.ENTER&&(M.current=!0)),e.target===e.currentTarget&&([internals_1.SystemKeys.SPACE,internals_1.SystemKeys.ENTER].includes(e.key)&&e.preventDefault(),u&&I)){var i=u.items;if(!i)return;var a=i.findIndex((function(e){return e[0]===n})),s=null===(t=i[a])||void 0===t?void 0:t[1].current,o=s?window.getComputedStyle(s).direction:"ltr",d=[internals_1.SystemKeys.UP,"ltr"===o?internals_1.SystemKeys.LEFT:internals_1.SystemKeys.RIGHT].includes(e.key),y=[internals_1.SystemKeys.DOWN,"ltr"===o?internals_1.SystemKeys.RIGHT:internals_1.SystemKeys.LEFT].includes(e.key),_=null,v=function(e,t,r){void 0===r&&(r=[]);var n=i[e];if(r.includes(e))return null;if(!n||!n[1].current||n[1].current.disabled){var u=(t?e+1:e-1+i.length)%i.length;return v(u,t,__spreadArray(__spreadArray([],r,!0),[e],!1))}return n};d?_=v((a-1+i.length)%i.length,!1):y&&(_=v((a+1)%i.length,!0)),_&&(e.preventDefault(),null===(r=_[1].current)||void 0===r||r.focus(),"automatic"===f&&(null===(l=_[1].current)||void 0===l||l.click()))}null==c||c(e)}})),H=(0,_1.useEventCallback)((function(e){!S&&E()&&(I&&(e.key===internals_1.SystemKeys.SPACE&&(w.current=!1),e.key===internals_1.SystemKeys.ENTER&&(M.current=!1)),null==o||o(e),e.target===e.currentTarget&&(e.key===internals_1.SystemKeys.SPACE?x(!F):e.key===internals_1.SystemKeys.ENTER&&("request-form-submit"===_?(0,_1.requestFormSubmit)(e.target):x(!F))))}));return{checked:F,isFocusedVisible:I,controllerRef:B,emitChange:x,handleBlur:V,handleClick:L,handleFocus:U,handleKeyDown:G,handleKeyUp:H,handleControllerRef:j}};exports.default=useCheckBase;