react-native-week-selector
Version:
React Native week selector
1 lines • 7.47 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:true});var _slicedToArray=function(){function sliceIterator(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[typeof Symbol==='function'?Symbol.iterator:'@@iterator'](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"])_i["return"]();}finally{if(_d)throw _e;}}return _arr;}return function(arr,i){if(Array.isArray(arr)){return arr;}else if((typeof Symbol==='function'?Symbol.iterator:'@@iterator')in Object(arr)){return sliceIterator(arr,i);}else{throw new TypeError("Invalid attempt to destructure non-iterable instance");}};}();var _jsxFileName='src/index.js';var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _react=require('react');var _react2=_interopRequireDefault(_react);var _reactNative=require('react-native');var _start_of_today=require('date-fns/start_of_today');var _start_of_today2=_interopRequireDefault(_start_of_today);var _start_of_week=require('date-fns/start_of_week');var _start_of_week2=_interopRequireDefault(_start_of_week);var _end_of_week=require('date-fns/end_of_week');var _end_of_week2=_interopRequireDefault(_end_of_week);var _add_weeks=require('date-fns/add_weeks');var _add_weeks2=_interopRequireDefault(_add_weeks);var _sub_weeks=require('date-fns/sub_weeks');var _sub_weeks2=_interopRequireDefault(_sub_weeks);var _is_before=require('date-fns/is_before');var _is_before2=_interopRequireDefault(_is_before);var _is_after=require('date-fns/is_after');var _is_after2=_interopRequireDefault(_is_after);var _is_same_day=require('date-fns/is_same_day');var _is_same_day2=_interopRequireDefault(_is_same_day);var _format=require('date-fns/format');var _format2=_interopRequireDefault(_format);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;}var WeekSelector=function(_PureComponent){_inherits(WeekSelector,_PureComponent);function WeekSelector(props){_classCallCheck(this,WeekSelector);var _this=_possibleConstructorReturn(this,(WeekSelector.__proto__||Object.getPrototypeOf(WeekSelector)).call(this,props));_this.renderPreviousSelector=function(currentDate,startDate){if((0,_is_same_day2.default)(currentDate,startDate)||(0,_is_before2.default)(currentDate,startDate)){return null;}var renderPreviousSelector=_this.props.renderPreviousSelector;return _react2.default.createElement(_reactNative.TouchableOpacity,{onPress:_this.onPreviousPress,__source:{fileName:_jsxFileName,lineNumber:87}},renderPreviousSelector?renderPreviousSelector():_react2.default.createElement(_reactNative.Image,{source:require('./images/left-arrow-black.png'),__source:{fileName:_jsxFileName,lineNumber:91}}));};_this.renderNextSelector=function(currentDate,endDate){if((0,_is_same_day2.default)(currentDate,endDate)||(0,_is_after2.default)(currentDate,endDate)){return null;}var renderNextSelector=_this.props.renderNextSelector;return _react2.default.createElement(_reactNative.TouchableOpacity,{onPress:_this.onNextPress,__source:{fileName:_jsxFileName,lineNumber:104}},renderNextSelector?renderNextSelector():_react2.default.createElement(_reactNative.Image,{source:require('./images/right-arrow-black.png'),__source:{fileName:_jsxFileName,lineNumber:108}}));};_this.renderDisplayText=function(date,weekStartsOn){var _this$props=_this.props,dayFormat=_this$props.dayFormat,monthFormat=_this$props.monthFormat,textStyle=_this$props.textStyle;var firstDayOfWeek=(0,_start_of_week2.default)(date,{weekStartsOn:weekStartsOn});var lastDayOfWeek=(0,_end_of_week2.default)(date,{weekStartsOn:weekStartsOn});var firstDay=(0,_format2.default)(firstDayOfWeek,dayFormat);var firstMonth=(0,_format2.default)(firstDayOfWeek,monthFormat);var lastDay=(0,_format2.default)(lastDayOfWeek,dayFormat);var lastMonth=(0,_format2.default)(lastDayOfWeek,monthFormat);var firstMonthText=firstMonth!==lastMonth?' '+firstMonth:'';var text=''+firstDay+firstMonthText+' - '+lastDay+' '+lastMonth;return _react2.default.createElement(_reactNative.Text,{style:[styles.text,textStyle],__source:{fileName:_jsxFileName,lineNumber:128}},text);};_this.onPreviousPress=function(){_this.setState(function(state){return{date:(0,_sub_weeks2.default)(state.date,1)};},function(){_this.onWeekChanged();});};_this.onNextPress=function(){_this.setState(function(state){return{date:(0,_add_weeks2.default)(state.date,1)};},function(){_this.onWeekChanged();});};_this.onWeekChanged=function(){var date=_this.state.date;var onWeekChanged=_this.props.onWeekChanged;onWeekChanged&&onWeekChanged((0,_start_of_week2.default)(date));};_this.state={date:props.date||(0,_start_of_today2.default)()};return _this;}_createClass(WeekSelector,[{key:'render',value:function render(){var date=this.state.date;var _props=this.props,containerStyle=_props.containerStyle,dateContainerStyle=_props.dateContainerStyle,selectorContainerStyle=_props.selectorContainerStyle,whitelistRange=_props.whitelistRange,weekStartsOn=_props.weekStartsOn;var _whitelistRange=_slicedToArray(whitelistRange,2),startDate=_whitelistRange[0],endDate=_whitelistRange[1];return _react2.default.createElement(_reactNative.View,{style:[styles.container,containerStyle],__source:{fileName:_jsxFileName,lineNumber:66}},_react2.default.createElement(_reactNative.View,{style:[styles.selectorContainer,selectorContainerStyle],__source:{fileName:_jsxFileName,lineNumber:67}},this.renderPreviousSelector(date,startDate)),_react2.default.createElement(_reactNative.View,{style:[styles.dateContainer,dateContainerStyle],__source:{fileName:_jsxFileName,lineNumber:70}},this.renderDisplayText(date,weekStartsOn)),_react2.default.createElement(_reactNative.View,{style:[styles.selectorContainer,selectorContainerStyle],__source:{fileName:_jsxFileName,lineNumber:73}},this.renderNextSelector(date,endDate)));}}]);return WeekSelector;}(_react.PureComponent);WeekSelector.defaultProps={dayFormat:'DD',monthFormat:'MMMM',weekStartsOn:1,whitelistRange:[]};var styles=_reactNative.StyleSheet.create({container:{flex:1,height:34,flexDirection:'row',alignItems:'center'},selectorContainer:{width:32},dateContainer:{},text:{alignSelf:'center'}});exports.default=WeekSelector;