Просмотр исходного кода

fix event list-item display bugs

Adam Shaw 5 лет назад
Родитель
Сommit
cf0f47c937

+ 13 - 2
packages/core/src/common/slicing-utils.ts

@@ -8,7 +8,7 @@ import { DateSpan, fabricateEventRange } from '../structs/date-span'
 import { EventInteractionState } from '../interactions/event-interaction-state'
 import { Duration } from '../datelib/duration'
 import { memoize } from '../util/memoize'
-import { DateMarker, addMs } from '../datelib/marker'
+import { DateMarker, addMs, addDays } from '../datelib/marker'
 import Calendar from '../Calendar'
 
 export interface SliceableProps {
@@ -40,6 +40,7 @@ export default abstract class Slicer<SegType extends Seg, ExtraArgs extends any[
   private sliceEventResize = memoize(this._sliceInteraction)
 
   abstract sliceRange(dateRange: DateRange, ...extraArgs: ExtraArgs): SegType[]
+  protected forceDayIfListItem = false // hack
 
   sliceProps(
     props: SliceableProps,
@@ -192,7 +193,17 @@ export default abstract class Slicer<SegType extends Seg, ExtraArgs extends any[
     eventRange: EventRenderRange,
     extraArgs: ExtraArgs
   ): SegType[] {
-    let segs = this.sliceRange(eventRange.range, ...extraArgs)
+    let dateRange = eventRange.range
+
+    // hack to make multi-day events that are being force-displayed as list-items to take up only one day
+    if (this.forceDayIfListItem && eventRange.ui.display === 'list-item') {
+      dateRange = {
+        start: dateRange.start,
+        end: addDays(dateRange.start, 1)
+      }
+    }
+
+    let segs = this.sliceRange(dateRange, ...extraArgs)
 
     for (let seg of segs) {
       seg.eventRange = eventRange

+ 1 - 1
packages/core/src/component/event-ui.ts

@@ -38,7 +38,7 @@ export interface EventUi {
 export type EventUiHash = { [defId: string]: EventUi }
 
 export const UNSCOPED_EVENT_UI_PROPS = {
-  display: String,
+  display: null, // TODO: string?
   editable: Boolean,
   startEditable: Boolean,
   durationEditable: Boolean,

+ 2 - 0
packages/daygrid/src/DayTable.tsx

@@ -113,6 +113,8 @@ export default class DayTable extends DateComponent<DayTableProps, ComponentCont
 
 export class DayTableSlicer extends Slicer<TableSeg, [DayTableModel]> {
 
+  forceDayIfListItem = true
+
   sliceRange(dateRange: DateRange, dayTableModel: DayTableModel): TableSeg[] {
     return dayTableModel.sliceRange(dateRange)
   }