diff --git a/lerna.json b/lerna.json index 87bea4fc30..23fccdf464 100644 --- a/lerna.json +++ b/lerna.json @@ -2,9 +2,7 @@ "version": "1.3.52", "npmClient": "yarn", "useWorkspaces": true, - "npmClientArgs": [ - "--ignore-engines" - ], + "npmClientArgs": ["--ignore-engines"], "command": { "version": { "forcePublish": true, diff --git a/packages/core/client/src/collection-manager/collectionPlugin.ts b/packages/core/client/src/collection-manager/collectionPlugin.ts index 8d71266aaa..143d6a5d04 100644 --- a/packages/core/client/src/collection-manager/collectionPlugin.ts +++ b/packages/core/client/src/collection-manager/collectionPlugin.ts @@ -13,7 +13,6 @@ import { InheritanceCollectionMixin } from './mixins/InheritanceCollectionMixin' import { CheckboxFieldInterface, CheckboxGroupFieldInterface, - ChinaRegionFieldInterface, CollectionSelectFieldInterface, ColorFieldInterface, CreatedAtFieldInterface, @@ -134,7 +133,6 @@ export class CollectionPlugin extends Plugin { this.dataSourceManager.addFieldInterfaces([ CheckboxFieldInterface, CheckboxGroupFieldInterface, - ChinaRegionFieldInterface, CollectionSelectFieldInterface, ColorFieldInterface, CreatedAtFieldInterface, diff --git a/packages/core/client/src/collection-manager/interfaces/index.ts b/packages/core/client/src/collection-manager/interfaces/index.ts index 6778d83413..ee796dbc07 100644 --- a/packages/core/client/src/collection-manager/interfaces/index.ts +++ b/packages/core/client/src/collection-manager/interfaces/index.ts @@ -9,7 +9,6 @@ export * from './checkbox'; export * from './checkboxGroup'; -export * from './chinaRegion'; export * from './collection'; export * from './color'; export * from './createdAt'; diff --git a/packages/core/client/src/index.ts b/packages/core/client/src/index.ts index 0a03e4b657..7b3c85624b 100644 --- a/packages/core/client/src/index.ts +++ b/packages/core/client/src/index.ts @@ -29,7 +29,6 @@ export * from './appInfo'; export * from './application'; export * from './async-data-provider'; export * from './block-provider'; -export * from './china-region'; export * from './collection-manager'; export * from './common'; diff --git a/packages/core/client/src/schema-component/antd/cascader/Cascader.tsx b/packages/core/client/src/schema-component/antd/cascader/Cascader.tsx index ff3e1d82d6..addae97746 100644 --- a/packages/core/client/src/schema-component/antd/cascader/Cascader.tsx +++ b/packages/core/client/src/schema-component/antd/cascader/Cascader.tsx @@ -13,7 +13,7 @@ import { connect, mapProps, mapReadPretty, useField } from '@formily/react'; import { toArr } from '@formily/shared'; import { Cascader as AntdCascader, CascaderProps as AntdCascaderProps, Space } from 'antd'; import { BaseOptionType } from 'antd/es/select'; -import { isBoolean, omit } from 'lodash'; +import { isBoolean, omit, isFunction } from 'lodash'; import React from 'react'; import { UseRequestResult, useRequest } from '../../../api-client'; import { withDynamicSchemaProps } from '../../../hoc/withDynamicSchemaProps'; @@ -71,15 +71,17 @@ export const Cascader = withDynamicSchemaProps( ...others } = props; const fieldNames = { ...defaultFieldNames, ...props.fieldNames }; - const loadData = useLoadData(props); - const { loading, run } = useDataSource( - { - onSuccess(data) { - field.dataSource = data?.data || []; - }, - }, - props, - ); + const loadData = isFunction(useLoadData) ? useLoadData(props) : []; + const { loading, run } = isFunction(useLoadData) + ? useDataSource( + { + onSuccess(data) { + field.dataSource = data?.data || []; + }, + }, + props, + ) + : ({} as any); // 兼容值为 object[] 的情况 const toValue = () => { return toArr(value).map((item) => { @@ -106,7 +108,7 @@ export const Cascader = withDynamicSchemaProps( }; const handelDropDownVisible = (value) => { if (value && !field.dataSource?.length) { - run(); + run?.(); } }; diff --git a/packages/plugins/@nocobase/plugin-field-china-region/package.json b/packages/plugins/@nocobase/plugin-field-china-region/package.json index 6e94b2052a..0236707679 100644 --- a/packages/plugins/@nocobase/plugin-field-china-region/package.json +++ b/packages/plugins/@nocobase/plugin-field-china-region/package.json @@ -1,8 +1,8 @@ { "name": "@nocobase/plugin-field-china-region", "version": "1.3.52", - "displayName": "Administrative divisions of China", - "displayName.zh-CN": "中国行政区划", + "displayName": "Collection field: administrative divisions of China", + "displayName.zh-CN": "数据表字段:中国行政区划", "description": "Provides data and field type for administrative divisions of China.", "description.zh-CN": "提供中国行政区划数据和字段类型。", "main": "./dist/server/index.js", @@ -24,6 +24,6 @@ }, "gitHead": "d0b4efe4be55f8c79a98a331d99d9f8cf99021a1", "keywords": [ - "Fields" + "Collection fields" ] } diff --git a/packages/core/client/src/collection-manager/interfaces/chinaRegion.ts b/packages/plugins/@nocobase/plugin-field-china-region/src/client/chinaRegion.ts similarity index 93% rename from packages/core/client/src/collection-manager/interfaces/chinaRegion.ts rename to packages/plugins/@nocobase/plugin-field-china-region/src/client/chinaRegion.ts index bcdecc69b7..dd7b8f52c2 100644 --- a/packages/core/client/src/collection-manager/interfaces/chinaRegion.ts +++ b/packages/plugins/@nocobase/plugin-field-china-region/src/client/chinaRegion.ts @@ -8,8 +8,7 @@ */ import { uid } from '@formily/shared'; -import { defaultProps, operators } from './properties'; -import { CollectionFieldInterface } from '../../data-source/collection-field-interface/CollectionFieldInterface'; +import { defaultProps, operators, CollectionFieldInterface } from '@nocobase/client'; export class ChinaRegionFieldInterface extends CollectionFieldInterface { name = 'chinaRegion'; diff --git a/packages/plugins/@nocobase/plugin-field-china-region/src/client/index.tsx b/packages/plugins/@nocobase/plugin-field-china-region/src/client/index.tsx index f2fc1076a3..df90f6700b 100644 --- a/packages/plugins/@nocobase/plugin-field-china-region/src/client/index.tsx +++ b/packages/plugins/@nocobase/plugin-field-china-region/src/client/index.tsx @@ -9,6 +9,7 @@ import { Plugin } from '@nocobase/client'; import { useChinaRegionDataSource, useChinaRegionLoadData } from './ChinaRegionProvider'; +import { ChinaRegionFieldInterface } from './chinaRegion'; export class PluginFieldChinaRegionClient extends Plugin { async load() { @@ -16,6 +17,7 @@ export class PluginFieldChinaRegionClient extends Plugin { useChinaRegionDataSource, useChinaRegionLoadData, }); + this.app.dataSourceManager.addFieldInterfaces([ChinaRegionFieldInterface]); } } diff --git a/packages/presets/nocobase/package.json b/packages/presets/nocobase/package.json index 323b1c421d..af28b52d5e 100644 --- a/packages/presets/nocobase/package.json +++ b/packages/presets/nocobase/package.json @@ -93,7 +93,6 @@ "@nocobase/plugin-data-source-manager", "@nocobase/plugin-data-visualization", "@nocobase/plugin-error-handler", - "@nocobase/plugin-field-china-region", "@nocobase/plugin-field-formula", "@nocobase/plugin-field-sequence", "@nocobase/plugin-file-manager", diff --git a/packages/presets/nocobase/src/server/index.ts b/packages/presets/nocobase/src/server/index.ts index 1d9c3fe5da..d8333678db 100644 --- a/packages/presets/nocobase/src/server/index.ts +++ b/packages/presets/nocobase/src/server/index.ts @@ -23,7 +23,7 @@ export class PresetNocoBase extends Plugin { 'verification', 'users', 'acl', - 'field-china-region', + // 'field-china-region', 'workflow', 'workflow-action-trigger', 'workflow-aggregate', @@ -73,6 +73,7 @@ export class PresetNocoBase extends Plugin { 'workflow-mailer', 'field-m2m-array', 'backup-restore', + 'field-china-region', ]; splitNames(name: string) { diff --git a/packages/presets/nocobase/src/server/migrations/20241120105817-set-china—regin-local.ts b/packages/presets/nocobase/src/server/migrations/20241120105817-set-china—regin-local.ts new file mode 100644 index 0000000000..dd042d632d --- /dev/null +++ b/packages/presets/nocobase/src/server/migrations/20241120105817-set-china—regin-local.ts @@ -0,0 +1,17 @@ +import { Migration } from '@nocobase/server'; + +export default class extends Migration { + on = 'beforeLoad'; // 'beforeLoad' or 'afterLoad' + // appVersion = '<1.3.52'; + + async up() { + await this.pm.repository.update({ + values: { + builtIn: false, + }, + filter: { + name: 'field-china-region', + }, + }); + } +}