From 882ceede7f60f615acf6b0153e8344003fd0dc43 Mon Sep 17 00:00:00 2001 From: "Simen A. W. Olsen" Date: Fri, 24 Nov 2023 11:17:37 +0100 Subject: [PATCH] Add read-only property to membershipYear status field, improve user experience --- schemas/membership-year.ts | 14 ++++++++++++++ schemas/membership.ts | 5 +++++ 2 files changed, 19 insertions(+) diff --git a/schemas/membership-year.ts b/schemas/membership-year.ts index 4fd154b..8e38fea 100644 --- a/schemas/membership-year.ts +++ b/schemas/membership-year.ts @@ -1,6 +1,18 @@ import { HiBookOpen } from 'react-icons/hi2'; import { defineType } from 'sanity'; +function isDevMode() { + const devInSearch = window ? window.location.search.includes('dev') : false; + const devInLocalStorage = localStorage + ? localStorage.getItem('devMode') === 'true' + : false; + const devModeEnabled = devInLocalStorage || devInSearch; + return devModeEnabled; +} + +const isDevelopment = process.env.NODE_ENV === 'development'; +const showStatus = (isDevelopment || isDevMode()); + export default defineType({ name: 'membershipYear', type: 'document', @@ -14,6 +26,7 @@ export default defineType({ validation: Rule => Rule.required(), // Default to current year initialValue: new Date().getFullYear(), + readOnly: ({ document }) => Boolean(document?._id), }, { name: 'status', @@ -26,6 +39,7 @@ export default defineType({ ], }, validation: Rule => Rule.required(), + readOnly: showStatus, }, ], preview: { diff --git a/schemas/membership.ts b/schemas/membership.ts index 75a26c1..45c6d13 100644 --- a/schemas/membership.ts +++ b/schemas/membership.ts @@ -27,6 +27,7 @@ export default defineType({ type: 'document', title: 'Medlemskap', icon: HiIdentification, + description: 'Heisann der!', preview: { select: { givenName: 'member.givenName', @@ -56,11 +57,15 @@ export default defineType({ ], fields: [ { + title: 'Medlemskapsår', name: 'year', type: 'reference', to: [{ type: 'membershipYear' }], validation: Rule => Rule.required(), initialValue: getCurrentYearRef, + options: { + disableNew: true, + } }, { name: 'status',