Adam Shaw 7 lat temu
rodzic
commit
c149aaf466

+ 3 - 20
src/Calendar.ts

@@ -109,30 +109,13 @@ export default class Calendar {
   }
   }
 
 
 
 
-  publiclyTrigger(name: string, triggerInfo) {
+  publiclyTrigger(name: string, args) {
     let optHandler = this.opt(name)
     let optHandler = this.opt(name)
-    let context
-    let args
-
-    if (Array.isArray(triggerInfo)) {
-      args = triggerInfo
-    } else if (typeof triggerInfo === 'object' && triggerInfo) { // non-null object
-      context = triggerInfo.context
-      args = triggerInfo.args
-    }
-
-    if (context == null) {
-      context = this.el // fallback context
-    }
-
-    if (!args) {
-      args = []
-    }
 
 
-    this.triggerWith(name, context, args) // Emitter's method
+    this.triggerWith(name, this, args) // Emitter's method
 
 
     if (optHandler) {
     if (optHandler) {
-      return optHandler.apply(context, args)
+      return optHandler.apply(this, args)
     }
     }
   }
   }
 
 

+ 78 - 70
src/View.ts

@@ -344,18 +344,22 @@ export default abstract class View extends InteractiveDateComponent {
 
 
 
 
   triggerViewRender() {
   triggerViewRender() {
-    this.publiclyTrigger('viewRender', {
-      context: this,
-      args: [ this, this.el ]
-    })
+    this.publiclyTrigger('viewRender', [
+      {
+        view: this,
+        el: this.el
+      }
+    ])
   }
   }
 
 
 
 
   triggerViewDestroy() {
   triggerViewDestroy() {
-    this.publiclyTrigger('viewDestroy', {
-      context: this,
-      args: [ this, this.el ]
-    })
+    this.publiclyTrigger('viewDestroy', [
+      {
+        view: this,
+        el: this.el
+      }
+    ])
   }
   }
 
 
 
 
@@ -613,17 +617,16 @@ export default abstract class View extends InteractiveDateComponent {
 
 
   // Triggers event-drop handlers that have subscribed via the API
   // Triggers event-drop handlers that have subscribed via the API
   triggerEventDrop(eventInstance, dateDelta, undoFunc, el, ev) {
   triggerEventDrop(eventInstance, dateDelta, undoFunc, el, ev) {
-    this.publiclyTrigger('eventDrop', {
-      context: el,
-      args: [
-        eventInstance.toLegacy(this.calendar),
+    this.publiclyTrigger('eventDrop', [
+      {
+        el,
+        event: eventInstance.toLegacy(this.calendar),
         dateDelta,
         dateDelta,
         undoFunc,
         undoFunc,
-        ev,
-        {}, // {} = jqui dummy
-        this
-      ]
-    })
+        jsEvent: ev,
+        view: this
+      }
+    ])
   }
   }
 
 
 
 
@@ -649,24 +652,23 @@ export default abstract class View extends InteractiveDateComponent {
     const dateEnv = this.calendar.dateEnv
     const dateEnv = this.calendar.dateEnv
 
 
     // trigger 'drop' regardless of whether element represents an event
     // trigger 'drop' regardless of whether element represents an event
-    this.publiclyTrigger('drop', {
-      context: el,
-      args: [
-        dateEnv.toDate(singleEventDef.dateProfile.start),
-        ev,
-        this
-      ]
-    })
+    this.publiclyTrigger('drop', [
+      {
+        date: dateEnv.toDate(singleEventDef.dateProfile.start),
+        isAllDay: singleEventDef.dateProfile.isAllDay,
+        jsEvent: ev,
+        view: this
+      }
+    ])
 
 
     if (isEvent) {
     if (isEvent) {
       // signal an external event landed
       // signal an external event landed
-      this.publiclyTrigger('eventReceive', {
-        context: this,
-        args: [
-          singleEventDef.buildInstance().toLegacy(this.calendar),
-          this
-        ]
-      })
+      this.publiclyTrigger('eventReceive', [
+        {
+          event: singleEventDef.buildInstance().toLegacy(this.calendar),
+          view: this
+        }
+      ])
     }
     }
   }
   }
 
 
@@ -700,17 +702,16 @@ export default abstract class View extends InteractiveDateComponent {
 
 
   // Triggers event-resize handlers that have subscribed via the API
   // Triggers event-resize handlers that have subscribed via the API
   triggerEventResize(eventInstance, durationDelta, undoFunc, el, ev) {
   triggerEventResize(eventInstance, durationDelta, undoFunc, el, ev) {
-    this.publiclyTrigger('eventResize', {
-      context: el,
-      args: [
-        eventInstance.toLegacy(this.calendar),
+    this.publiclyTrigger('eventResize', [
+      {
+        el,
+        event: eventInstance.toLegacy(this.calendar),
         durationDelta,
         durationDelta,
         undoFunc,
         undoFunc,
-        ev,
-        {}, // {} = jqui dummy
-        this
-      ]
-    })
+        jsEvent: ev,
+        view: this
+      }
+    ])
   }
   }
 
 
 
 
@@ -750,15 +751,15 @@ export default abstract class View extends InteractiveDateComponent {
     const dateEnv = this.calendar.dateEnv
     const dateEnv = this.calendar.dateEnv
     let dateProfile = this.calendar.footprintToDateProfile(footprint) // abuse of "Event"DateProfile?
     let dateProfile = this.calendar.footprintToDateProfile(footprint) // abuse of "Event"DateProfile?
 
 
-    this.publiclyTrigger('select', {
-      context: this,
-      args: [
-        dateEnv.toDate(dateProfile.unzonedRange.start),
-        dateEnv.toDate(dateProfile.unzonedRange.end),
-        ev,
-        this
-      ]
-    })
+    this.publiclyTrigger('select', [
+      {
+        start: dateEnv.toDate(dateProfile.unzonedRange.start),
+        end: dateEnv.toDate(dateProfile.unzonedRange.end),
+        isAllDay: dateProfile.isAllDay,
+        jsEvent: ev,
+        view: this
+      }
+    ])
   }
   }
 
 
 
 
@@ -771,10 +772,12 @@ export default abstract class View extends InteractiveDateComponent {
         this['destroySelection']() // TODO: deprecate
         this['destroySelection']() // TODO: deprecate
       }
       }
       this.unrenderSelection()
       this.unrenderSelection()
