@nocobase/client-v2 2.2.0-beta.17 → 2.2.0-beta.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/es/APIClient.d.ts +12 -0
  2. package/es/flow/components/placeholders/BlockPlaceholder.d.ts +1 -0
  3. package/es/flow/internal/utils/operatorSchemaHelper.d.ts +2 -2
  4. package/es/flow/models/base/CollectionBlockModel.d.ts +3 -0
  5. package/es/flow/models/blocks/details/DetailsBlockModel.d.ts +3 -0
  6. package/es/flow/models/blocks/filter-form/FilterFormGridModel.d.ts +1 -0
  7. package/es/flow/models/blocks/filter-form/FilterFormSubmitActionModel.d.ts +3 -1
  8. package/es/flow/models/blocks/form/FormBlockModel.d.ts +1 -0
  9. package/es/flow/models/blocks/table/TableBlockModel.d.ts +1 -0
  10. package/es/flow/models/blocks/table/TableColumnModel.d.ts +11 -0
  11. package/es/flow/models/blocks/table/utils.d.ts +1 -0
  12. package/es/flow/models/fields/AssociationFieldModel/RecordPickerFieldModel.d.ts +2 -1
  13. package/es/flow/models/fields/AssociationFieldModel/RecordSelectFieldModel.d.ts +0 -17
  14. package/es/flow/models/fields/AssociationFieldModel/recordSelectShared.d.ts +41 -0
  15. package/es/flow-compat/passwordUtils.d.ts +1 -1
  16. package/es/index.mjs +125 -116
  17. package/lib/index.js +162 -153
  18. package/package.json +7 -7
  19. package/src/APIClient.ts +92 -0
  20. package/src/Application.tsx +3 -1
  21. package/src/__tests__/APIClient.test.tsx +58 -0
  22. package/src/__tests__/settings-center.test.tsx +270 -6
  23. package/src/acl/ACLProvider.tsx +2 -0
  24. package/src/acl/__tests__/ACLProvider.test.tsx +92 -0
  25. package/src/components/form/filter/CollectionFilterItem.tsx +4 -2
  26. package/src/components/form/filter/__tests__/CollectionFilterItem.test.tsx +17 -0
  27. package/src/components/form/table/Table.tsx +81 -6
  28. package/src/components/form/table/__tests__/Table.columnWidth.test.tsx +433 -0
  29. package/src/flow/actions/__tests__/linkageRules.subFormSetFieldProps.test.ts +72 -0
  30. package/src/flow/actions/linkageRules.tsx +8 -3
  31. package/src/flow/admin-shell/admin-layout/AdminLayoutMenuUtils.tsx +78 -59
  32. package/src/flow/admin-shell/admin-layout/__tests__/AdminLayoutMenuModels.test.ts +228 -0
  33. package/src/flow/components/filter/VariableFilterItem.tsx +12 -3
  34. package/src/flow/components/filter/__tests__/VariableFilterItem.test.tsx +125 -0
  35. package/src/flow/components/placeholders/BlockPlaceholder.tsx +70 -23
  36. package/src/flow/components/placeholders/__tests__/BlockPlaceholder.test.tsx +57 -7
  37. package/src/flow/internal/utils/operatorSchemaHelper.ts +3 -2
  38. package/src/flow/models/base/CollectionBlockModel.tsx +23 -1
  39. package/src/flow/models/base/__tests__/CollectionBlockModel.initialBeforeRenderRefresh.test.ts +65 -9
  40. package/src/flow/models/blocks/details/DetailsBlockModel.tsx +8 -3
  41. package/src/flow/models/blocks/details/__tests__/DetailsBlockModel.initialPaginationChangeRefresh.test.ts +32 -1
  42. package/src/flow/models/blocks/filter-form/FilterFormGridModel.tsx +36 -5
  43. package/src/flow/models/blocks/filter-form/FilterFormItemModel.tsx +129 -14
  44. package/src/flow/models/blocks/filter-form/FilterFormSubmitActionModel.tsx +57 -4
  45. package/src/flow/models/blocks/filter-form/__tests__/FilterFormGridModel.onModelCreated.test.ts +174 -1
  46. package/src/flow/models/blocks/filter-form/__tests__/FilterFormItemModel.defineChildren.test.ts +359 -1
  47. package/src/flow/models/blocks/filter-form/__tests__/FilterFormItemModel.getFilterValue.test.ts +72 -0
  48. package/src/flow/models/blocks/filter-form/__tests__/FilterFormSubmitActionModel.lifecycle.test.ts +90 -0
  49. package/src/flow/models/blocks/filter-manager/FilterManager.ts +5 -0
  50. package/src/flow/models/blocks/filter-manager/__tests__/FilterManager.test.ts +40 -0
  51. package/src/flow/models/blocks/form/FormBlockModel.tsx +43 -0
  52. package/src/flow/models/blocks/form/__tests__/runJsFormSubmit.test.ts +131 -0
  53. package/src/flow/models/blocks/table/TableBlockModel.tsx +25 -1
  54. package/src/flow/models/blocks/table/TableColumnModel.tsx +18 -8
  55. package/src/flow/models/blocks/table/__tests__/TableBlockModel.filterReset.test.ts +78 -0
  56. package/src/flow/models/blocks/table/utils.ts +7 -0
  57. package/src/flow/models/fields/AssociationFieldModel/CascadeSelectFieldModel.tsx +33 -1
  58. package/src/flow/models/fields/AssociationFieldModel/RecordPickerFieldModel.tsx +24 -1
  59. package/src/flow/models/fields/AssociationFieldModel/RecordSelectFieldModel.tsx +9 -136
  60. package/src/flow/models/fields/AssociationFieldModel/__tests__/RecordPickerFieldModel.itemContext.test.ts +121 -3
  61. package/src/flow/models/fields/AssociationFieldModel/recordSelectShared.tsx +156 -0
  62. package/src/flow/models/fields/DisplayNumberFieldModel.tsx +1 -1
  63. package/src/flow/models/fields/NumberFieldModel.tsx +1 -1
  64. package/src/flow/models/fields/__tests__/DisplayNumberFieldModel.test.ts +33 -0
  65. package/src/flow/models/fields/__tests__/NumberFieldModel.test.tsx +47 -0
  66. package/src/flow/models/fields/mobile-components/MobileLazySelect.tsx +5 -0
  67. package/src/flow/models/fields/mobile-components/MobileSelect.tsx +27 -2
  68. package/src/flow/models/fields/mobile-components/__tests__/MobileSelect.test.tsx +122 -14
  69. package/src/settings-center/AdminSettingsLayout.tsx +23 -2
