@fluig-kit/ecm 1.0.14 → 1.0.15
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/index.cjs +1 -1
- package/dist/index.js +203 -211
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react/jsx-runtime"),l=require("react"),I=require("react-hook-form"),L=require("@hookform/resolvers"),W=require("zod"),h=require("@fluig-kit/core");var B=function(e,n){for(var t={};e.length;){var o=e[0],i=o.code,s=o.message,u=o.path.join(".");if(!t[u])if("unionErrors"in o){var a=o.unionErrors[0].errors[0];t[u]={message:a.message,type:a.code}}else t[u]={message:s,type:i};if("unionErrors"in o&&o.unionErrors.forEach(function(y){return y.errors.forEach(function(m){return e.push(m)})}),n){var c=t[u].types,r=c&&c[o.code];t[u]=I.appendErrors(u,n,t,i,r?[].concat(r,o.message):o.message)}e.shift()}return t},z=function(e,n,t){return t===void 0&&(t={}),function(o,i,s){try{return Promise.resolve(function(u,a){try{var c=Promise.resolve(e[t.mode==="sync"?"parse":"parseAsync"](o,n)).then(function(r){return s.shouldUseNativeValidation&&L.validateFieldsNatively({},s),{errors:{},values:t.raw?o:r}})}catch(r){return a(r)}return c&&c.then?c.then(void 0,a):c}(0,function(u){if(function(a){return Array.isArray(a==null?void 0:a.errors)}(u))return{values:{},errors:L.toNestErrors(B(u.errors,!s.shouldUseNativeValidation&&s.criteriaMode==="all"),s)};throw u}))}catch(u){return Promise.reject(u)}}};const j=l.createContext(null);function G({children:e,baseSchema:n}){const[t,o]=l.useState([]),i=l.useMemo(()=>n??W.z.object({}),[n]),s=l.useCallback((r,y)=>{o(m=>m.some(w=>w.id===r)?m:[...m,{id:r,schema:y}])},[]),u=l.useCallback(r=>{o(y=>y.some(m=>m.id===r)?y.filter(m=>m.id!==r):y)},[]),a=l.useMemo(()=>t.length?t.map(r=>r.schema).reduce((r,y)=>r.and(y),i):i,[t,i]),c=l.useMemo(()=>({registerSchema:s,unregisterSchema:u,mergedSchema:a}),[s,u,a]);return g.jsx(j.Provider,{value:c,children:e})}function D(){const e=l.useContext(j);if(!e)throw new Error("useSchemaRegistry deve ser usado dentro de <SchemaRegistryProvider>");return e}function N(e){return typeof e=="number"?e:isNaN(Number(e))?null:Number(e)}function M(e,n,t){if(!e)return!0;const o=Array.isArray(n)?n[0]:n,i=e.field??o,s=t==null?void 0:t[i];return e.hasValue!==void 0?e.hasValue?s!=null&&s!=="":s==null||s==="":e.equals!==void 0?s===e.equals:e.notEquals!==void 0?s!==e.notEquals:!0}function H(e,n,t,o,i){const s=new Set(e),u=new Set(n);return t==null||t.forEach(a=>{if(a.from!==void 0){const r=Array.isArray(a.from)?a.from:[a.from];if(o===null||!r.includes(o))return}if(!M(a.when,a.target,i))return;const c=Array.isArray(a.target)?a.target:[a.target];switch(a.type){case"readonly":c.forEach(r=>{u.add(r),s.delete(r)});break;case"active":c.forEach(r=>{s.add(r),u.delete(r)});break;case"hidden":c.forEach(r=>{s.delete(r),u.delete(r)});break}}),{active:Array.from(s),readonly:Array.from(u)}}function $(e,n,t,o){const i=new Set(e.active),s=new Set(e.readonly),u=new Set(e.hidden??[]);return n==null||n.forEach(a=>{if(a.from!==void 0){const r=Array.isArray(a.from)?a.from:[a.from];if(t===null||!r.includes(t))return}if(!M(a.when,a.target,o))return;const c=Array.isArray(a.target)?a.target:[a.target];switch(a.type){case"hidden":c.forEach(r=>{u.add(r),i.delete(r),s.delete(r)});break;case"active":c.forEach(r=>{i.add(r),s.delete(r),u.delete(r)});break;case"readonly":c.forEach(r=>{s.add(r),i.delete(r),u.delete(r)});break}}),{active:Array.from(i),readonly:Array.from(s),hidden:Array.from(u)}}function K(e,n){if(!(e!=null&&e.length))return n;const t=new Map(n.map(i=>[i.name,i])),o=[];return e.forEach(i=>{t.has(i)&&(o.push(t.get(i)),t.delete(i))}),t.forEach(i=>o.push(i)),o}function J(e){var o,i;const n=new Set,t=(s=[])=>{s.forEach(u=>{var a;u.target&&(Array.isArray(u.target)?u.target:[u.target]).forEach(r=>n.add(r)),(a=u.when)!=null&&a.field&&n.add(u.when.field)})};return t((o=e==null?void 0:e.fields)==null?void 0:o.rules),t((i=e==null?void 0:e.sections)==null?void 0:i.rules),Array.from(n)}function Q({activityId:e,previousActivityId:n,control:t,workflowStructure:o,sectionsRegistry:i}){const{registerSchema:s,unregisterSchema:u}=D(),a=N(e),c=N(n),r=a!==null?o[a]:null,y=l.useMemo(()=>J(r),[a,r]),m=I.useWatch({control:t,name:y,defaultValue:{}}),w=l.useMemo(()=>{const f={};return y.forEach((v,b)=>{f[v]=Array.isArray(m)?m[b]:m}),f},[m,y]),d=l.useMemo(()=>{if(!r)return{sections:[],fields:{active:[],readonly:[],hidden:[]}};const f=H(r.sections.active,r.sections.readonly,r.sections.rules,c,w);let v=[...f.readonly.map(A=>({name:A,mode:"readonly"})),...f.active.map(A=>({name:A,mode:"active"}))];v=K(r.sections.order,v);const b=$({active:r.fields.active,readonly:r.fields.readonly,hidden:r.fields.hidden},r.fields.rules,c,w);return{sections:v,fields:b}},[r,c,w,i]);return l.useEffect(()=>{const f=d.sections.filter(v=>v.mode==="active").map(v=>v.name);f.forEach(v=>{var A;const b=(A=i==null?void 0:i[v])==null?void 0:A.schema;b&&s(v,b)}),Object.keys(i??{}).filter(v=>!f.includes(v)).forEach(u)},[d.sections,i,s,u]),d}function X(){if(typeof document>"u")return{};const e={};return document.querySelectorAll("input[type='radio'][name]").forEach(n=>{const t=n,o=t.getAttribute("name");o&&t.checked&&(e[o]=t.value)}),document.querySelectorAll("input[name], textarea[name], select[name]").forEach(n=>{const t=n,o=t.getAttribute("name");if(!o||e[o]!==void 0)return;const i=t.getAttribute("value")??t.value??t.textContent??"";e[o]=String(i).trim()}),document.querySelectorAll("span[name]").forEach(n=>{var i;const t=n,o=t.getAttribute("name");if(o){const s=((i=t.textContent)==null?void 0:i.trim())??"";s!==""&&(e[o]=s)}}),e}const q=()=>typeof window>"u"?null:new URLSearchParams(window.location.search).get("edit"),Z=()=>{var e;return typeof window>"u"||!window.top?null:(e=window.top.ECM)!=null&&e.workflowView?"process":"document"},ee=()=>{var n,t;if(Z()==="process"){const o=(t=(n=window.top)==null?void 0:n.ECM)==null?void 0:t.workflowView;if(!o)return!1;const i=o.newRequest??o.isNewRequest,s=o.colleagueLogin;return i===!0||!!s&&s.trim()!==""}return q()===null},te=()=>q()==="true",_=l.createContext(null);function ne({children:e,devConfig:n}){const[t,o]=l.useState(null),i=l.useMemo(()=>X()??{},[]);return l.useEffect(()=>{let s=!0;return(async()=>{const a=typeof window<"u"&&window.location.hostname==="localhost",c=typeof window<"u"&&window.self!==window.top;let r=null;try{const f=await h.parentProxy.top.ECM.workflowView.sequence;f!=null&&(r=Number(f),n!=null&&n.showDebugLogs&&console.log("[FluigRuntime] Atividade:",r))}catch(f){console.warn("[FluigRuntime] Falha ao detectar atividade:",f)}const y=!a&&c&&!(ee()||te()),m=i.LASTACTIVITYID?Number(i.LASTACTIVITYID):null,w={isView:y,isReadOnly:y,activityId:r,previousActivityId:m,prefilledValues:i,showDebugSubmit:!1,showDebugLogs:!1,isDev:!1};let d=w;if(n!=null&&n.enabled){const f=n.isView??w.isView;d={...w,...n,isView:f,isReadOnly:f,isDev:!0,activityId:n.activityId!==void 0?n.activityId:r}}typeof window<"u"&&(window.__FLUIG_DEBUG_ENABLED__=d.showDebugLogs),d.showDebugLogs&&s&&(h.DebugLogger.header("Runtime Initialized"),h.DebugLogger.table("State",{"Detected Activity":r,"Final Activity":d.activityId,"Dev Mode":d.isDev}),h.DebugLogger.end()),s&&o(d)})(),()=>{s=!1}},[n,i]),t?g.jsx(_.Provider,{value:t,children:e}):null}function V(){const e=l.useContext(_);if(!e)throw new Error("useFluigRuntime deve ser usado dentro de <FluigRuntimeProvider>");return e}function re(e){const{activityId:n,previousActivityId:t}=V();l.useEffect(()=>{n!=null&&e.setValue("CURRENTACTIVITYID",n),t!=null&&e.setValue("LASTACTIVITYID",t)},[n,t,e]),l.useEffect(()=>{var i,s;if(typeof window>"u")return;const o=((i=window.top)==null?void 0:i.document.getElementById("send-process-button"))||((s=window.parent)==null?void 0:s.document.getElementById("workflow-actions-send"))||document.getElementById("send-process-button");if(!o){console.warn("[FluigWorkflowReact] Botão de envio do Fluig não encontrado. A validação automática pode falhar.");return}return window.beforeSendValidate=()=>(e.handleSubmit(()=>{window.top.__FLUIG_REACT_FORM_DATA__=e.getValues(),window.beforeSendValidate=()=>!0;try{o.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))}catch{o.click()}},u=>{var a,c,r;console.error("[Validation Errors]",u),(c=(a=window.top)==null?void 0:a.FLUIGC)!=null&&c.toast?(r=window.top)==null||r.FLUIGC.toast({title:"Atenção",message:"Verifique os campos obrigatórios destacados em vermelho.",type:"danger"}):alert("Verifique os campos obrigatórios.")})(),!1),()=>{}},[e])}const oe=({workflowStructure:e,sectionsRegistry:n,className:t})=>{const{control:o,handleSubmit:i,register:s,setValue:u,getValues:a}=I.useFormContext(),c=V(),r=l.useRef(!1);l.useEffect(()=>{r.current||(c.activityId!=null&&u("CURRENTACTIVITYID",c.activityId),c.previousActivityId!=null&&u("LASTACTIVITYID",c.previousActivityId),r.current=!0)},[c,u]);const{sections:y,fields:m}=Q({control:o,activityId:c.activityId,previousActivityId:c.previousActivityId,workflowStructure:e,sectionsRegistry:n}),w=d=>{console.log("✅ [FluigWorkflowForm] Dados válidos:",d)};return g.jsxs("form",{id:"fluig-react-form",className:t,onSubmit:i(w),noValidate:!0,children:[g.jsxs("div",{className:"hidden",style:{display:"none"},children:[g.jsx("input",{type:"hidden",...s("CURRENTACTIVITYID")}),g.jsx("input",{type:"hidden",...s("LASTACTIVITYID")})]}),y.length===0&&c.activityId!==null&&g.jsxs("p",{children:["Não foi possível encontrar a atividade: ",String(c.activityId)]}),y.map(({name:d,mode:f})=>{if(f==="hidden")return null;const v=n[d];if(!v)return null;const b=v.Component;return g.jsx(b,{id:d,fields:m,readOnly:f==="readonly"},d)}),c.isDev&&c.showDebugSubmit&&g.jsx("div",{style:{width:"100%",padding:"16px",paddingTop:"0"},children:g.jsx("button",{type:"submit",className:"btn btn-primary btn-lg btn-block",children:"Submit (Debug)"})})]})},ie=e=>{const{mergedSchema:n}=D(),t=V(),o=I.useForm({resolver:n?z(n):void 0,defaultValues:t.prefilledValues,mode:"onBlur"});return re(o),l.useEffect(()=>{t.showDebugLogs&&(h.DebugLogger.header("Form Initialized"),h.DebugLogger.table("Prefilled Values (DOM Capture)",t.prefilledValues),h.DebugLogger.info("RHF Current Values",o.getValues()),h.DebugLogger.end())},[t.showDebugLogs,t.prefilledValues,o]),g.jsx(I.FormProvider,{...o,children:g.jsx(oe,{...e})})};async function se(e){if(!e)return console.warn("[setFluigNextActivity] Nenhuma atividade informada."),!1;const{wfView:n,wkfView:t}=await ae();if(!n||!t)return!1;ue(n);const o=Number(e),i=ce(n,o);return i?(le(n,t,i,o),console.log(`[setFluigNextActivity] Próxima atividade definida: ${o}`),!0):(console.warn(`[setFluigNextActivity] Estado ${o} não encontrado nas próximas atividades disponíveis.`),console.log("Estados disponíveis:",n.availableStatesCOPY||n.availableStates),!1)}async function ae(){const e=await h.parentProxy.top.ECM.workflowView,n=await h.parentProxy.top.ECM_WKFView;return!e||!n?(console.warn("[setFluigNextActivity] Contexto Fluig inválido ou não carregado."),{}):{wfView:e,wkfView:n}}function ue(e){e.availableStatesCOPY||(e.availableStatesCOPY=e.availableStates)}function ce(e,n){const t=e.availableStatesCOPY||e.availableStates;return t==null?void 0:t.find(o=>o.sequence===n)}function le(e,n,t,o){e.availableUsers.users=[],e.availableStates=[t],n.selectActivity=()=>o}const O=l.createContext(null);function de(){const e=l.useContext(O);if(!e)throw new Error("useSection deve ser usado dentro de um componente <Section>");return e}function fe({id:e,className:n,schema:t,children:o,form:i,prefilledValues:s,readOnly:u,fields:a={},hidden:c=!1}){const{isView:r,activityId:y}=V(),m=y,w=I.useFormContext(),d=i||w;if(!d)return console.error(`[FluigWorkflowReact] Section "${e}" não encontrou o 'form'.`),null;if(c)return null;const f=l.useCallback(p=>{var E,x,C;return(E=a.hidden)!=null&&E.includes(p)?"hidden":(x=a.readonly)!=null&&x.includes(p)?"readonly":(C=a.active)!=null&&C.includes(p)?"active":u?"readonly":"active"},[a,u]),v=l.useCallback(p=>f(p)==="hidden",[f]),b=l.useCallback(p=>f(p)==="readonly",[f]),A=l.useCallback(p=>{if(!p)return;const E=d.getValues("CURRENTACTIVITYID");d.setValue("LASTACTIVITYID",E),d.setValue("CURRENTACTIVITYID",m),se(Number(p))},[d,m]);l.useEffect(()=>{if(!r||!s||!t||!d)return;const p=d.getValues(),E=t.shape;E&&Object.entries(E).forEach(([x,C])=>{var P,T;let S=C;for(;(P=S==null?void 0:S._def)!=null&&P.schema;)S=S._def.schema;const F=(T=S==null?void 0:S._def)==null?void 0:T.fluig;if((F==null?void 0:F.type)!=="options"||!Array.isArray(F.values)||p[x]!==void 0)return;const R={};F.values.forEach(k=>{R[k]=s[k]==="on"}),d.setValue(x,R,{shouldDirty:!1,shouldValidate:!1})})},[r,s,t,d]);const U=l.useMemo(()=>({id:e,form:d,isHidden:v,isReadOnly:b,isView:r,next:A,wf_activity_id:m}),[e,d,v,b,r,A,m]);return g.jsx(O.Provider,{value:U,children:g.jsx("section",{id:e,className:[e,n].filter(Boolean).join(" "),children:o})})}const Y=l.createContext(null);function me({children:e,config:n}){const t=l.useMemo(()=>h.createFluigClient(n),[n]);return g.jsx(Y.Provider,{value:t,children:e})}function ye(){const e=l.useContext(Y);if(!e)throw new Error("useFluigApi deve ser usado dentro de um <FluigApiProvider>");return e}Object.defineProperty(exports,"DebugLogger",{enumerable:!0,get:()=>h.DebugLogger});Object.defineProperty(exports,"createFluigClient",{enumerable:!0,get:()=>h.createFluigClient});Object.defineProperty(exports,"parentProxy",{enumerable:!0,get:()=>h.parentProxy});exports.FluigApiProvider=me;exports.FluigRuntimeProvider=ne;exports.FluigWorkflowForm=ie;exports.SchemaRegistryProvider=G;exports.Section=fe;exports.useFluigApi=ye;exports.useFluigRuntime=V;exports.useSchemaRegistry=D;exports.useSection=de;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react/jsx-runtime"),l=require("react"),E=require("react-hook-form"),N=require("@hookform/resolvers"),W=require("zod"),A=require("@fluig-kit/core");var _=function(e,r){for(var t={};e.length;){var o=e[0],i=o.code,s=o.message,c=o.path.join(".");if(!t[c])if("unionErrors"in o){var a=o.unionErrors[0].errors[0];t[c]={message:a.message,type:a.code}}else t[c]={message:s,type:i};if("unionErrors"in o&&o.unionErrors.forEach(function(y){return y.errors.forEach(function(d){return e.push(d)})}),r){var u=t[c].types,n=u&&u[o.code];t[c]=E.appendErrors(c,r,t,i,n?[].concat(n,o.message):o.message)}e.shift()}return t},B=function(e,r,t){return t===void 0&&(t={}),function(o,i,s){try{return Promise.resolve(function(c,a){try{var u=Promise.resolve(e[t.mode==="sync"?"parse":"parseAsync"](o,r)).then(function(n){return s.shouldUseNativeValidation&&N.validateFieldsNatively({},s),{errors:{},values:t.raw?o:n}})}catch(n){return a(n)}return u&&u.then?u.then(void 0,a):u}(0,function(c){if(function(a){return Array.isArray(a==null?void 0:a.errors)}(c))return{values:{},errors:N.toNestErrors(_(c.errors,!s.shouldUseNativeValidation&&s.criteriaMode==="all"),s)};throw c}))}catch(c){return Promise.reject(c)}}};const M=l.createContext(null);function G({children:e,baseSchema:r}){const[t,o]=l.useState([]),i=l.useMemo(()=>r??W.z.object({}),[r]),s=l.useCallback((n,y)=>{o(d=>d.some(b=>b.id===n)?d:[...d,{id:n,schema:y}])},[]),c=l.useCallback(n=>{o(y=>y.some(d=>d.id===n)?y.filter(d=>d.id!==n):y)},[]),a=l.useMemo(()=>t.length?t.map(n=>n.schema).reduce((n,y)=>n.and(y),i):i,[t,i]),u=l.useMemo(()=>({registerSchema:s,unregisterSchema:c,mergedSchema:a}),[s,c,a]);return g.jsx(M.Provider,{value:u,children:e})}function P(){const e=l.useContext(M);if(!e)throw new Error("useSchemaRegistry deve ser usado dentro de <SchemaRegistryProvider>");return e}function j(e){return typeof e=="number"?e:isNaN(Number(e))?null:Number(e)}function L(e,r,t){if(!e)return!0;const o=Array.isArray(r)?r[0]:r,i=e.field??o,s=t==null?void 0:t[i];return e.hasValue!==void 0?e.hasValue?s!=null&&s!=="":s==null||s==="":e.equals!==void 0?s===e.equals:e.notEquals!==void 0?s!==e.notEquals:!0}function z(e,r,t,o,i){const s=new Set(e),c=new Set(r);return t==null||t.forEach(a=>{if(a.from!==void 0){const n=Array.isArray(a.from)?a.from:[a.from];if(o===null||!n.includes(o))return}if(!L(a.when,a.target,i))return;const u=Array.isArray(a.target)?a.target:[a.target];switch(a.type){case"readonly":u.forEach(n=>{c.add(n),s.delete(n)});break;case"active":u.forEach(n=>{s.add(n),c.delete(n)});break;case"hidden":u.forEach(n=>{s.delete(n),c.delete(n)});break}}),{active:Array.from(s),readonly:Array.from(c)}}function H(e,r,t,o){const i=new Set(e.active),s=new Set(e.readonly),c=new Set(e.hidden??[]);return r==null||r.forEach(a=>{if(a.from!==void 0){const n=Array.isArray(a.from)?a.from:[a.from];if(t===null||!n.includes(t))return}if(!L(a.when,a.target,o))return;const u=Array.isArray(a.target)?a.target:[a.target];switch(a.type){case"hidden":u.forEach(n=>{c.add(n),i.delete(n),s.delete(n)});break;case"active":u.forEach(n=>{i.add(n),s.delete(n),c.delete(n)});break;case"readonly":u.forEach(n=>{s.add(n),i.delete(n),c.delete(n)});break}}),{active:Array.from(i),readonly:Array.from(s),hidden:Array.from(c)}}function $(e,r){if(!(e!=null&&e.length))return r;const t=new Map(r.map(i=>[i.name,i])),o=[];return e.forEach(i=>{t.has(i)&&(o.push(t.get(i)),t.delete(i))}),t.forEach(i=>o.push(i)),o}function K(e){var o,i;const r=new Set,t=(s=[])=>{s.forEach(c=>{var a;c.target&&(Array.isArray(c.target)?c.target:[c.target]).forEach(n=>r.add(n)),(a=c.when)!=null&&a.field&&r.add(c.when.field)})};return t((o=e==null?void 0:e.fields)==null?void 0:o.rules),t((i=e==null?void 0:e.sections)==null?void 0:i.rules),Array.from(r)}function J({activityId:e,previousActivityId:r,control:t,workflowStructure:o,sectionsRegistry:i}){const{registerSchema:s,unregisterSchema:c}=P(),a=j(e),u=j(r),n=a!==null?o[a]:null,y=l.useMemo(()=>K(n),[a,n]),d=E.useWatch({control:t,name:y,defaultValue:{}}),b=l.useMemo(()=>{const v={};return y.forEach((m,w)=>{v[m]=Array.isArray(d)?d[w]:d}),v},[d,y]),f=l.useMemo(()=>{if(!n)return{sections:[],fields:{active:[],readonly:[],hidden:[]}};const v=z(n.sections.active,n.sections.readonly,n.sections.rules,u,b);let m=[...v.readonly.map(h=>({name:h,mode:"readonly"})),...v.active.map(h=>({name:h,mode:"active"}))];m=$(n.sections.order,m);const w=H({active:n.fields.active,readonly:n.fields.readonly,hidden:n.fields.hidden},n.fields.rules,u,b);return{sections:m,fields:w}},[n,u,b,i]);return l.useEffect(()=>{const v=f.sections.filter(m=>m.mode==="active").map(m=>m.name);v.forEach(m=>{var h;const w=(h=i==null?void 0:i[m])==null?void 0:h.schema;w&&s(m,w)}),Object.keys(i??{}).filter(m=>!v.includes(m)).forEach(c)},[f.sections,i,s,c]),f}function Q(){if(typeof document>"u")return{};const e={};return document.querySelectorAll("input[type='radio'][name]").forEach(r=>{const t=r,o=t.getAttribute("name");o&&t.checked&&(e[o]=t.value)}),document.querySelectorAll("input[name], textarea[name], select[name]").forEach(r=>{const t=r,o=t.getAttribute("name");if(!o||e[o]!==void 0)return;const i=t.getAttribute("value")??t.value??t.textContent??"";e[o]=String(i).trim()}),document.querySelectorAll("span[name]").forEach(r=>{var i;const t=r,o=t.getAttribute("name");if(o){const s=((i=t.textContent)==null?void 0:i.trim())??"";s!==""&&(e[o]=s)}}),e}const X=()=>{var d;const e={isCreation:!1,isEdit:!1,isView:!0};if(typeof window>"u"||!window.top)return e;const r=new URLSearchParams(window.location.search),t=window.top,o=window.top.document,i=((d=t.ECM)==null?void 0:d.workflowView)||t.ECM_WKFView,s=(i==null?void 0:i.newRequest)===!0||(i==null?void 0:i.isNewRequest)===!0,c=r.get("edit")==="true"||r.get("mode")==="edit",a=r.has("taskUserId"),u=r.get("view")==="true"||r.get("publicView")==="true",n=!!o.getElementById("sendModal")||!!o.querySelector(".fluig-style-guide.modal-dialog"),y=s||c||a&&!u&&n;return{isCreation:s,isEdit:y,isView:!y}},q=l.createContext(null);function Z({children:e,devConfig:r}){const[t,o]=l.useState(null),i=l.useMemo(()=>Q()??{},[]);return l.useEffect(()=>{let s=!0;const c=async()=>{let u=(t==null?void 0:t.activityId)??null;try{const h=await A.parentProxy.top.ECM.workflowView.sequence;h!=null&&(u=Number(h))}catch{}const{isEdit:n,isView:y}=X(),d=typeof window<"u"&&window.location.hostname==="localhost",b=typeof window<"u"&&window.self!==window.top,f=!d&&b?y:!1,v=i.LASTACTIVITYID?Number(i.LASTACTIVITYID):null,m={isView:f,isReadOnly:f,activityId:u,previousActivityId:v,prefilledValues:i,showDebugSubmit:(r==null?void 0:r.showDebugSubmit)??!1,showDebugLogs:(r==null?void 0:r.showDebugLogs)??!1,isDev:!1};let w=m;if(r!=null&&r.enabled){const h=r.isView??m.isView;w={...m,...r,isView:h,isReadOnly:h,isDev:!0,activityId:r.activityId??u}}s&&o(h=>h&&h.isView===w.isView&&h.activityId===w.activityId?h:w),r!=null&&r.showDebugLogs&&n&&console.log("[FluigRuntime] Modo Edição Detectado via Modal/URL")};c();const a=setInterval(c,800);return()=>{s=!1,clearInterval(a)}},[r,i]),t?g.jsx(q.Provider,{value:t,children:e}):null}function F(){const e=l.useContext(q);if(!e)throw new Error("useFluigRuntime deve ser usado dentro de <FluigRuntimeProvider>");return e}function ee(e){const{activityId:r,previousActivityId:t}=F();l.useEffect(()=>{r!=null&&e.setValue("CURRENTACTIVITYID",r),t!=null&&e.setValue("LASTACTIVITYID",t)},[r,t,e]),l.useEffect(()=>{var i,s;if(typeof window>"u")return;const o=((i=window.top)==null?void 0:i.document.getElementById("send-process-button"))||((s=window.parent)==null?void 0:s.document.getElementById("workflow-actions-send"))||document.getElementById("send-process-button");if(!o){console.warn("[FluigWorkflowReact] Botão de envio do Fluig não encontrado. A validação automática pode falhar.");return}return window.beforeSendValidate=()=>(e.handleSubmit(()=>{window.top.__FLUIG_REACT_FORM_DATA__=e.getValues(),window.beforeSendValidate=()=>!0;try{o.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))}catch{o.click()}},c=>{var a,u,n;console.error("[Validation Errors]",c),(u=(a=window.top)==null?void 0:a.FLUIGC)!=null&&u.toast?(n=window.top)==null||n.FLUIGC.toast({title:"Atenção",message:"Verifique os campos obrigatórios destacados em vermelho.",type:"danger"}):alert("Verifique os campos obrigatórios.")})(),!1),()=>{}},[e])}const te=({workflowStructure:e,sectionsRegistry:r,className:t})=>{const{control:o,handleSubmit:i,register:s,setValue:c,getValues:a}=E.useFormContext(),u=F(),n=l.useRef(!1);l.useEffect(()=>{n.current||(u.activityId!=null&&c("CURRENTACTIVITYID",u.activityId),u.previousActivityId!=null&&c("LASTACTIVITYID",u.previousActivityId),n.current=!0)},[u,c]);const{sections:y,fields:d}=J({control:o,activityId:u.activityId,previousActivityId:u.previousActivityId,workflowStructure:e,sectionsRegistry:r}),b=f=>{console.log("✅ [FluigWorkflowForm] Dados válidos:",f)};return g.jsxs("form",{id:"fluig-react-form",className:t,onSubmit:i(b),noValidate:!0,children:[g.jsxs("div",{className:"hidden",style:{display:"none"},children:[g.jsx("input",{type:"hidden",...s("CURRENTACTIVITYID")}),g.jsx("input",{type:"hidden",...s("LASTACTIVITYID")})]}),y.length===0&&u.activityId!==null&&g.jsxs("p",{children:["Não foi possível encontrar a atividade: ",String(u.activityId)]}),y.map(({name:f,mode:v})=>{if(v==="hidden")return null;const m=r[f];if(!m)return null;const w=m.Component;return g.jsx(w,{id:f,fields:d,readOnly:v==="readonly"},f)}),u.isDev&&u.showDebugSubmit&&g.jsx("div",{style:{width:"100%",padding:"16px",paddingTop:"0"},children:g.jsx("button",{type:"submit",className:"btn btn-primary btn-lg btn-block",children:"Submit (Debug)"})})]})},re=e=>{const{mergedSchema:r}=P(),t=F(),o=E.useForm({resolver:r?B(r):void 0,defaultValues:t.prefilledValues,mode:"onBlur"});return ee(o),l.useEffect(()=>{t.showDebugLogs&&(A.DebugLogger.header("Form Initialized"),A.DebugLogger.table("Prefilled Values (DOM Capture)",t.prefilledValues),A.DebugLogger.info("RHF Current Values",o.getValues()),A.DebugLogger.end())},[t.showDebugLogs,t.prefilledValues,o]),g.jsx(E.FormProvider,{...o,children:g.jsx(te,{...e})})};async function ne(e){if(!e)return console.warn("[setFluigNextActivity] Nenhuma atividade informada."),!1;const{wfView:r,wkfView:t}=await oe();if(!r||!t)return!1;ie(r);const o=Number(e),i=se(r,o);return i?(ae(r,t,i,o),console.log(`[setFluigNextActivity] Próxima atividade definida: ${o}`),!0):(console.warn(`[setFluigNextActivity] Estado ${o} não encontrado nas próximas atividades disponíveis.`),console.log("Estados disponíveis:",r.availableStatesCOPY||r.availableStates),!1)}async function oe(){const e=await A.parentProxy.top.ECM.workflowView,r=await A.parentProxy.top.ECM_WKFView;return!e||!r?(console.warn("[setFluigNextActivity] Contexto Fluig inválido ou não carregado."),{}):{wfView:e,wkfView:r}}function ie(e){e.availableStatesCOPY||(e.availableStatesCOPY=e.availableStates)}function se(e,r){const t=e.availableStatesCOPY||e.availableStates;return t==null?void 0:t.find(o=>o.sequence===r)}function ae(e,r,t,o){e.availableUsers.users=[],e.availableStates=[t],r.selectActivity=()=>o}const O=l.createContext(null);function ce(){const e=l.useContext(O);if(!e)throw new Error("useSection deve ser usado dentro de um componente <Section>");return e}function ue({id:e,className:r,schema:t,children:o,form:i,prefilledValues:s,readOnly:c,fields:a={},hidden:u=!1}){const{isView:n,activityId:y}=F(),d=y,b=E.useFormContext(),f=i||b;if(!f)return console.error(`[FluigWorkflowReact] Section "${e}" não encontrou o 'form'.`),null;if(u)return null;const v=l.useCallback(p=>{var I,V,C;return(I=a.hidden)!=null&&I.includes(p)?"hidden":(V=a.readonly)!=null&&V.includes(p)?"readonly":(C=a.active)!=null&&C.includes(p)?"active":c?"readonly":"active"},[a,c]),m=l.useCallback(p=>v(p)==="hidden",[v]),w=l.useCallback(p=>v(p)==="readonly",[v]),h=l.useCallback(p=>{if(!p)return;const I=f.getValues("CURRENTACTIVITYID");f.setValue("LASTACTIVITYID",I),f.setValue("CURRENTACTIVITYID",d),ne(Number(p))},[f,d]);l.useEffect(()=>{if(!n||!s||!t||!f)return;const p=f.getValues(),I=t.shape;I&&Object.entries(I).forEach(([V,C])=>{var D,k;let S=C;for(;(D=S==null?void 0:S._def)!=null&&D.schema;)S=S._def.schema;const x=(k=S==null?void 0:S._def)==null?void 0:k.fluig;if((x==null?void 0:x.type)!=="options"||!Array.isArray(x.values)||p[V]!==void 0)return;const T={};x.values.forEach(R=>{T[R]=s[R]==="on"}),f.setValue(V,T,{shouldDirty:!1,shouldValidate:!1})})},[n,s,t,f]);const Y=l.useMemo(()=>({id:e,form:f,isHidden:m,isReadOnly:w,isView:n,next:h,wf_activity_id:d}),[e,f,m,w,n,h,d]);return g.jsx(O.Provider,{value:Y,children:g.jsx("section",{id:e,className:[e,r].filter(Boolean).join(" "),children:o})})}const U=l.createContext(null);function le({children:e,config:r}){const t=l.useMemo(()=>A.createFluigClient(r),[r]);return g.jsx(U.Provider,{value:t,children:e})}function de(){const e=l.useContext(U);if(!e)throw new Error("useFluigApi deve ser usado dentro de um <FluigApiProvider>");return e}Object.defineProperty(exports,"DebugLogger",{enumerable:!0,get:()=>A.DebugLogger});Object.defineProperty(exports,"createFluigClient",{enumerable:!0,get:()=>A.createFluigClient});Object.defineProperty(exports,"parentProxy",{enumerable:!0,get:()=>A.parentProxy});exports.FluigApiProvider=le;exports.FluigRuntimeProvider=Z;exports.FluigWorkflowForm=re;exports.SchemaRegistryProvider=G;exports.Section=ue;exports.useFluigApi=de;exports.useFluigRuntime=F;exports.useSchemaRegistry=P;exports.useSection=ce;
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { createContext as
|
|
3
|
-
import { appendErrors as
|
|
4
|
-
import { validateFieldsNatively as
|
|
5
|
-
import { z as
|
|
6
|
-
import { parentProxy as
|
|
7
|
-
import { DebugLogger as
|
|
8
|
-
var
|
|
1
|
+
import { jsx as p, jsxs as P } from "react/jsx-runtime";
|
|
2
|
+
import { createContext as D, useState as U, useMemo as b, useCallback as V, useContext as N, useEffect as I, useRef as H } from "react";
|
|
3
|
+
import { appendErrors as K, useWatch as J, useForm as Q, FormProvider as X, useFormContext as Y } from "react-hook-form";
|
|
4
|
+
import { validateFieldsNatively as Z, toNestErrors as ee } from "@hookform/resolvers";
|
|
5
|
+
import { z as te } from "zod";
|
|
6
|
+
import { parentProxy as k, DebugLogger as x, createFluigClient as ne } from "@fluig-kit/core";
|
|
7
|
+
import { DebugLogger as Ce, createFluigClient as Le, parentProxy as Me } from "@fluig-kit/core";
|
|
8
|
+
var re = function(e, n) {
|
|
9
9
|
for (var t = {}; e.length; ) {
|
|
10
10
|
var o = e[0], i = o.code, a = o.message, c = o.path.join(".");
|
|
11
11
|
if (!t[c]) if ("unionErrors" in o) {
|
|
@@ -13,23 +13,23 @@ var oe = function(e, n) {
|
|
|
13
13
|
t[c] = { message: s.message, type: s.code };
|
|
14
14
|
} else t[c] = { message: a, type: i };
|
|
15
15
|
if ("unionErrors" in o && o.unionErrors.forEach(function(m) {
|
|
16
|
-
return m.errors.forEach(function(
|
|
17
|
-
return e.push(
|
|
16
|
+
return m.errors.forEach(function(l) {
|
|
17
|
+
return e.push(l);
|
|
18
18
|
});
|
|
19
19
|
}), n) {
|
|
20
20
|
var u = t[c].types, r = u && u[o.code];
|
|
21
|
-
t[c] =
|
|
21
|
+
t[c] = K(c, n, t, i, r ? [].concat(r, o.message) : o.message);
|
|
22
22
|
}
|
|
23
23
|
e.shift();
|
|
24
24
|
}
|
|
25
25
|
return t;
|
|
26
|
-
},
|
|
26
|
+
}, oe = function(e, n, t) {
|
|
27
27
|
return t === void 0 && (t = {}), function(o, i, a) {
|
|
28
28
|
try {
|
|
29
29
|
return Promise.resolve(function(c, s) {
|
|
30
30
|
try {
|
|
31
31
|
var u = Promise.resolve(e[t.mode === "sync" ? "parse" : "parseAsync"](o, n)).then(function(r) {
|
|
32
|
-
return a.shouldUseNativeValidation &&
|
|
32
|
+
return a.shouldUseNativeValidation && Z({}, a), { errors: {}, values: t.raw ? o : r };
|
|
33
33
|
});
|
|
34
34
|
} catch (r) {
|
|
35
35
|
return s(r);
|
|
@@ -38,7 +38,7 @@ var oe = function(e, n) {
|
|
|
38
38
|
}(0, function(c) {
|
|
39
39
|
if (function(s) {
|
|
40
40
|
return Array.isArray(s == null ? void 0 : s.errors);
|
|
41
|
-
}(c)) return { values: {}, errors:
|
|
41
|
+
}(c)) return { values: {}, errors: ee(re(c.errors, !a.shouldUseNativeValidation && a.criteriaMode === "all"), a) };
|
|
42
42
|
throw c;
|
|
43
43
|
}));
|
|
44
44
|
} catch (c) {
|
|
@@ -46,18 +46,18 @@ var oe = function(e, n) {
|
|
|
46
46
|
}
|
|
47
47
|
};
|
|
48
48
|
};
|
|
49
|
-
const
|
|
49
|
+
const _ = D(
|
|
50
50
|
null
|
|
51
51
|
);
|
|
52
|
-
function
|
|
52
|
+
function Ee({
|
|
53
53
|
children: e,
|
|
54
54
|
baseSchema: n
|
|
55
55
|
}) {
|
|
56
|
-
const [t, o] =
|
|
57
|
-
o((
|
|
56
|
+
const [t, o] = U([]), i = b(() => n ?? te.object({}), [n]), a = V((r, m) => {
|
|
57
|
+
o((l) => l.some((g) => g.id === r) ? l : [...l, { id: r, schema: m }]);
|
|
58
58
|
}, []), c = V((r) => {
|
|
59
|
-
o((m) => m.some((
|
|
60
|
-
}, []), s =
|
|
59
|
+
o((m) => m.some((l) => l.id === r) ? m.filter((l) => l.id !== r) : m);
|
|
60
|
+
}, []), s = b(() => t.length ? t.map((r) => r.schema).reduce((r, m) => r.and(m), i) : i, [t, i]), u = b(
|
|
61
61
|
() => ({
|
|
62
62
|
registerSchema: a,
|
|
63
63
|
unregisterSchema: c,
|
|
@@ -65,32 +65,32 @@ function Te({
|
|
|
65
65
|
}),
|
|
66
66
|
[a, c, s]
|
|
67
67
|
);
|
|
68
|
-
return /* @__PURE__ */
|
|
68
|
+
return /* @__PURE__ */ p(_.Provider, { value: u, children: e });
|
|
69
69
|
}
|
|
70
70
|
function W() {
|
|
71
|
-
const e =
|
|
71
|
+
const e = N(_);
|
|
72
72
|
if (!e)
|
|
73
73
|
throw new Error(
|
|
74
74
|
"useSchemaRegistry deve ser usado dentro de <SchemaRegistryProvider>"
|
|
75
75
|
);
|
|
76
76
|
return e;
|
|
77
77
|
}
|
|
78
|
-
function
|
|
78
|
+
function O(e) {
|
|
79
79
|
return typeof e == "number" ? e : isNaN(Number(e)) ? null : Number(e);
|
|
80
80
|
}
|
|
81
|
-
function
|
|
81
|
+
function j(e, n, t) {
|
|
82
82
|
if (!e) return !0;
|
|
83
83
|
const o = Array.isArray(n) ? n[0] : n, i = e.field ?? o, a = t == null ? void 0 : t[i];
|
|
84
84
|
return e.hasValue !== void 0 ? e.hasValue ? a != null && a !== "" : a == null || a === "" : e.equals !== void 0 ? a === e.equals : e.notEquals !== void 0 ? a !== e.notEquals : !0;
|
|
85
85
|
}
|
|
86
|
-
function
|
|
86
|
+
function ie(e, n, t, o, i) {
|
|
87
87
|
const a = new Set(e), c = new Set(n);
|
|
88
88
|
return t == null || t.forEach((s) => {
|
|
89
89
|
if (s.from !== void 0) {
|
|
90
90
|
const r = Array.isArray(s.from) ? s.from : [s.from];
|
|
91
91
|
if (o === null || !r.includes(o)) return;
|
|
92
92
|
}
|
|
93
|
-
if (!
|
|
93
|
+
if (!j(s.when, s.target, i)) return;
|
|
94
94
|
const u = Array.isArray(s.target) ? s.target : [s.target];
|
|
95
95
|
switch (s.type) {
|
|
96
96
|
case "readonly":
|
|
@@ -111,14 +111,14 @@ function ae(e, n, t, o, i) {
|
|
|
111
111
|
}
|
|
112
112
|
}), { active: Array.from(a), readonly: Array.from(c) };
|
|
113
113
|
}
|
|
114
|
-
function
|
|
114
|
+
function ae(e, n, t, o) {
|
|
115
115
|
const i = new Set(e.active), a = new Set(e.readonly), c = new Set(e.hidden ?? []);
|
|
116
116
|
return n == null || n.forEach((s) => {
|
|
117
117
|
if (s.from !== void 0) {
|
|
118
118
|
const r = Array.isArray(s.from) ? s.from : [s.from];
|
|
119
119
|
if (t === null || !r.includes(t)) return;
|
|
120
120
|
}
|
|
121
|
-
if (!
|
|
121
|
+
if (!j(s.when, s.target, o)) return;
|
|
122
122
|
const u = Array.isArray(s.target) ? s.target : [s.target];
|
|
123
123
|
switch (s.type) {
|
|
124
124
|
case "hidden":
|
|
@@ -143,14 +143,14 @@ function se(e, n, t, o) {
|
|
|
143
143
|
hidden: Array.from(c)
|
|
144
144
|
};
|
|
145
145
|
}
|
|
146
|
-
function
|
|
146
|
+
function se(e, n) {
|
|
147
147
|
if (!(e != null && e.length)) return n;
|
|
148
148
|
const t = new Map(n.map((i) => [i.name, i])), o = [];
|
|
149
149
|
return e.forEach((i) => {
|
|
150
150
|
t.has(i) && (o.push(t.get(i)), t.delete(i));
|
|
151
151
|
}), t.forEach((i) => o.push(i)), o;
|
|
152
152
|
}
|
|
153
|
-
function
|
|
153
|
+
function ce(e) {
|
|
154
154
|
var o, i;
|
|
155
155
|
const n = /* @__PURE__ */ new Set(), t = (a = []) => {
|
|
156
156
|
a.forEach((c) => {
|
|
@@ -160,47 +160,47 @@ function ue(e) {
|
|
|
160
160
|
};
|
|
161
161
|
return t((o = e == null ? void 0 : e.fields) == null ? void 0 : o.rules), t((i = e == null ? void 0 : e.sections) == null ? void 0 : i.rules), Array.from(n);
|
|
162
162
|
}
|
|
163
|
-
function
|
|
163
|
+
function ue({
|
|
164
164
|
activityId: e,
|
|
165
165
|
previousActivityId: n,
|
|
166
166
|
control: t,
|
|
167
167
|
workflowStructure: o,
|
|
168
168
|
sectionsRegistry: i
|
|
169
169
|
}) {
|
|
170
|
-
const { registerSchema: a, unregisterSchema: c } = W(), s =
|
|
170
|
+
const { registerSchema: a, unregisterSchema: c } = W(), s = O(e), u = O(n), r = s !== null ? o[s] : null, m = b(() => ce(r), [s, r]), l = J({
|
|
171
171
|
control: t,
|
|
172
172
|
name: m,
|
|
173
173
|
defaultValue: {}
|
|
174
|
-
}),
|
|
175
|
-
const
|
|
176
|
-
return m.forEach((
|
|
177
|
-
|
|
178
|
-
}),
|
|
179
|
-
}, [
|
|
174
|
+
}), g = b(() => {
|
|
175
|
+
const h = {};
|
|
176
|
+
return m.forEach((f, v) => {
|
|
177
|
+
h[f] = Array.isArray(l) ? l[v] : l;
|
|
178
|
+
}), h;
|
|
179
|
+
}, [l, m]), d = b(() => {
|
|
180
180
|
if (!r)
|
|
181
181
|
return {
|
|
182
182
|
sections: [],
|
|
183
183
|
fields: { active: [], readonly: [], hidden: [] }
|
|
184
184
|
};
|
|
185
|
-
const
|
|
185
|
+
const h = ie(
|
|
186
186
|
r.sections.active,
|
|
187
187
|
r.sections.readonly,
|
|
188
188
|
r.sections.rules,
|
|
189
189
|
u,
|
|
190
|
-
|
|
190
|
+
g
|
|
191
191
|
);
|
|
192
|
-
let
|
|
193
|
-
...
|
|
194
|
-
name:
|
|
192
|
+
let f = [
|
|
193
|
+
...h.readonly.map((y) => ({
|
|
194
|
+
name: y,
|
|
195
195
|
mode: "readonly"
|
|
196
196
|
})),
|
|
197
|
-
...
|
|
198
|
-
name:
|
|
197
|
+
...h.active.map((y) => ({
|
|
198
|
+
name: y,
|
|
199
199
|
mode: "active"
|
|
200
200
|
}))
|
|
201
201
|
];
|
|
202
|
-
|
|
203
|
-
const
|
|
202
|
+
f = se(r.sections.order, f);
|
|
203
|
+
const v = ae(
|
|
204
204
|
{
|
|
205
205
|
active: r.fields.active,
|
|
206
206
|
readonly: r.fields.readonly,
|
|
@@ -208,20 +208,20 @@ function le({
|
|
|
208
208
|
},
|
|
209
209
|
r.fields.rules,
|
|
210
210
|
u,
|
|
211
|
-
|
|
211
|
+
g
|
|
212
212
|
);
|
|
213
|
-
return { sections:
|
|
214
|
-
}, [r, u,
|
|
215
|
-
return
|
|
216
|
-
const
|
|
217
|
-
|
|
218
|
-
var
|
|
219
|
-
const
|
|
220
|
-
|
|
221
|
-
}), Object.keys(i ?? {}).filter((
|
|
222
|
-
}, [
|
|
213
|
+
return { sections: f, fields: v };
|
|
214
|
+
}, [r, u, g, i]);
|
|
215
|
+
return I(() => {
|
|
216
|
+
const h = d.sections.filter((f) => f.mode === "active").map((f) => f.name);
|
|
217
|
+
h.forEach((f) => {
|
|
218
|
+
var y;
|
|
219
|
+
const v = (y = i == null ? void 0 : i[f]) == null ? void 0 : y.schema;
|
|
220
|
+
v && a(f, v);
|
|
221
|
+
}), Object.keys(i ?? {}).filter((f) => !h.includes(f)).forEach(c);
|
|
222
|
+
}, [d.sections, i, a, c]), d;
|
|
223
223
|
}
|
|
224
|
-
function
|
|
224
|
+
function le() {
|
|
225
225
|
if (typeof document > "u") return {};
|
|
226
226
|
const e = {};
|
|
227
227
|
return document.querySelectorAll("input[type='radio'][name]").forEach((n) => {
|
|
@@ -241,83 +241,75 @@ function de() {
|
|
|
241
241
|
}
|
|
242
242
|
}), e;
|
|
243
243
|
}
|
|
244
|
-
const
|
|
245
|
-
var
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
}, ye = () => j() === "true", G = C(null);
|
|
257
|
-
function Ce({
|
|
244
|
+
const de = () => {
|
|
245
|
+
var l;
|
|
246
|
+
const e = { isCreation: !1, isEdit: !1, isView: !0 };
|
|
247
|
+
if (typeof window > "u" || !window.top) return e;
|
|
248
|
+
const n = new URLSearchParams(window.location.search), t = window.top, o = window.top.document, i = ((l = t.ECM) == null ? void 0 : l.workflowView) || t.ECM_WKFView, a = (i == null ? void 0 : i.newRequest) === !0 || (i == null ? void 0 : i.isNewRequest) === !0, c = n.get("edit") === "true" || n.get("mode") === "edit", s = n.has("taskUserId"), u = n.get("view") === "true" || n.get("publicView") === "true", r = !!o.getElementById("sendModal") || !!o.querySelector(".fluig-style-guide.modal-dialog"), m = a || c || s && !u && r;
|
|
249
|
+
return {
|
|
250
|
+
isCreation: a,
|
|
251
|
+
isEdit: m,
|
|
252
|
+
isView: !m
|
|
253
|
+
};
|
|
254
|
+
}, B = D(null);
|
|
255
|
+
function Fe({
|
|
258
256
|
children: e,
|
|
259
257
|
devConfig: n
|
|
260
258
|
}) {
|
|
261
|
-
const [t, o] =
|
|
262
|
-
return
|
|
259
|
+
const [t, o] = U(null), i = b(() => le() ?? {}, []);
|
|
260
|
+
return I(() => {
|
|
263
261
|
let a = !0;
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
let r = null;
|
|
262
|
+
const c = async () => {
|
|
263
|
+
let u = (t == null ? void 0 : t.activityId) ?? null;
|
|
267
264
|
try {
|
|
268
|
-
const
|
|
269
|
-
|
|
270
|
-
} catch
|
|
271
|
-
console.warn("[FluigRuntime] Falha ao detectar atividade:", d);
|
|
265
|
+
const y = await k.top.ECM.workflowView.sequence;
|
|
266
|
+
y != null && (u = Number(y));
|
|
267
|
+
} catch {
|
|
272
268
|
}
|
|
273
|
-
const m =
|
|
274
|
-
isView:
|
|
275
|
-
isReadOnly:
|
|
276
|
-
activityId:
|
|
277
|
-
|
|
278
|
-
previousActivityId: f,
|
|
269
|
+
const { isEdit: r, isView: m } = de(), l = typeof window < "u" && window.location.hostname === "localhost", g = typeof window < "u" && window.self !== window.top, d = !l && g ? m : !1, h = i.LASTACTIVITYID ? Number(i.LASTACTIVITYID) : null, f = {
|
|
270
|
+
isView: d,
|
|
271
|
+
isReadOnly: d,
|
|
272
|
+
activityId: u,
|
|
273
|
+
previousActivityId: h,
|
|
279
274
|
prefilledValues: i,
|
|
280
|
-
showDebugSubmit: !1,
|
|
281
|
-
showDebugLogs: !1,
|
|
275
|
+
showDebugSubmit: (n == null ? void 0 : n.showDebugSubmit) ?? !1,
|
|
276
|
+
showDebugLogs: (n == null ? void 0 : n.showDebugLogs) ?? !1,
|
|
282
277
|
isDev: !1
|
|
283
278
|
};
|
|
284
|
-
let
|
|
279
|
+
let v = f;
|
|
285
280
|
if (n != null && n.enabled) {
|
|
286
|
-
const
|
|
287
|
-
|
|
288
|
-
...
|
|
281
|
+
const y = n.isView ?? f.isView;
|
|
282
|
+
v = {
|
|
283
|
+
...f,
|
|
289
284
|
...n,
|
|
290
|
-
isView:
|
|
291
|
-
isReadOnly:
|
|
285
|
+
isView: y,
|
|
286
|
+
isReadOnly: y,
|
|
292
287
|
isDev: !0,
|
|
293
|
-
|
|
294
|
-
// Se não, mantém o detectado (permite usar devConfig só para logs, por exemplo)
|
|
295
|
-
activityId: n.activityId !== void 0 ? n.activityId : r
|
|
288
|
+
activityId: n.activityId ?? u
|
|
296
289
|
};
|
|
297
290
|
}
|
|
298
|
-
|
|
299
|
-
"Detected Activity": r,
|
|
300
|
-
"Final Activity": l.activityId,
|
|
301
|
-
"Dev Mode": l.isDev
|
|
302
|
-
}), I.end()), a && o(l);
|
|
303
|
-
})(), () => {
|
|
304
|
-
a = !1;
|
|
291
|
+
a && o((y) => y && y.isView === v.isView && y.activityId === v.activityId ? y : v), n != null && n.showDebugLogs && r && console.log("[FluigRuntime] Modo Edição Detectado via Modal/URL");
|
|
305
292
|
};
|
|
306
|
-
|
|
293
|
+
c();
|
|
294
|
+
const s = setInterval(c, 800);
|
|
295
|
+
return () => {
|
|
296
|
+
a = !1, clearInterval(s);
|
|
297
|
+
};
|
|
298
|
+
}, [n, i]), t ? /* @__PURE__ */ p(B.Provider, { value: t, children: e }) : null;
|
|
307
299
|
}
|
|
308
300
|
function R() {
|
|
309
|
-
const e =
|
|
301
|
+
const e = N(B);
|
|
310
302
|
if (!e)
|
|
311
303
|
throw new Error(
|
|
312
304
|
"useFluigRuntime deve ser usado dentro de <FluigRuntimeProvider>"
|
|
313
305
|
);
|
|
314
306
|
return e;
|
|
315
307
|
}
|
|
316
|
-
function
|
|
308
|
+
function fe(e) {
|
|
317
309
|
const { activityId: n, previousActivityId: t } = R();
|
|
318
|
-
|
|
310
|
+
I(() => {
|
|
319
311
|
n != null && e.setValue("CURRENTACTIVITYID", n), t != null && e.setValue("LASTACTIVITYID", t);
|
|
320
|
-
}, [n, t, e]),
|
|
312
|
+
}, [n, t, e]), I(() => {
|
|
321
313
|
var i, a;
|
|
322
314
|
if (typeof window > "u") return;
|
|
323
315
|
const o = ((i = window.top) == null ? void 0 : i.document.getElementById("send-process-button")) || ((a = window.parent) == null ? void 0 : a.document.getElementById("workflow-actions-send")) || document.getElementById("send-process-button");
|
|
@@ -354,105 +346,105 @@ function ve(e) {
|
|
|
354
346
|
};
|
|
355
347
|
}, [e]);
|
|
356
348
|
}
|
|
357
|
-
const
|
|
349
|
+
const me = ({
|
|
358
350
|
workflowStructure: e,
|
|
359
351
|
sectionsRegistry: n,
|
|
360
352
|
className: t
|
|
361
353
|
}) => {
|
|
362
|
-
const { control: o, handleSubmit: i, register: a, setValue: c, getValues: s } =
|
|
363
|
-
|
|
354
|
+
const { control: o, handleSubmit: i, register: a, setValue: c, getValues: s } = Y(), u = R(), r = H(!1);
|
|
355
|
+
I(() => {
|
|
364
356
|
r.current || (u.activityId != null && c("CURRENTACTIVITYID", u.activityId), u.previousActivityId != null && c("LASTACTIVITYID", u.previousActivityId), r.current = !0);
|
|
365
357
|
}, [u, c]);
|
|
366
|
-
const { sections: m, fields:
|
|
358
|
+
const { sections: m, fields: l } = ue({
|
|
367
359
|
control: o,
|
|
368
360
|
activityId: u.activityId,
|
|
369
361
|
previousActivityId: u.previousActivityId,
|
|
370
362
|
workflowStructure: e,
|
|
371
363
|
sectionsRegistry: n
|
|
372
364
|
});
|
|
373
|
-
return /* @__PURE__ */
|
|
365
|
+
return /* @__PURE__ */ P(
|
|
374
366
|
"form",
|
|
375
367
|
{
|
|
376
368
|
id: "fluig-react-form",
|
|
377
369
|
className: t,
|
|
378
|
-
onSubmit: i((
|
|
379
|
-
console.log("✅ [FluigWorkflowForm] Dados válidos:",
|
|
370
|
+
onSubmit: i((d) => {
|
|
371
|
+
console.log("✅ [FluigWorkflowForm] Dados válidos:", d);
|
|
380
372
|
}),
|
|
381
373
|
noValidate: !0,
|
|
382
374
|
children: [
|
|
383
|
-
/* @__PURE__ */
|
|
384
|
-
/* @__PURE__ */
|
|
385
|
-
/* @__PURE__ */
|
|
375
|
+
/* @__PURE__ */ P("div", { className: "hidden", style: { display: "none" }, children: [
|
|
376
|
+
/* @__PURE__ */ p("input", { type: "hidden", ...a("CURRENTACTIVITYID") }),
|
|
377
|
+
/* @__PURE__ */ p("input", { type: "hidden", ...a("LASTACTIVITYID") })
|
|
386
378
|
] }),
|
|
387
|
-
m.length === 0 && u.activityId !== null && /* @__PURE__ */
|
|
379
|
+
m.length === 0 && u.activityId !== null && /* @__PURE__ */ P("p", { children: [
|
|
388
380
|
"Não foi possível encontrar a atividade: ",
|
|
389
381
|
String(u.activityId)
|
|
390
382
|
] }),
|
|
391
|
-
m.map(({ name:
|
|
392
|
-
if (
|
|
393
|
-
const
|
|
394
|
-
if (!
|
|
395
|
-
const
|
|
396
|
-
return /* @__PURE__ */
|
|
397
|
-
|
|
383
|
+
m.map(({ name: d, mode: h }) => {
|
|
384
|
+
if (h === "hidden") return null;
|
|
385
|
+
const f = n[d];
|
|
386
|
+
if (!f) return null;
|
|
387
|
+
const v = f.Component;
|
|
388
|
+
return /* @__PURE__ */ p(
|
|
389
|
+
v,
|
|
398
390
|
{
|
|
399
|
-
id:
|
|
400
|
-
fields:
|
|
401
|
-
readOnly:
|
|
391
|
+
id: d,
|
|
392
|
+
fields: l,
|
|
393
|
+
readOnly: h === "readonly"
|
|
402
394
|
},
|
|
403
|
-
|
|
395
|
+
d
|
|
404
396
|
);
|
|
405
397
|
}),
|
|
406
|
-
u.isDev && u.showDebugSubmit && /* @__PURE__ */
|
|
398
|
+
u.isDev && u.showDebugSubmit && /* @__PURE__ */ p("div", { style: { width: "100%", padding: "16px", paddingTop: "0" }, children: /* @__PURE__ */ p("button", { type: "submit", className: "btn btn-primary btn-lg btn-block", children: "Submit (Debug)" }) })
|
|
407
399
|
]
|
|
408
400
|
}
|
|
409
401
|
);
|
|
410
|
-
},
|
|
411
|
-
const { mergedSchema: n } = W(), t = R(), o =
|
|
412
|
-
resolver: n ?
|
|
402
|
+
}, Te = (e) => {
|
|
403
|
+
const { mergedSchema: n } = W(), t = R(), o = Q({
|
|
404
|
+
resolver: n ? oe(n) : void 0,
|
|
413
405
|
defaultValues: t.prefilledValues,
|
|
414
406
|
mode: "onBlur"
|
|
415
407
|
});
|
|
416
|
-
return
|
|
417
|
-
t.showDebugLogs && (
|
|
408
|
+
return fe(o), I(() => {
|
|
409
|
+
t.showDebugLogs && (x.header("Form Initialized"), x.table(
|
|
418
410
|
"Prefilled Values (DOM Capture)",
|
|
419
411
|
t.prefilledValues
|
|
420
|
-
),
|
|
421
|
-
}, [t.showDebugLogs, t.prefilledValues, o]), /* @__PURE__ */
|
|
412
|
+
), x.info("RHF Current Values", o.getValues()), x.end());
|
|
413
|
+
}, [t.showDebugLogs, t.prefilledValues, o]), /* @__PURE__ */ p(X, { ...o, children: /* @__PURE__ */ p(me, { ...e }) });
|
|
422
414
|
};
|
|
423
|
-
async function
|
|
415
|
+
async function ye(e) {
|
|
424
416
|
if (!e)
|
|
425
417
|
return console.warn("[setFluigNextActivity] Nenhuma atividade informada."), !1;
|
|
426
|
-
const { wfView: n, wkfView: t } = await
|
|
418
|
+
const { wfView: n, wkfView: t } = await he();
|
|
427
419
|
if (!n || !t) return !1;
|
|
428
|
-
|
|
429
|
-
const o = Number(e), i =
|
|
430
|
-
return i ? (
|
|
420
|
+
ve(n);
|
|
421
|
+
const o = Number(e), i = we(n, o);
|
|
422
|
+
return i ? (pe(n, t, i, o), console.log(`[setFluigNextActivity] Próxima atividade definida: ${o}`), !0) : (console.warn(`[setFluigNextActivity] Estado ${o} não encontrado nas próximas atividades disponíveis.`), console.log("Estados disponíveis:", n.availableStatesCOPY || n.availableStates), !1);
|
|
431
423
|
}
|
|
432
|
-
async function
|
|
433
|
-
const e = await
|
|
424
|
+
async function he() {
|
|
425
|
+
const e = await k.top.ECM.workflowView, n = await k.top.ECM_WKFView;
|
|
434
426
|
return !e || !n ? (console.warn("[setFluigNextActivity] Contexto Fluig inválido ou não carregado."), {}) : { wfView: e, wkfView: n };
|
|
435
427
|
}
|
|
436
|
-
function
|
|
428
|
+
function ve(e) {
|
|
437
429
|
e.availableStatesCOPY || (e.availableStatesCOPY = e.availableStates);
|
|
438
430
|
}
|
|
439
|
-
function
|
|
431
|
+
function we(e, n) {
|
|
440
432
|
const t = e.availableStatesCOPY || e.availableStates;
|
|
441
433
|
return t == null ? void 0 : t.find((o) => o.sequence === n);
|
|
442
434
|
}
|
|
443
|
-
function
|
|
435
|
+
function pe(e, n, t, o) {
|
|
444
436
|
e.availableUsers.users = [], e.availableStates = [t], n.selectActivity = () => o;
|
|
445
437
|
}
|
|
446
|
-
const
|
|
447
|
-
function
|
|
448
|
-
const e =
|
|
438
|
+
const G = D(null);
|
|
439
|
+
function xe() {
|
|
440
|
+
const e = N(G);
|
|
449
441
|
if (!e)
|
|
450
442
|
throw new Error(
|
|
451
443
|
"useSection deve ser usado dentro de um componente <Section>"
|
|
452
444
|
);
|
|
453
445
|
return e;
|
|
454
446
|
}
|
|
455
|
-
function
|
|
447
|
+
function De({
|
|
456
448
|
id: e,
|
|
457
449
|
className: n,
|
|
458
450
|
schema: t,
|
|
@@ -463,72 +455,72 @@ function Ne({
|
|
|
463
455
|
fields: s = {},
|
|
464
456
|
hidden: u = !1
|
|
465
457
|
}) {
|
|
466
|
-
const { isView: r, activityId: m } = R(),
|
|
467
|
-
if (!
|
|
458
|
+
const { isView: r, activityId: m } = R(), l = m, g = Y(), d = i || g;
|
|
459
|
+
if (!d)
|
|
468
460
|
return console.error(
|
|
469
461
|
`[FluigWorkflowReact] Section "${e}" não encontrou o 'form'.`
|
|
470
462
|
), null;
|
|
471
463
|
if (u) return null;
|
|
472
|
-
const
|
|
473
|
-
(
|
|
474
|
-
var S,
|
|
475
|
-
return (S = s.hidden) != null && S.includes(
|
|
464
|
+
const h = V(
|
|
465
|
+
(w) => {
|
|
466
|
+
var S, E, T;
|
|
467
|
+
return (S = s.hidden) != null && S.includes(w) ? "hidden" : (E = s.readonly) != null && E.includes(w) ? "readonly" : (T = s.active) != null && T.includes(w) ? "active" : c ? "readonly" : "active";
|
|
476
468
|
},
|
|
477
469
|
[s, c]
|
|
470
|
+
), f = V(
|
|
471
|
+
(w) => h(w) === "hidden",
|
|
472
|
+
[h]
|
|
473
|
+
), v = V(
|
|
474
|
+
(w) => h(w) === "readonly",
|
|
475
|
+
[h]
|
|
478
476
|
), y = V(
|
|
479
|
-
(
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
[d]
|
|
484
|
-
), g = V(
|
|
485
|
-
(h) => {
|
|
486
|
-
if (!h) return;
|
|
487
|
-
const S = l.getValues("CURRENTACTIVITYID");
|
|
488
|
-
l.setValue("LASTACTIVITYID", S), l.setValue("CURRENTACTIVITYID", f), we(Number(h));
|
|
477
|
+
(w) => {
|
|
478
|
+
if (!w) return;
|
|
479
|
+
const S = d.getValues("CURRENTACTIVITYID");
|
|
480
|
+
d.setValue("LASTACTIVITYID", S), d.setValue("CURRENTACTIVITYID", l), ye(Number(w));
|
|
489
481
|
},
|
|
490
|
-
[
|
|
482
|
+
[d, l]
|
|
491
483
|
);
|
|
492
|
-
|
|
493
|
-
if (!r || !a || !t || !
|
|
494
|
-
const
|
|
495
|
-
S && Object.entries(S).forEach(([
|
|
496
|
-
var L,
|
|
497
|
-
let
|
|
498
|
-
for (; (L =
|
|
499
|
-
|
|
500
|
-
const
|
|
501
|
-
if ((
|
|
502
|
-
const
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
}),
|
|
484
|
+
I(() => {
|
|
485
|
+
if (!r || !a || !t || !d) return;
|
|
486
|
+
const w = d.getValues(), S = t.shape;
|
|
487
|
+
S && Object.entries(S).forEach(([E, T]) => {
|
|
488
|
+
var L, M;
|
|
489
|
+
let A = T;
|
|
490
|
+
for (; (L = A == null ? void 0 : A._def) != null && L.schema; )
|
|
491
|
+
A = A._def.schema;
|
|
492
|
+
const F = (M = A == null ? void 0 : A._def) == null ? void 0 : M.fluig;
|
|
493
|
+
if ((F == null ? void 0 : F.type) !== "options" || !Array.isArray(F.values) || w[E] !== void 0) return;
|
|
494
|
+
const C = {};
|
|
495
|
+
F.values.forEach((q) => {
|
|
496
|
+
C[q] = a[q] === "on";
|
|
497
|
+
}), d.setValue(E, C, {
|
|
506
498
|
shouldDirty: !1,
|
|
507
499
|
shouldValidate: !1
|
|
508
500
|
});
|
|
509
501
|
});
|
|
510
|
-
}, [r, a, t,
|
|
511
|
-
const
|
|
502
|
+
}, [r, a, t, d]);
|
|
503
|
+
const z = b(
|
|
512
504
|
() => ({
|
|
513
505
|
id: e,
|
|
514
|
-
form:
|
|
515
|
-
isHidden:
|
|
516
|
-
isReadOnly:
|
|
506
|
+
form: d,
|
|
507
|
+
isHidden: f,
|
|
508
|
+
isReadOnly: v,
|
|
517
509
|
isView: r,
|
|
518
|
-
next:
|
|
519
|
-
wf_activity_id:
|
|
510
|
+
next: y,
|
|
511
|
+
wf_activity_id: l
|
|
520
512
|
}),
|
|
521
|
-
[e,
|
|
513
|
+
[e, d, f, v, r, y, l]
|
|
522
514
|
);
|
|
523
|
-
return /* @__PURE__ */
|
|
515
|
+
return /* @__PURE__ */ p(G.Provider, { value: z, children: /* @__PURE__ */ p("section", { id: e, className: [e, n].filter(Boolean).join(" "), children: o }) });
|
|
524
516
|
}
|
|
525
|
-
const $ =
|
|
526
|
-
function
|
|
527
|
-
const t =
|
|
528
|
-
return /* @__PURE__ */
|
|
517
|
+
const $ = D(null);
|
|
518
|
+
function Ne({ children: e, config: n }) {
|
|
519
|
+
const t = b(() => ne(n), [n]);
|
|
520
|
+
return /* @__PURE__ */ p($.Provider, { value: t, children: e });
|
|
529
521
|
}
|
|
530
|
-
function
|
|
531
|
-
const e =
|
|
522
|
+
function Re() {
|
|
523
|
+
const e = N($);
|
|
532
524
|
if (!e)
|
|
533
525
|
throw new Error(
|
|
534
526
|
"useFluigApi deve ser usado dentro de um <FluigApiProvider>"
|
|
@@ -536,16 +528,16 @@ function ke() {
|
|
|
536
528
|
return e;
|
|
537
529
|
}
|
|
538
530
|
export {
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
531
|
+
Ce as DebugLogger,
|
|
532
|
+
Ne as FluigApiProvider,
|
|
533
|
+
Fe as FluigRuntimeProvider,
|
|
534
|
+
Te as FluigWorkflowForm,
|
|
535
|
+
Ee as SchemaRegistryProvider,
|
|
536
|
+
De as Section,
|
|
537
|
+
Le as createFluigClient,
|
|
538
|
+
Me as parentProxy,
|
|
539
|
+
Re as useFluigApi,
|
|
548
540
|
R as useFluigRuntime,
|
|
549
541
|
W as useSchemaRegistry,
|
|
550
|
-
|
|
542
|
+
xe as useSection
|
|
551
543
|
};
|