Przeglądaj źródła

fix: Event::setProp cant change the id. fixes #4730

Adam Shaw 4 lat temu
rodzic
commit
7baebc174b

+ 1 - 0
CHANGELOG.md

@@ -4,6 +4,7 @@ v5.6.0
 
 - feature: icalendar events receive URL (#6173)
 - feature: icalendar events receive location, organizer, description in extendedProps (#6097)
+- fix: Event::setProp can't change the id (#4730)
 - fix: icalendar event source does not update on refreshEvents (#6194)
 - fix: business hours per resource do not fill row height with expandRows (#6134)
 - fix: icalendar recurring events ignoring count rule (#6190)

+ 22 - 0
packages/__tests__/src/event-data/Event.setProp.ts

@@ -0,0 +1,22 @@
+
+describe('Event::setProps', () => {
+  fit('allows setting id', () => {
+    const calendar = initCalendar({
+      events: [
+        { id: '123', start: '2021-01-01' }
+      ]
+    })
+
+    let events = calendar.getEvents()
+    let event = events[0]
+
+    expect(event.id).toBe('123')
+
+    event.setProp('id', '456')
+    expect(event.id).toBe('456')
+
+    events = calendar.getEvents()
+    event = events[0]
+    expect(event.id).toBe('456')
+  })
+})

+ 7 - 0
packages/common/src/api/EventApi.ts

@@ -38,6 +38,13 @@ export class EventApi {
   setProp(name: string, val: string) {
     if (name in EVENT_DATE_REFINERS) {
       console.warn('Could not set date-related prop \'name\'. Use one of the date-related methods instead.')
+    // TODO: make proper aliasing system?
+    } else if (name === 'id') {
+      val = EVENT_NON_DATE_REFINERS[name](val)
+
+      this.mutate({
+        standardProps: { publicId: val }, // hardcoded internal name
+      })
     } else if (name in EVENT_NON_DATE_REFINERS) {
       val = EVENT_NON_DATE_REFINERS[name](val)