UNPKG

daycy

Version:

Simple date (range) picker for React based on Semantic-UI.

1 lines 8.45 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports["default"]=void 0;var _react=_interopRequireWildcard(require("react")),_propTypes=_interopRequireDefault(require("prop-types")),_semanticUiReact=require("semantic-ui-react"),_luxon=require("luxon"),_translate2=require("./translate");function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function _getRequireWildcardCache(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(_getRequireWildcardCache=function(a){return a?c:b})(a)}function _interopRequireWildcard(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!==_typeof(a)&&"function"!=typeof a)return{default:a};var c=_getRequireWildcardCache(b);if(c&&c.has(a))return c.get(a);var d={},e=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in a)if("default"!=f&&Object.prototype.hasOwnProperty.call(a,f)){var g=e?Object.getOwnPropertyDescriptor(a,f):null;g&&(g.get||g.set)?Object.defineProperty(d,f,g):d[f]=a[f]}return d["default"]=a,c&&c.set(a,d),d}function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _inherits(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function");a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),Object.defineProperty(a,"prototype",{writable:!1}),b&&_setPrototypeOf(a,b)}function _setPrototypeOf(a,b){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(a,b){return a.__proto__=b,a},_setPrototypeOf(a,b)}function _createSuper(a){var b=_isNativeReflectConstruct();return function(){var c,d=_getPrototypeOf(a);if(b){var e=_getPrototypeOf(this).constructor;c=Reflect.construct(d,arguments,e)}else c=d.apply(this,arguments);return _possibleConstructorReturn(this,c)}}function _possibleConstructorReturn(a,b){if(b&&("object"===_typeof(b)||"function"==typeof b))return b;if(void 0!==b)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(a)}function _assertThisInitialized(a){if(void 0===a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return a}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(a){return!1}}function _getPrototypeOf(a){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(a){return a.__proto__||Object.getPrototypeOf(a)},_getPrototypeOf(a)}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}var POINTER_LENGTH={hour:"2.5rem",minute:"3.5rem"},POINTER_WIDTH={hour:6,minute:4},PERIODS=["am","pm"];function range(a,b){var c=2<arguments.length&&arguments[2]!==void 0?arguments[2]:1;b===void 0&&(b=a,a=0);for(var d=[],e=a;e<b;e+=c)d.push(e);return d}var Clock=/*#__PURE__*/function(a){var b=Math.sin,c=Math.cos,d=Math.PI;function e(){var a;_classCallCheck(this,e);for(var b=arguments.length,c=Array(b),d=0;d<b;d++)c[d]=arguments[d];return a=f.call.apply(f,[this].concat(c)),_defineProperty(_assertThisInitialized(a),"state",{period:"am",hour:null,hourHover:null,lastHourHover:12,minuteHover:null,lastMinuteHover:60}),a.renderHour=a.renderHour.bind(_assertThisInitialized(a)),a.renderMinute=a.renderMinute.bind(_assertThisInitialized(a)),a.renderPeriod=a.renderPeriod.bind(_assertThisInitialized(a)),a}_inherits(e,a);var f=_createSuper(e);return _createClass(e,[{key:"translate",value:function translate(){return(this.props.translate||_translate2.translate).apply(void 0,arguments)}},{key:"onChange",value:function(a){var b=this.props,c=b.value,d=b.onChange;c&&(a=a.set({year:c.year,month:c.month,day:c.day})),d(a)}},{key:"renderHour",value:function renderHour(a){var e=this,f=this.state,g=f.hour,h=f.period,i=["button"];null!==g&&i.push("small"),a===g&&i.push("selected");var j=2*d*(a-3)/12;return/*#__PURE__*/_react["default"].createElement("div",{key:a,className:i.join(" "),style:{left:"".concat(6+6*c(j),"rem"),top:"".concat(6+6*b(j),"rem"),transformOrigin:"".concat(-6*c(j),"rem ").concat(-6*b(j),"rem")},onMouseEnter:function onMouseEnter(){return e.setState({hourHover:a})},onMouseLeave:function onMouseLeave(){return e.setState({hourHover:null,lastHourHover:a})},onClick:function onClick(){return e.setState({hour:a})}},("pm"===h?12:0)+a)}},{key:"renderMinute",value:function renderMinute(a){var e=this,f=this.state,g=f.period,h=f.hour,i=["button"];null===h&&i.push("disabled");var j=2*d*(a-15)/60;return/*#__PURE__*/_react["default"].createElement("div",{key:a,className:i.join(" "),style:{left:"".concat(6+6*c(j),"rem"),top:"".concat(6+6*b(j),"rem"),transformOrigin:"".concat(-6*c(j),"rem ").concat(-6*b(j),"rem")},onMouseEnter:function onMouseEnter(){return e.setState({minuteHover:a})},onMouseLeave:function onMouseLeave(){return e.setState({minuteHover:null,lastMinuteHover:a})},onClick:function onClick(){e.onChange(_luxon.DateTime.fromObject({hour:(h+("pm"===g?12:0))%24,minute:a})),e.setState({period:"am",hour:null,hourHover:null,lastHourHover:12,minuteHover:null,lastMinuteHover:60})}},a)}},{key:"renderPointer",value:function renderPointer(a){var b=a.type,c=a.angle,d=a.hide,e=POINTER_LENGTH[b],f=POINTER_WIDTH[b];return/*#__PURE__*/_react["default"].createElement("div",{className:"pointer ".concat(b," ").concat(void 0!==d&&d?" hide":""),style:{height:"".concat(f,"px"),width:"calc(".concat(e," + ").concat(f,"px)"),borderRadius:"".concat(f/2,"px"),left:"calc(6rem - ".concat(f/2+2,"px)"),top:"calc(6rem - ".concat(f/2+2,"px)"),transformOrigin:"".concat(f/2,"px ").concat(f/2,"px"),transform:"rotate(".concat(c,"rad)")}})}},{key:"renderPeriod",value:function renderPeriod(a){var b=this,c=this.state.period;return/*#__PURE__*/_react["default"].createElement("button",{key:a,className:"period ".concat(a).concat(a===c?" selected":""),onClick:function onClick(){return b.setState({period:a})}},this.translate("period.".concat(a)))}},{key:"render",value:function render(){var a=this.props,b=a.trigger,c=a.open,e=a.onClose,f=this.state,g=f.period,h=f.hour,i=f.hourHover,j=f.lastHourHover,k=f.minuteHover,l=f.lastMinuteHover;return/*#__PURE__*/_react["default"].createElement(_semanticUiReact.Popup,{className:"daycy clock",flowing:!0,trigger:b,open:c,on:"click",onClose:e,onMouseDown:function onMouseDown(a){return a.preventDefault()}},/*#__PURE__*/_react["default"].createElement("div",{className:"face"},range(0,60,5).map(this.renderMinute),range(1,13).map(this.renderHour),/*#__PURE__*/_react["default"].createElement("div",{className:"period-bg ".concat(g)}),PERIODS.map(this.renderPeriod),this.renderPointer({type:"minute",angle:2*d*((k||l)-15)/60,hide:null===k}),this.renderPointer({type:"hour",angle:2*d*((i||h||j)-3)/12,hide:null===(i||h)})))}}]),e}(_react.Component);exports["default"]=Clock,_defineProperty(Clock,"propTypes",{trigger:_propTypes["default"].node.isRequired,open:_propTypes["default"].bool.isRequired,value:_propTypes["default"].instanceOf(_luxon.DateTime),onChange:_propTypes["default"].func.isRequired,onClose:_propTypes["default"].func,translate:_propTypes["default"].func}),_defineProperty(Clock,"defaultProps",{onClose:function onClose(){}});