@ram_28/kf-ai-sdk 2.0.10 → 2.0.12
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/dist/components/hooks/useForm/useForm.d.ts.map +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.mjs +67 -67
- package/dist/workflow/components/useActivityTable/index.d.ts +4 -0
- package/dist/workflow/components/useActivityTable/index.d.ts.map +1 -0
- package/dist/workflow/components/useActivityTable/types.d.ts +53 -0
- package/dist/workflow/components/useActivityTable/types.d.ts.map +1 -0
- package/dist/workflow/components/useActivityTable/useActivityTable.d.ts +4 -0
- package/dist/workflow/components/useActivityTable/useActivityTable.d.ts.map +1 -0
- package/dist/workflow/types.d.ts +2 -3
- package/dist/workflow/types.d.ts.map +1 -1
- package/dist/workflow.cjs +1 -1
- package/dist/workflow.d.ts +2 -0
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.mjs +274 -204
- package/dist/workflow.types.d.ts +1 -0
- package/dist/workflow.types.d.ts.map +1 -1
- package/docs/workflow.md +155 -10
- package/package.json +1 -1
- package/sdk/components/hooks/useForm/useForm.ts +2 -0
- package/sdk/workflow/components/useActivityTable/index.ts +8 -0
- package/sdk/workflow/components/useActivityTable/types.ts +67 -0
- package/sdk/workflow/components/useActivityTable/useActivityTable.ts +145 -0
- package/sdk/workflow/types.ts +2 -3
- package/sdk/workflow.ts +7 -0
- package/sdk/workflow.types.ts +7 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useForm/useForm.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAKlB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACtD,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,iBAAiB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useForm/useForm.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAKlB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACtD,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,iBAAiB,CAAC,CAAC,CAAC,CAoNtB"}
|
package/dist/form.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const D=require("./constants-QX2RX-wu.cjs"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const D=require("./constants-QX2RX-wu.cjs"),q=require("react"),T=require("./index.esm-DuwT11sx.cjs"),w=require("@tanstack/react-query"),j=require("./metadata-BfJtHz84.cjs");function P(s,e){const r=[];if(s.required&&(e==null||e===""||Array.isArray(e)&&e.length===0))return r.push(`${s.label} is required`),{valid:!1,errors:r};if(e==null||e==="")return{valid:!0,errors:[]};if("length"in s&&typeof s.length=="number"&&typeof e=="string"&&e.length>s.length&&r.push(`${s.label} must be at most ${s.length} characters`),"integerPart"in s&&typeof e=="number"){const d=Math.floor(Math.abs(e)),c=s.integerPart??9;d.toString().length>c&&r.push(`${s.label} integer part must be at most ${c} digits`);const t=s.fractionPart;t!==void 0&&(e.toString().split(".")[1]??"").length>t&&r.push(`${s.label} can have at most ${t} decimal places`)}return r.length>0?{valid:!1,errors:r}:{valid:!0,errors:[]}}function C(s,e){return async(r,d,c)=>{var v;const t={},a=s.getFields(),m=(c==null?void 0:c.names)??Object.keys(a);for(const n of m){if(n==="_id"||(v=a[n])!=null&&v.readOnly)continue;const g=a[n];if(!g)continue;const f=r[n],u=g.validate(f);if(!u.valid&&u.errors.length>0){t[n]={type:"validate",message:u.errors[0]||`${n} is invalid`};continue}if((e==null?void 0:e.enableConstraintValidation)!==!1){const l=P(g,f);if(!l.valid&&l.errors.length>0){t[n]={type:"constraint",message:l.errors[0]};continue}}if(s.hasMetadata()){const l=s.validateFieldExpression(n,f,r);!l.valid&&l.errors.length>0&&(t[n]={type:"validate",message:l.errors[0]})}}return Object.keys(t).length===0?{values:r,errors:{}}:{values:{},errors:t}}}function J(s,e){const r=s.getFields(),d=new Map;return new Proxy({},{get(c,t){if(typeof t=="symbol")return;if(t==="_id")return e.getValues("_id");if(t==="toJSON")return()=>e.getValues();if(t==="validate")return()=>e.trigger();if(d.has(t))return d.get(t);const a=r[t],m=(a==null?void 0:a.meta)??{_id:t,Name:t,Type:"String"},v=(a==null?void 0:a.readOnly)??!1,n=()=>{if(!a)return{valid:!0,errors:[]};const u=e.getValues(t),l=a.validate(u);if(!l.valid)return l;const R=P(a,u);if(!R.valid)return R;if(s.hasMetadata()){const o=s.validateFieldExpression(t,u,e.getValues());if(!o.valid)return o}return{valid:!0,errors:[]}},g=u=>{const l=e.getValues(t);return l??u};if(!v){const u={label:(a==null?void 0:a.label)??t,required:(a==null?void 0:a.required)??!1,readOnly:!1,defaultValue:a==null?void 0:a.defaultValue,meta:m,get:()=>e.getValues(t),getOrDefault:g,set:l=>{e.setValue(t,l,{shouldDirty:!0,shouldTouch:!0,shouldValidate:!1})},validate:n};return d.set(t,u),u}const f={label:(a==null?void 0:a.label)??t,required:(a==null?void 0:a.required)??!1,readOnly:!0,defaultValue:a==null?void 0:a.defaultValue,meta:m,get:()=>e.getValues(t),getOrDefault:g,validate:n};return d.set(t,f),f},has(c,t){return typeof t=="symbol"?!1:t==="_id"||t==="toJSON"||t==="validate"?!0:t in r},ownKeys(c){return[...Object.keys(r),"_id","toJSON","validate"]},getOwnPropertyDescriptor(c,t){if(typeof t!="symbol")return{configurable:!0,enumerable:t!=="toJSON"&&t!=="validate"}}})}function F(s){const{bdo:e,recordId:r,operation:d,defaultValues:c,mode:t="onBlur",enableDraft:a=!1,enableConstraintValidation:m,enableExpressionValidation:v}=s,n=d??(r?"update":"create"),g=q.useMemo(()=>C(e,{enableConstraintValidation:m}),[e,m]),{data:f,isLoading:u,isFetching:l,error:R}=w.useQuery({queryKey:["form-record",e.meta._id,r],queryFn:async()=>(await e.get(r)).toJSON(),enabled:n==="update"&&!!r,staleTime:0}),{data:o}=w.useQuery({queryKey:["form-schema",e.meta._id],queryFn:()=>j.getBdoSchema(e.meta._id),staleTime:30*60*1e3,gcTime:60*60*1e3,enabled:v!==!1});q.useEffect(()=>{o!=null&&o.BDOBlob?e.loadMetadata(o.BDOBlob):o!=null&&o.MetaBlob&&e.loadMetadata(o.MetaBlob)},[o,e]);const i=T.useForm({mode:t,resolver:g,defaultValues:c,values:n==="update"&&f?f:void 0}),B=q.useMemo(()=>J(e,i),[e,i]),h=e.getFields(),$=q.useCallback((b,y)=>{var V;const S=i.register(b,y);return(V=h[b])!=null&&V.readOnly?{...S,disabled:!0}:S},[i,h]),k=q.useCallback((b,y)=>i.handleSubmit(async(S,V)=>{try{const O={};if(n==="create")for(const[_,M]of Object.entries(S))h[_]&&!h[_].readOnly&&(O[_]=M);else{const _=i.formState.dirtyFields;for(const[M,N]of Object.entries(S))h[M]&&!h[M].readOnly&&_[M]&&(O[M]=N)}let x;n==="create"?x=await e.create(O):x=await e.update(r,O),b==null||b(x,V)}catch(O){y==null||y(O,V)}},(S,V)=>{y==null||y(S,V)}),[i,e,n,r,h]);return{item:B,bdo:e,operation:n,recordId:r,register:$,handleSubmit:k,watch:i.watch,setValue:i.setValue,getValues:i.getValues,reset:i.reset,trigger:i.trigger,control:i.control,formState:i.formState,errors:i.formState.errors,isDirty:i.formState.isDirty,isValid:i.formState.isValid,isSubmitting:i.formState.isSubmitting,isSubmitSuccessful:i.formState.isSubmitSuccessful,dirtyFields:i.formState.dirtyFields,isLoading:u,isFetching:l,loadError:R}}exports.FormOperation=D.FormOperation;exports.InteractionMode=D.InteractionMode;exports.ValidationMode=D.ValidationMode;exports.useForm=F;
|
package/dist/form.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { F as H, I as U, V as W } from "./constants-ConHc1oS.js";
|
|
2
|
-
import { useMemo as
|
|
2
|
+
import { useMemo as D, useEffect as T, useCallback as q } from "react";
|
|
3
3
|
import { u as j } from "./index.esm-Cj63v5ny.js";
|
|
4
4
|
import { useQuery as w } from "@tanstack/react-query";
|
|
5
5
|
import { g as C } from "./metadata-CwAo6a8e.js";
|
|
@@ -10,22 +10,22 @@ function $(s, e) {
|
|
|
10
10
|
if (e == null || e === "")
|
|
11
11
|
return { valid: !0, errors: [] };
|
|
12
12
|
if ("length" in s && typeof s.length == "number" && typeof e == "string" && e.length > s.length && r.push(`${s.label} must be at most ${s.length} characters`), "integerPart" in s && typeof e == "number") {
|
|
13
|
-
const
|
|
14
|
-
|
|
13
|
+
const f = Math.floor(Math.abs(e)), o = s.integerPart ?? 9;
|
|
14
|
+
f.toString().length > o && r.push(`${s.label} integer part must be at most ${o} digits`);
|
|
15
15
|
const t = s.fractionPart;
|
|
16
16
|
t !== void 0 && (e.toString().split(".")[1] ?? "").length > t && r.push(`${s.label} can have at most ${t} decimal places`);
|
|
17
17
|
}
|
|
18
18
|
return r.length > 0 ? { valid: !1, errors: r } : { valid: !0, errors: [] };
|
|
19
19
|
}
|
|
20
20
|
function J(s, e) {
|
|
21
|
-
return async (r,
|
|
22
|
-
var
|
|
23
|
-
const t = {}, a = s.getFields(), y = (
|
|
21
|
+
return async (r, f, o) => {
|
|
22
|
+
var S;
|
|
23
|
+
const t = {}, a = s.getFields(), y = (o == null ? void 0 : o.names) ?? Object.keys(a);
|
|
24
24
|
for (const n of y) {
|
|
25
|
-
if (n === "_id" || (
|
|
26
|
-
const
|
|
27
|
-
if (!
|
|
28
|
-
const
|
|
25
|
+
if (n === "_id" || (S = a[n]) != null && S.readOnly) continue;
|
|
26
|
+
const g = a[n];
|
|
27
|
+
if (!g) continue;
|
|
28
|
+
const d = r[n], u = g.validate(d);
|
|
29
29
|
if (!u.valid && u.errors.length > 0) {
|
|
30
30
|
t[n] = {
|
|
31
31
|
type: "validate",
|
|
@@ -34,7 +34,7 @@ function J(s, e) {
|
|
|
34
34
|
continue;
|
|
35
35
|
}
|
|
36
36
|
if ((e == null ? void 0 : e.enableConstraintValidation) !== !1) {
|
|
37
|
-
const l = $(
|
|
37
|
+
const l = $(g, d);
|
|
38
38
|
if (!l.valid && l.errors.length > 0) {
|
|
39
39
|
t[n] = {
|
|
40
40
|
type: "constraint",
|
|
@@ -46,7 +46,7 @@ function J(s, e) {
|
|
|
46
46
|
if (s.hasMetadata()) {
|
|
47
47
|
const l = s.validateFieldExpression(
|
|
48
48
|
n,
|
|
49
|
-
|
|
49
|
+
d,
|
|
50
50
|
r
|
|
51
51
|
);
|
|
52
52
|
!l.valid && l.errors.length > 0 && (t[n] = {
|
|
@@ -59,9 +59,9 @@ function J(s, e) {
|
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
61
|
function I(s, e) {
|
|
62
|
-
const r = s.getFields(),
|
|
62
|
+
const r = s.getFields(), f = /* @__PURE__ */ new Map();
|
|
63
63
|
return new Proxy({}, {
|
|
64
|
-
get(
|
|
64
|
+
get(o, t) {
|
|
65
65
|
if (typeof t == "symbol")
|
|
66
66
|
return;
|
|
67
67
|
if (t === "_id")
|
|
@@ -70,32 +70,32 @@ function I(s, e) {
|
|
|
70
70
|
return () => e.getValues();
|
|
71
71
|
if (t === "validate")
|
|
72
72
|
return () => e.trigger();
|
|
73
|
-
if (
|
|
74
|
-
return
|
|
73
|
+
if (f.has(t))
|
|
74
|
+
return f.get(t);
|
|
75
75
|
const a = r[t], y = (a == null ? void 0 : a.meta) ?? {
|
|
76
76
|
_id: t,
|
|
77
77
|
Name: t,
|
|
78
78
|
Type: "String"
|
|
79
|
-
},
|
|
79
|
+
}, S = (a == null ? void 0 : a.readOnly) ?? !1, n = () => {
|
|
80
80
|
if (!a) return { valid: !0, errors: [] };
|
|
81
81
|
const u = e.getValues(t), l = a.validate(u);
|
|
82
82
|
if (!l.valid) return l;
|
|
83
|
-
const
|
|
84
|
-
if (!
|
|
83
|
+
const x = $(a, u);
|
|
84
|
+
if (!x.valid) return x;
|
|
85
85
|
if (s.hasMetadata()) {
|
|
86
|
-
const
|
|
86
|
+
const c = s.validateFieldExpression(
|
|
87
87
|
t,
|
|
88
88
|
u,
|
|
89
89
|
e.getValues()
|
|
90
90
|
);
|
|
91
|
-
if (!
|
|
91
|
+
if (!c.valid) return c;
|
|
92
92
|
}
|
|
93
93
|
return { valid: !0, errors: [] };
|
|
94
|
-
},
|
|
94
|
+
}, g = (u) => {
|
|
95
95
|
const l = e.getValues(t);
|
|
96
96
|
return l ?? u;
|
|
97
97
|
};
|
|
98
|
-
if (!
|
|
98
|
+
if (!S) {
|
|
99
99
|
const u = {
|
|
100
100
|
label: (a == null ? void 0 : a.label) ?? t,
|
|
101
101
|
required: (a == null ? void 0 : a.required) ?? !1,
|
|
@@ -103,7 +103,7 @@ function I(s, e) {
|
|
|
103
103
|
defaultValue: a == null ? void 0 : a.defaultValue,
|
|
104
104
|
meta: y,
|
|
105
105
|
get: () => e.getValues(t),
|
|
106
|
-
getOrDefault:
|
|
106
|
+
getOrDefault: g,
|
|
107
107
|
set: (l) => {
|
|
108
108
|
e.setValue(t, l, {
|
|
109
109
|
shouldDirty: !0,
|
|
@@ -114,27 +114,27 @@ function I(s, e) {
|
|
|
114
114
|
},
|
|
115
115
|
validate: n
|
|
116
116
|
};
|
|
117
|
-
return
|
|
117
|
+
return f.set(t, u), u;
|
|
118
118
|
}
|
|
119
|
-
const
|
|
119
|
+
const d = {
|
|
120
120
|
label: (a == null ? void 0 : a.label) ?? t,
|
|
121
121
|
required: (a == null ? void 0 : a.required) ?? !1,
|
|
122
122
|
readOnly: !0,
|
|
123
123
|
defaultValue: a == null ? void 0 : a.defaultValue,
|
|
124
124
|
meta: y,
|
|
125
125
|
get: () => e.getValues(t),
|
|
126
|
-
getOrDefault:
|
|
126
|
+
getOrDefault: g,
|
|
127
127
|
validate: n
|
|
128
128
|
};
|
|
129
|
-
return
|
|
129
|
+
return f.set(t, d), d;
|
|
130
130
|
},
|
|
131
|
-
has(
|
|
131
|
+
has(o, t) {
|
|
132
132
|
return typeof t == "symbol" ? !1 : t === "_id" || t === "toJSON" || t === "validate" ? !0 : t in r;
|
|
133
133
|
},
|
|
134
|
-
ownKeys(
|
|
134
|
+
ownKeys(o) {
|
|
135
135
|
return [...Object.keys(r), "_id", "toJSON", "validate"];
|
|
136
136
|
},
|
|
137
|
-
getOwnPropertyDescriptor(
|
|
137
|
+
getOwnPropertyDescriptor(o, t) {
|
|
138
138
|
if (typeof t != "symbol")
|
|
139
139
|
return {
|
|
140
140
|
configurable: !0,
|
|
@@ -147,99 +147,99 @@ function Q(s) {
|
|
|
147
147
|
const {
|
|
148
148
|
bdo: e,
|
|
149
149
|
recordId: r,
|
|
150
|
-
operation:
|
|
151
|
-
defaultValues:
|
|
150
|
+
operation: f,
|
|
151
|
+
defaultValues: o,
|
|
152
152
|
mode: t = "onBlur",
|
|
153
153
|
enableDraft: a = !1,
|
|
154
154
|
enableConstraintValidation: y,
|
|
155
|
-
enableExpressionValidation:
|
|
156
|
-
} = s, n =
|
|
155
|
+
enableExpressionValidation: S
|
|
156
|
+
} = s, n = f ?? (r ? "update" : "create"), g = D(
|
|
157
157
|
() => J(e, { enableConstraintValidation: y }),
|
|
158
158
|
[e, y]
|
|
159
159
|
), {
|
|
160
|
-
data:
|
|
160
|
+
data: d,
|
|
161
161
|
isLoading: u,
|
|
162
162
|
isFetching: l,
|
|
163
|
-
error:
|
|
163
|
+
error: x
|
|
164
164
|
} = w({
|
|
165
165
|
queryKey: ["form-record", e.meta._id, r],
|
|
166
166
|
queryFn: async () => (await e.get(r)).toJSON(),
|
|
167
167
|
enabled: n === "update" && !!r,
|
|
168
168
|
staleTime: 0
|
|
169
169
|
// Always fetch fresh data for forms
|
|
170
|
-
}), { data:
|
|
170
|
+
}), { data: c } = w({
|
|
171
171
|
queryKey: ["form-schema", e.meta._id],
|
|
172
172
|
queryFn: () => C(e.meta._id),
|
|
173
173
|
staleTime: 30 * 60 * 1e3,
|
|
174
174
|
// Cache for 30 minutes
|
|
175
175
|
gcTime: 60 * 60 * 1e3,
|
|
176
176
|
// Keep in cache for 1 hour
|
|
177
|
-
enabled:
|
|
177
|
+
enabled: S !== !1
|
|
178
178
|
});
|
|
179
179
|
T(() => {
|
|
180
|
-
|
|
181
|
-
}, [
|
|
180
|
+
c != null && c.BDOBlob ? e.loadMetadata(c.BDOBlob) : c != null && c.MetaBlob && e.loadMetadata(c.MetaBlob);
|
|
181
|
+
}, [c, e]);
|
|
182
182
|
const i = j({
|
|
183
183
|
mode: t,
|
|
184
184
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
185
|
-
resolver:
|
|
185
|
+
resolver: g,
|
|
186
186
|
// Validation integrated here!
|
|
187
|
-
defaultValues:
|
|
187
|
+
defaultValues: o,
|
|
188
188
|
// `values` prop reactively updates form when record loads
|
|
189
|
-
values: n === "update" &&
|
|
190
|
-
}),
|
|
189
|
+
values: n === "update" && d ? d : void 0
|
|
190
|
+
}), B = D(
|
|
191
191
|
() => I(e, i),
|
|
192
192
|
[e, i]
|
|
193
|
-
), h = e.getFields(),
|
|
193
|
+
), h = e.getFields(), P = q(
|
|
194
194
|
(V, m) => {
|
|
195
|
-
var
|
|
196
|
-
const
|
|
197
|
-
return (
|
|
195
|
+
var v;
|
|
196
|
+
const b = i.register(V, m);
|
|
197
|
+
return (v = h[V]) != null && v.readOnly ? { ...b, disabled: !0 } : b;
|
|
198
198
|
},
|
|
199
199
|
[i, h]
|
|
200
|
-
),
|
|
200
|
+
), N = q(
|
|
201
201
|
(V, m) => i.handleSubmit(
|
|
202
202
|
// onValid - validation passed, make API call
|
|
203
|
-
async (
|
|
203
|
+
async (b, v) => {
|
|
204
204
|
try {
|
|
205
205
|
const O = {};
|
|
206
206
|
if (n === "create")
|
|
207
|
-
for (const [
|
|
208
|
-
h[
|
|
207
|
+
for (const [M, _] of Object.entries(b))
|
|
208
|
+
h[M] && !h[M].readOnly && (O[M] = _);
|
|
209
209
|
else {
|
|
210
|
-
const
|
|
211
|
-
for (const [_,
|
|
212
|
-
h[_] && !h[_].readOnly &&
|
|
210
|
+
const M = i.formState.dirtyFields;
|
|
211
|
+
for (const [_, k] of Object.entries(b))
|
|
212
|
+
h[_] && !h[_].readOnly && M[_] && (O[_] = k);
|
|
213
213
|
}
|
|
214
|
-
let
|
|
215
|
-
n === "create" ?
|
|
214
|
+
let R;
|
|
215
|
+
n === "create" ? R = await e.create(
|
|
216
216
|
O
|
|
217
|
-
) :
|
|
217
|
+
) : R = await e.update(
|
|
218
218
|
r,
|
|
219
219
|
O
|
|
220
|
-
), V == null || V(
|
|
220
|
+
), V == null || V(R, v);
|
|
221
221
|
} catch (O) {
|
|
222
|
-
m == null || m(O,
|
|
222
|
+
m == null || m(O, v);
|
|
223
223
|
}
|
|
224
224
|
},
|
|
225
225
|
// onInvalid - validation failed
|
|
226
|
-
(
|
|
227
|
-
m == null || m(
|
|
226
|
+
(b, v) => {
|
|
227
|
+
m == null || m(b, v);
|
|
228
228
|
}
|
|
229
229
|
),
|
|
230
230
|
[i, e, n, r, h]
|
|
231
231
|
);
|
|
232
232
|
return {
|
|
233
233
|
// Item - synced with form
|
|
234
|
-
item:
|
|
234
|
+
item: B,
|
|
235
235
|
// BDO reference
|
|
236
236
|
bdo: e,
|
|
237
237
|
operation: n,
|
|
238
238
|
recordId: r,
|
|
239
239
|
// Smart register (auto-disables readonly fields)
|
|
240
|
-
register:
|
|
240
|
+
register: P,
|
|
241
241
|
// Custom handleSubmit (handles API call + filters payload)
|
|
242
|
-
handleSubmit:
|
|
242
|
+
handleSubmit: N,
|
|
243
243
|
// RHF methods (spread, but handleSubmit is overridden above)
|
|
244
244
|
watch: i.watch,
|
|
245
245
|
setValue: i.setValue,
|
|
@@ -259,7 +259,7 @@ function Q(s) {
|
|
|
259
259
|
isLoading: u,
|
|
260
260
|
isFetching: l,
|
|
261
261
|
// Error
|
|
262
|
-
loadError:
|
|
262
|
+
loadError: x
|
|
263
263
|
};
|
|
264
264
|
}
|
|
265
265
|
export {
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { useActivityTable } from './useActivityTable';
|
|
2
|
+
export { ActivityTableStatus } from './types';
|
|
3
|
+
export type { UseActivityTableOptionsType, UseActivityTableReturnType, ActivityTableStatusType, ActivityRowType, } from './types';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../sdk/workflow/components/useActivityTable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,YAAY,EACV,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACvB,eAAe,GAChB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { Activity } from '../../Activity';
|
|
2
|
+
import type { ActivityInstanceFieldsType } from '../../types';
|
|
3
|
+
import type { ExtractActivityEntity } from '../useActivityForm/types';
|
|
4
|
+
import type { ListResponseType } from '../../../types/common';
|
|
5
|
+
/**
|
|
6
|
+
* Activity table status — determines which API to call
|
|
7
|
+
*/
|
|
8
|
+
export declare const ActivityTableStatus: {
|
|
9
|
+
readonly InProgress: "inprogress";
|
|
10
|
+
readonly Completed: "completed";
|
|
11
|
+
};
|
|
12
|
+
export type ActivityTableStatusType = (typeof ActivityTableStatus)[keyof typeof ActivityTableStatus];
|
|
13
|
+
/**
|
|
14
|
+
* Row type for activity table data.
|
|
15
|
+
* Combines activity instance system fields with entity-specific fields.
|
|
16
|
+
*
|
|
17
|
+
* For a ManagerApprovalActivity with { ManagerApproved, ManagerReason }:
|
|
18
|
+
* ActivityRowType resolves to:
|
|
19
|
+
* {
|
|
20
|
+
* // System fields (ActivityInstanceFieldsType)
|
|
21
|
+
* _id: string;
|
|
22
|
+
* Status: "InProgress" | "Completed";
|
|
23
|
+
* AssignedTo: UserRefType;
|
|
24
|
+
* CompletedAt: string;
|
|
25
|
+
* // Entity fields
|
|
26
|
+
* ManagerApproved: boolean;
|
|
27
|
+
* ManagerReason: string;
|
|
28
|
+
* }
|
|
29
|
+
*/
|
|
30
|
+
export type ActivityRowType<A extends Activity<any, any, any>> = ActivityInstanceFieldsType & ExtractActivityEntity<A>;
|
|
31
|
+
export interface UseActivityTableOptionsType<A extends Activity<any, any, any>> {
|
|
32
|
+
/** Which activity instances to fetch */
|
|
33
|
+
status: ActivityTableStatusType;
|
|
34
|
+
/** Error callback */
|
|
35
|
+
onError?: (error: Error) => void;
|
|
36
|
+
/** Success callback with row data */
|
|
37
|
+
onSuccess?: (data: ActivityRowType<A>[]) => void;
|
|
38
|
+
}
|
|
39
|
+
export interface UseActivityTableReturnType<A extends Activity<any, any, any>> {
|
|
40
|
+
/** Activity instance records (system fields + entity fields) */
|
|
41
|
+
rows: ActivityRowType<A>[];
|
|
42
|
+
/** Total count from metrics endpoint */
|
|
43
|
+
totalItems: number;
|
|
44
|
+
/** Initial load in progress */
|
|
45
|
+
isLoading: boolean;
|
|
46
|
+
/** Any fetch in progress (including refetch) */
|
|
47
|
+
isFetching: boolean;
|
|
48
|
+
/** Fetch error */
|
|
49
|
+
error: Error | null;
|
|
50
|
+
/** Refetch both list and metrics */
|
|
51
|
+
refetch: () => Promise<ListResponseType<ActivityRowType<A>>>;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../sdk/workflow/components/useActivityTable/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;CAGtB,CAAC;AAEX,MAAM,MAAM,uBAAuB,GACjC,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAEjE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAC3D,0BAA0B,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAExD,MAAM,WAAW,2BAA2B,CAC1C,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAEjC,wCAAwC;IACxC,MAAM,EAAE,uBAAuB,CAAC;IAChC,qBAAqB;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,qCAAqC;IACrC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,0BAA0B,CACzC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAEjC,gEAAgE;IAChE,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,oCAAoC;IACpC,OAAO,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9D"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Activity } from '../../Activity';
|
|
2
|
+
import { type UseActivityTableOptionsType, type UseActivityTableReturnType } from './types';
|
|
3
|
+
export declare function useActivityTable<A extends Activity<any, any, any>>(activity: A, options: UseActivityTableOptionsType<A>): UseActivityTableReturnType<A>;
|
|
4
|
+
//# sourceMappingURL=useActivityTable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useActivityTable.d.ts","sourceRoot":"","sources":["../../../../sdk/workflow/components/useActivityTable/useActivityTable.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,OAAO,EAEL,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAEhC,MAAM,SAAS,CAAC;AAMjB,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAChE,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,2BAA2B,CAAC,CAAC,CAAC,GACtC,0BAA0B,CAAC,CAAC,CAAC,CAoH/B"}
|
package/dist/workflow/types.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { ListResponseType, MetricResponseType, DraftResponseType, CreateUpdateResponseType } from "../types/common";
|
|
2
|
-
import type { StringFieldType, SelectFieldType, DateTimeFieldType,
|
|
3
|
-
import type { UserRefType } from "../types/base-fields";
|
|
2
|
+
import type { StringFieldType, SelectFieldType, DateTimeFieldType, UserFieldType } from "../types/base-fields";
|
|
4
3
|
/**
|
|
5
4
|
* Response from Workflow.start()
|
|
6
5
|
*/
|
|
@@ -37,7 +36,7 @@ export interface ActivityProgressType {
|
|
|
37
36
|
export type ActivityInstanceFieldsType = {
|
|
38
37
|
_id: StringFieldType;
|
|
39
38
|
Status: SelectFieldType<"InProgress" | "Completed">;
|
|
40
|
-
AssignedTo:
|
|
39
|
+
AssignedTo: UserFieldType;
|
|
41
40
|
CompletedAt: DateTimeFieldType;
|
|
42
41
|
};
|
|
43
42
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../sdk/workflow/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../sdk/workflow/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,aAAa,EACd,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACnD,MAAM,EAAE,WAAW,GAAG,aAAa,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,GAAG,EAAE,eAAe,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC,YAAY,GAAG,WAAW,CAAC,CAAC;IACpD,UAAU,EAAE,aAAa,CAAC;IAC1B,WAAW,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC;IAGnC,oEAAoE;IACpE,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC,0BAA0B,GAAG,CAAC,CAAC,CAAC,CAAC;IAE5E,iEAAiE;IACjE,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC,0BAA0B,GAAG,CAAC,CAAC,CAAC,CAAC;IAE3E,mEAAmE;IACnE,gBAAgB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEhD,gEAAgE;IAChE,eAAe,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAI/C,qDAAqD;IACrD,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,GAAG,CAAC,CAAC,CAAC;IAElE,qDAAqD;IACrD,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAEhF,mDAAmD;IACnD,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE7E,2DAA2D;IAC3D,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAElF,4CAA4C;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAEhE,+CAA+C;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;CAC/D"}
|
package/dist/workflow.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var J=Object.defineProperty;var R=(o,t,e)=>t in o?J(o,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[t]=e;var O=(o,t,e)=>R(o,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("./client-BnVxSHAm.cjs"),U=require("./BaseField-Drp0-OxL.cjs"),f=require("react"),L=require("./index.esm-DuwT11sx.cjs"),B=require("./error-handling-CAoD0Kwb.cjs");class C{constructor(t){O(this,"bp_id");this.bp_id=t}async start(){const t=await fetch(`${l.getApiBaseUrl()}/api/app/process/${this.bp_id}/start`,{method:"POST",headers:l.getDefaultHeaders()});if(!t.ok)throw new Error(`Failed to start process: ${t.statusText}`);return(await t.json()).Data}async progress(t){const e=await fetch(`${l.getApiBaseUrl()}/api/app/process/${this.bp_id}/${t}/progress`,{method:"GET",headers:l.getDefaultHeaders()});if(!e.ok)throw new Error(`Failed to get process progress: ${e.statusText}`);return(await e.json()).Data}activity(t){const e=`/api/app/process/${this.bp_id}/${t}`;return{async inProgressList(){const r=await fetch(`${l.getApiBaseUrl()}${e}/inprogress/list`,{method:"GET",headers:l.getDefaultHeaders()});if(!r.ok)throw new Error(`Failed to list in-progress activities: ${r.statusText}`);return r.json()},async completedList(){const r=await fetch(`${l.getApiBaseUrl()}${e}/completed/list`,{method:"GET",headers:l.getDefaultHeaders()});if(!r.ok)throw new Error(`Failed to list completed activities: ${r.statusText}`);return r.json()},async inProgressMetric(){const r=await fetch(`${l.getApiBaseUrl()}${e}/inprogress/metric`,{method:"GET",headers:l.getDefaultHeaders()});if(!r.ok)throw new Error(`Failed to get in-progress activity metrics: ${r.statusText}`);return r.json()},async completedMetric(){const r=await fetch(`${l.getApiBaseUrl()}${e}/completed/metric`,{method:"GET",headers:l.getDefaultHeaders()});if(!r.ok)throw new Error(`Failed to get completed activity metrics: ${r.statusText}`);return r.json()},async read(r){const s=await fetch(`${l.getApiBaseUrl()}${e}/${r}/read`,{method:"GET",headers:l.getDefaultHeaders()});if(!s.ok)throw new Error(`Failed to read activity: ${s.statusText}`);return(await s.json()).Data},async update(r,s){const a=await fetch(`${l.getApiBaseUrl()}${e}/${r}/update`,{method:"POST",headers:l.getDefaultHeaders(),body:JSON.stringify(s)});if(!a.ok)throw new Error(`Failed to update activity: ${a.statusText}`);return a.json()},async draftStart(r,s){const a=await fetch(`${l.getApiBaseUrl()}${e}/${r}/draft`,{method:"PATCH",headers:l.getDefaultHeaders(),body:JSON.stringify(s)});if(!a.ok)throw new Error(`Failed to start draft: ${a.statusText}`);return a.json()},async draftEnd(r,s){const a=await fetch(`${l.getApiBaseUrl()}${e}/${r}/draft`,{method:"POST",headers:l.getDefaultHeaders(),body:JSON.stringify(s)});if(!a.ok)throw new Error(`Failed to end draft: ${a.statusText}`);return a.json()},async complete(r){const s=await fetch(`${l.getApiBaseUrl()}${e}/${r}/done`,{method:"POST",headers:l.getDefaultHeaders()});if(!s.ok)throw new Error(`Failed to complete activity: ${s.statusText}`);return s.json()},async progress(r){const s=await fetch(`${l.getApiBaseUrl()}${e}/${r}/progress`,{method:"GET",headers:l.getDefaultHeaders()});if(!s.ok)throw new Error(`Failed to get activity progress: ${s.statusText}`);return s.json()}}}}class P{constructor(t,e,r,s){O(this,"_id");O(this,"_data");O(this,"_ops");O(this,"_fields");O(this,"_accessorCache",new Map);this._ops=t,this._id=e,this._data={...r},this._fields=s}toJSON(){return{...this._data}}validate(){const t=[];for(const[e,r]of Object.entries(this._fields)){const s=this._data[e],a=r.validate(s);a.valid||t.push(...a.errors)}return{valid:t.length===0,errors:t}}async update(t){return this._ops.update(this._id,t)}async save(t){return this._ops.draftEnd(this._id,t)}async complete(){return this._ops.complete(this._id)}async progress(){return this._ops.progress(this._id)}_getAccessor(t){if(this._accessorCache.has(t))return this._accessorCache.get(t);const e=this._fields[t],r=(e==null?void 0:e.meta)??{_id:t,Name:t,Type:"String"},s=(e==null?void 0:e.readOnly)??!1,a=()=>e?e.validate(this._data[t]):{valid:!0,errors:[]};let i;return s?i={label:(e==null?void 0:e.label)??t,required:(e==null?void 0:e.required)??!1,readOnly:!0,defaultValue:e==null?void 0:e.defaultValue,meta:r,get:()=>this._data[t],validate:a}:i={label:(e==null?void 0:e.label)??t,required:(e==null?void 0:e.required)??!1,readOnly:!1,defaultValue:e==null?void 0:e.defaultValue,meta:r,get:()=>this._data[t],set:g=>{this._data[t]=g},validate:a},this._accessorCache.set(t,i),i}}function G(o,t,e,r){const s=new P(o,t,e,r);return new Proxy(s,{get(a,i,g){return i==="validate"||i==="toJSON"||i==="update"||i==="save"||i==="complete"||i==="progress"||i==="_ops"||i==="_data"||i==="_fields"||i==="_accessorCache"||i==="_getAccessor"||typeof i=="symbol"?Reflect.get(a,i,g):i==="_id"?a._id:a._getAccessor(i)},has(a,i){return typeof i=="symbol"?!1:i==="validate"||i==="toJSON"||i==="update"||i==="save"||i==="complete"||i==="progress"||i==="_id"?!0:i in a._fields},ownKeys(a){return[...Object.keys(a._fields),"_id","validate","toJSON","update","save","complete","progress"]},getOwnPropertyDescriptor(a,i){if(typeof i!="symbol")return{configurable:!0,enumerable:i!=="validate"&&i!=="toJSON"&&i!=="update"&&i!=="save"&&i!=="complete"&&i!=="progress"}}})}class K{constructor(){O(this,"_fieldsCache",null)}_ops(){return new C(this.meta.businessProcessId).activity(this.meta.activityId)}_discoverFields(){if(this._fieldsCache)return this._fieldsCache;const t={};for(const e of Object.keys(this)){const r=this[e];r instanceof U.BaseField&&(t[e]=r)}return this._fieldsCache=t,t}async getInProgressList(){return this._ops().inProgressList()}async getCompletedList(){return this._ops().completedList()}async inProgressMetrics(){return this._ops().inProgressMetric()}async completedMetrics(){return this._ops().completedMetric()}async getInstance(t){const e=this._ops(),r=await e.read(t),s=this._discoverFields();return G(e,t,r,s)}_getFields(){return this._discoverFields()}_getOps(){return this._ops()}}function W(o){return async(t,e,r)=>{const s={},a=o._getFields(),i=(r==null?void 0:r.names)??Object.keys(a);for(const g of i){const w=a[g];if(!w||w.readOnly)continue;const S=t[g],$=w.validate(S);!$.valid&&$.errors.length>0&&(s[g]={type:"validate",message:$.errors[0]||`${g} is invalid`})}return Object.keys(s).length===0?{values:t,errors:{}}:{values:{},errors:s}}}function z(o,t){const e=o._getFields();return new Proxy({},{get(r,s){if(typeof s=="symbol")return;if(s==="toJSON")return()=>t.getValues();if(s==="validate")return()=>t.trigger();const a=e[s],i=(a==null?void 0:a.meta)??{_id:s,Name:s,Type:"String"},g=(a==null?void 0:a.readOnly)??!1,w=()=>a?a.validate(t.getValues(s)):{valid:!0,errors:[]};return g?{label:(a==null?void 0:a.label)??s,required:(a==null?void 0:a.required)??!1,readOnly:!0,defaultValue:a==null?void 0:a.defaultValue,meta:i,get:()=>t.getValues(s),getOrDefault:$=>t.getValues(s)??$,validate:w}:{label:(a==null?void 0:a.label)??s,required:(a==null?void 0:a.required)??!1,readOnly:!1,defaultValue:a==null?void 0:a.defaultValue,meta:i,get:()=>t.getValues(s),getOrDefault:b=>t.getValues(s)??b,set:b=>{t.setValue(s,b,{shouldDirty:!0,shouldTouch:!0,shouldValidate:!1})},validate:w}},has(r,s){return typeof s=="symbol"?!1:s==="toJSON"||s==="validate"?!0:s in e},ownKeys(r){return[...Object.keys(e),"toJSON","validate"]},getOwnPropertyDescriptor(r,s){if(typeof s!="symbol")return{configurable:!0,enumerable:s!=="toJSON"&&s!=="validate"}}})}function Q(o,t){const{activity_instance_id:e,defaultValues:r={},mode:s="onBlur",enabled:a=!0}=t,[i,g]=f.useState(!1),[w,S]=f.useState(null),[$,b]=f.useState(!1),V=f.useRef(!1),j=f.useRef(null),T=f.useMemo(()=>o._getFields(),[o]),p=f.useMemo(()=>Object.keys(T).filter(d=>T[d].readOnly),[T]),x=f.useMemo(()=>W(o),[o]),n=L.useForm({mode:s,defaultValues:r,resolver:x}),E=f.useMemo(()=>z(o,n),[o,n]),v=f.useMemo(()=>o._getOps(),[o]);f.useEffect(()=>{if(!a)return;let d=!0;return(async()=>{g(!0),S(null);try{const u=await v.read(e);if(!d)return;u&&typeof u=="object"&&n.reset({...r,...u})}catch(u){if(!d)return;console.error("Failed to read activity data:",u),S(B.toError(u))}finally{d&&g(!1)}})(),()=>{d=!1}},[a,v,e]);const k=f.useCallback(async d=>{p.length!==0&&(V.current||(j.current&&clearTimeout(j.current),j.current=setTimeout(async()=>{if(!V.current){V.current=!0;try{const c=n.getValues(),u={},h=new Set(p);Object.keys(c).forEach(m=>{h.has(m)||(u[m]=c[m])});const y=await v.draftStart(e,u);y&&typeof y=="object"&&Object.entries(y).forEach(([m,_])=>{h.has(m)&&n.getValues(m)!==_&&n.setValue(m,_,{shouldDirty:!1,shouldValidate:!1})})}catch(c){console.warn("Draft computation failed:",c)}finally{V.current=!1}}},300)))},[v,p,n]),N=f.useCallback((d,c)=>{const u=T[d],h=u?u.readOnly:!1,y=c==null?void 0:c.onBlur,m=async D=>{y&&await y(D);let A=!0;s==="onBlur"||s==="onTouched"||s==="all"?A=await n.trigger(d):A=!n.getFieldState(d,n.formState).error,A&&await k(d)},_=n.register(d,{...c,onBlur:m,...h?{disabled:!0}:{}});return h?{..._,disabled:!0}:_},[n,T,k,s]),H=f.useCallback((d,c)=>n.handleSubmit(async(u,h)=>{b(!0);try{const y={},m=new Set(p);Object.keys(u).forEach(_=>{!m.has(_)&&u[_]!==void 0&&(y[_]=u[_])}),await v.update(e,y),await v.draftEnd(e,y),await(d==null?void 0:d(u,h))}catch(y){c==null||c(B.toError(y),h)}finally{b(!1)}},(u,h)=>{c==null||c(u,h)}),[n,v,p]),M=f.useCallback((d,c)=>n.handleSubmit(async(u,h)=>{b(!0);try{await v.complete(e),await(d==null?void 0:d(u,h))}catch(y){c==null||c(B.toError(y),h)}finally{b(!1)}},(u,h)=>{c==null||c(u,h)}),[n,v]),q=f.useCallback(()=>{n.clearErrors()},[n]),F=!!w;return{item:E,activity:o,register:N,handleSubmit:H,handleComplete:M,watch:n.watch,setValue:n.setValue,getValues:n.getValues,reset:n.reset,trigger:n.trigger,control:n.control,errors:n.formState.errors,isValid:n.formState.isValid,isDirty:n.formState.isDirty,isSubmitting:n.formState.isSubmitting||$,isSubmitSuccessful:n.formState.isSubmitSuccessful,isLoading:i,loadError:w,hasError:F,clearErrors:q}}exports.Activity=K;exports.ActivityInstance=P;exports.Workflow=C;exports.useActivityForm=Q;
|
|
1
|
+
"use strict";var J=Object.defineProperty;var U=(o,t,e)=>t in o?J(o,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[t]=e;var p=(o,t,e)=>U(o,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("./client-BnVxSHAm.cjs"),G=require("./BaseField-Drp0-OxL.cjs"),h=require("react"),I=require("./index.esm-DuwT11sx.cjs"),j=require("./error-handling-CAoD0Kwb.cjs"),M=require("@tanstack/react-query");class q{constructor(t){p(this,"bp_id");this.bp_id=t}async start(){const t=await fetch(`${l.getApiBaseUrl()}/api/app/process/${this.bp_id}/start`,{method:"POST",headers:l.getDefaultHeaders()});if(!t.ok)throw new Error(`Failed to start process: ${t.statusText}`);return(await t.json()).Data}async progress(t){const e=await fetch(`${l.getApiBaseUrl()}/api/app/process/${this.bp_id}/${t}/progress`,{method:"GET",headers:l.getDefaultHeaders()});if(!e.ok)throw new Error(`Failed to get process progress: ${e.statusText}`);return(await e.json()).Data}activity(t){const e=`/api/app/process/${this.bp_id}/${t}`;return{async inProgressList(){const a=await fetch(`${l.getApiBaseUrl()}${e}/inprogress/list`,{method:"GET",headers:l.getDefaultHeaders()});if(!a.ok)throw new Error(`Failed to list in-progress activities: ${a.statusText}`);return a.json()},async completedList(){const a=await fetch(`${l.getApiBaseUrl()}${e}/completed/list`,{method:"GET",headers:l.getDefaultHeaders()});if(!a.ok)throw new Error(`Failed to list completed activities: ${a.statusText}`);return a.json()},async inProgressMetric(){const a=await fetch(`${l.getApiBaseUrl()}${e}/inprogress/metric`,{method:"GET",headers:l.getDefaultHeaders()});if(!a.ok)throw new Error(`Failed to get in-progress activity metrics: ${a.statusText}`);return a.json()},async completedMetric(){const a=await fetch(`${l.getApiBaseUrl()}${e}/completed/metric`,{method:"GET",headers:l.getDefaultHeaders()});if(!a.ok)throw new Error(`Failed to get completed activity metrics: ${a.statusText}`);return a.json()},async read(a){const s=await fetch(`${l.getApiBaseUrl()}${e}/${a}/read`,{method:"GET",headers:l.getDefaultHeaders()});if(!s.ok)throw new Error(`Failed to read activity: ${s.statusText}`);return(await s.json()).Data},async update(a,s){const r=await fetch(`${l.getApiBaseUrl()}${e}/${a}/update`,{method:"POST",headers:l.getDefaultHeaders(),body:JSON.stringify(s)});if(!r.ok)throw new Error(`Failed to update activity: ${r.statusText}`);return r.json()},async draftStart(a,s){const r=await fetch(`${l.getApiBaseUrl()}${e}/${a}/draft`,{method:"PATCH",headers:l.getDefaultHeaders(),body:JSON.stringify(s)});if(!r.ok)throw new Error(`Failed to start draft: ${r.statusText}`);return r.json()},async draftEnd(a,s){const r=await fetch(`${l.getApiBaseUrl()}${e}/${a}/draft`,{method:"POST",headers:l.getDefaultHeaders(),body:JSON.stringify(s)});if(!r.ok)throw new Error(`Failed to end draft: ${r.statusText}`);return r.json()},async complete(a){const s=await fetch(`${l.getApiBaseUrl()}${e}/${a}/done`,{method:"POST",headers:l.getDefaultHeaders()});if(!s.ok)throw new Error(`Failed to complete activity: ${s.statusText}`);return s.json()},async progress(a){const s=await fetch(`${l.getApiBaseUrl()}${e}/${a}/progress`,{method:"GET",headers:l.getDefaultHeaders()});if(!s.ok)throw new Error(`Failed to get activity progress: ${s.statusText}`);return s.json()}}}}class F{constructor(t,e,a,s){p(this,"_id");p(this,"_data");p(this,"_ops");p(this,"_fields");p(this,"_accessorCache",new Map);this._ops=t,this._id=e,this._data={...a},this._fields=s}toJSON(){return{...this._data}}validate(){const t=[];for(const[e,a]of Object.entries(this._fields)){const s=this._data[e],r=a.validate(s);r.valid||t.push(...r.errors)}return{valid:t.length===0,errors:t}}async update(t){return this._ops.update(this._id,t)}async save(t){return this._ops.draftEnd(this._id,t)}async complete(){return this._ops.complete(this._id)}async progress(){return this._ops.progress(this._id)}_getAccessor(t){if(this._accessorCache.has(t))return this._accessorCache.get(t);const e=this._fields[t],a=(e==null?void 0:e.meta)??{_id:t,Name:t,Type:"String"},s=(e==null?void 0:e.readOnly)??!1,r=()=>e?e.validate(this._data[t]):{valid:!0,errors:[]};let i;return s?i={label:(e==null?void 0:e.label)??t,required:(e==null?void 0:e.required)??!1,readOnly:!0,defaultValue:e==null?void 0:e.defaultValue,meta:a,get:()=>this._data[t],validate:r}:i={label:(e==null?void 0:e.label)??t,required:(e==null?void 0:e.required)??!1,readOnly:!1,defaultValue:e==null?void 0:e.defaultValue,meta:a,get:()=>this._data[t],set:f=>{this._data[t]=f},validate:r},this._accessorCache.set(t,i),i}}function K(o,t,e,a){const s=new F(o,t,e,a);return new Proxy(s,{get(r,i,f){return i==="validate"||i==="toJSON"||i==="update"||i==="save"||i==="complete"||i==="progress"||i==="_ops"||i==="_data"||i==="_fields"||i==="_accessorCache"||i==="_getAccessor"||typeof i=="symbol"?Reflect.get(r,i,f):i==="_id"?r._id:r._getAccessor(i)},has(r,i){return typeof i=="symbol"?!1:i==="validate"||i==="toJSON"||i==="update"||i==="save"||i==="complete"||i==="progress"||i==="_id"?!0:i in r._fields},ownKeys(r){return[...Object.keys(r._fields),"_id","validate","toJSON","update","save","complete","progress"]},getOwnPropertyDescriptor(r,i){if(typeof i!="symbol")return{configurable:!0,enumerable:i!=="validate"&&i!=="toJSON"&&i!=="update"&&i!=="save"&&i!=="complete"&&i!=="progress"}}})}class Q{constructor(){p(this,"_fieldsCache",null)}_ops(){return new q(this.meta.businessProcessId).activity(this.meta.activityId)}_discoverFields(){if(this._fieldsCache)return this._fieldsCache;const t={};for(const e of Object.keys(this)){const a=this[e];a instanceof G.BaseField&&(t[e]=a)}return this._fieldsCache=t,t}async getInProgressList(){return this._ops().inProgressList()}async getCompletedList(){return this._ops().completedList()}async inProgressMetrics(){return this._ops().inProgressMetric()}async completedMetrics(){return this._ops().completedMetric()}async getInstance(t){const e=this._ops(),a=await e.read(t),s=this._discoverFields();return K(e,t,a,s)}_getFields(){return this._discoverFields()}_getOps(){return this._ops()}}function W(o){return async(t,e,a)=>{const s={},r=o._getFields(),i=(a==null?void 0:a.names)??Object.keys(r);for(const f of i){const _=r[f];if(!_||_.readOnly)continue;const V=t[f],w=_.validate(V);!w.valid&&w.errors.length>0&&(s[f]={type:"validate",message:w.errors[0]||`${f} is invalid`})}return Object.keys(s).length===0?{values:t,errors:{}}:{values:{},errors:s}}}function z(o,t){const e=o._getFields();return new Proxy({},{get(a,s){if(typeof s=="symbol")return;if(s==="toJSON")return()=>t.getValues();if(s==="validate")return()=>t.trigger();const r=e[s],i=(r==null?void 0:r.meta)??{_id:s,Name:s,Type:"String"},f=(r==null?void 0:r.readOnly)??!1,_=()=>r?r.validate(t.getValues(s)):{valid:!0,errors:[]};return f?{label:(r==null?void 0:r.label)??s,required:(r==null?void 0:r.required)??!1,readOnly:!0,defaultValue:r==null?void 0:r.defaultValue,meta:i,get:()=>t.getValues(s),getOrDefault:w=>t.getValues(s)??w,validate:_}:{label:(r==null?void 0:r.label)??s,required:(r==null?void 0:r.required)??!1,readOnly:!1,defaultValue:r==null?void 0:r.defaultValue,meta:i,get:()=>t.getValues(s),getOrDefault:v=>t.getValues(s)??v,set:v=>{t.setValue(s,v,{shouldDirty:!0,shouldTouch:!0,shouldValidate:!1})},validate:_}},has(a,s){return typeof s=="symbol"?!1:s==="toJSON"||s==="validate"?!0:s in e},ownKeys(a){return[...Object.keys(e),"toJSON","validate"]},getOwnPropertyDescriptor(a,s){if(typeof s!="symbol")return{configurable:!0,enumerable:s!=="toJSON"&&s!=="validate"}}})}function X(o,t){const{activity_instance_id:e,defaultValues:a={},mode:s="onBlur",enabled:r=!0}=t,[i,f]=h.useState(!1),[_,V]=h.useState(null),[w,v]=h.useState(!1),O=h.useRef(!1),P=h.useRef(null),A=h.useMemo(()=>o._getFields(),[o]),T=h.useMemo(()=>Object.keys(A).filter(d=>A[d].readOnly),[A]),D=h.useMemo(()=>W(o),[o]),n=I.useForm({mode:s,defaultValues:a,resolver:D}),E=h.useMemo(()=>z(o,n),[o,n]),b=h.useMemo(()=>o._getOps(),[o]);h.useEffect(()=>{if(!r)return;let d=!0;return(async()=>{f(!0),V(null);try{const u=await b.read(e);if(!d)return;u&&typeof u=="object"&&n.reset({...a,...u})}catch(u){if(!d)return;console.error("Failed to read activity data:",u),V(j.toError(u))}finally{d&&f(!1)}})(),()=>{d=!1}},[r,b,e]);const g=h.useCallback(async d=>{T.length!==0&&(O.current||(P.current&&clearTimeout(P.current),P.current=setTimeout(async()=>{if(!O.current){O.current=!0;try{const c=n.getValues(),u={},y=new Set(T);Object.keys(c).forEach($=>{y.has($)||(u[$]=c[$])});const m=await b.draftStart(e,u);m&&typeof m=="object"&&Object.entries(m).forEach(([$,S])=>{y.has($)&&n.getValues($)!==S&&n.setValue($,S,{shouldDirty:!1,shouldValidate:!1})})}catch(c){console.warn("Draft computation failed:",c)}finally{O.current=!1}}},300)))},[b,T,n]),x=h.useCallback((d,c)=>{const u=A[d],y=u?u.readOnly:!1,m=c==null?void 0:c.onBlur,$=async C=>{m&&await m(C);let k=!0;s==="onBlur"||s==="onTouched"||s==="all"?k=await n.trigger(d):k=!n.getFieldState(d,n.formState).error,k&&await g(d)},S=n.register(d,{...c,onBlur:$,...y?{disabled:!0}:{}});return y?{...S,disabled:!0}:S},[n,A,g,s]),N=h.useCallback((d,c)=>n.handleSubmit(async(u,y)=>{v(!0);try{const m={},$=new Set(T);Object.keys(u).forEach(S=>{!$.has(S)&&u[S]!==void 0&&(m[S]=u[S])}),await b.update(e,m),await b.draftEnd(e,m),await(d==null?void 0:d(u,y))}catch(m){c==null||c(j.toError(m),y)}finally{v(!1)}},(u,y)=>{c==null||c(u,y)}),[n,b,T]),L=h.useCallback((d,c)=>n.handleSubmit(async(u,y)=>{v(!0);try{await b.complete(e),await(d==null?void 0:d(u,y))}catch(m){c==null||c(j.toError(m),y)}finally{v(!1)}},(u,y)=>{c==null||c(u,y)}),[n,b]),R=h.useCallback(()=>{n.clearErrors()},[n]),H=!!_;return{item:E,activity:o,register:x,handleSubmit:N,handleComplete:L,watch:n.watch,setValue:n.setValue,getValues:n.getValues,reset:n.reset,trigger:n.trigger,control:n.control,errors:n.formState.errors,isValid:n.formState.isValid,isDirty:n.formState.isDirty,isSubmitting:n.formState.isSubmitting||w,isSubmitSuccessful:n.formState.isSubmitSuccessful,isLoading:i,loadError:_,hasError:H,clearErrors:R}}const B={InProgress:"inprogress",Completed:"completed"};function Y(o,t){const{status:e,onError:a,onSuccess:s}=t,{businessProcessId:r,activityId:i}=o.meta,{data:f,isLoading:_,isFetching:V,error:w,refetch:v}=M.useQuery({queryKey:["activity-table",r,i,e],queryFn:async()=>{try{const g=e===B.InProgress?await o.getInProgressList():await o.getCompletedList();return s&&s(g.Data),g}catch(g){throw a&&a(j.toError(g)),g}},staleTime:0,gcTime:30*1e3}),{data:O,isLoading:P,isFetching:A,error:T,refetch:D}=M.useQuery({queryKey:["activity-table-count",r,i,e],queryFn:async()=>{try{return e===B.InProgress?await o.inProgressMetrics():await o.completedMetrics()}catch(g){throw a&&a(j.toError(g)),g}},staleTime:0,gcTime:30*1e3}),n=h.useMemo(()=>(f==null?void 0:f.Data)||[],[f]),E=h.useMemo(()=>{var g;return((g=O==null?void 0:O.Data[0])==null?void 0:g.count__id)??0},[O]),b=h.useCallback(async()=>{const[g]=await Promise.all([v(),D()]);return g.data||{Data:[]}},[v,D]);return{rows:n,totalItems:E,isLoading:_||P,isFetching:V||A,error:w?j.toError(w):T?j.toError(T):null,refetch:b}}exports.Activity=Q;exports.ActivityInstance=F;exports.ActivityTableStatus=B;exports.Workflow=q;exports.useActivityForm=X;exports.useActivityTable=Y;
|
package/dist/workflow.d.ts
CHANGED
|
@@ -5,4 +5,6 @@ export type { ActivityInstanceType, EditableFieldAccessor, ReadonlyFieldAccessor
|
|
|
5
5
|
export type { ActivityInstanceFieldsType, ActivityOperations, ActivityProgressType, WorkflowStartResponseType, } from './workflow/types';
|
|
6
6
|
export { useActivityForm } from './workflow/components/useActivityForm';
|
|
7
7
|
export type { UseActivityFormOptions, UseActivityFormReturn, } from './workflow/components/useActivityForm';
|
|
8
|
+
export { useActivityTable, ActivityTableStatus } from './workflow/components/useActivityTable';
|
|
9
|
+
export type { UseActivityTableOptionsType, UseActivityTableReturnType, ActivityRowType, } from './workflow/components/useActivityTable';
|
|
8
10
|
//# sourceMappingURL=workflow.d.ts.map
|
package/dist/workflow.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../sdk/workflow.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,0BAA0B,EAC1B,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,YAAY,EACV,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,uCAAuC,CAAC"}
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../sdk/workflow.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,0BAA0B,EAC1B,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,YAAY,EACV,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC/F,YAAY,EACV,2BAA2B,EAC3B,0BAA0B,EAC1B,eAAe,GAChB,MAAM,wCAAwC,CAAC"}
|