master-data-management-react 0.1.7 → 0.1.8
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerSideGrid.d.ts","sourceRoot":"","sources":["../../../src/components/ServerSideGrid/ServerSideGrid.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAItD,OAAO,sCAAsC,CAAC;AAC9C,OAAO,8CAA8C,CAAC;AAMtD,OAAO,KAAK,EAAE,MAAM,EAAoB,MAAM,mBAAmB,CAAC;AAGlE,OAAO,EAOH,aAAa,EAChB,MAAM,gCAAgC,CAAC;AAKxC,UAAU,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACvE,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,OAAO,CAAC,EAAE,KAAK,CAAC,QAAQ,CACpB,KAAK,CAAC,cAAc,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,aAAa,CAAC,MAAM,OAAO,aAAa,CAAC,CAAA;KAAE,EAAE,CAAC,CACpG,CAAC;IACF,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,aAAa,CAAC,MAAM,OAAO,aAAa,CAAC,CAAA;KAAE,EAAE,CAAC;IACxF,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC;IACvC,SAAS,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;IACpC,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,QAAA,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,EAAE,mOAmBvC,mBAAmB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"ServerSideGrid.d.ts","sourceRoot":"","sources":["../../../src/components/ServerSideGrid/ServerSideGrid.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAItD,OAAO,sCAAsC,CAAC;AAC9C,OAAO,8CAA8C,CAAC;AAMtD,OAAO,KAAK,EAAE,MAAM,EAAoB,MAAM,mBAAmB,CAAC;AAGlE,OAAO,EAOH,aAAa,EAChB,MAAM,gCAAgC,CAAC;AAKxC,UAAU,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACvE,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,OAAO,CAAC,EAAE,KAAK,CAAC,QAAQ,CACpB,KAAK,CAAC,cAAc,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,aAAa,CAAC,MAAM,OAAO,aAAa,CAAC,CAAA;KAAE,EAAE,CAAC,CACpG,CAAC;IACF,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,aAAa,CAAC,MAAM,OAAO,aAAa,CAAC,CAAA;KAAE,EAAE,CAAC;IACxF,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC;IACvC,SAAS,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;IACpC,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,QAAA,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,EAAE,mOAmBvC,mBAAmB,CAAC,CAAC,CAAC,4CA8GxB,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/components/ServerSideGrid/styles.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,OAAO;;+JAGjB,CAAC;AAEJ,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/components/ServerSideGrid/styles.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,OAAO;;+JAGjB,CAAC;AAEJ,eAAO,MAAM,aAAa,6NAyCvB,CAAC;AAEJ,eAAO,MAAM,MAAM;;+JAQhB,CAAC;AAEJ,eAAO,MAAM,mBAAmB;;+JAe7B,CAAC;AAEJ,eAAO,MAAM,YAAY,6KAgBtB,CAAC;AAEJ,UAAU,wBAAwB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,mBAAmB;;0LAoC/B,CAAC;AAEF,eAAO,MAAM,+BAA+B;;sQAW3C,CAAC;AAEF,eAAO,MAAM,SAAS;;+JAMnB,CAAC"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
2
|
-
`+
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("react"),n=require("@mui/material"),$t=require("ag-grid-react"),Le=require("ag-grid-community"),Xe=(o,T)=>({getEntities:async()=>{const d=await o.get(T.entities);return{data:d.data.data??d.data}},getMetadata:async d=>{const S=await o.get(T.metadata(d));return{data:S.data.data??S.data}},getRecords:async(d,S)=>{const l=await o.get(T.records(d),{params:S});return{data:l.data.data??l.data,total:l.data.total??l.data.count??0}},getRecord:async(d,S)=>{const l=await o.get(T.recordById(d,S));return{data:l.data.data??l.data}},createRecord:async(d,S)=>{const l=await o.post(T.records(d),S);return{data:l.data.data??l.data}},updateRecord:async(d,S,l)=>{const Y=await o.put(T.recordById(d,S),l);return{data:Y.data.data??Y.data}},deleteRecord:async(d,S)=>{const l=await o.delete(T.recordById(d,S));return{data:l.data.data??l.data}},exportCSV:async(d,S)=>await o.get(T.exportCSV(d),{params:S,responseType:"blob"}),exportExcel:async(d,S)=>await o.get(T.exportExcel(d),{params:S,responseType:"blob"}),getDropdownOptions:async d=>{const S=T.dropdownOptions?T.dropdownOptions(d):d,l=await o.get(S);return{data:l.data.data??l.data}}});var be={exports:{}},he={};var lt;function Vt(){if(lt)return he;lt=1;var o=f,T=Symbol.for("react.element"),d=Symbol.for("react.fragment"),S=Object.prototype.hasOwnProperty,l=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Y={key:!0,ref:!0,__self:!0,__source:!0};function J(_,I,k){var O,h={},N=null,W=null;k!==void 0&&(N=""+k),I.key!==void 0&&(N=""+I.key),I.ref!==void 0&&(W=I.ref);for(O in I)S.call(I,O)&&!Y.hasOwnProperty(O)&&(h[O]=I[O]);if(_&&_.defaultProps)for(O in I=_.defaultProps,I)h[O]===void 0&&(h[O]=I[O]);return{$$typeof:T,type:_,key:N,ref:W,props:h,_owner:l.current}}return he.Fragment=d,he.jsx=J,he.jsxs=J,he}var ve={};var ct;function Wt(){return ct||(ct=1,process.env.NODE_ENV!=="production"&&(function(){var o=f,T=Symbol.for("react.element"),d=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),l=Symbol.for("react.strict_mode"),Y=Symbol.for("react.profiler"),J=Symbol.for("react.provider"),_=Symbol.for("react.context"),I=Symbol.for("react.forward_ref"),k=Symbol.for("react.suspense"),O=Symbol.for("react.suspense_list"),h=Symbol.for("react.memo"),N=Symbol.for("react.lazy"),W=Symbol.for("react.offscreen"),ae=Symbol.iterator,Ee="@@iterator";function X(e){if(e===null||typeof e!="object")return null;var t=ae&&e[ae]||e[Ee];return typeof t=="function"?t:null}var $=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function b(e){{for(var t=arguments.length,s=new Array(t>1?t-1:0),u=1;u<t;u++)s[u-1]=arguments[u];P("error",e,s)}}function P(e,t,s){{var u=$.ReactDebugCurrentFrame,y=u.getStackAddendum();y!==""&&(t+="%s",s=s.concat([y]));var x=s.map(function(g){return String(g)});x.unshift("Warning: "+t),Function.prototype.apply.call(console[e],console,x)}}var se=!1,w=!1,B=!1,fe=!1,q=!1,ue;ue=Symbol.for("react.module.reference");function A(e){return!!(typeof e=="string"||typeof e=="function"||e===S||e===Y||q||e===l||e===k||e===O||fe||e===W||se||w||B||typeof e=="object"&&e!==null&&(e.$$typeof===N||e.$$typeof===h||e.$$typeof===J||e.$$typeof===_||e.$$typeof===I||e.$$typeof===ue||e.getModuleId!==void 0))}function p(e,t,s){var u=e.displayName;if(u)return u;var y=t.displayName||t.name||"";return y!==""?s+"("+y+")":s}function c(e){return e.displayName||"Context"}function E(e){if(e==null)return null;if(typeof e.tag=="number"&&b("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case S:return"Fragment";case d:return"Portal";case Y:return"Profiler";case l:return"StrictMode";case k:return"Suspense";case O:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case _:var t=e;return c(t)+".Consumer";case J:var s=e;return c(s._context)+".Provider";case I:return p(e,e.render,"ForwardRef");case h:var u=e.displayName||null;return u!==null?u:E(e.type)||"Memo";case N:{var y=e,x=y._payload,g=y._init;try{return E(g(x))}catch{return null}}}return null}var U=Object.assign,v=0,re,M,Q,Te,Se,ie,Ce;function Oe(){}Oe.__reactDisabledLog=!0;function De(){{if(v===0){re=console.log,M=console.info,Q=console.warn,Te=console.error,Se=console.group,ie=console.groupCollapsed,Ce=console.groupEnd;var e={configurable:!0,enumerable:!0,value:Oe,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}v++}}function we(){{if(v--,v===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:U({},e,{value:re}),info:U({},e,{value:M}),warn:U({},e,{value:Q}),error:U({},e,{value:Te}),group:U({},e,{value:Se}),groupCollapsed:U({},e,{value:ie}),groupEnd:U({},e,{value:Ce})})}v<0&&b("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var r=$.ReactCurrentDispatcher,i;function R(e,t,s){{if(i===void 0)try{throw Error()}catch(y){var u=y.stack.trim().match(/\n( *(at )?)/);i=u&&u[1]||""}return`
|
|
2
|
+
`+i+e}}var F=!1,C;{var D=typeof WeakMap=="function"?WeakMap:Map;C=new D}function Z(e,t){if(!e||F)return"";{var s=C.get(e);if(s!==void 0)return s}var u;F=!0;var y=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var x;x=r.current,r.current=null,De();try{if(t){var g=function(){throw Error()};if(Object.defineProperty(g.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(g,[])}catch(H){u=H}Reflect.construct(e,[],g)}else{try{g.call()}catch(H){u=H}e.call(g.prototype)}}else{try{throw Error()}catch(H){u=H}e()}}catch(H){if(H&&u&&typeof H.stack=="string"){for(var m=H.stack.split(`
|
|
3
3
|
`),V=u.stack.split(`
|
|
4
|
-
`),
|
|
5
|
-
`+m[
|
|
4
|
+
`),j=m.length-1,G=V.length-1;j>=1&&G>=0&&m[j]!==V[G];)G--;for(;j>=1&&G>=0;j--,G--)if(m[j]!==V[G]){if(j!==1||G!==1)do if(j--,G--,G<0||m[j]!==V[G]){var te=`
|
|
5
|
+
`+m[j].replace(" at new "," at ");return e.displayName&&te.includes("<anonymous>")&&(te=te.replace("<anonymous>",e.displayName)),typeof e=="function"&&C.set(e,te),te}while(j>=1&&G>=0);break}}}finally{F=!1,r.current=x,we(),Error.prepareStackTrace=y}var Ae=e?e.displayName||e.name:"",_e=Ae?R(Ae):"";return typeof e=="function"&&C.set(e,_e),_e}function Re(e,t,s){return Z(e,!1)}function pe(e){var t=e.prototype;return!!(t&&t.isReactComponent)}function ne(e,t,s){if(e==null)return"";if(typeof e=="function")return Z(e,pe(e));if(typeof e=="string")return R(e);switch(e){case k:return R("Suspense");case O:return R("SuspenseList")}if(typeof e=="object")switch(e.$$typeof){case I:return Re(e.render);case h:return ne(e.type,t,s);case N:{var u=e,y=u._payload,x=u._init;try{return ne(x(y),t,s)}catch{}}}return""}var de=Object.prototype.hasOwnProperty,le={},L=$.ReactDebugCurrentFrame;function ee(e){if(e){var t=e._owner,s=ne(e.type,e._source,t?t.type:null);L.setExtraStackFrame(s)}else L.setExtraStackFrame(null)}function xe(e,t,s,u,y){{var x=Function.call.bind(de);for(var g in e)if(x(e,g)){var m=void 0;try{if(typeof e[g]!="function"){var V=Error((u||"React class")+": "+s+" type `"+g+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[g]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw V.name="Invariant Violation",V}m=e[g](t,g,u,s,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(j){m=j}m&&!(m instanceof Error)&&(ee(y),b("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",u||"React class",s,g,typeof m),ee(null)),m instanceof Error&&!(m.message in le)&&(le[m.message]=!0,ee(y),b("Failed %s type: %s",s,m.message),ee(null))}}}var Ne=Array.isArray;function Ue(e){return Ne(e)}function Ot(e){{var t=typeof Symbol=="function"&&Symbol.toStringTag,s=t&&e[Symbol.toStringTag]||e.constructor.name||"Object";return s}}function ht(e){try{return Ke(e),!1}catch{return!0}}function Ke(e){return""+e}function Je(e){if(ht(e))return b("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",Ot(e)),Ke(e)}var Qe=$.ReactCurrentOwner,vt={key:!0,ref:!0,__self:!0,__source:!0},Ze,et;function yt(e){if(de.call(e,"ref")){var t=Object.getOwnPropertyDescriptor(e,"ref").get;if(t&&t.isReactWarning)return!1}return e.ref!==void 0}function Ct(e){if(de.call(e,"key")){var t=Object.getOwnPropertyDescriptor(e,"key").get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function Dt(e,t){typeof e.ref=="string"&&Qe.current}function xt(e,t){{var s=function(){Ze||(Ze=!0,b("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",t))};s.isReactWarning=!0,Object.defineProperty(e,"key",{get:s,configurable:!0})}}function Nt(e,t){{var s=function(){et||(et=!0,b("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",t))};s.isReactWarning=!0,Object.defineProperty(e,"ref",{get:s,configurable:!0})}}var bt=function(e,t,s,u,y,x,g){var m={$$typeof:T,type:e,key:t,ref:s,props:g,_owner:x};return m._store={},Object.defineProperty(m._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(m,"_self",{configurable:!1,enumerable:!1,writable:!1,value:u}),Object.defineProperty(m,"_source",{configurable:!1,enumerable:!1,writable:!1,value:y}),Object.freeze&&(Object.freeze(m.props),Object.freeze(m)),m};function Lt(e,t,s,u,y){{var x,g={},m=null,V=null;s!==void 0&&(Je(s),m=""+s),Ct(t)&&(Je(t.key),m=""+t.key),yt(t)&&(V=t.ref,Dt(t,y));for(x in t)de.call(t,x)&&!vt.hasOwnProperty(x)&&(g[x]=t[x]);if(e&&e.defaultProps){var j=e.defaultProps;for(x in j)g[x]===void 0&&(g[x]=j[x])}if(m||V){var G=typeof e=="function"?e.displayName||e.name||"Unknown":e;m&&xt(g,G),V&&Nt(g,G)}return bt(e,m,V,y,u,Qe.current,g)}}var Ge=$.ReactCurrentOwner,tt=$.ReactDebugCurrentFrame;function me(e){if(e){var t=e._owner,s=ne(e.type,e._source,t?t.type:null);tt.setExtraStackFrame(s)}else tt.setExtraStackFrame(null)}var Be;Be=!1;function Ye(e){return typeof e=="object"&&e!==null&&e.$$typeof===T}function rt(){{if(Ge.current){var e=E(Ge.current.type);if(e)return`
|
|
6
6
|
|
|
7
|
-
Check the render method of \``+e+"`."}return""}}function Pt(e){return""}var
|
|
7
|
+
Check the render method of \``+e+"`."}return""}}function Pt(e){return""}var at={};function Ft(e){{var t=rt();if(!t){var s=typeof e=="string"?e:e.displayName||e.name;s&&(t=`
|
|
8
8
|
|
|
9
|
-
Check the top-level render call using <`+
|
|
9
|
+
Check the top-level render call using <`+s+">.")}return t}}function nt(e,t){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var s=Ft(t);if(at[s])return;at[s]=!0;var u="";e&&e._owner&&e._owner!==Ge.current&&(u=" It was passed a child from "+E(e._owner.type)+"."),me(e),b('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',s,u),me(null)}}function ot(e,t){{if(typeof e!="object")return;if(Ue(e))for(var s=0;s<e.length;s++){var u=e[s];Ye(u)&&nt(u,t)}else if(Ye(e))e._store&&(e._store.validated=!0);else if(e){var y=X(e);if(typeof y=="function"&&y!==e.entries)for(var x=y.call(e),g;!(g=x.next()).done;)Ye(g.value)&&nt(g.value,t)}}}function Mt(e){{var t=e.type;if(t==null||typeof t=="string")return;var s;if(typeof t=="function")s=t.propTypes;else if(typeof t=="object"&&(t.$$typeof===I||t.$$typeof===h))s=t.propTypes;else return;if(s){var u=E(t);xe(s,e.props,"prop",u,e)}else if(t.PropTypes!==void 0&&!Be){Be=!0;var y=E(t);b("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",y||"Unknown")}typeof t.getDefaultProps=="function"&&!t.getDefaultProps.isReactClassApproved&&b("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function jt(e){{for(var t=Object.keys(e.props),s=0;s<t.length;s++){var u=t[s];if(u!=="children"&&u!=="key"){me(e),b("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",u),me(null);break}}e.ref!==null&&(me(e),b("Invalid attribute `ref` supplied to `React.Fragment`."),me(null))}}var st={};function it(e,t,s,u,y,x){{var g=A(e);if(!g){var m="";(e===void 0||typeof e=="object"&&e!==null&&Object.keys(e).length===0)&&(m+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var V=Pt();V?m+=V:m+=rt();var j;e===null?j="null":Ue(e)?j="array":e!==void 0&&e.$$typeof===T?(j="<"+(E(e.type)||"Unknown")+" />",m=" Did you accidentally export a JSX literal instead of a component?"):j=typeof e,b("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",j,m)}var G=Lt(e,t,s,y,x);if(G==null)return G;if(g){var te=t.children;if(te!==void 0)if(u)if(Ue(te)){for(var Ae=0;Ae<te.length;Ae++)ot(te[Ae],e);Object.freeze&&Object.freeze(te)}else b("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else ot(te,e)}if(de.call(t,"key")){var _e=E(e),H=Object.keys(t).filter(function(kt){return kt!=="key"}),ke=H.length>0?"{key: someKey, "+H.join(": ..., ")+": ...}":"{key: someKey}";if(!st[_e+ke]){var Yt=H.length>0?"{"+H.join(": ..., ")+": ...}":"{}";b(`A props object containing a "key" prop is being spread into JSX:
|
|
10
10
|
let props = %s;
|
|
11
11
|
<%s {...props} />
|
|
12
12
|
React keys must be passed directly to JSX without using spread:
|
|
13
13
|
let props = %s;
|
|
14
|
-
<%s key={someKey} {...props} />`,Ye,pe,Yt,pe),ot[pe+Ye]=!0}}return e===S?jt(w):Ft(w),w}}function wt(e,t,o){return st(e,t,o,!0)}function Ut(e,t,o){return st(e,t,o,!1)}var Gt=Ut,Bt=wt;ye.Fragment=S,ye.jsx=Gt,ye.jsxs=Bt})()),ye}var ct;function Ht(){return ct||(ct=1,process.env.NODE_ENV==="production"?be.exports=Vt():be.exports=Wt()),be.exports}var r=Ht();const Xt=a.styled(a.Box)(({theme:n})=>({width:"100%",fontFamily:n.typography.fontFamily})),ut=a.styled("div")(({theme:n})=>({width:"100%","& .ag-header":{borderRadius:"8px 8px 0 0"},"& .ag-theme-alpine":{fontFamily:n.typography.fontFamily},"& .ag-header-cell-text":{fontSize:"14px",fontWeight:400,color:"#333"},"& .ag-cell":{fontSize:"14px",fontWeight:400,color:"#000",padding:"12px 16px"},"& .right-aligned-cell":{textAlign:"right"},"& .right-aligned-clickable-cell":{textAlign:"right",cursor:"pointer",color:"#1976d2",textDecoration:"underline"},"& .ag-header-cell.right-aligned-header":{justifyContent:"flex-end"},"& .ag-header-cell.right-aligned-header .ag-header-cell-label":{justifyContent:"flex-end",display:"flex",width:"100%"},"& .ag-cell:focus, .ag-cell:focus-within":{border:"1px solid transparent !important"}}));a.styled(a.Box)(()=>({position:"fixed",inset:0,display:"flex",alignItems:"center",justifyContent:"center",zIndex:1301,background:"rgba(255, 255, 255, 0.5)"}));const zt=a.styled(a.Box)(({theme:n})=>({display:"flex",justifyContent:"flex-end",marginTop:"16px",gap:"16px",[n.breakpoints.down("md")]:{flexWrap:"wrap",justifyContent:"center",gap:"12px"},[n.breakpoints.down("sm")]:{flexDirection:"column",alignItems:"center",gap:"16px"}})),qt=a.styled(a.Select)(()=>({fontSize:"14px",border:"none",boxShadow:"none",".MuiOutlinedInput-notchedOutline":{border:"none"},padding:"0px","& .MuiSelect-icon":{right:0},"& .MuiInputBase-input":{padding:0,paddingLeft:"8px",paddingRight:"32px !important"}})),Kt=a.styled(a.Box)(({height:n})=>({...n!==void 0&&{height:`${n}px`},"&.ag-theme-alpine":{border:"none !important"},".ag-root-wrapper":{border:"none !important"},".ag-header":{borderBottom:"none !important",backgroundColor:"#f5f5f5"},".ag-body-viewport":{border:"none !important"},".ag-header-cell img[alt='sort']":{display:"none",opacity:0,transition:"opacity 0.2s ease, visibility 0.2s ease"},".ag-header-cell:hover img[alt='sort']":{display:"block",opacity:1},".ag-row.ag-row-pinned":{borderBottom:"2px solid #e0e0e0"},".ag-header-cell":{display:"flex",alignItems:"center",justifyContent:"space-between"}})),Jt=a.styled(a.FormControl)(({theme:n})=>({display:"flex",flexDirection:"row",alignItems:"center",[n.breakpoints.down("sm")]:{flexWrap:"wrap",justifyContent:"center",gap:"8px"}})),dt=a.styled(a.Box)(({theme:n})=>({fontWeight:300,fontSize:"14px",[n.breakpoints.down("sm")]:{fontSize:"12px"}})),Et={DEFAULT_HEIGHT:500,MIN_HEIGHT:300,MAX_HEIGHT:800,DEFAULT_ROW_HEIGHT:50},Qt={DEFAULT_PAGE:1,DEFAULT_PAGE_SIZE:10,PAGE_SIZE_OPTIONS:[10,20,50,100],MIN_PAGE:1},Zt={ASC:"asc",DESC:"desc"},ft={UI_COLUMN_SORTED:"uiColumnSorted",API:"api",COLUMN_MOVED:"columnMoved"},$e={NORMAL:"normal",AUTO_HEIGHT:"autoHeight"},ze={CLIENT_SIDE:"clientSide",SERVER_SIDE:"serverSide",INFINITE:"infinite",VIEWPORT:"viewport"},er={DEFAULT_FLEX:1,ACTION_COLUMN_WIDTH:150,SORTABLE:!0,FILTER:!1},Tt={NO_DATA:"N/A",LOADING:"Loading...",NO_RECORDS:"No records found"},St={AG_THEME_ALPINE:"ag-theme-alpine",AG_THEME_BALHAM:"ag-theme-balham",AG_THEME_MATERIAL:"ag-theme-material"},pt={URL_REVOKE:100};Le.ModuleRegistry.registerModules([Le.ClientSideRowModelModule,Le.AllCommunityModule]);const _t=({rows:n,totalRecords:E,currentPage:d,loading:S,onPageChange:i,columns:Y,pageSize:q,pageSizeOptions:_,onPageSizeChange:O,setSort:$,sortModel:h,height:v=Et.DEFAULT_HEIGHT,domLayout:x=$e.NORMAL,getRowHeight:W,pinnedBottomRowData:te,showLoader:ce=!0,emptyDataMessage:Q,...k})=>{const L=T.useRef(null),F=T.useRef([]),ae=U=>{if(U.source!==ft.UI_COLUMN_SORTED||(console.log("Sort Changed Event (User Initiated):",U),!$))return;const B=U.api.getColumnState().filter(Z=>Z.sort).map(Z=>({colId:Z.colId,sort:Z.sort}));console.log("New Sort Model:",B),JSON.stringify(B)!==JSON.stringify(F.current)&&(F.current=B,$(B))};return ce&&S?r.jsx(ut,{style:{display:"flex",alignItems:"center",justifyContent:"center",height:v,minHeight:120},children:r.jsx(a.CircularProgress,{})}):r.jsx(ut,{"data-testid":"ServerSideGrid",className:St.AG_THEME_ALPINE,children:r.jsxs(Xt,{children:[r.jsx(Kt,{height:x===$e.AUTO_HEIGHT?void 0:v,children:r.jsx(kt.AgGridReact,{ref:L,theme:"legacy",columnDefs:Y,rowData:n,pinnedBottomRowData:te,domLayout:x,rowModelType:ze.CLIENT_SIDE,modules:[Le.ClientSideRowModelModule],localeText:{noRowsToShow:Q||"No data to show"},...k,enableBrowserTooltips:!0,suppressMovableColumns:!0,suppressMenuHide:!0,onSortChanged:ae,defaultColDef:{width:170,sortable:!0,unSortIcon:!0,tooltipValueGetter:U=>U.value??Tt.NO_DATA},suppressRowTransform:!0,getRowHeight:W??(()=>54),maintainColumnOrder:!0,initialState:h&&h.length>0?{sort:{sortModel:h.map(U=>({colId:U.colId,sort:U.sort}))}}:void 0})}),E===0&&r.jsx(a.Divider,{})]})})},Rt=({totalRecords:n,currentPage:E,pageSize:d,onPageChange:S})=>{const i=Math.ceil(n/d);return r.jsxs(a.Box,{sx:{display:"flex",gap:2,alignItems:"center"},children:[r.jsx(a.Button,{size:"small",disabled:E===1,onClick:()=>S(E-1),children:"Previous"}),r.jsxs(a.Typography,{variant:"body2",children:["Page ",E," of ",i||1]}),r.jsx(a.Button,{size:"small",disabled:E>=i,onClick:()=>S(E+1),children:"Next"})]})},Ce={MASTER_DATA_MANAGEMENT:"Master Data Management",ADD_NEW_RECORD:"Add New Record",EDIT_RECORD:"Edit Record",VIEW_RECORD:"View Record"},ie={VIEW:"View",ADD_NEW_RECORD:"Add New Record",EDIT:"Edit",CREATE:"Create",UPDATE:"Update",CANCEL:"Cancel",BACK:"Back",EXPORT:"Export"},Pe={SELECT_ENTITY:"Select Entity",ACTIONS:"Actions",FROM:"From",TO:"To"},Ie={SELECT_ENTITY:"Select Entity",SELECT:n=>`Select ${n}`,FILTER_BY:n=>`Filter by ${n}`},ke={CSV:"CSV Format",EXCEL:"Excel Format"},Ve={CSV:"csv",EXCEL:"xlsx"},se={FAILED_LOAD_ENTITIES:"Failed to load entities",FAILED_LOAD_METADATA:"Failed to load metadata",FAILED_LOAD_RECORD:"Failed to load record",FAILED_FETCH_LIST:"Failed to fetch list",FAILED_SAVE_RECORD:"Failed to save record. Please try again.",FAILED_EXPORT_CSV:"Failed to export CSV",FAILED_EXPORT_EXCEL:"Failed to export Excel",FAILED_LOAD_OPTIONS:n=>`Failed to load options for ${n}`,FAILED_LOAD_FORM_CONFIG:"Failed to load form configuration",FIELD_REQUIRED:n=>`${n} is required`,FIELD_MIN_VALUE:(n,E)=>`${n} must be at least ${E}`,FIELD_MAX_VALUE:(n,E)=>`${n} must be at most ${E}`},tr={RECORD_CREATED:"Record created successfully",RECORD_UPDATED:"Record updated successfully",RECORD_DELETED:"Record deleted successfully"},rr={REQUIRED:"This field is required",INVALID_FORMAT:"Invalid format"},ar={NO_DATA_AVAILABLE:"N/A",NO_RECORDS_FOUND:"No records found"},nr={LOADING:"Loading...",PLEASE_WAIT:"Please wait..."},Me={SHOWING:"Showing",OF:"of",ENTRIES:"entries"},or={MASTER_VIEW:"master-view",MASTER_FORM:"master-form",FILTER_SECTION:"filter-section",FORM_SECTION:"form-section",FILTERS:"filters",FILTER_FIELD:"filter-field",FORM_FIELD:"form-field",FIELD_LABEL:"field-label",FIELD_INPUT:"field-input",ACTION_BUTTONS:"action-buttons",FORM_FIELDS:"form-fields",LOADING_CONTAINER:"loading-container"},sr={DEFAULT_TABLE_HEIGHT:500,DEFAULT_PAGE_SIZE:10,DEFAULT_COLUMN_WIDTH:150,MIN_HEIGHT_LOADING:"400px",ACTION_BUTTON_GAP:1,FORM_MARGIN_TOP:3,FORM_MARGIN_BOTTOM:2},We=[10,20,50,100],mt=" *",At="red",gt="_display",ir={ISO_DATE:"YYYY-MM-DD",DISPLAY_DATE:"DD/MM/YYYY",FILE_DATE:"YYYY-MM-DD"},lr={PAGE_SIZE:"Page size"},cr={BASE_URL:"http://localhost:3000",TIMEOUT:3e4,HEADERS:{CONTENT_TYPE:"application/json"}},ur={MASTER:"/master"},dr={ENTITIES:"/master/entities",ENTITY_METADATA:n=>`/master/${n}/metadata`,ENTITY_RECORDS:n=>`/master/${n}/records`,ENTITY_RECORD_BY_ID:(n,E)=>`/master/${n}/records/${E}`,ENTITY_OPTIONS:n=>`/master/${n}/options`,EXPORT_CSV:n=>`/master/${n}/export/csv`,EXPORT_EXCEL:n=>`/master/${n}/export/excel`},Er={GET:"GET",POST:"POST",PUT:"PUT",DELETE:"DELETE",PATCH:"PATCH"},fr={PAGE:"page",LIMIT:"limit",SEARCH:"search",SEARCH_BY:"searchBy",SORT_BY:"sortBy",SORT_ORDER:"sortOrder"},De={ASC:"ASC",DESC:"DESC"},Tr={JSON:"json",BLOB:"blob",TEXT:"text"},He={CSV:"text/csv;charset=utf-8;",EXCEL:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",JSON:"application/json"},Sr={DATA:"data",COUNT:"count",MESSAGE:"message",ERROR:"error"},X={CREATE:"create",EDIT:"edit",VIEW:"view"},Fe={TEXT:"text",DROPDOWN:"dropdown",DATEPICKER:"datepicker",NUMBER:"number",TEXTAREA:"textarea",CHECKBOX:"checkbox",RADIO:"radio"},ge={STRING:"string",NUMBER:"number",FLOAT:"float",DATE:"date",DATERANGE:"daterange",BOOLEAN:"boolean",ARRAY:"array",OBJECT:"object"},pr={API:"API",RAW:"Raw",STATIC:"Static"},_r={ID:"id",NAME:"name",LABEL:"label",VALUE:"value",DISPLAY_NAME:"displayName",TABLE_NAME:"tableName"},Rr={REQUIRED:"required",MIN:"min",MAX:"max",MIN_LENGTH:"minLength",MAX_LENGTH:"maxLength",PATTERN:"pattern",EMAIL:"email",URL:"url"},z={FROM:"From",TO:"To"},mr={TEXT:"text",NUMBER:"number",DATE:"date",EMAIL:"email",PASSWORD:"password",TEL:"tel",URL:"url"},Ar={FLOAT_STEP:.01,INTEGER_STEP:1},gr={ENTITY_MATCH:/\/master\/([^\/]+)\/options/},Ir=({apiClient:n,apiEndpoints:E,onNavigateToNew:d,onNavigateToEdit:S})=>{const i=T.useMemo(()=>Xe(n,E),[n,E]),[Y,q]=T.useState([]),[_,O]=T.useState(null),[$,h]=T.useState([]),[v,x]=T.useState({}),[W,te]=T.useState([]),[ce,Q]=T.useState([]),[k,L]=T.useState(0),[F,ae]=T.useState(10),[U,B]=T.useState(1),[ue,Z]=T.useState(!1),[le,A]=T.useState(!1),[p,c]=T.useState({}),[f,j]=T.useState([]),[y,ee]=T.useState(null),G=T.useRef(!0);T.useEffect(()=>{(async()=>{try{const b=((await i.getEntities()).data||[]).map(R=>({name:R.tableName||R.name,label:R.displayName||R.label}));q(b),b.length>0&&O(b[0])}catch(l){console.error(se.FAILED_LOAD_ENTITIES,l)}})()},[]),T.useEffect(()=>{if(!_)return;(async()=>{try{const I=(await i.getMetadata(_.name)).data||{};h(I.parameterList||[]),te(I.resultsList||[]);const b={};(I.parameterList||[]).forEach(P=>{b[P.name]=null}),x(b);const R={};for(const P of I.parameterList||[])P.options&&Array.isArray(P.options)&&(R[P.name]=P.options);c(R),Q([]),A(!1)}catch(l){console.error(se.FAILED_LOAD_METADATA,l)}})()},[_]);const ne=T.useMemo(()=>{const s={},l=[],I=[];$.forEach(R=>{if(R.dataType===ge.DATERANGE){const Re=v[`${R.name}${z.FROM}`],Ee=v[`${R.name}${z.TO}`];Re&&(s[`${R.name}${z.FROM}`]=Re),Ee&&(s[`${R.name}${z.TO}`]=Ee);return}const P=v[R.name];P==null||P===""||(R.options?s[R.name]=P:(l.push(R.name),I.push(String(P).trim())))});const b={page:U,limit:F};return Object.keys(s).length>0&&Object.entries(s).forEach(([R,P])=>{b[`filters[${R}]`]=P}),l.length>0&&(b.search=I.join(","),b.searchBy=l.join(",")),f.length>0&&(b.sortBy=f.map(R=>R.colId).join(","),b.sortOrder=f.map(R=>R.sort==="desc"?De.DESC:De.ASC).join(",")),console.log("Query params:",b),b},[$,v,U,F,f]),de=T.useCallback(async()=>{if(!(!_||!G.current)){G.current=!1,Z(!0);try{console.log("Fetching with params:",ne);const s=await i.getRecords(_.name,ne),l=s.data||[],I=s.total||0;Q(l),L(I)}catch(s){console.error(se.FAILED_FETCH_LIST,s),console.error("Full error:",s),Q([]),L(0)}finally{Z(!1),G.current=!0}}},[_,ne]);T.useEffect(()=>{le&&(U>1||f.length>0)&&de()},[U,F,f,le,de]);const _e=()=>{B(1),A(!0),setTimeout(()=>{G.current=!0,de()},0)},oe=s=>{ee(s.currentTarget)},Oe=()=>{ee(null)},he=async s=>{if(_)try{const l={},I=[],b=[];$.forEach(N=>{if(N.dataType===ge.DATERANGE){const Se=v[`${N.name}${z.FROM}`],Ne=v[`${N.name}${z.TO}`];Se&&(l[`${N.name}${z.FROM}`]=Se),Ne&&(l[`${N.name}${z.TO}`]=Ne);return}const re=v[N.name];re==null||re===""||(N.options?l[N.name]=re:(I.push(N.name),b.push(String(re).trim())))});const R={};Object.keys(l).length>0&&Object.entries(l).forEach(([N,re])=>{R[`filters[${N}]`]=re}),I.length>0&&(R.search=b.join(","),R.searchBy=I.join(",")),f.length>0&&(R.sortBy=f.map(N=>N.colId).join(","),R.sortOrder=f.map(N=>N.sort==="desc"?De.DESC:De.ASC).join(",")),console.log("Export params:",R);const P=s==="csv"?await i.exportCSV(_.name,R):await i.exportExcel(_.name,R),Re=P.headers["content-type"]||(s==="csv"?He.CSV:He.EXCEL),Ee=new Blob([P.data],{type:Re}),xe=P.headers["content-disposition"];let fe=`${_.name}_${new Date().toISOString().split("T")[0]}`;if(xe){const N=xe.match(/filename="?(.+)"?/i);N&&N[1]&&(fe=N[1].replace(/["]/g,""))}else{const N=s==="csv"?Ve.CSV:Ve.EXCEL;fe.endsWith(`.${N}`)||(fe+=`.${N}`)}const Te=URL.createObjectURL(Ee),K=document.createElement("a");K.href=Te,K.download=fe,K.style.display="none",document.body.appendChild(K),K.click(),document.body.removeChild(K),setTimeout(()=>URL.revokeObjectURL(Te),pt.URL_REVOKE),console.log(`${s.toUpperCase()} export successful:`,fe)}catch(l){console.error(`Failed to export ${s.toUpperCase()}:`,l),alert(`Failed to export ${s.toUpperCase()}. Please try again.`)}finally{Oe()}},je=T.useMemo(()=>{const s=W.map(l=>({field:l.name,headerName:l.label,sortable:!0,filter:!1,flex:1}));return s.push({field:"actions",headerName:Pe.ACTIONS,sortable:!1,filter:!1,width:150,cellRenderer:l=>{const I=l.data;return!I||!_?null:r.jsx(a.Box,{sx:{display:"flex",gap:1,py:1},children:r.jsx(a.Button,{size:"small",variant:"outlined",onClick:()=>S?.(_.name,I.id),children:ie.EDIT})})}}),s},[W,_,S]);return r.jsxs(a.Box,{className:"master-view",children:[r.jsxs(a.Paper,{className:"filter-section",children:[r.jsx(a.Typography,{variant:"h5",gutterBottom:!0,children:Ce.MASTER_DATA_MANAGEMENT}),r.jsxs(a.Box,{className:"filters",children:[r.jsxs(a.Box,{className:"filter-field",children:[r.jsx(a.Typography,{variant:"body2",className:"field-label",children:Pe.SELECT_ENTITY}),r.jsx(a.Autocomplete,{options:Y,getOptionLabel:s=>s.label,value:_,onChange:(s,l)=>O(l),renderInput:s=>r.jsx(a.TextField,{...s,size:"small",placeholder:Ie.SELECT_ENTITY}),className:"field-input"})]}),$.filter(s=>s.name.toLowerCase()!=="id").map(s=>r.jsxs(a.Box,{className:"filter-field",children:[r.jsx(a.Typography,{variant:"body2",className:"field-label",children:s.label}),s.dataType===ge.DATERANGE?r.jsxs(a.Box,{sx:{display:"flex",gap:1,width:"100%"},children:[r.jsx(a.TextField,{type:"date",size:"small",value:v[`${s.name}${z.FROM}`]||"",onChange:l=>x(I=>({...I,[`${s.name}${z.FROM}`]:l.target.value})),sx:{flex:1}}),r.jsx(a.TextField,{type:"date",size:"small",label:Pe.TO,value:v[`${s.name}${z.TO}`]||"",onChange:l=>x(I=>({...I,[`${s.name}${z.TO}`]:l.target.value})),sx:{flex:1}})]}):s.dataType===ge.DATE?r.jsx(a.TextField,{type:"date",size:"small",value:v[s.name]||"",onChange:l=>x(I=>({...I,[s.name]:l.target.value})),className:"field-input"}):s.options?r.jsx(a.Autocomplete,{options:p[s.name]||s.options,getOptionLabel:l=>l.label||String(l.value),value:p[s.name]?.find(l=>l.value===v[s.name])||null,onChange:(l,I)=>x(b=>({...b,[s.name]:I?.value||null})),renderInput:l=>r.jsx(a.TextField,{...l,size:"small",placeholder:Ie.SELECT(s.label)}),className:"field-input"}):s.dataType===ge.NUMBER?r.jsx(a.TextField,{type:"number",size:"small",value:v[s.name]||"",onChange:l=>x(I=>({...I,[s.name]:l.target.value})),placeholder:Ie.FILTER_BY(s.label),className:"field-input"}):r.jsx(a.TextField,{size:"small",value:v[s.name]||"",onChange:l=>x(I=>({...I,[s.name]:l.target.value})),placeholder:Ie.FILTER_BY(s.label),className:"field-input"})]},s.name))]}),r.jsxs(a.Box,{className:"action-buttons",children:[r.jsx(a.Button,{variant:"contained",onClick:_e,children:ie.VIEW}),r.jsx(a.Button,{variant:"contained",disabled:!_,onClick:()=>_&&d?.(_.name),children:ie.ADD_NEW_RECORD})]})]}),le&&r.jsxs(a.Box,{mt:4,width:"100%",children:[r.jsxs(a.Box,{display:"flex",justifyContent:"flex-end",mb:2,children:[r.jsx(a.Button,{variant:"outlined",onClick:oe,disabled:!_,children:ie.EXPORT}),r.jsxs(a.Menu,{anchorEl:y,open:!!y,onClose:Oe,children:[r.jsx(a.MenuItem,{onClick:()=>he("csv"),children:ke.CSV}),r.jsx(a.MenuItem,{onClick:()=>he("excel"),children:ke.EXCEL})]})]}),r.jsx(_t,{rows:ce,columns:je,totalRecords:k,currentPage:U,loading:ue,rowModelType:ze.CLIENT_SIDE,onPageChange:B,pageSize:F,pageSizeOptions:[...We],onPageSizeChange:s=>{ae(s),B(1)},setSort:j,sortModel:f,height:500},_?.name),r.jsxs(zt,{children:[r.jsx(a.Box,{display:"flex",alignItems:"center",gap:1,children:r.jsxs(Jt,{variant:"outlined",size:"small",children:[r.jsxs(dt,{children:[Me.SHOWING," "]}),r.jsx(qt,{value:F,inputProps:{"aria-label":"Page size"},onChange:s=>{ae(Number(s.target.value)),B(1)},children:We.map(s=>r.jsx(a.MenuItem,{value:s,children:s},s))}),r.jsxs(dt,{children:[Me.OF," ",k," ",Me.ENTRIES]})]})}),r.jsx(Rt,{totalRecords:k,currentPage:U,onPageChange:B,pageSize:F})]})]})]})},Or=({apiClient:n,apiEndpoints:E,entity:d,id:S,mode:i,onBack:Y,onSuccess:q})=>{const _=T.useMemo(()=>Xe(n,E),[n,E]),[O,$]=T.useState({}),[h,v]=T.useState({}),[x,W]=T.useState(!1),[te,ce]=T.useState({}),[Q,k]=T.useState(!0),[L,F]=T.useState(null),ae=T.useMemo(()=>Object.keys(O),[O]),U=T.useMemo(()=>ae.sort((A,p)=>{const c=O[A],f=O[p];return c?.validation?.required&&!f?.validation?.required?-1:!c?.validation?.required&&f?.validation?.required?1:A.localeCompare(p)}),[ae,O]);T.useEffect(()=>{if(!d)return;let A=!0;return(async()=>{k(!0),F(null);try{const c=await _.getMetadata(d);if(!A)return;const j=(c.data?.data||c.data||{}).formConfig||{};$(j);const y={};for(const[ee,G]of Object.entries(j))if(G.fieldType===Fe.DROPDOWN)if(G.optionType==="API"&&G.option&&typeof G.option=="string")try{const _e=((await _.getDropdownOptions(G.option)).data||[]).map(oe=>({value:oe.id,label:oe.name||oe.displayName||String(oe.id)}));y[G.fieldName]=_e}catch(ne){console.error(`Failed to load options for ${ee}:`,ne),y[G.fieldName]=[]}else G.optionType==="Raw"&&Array.isArray(G.option)&&(y[G.fieldName]=G.option);A&&ce(y)}catch(c){console.error(se.FAILED_LOAD_METADATA,c),A&&F(se.FAILED_LOAD_FORM_CONFIG)}finally{A&&k(!1)}})(),()=>{A=!1}},[d,_,n]),T.useEffect(()=>{if(!d||!S||i===X.CREATE){v({});return}let A=!0;return(async()=>{W(!0),F(null);try{const c=await _.getRecord(d,S);if(!A)return;const f=c.data?.data||c.data||{},j={};for(const[y,ee]of Object.entries(f))y.endsWith(gt)||(j[y]=ee);v(j)}catch(c){console.error(se.FAILED_LOAD_RECORD,c),A&&F(se.FAILED_LOAD_RECORD)}finally{A&&W(!1)}})(),()=>{A=!1}},[d,S,i,_]);const B=T.useCallback((A,p)=>{v(c=>({...c,[A]:p}))},[]),ue=T.useCallback(()=>{const A=[];for(const[p,c]of Object.entries(O))c.validation?.required&&!h[c.fieldName]&&A.push(se.FIELD_REQUIRED(p)),c.validation?.min!==void 0&&h[c.fieldName]<c.validation.min&&A.push(`${p} must be at least ${c.validation.min}`),c.validation?.max!==void 0&&h[c.fieldName]>c.validation.max&&A.push(`${p} must be at most ${c.validation.max}`);return A},[O,h]),Z=T.useCallback(async()=>{if(!d)return;const A=ue();if(A.length>0){F(A.join(", "));return}W(!0),F(null);try{const p={};for(const c of Object.values(O)){const f=c.fieldName;f&&h[f]!==void 0&&h[f]!==""&&(p[f]=h[f])}if(i===X.CREATE){const c=await _.createRecord(d,{data:p});q?.(c)}else if(S){const c=await _.updateRecord(d,S,{data:p});q?.(c)}Y?.()}catch(p){console.error("Failed to save record:",p);const c=p?.response?.data?.message||(Array.isArray(p?.response?.data?.message)?p.response.data.message.join(", "):"Failed to save record. Please try again.");F(c)}finally{W(!1)}},[d,O,h,ue,i,S,_,Y,q]),le=T.useCallback(A=>{const p=O[A],c=p?.fieldName;if(!p||c==="id")return null;const f=h[c]??"",j=i===X.VIEW||x;return r.jsxs(a.Box,{className:"form-field",children:[r.jsxs(a.Typography,{variant:"body2",className:"field-label",children:[A,p.validation?.required&&i!==X.VIEW&&r.jsx("span",{style:{color:At},children:mt})]}),p.fieldType===Fe.DROPDOWN?r.jsx(a.Autocomplete,{options:te[c]||[],getOptionLabel:y=>y.label||String(y.value),value:te[c]?.find(y=>y.value===f)||null,onChange:(y,ee)=>B(c,ee?.value??null),disabled:j,loading:Q,renderInput:y=>r.jsx(a.TextField,{...y,size:"small",placeholder:Ie.SELECT(A),error:p.validation?.required&&!f&&i!==X.VIEW}),className:"field-input"}):p.fieldType===Fe.DATEPICKER?r.jsx(a.TextField,{type:"date",size:"small",value:f?String(f).slice(0,10):"",onChange:y=>B(c,y.target.value),disabled:j,error:p.validation?.required&&!f&&i!==X.VIEW,className:"field-input",InputLabelProps:{shrink:!0}}):p.dataType==="number"||p.dataType==="float"?r.jsx(a.TextField,{type:"number",size:"small",value:f,onChange:y=>B(c,y.target.value),disabled:j,placeholder:A,error:p.validation?.required&&!f&&i!==X.VIEW,inputProps:{max:p.validation?.max,min:p.validation?.min,step:p.dataType==="float"?.01:1},className:"field-input"}):r.jsx(a.TextField,{size:"small",value:f,onChange:y=>B(c,y.target.value),disabled:j,placeholder:A,error:p.validation?.required&&!f&&i!==X.VIEW,inputProps:{maxLength:p.validation?.max},className:"field-input"})]},A)},[O,h,te,B,i,x,Q]);return Q?r.jsx(a.Box,{className:"loading-container",display:"flex",justifyContent:"center",alignItems:"center",minHeight:"400px",children:r.jsx(a.CircularProgress,{})}):r.jsx(a.Box,{className:"master-form",children:r.jsxs(a.Paper,{className:"form-section",children:[r.jsxs(a.Typography,{variant:"h5",gutterBottom:!0,children:[i===X.CREATE?Ce.ADD_NEW_RECORD:i===X.EDIT?Ce.EDIT_RECORD:Ce.VIEW_RECORD,d&&` - ${d.charAt(0).toUpperCase()+d.slice(1)}`]}),L&&r.jsx(a.Alert,{severity:"error",onClose:()=>F(null),sx:{mb:2},children:L}),x&&i!==X.VIEW&&r.jsx(a.Box,{display:"flex",justifyContent:"center",my:2,children:r.jsx(a.CircularProgress,{size:24})}),r.jsx(a.Box,{className:"form-fields",children:U.map(le)}),r.jsx(a.Box,{className:"action-buttons",mt:3,children:i!==X.VIEW?r.jsxs(r.Fragment,{children:[r.jsx(a.Button,{variant:"contained",onClick:Z,disabled:x,children:x?r.jsx(a.CircularProgress,{size:24}):i===X.CREATE?ie.CREATE:ie.UPDATE}),r.jsx(a.Button,{variant:"outlined",onClick:()=>Y?.(),disabled:x,children:ie.CANCEL})]}):r.jsx(a.Button,{variant:"outlined",onClick:()=>Y?.(),children:ie.BACK})})]})})},hr={ROOT:"/",MASTER:"/master",MASTER_ENTITY_NEW:n=>`/master/${n}/new`,MASTER_ENTITY_VIEW:(n,E)=>`/master/${n}/${E}`,MASTER_ENTITY_EDIT:(n,E)=>`/master/${n}/${E}/edit`},vr={ROOT:"/",MASTER:"/master",MASTER_ENTITY_NEW:"/master/:entity/new",MASTER_ENTITY_VIEW:"/master/:entity/:id",MASTER_ENTITY_EDIT:"/master/:entity/:id/edit"},yr={NEW:"new",EDIT:"edit",VIEW:"view"},Dr={ENTITY:"entity",ID:"id"},Cr={NEW:"/new",EDIT:"/edit"};exports.API_BASE_PATHS=ur;exports.API_CONFIG=cr;exports.API_ENDPOINTS=dr;exports.ARIA_LABELS=lr;exports.BUTTON_LABELS=ie;exports.COLUMN_PROPERTIES=er;exports.CSS_CLASSES=or;exports.DATA_TYPES=ge;exports.DATE_FORMATS=ir;exports.DATE_RANGE_SUFFIXES=z;exports.DISPLAY_FIELD_SUFFIX=gt;exports.EMPTY_STATE_MESSAGES=ar;exports.ERROR_MESSAGES=se;exports.EXPORT_OPTIONS=ke;exports.FIELD_LABELS=Pe;exports.FIELD_NAMES=_r;exports.FIELD_TYPES=Fe;exports.FILE_EXTENSIONS=Ve;exports.FORM_MODES=X;exports.GRID_CSS_CLASSES=St;exports.GRID_EVENT_SOURCES=ft;exports.GRID_LAYOUT=$e;exports.GRID_MESSAGES=Tt;exports.GRID_SETTINGS=Et;exports.GRID_TEXT=Me;exports.GRID_TIMEOUTS=pt;exports.HTTP_METHODS=Er;exports.INPUT_TYPES=mr;exports.LOADING_MESSAGES=nr;exports.MIME_TYPES=He;exports.MasterForm=Or;exports.MasterView=Ir;exports.NUMBER_INPUT=Ar;exports.OPTION_TYPES=pr;exports.PAGE_SIZE_OPTIONS=We;exports.PAGE_TITLES=Ce;exports.PAGINATION_SETTINGS=Qt;exports.PLACEHOLDERS=Ie;exports.Pagination=Rt;exports.QUERY_PARAMS=fr;exports.REGEX_PATTERNS=gr;exports.REQUIRED_INDICATOR=mt;exports.REQUIRED_INDICATOR_COLOR=At;exports.RESPONSE_KEYS=Sr;exports.RESPONSE_TYPES=Tr;exports.ROUTES=hr;exports.ROUTE_KEYS=yr;exports.ROUTE_PATTERNS=vr;exports.ROUTE_SUFFIXES=Cr;exports.ROW_MODEL_TYPES=ze;exports.SORT_ORDER=De;exports.SORT_SETTINGS=Zt;exports.STYLE_CONSTANTS=sr;exports.SUCCESS_MESSAGES=tr;exports.ServerSideGrid=_t;exports.URL_PARAMS=Dr;exports.VALIDATION_MESSAGES=rr;exports.VALIDATION_RULES=Rr;exports.createApiService=Xe;
|
|
14
|
+
<%s key={someKey} {...props} />`,ke,_e,Yt,_e),st[_e+ke]=!0}}return e===S?jt(G):Mt(G),G}}function wt(e,t,s){return it(e,t,s,!0)}function Ut(e,t,s){return it(e,t,s,!1)}var Gt=Ut,Bt=wt;ve.Fragment=S,ve.jsx=Gt,ve.jsxs=Bt})()),ve}var ut;function Ht(){return ut||(ut=1,process.env.NODE_ENV==="production"?be.exports=Vt():be.exports=Wt()),be.exports}var a=Ht();const zt=n.styled(n.Box)(({theme:o})=>({width:"100%",fontFamily:o.typography.fontFamily})),dt=n.styled("div")(({theme:o})=>({width:"100%","& .ag-header":{borderRadius:"8px 8px 0 0"},"& .ag-theme-alpine":{fontFamily:o.typography.fontFamily},"& .ag-header-cell-text":{fontSize:"14px",fontWeight:400,color:"#333"},"& .ag-cell":{fontSize:"14px",fontWeight:400,color:"#000",padding:"12px 16px",display:"flex",alignItems:"center"},"& .right-aligned-cell":{textAlign:"right"},"& .right-aligned-clickable-cell":{textAlign:"right",cursor:"pointer",color:"#1976d2",textDecoration:"underline"},"& .ag-header-cell.right-aligned-header":{justifyContent:"flex-end"},"& .ag-header-cell.right-aligned-header .ag-header-cell-label":{justifyContent:"flex-end",display:"flex",width:"100%"},"& .ag-cell:focus, .ag-cell:focus-within":{border:"1px solid transparent !important"}}));n.styled(n.Box)(()=>({position:"fixed",inset:0,display:"flex",alignItems:"center",justifyContent:"center",zIndex:1301,background:"rgba(255, 255, 255, 0.5)"}));const Xt=n.styled(n.Box)(({theme:o})=>({display:"flex",justifyContent:"flex-end",marginTop:"16px",gap:"16px",[o.breakpoints.down("md")]:{flexWrap:"wrap",justifyContent:"center",gap:"12px"},[o.breakpoints.down("sm")]:{flexDirection:"column",alignItems:"center",gap:"16px"}})),qt=n.styled(n.Select)(()=>({fontSize:"14px",border:"none",boxShadow:"none",".MuiOutlinedInput-notchedOutline":{border:"none"},padding:"0px","& .MuiSelect-icon":{right:0},"& .MuiInputBase-input":{padding:0,paddingLeft:"8px",paddingRight:"32px !important"}})),Kt=n.styled(n.Box)(({height:o})=>({...o!==void 0&&{height:`${o}px`},"&.ag-theme-alpine":{border:"none !important"},".ag-root-wrapper":{border:"none !important"},".ag-header":{borderBottom:"none !important",backgroundColor:"#f5f5f5"},".ag-body-viewport":{border:"none !important"},".ag-header-cell img[alt='sort']":{display:"none",opacity:0,transition:"opacity 0.2s ease, visibility 0.2s ease"},".ag-header-cell:hover img[alt='sort']":{display:"block",opacity:1},".ag-row.ag-row-pinned":{borderBottom:"2px solid #e0e0e0"},".ag-header-cell":{display:"flex",alignItems:"center",justifyContent:"space-between"}})),Jt=n.styled(n.FormControl)(({theme:o})=>({display:"flex",flexDirection:"row",alignItems:"center",[o.breakpoints.down("sm")]:{flexWrap:"wrap",justifyContent:"center",gap:"8px"}})),Et=n.styled(n.Box)(({theme:o})=>({fontWeight:300,fontSize:"14px",[o.breakpoints.down("sm")]:{fontSize:"12px"}})),ft={DEFAULT_HEIGHT:500,MIN_HEIGHT:300,MAX_HEIGHT:800,DEFAULT_ROW_HEIGHT:50},Qt={DEFAULT_PAGE:1,DEFAULT_PAGE_SIZE:10,PAGE_SIZE_OPTIONS:[10,20,50,100],MIN_PAGE:1},Zt={ASC:"asc",DESC:"desc"},Tt={UI_COLUMN_SORTED:"uiColumnSorted",API:"api",COLUMN_MOVED:"columnMoved"},$e={NORMAL:"normal",AUTO_HEIGHT:"autoHeight"},qe={CLIENT_SIDE:"clientSide",SERVER_SIDE:"serverSide",INFINITE:"infinite",VIEWPORT:"viewport"},er={DEFAULT_FLEX:1,ACTION_COLUMN_WIDTH:150,SORTABLE:!0,FILTER:!1},St={NO_DATA:"N/A",LOADING:"Loading...",NO_RECORDS:"No records found"},pt={AG_THEME_ALPINE:"ag-theme-alpine",AG_THEME_BALHAM:"ag-theme-balham",AG_THEME_MATERIAL:"ag-theme-material"},_t={URL_REVOKE:100};Le.ModuleRegistry.registerModules([Le.ClientSideRowModelModule,Le.AllCommunityModule]);const Rt=({rows:o,totalRecords:T,currentPage:d,loading:S,onPageChange:l,columns:Y,pageSize:J,pageSizeOptions:_,onPageSizeChange:I,setSort:k,sortModel:O,height:h=ft.DEFAULT_HEIGHT,domLayout:N=$e.NORMAL,getRowHeight:W,pinnedBottomRowData:ae,showLoader:Ee=!0,emptyDataMessage:X,...$})=>{const b=f.useRef(null),P=f.useRef([]),se=w=>{if(w.source!==Tt.UI_COLUMN_SORTED||(console.log("Sort Changed Event (User Initiated):",w),!k))return;const B=w.api.getColumnState().filter(q=>q.sort).map(q=>({colId:q.colId,sort:q.sort}));console.log("New Sort Model:",B),JSON.stringify(B)!==JSON.stringify(P.current)&&(P.current=B,k(B))};return Ee&&S?a.jsx(dt,{style:{display:"flex",alignItems:"center",justifyContent:"center",height:h,minHeight:120},children:a.jsx(n.CircularProgress,{})}):a.jsx(dt,{"data-testid":"ServerSideGrid",className:pt.AG_THEME_ALPINE,children:a.jsxs(zt,{children:[a.jsx(Kt,{height:N===$e.AUTO_HEIGHT?void 0:h,children:a.jsx($t.AgGridReact,{ref:b,theme:"legacy",columnDefs:Y,rowData:o,pinnedBottomRowData:ae,domLayout:N,rowModelType:qe.CLIENT_SIDE,modules:[Le.ClientSideRowModelModule],localeText:{noRowsToShow:X||"No data to show"},...$,enableBrowserTooltips:!0,suppressMovableColumns:!0,suppressMenuHide:!0,onSortChanged:se,suppressAutoSize:!0,suppressColumnMoveAnimation:!0,defaultColDef:{width:170,sortable:!0,unSortIcon:!0,tooltipValueGetter:w=>w.value??St.NO_DATA,suppressSizeToFit:!0,suppressAutoSize:!0,resizable:!0,lockPosition:!0,lockPinned:!0},suppressRowTransform:!0,getRowHeight:W??(()=>54),maintainColumnOrder:!0,suppressColumnVirtualisation:!1,suppressAnimationFrame:!1,skipHeaderOnAutoSize:!0,initialState:O&&O.length>0?{sort:{sortModel:O.map(w=>({colId:w.colId,sort:w.sort}))}}:void 0})}),T===0&&a.jsx(n.Divider,{})]})})},mt=({totalRecords:o,currentPage:T,pageSize:d,onPageChange:S})=>{const l=Math.ceil(o/d);return a.jsxs(n.Box,{sx:{display:"flex",gap:2,alignItems:"center"},children:[a.jsx(n.Button,{size:"small",disabled:T===1,onClick:()=>S(T-1),children:"Previous"}),a.jsxs(n.Typography,{variant:"body2",children:["Page ",T," of ",l||1]}),a.jsx(n.Button,{size:"small",disabled:T>=l,onClick:()=>S(T+1),children:"Next"})]})},Pe={MASTER_DATA_MANAGEMENT:"Master Data Management",ADD_NEW_RECORD:"Add New Record",EDIT_RECORD:"Edit Record",VIEW_RECORD:"View Record"},ce={VIEW:"View",ADD_NEW_RECORD:"Add New Record",EDIT:"Edit",CREATE:"Create",UPDATE:"Update",CANCEL:"Cancel",BACK:"Back",EXPORT:"Export"},Fe={SELECT_ENTITY:"Select Entity",ACTIONS:"Actions",FROM:"From",TO:"To"},Ie={SELECT_ENTITY:"Select Entity",SELECT:o=>`Select ${o}`,FILTER_BY:o=>`Filter by ${o}`},Ve={CSV:"CSV Format",EXCEL:"Excel Format"},We={CSV:"csv",EXCEL:"xlsx"},oe={FAILED_LOAD_ENTITIES:"Failed to load entities",FAILED_LOAD_METADATA:"Failed to load metadata",FAILED_LOAD_RECORD:"Failed to load record",FAILED_FETCH_LIST:"Failed to fetch list",FAILED_SAVE_RECORD:"Failed to save record. Please try again.",FAILED_EXPORT_CSV:"Failed to export CSV",FAILED_EXPORT_EXCEL:"Failed to export Excel",FAILED_LOAD_OPTIONS:o=>`Failed to load options for ${o}`,FAILED_LOAD_FORM_CONFIG:"Failed to load form configuration",FIELD_REQUIRED:o=>`${o} is required`,FIELD_MIN_VALUE:(o,T)=>`${o} must be at least ${T}`,FIELD_MAX_VALUE:(o,T)=>`${o} must be at most ${T}`},tr={RECORD_CREATED:"Record created successfully",RECORD_UPDATED:"Record updated successfully",RECORD_DELETED:"Record deleted successfully"},rr={REQUIRED:"This field is required",INVALID_FORMAT:"Invalid format"},ar={NO_DATA_AVAILABLE:"N/A",NO_RECORDS_FOUND:"No records found"},nr={LOADING:"Loading...",PLEASE_WAIT:"Please wait..."},Me={SHOWING:"Showing",OF:"of",ENTRIES:"entries"},or={MASTER_VIEW:"master-view",MASTER_FORM:"master-form",FILTER_SECTION:"filter-section",FORM_SECTION:"form-section",FILTERS:"filters",FILTER_FIELD:"filter-field",FORM_FIELD:"form-field",FIELD_LABEL:"field-label",FIELD_INPUT:"field-input",ACTION_BUTTONS:"action-buttons",FORM_FIELDS:"form-fields",LOADING_CONTAINER:"loading-container"},sr={DEFAULT_TABLE_HEIGHT:500,DEFAULT_PAGE_SIZE:10,DEFAULT_COLUMN_WIDTH:150,MIN_HEIGHT_LOADING:"400px",ACTION_BUTTON_GAP:1,FORM_MARGIN_TOP:3,FORM_MARGIN_BOTTOM:2},He=[10,20,50,100],At=" *",gt="red",It="_display",ir={ISO_DATE:"YYYY-MM-DD",DISPLAY_DATE:"DD/MM/YYYY",FILE_DATE:"YYYY-MM-DD"},lr={PAGE_SIZE:"Page size"},cr={BASE_URL:"http://localhost:3000",TIMEOUT:3e4,HEADERS:{CONTENT_TYPE:"application/json"}},ur={MASTER:"/master"},dr={ENTITIES:"/master/entities",ENTITY_METADATA:o=>`/master/${o}/metadata`,ENTITY_RECORDS:o=>`/master/${o}/records`,ENTITY_RECORD_BY_ID:(o,T)=>`/master/${o}/records/${T}`,ENTITY_OPTIONS:o=>`/master/${o}/options`,EXPORT_CSV:o=>`/master/${o}/export/csv`,EXPORT_EXCEL:o=>`/master/${o}/export/excel`},Er={GET:"GET",POST:"POST",PUT:"PUT",DELETE:"DELETE",PATCH:"PATCH"},fr={PAGE:"page",LIMIT:"limit",SEARCH:"search",SEARCH_BY:"searchBy",SORT_BY:"sortBy",SORT_ORDER:"sortOrder"},ye={ASC:"ASC",DESC:"DESC"},Tr={JSON:"json",BLOB:"blob",TEXT:"text"},ze={CSV:"text/csv;charset=utf-8;",EXCEL:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",JSON:"application/json"},Sr={DATA:"data",COUNT:"count",MESSAGE:"message",ERROR:"error"},z={CREATE:"create",EDIT:"edit",VIEW:"view"},je={TEXT:"text",DROPDOWN:"dropdown",DATEPICKER:"datepicker",NUMBER:"number",TEXTAREA:"textarea",CHECKBOX:"checkbox",RADIO:"radio"},ge={STRING:"string",NUMBER:"number",FLOAT:"float",DATE:"date",DATERANGE:"daterange",BOOLEAN:"boolean",ARRAY:"array",OBJECT:"object"},pr={API:"API",RAW:"Raw",STATIC:"Static"},_r={ID:"id",NAME:"name",LABEL:"label",VALUE:"value",DISPLAY_NAME:"displayName",TABLE_NAME:"tableName"},Rr={REQUIRED:"required",MIN:"min",MAX:"max",MIN_LENGTH:"minLength",MAX_LENGTH:"maxLength",PATTERN:"pattern",EMAIL:"email",URL:"url"},K={FROM:"From",TO:"To"},mr={TEXT:"text",NUMBER:"number",DATE:"date",EMAIL:"email",PASSWORD:"password",TEL:"tel",URL:"url"},Ar={FLOAT_STEP:.01,INTEGER_STEP:1},gr={ENTITY_MATCH:/\/master\/([^\/]+)\/options/},Ir=({apiClient:o,apiEndpoints:T,onNavigateToNew:d,onNavigateToEdit:S})=>{const l=f.useMemo(()=>Xe(o,T),[o,T]),[Y,J]=f.useState([]),[_,I]=f.useState(null),[k,O]=f.useState([]),[h,N]=f.useState({}),[W,ae]=f.useState([]),[Ee,X]=f.useState([]),[$,b]=f.useState(0),[P,se]=f.useState(10),[w,B]=f.useState(1),[fe,q]=f.useState(!1),[ue,A]=f.useState(!1),[p,c]=f.useState({}),[E,U]=f.useState([]),[v,re]=f.useState(null),M=f.useRef(!0),Q=f.useRef({page:0,pageSize:0,sort:""});f.useEffect(()=>{(async()=>{try{const F=((await l.getEntities()).data||[]).map(C=>({name:C.tableName||C.name,label:C.displayName||C.label}));J(F),F.length>0&&I(F[0])}catch(i){console.error(oe.FAILED_LOAD_ENTITIES,i)}})()},[]),f.useEffect(()=>{if(!_)return;(async()=>{try{const R=(await l.getMetadata(_.name)).data||{};O(R.parameterList||[]),ae(R.resultsList||[]);const F={};(R.parameterList||[]).forEach(D=>{F[D.name]=null}),N(F);const C={};for(const D of R.parameterList||[])D.options&&Array.isArray(D.options)&&(C[D.name]=D.options);c(C),X([]),A(!1)}catch(i){console.error(oe.FAILED_LOAD_METADATA,i)}})()},[_]);const Te=f.useCallback(r=>{const i={},R=[],F=[];k.forEach(D=>{if(D.dataType===ge.DATERANGE){const Re=h[`${D.name}${K.FROM}`],pe=h[`${D.name}${K.TO}`];Re&&(i[`${D.name}${K.FROM}`]=Re),pe&&(i[`${D.name}${K.TO}`]=pe);return}const Z=h[D.name];Z==null||Z===""||(D.options?i[D.name]=Z:(R.push(D.name),F.push(String(Z).trim())))});const C={page:r!==void 0?r:w,limit:P};return Object.keys(i).length>0&&Object.entries(i).forEach(([D,Z])=>{C[`filters[${D}]`]=Z}),R.length>0&&(C.search=F.join(","),C.searchBy=R.join(",")),E.length>0&&(C.sortBy=E.map(D=>D.colId).join(","),C.sortOrder=E.map(D=>D.sort==="desc"?ye.DESC:ye.ASC).join(",")),console.log("Query params:",C),C},[k,h,w,P,E]),Se=f.useCallback(async()=>{if(!(!_||!M.current)){M.current=!1,q(!0);try{const r=Te();console.log("Fetching with params:",r);const i=await l.getRecords(_.name,r),R=i.data||[],F=i.total||0;X(R),b(F)}catch(r){console.error(oe.FAILED_FETCH_LIST,r),console.error("Full error:",r),X([]),b(0)}finally{q(!1),M.current=!0}}},[_,l,Te]);f.useEffect(()=>{if(!ue)return;const r=JSON.stringify(E);(Q.current.page!==w||Q.current.pageSize!==P||Q.current.sort!==r)&&Q.current.page!==0&&(Q.current={page:w,pageSize:P,sort:r},M.current=!0,Se())},[w,P,E,ue,Se]);const ie=async()=>{if(B(1),A(!0),Q.current={page:1,pageSize:P,sort:JSON.stringify(E)},!!_){q(!0),M.current=!1;try{const r=Te(1);console.log("Fetching with params:",r);const i=await l.getRecords(_.name,r),R=i.data||[],F=i.total||0;X(R),b(F)}catch(r){console.error(oe.FAILED_FETCH_LIST,r),console.error("Full error:",r),X([]),b(0)}finally{q(!1),M.current=!0}}},Ce=r=>{re(r.currentTarget)},Oe=()=>{re(null)},De=async r=>{if(_)try{const i={},R=[],F=[];k.forEach(L=>{if(L.dataType===ge.DATERANGE){const xe=h[`${L.name}${K.FROM}`],Ne=h[`${L.name}${K.TO}`];xe&&(i[`${L.name}${K.FROM}`]=xe),Ne&&(i[`${L.name}${K.TO}`]=Ne);return}const ee=h[L.name];ee==null||ee===""||(L.options?i[L.name]=ee:(R.push(L.name),F.push(String(ee).trim())))});const C={};Object.keys(i).length>0&&Object.entries(i).forEach(([L,ee])=>{C[`filters[${L}]`]=ee}),R.length>0&&(C.search=F.join(","),C.searchBy=R.join(",")),E.length>0&&(C.sortBy=E.map(L=>L.colId).join(","),C.sortOrder=E.map(L=>L.sort==="desc"?ye.DESC:ye.ASC).join(",")),console.log("Export params:",C);const D=r==="csv"?await l.exportCSV(_.name,C):await l.exportExcel(_.name,C),Z=D.headers["content-type"]||(r==="csv"?ze.CSV:ze.EXCEL),Re=new Blob([D.data],{type:Z}),pe=D.headers["content-disposition"];let ne=`${_.name}_${new Date().toISOString().split("T")[0]}`;if(pe){const L=pe.match(/filename="?(.+)"?/i);L&&L[1]&&(ne=L[1].replace(/["]/g,""))}else{const L=r==="csv"?We.CSV:We.EXCEL;ne.endsWith(`.${L}`)||(ne+=`.${L}`)}const de=URL.createObjectURL(Re),le=document.createElement("a");le.href=de,le.download=ne,le.style.display="none",document.body.appendChild(le),le.click(),document.body.removeChild(le),setTimeout(()=>URL.revokeObjectURL(de),_t.URL_REVOKE),console.log(`${r.toUpperCase()} export successful:`,ne)}catch(i){console.error(`Failed to export ${r.toUpperCase()}:`,i),alert(`Failed to export ${r.toUpperCase()}. Please try again.`)}finally{Oe()}},we=f.useMemo(()=>{const r=W.map(i=>({field:i.name,headerName:i.label,sortable:!0,filter:!1,width:200,suppressSizeToFit:!0,suppressAutoSize:!0,resizable:!0}));return r.push({field:"actions",headerName:Fe.ACTIONS,sortable:!1,filter:!1,width:150,suppressSizeToFit:!0,suppressAutoSize:!0,resizable:!1,cellRenderer:i=>{const R=i.data;return!R||!_?null:a.jsx(n.Box,{sx:{display:"flex",gap:1,alignItems:"center",height:"100%"},children:a.jsx(n.Button,{size:"small",variant:"outlined",onClick:()=>S?.(_.name,R.id),children:ce.EDIT})})}}),r},[W,_,S]);return a.jsxs(n.Box,{className:"master-view",children:[a.jsxs(n.Paper,{className:"filter-section",children:[a.jsxs(n.Box,{className:"filters",children:[a.jsxs(n.Box,{className:"filter-field",children:[a.jsx(n.Typography,{variant:"body2",className:"field-label",children:Fe.SELECT_ENTITY}),a.jsx(n.Autocomplete,{options:Y,getOptionLabel:r=>r.label,value:_,onChange:(r,i)=>I(i),renderInput:r=>a.jsx(n.TextField,{...r,size:"small",placeholder:Ie.SELECT_ENTITY}),className:"field-input"})]}),k.filter(r=>r.name.toLowerCase()!=="id").map(r=>a.jsxs(n.Box,{className:"filter-field",children:[a.jsx(n.Typography,{variant:"body2",className:"field-label",children:r.label}),r.dataType===ge.DATERANGE?a.jsxs(n.Box,{sx:{display:"flex",gap:1,width:"100%"},children:[a.jsx(n.TextField,{type:"date",size:"small",value:h[`${r.name}${K.FROM}`]||"",onChange:i=>N(R=>({...R,[`${r.name}${K.FROM}`]:i.target.value})),sx:{flex:1}}),a.jsx(n.TextField,{type:"date",size:"small",label:Fe.TO,value:h[`${r.name}${K.TO}`]||"",onChange:i=>N(R=>({...R,[`${r.name}${K.TO}`]:i.target.value})),sx:{flex:1}})]}):r.dataType===ge.DATE?a.jsx(n.TextField,{type:"date",size:"small",value:h[r.name]||"",onChange:i=>N(R=>({...R,[r.name]:i.target.value})),className:"field-input"}):r.options?a.jsx(n.Autocomplete,{options:p[r.name]||r.options,getOptionLabel:i=>i.label||String(i.value),value:p[r.name]?.find(i=>i.value===h[r.name])||null,onChange:(i,R)=>N(F=>({...F,[r.name]:R?.value||null})),renderInput:i=>a.jsx(n.TextField,{...i,size:"small",placeholder:Ie.SELECT(r.label)}),className:"field-input"}):r.dataType===ge.NUMBER?a.jsx(n.TextField,{type:"number",size:"small",value:h[r.name]||"",onChange:i=>N(R=>({...R,[r.name]:i.target.value})),placeholder:Ie.FILTER_BY(r.label),className:"field-input"}):a.jsx(n.TextField,{size:"small",value:h[r.name]||"",onChange:i=>N(R=>({...R,[r.name]:i.target.value})),placeholder:Ie.FILTER_BY(r.label),className:"field-input"})]},r.name))]}),a.jsxs(n.Box,{className:"action-buttons",children:[a.jsx(n.Button,{variant:"contained",onClick:ie,children:ce.VIEW}),a.jsx(n.Button,{variant:"contained",disabled:!_,onClick:()=>_&&d?.(_.name),children:ce.ADD_NEW_RECORD})]})]}),ue&&a.jsxs(n.Box,{mt:4,width:"100%",children:[a.jsxs(n.Box,{display:"flex",justifyContent:"flex-end",mb:2,children:[a.jsx(n.Button,{variant:"outlined",onClick:Ce,disabled:!_,children:ce.EXPORT}),a.jsxs(n.Menu,{anchorEl:v,open:!!v,onClose:Oe,children:[a.jsx(n.MenuItem,{onClick:()=>De("csv"),children:Ve.CSV}),a.jsx(n.MenuItem,{onClick:()=>De("excel"),children:Ve.EXCEL})]})]}),a.jsx(Rt,{rows:Ee,columns:we,totalRecords:$,currentPage:w,loading:fe,rowModelType:qe.CLIENT_SIDE,onPageChange:B,pageSize:P,pageSizeOptions:[...He],onPageSizeChange:r=>{se(r),B(1)},setSort:U,sortModel:E,height:500},_?.name),a.jsxs(Xt,{children:[a.jsx(n.Box,{display:"flex",alignItems:"center",gap:1,children:a.jsxs(Jt,{variant:"outlined",size:"small",children:[a.jsxs(Et,{children:[Me.SHOWING," "]}),a.jsx(qt,{value:P,inputProps:{"aria-label":"Page size"},onChange:r=>{se(Number(r.target.value)),B(1)},children:He.map(r=>a.jsx(n.MenuItem,{value:r,children:r},r))}),a.jsxs(Et,{children:[Me.OF," ",$," ",Me.ENTRIES]})]})}),a.jsx(mt,{totalRecords:$,currentPage:w,onPageChange:B,pageSize:P})]})]})]})},Or=({apiClient:o,apiEndpoints:T,entity:d,id:S,mode:l,onBack:Y,onSuccess:J})=>{const _=f.useMemo(()=>Xe(o,T),[o,T]),[I,k]=f.useState({}),[O,h]=f.useState({}),[N,W]=f.useState(!1),[ae,Ee]=f.useState({}),[X,$]=f.useState(!0),[b,P]=f.useState(null),se=f.useMemo(()=>Object.keys(I),[I]),w=f.useMemo(()=>se.sort((A,p)=>{const c=I[A],E=I[p];return c?.validation?.required&&!E?.validation?.required?-1:!c?.validation?.required&&E?.validation?.required?1:A.localeCompare(p)}),[se,I]);f.useEffect(()=>{if(!d)return;let A=!0;return(async()=>{$(!0),P(null);try{const c=await _.getMetadata(d);if(!A)return;const U=(c.data?.data||c.data||{}).formConfig||{};k(U);const v={};for(const[re,M]of Object.entries(U))if(M.fieldType===je.DROPDOWN)if(M.optionType==="API"&&M.option&&typeof M.option=="string")try{const Se=((await _.getDropdownOptions(M.option)).data||[]).map(ie=>({value:ie.id,label:ie.name||ie.displayName||String(ie.id)}));v[M.fieldName]=Se}catch(Q){console.error(`Failed to load options for ${re}:`,Q),v[M.fieldName]=[]}else M.optionType==="Raw"&&Array.isArray(M.option)&&(v[M.fieldName]=M.option);A&&Ee(v)}catch(c){console.error(oe.FAILED_LOAD_METADATA,c),A&&P(oe.FAILED_LOAD_FORM_CONFIG)}finally{A&&$(!1)}})(),()=>{A=!1}},[d,_,o]),f.useEffect(()=>{if(!d||!S||l===z.CREATE){h({});return}let A=!0;return(async()=>{W(!0),P(null);try{const c=await _.getRecord(d,S);if(!A)return;const E=c.data?.data||c.data||{},U={};for(const[v,re]of Object.entries(E))v.endsWith(It)||(U[v]=re);h(U)}catch(c){console.error(oe.FAILED_LOAD_RECORD,c),A&&P(oe.FAILED_LOAD_RECORD)}finally{A&&W(!1)}})(),()=>{A=!1}},[d,S,l,_]);const B=f.useCallback((A,p)=>{h(c=>({...c,[A]:p}))},[]),fe=f.useCallback(()=>{const A=[];for(const[p,c]of Object.entries(I))c.validation?.required&&!O[c.fieldName]&&A.push(oe.FIELD_REQUIRED(p)),c.validation?.min!==void 0&&O[c.fieldName]<c.validation.min&&A.push(`${p} must be at least ${c.validation.min}`),c.validation?.max!==void 0&&O[c.fieldName]>c.validation.max&&A.push(`${p} must be at most ${c.validation.max}`);return A},[I,O]),q=f.useCallback(async()=>{if(!d)return;const A=fe();if(A.length>0){P(A.join(", "));return}W(!0),P(null);try{const p={};for(const c of Object.values(I)){const E=c.fieldName;E&&O[E]!==void 0&&O[E]!==""&&(p[E]=O[E])}if(l===z.CREATE){const c=await _.createRecord(d,{data:p});J?.(c)}else if(S){const c=await _.updateRecord(d,S,{data:p});J?.(c)}Y?.()}catch(p){console.error("Failed to save record:",p);const c=p?.response?.data?.message||(Array.isArray(p?.response?.data?.message)?p.response.data.message.join(", "):"Failed to save record. Please try again.");P(c)}finally{W(!1)}},[d,I,O,fe,l,S,_,Y,J]),ue=f.useCallback(A=>{const p=I[A],c=p?.fieldName;if(!p||c==="id")return null;const E=O[c]??"",U=l===z.VIEW||N;return a.jsxs(n.Box,{className:"form-field",children:[a.jsxs(n.Typography,{variant:"body2",className:"field-label",children:[A,p.validation?.required&&l!==z.VIEW&&a.jsx("span",{style:{color:gt},children:At})]}),p.fieldType===je.DROPDOWN?a.jsx(n.Autocomplete,{options:ae[c]||[],getOptionLabel:v=>v.label||String(v.value),value:ae[c]?.find(v=>v.value===E)||null,onChange:(v,re)=>B(c,re?.value??null),disabled:U,loading:X,renderInput:v=>a.jsx(n.TextField,{...v,size:"small",placeholder:Ie.SELECT(A),error:p.validation?.required&&!E&&l!==z.VIEW}),className:"field-input"}):p.fieldType===je.DATEPICKER?a.jsx(n.TextField,{type:"date",size:"small",value:E?String(E).slice(0,10):"",onChange:v=>B(c,v.target.value),disabled:U,error:p.validation?.required&&!E&&l!==z.VIEW,className:"field-input",InputLabelProps:{shrink:!0}}):p.dataType==="number"||p.dataType==="float"?a.jsx(n.TextField,{type:"number",size:"small",value:E,onChange:v=>B(c,v.target.value),disabled:U,placeholder:A,error:p.validation?.required&&!E&&l!==z.VIEW,inputProps:{max:p.validation?.max,min:p.validation?.min,step:p.dataType==="float"?.01:1},className:"field-input"}):a.jsx(n.TextField,{size:"small",value:E,onChange:v=>B(c,v.target.value),disabled:U,placeholder:A,error:p.validation?.required&&!E&&l!==z.VIEW,inputProps:{maxLength:p.validation?.max},className:"field-input"})]},A)},[I,O,ae,B,l,N,X]);return X?a.jsx(n.Box,{className:"loading-container",display:"flex",justifyContent:"center",alignItems:"center",minHeight:"400px",children:a.jsx(n.CircularProgress,{})}):a.jsx(n.Box,{className:"master-form",children:a.jsxs(n.Paper,{className:"form-section",children:[a.jsxs(n.Typography,{variant:"h5",gutterBottom:!0,children:[l===z.CREATE?Pe.ADD_NEW_RECORD:l===z.EDIT?Pe.EDIT_RECORD:Pe.VIEW_RECORD,d&&` - ${d.charAt(0).toUpperCase()+d.slice(1)}`]}),b&&a.jsx(n.Alert,{severity:"error",onClose:()=>P(null),sx:{mb:2},children:b}),N&&l!==z.VIEW&&a.jsx(n.Box,{display:"flex",justifyContent:"center",my:2,children:a.jsx(n.CircularProgress,{size:24})}),a.jsx(n.Box,{className:"form-fields",children:w.map(ue)}),a.jsx(n.Box,{className:"action-buttons",mt:3,children:l!==z.VIEW?a.jsxs(a.Fragment,{children:[a.jsx(n.Button,{variant:"contained",onClick:q,disabled:N,children:N?a.jsx(n.CircularProgress,{size:24}):l===z.CREATE?ce.CREATE:ce.UPDATE}),a.jsx(n.Button,{variant:"outlined",onClick:()=>Y?.(),disabled:N,children:ce.CANCEL})]}):a.jsx(n.Button,{variant:"outlined",onClick:()=>Y?.(),children:ce.BACK})})]})})},hr={ROOT:"/",MASTER:"/master",MASTER_ENTITY_NEW:o=>`/master/${o}/new`,MASTER_ENTITY_VIEW:(o,T)=>`/master/${o}/${T}`,MASTER_ENTITY_EDIT:(o,T)=>`/master/${o}/${T}/edit`},vr={ROOT:"/",MASTER:"/master",MASTER_ENTITY_NEW:"/master/:entity/new",MASTER_ENTITY_VIEW:"/master/:entity/:id",MASTER_ENTITY_EDIT:"/master/:entity/:id/edit"},yr={NEW:"new",EDIT:"edit",VIEW:"view"},Cr={ENTITY:"entity",ID:"id"},Dr={NEW:"/new",EDIT:"/edit"};exports.API_BASE_PATHS=ur;exports.API_CONFIG=cr;exports.API_ENDPOINTS=dr;exports.ARIA_LABELS=lr;exports.BUTTON_LABELS=ce;exports.COLUMN_PROPERTIES=er;exports.CSS_CLASSES=or;exports.DATA_TYPES=ge;exports.DATE_FORMATS=ir;exports.DATE_RANGE_SUFFIXES=K;exports.DISPLAY_FIELD_SUFFIX=It;exports.EMPTY_STATE_MESSAGES=ar;exports.ERROR_MESSAGES=oe;exports.EXPORT_OPTIONS=Ve;exports.FIELD_LABELS=Fe;exports.FIELD_NAMES=_r;exports.FIELD_TYPES=je;exports.FILE_EXTENSIONS=We;exports.FORM_MODES=z;exports.GRID_CSS_CLASSES=pt;exports.GRID_EVENT_SOURCES=Tt;exports.GRID_LAYOUT=$e;exports.GRID_MESSAGES=St;exports.GRID_SETTINGS=ft;exports.GRID_TEXT=Me;exports.GRID_TIMEOUTS=_t;exports.HTTP_METHODS=Er;exports.INPUT_TYPES=mr;exports.LOADING_MESSAGES=nr;exports.MIME_TYPES=ze;exports.MasterForm=Or;exports.MasterView=Ir;exports.NUMBER_INPUT=Ar;exports.OPTION_TYPES=pr;exports.PAGE_SIZE_OPTIONS=He;exports.PAGE_TITLES=Pe;exports.PAGINATION_SETTINGS=Qt;exports.PLACEHOLDERS=Ie;exports.Pagination=mt;exports.QUERY_PARAMS=fr;exports.REGEX_PATTERNS=gr;exports.REQUIRED_INDICATOR=At;exports.REQUIRED_INDICATOR_COLOR=gt;exports.RESPONSE_KEYS=Sr;exports.RESPONSE_TYPES=Tr;exports.ROUTES=hr;exports.ROUTE_KEYS=yr;exports.ROUTE_PATTERNS=vr;exports.ROUTE_SUFFIXES=Dr;exports.ROW_MODEL_TYPES=qe;exports.SORT_ORDER=ye;exports.SORT_SETTINGS=Zt;exports.STYLE_CONSTANTS=sr;exports.SUCCESS_MESSAGES=tr;exports.ServerSideGrid=Rt;exports.URL_PARAMS=Cr;exports.VALIDATION_MESSAGES=rr;exports.VALIDATION_RULES=Rr;exports.createApiService=Xe;
|