carbon-react
Version:
A library of reusable React components for easily building user interfaces.
2 lines (1 loc) • 4.35 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),n=require("react"),t=require("../../__internal__/utils/helpers/tags/tags.js"),r=require("../../hooks/__internal__/useResizeObserver/useResizeObserver.js"),i=require("../../__internal__/utils/helpers/guid/index.js"),o=require("../../__internal__/utils/helpers/events/events.js"),a=require("./accordion.style.js"),c=require("../../__internal__/validations/validation-icon.component.js");function l(e){return e&&e.__esModule?e:{default:e}}function d(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})))),r.forEach((function(n){d(e,n,t[n])}))}return e}function u(e,n){return n=null!=n?n:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):function(e){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n.push.apply(n,t)}return n}(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})),e}const b=l(n).default.forwardRef(((l,d)=>{var{borders:b="default",defaultExpanded:f,expanded:p,onChange:y,children:g,handleKeyboardAccessibility:h,id:j,index:v,iconType:O,iconAlign:x,size:_="large",subTitle:m,title:w,width:S,headerSpacing:A,disableContentPadding:P=!1,error:C,warning:E,info:T,openTitle:k,variant:q="standard"}=l,z=function(e,n){if(null==e)return{};var t,r,i=function(e,n){if(null==e)return{};var t,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}(l,["borders","defaultExpanded","expanded","onChange","children","handleKeyboardAccessibility","id","index","iconType","iconAlign","size","subTitle","title","width","headerSpacing","disableContentPadding","error","warning","info","openTitle","variant"]);const D=void 0!==p,[I,H]=n.useState(f||!1),[K,R]=n.useState(I?"auto":0),$=n.useRef(null),M=D?p:I;r.default($,(()=>{var e;R(null===(e=$.current)||void 0===e?void 0:e.scrollHeight)})),n.useEffect((()=>{var e;R(null===(e=$.current)||void 0===e?void 0:e.scrollHeight)}),[M]);const V=n.useCallback((e=>{D||H(!M),null==y||y(e,!M)}),[D,M,y]),F=n.useCallback((e=>{h&&h(e,v),(o.default.isEnterKey(e)||o.default.isSpaceKey(e))&&(e.preventDefault(),V(e))}),[h,v,V]),N=n.useRef(i.default()),B=j||`Accordion_${N.current}`,G=`AccordionHeader_${N.current}`,J=`AccordionContent_${N.current}`,L=!!(C||E||T);return e.jsxs(a.StyledAccordionContainer,u(s({id:B,width:S,borders:"subtle"===q?"none":b,variant:q},z,t.default("accordion",z)),{children:[e.jsxs(a.StyledAccordionTitleContainer,u(s({"data-element":"accordion-title-container",id:G,"aria-expanded":M,"aria-controls":J,onClick:V,onKeyDown:F,tabIndex:0,iconAlign:x||("standard"===q?"right":"left"),ref:d,size:_,isExpanded:M,variant:q,role:"button"},A),{children:[e.jsxs(a.StyledAccordionHeadingsContainer,{"data-element":"accordion-headings-container",hasValidationIcon:L,children:["string"==typeof w?e.jsx(a.StyledAccordionTitle,{"data-element":"accordion-title",size:_,variant:q,children:M&&k||w}):M&&k||w,"subtle"!==q&&e.jsxs(e.Fragment,{children:[L&&e.jsx(c.ValidationIcon,{error:C,warning:E,info:T,tooltipPosition:"top",tabIndex:0,ml:1}),m&&"large"===_&&"standard"===q&&e.jsx(a.StyledAccordionSubTitle,{children:m})]})]}),e.jsx(a.StyledAccordionIcon,{"data-element":"accordion-icon",type:O||("small"===_||"subtle"===q?"chevron_down_thick":"chevron_down"),isExpanded:M,iconAlign:x||("standard"===q?"right":"left")})]})),e.jsx(a.StyledAccordionContentContainer,{isExpanded:M,maxHeight:K,"data-role":"accordion-content-container",children:e.jsx(a.StyledAccordionContent,{role:"region","data-element":"accordion-content","data-role":"accordion-content",id:J,"aria-labelledby":G,ref:$,disableContentPadding:P,variant:q,children:g})})]}))}));b.displayName="Accordion",exports.Accordion=b,exports.default=b;