|
|
@@ -4,12 +4,21 @@ import DayGridEventRenderer from './DayGridEventRenderer'
|
|
|
import { htmlEscape } from '../util/html'
|
|
|
import { createFormatter } from '../datelib/formatting'
|
|
|
import { Seg } from '../component/DateComponent'
|
|
|
+import { Hit } from '../interactions/HitDragging'
|
|
|
+import OffsetTracker from '../common/OffsetTracker'
|
|
|
+import { computeRect } from '../util/dom-geom'
|
|
|
+import { Rect, pointInsideRect } from '../util/geom'
|
|
|
+import { addDays } from '../datelib/marker'
|
|
|
|
|
|
export default class DayTile extends DateComponent {
|
|
|
|
|
|
isInteractable = true
|
|
|
+ useEventCenter = false
|
|
|
date: Date
|
|
|
segContainerEl: HTMLElement
|
|
|
+ width: number
|
|
|
+ height: number
|
|
|
+ offsetTracker: OffsetTracker // TODO: abstraction for tracking dims of whole element rect
|
|
|
|
|
|
constructor(component, date) {
|
|
|
super(component)
|
|
|
@@ -39,6 +48,43 @@ export default class DayTile extends DateComponent {
|
|
|
this.segContainerEl = this.el.querySelector('.fc-event-container')
|
|
|
}
|
|
|
|
|
|
+ prepareHits() {
|
|
|
+ let rect = computeRect(this.el)
|
|
|
+ this.width = rect.right - rect.left
|
|
|
+ this.height = rect.bottom - rect.top
|
|
|
+ this.offsetTracker = new OffsetTracker(this.el)
|
|
|
+ }
|
|
|
+
|
|
|
+ releaseHits() {
|
|
|
+ this.offsetTracker.destroy()
|
|
|
+ }
|
|
|
+
|
|
|
+ queryHit(leftOffset, topOffset): Hit | null {
|
|
|
+ let rectLeft = this.offsetTracker.computeLeft()
|
|
|
+ let rectTop = this.offsetTracker.computeTop()
|
|
|
+ let rect: Rect = {
|
|
|
+ left: rectLeft,
|
|
|
+ right: rectLeft + this.width,
|
|
|
+ top: rectTop,
|
|
|
+ bottom: rectTop + this.height
|
|
|
+ }
|
|
|
+
|
|
|
+ if (pointInsideRect({ left: leftOffset, top: topOffset }, rect)) {
|
|
|
+ return {
|
|
|
+ component: this,
|
|
|
+ dateSpan: {
|
|
|
+ isAllDay: true,
|
|
|
+ range: { start: this.date, end: addDays(this.date, 1) }
|
|
|
+ },
|
|
|
+ dayEl: this.el,
|
|
|
+ rect: rect,
|
|
|
+ layer: 1
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return null
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
export class DayTileEventRenderer extends EventRenderer {
|