UNPKG

react-google-calendar-events-list

Version:

Reusable ReactJS component for rendering a list of events from a google calendar.

3 lines (2 loc) 3.48 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):e.ReactShowMore=t(e.React)}(this,function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}(),a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},r=function(e,t){return"https://www.googleapis.com/calendar/v3/calendars/"+e+"/events?fields=items(summary,id,location,start)&key="+t},l=function(e){var t=(e=e.split("-")).shift();return e.push(t),e=e.join("/")};return function(o){function i(){var e,n,l;t(this,i);for(var o=arguments.length,s=Array(o),u=0;u<o;u++)s[u]=arguments[u];return n=l=a(this,(e=i.__proto__||Object.getPrototypeOf(i)).call.apply(e,[this].concat(s))),l.state={loading:!1,events:[]},l.getEvents=function(){return l.setState(function(e){return Object.assign({},e,{events:[],loading:!0})}),fetch(r(l.props.calendarID,l.props.apiKey)).then(function(e){return e.json()})},a(l,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(i,e.PureComponent),n(i,[{key:"componentDidMount",value:function(){var e=this;this.getEvents().then(function(t){e.setState(function(e){var n;return Object.assign({},e,{loading:!1,events:null!=(n=t)?n.items:n})})})}},{key:"render",value:function(){var t=this.props.children,n=this.state,a=n.loading,r=void 0!==a&&a,o=n.events,i=(void 0===o?[]:o).filter(function(e){var t,n;return((null!=(t=e)&&null!=(t=t.start)?t.dateTime:t)||(null!=(n=e)&&null!=(n=n.start)?n.date:n))>(new Date).toISOString()});return t&&"function"==typeof t?t({events:i,loading:r}):e.createElement("div",{className:"events"},e.createElement("dl",{className:"events__list"},i.map(function(t){var n,a,r,o,i,s,u,c,f,p;return e.createElement("div",{key:t.id,className:"event"},e.createElement("dt",{"data-test":"event-summary",className:"event__title"},t.summary),t.location&&e.createElement("span",{className:"event__location"},e.createElement("span",null,t.location)),e.createElement("dd",{className:"event__details"},e.createElement("time",{className:"event__schedule",dateTime:(null!=(n=t)&&null!=(n=n.start)?n.dateTime:n)||(null!=(a=t)&&null!=(a=a.start)?a.date:a)},e.createElement("span",{className:"event__date"},t.start.dateTime?l(null!=(r=t)&&null!=(r=r.start)&&null!=(r=r.dateTime)&&null!=(r=r.split)&&null!=(r=r("T"))?r[0]:r):l(null!=(o=t)&&null!=(o=o.start)?o.date:o)),(null!=(i=t)&&null!=(i=i.start)?i.dateTime:i)&&e.createElement("span",{className:"event__time"},(u=null!=(s=t)&&null!=(s=s.start)&&null!=(s=s.dateTime)&&null!=(s=s.split)&&null!=(s=s("T"))?s[1]:s,c=(u=u.substring(0,u.length-6)).split(":"),f=c[0],p=c[1],f>12?f-12+":"+p+"PM":0===f?"12:"+p+"AM":12===f?u+"PM":u+"AM")))))})))}}]),i}()}); //# sourceMappingURL=react-google-calendar-events-list.min.js.map