From 9bf4f26b1d040a6d2ec289224cdef0f3b33763f4 Mon Sep 17 00:00:00 2001
From: Stefan Probst <stefanprobst@posteo.de>
Date: Mon, 23 Sep 2024 11:09:43 +0200
Subject: [PATCH 1/3] fix: remove accessible-at field from workflow edit form

---
 src/components/item-form/WorkflowForm.tsx     |  6 ++--
 .../item-form/WorkflowMainFormSection.tsx     | 32 +++++++++++++++++++
 2 files changed, 35 insertions(+), 3 deletions(-)
 create mode 100644 src/components/item-form/WorkflowMainFormSection.tsx

diff --git a/src/components/item-form/WorkflowForm.tsx b/src/components/item-form/WorkflowForm.tsx
index d4b1d975..2affb217 100644
--- a/src/components/item-form/WorkflowForm.tsx
+++ b/src/components/item-form/WorkflowForm.tsx
@@ -11,11 +11,11 @@ import { FormSections } from '@/components/common/FormSections'
 import { ActorFormSection } from '@/components/item-form/ActorFormSection'
 import { DateFormSection } from '@/components/item-form/DateFormSection'
 import { ItemFormControls } from '@/components/item-form/ItemFormControls'
-import { MainFormSection } from '@/components/item-form/MainFormSection'
 import { MediaFormSection } from '@/components/item-form/MediaFormSection'
 import { PropertyFormSection } from '@/components/item-form/PropertyFormSection'
 import { RelatedItemFormSection } from '@/components/item-form/RelatedItemFormSection'
 import { ThumbnailFormSection } from '@/components/item-form/ThumbnailFormSection'
+import { WorkflowMainFormSection } from '@/components/item-form/WorkflowMainFormSection'
 import type { ItemFormFields } from '@/components/item-form/useItemFormFields'
 import { useWorkflowFormFields } from '@/components/item-form/useWorkflowFormFields'
 import type { WorkflowFormPage } from '@/components/item-form/useWorkflowFormPage'
