@styleless-ui/react
Version:
Completely unstyled, headless and accessible React UI components.
1 lines • 3.09 kB
JavaScript
;var __assign=this&&this.__assign||function(){return __assign=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign.apply(this,arguments)},__createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}: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},__rest=this&&this.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}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"),React=__importStar(require("react")),utils_1=require("../utils"),context_1=__importDefault(require("./context")),slots_1=require("./slots"),TabGroupBase=function(e,t){var r=e.children,n=e.className,i=e.onChange,a=e.defaultActiveTab,o=e.activeTab,u=e.keyboardActivationBehavior,s=void 0===u?"manual":u,l=e.orientation,c=void 0===l?"horizontal":l,_=__rest(e,["children","className","onChange","defaultActiveTab","activeTab","keyboardActivationBehavior","orientation"]),f=(0,utils_1.useIsMounted)(),d=React.useRef(),p=(0,utils_1.useForkedRefs)(t,d),b=(0,utils_1.useControlledProp)(o,a,0),h=b[0],v=b[1],m=React.Children.map(r,(function(e){return React.isValidElement(e)?e:null})),y=[],g=[];return React.useEffect((function(){var e,t=null===(e=d.current)||void 0===e?void 0:e.querySelectorAll('[role="tab"]');if(t){var r=t[h];if(r&&(r.disabled||r.hasAttribute("disabled")))throw new Error("[StylelessUI][TabGroup.Root]: The selected tab is `disabled`.")}}),[]),(0,jsx_runtime_1.jsx)("div",__assign({},_,{className:n,ref:p,"data-slot":slots_1.Root},{children:(0,jsx_runtime_1.jsx)(context_1.default.Provider,__assign({value:{activeTab:h,tabs:y,panels:g,register:function(e){e.current&&(e.current instanceof HTMLDivElement?g.findIndex((function(t){return t.current===e.current}))<0&&g.push(e):y.findIndex((function(t){return t.current===e.current}))<0&&y.push(e))},orientation:c,keyboardActivationBehavior:s,onChange:function(e){f()&&(v(e),null==i||i(e))}}},{children:m}))}))},TabGroup=(0,utils_1.componentWithForwardedRef)(TabGroupBase);exports.default=TabGroup;