react-semantic-ui-datepickers
Version:
Datepickers built with Semantic UI for React and Dayzed
3 lines (2 loc) • 15.4 kB
JavaScript
;function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("date-fns/is_valid")),n=e(require("format-string-by-pattern")),r=require("react"),a=e(r),o=e(require("react-fast-compare")),l=e(require("date-fns/format")),i=e(require("date-fns/is_before")),s=e(require("date-fns/start_of_day")),c=e(require("date-fns/parse")),d=e(require("dayzed")),u=e(require("date-fns/compare_asc")),p=e(require("date-fns/is_same_day")),f=e(require("classnames")),h=require("semantic-ui-react");function g(){return(g=Object.assign||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}).apply(this,arguments)}function m(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function v(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var y={parse:c},b=function(e,t,n){return!(t&&i(e,t)||n&&i(n,e))},D=function(e,t){var n=new Date;return{date:s(n),selectable:b(n,e,t),selected:!1,today:!0}},O=function(e,t){return e?l(s(e),t):void 0},k=function(e,t){return e?Array.isArray(e)?e.map((function(e){return O(e,t)})).join(" - "):O(e,t):""},w=function(e,t,n){var r=function(e){return e.replace(/[D, Y]/gi,(function(e){return e.toLowerCase()}))}(t);return n?e.split(" - ").map((function(e){return y.parse(e,r,new Date)})).sort((function(e,t){return e>t?1:-1})):y.parse(e,r,new Date)},C=function(e){return void 0===e&&(e=""),e.replace(/[^\d]/g,"")};function E(){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),a=1;a<n;a++)r[a-1]=arguments[a];return t.some((function(t){return t&&t.apply(void 0,[e].concat(r)),e.defaultPrevented}))}}function S(e){return function(t){var n={37:e.left,39:e.right,38:e.up,40:e.down}[t.keyCode];n&&n(t)}}function P(e,t){return 2===e.length&&e[0]<=t&&e[1]>=t}var R=function(e){function t(){var t;return(t=e.apply(this,arguments)||this).state={offset:0},t.rootNode=a.createRef(),t.handleArrowKeys=S({left:function(){t.getKeyOffset(-1)},right:function(){t.getKeyOffset(1)},up:function(){t.getKeyOffset(-7)},down:function(){t.getKeyOffset(7)}}),t.setRootNode=function(e){t.rootNode=e},t.getRootProps=function(e){var n,r=void 0===e?{}:e,a=r.refKey,o=void 0===a?"ref":a,l=v(r,["refKey"]);return g(((n={})[o]=t.setRootNode,n.onKeyDown=t.handleArrowKeys,n),l)},t._handleOffsetChanged=function(e){t.setState({offset:e})},t}m(t,e);var n=t.prototype;return n.getKeyOffset=function(e){if(this.rootNode.current){var t=document.activeElement,n=this.rootNode.current.querySelectorAll("button");n.forEach((function(r,a){var o=a+e;r===t&&(o<=n.length-1&&o>=0?n[o].focus():n[0].focus())}))}},n.componentDidUpdate=function(e){this.props.date!==e.date&&this._handleOffsetChanged(0)},n.render=function(){var e=this,t=this.props,n=t.children,r=v(t,["children"]);return a.createElement(d,Object.assign({},r,{offset:this.state.offset,onOffsetChanged:this._handleOffsetChanged,render:function(t){return n(g({},t,{getRootProps:e.getRootProps}))}}))},t}(a.Component),j=function(e){function t(){var t;return(t=e.apply(this,arguments)||this)._handleOnDateSelected=function(e,n){var r=e.date,a=t.props,o=a.selected,l=a.onChange;if(e.selectable){var i=r;o&&o.getTime()===r.getTime()&&(i=null),l&&l(n,i)}},t}return m(t,e),t.prototype.render=function(){return a.createElement(R,Object.assign({},this.props,{onDateSelected:this._handleOnDateSelected}))},t}(a.Component),x=function(e){function t(){var t;return(t=e.apply(this,arguments)||this).state={hoveredDate:null},t.setHoveredDate=function(e){t.setState((function(t){return t.hoveredDate===e?null:{hoveredDate:e}}))},t.onMouseLeave=function(){t.setHoveredDate(null)},t._handleOnDateSelected=function(e,n){var r=e.date,a=t.props,o=a.selected,l=a.onChange;if(e.selectable){var i=r.getTime(),s=[].concat(o);o.length?1===o.length?o[0].getTime()<i?s.push(r):s.unshift(r):2===s.length&&(s=[r]):s.push(r),l&&l(n,s),2===s.length&&t.setHoveredDate(null)}},t.getEnhancedDateProps=function(e,n,r){var a=r.onMouseEnter,o=r.onFocus,l=v(r,["onMouseEnter","onFocus"]),i=t.state.hoveredDate,s=l.dateObj.date;return e(g({},l,{inRange:P(n,s),start:n[0]&&p(n[0],s),end:n[1]&&p(n[1],s),hovered:i&&p(i,s),onMouseEnter:E(a,(function(){t.onHoverFocusDate(s)})),onFocus:E(o,(function(){t.onHoverFocusDate(s)}))}))},t.getEnhancedRootProps=function(e,n){return e(g({},n,{onMouseLeave:t.onMouseLeave}))},t}m(t,e);var n=t.prototype;return n.onHoverFocusDate=function(e){1===this.props.selected.length&&this.setHoveredDate(e)},n.render=function(){var e=this,t=this.props,n=t.children,r=v(t,["children"]),o=this.state.hoveredDate,l=this.props.selected,i=2!==l.length&&l.length&&o?[l[0],o].sort(u):l;return a.createElement(R,Object.assign({},r,{onDateSelected:this._handleOnDateSelected}),(function(t){var r=t.getRootProps,a=t.getDateProps,o=v(t,["getRootProps","getDateProps"]);return n(g({},o,{getRootProps:e.getEnhancedRootProps.bind(e,r),getDateProps:e.getEnhancedDateProps.bind(e,a,i)}))}))},t}(a.Component);x.defaultProps={selected:[]};var M=function(e){var t=e.icon,n=v(e,["icon"]);return a.createElement(h.Button,Object.assign({basic:!0,compact:!0,icon:t},n))};function I(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&r.firstChild?r.insertBefore(a,r.firstChild):r.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}I(".clndr-cell{background-color:#fff;-webkit-transition:all .2s;transition:all .2s;padding:5px 0;height:30px;cursor:pointer}.clndr-cell:hover{background-color:#cacbcd;color:inherit}.clndr-cell-today{background-color:#e0e1e2}.clndr-cell-inrange{background-color:#cacbcd;color:inherit}.clndr-cell-disabled{cursor:default;opacity:.45}.clndr-cell-disabled:hover{background-color:#fff}.clndr-cell-selected{background-color:#4f4f4f;color:#f2f2f2}.clndr-cell-other-month{color:#d9d9d9}");var B=function(e){var t=e.inRange,n=e.nextMonth,r=e.prevMonth,o=e.selectable,l=e.selected,i=e.today,s=v(e,["end","hovered","inRange","nextMonth","prevMonth","selectable","selected","start","today"]);return a.createElement("span",Object.assign({className:f("clndr-cell",{"clndr-cell-today":i,"clndr-cell-disabled":!o,"clndr-cell-other-month":n||r,"clndr-cell-inrange":t,"clndr-cell-selected":l})},s))};B.defaultProps={end:!1,hovered:!1,inRange:!1,nextMonth:!1,prevMonth:!1,start:!1};var V={marginTop:10},_=function(e){var t=v(e,["end","hovered","inRange","selectable","selected","start","today"]);return a.createElement(h.Button,Object.assign({className:"clndr-button-today",compact:!0,"data-testid":"datepicker-today-button",fluid:!0,style:V},t))};I(".clndr-calendars-segment{text-align:center;position:absolute!important;margin-top:.25rem!important;z-index:2000}.clndr-calendars-wrapper{display:grid;grid-gap:1em;grid-template-columns:repeat(var(--n,1),1fr)}.clndr-control{display:grid;grid-template-columns:repeat(3,1fr);margin-bottom:10px;-webkit-box-align:center;align-items:center}.clndr-days{text-align:center;display:grid;grid-gap:1px;grid-template-columns:repeat(7,2.2rem);background-color:rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.1);border-radius:.28571429rem}.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 q={leftBtn:{textAlign:"start"},rightBtn:{textAlign:"end"}},F={"top left":"clndr-top clndr-left","top right":"clndr-top clndr-right",left:"clndr-left",right:"clndr-right"},N=function(e){var t=e.calendars,n=e.filterDate,o=e.getBackProps,l=e.getDateProps,i=e.getForwardProps,s=e.maxDate,c=e.minDate,d=e.months,u=e.nextMonth,p=e.nextYear,m=e.previousMonth,v=e.previousYear,y=e.showToday,b=e.todayButton,O=e.weekdays;return a.createElement(h.Segment,{className:f("clndr-calendars-segment",F[e.pointing])},a.createElement("div",{className:"clndr-calendars-wrapper",style:{"--n":t.length}},t.map((function(e,s){return a.createElement("div",{key:e.year+"-"+e.month},a.createElement("div",{className:"clndr-control"},a.createElement("div",{style:q.leftBtn},0===s&&a.createElement(r.Fragment,null,a.createElement(M,Object.assign({icon:"angle double left",title:v},o({calendars:t,offset:12}))),a.createElement(M,Object.assign({icon:"angle left",style:{marginRight:0},title:m},o({calendars:t}))))),a.createElement("span",{title:d[e.month]+" "+e.year},d[e.month].slice(0,3)," ",e.year),a.createElement("div",{style:q.rightBtn},s===t.length-1&&a.createElement(r.Fragment,null,a.createElement(M,Object.assign({icon:"angle right",title:u},i({calendars:t}))),a.createElement(M,Object.assign({icon:"angle double right",style:{marginRight:0},title:p},i({calendars:t,offset:12})))))),a.createElement("div",{className:"clndr-days"},O.map((function(t){return a.createElement(B,{key:e.year+"-"+e.month+"-"+t,title:t},t.slice(0,2))})),e.weeks.map((function(t){return t.map((function(t,r){var o=e.year+"-"+e.month+"-"+r;if(!t)return a.createElement(B,{key:o});var i=t.selectable&&n(t.date),s=function(e){if(e)return e.toISOString().slice(0,10)}(t.date);return a.createElement(B,Object.assign({key:o},t,l({dateObj:g({},t,{selectable:i})}),{"data-testid":"datepicker-cell-"+s,selectable:i}),t.date.getDate())}))}))))}))),y&&a.createElement(_,Object.assign({},D(c,s),l({dateObj:D(c,s)})),b))};N.defaultProps={pointing:"left",showToday:!0};var K=function(e){var t=e.icon,n=e.isClearIconVisible,r=e.onClear,o=e.onClick,l=e.value,i=v(e,["icon","isClearIconVisible","onClear","onClick","value"]);return a.createElement(h.Form.Input,Object.assign({"data-testid":"datepicker-input"},i,{icon:a.createElement(h.Icon,{"data-testid":"datepicker-icon",link:!0,name:n?"close":t,onClick:n?r:o}),onClick:o,value:l}))};K.defaultProps={icon:"calendar"};var T={display:"inline-block",position:"relative"},A=["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","transparent","readOnly"],L=function(e){function r(){var r;return(r=e.apply(this,arguments)||this).el=a.createRef(),r.state=r.initialState,r.Component=r.isRangeInput?x:j,r.resetState=function(e){var t=r.props,n=t.onChange;r.setState({isVisible:t.keepOpenOnClear,selectedDate:r.isRangeInput?[]:null,selectedDateFormatted:""},(function(){n(e,g({},r.props,{value:null}))}))},r.mousedownCb=function(e){r.state.isVisible&&r.el&&r.el.current&&!r.el.current.contains(e.target)&&r.close()},r.keydownCb=function(e){27===e.keyCode&&r.state.isVisible&&r.close()},r.close=function(){window.removeEventListener("keydown",r.keydownCb),window.removeEventListener("mousedown",r.mousedownCb),r.setState({isVisible:!1})},r.showCalendar=function(e){e.preventDefault(),window.addEventListener("mousedown",r.mousedownCb),window.addEventListener("keydown",r.keydownCb),r.setState({isVisible:!0})},r.handleRangeInput=function(e,t){var n=r.props,a=n.keepOpenOnSelect,o=n.onChange;if(e&&e.length){var l={selectedDate:e,selectedDateFormatted:k(e,n.format),typedValue:null};r.setState(l,(function(){o(t,g({},r.props,{value:e})),2===e.length&&r.setState({isVisible:a})}))}else r.resetState(t)},r.handleBasicInput=function(e,t){var n=r.props,a=n.keepOpenOnSelect,o=n.onChange,l=n.clearOnSameDateClick;if(e){var i={isVisible:a,selectedDate:e,selectedDateFormatted:k(e,n.format),typedValue:null};r.setState(i,(function(){o(t,g({},r.props,{value:e}))}))}else l?r.resetState(t):r.setState({isVisible:a})},r.handleBlur=function(e){var n=r.props,a=n.format,o=r.state.typedValue;if((0,n.onBlur)(e),o){var l=w(String(o),a,r.isRangeInput);if(r.isRangeInput){if(l.every(t))return void r.handleRangeInput(l,e)}else if(t(l))return void r.handleBasicInput(l,e);r.setState({typedValue:null})}},r.handleChange=function(e,t){var a=t.value,o=r.props,l=o.format,i=o.onChange,s=r.isRangeInput?l+" - "+l:l,c=o.allowOnlyNumbers?C(a):a;c?r.setState({selectedDate:r.isRangeInput?[]:null,selectedDateFormatted:"",typedValue:n(s,c)}):r.setState({selectedDate:r.isRangeInput?[]:null,selectedDateFormatted:"",typedValue:null},(function(){i(e,g({},r.props,{value:null}))}))},r.handleKeyDown=function(e){13===e.keyCode&&r.handleBlur()},r.onDateSelected=function(e,t){r.isRangeInput?r.handleRangeInput(t,e):r.handleBasicInput(t,e)},r}m(r,e);var l,i=r.prototype;return i.componentDidUpdate=function(e){var t=this.props,n=t.locale,r=t.value;o(r,e.value)||this.onDateSelected(void 0,r),n!==e.locale&&this.setState({locale:this.locale})},i.render=function(){var e=this,t=this.state,n=t.isVisible,r=t.locale,o=t.selectedDate,l=t.selectedDateFormatted,i=t.typedValue,s=this.props,c=s.pointing,d=s.filterDate,u=s.readOnly,p=s.datePickerOnly;return a.createElement("div",{className:"field",style:T,ref:this.el},a.createElement(K,Object.assign({},this.inputProps,{isClearIconVisible:Boolean(s.clearable&&l),onBlur:this.handleBlur,onChange:this.handleChange,onClear:this.resetState,onClick:u?null:this.showCalendar,onKeyDown:this.handleKeyDown,value:i||l,readOnly:u||p})),n&&a.createElement(this.Component,Object.assign({},this.dayzedProps,{monthsToDisplay:this.isRangeInput?2:1,onChange:this.onDateSelected,selected:o,date:this.date}),(function(t){return a.createElement(N,Object.assign({},e.dayzedProps,t,r,{filterDate:d,pointing:c,weekdays:e.weekdays}))})))},(l=[{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:k(t,e.format),typedValue:null}}},{key:"dayzedProps",get:function(){return e=A,t=g({},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={},A.forEach((function(n){t[n]=e[n]})),t);return g({},n,{placeholder:n.placeholder||this.props.format})}},{key:"date",get:function(){var e=this.state.selectedDate,t=this.props.date;return e?this.isRangeInput?e[0]:e||t:t}},{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,l),r}(a.Component);L.defaultProps={allowOnlyNumbers:!1,clearOnSameDateClick:!0,clearable:!0,date:void 0,filterDate:function(){return!0},firstDayOfWeek:0,format:"YYYY-MM-DD",id:void 0,keepOpenOnClear:!1,keepOpenOnSelect:!1,label:void 0,locale:"en-US",name:void 0,onBlur:function(){},onChange:function(){},placeholder:null,pointing:"left",readOnly:!1,datePickerOnly:!1,required:!1,showOutsideDays:!1,type:"basic",value:null},exports.default=L;
//# sourceMappingURL=react-semantic-ui-datepickers.cjs.production.min.js.map