@@ -151,7 +151,7 @@ function WorkflowFormSections(props: WorkflowFormSectionsProps): JSX.Element {
 
   return (
     <FormSections>
-      <MainFormSection formFields={formFields} />
+      <WorkflowMainFormSection formFields={formFields} />
       <DateFormSection formFields={formFields} />
       <ActorFormSection formFields={formFields} />
       <PropertyFormSection formFields={formFields} />
@@ -279,7 +279,7 @@ function WorkflowStepFormSections(props: WorkflowStepFormSectionsProps): JSX.Ele
 
   return (
     <FormSections>
-      <MainFormSection formFields={formFields} />
+      <WorkflowMainFormSection formFields={formFields} />
       <PropertyFormSection formFields={formFields} />
       <MediaFormSection formFields={formFields} />
       <RelatedItemFormSection formFields={formFields} />
diff --git a/src/components/item-form/WorkflowMainFormSection.tsx b/src/components/item-form/WorkflowMainFormSection.tsx
new file mode 100644
index 00000000..4a4a674e
--- /dev/null
+++ b/src/components/item-form/WorkflowMainFormSection.tsx
@@ -0,0 +1,32 @@
+import { VisuallyHidden } from '@react-aria/visually-hidden'
+
+import { FormSection } from '@/components/common/FormSection'
+import { FormSectionTitle } from '@/components/common/FormSectionTitle'
+import { AccessibleAtFormFieldArray } from '@/components/item-form/AccessibleAtFormFieldArray'
+import { ExternalIdsFormFieldArray } from '@/components/item-form/ExternalIdsFormFieldArray'
+import type { ItemFormFields } from '@/components/item-form/useItemFormFields'
+import { FormTextArea } from '@/lib/core/form/FormTextArea'
+import { FormTextField } from '@/lib/core/form/FormTextField'
+import { useI18n } from '@/lib/core/i18n/useI18n'
+
+export interface WorkflowMainFormSectionProps {
+  formFields: ItemFormFields
+}
+
+export function WorkflowMainFormSection(props: WorkflowMainFormSectionProps): JSX.Element {
+  const { fields } = props.formFields
+
+  const { t } = useI18n<'authenticated' | 'common'>()
+
+  return (
+    <FormSection>
+      <VisuallyHidden>
+        <FormSectionTitle>{t(['authenticated', 'forms', 'main-section'])}</FormSectionTitle>
+      </VisuallyHidden>
+      <FormTextField {...fields.label} />
+      <FormTextField {...fields.version} />
+      <FormTextArea {...fields.description} rows={6} />
+      <ExternalIdsFormFieldArray field={fields.externalIds} />
+    </FormSection>
+  )
+}

From f7fa16610252e862643c037d7c5e85b980a200b4 Mon Sep 17 00:00:00 2001
From: Stefan Probst <stefanprobst@posteo.de>
Date: Mon, 23 Sep 2024 11:17:39 +0200
Subject: [PATCH 2/3] fix: remove accessible-at, external-ids, version, and
 media fields from step form

---
 src/components/item-form/WorkflowForm.tsx     |  6 ++--
 .../item-form/WorkflowMainFormSection.tsx     |  1 -
 .../item-form/WorkflowStepMainFormSection.tsx | 28 +++++++++++++++++++
 3 files changed, 31 insertions(+), 4 deletions(-)
 create mode 100644 src/components/item-form/WorkflowStepMainFormSection.tsx

diff --git a/src/components/item-form/WorkflowForm.tsx b/src/components/item-form/WorkflowForm.tsx
index 2affb217..18d5b20a 100644
--- a/src/components/item-form/WorkflowForm.tsx
+++ b/src/components/item-form/WorkflowForm.tsx
@@ -15,13 +15,14 @@ import { MediaFormSection } from '@/components/item-form/MediaFormSection'
 import { PropertyFormSection } from '@/components/item-form/PropertyFormSection'
 import { RelatedItemFormSection } from '@/components/item-form/RelatedItemFormSection'
 import { ThumbnailFormSection } from '@/components/item-form/ThumbnailFormSection'
-import { WorkflowMainFormSection } from '@/components/item-form/WorkflowMainFormSection'
 import type { ItemFormFields } from '@/components/item-form/useItemFormFields'
 import { useWorkflowFormFields } from '@/components/item-form/useWorkflowFormFields'
 import type { WorkflowFormPage } from '@/components/item-form/useWorkflowFormPage'
 import { useWorkflowStepFormFields } from '@/components/item-form/useWorkflowStepFormFields'
 import { useWorkflowStepFormRecommendedFields } from '@/components/item-form/useWorkflowStepFormRecommendedFields'
 import { WorkflowFormNavigation } from '@/components/item-form/WorkflowFormNavigation'
+import { WorkflowMainFormSection } from '@/components/item-form/WorkflowMainFormSection'
+import { WorkflowStepMainFormSection } from '@/components/item-form/WorkflowStepMainFormSection'
 import { WorkflowStepPreview } from '@/components/item-form/WorkflowStepPreview'
 import { WorkflowTitle } from '@/components/item-form/WorkflowTitle'
 import type { Workflow, WorkflowInput } from '@/data/sshoc/api/workflow'
@@ -279,9 +280,8 @@ function WorkflowStepFormSections(props: WorkflowStepFormSectionsProps): JSX.Ele
 
   return (
     <FormSections>
-      <WorkflowMainFormSection formFields={formFields} />
+      <WorkflowStepMainFormSection formFields={formFields} />
       <PropertyFormSection formFields={formFields} />
-      <MediaFormSection formFields={formFields} />
       <RelatedItemFormSection formFields={formFields} />
 
       <FormControls>
diff --git a/src/components/item-form/WorkflowMainFormSection.tsx b/src/components/item-form/WorkflowMainFormSection.tsx
index 4a4a674e..84d5cfb6 100644
--- a/src/components/item-form/WorkflowMainFormSection.tsx
+++ b/src/components/item-form/WorkflowMainFormSection.tsx
@@ -2,7 +2,6 @@ import { VisuallyHidden } from '@react-aria/visually-hidden'
 
 import { FormSection } from '@/components/common/FormSection'
 import { FormSectionTitle } from '@/components/common/FormSectionTitle'
-import { AccessibleAtFormFieldArray } from '@/components/item-form/AccessibleAtFormFieldArray'
 import { ExternalIdsFormFieldArray } from '@/components/item-form/ExternalIdsFormFieldArray'
 import type { ItemFormFields } from '@/components/item-form/useItemFormFields'
 import { FormTextArea } from '@/lib/core/form/FormTextArea'
diff --git a/src/components/item-form/WorkflowStepMainFormSection.tsx b/src/components/item-form/WorkflowStepMainFormSection.tsx
new file mode 100644
index 00000000..8bbd581a
--- /dev/null
+++ b/src/components/item-form/WorkflowStepMainFormSection.tsx
@@ -0,0 +1,28 @@
+import { VisuallyHidden } from '@react-aria/visually-hidden'
+
+import { FormSection } from '@/components/common/FormSection'
+import { FormSectionTitle } from '@/components/common/FormSectionTitle'
+import type { ItemFormFields } from '@/components/item-form/useItemFormFields'
+import { FormTextArea } from '@/lib/core/form/FormTextArea'
+import { FormTextField } from '@/lib/core/form/FormTextField'
+import { useI18n } from '@/lib/core/i18n/useI18n'
+
+export interface WorkflowMainFormSectionProps {
+  formFields: ItemFormFields
+}
+
+export function WorkflowMainFormSection(props: WorkflowMainFormSectionProps): JSX.Element {
+  const { fields } = props.formFields
+
+  const { t } = useI18n<'authenticated' | 'common'>()
+
+  return (
+    <FormSection>
+      <VisuallyHidden>
+        <FormSectionTitle>{t(['authenticated', 'forms', 'main-section'])}</FormSectionTitle>
+      </VisuallyHidden>
+      <FormTextField {...fields.label} />
+      <FormTextArea {...fields.description} rows={6} />
+    </FormSection>
+  )
+}

From 42b0bfc44c9a9459f21b54e03a38c0f1e48c2415 Mon Sep 17 00:00:00 2001
From: Stefan Probst <stefanprobst@posteo.de>
Date: Mon, 23 Sep 2024 11:33:54 +0200
Subject: [PATCH 3/3] fix: update list of recommended properties for workflow
 and step forms

---
 .../useWorkflowFormRecommendedFields.ts       |  8 +++---
 .../useWorkflowStepFormRecommendedFields.ts   | 25 ++++++++++++++++++-
 2 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/src/components/item-form/useWorkflowFormRecommendedFields.ts b/src/components/item-form/useWorkflowFormRecommendedFields.ts
index 6fbdeead..033340f4 100644
--- a/src/components/item-form/useWorkflowFormRecommendedFields.ts
+++ b/src/components/item-form/useWorkflowFormRecommendedFields.ts
@@ -9,7 +9,7 @@ const recommendedFields = {
   // label: '',
   // description: '',
   contributors: [{ role: { code: undefined }, actor: { id: undefined } }],
-  accessibleAt: [undefined],
+  // accessibleAt: [undefined],
   externalIds: [{ identifier: undefined, identifierService: { code: undefined } }],
   relatedItems: [{ relation: { code: undefined }, persistentId: undefined }],
 }
@@ -19,12 +19,10 @@ const recommendedProperties = [
   'keyword',
   'discipline',
   'language',
-  'intended-audience',
-  'see-also',
-  'license',
-  'terms-of-use-url',
   'standard',
   'resource-category',
+  'see-also',
+  'license',
 ]
 
 const properties: Array<
diff --git a/src/components/item-form/useWorkflowStepFormRecommendedFields.ts b/src/components/item-form/useWorkflowStepFormRecommendedFields.ts
index c6555cc2..ea2f5bf8 100644
--- a/src/components/item-form/useWorkflowStepFormRecommendedFields.ts
+++ b/src/components/item-form/useWorkflowStepFormRecommendedFields.ts
@@ -1,12 +1,35 @@
+import type { StaticResult as PropertyTypes } from '@/components/item-form/property-types.static'
+import _propertyTypes from '@/components/item-form/property-types.static'
+import type { PropertyTypeConcept, PropertyTypeScalar } from '@/data/sshoc/api/property'
 import type { WorkflowStepInput } from '@/data/sshoc/api/workflow-step'
 
+const propertyTypes = _propertyTypes as unknown as PropertyTypes
+
 const recommendedFields = {
   // label: '',
   // description: '',
   relatedItems: [{ relation: { code: undefined }, persistentId: undefined }],
 }
 
-const fields = { ...recommendedFields }
+const recommendedProperties = ['activity', 'keyword', 'inputformat', 'outputformat']
+
+const properties: Array<
+  | { type: PropertyTypeConcept; concept: { uri: undefined } }
+  | { type: PropertyTypeScalar; value: undefined }
+> = []
+
+recommendedProperties.forEach((id) => {
+  const propertyType = propertyTypes[id]
+  if (propertyType != null) {
+    if (propertyType.type === 'concept') {
+      properties.push({ type: propertyType, concept: { uri: undefined } })
+    } else {
+      properties.push({ type: propertyType, value: undefined })
+    }
+  }
+})
+
+const fields = { ...recommendedFields, properties }
 
 export function useWorkflowStepFormRecommendedFields(): Partial<WorkflowStepInput> {
   return fields as unknown as Partial<WorkflowStepInput>