diff --git a/src/collections/Events.ts b/src/collections/Events.ts index 9f09096..735b5f1 100644 --- a/src/collections/Events.ts +++ b/src/collections/Events.ts @@ -6,6 +6,14 @@ const Events: CollectionConfig = { useAsTitle: 'name' }, timestamps: false, + hooks: { + afterRead: [ + ({ doc }) => { + delete doc.UTCOffset; + return doc; + } + ] + }, fields: [ { name: 'name', @@ -37,6 +45,17 @@ const Events: CollectionConfig = { timeFormat: 'HH:mm', timeIntervals: 15 } + }, + hooks: { + beforeValidate: [ ({ value, siblingData }) => { + const d = new Date(value); + + const hourOffset = parseInt(siblingData.UTCOffset) / -60; + + d.setHours(d.getHours() + hourOffset); + + return d; + } ] } }, { @@ -62,10 +81,30 @@ const Events: CollectionConfig = { timeFormat: 'HH:mm', timeIntervals: 15 } + }, + hooks: { + beforeValidate: [ ({ value, siblingData }) => { + const d = new Date(value); + + const hourOffset = parseInt(siblingData.UTCOffset) / -60; + + d.setHours(d.getHours() + hourOffset); + + return d; + } ] } } ] - } + }, + { + name: 'UTCOffset', + type: 'text', + defaultValue: () => new Date().getTimezoneOffset(), + admin: { + position: 'sidebar', + readOnly: true, + }, + }, ] }; diff --git a/src/payload-types.ts b/src/payload-types.ts index a20d50d..7ce23dd 100644 --- a/src/payload-types.ts +++ b/src/payload-types.ts @@ -41,4 +41,5 @@ export interface Event { }; startTime: string; endTime?: string; + UTCOffset?: string; }