Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 

260 wiersze
9.0 KiB

  1. "use strict";
  2. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  4. exports.__esModule = true;
  5. exports.default = void 0;
  6. var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
  7. var _propTypes = _interopRequireDefault(require("prop-types"));
  8. var _react = _interopRequireDefault(require("react"));
  9. var _addClass = _interopRequireDefault(require("dom-helpers/addClass"));
  10. var _removeClass = _interopRequireDefault(require("dom-helpers/removeClass"));
  11. var _width = _interopRequireDefault(require("dom-helpers/width"));
  12. var _scrollbarSize = _interopRequireDefault(require("dom-helpers/scrollbarSize"));
  13. var dates = _interopRequireWildcard(require("./utils/dates"));
  14. var _constants = require("./utils/constants");
  15. var _eventLevels = require("./utils/eventLevels");
  16. var _selection = require("./utils/selection");
  17. var Agenda =
  18. /*#__PURE__*/
  19. function (_React$Component) {
  20. (0, _inheritsLoose2.default)(Agenda, _React$Component);
  21. function Agenda(props) {
  22. var _this;
  23. _this = _React$Component.call(this, props) || this;
  24. _this.renderDay = function (day, events, dayKey) {
  25. var _this$props = _this.props,
  26. selected = _this$props.selected,
  27. getters = _this$props.getters,
  28. accessors = _this$props.accessors,
  29. localizer = _this$props.localizer,
  30. _this$props$component = _this$props.components,
  31. Event = _this$props$component.event,
  32. AgendaDate = _this$props$component.date;
  33. events = events.filter(function (e) {
  34. return (0, _eventLevels.inRange)(e, dates.startOf(day, 'day'), dates.endOf(day, 'day'), accessors);
  35. });
  36. return events.map(function (event, idx) {
  37. var title = accessors.title(event);
  38. var end = accessors.end(event);
  39. var start = accessors.start(event);
  40. var userProps = getters.eventProp(event, start, end, (0, _selection.isSelected)(event, selected));
  41. var dateLabel = idx === 0 && localizer.format(day, 'agendaDateFormat');
  42. var first = idx === 0 ? _react.default.createElement("td", {
  43. rowSpan: events.length,
  44. className: "rbc-agenda-date-cell"
  45. }, AgendaDate ? _react.default.createElement(AgendaDate, {
  46. day: day,
  47. label: dateLabel
  48. }) : dateLabel) : false;
  49. return _react.default.createElement("tr", {
  50. key: dayKey + '_' + idx,
  51. className: userProps.className,
  52. style: userProps.style
  53. }, first, _react.default.createElement("td", {
  54. className: "rbc-agenda-time-cell"
  55. }, _this.timeRangeLabel(day, event)), _react.default.createElement("td", {
  56. className: "rbc-agenda-event-cell"
  57. }, Event ? _react.default.createElement(Event, {
  58. event: event,
  59. title: title
  60. }) : title));
  61. }, []);
  62. };
  63. _this.timeRangeLabel = function (day, event) {
  64. var _this$props2 = _this.props,
  65. accessors = _this$props2.accessors,
  66. localizer = _this$props2.localizer,
  67. components = _this$props2.components;
  68. var labelClass = '',
  69. TimeComponent = components.time,
  70. label = localizer.messages.allDay;
  71. var end = accessors.end(event);
  72. var start = accessors.start(event);
  73. if (!accessors.allDay(event)) {
  74. if (dates.eq(start, end)) {
  75. label = localizer.format(start, 'agendaTimeFormat');
  76. } else if (dates.eq(start, end, 'day')) {
  77. label = localizer.format({
  78. start: start,
  79. end: end
  80. }, 'agendaTimeRangeFormat');
  81. } else if (dates.eq(day, start, 'day')) {
  82. label = localizer.format(start, 'agendaTimeFormat');
  83. } else if (dates.eq(day, end, 'day')) {
  84. label = localizer.format(end, 'agendaTimeFormat');
  85. }
  86. }
  87. if (dates.gt(day, start, 'day')) labelClass = 'rbc-continues-prior';
  88. if (dates.lt(day, end, 'day')) labelClass += ' rbc-continues-after';
  89. return _react.default.createElement("span", {
  90. className: labelClass.trim()
  91. }, TimeComponent ? _react.default.createElement(TimeComponent, {
  92. event: event,
  93. day: day,
  94. label: label
  95. }) : label);
  96. };
  97. _this._adjustHeader = function () {
  98. if (!_this.tbodyRef.current) return;
  99. var header = _this.headerRef.current;
  100. var firstRow = _this.tbodyRef.current.firstChild;
  101. if (!firstRow) return;
  102. var isOverflowing = _this.contentRef.current.scrollHeight > _this.contentRef.current.clientHeight;
  103. var widths = _this._widths || [];
  104. _this._widths = [(0, _width.default)(firstRow.children[0]), (0, _width.default)(firstRow.children[1])];
  105. if (widths[0] !== _this._widths[0] || widths[1] !== _this._widths[1]) {
  106. _this.dateColRef.current.style.width = _this._widths[0] + 'px';
  107. _this.timeColRef.current.style.width = _this._widths[1] + 'px';
  108. }
  109. if (isOverflowing) {
  110. (0, _addClass.default)(header, 'rbc-header-overflowing');
  111. header.style.marginRight = (0, _scrollbarSize.default)() + 'px';
  112. } else {
  113. (0, _removeClass.default)(header, 'rbc-header-overflowing');
  114. }
  115. };
  116. _this.headerRef = _react.default.createRef();
  117. _this.dateColRef = _react.default.createRef();
  118. _this.timeColRef = _react.default.createRef();
  119. _this.contentRef = _react.default.createRef();
  120. _this.tbodyRef = _react.default.createRef();
  121. return _this;
  122. }
  123. var _proto = Agenda.prototype;
  124. _proto.componentDidMount = function componentDidMount() {
  125. this._adjustHeader();
  126. };
  127. _proto.componentDidUpdate = function componentDidUpdate() {
  128. this._adjustHeader();
  129. };
  130. _proto.render = function render() {
  131. var _this2 = this;
  132. var _this$props3 = this.props,
  133. length = _this$props3.length,
  134. date = _this$props3.date,
  135. events = _this$props3.events,
  136. accessors = _this$props3.accessors,
  137. localizer = _this$props3.localizer;
  138. var messages = localizer.messages;
  139. var end = dates.add(date, length, 'day');
  140. var range = dates.range(date, end, 'day');
  141. events = events.filter(function (event) {
  142. return (0, _eventLevels.inRange)(event, date, end, accessors);
  143. });
  144. events.sort(function (a, b) {
  145. return +accessors.start(a) - +accessors.start(b);
  146. });
  147. return _react.default.createElement("div", {
  148. className: "rbc-agenda-view"
  149. }, events.length !== 0 ? _react.default.createElement(_react.default.Fragment, null, _react.default.createElement("table", {
  150. ref: this.headerRef,
  151. className: "rbc-agenda-table"
  152. }, _react.default.createElement("thead", null, _react.default.createElement("tr", null, _react.default.createElement("th", {
  153. className: "rbc-header",
  154. ref: this.dateColRef
  155. }, messages.date), _react.default.createElement("th", {
  156. className: "rbc-header",
  157. ref: this.timeColRef
  158. }, messages.time), _react.default.createElement("th", {
  159. className: "rbc-header"
  160. }, messages.event)))), _react.default.createElement("div", {
  161. className: "rbc-agenda-content",
  162. ref: this.contentRef
  163. }, _react.default.createElement("table", {
  164. className: "rbc-agenda-table"
  165. }, _react.default.createElement("tbody", {
  166. ref: this.tbodyRef
  167. }, range.map(function (day, idx) {
  168. return _this2.renderDay(day, events, idx);
  169. }))))) : _react.default.createElement("span", {
  170. className: "rbc-agenda-empty"
  171. }, messages.noEventsInRange));
  172. };
  173. return Agenda;
  174. }(_react.default.Component);
  175. Agenda.propTypes = process.env.NODE_ENV !== "production" ? {
  176. events: _propTypes.default.array,
  177. date: _propTypes.default.instanceOf(Date),
  178. length: _propTypes.default.number.isRequired,
  179. selected: _propTypes.default.object,
  180. accessors: _propTypes.default.object.isRequired,
  181. components: _propTypes.default.object.isRequired,
  182. getters: _propTypes.default.object.isRequired,
  183. localizer: _propTypes.default.object.isRequired
  184. } : {};
  185. Agenda.defaultProps = {
  186. length: 30
  187. };
  188. Agenda.range = function (start, _ref) {
  189. var _ref$length = _ref.length,
  190. length = _ref$length === void 0 ? Agenda.defaultProps.length : _ref$length;
  191. var end = dates.add(start, length, 'day');
  192. return {
  193. start: start,
  194. end: end
  195. };
  196. };
  197. Agenda.navigate = function (date, action, _ref2) {
  198. var _ref2$length = _ref2.length,
  199. length = _ref2$length === void 0 ? Agenda.defaultProps.length : _ref2$length;
  200. switch (action) {
  201. case _constants.navigate.PREVIOUS:
  202. return dates.add(date, -length, 'day');
  203. case _constants.navigate.NEXT:
  204. return dates.add(date, length, 'day');
  205. default:
  206. return date;
  207. }
  208. };
  209. Agenda.title = function (start, _ref3) {
  210. var _ref3$length = _ref3.length,
  211. length = _ref3$length === void 0 ? Agenda.defaultProps.length : _ref3$length,
  212. localizer = _ref3.localizer;
  213. var end = dates.add(start, length, 'day');
  214. return localizer.format({
  215. start: start,
  216. end: end
  217. }, 'agendaHeaderFormat');
  218. };
  219. var _default = Agenda;
  220. exports.default = _default;
  221. module.exports = exports["default"];