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