-      this.publiclyTrigger('unselect', {
-        context: this,
-        args: [ ev, this ]
-      })
+      this.publiclyTrigger('unselect', [
+        {
+          jsEvent: ev,
+          view: this
+        }
+      ])
     }
     }
   }
   }
 
 
@@ -872,18 +875,22 @@ export default abstract class View extends InteractiveDateComponent {
 
 
 
 
   triggerBaseRendered() {
   triggerBaseRendered() {
-    this.publiclyTrigger('viewRender', {
-      context: this,
-      args: [ this, this.el ]
-    })
+    this.publiclyTrigger('viewRender', [
+      {
+        view: this,
+        el: this.el
+      }
+    ])
   }
   }
 
 
 
 
   triggerBaseUnrendered() {
   triggerBaseUnrendered() {
-    this.publiclyTrigger('viewDestroy', {
-      context: this,
-      args: [ this, this.el ]
-    })
+    this.publiclyTrigger('viewDestroy', [
+      {
+        view: this,
+        el: this.el
+      }
+    ])
   }
   }
 
 
 
 
@@ -893,14 +900,15 @@ export default abstract class View extends InteractiveDateComponent {
     const dateEnv = this.calendar.dateEnv
     const dateEnv = this.calendar.dateEnv
     let dateProfile = this.calendar.footprintToDateProfile(footprint) // abuse of "Event"DateProfile?
     let dateProfile = this.calendar.footprintToDateProfile(footprint) // abuse of "Event"DateProfile?
 
 
-    this.publiclyTrigger('dayClick', {
-      context: dayEl,
-      args: [
-        dateEnv.toDate(dateProfile.unzonedRange.start),
-        ev,
-        this
-      ]
-    })
+    this.publiclyTrigger('dayClick', [
+      {
+        date: dateEnv.toDate(dateProfile.unzonedRange.start),
+        isAllDay: dateProfile.isAllDay,
+        el: dayEl,
+        jsEvent: ev,
+        view: this
+      }
+    ])
   }
   }
 
 
 
 

+ 17 - 20
src/basic/DayGrid.ts

@@ -147,14 +147,13 @@ export default class DayGrid extends InteractiveDateComponent {
     // trigger dayRender with each cell's element
     // trigger dayRender with each cell's element
     for (row = 0; row < rowCnt; row++) {
     for (row = 0; row < rowCnt; row++) {
       for (col = 0; col < colCnt; col++) {
       for (col = 0; col < colCnt; col++) {
-        this.publiclyTrigger('dayRender', {
-          context: view,
-          args: [
-            dateEnv.toDate(this.getCellDate(row, col)),
-            this.getCellEl(row, col),
+        this.publiclyTrigger('dayRender', [
+          {
+            date: dateEnv.toDate(this.getCellDate(row, col)),
+            isAllDay: true,
             view
             view
-          ]
-        })
+          }
+        ])
       }
       }
     }
     }
   }
   }
