From 63b8f4f6566df3283dee4a03a7796f52849d870d Mon Sep 17 00:00:00 2001 From: matt Date: Sun, 24 Jul 2022 11:46:59 +0000 Subject: [PATCH] Fix date field to amend to timezone offset --- src/collections/Events.ts | 41 ++++++++++++++++++++++++++++++++++++++- src/payload-types.ts | 1 + 2 files changed, 41 insertions(+), 1 deletion(-) 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; }