Adam Shaw 7 yıl önce
ebeveyn
işleme
3ea03c01eb

+ 1 - 1
src/View.ts

@@ -654,7 +654,7 @@ export default abstract class View extends InteractiveDateComponent {
     // trigger 'drop' regardless of whether element represents an event
     this.publiclyTrigger('drop', [
       {
-        date: dateEnv.toDate(singleEventDef.dateProfile.start),
+        date: dateEnv.toDate(singleEventDef.dateProfile.unzonedRange.start),
         isAllDay: singleEventDef.dateProfile.isAllDay,
         jsEvent: ev,
         view: this

+ 1 - 1
src/component/interactions/ExternalDropping.ts

@@ -226,7 +226,7 @@ export default class ExternalDropping extends Interaction {
     eventDef = SingleEventDef.parse(
       assignTo({}, meta.eventProps, {
         start: dateEnv.toDate(start), // inefficient to convert back
-        end: dateEnv.toDate(end) // inefficient to convert back
+        end: end ? dateEnv.toDate(end) : null // inefficient to convert back
       }),
       new EventSource(calendar)
     )

+ 1 - 1
src/datelib/duration.ts

@@ -28,7 +28,7 @@ export interface Duration {
 }
 
 const INTERNAL_UNITS = [ 'year', 'month', 'day', 'time' ]
-const PARSE_RE = /^(?:(\d+)\.)?(\d\d):(\d\d)(?::(\d\d)(?:\.(\d\d\d))?)?/
+const PARSE_RE = /^(?:(\d+)\.)?(\d+):(\d\d)(?::(\d\d)(?:\.(\d\d\d))?)?/
 
 
 // Parsing and Creation

+ 10 - 2
src/datelib/env.ts

@@ -90,12 +90,16 @@ export class DateEnv {
     if (typeof input === 'number') {
       marker = this.timestampToMarker(input)
     } else if (input instanceof Date) {
-      marker = this.timestampToMarker(input.valueOf())
+      input = input.valueOf()
+
+      if (!isNaN(input)) {
+        marker = this.timestampToMarker(input)
+      }
     } else if (Array.isArray(input)) {
       marker = arrayToUtcDate(input)
     }
 
-    if (marker === null) {
+    if (marker === null || isNaN(marker.valueOf())) {
       return null
     }
 
@@ -104,6 +108,10 @@ export class DateEnv {
 
   parse(s: string) {
     let parts = parse(s)
+    if (parts === null) {
+      return null
+    }
+
     let marker = parts.marker
     let forcedTimeZoneOffset = null
 

+ 3 - 3
src/models/event/EventDateProfile.ts

@@ -39,9 +39,9 @@ export default class EventDateProfile {
 
     let calendar: Calendar = source.calendar
     let startMeta = calendar.dateEnv.createMarkerMeta(startInput)
-    let startMarker = startMeta.marker
-    let endMeta = endInput ? calendar.dateEnv.createMarkerMeta(endInput) : null
-    let endMarker = endMeta ? endMeta.marker : null
+    let startMarker = startMeta && startMeta.marker
+    let endMeta = endInput && calendar.dateEnv.createMarkerMeta(endInput)
+    let endMarker = endMeta && endMeta.marker
     let forcedAllDay = rawProps.allDay
     let forceEventDuration = calendar.opt('forceEventDuration')