UNPKG

@styleless-ui/react

Version:

Completely unstyled, headless and accessible React UI components.

1 lines 1.92 kB
"use strict";var __assign=this&&this.__assign||function(){return __assign=Object.assign||function(e){for(var r,l=1,s=arguments.length;l<s;l++)for(var t in r=arguments[l])Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t]);return e},__assign.apply(this,arguments)},__rest=this&&this.__rest||function(e,r){var l={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&r.indexOf(s)<0&&(l[s]=e[s]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var t=0;for(s=Object.getOwnPropertySymbols(e);t<s.length;t++)r.indexOf(s[t])<0&&Object.prototype.propertyIsEnumerable.call(e,s[t])&&(l[s[t]]=e[s[t]])}return l};Object.defineProperty(exports,"__esModule",{value:!0});var jsx_runtime_1=require("react/jsx-runtime"),utils_1=require("../../utils"),slots_1=require("../slots"),getLabelInfo=function(e){var r={};if("string"==typeof e)r.visibleLabel=e;else if("screenReaderLabel"in e)r.srOnlyLabel=e.screenReaderLabel;else{if(!("labelledBy"in e))throw new Error(["[StylelessUI][Menu.Group]: Invalid `label` property.","The `label` property must be either a `string` or in shape of `{ screenReaderLabel: string; } | { labelledBy: string; }`"].join("\n"));r.labelledBy=e.labelledBy}return r},MenuGroupBase=function(e,r){var l=e.children,s=e.classes,t=e.label,a=e.id,n=__rest(e,["children","classes","label","id"]),i=(0,utils_1.useDeterministicId)(a,"styleless-ui__menu-group"),o=i?"".concat(i,"__label"):void 0,u=getLabelInfo(t);return(0,jsx_runtime_1.jsxs)("div",__assign({},n,{id:i,ref:r,className:null==s?void 0:s.root,role:"group",tabIndex:-1,"data-slot":slots_1.GroupRoot,"aria-label":u.srOnlyLabel,"aria-labelledby":u.visibleLabel?o:u.labelledBy},{children:[u.visibleLabel&&(0,jsx_runtime_1.jsx)("span",__assign({id:o,"data-slot":slots_1.GroupLabel,className:null==s?void 0:s.label},{children:u.visibleLabel})),l]}))},MenuGroup=(0,utils_1.componentWithForwardedRef)(MenuGroupBase);exports.default=MenuGroup;