UNPKG

react-collapser

Version:

🏄‍♂️ • fully controlled • zero dependencies • works out of the box • other features

3 lines (2 loc) 3.1 kB
import{useState as e,useEffect as r,createElement as t,cloneElement as n}from"react";function i(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function o(){return(o=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}function a(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function c(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var t=[],n=!0,i=!1,o=void 0;try{for(var a,c=e[Symbol.iterator]();!(n=(a=c.next()).done)&&(t.push(a.value),!r||t.length!==r);n=!0);}catch(e){i=!0,o=e}finally{try{n||null==c.return||c.return()}finally{if(i)throw o}}return t}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var l=function(l){var u=l.children,d=l.className,s=void 0===d?"collapse":d,f=l.alwaysOpen,p=void 0!==f&&f,v=l.index,y=void 0===v?"number"==typeof p?p+1:p?0:-1:v,b=l.controlled,m=void 0!==b&&b,O=l.revealed,g=void 0!==O&&O,h=l.animated,j=void 0!==h&&h,w=l.disabled,P=void 0!==w&&w,x=l.onChange,S=void 0===x?function(){return null}:x,N=function(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?a(t,!0).forEach((function(r){i(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(t).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}({},l);delete N.alwaysOpen;var A=c(e(y),2),k=A[0],D=A[1],E=c(e(!1),2),C=E[0],I=E[1];r((function(){g&&I(!0)}),[g]),r((function(){S({activeIndex:k})}),[k]);var H=function(e){if(m&&m||P)return!1;g&&I(!1);var r=e===k;D(p?r?"number"==typeof p?p+1:0:e:r?-1:e)},T=function(e,r){if("string"==typeof e)return e;return n(e,{handleActive:H,key:r,index:r,animated:j,isOpen:C||(m||(r%2!=0?r===k+1:r===k))})};return t("div",o({},N,{className:s}),u.map((function(e,r){return"Symbol(react.element)"===e.type.toString()?T(e,r):"Symbol(react.fragment)"===e.type.toString()?e.props.children.map((function(r,t){return T(r,2*e.key+t)})):T(e,r)})))},u=function(e){var r=e.className,n=void 0===r?"collapse-panel":r,i=e.children,o=e.controlled,a=e.animated,c=e.isOpen,l={maxHeight:o&&o||c?"initial":0,overflow:c?"visible":"hidden"};return a&&(l.transition="all 0.3s"),t("div",{className:n,"aria-expanded":o&&o||c,style:l},i)},d=function(e){var r=e.isOpen,n=e.handleActive,i=e.className,a=void 0===i?"collapse-trigger":i,c=e.children,l=e.index,u=e.disabled,d=void 0!==u&&u,s=e.controlled,f=void 0!==s&&s,p={};return d&&(p["aria-disabled"]=!0),t("div",o({},p,{className:a,"aria-expanded":f&&f||r,onClick:function(){return!d&&n(l)}}),c)};export{l as Collapser,u as Panel,d as Trigger}; //# sourceMappingURL=index.js.map