Adam Shaw hace 6 años
padre
commit
1a9258f9a7

+ 1 - 1
packages-premium

@@ -1 +1 @@
-Subproject commit 208aca46fc2fad98381a99abfbb14e9466e2b647
+Subproject commit 38563a353da1b095dcd59f6ca791742c9682e469

+ 46 - 2
packages/core/src/Calendar.tsx

@@ -36,6 +36,7 @@ import { TaskRunner, DelayedRunner } from './util/runner'
 import ViewApi from './ViewApi'
 import NowTimer, { NowTimerCallback } from './NowTimer'
 import { globalPlugins } from './global-plugins'
+import { removeExact } from './util/array'
 
 
 export interface DateClickApi extends DatePointApi {
@@ -58,6 +59,8 @@ export type CalendarInteractionClass = { new(calendar: Calendar): CalendarIntera
 export type OptionChangeHandler = (propValue: any, calendar: Calendar, deepEqual) => void
 export type OptionChangeHandlerMap = { [propName: string]: OptionChangeHandler }
 
+export type ResizeHandler = (force: boolean) => void
+
 export default class Calendar {
 
   // global handler registry
@@ -98,6 +101,7 @@ export default class Calendar {
   public dateEnv: DateEnv
   public defaultAllDayEventDuration: Duration
   public defaultTimedEventDuration: Duration
+  private resizeHandlers: ResizeHandler[] = []
 
   // interaction
   calendarInteractions: CalendarInteraction[]
@@ -173,6 +177,7 @@ export default class Calendar {
       this.renderableEventStore = createEmptyEventStore()
       this.renderRunner.request()
       flushToDom()
+      window.addEventListener('resize', this.handleWindowResize)
     }
   }
 
@@ -181,6 +186,8 @@ export default class Calendar {
     if (this.isRendering) {
       this.isRendering = false
       this.renderRunner.request()
+      this.resizeRunner.clear()
+      window.removeEventListener('resize', this.handleWindowResize)
     }
   }
 
@@ -812,8 +819,45 @@ export default class Calendar {
 
 
   updateSize() { // public
-    if (this.component) {
-      this.component.triggerResizeHandlers(true)
+    this.triggerResizeHandlers(true)
+  }
+
+
+  // RE-Sizing
+  // -----------------------------------------------------------------------------------------------------------------
+
+
+  resizeRunner = new DelayedRunner(() => {
+    this.triggerResizeHandlers(false)
+    this.publiclyTrigger('windowResize', [ this.context.view ])
+  })
+
+
+  handleWindowResize = (ev: UIEvent) => {
+    let { options } = this.context
+
+    if (
+      options.handleWindowResize &&
+      ev.target === window // avoid jqui events
+    ) {
+      this.resizeRunner.request(options.windowResizeDelay)
+    }
+  }
+
+
+  addResizeHandler = (handler: ResizeHandler) => {
+    this.resizeHandlers.push(handler)
+  }
+
+
+  removeResizeHandler = (handler: ResizeHandler) => {
+    removeExact(this.resizeHandlers, handler)
+  }
+
+
+  triggerResizeHandlers(forced: boolean) {
+    for (let handler of this.resizeHandlers) {
+      handler(forced)
     }
   }
 

+ 0 - 52
packages/core/src/CalendarComponent.tsx

@@ -15,10 +15,8 @@ import { h, Fragment, createRef } from './vdom'
 import { BaseComponent, subrenderer } from './vdom-util'
 import { buildDelegationHandler } from './util/dom-event'
 import { capitaliseFirstLetter } from './util/misc'
-import { DelayedRunner } from './util/runner'
 import { applyStyleProp } from './util/dom-manip'
 import ViewContainer from './ViewContainer'
-import { removeExact } from './util/array'
 
 
 export interface CalendarComponentProps extends CalendarState {
@@ -29,8 +27,6 @@ export interface CalendarComponentProps extends CalendarState {
   title: string
 }
 
-export type ResizeHandler = (force: boolean) => void
-
 export default class CalendarComponent extends BaseComponent<CalendarComponentProps> {
 
   private buildViewContext = memoize(buildContext)
@@ -43,7 +39,6 @@ export default class CalendarComponent extends BaseComponent<CalendarComponentPr
   private headerRef = createRef<Toolbar>()
   private footerRef = createRef<Toolbar>()
   private viewRef = createRef<View>()
-  private resizeHandlers: ResizeHandler[] = []
 
   get view() { return this.viewRef.current }
 
@@ -107,15 +102,8 @@ export default class CalendarComponent extends BaseComponent<CalendarComponentPr
   }
 
 
-  componentDidMount() {
-    window.addEventListener('resize', this.handleWindowResize)
-  }
-
-
   componentWillUnmount() {
     this.subrenderDestroy()
-    this.resizeRunner.clear()
-    window.removeEventListener('resize', this.handleWindowResize)
   }
 
 
@@ -203,46 +191,6 @@ export default class CalendarComponent extends BaseComponent<CalendarComponentPr
     )
   }
 
-
-  // Sizing
-  // -----------------------------------------------------------------------------------------------------------------
-
-
-  resizeRunner = new DelayedRunner(() => {
-    this.triggerResizeHandlers(false)
-    let { calendar, view } = this.context
-    calendar.publiclyTrigger('windowResize', [ view ])
-  })
-
-
-  handleWindowResize = (ev: UIEvent) => {
-    let { options } = this.context
-
-    if (
-      options.handleWindowResize &&
-      ev.target === window // avoid jqui events
-    ) {
-      this.resizeRunner.request(options.windowResizeDelay)
-    }
-  }
-
-
-  addResizeHandler = (handler: ResizeHandler) => {
-    this.resizeHandlers.push(handler)
-  }
-
-
-  removeResizeHandler = (handler: ResizeHandler) => {
-    removeExact(this.resizeHandlers, handler)
-  }
-
-
-  triggerResizeHandlers(forced: boolean) {
-    for (let handler of this.resizeHandlers) {
-      handler(forced)
-    }
-  }
-
 }
 
 

+ 3 - 3
packages/core/src/component/ComponentContext.ts

@@ -1,5 +1,5 @@
 import Calendar from '../Calendar'
-import { ResizeHandler } from '../CalendarComponent'
+import { ResizeHandler } from '../Calendar'
 import ViewApi from '../ViewApi'
 import Theme from '../theme/Theme'
 import { DateEnv } from '../datelib/env'
@@ -49,8 +49,8 @@ export function buildContext(
     view,
     options,
     ...computeContextProps(options, theme, calendar),
-    addResizeHandler: calendar.component.addResizeHandler,
-    removeResizeHandler: calendar.component.removeResizeHandler,
+    addResizeHandler: calendar.addResizeHandler,
+    removeResizeHandler: calendar.removeResizeHandler,
     createNowIndicatorTimer: calendar.createNowIndicatorTimer
   }
 }

+ 0 - 1
packages/core/src/styles/_resets.scss

@@ -26,7 +26,6 @@
   }
 
   th, td {
-    border: 1px solid $unthemed-border-color;
     padding: 0;
     vertical-align: top;
   }

+ 18 - 5
packages/core/src/styles/_scrollgrid.scss

@@ -47,17 +47,30 @@
   white-space: nowrap;
 }
 
-.fc--ltr .shrink {
+.fc-ltr .shrink {
   float: left;
 }
 
-.fc--rtl .shrink {
+.fc-rtl .shrink {
   float: right;
 }
 
 
-@media print { // TODO: use fc-print, just like everywhere else
-  .scrollgrid {
-    table-layout: auto;
+.scrollgrid.scrollgrid--forprint { // will eventually have precedence of `.fc-print .scrollgrid`
+  table-layout: auto;
+}
+
+.scrollgrid--forprint {
+
+  .cell-content-wrap {
+    height: auto !important; // override inline
   }
+
+  .fc-sticky {
+    top: 0 !important;
+    right: 0 !important;
+    left: 0 !important;
+    bottom: 0 !important;
+  }
+
 }