UNPKG

carbon-react

Version:

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

2 lines (1 loc) • 6.52 kB
import{jsx as e}from"react/jsx-runtime";import{forwardRef as n,useContext as t,useRef as r,useImperativeHandle as l,useState as a,useMemo as i}from"react";import o from"invariant";import d from"../../__internal__/utils/helpers/tags/tags.js";import"../../style/utils/filter-styled-system-padding-props.js";import s from"../../style/utils/filter-styled-system-margin-props.js";import y from"../../__internal__/utils/helpers/events/events.js";import{StyledFieldset as m,StyledNumeralDate as u,StyledDateField as c}from"./numeral-date.style.js";import{Textbox as p}from"../textbox/textbox.component.js";import b from"../../__internal__/utils/helpers/guid/index.js";import f from"../../hooks/__internal__/useLocale/useLocale.js";import{TooltipProvider as g}from"../../__internal__/tooltip-provider/index.js";import v from"../carbon-provider/__internal__/new-validation.context.js";import O from"./__internal__/numeral-date.context.js";import h from"../../hooks/__internal__/useIsAboveBreakpoint/useIsAboveBreakpoint.js";function j(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function _(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){j(e,n,t[n])}))}return e}function w(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 D=[["dd","mm","yyyy"],["mm","dd","yyyy"],["yyyy","mm","dd"],["dd","mm"],["mm","dd"],["mm","yyyy"]],P=e=>{const n=(new Date).getFullYear(),{format:t}=new Intl.DateTimeFormat(e,{month:"long"});return[...Array(12).keys()].map((e=>t(new Date(Date.UTC(n,e)))))},I=(e,n,t)=>({dd:e.numeralDate.validation.day(n?P(e.locale())[+n-1]:void 0,t),mm:e.numeralDate.validation.month(),yyyy:e.numeralDate.validation.year()}),k=(e,n)=>{switch(e){case"mm":return n.numeralDate.labels.month();case"yyyy":return n.numeralDate.labels.year();default:return n.numeralDate.labels.day()}},A=n(((n,j)=>{var{dateFormat:P=["dd","mm","yyyy"],disabled:A,error:x="",warning:S="",info:L,id:B,name:E,onBlur:R,onChange:F,value:H,validationOnLabel:T=!1,label:z,labelInline:N,labelWidth:W,labelAlign:q,fieldLabelsAlign:C,labelHelp:K,labelSpacing:M,fieldHelp:Y,adaptiveLabelBreakpoint:J,required:V,readOnly:$,size:U="medium",enableInternalError:G,enableInternalWarning:Q,tooltipPosition:X,helpAriaLabel:Z,dayRef:ee,monthRef:ne,yearRef:te,validationMessagePositionTop:re=!0,inputIds:le}=n,ae=function(e,n){if(null==e)return{};var t,r,l=function(e,n){if(null==e)return{};var t,r,l={},a=Object.keys(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||(l[t]=e[t]);return l}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(l[t]=e[t])}return l}(n,["dateFormat","disabled","error","warning","info","id","name","onBlur","onChange","value","validationOnLabel","label","labelInline","labelWidth","labelAlign","fieldLabelsAlign","labelHelp","labelSpacing","fieldHelp","adaptiveLabelBreakpoint","required","readOnly","size","enableInternalError","enableInternalWarning","tooltipPosition","helpAriaLabel","dayRef","monthRef","yearRef","validationMessagePositionTop","inputIds"]);const ie=f(),{validationRedesignOptIn:oe}=t(v),{current:de}=r(B||b()),se=r({dd:b(),mm:b(),yyyy:b()});var ye,me,ue;const ce={dd:null!==(ye=null==le?void 0:le.day)&&void 0!==ye?ye:se.current.dd,mm:null!==(me=null==le?void 0:le.month)&&void 0!==me?me:se.current.mm,yyyy:null!==(ue=null==le?void 0:le.year)&&void 0!==ue?ue:se.current.yyyy},pe=r(P.map((()=>null)));l(j,(()=>({focus:()=>{var e;null===(e=pe.current[0])||void 0===e||e.focus()}})));const[be,fe]=a(_({},Object.fromEntries(P.map((e=>[e,""]))))),ge=i((()=>!P||D.find((e=>JSON.stringify(e)===JSON.stringify(P)))),[P]);o(ge,"Forbidden prop dateFormat supplied to NumeralDate. Only one of these date formats is allowed: ['dd', 'mm', 'yyyy'], ['mm', 'dd', 'yyyy'], ['yyyy', 'mm', 'dd'], ['dd', 'mm'], ['mm', 'dd'], ['mm', 'yyyy']");const ve=e=>({target:{name:E,id:de,value:e}}),Oe=e=>{y.isNumberKey(e)||y.isTabKey(e)||y.isEnterKey(e)||"Delete"===e.key||"Backspace"===e.key||e.preventDefault()},he=()=>{(G||Q)&&fe((e=>_({},e,((e,{dd:n,mm:t,yyyy:r})=>{const l={dd:"",mm:"",yyyy:""},a=((e,n)=>{if(!e||+e>12||+e<1)return 31;const t=new Date,r=+(n||t.getFullYear());return new Date(r,+e,0).getDate()})(t,r);return n&&(+n>a||+n<1)&&(l.dd=I(e,t,String(a)).dd),t&&(+t>12||+t<1)&&(l.mm=I(e).mm),r&&(+r<1800||+r>2200)&&(l.yyyy=I(e).yyyy),l})(ie,H)))),setTimeout((()=>{const e=!pe.current.find((e=>e===document.activeElement));R&&e&&R(ve(H))}),5)},je=Object.keys(be).reduce(((e,n)=>be[n]?`${e+be[n]}\n`:e),""),_e=G?je+x:x,we=Q?je+S:S,De=h(J);let Pe=N;J&&(Pe=De);const Ie=()=>e(u,{onKeyDown:Oe,children:P.map(((n,t)=>{const r=t===P.length-1;let l;const a=_e||we||L,i=!oe&&"string"==typeof a&&""!==a;switch(n.slice(0,2)){case"dd":l=ee;break;case"mm":l=ne;break;case"yy":l=te}return e(O.Provider,{value:{disableErrorBorder:!0},children:e(c,{size:U,isYearInput:4===n.length,hasValidationIconInField:!T&&r&&i,children:e(p,w(_({id:ce[n],label:k(n,ie),labelAlign:C,disabled:A,readOnly:$,error:!!_e,warning:!!we,info:!!L,size:U,value:H[n],onChange:e=>((e,n)=>{const{value:t}=e.target;if(t.length<=n.length){const e=w(_({},H),{[n]:t});F(ve(e))}})(e,n),onBlur:he,ref:e=>((e,n,t)=>{pe.current[n]=e,t&&("function"==typeof t?t(e):t.current=e)})(e,t,l)},r&&!T&&!oe&&{error:_e,warning:we,info:L}),{tooltipPosition:X,tooltipId:`${de}-validation`,my:0}))},n)},n)}))});return oe?e(m,w(_({applyNewValidation:!0,id:de,legend:z,inputHint:K,legendAlign:q,error:_e,warning:we,isRequired:V,isDisabled:A,validationMessagePositionTop:re,name:E},s(ae),d("numeral-date",ae)),{children:Ie()})):e(g,{helpAriaLabel:Z,children:e(m,w(_({id:de,legend:z,isRequired:V,isDisabled:A,name:E,error:T&&_e,warning:T&&we,info:T&&L,inline:Pe,size:U,labelHelp:K,legendAlign:q,legendWidth:W,legendSpacing:M,fieldHelp:Y},s(ae),d("numeral-date",ae)),{children:Ie()}))})}));export{D as ALLOWED_DATE_FORMATS,A as NumeralDate,A as default};