@styleless-ui/react
Version:
Completely unstyled, headless and accessible React UI components.
1 lines • 2.37 kB
JavaScript
;var __assign=this&&this.__assign||function(){return __assign=Object.assign||function(e){for(var l,r=1,t=arguments.length;r<t;r++)for(var a in l=arguments[r])Object.prototype.hasOwnProperty.call(l,a)&&(e[a]=l[a]);return e},__assign.apply(this,arguments)},__rest=this&&this.__rest||function(e,l){var r={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&l.indexOf(t)<0&&(r[t]=e[t]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(t=Object.getOwnPropertySymbols(e);a<t.length;a++)l.indexOf(t[a])<0&&Object.prototype.propertyIsEnumerable.call(e,t[a])&&(r[t[a]]=e[t[a]])}return r},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});var jsx_runtime_1=require("react/jsx-runtime"),utils_1=require("../../utils"),slots_1=require("../slots"),context_1=__importDefault(require("./context")),getLabelInfo=function(e){var l={};if("string"==typeof e)l.visibleLabel=e;else if("screenReaderLabel"in e)l.srOnlyLabel=e.screenReaderLabel;else{if(!("labelledBy"in e))throw new Error(["[StylelessUI][Menu.RadioGroup]: Invalid `label` property.","The `label` property must be either a `string` or in shape of `{ screenReaderLabel: string; } | { labelledBy: string; }`"].join("\n"));l.labelledBy=e.labelledBy}return l},MenuRadioGroupBase=function(e,l){var r=e.children,t=e.classes,a=e.value,s=e.defaultValue,i=e.onValueChange,n=e.label,o=e.id,u=__rest(e,["children","classes","value","defaultValue","onValueChange","label","id"]),_=(0,utils_1.useDeterministicId)(o,"styleless-ui__menu-radio-group"),d=_?"".concat(_,"__label"):void 0,b=getLabelInfo(n),c=(0,utils_1.useControlledProp)(a,s,""),p=c[0],f=c[1];return(0,jsx_runtime_1.jsxs)("div",__assign({},u,{id:_,ref:l,className:null==t?void 0:t.root,role:"group",tabIndex:-1,"data-slot":slots_1.RadioGroupRoot,"aria-label":b.srOnlyLabel,"aria-labelledby":b.visibleLabel?d:b.labelledBy},{children:[b.visibleLabel&&(0,jsx_runtime_1.jsx)("span",__assign({id:d,"data-slot":slots_1.RadioGroupLabel,className:null==t?void 0:t.label},{children:b.visibleLabel})),(0,jsx_runtime_1.jsx)(context_1.default.Provider,__assign({value:{value:p,onValueChange:function(e){f(e),null==i||i(e)}}},{children:r}))]}))},MenuRadioGroup=(0,utils_1.componentWithForwardedRef)(MenuRadioGroupBase);exports.default=MenuRadioGroup;