react-wheel-datepicker-ts
Version:
react based date picker like native
1 lines • 13.4 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("react-dom")):"function"==typeof define&&define.amd?define(["react","react-dom"],t):"object"==typeof exports?exports.reactMobileDatePickerTs=t(require("react"),require("react-dom")):e.reactMobileDatePickerTs=t(e.React,e.ReactDOM)}(this,(k,P)=>(()=>{"use strict";var n={244:e=>{e.exports=k},741:e=>{e.exports=P}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;t=r[e]={exports:{}};return n[e](t,t.exports,o),t.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var e={};{o.r(e),o.d(e,{Direction:()=>N,Themes:()=>S,dateConfigMap:()=>w,default:()=>h});var N,t,Y=o(244),I=o.n(Y),S=((t=N=N||{})[t.UP=1]="UP",t[t.DOWN=-1]="DOWN",["default","dark","ios","android","android-dark"]),w={year:{format:"YYYY",caption:"Year",step:1,type:"year"},month:{format:"M",caption:"Mon",step:1,type:"month"},date:{format:"D",caption:"Day",step:1,type:"date"},hour:{format:"hh",caption:"Hour",step:1,type:"hour"},minute:{format:"mm",caption:"Min",step:1,type:"minute"},second:{format:"hh",caption:"Sec",step:1,type:"second"}};function a(e){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function C(e){return"targetTouches"in e&&!!e.targetTouches[0]}var O=function(e){return"string"==typeof e&&w.hasOwnProperty(e)},T=function(e){return!!(t=e)&&"object"===a(t)&&"string"==typeof e.type&&O(e.type);var t};function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],i=!0,c=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){c=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(c)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Map"===(n="Object"===n&&e.constructor?e.constructor.name:n)||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function u(e){if("[object Date]"!==Object.prototype.toString.call(e))throw new Error("Invalid Date")}function U(e,n){var r=n,t={"M+":e.getMonth()+1,"D+":e.getDate(),"h+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds()};return/(Y+)/.test(n)&&(r=r.replace(RegExp.$1,e.getFullYear().toString().substr(4-RegExp.$1.length))),Object.entries(t).map(function(e){var e=i(e,2),t=e[0],e=e[1];new RegExp("(".concat(t,")")).test(n)&&(r=r.replace(RegExp.$1,1===RegExp.$1.length?"".concat(e):"00".concat(e).substr(e.toString().length)))}),r}function E(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return u(e),new Date(e.getTime()+24*t*60*60*1e3)}var R={year:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return u(e),new Date(e.getFullYear()+t,e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds())},month:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=(u(e),e.getFullYear()),t=e.getMonth()+t,r=Math.min(e.getDate(),new Date(n,t+1,0).getDate());return new Date(n,t,r,e.getHours(),e.getMinutes(),e.getSeconds())},date:E,hour:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return u(e),new Date(e.getTime()+60*t*60*1e3)},minute:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return u(e),new Date(e.getTime()+60*t*1e3)},second:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return u(e),new Date(e.getTime()+1e3*t)}};function $(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],i=!0,c=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){c=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(c)throw o}}return a}}(e,t)||l(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function F(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||l(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Map"===(n="Object"===n&&e.constructor?e.constructor.name:n)||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function H(e){var n=e.step,r=e.type,o=e.value;return Array.apply(void 0,F(Array(p))).map(function(e,t){return R[r](o,(t-W)*n)})}function f(e){function t(e){v.current=(C(e)?e.targetTouches[0]:e).pageY,g.current=T,b.current=0}function n(e){var e=(C(e)?e.targetTouches[0]:e).pageY-v.current,t=g.current+e,e=0<e?N.DOWN:N.UP,n=D[W];n.getTime()<l.getTime()||n.getTime()>s.getTime()||(k(e,t)&&(b.current+=e,x(e)),E(t))}function r(e){e=0<(C(e)?e.changedTouches[0]:e).pageY-v.current?N.UP:N.DOWN,P(e)}function o(e){e.preventDefault(),d||("touchstart"===e.type?t(e):"touchmove"===e.type?n(e):"touchend"===e.type&&r(e))}function a(e){d||n(e)}function i(e){d||(w(!1),r(e))}var c=e.type,u=e.value,l=e.min,s=e.max,f=e.format,p=e.step,m=e.onSelect,d=(e=$((0,Y.useState)(!1),2))[0],y=e[1],v=(0,Y.useRef)(0),g=(0,Y.useRef)(0),h=(0,Y.useRef)(W),b=(0,Y.useRef)(0),S=(e=$((0,Y.useState)(!1),2))[0],w=e[1],O=(0,Y.useRef)(),T=(e=$((0,Y.useState)(q),2))[0],E=e[1],D=(e=$((0,Y.useState)(H({step:p,type:c,value:u})),2))[0],j=e[1],M=(e=$((0,Y.useState)(0),2))[0],A=e[1],x=((0,Y.useEffect)(function(){return function(){O.current&&clearTimeout(O.current)}},[O]),(0,Y.useEffect)(function(){h.current=W,E(q),A(0),j(H({step:p,type:c,value:u}))},[p,c,u]),function(e){e===N.UP?(h.current++,j([].concat(F(D.slice(1)),[R[c](D[D.length-1],p)]))):(h.current--,j([R[c](D[0],-p)].concat(F(D.slice(0,D.length-1))))),A(40*(h.current-W))}),k=function(e,t){return e===N.UP?40*h.current+20<-t:40*h.current-20>-t},P=function(e){var t=D[W];e===N.UP&&t.getTime()<l.getTime()&&b.current?x(N.UP):e===N.DOWN&&t.getTime()>s.getTime()&&b.current&&x(N.DOWN),e=h.current,y(!0),E(40*-e),O.current=setTimeout(function(){y(!1),m(D[W])},200)},e=((0,Y.useEffect)(function(){if(S)return document.addEventListener("mousemove",a),document.addEventListener("mouseup",i),function(){document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",i)}},[S,a,i]),(0,Y.useCallback)(function(e,t){var n=e<l||s<e?"disabled":"",r=(r=f)&&"[object Function]"===Object.prototype.toString.apply(r)?f(e):U(e,f);return I().createElement("li",{key:"".concat(t),className:n},r)},[l,s,f])),M={"--margin-top":M,"--translate-y":T};return I().createElement("div",{className:"datepicker-col-1"},I().createElement("div",{className:"datepicker-viewport",onTouchStart:o,onTouchMove:o,onTouchEnd:o,onMouseDown:function(e){e.stopPropagation(),d||(w(!0),t(e))}},I().createElement("div",{className:"datepicker-wheel"},I().createElement("div",{className:"datepicker-scroll ".concat(d?"active":""),style:M},D.map(e)))))}var p=10,W=Math.floor(p/2),q=-40*W;const D=I().memo(f,function(e,t){return e.value.getTime()===t.value.getTime()});function j(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],i=!0,c=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){c=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(c)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Map"===(n="Object"===n&&e.constructor?e.constructor.name:n)||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}const g=function(e){function t(){v&&v(h)}function n(e){b(e),g&&g(e)}var r,o=e.theme,o=void 0===o?"default":o,a=e.value,i=void 0===a?new Date:a,a=e.min,c=void 0===a?new Date(1970,0,1):a,a=e.max,u=void 0===a?new Date(2050,0,1):a,a=e.showFooter,a=void 0===a||a,l=e.showHeader,l=void 0===l||l,s=e.showCaption,s=void 0!==s&&s,f=e.dateConfig,f=void 0===f?[{format:"YYYY",caption:"Year",type:"year",step:1},{format:"M",caption:"Mon",type:"month",step:1},{format:"D",caption:"Day",type:"date",step:1}]:f,p=e.headerFormat,p=void 0===p?"YYYY/MM/DD":p,m=e.confirmText,m=void 0===m?"Done":m,d=e.cancelText,d=void 0===d?"Cancel":d,y=e.customHeader,v=e.onSelect,g=e.onChange,e=j((0,Y.useState)(E(i)),2),h=e[0],b=e[1],e=((0,Y.useEffect)(function(){b(function(e){return e.getTime()!==i.getTime()?new Date(i):e})},[i]),(0,Y.useEffect)(function(){h.getTime()>u.getTime()&&b(new Date(u)),h.getTime()<c.getTime()&&b(new Date(c))},[h,c,u]),f.map(function(e){if(O(e))return Object.assign(Object.assign({},w[e]),{type:e});var t;if(T(e))return t=e.type,Object.assign(Object.assign(Object.assign({},w[t]),e),{type:t});throw new Error("invalid dateConfig")}));return I().createElement("div",{className:"datepicker ".concat("string"!=typeof(r=o)||!S.find(function(e){return e===r})?"default":o)},l&&I().createElement("div",{className:"datepicker-header"},y||U(h,p)),s&&I().createElement("div",{className:"datepicker-caption"},e.map(function(e,t){return I().createElement("div",{key:t,className:"datepicker-caption-item"},e.caption)})),I().createElement("div",{className:"datepicker-content"},e.map(function(e,t){return I().createElement(D,{key:t,value:h,min:c,max:u,step:e.step,type:e.type,format:e.format,onSelect:n})})),a&&I().createElement("div",{className:"datepicker-navbar"},I().createElement("button",{className:"datepicker-navbar-btn",onClick:t},m),I().createElement("button",{className:"datepicker-navbar-btn",onTouchStart:t,onMouseUp:t},d)))};var b=o(741);function M(e){var t=e.isOpen,e=e.children,n="undefined"!=typeof window?document.body:null;return void 0!==t&&t&&n&&e?b.createPortal(Y.createElement("div",{className:"datepicker-modal"},e),n):null}function A(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],i=!0,c=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){c=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(c)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Map"===(n="Object"===n&&e.constructor?e.constructor.name:n)||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function x(e){function t(e){e.target===e.currentTarget&&r&&i(!0)}var n=void 0!==(n=e.isOpen)&&n,r=e.onCancel,e=v(e,["isOpen","onCancel"]),o=A(Y.useState(!1),2),a=o[0],i=o[1];return n?Y.createElement("div",{role:"presentation",onMouseDown:t,onTouchStart:t,onClick:function(e){a&&e.target===e.currentTarget&&r&&i(!1)},className:"datepicker-modal"},Y.createElement(g,Object.assign({},e))):null}function y(e){var t=void 0===(t=e.isPopup)||t,n=void 0!==(n=e.isOpen)&&n,e=v(e,["isPopup","isOpen"]);return t?Y.createElement(M,{isOpen:n},Y.createElement(x,Object.assign({},e,{isOpen:n}))):Y.createElement(g,Object.assign({},e))}var v=function(e,t){var n={};for(o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n};y.displayName="MobileDatePicker";const h=y}return e})());