From eef16f5a0f5af0aea313e411534643678ba4bea1 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 06 Sep 2026 20:58:21 +0000
Subject: [PATCH] =Polishing up the gutenberg sidebar for custom meta. Seems to be working more or less. Added integration with OpenStreetMaps for location fields. Still to add: row ordering for repeaters, Maybe a better view for the selector field (terms, posts, etc), ensure fields save correctly and repopulate.

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

diff --git a/src/editor-fields/SidePanel.js b/src/editor-fields/SidePanel.js
index 9e471dc..8a4006d 100644
--- a/src/editor-fields/SidePanel.js
+++ b/src/editor-fields/SidePanel.js
@@ -1,9 +1,9 @@
 import { __ } from '@wordpress/i18n';
 import { compose } from '@wordpress/compose';
 import { withSelect, withDispatch } from '@wordpress/data';
-import { PluginSidebar, PluginSidebarMoreMenuItem } from '@wordpress/edit-post';
-import { PanelBody, PanelRow, TextControl, DateTimePicker } from '@wordpress/components';
+import { PluginSidebar, PluginSidebarMoreMenuItem } from '@wordpress/editor';
 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 +11,36 @@
 </svg>
 );
 const SidePanel = ( { postType, metaFields, setMetaFields } ) => {
-	const { content, fields } = window.jvbFieldConfig || {};
-	const [meta, setMeta] = useEntityProp('postType', content, 'meta');
-	console.log(fields);
+	const { fields, sections } = window.jvbFieldConfig || {};
 
+	const [meta, setMeta] = useEntityProp('postType', postType, 'meta');
+
+	if (!fields || !fields.length) return null;
 	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 } ) }
-						/>
-					</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>
+				{
+					Object.values(sections).map((section, index) => {
+						return <Section
+							key={section.id}
+							name={section.title}
+							fields={filterFields({section, fields})}
+							meta={meta}
+							setMeta={setMeta}
+							isOpen={testOpen(index)}
+						/>;
+					})
+				}
 			</PluginSidebar>
 		</>
 	)
@@ -79,6 +61,14 @@
 	}
 } );
 
+const filterFields = ({section, fields}) => {
+	return fields.filter(item => section.fields.includes(item.name))
+};
+
+const testOpen = (index) => {
+	return index === 0;
+};
+
 export default compose([
 	applyWithSelect,
 	applyWithDispatch

--
Gitblit v1.10.0