From 8318f60480aedd4aa1e64dc35468247dfbba9316 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Wed, 09 Sep 2026 22:44:54 +0000
Subject: [PATCH] =Simplified event fields a bit, removed the recurrence for now to get Northeh done. Scaffolded a basic block to select a specific field to render anywhere.
---
src/meta/edit.js | 83 ++++++++++++++++++++++++-----------------
1 files changed, 48 insertions(+), 35 deletions(-)
diff --git a/src/meta/edit.js b/src/meta/edit.js
index eabd90a..656409c 100644
--- a/src/meta/edit.js
+++ b/src/meta/edit.js
@@ -1,38 +1,51 @@
-/**
- * Retrieves the translation of text.
- *
- * @see https://developer.wordpress.org/block-editor/reference-guides/packages/packages-i18n/
- */
-import { __ } from '@wordpress/i18n';
+import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
+import { PanelBody, SelectControl, Placeholder } from '@wordpress/components';
+import { useEntityProp } from '@wordpress/core-data';
+import { useSelect } from '@wordpress/data';
+import Fields from '../_meta/Fields';
-/**
- * React hook that is used to mark the block wrapper element.
- * It provides all the necessary props like the class name.
- *
- * @see https://developer.wordpress.org/block-editor/reference-guides/packages/packages-block-editor/#useblockprops
- */
-import { useBlockProps } from '@wordpress/block-editor';
+const Edit = ({ attributes, setAttributes }) => {
+ const { fieldName } = attributes;
+ const { fields } = window.jvbFieldConfig || {};
-/**
- * Lets webpack process CSS, SASS or SCSS files referenced in JavaScript files.
- * Those files can contain any CSS code that gets applied to the editor.
- *
- * @see https://www.npmjs.com/package/@wordpress/scripts#using-css
- */
-import './editor.scss';
-
-/**
- * The edit function describes the structure of your block in the context of the
- * editor. This represents what the editor will render when the block is used.
- *
- * @see https://developer.wordpress.org/block-editor/reference-guides/block-api/block-edit-save/#edit
- *
- * @return {Element} Element to render.
- */
-export default function Edit() {
- return (
- <p { ...useBlockProps() }>
- { __( 'Will output the menu', 'jvb' ) }
- </p>
+ const postType = useSelect(
+ (select) => select('core/editor').getCurrentPostType(),
+ []
);
-}
+ const [meta, setMeta] = useEntityProp('postType', postType, 'meta');
+
+ const field = (fields || []).find((f) => f.name === fieldName);
+
+ const blockProps = useBlockProps();
+
+ return (
+ <div {...blockProps}>
+ <InspectorControls>
+ <PanelBody title="Field">
+ <SelectControl
+ label="Meta field"
+ value={fieldName}
+ options={[
+ { label: 'Select a field…', value: '' },
+ ...(fields || []).map((f) => ({ label: f.label || f.name, value: f.name })),
+ ]}
+ onChange={(value) => setAttributes({ fieldName: value })}
+ />
+ </PanelBody>
+ </InspectorControls>
+
+ { !field && <Placeholder label="Meta Field" instructions="Select a field in the block settings." /> }
+
+ { field && (
+ <Fields
+ field={field}
+ value={meta?.[fieldName]}
+ onChange={(value) => setMeta({ ...meta, [fieldName]: value })}
+ meta={meta}
+ />
+ ) }
+ </div>
+ );
+};
+
+export default Edit;
--
Gitblit v1.10.0