Adam Shaw %!s(int64=7) %!d(string=hai) anos
pai
achega
992a042a90
Modificáronse 4 ficheiros con 51 adicións e 21 borrados
  1. 3 5
      src/Calendar.ts
  2. 1 3
      src/View.ts
  3. 45 12
      src/component/DateComponent.ts
  4. 2 1
      src/reducers/main.ts

+ 3 - 5
src/Calendar.ts

@@ -433,7 +433,6 @@ export default class Calendar {
     let { view } = this
     let { view } = this
 
 
     if (view && this.isSkeletonRendered) {
     if (view && this.isSkeletonRendered) {
-      let viewScroll
 
 
       if (!view.el) {
       if (!view.el) {
         view.setElement(
         view.setElement(
@@ -444,16 +443,15 @@ export default class Calendar {
       if (!view.el.parentNode) {
       if (!view.el.parentNode) {
         this.contentEl.appendChild(view.el)
         this.contentEl.appendChild(view.el)
       } else {
       } else {
-        viewScroll = view.queryScroll()
+        view.addScroll(view.queryScroll())
       }
       }
 
 
       this.freezeContentHeight()
       this.freezeContentHeight()
       view.render(this.state, forces)
       view.render(this.state, forces)
       this.thawContentHeight()
       this.thawContentHeight()
-      this.updateViewSize() // TODO: respect isSizeDirty
 
 
-      if (viewScroll) {
-        this.view.applyScroll(viewScroll)
+      if (this.updateViewSize()) { // success? // TODO: respect isSizeDirty
+        view.popScroll()
       }
       }
     }
     }
   }
   }

+ 1 - 3
src/View.ts

@@ -384,9 +384,7 @@ export default abstract class View extends InteractiveDateComponent {
 
 
 
 
   applyQueuedScroll() {
   applyQueuedScroll() {
-    if (this.queuedScroll) {
-      this.applyScroll(this.queuedScroll)
-    }
+    this.applyScroll(this.queuedScroll || {})
   }
   }
 
 
 
 

+ 45 - 12
src/component/DateComponent.ts

@@ -151,8 +151,7 @@ export default abstract class DateComponent extends Component {
       forces = {}
       forces = {}
     }
     }
 
 
-    let isSkeletonDirty = forces === true ||
-      !this.isSkeletonRendered
+    let isSkeletonDirty = forces === true
     let isDatesDirty = forces === true ||
     let isDatesDirty = forces === true ||
       isSkeletonDirty ||
       isSkeletonDirty ||
       renderState.dateProfile !== this.dateProfile
       renderState.dateProfile !== this.dateProfile
@@ -178,7 +177,7 @@ export default abstract class DateComponent extends Component {
       this.isEventResizeRendered = false
       this.isEventResizeRendered = false
       this.isSizeDirty = false
       this.isSizeDirty = false
     }
     }
-    if (isDragDirty && this.isDatesRendered) {
+    if (isDragDirty && this.isDragRendered) {
       this.unrenderDrag()
       this.unrenderDrag()
       this.isDragRendered = false
       this.isDragRendered = false
       this.isSizeDirty = true
       this.isSizeDirty = true
@@ -188,9 +187,9 @@ export default abstract class DateComponent extends Component {
       this.isEventsRendered = false
       this.isEventsRendered = false
       this.isSizeDirty = true
       this.isSizeDirty = true
     }
     }
-    if (isSelectionDirty && this.isSkeletonRendered) {
+    if (isSelectionDirty && this.isSelectionRendered) {
       this.unrenderSelection()
       this.unrenderSelection()
-      this.isSkeletonRendered = false
+      this.isSelectionRendered = false
       this.isSizeDirty = true
       this.isSizeDirty = true
     }
     }
     if (isBusinessHoursDirty && this.isBusinessHoursRendered) {
     if (isBusinessHoursDirty && this.isBusinessHoursRendered) {
@@ -212,38 +211,38 @@ export default abstract class DateComponent extends Component {
     assignTo(this, renderState)
     assignTo(this, renderState)
 
 
     // rendering
     // rendering
-    if (isSkeletonDirty) {
+    if (isSkeletonDirty || !this.isSelectionRendered) {
       this.renderSkeleton()
       this.renderSkeleton()
       this.isSkeletonRendered = true
       this.isSkeletonRendered = true
       this.isSizeDirty = true
       this.isSizeDirty = true
     }
     }
-    if (isDatesDirty && renderState.dateProfile) {
+    if ((isDatesDirty || !this.isDatesRendered) && renderState.dateProfile) {
       this.renderDates() // pass in dateProfile too?
       this.renderDates() // pass in dateProfile too?
       this.isDatesRendered = true
       this.isDatesRendered = true
       this.isSizeDirty = true
       this.isSizeDirty = true
     }
     }
-    if (isBusinessHoursDirty && renderState.businessHoursDef && this.isDatesRendered) {
+    if ((isBusinessHoursDirty || !this.isBusinessHoursRendered) && renderState.businessHoursDef && this.isDatesRendered) {
       this.renderBusinessHours(renderState.businessHoursDef)
       this.renderBusinessHours(renderState.businessHoursDef)
       this.isBusinessHoursRendered = true
       this.isBusinessHoursRendered = true
       this.isSizeDirty = true
       this.isSizeDirty = true
     }
     }
-    if (isSelectionDirty && renderState.selection && this.isDatesRendered) {
+    if ((isSelectionDirty || !this.isSelectionRendered) && renderState.selection && this.isDatesRendered) {
       this.renderSelection(renderState.selection)
       this.renderSelection(renderState.selection)
       this.isSelectionRendered = true
       this.isSelectionRendered = true
       this.isSizeDirty = true
       this.isSizeDirty = true
     }
     }
-    if (isEventsDirty && renderState.eventStore && this.isDatesRendered) {
+    if ((isEventsDirty || !this.isEventsRendered) && renderState.eventStore && this.isDatesRendered) {
       this.renderEvents(renderState.eventStore)
       this.renderEvents(renderState.eventStore)
       this.isEventsRendered = true
       this.isEventsRendered = true
       this.isSizeDirty = true
       this.isSizeDirty = true
     }
     }
-    if (isDragDirty && renderState.dragState && this.isDatesRendered) {
+    if ((isDragDirty || !this.isDragRendered) && renderState.dragState && this.isDatesRendered) {
       let { dragState } = renderState
       let { dragState } = renderState
       this.renderDrag(dragState.eventStore, dragState.origSeg, dragState.isTouch)
       this.renderDrag(dragState.eventStore, dragState.origSeg, dragState.isTouch)
       this.isDragRendered = true
       this.isDragRendered = true
       this.isSizeDirty = true
       this.isSizeDirty = true
     }
     }
-    if (isEventResizeDirty && renderState.eventResizeState && this.isDatesRendered) {
+    if ((isEventResizeDirty || !this.isEventResizeRendered) && renderState.eventResizeState && this.isDatesRendered) {
       let { eventResizeState } = renderState
       let { eventResizeState } = renderState
       this.renderEventResize(eventResizeState.eventStore, eventResizeState.origSeg, eventResizeState.isTouch)
       this.renderEventResize(eventResizeState.eventStore, eventResizeState.origSeg, eventResizeState.isTouch)
       this.isEventResizeRendered = true
       this.isEventResizeRendered = true
@@ -259,6 +258,40 @@ export default abstract class DateComponent extends Component {
   }
   }
 
 
 
 
+  removeElement() {
+    if (this.isEventResizeRendered) {
+      this.unrenderEventResize()
+      this.isEventResizeRendered = false
+    }
+    if (this.isDragRendered) {
+      this.unrenderDrag()
+      this.isDragRendered = false
+    }
+    if (this.isEventsRendered) {
+      this.unrenderEvents()
+      this.isEventsRendered = false
+    }
+    if (this.isSelectionRendered) {
+      this.unrenderSelection()
+      this.isSelectionRendered = false
+    }
+    if (this.isBusinessHoursRendered) {
+      this.unrenderBusinessHours()
+      this.isBusinessHoursRendered = false
+    }
+    if (this.isDatesRendered) {
+      this.unrenderDates()
+      this.isDatesRendered = false
+    }
+    if (this.isSkeletonRendered) {
+      this.unrenderSkeleton()
+      this.isSkeletonRendered = false
+    }
+
+    super.removeElement()
+  }
+
+
   // Skeleton
   // Skeleton
   // -----------------------------------------------------------------------------------------------------------------
   // -----------------------------------------------------------------------------------------------------------------
 
 

+ 2 - 1
src/reducers/main.ts

@@ -33,7 +33,7 @@ export function reduce(state: CalendarState, action: any, calendar: Calendar): C
     selection: state.selection,
     selection: state.selection,
     dragState: state.dragState,
     dragState: state.dragState,
     eventResizeState: state.eventResizeState,
     eventResizeState: state.eventResizeState,
-    businessHoursDef: state.businessHoursDef,
+    businessHoursDef: state.businessHoursDef
   }
   }
 
 
   switch(action.type) {
   switch(action.type) {
@@ -47,6 +47,7 @@ export function reduce(state: CalendarState, action: any, calendar: Calendar): C
             action.dateMarker || state.currentDate
             action.dateMarker || state.currentDate
           ) || calendar.view.dateProfile // ummmm.... to get same reference
           ) || calendar.view.dateProfile // ummmm.... to get same reference
         })
         })
+        newState.businessHoursDef = calendar.view.opt('businessHours') // hack
       }
       }
       break
       break