From de5260bc2c07330b90d45a0d74db87c08205794a Mon Sep 17 00:00:00 2001
From: Jack <51316885+hujie123456@users.noreply.github.com>
Date: Wed, 26 Apr 2023 11:20:58 +0800
Subject: [PATCH] fix: fixed the configuration field filter (#1742)

* fix: fixed the configuration field filter

* fix: batch update filter automatic number field

* refactor: optimize code

---------

Co-authored-by: Rairn <958414905@qq.com>
---
 .../client/src/schema-initializer/utils.ts    | 82 +++++++++++--------
 1 file changed, 49 insertions(+), 33 deletions(-)

diff --git a/packages/core/client/src/schema-initializer/utils.ts b/packages/core/client/src/schema-initializer/utils.ts
index 25a0d0f39..de12f901c 100644
--- a/packages/core/client/src/schema-initializer/utils.ts
+++ b/packages/core/client/src/schema-initializer/utils.ts
@@ -1,6 +1,6 @@
 import { ISchema, Schema, useFieldSchema, useForm } from '@formily/react';
 import { uid } from '@formily/shared';
-import React, { useContext, useState } from 'react';
+import React, { useContext, useMemo, useState } from 'react';
 import { useTranslation } from 'react-i18next';
 import { BlockRequestContext, SchemaInitializerItemOptions } from '../';
 import { FieldOptions, useCollection, useCollectionManager } from '../collection-manager';
@@ -560,7 +560,12 @@ export const useCustomFormItemInitializerFields = (options?: any) => {
   const remove = useRemoveGridFormItem();
   return currentFields
     ?.filter((field) => {
-      return field?.interface && !field?.uiSchema?.['x-read-pretty'] && field.interface !== 'snapshot';
+      return (
+        field?.interface &&
+        !field?.uiSchema?.['x-read-pretty'] &&
+        field.interface !== 'snapshot' &&
+        field.type !== 'sequence'
+      );
     })
     ?.map((field) => {
       const interfaceConfig = getInterface(field.interface);
@@ -597,37 +602,48 @@ export const useCustomBulkEditFormItemInitializerFields = (options?: any) => {
   const form = useForm();
   const { readPretty = form.readPretty, block = 'Form' } = options || {};
   const remove = useRemoveGridFormItem();
-  return fields
-    ?.filter((field) => {
-      return field?.interface && !field?.uiSchema?.['x-read-pretty'] && field.interface !== 'snapshot';
-    })
-    ?.map((field) => {
-      const interfaceConfig = getInterface(field.interface);
-      const schema = {
-        type: 'string',
-        name: field.name,
-        title: field?.uiSchema?.title || field.name,
-        'x-designer': 'FormItem.Designer',
-        'x-component': 'BulkEditField',
-        'x-decorator': 'FormItem',
-        'x-collection-field': `${name}.${field.name}`,
-      };
-      return {
-        type: 'item',
-        title: field?.uiSchema?.title || field.name,
-        component: 'CollectionFieldInitializer',
-        remove: remove,
-        schemaInitialize: (s) => {
-          interfaceConfig?.schemaInitialize?.(s, {
-            field,
-            block,
-            readPretty,
-            targetCollection: getCollection(field.target),
-          });
-        },
-        schema,
-      } as SchemaInitializerItemOptions;
-    });
+  const filterFields = useMemo(
+    () =>
+      fields
+        ?.filter((field) => {
+          return (
+            field?.interface &&
+            !field?.uiSchema?.['x-read-pretty'] &&
+            field.interface !== 'snapshot' &&
+            field.type !== 'sequence'
+          );
+        })
+        .map((field) => {
+          const interfaceConfig = getInterface(field.interface);
+          const schema = {
+            type: 'string',
+            name: field.name,
+            title: field?.uiSchema?.title || field.name,
+            'x-designer': 'FormItem.Designer',
+            'x-component': 'BulkEditField',
+            'x-decorator': 'FormItem',
+            'x-collection-field': `${name}.${field.name}`,
+          };
+          return {
+            type: 'item',
+            title: field?.uiSchema?.title || field.name,
+            component: 'CollectionFieldInitializer',
+            remove: remove,
+            schemaInitialize: (s) => {
+              interfaceConfig?.schemaInitialize?.(s, {
+                field,
+                block,
+                readPretty,
+                targetCollection: getCollection(field.target),
+              });
+            },
+            schema,
+          } as SchemaInitializerItemOptions;
+        }),
+    [fields],
+  );
+
+  return filterFields;
 };
 
 const findSchema = (schema: Schema, key: string, action: string) => {