react-admin-crud-manager 1.0.2 → 1.0.4

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.js CHANGED
@@ -58,5 +58,5 @@ Check the top-level render call using <`+b+">.")}return s}}function qe(r,s){{if(
58
58
  hover:bg-gray-100 dark:hover:bg-gray-700 rounded-full p-2 shadow-lg transition`,children:e.jsx(X.X,{size:20})}),e.jsx("div",{className:"max-w-5xl w-full px-4 transform transition-all duration-200 scale-95 animate-in zoom-in-95",onClick:t=>t.stopPropagation(),children:e.jsx("img",{src:h,alt:c,className:"w-full max-h-[90vh] object-contain rounded-xl"})})]})})},$r=({config:h})=>{const{data:c=[],table_head:o=[],loading:i=!1,search:d={enabled:!1,placeholder:"Search...",useServerSideSearch:!1},filter:t={enabled:!1,useServerSideFilters:!1},pagination:n={enabled:!1,rows_per_page:10,useServerSidePagination:!1},emptyMessage:C="No data available",onMenuAction:v,setServerSidePaginationData:w=()=>{},onFilterApply:m,filterConfig:u=null}=h,[f,R]=g.useState(""),[p,T]=g.useState(null),[M,E]=g.useState([]),[j,L]=g.useState({}),[U,V]=g.useState(!1),[Z,$]=g.useState(null),[y,B]=g.useState(!1),G=g.useMemo(()=>!d.enabled||!f.trim()||d.useServerSideSearch?c:_r(c,f,d.searchKeys||[]),[c,f,d]),[_,N]=g.useState(1),[O,W]=g.useState((n==null?void 0:n.rows_per_page)||50),[ee,se]=g.useState(G.length||0),ge=n!=null&&n.useServerSidePagination?n.total_pages:Math.ceil(G.length/O),ye=g.useMemo(()=>{if(n.useServerSidePagination)return G;const l=(_-1)*O;return G.slice(l,l+O)},[G,_,O]),pe=g.useRef(null),ve=g.useRef({}),fe=g.useRef(null),oe=l=>{R(l),N(1),d.useServerSideSearch&&(fe.current&&clearTimeout(fe.current),fe.current=setTimeout(async()=>{try{await w(x=>({...x,search:l,current_page:1}))}catch(x){console.error("Search error:",x)}},800))},ke=(l,x,A)=>{A.stopPropagation(),T(null),v==null||v(l.type,x)},Ee=(l,x,A)=>{x.stopPropagation(),E(A);const H=x.currentTarget;ve.current[l]=H;const z=H.getBoundingClientRect(),te=192,Q=A.length*40,ue=window.innerWidth,je=window.innerHeight,F=ue-z.right<te?z.left-te+z.width:z.left,le=je-z.bottom<Q&&z.top>Q?z.top-Q-2:z.bottom+2;L({top:Math.max(8,Math.min(le,je-Q-8)),left:Math.max(8,Math.min(F,ue-te-8))}),T(p===l?null:l)},Me=l=>(_-1)*O+l+1,me=l=>{$(l),B(!0)},ie=(l,x,A,H=null)=>e.jsx(e.Fragment,{children:l?e.jsx("img",{src:l,alt:x||"Avatar",onClick:z=>{z.stopPropagation(),z.preventDefault(),me({src:l,alt:x})},className:`w-10 h-10 cursor-pointer rounded-full object-cover border border-gray-200 dark:border-gray-700 ${A||""}`}):e.jsx(e.Fragment,{children:H||e.jsx("div",{className:`w-10 h-10 flex items-center justify-center rounded-full border border-gray-300 dark:border-gray-700 bg-gray-200 dark:bg-gray-600 ${A||""}`,children:e.jsx(X.User,{className:"w-6 h-6 text-gray-400 dark:text-gray-400"})})})}),de=(l,x)=>e.jsxs("div",{className:`flex items-center space-x-4 ${x.className||""}`,children:[x.imageKey?ie(l[x.imageKey],l[x.titleKey],"group-avatar"):"",e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-gray-900 dark:text-white group-title",children:l[x.titleKey]||""}),e.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400 group-sub-title",children:l[x.subtitleKey]||""})]})]}),xe=(l,x)=>{var te;let A=String(l);const H=x.variant||"contained";let z=x.defaultColor;if(((te=x==null?void 0:x.chipOptions)==null?void 0:te.length)>0){let Q=x==null?void 0:x.chipOptions.find(ue=>ue.value==l);Q&&(A=Q.label,z=Q.color)}return e.jsx(ir,{label:A,variant:H,color:z,className:x.className||""})},ce=(l,x,A)=>{const H=x[l.key];return l.type==="menu_actions"?e.jsx("div",{className:`text-center ${l.className||""}`,children:e.jsx("button",{ref:z=>ve.current[x.id]=z,onClick:z=>Ee(x.id,z,l.menuList),className:"p-2 bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600 rounded-full transition text-gray-700 dark:text-gray-300",children:e.jsx(X.EllipsisVertical,{className:"h-4 w-4"})})}):l.type==="index"?e.jsx("span",{className:l.className||"",children:Me(A)}):l.type==="group"?de(x,l):l.type==="chip"?e.jsx(e.Fragment,{children:xe(H,l)}):l.type==="date"?e.jsx("span",{className:l.className||"",children:nr(H,l.format||"DD MMM YYYY")}):l.type==="avatar"?e.jsx(e.Fragment,{children:ie(H,l.alt,l.className,l.fallback_icon)}):e.jsx("span",{className:l.className||"",children:H||"N/A"})},Se=(l,x)=>{if(l.onClickDetails)return v==null?void 0:v("view",x);if(typeof l.handleClick=="function")return l.handleClick(x)},we=l=>l.onClickDetails||typeof l.handleClick=="function";return g.useEffect(()=>{const l=()=>{p&&T(null)};return window.addEventListener("scroll",l,!0),()=>{window.removeEventListener("scroll",l,!0)}},[p]),g.useEffect(()=>{const l=x=>{pe.current&&!pe.current.contains(x.target)&&T(null)};return document.addEventListener("click",l),()=>document.removeEventListener("click",l)},[]),g.useEffect(()=>{n!=null&&n.rows_per_page&&(n!=null&&n.useServerSidePagination)&&W((n==null?void 0:n.rows_per_page)||50),n.current_page&&N(n.current_page)},[n.rows_per_page,n==null?void 0:n.useServerSidePagination,n.current_page]),g.useEffect(()=>{se(n!=null&&n.useServerSidePagination?n.total_records:G.length),G.length<=O*(_-1)&&!(n!=null&&n.useServerSidePagination)&&N(l=>l-1||1)},[G.length,n.total_records,n==null?void 0:n.useServerSidePagination]),i?e.jsx(Br,{rows:6,columns:6}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex justify-end items-center mb-6 gap-2",children:[d.enabled&&e.jsx("div",{className:"",children:e.jsxs("div",{className:"relative min-w-[300px]",children:[e.jsx(X.Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400 dark:text-gray-300"}),e.jsx("input",{type:"text",placeholder:d.placeholder||"Search...",value:f,onChange:l=>oe(l.target.value),className:"w-full h-[36px] pl-9 pr-4 py-3 text-sm border border-gray-300 dark:border-gray-600 rounded-md bg-gray-50 dark:bg-gray-700 text-gray-900 dark:text-white placeholder-gray-500 dark:placeholder-gray-400 focus:outline-none focus:ring-1 focus:ring-blue-300 dark:ring-blue-200 disabled:opacity-50"})]})}),u&&t.enabled&&e.jsxs(Re,{onClick:()=>V(!0),variant:"contained",children:[e.jsx(X.Filter,{className:"w-4 h-4 mr-2"}),"Filters"]})]}),e.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow overflow-hidden border border-gray-200 dark:border-gray-700",children:[e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"min-w-full divide-y divide-gray-200 dark:divide-gray-700",children:[e.jsx("thead",{className:"bg-gray-50 dark:bg-gray-700/60",children:e.jsx("tr",{children:o.map(l=>e.jsx("th",{className:"px-6 py-4 text-left text-xs font-medium text-black dark:text-white uppercase tracking-wider min-w-max max-w-[180px] truncate",children:l.title},l.key))})}),e.jsx("tbody",{className:"bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700",children:ye.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:o.length,className:"text-center py-10 text-gray-500 dark:text-gray-400",children:C})}):ye.map((l,x)=>e.jsx("tr",{className:"hover:bg-gray-50 dark:hover:bg-blue-800/10 transition",children:o.map(A=>e.jsx("td",{className:`px-6 py-4 text-sm text-gray-900 dark:text-gray-100 min-w-max max-w-[300px] truncate ${we(A)?"cursor-pointer":""}`,title:String(l[A.key]??""),onClick:()=>Se(A,l),children:A.render?A.render(l,x):ce(A,l,x)},A.key))},l.id||x))})]})}),(n==null?void 0:n.enabled)&&G.length>0&&e.jsxs("div",{className:" bg-gray-50 dark:bg-gray-700/60 px-6 py-3 flex flex-wrap items-center justify-between border-t border-gray-200 dark:border-gray-600 gap-3",children:[e.jsxs("div",{className:"text-sm text-gray-700 dark:text-gray-300",children:["Showing ",(_-1)*O+1," to"," ",Math.min(_*O,ee)," of ",ee," ","results"]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm text-gray-700 dark:text-gray-300",children:"Rows per page:"}),e.jsx("select",{value:O,onChange:l=>{const x=Number(l.target.value);W(x),N(1),n.useServerSidePagination&&w(A=>({...A,current_page:1,rows_per_page:x}))},className:"border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800 text-sm rounded-md px-2 py-1 focus:outline-none focus:ring-1 focus:ring-blue-500",children:[2,10,25,50,100].map(l=>e.jsx("option",{value:l,children:l},l))})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{onClick:()=>{if(_>1){const l=_-1;N(l),n.useServerSidePagination&&w(x=>({...x,current_page:l}))}},disabled:_===1,className:"p-2 hover:bg-gray-200 dark:hover:bg-gray-600 rounded-md transition text-gray-500 dark:text-gray-300 disabled:opacity-50",children:e.jsx(X.ChevronLeft,{className:"h-4 w-4"})}),e.jsxs("span",{className:"text-sm text-gray-800 dark:text-gray-200",children:["Page ",_," of ",ge]}),e.jsx("button",{onClick:()=>{if(_<ge){const l=_+1;N(l),n.useServerSidePagination&&w(x=>({...x,current_page:l}))}},disabled:_===ge,className:"p-2 hover:bg-gray-200 dark:hover:bg-gray-600 rounded-md transition text-gray-500 dark:text-gray-300 disabled:opacity-50",children:e.jsx(X.ChevronRight,{className:"h-4 w-4"})})]})]})]})]}),p&&Rr.createPortal(e.jsx("div",{ref:pe,style:{position:"fixed",top:`${j.top}px`,left:`${j.left}px`,zIndex:9999},className:"w-48 bg-white dark:bg-gray-700 rounded-md shadow-lg border border-gray-200 dark:border-gray-600",children:M.map((l,x)=>e.jsxs("button",{onClick:A=>ke(l,c.find(H=>H.id===p),A),className:`w-full flex items-center gap-2 px-4 py-2 text-sm text-left hover:bg-gray-100 dark:hover:bg-gray-600 ${l.variant==="danger"?"text-red-600 dark:text-red-500":"text-gray-700 dark:text-gray-200"}`,children:[l.icon&&e.jsx("span",{className:"shrink-0",children:l.icon}),l.title]},x))}),document.body),u&&e.jsx(Lr,{isOpen:U,onClose:()=>V(!1),config:u,onApply:m}),y&&e.jsx(dr,{src:Z.src,alt:Z.alt,isOpen:y,setIsOpen:B})]})},Fe=({isOpen:h,onClose:c,icon:o,title:i,children:d,size:t="md",actionButtons:n=[],actions:C,showDefaultClose:v=!0,footerConfig:w=null,hideFooter:m=!1,onFormSubmit:u=()=>{},onCancel:f,loadingBtn:R=!1,executeFunction:p=()=>{},selectedItem:T=null})=>{if(!h)return null;const M={sm:"max-w-md",md:"max-w-lg",lg:"max-w-2xl",xl:"max-w-4xl",full:"max-w-full"};return e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4",children:[e.jsx("div",{className:"fixed inset-0 bg-gray-500 opacity-75",onClick:()=>c()}),e.jsxs("div",{className:`relative bg-white rounded-lg shadow-xl w-full ${M[t]||M.md} max-h-[90vh] flex flex-col dark:bg-gray-800`,children:[e.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-700 flex-shrink-0",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[o&&e.jsx("span",{children:o}),e.jsx("h3",{className:"text-lg font-medium text-gray-900 dark:text-white",children:i})]}),e.jsx("button",{onClick:()=>c(),className:"text-gray-400 hover:text-gray-600 dark:hover:text-gray-300",children:e.jsx(X.X,{className:"w-6 h-6"})})]}),e.jsx("div",{className:"flex-1 overflow-y-auto p-4",children:d}),n.length>0&&e.jsx("div",{className:"px-4 py-3 flex justify-end gap-3 border-t border-gray-200 dark:border-gray-700 sm:px-6",children:n.map(E=>e.jsx(Re,{onClick:j=>{E.type=="submit"?u(j):p(()=>{var L;return(L=E==null?void 0:E.onClick)==null?void 0:L.call(E,j,T)},L=>c==null?void 0:c(L))},disabled:R||E.disabled,variant:E.variant||"contained",color:E.color||"primary",className:`min-w-[100px] ${E.className}`,type:E.type||"button",children:R?e.jsxs("div",{className:"flex items-center",children:[e.jsx("div",{className:"animate-spin rounded-full h-4 w-4 border-2 border-white/30 border-t-2 border-t-white mr-2"}),E.label||"Submit","..."]}):E.label||"Submit"}))})]})]})},tr=({config:h,onSubmit:c,initialData:o={}})=>{var w;const{formClass:i="grid grid-cols-12 gap-4",formFields:d=[]}=h||{},[t,n]=g.useState(o);g.useEffect(()=>{n(o)},[]);const C=(m,u)=>{n(f=>({...f,[m]:u}))},v=m=>{m.preventDefault();const u=m.target;if(!u.checkValidity()){u.reportValidity();return}c(t)};return e.jsx("form",{id:(w=h.title)!=null&&w.toLowerCase().includes("edit")?"editForm":"addForm",onSubmit:v,className:i,noValidate:!1,children:d.map(m=>e.jsx(e.Fragment,{children:e.jsx(or,{field:m,formData:t,handleChange:C},m.key)}))})};function Gr({data:h,config:c}){const{fields:o,containerClass:i}=c,[d,t]=g.useState(null),[n,C]=g.useState(!1),v=u=>{t(u),C(!0)},w=({col:u})=>{let f=u==null?void 0:u.icon,R=u.label,p=h[u.key],T=u.type,M=u.variant||"outline",E=u.defaultColor;if(T=="chip"&&u.chipOptions.length>0){let j=u==null?void 0:u.chipOptions.find(L=>L.value==p);j&&(p=j.label,E=j.color)}return e.jsxs("div",{className:`col-span-12 flex items-center space-x-4 p-4 rounded-xl
59
59
  bg-gray-100 dark:bg-gray-900 ${u.blockClass}`,children:[f&&e.jsx("div",{className:"flex-shrink-0",children:f}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium text-gray-500 dark:text-gray-400",children:R}),T=="chip"?e.jsx(e.Fragment,{children:e.jsx(ir,{label:p,variant:M,color:E,className:"mt-1"})}):T=="tinyEditor"?e.jsx("p",{className:"mt-1 text-sm text-gray-900 dark:text-white break-words",dangerouslySetInnerHTML:{__html:p}}):e.jsx("p",{className:"mt-1 text-sm text-gray-900 dark:text-white break-words",children:T=="date"?e.jsx("span",{children:nr(p,u.format||"DD MMM YYYY")}):p||"N/A"})]})]})},m=({col:u})=>{let f=h[u.titleKey],R=h[u.subtitleKey],p=h[u.imageKey],T=h[u.fallback_icon];return e.jsxs("div",{className:`col-span-12 flex items-center space-x-4 p-4 rounded-xl
60
60
  bg-gray-100 dark:bg-gray-900
61
- ${u.blockClass}`,children:[p?e.jsx("img",{src:p,alt:f,onClick:()=>v({src:p,alt:f}),className:"w-16 h-16 cursor-pointer rounded-full object-cover border-2 border-gray-200 dark:border-gray-700"}):T||e.jsx("div",{className:"w-16 h-16 flex items-center justify-center rounded-full border-2 border-gray-300 dark:border-gray-700 bg-gray-200 dark:bg-gray-600",children:e.jsx(X.User,{className:"w-8 h-8 text-gray-400"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-xl font-semibold text-gray-900 dark:text-white",children:f}),e.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:R})]})]})};return e.jsxs(e.Fragment,{children:[n&&e.jsx(dr,{src:d.src,alt:d.alt,isOpen:n,setIsOpen:C}),e.jsx("div",{className:`grid grid-cols-12 gap-4 ${i||""}`,children:o.map(u=>u.type=="group"?e.jsx(m,{col:u}):e.jsx(w,{col:u}))})]})}const cr=({config:h})=>{var me,ie,de,xe,ce,Se,we,l,x,A,H,z,te,Q,ue,je;const{title:c,fetchData:o=async()=>{},isStaticData:i=!1,tableConfig:d={},modalConfig:t={},filterConfig:n}=h,[C,v]=g.useState(!0),[w,m]=g.useState(!1),[u,f]=g.useState([]),[R,p]=g.useState(null),[T,M]=g.useState({search:"",rows_per_page:50,current_page:1}),[E,j]=g.useState({}),[L,U]=g.useState(!1),[V,Z]=g.useState(!1),[$,y]=g.useState(!1),[B,G]=g.useState(!1),[_,N]=g.useState(!1),[O,W]=g.useState(null),ee=(k,F)=>{k==="edit"?(W(F),y(!0)):k==="view"?(W(F),N(!0)):k==="delete"&&(W(F),G(!0))},se=async(k,F,K="",le="")=>{m(!0);try{const re=await(k==null?void 0:k());(K||re.message)&&Pe.enqueueSnackbar(K||re.message,{variant:"success"}),F==null||F(re)}catch(re){(le||re.message)&&Pe.enqueueSnackbar(le||re.message,{variant:"error"})}finally{m(!1)}},ge=k=>{let F=k.newObject;i?(f(K=>[F,...K]),p(K=>({...K,current_page:1}))):(M(K=>({...K,current_page:1})),T.current_page==1&&oe()),Z(!1)},ye=k=>{let F=k.newObject,K=k.targetObject;i?f(le=>le.map(re=>re.id===K.id?{...re,...F}:re)):oe(),y(!1)},pe=k=>{if(!k){G(!1),W(null);return}i?f(F=>F.filter(K=>K.id!==k.targetObject.id)):u.length==1&&T.current_page>1?M(F=>({...F,current_page:F.current_page-1})):oe(),G(!1),W(null)},ve=k=>se(()=>{var F,K;return(K=(F=t==null?void 0:t.addModal)==null?void 0:F.handleSubmit)==null?void 0:K.call(F,k)},ge),fe=k=>se(()=>{var F,K;return(K=(F=t==null?void 0:t.editModal)==null?void 0:F.handleSubmit)==null?void 0:K.call(F,k,O)},ye),oe=async()=>{v(!0),o==null||o({...T,...E}).then(k=>{f(k.data),p(k.pagination)}).catch(k=>{Pe.enqueueSnackbar(k.message,{variant:"error"})}).finally(()=>{v(!1)})},ke=k=>{var F;j(K=>({...k})),(F=d==null?void 0:d.filter)!=null&&F.useServerSideFilters&&U(K=>!K)},Ee=(k,F)=>k.filter(K=>Object.entries(F).every(([le,re])=>K[le]===re)),Me=g.useMemo(()=>{var k;return(k=d==null?void 0:d.filter)!=null&&k.useServerSideFilters?data:Ee(u,E)},[u,E]);return g.useEffect(()=>{oe()},[T.search,T.rows_per_page,T.current_page,L]),e.jsx(Pe.SnackbarProvider,{maxSnack:3,anchorOrigin:{vertical:"bottom",horizontal:"right"},autoHideDuration:3e3,action:k=>e.jsx("button",{onClick:()=>{window.dispatchEvent(new CustomEvent("closeSnackbar",{detail:k}))},className:"p-1 hover:bg-white/20 rounded-full transition-colors duration-200 text-white flex items-center justify-center",children:e.jsx(X.X,{className:"h-4 w-4"})}),children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-6",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-gray-900 dark:text-white",children:c}),e.jsx("p",{className:"text-md text-gray-600 dark:text-gray-400 mt-2",children:h==null?void 0:h.description})]}),e.jsx("div",{className:"flex items-center space-x-3",children:e.jsxs(Re,{onClick:()=>Z(!0),variant:"contained",color:"primary",children:[e.jsx(X.Plus,{className:"w-4 h-4 mr-2"}),h.buttonText||"Add New"]})})]}),e.jsx($r,{config:{...d,pagination:{...d.pagination,...R},data:Me,setServerSidePaginationData:M,onMenuAction:ee,filterConfig:n,onFilterApply:ke,loading:C}}),e.jsx(Fe,{isOpen:V,onClose:()=>Z(!1),icon:(me=t.addModal)==null?void 0:me.icon,title:((ie=t.addModal)==null?void 0:ie.title)||"Add New",size:((de=t.addModal)==null?void 0:de.size)||"md",onFormSubmit:()=>{var k;return(k=document.querySelector("#addForm"))==null?void 0:k.requestSubmit()},loadingBtn:w,actionButtons:t.addModal.actionButtons,children:e.jsx(tr,{config:(t==null?void 0:t.addModal)||[],onSubmit:ve,initialData:{},loading:w})}),e.jsx(Fe,{isOpen:$,onClose:()=>y(!1),icon:(xe=t.editModal)==null?void 0:xe.icon,title:((ce=t.editModal)==null?void 0:ce.title)||"Edit",size:((Se=t.editModal)==null?void 0:Se.size)||"md",onFormSubmit:()=>{var k;return(k=document.querySelector("#editForm"))==null?void 0:k.requestSubmit()},actionButtons:t.editModal.actionButtons,loadingBtn:w,children:e.jsx(tr,{config:t.editModal||[],onSubmit:fe,initialData:O,loading:w})}),B&&e.jsx(Fe,{isOpen:B,onClose:k=>{pe(k)},icon:((we=t.deleteModal)==null?void 0:we.icon)||e.jsx(Ge.Icon,{icon:"ph:warning-bold",className:"w-6 h-6 text-red-500"}),title:((l=t.deleteModal)==null?void 0:l.title)||"Confirm Delete",size:((x=t.deleteModal)==null?void 0:x.size)||"md",loading:w,actionButtons:t.deleteModal.actionButtons,executeFunction:se,selectedItem:O,children:e.jsx("div",{className:"flex items-center space-x-2 py-3",children:e.jsxs("div",{children:[e.jsx("p",{className:"text-md text-gray-700 dark:text-white",children:((A=t.deleteModal)==null?void 0:A.confirmText)||"Are you sure you want to delete this item?"}),((H=t.deleteModal)==null?void 0:H.referenceKey)&&e.jsx("p",{className:"text-md font-semibold text-gray-700 dark:text-white",children:O[(z=t.deleteModal)==null?void 0:z.referenceKey]})]})})}),t.viewModal&&e.jsx(Fe,{isOpen:_,onClose:()=>{N(!1),W(null)},icon:(te=t.viewModal)==null?void 0:te.icon,title:((Q=t.viewModal)==null?void 0:Q.title)||"View Details",size:((ue=t.viewModal)==null?void 0:ue.size)||"lg",footerConfig:t==null?void 0:t.viewModal.footer,children:(je=t.viewModal)!=null&&je.component?e.jsx(t.viewModal.component,{data:O}):e.jsx(Gr,{data:O,config:t.viewModal||{}})})]})})},Ye=a.shape({value:a.oneOfType([a.string,a.number,a.bool]).isRequired,label:a.string.isRequired,color:a.string}),Le=a.shape({type:a.string.isRequired,label:a.string.isRequired,color:a.string,variant:a.string,onClick:a.func}),Yr=a.shape({title:a.string.isRequired,type:a.string.isRequired,variant:a.string,icon:a.node}),Kr=a.shape({key:a.string.isRequired,title:a.string,type:a.string,imageKey:a.string,titleKey:a.string,subtitleKey:a.string,onClickDetails:a.bool,variant:a.string,chipOptions:a.arrayOf(Ye),defaultColor:a.string,className:a.string,format:a.string,menuList:a.arrayOf(Yr)}),Be=a.shape({key:a.string.isRequired,label:a.string,type:a.string.isRequired,required:a.bool,minLength:a.number,parentClass:a.string,search:a.bool,multiple:a.bool,dropdownMaxHeight:a.string,dragDrop:a.bool,countriesList:a.bool,defaultCountry:a.string,placeholder:a.string,rows:a.number,text:a.string,editorKey:a.string,options:a.arrayOf(Ye)}),Ur=a.shape({key:a.string,label:a.string,type:a.string,imageKey:a.string,titleKey:a.string,subtitleKey:a.string,blockClass:a.string,icon:a.node,variant:a.string,chipOptions:a.arrayOf(Ye),defaultColor:a.string,className:a.string,format:a.string});cr.propTypes={config:a.shape({title:a.string.isRequired,description:a.string,buttonText:a.string,fetchData:a.func.isRequired,isStaticData:a.bool,tableConfig:a.shape({table_head:a.arrayOf(Kr).isRequired,search:a.shape({enabled:a.bool,useServerSideSearch:a.bool,searchKeys:a.arrayOf(a.string)}),pagination:a.shape({enabled:a.bool,useServerSidePagination:a.bool}),filter:a.shape({enabled:a.bool,useServerSideFilters:a.bool})}).isRequired,modalConfig:a.shape({addModal:a.shape({title:a.string.isRequired,size:a.string,formClass:a.string,formFields:a.arrayOf(Be),handleSubmit:a.func.isRequired,actionButtons:a.arrayOf(Le)}),editModal:a.shape({title:a.string.isRequired,size:a.string,formClass:a.string,formFields:a.arrayOf(Be),handleSubmit:a.func.isRequired,actionButtons:a.arrayOf(Le)}),deleteModal:a.shape({title:a.string.isRequired,size:a.string,confirmText:a.string,referenceKey:a.string,actionButtons:a.arrayOf(Le)}),viewModal:a.shape({title:a.string.isRequired,size:a.string,component:a.elementType,fields:a.arrayOf(Ur),footer:a.shape({cancelButton:a.bool,cancelText:a.string})})}),filterConfig:a.shape({fields:a.arrayOf(Be)})}).isRequired};function zr(h){return e.jsx(e.Fragment,{children:e.jsx(cr,{config:h})})}module.exports=zr;
61
+ ${u.blockClass}`,children:[p?e.jsx("img",{src:p,alt:f,onClick:()=>v({src:p,alt:f}),className:"w-16 h-16 cursor-pointer rounded-full object-cover border-2 border-gray-200 dark:border-gray-700"}):T||e.jsx("div",{className:"w-16 h-16 flex items-center justify-center rounded-full border-2 border-gray-300 dark:border-gray-700 bg-gray-200 dark:bg-gray-600",children:e.jsx(X.User,{className:"w-8 h-8 text-gray-400"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-xl font-semibold text-gray-900 dark:text-white",children:f}),e.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:R})]})]})};return e.jsxs(e.Fragment,{children:[n&&e.jsx(dr,{src:d.src,alt:d.alt,isOpen:n,setIsOpen:C}),e.jsx("div",{className:`grid grid-cols-12 gap-4 ${i||""}`,children:o.map(u=>u.type=="group"?e.jsx(m,{col:u}):e.jsx(w,{col:u}))})]})}const cr=({config:h})=>{var me,ie,de,xe,ce,Se,we,l,x,A,H,z,te,Q,ue,je;const{title:c,fetchData:o=async()=>{},isStaticData:i=!1,tableConfig:d={},modalConfig:t={},filterConfig:n}=h,[C,v]=g.useState(!0),[w,m]=g.useState(!1),[u,f]=g.useState([]),[R,p]=g.useState(null),[T,M]=g.useState({search:"",rows_per_page:50,current_page:1}),[E,j]=g.useState({}),[L,U]=g.useState(!1),[V,Z]=g.useState(!1),[$,y]=g.useState(!1),[B,G]=g.useState(!1),[_,N]=g.useState(!1),[O,W]=g.useState(null),ee=(k,F)=>{k==="edit"?(W(F),y(!0)):k==="view"?(W(F),N(!0)):k==="delete"&&(W(F),G(!0))},se=async(k,F,K="",le="")=>{m(!0);try{const re=await(k==null?void 0:k());(K||re.message)&&Pe.enqueueSnackbar(K||re.message,{variant:"success"}),F==null||F(re)}catch(re){(le||re.message)&&Pe.enqueueSnackbar(le||re.message,{variant:"error"})}finally{m(!1)}},ge=k=>{let F=k.newObject;i?(f(K=>[F,...K]),p(K=>({...K,current_page:1}))):(M(K=>({...K,current_page:1})),T.current_page==1&&oe()),Z(!1)},ye=k=>{let F=k.newObject,K=k.targetObject;i?f(le=>le.map(re=>re.id===K.id?{...re,...F}:re)):oe(),y(!1)},pe=k=>{if(!k){G(!1),W(null);return}i?f(F=>F.filter(K=>K.id!==k.targetObject.id)):u.length==1&&T.current_page>1?M(F=>({...F,current_page:F.current_page-1})):oe(),G(!1),W(null)},ve=k=>se(()=>{var F,K;return(K=(F=t==null?void 0:t.addModal)==null?void 0:F.handleSubmit)==null?void 0:K.call(F,k)},ge),fe=k=>se(()=>{var F,K;return(K=(F=t==null?void 0:t.editModal)==null?void 0:F.handleSubmit)==null?void 0:K.call(F,k,O)},ye),oe=async()=>{v(!0),o==null||o({...T,...E}).then(k=>{f(k.data),p(k.pagination)}).catch(k=>{Pe.enqueueSnackbar(k.message,{variant:"error"})}).finally(()=>{v(!1)})},ke=k=>{var F;j(K=>({...k})),(F=d==null?void 0:d.filter)!=null&&F.useServerSideFilters&&U(K=>!K)},Ee=(k,F)=>k.filter(K=>Object.entries(F).every(([le,re])=>K[le]===re)),Me=g.useMemo(()=>{var k;return(k=d==null?void 0:d.filter)!=null&&k.useServerSideFilters?data:Ee(u,E)},[u,E]);return g.useEffect(()=>{oe()},[T.search,T.rows_per_page,T.current_page,L]),e.jsx(Pe.SnackbarProvider,{maxSnack:3,anchorOrigin:{vertical:"bottom",horizontal:"right"},autoHideDuration:3e3,action:k=>e.jsx("button",{onClick:()=>{window.dispatchEvent(new CustomEvent("closeSnackbar",{detail:k}))},className:"p-1 hover:bg-white/20 rounded-full transition-colors duration-200 text-white flex items-center justify-center",children:e.jsx(X.X,{className:"h-4 w-4"})}),children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-6",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-gray-900 dark:text-white",children:c}),e.jsx("p",{className:"text-md text-gray-600 dark:text-gray-400 mt-2",children:h==null?void 0:h.description})]}),e.jsx("div",{className:"flex items-center space-x-3",children:e.jsxs(Re,{onClick:()=>Z(!0),variant:"contained",color:"primary",children:[e.jsx(X.Plus,{className:"w-4 h-4 mr-2"}),h.buttonText||"Add New"]})})]}),e.jsx($r,{config:{...d,pagination:{...d.pagination,...R},data:Me,setServerSidePaginationData:M,onMenuAction:ee,filterConfig:n,onFilterApply:ke,loading:C}}),e.jsx(Fe,{isOpen:V,onClose:()=>Z(!1),icon:(me=t.addModal)==null?void 0:me.icon,title:((ie=t.addModal)==null?void 0:ie.title)||"Add New",size:((de=t.addModal)==null?void 0:de.size)||"md",onFormSubmit:()=>{var k;return(k=document.querySelector("#addForm"))==null?void 0:k.requestSubmit()},loadingBtn:w,actionButtons:t.addModal.actionButtons,children:e.jsx(tr,{config:(t==null?void 0:t.addModal)||[],onSubmit:ve,initialData:{},loading:w})}),e.jsx(Fe,{isOpen:$,onClose:()=>y(!1),icon:(xe=t.editModal)==null?void 0:xe.icon,title:((ce=t.editModal)==null?void 0:ce.title)||"Edit",size:((Se=t.editModal)==null?void 0:Se.size)||"md",onFormSubmit:()=>{var k;return(k=document.querySelector("#editForm"))==null?void 0:k.requestSubmit()},actionButtons:t.editModal.actionButtons,loadingBtn:w,children:e.jsx(tr,{config:t.editModal||[],onSubmit:fe,initialData:O,loading:w})}),B&&e.jsx(Fe,{isOpen:B,onClose:k=>{pe(k)},icon:((we=t.deleteModal)==null?void 0:we.icon)||e.jsx(Ge.Icon,{icon:"ph:warning-bold",className:"w-6 h-6 text-red-500"}),title:((l=t.deleteModal)==null?void 0:l.title)||"Confirm Delete",size:((x=t.deleteModal)==null?void 0:x.size)||"md",loading:w,actionButtons:t.deleteModal.actionButtons,executeFunction:se,selectedItem:O,children:e.jsx("div",{className:"flex items-center space-x-2 py-3",children:e.jsxs("div",{children:[e.jsx("p",{className:"text-md text-gray-700 dark:text-white",children:((A=t.deleteModal)==null?void 0:A.confirmText)||"Are you sure you want to delete this item?"}),((H=t.deleteModal)==null?void 0:H.referenceKey)&&e.jsx("p",{className:"text-md font-semibold text-gray-700 dark:text-white",children:O[(z=t.deleteModal)==null?void 0:z.referenceKey]})]})})}),t.viewModal&&e.jsx(Fe,{isOpen:_,onClose:()=>{N(!1),W(null)},icon:(te=t.viewModal)==null?void 0:te.icon,title:((Q=t.viewModal)==null?void 0:Q.title)||"View Details",size:((ue=t.viewModal)==null?void 0:ue.size)||"lg",footerConfig:t==null?void 0:t.viewModal.footer,children:(je=t.viewModal)!=null&&je.component?e.jsx(t.viewModal.component,{data:O}):e.jsx(Gr,{data:O,config:t.viewModal||{}})})]})})},Ye=a.shape({value:a.oneOfType([a.string,a.number,a.bool]).isRequired,label:a.string.isRequired,color:a.string}),Le=a.shape({type:a.string.isRequired,label:a.string.isRequired,color:a.string,variant:a.string,onClick:a.func}),Yr=a.shape({title:a.string.isRequired,type:a.string.isRequired,variant:a.string,icon:a.node}),Kr=a.shape({key:a.string.isRequired,title:a.string,type:a.string,imageKey:a.string,titleKey:a.string,subtitleKey:a.string,onClickDetails:a.bool,variant:a.string,chipOptions:a.arrayOf(Ye),defaultColor:a.string,className:a.string,format:a.string,menuList:a.arrayOf(Yr)}),Be=a.shape({key:a.string.isRequired,label:a.string,type:a.string.isRequired,required:a.bool,minLength:a.number,parentClass:a.string,search:a.bool,multiple:a.bool,dropdownMaxHeight:a.string,dragDrop:a.bool,countriesList:a.bool,defaultCountry:a.string,placeholder:a.string,rows:a.number,text:a.string,editorKey:a.string,options:a.arrayOf(Ye)}),Ur=a.shape({key:a.string,label:a.string,type:a.string,imageKey:a.string,titleKey:a.string,subtitleKey:a.string,blockClass:a.string,icon:a.node,variant:a.string,chipOptions:a.arrayOf(Ye),defaultColor:a.string,className:a.string,format:a.string});cr.propTypes={config:a.shape({title:a.string.isRequired,description:a.string,buttonText:a.string,fetchData:a.func.isRequired,isStaticData:a.bool,tableConfig:a.shape({table_head:a.arrayOf(Kr).isRequired,search:a.shape({enabled:a.bool,useServerSideSearch:a.bool,searchKeys:a.arrayOf(a.string)}),pagination:a.shape({enabled:a.bool,useServerSidePagination:a.bool}),filter:a.shape({enabled:a.bool,useServerSideFilters:a.bool})}).isRequired,modalConfig:a.shape({addModal:a.shape({title:a.string.isRequired,size:a.string,formClass:a.string,formFields:a.arrayOf(Be),handleSubmit:a.func.isRequired,actionButtons:a.arrayOf(Le)}),editModal:a.shape({title:a.string.isRequired,size:a.string,formClass:a.string,formFields:a.arrayOf(Be),handleSubmit:a.func.isRequired,actionButtons:a.arrayOf(Le)}),deleteModal:a.shape({title:a.string.isRequired,size:a.string,confirmText:a.string,referenceKey:a.string,actionButtons:a.arrayOf(Le)}),viewModal:a.shape({title:a.string.isRequired,size:a.string,component:a.elementType,fields:a.arrayOf(Ur),footer:a.shape({cancelButton:a.bool,cancelText:a.string})})}),filterConfig:a.shape({fields:a.arrayOf(Be)})}).isRequired};function zr(h){return console.info(h,"props passed"),e.jsx(e.Fragment,{children:e.jsx(cr,{config:h.config})})}module.exports=zr;
62
62
  //# sourceMappingURL=index.cjs.js.map