From c16a4d78d07e81ecdd2ff9b1b9090560ab2fe488 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Fri, 04 Sep 2026 22:25:09 +0000
Subject: [PATCH] =Got the panel loading up the fields, organized by section! Now to ensure it saves properly. Still need to add: upload fields, selector fields, repeater/taglist/group fields

---
 src/editor-fields/SidePanel.js |   70 +++++++++++++++++------------------
 1 files changed, 34 insertions(+), 36 deletions(-)

diff --git a/src/editor-fields/SidePanel.js b/src/editor-fields/SidePanel.js
index 9e471dc..a877ef5 100644
--- a/src/editor-fields/SidePanel.js
+++ b/src/editor-fields/SidePanel.js
@@ -1,9 +1,10 @@
 import { __ } from '@wordpress/i18n';
 import { compose } from '@wordpress/compose';
 import { withSelect, withDispatch } from '@wordpress/data';
-import { PluginSidebar, PluginSidebarMoreMenuItem } from '@wordpress/edit-post';
+import { PluginSidebar, PluginSidebarMoreMenuItem } from '@wordpress/editor';
 import { PanelBody, PanelRow, TextControl, DateTimePicker } from '@wordpress/components';
 import { useEntityProp } from '@wordpress/core-data';
+import Section from './Section';
 
 const JVIcon = () => (
 	<svg xmlns="http://www.w3.org/2000/svg" fillRule="evenodd" strokeLinecap="square" strokeLinejoin="round" strokeMiterlimit="1.5" clipRule="evenodd" viewBox="0 0 32 32">
@@ -11,54 +12,42 @@
 </svg>
 );
 const SidePanel = ( { postType, metaFields, setMetaFields } ) => {
-	const { content, fields } = window.jvbFieldConfig || {};
+	const { content, fields, sections, base } = window.jvbFieldConfig || {};
 	const [meta, setMeta] = useEntityProp('postType', content, 'meta');
+
+	if (!fields || !fields.length) return null;
+
 	console.log(fields);
+	console.log(sections);
+
+
 
 	return (
 		<>
 			<PluginSidebarMoreMenuItem
-				target="metadata-sidebar"
+				target="jvb-meta-fields"
 				icon={<JVIcon /> }
 			>
-				Metadata Sidebar
+				Additional Fields
 			</PluginSidebarMoreMenuItem>
 			<PluginSidebar
-				name="metadata-sidebar"
+				name="jvb-meta-fields"
 				icon={<JVIcon /> }
-				title="Fields"
+				title="Additional Fields"
 			>
-				<PanelBody title="Book details" initialOpen={ true }>
-					<PanelRow>
-						<TextControl
-							value={ metaFields._meta_fields_book_title }
-							label={ __( "Title" ) }
-							onChange={ (value) => setMetaFields( { _meta_fields_book_title: value } ) }
+				{
+					Object.values(sections).map((section, index) => (
+
+						<Section
+							id={section.slug}
+							name={section.title}
+							fields={filterFields({section, fields, base})}
+							meta={meta}
+							setMeta={setMeta}
+							isOpen={testOpen(index)}
 						/>
-					</PanelRow>
-					<PanelRow>
-						<TextControl
-							value={ metaFields._meta_fields_book_author }
-							label={ __("Author", "textdomain") }
-							onChange={ (value) => setMetaFields( { _meta_fields_book_author: value } ) }
-						/>
-					</PanelRow>
-					<PanelRow>
-						<TextControl
-							value={ metaFields._meta_fields_book_publisher }
-							label={ __("Publisher", "textdomain") }
-							onChange={ (value) => setMetaFields( { _meta_fields_book_publisher: value } ) }
-						/>
-					</PanelRow>
-					<PanelRow>
-						<DateTimePicker
-							currentDate={ metaFields._meta_fields_book_date }
-							onChange={ ( newDate ) => setMetaFields( { _meta_fields_book_date: newDate } ) }
-							__nextRemoveHelpButton
-							__nextRemoveResetButton
-						/>
-					</PanelRow>
-				</PanelBody>
+					))
+				}
 			</PluginSidebar>
 		</>
 	)
@@ -79,6 +68,15 @@
 	}
 } );
 
+const filterFields = ({section, fields, base}) => {
+	const sectionFields = section.fields.map(f => base+f);
+	return fields.filter(item => sectionFields.includes(item.name))
+};
+
+const testOpen = (index) => {
+	return index === 0;
+};
+
 export default compose([
 	applyWithSelect,
 	applyWithDispatch

--
Gitblit v1.10.0