PageSourceSearch

https://app.squirrels.ai/assets/NotificationConfiguration-B3aJP9uk.js

js squirrels.ai collected 2026-10-05 13:52:25 UTC 14,486 bytes, 1 lines download raw bytes

1var xe=Object.defineProperty;var De=(i,n,s)=>n in i?xe(i,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):i[n]=s;var X=(i,n,s)=>De(i,typeof n!="symbol"?n+"":n,s);import{aq as T,cw as je,bS as Y,bT as Ne,j as r,ai as Ee,r as e,b2 as ae,t as R,af as $,e as H,P as U,F as Ae,ab as Z,bk as Fe,a1 as ke,i as P,ao as O,bU as Ie,T as Oe,aj as _e,ak as Te,S as Pe}from"./index-DbbrNrzR.js";import{g as qe}from"./form.utils-bGbY0J8M.js";const Ve=[{id:"code",label:"Code",field:"code",sortable:!0},je("customer","customerName","Customer",{sortable:!0,format:i=>i||""}),{id:"subject",label:"Subject",field:"subject",sortable:!0},Y("createdAt","Created At"),Y("updatedAt","Updated At"),Ne()],Be=(i,n,s,l)=>[{label:"View",icon:T.View,onClick:c=>i(c.id)},{label:"Edit",icon:T.Edit,onClick:c=>n(c.id)},{label:"Clone",icon:T.FileCopy,onClick:c=>s(c.id)},{label:c=>c.active?"Deactivate":"Activate",icon:c=>c.active?T.Block:T.CheckCircle,onClick:c=>l(c)}],Me=({data:i,loading:n,error:s,totalCount:l,page:c,pageLimit:o,sort:y,sortOrder:g,onPageChange:C,onPageSizeChange:p,onSortChange:h,onView:f,onEdit:w,onClone:E,onDelete:x,filters:j,onFilterChange:N})=>r.jsx(Ee,{data:i,columns:Ve,actions:Be(m=>{const b=i.find(S=>S.id===m);b&&f(b)},m=>{const b=i.find(S=>S.id===m);b&&w(b)},m=>{const b=i.find(S=>S.id===m);b&&E(b)},m=>{x(m)}),inlineActions:!0,hideToolbar:!0,keyExtractor:m=>m.id,loading:n,defaultSortField:y,defaultSortDirection:g,page:c,pageLimit:o,totalCount:l,onPageChange:C,onPageSizeChange:p,onSortChange:h,sequenceColumn:!0,emptyStateMessage:"No notification configurations available",error:s,showEmptyState:!s,filters:j,onFilterChange:N}),ee=()=>({code:"",customerId:null,subject:"",body:"",contentId:"",cc:"",bcc:"",active:!0}),$e=()=>{const[i,n]=e.useState(ee()),[s,l]=e.useState({}),[c,o]=e.useState(!1),[y,g]=e.useState(!1),[C,p]=e.useState({}),h=e.useMemo(()=>({code:{required:!0,custom:t=>!t||t.trim()===""?"Code is required":null},body:{required:!0,custom:t=>!t||t.trim()===""?"Body is required":null},cc:{custom:t=>null},bcc:{custom:t=>null}}),[]),f=e.useCallback(t=>{const a=i[t],u=h[t];if(!u)return!0;let v=null;return u.required&&(!a||typeof a=="string"&&a.trim()==="")?v=`${t} is required`:u.min&&typeof a=="number"&&a<u.min?v=`${t} must be at least ${u.min}`:u.max&&typeof a=="number"&&a>u.max?v=`${t} cannot exceed ${u.max}`:u.pattern&&typeof a=="string"&&!u.pattern.test(a)?v=`${t} format is invalid`:u.custom&&(v=u.custom(a)),l(I=>({...I,[t]:v||""})),!v},[i,h]),w=e.useCallback(()=>["code","body"].map(u=>f(u)).every(u=>u),[f]),E=e.useCallback(t=>{n(a=>({...a,...t})),g(!0),l({})},[]),x=e.useCallback((t,a)=>{n(u=>({...u,[t]:a})),g(!0),l(u=>{const v={...u};return delete v[t],v}),p(u=>({...u,[t]:!0}))},[]),j=e.useCallback((t,a)=>{x(t,a)},[x]),N=e.useCallback(t=>{f(t),p(a=>({...a,[t]:!0}))},[f]),m=e.useCallback(()=>{n(ee()),l({}),o(!1),g(!1),p({})},[]),b=e.useCallback(t=>{if(t){const a={code:t.code,customerId:t.customerId||null,subject:t.subject,body:t.body,contentId:t.contentId||"",cc:t.cc||"",bcc:t.bcc||"",active:t.active};n(a),g(!1)}else m()},[m]),S=e.useCallback(t=>{o(t)},[]),D=e.useMemo(()=>!Object.values(s).some(a=>a&&a.trim()!=="")&&y,[s,y]);return{formData:i,errors:s,isSubmitting:c,isValid:D,isDirty:y,touched:C,setFormData:E,setFieldValue:x,validateForm:w,validateField:f,resetForm:m,initializeForm:b,handleBlur:N,handleChange:j,setSubmitting:S}},Ue=["Verify Account","Account Created","Forgot Account Password","Reset Account Password","Account Password Changed","Mission Outcome Email","Mission Outcome SMS","Mission Outcome Phone","Mission Outcome WhatsApp Message","Mission Outcome WhatsApp Call"],ze=[{path:"code",label:"Code",type:"select",placeholder:"Select code",required:!0,options:Ue.map(i=>({value:i,label:i})),errorMessages:{required:"Code is required"}},{path:"customerId",label:"Customer",type:"entitySelect",entity:"customer",placeholder:"Select customer",required:!1},{path:"subject",label:"Subject",type:"text",placeholder:"Enter subject (optional for SMS/Phone)",required:!1},{path:"body",label:"Body",type:"textarea",placeholder:"Enter body content",required:!0,errorMessages:{required:"Body is required"}},{path:"contentId",label:"Content ID",type:"text",placeholder:"Enter WhatsApp meta template content ID",required:!1},{path:"cc",label:"CC",type:"text",placeholder:"Enter CC email addresses (comma separated)",required:!1},{path:"bcc",label:"BCC",type:"text",placeholder:"Enter BCC email addresses (comma separated)",required:!1}],Le=(i=!1)=>ze,We="_formContainer_e0b69_72",He="_formSection_e0b69_89",Re="_previewSection_e0b69_104",Ge="_previewTitle_e0b69_123",Je="_previewContent_e0b69_130",q={formContainer:We,formSection:He,previewSection:Re,previewTitle:Ge,previewContent:Je},L=({open:i,onClose:n,onSubmit:s,initialData:l,isEditing:c=!1})=>{const{formData:o,errors:y,isSubmitting:g,validateForm:C,resetForm:p,initializeForm:h,handleChange:f,handleBlur:w,setSubmitting:E}=$e(),[x,j]=e.useState("");e.useEffect(()=>{i?l?(h(l),j(l.body||"")):(p(),j("")):p()},[i,l,c,h,p]),e.useEffect(()=>{j(o.body||"")},[o.body]);const N=async()=>
1{if(C())try{if(E(!0),c&&l){const a={id:l.id,...o};await s(a)}else await s(o)}catch(a){console.error("Error submitting form:",a)}finally{E(!1)}},m=()=>{p(),n()},b=e.useMemo(()=>Le(c),[c]),S=e.useMemo(()=>o.code.trim()!==""&&o.body.trim()!=="",[o]),D=r.jsxs(r.Fragment,{children:[r.jsx(U,{onClick:m,children:"Cancel"}),r.jsx(U,{onClick:N,variant:"contained",color:"primary",disabled:!S||g,children:c?"Update":"Create"})]}),t=a=>{const u=qe(a.path);let v=o[u];return v==null&&(v=""),r.jsx(Ae,{field:a,value:v,onChange:(I,_)=>f(I,_),onBlur:()=>w(u),error:y[u]||""})};return r.jsx(ae,{open:i,onClose:m,title:c?"Edit Notification Configuration":"Add New Notification Configuration",maxWidth:"lg",actions:D,children:r.jsxs(R,{className:q.formContainer,children:[r.jsx("div",{className:q.formSection,children:r.jsx($,{container:!0,spacing:2,children:b.map(a=>r.jsx($,{item:!0,xs:12,md:a.type==="textarea"?12:6,children:t(a)},a.path))})}),r.jsxs("div",{className:q.previewSection,children:[r.jsx(H,{variant:"subtitle1",className:q.previewTitle,children:"Preview"}),r.jsx("div",{className:q.previewContent,dangerouslySetInnerHTML:{__html:x}})]})]})})},Ke="_fieldContainer_rart1_101",Qe="_fieldLabel_rart1_105",Xe="_fieldValue_rart1_112",W={fieldContainer:Ke,fieldLabel:Qe,fieldValue:Xe},te=({open:i,onClose:n,notification:s,mode:l="view",onConfirmStatusChange:c})=>{const o=[{label:"Code",value:s.code},{label:"Customer",value:s.customerName||""},{label:"Subject",value:s.subject},{label:"Body",value:s.body},{label:"CC",value:s.cc||"N/A"},{label:"BCC",value:s.bcc||"N/A"},{label:"Created At",value:Z(s.createdAt)},{label:"Updated At",value:Z(s.updatedAt)||"N/A"}],y=()=>r.jsxs(r.Fragment,{children:[r.jsx(U,{onClick:n,variant:"outlined",children:"Cancel"}),r.jsx(U,{onClick:()=>c&&c(s),variant:"contained",color:s.active?"error":"success",children:s.active?"Deactivate":"Activate"})]});return r.jsxs(ae,{open:i,onClose:n,title:l==="status"?"Confirm Status Change":"Notification Configuration Details",maxWidth:"md",customStyles:{content:{padding:"16px"}},actions:l==="status"?y():void 0,children:[r.jsx(R,{display:"flex",justifyContent:"flex-end",mb:2,children:r.jsx(Fe,{label:s.active?"Active":"Inactive",color:s.active?"success":"error",size:"small"})}),r.jsx(ke,{elevation:0,sx:{p:2,mb:2},children:r.jsx($,{container:!0,spacing:2,children:o.map(g=>r.jsxs($,{item:!0,xs:12,md:6,className:W.fieldContainer,children:[r.jsx(H,{className:W.fieldLabel,children:g.label}),r.jsx(H,{className:W.fieldValue,children:g.value})]},g.label))})})]})},Ye=({isAddDialogOpen:i,isEditDialogOpen:n,isCloneDialogOpen:s,isViewDialogOpen:l,isStatusDialogOpen:c,selectedNotification:o,onCloseAddDialog:y,onCloseEditDialog:g,onCloseCloneDialog:C,onCloseViewDialog:p,onCloseStatusDialog:h,onSubmitCreate:f,onSubmitClone:w,onSubmitUpdate:E,onConfirmStatusChange:x})=>{const j=()=>{const D=async t=>{"id"in t||await f(t)};return r.jsx(L,{open:i,onClose:y,onSubmit:D,isEditing:!1})},N=()=>{if(!o||!n)return null;const D=async t=>{"id"in t&&await E(t)};return r.jsx(L,{open:n,onClose:g,onSubmit:D,initialData:o,isEditing:!0})},m=()=>{if(!o||!s)return null;const D=async t=>{"id"in t||await w(t)};return r.jsx(L,{open:s,onClose:C,onSubmit:D,initialData:o,isEditing:!1})},b=()=>!o||!l?null:r.jsx(te,{open:l,onClose:p,notification:o,mode:"view"}),S=()=>!o||!c?null:r.jsx(te,{open:c,onClose:h,notification:o,mode:"status",onConfirmStatusChange:x});return r.jsxs(r.Fragment,{children:[j(),N(),m(),b(),S()]})};class Ze{constructor(){X(this,"baseUrl","notification-configuration")}async fetchNotificationConfigurations(n){try{const{pageOffset:s,pageLimit:l,searchText:c,sort:o,sortOrder:y,active:g,customerId:C,code:p}=n,h={pageOffset:s,pageLimit:l,searchText:c,sort:o,sortOrder:y,active:g};return C&&(h.customerId=C),p&&(h.code=p),(await P.get(this.baseUrl,{params:h})).data}catch(s){throw new Error(O(s))}}async createNotificationConfiguration(n){try{return(await P.post(this.baseUrl,n)).data}catch(s){throw new Error(O(s))}}async updateNotificationConfiguration(n){try{return(await P.put(`${this.baseUrl}/${n.id}`,n)).data}catch(s){throw new Error(O(s))}}async deleteNotificationConfiguration(n){try{await P.delete(`${this.baseUrl}/${n}`)}catch(s){throw new Error(O(s))}}async toggleNotificationConfigurationStatus(n,s){try{return(await P.patch(`${this.baseUrl}/${n}`,{active:s})).data}catch(l){throw new Error(O(l))}}}const V=new Ze,et=()=>{const[i,n]=e.useState([]),[s,l]=e.useState(!1),[c,o]=e.useState(null),[y,g]=e.useState(0),[C,p]=e.useState(0),[h,f]=e.useState(10),[w,E]=e.useState("createdAt"),[x,j]=e.useState("desc"),[N,m]=e.useState(""),[b,S]=e.useState(!0),[D,t]=e.useState(void 0),a=e.useCallback(async()=>{try{l(!0),o(null);const A={pageOffset:C*h,pageLimit:h,searchText:N||void 0,sort:w,sortOrder:x,active:b,customerId:D||void 0},F=await V.fetchNotificationConfigurations(A);n(F.data),g(F.totalCount)}catch(A){o(A instanceof Error?A.message:"Failed to fetch notification configurations")}finally{l(!1)}},[C,h,w,x,N,b,D]),u=e.useCallback(async A=>{try{return o(null),await V.createNotificationConfiguration(A),await a(),!0}catch(F){return o(O(F)),!1}},[a]),v=e.useCallback(async A=>{try{return o(null),await V.updateNotificationConfiguration(A),await a(),!0}catch(F){return o(O(F)),!1}},[a]),I=e.useCallback(async A=>{try{return o(null),await V.deleteNotificationConfiguration(A),await a(),!0}catch(F){return o(F instanceof Error?F.message:"Failed to delete notification configuration"),!1}},[a]),_=e.useCallback(async(A,F)=>{try{return o(null),await V.toggleNotificationConfigurationStatus(A,F),await a(),!0}catch(B){return o(B instanceof Error?B.message:"Failed to toggle notification configuration status"),!1}},[a]),z=e.useCallback(()=>{o(null)},[]);return e.useEffect(()=>{a()},[a]),{notifications:i,loading:s,error:c,totalCount:y,currentPage:C,pageSize:h,sortBy:w,sortOrder:x,searchText:N,active:b,customerId:D,fetchNotifications:a,createNotification:u,updateNotification:v,deleteNotification:I,toggleNotificationStatus:_,setCurrentPage:p,setPageSize:f,setSortBy:E,setSortOrder:j,setSearchText:m,setActive:S,setCustomerId:t,clearError:z}},tt=()=>{const[i,n]=e.useState(!1),[s,l]=e.useState(!1),[c,o]=e.useState(!1),[y,g]=e.useState(!1),[C,p]=e.useState(!1),[h,f]=e.useState(null),w=e.useCallback(()=>{n(!0),f(null)},[]),E=e.useCallback(()=>{n(!1),f(null)},[]),x=e.useCallback(a=>{f(a),l(!0)},[]),j=e.useCallback(()=>
1{l(!1),f(null)},[]),N=e.useCallback(a=>{f(a),o(!0)},[]),m=e.useCallback(()=>{o(!1),f(null)},[]),b=e.useCallback(a=>{f(a),g(!0)},[]),S=e.useCallback(()=>{g(!1),f(null)},[]),D=e.useCallback(a=>{f(a),p(!0)},[]),t=e.useCallback(()=>{p(!1),f(null)},[]);return{isAddDialogOpen:i,isEditDialogOpen:s,isCloneDialogOpen:c,isViewDialogOpen:y,isStatusDialogOpen:C,selectedNotification:h,openAddDialog:w,closeAddDialog:E,openEditDialog:x,closeEditDialog:j,openCloneDialog:N,closeCloneDialog:m,openViewDialog:b,closeViewDialog:S,openStatusDialog:D,closeStatusDialog:t,setSelectedNotification:f}},nt=()=>{const{notifications:i,loading:n,error:s,totalCount:l,currentPage:c,pageSize:o,sortBy:y,sortOrder:g,fetchNotifications:C,createNotification:p,updateNotification:h,toggleNotificationStatus:f,setCurrentPage:w,setPageSize:E,setSortBy:x,setSortOrder:j,setSearchText:N,setActive:m,setCustomerId:b}=et(),[S,D]=e.useState({active:"Active"}),[t,a]=e.useState(""),[u,v]=e.useState({open:!1,message:"",severity:"success"}),I=()=>{v(d=>({...d,open:!1}))},{isAddDialogOpen:_,isEditDialogOpen:z,isCloneDialogOpen:A,isViewDialogOpen:F,isStatusDialogOpen:B,selectedNotification:se,openAddDialog:oe,closeAddDialog:G,openEditDialog:ne,closeEditDialog:J,openCloneDialog:re,closeCloneDialog:K,openViewDialog:ie,closeViewDialog:ce,openStatusDialog:le,closeStatusDialog:Q,setSelectedNotification:M}=tt();e.useEffect(()=>{C()},[C]),e.useEffect(()=>{s&&v({open:!0,message:s,severity:"error"})},[s]),e.useEffect(()=>{S.active==="Active"?m(!0):S.active==="Inactive"?m(!1):m(void 0)},[S.active,m]),e.useEffect(()=>{b(S.customerName||void 0),w(0)},[S.customerName,b,w]);const ue=d=>{w(d)},de=d=>{E(d)},fe=(d,k)=>{x(d),j(k)},me=(d,k)=>{D(we=>({...we,[d]:k})),w(0)},Ce=d=>{M(d),ne(d)},ge=d=>{M(d),ie(d)},pe=d=>{M(d),re(d)},be=d=>{M(d),le(d)},he=async d=>{await p(d)&&(G(),C())},Se=async d=>{await p(d)&&(K(),C())},ve=async d=>{await h(d)&&(J(),C())},ye=async d=>{await f(d.id,!d.active)&&(Q(),C())};return r.jsxs(R,{sx:{p:{xs:1,sm:3}},children:[r.jsx(Ie,{title:"Notification Configuration",count:l,inlineButtonLabel:"Add Notification",onInlineButtonClick:oe,rightContent:r.jsx(Oe,{placeholder:"Search by subject",variant:"outlined",size:"small",value:t,onChange:d=>{const k=d.target.value;a(k),N(k),C()},InputProps:{startAdornment:r.jsx(_e,{position:"start",children:r.jsx(Te,{})})},sx:{width:"100%",maxWidth:300}})}),r.jsx(Me,{data:i,loading:n,error:s,totalCount:l,page:c,pageLimit:o,sort:y,sortOrder:g,onPageChange:ue,onPageSizeChange:de,onSortChange:fe,onView:ge,onEdit:Ce,onClone:pe,onDelete:be,filters:S,onFilterChange:me}),r.jsx(Ye,{isAddDialogOpen:_,isEditDialogOpen:z,isCloneDialogOpen:A,isViewDialogOpen:F,isStatusDialogOpen:B,selectedNotification:se,onCloseAddDialog:G,onCloseEditDialog:J,onCloseCloneDialog:K,onCloseViewDialog:ce,onCloseStatusDialog:Q,onSubmitCreate:he,onSubmitClone:Se,onSubmitUpdate:ve,onConfirmStatusChange:ye}),r.jsx(Pe,{open:u.open,message:u.message,severity:u.severity,onClose:I})]})};export{nt as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.