UNPKG

@styleless-ui/react

Version:

Completely unstyled, headless and accessible React UI components.

1 lines 2.23 kB
var e=this&&this.__assign||function(){return e=Object.assign||function(e){for(var t,o=1,n=arguments.length;o<n;o++)for(var r in t=arguments[o])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},e.apply(this,arguments)},t=this&&this.__rest||function(e,t){var o={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(o[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(o[n[r]]=e[n[r]])}return o};import{jsx as o}from"react/jsx-runtime";import*as n from"react";import{disableUserSelectCSSProperties as r}from"../../internals";import{componentWithForwardedRef as l,useEventCallback as i,useForkedRefs as a}from"../../utils";import s from"../context";import u from"../RadioGroup/context";import{RadioItemRoot as c}from"../slots";import d from"../useMenuItem";var m=l((function(l,m){var f=l.children,p=l.className,v=l.disabled,h=void 0!==v&&v,y=l.value,b=l.onSelect,M=l.onClick,O=l.onMouseEnter,E=l.onMouseLeave,x=l.style,g=t(l,["children","className","disabled","value","onSelect","onClick","onMouseEnter","onMouseLeave","style"]),j=n.useContext(s),C=n.useContext(u);"production"!==process.env.NODE_ENV&&(C||console.error("[StylelessUI][Menu.RadioItem]: You can't use `<Menu.RadioItem>` outside of the `<Menu.RadioGroup>`."));var I=n.useRef(null),R=a(m,I),k=!(!j||!I.current)&&j.activeElement===I.current,L=(null==C?void 0:C.value)===y,N={disabled:h,active:k,selected:L},S="function"==typeof f?f(N):f,_="function"==typeof p?p(N):p,w=d({disabled:h,isActive:k,onClick:M,onMouseEnter:i((function(e){null==j||j.setActiveElement(I.current),null==O||O(e)})),onMouseLeave:i((function(e){null==j||j.setActiveElement(null),null==E||E(e)})),changeEmitter:i((function(e){null==b||b(e),null==C||C.onValueChange(y)}))});return o("div",e({},g,{role:"menuitemradio",ref:function(e){R(e),e&&(null==j||j.registerItem(I))},"data-slot":c,className:_,tabIndex:-1,onClick:w.handleClick,onMouseEnter:w.handleMouseEnter,onMouseLeave:w.handleMouseLeave,"aria-checked":L,"aria-disabled":h,"data-active":k?"":void 0,style:x?e(e({},x),r):r},{children:S}))}));export default m;