From 8fb89d0d60393ee28dacd508d38dc943d95ee007 Mon Sep 17 00:00:00 2001 From: sxpydo Date: Wed, 14 May 2025 15:49:45 +0100 Subject: [PATCH 1/6] added title text for the event survey URL field, in the same way as we have for post-resources --- src/components/semantic/metaItems.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/semantic/metaItems.tsx b/src/components/semantic/metaItems.tsx index 343188ed..7972ea43 100644 --- a/src/components/semantic/metaItems.tsx +++ b/src/components/semantic/metaItems.tsx @@ -137,7 +137,7 @@ export const MetaItems = asMetaItems({ reservations: ["Reservations", { presenter: ReservationsMetaPresenter }], preResources: ["Pre-Resources", { presenter: ResourcesMetaPresenter }], postResources: ["Post-Resources", { presenter: ResourcesMetaPresenter }], - eventSurvey: "Event Survey URL", + eventSurvey: ["Event Survey URL", { presenter: ResourcesMetaPresenter }], }); function ReservationsMetaPresenter(props: MetaItemPresenterProps) { From b1e54bd9d8e20d8cb103b663d965faedb968429c Mon Sep 17 00:00:00 2001 From: sxpydo Date: Thu, 15 May 2025 10:08:22 +0100 Subject: [PATCH 2/6] removed text URL from the prop --- src/components/semantic/metaItems.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/semantic/metaItems.tsx b/src/components/semantic/metaItems.tsx index 7972ea43..07ddab5e 100644 --- a/src/components/semantic/metaItems.tsx +++ b/src/components/semantic/metaItems.tsx @@ -137,7 +137,7 @@ export const MetaItems = asMetaItems({ reservations: ["Reservations", { presenter: ReservationsMetaPresenter }], preResources: ["Pre-Resources", { presenter: ResourcesMetaPresenter }], postResources: ["Post-Resources", { presenter: ResourcesMetaPresenter }], - eventSurvey: ["Event Survey URL", { presenter: ResourcesMetaPresenter }], + eventSurvey: ["Event Survey", { presenter: ResourcesMetaPresenter }], }); function ReservationsMetaPresenter(props: MetaItemPresenterProps) { From 2f618b266b79cf2cdde814396d4b38081dc1d177 Mon Sep 17 00:00:00 2001 From: sxpydo Date: Thu, 15 May 2025 11:39:18 +0100 Subject: [PATCH 3/6] updated eventSurvey type to empty doc file --- src/services/emptyDocuments.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/emptyDocuments.ts b/src/services/emptyDocuments.ts index 0d9f7dfa..5bf63365 100644 --- a/src/services/emptyDocuments.ts +++ b/src/services/emptyDocuments.ts @@ -96,7 +96,7 @@ const emptyDocuments: Document[] = [ eventStatus: "CLOSED", preResources: [], postResources: [], - eventSurvey: "", + eventSurvey: [], emailEventDetails: "Check the online events page for additional details.", emailConfirmedBookingText: "", emailWaitingListBookingText: "", From 64b49cf3df3fca28621c3e4f26541ed6d6e16c84 Mon Sep 17 00:00:00 2001 From: sxpydo Date: Thu, 5 Jun 2025 09:38:55 +0100 Subject: [PATCH 4/6] not part of this PR, however it might be nice to update the default date so that it is better for creating new dates --- src/services/emptyDocuments.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/emptyDocuments.ts b/src/services/emptyDocuments.ts index 5bf63365..06affe72 100644 --- a/src/services/emptyDocuments.ts +++ b/src/services/emptyDocuments.ts @@ -91,7 +91,7 @@ const emptyDocuments: Document[] = [ altText: "", id: "eventThumbnail", }, - date: 1722470400000, + date: 1743807600000, numberOfPlaces: 20, eventStatus: "CLOSED", preResources: [], From ddda40e5320db9b8e8021ff0d724139fa3a61267 Mon Sep 17 00:00:00 2001 From: sxpydo Date: Thu, 5 Jun 2025 11:17:49 +0100 Subject: [PATCH 5/6] feat: update eventSurvey field to single editable item in meta items - Refactored eventSurvey presenter in metaItems.tsx to display a single editable title and URL field using MetaItemPresenter - Removed add, remove, and reorder buttons to reflect new API model (eventSurvey is now a single ExternalReference, not an array) - Ensured fields are always visible and editable, even if eventSurvey is null - Improved type safety and consistency with other meta item presenters --- src/components/semantic/metaItems.tsx | 50 ++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/src/components/semantic/metaItems.tsx b/src/components/semantic/metaItems.tsx index 07ddab5e..151909c6 100644 --- a/src/components/semantic/metaItems.tsx +++ b/src/components/semantic/metaItems.tsx @@ -137,7 +137,55 @@ export const MetaItems = asMetaItems({ reservations: ["Reservations", { presenter: ReservationsMetaPresenter }], preResources: ["Pre-Resources", { presenter: ResourcesMetaPresenter }], postResources: ["Post-Resources", { presenter: ResourcesMetaPresenter }], - eventSurvey: ["Event Survey", { presenter: ResourcesMetaPresenter }], + eventSurvey: [ + "Event Survey", + { + presenter: ({ + doc, + prop, + update, + }: { + doc: Content; + prop: string; + name: string; + update?: (newDoc: Content) => void; + }) => { + // Ensure survey is always an object, never null + const survey = (doc[prop as keyof Content] as ExternalReference | null) ?? { title: "", url: "" }; + + // Update handler for a field + const updateSurvey = (newSurvey: Partial) => { + if (update) { + update({ + ...doc, + [prop]: { + ...survey, + ...newSurvey, + }, + }); + } + }; + + return ( + <> + + Title + URL + + + + + + + + + + + + ); + }, + }, + ], }); function ReservationsMetaPresenter(props: MetaItemPresenterProps) { From f7ebd9220730b035f038fa22e4d82bcf74dbc217 Mon Sep 17 00:00:00 2001 From: sxpydo Date: Thu, 5 Jun 2025 11:27:32 +0100 Subject: [PATCH 6/6] refactor: replace eventSurvey inline presenter with reusable EventSurveyMetaPresenter component - Created EventSurveyMetaPresenter as a dedicated function component for editing eventSurvey fields - Ensured eventSurvey fields (title, url) are always visible and editable, with no add/remove/reorder buttons - Improved type safety and consistency with other meta item presenters - Updated metaItems.tsx to use the new presenter for eventSurvey --- src/components/semantic/metaItems.tsx | 86 ++++++++++++--------------- 1 file changed, 37 insertions(+), 49 deletions(-) diff --git a/src/components/semantic/metaItems.tsx b/src/components/semantic/metaItems.tsx index 151909c6..288b5f10 100644 --- a/src/components/semantic/metaItems.tsx +++ b/src/components/semantic/metaItems.tsx @@ -137,55 +137,7 @@ export const MetaItems = asMetaItems({ reservations: ["Reservations", { presenter: ReservationsMetaPresenter }], preResources: ["Pre-Resources", { presenter: ResourcesMetaPresenter }], postResources: ["Post-Resources", { presenter: ResourcesMetaPresenter }], - eventSurvey: [ - "Event Survey", - { - presenter: ({ - doc, - prop, - update, - }: { - doc: Content; - prop: string; - name: string; - update?: (newDoc: Content) => void; - }) => { - // Ensure survey is always an object, never null - const survey = (doc[prop as keyof Content] as ExternalReference | null) ?? { title: "", url: "" }; - - // Update handler for a field - const updateSurvey = (newSurvey: Partial) => { - if (update) { - update({ - ...doc, - [prop]: { - ...survey, - ...newSurvey, - }, - }); - } - }; - - return ( - <> - - Title - URL - - - - - - - - - - - - ); - }, - }, - ], + eventSurvey: ["Event Survey", { presenter: EventSurveyMetaPresenter }], }); function ReservationsMetaPresenter(props: MetaItemPresenterProps) { @@ -474,3 +426,39 @@ function ResourcesMetaPresenter({ doc, update, prop, name }: MetaItemPresenterPr ); } + +export function EventSurveyMetaPresenter(props: MetaItemPresenterProps) { + // Ensure survey is always an object, never null + const survey = (props.doc[props.prop as keyof Content] as ExternalReference | null) ?? { title: "", url: "" }; + + // Update handler for a field + const updateSurvey = (newSurvey: Partial) => { + if (props.update) { + props.update({ + ...props.doc, + [props.prop]: { + ...survey, + ...newSurvey, + }, + }); + } + }; + + return ( + <> + + Title + URL + + + + + + + + + + + + ); +}