@nocobase/flow-engine 2.0.0-alpha.4 → 2.0.0-alpha.41
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.
- package/lib/BlockScopedFlowEngine.d.ts +23 -0
- package/lib/BlockScopedFlowEngine.js +90 -0
- package/lib/FlowContextProvider.d.ts +2 -2
- package/lib/FlowContextProvider.js +3 -3
- package/lib/FlowDefinition.d.ts +4 -2
- package/lib/JSRunner.js +3 -0
- package/lib/ViewScopedFlowEngine.d.ts +1 -1
- package/lib/ViewScopedFlowEngine.js +12 -0
- package/lib/acl/Acl.d.ts +1 -0
- package/lib/acl/Acl.js +11 -0
- package/lib/components/FieldModelRenderer.js +14 -6
- package/lib/components/FieldSkeleton.d.ts +10 -0
- package/lib/components/FieldSkeleton.js +64 -0
- package/lib/components/FlowContextSelector.js +7 -2
- package/lib/components/FlowModelRenderer.d.ts +3 -6
- package/lib/components/FlowModelRenderer.js +16 -47
- package/lib/components/FormItem.js +5 -1
- package/lib/components/MobilePopup.d.ts +20 -0
- package/lib/components/MobilePopup.js +102 -0
- package/lib/components/MobilePopup.style.d.ts +17 -0
- package/lib/components/MobilePopup.style.js +186 -0
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.js +3 -1
- package/lib/components/settings/independents/dropdown/FlowsDropdownButton.js +2 -2
- package/lib/components/settings/wrappers/contextual/DefaultSettingsIcon.js +17 -5
- package/lib/components/settings/wrappers/contextual/FlowsContextMenu.js +2 -2
- package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.d.ts +2 -2
- package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.js +35 -6
- package/lib/components/settings/wrappers/contextual/StepSettingsDialog.js +7 -1
- package/lib/components/variables/VariableInput.js +19 -5
- package/lib/components/variables/VariableTag.js +43 -2
- package/lib/components/variables/types.d.ts +2 -0
- package/lib/data-source/index.d.ts +15 -4
- package/lib/data-source/index.js +42 -13
- package/lib/data-source/sortCollectionsByInherits.d.ts +10 -0
- package/lib/data-source/sortCollectionsByInherits.js +71 -0
- package/lib/emitter.d.ts +6 -0
- package/lib/emitter.js +12 -0
- package/lib/executor/FlowExecutor.d.ts +4 -5
- package/lib/executor/FlowExecutor.js +168 -99
- package/lib/flow-registry/GlobalFlowRegistry.d.ts +1 -0
- package/lib/flow-registry/GlobalFlowRegistry.js +3 -0
- package/lib/flow-registry/InstanceFlowRegistry.d.ts +1 -0
- package/lib/flow-registry/InstanceFlowRegistry.js +3 -0
- package/lib/flowContext.d.ts +37 -5
- package/lib/flowContext.js +224 -87
- package/lib/flowEngine.d.ts +24 -1
- package/lib/flowEngine.js +81 -8
- package/lib/flowSettings.d.ts +2 -1
- package/lib/flowSettings.js +16 -8
- package/lib/hooks/useApplyAutoFlows.js +2 -1
- package/lib/index.d.ts +7 -1
- package/lib/index.js +32 -3
- package/lib/locale/en-US.json +4 -2
- package/lib/locale/index.d.ts +4 -0
- package/lib/locale/zh-CN.json +4 -2
- package/lib/models/CollectionFieldModel.d.ts +3 -0
- package/lib/models/CollectionFieldModel.js +52 -6
- package/lib/models/flowModel.d.ts +30 -29
- package/lib/models/flowModel.js +153 -100
- package/lib/models/forkFlowModel.d.ts +8 -4
- package/lib/models/forkFlowModel.js +38 -8
- package/lib/provider.d.ts +3 -1
- package/lib/provider.js +7 -5
- package/lib/resources/multiRecordResource.js +25 -1
- package/lib/resources/singleRecordResource.js +19 -1
- package/lib/resources/sqlResource.d.ts +1 -0
- package/lib/resources/sqlResource.js +20 -24
- package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.d.ts +1 -6
- package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.js +27 -20
- package/lib/runjs-context/contexts/JSBlockRunJSContext.d.ts +1 -6
- package/lib/runjs-context/contexts/JSBlockRunJSContext.js +46 -33
- package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.d.ts +1 -2
- package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.js +14 -15
- package/lib/runjs-context/contexts/{LinkageRunJSContext.d.ts → JSColumnRunJSContext.d.ts} +6 -3
- package/lib/runjs-context/contexts/JSColumnRunJSContext.js +78 -0
- package/lib/runjs-context/contexts/JSFieldRunJSContext.d.ts +1 -6
- package/lib/runjs-context/contexts/JSFieldRunJSContext.js +28 -24
- package/lib/runjs-context/contexts/JSItemRunJSContext.d.ts +1 -6
- package/lib/runjs-context/contexts/JSItemRunJSContext.js +24 -20
- package/lib/runjs-context/contexts/JSRecordActionRunJSContext.d.ts +1 -2
- package/lib/runjs-context/contexts/JSRecordActionRunJSContext.js +16 -17
- package/lib/runjs-context/contexts/base.d.ts +9 -0
- package/lib/runjs-context/contexts/base.js +205 -0
- package/lib/runjs-context/helpers.d.ts +5 -2
- package/lib/runjs-context/helpers.js +36 -27
- package/lib/runjs-context/registry.d.ts +7 -4
- package/lib/runjs-context/registry.js +10 -42
- package/lib/runjs-context/setup.d.ts +9 -0
- package/lib/runjs-context/setup.js +82 -0
- package/lib/runjs-context/snippets/global/{copy-record-json.snippet.js → api-request.snippet.js} +25 -10
- package/lib/runjs-context/snippets/global/clipboard-copy-text.snippet.js +61 -0
- package/lib/runjs-context/snippets/global/{view-navigation-push.snippet.js → import-esm.snippet.js} +26 -12
- package/lib/runjs-context/snippets/global/message-error.snippet.js +6 -0
- package/lib/runjs-context/snippets/global/message-success.snippet.js +6 -0
- package/lib/runjs-context/snippets/global/notification-open.snippet.d.ts +3 -8
- package/lib/runjs-context/snippets/global/notification-open.snippet.js +8 -1
- package/lib/runjs-context/snippets/global/open-view-dialog.snippet.js +10 -3
- package/lib/runjs-context/snippets/global/open-view-drawer.snippet.js +10 -3
- package/lib/runjs-context/snippets/global/query-selector.snippet.js +53 -0
- package/lib/runjs-context/snippets/global/require-amd.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/global/{requireAsync.snippet.js → require-amd.snippet.js} +16 -13
- package/lib/runjs-context/snippets/global/window-open.snippet.d.ts +3 -8
- package/lib/runjs-context/snippets/global/window-open.snippet.js +8 -1
- package/lib/runjs-context/snippets/index.d.ts +14 -3
- package/lib/runjs-context/snippets/index.js +162 -40
- package/lib/runjs-context/snippets/scene/block/add-event-listener.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsblock → block}/add-event-listener.snippet.js +11 -2
- package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.js +64 -0
- package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.js +99 -0
- package/lib/runjs-context/snippets/{libs → scene/block}/echarts-init.snippet.js +24 -7
- package/lib/runjs-context/snippets/scene/block/render-antd-icons.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-antd-icons.snippet.js +65 -0
- package/lib/runjs-context/snippets/scene/block/render-button-handler.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsblock → block}/render-button-handler.snippet.js +17 -9
- package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.js +57 -0
- package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.js +71 -0
- package/lib/runjs-context/snippets/scene/block/render-react-jsx.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsblock/render-card.snippet.js → block/render-react-jsx.snippet.js} +26 -13
- package/lib/runjs-context/snippets/scene/block/render-react.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsblock → block}/render-react.snippet.js +18 -17
- package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.js +95 -0
- package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.js +84 -0
- package/lib/runjs-context/snippets/scene/block/resource-example.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/resource-example.snippet.js +60 -0
- package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.js +283 -0
- package/lib/runjs-context/snippets/scene/block/vue-component.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/vue-component.snippet.js +124 -0
- package/lib/runjs-context/snippets/scene/detail/color-by-value.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsfield → detail}/color-by-value.snippet.js +13 -3
- package/lib/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/{global → scene/detail}/copy-to-clipboard.snippet.js +28 -6
- package/lib/runjs-context/snippets/scene/detail/format-number.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsfield → detail}/format-number.snippet.js +13 -3
- package/lib/runjs-context/snippets/scene/detail/innerHTML-value.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsfield → detail}/innerHTML-value.snippet.js +13 -3
- package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.js +82 -0
- package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.js +80 -0
- package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.js +74 -0
- package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.js +63 -0
- package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.js +81 -0
- package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.js +64 -0
- package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.js +74 -0
- package/lib/runjs-context/snippets/scene/form/render-basic.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsitem → form}/render-basic.snippet.js +11 -2
- package/lib/runjs-context/snippets/scene/form/set-disabled.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{linkage → form}/set-disabled.snippet.js +12 -3
- package/lib/runjs-context/snippets/scene/form/set-field-value.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{linkage → form}/set-field-value.snippet.js +12 -3
- package/lib/runjs-context/snippets/scene/form/set-required.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{linkage → form}/set-required.snippet.js +12 -3
- package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.js +67 -0
- package/lib/runjs-context/snippets/scene/form/toggle-visible.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{linkage → form}/toggle-visible.snippet.js +12 -3
- package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.js +64 -0
- package/lib/runjs-context/snippets/scene/table/collection-selected-count.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{actions → table}/collection-selected-count.snippet.js +11 -2
- package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.js +79 -0
- package/lib/runjs-context/snippets/scene/table/destroy-selected.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/{global/log-json-record.snippet.js → scene/table/destroy-selected.snippet.js} +24 -11
- package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.js +64 -0
- package/lib/runjs-context/snippets/scene/table/iterate-selected-rows.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{actions → table}/iterate-selected-rows.snippet.js +11 -2
- package/lib/runjs-context/snippets/types.d.ts +9 -1
- package/lib/scheduler/ModelOperationScheduler.d.ts +51 -0
- package/lib/scheduler/ModelOperationScheduler.js +262 -0
- package/lib/types.d.ts +28 -3
- package/lib/types.js +4 -3
- package/lib/utils/associationObjectVariable.d.ts +32 -0
- package/lib/utils/associationObjectVariable.js +157 -0
- package/lib/utils/buildSettingsViewInputArgs.d.ts +19 -0
- package/lib/utils/buildSettingsViewInputArgs.js +75 -0
- package/lib/utils/createEphemeralContext.d.ts +13 -0
- package/lib/utils/createEphemeralContext.js +140 -0
- package/lib/utils/flows.d.ts +10 -0
- package/lib/{runjs-context/snippets/global/api-request-post.snippet.js → utils/flows.js} +21 -15
- package/lib/utils/index.d.ts +7 -2
- package/lib/utils/index.js +21 -2
- package/lib/utils/jsxTransform.d.ts +15 -0
- package/lib/utils/jsxTransform.js +68 -0
- package/lib/utils/params-resolvers.js +3 -3
- package/lib/utils/parsePathnameToViewParams.d.ts +1 -1
- package/lib/utils/parsePathnameToViewParams.js +41 -5
- package/lib/utils/pruneFilter.d.ts +21 -0
- package/lib/{runjs-context/snippets/global/try-catch-async.snippet.js → utils/pruneFilter.js} +24 -16
- package/lib/utils/safeGlobals.d.ts +5 -3
- package/lib/utils/safeGlobals.js +40 -0
- package/lib/utils/schema-utils.js +2 -2
- package/lib/utils/serverContextParams.d.ts +1 -0
- package/lib/utils/translation.d.ts +4 -1
- package/lib/utils/translation.js +6 -2
- package/lib/utils/variablesParams.d.ts +22 -5
- package/lib/utils/variablesParams.js +132 -36
- package/lib/views/DrawerComponent.js +21 -2
- package/lib/views/PageComponent.js +2 -1
- package/lib/views/ViewNavigation.d.ts +3 -9
- package/lib/views/ViewNavigation.js +16 -2
- package/lib/views/createViewMeta.d.ts +29 -1
- package/lib/views/createViewMeta.js +338 -72
- package/lib/views/index.d.ts +1 -0
- package/lib/views/index.js +3 -0
- package/lib/views/useDialog.d.ts +9 -8
- package/lib/views/useDialog.js +19 -14
- package/lib/views/useDrawer.d.ts +9 -8
- package/lib/views/useDrawer.js +54 -35
- package/lib/views/usePage.d.ts +9 -8
- package/lib/views/usePage.js +20 -14
- package/package.json +6 -3
- package/src/BlockScopedFlowEngine.ts +86 -0
- package/src/FlowContextProvider.tsx +4 -2
- package/src/JSRunner.ts +3 -0
- package/src/ViewScopedFlowEngine.ts +15 -1
- package/src/__tests__/JSRunner.test.ts +62 -53
- package/src/__tests__/blockScopedFlowEngine.test.ts +154 -0
- package/src/__tests__/createViewMeta.popup.test.ts +132 -0
- package/src/__tests__/flow-engine.test.ts +3 -0
- package/src/__tests__/flowContext.test.ts +52 -0
- package/src/__tests__/flowContextCreateJSRunner.test.ts +163 -0
- package/src/__tests__/flowEngine.saveModel.test.ts +4 -0
- package/src/__tests__/flowRunJSContextDefine.test.ts +508 -0
- package/src/__tests__/flowSettings.open.test.tsx +2 -0
- package/src/__tests__/flowSettings.test.ts +2 -0
- package/src/__tests__/globalFlowRegistry.test.ts +1 -1
- package/src/__tests__/modelOperationScheduler.test.ts +346 -0
- package/src/__tests__/objectVariable.test.ts +464 -0
- package/src/__tests__/runjsContext.test.ts +216 -35
- package/src/__tests__/runjsContextImplementations.test.ts +217 -0
- package/src/__tests__/runjsContextRuntime.test.ts +269 -0
- package/src/__tests__/runjsEdgeCases.test.ts +281 -0
- package/src/__tests__/runjsLocales.test.ts +36 -0
- package/src/__tests__/runjsRuntimeFeatures.test.ts +461 -0
- package/src/__tests__/runjsSnippets.test.ts +140 -0
- package/src/__tests__/viewScopedFlowEngine.test.ts +3 -3
- package/src/acl/Acl.tsx +14 -0
- package/src/acl/__tests__/Acl.test.tsx +43 -0
- package/src/components/DynamicFlowsEditor.tsx +3 -4
- package/src/components/FieldModelRenderer.tsx +20 -7
- package/src/components/FieldSkeleton.tsx +27 -0
- package/src/components/FlowContextSelector.tsx +6 -2
- package/src/components/FlowModelRenderer.tsx +33 -81
- package/src/components/FormItem.tsx +8 -1
- package/src/components/MobilePopup.style.ts +220 -0
- package/src/components/MobilePopup.tsx +86 -0
- package/src/components/__tests__/flow-model-render-error-fallback.test.tsx +6 -6
- package/src/components/index.ts +1 -0
- package/src/components/settings/independents/dropdown/FlowsDropdownButton.tsx +1 -1
- package/src/components/settings/wrappers/contextual/DefaultSettingsIcon.tsx +17 -4
- package/src/components/settings/wrappers/contextual/FlowsContextMenu.tsx +1 -1
- package/src/components/settings/wrappers/contextual/FlowsFloatContextMenu.tsx +39 -10
- package/src/components/settings/wrappers/contextual/StepSettingsDialog.tsx +14 -1
- package/src/components/settings/wrappers/contextual/__tests__/DefaultSettingsIcon.test.tsx +425 -0
- package/src/components/subModel/__tests__/AddSubModelButton.test.tsx +5 -7
- package/src/components/variables/VariableInput.tsx +25 -5
- package/src/components/variables/VariableTag.tsx +54 -2
- package/src/components/variables/types.ts +2 -0
- package/src/data-source/__tests__/sortCollectionsByInherits.test.ts +125 -0
- package/src/data-source/index.ts +42 -11
- package/src/data-source/sortCollectionsByInherits.ts +61 -0
- package/src/emitter.ts +14 -0
- package/src/executor/FlowExecutor.ts +213 -119
- package/src/executor/__tests__/ctx-defs-injection.test.ts +197 -0
- package/src/executor/__tests__/flowExecutor.test.ts +151 -5
- package/src/flow-registry/GlobalFlowRegistry.ts +1 -0
- package/src/flow-registry/InstanceFlowRegistry.ts +1 -0
- package/src/flow-registry/__tests__/globalFlowRegistry.test.ts +54 -0
- package/src/flowContext.ts +303 -104
- package/src/flowEngine.ts +96 -6
- package/src/flowSettings.ts +12 -4
- package/src/hooks/useApplyAutoFlows.ts +3 -1
- package/src/index.ts +12 -1
- package/src/locale/en-US.json +4 -2
- package/src/locale/zh-CN.json +4 -2
- package/src/models/CollectionFieldModel.tsx +60 -8
- package/src/models/__tests__/dispatchEvent.behavior.test.ts +169 -0
- package/src/models/__tests__/flowModel.getFlows.sort.test.ts +33 -9
- package/src/models/__tests__/flowModel.scheduleModelOperation.test.tsx +129 -0
- package/src/models/__tests__/flowModel.test.ts +234 -111
- package/src/models/__tests__/forkFlowModel.test.ts +40 -7
- package/src/models/flowModel.tsx +197 -132
- package/src/models/forkFlowModel.ts +48 -8
- package/src/provider.tsx +10 -7
- package/src/resources/multiRecordResource.ts +28 -1
- package/src/resources/singleRecordResource.ts +19 -1
- package/src/resources/sqlResource.ts +20 -25
- package/src/runjs-context/contexts/FormJSFieldItemRunJSContext.ts +28 -21
- package/src/runjs-context/contexts/JSBlockRunJSContext.ts +46 -34
- package/src/runjs-context/contexts/JSCollectionActionRunJSContext.ts +15 -16
- package/src/runjs-context/contexts/JSColumnRunJSContext.ts +58 -0
- package/src/runjs-context/contexts/JSFieldRunJSContext.ts +30 -25
- package/src/runjs-context/contexts/JSItemRunJSContext.ts +25 -21
- package/src/runjs-context/contexts/JSRecordActionRunJSContext.ts +17 -18
- package/src/runjs-context/contexts/base.ts +196 -0
- package/src/runjs-context/helpers.ts +32 -30
- package/src/runjs-context/registry.ts +16 -47
- package/src/runjs-context/setup.ts +51 -0
- package/src/runjs-context/snippets/global/api-request.snippet.ts +38 -0
- package/src/runjs-context/snippets/global/clipboard-copy-text.snippet.ts +42 -0
- package/src/runjs-context/snippets/global/import-esm.snippet.ts +39 -0
- package/src/runjs-context/snippets/global/message-error.snippet.ts +6 -0
- package/src/runjs-context/snippets/global/message-success.snippet.ts +6 -0
- package/src/runjs-context/snippets/global/notification-open.snippet.ts +11 -1
- package/src/runjs-context/snippets/global/open-view-dialog.snippet.ts +10 -3
- package/src/runjs-context/snippets/global/open-view-drawer.snippet.ts +10 -3
- package/src/runjs-context/snippets/global/query-selector.snippet.ts +34 -0
- package/src/runjs-context/snippets/global/require-amd.snippet.ts +30 -0
- package/src/runjs-context/snippets/global/window-open.snippet.ts +11 -1
- package/src/runjs-context/snippets/index.ts +178 -39
- package/src/runjs-context/snippets/scene/{jsblock → block}/add-event-listener.snippet.ts +14 -2
- package/src/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/block/chartjs-bar.snippet.ts +80 -0
- package/src/runjs-context/snippets/scene/block/echarts-init.snippet.ts +44 -0
- package/src/runjs-context/snippets/scene/block/render-antd-icons.snippet.ts +46 -0
- package/src/runjs-context/snippets/scene/block/render-button-handler.snippet.ts +35 -0
- package/src/runjs-context/snippets/scene/block/render-iframe.snippet.ts +38 -0
- package/src/runjs-context/snippets/scene/block/render-info-card.snippet.ts +52 -0
- package/src/runjs-context/snippets/scene/block/render-react-jsx.snippet.ts +39 -0
- package/src/runjs-context/snippets/scene/block/render-react.snippet.ts +38 -0
- package/src/runjs-context/snippets/scene/block/render-statistics.snippet.ts +76 -0
- package/src/runjs-context/snippets/scene/block/render-timeline.snippet.ts +65 -0
- package/src/runjs-context/snippets/scene/block/resource-example.snippet.ts +46 -0
- package/src/runjs-context/snippets/scene/block/three-users-orbit.snippet.ts +264 -0
- package/src/runjs-context/snippets/scene/block/vue-component.snippet.ts +105 -0
- package/src/runjs-context/snippets/scene/detail/color-by-value.snippet.ts +33 -0
- package/src/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/detail/format-number.snippet.ts +32 -0
- package/src/runjs-context/snippets/scene/detail/innerHTML-value.snippet.ts +31 -0
- package/src/runjs-context/snippets/scene/detail/percentage-bar.snippet.ts +63 -0
- package/src/runjs-context/snippets/scene/detail/relative-time.snippet.ts +61 -0
- package/src/runjs-context/snippets/scene/detail/status-tag.snippet.ts +55 -0
- package/src/runjs-context/snippets/scene/form/calculate-total.snippet.ts +44 -0
- package/src/runjs-context/snippets/scene/form/cascade-select.snippet.ts +62 -0
- package/src/runjs-context/snippets/scene/form/conditional-required.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/form/copy-field-values.snippet.ts +55 -0
- package/src/runjs-context/snippets/scene/{jsitem → form}/render-basic.snippet.ts +14 -2
- package/src/runjs-context/snippets/scene/{linkage → form}/set-disabled.snippet.ts +15 -3
- package/src/runjs-context/snippets/scene/{linkage → form}/set-field-value.snippet.ts +15 -3
- package/src/runjs-context/snippets/scene/{linkage → form}/set-required.snippet.ts +15 -3
- package/src/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.ts +48 -0
- package/src/runjs-context/snippets/scene/{linkage → form}/toggle-visible.snippet.ts +15 -3
- package/src/runjs-context/snippets/scene/table/cell-open-dialog.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/{actions → table}/collection-selected-count.snippet.ts +14 -2
- package/src/runjs-context/snippets/scene/table/concat-fields.snippet.ts +60 -0
- package/src/runjs-context/snippets/scene/table/destroy-selected.snippet.ts +36 -0
- package/src/runjs-context/snippets/scene/table/export-selected-json.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/{actions → table}/iterate-selected-rows.snippet.ts +14 -2
- package/src/runjs-context/snippets/types.ts +5 -1
- package/src/scheduler/ModelOperationScheduler.ts +304 -0
- package/src/types.ts +34 -0
- package/src/utils/__tests__/flows.test.ts +65 -0
- package/src/utils/__tests__/jsxTransform.test.ts +38 -0
- package/src/utils/__tests__/parsePathnameToViewParams.test.ts +25 -0
- package/src/utils/__tests__/pruneFilter.test.ts +38 -0
- package/src/utils/__tests__/safeGlobals.test.ts +22 -1
- package/src/utils/__tests__/variablesParams.test.ts +63 -0
- package/src/utils/associationObjectVariable.ts +180 -0
- package/src/utils/buildSettingsViewInputArgs.ts +72 -0
- package/src/utils/createEphemeralContext.ts +142 -0
- package/src/utils/flows.ts +23 -0
- package/src/utils/index.ts +11 -2
- package/src/utils/jsxTransform.ts +39 -0
- package/src/utils/params-resolvers.ts +2 -2
- package/src/utils/parsePathnameToViewParams.ts +50 -6
- package/src/utils/pruneFilter.ts +41 -0
- package/src/utils/safeGlobals.ts +49 -3
- package/src/utils/schema-utils.ts +1 -1
- package/src/utils/serverContextParams.ts +1 -0
- package/src/utils/translation.ts +7 -2
- package/src/utils/variablesParams.ts +156 -38
- package/src/views/DrawerComponent.tsx +21 -2
- package/src/views/PageComponent.tsx +1 -1
- package/src/views/ViewNavigation.ts +20 -12
- package/src/views/__tests__/ViewNavigation.test.ts +10 -0
- package/src/views/createViewMeta.ts +393 -70
- package/src/views/index.tsx +1 -0
- package/src/views/useDialog.tsx +24 -18
- package/src/views/useDrawer.tsx +74 -45
- package/src/views/usePage.tsx +26 -17
- package/lib/runjs-context/contexts/FlowRunJSContext.d.ts +0 -38
- package/lib/runjs-context/contexts/FlowRunJSContext.js +0 -217
- package/lib/runjs-context/contexts/LinkageRunJSContext.js +0 -62
- package/lib/runjs-context/index.d.ts +0 -19
- package/lib/runjs-context/index.js +0 -57
- package/lib/runjs-context/snippets/global/api-request-get.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/api-request-get.snippet.js +0 -42
- package/lib/runjs-context/snippets/global/api-request-post.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/console-log-ctx.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/console-log-ctx.snippet.js +0 -41
- package/lib/runjs-context/snippets/global/requireAsync.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/sleep.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/sleep.snippet.js +0 -43
- package/lib/runjs-context/snippets/global/try-catch-async.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/libs/echarts-init.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/collection-selected-count.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/iterate-selected-rows.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.js +0 -43
- package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.js +0 -40
- package/lib/runjs-context/snippets/scene/jsblock/add-event-listener.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.js +0 -42
- package/lib/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.js +0 -46
- package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.js +0 -41
- package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.js +0 -41
- package/lib/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/render-react.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsfield/color-by-value.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsfield/format-number.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsitem/render-basic.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/linkage/set-disabled.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/linkage/set-field-value.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/linkage/set-required.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/linkage/toggle-visible.snippet.d.ts +0 -15
- package/src/runjs-context/contexts/FlowRunJSContext.ts +0 -190
- package/src/runjs-context/contexts/LinkageRunJSContext.ts +0 -35
- package/src/runjs-context/index.ts +0 -20
- package/src/runjs-context/snippets/global/api-request-get.snippet.ts +0 -20
- package/src/runjs-context/snippets/global/api-request-post.snippet.ts +0 -20
- package/src/runjs-context/snippets/global/console-log-ctx.snippet.ts +0 -19
- package/src/runjs-context/snippets/global/copy-record-json.snippet.ts +0 -21
- package/src/runjs-context/snippets/global/copy-to-clipboard.snippet.ts +0 -21
- package/src/runjs-context/snippets/global/log-json-record.snippet.ts +0 -21
- package/src/runjs-context/snippets/global/requireAsync.snippet.ts +0 -24
- package/src/runjs-context/snippets/global/sleep.snippet.ts +0 -21
- package/src/runjs-context/snippets/global/try-catch-async.snippet.ts +0 -22
- package/src/runjs-context/snippets/global/view-navigation-push.snippet.ts +0 -23
- package/src/runjs-context/snippets/libs/echarts-init.snippet.ts +0 -24
- package/src/runjs-context/snippets/scene/actions/record-id-message.snippet.ts +0 -21
- package/src/runjs-context/snippets/scene/actions/run-action-basic.snippet.ts +0 -18
- package/src/runjs-context/snippets/scene/jsblock/append-style.snippet.ts +0 -20
- package/src/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.ts +0 -24
- package/src/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.ts +0 -19
- package/src/runjs-context/snippets/scene/jsblock/render-basic.snippet.ts +0 -24
- package/src/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.ts +0 -24
- package/src/runjs-context/snippets/scene/jsblock/render-card.snippet.ts +0 -30
- package/src/runjs-context/snippets/scene/jsblock/render-react.snippet.ts +0 -34
- package/src/runjs-context/snippets/scene/jsfield/color-by-value.snippet.ts +0 -20
- package/src/runjs-context/snippets/scene/jsfield/format-number.snippet.ts +0 -19
- package/src/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.ts +0 -18
- /package/lib/runjs-context/snippets/global/{copy-record-json.snippet.d.ts → api-request.snippet.d.ts} +0 -0
- /package/lib/runjs-context/snippets/global/{copy-to-clipboard.snippet.d.ts → clipboard-copy-text.snippet.d.ts} +0 -0
- /package/lib/runjs-context/snippets/global/{log-json-record.snippet.d.ts → import-esm.snippet.d.ts} +0 -0
- /package/lib/runjs-context/snippets/global/{view-navigation-push.snippet.d.ts → query-selector.snippet.d.ts} +0 -0
- /package/lib/runjs-context/snippets/scene/{jsblock/render-card.snippet.d.ts → block/echarts-init.snippet.d.ts} +0 -0
|
@@ -14,5 +14,8 @@ import type { FlowModel } from '../models';
|
|
|
14
14
|
* @returns 翻译函数,自动使用 flow-engine 命名空间
|
|
15
15
|
*/
|
|
16
16
|
export declare function getT(model: FlowModel): (key: string, options?: any) => string;
|
|
17
|
+
export declare function tExpr(text: TFuncKey | TFuncKey[], options?: TOptions): string;
|
|
18
|
+
/**
|
|
19
|
+
* @deprecated use tExpr from `@nocobase/flow-engine` instead
|
|
20
|
+
*/
|
|
17
21
|
export declare function escapeT(text: TFuncKey | TFuncKey[], options?: TOptions): string;
|
|
18
|
-
export { escapeT as tExpr };
|
package/lib/utils/translation.js
CHANGED
|
@@ -29,7 +29,7 @@ var translation_exports = {};
|
|
|
29
29
|
__export(translation_exports, {
|
|
30
30
|
escapeT: () => escapeT,
|
|
31
31
|
getT: () => getT,
|
|
32
|
-
tExpr: () =>
|
|
32
|
+
tExpr: () => tExpr
|
|
33
33
|
});
|
|
34
34
|
module.exports = __toCommonJS(translation_exports);
|
|
35
35
|
var import_constants = require("./constants");
|
|
@@ -43,12 +43,16 @@ function getT(model) {
|
|
|
43
43
|
return (key) => key;
|
|
44
44
|
}
|
|
45
45
|
__name(getT, "getT");
|
|
46
|
-
function
|
|
46
|
+
function tExpr(text, options) {
|
|
47
47
|
if (options) {
|
|
48
48
|
return `{{t(${JSON.stringify(text)}, ${JSON.stringify(options)})}}`;
|
|
49
49
|
}
|
|
50
50
|
return `{{t(${JSON.stringify(text)})}}`;
|
|
51
51
|
}
|
|
52
|
+
__name(tExpr, "tExpr");
|
|
53
|
+
function escapeT(text, options) {
|
|
54
|
+
return tExpr(text, options);
|
|
55
|
+
}
|
|
52
56
|
__name(escapeT, "escapeT");
|
|
53
57
|
// Annotate the CommonJS export names for ESM import in node:
|
|
54
58
|
0 && (module.exports = {
|
|
@@ -6,11 +6,26 @@
|
|
|
6
6
|
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
|
-
import
|
|
10
|
-
import type { JSONValue } from './params-resolvers';
|
|
9
|
+
import { extractUsedVariableNames as _extractUsedVariableNames, extractUsedVariablePaths as _extractUsedVariablePaths } from '@nocobase/shared';
|
|
11
10
|
import type { Collection } from '../data-source';
|
|
11
|
+
import type { FlowContext, PropertyMeta, PropertyMetaFactory } from '../flowContext';
|
|
12
12
|
import { type RecordRef, type ServerContextParams } from '../utils/serverContextParams';
|
|
13
|
+
import type { JSONValue } from './params-resolvers';
|
|
13
14
|
export declare function inferRecordRef(ctx: FlowContext): RecordRef | undefined;
|
|
15
|
+
export declare function inferViewRecordRef(ctx: FlowContext): RecordRef | undefined;
|
|
16
|
+
export declare function getViewRecordFromParent(flowContext: FlowContext, viewContext: FlowContext): unknown;
|
|
17
|
+
export declare function createViewRecordResolveOnServer(ctx: FlowContext, getLocalRecord: () => unknown): (subPath: string) => boolean;
|
|
18
|
+
/**
|
|
19
|
+
* 创建一个用于 “ctx.record” 变量的 resolveOnServer 判定函数:
|
|
20
|
+
* - 若本地 record 不存在:统一走服务端;
|
|
21
|
+
* - 若本地 record 存在:
|
|
22
|
+
* - 访问空子路径("{{ ctx.record }}")时使用本地值,不走服务端;
|
|
23
|
+
* - 访问非关联字段(如 id/title):使用本地值;
|
|
24
|
+
* - 访问关联字段:
|
|
25
|
+
* - 若本地该字段无值(undefined/null),则交给服务端解析(无论是 "author" 还是 "author.name");
|
|
26
|
+
* - 若本地已有值,则仅在访问子属性且本地缺少该子属性值时交给服务端。
|
|
27
|
+
*/
|
|
28
|
+
export declare function createRecordResolveOnServerWithLocal(collectionAccessor: () => Collection | null, valueAccessor: () => unknown): (subPath: string) => boolean;
|
|
14
29
|
export declare function inferParentRecordRef(ctx: FlowContext): RecordRef | undefined;
|
|
15
30
|
export type RecordParamsBuilder = (ctx: FlowContext) => RecordRef | Promise<RecordRef> | undefined;
|
|
16
31
|
/**
|
|
@@ -27,12 +42,14 @@ export declare function createRecordMetaFactory(collectionAccessor: () => Collec
|
|
|
27
42
|
* - Title: t('Current record')
|
|
28
43
|
* - Params: inferRecordRef(ctx)
|
|
29
44
|
*/
|
|
30
|
-
export declare function createCurrentRecordMetaFactory(ctx: FlowContext, collectionAccessor: () => Collection | null
|
|
45
|
+
export declare function createCurrentRecordMetaFactory(ctx: FlowContext, collectionAccessor: () => Collection | null, options?: {
|
|
46
|
+
title?: string;
|
|
47
|
+
}): PropertyMetaFactory;
|
|
31
48
|
/**
|
|
32
49
|
* Extract top-level ctx variable names used inside a JSON template.
|
|
33
50
|
* Supports dot and bracket notations, e.g. {{ ctx.record.id }}, {{ ctx['parentRecord'].name }}.
|
|
34
51
|
*/
|
|
35
|
-
export declare const extractUsedVariableNames:
|
|
52
|
+
export declare const extractUsedVariableNames: typeof _extractUsedVariableNames;
|
|
36
53
|
/**
|
|
37
54
|
* Extract used top-level ctx variables with their subpaths.
|
|
38
55
|
* Returns a map: varName -> string[] subPaths
|
|
@@ -42,7 +59,7 @@ export declare const extractUsedVariableNames: any;
|
|
|
42
59
|
* - {{ ctx.view.record.id }} => { view: ['record.id'] }
|
|
43
60
|
* - {{ ctx.twice(21) }} => { twice: [''] } // method call -> empty subPath
|
|
44
61
|
*/
|
|
45
|
-
export declare const extractUsedVariablePaths:
|
|
62
|
+
export declare const extractUsedVariablePaths: typeof _extractUsedVariablePaths;
|
|
46
63
|
/**
|
|
47
64
|
* 根据模板中用到的 ctx 变量,收集并构建服务端解析所需的 contextParams。
|
|
48
65
|
* - 通过 FlowContext 的 PropertyMeta.buildVariablesParams 收集 RecordRef
|
|
@@ -7,9 +7,11 @@
|
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
+
var __create = Object.create;
|
|
10
11
|
var __defProp = Object.defineProperty;
|
|
11
12
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
12
13
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
14
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
13
15
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
16
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
15
17
|
var __export = (target, all) => {
|
|
@@ -24,6 +26,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
24
26
|
}
|
|
25
27
|
return to;
|
|
26
28
|
};
|
|
29
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
30
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
31
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
32
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
33
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
34
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
35
|
+
mod
|
|
36
|
+
));
|
|
27
37
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
38
|
var variablesParams_exports = {};
|
|
29
39
|
__export(variablesParams_exports, {
|
|
@@ -31,15 +41,21 @@ __export(variablesParams_exports, {
|
|
|
31
41
|
collectContextParamsForTemplate: () => collectContextParamsForTemplate,
|
|
32
42
|
createCurrentRecordMetaFactory: () => createCurrentRecordMetaFactory,
|
|
33
43
|
createRecordMetaFactory: () => createRecordMetaFactory,
|
|
44
|
+
createRecordResolveOnServerWithLocal: () => createRecordResolveOnServerWithLocal,
|
|
45
|
+
createViewRecordResolveOnServer: () => createViewRecordResolveOnServer,
|
|
34
46
|
extractUsedVariableNames: () => extractUsedVariableNames,
|
|
35
47
|
extractUsedVariablePaths: () => extractUsedVariablePaths,
|
|
48
|
+
getViewRecordFromParent: () => getViewRecordFromParent,
|
|
36
49
|
inferParentRecordRef: () => inferParentRecordRef,
|
|
37
|
-
inferRecordRef: () => inferRecordRef
|
|
50
|
+
inferRecordRef: () => inferRecordRef,
|
|
51
|
+
inferViewRecordRef: () => inferViewRecordRef
|
|
38
52
|
});
|
|
39
53
|
module.exports = __toCommonJS(variablesParams_exports);
|
|
40
|
-
var
|
|
54
|
+
var import_shared = require("@nocobase/shared");
|
|
41
55
|
var import_serverContextParams = require("../utils/serverContextParams");
|
|
42
|
-
var
|
|
56
|
+
var import_createCollectionContextMeta = require("./createCollectionContextMeta");
|
|
57
|
+
var import_associationObjectVariable = require("./associationObjectVariable");
|
|
58
|
+
var import_lodash = __toESM(require("lodash"));
|
|
43
59
|
function isObject(value) {
|
|
44
60
|
return typeof value === "object" && value !== null;
|
|
45
61
|
}
|
|
@@ -71,14 +87,94 @@ function inferRecordRef(ctx) {
|
|
|
71
87
|
return { collection, dataSourceKey, filterByTk };
|
|
72
88
|
}
|
|
73
89
|
__name(inferRecordRef, "inferRecordRef");
|
|
90
|
+
function inferViewRecordRef(ctx) {
|
|
91
|
+
var _a, _b, _c;
|
|
92
|
+
const view = ctx.view;
|
|
93
|
+
if (!view) return void 0;
|
|
94
|
+
const inputArgs = (view == null ? void 0 : view.inputArgs) || {};
|
|
95
|
+
const collection = (inputArgs == null ? void 0 : inputArgs.collectionName) || ((_a = view == null ? void 0 : view.record) == null ? void 0 : _a.collection);
|
|
96
|
+
const dataSourceKey = (inputArgs == null ? void 0 : inputArgs.dataSourceKey) || ((_b = view == null ? void 0 : view.record) == null ? void 0 : _b.dataSourceKey) || "main";
|
|
97
|
+
const filterByTk = (inputArgs == null ? void 0 : inputArgs.filterByTk) || ((_c = view == null ? void 0 : view.record) == null ? void 0 : _c.filterByTk);
|
|
98
|
+
const sourceId = inputArgs == null ? void 0 : inputArgs.sourceId;
|
|
99
|
+
if (!collection || typeof filterByTk === "undefined" || filterByTk === null) return void 0;
|
|
100
|
+
return { collection, dataSourceKey, filterByTk, sourceId };
|
|
101
|
+
}
|
|
102
|
+
__name(inferViewRecordRef, "inferViewRecordRef");
|
|
103
|
+
function getViewRecordFromParent(flowContext, viewContext) {
|
|
104
|
+
var _a, _b, _c;
|
|
105
|
+
const parentRecord = (_a = flowContext.inputArgs) == null ? void 0 : _a.record;
|
|
106
|
+
const parentTk = (_b = flowContext.collection) == null ? void 0 : _b.filterTargetKey;
|
|
107
|
+
if (!parentRecord || !parentTk) return void 0;
|
|
108
|
+
const view = viewContext.view;
|
|
109
|
+
const viewFilterByTk = (_c = view == null ? void 0 : view.inputArgs) == null ? void 0 : _c.filterByTk;
|
|
110
|
+
const recordFilterByTk = parentRecord[parentTk];
|
|
111
|
+
if (viewFilterByTk == null || recordFilterByTk == null) return void 0;
|
|
112
|
+
if (viewFilterByTk !== recordFilterByTk) return void 0;
|
|
113
|
+
return import_lodash.default.cloneDeep(parentRecord);
|
|
114
|
+
}
|
|
115
|
+
__name(getViewRecordFromParent, "getViewRecordFromParent");
|
|
116
|
+
function createViewRecordResolveOnServer(ctx, getLocalRecord) {
|
|
117
|
+
return (p) => {
|
|
118
|
+
var _a, _b, _c, _d;
|
|
119
|
+
if (!(p === "record" || p.startsWith("record."))) return false;
|
|
120
|
+
const local = getLocalRecord();
|
|
121
|
+
if (!local) return true;
|
|
122
|
+
if (p === "record") return false;
|
|
123
|
+
const ref = inferViewRecordRef(ctx);
|
|
124
|
+
const colName = ref == null ? void 0 : ref.collection;
|
|
125
|
+
const dsKey = (ref == null ? void 0 : ref.dataSourceKey) || "main";
|
|
126
|
+
if (!colName) return true;
|
|
127
|
+
const ds = (_b = (_a = ctx.dataSourceManager) == null ? void 0 : _a.getDataSource) == null ? void 0 : _b.call(_a, dsKey);
|
|
128
|
+
const collection = (_d = (_c = ds == null ? void 0 : ds.collectionManager) == null ? void 0 : _c.getCollection) == null ? void 0 : _d.call(_c, colName);
|
|
129
|
+
if (!collection) return true;
|
|
130
|
+
const resolver = (0, import_associationObjectVariable.createAssociationSubpathResolver)(
|
|
131
|
+
() => collection,
|
|
132
|
+
() => local
|
|
133
|
+
);
|
|
134
|
+
const subPath = p.startsWith("record.") ? p.slice("record.".length) : "";
|
|
135
|
+
if (!subPath) return false;
|
|
136
|
+
return resolver(subPath);
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
__name(createViewRecordResolveOnServer, "createViewRecordResolveOnServer");
|
|
140
|
+
function createRecordResolveOnServerWithLocal(collectionAccessor, valueAccessor) {
|
|
141
|
+
const assocSubpathResolver = (0, import_associationObjectVariable.createAssociationSubpathResolver)(collectionAccessor, () => valueAccessor());
|
|
142
|
+
return (p) => {
|
|
143
|
+
var _a;
|
|
144
|
+
const local = valueAccessor();
|
|
145
|
+
if (!local) return true;
|
|
146
|
+
if (!p) return false;
|
|
147
|
+
const collection = collectionAccessor();
|
|
148
|
+
if (!p.includes(".")) {
|
|
149
|
+
const name = p;
|
|
150
|
+
let field;
|
|
151
|
+
if (collection) {
|
|
152
|
+
if (typeof collection.getField === "function") {
|
|
153
|
+
field = collection.getField(name);
|
|
154
|
+
}
|
|
155
|
+
if (!field && typeof collection.getFields === "function") {
|
|
156
|
+
const fields = collection.getFields() || [];
|
|
157
|
+
field = fields.find((f) => (f == null ? void 0 : f.name) === name);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
const isAssoc = !!((_a = field == null ? void 0 : field.isAssociationField) == null ? void 0 : _a.call(field));
|
|
161
|
+
if (!isAssoc) return false;
|
|
162
|
+
const value = local == null ? void 0 : local[name];
|
|
163
|
+
if (value === void 0 || value === null) return true;
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
return assocSubpathResolver(p);
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
__name(createRecordResolveOnServerWithLocal, "createRecordResolveOnServerWithLocal");
|
|
74
170
|
function inferParentRecordRef(ctx) {
|
|
75
171
|
var _a, _b, _c, _d;
|
|
76
172
|
const resource = getResource(ctx);
|
|
77
173
|
const dataSourceKey = ((_a = getCollection(ctx)) == null ? void 0 : _a.dataSourceKey) || ((_b = resource == null ? void 0 : resource.getDataSourceKey) == null ? void 0 : _b.call(resource));
|
|
78
|
-
const
|
|
174
|
+
const resourceName = (_c = resource == null ? void 0 : resource.getResourceName) == null ? void 0 : _c.call(resource);
|
|
79
175
|
const sourceId = (_d = resource == null ? void 0 : resource.getSourceId) == null ? void 0 : _d.call(resource);
|
|
80
|
-
if (!
|
|
81
|
-
const parts = String(
|
|
176
|
+
if (!resourceName || typeof sourceId === "undefined" || sourceId === null) return void 0;
|
|
177
|
+
const parts = String(resourceName).split(".");
|
|
82
178
|
if (parts.length < 2) return void 0;
|
|
83
179
|
return { collection: parts[0], dataSourceKey, filterByTk: sourceId };
|
|
84
180
|
}
|
|
@@ -98,43 +194,39 @@ function createRecordMetaFactory(collectionAccessor, title, paramsBuilder) {
|
|
|
98
194
|
return factory;
|
|
99
195
|
}
|
|
100
196
|
__name(createRecordMetaFactory, "createRecordMetaFactory");
|
|
101
|
-
function createCurrentRecordMetaFactory(ctx, collectionAccessor) {
|
|
102
|
-
var _a;
|
|
103
|
-
const title = ((_a = ctx == null ? void 0 : ctx.t) == null ? void 0 :
|
|
197
|
+
function createCurrentRecordMetaFactory(ctx, collectionAccessor, options) {
|
|
198
|
+
var _a, _b;
|
|
199
|
+
const title = (options == null ? void 0 : options.title) ? ((_a = ctx.t) == null ? void 0 : _a.call(ctx, options.title)) || options.title : ((_b = ctx.t) == null ? void 0 : _b.call(ctx, "Current record")) || "Current record";
|
|
104
200
|
return createRecordMetaFactory(collectionAccessor, title, (c) => inferRecordRef(c));
|
|
105
201
|
}
|
|
106
202
|
__name(createCurrentRecordMetaFactory, "createCurrentRecordMetaFactory");
|
|
107
|
-
const extractUsedVariableNames =
|
|
108
|
-
const extractUsedVariablePaths =
|
|
203
|
+
const extractUsedVariableNames = import_shared.extractUsedVariableNames;
|
|
204
|
+
const extractUsedVariablePaths = import_shared.extractUsedVariablePaths;
|
|
109
205
|
async function collectContextParamsForTemplate(ctx, template) {
|
|
110
206
|
var _a;
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
built = await builder(ctx);
|
|
126
|
-
}
|
|
127
|
-
} catch (err) {
|
|
128
|
-
continue;
|
|
129
|
-
}
|
|
130
|
-
if (built) {
|
|
131
|
-
input[key] = built;
|
|
207
|
+
const usage = (0, import_shared.extractUsedVariablePaths)(template) || {};
|
|
208
|
+
const varNames = Object.keys(usage);
|
|
209
|
+
if (!varNames.length) return void 0;
|
|
210
|
+
const input = {};
|
|
211
|
+
for (const key of varNames) {
|
|
212
|
+
const opt = (_a = ctx.getPropertyOptions) == null ? void 0 : _a.call(ctx, key);
|
|
213
|
+
const meta = opt == null ? void 0 : opt.meta;
|
|
214
|
+
if (!meta) continue;
|
|
215
|
+
let built;
|
|
216
|
+
try {
|
|
217
|
+
const resolvedMeta = typeof meta === "function" ? await meta() : meta;
|
|
218
|
+
const builder = resolvedMeta == null ? void 0 : resolvedMeta.buildVariablesParams;
|
|
219
|
+
if (typeof builder === "function") {
|
|
220
|
+
built = await builder(ctx);
|
|
132
221
|
}
|
|
222
|
+
} catch (err) {
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
if (built) {
|
|
226
|
+
input[key] = built;
|
|
133
227
|
}
|
|
134
|
-
return (0, import_serverContextParams.buildServerContextParams)(ctx, input);
|
|
135
|
-
} catch (_) {
|
|
136
|
-
return void 0;
|
|
137
228
|
}
|
|
229
|
+
return (0, import_serverContextParams.buildServerContextParams)(ctx, input);
|
|
138
230
|
}
|
|
139
231
|
__name(collectContextParamsForTemplate, "collectContextParamsForTemplate");
|
|
140
232
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -143,8 +235,12 @@ __name(collectContextParamsForTemplate, "collectContextParamsForTemplate");
|
|
|
143
235
|
collectContextParamsForTemplate,
|
|
144
236
|
createCurrentRecordMetaFactory,
|
|
145
237
|
createRecordMetaFactory,
|
|
238
|
+
createRecordResolveOnServerWithLocal,
|
|
239
|
+
createViewRecordResolveOnServer,
|
|
146
240
|
extractUsedVariableNames,
|
|
147
241
|
extractUsedVariablePaths,
|
|
242
|
+
getViewRecordFromParent,
|
|
148
243
|
inferParentRecordRef,
|
|
149
|
-
inferRecordRef
|
|
244
|
+
inferRecordRef,
|
|
245
|
+
inferViewRecordRef
|
|
150
246
|
});
|
|
@@ -42,12 +42,13 @@ __export(DrawerComponent_exports, {
|
|
|
42
42
|
module.exports = __toCommonJS(DrawerComponent_exports);
|
|
43
43
|
var import_antd = require("antd");
|
|
44
44
|
var React = __toESM(require("react"));
|
|
45
|
+
var import_MobilePopup = require("../components/MobilePopup");
|
|
45
46
|
const DrawerComponent = React.forwardRef((props, ref) => {
|
|
46
47
|
var _a;
|
|
47
|
-
const { children, footer: initialFooter, title, extra, hidden, ...drawerProps } = props;
|
|
48
|
+
const { children, footer: initialFooter, title, extra, hidden, isMobile, ...drawerProps } = props;
|
|
48
49
|
const [open, setOpen] = React.useState(true);
|
|
49
50
|
const [footer, setFooter] = React.useState(() => initialFooter);
|
|
50
|
-
const [header, setHeader] = React.useState({ title, extra });
|
|
51
|
+
const [header, setHeader] = React.useState({ title, extra, ...drawerProps.header });
|
|
51
52
|
React.useImperativeHandle(
|
|
52
53
|
ref,
|
|
53
54
|
() => ({
|
|
@@ -75,6 +76,24 @@ const DrawerComponent = React.forwardRef((props, ref) => {
|
|
|
75
76
|
const container = React.useMemo(() => {
|
|
76
77
|
return document.querySelector("#nocobase-app-container");
|
|
77
78
|
}, []);
|
|
79
|
+
if (isMobile) {
|
|
80
|
+
return /* @__PURE__ */ React.createElement(
|
|
81
|
+
import_MobilePopup.MobilePopup,
|
|
82
|
+
{
|
|
83
|
+
className: hidden ? "nb-hidden" : "",
|
|
84
|
+
visible: open,
|
|
85
|
+
...drawerProps,
|
|
86
|
+
footer,
|
|
87
|
+
...header,
|
|
88
|
+
onClose: () => {
|
|
89
|
+
var _a2;
|
|
90
|
+
setOpen(false);
|
|
91
|
+
(_a2 = drawerProps.afterClose) == null ? void 0 : _a2.call(drawerProps);
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
children
|
|
95
|
+
);
|
|
96
|
+
}
|
|
78
97
|
return /* @__PURE__ */ React.createElement(
|
|
79
98
|
import_antd.Drawer,
|
|
80
99
|
{
|
|
@@ -56,7 +56,8 @@ const PageComponent = (0, import_react.forwardRef)((props, ref) => {
|
|
|
56
56
|
hidden,
|
|
57
57
|
title: _title,
|
|
58
58
|
styles = {},
|
|
59
|
-
zIndex
|
|
59
|
+
zIndex = 4
|
|
60
|
+
// 这个默认值是为了防止表格的阴影显示到子页面上面
|
|
60
61
|
} = mergedProps;
|
|
61
62
|
const closedRef = (0, import_react.useRef)(false);
|
|
62
63
|
const flowEngine = (0, import_provider.useFlowEngine)();
|
|
@@ -7,16 +7,10 @@
|
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
9
|
import { FlowEngineContext } from '../flowContext';
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
import { ViewParam as SharedViewParam } from '../utils';
|
|
11
|
+
type ViewParam = Omit<SharedViewParam, 'viewUid'> & {
|
|
12
12
|
viewUid?: string;
|
|
13
|
-
|
|
14
|
-
tabUid?: string;
|
|
15
|
-
/** 弹窗记录的 id */
|
|
16
|
-
filterByTk?: string;
|
|
17
|
-
/** source Id */
|
|
18
|
-
sourceId?: string;
|
|
19
|
-
}
|
|
13
|
+
};
|
|
20
14
|
/**
|
|
21
15
|
* 将 ViewParam 数组转换为 pathname
|
|
22
16
|
*
|
|
@@ -31,6 +31,17 @@ __export(ViewNavigation_exports, {
|
|
|
31
31
|
generatePathnameFromViewParams: () => generatePathnameFromViewParams
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(ViewNavigation_exports);
|
|
34
|
+
function encodeFilterByTk(val) {
|
|
35
|
+
if (val === void 0 || val === null) return "";
|
|
36
|
+
if (val && typeof val === "object" && !Array.isArray(val)) {
|
|
37
|
+
const pairs = Object.entries(val).map(([k, v]) => {
|
|
38
|
+
return `${encodeURIComponent(String(k))}=${encodeURIComponent(String(v))}`;
|
|
39
|
+
});
|
|
40
|
+
return encodeURIComponent(pairs.join("&"));
|
|
41
|
+
}
|
|
42
|
+
return encodeURIComponent(String(val));
|
|
43
|
+
}
|
|
44
|
+
__name(encodeFilterByTk, "encodeFilterByTk");
|
|
34
45
|
function generatePathnameFromViewParams(viewParams) {
|
|
35
46
|
if (!viewParams || viewParams.length === 0) {
|
|
36
47
|
return "/admin";
|
|
@@ -44,8 +55,11 @@ function generatePathnameFromViewParams(viewParams) {
|
|
|
44
55
|
if (viewParam.tabUid) {
|
|
45
56
|
segments.push("tab", viewParam.tabUid);
|
|
46
57
|
}
|
|
47
|
-
if (viewParam.filterByTk) {
|
|
48
|
-
|
|
58
|
+
if (viewParam.filterByTk != null) {
|
|
59
|
+
const encoded = encodeFilterByTk(viewParam.filterByTk);
|
|
60
|
+
if (encoded) {
|
|
61
|
+
segments.push("filterbytk", encoded);
|
|
62
|
+
}
|
|
49
63
|
}
|
|
50
64
|
if (viewParam.sourceId) {
|
|
51
65
|
segments.push("sourceid", viewParam.sourceId);
|
|
@@ -7,10 +7,38 @@
|
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
9
|
import type { FlowContext, PropertyMetaFactory } from '../flowContext';
|
|
10
|
+
import type { FlowView } from './FlowView';
|
|
10
11
|
/**
|
|
11
12
|
* Create a meta factory for ctx.view that includes:
|
|
12
13
|
* - buildVariablesParams: { record } via inferRecordRef
|
|
13
14
|
* - properties.record: full collection meta via buildRecordMeta
|
|
14
15
|
* - type/preventClose/inputArgs/navigation fields for better variable selection UX
|
|
15
16
|
*/
|
|
16
|
-
export declare function createViewMeta(ctx: FlowContext
|
|
17
|
+
export declare function createViewMeta(ctx: FlowContext): PropertyMetaFactory;
|
|
18
|
+
/**
|
|
19
|
+
* 为 ctx.popup 构建元信息:
|
|
20
|
+
* - popup.record:当前弹窗记录(服务端解析)
|
|
21
|
+
* - popup.resource:数据源信息(前端解析)
|
|
22
|
+
* - popup.parent:上级弹窗(无限级,前端解析;不存在则禁用/为空)
|
|
23
|
+
*/
|
|
24
|
+
export declare function createPopupMeta(ctx: FlowContext, anchorView?: FlowView): PropertyMetaFactory;
|
|
25
|
+
/**
|
|
26
|
+
* 根据视图堆栈构建 popup 运行时值(resource + parent 链)
|
|
27
|
+
*/
|
|
28
|
+
interface PopupNodeResource {
|
|
29
|
+
dataSourceKey: string;
|
|
30
|
+
collectionName?: string;
|
|
31
|
+
filterByTk?: any;
|
|
32
|
+
sourceId?: any;
|
|
33
|
+
}
|
|
34
|
+
interface PopupNode {
|
|
35
|
+
uid?: string;
|
|
36
|
+
resource: PopupNodeResource;
|
|
37
|
+
parent?: PopupNode;
|
|
38
|
+
}
|
|
39
|
+
export declare function buildPopupRuntime(ctx: FlowContext, view: FlowView): Promise<PopupNode | undefined>;
|
|
40
|
+
/**
|
|
41
|
+
* 在视图上下文中注册 popup 变量(统一消除重复)
|
|
42
|
+
*/
|
|
43
|
+
export declare function registerPopupVariable(ctx: FlowContext, view: FlowView): void;
|
|
44
|
+
export {};
|