UNPKG

react-semantic-ui-datepickers

Version:
3 lines (2 loc) 18.8 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("date-fns/isValid"),n=require("format-string-by-pattern"),r=require("react"),o=require("react-fast-compare"),a=require("@date-fns/upgrade/v2/convertTokens"),l=require("date-fns/format"),i=require("date-fns/isBefore"),c=require("date-fns/parse"),s=require("date-fns/startOfDay"),d=require("dayzed"),u=require("date-fns/compareAsc"),f=require("date-fns/isSameDay"),p=require("classnames"),h=require("semantic-ui-react");function g(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var v=g(t),y=g(n),m=g(r),b=g(o),D=g(l),k=g(i),x=g(c),C=g(s),O=g(d),w=g(u),j=g(f),R=g(p);function S(){return S=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},S.apply(this,arguments)}function I(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,P(e,t)}function P(e,t){return P=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},P(e,t)}function M(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)t.indexOf(n=a[r])>=0||(o[n]=e[n]);return o}var F=function(e,t,n){return!(t&&k.default(e,t)||n&&k.default(n,e))},V=function(e,t){var n=new Date;return{date:C.default(n),nextMonth:!1,prevMonth:!1,selectable:F(n,e,t),selected:!1,today:!0}},q=function(e,t,n){return e?D.default(C.default(e),a.convertTokens(t),n):void 0},E=function(e,t,n){return e?Array.isArray(e)?e.map((function(e){return q(e,t,n)})).join(" - "):q(e,t,n):""},B=function(e){return e.replace(/[D, Y]/gi,(function(e){return e.toLowerCase()}))},A=function(e,t){return x.default(e,B(t),new Date)},N=function(e,t){var n=B(t);return e.split(" - ").map((function(e){return x.default(e,n,new Date)})).sort((function(e,t){return e>t?1:-1}))},K=function(e){return void 0===e&&(e=""),e.replace(/[^\d]/g,"")};function T(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return t.some((function(t){return t&&t.apply(void 0,[e].concat(r)),e.defaultPrevented}))}}function _(e){return function(t){var n={37:e.left,39:e.right,38:e.up,40:e.down}[t.keyCode];n&&n(t)}}function L(e,t){return 2===e.length&&e[0]<=t&&e[1]>=t}var z=["refKey"],H=["children"],Y=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(e=t.call.apply(t,[this].concat(r))||this).state={offset:0},e.rootNode=m.default.createRef(),e.handleArrowKeys=_({left:function(){return e.getKeyOffset(-1)},right:function(){return e.getKeyOffset(1)},up:function(){return e.getKeyOffset(-7)},down:function(){return e.getKeyOffset(7)}}),e.getRootProps=function(t){var n,r=void 0===t?{}:t,o=r.refKey,a=void 0===o?"ref":o,l=M(r,z);return S(((n={})[a]=e.rootNode,n.onKeyDown=e.handleArrowKeys,n),l)},e._handleOffsetChanged=function(t){e.setState({offset:t})},e}I(n,t);var r=n.prototype;return r.getKeyOffset=function(e){if(this.rootNode.current){var t=document.activeElement,n=Array.from(this.rootNode.current.querySelectorAll("button:not(:disabled)"));n.some((function(r,o){var a=o+e;return r===t&&(a<=n.length-1&&a>=0?(n[a].focus(),!0):(n[0].focus(),!0))}))}},r.componentDidUpdate=function(e){this.props.date!==e.date&&this._handleOffsetChanged(0)},r.render=function(){var t=this,n=this.props,r=n.children,o=M(n,H);return e.jsx(O.default,S({},o,{offset:this.state.offset,onOffsetChanged:this._handleOffsetChanged,render:function(e){return r(S({},e,{getRootProps:t.getRootProps}))}}))},n}(m.default.Component),U=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(e=t.call.apply(t,[this].concat(r))||this)._handleOnDateSelected=function(t,n){var r=t.date,o=e.props,a=o.clearOnSameDateClick,l=o.selected,i=o.onChange;if(t.selectable){var c=r;l&&l.getTime()===r.getTime()&&a&&(c=null),i&&i(n,c)}},e}return I(n,t),n.prototype.render=function(){return e.jsx(Y,S({},this.props,{onDateSelected:this._handleOnDateSelected}))},n}(m.default.Component),W=["onMouseEnter","onFocus"],G=["children"],J=["getRootProps","getDateProps"],Q=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(e=t.call.apply(t,[this].concat(r))||this).state={hoveredDate:null},e.setHoveredDate=function(t){e.setState((function(e){return e.hoveredDate===t?null:{hoveredDate:t}}))},e.onMouseLeave=function(){e.setHoveredDate(null)},e._handleOnDateSelected=function(t,n){var r=t.date,o=e.props,a=o.selected,l=o.onChange;if(t.selectable){var i=r.getTime(),c=[].concat(a);a.length?1===a.length?a[0].getTime()<i?c.push(r):c.unshift(r):2===c.length&&(c=[r]):c.push(r),l&&l(n,c),2===c.length&&e.setHoveredDate(null)}},e.getEnhancedDateProps=function(t,n,r){var o=r.onMouseEnter,a=r.onFocus,l=M(r,W),i=e.state.hoveredDate,c=l.dateObj.date;return t(S({},l,{inRange:L(n,c),start:n[0]&&j.default(n[0],c),end:n[1]&&j.default(n[1],c),hovered:i&&j.default(i,c),onMouseEnter:T(o,(function(){e.onHoverFocusDate(c)})),onFocus:T(a,(function(){e.onHoverFocusDate(c)}))}))},e.getEnhancedRootProps=function(t,n){return t(S({},n,{onMouseLeave:e.onMouseLeave}))},e}I(n,t);var r=n.prototype;return r.onHoverFocusDate=function(e){1===this.props.selected.length&&this.setHoveredDate(e)},r.render=function(){var t=this,n=this.props,r=n.children,o=M(n,G),a=this.state.hoveredDate,l=this.props.selected,i=2!==l.length&&l.length&&a?[l[0],a].sort(w.default):l;return e.jsx(Y,S({},o,{onDateSelected:this._handleOnDateSelected,children:function(e){var n=e.getRootProps,o=e.getDateProps,a=M(e,J);return r(S({},a,{getRootProps:t.getEnhancedRootProps.bind(t,n),getDateProps:t.getEnhancedDateProps.bind(t,o,i)}))}}))},n}(m.default.Component);Q.defaultProps={selected:[]};var X=["icon"],Z=function(t){var n=t.icon,r=M(t,X);return e.jsx(h.Button,S({basic:!0,compact:!0,icon:n,type:"button"},r))};function $(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}$(".clndr-cell{background-color:#fff;border:none;color:inherit;cursor:pointer;font-family:inherit;height:30px;padding:5px 0;transition:all .2s}.clndr-cell.inverted{background-color:#4f4f4f}.clndr-cell.inverted:hover{background-color:#757575;color:inherit}.clndr-cell:hover{background-color:#cacbcd;color:inherit}.clndr-cell-today{background-color:#e0e1e2}.clndr-cell-inrange{background-color:#cacbcd;color:inherit}.clndr-cell-inrange.inverted{background-color:#757575;color:inherit}.clndr-cell-disabled{cursor:default;opacity:.45}.clndr-cell-disabled:hover{background-color:#fff}.clndr-cell-disabled.inverted:hover{background-color:#4f4f4f;color:inherit}.clndr-cell-selected{background-color:#4f4f4f;color:#f2f2f2}.clndr-cell-selected.inverted{background-color:#fff;color:#000}.clndr-cell-other-month{color:#d9d9d9}.clndr-cell-other-month.inverted{color:#a6a6a6}");var ee=["children","end","hovered","inRange","inverted","nextMonth","prevMonth","selectable","selected","start","today"],te=function(t){var n=t.children,r=t.inRange,o=t.inverted,a=t.nextMonth,l=t.prevMonth,i=t.selectable,c=t.selected,s=t.today,d=M(t,ee),u=R.default("clndr-cell",{inverted:o,"clndr-cell-today":s,"clndr-cell-disabled":!i,"clndr-cell-other-month":a||l,"clndr-cell-inrange":r,"clndr-cell-selected":c});return n?e.jsx("button",S({className:u,disabled:!i,type:"button"},d,{children:n})):e.jsx("span",S({className:u,tabIndex:n?0:-1},d,{children:n}))};te.defaultProps={end:!1,hovered:!1,inRange:!1,nextMonth:!1,prevMonth:!1,start:!1};var ne=["aria-label","children","end","hovered","inRange","nextMonth","prevMonth","selectable","selected","start","today"],re={marginTop:10},oe=function(t){var n=t["aria-label"],r=t.children,o=M(t,ne);return e.jsx(h.Button,S({"aria-label":n+", "+r,className:"clndr-button-today",compact:!0,"data-testid":"datepicker-today-button",fluid:!0,style:re,type:"button"},o,{children:r}))};$(".clndr-calendars-segment{margin-bottom:.25rem!important;margin-top:.25rem!important;text-align:center}.clndr-calendars-segment.clndr-floating{position:absolute!important;z-index:2000}.clndr-calendars-wrapper{grid-gap:1em;display:grid;grid-template-columns:repeat(var(--n,1),1fr)}.clndr-control{align-items:center;display:grid;grid-template-columns:repeat(3,1fr);margin-bottom:10px}.clndr-days{grid-gap:1px;background-color:rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.1);border-radius:.28571429rem;display:grid;grid-template-columns:repeat(7,minmax(2.2rem,1fr));overflow:hidden;text-align:center}.clndr-left{left:0}.clndr-right{right:0}.clndr-top{bottom:100%}.clndr-bottom{top:100%}.clndr-calendars-segment.clndr-top{box-shadow:0 -1px 2px 0 rgba(34,36,38,.15)!important;margin-bottom:.25rem!important}");var ae=["ref"],le={leftBtn:{textAlign:"start"},rightBtn:{textAlign:"end"}},ie={"top left":"clndr-top clndr-left","top right":"clndr-top clndr-right",left:"clndr-left",right:"clndr-right"},ce=function(t){var n,o=t.calendars,a=t.filterDate,l=t.getBackProps,i=t.getDateProps,c=t.getForwardProps,s=t.inline,d=t.inverted,u=t.maxDate,f=t.minDate,p=t.months,g=t.nextMonth,v=t.nextYear,y=t.previousMonth,m=t.previousYear,b=t.showToday,k=t.todayButton,x=t.weekdays,C=t.pointing,O=(0,t.getRootProps)(),w=O.ref,j=M(O,ae),I=r.useRef(),P=function(e){I.current=e.target.getAttribute("aria-label")};return r.useEffect((function(){if(I.current){var e=document.querySelector('[aria-label="'+I.current+'"]');e&&document.activeElement!==e&&e.focus()}})),e.jsx(h.Ref,{innerRef:w,children:e.jsxs(h.Segment,S({},j,{inverted:d,className:R.default("clndr-calendars-segment",(n={"clndr-floating":!s},n[ie[C]]=!s,n)),children:[e.jsx("div",{className:"clndr-calendars-wrapper",style:{"--n":o.length},children:o.map((function(t,n){return e.jsxs("div",{children:[e.jsxs("div",{className:"clndr-control",children:[e.jsx("div",{style:le.leftBtn,children:0===n&&e.jsxs(r.Fragment,{children:[e.jsx(Z,S({icon:"angle double left",inverted:d,title:m,type:"button"},l({calendars:o,"aria-label":m,offset:12,onClick:P}))),e.jsx(Z,S({icon:"angle left",inverted:d,style:{marginRight:0},title:y,type:"button"},l({calendars:o,"aria-label":y,onClick:P})))]})}),e.jsxs("span",{title:p[t.month]+" "+t.year,children:[p[t.month].slice(0,3)," ",t.year]}),e.jsx("div",{style:le.rightBtn,children:n===o.length-1&&e.jsxs(r.Fragment,{children:[e.jsx(Z,S({icon:"angle right",inverted:d,title:g,type:"button"},c({calendars:o,"aria-label":g,onClick:P}))),e.jsx(Z,S({icon:"angle double right",inverted:d,style:{marginRight:0},title:v,type:"button"},c({calendars:o,"aria-label":v,offset:12,onClick:P})))]})})]}),e.jsxs("div",{className:"clndr-days",children:[x.map((function(n){return e.jsx(te,{inverted:d,"aria-label":n,title:n,children:n.slice(0,2)},t.year+"-"+t.month+"-"+n)})),t.weeks.map((function(n){return n.map((function(n,r){var o=t.year+"-"+t.month+"-"+r;if(!n)return e.jsx(te,{inverted:d},o);var l=n.selectable&&a(n.date),c=function(e){if(e)return D.default(e,"yyyy-MM-dd")}(n.date);return e.jsx(te,S({},n,i({dateObj:S({},n,{selectable:l}),onClick:P}),{"data-testid":"datepicker-cell-"+c,inverted:d,selectable:l,children:n.date.getDate()}),o)}))}))]})]},t.year+"-"+t.month)}))}),b?e.jsx(oe,S({inverted:d},V(f,u),i({dateObj:V(f,u),onClick:P}),{children:k})):null]}))})},se=function(t){var n=t.clearIcon,r=t.icon,o=t.isClearIconVisible,a=t.onClear,l=t.onClick;return o&&n&&m.default.isValidElement(n)?m.default.cloneElement(n,{"data-testid":"datepicker-clear-icon",onClick:a}):o&&n&&!m.default.isValidElement(n)?e.jsx(h.Icon,{"aria-pressed":"false","data-testid":"datepicker-clear-icon",link:!0,name:n,onClick:a}):r&&m.default.isValidElement(r)?m.default.cloneElement(r,{"data-testid":"datepicker-icon",onClick:l}):e.jsx(h.Icon,{"data-testid":"datepicker-icon",name:r})},de=["clearIcon","error","icon","isClearIconVisible","label","onClear","onFocus","required","value"],ue={"data-testid":"datepicker-input"},fe=m.default.forwardRef((function(t,n){var r=t.clearIcon,o=t.error,a=t.icon,l=t.isClearIconVisible,i=t.label,c=t.onClear,s=t.onFocus,d=t.required,u=t.value,f=M(t,de);return e.jsxs(h.Form.Field,{error:o,required:d,children:[i?e.jsx("label",{htmlFor:f.id,children:i}):null,e.jsx(h.Input,S({},f,{ref:n,error:o,required:d,icon:e.jsx(se,{clearIcon:r,icon:a,isClearIconVisible:l,onClear:c,onClick:s}),input:ue,onFocus:s,value:u}))]})})),pe={display:"inline-block",position:"relative"},he=["autoComplete","autoFocus","className","clearIcon","disabled","error","icon","iconPosition","id","label","loading","name","onBlur","onChange","onClick","onContextMenu","onDoubleClick","onFocus","onInput","onKeyDown","onKeyPress","onKeyUp","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","placeholder","required","size","tabIndex","transparent","readOnly"],ge=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(e=t.call.apply(t,[this].concat(r))||this).el=m.default.createRef(),e.inputRef=m.default.createRef(),e.state=e.initialState,e.Component=e.isRangeInput?Q:U,e.resetState=function(t){var n=e.props,r=n.keepOpenOnClear,o=n.onChange,a={isVisible:r,selectedDate:e.isRangeInput?[]:null,selectedDateFormatted:""};r&&e.focusOnInput(),e.setState(a,(function(){o(t,S({},e.props,{value:null}))}))},e.clearInput=function(t){e.resetState(t)},e.mousedownCb=function(t){e.state.isVisible&&e.el&&e.el.current&&!e.el.current.contains(t.target)&&e.close()},e.keydownCb=function(t){27===t.keyCode&&e.state.isVisible&&e.close()},e.close=function(){window.removeEventListener("keydown",e.keydownCb),window.removeEventListener("mousedown",e.mousedownCb),e.setState({isVisible:!1})},e.focusOnInput=function(){var t;if(null!=(t=e.inputRef)&&t.current){var n=e.inputRef.current;document.activeElement!==n.inputRef.current&&(0,n.focus)()}},e.showCalendar=function(t){(0,e.props.onFocus)(t),window.addEventListener("mousedown",e.mousedownCb),window.addEventListener("keydown",e.keydownCb),e.focusOnInput(),e.setState({isVisible:!0})},e.handleRangeInput=function(t,n){var r=e.props,o=r.keepOpenOnSelect,a=r.onChange;if(t&&t.length){var l={selectedDate:t,selectedDateFormatted:E(t,r.format,r.formatOptions),typedValue:null};e.setState(l,(function(){a(n,S({},e.props,{value:t})),2===t.length&&e.setState({isVisible:o})}))}else e.resetState(n)},e.handleBasicInput=function(t,n){var r=e.props,o=r.onChange;if(t){var a={isVisible:r.keepOpenOnSelect,selectedDate:t,selectedDateFormatted:E(t,r.format,r.formatOptions),typedValue:null};e.setState(a,(function(){o(n,S({},e.props,{value:t}))}))}else e.resetState(n)},e.handleBlur=function(t){var n=e.props,r=n.format,o=n.onChange,a=e.state.typedValue;if(t&&(0,n.onBlur)(t),a){if(e.isRangeInput){var l=N(String(a),r);if(l.every(v.default))return void e.handleRangeInput(l,t)}else{var i=A(String(a),r);if(v.default(i))return void e.handleBasicInput(i,t)}e.setState({typedValue:null},(function(){o(t,S({},e.props,{value:null}))}))}},e.handleChange=function(t,n){var r=n.value,o=e.props,a=o.format,l=o.onChange,i=e.isRangeInput?a+" - "+a:a,c=o.allowOnlyNumbers?K(r):r;c?e.setState({selectedDate:e.isRangeInput?[]:null,selectedDateFormatted:"",typedValue:y.default(i,c)}):e.setState({selectedDate:e.isRangeInput?[]:null,selectedDateFormatted:"",typedValue:null},(function(){l(t,S({},e.props,{value:null}))}))},e.handleKeyDown=function(t){13===t.keyCode&&e.handleBlur()},e.onDateSelected=function(t,n){e.isRangeInput?e.handleRangeInput(n,t):e.handleBasicInput(n,t)},e}I(n,t);var r,o,a=n.prototype;return a.componentDidUpdate=function(e){var t=this.props,n=t.locale,r=t.value;b.default(r,e.value)||this.onDateSelected(void 0,r),n!==e.locale&&this.setState({locale:this.locale})},a.render=function(){var t=this,n=this.state,r=n.isVisible,o=n.locale,a=n.selectedDateFormatted,l=n.typedValue,i=this.props,c=i.clearable,s=i.pointing,d=i.filterDate,u=i.inline,f=i.inverted,p=i.readOnly,h=i.datePickerOnly,g=e.jsx(this.Component,S({},this.dayzedProps,{monthsToDisplay:this.isRangeInput?2:1,onChange:this.onDateSelected,selected:n.selectedDate,date:this.date,children:function(n){return e.jsx(ce,S({},t.dayzedProps,n,o,{filterDate:d,inverted:f,pointing:s,weekdays:t.weekdays}))}}));return u?g:e.jsxs("div",{className:"field",style:pe,ref:this.el,children:[e.jsx(fe,S({},this.inputProps,{isClearIconVisible:Boolean(c&&a),onBlur:this.handleBlur,onChange:this.handleChange,onClear:this.clearInput,onFocus:p?null:this.showCalendar,onKeyDown:this.handleKeyDown,readOnly:p||h,ref:this.inputRef,value:l||a})),r&&g]})},r=n,(o=[{key:"isRangeInput",get:function(){return"range"===this.props.type}},{key:"initialState",get:function(){var e=this.props,t=e.value;return{isVisible:!1,locale:this.locale,selectedDate:t||(this.isRangeInput?[]:null),selectedDateFormatted:E(t,e.format,e.formatOptions),typedValue:null}}},{key:"dayzedProps",get:function(){return e=he,t=S({},this.props),e.forEach((function(e){return delete t[e]})),t;var e,t}},{key:"inputProps",get:function(){var e,t,n=(e=this.props,t={},he.forEach((function(n){t[n]=e[n]})),t);return S({},n,{placeholder:void 0!==n.placeholder?n.placeholder:this.props.format})}},{key:"date",get:function(){var e=this.state.selectedDate,t=this.props.date;return t||!e?t:this.isRangeInput?e[0]:e}},{key:"locale",get:function(){var e,t=this.props.locale;try{e=require("./locales/"+t+".json")}catch(n){console.warn('"'+t+'" is not a valid locale'),e=require("./locales/en-US.json")}return e}},{key:"weekdays",get:function(){var e,t;return(t=this.state.locale.weekdays).slice(e=this.dayzedProps.firstDayOfWeek).concat(t.slice(0,e))}}])&&function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(r.prototype,o),Object.defineProperty(r,"prototype",{writable:!1}),n}(m.default.Component);ge.defaultProps={allowOnlyNumbers:!1,autoFocus:!1,clearIcon:"close",clearOnSameDateClick:!0,clearable:!0,date:void 0,filterDate:function(){return!0},firstDayOfWeek:0,format:"YYYY-MM-DD",icon:"calendar",id:void 0,inline:!1,keepOpenOnClear:!1,keepOpenOnSelect:!1,label:void 0,locale:"en-US",name:void 0,onBlur:function(){},onChange:function(){},onFocus:function(){},placeholder:void 0,pointing:"left",readOnly:!1,datePickerOnly:!1,required:!1,showToday:!0,showOutsideDays:!1,type:"basic",value:null,inverted:!1},exports.default=ge; //# sourceMappingURL=react-semantic-ui-datepickers.cjs.production.min.js.map