@rytass/bpm-core-react 0.18.0 → 0.19.0
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/CHANGELOG.md +45 -0
- package/dist/chunks/{FormBuilderView-BVKY1j_0.js → FormBuilderView-Djlm3y4S.js} +485 -481
- package/dist/chunks/FormBuilderView-Djlm3y4S.js.map +1 -0
- package/dist/chunks/FormBuilderView-G6uRSywl.cjs +3 -0
- package/dist/chunks/FormBuilderView-G6uRSywl.cjs.map +1 -0
- package/dist/chunks/{FormRendererView-BsTwZkqU.js → FormRendererView-DHfVgbo6.js} +511 -274
- package/dist/chunks/FormRendererView-DHfVgbo6.js.map +1 -0
- package/dist/chunks/FormRendererView-DwfFbaip.cjs +6 -0
- package/dist/chunks/FormRendererView-DwfFbaip.cjs.map +1 -0
- package/dist/chunks/admin-pickers-BjbkBpSJ.cjs +2 -0
- package/dist/chunks/admin-pickers-BjbkBpSJ.cjs.map +1 -0
- package/dist/chunks/{admin-pickers-Djq3h-UR.js → admin-pickers-DfGxsjpp.js} +42 -42
- package/dist/chunks/admin-pickers-DfGxsjpp.js.map +1 -0
- package/dist/chunks/{approval-instance-list-page-CPXMP3PL.js → approval-instance-list-page-BnI4t5mD.js} +7 -8
- package/dist/chunks/{approval-instance-list-page-CPXMP3PL.js.map → approval-instance-list-page-BnI4t5mD.js.map} +1 -1
- package/dist/chunks/{approval-instance-list-page-ax0pm8bt.cjs → approval-instance-list-page-fqvmkBlg.cjs} +2 -2
- package/dist/chunks/{approval-instance-list-page-ax0pm8bt.cjs.map → approval-instance-list-page-fqvmkBlg.cjs.map} +1 -1
- package/dist/chunks/auth-provider-4BeCw7cI.cjs.map +1 -1
- package/dist/chunks/{auth-provider-B5oPmvk2.js → auth-provider-C2b-5mGt.js} +2 -3
- package/dist/chunks/{auth-provider-B5oPmvk2.js.map → auth-provider-C2b-5mGt.js.map} +1 -1
- package/dist/chunks/{bpm-form-field-Cao0rMol.js → bpm-form-field-9B-Det0u.js} +2 -3
- package/dist/chunks/{bpm-form-field-Cao0rMol.js.map → bpm-form-field-9B-Det0u.js.map} +1 -1
- package/dist/chunks/bpm-form-field-Bc6k4ZEO.cjs.map +1 -1
- package/dist/chunks/{categories-riC33J_j.js → categories-BAdxjNSA.js} +14 -15
- package/dist/chunks/{categories-riC33J_j.js.map → categories-BAdxjNSA.js.map} +1 -1
- package/dist/chunks/{categories-AxxhqjLZ.cjs → categories-DQUtVEiV.cjs} +2 -2
- package/dist/chunks/{categories-AxxhqjLZ.cjs.map → categories-DQUtVEiV.cjs.map} +1 -1
- package/dist/chunks/{compose-B1GlrZW9.js → compose-D6zBIc2Z.js} +131 -148
- package/dist/chunks/compose-D6zBIc2Z.js.map +1 -0
- package/dist/chunks/compose-NH6dsFXD.cjs +2 -0
- package/dist/chunks/compose-NH6dsFXD.cjs.map +1 -0
- package/dist/chunks/{dashboard-page-DdBvV6YI.js → dashboard-page-BoqNhjT_.js} +5 -6
- package/dist/chunks/{dashboard-page-DdBvV6YI.js.map → dashboard-page-BoqNhjT_.js.map} +1 -1
- package/dist/chunks/{dashboard-page-BWQBSGDq.cjs → dashboard-page-D7YJ3udk.cjs} +2 -2
- package/dist/chunks/{dashboard-page-BWQBSGDq.cjs.map → dashboard-page-D7YJ3udk.cjs.map} +1 -1
- package/dist/chunks/{delegations-MxF3uJGW.js → delegations-BfhCDz5e.js} +15 -16
- package/dist/chunks/{delegations-MxF3uJGW.js.map → delegations-BfhCDz5e.js.map} +1 -1
- package/dist/chunks/{delegations-Ckf03icM.cjs → delegations-BmFGcuhA.cjs} +2 -2
- package/dist/chunks/{delegations-Ckf03icM.cjs.map → delegations-BmFGcuhA.cjs.map} +1 -1
- package/dist/chunks/{delegations-V9HIe3_P.cjs → delegations-CcS0SHbf.cjs} +2 -2
- package/dist/chunks/{delegations-V9HIe3_P.cjs.map → delegations-CcS0SHbf.cjs.map} +1 -1
- package/dist/chunks/{delegations-xUt1tj8d.js → delegations-DBh5TT6G.js} +16 -17
- package/dist/chunks/{delegations-xUt1tj8d.js.map → delegations-DBh5TT6G.js.map} +1 -1
- package/dist/chunks/designer-Be9UI9Tg.cjs +65 -0
- package/dist/chunks/designer-Be9UI9Tg.cjs.map +1 -0
- package/dist/chunks/{designer-BCLrjb4H.js → designer-uhC_7m2i.js} +1791 -1407
- package/dist/chunks/designer-uhC_7m2i.js.map +1 -0
- package/dist/chunks/detail-6uw5dmTi.cjs +5 -0
- package/dist/chunks/detail-6uw5dmTi.cjs.map +1 -0
- package/dist/chunks/{detail-4F39ggBn.js → detail-_GeKqNC-.js} +1012 -972
- package/dist/chunks/detail-_GeKqNC-.js.map +1 -0
- package/dist/chunks/{format-date-time-CB-LxzqT.js → format-date-time-B0LdmWg4.js} +2 -3
- package/dist/chunks/{format-date-time-CB-LxzqT.js.map → format-date-time-B0LdmWg4.js.map} +1 -1
- package/dist/chunks/format-date-time-D-cx5M8z.cjs.map +1 -1
- package/dist/chunks/{format-member-label-DudVI55w.js → format-member-label-C73FuP-d.js} +2 -3
- package/dist/chunks/{format-member-label-DudVI55w.js.map → format-member-label-C73FuP-d.js.map} +1 -1
- package/dist/chunks/format-member-label-t7ANTF62.cjs.map +1 -1
- package/dist/chunks/{approver-filled-form-Dm3Iw7iw.cjs → instance-error-message-DTARGbGo.cjs} +2 -2
- package/dist/chunks/instance-error-message-DTARGbGo.cjs.map +1 -0
- package/dist/chunks/{approver-filled-form-ZEwpmsHJ.js → instance-error-message-q6gy5evy.js} +50 -38
- package/dist/chunks/instance-error-message-q6gy5evy.js.map +1 -0
- package/dist/chunks/language-provider-Bdnx3Gxl.cjs.map +1 -1
- package/dist/chunks/{language-provider-B3cEbLe4.js → language-provider-phkWOapf.js} +2 -3
- package/dist/chunks/{language-provider-B3cEbLe4.js.map → language-provider-phkWOapf.js.map} +1 -1
- package/dist/chunks/{login-C6qlTC6F.js → login-D6cc3bo7.js} +4 -5
- package/dist/chunks/{login-C6qlTC6F.js.map → login-D6cc3bo7.js.map} +1 -1
- package/dist/chunks/{login-AtVxZBsC.cjs → login-uvVcltrS.cjs} +2 -2
- package/dist/chunks/{login-AtVxZBsC.cjs.map → login-uvVcltrS.cjs.map} +1 -1
- package/dist/chunks/notifications-Bc4mgSds.cjs.map +1 -1
- package/dist/chunks/{notifications-DJ5wzCye.js → notifications-Cvme5Qbl.js} +2 -3
- package/dist/chunks/{notifications-DJ5wzCye.js.map → notifications-Cvme5Qbl.js.map} +1 -1
- package/dist/chunks/orgs-B_2J2tLX.cjs +2 -0
- package/dist/chunks/{orgs-BeeDDWL1.cjs.map → orgs-B_2J2tLX.cjs.map} +1 -1
- package/dist/chunks/{orgs-8hje_l2n.js → orgs-DqxMds26.js} +48 -49
- package/dist/chunks/{orgs-8hje_l2n.js.map → orgs-DqxMds26.js.map} +1 -1
- package/dist/chunks/{providers-B_d5tbCL.js → providers-BbCs23sk.js} +21 -25
- package/dist/chunks/{providers-B_d5tbCL.js.map → providers-BbCs23sk.js.map} +1 -1
- package/dist/chunks/{providers-chuJvMgv.cjs → providers-D_KAgOOu.cjs} +2 -2
- package/dist/chunks/{providers-chuJvMgv.cjs.map → providers-D_KAgOOu.cjs.map} +1 -1
- package/dist/chunks/router-adapter--gYs13E8.cjs.map +1 -1
- package/dist/chunks/{router-adapter-DftlFTOd.js → router-adapter-CkxCyzf5.js} +2 -3
- package/dist/chunks/{router-adapter-DftlFTOd.js.map → router-adapter-CkxCyzf5.js.map} +1 -1
- package/dist/chunks/{routes-config-yZbESPlw.js → routes-config-BcNaWJWJ.js} +2 -3
- package/dist/chunks/{routes-config-yZbESPlw.js.map → routes-config-BcNaWJWJ.js.map} +1 -1
- package/dist/chunks/routes-config-C1j_vFKo.cjs.map +1 -1
- package/dist/chunks/task-decision-3d17ZvZE.js +29 -0
- package/dist/chunks/task-decision-3d17ZvZE.js.map +1 -0
- package/dist/chunks/task-decision-CqZ4WQOC.cjs +2 -0
- package/dist/chunks/task-decision-CqZ4WQOC.cjs.map +1 -0
- package/dist/chunks/{use-bpm-member-D57LKe_u.js → use-bpm-member-BPzcNU1g.js} +3 -4
- package/dist/chunks/{use-bpm-member-D57LKe_u.js.map → use-bpm-member-BPzcNU1g.js.map} +1 -1
- package/dist/chunks/use-bpm-member-DpNAQtNC.cjs.map +1 -1
- package/dist/chunks/{users-Pl6hY5Y5.js → users-BBtiZ9QQ.js} +22 -25
- package/dist/chunks/{users-Pl6hY5Y5.js.map → users-BBtiZ9QQ.js.map} +1 -1
- package/dist/chunks/{users-O2L_M3BK.cjs → users-EqSzDhuj.cjs} +2 -2
- package/dist/chunks/{users-O2L_M3BK.cjs.map → users-EqSzDhuj.cjs.map} +1 -1
- package/dist/components/admin-picker-options.d.cts +11 -0
- package/dist/components/admin-picker-options.d.ts +11 -0
- package/dist/components/admin-pickers.d.cts +2 -11
- package/dist/components/admin-pickers.d.ts +2 -11
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +17 -19
- package/dist/index.js.map +1 -1
- package/dist/lib/task-decision.d.cts +16 -0
- package/dist/lib/task-decision.d.ts +16 -0
- package/dist/lib/use-org-unit-names.d.cts +10 -0
- package/dist/lib/use-org-unit-names.d.ts +10 -0
- package/dist/next/index.cjs +1 -1
- package/dist/next/index.cjs.map +1 -1
- package/dist/next/index.js +7 -8
- package/dist/next/index.js.map +1 -1
- package/dist/next/workflow-chat-route.cjs +19 -1
- package/dist/next/workflow-chat-route.cjs.map +1 -1
- package/dist/next/workflow-chat-route.js +2 -3
- package/dist/next/workflow-chat-route.js.map +1 -1
- package/dist/pages/admin/delegations/index.cjs +1 -1
- package/dist/pages/admin/delegations/index.cjs.map +1 -1
- package/dist/pages/admin/delegations/index.js +2 -3
- package/dist/pages/admin/orgs/index.cjs +1 -1
- package/dist/pages/admin/orgs/index.cjs.map +1 -1
- package/dist/pages/admin/orgs/index.js +2 -3
- package/dist/pages/admin/users/index.cjs +1 -1
- package/dist/pages/admin/users/index.cjs.map +1 -1
- package/dist/pages/admin/users/index.js +2 -3
- package/dist/pages/admin/webhook-endpoints/index.cjs.map +1 -1
- package/dist/pages/admin/webhook-endpoints/index.js +1 -2
- package/dist/pages/cc/index.cjs.map +1 -1
- package/dist/pages/cc/index.js +1 -2
- package/dist/pages/dashboard/index.cjs.map +1 -1
- package/dist/pages/dashboard/index.js +1 -2
- package/dist/pages/delegations/index.cjs +1 -1
- package/dist/pages/delegations/index.cjs.map +1 -1
- package/dist/pages/delegations/index.js +2 -3
- package/dist/pages/inbox/index.cjs.map +1 -1
- package/dist/pages/inbox/index.js +1 -2
- package/dist/pages/instances/detail/index.cjs +1 -1
- package/dist/pages/instances/detail/index.cjs.map +1 -1
- package/dist/pages/instances/detail/index.js +2 -3
- package/dist/pages/instances/new/index.cjs.map +1 -1
- package/dist/pages/instances/new/index.js +1 -2
- package/dist/pages/login/index.cjs +1 -1
- package/dist/pages/login/index.cjs.map +1 -1
- package/dist/pages/login/index.js +2 -3
- package/dist/pages/root/index.cjs.map +1 -1
- package/dist/pages/root/index.js +1 -2
- package/dist/pages/search/index.cjs.map +1 -1
- package/dist/pages/search/index.js +1 -2
- package/dist/pages/sent/index.cjs.map +1 -1
- package/dist/pages/sent/index.js +1 -2
- package/dist/pages/settings/notifications/index.cjs.map +1 -1
- package/dist/pages/settings/notifications/index.js +2 -3
- package/dist/pages/templates/categories/index.cjs +1 -1
- package/dist/pages/templates/categories/index.cjs.map +1 -1
- package/dist/pages/templates/categories/index.js +2 -3
- package/dist/pages/templates/compose/index.cjs +1 -1
- package/dist/pages/templates/compose/index.cjs.map +1 -1
- package/dist/pages/templates/compose/index.js +2 -3
- package/dist/pages/templates/designer/index.cjs +1 -1
- package/dist/pages/templates/designer/index.cjs.map +1 -1
- package/dist/pages/templates/designer/index.js +2 -3
- package/dist/pages/templates/index.cjs.map +1 -1
- package/dist/pages/templates/index.js +1 -2
- package/dist/pages/templates/versions/index.cjs.map +1 -1
- package/dist/pages/templates/versions/index.js +1 -2
- package/dist/views/admin/delegations/index.cjs +1 -1
- package/dist/views/admin/delegations/index.js +1 -1
- package/dist/views/admin/index.cjs +1 -1
- package/dist/views/admin/index.js +3 -3
- package/dist/views/admin/orgs/index.cjs +1 -1
- package/dist/views/admin/orgs/index.js +1 -1
- package/dist/views/admin/users/index.cjs +1 -1
- package/dist/views/admin/users/index.js +1 -1
- package/dist/views/admin/webhook-endpoints/index.cjs +1 -1
- package/dist/views/admin/webhook-endpoints/index.cjs.map +1 -1
- package/dist/views/admin/webhook-endpoints/index.js +52 -53
- package/dist/views/admin/webhook-endpoints/index.js.map +1 -1
- package/dist/views/cc/index.cjs +1 -1
- package/dist/views/cc/index.cjs.map +1 -1
- package/dist/views/cc/index.js +2 -3
- package/dist/views/dashboard/index.cjs +1 -1
- package/dist/views/dashboard/index.cjs.map +1 -1
- package/dist/views/dashboard/index.js +2 -3
- package/dist/views/delegations/index.cjs +1 -1
- package/dist/views/delegations/index.js +1 -1
- package/dist/views/forms/builder/index.cjs +1 -1
- package/dist/views/forms/builder/index.js +1 -1
- package/dist/views/forms/renderer/FormRendererView.d.cts +24 -1
- package/dist/views/forms/renderer/FormRendererView.d.ts +24 -1
- package/dist/views/forms/renderer/file-upload-field.d.cts +84 -0
- package/dist/views/forms/renderer/file-upload-field.d.ts +84 -0
- package/dist/views/forms/renderer/form-value-readers.d.cts +7 -0
- package/dist/views/forms/renderer/form-value-readers.d.ts +7 -0
- package/dist/views/forms/renderer/index.cjs +1 -1
- package/dist/views/forms/renderer/index.d.cts +1 -0
- package/dist/views/forms/renderer/index.d.ts +1 -0
- package/dist/views/forms/renderer/index.js +1 -1
- package/dist/views/forms/renderer/org-unit-field-options.d.cts +44 -0
- package/dist/views/forms/renderer/org-unit-field-options.d.ts +44 -0
- package/dist/views/forms/renderer/org-unit-field.d.cts +23 -0
- package/dist/views/forms/renderer/org-unit-field.d.ts +23 -0
- package/dist/views/inbox/index.cjs +1 -1
- package/dist/views/inbox/index.cjs.map +1 -1
- package/dist/views/inbox/index.js +133 -137
- package/dist/views/inbox/index.js.map +1 -1
- package/dist/views/instances/approver-filled-form.d.cts +9 -2
- package/dist/views/instances/approver-filled-form.d.ts +9 -2
- package/dist/views/instances/detail/index.cjs +1 -1
- package/dist/views/instances/detail/index.js +1 -1
- package/dist/views/instances/detail/sections/InstanceFormSection.d.cts +19 -2
- package/dist/views/instances/detail/sections/InstanceFormSection.d.ts +19 -2
- package/dist/views/instances/detail/sections/InstanceHistorySection.d.cts +8 -1
- package/dist/views/instances/detail/sections/InstanceHistorySection.d.ts +8 -1
- package/dist/views/instances/detail/sections/container-helpers.d.cts +0 -1
- package/dist/views/instances/detail/sections/container-helpers.d.ts +0 -1
- package/dist/views/instances/detail/sections/shared.d.cts +3 -4
- package/dist/views/instances/detail/sections/shared.d.ts +3 -4
- package/dist/views/instances/instance-error-message.d.cts +5 -0
- package/dist/views/instances/instance-error-message.d.ts +5 -0
- package/dist/views/instances/new/index.cjs +1 -1
- package/dist/views/instances/new/index.cjs.map +1 -1
- package/dist/views/instances/new/index.js +78 -77
- package/dist/views/instances/new/index.js.map +1 -1
- package/dist/views/login/index.cjs +1 -1
- package/dist/views/login/index.js +1 -1
- package/dist/views/search/index.cjs +1 -1
- package/dist/views/search/index.cjs.map +1 -1
- package/dist/views/search/index.js +2 -3
- package/dist/views/sent/index.cjs +1 -1
- package/dist/views/sent/index.cjs.map +1 -1
- package/dist/views/sent/index.js +2 -3
- package/dist/views/settings/index.js +1 -1
- package/dist/views/settings/notifications/index.js +1 -1
- package/dist/views/templates/categories/index.cjs +1 -1
- package/dist/views/templates/categories/index.js +1 -1
- package/dist/views/templates/compose/index.cjs +1 -1
- package/dist/views/templates/compose/index.js +1 -1
- package/dist/views/templates/designer/approver-resolver-model.d.cts +211 -0
- package/dist/views/templates/designer/approver-resolver-model.d.ts +211 -0
- package/dist/views/templates/designer/dry-run-assignee-label.d.cts +2 -0
- package/dist/views/templates/designer/dry-run-assignee-label.d.ts +2 -0
- package/dist/views/templates/designer/dry-run-sample-data.d.cts +6 -0
- package/dist/views/templates/designer/dry-run-sample-data.d.ts +6 -0
- package/dist/views/templates/designer/dynamic-form-resolver-options.d.cts +25 -0
- package/dist/views/templates/designer/dynamic-form-resolver-options.d.ts +25 -0
- package/dist/views/templates/designer/index.cjs +1 -1
- package/dist/views/templates/designer/index.js +1 -1
- package/dist/views/templates/designer/node-actor-resolver-options.d.cts +38 -0
- package/dist/views/templates/designer/node-actor-resolver-options.d.ts +38 -0
- package/dist/views/templates/index.cjs +1 -1
- package/dist/views/templates/index.cjs.map +1 -1
- package/dist/views/templates/index.js +50 -51
- package/dist/views/templates/index.js.map +1 -1
- package/dist/views/templates/versions/index.cjs +1 -1
- package/dist/views/templates/versions/index.cjs.map +1 -1
- package/dist/views/templates/versions/index.js +7 -8
- package/dist/views/templates/versions/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/chunks/FormBuilderView-BVKY1j_0.js.map +0 -1
- package/dist/chunks/FormBuilderView-SrGltzFT.cjs +0 -3
- package/dist/chunks/FormBuilderView-SrGltzFT.cjs.map +0 -1
- package/dist/chunks/FormRendererView-BsTwZkqU.js.map +0 -1
- package/dist/chunks/FormRendererView-GpsE03np.cjs +0 -4
- package/dist/chunks/FormRendererView-GpsE03np.cjs.map +0 -1
- package/dist/chunks/admin-pickers-BRHk3qKq.cjs +0 -2
- package/dist/chunks/admin-pickers-BRHk3qKq.cjs.map +0 -1
- package/dist/chunks/admin-pickers-Djq3h-UR.js.map +0 -1
- package/dist/chunks/approver-filled-form-Dm3Iw7iw.cjs.map +0 -1
- package/dist/chunks/approver-filled-form-ZEwpmsHJ.js.map +0 -1
- package/dist/chunks/compose-B1GlrZW9.js.map +0 -1
- package/dist/chunks/compose-DZk-SfHT.cjs +0 -2
- package/dist/chunks/compose-DZk-SfHT.cjs.map +0 -1
- package/dist/chunks/designer-BCLrjb4H.js.map +0 -1
- package/dist/chunks/designer-BYYxEN9L.cjs +0 -65
- package/dist/chunks/designer-BYYxEN9L.cjs.map +0 -1
- package/dist/chunks/detail-4F39ggBn.js.map +0 -1
- package/dist/chunks/detail-BkMtA_0K.cjs +0 -2
- package/dist/chunks/detail-BkMtA_0K.cjs.map +0 -1
- package/dist/chunks/orgs-BeeDDWL1.cjs +0 -2
- package/dist/chunks/task-node-label-BF6UllxP.cjs +0 -2
- package/dist/chunks/task-node-label-BF6UllxP.cjs.map +0 -1
- package/dist/chunks/task-node-label-CWZgOBj0.js +0 -9
- package/dist/chunks/task-node-label-CWZgOBj0.js.map +0 -1
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { ApproverResolver, ApproverResolverFallback } from '@rytass/bpm-core-shared/workflow';
|
|
2
|
+
import { FormDefinitionSchema } from '@rytass/bpm-core-shared/form';
|
|
3
|
+
import { OrgUnitRecord, PositionRecord } from '@rytass/bpm-core-client/organization';
|
|
4
|
+
import { OrgUnitOption, PositionOption } from '../../../components/admin-picker-options.cjs';
|
|
5
|
+
export type ApproverResolverMode = Extract<ApproverResolver['type'], 'DIRECT' | 'DYNAMIC_FORM' | 'NODE_ACTOR' | 'ORG_MANAGER' | 'ORG_MANAGER_CHAIN' | 'ORG_UNIT_MANAGER' | 'ORG_UNIT_MEMBER' | 'ORG_UNIT_POSITION' | 'POSITION'>;
|
|
6
|
+
export type ApproverResolverModeOption = Readonly<{
|
|
7
|
+
id: ApproverResolverMode;
|
|
8
|
+
name: string;
|
|
9
|
+
}>;
|
|
10
|
+
export type ManagerLevelOption = Readonly<{
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
value: number;
|
|
14
|
+
}>;
|
|
15
|
+
export type MemberSelectOption = Readonly<{
|
|
16
|
+
displayName: string;
|
|
17
|
+
email: string;
|
|
18
|
+
id: string;
|
|
19
|
+
memberId: string;
|
|
20
|
+
name: string;
|
|
21
|
+
/**
|
|
22
|
+
* Set on the placeholder written when a member's profile could not be
|
|
23
|
+
* fetched. Marking it explicitly lets {@link mergeMemberOptions} replace the
|
|
24
|
+
* placeholder once the real profile turns up, instead of the "未知會員"
|
|
25
|
+
* sentinel sticking for the rest of the session.
|
|
26
|
+
*/
|
|
27
|
+
unresolved?: boolean;
|
|
28
|
+
}>;
|
|
29
|
+
export declare const APPROVER_RESOLVER_MODE_OPTIONS: readonly ApproverResolverModeOption[];
|
|
30
|
+
export declare const MANAGER_LEVEL_OPTIONS: readonly ManagerLevelOption[];
|
|
31
|
+
export type NodeNameRecord = Readonly<{
|
|
32
|
+
id: string;
|
|
33
|
+
name: string;
|
|
34
|
+
}>;
|
|
35
|
+
/**
|
|
36
|
+
* The 簽核人 choices of the two sources that start from "someone": the person
|
|
37
|
+
* the source names, or their manager one to three levels up. `value` 0 is the
|
|
38
|
+
* person themselves; it is what the select stores for a source with no
|
|
39
|
+
* manager level.
|
|
40
|
+
*/
|
|
41
|
+
export declare const FORM_MEMBER_SUBJECT_OPTIONS: readonly ManagerLevelOption[];
|
|
42
|
+
export declare const NODE_ACTOR_SUBJECT_OPTIONS: readonly ManagerLevelOption[];
|
|
43
|
+
export type OrgUnitManagerSource = 'FIXED' | 'FORM_FIELD';
|
|
44
|
+
export declare const ORG_UNIT_SOURCE_OPTIONS: readonly Readonly<{
|
|
45
|
+
id: OrgUnitManagerSource;
|
|
46
|
+
name: string;
|
|
47
|
+
}>[];
|
|
48
|
+
/**
|
|
49
|
+
* The option for a stored level. A level this screen has no option for (a
|
|
50
|
+
* hand-written or AI-written definition) is shown as itself rather than
|
|
51
|
+
* mistaken for another one.
|
|
52
|
+
*/
|
|
53
|
+
export declare function readApproverSubjectOption(options: readonly ManagerLevelOption[], levelsUp: number): ManagerLevelOption;
|
|
54
|
+
/**
|
|
55
|
+
* The option for the manager level a FORM_MEMBER_MANAGER / NODE_ACTOR_MANAGER
|
|
56
|
+
* definition stores. Those types always name a manager, so a level below 1 (or
|
|
57
|
+
* not a whole number) is a broken definition: it is shown as an invalid level
|
|
58
|
+
* rather than as the option whose `value` happens to be 0 (本人). The stored
|
|
59
|
+
* JSON is never touched by this read; the publish lint is what blocks it.
|
|
60
|
+
*/
|
|
61
|
+
export declare function readStoredManagerLevelOption(options: readonly ManagerLevelOption[], levelsUp: number): ManagerLevelOption;
|
|
62
|
+
export declare function readApproverResolverMode(value: string): ApproverResolverMode;
|
|
63
|
+
export declare function readDefaultApproverResolver(value: string | null, positions: readonly PositionRecord[]): ApproverResolver;
|
|
64
|
+
export declare function updateApproverResolverFallback(resolver: ApproverResolver, fallback: ApproverResolverFallback): ApproverResolver;
|
|
65
|
+
export declare function readManagerLevelOption(levelsUp: number): ManagerLevelOption;
|
|
66
|
+
export declare function readManagerLevelOptionById(id: string | null): ManagerLevelOption;
|
|
67
|
+
/**
|
|
68
|
+
* Every member id a resolver names outright, so the designer can pre-fetch
|
|
69
|
+
* their display names on load.
|
|
70
|
+
*
|
|
71
|
+
* The manager resolvers' `DIRECT` fallback ("固定改派") counts: it is a member
|
|
72
|
+
* the author picked and the property form renders it through
|
|
73
|
+
* `readMemberSelectOption`, which falls back to the "未知會員" sentinel for any
|
|
74
|
+
* id it cannot find. Leaving it out meant a saved fallback always rendered as
|
|
75
|
+
* 未知會員 until an unrelated search happened to return that member.
|
|
76
|
+
*/
|
|
77
|
+
export declare function readApproverResolverMemberIds(resolver: ApproverResolver): readonly string[];
|
|
78
|
+
export declare function readApproverResolverSummary(resolver: ApproverResolver, memberOptions: readonly MemberSelectOption[], orgUnits: readonly OrgUnitRecord[], positions: readonly PositionRecord[], formSchema: FormDefinitionSchema | null, nodes?: readonly NodeNameRecord[]): string;
|
|
79
|
+
export declare function readMemberEmailSummary(memberIds: readonly string[], memberOptions: readonly MemberSelectOption[], emptyLabel: string): string;
|
|
80
|
+
export declare function readOrgUnitDisplayName(orgUnits: readonly OrgUnitRecord[], orgUnitId: string): string;
|
|
81
|
+
export declare function readPositionDisplayName(positions: readonly PositionRecord[], positionId: string): string;
|
|
82
|
+
export declare function readSelectedOrgUnitOption(orgUnits: readonly OrgUnitRecord[], orgUnitId: string): OrgUnitOption | null;
|
|
83
|
+
export declare function readSelectedPositionOption(positions: readonly PositionRecord[], positionId: string): PositionOption | null;
|
|
84
|
+
export declare function readMemberSelectOption(options: readonly MemberSelectOption[], memberId: string): MemberSelectOption;
|
|
85
|
+
export declare function readFallbackMemberSelectOption(memberId: string): MemberSelectOption;
|
|
86
|
+
/**
|
|
87
|
+
* The one label for a resolver `type` this build does not know (a definition
|
|
88
|
+
* saved by a newer BPMCore): the designer's read-only 簽核來源 entry, the node
|
|
89
|
+
* summary and the compose review table all say it with this.
|
|
90
|
+
*/
|
|
91
|
+
export declare function readUnsupportedApproverSourceLabel(type: string): string;
|
|
92
|
+
/**
|
|
93
|
+
* The short 簽核方式 label the compose review table shows for a user task.
|
|
94
|
+
*/
|
|
95
|
+
export declare function readApproverResolverDetail(resolver: ApproverResolver): string;
|
|
96
|
+
type ManagerRule = Readonly<{
|
|
97
|
+
fallback?: ApproverResolverFallback;
|
|
98
|
+
preferClosestOrgUnit?: boolean;
|
|
99
|
+
}>;
|
|
100
|
+
/**
|
|
101
|
+
* What the 簽核來源 panel edits. The three sources with two stored types each
|
|
102
|
+
* (本人/主管, 固定組織/表單欄位) carry the screen's own choice instead of the
|
|
103
|
+
* JSON type; every other known type is held as saved and edited field by
|
|
104
|
+
* field, and a type this build does not know is held as saved, read-only.
|
|
105
|
+
*
|
|
106
|
+
* `levelsUp` is `null` for the 本人 choice (no manager level), otherwise the
|
|
107
|
+
* stored level.
|
|
108
|
+
*/
|
|
109
|
+
export type ApproverResolverEditorState = (Readonly<{
|
|
110
|
+
formPath: string;
|
|
111
|
+
levelsUp: number | null;
|
|
112
|
+
mode: 'DYNAMIC_FORM';
|
|
113
|
+
}> & ManagerRule) | (Readonly<{
|
|
114
|
+
formPath: string;
|
|
115
|
+
mode: 'ORG_UNIT_MANAGER';
|
|
116
|
+
orgSource: OrgUnitManagerSource;
|
|
117
|
+
orgUnitId: string;
|
|
118
|
+
}> & ManagerRule) | (Readonly<{
|
|
119
|
+
levelsUp: number | null;
|
|
120
|
+
mode: 'NODE_ACTOR';
|
|
121
|
+
nodeIds: readonly string[];
|
|
122
|
+
}> & ManagerRule) | Readonly<{
|
|
123
|
+
mode: 'AS_STORED';
|
|
124
|
+
resolver: ApproverResolver;
|
|
125
|
+
}> | Readonly<{
|
|
126
|
+
mode: 'UNSUPPORTED';
|
|
127
|
+
resolver: ApproverResolver;
|
|
128
|
+
type: string;
|
|
129
|
+
}>;
|
|
130
|
+
export declare function readApproverResolverEditorState(resolver: ApproverResolver): ApproverResolverEditorState;
|
|
131
|
+
/**
|
|
132
|
+
* The JSON for a screen state. Only the fields that belong to the chosen type
|
|
133
|
+
* are written, so a field left over from the choice the author switched away
|
|
134
|
+
* from (the manager level after 回到欄位裡的人, the formPath after 改選固定組織)
|
|
135
|
+
* never reaches the saved definition.
|
|
136
|
+
*/
|
|
137
|
+
export declare function buildApproverResolver(state: ApproverResolverEditorState): ApproverResolver;
|
|
138
|
+
/**
|
|
139
|
+
* Applies the 簽核人 select: 0 is the person themselves, 1-3 their manager.
|
|
140
|
+
* Sources with no such choice come back as the same state.
|
|
141
|
+
*/
|
|
142
|
+
export declare function withApproverSubject(state: ApproverResolverEditorState, value: number): ApproverResolverEditorState;
|
|
143
|
+
/**
|
|
144
|
+
* Applies the 組織 choice of 指定組織主管. A form-field org starts with 只取最近
|
|
145
|
+
* 一層主管 on (SPEC 3.3) unless the author already chose; a fixed org keeps the
|
|
146
|
+
* stored choice as it is. Switching back does not take the default off again:
|
|
147
|
+
* the toggle keeps whatever value the resolver has, and stays visible.
|
|
148
|
+
*/
|
|
149
|
+
export declare function withOrgUnitSource(state: ApproverResolverEditorState, source: OrgUnitManagerSource): ApproverResolverEditorState;
|
|
150
|
+
/** The id of the read-only entry an unknown resolver type is shown as. */
|
|
151
|
+
export declare const UNSUPPORTED_APPROVER_SOURCE_OPTION_ID = "UNSUPPORTED";
|
|
152
|
+
export type ApproverSourceChoice = Readonly<{
|
|
153
|
+
/** Hint under the select, `null` when nothing needs saying. */
|
|
154
|
+
hint: string | null;
|
|
155
|
+
options: readonly Readonly<{
|
|
156
|
+
id: string;
|
|
157
|
+
name: string;
|
|
158
|
+
}>[];
|
|
159
|
+
selected: Readonly<{
|
|
160
|
+
id: string;
|
|
161
|
+
name: string;
|
|
162
|
+
}>;
|
|
163
|
+
}>;
|
|
164
|
+
/**
|
|
165
|
+
* The 簽核來源 select: the source options, plus, for a type this build does
|
|
166
|
+
* not know, a read-only entry carrying its name that is the current value: it
|
|
167
|
+
* is shown, never edited, and nothing is written unless the author explicitly
|
|
168
|
+
* picks a different source (which replaces the stored one).
|
|
169
|
+
* `readApproverResolverMode` would call such a type 指定會員.
|
|
170
|
+
*/
|
|
171
|
+
export declare function readApproverSourceChoice(state: ApproverResolverEditorState): ApproverSourceChoice;
|
|
172
|
+
/**
|
|
173
|
+
* The resolver a 簽核來源 pick produces, or `null` when the pick must change
|
|
174
|
+
* nothing: no option, an id that is not an option (the read-only unsupported
|
|
175
|
+
* entry included), or the source already stored. Re-picking the shown source
|
|
176
|
+
* used to rebuild a clean default and wipe what the author had filled in.
|
|
177
|
+
*
|
|
178
|
+
* "Already stored" is the state's own mode, not the displayed option: an
|
|
179
|
+
* EXPRESSION resolver is displayed as 指定會員 but is not one, so picking 指定會員
|
|
180
|
+
* still switches it.
|
|
181
|
+
*/
|
|
182
|
+
export declare function readApproverSourcePick(resolver: ApproverResolver, optionId: string | null, positions: readonly PositionRecord[]): ApproverResolver | null;
|
|
183
|
+
export type ApproverSubjectChoice = Readonly<{
|
|
184
|
+
/** The stored level is below 1 (or fractional): shown, not offered again. */
|
|
185
|
+
invalid: boolean;
|
|
186
|
+
options: readonly ManagerLevelOption[];
|
|
187
|
+
selected: ManagerLevelOption;
|
|
188
|
+
}>;
|
|
189
|
+
/**
|
|
190
|
+
* The 簽核人 select of ② and ③. A stored manager level the list has no option
|
|
191
|
+
* for (invalid, or a level above 3) is appended so the select can show it.
|
|
192
|
+
*/
|
|
193
|
+
export declare function readApproverSubjectChoice(state: ApproverResolverEditorState): ApproverSubjectChoice | null;
|
|
194
|
+
/**
|
|
195
|
+
* The state a 簽核人 pick produces, or `null` for a no-op (the shown choice
|
|
196
|
+
* picked again, the invalid-level entry, an id that is not an option).
|
|
197
|
+
*/
|
|
198
|
+
export declare function readApproverSubjectPick(state: ApproverResolverEditorState, optionId: string | null): ApproverResolverEditorState | null;
|
|
199
|
+
export type ApproverManagerRuleView = Readonly<{
|
|
200
|
+
fallback: ApproverResolverFallback;
|
|
201
|
+
preferClosestOrgUnit: boolean;
|
|
202
|
+
/** 主管鏈 has no 只取最近一層主管. */
|
|
203
|
+
showPreferClosestOrgUnit: boolean;
|
|
204
|
+
}>;
|
|
205
|
+
/**
|
|
206
|
+
* The 只取最近一層主管 / 無主管時 pair of a resolver that looks a manager up,
|
|
207
|
+
* `null` for one that does not (so 本人 shows neither).
|
|
208
|
+
*/
|
|
209
|
+
export declare function readApproverManagerRule(resolver: ApproverResolver): ApproverManagerRuleView | null;
|
|
210
|
+
export declare function withPreferClosestOrgUnit(resolver: ApproverResolver, preferClosestOrgUnit: boolean): ApproverResolver;
|
|
211
|
+
export {};
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { ApproverResolver, ApproverResolverFallback } from '@rytass/bpm-core-shared/workflow';
|
|
2
|
+
import { FormDefinitionSchema } from '@rytass/bpm-core-shared/form';
|
|
3
|
+
import { OrgUnitRecord, PositionRecord } from '@rytass/bpm-core-client/organization';
|
|
4
|
+
import { OrgUnitOption, PositionOption } from '../../../components/admin-picker-options.js';
|
|
5
|
+
export type ApproverResolverMode = Extract<ApproverResolver['type'], 'DIRECT' | 'DYNAMIC_FORM' | 'NODE_ACTOR' | 'ORG_MANAGER' | 'ORG_MANAGER_CHAIN' | 'ORG_UNIT_MANAGER' | 'ORG_UNIT_MEMBER' | 'ORG_UNIT_POSITION' | 'POSITION'>;
|
|
6
|
+
export type ApproverResolverModeOption = Readonly<{
|
|
7
|
+
id: ApproverResolverMode;
|
|
8
|
+
name: string;
|
|
9
|
+
}>;
|
|
10
|
+
export type ManagerLevelOption = Readonly<{
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
value: number;
|
|
14
|
+
}>;
|
|
15
|
+
export type MemberSelectOption = Readonly<{
|
|
16
|
+
displayName: string;
|
|
17
|
+
email: string;
|
|
18
|
+
id: string;
|
|
19
|
+
memberId: string;
|
|
20
|
+
name: string;
|
|
21
|
+
/**
|
|
22
|
+
* Set on the placeholder written when a member's profile could not be
|
|
23
|
+
* fetched. Marking it explicitly lets {@link mergeMemberOptions} replace the
|
|
24
|
+
* placeholder once the real profile turns up, instead of the "未知會員"
|
|
25
|
+
* sentinel sticking for the rest of the session.
|
|
26
|
+
*/
|
|
27
|
+
unresolved?: boolean;
|
|
28
|
+
}>;
|
|
29
|
+
export declare const APPROVER_RESOLVER_MODE_OPTIONS: readonly ApproverResolverModeOption[];
|
|
30
|
+
export declare const MANAGER_LEVEL_OPTIONS: readonly ManagerLevelOption[];
|
|
31
|
+
export type NodeNameRecord = Readonly<{
|
|
32
|
+
id: string;
|
|
33
|
+
name: string;
|
|
34
|
+
}>;
|
|
35
|
+
/**
|
|
36
|
+
* The 簽核人 choices of the two sources that start from "someone": the person
|
|
37
|
+
* the source names, or their manager one to three levels up. `value` 0 is the
|
|
38
|
+
* person themselves; it is what the select stores for a source with no
|
|
39
|
+
* manager level.
|
|
40
|
+
*/
|
|
41
|
+
export declare const FORM_MEMBER_SUBJECT_OPTIONS: readonly ManagerLevelOption[];
|
|
42
|
+
export declare const NODE_ACTOR_SUBJECT_OPTIONS: readonly ManagerLevelOption[];
|
|
43
|
+
export type OrgUnitManagerSource = 'FIXED' | 'FORM_FIELD';
|
|
44
|
+
export declare const ORG_UNIT_SOURCE_OPTIONS: readonly Readonly<{
|
|
45
|
+
id: OrgUnitManagerSource;
|
|
46
|
+
name: string;
|
|
47
|
+
}>[];
|
|
48
|
+
/**
|
|
49
|
+
* The option for a stored level. A level this screen has no option for (a
|
|
50
|
+
* hand-written or AI-written definition) is shown as itself rather than
|
|
51
|
+
* mistaken for another one.
|
|
52
|
+
*/
|
|
53
|
+
export declare function readApproverSubjectOption(options: readonly ManagerLevelOption[], levelsUp: number): ManagerLevelOption;
|
|
54
|
+
/**
|
|
55
|
+
* The option for the manager level a FORM_MEMBER_MANAGER / NODE_ACTOR_MANAGER
|
|
56
|
+
* definition stores. Those types always name a manager, so a level below 1 (or
|
|
57
|
+
* not a whole number) is a broken definition: it is shown as an invalid level
|
|
58
|
+
* rather than as the option whose `value` happens to be 0 (本人). The stored
|
|
59
|
+
* JSON is never touched by this read; the publish lint is what blocks it.
|
|
60
|
+
*/
|
|
61
|
+
export declare function readStoredManagerLevelOption(options: readonly ManagerLevelOption[], levelsUp: number): ManagerLevelOption;
|
|
62
|
+
export declare function readApproverResolverMode(value: string): ApproverResolverMode;
|
|
63
|
+
export declare function readDefaultApproverResolver(value: string | null, positions: readonly PositionRecord[]): ApproverResolver;
|
|
64
|
+
export declare function updateApproverResolverFallback(resolver: ApproverResolver, fallback: ApproverResolverFallback): ApproverResolver;
|
|
65
|
+
export declare function readManagerLevelOption(levelsUp: number): ManagerLevelOption;
|
|
66
|
+
export declare function readManagerLevelOptionById(id: string | null): ManagerLevelOption;
|
|
67
|
+
/**
|
|
68
|
+
* Every member id a resolver names outright, so the designer can pre-fetch
|
|
69
|
+
* their display names on load.
|
|
70
|
+
*
|
|
71
|
+
* The manager resolvers' `DIRECT` fallback ("固定改派") counts: it is a member
|
|
72
|
+
* the author picked and the property form renders it through
|
|
73
|
+
* `readMemberSelectOption`, which falls back to the "未知會員" sentinel for any
|
|
74
|
+
* id it cannot find. Leaving it out meant a saved fallback always rendered as
|
|
75
|
+
* 未知會員 until an unrelated search happened to return that member.
|
|
76
|
+
*/
|
|
77
|
+
export declare function readApproverResolverMemberIds(resolver: ApproverResolver): readonly string[];
|
|
78
|
+
export declare function readApproverResolverSummary(resolver: ApproverResolver, memberOptions: readonly MemberSelectOption[], orgUnits: readonly OrgUnitRecord[], positions: readonly PositionRecord[], formSchema: FormDefinitionSchema | null, nodes?: readonly NodeNameRecord[]): string;
|
|
79
|
+
export declare function readMemberEmailSummary(memberIds: readonly string[], memberOptions: readonly MemberSelectOption[], emptyLabel: string): string;
|
|
80
|
+
export declare function readOrgUnitDisplayName(orgUnits: readonly OrgUnitRecord[], orgUnitId: string): string;
|
|
81
|
+
export declare function readPositionDisplayName(positions: readonly PositionRecord[], positionId: string): string;
|
|
82
|
+
export declare function readSelectedOrgUnitOption(orgUnits: readonly OrgUnitRecord[], orgUnitId: string): OrgUnitOption | null;
|
|
83
|
+
export declare function readSelectedPositionOption(positions: readonly PositionRecord[], positionId: string): PositionOption | null;
|
|
84
|
+
export declare function readMemberSelectOption(options: readonly MemberSelectOption[], memberId: string): MemberSelectOption;
|
|
85
|
+
export declare function readFallbackMemberSelectOption(memberId: string): MemberSelectOption;
|
|
86
|
+
/**
|
|
87
|
+
* The one label for a resolver `type` this build does not know (a definition
|
|
88
|
+
* saved by a newer BPMCore): the designer's read-only 簽核來源 entry, the node
|
|
89
|
+
* summary and the compose review table all say it with this.
|
|
90
|
+
*/
|
|
91
|
+
export declare function readUnsupportedApproverSourceLabel(type: string): string;
|
|
92
|
+
/**
|
|
93
|
+
* The short 簽核方式 label the compose review table shows for a user task.
|
|
94
|
+
*/
|
|
95
|
+
export declare function readApproverResolverDetail(resolver: ApproverResolver): string;
|
|
96
|
+
type ManagerRule = Readonly<{
|
|
97
|
+
fallback?: ApproverResolverFallback;
|
|
98
|
+
preferClosestOrgUnit?: boolean;
|
|
99
|
+
}>;
|
|
100
|
+
/**
|
|
101
|
+
* What the 簽核來源 panel edits. The three sources with two stored types each
|
|
102
|
+
* (本人/主管, 固定組織/表單欄位) carry the screen's own choice instead of the
|
|
103
|
+
* JSON type; every other known type is held as saved and edited field by
|
|
104
|
+
* field, and a type this build does not know is held as saved, read-only.
|
|
105
|
+
*
|
|
106
|
+
* `levelsUp` is `null` for the 本人 choice (no manager level), otherwise the
|
|
107
|
+
* stored level.
|
|
108
|
+
*/
|
|
109
|
+
export type ApproverResolverEditorState = (Readonly<{
|
|
110
|
+
formPath: string;
|
|
111
|
+
levelsUp: number | null;
|
|
112
|
+
mode: 'DYNAMIC_FORM';
|
|
113
|
+
}> & ManagerRule) | (Readonly<{
|
|
114
|
+
formPath: string;
|
|
115
|
+
mode: 'ORG_UNIT_MANAGER';
|
|
116
|
+
orgSource: OrgUnitManagerSource;
|
|
117
|
+
orgUnitId: string;
|
|
118
|
+
}> & ManagerRule) | (Readonly<{
|
|
119
|
+
levelsUp: number | null;
|
|
120
|
+
mode: 'NODE_ACTOR';
|
|
121
|
+
nodeIds: readonly string[];
|
|
122
|
+
}> & ManagerRule) | Readonly<{
|
|
123
|
+
mode: 'AS_STORED';
|
|
124
|
+
resolver: ApproverResolver;
|
|
125
|
+
}> | Readonly<{
|
|
126
|
+
mode: 'UNSUPPORTED';
|
|
127
|
+
resolver: ApproverResolver;
|
|
128
|
+
type: string;
|
|
129
|
+
}>;
|
|
130
|
+
export declare function readApproverResolverEditorState(resolver: ApproverResolver): ApproverResolverEditorState;
|
|
131
|
+
/**
|
|
132
|
+
* The JSON for a screen state. Only the fields that belong to the chosen type
|
|
133
|
+
* are written, so a field left over from the choice the author switched away
|
|
134
|
+
* from (the manager level after 回到欄位裡的人, the formPath after 改選固定組織)
|
|
135
|
+
* never reaches the saved definition.
|
|
136
|
+
*/
|
|
137
|
+
export declare function buildApproverResolver(state: ApproverResolverEditorState): ApproverResolver;
|
|
138
|
+
/**
|
|
139
|
+
* Applies the 簽核人 select: 0 is the person themselves, 1-3 their manager.
|
|
140
|
+
* Sources with no such choice come back as the same state.
|
|
141
|
+
*/
|
|
142
|
+
export declare function withApproverSubject(state: ApproverResolverEditorState, value: number): ApproverResolverEditorState;
|
|
143
|
+
/**
|
|
144
|
+
* Applies the 組織 choice of 指定組織主管. A form-field org starts with 只取最近
|
|
145
|
+
* 一層主管 on (SPEC 3.3) unless the author already chose; a fixed org keeps the
|
|
146
|
+
* stored choice as it is. Switching back does not take the default off again:
|
|
147
|
+
* the toggle keeps whatever value the resolver has, and stays visible.
|
|
148
|
+
*/
|
|
149
|
+
export declare function withOrgUnitSource(state: ApproverResolverEditorState, source: OrgUnitManagerSource): ApproverResolverEditorState;
|
|
150
|
+
/** The id of the read-only entry an unknown resolver type is shown as. */
|
|
151
|
+
export declare const UNSUPPORTED_APPROVER_SOURCE_OPTION_ID = "UNSUPPORTED";
|
|
152
|
+
export type ApproverSourceChoice = Readonly<{
|
|
153
|
+
/** Hint under the select, `null` when nothing needs saying. */
|
|
154
|
+
hint: string | null;
|
|
155
|
+
options: readonly Readonly<{
|
|
156
|
+
id: string;
|
|
157
|
+
name: string;
|
|
158
|
+
}>[];
|
|
159
|
+
selected: Readonly<{
|
|
160
|
+
id: string;
|
|
161
|
+
name: string;
|
|
162
|
+
}>;
|
|
163
|
+
}>;
|
|
164
|
+
/**
|
|
165
|
+
* The 簽核來源 select: the source options, plus, for a type this build does
|
|
166
|
+
* not know, a read-only entry carrying its name that is the current value: it
|
|
167
|
+
* is shown, never edited, and nothing is written unless the author explicitly
|
|
168
|
+
* picks a different source (which replaces the stored one).
|
|
169
|
+
* `readApproverResolverMode` would call such a type 指定會員.
|
|
170
|
+
*/
|
|
171
|
+
export declare function readApproverSourceChoice(state: ApproverResolverEditorState): ApproverSourceChoice;
|
|
172
|
+
/**
|
|
173
|
+
* The resolver a 簽核來源 pick produces, or `null` when the pick must change
|
|
174
|
+
* nothing: no option, an id that is not an option (the read-only unsupported
|
|
175
|
+
* entry included), or the source already stored. Re-picking the shown source
|
|
176
|
+
* used to rebuild a clean default and wipe what the author had filled in.
|
|
177
|
+
*
|
|
178
|
+
* "Already stored" is the state's own mode, not the displayed option: an
|
|
179
|
+
* EXPRESSION resolver is displayed as 指定會員 but is not one, so picking 指定會員
|
|
180
|
+
* still switches it.
|
|
181
|
+
*/
|
|
182
|
+
export declare function readApproverSourcePick(resolver: ApproverResolver, optionId: string | null, positions: readonly PositionRecord[]): ApproverResolver | null;
|
|
183
|
+
export type ApproverSubjectChoice = Readonly<{
|
|
184
|
+
/** The stored level is below 1 (or fractional): shown, not offered again. */
|
|
185
|
+
invalid: boolean;
|
|
186
|
+
options: readonly ManagerLevelOption[];
|
|
187
|
+
selected: ManagerLevelOption;
|
|
188
|
+
}>;
|
|
189
|
+
/**
|
|
190
|
+
* The 簽核人 select of ② and ③. A stored manager level the list has no option
|
|
191
|
+
* for (invalid, or a level above 3) is appended so the select can show it.
|
|
192
|
+
*/
|
|
193
|
+
export declare function readApproverSubjectChoice(state: ApproverResolverEditorState): ApproverSubjectChoice | null;
|
|
194
|
+
/**
|
|
195
|
+
* The state a 簽核人 pick produces, or `null` for a no-op (the shown choice
|
|
196
|
+
* picked again, the invalid-level entry, an id that is not an option).
|
|
197
|
+
*/
|
|
198
|
+
export declare function readApproverSubjectPick(state: ApproverResolverEditorState, optionId: string | null): ApproverResolverEditorState | null;
|
|
199
|
+
export type ApproverManagerRuleView = Readonly<{
|
|
200
|
+
fallback: ApproverResolverFallback;
|
|
201
|
+
preferClosestOrgUnit: boolean;
|
|
202
|
+
/** 主管鏈 has no 只取最近一層主管. */
|
|
203
|
+
showPreferClosestOrgUnit: boolean;
|
|
204
|
+
}>;
|
|
205
|
+
/**
|
|
206
|
+
* The 只取最近一層主管 / 無主管時 pair of a resolver that looks a manager up,
|
|
207
|
+
* `null` for one that does not (so 本人 shows neither).
|
|
208
|
+
*/
|
|
209
|
+
export declare function readApproverManagerRule(resolver: ApproverResolver): ApproverManagerRuleView | null;
|
|
210
|
+
export declare function withPreferClosestOrgUnit(resolver: ApproverResolver, preferClosestOrgUnit: boolean): ApproverResolver;
|
|
211
|
+
export {};
|
|
@@ -11,6 +11,8 @@ export type DryRunAssigneeDirectory = Readonly<{
|
|
|
11
11
|
formFields: readonly FormFieldRecord[];
|
|
12
12
|
/** Display name of a real member id, or `null` when it is not known. */
|
|
13
13
|
memberName: (memberId: string) => string | null;
|
|
14
|
+
/** Nodes of the workflow, to name the stages a `nodeActor:` placeholder lists. */
|
|
15
|
+
nodes: readonly NamedRecord[];
|
|
14
16
|
orgUnits: readonly NamedRecord[];
|
|
15
17
|
positions: readonly NamedRecord[];
|
|
16
18
|
}>;
|
|
@@ -11,6 +11,8 @@ export type DryRunAssigneeDirectory = Readonly<{
|
|
|
11
11
|
formFields: readonly FormFieldRecord[];
|
|
12
12
|
/** Display name of a real member id, or `null` when it is not known. */
|
|
13
13
|
memberName: (memberId: string) => string | null;
|
|
14
|
+
/** Nodes of the workflow, to name the stages a `nodeActor:` placeholder lists. */
|
|
15
|
+
nodes: readonly NamedRecord[];
|
|
14
16
|
orgUnits: readonly NamedRecord[];
|
|
15
17
|
positions: readonly NamedRecord[];
|
|
16
18
|
}>;
|
|
@@ -7,3 +7,9 @@ export declare function readDryRunSampleFormData(schema: FormDefinitionSchema |
|
|
|
7
7
|
* excludes the initiator look skipped or stopped when it would not be.
|
|
8
8
|
*/
|
|
9
9
|
export declare function readDryRunFormMemberPlaceholder(fieldKey: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Sample value of an org_unit field: a placeholder, since the dry run has no
|
|
12
|
+
* way to know which organization a submitter would pick. The engine reports
|
|
13
|
+
* 依表單欄位的組織主管 by field key, not by this value.
|
|
14
|
+
*/
|
|
15
|
+
export declare function readDryRunFormOrgUnitPlaceholder(fieldKey: string): string;
|
|
@@ -7,3 +7,9 @@ export declare function readDryRunSampleFormData(schema: FormDefinitionSchema |
|
|
|
7
7
|
* excludes the initiator look skipped or stopped when it would not be.
|
|
8
8
|
*/
|
|
9
9
|
export declare function readDryRunFormMemberPlaceholder(fieldKey: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Sample value of an org_unit field: a placeholder, since the dry run has no
|
|
12
|
+
* way to know which organization a submitter would pick. The engine reports
|
|
13
|
+
* 依表單欄位的組織主管 by field key, not by this value.
|
|
14
|
+
*/
|
|
15
|
+
export declare function readDryRunFormOrgUnitPlaceholder(fieldKey: string): string;
|
|
@@ -18,6 +18,8 @@ export type DynamicFormFieldChoice = Readonly<{
|
|
|
18
18
|
selected: MemberFieldOption | null;
|
|
19
19
|
}>;
|
|
20
20
|
export declare const NO_MEMBER_FIELD_HINT = "\u8868\u55AE\u4E2D\u6C92\u6709\u300C\u4EBA\u54E1\u9078\u64C7\u300D\u6B04\u4F4D\uFF0C\u8ACB\u5148\u5230\u8868\u55AE\u8A2D\u8A08\u52A0\u5165";
|
|
21
|
+
export declare const NO_SINGLE_MEMBER_FIELD_HINT = "\u8868\u55AE\u4E2D\u6C92\u6709\u55AE\u9078\u7684\u300C\u4EBA\u54E1\u9078\u64C7\u300D\u6B04\u4F4D\uFF0C\u8ACB\u5148\u5230\u8868\u55AE\u8A2D\u8A08\u52A0\u5165";
|
|
22
|
+
export declare const NO_ORG_UNIT_FIELD_HINT = "\u8868\u55AE\u4E2D\u6C92\u6709\u300C\u7D44\u7E54\u9078\u64C7\u300D\u6B04\u4F4D\uFF0C\u8ACB\u5148\u5230\u8868\u55AE\u8A2D\u8A08\u52A0\u5165";
|
|
21
23
|
/** Only member fields can feed a 依表單欄位指定 approver resolver. */
|
|
22
24
|
export declare function readMemberFieldOptions(schema: FormDefinitionSchema | null): readonly MemberFieldOption[];
|
|
23
25
|
/**
|
|
@@ -28,8 +30,31 @@ export declare function readMemberFieldOptions(schema: FormDefinitionSchema | nu
|
|
|
28
30
|
* back — the resolver stays invalid until a real field is chosen.
|
|
29
31
|
*/
|
|
30
32
|
export declare function readDynamicFormFieldChoice(schema: FormDefinitionSchema | null, formPath: string): DynamicFormFieldChoice;
|
|
33
|
+
/**
|
|
34
|
+
* Member fields a manager can be looked up from: one person per submission,
|
|
35
|
+
* so a multi-select member field is not offered (SPEC 5.2). Same warnings as
|
|
36
|
+
* {@link readMemberFieldOptions}.
|
|
37
|
+
*/
|
|
38
|
+
export declare function readSingleMemberFieldOptions(schema: FormDefinitionSchema | null): readonly MemberFieldOption[];
|
|
39
|
+
/** The field picker for 簽核人 = 直屬/第二層/第三層主管 of a form person. */
|
|
40
|
+
export declare function readFormMemberManagerFieldChoice(schema: FormDefinitionSchema | null, formPath: string): DynamicFormFieldChoice;
|
|
41
|
+
/**
|
|
42
|
+
* Every 組織選擇 field of the form, optional or hidden ones included; the
|
|
43
|
+
* ones that cannot be published carry the reason as `warning`, the way member
|
|
44
|
+
* fields do.
|
|
45
|
+
*/
|
|
46
|
+
export declare function readOrgUnitFieldOptions(schema: FormDefinitionSchema | null): readonly MemberFieldOption[];
|
|
47
|
+
/** The field picker for 組織 = 表單欄位 of 指定組織主管. */
|
|
48
|
+
export declare function readFormOrgUnitFieldChoice(schema: FormDefinitionSchema | null, formPath: string): DynamicFormFieldChoice;
|
|
31
49
|
/**
|
|
32
50
|
* 依表單欄位:<label>; the field key when the form does not have it (any
|
|
33
51
|
* more), and a marker when the key names something that is not a member field.
|
|
34
52
|
*/
|
|
35
53
|
export declare function readDynamicFormSummary(schema: FormDefinitionSchema | null, formPath: string): string;
|
|
54
|
+
/**
|
|
55
|
+
* 依表單欄位:<label>的<level>; marks a field that cannot feed a manager lookup
|
|
56
|
+
* (not a member field, or one that takes several people).
|
|
57
|
+
*/
|
|
58
|
+
export declare function readFormMemberManagerSummary(schema: FormDefinitionSchema | null, formPath: string, levelName: string): string;
|
|
59
|
+
/** 依表單欄位:<label>所選組織的主管, with a marker for a non-org field. */
|
|
60
|
+
export declare function readFormOrgUnitManagerSummary(schema: FormDefinitionSchema | null, formPath: string): string;
|
|
@@ -18,6 +18,8 @@ export type DynamicFormFieldChoice = Readonly<{
|
|
|
18
18
|
selected: MemberFieldOption | null;
|
|
19
19
|
}>;
|
|
20
20
|
export declare const NO_MEMBER_FIELD_HINT = "\u8868\u55AE\u4E2D\u6C92\u6709\u300C\u4EBA\u54E1\u9078\u64C7\u300D\u6B04\u4F4D\uFF0C\u8ACB\u5148\u5230\u8868\u55AE\u8A2D\u8A08\u52A0\u5165";
|
|
21
|
+
export declare const NO_SINGLE_MEMBER_FIELD_HINT = "\u8868\u55AE\u4E2D\u6C92\u6709\u55AE\u9078\u7684\u300C\u4EBA\u54E1\u9078\u64C7\u300D\u6B04\u4F4D\uFF0C\u8ACB\u5148\u5230\u8868\u55AE\u8A2D\u8A08\u52A0\u5165";
|
|
22
|
+
export declare const NO_ORG_UNIT_FIELD_HINT = "\u8868\u55AE\u4E2D\u6C92\u6709\u300C\u7D44\u7E54\u9078\u64C7\u300D\u6B04\u4F4D\uFF0C\u8ACB\u5148\u5230\u8868\u55AE\u8A2D\u8A08\u52A0\u5165";
|
|
21
23
|
/** Only member fields can feed a 依表單欄位指定 approver resolver. */
|
|
22
24
|
export declare function readMemberFieldOptions(schema: FormDefinitionSchema | null): readonly MemberFieldOption[];
|
|
23
25
|
/**
|
|
@@ -28,8 +30,31 @@ export declare function readMemberFieldOptions(schema: FormDefinitionSchema | nu
|
|
|
28
30
|
* back — the resolver stays invalid until a real field is chosen.
|
|
29
31
|
*/
|
|
30
32
|
export declare function readDynamicFormFieldChoice(schema: FormDefinitionSchema | null, formPath: string): DynamicFormFieldChoice;
|
|
33
|
+
/**
|
|
34
|
+
* Member fields a manager can be looked up from: one person per submission,
|
|
35
|
+
* so a multi-select member field is not offered (SPEC 5.2). Same warnings as
|
|
36
|
+
* {@link readMemberFieldOptions}.
|
|
37
|
+
*/
|
|
38
|
+
export declare function readSingleMemberFieldOptions(schema: FormDefinitionSchema | null): readonly MemberFieldOption[];
|
|
39
|
+
/** The field picker for 簽核人 = 直屬/第二層/第三層主管 of a form person. */
|
|
40
|
+
export declare function readFormMemberManagerFieldChoice(schema: FormDefinitionSchema | null, formPath: string): DynamicFormFieldChoice;
|
|
41
|
+
/**
|
|
42
|
+
* Every 組織選擇 field of the form, optional or hidden ones included; the
|
|
43
|
+
* ones that cannot be published carry the reason as `warning`, the way member
|
|
44
|
+
* fields do.
|
|
45
|
+
*/
|
|
46
|
+
export declare function readOrgUnitFieldOptions(schema: FormDefinitionSchema | null): readonly MemberFieldOption[];
|
|
47
|
+
/** The field picker for 組織 = 表單欄位 of 指定組織主管. */
|
|
48
|
+
export declare function readFormOrgUnitFieldChoice(schema: FormDefinitionSchema | null, formPath: string): DynamicFormFieldChoice;
|
|
31
49
|
/**
|
|
32
50
|
* 依表單欄位:<label>; the field key when the form does not have it (any
|
|
33
51
|
* more), and a marker when the key names something that is not a member field.
|
|
34
52
|
*/
|
|
35
53
|
export declare function readDynamicFormSummary(schema: FormDefinitionSchema | null, formPath: string): string;
|
|
54
|
+
/**
|
|
55
|
+
* 依表單欄位:<label>的<level>; marks a field that cannot feed a manager lookup
|
|
56
|
+
* (not a member field, or one that takes several people).
|
|
57
|
+
*/
|
|
58
|
+
export declare function readFormMemberManagerSummary(schema: FormDefinitionSchema | null, formPath: string, levelName: string): string;
|
|
59
|
+
/** 依表單欄位:<label>所選組織的主管, with a marker for a non-org field. */
|
|
60
|
+
export declare function readFormOrgUnitManagerSummary(schema: FormDefinitionSchema | null, formPath: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../chunks/designer-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../chunks/designer-Be9UI9Tg.cjs");exports.TemplateDesignerView=e.t;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as TemplateDesignerView } from "../../../chunks/designer-
|
|
1
|
+
export { t as TemplateDesignerView } from "../../../chunks/designer-uhC_7m2i.js";
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { WorkflowDefinition } from '@rytass/bpm-core-shared/workflow';
|
|
2
|
+
export type NodeActorOption = Readonly<{
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
}>;
|
|
6
|
+
export type NodeActorStageChoice = Readonly<{
|
|
7
|
+
/** What the 關卡 picker offers, with any stale stored choice appended. */
|
|
8
|
+
options: readonly NodeActorOption[];
|
|
9
|
+
/**
|
|
10
|
+
* Live problems of the whole selection (coverage, parallel branches, a stage
|
|
11
|
+
* that can be skipped, ...), or the hint that nothing can be picked.
|
|
12
|
+
*/
|
|
13
|
+
problems: readonly string[];
|
|
14
|
+
selected: readonly NodeActorOption[];
|
|
15
|
+
}>;
|
|
16
|
+
export declare const NO_UPSTREAM_USER_TASK_HINT = "\u9019\u500B\u7BC0\u9EDE\u524D\u9762\u6C92\u6709\u53EF\u4EE5\u9078\u7684\u7C3D\u6838\u95DC\u5361\uFF0C\u8ACB\u5148\u5728\u5B83\u524D\u9762\u52A0\u5165\u7C3D\u6838\u7BC0\u9EDE\uFF08\u6C92\u6709\u9032\u5165\u689D\u4EF6\u3001\u6C92\u8A2D\u8DF3\u904E\u6B64\u95DC\uFF0C\u4E5F\u6C92\u8A2D\u903E\u6642\u81EA\u52D5\u6838\u51C6\uFF09";
|
|
17
|
+
/** The 關卡 picker's hint while the selection has no problem to report. */
|
|
18
|
+
export declare const NODE_ACTOR_STAGE_HINT = "\u7C3D\u6838\u4EBA\u53D6\u81EA\u4F60\u9078\u7684\u524D\u9762\u95DC\u5361\u5BE6\u969B\u7C3D\u6838\u7684\u4EBA\uFF1B\u53EF\u8907\u9078\uFF0C\u6574\u7D44\u8981\u6DB5\u84CB\u6BCF\u689D\u8DEF\u5F91\u3002\u8907\u9078\u591A\u500B\u95DC\u5361\u6642\uFF0C\u53D6\u6700\u8FD1\u5BE6\u969B\u8D70\u5230\u7684\u90A3\u4E00\u95DC\u7684\u7C3D\u6838\u4EBA\uFF0C\u4E0D\u662F\u5168\u90E8\u95DC\u5361\u7684\u7C3D\u6838\u4EBA\u3002";
|
|
19
|
+
/**
|
|
20
|
+
* The 關卡 picker of 依前面關卡的簽核者: the user tasks upstream of `nodeId`
|
|
21
|
+
* that always end with a real signer (`readNodeActorSourceSkipReasons` is
|
|
22
|
+
* empty: no entry condition, no 跳過此關, no 逾時自動核准). Whether the whole group
|
|
23
|
+
* covers every path, or straddles a parallel split, is a property of the
|
|
24
|
+
* selection, not of one stage, so it is reported as `problems` and never used
|
|
25
|
+
* to filter the list (SPEC 5.2: the 154 CF_HR_0002 cases rest on two mutually
|
|
26
|
+
* exclusive stages that would each fail the coverage test alone).
|
|
27
|
+
*
|
|
28
|
+
* A stored stage that no longer qualifies stays in the list, marked, so the
|
|
29
|
+
* stored choice stays visible until the author fixes it.
|
|
30
|
+
*/
|
|
31
|
+
export declare function readNodeActorStageChoice(definition: WorkflowDefinition, nodeId: string, selectedIds: readonly string[]): NodeActorStageChoice;
|
|
32
|
+
/**
|
|
33
|
+
* The graph problems of every 依前面關卡的簽核者 node, naming the node: the
|
|
34
|
+
* checks the backend publish lint runs (`readNodeActorSourceIssues`), for the
|
|
35
|
+
* designer to show before publish. An empty stage list is left to
|
|
36
|
+
* `readApproverResolverIssue`, which owns that message.
|
|
37
|
+
*/
|
|
38
|
+
export declare function readNodeActorGraphIssues(definition: WorkflowDefinition): readonly string[];
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { WorkflowDefinition } from '@rytass/bpm-core-shared/workflow';
|
|
2
|
+
export type NodeActorOption = Readonly<{
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
}>;
|
|
6
|
+
export type NodeActorStageChoice = Readonly<{
|
|
7
|
+
/** What the 關卡 picker offers, with any stale stored choice appended. */
|
|
8
|
+
options: readonly NodeActorOption[];
|
|
9
|
+
/**
|
|
10
|
+
* Live problems of the whole selection (coverage, parallel branches, a stage
|
|
11
|
+
* that can be skipped, ...), or the hint that nothing can be picked.
|
|
12
|
+
*/
|
|
13
|
+
problems: readonly string[];
|
|
14
|
+
selected: readonly NodeActorOption[];
|
|
15
|
+
}>;
|
|
16
|
+
export declare const NO_UPSTREAM_USER_TASK_HINT = "\u9019\u500B\u7BC0\u9EDE\u524D\u9762\u6C92\u6709\u53EF\u4EE5\u9078\u7684\u7C3D\u6838\u95DC\u5361\uFF0C\u8ACB\u5148\u5728\u5B83\u524D\u9762\u52A0\u5165\u7C3D\u6838\u7BC0\u9EDE\uFF08\u6C92\u6709\u9032\u5165\u689D\u4EF6\u3001\u6C92\u8A2D\u8DF3\u904E\u6B64\u95DC\uFF0C\u4E5F\u6C92\u8A2D\u903E\u6642\u81EA\u52D5\u6838\u51C6\uFF09";
|
|
17
|
+
/** The 關卡 picker's hint while the selection has no problem to report. */
|
|
18
|
+
export declare const NODE_ACTOR_STAGE_HINT = "\u7C3D\u6838\u4EBA\u53D6\u81EA\u4F60\u9078\u7684\u524D\u9762\u95DC\u5361\u5BE6\u969B\u7C3D\u6838\u7684\u4EBA\uFF1B\u53EF\u8907\u9078\uFF0C\u6574\u7D44\u8981\u6DB5\u84CB\u6BCF\u689D\u8DEF\u5F91\u3002\u8907\u9078\u591A\u500B\u95DC\u5361\u6642\uFF0C\u53D6\u6700\u8FD1\u5BE6\u969B\u8D70\u5230\u7684\u90A3\u4E00\u95DC\u7684\u7C3D\u6838\u4EBA\uFF0C\u4E0D\u662F\u5168\u90E8\u95DC\u5361\u7684\u7C3D\u6838\u4EBA\u3002";
|
|
19
|
+
/**
|
|
20
|
+
* The 關卡 picker of 依前面關卡的簽核者: the user tasks upstream of `nodeId`
|
|
21
|
+
* that always end with a real signer (`readNodeActorSourceSkipReasons` is
|
|
22
|
+
* empty: no entry condition, no 跳過此關, no 逾時自動核准). Whether the whole group
|
|
23
|
+
* covers every path, or straddles a parallel split, is a property of the
|
|
24
|
+
* selection, not of one stage, so it is reported as `problems` and never used
|
|
25
|
+
* to filter the list (SPEC 5.2: the 154 CF_HR_0002 cases rest on two mutually
|
|
26
|
+
* exclusive stages that would each fail the coverage test alone).
|
|
27
|
+
*
|
|
28
|
+
* A stored stage that no longer qualifies stays in the list, marked, so the
|
|
29
|
+
* stored choice stays visible until the author fixes it.
|
|
30
|
+
*/
|
|
31
|
+
export declare function readNodeActorStageChoice(definition: WorkflowDefinition, nodeId: string, selectedIds: readonly string[]): NodeActorStageChoice;
|
|
32
|
+
/**
|
|
33
|
+
* The graph problems of every 依前面關卡的簽核者 node, naming the node: the
|
|
34
|
+
* checks the backend publish lint runs (`readNodeActorSourceIssues`), for the
|
|
35
|
+
* designer to show before publish. An empty stage list is left to
|
|
36
|
+
* `readApproverResolverIssue`, which owns that message.
|
|
37
|
+
*/
|
|
38
|
+
export declare function readNodeActorGraphIssues(definition: WorkflowDefinition): readonly string[];
|