UNPKG

carbon-react

Version:

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

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