@@ -14,7 +14,7 @@ import { FlowModelRenderer, useFlowEngine } from '@nocobase/flow-engine';
14
14
  import { Layout, Menu, Result, theme } from 'antd';
15
15
  import React, { useEffect, useMemo, useRef } from 'react';
16
16
  import { useTranslation } from 'react-i18next';
17
- import { Navigate, Outlet, useLocation, useNavigate, useParams } from 'react-router-dom';
17
+ import { generatePath, Navigate, Outlet, useLocation, useNavigate, useParams } from 'react-router-dom';
18
18
  import { useACLRoleContext } from '../acl';
19
19
  import { ADMIN_SETTINGS_PATH, type PluginSettingsPageType } from '../PluginSettingsManager';
20
20
  import { useApp } from '../hooks/useApp';
@@ -68,6 +68,9 @@ export const InternalAdminSettingsLayout = () => {
68
68
  const navigate = useNavigate();
69
69
  const location = useLocation();
70
70
  const params = useParams();
71
+ const routeParams = Object.fromEntries(
72
+ Object.entries(params).filter((entry): entry is [string, string] => typeof entry[1] === 'string'),
73
+ );
71
74
  const { token } = theme.useToken();
72
75
  const { t } = useTranslation();
73
76
  const { snippets = [] } = useACLRoleContext();
@@ -174,7 +177,25 @@ export const InternalAdminSettingsLayout = () => {
174
177
  return <SettingsEmpty type="route" />;
175
178
  }
176
179
 
177
- if (!currentVisibleSetting && currentSetting.isAllow === false) {
180
+ if (currentSetting.isAllow === false) {
181
+ const firstVisibleTabPath = currentVisibleTabs
182
+ .map((tab) => getDefaultSettingsPath([tab]))
183
+ .filter((path): path is string => typeof path === 'string')
184
+ .map((path) => {
185
+ try {
186
+ return generatePath(path, routeParams);
187
+ } catch {
188
+ return null;
189
+ }
190
+ })
191
+ .find((path): path is string => typeof path === 'string');
192
+ if (firstVisibleTabPath) {
193
+ return <Navigate replace to={firstVisibleTabPath} />;
194
+ }
195
+ if (!defaultSettingsPath) {
196
+ return <Navigate replace to="/admin" />;
197
+ }
198
+
178
199
  return <SettingsEmpty type="route" />;
179
200
  }
180
201