master-data-management-react 0.1.5 → 0.1.6
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 +8 -8
- package/dist/index.js +696 -673
- package/dist/pages/MasterView/MasterView.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
2
|
-
`+I+e}}var
|
|
3
|
-
`),V=
|
|
4
|
-
`),
|
|
5
|
-
`+
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const T=require("react"),a=require("@mui/material"),kt=require("ag-grid-react"),Le=require("ag-grid-community"),Xe=(n,E)=>({getEntities:async()=>{const d=await n.get(E.entities);return{data:d.data.data??d.data}},getMetadata:async d=>{const S=await n.get(E.metadata(d));return{data:S.data.data??S.data}},getRecords:async(d,S)=>{const i=await n.get(E.records(d),{params:S});return{data:i.data.data??i.data,total:i.data.total??i.data.count??0}},getRecord:async(d,S)=>{const i=await n.get(E.recordById(d,S));return{data:i.data.data??i.data}},createRecord:async(d,S)=>{const i=await n.post(E.records(d),S);return{data:i.data.data??i.data}},updateRecord:async(d,S,i)=>{const Y=await n.put(E.recordById(d,S),i);return{data:Y.data.data??Y.data}},deleteRecord:async(d,S)=>{const i=await n.delete(E.recordById(d,S));return{data:i.data.data??i.data}},exportCSV:async(d,S)=>await n.get(E.exportCSV(d),{params:S,responseType:"blob"}),exportExcel:async(d,S)=>await n.get(E.exportExcel(d),{params:S,responseType:"blob"}),getDropdownOptions:async d=>{const S=E.dropdownOptions?E.dropdownOptions(d):d,i=await n.get(S);return{data:i.data.data??i.data}}});var be={exports:{}},ve={};var it;function Vt(){if(it)return ve;it=1;var n=T,E=Symbol.for("react.element"),d=Symbol.for("react.fragment"),S=Object.prototype.hasOwnProperty,i=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Y={key:!0,ref:!0,__self:!0,__source:!0};function q(_,O,$){var h,v={},x=null,W=null;$!==void 0&&(x=""+$),O.key!==void 0&&(x=""+O.key),O.ref!==void 0&&(W=O.ref);for(h in O)S.call(O,h)&&!Y.hasOwnProperty(h)&&(v[h]=O[h]);if(_&&_.defaultProps)for(h in O=_.defaultProps,O)v[h]===void 0&&(v[h]=O[h]);return{$$typeof:E,type:_,key:x,ref:W,props:v,_owner:i.current}}return ve.Fragment=d,ve.jsx=q,ve.jsxs=q,ve}var ye={};var lt;function Wt(){return lt||(lt=1,process.env.NODE_ENV!=="production"&&(function(){var n=T,E=Symbol.for("react.element"),d=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),Y=Symbol.for("react.profiler"),q=Symbol.for("react.provider"),_=Symbol.for("react.context"),O=Symbol.for("react.forward_ref"),$=Symbol.for("react.suspense"),h=Symbol.for("react.suspense_list"),v=Symbol.for("react.memo"),x=Symbol.for("react.lazy"),W=Symbol.for("react.offscreen"),te=Symbol.iterator,ce="@@iterator";function Q(e){if(e===null||typeof e!="object")return null;var t=te&&e[te]||e[ce];return typeof t=="function"?t:null}var k=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function L(e){{for(var t=arguments.length,o=new Array(t>1?t-1:0),u=1;u<t;u++)o[u-1]=arguments[u];F("error",e,o)}}function F(e,t,o){{var u=k.ReactDebugCurrentFrame,D=u.getStackAddendum();D!==""&&(t+="%s",o=o.concat([D]));var C=o.map(function(g){return String(g)});C.unshift("Warning: "+t),Function.prototype.apply.call(console[e],console,C)}}var ae=!1,U=!1,B=!1,ue=!1,Z=!1,le;le=Symbol.for("react.module.reference");function A(e){return!!(typeof e=="string"||typeof e=="function"||e===S||e===Y||Z||e===i||e===$||e===h||ue||e===W||ae||U||B||typeof e=="object"&&e!==null&&(e.$$typeof===x||e.$$typeof===v||e.$$typeof===q||e.$$typeof===_||e.$$typeof===O||e.$$typeof===le||e.getModuleId!==void 0))}function p(e,t,o){var u=e.displayName;if(u)return u;var D=t.displayName||t.name||"";return D!==""?o+"("+D+")":o}function c(e){return e.displayName||"Context"}function f(e){if(e==null)return null;if(typeof e.tag=="number"&&L("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 i:return"StrictMode";case $:return"Suspense";case h:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case _:var t=e;return c(t)+".Consumer";case q:var o=e;return c(o._context)+".Provider";case O:return p(e,e.render,"ForwardRef");case v:var u=e.displayName||null;return u!==null?u:f(e.type)||"Memo";case x:{var D=e,C=D._payload,g=D._init;try{return f(g(C))}catch{return null}}}return null}var j=Object.assign,y=0,ee,G,ne,de,_e,oe,Oe;function he(){}he.__reactDisabledLog=!0;function je(){{if(y===0){ee=console.log,G=console.info,ne=console.warn,de=console.error,_e=console.group,oe=console.groupCollapsed,Oe=console.groupEnd;var e={configurable:!0,enumerable:!0,value:he,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}y++}}function s(){{if(y--,y===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:j({},e,{value:ee}),info:j({},e,{value:G}),warn:j({},e,{value:ne}),error:j({},e,{value:de}),group:j({},e,{value:_e}),groupCollapsed:j({},e,{value:oe}),groupEnd:j({},e,{value:Oe})})}y<0&&L("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var l=k.ReactCurrentDispatcher,I;function b(e,t,o){{if(I===void 0)try{throw Error()}catch(D){var u=D.stack.trim().match(/\n( *(at )?)/);I=u&&u[1]||""}return`
|
|
2
|
+
`+I+e}}var R=!1,P;{var Re=typeof WeakMap=="function"?WeakMap:Map;P=new Re}function Ee(e,t){if(!e||R)return"";{var o=P.get(e);if(o!==void 0)return o}var u;R=!0;var D=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var C;C=l.current,l.current=null,je();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
|
+
`),V=u.stack.split(`
|
|
4
|
+
`),M=m.length-1,w=V.length-1;M>=1&&w>=0&&m[M]!==V[w];)w--;for(;M>=1&&w>=0;M--,w--)if(m[M]!==V[w]){if(M!==1||w!==1)do if(M--,w--,w<0||m[M]!==V[w]){var J=`
|
|
5
|
+
`+m[M].replace(" at new "," at ");return e.displayName&&J.includes("<anonymous>")&&(J=J.replace("<anonymous>",e.displayName)),typeof e=="function"&&P.set(e,J),J}while(M>=1&&w>=0);break}}}finally{R=!1,l.current=C,s(),Error.prepareStackTrace=D}var Ae=e?e.displayName||e.name:"",pe=Ae?b(Ae):"";return typeof e=="function"&&P.set(e,pe),pe}function xe(e,t,o){return Ee(e,!1)}function fe(e){var t=e.prototype;return!!(t&&t.isReactComponent)}function Te(e,t,o){if(e==null)return"";if(typeof e=="function")return Ee(e,fe(e));if(typeof e=="string")return b(e);switch(e){case $:return b("Suspense");case h:return b("SuspenseList")}if(typeof e=="object")switch(e.$$typeof){case O:return xe(e.render);case v:return Te(e.type,t,o);case x:{var u=e,D=u._payload,C=u._init;try{return Te(C(D),t,o)}catch{}}}return""}var K=Object.prototype.hasOwnProperty,N={},re=k.ReactDebugCurrentFrame;function Se(e){if(e){var t=e._owner,o=Te(e.type,e._source,t?t.type:null);re.setExtraStackFrame(o)}else re.setExtraStackFrame(null)}function Ne(e,t,o,u,D){{var C=Function.call.bind(K);for(var g in e)if(C(e,g)){var m=void 0;try{if(typeof e[g]!="function"){var V=Error((u||"React class")+": "+o+" 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,o,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(M){m=M}m&&!(m instanceof Error)&&(Se(D),L("%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",o,g,typeof m),Se(null)),m instanceof Error&&!(m.message in N)&&(N[m.message]=!0,Se(D),L("Failed %s type: %s",o,m.message),Se(null))}}}var It=Array.isArray;function we(e){return It(e)}function Ot(e){{var t=typeof Symbol=="function"&&Symbol.toStringTag,o=t&&e[Symbol.toStringTag]||e.constructor.name||"Object";return o}}function ht(e){try{return qe(e),!1}catch{return!0}}function qe(e){return""+e}function Ke(e){if(ht(e))return L("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",Ot(e)),qe(e)}var Je=k.ReactCurrentOwner,vt={key:!0,ref:!0,__self:!0,__source:!0},Qe,Ze;function yt(e){if(K.call(e,"ref")){var t=Object.getOwnPropertyDescriptor(e,"ref").get;if(t&&t.isReactWarning)return!1}return e.ref!==void 0}function Dt(e){if(K.call(e,"key")){var t=Object.getOwnPropertyDescriptor(e,"key").get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function Ct(e,t){typeof e.ref=="string"&&Je.current}function xt(e,t){{var o=function(){Qe||(Qe=!0,L("%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))};o.isReactWarning=!0,Object.defineProperty(e,"key",{get:o,configurable:!0})}}function Nt(e,t){{var o=function(){Ze||(Ze=!0,L("%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))};o.isReactWarning=!0,Object.defineProperty(e,"ref",{get:o,configurable:!0})}}var bt=function(e,t,o,u,D,C,g){var m={$$typeof:E,type:e,key:t,ref:o,props:g,_owner:C};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:D}),Object.freeze&&(Object.freeze(m.props),Object.freeze(m)),m};function Lt(e,t,o,u,D){{var C,g={},m=null,V=null;o!==void 0&&(Ke(o),m=""+o),Dt(t)&&(Ke(t.key),m=""+t.key),yt(t)&&(V=t.ref,Ct(t,D));for(C in t)K.call(t,C)&&!vt.hasOwnProperty(C)&&(g[C]=t[C]);if(e&&e.defaultProps){var M=e.defaultProps;for(C in M)g[C]===void 0&&(g[C]=M[C])}if(m||V){var w=typeof e=="function"?e.displayName||e.name||"Unknown":e;m&&xt(g,w),V&&Nt(g,w)}return bt(e,m,V,D,u,Je.current,g)}}var Ue=k.ReactCurrentOwner,et=k.ReactDebugCurrentFrame;function me(e){if(e){var t=e._owner,o=Te(e.type,e._source,t?t.type:null);et.setExtraStackFrame(o)}else et.setExtraStackFrame(null)}var Ge;Ge=!1;function Be(e){return typeof e=="object"&&e!==null&&e.$$typeof===E}function tt(){{if(Ue.current){var e=f(Ue.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 rt={};function Mt(e){{var t=tt();if(!t){var o=typeof e=="string"?e:e.displayName||e.name;o&&(t=`
|
|
8
8
|
|
|
9
|
-
Check the top-level render call using <`+o+">.")}return t}}function
|
|
9
|
+
Check the top-level render call using <`+o+">.")}return t}}function at(e,t){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var o=Mt(t);if(rt[o])return;rt[o]=!0;var u="";e&&e._owner&&e._owner!==Ue.current&&(u=" It was passed a child from "+f(e._owner.type)+"."),me(e),L('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',o,u),me(null)}}function nt(e,t){{if(typeof e!="object")return;if(we(e))for(var o=0;o<e.length;o++){var u=e[o];Be(u)&&at(u,t)}else if(Be(e))e._store&&(e._store.validated=!0);else if(e){var D=Q(e);if(typeof D=="function"&&D!==e.entries)for(var C=D.call(e),g;!(g=C.next()).done;)Be(g.value)&&at(g.value,t)}}}function Ft(e){{var t=e.type;if(t==null||typeof t=="string")return;var o;if(typeof t=="function")o=t.propTypes;else if(typeof t=="object"&&(t.$$typeof===O||t.$$typeof===v))o=t.propTypes;else return;if(o){var u=f(t);Ne(o,e.props,"prop",u,e)}else if(t.PropTypes!==void 0&&!Ge){Ge=!0;var D=f(t);L("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",D||"Unknown")}typeof t.getDefaultProps=="function"&&!t.getDefaultProps.isReactClassApproved&&L("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),o=0;o<t.length;o++){var u=t[o];if(u!=="children"&&u!=="key"){me(e),L("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),L("Invalid attribute `ref` supplied to `React.Fragment`."),me(null))}}var ot={};function st(e,t,o,u,D,C){{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+=tt();var M;e===null?M="null":we(e)?M="array":e!==void 0&&e.$$typeof===E?(M="<"+(f(e.type)||"Unknown")+" />",m=" Did you accidentally export a JSX literal instead of a component?"):M=typeof e,L("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",M,m)}var w=Lt(e,t,o,D,C);if(w==null)return w;if(g){var J=t.children;if(J!==void 0)if(u)if(we(J)){for(var Ae=0;Ae<J.length;Ae++)nt(J[Ae],e);Object.freeze&&Object.freeze(J)}else L("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 nt(J,e)}if(K.call(t,"key")){var pe=f(e),H=Object.keys(t).filter(function($t){return $t!=="key"}),Ye=H.length>0?"{key: someKey, "+H.join(": ..., ")+": ...}":"{key: someKey}";if(!ot[pe+Ye]){var Yt=H.length>0?"{"+H.join(": ..., ")+": ...}":"{}";L(`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} />`,Fe,ue,Yt,ue),rt[ue+Fe]=!0}}return e===T?wt(w):Ft(w),w}}function jt(e,t,o){return at(e,t,o,!0)}function Ut(e,t,o){return at(e,t,o,!1)}var Gt=Ut,Bt=jt;me.Fragment=T,me.jsx=Gt,me.jsxs=Bt})()),me}var st;function Ht(){return st||(st=1,process.env.NODE_ENV==="production"?he.exports=$t():he.exports=Wt()),he.exports}var r=Ht();const Xt=a.styled(a.Box)(({theme:n})=>({width:"100%",fontFamily:n.typography.fontFamily})),it=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"}})),lt=a.styled(a.Box)(({theme:n})=>({fontWeight:300,fontSize:"14px",[n.breakpoints.down("sm")]:{fontSize:"12px"}})),ct={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"},ut={UI_COLUMN_SORTED:"uiColumnSorted",API:"api",COLUMN_MOVED:"columnMoved"},we={NORMAL:"normal",AUTO_HEIGHT:"autoHeight"},Ve={CLIENT_SIDE:"clientSide",SERVER_SIDE:"serverSide",INFINITE:"infinite",VIEWPORT:"viewport"},er={DEFAULT_FLEX:1,ACTION_COLUMN_WIDTH:150,SORTABLE:!0,FILTER:!1},dt={NO_DATA:"N/A",LOADING:"Loading...",NO_RECORDS:"No records found"},Et={AG_THEME_ALPINE:"ag-theme-alpine",AG_THEME_BALHAM:"ag-theme-balham",AG_THEME_MATERIAL:"ag-theme-material"},ft={URL_REVOKE:100};ye.ModuleRegistry.registerModules([ye.ClientSideRowModelModule,ye.AllCommunityModule]);const Tt=({rows:n,totalRecords:E,currentPage:u,loading:T,onPageChange:i,columns:B,pageSize:X,pageSizeOptions:p,onPageSizeChange:g,setSort:Y,sortModel:O,height:D=ct.DEFAULT_HEIGHT,domLayout:x=we.NORMAL,getRowHeight:$,pinnedBottomRowData:ee,showLoader:ie=!0,emptyDataMessage:q,...k})=>{const N=f.useRef(null),M=f.useRef([]),te=j=>{if(j.source!==ut.UI_COLUMN_SORTED||(console.log("Sort Changed Event (User Initiated):",j),!Y))return;const G=j.api.getColumnState().filter(K=>K.sort).map(K=>({colId:K.colId,sort:K.sort}));console.log("New Sort Model:",G),JSON.stringify(G)!==JSON.stringify(M.current)&&(M.current=G,Y(G))};return ie&&T?r.jsx(it,{style:{display:"flex",alignItems:"center",justifyContent:"center",height:D,minHeight:120},children:r.jsx(a.CircularProgress,{})}):r.jsx(it,{"data-testid":"ServerSideGrid",className:Et.AG_THEME_ALPINE,children:r.jsxs(Xt,{children:[r.jsx(Kt,{height:x===we.AUTO_HEIGHT?void 0:D,children:r.jsx(Vt.AgGridReact,{ref:N,theme:"legacy",columnDefs:B,rowData:n,pinnedBottomRowData:ee,domLayout:x,rowModelType:Ve.CLIENT_SIDE,modules:[ye.ClientSideRowModelModule],localeText:{noRowsToShow:q||"No data to show"},...k,enableBrowserTooltips:!0,suppressMovableColumns:!0,suppressMenuHide:!0,onSortChanged:te,defaultColDef:{width:170,sortable:!0,unSortIcon:!0,tooltipValueGetter:j=>j.value??dt.NO_DATA},suppressRowTransform:!0,getRowHeight:$??(()=>54),maintainColumnOrder:!0,initialState:O&&O.length>0?{sort:{sortModel:O.map(j=>({colId:j.colId,sort:j.sort}))}}:void 0})}),E===0&&r.jsx(a.Divider,{})]})})},St=({totalRecords:n,currentPage:E,pageSize:u,onPageChange:T})=>{const i=Math.ceil(n/u);return r.jsxs(a.Box,{sx:{display:"flex",gap:2,alignItems:"center"},children:[r.jsx(a.Button,{size:"small",disabled:E===1,onClick:()=>T(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:()=>T(E+1),children:"Next"})]})},Ie={MASTER_DATA_MANAGEMENT:"Master Data Management",ADD_NEW_RECORD:"Add New Record",EDIT_RECORD:"Edit Record",VIEW_RECORD:"View Record"},oe={VIEW:"View",ADD_NEW_RECORD:"Add New Record",EDIT:"Edit",CREATE:"Create",UPDATE:"Update",CANCEL:"Cancel",BACK:"Back",EXPORT:"Export"},De={SELECT_ENTITY:"Select Entity",ACTIONS:"Actions",FROM:"From",TO:"To"},Te={SELECT_ENTITY:"Select Entity",SELECT:n=>`Select ${n}`,FILTER_BY:n=>`Filter by ${n}`},je={CSV:"CSV Format",EXCEL:"Excel Format"},Ue={CSV:"csv",EXCEL:"xlsx"},ne={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..."},Ce={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},Ge=[10,20,50,100],_t=" *",pt="red",Rt="_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"},Be={ASC:"ASC",DESC:"DESC"},Tr={JSON:"json",BLOB:"blob",TEXT:"text"},Ye={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"},H={CREATE:"create",EDIT:"edit",VIEW:"view"},xe={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"},_r={API:"API",RAW:"Raw",STATIC:"Static"},pr={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"},ae={FROM:"From",TO:"To"},Ar={TEXT:"text",NUMBER:"number",DATE:"date",EMAIL:"email",PASSWORD:"password",TEL:"tel",URL:"url"},mr={FLOAT_STEP:.01,INTEGER_STEP:1},gr={ENTITY_MATCH:/\/master\/([^\/]+)\/options/},Ir=({apiClient:n,apiEndpoints:E,onNavigateToNew:u,onNavigateToEdit:T})=>{const i=f.useMemo(()=>ke(n,E),[n,E]),[B,X]=f.useState([]),[p,g]=f.useState(null),[Y,O]=f.useState([]),[D,x]=f.useState({}),[$,ee]=f.useState([]),[ie,q]=f.useState([]),[k,N]=f.useState(0),[M,te]=f.useState(10),[j,G]=f.useState(1),[le,K]=f.useState(!1),[se,A]=f.useState(!1),[S,l]=f.useState({}),[_,F]=f.useState([]),[v,J]=f.useState(null),U=f.useRef(!0);f.useEffect(()=>{(async()=>{try{const b=((await i.getEntities()).data||[]).map(y=>({name:y.tableName||y.name,label:y.displayName||y.label}));X(b),b.length>0&&g(b[0])}catch(d){console.error(ne.FAILED_LOAD_ENTITIES,d)}})()},[]),f.useEffect(()=>{if(!p)return;(async()=>{try{const I=(await i.getMetadata(p.name)).data||{};O(I.parameterList||[]),ee(I.resultsList||[]);const b={};(I.parameterList||[]).forEach(L=>{b[L.name]=null}),x(b);const y={};for(const L of I.parameterList||[])L.options&&Array.isArray(L.options)&&(y[L.name]=L.options);l(y),q([]),A(!1)}catch(d){console.error(ne.FAILED_LOAD_METADATA,d)}})()},[p]);const Q=f.useMemo(()=>{const s={},d=[],I=[];Y.forEach(y=>{if(y.dataType===ge.DATERANGE){const Z=D[`${y.name}${ae.FROM}`],pe=D[`${y.name}${ae.TO}`];Z&&(s[`${y.name}${ae.FROM}`]=Z),pe&&(s[`${y.name}${ae.TO}`]=pe);return}const L=D[y.name];L==null||L===""||(y.options?s[y.name]=L:(d.push(y.name),I.push(String(L).trim())))});const b={page:j,limit:M};return Object.keys(s).length>0&&Object.entries(s).forEach(([y,L])=>{b[`filters[${y}]`]=L}),d.length>0&&(b.search=I.join(","),b.searchBy=d.join(",")),_.length>0&&(b.sortBy=_.map(y=>y.colId).join(","),b.sortOrder=_.map(y=>y.sort==="desc"?Be.DESC:Be.ASC).join(",")),console.log("Query params:",b),b},[Y,D,j,M,_]),ce=f.useCallback(async()=>{if(!(!p||!U.current)){U.current=!1,K(!0);try{console.log("Fetching with params:",Q);const s=await i.getRecords(p.name,Q),d=s.data||[],I=s.total||0;q(d),N(I)}catch(s){console.error(ne.FAILED_FETCH_LIST,s),console.error("Full error:",s),q([]),N(0)}finally{K(!1),U.current=!0}}},[p,Q]);f.useEffect(()=>{se&&(j>1||_.length>0)&&ce()},[j,M,_,se,ce]);const de=()=>{G(1),A(!0),setTimeout(()=>{U.current=!0,ce()},0)},re=s=>{J(s.currentTarget)},Se=()=>{J(null)},_e=async s=>{if(p)try{const d=s==="csv"?await i.exportCSV(p.name,Q):await i.exportExcel(p.name,Q),I=s==="csv"?Ye.CSV:Ye.EXCEL,b=s==="csv"?Ue.CSV:Ue.EXCEL,y=new Blob([d.data],{type:I}),L=URL.createObjectURL(y),Z=document.createElement("a");Z.href=L,Z.download=`${p.name}_${new Date().toISOString().split("T")[0]}.${b}`,Z.style.visibility="hidden",document.body.appendChild(Z),Z.click(),document.body.removeChild(Z),setTimeout(()=>URL.revokeObjectURL(L),ft.URL_REVOKE)}catch(d){console.error(`Failed to export ${s.toUpperCase()}:`,d)}finally{Se()}},Ne=f.useMemo(()=>{const s=$.map(d=>({field:d.name,headerName:d.label,sortable:!0,filter:!1,flex:1}));return s.push({field:"actions",headerName:De.ACTIONS,sortable:!1,filter:!1,width:150,cellRenderer:d=>{const I=d.data;return!I||!p?null:r.jsx(a.Box,{sx:{display:"flex",gap:1,py:1},children:r.jsx(a.Button,{size:"small",variant:"outlined",onClick:()=>T?.(p.name,I.id),children:oe.EDIT})})}}),s},[$,p,T]);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:Ie.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:De.SELECT_ENTITY}),r.jsx(a.Autocomplete,{options:B,getOptionLabel:s=>s.label,value:p,onChange:(s,d)=>g(d),renderInput:s=>r.jsx(a.TextField,{...s,size:"small",placeholder:Te.SELECT_ENTITY}),className:"field-input"})]}),Y.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:D[`${s.name}${ae.FROM}`]||"",onChange:d=>x(I=>({...I,[`${s.name}${ae.FROM}`]:d.target.value})),sx:{flex:1}}),r.jsx(a.TextField,{type:"date",size:"small",label:De.TO,value:D[`${s.name}${ae.TO}`]||"",onChange:d=>x(I=>({...I,[`${s.name}${ae.TO}`]:d.target.value})),sx:{flex:1}})]}):s.dataType===ge.DATE?r.jsx(a.TextField,{type:"date",size:"small",value:D[s.name]||"",onChange:d=>x(I=>({...I,[s.name]:d.target.value})),className:"field-input"}):s.options?r.jsx(a.Autocomplete,{options:S[s.name]||s.options,getOptionLabel:d=>d.label||String(d.value),value:S[s.name]?.find(d=>d.value===D[s.name])||null,onChange:(d,I)=>x(b=>({...b,[s.name]:I?.value||null})),renderInput:d=>r.jsx(a.TextField,{...d,size:"small",placeholder:Te.SELECT(s.label)}),className:"field-input"}):s.dataType===ge.NUMBER?r.jsx(a.TextField,{type:"number",size:"small",value:D[s.name]||"",onChange:d=>x(I=>({...I,[s.name]:d.target.value})),placeholder:Te.FILTER_BY(s.label),className:"field-input"}):r.jsx(a.TextField,{size:"small",value:D[s.name]||"",onChange:d=>x(I=>({...I,[s.name]:d.target.value})),placeholder:Te.FILTER_BY(s.label),className:"field-input"})]},s.name))]}),r.jsxs(a.Box,{className:"action-buttons",children:[r.jsx(a.Button,{variant:"contained",onClick:de,children:oe.VIEW}),r.jsx(a.Button,{variant:"contained",disabled:!p,onClick:()=>p&&u?.(p.name),children:oe.ADD_NEW_RECORD})]})]}),se&&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:re,disabled:!p,children:oe.EXPORT}),r.jsxs(a.Menu,{anchorEl:v,open:!!v,onClose:Se,children:[r.jsx(a.MenuItem,{onClick:()=>_e("csv"),children:je.CSV}),r.jsx(a.MenuItem,{onClick:()=>_e("excel"),children:je.EXCEL})]})]}),r.jsx(Tt,{rows:ie,columns:Ne,totalRecords:k,currentPage:j,loading:le,rowModelType:Ve.CLIENT_SIDE,onPageChange:G,pageSize:M,pageSizeOptions:[...Ge],onPageSizeChange:s=>{te(s),G(1)},setSort:F,sortModel:_,height:500},p?.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(lt,{children:[Ce.SHOWING," "]}),r.jsx(qt,{value:M,inputProps:{"aria-label":"Page size"},onChange:s=>{te(Number(s.target.value)),G(1)},children:Ge.map(s=>r.jsx(a.MenuItem,{value:s,children:s},s))}),r.jsxs(lt,{children:[Ce.OF," ",k," ",Ce.ENTRIES]})]})}),r.jsx(St,{totalRecords:k,currentPage:j,onPageChange:G,pageSize:M})]})]})]})},Or=({apiClient:n,apiEndpoints:E,entity:u,id:T,mode:i,onBack:B,onSuccess:X})=>{const p=f.useMemo(()=>ke(n,E),[n,E]),[g,Y]=f.useState({}),[O,D]=f.useState({}),[x,$]=f.useState(!1),[ee,ie]=f.useState({}),[q,k]=f.useState(!0),[N,M]=f.useState(null),te=f.useMemo(()=>Object.keys(g),[g]),j=f.useMemo(()=>te.sort((A,S)=>{const l=g[A],_=g[S];return l?.validation?.required&&!_?.validation?.required?-1:!l?.validation?.required&&_?.validation?.required?1:A.localeCompare(S)}),[te,g]);f.useEffect(()=>{if(!u)return;let A=!0;return(async()=>{k(!0),M(null);try{const l=await p.getMetadata(u);if(!A)return;const F=(l.data?.data||l.data||{}).formConfig||{};Y(F);const v={};for(const[J,U]of Object.entries(F))if(U.fieldType===xe.DROPDOWN)if(U.optionType==="API"&&U.option&&typeof U.option=="string")try{const de=((await p.getDropdownOptions(U.option)).data||[]).map(re=>({value:re.id,label:re.name||re.displayName||String(re.id)}));v[U.fieldName]=de}catch(Q){console.error(`Failed to load options for ${J}:`,Q),v[U.fieldName]=[]}else U.optionType==="Raw"&&Array.isArray(U.option)&&(v[U.fieldName]=U.option);A&&ie(v)}catch(l){console.error(ne.FAILED_LOAD_METADATA,l),A&&M(ne.FAILED_LOAD_FORM_CONFIG)}finally{A&&k(!1)}})(),()=>{A=!1}},[u,p,n]),f.useEffect(()=>{if(!u||!T||i===H.CREATE){D({});return}let A=!0;return(async()=>{$(!0),M(null);try{const l=await p.getRecord(u,T);if(!A)return;const _=l.data?.data||l.data||{},F={};for(const[v,J]of Object.entries(_))v.endsWith(Rt)||(F[v]=J);D(F)}catch(l){console.error(ne.FAILED_LOAD_RECORD,l),A&&M(ne.FAILED_LOAD_RECORD)}finally{A&&$(!1)}})(),()=>{A=!1}},[u,T,i,p]);const G=f.useCallback((A,S)=>{D(l=>({...l,[A]:S}))},[]),le=f.useCallback(()=>{const A=[];for(const[S,l]of Object.entries(g))l.validation?.required&&!O[l.fieldName]&&A.push(ne.FIELD_REQUIRED(S)),l.validation?.min!==void 0&&O[l.fieldName]<l.validation.min&&A.push(`${S} must be at least ${l.validation.min}`),l.validation?.max!==void 0&&O[l.fieldName]>l.validation.max&&A.push(`${S} must be at most ${l.validation.max}`);return A},[g,O]),K=f.useCallback(async()=>{if(!u)return;const A=le();if(A.length>0){M(A.join(", "));return}$(!0),M(null);try{const S={};for(const l of Object.values(g)){const _=l.fieldName;_&&O[_]!==void 0&&O[_]!==""&&(S[_]=O[_])}if(i===H.CREATE){const l=await p.createRecord(u,{data:S});X?.(l)}else if(T){const l=await p.updateRecord(u,T,{data:S});X?.(l)}B?.()}catch(S){console.error("Failed to save record:",S);const l=S?.response?.data?.message||(Array.isArray(S?.response?.data?.message)?S.response.data.message.join(", "):"Failed to save record. Please try again.");M(l)}finally{$(!1)}},[u,g,O,le,i,T,p,B,X]),se=f.useCallback(A=>{const S=g[A],l=S?.fieldName;if(!S||l==="id")return null;const _=O[l]??"",F=i===H.VIEW||x;return r.jsxs(a.Box,{className:"form-field",children:[r.jsxs(a.Typography,{variant:"body2",className:"field-label",children:[A,S.validation?.required&&i!==H.VIEW&&r.jsx("span",{style:{color:pt},children:_t})]}),S.fieldType===xe.DROPDOWN?r.jsx(a.Autocomplete,{options:ee[l]||[],getOptionLabel:v=>v.label||String(v.value),value:ee[l]?.find(v=>v.value===_)||null,onChange:(v,J)=>G(l,J?.value??null),disabled:F,loading:q,renderInput:v=>r.jsx(a.TextField,{...v,size:"small",placeholder:Te.SELECT(A),error:S.validation?.required&&!_&&i!==H.VIEW}),className:"field-input"}):S.fieldType===xe.DATEPICKER?r.jsx(a.TextField,{type:"date",size:"small",value:_?String(_).slice(0,10):"",onChange:v=>G(l,v.target.value),disabled:F,error:S.validation?.required&&!_&&i!==H.VIEW,className:"field-input",InputLabelProps:{shrink:!0}}):S.dataType==="number"||S.dataType==="float"?r.jsx(a.TextField,{type:"number",size:"small",value:_,onChange:v=>G(l,v.target.value),disabled:F,placeholder:A,error:S.validation?.required&&!_&&i!==H.VIEW,inputProps:{max:S.validation?.max,min:S.validation?.min,step:S.dataType==="float"?.01:1},className:"field-input"}):r.jsx(a.TextField,{size:"small",value:_,onChange:v=>G(l,v.target.value),disabled:F,placeholder:A,error:S.validation?.required&&!_&&i!==H.VIEW,inputProps:{maxLength:S.validation?.max},className:"field-input"})]},A)},[g,O,ee,G,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===H.CREATE?Ie.ADD_NEW_RECORD:i===H.EDIT?Ie.EDIT_RECORD:Ie.VIEW_RECORD,u&&` - ${u.charAt(0).toUpperCase()+u.slice(1)}`]}),N&&r.jsx(a.Alert,{severity:"error",onClose:()=>M(null),sx:{mb:2},children:N}),x&&i!==H.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:j.map(se)}),r.jsx(a.Box,{className:"action-buttons",mt:3,children:i!==H.VIEW?r.jsxs(r.Fragment,{children:[r.jsx(a.Button,{variant:"contained",onClick:K,disabled:x,children:x?r.jsx(a.CircularProgress,{size:24}):i===H.CREATE?oe.CREATE:oe.UPDATE}),r.jsx(a.Button,{variant:"outlined",onClick:()=>B?.(),disabled:x,children:oe.CANCEL})]}):r.jsx(a.Button,{variant:"outlined",onClick:()=>B?.(),children:oe.BACK})})]})})},vr={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`},hr={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=oe;exports.COLUMN_PROPERTIES=er;exports.CSS_CLASSES=or;exports.DATA_TYPES=ge;exports.DATE_FORMATS=ir;exports.DATE_RANGE_SUFFIXES=ae;exports.DISPLAY_FIELD_SUFFIX=Rt;exports.EMPTY_STATE_MESSAGES=ar;exports.ERROR_MESSAGES=ne;exports.EXPORT_OPTIONS=je;exports.FIELD_LABELS=De;exports.FIELD_NAMES=pr;exports.FIELD_TYPES=xe;exports.FILE_EXTENSIONS=Ue;exports.FORM_MODES=H;exports.GRID_CSS_CLASSES=Et;exports.GRID_EVENT_SOURCES=ut;exports.GRID_LAYOUT=we;exports.GRID_MESSAGES=dt;exports.GRID_SETTINGS=ct;exports.GRID_TEXT=Ce;exports.GRID_TIMEOUTS=ft;exports.HTTP_METHODS=Er;exports.INPUT_TYPES=Ar;exports.LOADING_MESSAGES=nr;exports.MIME_TYPES=Ye;exports.MasterForm=Or;exports.MasterView=Ir;exports.NUMBER_INPUT=mr;exports.OPTION_TYPES=_r;exports.PAGE_SIZE_OPTIONS=Ge;exports.PAGE_TITLES=Ie;exports.PAGINATION_SETTINGS=Qt;exports.PLACEHOLDERS=Te;exports.Pagination=St;exports.QUERY_PARAMS=fr;exports.REGEX_PATTERNS=gr;exports.REQUIRED_INDICATOR=_t;exports.REQUIRED_INDICATOR_COLOR=pt;exports.RESPONSE_KEYS=Sr;exports.RESPONSE_TYPES=Tr;exports.ROUTES=vr;exports.ROUTE_KEYS=yr;exports.ROUTE_PATTERNS=hr;exports.ROUTE_SUFFIXES=Cr;exports.ROW_MODEL_TYPES=Ve;exports.SORT_ORDER=Be;exports.SORT_SETTINGS=Zt;exports.STYLE_CONSTANTS=sr;exports.SUCCESS_MESSAGES=tr;exports.ServerSideGrid=Tt;exports.URL_PARAMS=Dr;exports.VALIDATION_MESSAGES=rr;exports.VALIDATION_RULES=Rr;exports.createApiService=ke;
|
|
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;
|