tachybase_todo/packages/plugins/@hera/plugin-approval/src/client/ApprovalProcessAddBlockButton.tsx

54 lines
1.8 KiB
TypeScript

import { SchemaInitializer, gridRowColWrap, usePlugin } from '@nocobase/client';
import PluginWorkflow, {
useAvailableUpstreams,
useFlowContext,
useNodeContext, useTrigger
} from '@nocobase/plugin-workflow/client';
import { NAMESPACE } from '../locale';
import { Lo, Jo } from './refined';
export const ApprovalProcessAddBlockButton = new SchemaInitializer({
name: 'ApprovalProcessAddBlockButton',
wrap: gridRowColWrap,
title: "{{t('Add block')}}",
items: [
{
name: 'approval',
type: 'itemGroup',
title: `{{t("Approval blocks", { ns: "${NAMESPACE}" })}}`,
children: [
{ name: 'detail', type: 'item', title: '{{t("Details")}}', Component: Lo },
{ name: 'actions', type: 'item', title: '{{t("Actions")}}', Component: Jo },
],
},
{
type: 'itemGroup',
name: 'dataBlocks',
title: '{{t("Data blocks")}}',
checkChildrenLength: !0,
useChildren() {
var l;
const e = usePlugin(PluginWorkflow), { workflow: t } = useFlowContext(), n = useTrigger(), a = useNodeContext(), s = useAvailableUpstreams(a), i = [(l = n.useInitializers) == null ? void 0 : l.call(n, t.config)].filter(Boolean), v = s
.map((d) => {
var h;
const m = e.instructions.get(d.type);
return (h = m == null ? void 0 : m.useInitializers) == null ? void 0 : h.call(m, d);
})
.filter(Boolean);
return [
...i,
...(v.length
? [{ name: 'nodes', type: 'subMenu', title: '{{t("Node result", { ns: "workflow" })}}', children: v }]
: []),
].filter(Boolean);
},
},
{
name: 'others',
type: 'itemGroup',
title: '{{t("Other blocks")}}',
children: [{ name: 'markdown', type: 'item', title: '{{t("Markdown")}}', component: 'MarkdownBlockInitializer' }],
},
],
});