From d5df7849a5f4ea19ef4b84b55a1930c93f1d6172 Mon Sep 17 00:00:00 2001
From: Luis Felipe Zaguini <26530524+zaguiini@users.noreply.github.com>
Date: Fri, 30 Aug 2024 08:26:05 -0300
Subject: [PATCH] Remove validation in attribute binder (#82)
---
includes/manager/register-attribute-binder.js | 77 +------------------
1 file changed, 2 insertions(+), 75 deletions(-)
diff --git a/includes/manager/register-attribute-binder.js b/includes/manager/register-attribute-binder.js
index 1623d23..4bef79c 100644
--- a/includes/manager/register-attribute-binder.js
+++ b/includes/manager/register-attribute-binder.js
@@ -1,5 +1,5 @@
import { addFilter } from '@wordpress/hooks';
-import { useCallback, useMemo, useEffect, useState } from '@wordpress/element';
+import { useCallback, useMemo, useState } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import { createHigherOrderComponent } from '@wordpress/compose';
import { InspectorControls } from '@wordpress/block-editor';
@@ -14,8 +14,7 @@ import {
FlexBlock,
FlexItem,
} from '@wordpress/components';
-import { useSelect, useDispatch } from '@wordpress/data';
-import { store as editorStore } from '@wordpress/editor';
+import { useSelect } from '@wordpress/data';
import { store as blocksStore } from '@wordpress/blocks';
import { useEntityProp } from '@wordpress/core-data';
@@ -23,20 +22,11 @@ import ManageBindings from './_manage-bindings';
import SUPPORTED_BLOCK_ATTRIBUTES from './_supported-attributes';
-const ErrorMessage = ( { children } ) => {
- return (
-
- { children }
-
- );
-};
-
const withAttributeBinder = createHigherOrderComponent( ( BlockEdit ) => {
return ( props ) => {
const { getBlockType } = useSelect( blocksStore );
const { getBlockParentsByBlockName, getBlocksByClientId } =
useSelect( 'core/block-editor' );
- const { lockPostSaving, unlockPostSaving } = useDispatch( editorStore );
const [ editingBoundAttribute, setEditingBoundAttribute ] =
useState( null );
@@ -57,12 +47,6 @@ const withAttributeBinder = createHigherOrderComponent( ( BlockEdit ) => {
( field ) => field.slug === attributes.metadata?.slug
);
- const getBinding = useCallback(
- ( attribute ) =>
- attributes.metadata?.[ window.BINDINGS_KEY ]?.[ attribute ],
- [ attributes.metadata ]
- );
-
const removeBindings = useCallback( () => {
const newAttributes = {
metadata: {
@@ -137,63 +121,6 @@ const withAttributeBinder = createHigherOrderComponent( ( BlockEdit ) => {
[ attributes.metadata, setAttributes, supportedAttributes ]
);
- const validations = useMemo( () => {
- const metadata = attributes.metadata ?? {};
- const bindings = metadata[ window.BINDINGS_KEY ] ?? {};
-
- const _validations = {};
-
- const hasAtLeastOneBinding = Object.keys( bindings ).length > 0;
-
- if (
- hasAtLeastOneBinding &&
- ! metadata[ window.BLOCK_VARIATION_NAME_ATTR ]
- ) {
- _validations[ window.BLOCK_VARIATION_NAME_ATTR ] = (
-
- { __( 'Block variation name is required' ) }
-
- );
- }
-
- if (
- metadata[ window.BLOCK_VARIATION_NAME_ATTR ] &&
- ! hasAtLeastOneBinding
- ) {
- _validations[ window.BLOCK_VARIATION_NAME_ATTR ] = (
-
- { __( 'Bind at least one attribute' ) }
-
- );
- }
-
- Object.keys( bindings ).forEach( ( attribute ) => {
- const field = getBinding( attribute );
-
- if ( field === 'post_content' && name !== 'core/group' ) {
- _validations[ attribute ] = (
-
- { __(
- 'Only Group blocks can be bound to post_content'
- ) }
-
- );
- }
- } );
-
- return _validations;
- }, [ attributes.metadata, getBinding, name ] );
-
- useEffect( () => {
- const hasValidationErrors = Object.keys( validations ).length > 0;
-
- if ( hasValidationErrors ) {
- lockPostSaving();
- } else {
- unlockPostSaving();
- }
- }, [ lockPostSaving, unlockPostSaving, validations ] );
-
if ( ! supportedAttributes || parentHasBindings ) {
return ;
}