@nateradebaugh/react-datetime
Version:
A lightweight but complete datetime picker React.js component
3 lines (2 loc) • 15.2 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("@reach/popover"),require("use-onclickoutside"),require("date-fns/format"),require("date-fns/parse"),require("date-fns/isDate"),require("date-fns/toDate"),require("date-fns/isValid"),require("date-fns/startOfDay"),require("clsx"),require("date-fns/getHours"),require("date-fns/addHours"),require("date-fns/addMinutes"),require("date-fns/addSeconds"),require("date-fns/addMilliseconds"),require("date-fns/setHours"),require("date-fns/addDays"),require("date-fns/differenceInDays"),require("date-fns/startOfWeek"),require("date-fns/startOfMonth"),require("date-fns/endOfMonth"),require("date-fns/isSameDay"),require("date-fns/isBefore"),require("date-fns/addMonths"),require("date-fns/getDate"),require("date-fns/addYears"),require("date-fns/isSameMonth"),require("date-fns/setMonth"),require("date-fns/getDaysInMonth"),require("date-fns/setDate"),require("date-fns/getYear"),require("date-fns/setYear"),require("date-fns/getDaysInYear"),require("date-fns/setDayOfYear"),require("date-fns/isSameYear")):"function"==typeof define&&define.amd?define(["exports","react","@reach/popover","use-onclickoutside","date-fns/format","date-fns/parse","date-fns/isDate","date-fns/toDate","date-fns/isValid","date-fns/startOfDay","clsx","date-fns/getHours","date-fns/addHours","date-fns/addMinutes","date-fns/addSeconds","date-fns/addMilliseconds","date-fns/setHours","date-fns/addDays","date-fns/differenceInDays","date-fns/startOfWeek","date-fns/startOfMonth","date-fns/endOfMonth","date-fns/isSameDay","date-fns/isBefore","date-fns/addMonths","date-fns/getDate","date-fns/addYears","date-fns/isSameMonth","date-fns/setMonth","date-fns/getDaysInMonth","date-fns/setDate","date-fns/getYear","date-fns/setYear","date-fns/getDaysInYear","date-fns/setDayOfYear","date-fns/isSameYear"],t):t((e=e||self)["@nateradebaugh/react-datetime"]={},e.React,e.popover,e.useOnClickOutside,e.format,e.rawParse,e.isDate,e.toDate,e.isDateValid,e.startOfDay,e.clsx,e.getHours,e.addHours,e.addMinutes,e.addSeconds,e.addMilliseconds,e.setHours,e.addDays,e.differenceInDays,e.startOfWeek,e.startOfMonth,e.endOfMonth,e.isSameDay,e.isBefore,e.addMonths,e.getDate,e.addYears,e.isSameMonth,e.setMonth,e.getDaysInMonth,e.setDate,e.getYear,e.setYear,e.getDaysInYear,e.setDayOfYear,e.isSameYear)}(this,(function(e,t,a,r,n,s,l,o,d,i,c,u,f,m,p,y,O,h,E,v,w,D,M,b,S,N,T,P,j,k,g,H,C,q,L,_){"use strict";var R="default"in t?t.default:t;function I(){return(I=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var r in a)Object.prototype.hasOwnProperty.call(a,r)&&(e[r]=a[r])}return e}).apply(this,arguments)}function Y(e,t){if(null==e)return{};var a,r,n={},s=Object.keys(e);for(r=0;r<s.length;r++)t.indexOf(a=s[r])>=0||(n[a]=e[a]);return n}r=r&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,n=n&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n,s=s&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s,l=l&&Object.prototype.hasOwnProperty.call(l,"default")?l.default:l,o=o&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o,d=d&&Object.prototype.hasOwnProperty.call(d,"default")?d.default:d,i=i&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i,c=c&&Object.prototype.hasOwnProperty.call(c,"default")?c.default:c,u=u&&Object.prototype.hasOwnProperty.call(u,"default")?u.default:u,f=f&&Object.prototype.hasOwnProperty.call(f,"default")?f.default:f,m=m&&Object.prototype.hasOwnProperty.call(m,"default")?m.default:m,p=p&&Object.prototype.hasOwnProperty.call(p,"default")?p.default:p,y=y&&Object.prototype.hasOwnProperty.call(y,"default")?y.default:y,O=O&&Object.prototype.hasOwnProperty.call(O,"default")?O.default:O,h=h&&Object.prototype.hasOwnProperty.call(h,"default")?h.default:h,E=E&&Object.prototype.hasOwnProperty.call(E,"default")?E.default:E,v=v&&Object.prototype.hasOwnProperty.call(v,"default")?v.default:v,w=w&&Object.prototype.hasOwnProperty.call(w,"default")?w.default:w,D=D&&Object.prototype.hasOwnProperty.call(D,"default")?D.default:D,M=M&&Object.prototype.hasOwnProperty.call(M,"default")?M.default:M,b=b&&Object.prototype.hasOwnProperty.call(b,"default")?b.default:b,S=S&&Object.prototype.hasOwnProperty.call(S,"default")?S.default:S,N=N&&Object.prototype.hasOwnProperty.call(N,"default")?N.default:N,T=T&&Object.prototype.hasOwnProperty.call(T,"default")?T.default:T,P=P&&Object.prototype.hasOwnProperty.call(P,"default")?P.default:P,j=j&&Object.prototype.hasOwnProperty.call(j,"default")?j.default:j,k=k&&Object.prototype.hasOwnProperty.call(k,"default")?k.default:k,g=g&&Object.prototype.hasOwnProperty.call(g,"default")?g.default:g,H=H&&Object.prototype.hasOwnProperty.call(H,"default")?H.default:H,C=C&&Object.prototype.hasOwnProperty.call(C,"default")?C.default:C,q=q&&Object.prototype.hasOwnProperty.call(q,"default")?q.default:q,L=L&&Object.prototype.hasOwnProperty.call(L,"default")?L.default:L,_=_&&Object.prototype.hasOwnProperty.call(_,"default")?_.default:_;var A,F,V,x=["hours","minutes","seconds","milliseconds"],U={hours:{step:1},minutes:{step:1},seconds:{step:1},milliseconds:{step:1}},B=function(e){var a=e.onUp,r=e.onDown,n=e.value;return null!=n?t.createElement(t.Fragment,null,e.showPrefix&&t.createElement("div",{className:"rdtCounterSeparator"},":"),t.createElement("div",{className:"rdtCounter"},t.createElement("span",{className:"rdtBtn",onMouseDown:a},"▲"),t.createElement("div",{className:"rdtCount"},n),t.createElement("span",{className:"rdtBtn",onMouseDown:r},"▼"))):null},W={hours:f,minutes:m,seconds:p,milliseconds:y};function K(e,t,a,r){var n="sub"===e?-1:1,s=function(e,t){var a=U[e].step,r=t?t[e]:void 0;return r&&r.step&&(a=r.step),a}(t,r)*n;return W[t](a,s)}function z(e,t,a,r){var s=a;function l(e,t){return-1!==e.indexOf(t)}var o=l(s.toLowerCase(),ee.SHORT_HOUR),d=l(s,ee.SHORT_MINUTE),i=l(s,ee.SHORT_SECOND),c=l(s,ee.SHORT_MILLISECOND),u=l(s,ee.AM_PM),f="hours"===e&&o?u?ee.HOUR:ee.MILITARY_HOUR:"minutes"===e&&d?ee.MINUTE:"seconds"===e&&i?ee.SECOND:"milliseconds"===e&&c?ee.MILLISECOND:"daypart"===e&&u?ee.AM_PM:void 0;if(f)return n(t,f,r)}function G(e,t){return function(){var a=u(e);t(O(e,a>=12?a-12:a+12))}}function J(e,t,a){return function(){var r=a.timeConstraints,n=a.setViewTimestamp,s=a.setSelectedDate;if(!a.readonly){var l=K(e,t,a.viewTimestamp,r);n(l),A=setTimeout((function(){F=setInterval((function(){l=K(e,t,l,r),n(l)}),70)}),500),V=function(){clearTimeout(A),clearInterval(F),s(l),document.body.removeEventListener("mouseup",V),document.body.removeEventListener("touchend",V)},document.body.addEventListener("mouseup",V),document.body.addEventListener("touchend",V)}}}var Q=["viewMode","isStatic","id","className","style"],X={time:function(e){var a=e.viewTimestamp,r=e.dateFormat,s=e.setViewMode,l=e.timeFormat,o=e.formatOptions,d=e.setSelectedDate,i=0;return t.createElement("div",{className:"rdtTime","data-testid":"time-picker"},t.createElement("table",null,r?t.createElement("thead",null,t.createElement("tr",null,t.createElement("th",{className:"rdtSwitch","data-testid":"time-mode-switcher",colSpan:4,onClick:function(){return s("days")}},n(a,r)))):null,t.createElement("tbody",null,t.createElement("tr",null,t.createElement("td",null,t.createElement("div",{className:"rdtCounters"},x.map((function(r){var n=z(r,a,l,o);return n&&i++,t.createElement(B,{key:r,showPrefix:i>1,onUp:J("add",r,e),onDown:J("sub",r,e),value:n})})),t.createElement(B,{onUp:G(a,d),onDown:G(a,d),value:z("daypart",a,l,o)})))))))},months:function(e){var a=e.viewDate,r=e.setViewDate,s=e.selectedDate,l=e.setSelectedDate,o=e.formatOptions,d=e.setViewMode,i=e.isValidDate;return t.createElement("div",{className:"rdtMonths","data-testid":"month-picker"},t.createElement("table",null,t.createElement("thead",null,t.createElement("tr",null,t.createElement("th",{className:"rdtPrev",onClick:function(){return r(T(a,-1))}},t.createElement("span",null,"‹")),t.createElement("th",{className:"rdtSwitch","data-testid":"month-mode-switcher",onClick:function(){return d("years")},colSpan:2},n(a,ee.YEAR,o)),t.createElement("th",{className:"rdtNext",onClick:function(){return r(T(a,1))}},t.createElement("span",null,"›"))))),t.createElement("table",null,t.createElement("tbody",null,[0,1,2].map((function(e){var r=4*e;return t.createElement("tr",{key:r},[0,1,2,3].map((function(e){var d=e+r,u=j(a,d),f=Array.from({length:k(u)},(function(e,t){return g(u,t+1)})).every((function(e){return"function"==typeof i&&!i(e)})),m=j(new Date,d),p=s&&P(s,u);return t.createElement("td",{key:d,className:c(["rdtMonth",{rdtDisabled:f,rdtActive:p}]),onClick:function(){f||l(j(a,d))}},n(m,ee.SHORT_MONTH_NAME,o))})))})))))},years:function(e){var a=e.viewDate,r=e.setViewDate,s=e.selectedDate,l=e.setSelectedDate,o=e.formatOptions,d=e.setViewMode,i=e.isValidDate,u=10*Math.floor(H(a)/10);return t.createElement("div",{className:"rdtYears","data-testid":"year-picker"},t.createElement("table",null,t.createElement("thead",null,t.createElement("tr",null,t.createElement("th",{className:"rdtPrev",onClick:function(){return r(T(a,-10))}},t.createElement("span",null,"‹")),t.createElement("th",{className:"rdtSwitch","data-testid":"year-mode-switcher",onClick:function(){return d("years")},colSpan:2},u,"-",u+9),t.createElement("th",{className:"rdtNext",onClick:function(){return r(T(a,10))}},t.createElement("span",null,"›"))))),t.createElement("table",null,t.createElement("tbody",null,[0,1,2].map((function(e){var r=u-1+4*e;return t.createElement("tr",{key:r},[0,1,2,3].map((function(e){var d=e+r,u=C(a,d),f=Array.from({length:q(a)},(function(e,t){return L(u,t+1)})).every((function(e){return"function"==typeof i&&!i(e)})),m=s&&_(s,u);return t.createElement("td",{key:d,className:c(["rdtYear",{rdtDisabled:f,rdtActive:m}]),onClick:function(){f||l(C(a,d))}},n(u,"yyyy",o))})))})))))},days:function(e){var a=e.timeFormat,r=e.viewDate,s=e.setViewDate,l=e.selectedDate,o=e.setSelectedDate,d=e.formatOptions,i=e.setViewMode,u=e.isValidDate,f=v(r,d),m=S(r,-1),p=E(v(D(m),d),r),y=h(r,p);return t.createElement("div",{className:"rdtDays","data-testid":"day-picker"},t.createElement("table",null,t.createElement("thead",null,t.createElement("tr",null,t.createElement("th",{className:"rdtPrev",onClick:function(){return s(S(r,-1))}},t.createElement("span",null,"‹")),t.createElement("th",{className:"rdtSwitch","data-testid":"day-mode-switcher",onClick:function(){return i("months")},colSpan:5},n(r,ee.FULL_MONTH_NAME+" "+ee.YEAR,d)),t.createElement("th",{className:"rdtNext",onClick:function(){return s(S(r,1))}},t.createElement("span",null,"›"))),t.createElement("tr",null,[0,1,2,3,4,5,6].map((function(e){return t.createElement("th",{key:e,className:"dow"},n(h(f,e),ee.SHORT_DAY_OF_WEEK,d))})))),t.createElement("tbody",null,[0,1,2,3,4,5].map((function(e){var a=7*e;return t.createElement("tr",{key:n(h(y,a),ee.FULL_TIMESTAMP)},[0,1,2,3,4,5,6].map((function(e){var s=h(y,e+a),i="function"==typeof u&&!u(s),f=l&&M(s,l);return t.createElement("td",{key:N(s),className:c(["rdtDay",{rdtOld:b(s,w(r)),rdtNew:b(D(r),s),rdtActive:f,rdtToday:M(s,new Date),rdtDisabled:i}]),onClick:function(){i||o(s)}},n(s,ee.SHORT_DAY,d))})))}))),a?t.createElement("tfoot",null,t.createElement("tr",null,t.createElement("td",{onClick:function(){return i("time")},colSpan:7,className:"rdtTimeToggle","data-testid":"day-to-time-mode-switcher"},n(r,a,d)))):null))}},Z=t.forwardRef((function(e,a){var r=e.viewMode,n=e.isStatic,s=e.id,l=e.className,o=e.style,d=Y(e,Q);if(!r)return null;var i=X[r];return t.createElement("div",{ref:a,id:s,"data-testid":"picker-wrapper",className:c(["rdtPicker",l,{rdtStatic:n}]),style:o},i&&t.createElement(i,Object.assign({},d)))})),$=["isValidDate","dateTypeMode","value","onChange","onBlur","onFocus","dateFormat","timeFormat","locale","weekStartsOn","shouldHideInput","timeConstraints"],ee={MONTH:"LL",SHORT_MONTH_NAME:"LLL",FULL_MONTH_NAME:"LLLL",SHORT_DAY:"d",DAY:"dd",SHORT_DAY_OF_WEEK:"iiiiii",YEAR:"yyyy",MILITARY_HOUR:"H",HOUR:"h",SHORT_HOUR:"h",SHORT_MINUTE:"m",MINUTE:"mm",SHORT_SECOND:"s",SECOND:"ss",SHORT_MILLISECOND:"SSS",MILLISECOND:"SSS",AM_PM:"a",FULL_TIMESTAMP:"yyyy-MM-dd'T'HH:mm:ss.SSSxxx"};function te(e){var a=t.useState(void 0),r=a[1],n=a[0]||e,s=e.getTime();return t.useEffect((function(){r(void 0)}),[s]),[n,r]}function ae(e,t,a){if("string"==typeof e){var r=s(e,t,new Date,a);if(d(r)&&e===n(r,t,a))return r}else if(e){var l=o(e);if(d(l))return l}}var re={days:"days",months:"days",years:"months"},ne=function(e){var s=e.isValidDate,d=e.dateTypeMode,c=e.value,u=e.onChange,f=e.onBlur,m=e.onFocus,p=e.dateFormat,y=void 0===p||p,O=e.timeFormat,h=void 0===O||O,E=e.locale,v=e.weekStartsOn,w=e.shouldHideInput,D=void 0!==w&&w,M=e.timeConstraints,b=Y(e,$),S=e.disabled||e.readOnly,N=!0===y?ee.MONTH+"/"+ee.DAY+"/"+ee.YEAR:!1===y?"":y,T=!0===h?ee.HOUR+":"+ee.MINUTE+" "+ee.AM_PM:!1===h?"":h,P=N&&T?N+" "+T:N||T||"",j=t.useMemo((function(){return{locale:E,weekStartsOn:"number"==typeof v?v%7:v}}),[E,v]),k=ae(c,P,j),g=function(e){if("string"==typeof e){var t=e.toLowerCase();switch(t){case"utc-ms-timestamp":case"input-format":return t}}return"Date"}(d),H=t.useCallback((function(e){if("string"==typeof e)return e;if(!e)return e;switch(g){case"utc-ms-timestamp":return e.getTime();case"input-format":return n(e,P,j)}return e}),[g,j,P]),C=t.useCallback((function(e){if("function"==typeof u){var t=H(e);if(c&&t&&l(c)&&l(t)&&n(c,P,j)===n(t,P,j))return;u(t)}}),[j,P,H,u,c]),q=te(k||i(new Date)),L=q[0],_=q[1],A=function(e,t){if(e){if(e.match(/[d]/))return"days";if(-1!==e.indexOf("L"))return"months";if(-1!==e.indexOf("y"))return"years"}if(t)return"time"}(N,T),F=function(e){var a=t.useState(void 0),r=a[1],n=a[0]||e;return t.useEffect((function(){r(void 0)}),[e]),[n,r]}(A),V=F[0],x=F[1],U=te(k||L),B=U[0],W=U[1],K=t.useState(!1),z=K[0],G=K[1];function J(){S||!z&&V&&(G(!0),"function"==typeof m&&m())}function Q(e){if(z&&(G(!1),"function"==typeof f)){var t=H(e);f(t)}}function X(){return Q(k)}function ne(e,t){void 0===t&&(t=!0);var a=o(e);_(a),W(a),"time"===V?C(e):V===A?(C(e),t&&Q(e)):x(V?re[V]:void 0)}t.useEffect((function(){k&&ne(k)}),[g,P]);var se=t.useRef(null),le=t.useRef(null);r(le,X);var oe=k&&P?n(k,P,j):"string"==typeof c?c:"",de=I({},b,{ref:se,type:"text",onClick:J,onFocus:J,onChange:function(e){var t=e.target.value,a=ae(t,P,j);a?ne(a,!1):C(t)},onKeyDown:function(e){if(z)switch(e.code){case"Enter":e.preventDefault(),se.current&&se.current.blur(),X();break;case"Escape":se.current&&se.current.blur(),X();break;case"Tab":X()}else switch(e.code){case"ArrowDown":J()}},value:oe}),ie={ref:le,dateFormat:N,timeFormat:T,viewDate:L,setViewDate:_,selectedDate:k,setSelectedDate:ne,viewTimestamp:B,setViewTimestamp:W,formatOptions:j,viewMode:V,setViewMode:x,isValidDate:s,isStatic:D,timeConstraints:M};return D?R.createElement(Z,Object.assign({},de,ie)):R.createElement(R.Fragment,null,R.createElement("input",Object.assign({},de)),z&&R.createElement(a.Popover,{targetRef:se},R.createElement(Z,Object.assign({},ie))))};e.DateTime=ne,e.FORMATS=ee,e.default=ne,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=react-datetime.umd.production.min.js.map