react-big-calendar
Advanced tools
Comparing version 1.9.2 to 1.10.0
@@ -0,1 +1,8 @@ | ||
# [1.10.0](https://github.com/jquense/react-big-calendar/compare/v1.9.2...v1.10.0) (2024-02-09) | ||
### Features | ||
* **event sort:** update event sort for multi day ([#2502](https://github.com/jquense/react-big-calendar/issues/2502)) ([ff209d0](https://github.com/jquense/react-big-calendar/commit/ff209d035aca4865c4211dc03f27f7da0147c9a1)) | ||
## [1.9.2](https://github.com/jquense/react-big-calendar/compare/v1.9.1...v1.9.2) (2024-02-09) | ||
@@ -2,0 +9,0 @@ |
@@ -55,2 +55,5 @@ "use strict"; | ||
} | ||
function daySpan(start, end) { | ||
return (0, _dates.duration)(start, end, 'day'); | ||
} | ||
@@ -68,7 +71,7 @@ // These two are used by eventLevels | ||
var startSort = +(0, _dates.startOf)(aStart, 'day') - +(0, _dates.startOf)(bStart, 'day'); | ||
var durA = (0, _dates.diff)(aStart, (0, _dates.ceil)(aEnd, 'day'), 'day'); | ||
var durB = (0, _dates.diff)(bStart, (0, _dates.ceil)(bEnd, 'day'), 'day'); | ||
var durA = daySpan(aStart, aEnd); | ||
var durB = daySpan(bStart, bEnd); | ||
return startSort || | ||
// sort by start Day first | ||
Math.max(durB, 1) - Math.max(durA, 1) || | ||
durB - durA || | ||
// events spanning multiple days go first | ||
@@ -139,2 +142,3 @@ !!bAllDay - !!aAllDay || | ||
this.minutes = spec.minutes || _dates.minutes; | ||
this.daySpan = spec.daySpan || daySpan; | ||
this.firstVisibleDay = spec.firstVisibleDay || _dates.firstVisibleDay; | ||
@@ -141,0 +145,0 @@ this.lastVisibleDay = spec.lastVisibleDay || _dates.lastVisibleDay; |
@@ -304,2 +304,7 @@ "use strict"; | ||
} | ||
function daySpan(start, end) { | ||
var startDay = dayjs(start); | ||
var endDay = dayjs(end); | ||
return endDay.diff(startDay, 'day'); | ||
} | ||
@@ -317,7 +322,7 @@ // These two are used by eventLevels | ||
var startSort = +startOf(aStart, 'day') - +startOf(bStart, 'day'); | ||
var durA = diff(aStart, ceil(aEnd, 'day'), 'day'); | ||
var durB = diff(bStart, ceil(bEnd, 'day'), 'day'); | ||
var durA = daySpan(aStart, aEnd); | ||
var durB = daySpan(bStart, bEnd); | ||
return startSort || | ||
// sort by start Day first | ||
Math.max(durB, 1) - Math.max(durA, 1) || | ||
durB - durA || | ||
// events spanning multiple days go first | ||
@@ -324,0 +329,0 @@ !!bAllDay - !!aAllDay || |
@@ -314,2 +314,7 @@ "use strict"; | ||
} | ||
function daySpan(start, end) { | ||
var dtStart = DateTime.fromJSDate(start); | ||
var dtEnd = DateTime.fromJSDate(end); | ||
return dtEnd.diff(dtStart).as('days'); | ||
} | ||
@@ -327,7 +332,7 @@ // These two are used by eventLevels | ||
var startSort = +startOf(aStart, 'day') - +startOf(bStart, 'day'); | ||
var durA = diff(aStart, ceil(aEnd, 'day'), 'day'); | ||
var durB = diff(bStart, ceil(bEnd, 'day'), 'day'); | ||
var durA = daySpan(aStart, aEnd); | ||
var durB = daySpan(bStart, bEnd); | ||
return startSort || | ||
// sort by start Day first | ||
Math.max(durB, 1) - Math.max(durA, 1) || | ||
durB - durA || | ||
// events spanning multiple days go first | ||
@@ -422,4 +427,5 @@ !!bAllDay - !!aAllDay || | ||
isSameDate: isSameDate, | ||
daySpan: daySpan, | ||
browserTZOffset: browserTZOffset | ||
}); | ||
} |
@@ -283,2 +283,8 @@ "use strict"; | ||
} | ||
function daySpan(start, end) { | ||
var mStart = moment(start); | ||
var mEnd = moment(end); | ||
var dur = moment.duration(mEnd.diff(mStart)); | ||
return dur.days(); | ||
} | ||
@@ -296,7 +302,7 @@ // These two are used by eventLevels | ||
var startSort = +startOf(aStart, 'day') - +startOf(bStart, 'day'); | ||
var durA = diff(aStart, ceil(aEnd, 'day'), 'day'); | ||
var durB = diff(bStart, ceil(bEnd, 'day'), 'day'); | ||
var durA = daySpan(aStart, aEnd); | ||
var durB = daySpan(bStart, bEnd); | ||
return startSort || | ||
// sort by start Day first | ||
Math.max(durB, 1) - Math.max(durA, 1) || | ||
durB - durA || | ||
// events spanning multiple days go first | ||
@@ -390,4 +396,5 @@ !!bAllDay - !!aAllDay || | ||
isSameDate: isSameDate, | ||
daySpan: daySpan, | ||
browserTZOffset: browserTZOffset | ||
}); | ||
} |
@@ -67,5 +67,3 @@ "use strict"; | ||
var weeksEvents = eventsForWeek((0, _toConsumableArray2.default)(events), week[0], week[week.length - 1], accessors, localizer); | ||
weeksEvents.sort(function (a, b) { | ||
return (0, _eventLevels.sortEvents)(a, b, accessors, localizer); | ||
}); | ||
var sorted = (0, _eventLevels.sortWeekEvents)(weeksEvents, accessors, localizer); | ||
return /*#__PURE__*/_react.default.createElement(_DateContentRow.default, { | ||
@@ -79,3 +77,3 @@ key: weekIdx, | ||
range: week, | ||
events: weeksEvents, | ||
events: sorted, | ||
maxRows: showAllEvents ? Infinity : rowLimit, | ||
@@ -82,0 +80,0 @@ selected: selected, |
@@ -13,2 +13,4 @@ "use strict"; | ||
exports.sortEvents = sortEvents; | ||
exports.sortWeekEvents = sortWeekEvents; | ||
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); | ||
var _findIndex = _interopRequireDefault(require("lodash/findIndex")); | ||
@@ -100,2 +102,23 @@ function endOfRange(_ref) { | ||
} | ||
function sortWeekEvents(events, accessors, localizer) { | ||
var base = (0, _toConsumableArray2.default)(events); | ||
var multiDayEvents = []; | ||
var standardEvents = []; | ||
base.forEach(function (event) { | ||
var startCheck = accessors.start(event); | ||
var endCheck = accessors.end(event); | ||
if (localizer.daySpan(startCheck, endCheck) > 1) { | ||
multiDayEvents.push(event); | ||
} else { | ||
standardEvents.push(event); | ||
} | ||
}); | ||
var multiSorted = multiDayEvents.sort(function (a, b) { | ||
return sortEvents(a, b, accessors, localizer); | ||
}); | ||
var standardSorted = standardEvents.sort(function (a, b) { | ||
return sortEvents(a, b, accessors, localizer); | ||
}); | ||
return [].concat((0, _toConsumableArray2.default)(multiSorted), (0, _toConsumableArray2.default)(standardSorted)); | ||
} | ||
function sortEvents(eventA, eventB, accessors, localizer) { | ||
@@ -102,0 +125,0 @@ var evtA = { |
{ | ||
"name": "react-big-calendar", | ||
"version": "1.9.2", | ||
"version": "1.10.0", | ||
"description": "Calendar! with events", | ||
@@ -5,0 +5,0 @@ "author": { |
@@ -168,2 +168,3 @@ # react-big-calendar | ||
Help us improve Big Calendar! Join us on [Slack](https://join.slack.com/t/bigcalendar/shared_invite/zt-29tzjbk9e-xCqhIAPbOpXiVcetK9bC0g). | ||
Help us improve Big Calendar! Join us on [Slack](https://join.slack.com/t/bigcalendar/shared_invite/zt-2cerpqegz-mGzcbm7LxYLFPjcTa0gLgw). | ||
(Slack invite links do expire. If you can't get in, just file an issue and we'll get a new link) |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
2546843
55884
170