@@ -619,20 +618,18 @@ export default class DayGrid extends InteractiveDateComponent {
 
 
       if (typeof clickOption === 'function') {
       if (typeof clickOption === 'function') {
         // the returned value can be an atomic option
         // the returned value can be an atomic option
-        clickOption = this.publiclyTrigger('eventLimitClick', {
-          context: view,
-          args: [
-            {
-              date: dateEnv.toDate(date),
-              dayEl: dayEl,
-              moreEl: moreEl,
-              segs: reslicedAllSegs,
-              hiddenSegs: reslicedHiddenSegs
-            },
-            ev,
+        clickOption = this.publiclyTrigger('eventLimitClick', [
+          {
+            date: dateEnv.toDate(date),
+            isAllDay: true,
+            dayEl: dayEl,
+            moreEl: moreEl,
+            segs: reslicedAllSegs,
+            hiddenSegs: reslicedHiddenSegs,
+            jsEvent: ev,
             view
             view
-          ]
-        })
+          }
+        ])
       }
       }
 
 
       if (clickOption === 'popover') {
       if (clickOption === 'popover') {

+ 15 - 12
src/component/DateComponent.ts

@@ -277,10 +277,7 @@ export default abstract class DateComponent extends Component {
       this.getEventSegs()
       this.getEventSegs()
     )
     )
 
 
-    this.publiclyTrigger('eventAfterAllRender', {
-      context: this,
-      args: [ this ]
-    })
+    this.publiclyTrigger('eventAfterAllRender', [ { view: this } ])
   }
   }
 
 
 
 
@@ -293,10 +290,13 @@ export default abstract class DateComponent extends Component {
         if (seg.el) { // necessary?
         if (seg.el) { // necessary?
           legacy = seg.footprint.getEventLegacy(this._getCalendar())
           legacy = seg.footprint.getEventLegacy(this._getCalendar())
 
 
-          this.publiclyTrigger('eventAfterRender', {
-            context: legacy,
-            args: [ legacy, seg.el, this ]
-          })
+          this.publiclyTrigger('eventAfterRender', [
+            {
+              event: legacy,
+              el: seg.el,
+              view: this
+            }
+          ])
         }
         }
       })
       })
     }
     }
@@ -318,10 +318,13 @@ export default abstract class DateComponent extends Component {
         if (seg.el) { // necessary?
         if (seg.el) { // necessary?
           legacy = seg.footprint.getEventLegacy(this._getCalendar())
           legacy = seg.footprint.getEventLegacy(this._getCalendar())
 
 
-          this.publiclyTrigger('eventDestroy', {
-            context: legacy,
-            args: [ legacy, seg.el, this ]
-          })
+          this.publiclyTrigger('eventDestroy', [
+            {
+              event: legacy,
+              el: seg.el,
+              view: this
+            }
+          ])
         }
         }
       })
       })
     }
     }

+ 16 - 18
src/component/interactions/EventDragging.ts

@@ -261,30 +261,28 @@ export default class EventDragging extends Interaction {
   // Called before event segment dragging starts
   // Called before event segment dragging starts
   segDragStart(seg, ev) {
   segDragStart(seg, ev) {
     this.isDragging = true
     this.isDragging = true
-    this.component.publiclyTrigger('eventDragStart', {
-      context: seg.el,
-      args: [
-        seg.footprint.getEventLegacy(this.component._getCalendar()),
-        ev,
-        {}, // jqui dummy
-        this.view
-      ]
-    })
+    this.component.publiclyTrigger('eventDragStart', [
+      {
+        el: seg.el,
+        event: seg.footprint.getEventLegacy(this.component._getCalendar()),
+        jsEvent: ev,
+        view: this.view
+      }
+    ])
   }
   }
 
 
 
 
   // Called after event segment dragging stops
   // Called after event segment dragging stops
   segDragStop(seg, ev) {
   segDragStop(seg, ev) {
     this.isDragging = false
     this.isDragging = false
-    this.component.publiclyTrigger('eventDragStop', {
-      context: seg.el,
-      args: [
-        seg.footprint.getEventLegacy(this.component._getCalendar()),
-        ev,
-        {}, // jqui dummy
-        this.view
-      ]
-    })
+    this.component.publiclyTrigger('eventDragStop', [
+      {
+        el: seg.el,
+        event: seg.footprint.getEventLegacy(this.component._getCalendar()),
+        jsEvent: ev,
+        view: this.view
+      }
+    ])
   }
   }
 
 
 
 

+ 24 - 16
src/component/interactions/EventPointing.ts

@@ -27,10 +27,14 @@ export default class EventPointing extends Interaction {
 
 
 
 
   handleClick(seg, ev) {
   handleClick(seg, ev) {
-    let res = this.component.publiclyTrigger('eventClick', { // can return `false` to cancel
-      context: seg.el,
-      args: [ seg.footprint.getEventLegacy(this.view.calendar), ev, this.view ]
-    })
+    let res = this.component.publiclyTrigger('eventClick', [ // can return `false` to cancel
+      {
+        el: seg.el,
+        event: seg.footprint.getEventLegacy(this.view.calendar),
+        jsEvent: ev,
+        view: this.view
+      }
+    ])
 
 
     if (res === false) {
     if (res === false) {
       ev.preventDefault()
       ev.preventDefault()
@@ -51,10 +55,14 @@ export default class EventPointing extends Interaction {
         seg.el.classList.add('fc-allow-mouse-resize')
         seg.el.classList.add('fc-allow-mouse-resize')
       }
       }
 
 
-      this.component.publiclyTrigger('eventMouseover', {
-        context: seg.el,
-        args: [ seg.footprint.getEventLegacy(this.view.calendar), ev, this.view ]
-      })
+      this.component.publiclyTrigger('eventMouseover', [
+        {
+          el: seg.el,
+          event: seg.footprint.getEventLegacy(this.view.calendar),
+          jsEvent: ev,
+          view: this.view
+        }
+      ])
     }
     }
   }
   }
 
 
@@ -70,14 +78,14 @@ export default class EventPointing extends Interaction {
         seg.el.classList.remove('fc-allow-mouse-resize')
         seg.el.classList.remove('fc-allow-mouse-resize')
       }
       }
 
 
