From f818678a926f39e0e3d1a2723d3ba2efec3e12f5 Mon Sep 17 00:00:00 2001 From: Kenny Fitzgerald Date: Wed, 27 Mar 2024 15:35:02 -0400 Subject: [PATCH 1/2] Add keyAccessor for events --- src/Calendar.js | 14 ++++++++++++++ src/DayColumn.js | 3 ++- src/EventRow.js | 3 ++- src/Popup.js | 2 +- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/Calendar.js b/src/Calendar.js index 013ee9913..b95bad1d5 100644 --- a/src/Calendar.js +++ b/src/Calendar.js @@ -259,6 +259,17 @@ class Calendar extends React.Component { */ resourceTitleAccessor: accessor, + /** + * Provides a unique key for an event. + * + * ```js + * string | (resource: Object) => any + * ``` + * + * @type {(func|string)} + */ + keyAccessor: accessor, + /** * Determines the current date/time which is highlighted in the views. * @@ -858,6 +869,7 @@ class Calendar extends React.Component { startAccessor: 'start', endAccessor: 'end', resourceAccessor: 'resourceId', + keyAccessor: () => null, resourceIdAccessor: 'id', resourceTitleAccessor: 'title', @@ -891,6 +903,7 @@ class Calendar extends React.Component { resourceAccessor, resourceIdAccessor, resourceTitleAccessor, + keyAccessor, eventPropGetter, backgroundEventPropGetter, slotPropGetter, @@ -938,6 +951,7 @@ class Calendar extends React.Component { resource: wrapAccessor(resourceAccessor), resourceId: wrapAccessor(resourceIdAccessor), resourceTitle: wrapAccessor(resourceTitleAccessor), + key: wrapAccessor(keyAccessor), }, } } diff --git a/src/DayColumn.js b/src/DayColumn.js index 7daaa66de..aa12442ef 100644 --- a/src/DayColumn.js +++ b/src/DayColumn.js @@ -240,7 +240,8 @@ class DayColumn extends React.Component { style={style} event={event} label={label} - key={'evt_' + idx} + // Make the key unique and constant. + key={accessors.key(event) ?? 'evt_' + idx} getters={getters} rtl={rtl} components={components} diff --git a/src/EventRow.js b/src/EventRow.js index b2f70e81c..88a069ba5 100644 --- a/src/EventRow.js +++ b/src/EventRow.js @@ -6,6 +6,7 @@ import EventRowMixin from './EventRowMixin' class EventRow extends React.Component { render() { let { + accessors, segments, slotMetrics: { slots }, className, @@ -16,7 +17,7 @@ class EventRow extends React.Component { return (
{segments.reduce((row, { event, left, right, span }, li) => { - let key = '_lvl_' + li + let key = accessors.key(event) ?? '_lvl_' + li let gap = left - lastEnd let content = EventRowMixin.renderEvent(this.props, event) diff --git a/src/Popup.js b/src/Popup.js index a19fb3cf7..8efa66c85 100644 --- a/src/Popup.js +++ b/src/Popup.js @@ -65,7 +65,7 @@ class Popup extends React.Component {
{events.map((event, idx) => ( Date: Wed, 27 Mar 2024 15:59:27 -0400 Subject: [PATCH 2/2] Update version to be 0.33.52 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 04f42804c..6e3435019 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rbc-fork-react-big-calendar", - "version": "0.33.51", + "version": "0.33.52", "description": "Calendar! with events", "author": { "name": "Jason Quense",