UNPKG

@rusinov/react-big-calendar

Version:
224 lines (194 loc) 8 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var _scrollbarSize = _interopRequireDefault(require("dom-helpers/util/scrollbarSize")); var _react = _interopRequireDefault(require("react")); var _dates = _interopRequireDefault(require("./utils/dates")); var _DateContentRow = _interopRequireDefault(require("./DateContentRow")); var _Header = _interopRequireDefault(require("./Header")); var _helpers = require("./utils/helpers"); var TimeGridHeader = /*#__PURE__*/ function (_React$Component) { (0, _inheritsLoose2.default)(TimeGridHeader, _React$Component); function TimeGridHeader() { var _this; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this; _this.handleHeaderClick = function (date, view, e) { e.preventDefault(); (0, _helpers.notify)(_this.props.onDrillDown, [date, view]); }; _this.renderRow = function (resource) { var _this$props = _this.props, events = _this$props.events, rtl = _this$props.rtl, selectable = _this$props.selectable, getNow = _this$props.getNow, range = _this$props.range, getters = _this$props.getters, localizer = _this$props.localizer, accessors = _this$props.accessors, components = _this$props.components; var resourceId = accessors.resourceId(resource); var eventsToDisplay = resource ? events.filter(function (event) { return accessors.resource(event) === resourceId; }) : events; return _react.default.createElement(_DateContentRow.default, { isAllDay: true, rtl: rtl, getNow: getNow, minRows: 2, range: range, events: eventsToDisplay, resourceId: resourceId, className: "rbc-allday-cell", selectable: selectable, selected: _this.props.selected, components: components, accessors: accessors, getters: getters, localizer: localizer, onSelect: _this.props.onSelectEvent, onDoubleClick: _this.props.onDoubleClickEvent, onSelectSlot: _this.props.onSelectSlot, longPressThreshold: _this.props.longPressThreshold }); }; return _this; } var _proto = TimeGridHeader.prototype; _proto.renderHeaderCells = function renderHeaderCells(range) { var _this2 = this; var _this$props2 = this.props, localizer = _this$props2.localizer, getDrilldownView = _this$props2.getDrilldownView, getNow = _this$props2.getNow, dayProp = _this$props2.getters.dayProp, _this$props2$componen = _this$props2.components.header, HeaderComponent = _this$props2$componen === void 0 ? _Header.default : _this$props2$componen; var today = getNow(); return range.map(function (date, i) { var drilldownView = getDrilldownView(date); var label = localizer.format(date, 'dayFormat'); var _dayProp = dayProp(date), className = _dayProp.className, style = _dayProp.style; var header = _react.default.createElement(HeaderComponent, { date: date, label: label, localizer: localizer }); return _react.default.createElement("div", { key: i, style: style, className: (0, _classnames.default)('rbc-header', className, _dates.default.eq(date, today, 'day') && 'rbc-today') }, drilldownView ? _react.default.createElement("a", { href: "#", onClick: function onClick(e) { return _this2.handleHeaderClick(date, drilldownView, e); } }, header) : _react.default.createElement("span", null, header)); }); }; _proto.render = function render() { var _this3 = this; var _this$props3 = this.props, width = _this$props3.width, rtl = _this$props3.rtl, resources = _this$props3.resources, range = _this$props3.range, events = _this$props3.events, getNow = _this$props3.getNow, accessors = _this$props3.accessors, selectable = _this$props3.selectable, components = _this$props3.components, getters = _this$props3.getters, scrollRef = _this$props3.scrollRef, localizer = _this$props3.localizer, isOverflowing = _this$props3.isOverflowing, TimeGutterHeader = _this$props3.components.timeGutterHeader; var style = {}; if (isOverflowing) { style[rtl ? 'marginLeft' : 'marginRight'] = (0, _scrollbarSize.default)() + "px"; } var groupedEvents = resources.groupEvents(events); return _react.default.createElement("div", { style: style, ref: scrollRef, className: (0, _classnames.default)('rbc-time-header', isOverflowing && 'rbc-overflowing') }, _react.default.createElement("div", { className: "rbc-label rbc-time-header-gutter", style: { width: width, minWidth: width, maxWidth: width } }, TimeGutterHeader && _react.default.createElement(TimeGutterHeader, null)), resources.map(function (_ref, idx) { var id = _ref[0], resource = _ref[1]; return _react.default.createElement("div", { className: "rbc-time-header-content", key: id || idx }, resource && _react.default.createElement("div", { className: "rbc-row rbc-row-resource" }, _react.default.createElement("div", { key: "resource_" + idx, className: "rbc-header" }, accessors.resourceTitle(resource))), _react.default.createElement("div", { className: "rbc-row rbc-time-header-cell" + (range.length <= 1 ? ' rbc-time-header-cell-single-day' : '') }, _this3.renderHeaderCells(range)), _react.default.createElement(_DateContentRow.default, { isAllDay: true, rtl: rtl, getNow: getNow, minRows: 2, range: range, events: groupedEvents.get(id) || [], resourceId: resource && id, className: "rbc-allday-cell", selectable: selectable, selected: _this3.props.selected, components: components, accessors: accessors, getters: getters, localizer: localizer, onSelect: _this3.props.onSelectEvent, onDoubleClick: _this3.props.onDoubleClickEvent, onSelectSlot: _this3.props.onSelectSlot, longPressThreshold: _this3.props.longPressThreshold })); })); }; return TimeGridHeader; }(_react.default.Component); TimeGridHeader.propTypes = { range: _propTypes.default.array.isRequired, events: _propTypes.default.array.isRequired, resources: _propTypes.default.object, getNow: _propTypes.default.func.isRequired, isOverflowing: _propTypes.default.bool, rtl: _propTypes.default.bool, width: _propTypes.default.number, localizer: _propTypes.default.object.isRequired, accessors: _propTypes.default.object.isRequired, components: _propTypes.default.object.isRequired, getters: _propTypes.default.object.isRequired, selected: _propTypes.default.object, selectable: _propTypes.default.oneOf([true, false, 'ignoreEvents']), longPressThreshold: _propTypes.default.number, onSelectSlot: _propTypes.default.func, onSelectEvent: _propTypes.default.func, onDoubleClickEvent: _propTypes.default.func, onDrillDown: _propTypes.default.func, getDrilldownView: _propTypes.default.func.isRequired, scrollRef: _propTypes.default.any }; var _default = TimeGridHeader; exports.default = _default; module.exports = exports["default"];