-      this.component.publiclyTrigger('eventMouseout', {
-        context: seg.el,
-        args: [
-          seg.footprint.getEventLegacy(this.view.calendar),
-          ev || {}, // if given no arg, make a mock mouse event
-          this.view
-        ]
-      })
+      this.component.publiclyTrigger('eventMouseout', [
+        {
+          el: seg.el,
+          event: seg.footprint.getEventLegacy(this.view.calendar),
+          jsEvent: ev || {}, // if given no arg, make a mock mouse event
+          view: this.view
+        }
+      ])
     }
     }
   }
   }
 
 

+ 16 - 18
src/component/interactions/EventResizing.ts

@@ -159,30 +159,28 @@ export default class EventResizing extends Interaction {
   // Called before event segment resizing starts
   // Called before event segment resizing starts
   segResizeStart(seg, ev) {
   segResizeStart(seg, ev) {
     this.isResizing = true
     this.isResizing = true
-    this.component.publiclyTrigger('eventResizeStart', {
-      context: seg.el,
-      args: [
-        seg.footprint.getEventLegacy(this.view.calendar),
-        ev,
-        {}, // jqui dummy
-        this.view
-      ]
-    })
+    this.component.publiclyTrigger('eventResizeStart', [
+      {
+        el: seg.el,
+        event: seg.footprint.getEventLegacy(this.view.calendar),
+        jsEvent: ev,
+        view: this.view
+      }
+    ])
   }
   }
 
 
 
 
   // Called after event segment resizing stops
   // Called after event segment resizing stops
   segResizeStop(seg, ev) {
   segResizeStop(seg, ev) {
     this.isResizing = false
     this.isResizing = false
-    this.component.publiclyTrigger('eventResizeStop', {
-      context: seg.el,
-      args: [
-        seg.footprint.getEventLegacy(this.view.calendar),
-        ev,
-        {}, // jqui dummy
-        this.view
-      ]
-    })
+    this.component.publiclyTrigger('eventResizeStop', [
+      {
+        el: seg.el,
+        event: seg.footprint.getEventLegacy(this.view.calendar),
+        jsEvent: ev,
+        view: this.view
+      }
+    ])
   }
   }
 
 
 
 

+ 7 - 4
src/component/renderers/EventRenderer.ts

@@ -250,10 +250,13 @@ export default class EventRenderer {
   filterEventRenderEl(eventFootprint, el) {
   filterEventRenderEl(eventFootprint, el) {
     let legacy = eventFootprint.getEventLegacy(this.view.calendar)
     let legacy = eventFootprint.getEventLegacy(this.view.calendar)
 
 
-    let custom = this.view.publiclyTrigger('eventRender', {
-      context: legacy,
-      args: [ legacy, el, this.view ]
-    })
+    let custom = this.view.publiclyTrigger('eventRender', [
+      {
+        event: legacy,
+        el,
+        view: this.view
+      }
+    ])
 
 
     if (custom === false) { // means don't render at all
     if (custom === false) { // means don't render at all
       el = null
       el = null