You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

242 lines
8.6 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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  7. var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
  8. var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
  9. var _clsx = _interopRequireDefault(require("clsx"));
  10. var _height = _interopRequireDefault(require("dom-helpers/height"));
  11. var _querySelectorAll = _interopRequireDefault(require("dom-helpers/querySelectorAll"));
  12. var _propTypes = _interopRequireDefault(require("prop-types"));
  13. var _react = _interopRequireDefault(require("react"));
  14. var _reactDom = require("react-dom");
  15. var dates = _interopRequireWildcard(require("./utils/dates"));
  16. var _BackgroundCells = _interopRequireDefault(require("./BackgroundCells"));
  17. var _EventRow = _interopRequireDefault(require("./EventRow"));
  18. var _EventEndingRow = _interopRequireDefault(require("./EventEndingRow"));
  19. var DateSlotMetrics = _interopRequireWildcard(require("./utils/DateSlotMetrics"));
  20. var DateContentRow =
  21. /*#__PURE__*/
  22. function (_React$Component) {
  23. (0, _inheritsLoose2.default)(DateContentRow, _React$Component);
  24. function DateContentRow() {
  25. var _this;
  26. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  27. args[_key] = arguments[_key];
  28. }
  29. _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
  30. _this.handleSelectSlot = function (slot) {
  31. var _this$props = _this.props,
  32. range = _this$props.range,
  33. onSelectSlot = _this$props.onSelectSlot;
  34. onSelectSlot(range.slice(slot.start, slot.end + 1), slot);
  35. };
  36. _this.handleShowMore = function (slot, target) {
  37. var _this$props2 = _this.props,
  38. range = _this$props2.range,
  39. onShowMore = _this$props2.onShowMore;
  40. var metrics = _this.slotMetrics(_this.props);
  41. var row = (0, _querySelectorAll.default)((0, _reactDom.findDOMNode)((0, _assertThisInitialized2.default)(_this)), '.rbc-row-bg')[0];
  42. var cell;
  43. if (row) cell = row.children[slot - 1];
  44. var events = metrics.getEventsForSlot(slot);
  45. onShowMore(events, range[slot - 1], cell, slot, target);
  46. };
  47. _this.createHeadingRef = function (r) {
  48. _this.headingRow = r;
  49. };
  50. _this.createEventRef = function (r) {
  51. _this.eventRow = r;
  52. };
  53. _this.getContainer = function () {
  54. var container = _this.props.container;
  55. return container ? container() : (0, _reactDom.findDOMNode)((0, _assertThisInitialized2.default)(_this));
  56. };
  57. _this.renderHeadingCell = function (date, index) {
  58. var _this$props3 = _this.props,
  59. renderHeader = _this$props3.renderHeader,
  60. getNow = _this$props3.getNow;
  61. return renderHeader({
  62. date: date,
  63. key: "header_" + index,
  64. className: (0, _clsx.default)('rbc-date-cell', dates.eq(date, getNow(), 'day') && 'rbc-now')
  65. });
  66. };
  67. _this.renderDummy = function () {
  68. var _this$props4 = _this.props,
  69. className = _this$props4.className,
  70. range = _this$props4.range,
  71. renderHeader = _this$props4.renderHeader;
  72. return _react.default.createElement("div", {
  73. className: className
  74. }, _react.default.createElement("div", {
  75. className: "rbc-row-content"
  76. }, renderHeader && _react.default.createElement("div", {
  77. className: "rbc-row",
  78. ref: _this.createHeadingRef
  79. }, range.map(_this.renderHeadingCell)), _react.default.createElement("div", {
  80. className: "rbc-row",
  81. ref: _this.createEventRef
  82. }, _react.default.createElement("div", {
  83. className: "rbc-row-segment"
  84. }, _react.default.createElement("div", {
  85. className: "rbc-event"
  86. }, _react.default.createElement("div", {
  87. className: "rbc-event-content"
  88. }, "\xA0"))))));
  89. };
  90. _this.slotMetrics = DateSlotMetrics.getSlotMetrics();
  91. return _this;
  92. }
  93. var _proto = DateContentRow.prototype;
  94. _proto.getRowLimit = function getRowLimit() {
  95. var eventHeight = (0, _height.default)(this.eventRow);
  96. var headingHeight = this.headingRow ? (0, _height.default)(this.headingRow) : 0;
  97. var eventSpace = (0, _height.default)((0, _reactDom.findDOMNode)(this)) - headingHeight;
  98. return Math.max(Math.floor(eventSpace / eventHeight), 1);
  99. };
  100. _proto.render = function render() {
  101. var _this$props5 = this.props,
  102. date = _this$props5.date,
  103. rtl = _this$props5.rtl,
  104. range = _this$props5.range,
  105. className = _this$props5.className,
  106. selected = _this$props5.selected,
  107. selectable = _this$props5.selectable,
  108. renderForMeasure = _this$props5.renderForMeasure,
  109. accessors = _this$props5.accessors,
  110. getters = _this$props5.getters,
  111. components = _this$props5.components,
  112. getNow = _this$props5.getNow,
  113. renderHeader = _this$props5.renderHeader,
  114. onSelect = _this$props5.onSelect,
  115. localizer = _this$props5.localizer,
  116. onSelectStart = _this$props5.onSelectStart,
  117. onSelectEnd = _this$props5.onSelectEnd,
  118. onDoubleClick = _this$props5.onDoubleClick,
  119. resourceId = _this$props5.resourceId,
  120. longPressThreshold = _this$props5.longPressThreshold,
  121. isAllDay = _this$props5.isAllDay;
  122. if (renderForMeasure) return this.renderDummy();
  123. var metrics = this.slotMetrics(this.props);
  124. var levels = metrics.levels,
  125. extra = metrics.extra;
  126. var WeekWrapper = components.weekWrapper;
  127. var eventRowProps = {
  128. selected: selected,
  129. accessors: accessors,
  130. getters: getters,
  131. localizer: localizer,
  132. components: components,
  133. onSelect: onSelect,
  134. onDoubleClick: onDoubleClick,
  135. resourceId: resourceId,
  136. slotMetrics: metrics
  137. };
  138. return _react.default.createElement("div", {
  139. className: className
  140. }, _react.default.createElement(_BackgroundCells.default, {
  141. date: date,
  142. getNow: getNow,
  143. rtl: rtl,
  144. range: range,
  145. selectable: selectable,
  146. container: this.getContainer,
  147. getters: getters,
  148. onSelectStart: onSelectStart,
  149. onSelectEnd: onSelectEnd,
  150. onSelectSlot: this.handleSelectSlot,
  151. components: components,
  152. longPressThreshold: longPressThreshold
  153. }), _react.default.createElement("div", {
  154. className: "rbc-row-content"
  155. }, renderHeader && _react.default.createElement("div", {
  156. className: "rbc-row ",
  157. ref: this.createHeadingRef
  158. }, range.map(this.renderHeadingCell)), _react.default.createElement(WeekWrapper, (0, _extends2.default)({
  159. isAllDay: isAllDay
  160. }, eventRowProps), levels.map(function (segs, idx) {
  161. return _react.default.createElement(_EventRow.default, (0, _extends2.default)({
  162. key: idx,
  163. segments: segs
  164. }, eventRowProps));
  165. }), !!extra.length && _react.default.createElement(_EventEndingRow.default, (0, _extends2.default)({
  166. segments: extra,
  167. onShowMore: this.handleShowMore
  168. }, eventRowProps)))));
  169. };
  170. return DateContentRow;
  171. }(_react.default.Component);
  172. DateContentRow.propTypes = process.env.NODE_ENV !== "production" ? {
  173. date: _propTypes.default.instanceOf(Date),
  174. events: _propTypes.default.array.isRequired,
  175. range: _propTypes.default.array.isRequired,
  176. rtl: _propTypes.default.bool,
  177. resourceId: _propTypes.default.any,
  178. renderForMeasure: _propTypes.default.bool,
  179. renderHeader: _propTypes.default.func,
  180. container: _propTypes.default.func,
  181. selected: _propTypes.default.object,
  182. selectable: _propTypes.default.oneOf([true, false, 'ignoreEvents']),
  183. longPressThreshold: _propTypes.default.number,
  184. onShowMore: _propTypes.default.func,
  185. onSelectSlot: _propTypes.default.func,
  186. onSelect: _propTypes.default.func,
  187. onSelectEnd: _propTypes.default.func,
  188. onSelectStart: _propTypes.default.func,
  189. onDoubleClick: _propTypes.default.func,
  190. dayPropGetter: _propTypes.default.func,
  191. getNow: _propTypes.default.func.isRequired,
  192. isAllDay: _propTypes.default.bool,
  193. accessors: _propTypes.default.object.isRequired,
  194. components: _propTypes.default.object.isRequired,
  195. getters: _propTypes.default.object.isRequired,
  196. localizer: _propTypes.default.object.isRequired,
  197. minRows: _propTypes.default.number.isRequired,
  198. maxRows: _propTypes.default.number.isRequired
  199. } : {};
  200. DateContentRow.defaultProps = {
  201. minRows: 0,
  202. maxRows: Infinity
  203. };
  204. var _default = DateContentRow;
  205. exports.default = _default;
  206. module.exports = exports["default"];