UNPKG

carbon-react

Version:

A library of reusable React components for easily building user interfaces.

2 lines (1 loc) 4.71 kB
import{jsxs as e,jsx as i,Fragment as n}from"react/jsx-runtime";import{useContext as r,useState as t,useRef as o,useEffect as l}from"react";import{StyledFieldset as a,StyledLegend as s,StyledIconWrapper as d}from"./fieldset.style.js";import{ValidationIcon as p}from"../validations/validation-icon.component.js";import c from"../../components/carbon-provider/__internal__/new-validation.context.js";import{InputGroupBehaviour as u,InputGroupContext as m}from"../input-behaviour/input-group-behaviour.component.js";import{Help as f}from"../../components/help/help.component.js";import{Typography as g}from"../../components/typography/typography.component.js";import{Box as b}from"../../components/box/box.component.js";import y from"../../components/textbox/textbox.style.js";import h from"../validation-message/validation-message.component.js";import{HintText as j}from"../hint-text/hint-text.component.js";import{FieldHelp as v}from"../field-help/field-help.component.js";import O from"../utils/helpers/guid/index.js";import w from"../../hooks/__internal__/useInputAccessibility/useInputAccessibility.js";import"../../style/utils/filter-styled-system-padding-props.js";import P from"../../style/utils/filter-styled-system-margin-props.js";function x(e,i,n){return i in e?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n,e}function D(e){for(var i=1;i<arguments.length;i++){var n=null!=arguments[i]?arguments[i]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(i){x(e,i,n[i])}))}return e}function M(e,i){return i=null!=i?i:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):function(e){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);i.push.apply(i,n)}return i}(Object(i)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))})),e}const S=x=>{var{legend:S,children:H,inline:I=!1,legendWidth:_,legendAlign:k,legendSpacing:A=2,error:R,warning:q,info:B,isRequired:E,blockGroupBehaviour:L,legendMargin:F={},isDisabled:G,labelHelp:T,fieldHelp:z,inputHint:N,validationMessagePositionTop:V,applyNewValidation:W=!1,id:C,size:$}=x,J=function(e,i){if(null==e)return{};var n,r,t=function(e,i){if(null==e)return{};var n,r,t={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],i.indexOf(n)>=0||(t[n]=e[n]);return t}(e,i);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],i.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(t[n]=e[n])}return t}(x,["legend","children","inline","legendWidth","legendAlign","legendSpacing","error","warning","info","isRequired","blockGroupBehaviour","legendMargin","isDisabled","labelHelp","fieldHelp","inputHint","validationMessagePositionTop","applyNewValidation","id","size"]);const{validationRedesignOptIn:K}=r(c),Q=P(J),[U,X]=t(null),[Y,Z]=t(!1),ee=o(O()),ie=C||ee.current,ne=N?`${ie}-hint`:void 0;l((()=>{U&&E&&Array.from(U.querySelectorAll("input")||[]).forEach((e=>{e.setAttribute("required","")}))}),[U,E]);let re;re=I&&!k?"right":k||"left";const{validationId:te,fieldHelpId:oe,ariaDescribedBy:le}=w({id:ie,validationRedesignOptIn:!0,error:R,warning:q,info:B,fieldHelp:z}),ae=(V?[le,ne]:[ne,le]).filter(Boolean).join(" "),se=()=>R||q?e(n,{children:[i(h,{error:R,warning:q,validationId:te,validationMessagePositionTop:V,isLarge:"large"===$}),i(y,{warning:!(R||!q)})]}):null;return W?e(a,M(D({ref:X,"data-component":"fieldset",id:ie,"aria-describedby":ae||void 0},J,Q),{children:[S&&i(s,{align:re,isRequired:E,isDisabled:G,"data-element":"legend","data-role":"legend",isLarge:"large"===$,children:S}),N&&i(j,{id:ne,isDisabled:G,align:re,isLarge:"large"===$,children:N}),e(b,{position:"relative",mt:1,children:[V&&se(),H,!V&&se()]})]})):i(u,{blockGroupBehaviour:L,children:e(a,M(D({ref:X,"data-component":"fieldset",id:ie,"aria-describedby":le||void 0},J,Q),{children:[S&&i(m.Consumer,{children:({onMouseEnter:n,onMouseLeave:r})=>e(s,M(D({onMouseEnter:n,onMouseLeave:r,inline:I,width:_,align:re,rightPadding:A},F),{"data-element":"legend","data-role":"legend",isRequired:E,isDisabled:G,children:[S,!K&&(R||q||B?i(d,{"aria-hidden":"true",children:i(p,{error:R,warning:q,info:B,tooltipFlipOverrides:["top","bottom"]})}):T?i(d,M(D({},{onFocus:()=>Z(!0),onBlur:()=>Z(!1)}),{children:i(f,{isFocused:Y,children:T})})):null)]}))}),!K&&i(g,{screenReaderOnly:!0,id:te,children:R||q||B}),e(b,{display:"flex",flexDirection:"column",mt:I?0:1,children:[H,z&&i(v,{id:oe,children:z})]})]}))})};export{S as default};