10 lines
6.7 KiB
JavaScript
10 lines
6.7 KiB
JavaScript
import{bI as P,bJ as J,bK as Q,a7 as W,ba as U,r as $,e as j,bb as R,bL as Z,u as w,F as B,b1 as G,p as u,c as n,af as K,j as v,bM as X,b3 as Y,b4 as ee,ac as D,b5 as O,b6 as H,b7 as se,J as te,b9 as I,bc as ne,bd as ae,H as z,bN as ie,Z as F,bo as V,bO as q,h as C,bP as oe,O as ce,$ as re,_ as le,bg as de,T as ue,bq as me,bQ as fe,bR as pe,S as he,aS as ve}from"./bundle.9b7ffc79.js";import{b as be,u as L}from"./bundle.385a0252.js";import{I as ge}from"./bundle.756326ba.js";import{u as ye}from"./bundle.671e441a.js";import{A as _e}from"./bundle.d4907ec4.js";/**
|
|
* Invoice Ninja (https://invoiceninja.com).
|
|
*
|
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
|
*
|
|
* @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
|
|
*
|
|
* @license https://www.elastic.co/licensing/elastic-license
|
|
*/function Se(b){const{setErrors:o,isDefaultTerms:r,isDefaultFooter:d}=b,[m]=P(),s=J(),f=Q(),g=W(Z);return async l=>{o(void 0),U.processing(),await s(!0);let a="/api/v1/invoices/:id?";r?(a+="save_default_terms=true",d&&(a+="&save_default_footer=true")):d&&(a+="save_default_footer=true"),$("PUT",j(a,{id:l.id}),l).then(async()=>{(r||d)&&await f(),U.success("updated_invoice"),R(["products","invoices"]),m.get("action")==="add_tasks"&&R(["tasks"])}).catch(y=>{var t;if(((t=y.response)==null?void 0:t.status)===422){const p=y.response.data;p.errors.amount?U.error(p.errors.amount[0]):U.dismiss(),o(p)}}).finally(()=>g(void 0))}}function Ae(b){var E,T;const[o]=w(),r=B(),d=G(),m=be(),[s,f]=u.useState((T=(E=r==null?void 0:r.company_user)==null?void 0:E.react_settings)==null?void 0:T.common_actions),[g,l]=u.useState([]),{entity:a,visible:y,setVisible:t}=b,p=m[a],[h,_]=u.useState(""),A=()=>{var e;return I.isEqual((e=r==null?void 0:r.company_user)==null?void 0:e.react_settings.common_actions,s)},x=e=>{var i;return((i=p.find(({value:c})=>c===e))==null?void 0:i.label)||""},N=()=>{const e=I.cloneDeep(r);I.set(e,"company_user.react_settings.common_actions",s),$("PUT",j("/api/v1/company_users/:id",{id:e.id}),e).then(i=>{I.set(e,"company_user",i.data.data),R(["company_users"]),d(ne(e))})},k=e=>{const i=s==null?void 0:s[a].filter(c=>e!==c);i&&f(c=>c&&{...c,[a]:i})},M=e=>{var c;const i=ae(s==null?void 0:s[a],e.source.index,(c=e.destination)==null?void 0:c.index);f(S=>S&&{...S,[a]:i})};return u.useEffect(()=>{if(h){const e=p.find(({value:i})=>h===i);e&&f(i=>i?{...i,[a]:[...i[a],e.value]}:{[a]:[e.value]}),_("")}},[h]),u.useEffect(()=>{s&&s[a]?l(p.filter(({value:e})=>!s[a].some(i=>i===e))):l(p)},[s]),n(K,{title:`${o(`${a}s`)} ${o("actions")} ${o("preferences")}`,visible:y,onClose:()=>{var e;t(!1),f((e=r==null?void 0:r.company_user)==null?void 0:e.react_settings.common_actions)},overflowVisible:!0,children:v("div",{className:"flex flex-col space-y-4",children:[n(X,{value:h,onValueChange:e=>_(e),label:o("actions"),clearAfterSelection:!0,children:g.map(({label:e,value:i})=>n("option",{value:i,children:e},i))}),!!(s!=null&&s[a].length)&&v("span",{className:"font-medium",children:[o("selected")," ",o("actions"),":"]}),!!(s!=null&&s[a].length)&&n(Y,{onDragEnd:M,children:n(ee,{droppableId:"preference-actions",renderClone:(e,i,c)=>v("div",{className:"flex items-center justify-between text-sm",...e.draggableProps,...e.dragHandleProps,ref:e.innerRef,children:[v("div",{className:"flex items-center space-x-2",children:[n(D,{className:"cursor-pointer",element:O,size:25}),n("span",{className:"font-medium",children:x(s==null?void 0:s[a][c.source.index])})]}),n("div",{children:n(D,{className:"cursor-pointer",element:H,size:25})})]}),children:e=>v("div",{className:"flex flex-col",...e.droppableProps,ref:e.innerRef,children:[s==null?void 0:s[a].map((i,c)=>n(se,{draggableId:c.toString(),index:c,children:S=>u.createElement("div",{className:"flex items-center justify-between py-1.5",...S.draggableProps,ref:S.innerRef,key:c},v("div",{className:"flex items-center space-x-2",children:[n(D,{className:"cursor-pointer",element:O,size:25,onClick:()=>k(i)}),n("span",{className:"font-medium",children:x(i)})]}),n("div",{...S.dragHandleProps,children:n(D,{className:"cursor-pointer",element:H,size:25})}))},c)),e.placeholder]})})}),n(te,{onClick:()=>{N(),t(!1)},disabled:A(),disableWithoutIcon:!0,children:o("save")})]})})}function xe(b){const o=B(),r=L({dropdown:!1}),{invoice:d}=b,[m,s]=u.useState(!1),[f,g]=u.useState();return u.useEffect(()=>{var a,y,t;const l=(t=(y=(a=o==null?void 0:o.company_user)==null?void 0:a.react_settings)==null?void 0:y.common_actions)==null?void 0:t.invoice;if(l){const p=r.filter(h=>{var _;return l.includes((_=h(d))==null?void 0:_.key)}).sort((h,_)=>{var A,x;return l.indexOf(String((A=h(d))==null?void 0:A.key)??"")-l.indexOf(String((x=_(d))==null?void 0:x.key)??"")});g(p)}},[o,d]),v(z,{children:[v("div",{className:"flex items-center space-x-4",children:[f==null?void 0:f.map((l,a)=>n("div",{children:l(d)},a)),n("div",{children:n(D,{className:"cursor-pointer",element:ie,size:25,onClick:()=>s(!0)})})]}),n(Ae,{entity:"invoice",visible:m,setVisible:s})]})}function Ce(b){const[o]=w(),r=F(),d=V(),{id:m}=q(),{invoice:s}=b,f=r("view_invoice")||r("edit_invoice")||d(s);return[{name:o("edit"),href:C("/invoices/:id/edit",{id:m})},{name:o("documents"),href:C("/invoices/:id/documents",{id:m}),enabled:f,formatName:()=>{var l;return n(oe,{numberOfDocuments:(l=s==null?void 0:s.documents)==null?void 0:l.length})}},{name:o("settings"),href:C("/invoices/:id/settings",{id:m})},{name:o("activity"),href:C("/invoices/:id/activity",{id:m})},{name:o("history"),href:C("/invoices/:id/history",{id:m})},{name:o("email_history"),href:C("/invoices/:id/email_history",{id:m})}]}function Ue(){const{documentTitle:b}=ce("edit_invoice"),[o]=w(),{id:r}=q(),[d]=P(),m=F(),s=V(),f=L(),{data:g}=re({id:r}),[l,a]=u.useState(),{calculateInvoiceSum:y}=ye({client:l}),[t,p]=le(ve),[h,_]=u.useState(),[A,x]=u.useState(!1),[N,k]=u.useState(!1),M=Se({setErrors:_,isDefaultTerms:A,isDefaultFooter:N}),E=Ce({invoice:t}),T=[{name:o("invoices"),href:"/invoices"},{name:o("edit_invoice"),href:C("/invoices/:id/edit",{id:r})}];return u.useEffect(()=>{const i=d.get("action")&&t?t:g;if(i){const c=I.cloneDeep(i);c.line_items.map(S=>S._id=de()),p(c),c!=null&&c.client&&a(c.client)}},[g]),u.useEffect(()=>{t&&y(t)},[t]),v(z,{children:[n(ue,{title:b,breadcrumbs:T,...(m("edit_invoice")||s(t))&&t&&{navigationTopRight:n(me,{resource:t,actions:f,onSaveClick:()=>M(t),disableSaveButton:t&&(t.status_id===ge.Cancelled||t.is_deleted),cypressRef:"invoiceActionDropdown"}),topRight:n(xe,{invoice:t})},children:(t==null?void 0:t.id)===r?v("div",{className:"space-y-4",children:[n(fe,{tabs:E}),n(pe,{context:{invoice:t,setInvoice:p,errors:h,isDefaultTerms:A,setIsDefaultTerms:x,isDefaultFooter:N,setIsDefaultFooter:k,client:l}})]}):n("div",{className:"flex justify-center items-center",children:n(he,{})})}),n(_e,{invoice:t,setInvoice:p})]})}export{Ue as default};
|