@dropins/storefront-quote-management 0.0.1-alpha29 → 0.0.1-alpha30

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.
Files changed (95) hide show
  1. package/api/graphql/NegotiableQuoteTemplateFragment.d.ts +1 -1
  2. package/api/sendForReview/index.d.ts +1 -1
  3. package/api/sendForReview/sendForReview.d.ts +3 -0
  4. package/api/sendQuoteTemplateForReview/sendQuoteTemplateForReview.d.ts +7 -0
  5. package/api.js +8 -56
  6. package/api.js.map +1 -1
  7. package/chunks/AttachedFilesList.js +4 -0
  8. package/chunks/AttachedFilesList.js.map +1 -0
  9. package/chunks/ChevronDown.js +1 -1
  10. package/chunks/ChevronDown.js.map +1 -1
  11. package/chunks/ConfirmationModal.js +1 -1
  12. package/chunks/ConfirmationModal.js.map +1 -1
  13. package/chunks/ItemsQuoted.js +1 -1
  14. package/chunks/ItemsQuoted.js.map +1 -1
  15. package/chunks/ItemsQuotedTemplate.js +1 -1
  16. package/chunks/ItemsQuotedTemplate.js.map +1 -1
  17. package/chunks/LineItemNoteModal.js +4 -0
  18. package/chunks/LineItemNoteModal.js.map +1 -0
  19. package/chunks/NegotiableQuoteTemplateFragment.js +6 -0
  20. package/chunks/NegotiableQuoteTemplateFragment.js.map +1 -1
  21. package/chunks/OrderSummaryLine.js +1 -1
  22. package/chunks/OrderSummaryLine.js.map +1 -1
  23. package/chunks/QuoteCommentsList.js +1 -1
  24. package/chunks/QuoteCommentsList.js.map +1 -1
  25. package/chunks/QuoteCommentsList3.js +1 -1
  26. package/chunks/QuoteCommentsList3.js.map +1 -1
  27. package/chunks/RenameQuoteModal.js +4 -0
  28. package/chunks/RenameQuoteModal.js.map +1 -0
  29. package/chunks/ShippingAddressDisplay.js +1 -1
  30. package/chunks/ShippingAddressDisplay.js.map +1 -1
  31. package/chunks/addQuoteTemplateLineItemNote.js +33 -0
  32. package/chunks/addQuoteTemplateLineItemNote.js.map +1 -0
  33. package/chunks/duplicateNegotiableQuote.js +8 -8
  34. package/chunks/duplicateNegotiableQuote.js.map +1 -1
  35. package/chunks/openQuoteTemplate.js +28 -8
  36. package/chunks/openQuoteTemplate.js.map +1 -1
  37. package/chunks/requestNegotiableQuote.js +25 -0
  38. package/chunks/requestNegotiableQuote.js.map +1 -0
  39. package/chunks/setLineItemNote.js +1 -1
  40. package/chunks/transform-quote-template.js +1 -1
  41. package/chunks/transform-quote-template.js.map +1 -1
  42. package/chunks/transform-quote.js +1 -1
  43. package/chunks/uploadFile.js +2 -23
  44. package/chunks/uploadFile.js.map +1 -1
  45. package/components/AttachedFilesList/AttachedFilesList.d.ts +16 -0
  46. package/components/AttachedFilesList/index.d.ts +11 -0
  47. package/components/LineItemNoteModal/LineItemNoteModal.d.ts +1 -0
  48. package/components/ManageNegotiableQuote/ManageNegotiableQuote.d.ts +2 -0
  49. package/components/ManageNegotiableQuoteTemplate/ManageNegotiableQuoteTemplate.d.ts +3 -2
  50. package/components/ProductListTable/ProductListTable.d.ts +1 -0
  51. package/components/QuoteCommentsList/QuoteCommentsList.d.ts +4 -0
  52. package/components/ReferenceDocumentFormModal/ReferenceDocumentFormModal.d.ts +30 -0
  53. package/components/ReferenceDocumentFormModal/index.d.ts +11 -0
  54. package/components/ReferenceDocumentsList/ReferenceDocumentsList.d.ts +18 -0
  55. package/components/ReferenceDocumentsList/index.d.ts +11 -0
  56. package/components/RequestNegotiableQuoteForm/RequestNegotiableQuoteForm.d.ts +1 -0
  57. package/components/index.d.ts +3 -0
  58. package/containers/ItemsQuoted.js +1 -1
  59. package/containers/ItemsQuotedTemplate/ItemsQuotedTemplate.d.ts +6 -0
  60. package/containers/ItemsQuotedTemplate.js +1 -1
  61. package/containers/ManageNegotiableQuote/ManageNegotiableQuote.d.ts +22 -0
  62. package/containers/ManageNegotiableQuote.js +1 -1
  63. package/containers/ManageNegotiableQuote.js.map +1 -1
  64. package/containers/ManageNegotiableQuoteTemplate/ManageNegotiableQuoteTemplate.d.ts +28 -5
  65. package/containers/ManageNegotiableQuoteTemplate.js +3 -1
  66. package/containers/ManageNegotiableQuoteTemplate.js.map +1 -1
  67. package/containers/OrderSummary.js +1 -1
  68. package/containers/OrderSummary.js.map +1 -1
  69. package/containers/OrderSummaryLine.js +1 -1
  70. package/containers/QuoteSummaryList.js +1 -1
  71. package/containers/QuoteSummaryList.js.map +1 -1
  72. package/containers/QuoteTemplatesListTable.js +1 -1
  73. package/containers/QuoteTemplatesListTable.js.map +1 -1
  74. package/containers/QuotesListTable.js +1 -1
  75. package/containers/QuotesListTable.js.map +1 -1
  76. package/containers/RequestNegotiableQuoteForm/RequestNegotiableQuoteForm.d.ts +10 -0
  77. package/containers/RequestNegotiableQuoteForm.js +1 -1
  78. package/containers/RequestNegotiableQuoteForm.js.map +1 -1
  79. package/containers/ShippingAddressDisplay/ShippingAddressDisplay.d.ts +2 -2
  80. package/data/models/negotiable-quote-template-model.d.ts +2 -0
  81. package/data/transforms/__fixtures__/negotiableQuoteTemplateData.d.ts +55 -0
  82. package/hooks/useItemsQuotedTemplate.d.ts +16 -0
  83. package/hooks/useReferenceDocumentLinks.d.ts +34 -0
  84. package/hooks/useRemoveTemplateItems.d.ts +25 -0
  85. package/hooks/useRenameTemplate.d.ts +71 -0
  86. package/hooks/useUpdateTemplateQuantities.d.ts +27 -0
  87. package/i18n/en_US.json.d.ts +102 -3
  88. package/package.json +1 -1
  89. package/render.js +5 -5
  90. package/render.js.map +1 -1
  91. package/utils/fileUtils.d.ts +46 -0
  92. package/chunks/QuotePricesSummary.js +0 -4
  93. package/chunks/QuotePricesSummary.js.map +0 -1
  94. package/chunks/TabbedContent.js +0 -4
  95. package/chunks/TabbedContent.js.map +0 -1
@@ -1,27 +1,6 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{events as E}from"@dropins/tools/event-bus.js";import{N as w}from"./NegotiableQuoteFragment.js";import{f as l,a as f}from"./transform-quote.js";import"./state.js";const N=`
4
- mutation REQUEST_NEGOTIABLE_QUOTE_MUTATION(
5
- $cartId: ID!
6
- $quoteName: String!
7
- $comment: NegotiableQuoteCommentInput!
8
- $isDraft: Boolean
9
- ) {
10
- requestNegotiableQuote(
11
- input: {
12
- cart_id: $cartId
13
- quote_name: $quoteName
14
- comment: $comment
15
- is_draft: $isDraft
16
- }
17
- ) {
18
- quote {
19
- ...NegotiableQuoteFragment
20
- }
21
- }
22
- }
23
- ${w}
24
- `,$=async t=>{const{cartId:n,quoteName:e,comment:o,attachments:r,isDraft:i}=t;if(!n)throw new Error("Cart ID is required");if(!e)throw new Error("Quote name is required");if(!o)throw new Error("Comment is required");return l(N,{variables:{cartId:n,quoteName:e,comment:r!=null&&r.length?{comment:o,attachments:r}:{comment:o},isDraft:i}}).then(m=>{var s,u;const{errors:d}=m;if(d){const c=d.map(p=>p.message).join("; ");throw new Error(`Failed to request negotiable quote: ${c}`)}const a=f((u=(s=m.data)==null?void 0:s.requestNegotiableQuote)==null?void 0:u.quote);if(!a)throw new Error("Failed to transform quote data: Invalid response structure");return E.emit("quote-management/negotiable-quote-requested",{quote:a,input:{cartId:n,quoteName:e,comment:o,attachments:r,isDraft:i}}),a})},h=`
3
+ import{events as w}from"@dropins/tools/event-bus.js";import"./state.js";import{f as c}from"./transform-quote.js";const E=`
25
4
  mutation INITIATE_UPLOAD_MUTATION($input: initiateUploadInput!) {
26
5
  initiateUpload(input: $input) {
27
6
  upload_url
@@ -37,5 +16,5 @@ import{events as E}from"@dropins/tools/event-bus.js";import{N as w}from"./Negoti
37
16
  message
38
17
  }
39
18
  }
40
- `,Q=async t=>{const n="NEGOTIABLE_QUOTE_ATTACHMENT";try{const e=t==null?void 0:t.name;if(!t||!e)throw new Error("Invalid file");const o=I=>I.map(_=>_.message).join("; "),{data:r,errors:i}=await l(h,{variables:{input:{key:e,media_resource_type:n}}});if(i&&i.length)throw new Error(o(i));const{upload_url:m,key:d}=(r==null?void 0:r.initiateUpload)||{};if(!m||!d)throw new Error("Failed to initiate upload");const a=await fetch(m,{method:"PUT",body:t});if(!a.ok)throw new Error(`Upload failed: ${a.status} ${a.statusText}`);const{data:s,errors:u}=await l(U,{variables:{input:{key:d,media_resource_type:n}}});if(u&&u.length)throw new Error(o(u));const{success:c,key:p,message:T}=(s==null?void 0:s.finishUpload)||{};if(!c||!p)throw new Error(T||"Failed to finish upload");return{key:p}}catch(e){throw E.emit("quote-management/file-upload-error",{error:(e==null?void 0:e.message)||"File upload failed",fileName:t==null?void 0:t.name}),e instanceof Error?e:new Error("File upload failed")}};export{$ as r,Q as u};
19
+ `,A=async r=>{const s="NEGOTIABLE_QUOTE_ATTACHMENT";try{const t=r==null?void 0:r.name;if(!r||!t)throw new Error("Invalid file");const p=h=>h.map(I=>I.message).join("; "),{data:e,errors:o}=await c(E,{variables:{input:{key:t,media_resource_type:s}}});if(o&&o.length)throw new Error(p(o));const{upload_url:u,key:d}=(e==null?void 0:e.initiateUpload)||{};if(!u||!d)throw new Error("Failed to initiate upload");const a=await fetch(u,{method:"PUT",body:r});if(!a.ok)throw new Error(`Upload failed: ${a.status} ${a.statusText}`);const{data:i,errors:n}=await c(U,{variables:{input:{key:d,media_resource_type:s}}});if(n&&n.length)throw new Error(p(n));const{success:m,key:l,message:T}=(i==null?void 0:i.finishUpload)||{};if(!m||!l)throw new Error(T||"Failed to finish upload");return{key:l}}catch(t){throw w.emit("quote-management/file-upload-error",{error:(t==null?void 0:t.message)||"File upload failed",fileName:r==null?void 0:r.name}),t instanceof Error?t:new Error("File upload failed")}};export{A as u};
41
20
  //# sourceMappingURL=uploadFile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"uploadFile.js","sources":["/@dropins/storefront-quote-management/src/api/requestNegotiableQuote/graphql/RequestNegotiableQuoteMutation.ts","/@dropins/storefront-quote-management/src/api/requestNegotiableQuote/requestNegotiableQuote.ts","/@dropins/storefront-quote-management/src/api/uploadFile/graphql/InitiateUploadMutation.ts","/@dropins/storefront-quote-management/src/api/uploadFile/graphql/FinishUploadMutation.ts","/@dropins/storefront-quote-management/src/api/uploadFile/uploadFile.ts"],"sourcesContent":["/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { NEGOTIABLE_QUOTE_FRAGMENT } from '@/quote-management/api/graphql/NegotiableQuoteFragment';\n\nexport const REQUEST_NEGOTIABLE_QUOTE_MUTATION = `\n mutation REQUEST_NEGOTIABLE_QUOTE_MUTATION(\n $cartId: ID!\n $quoteName: String!\n $comment: NegotiableQuoteCommentInput!\n $isDraft: Boolean\n ) {\n requestNegotiableQuote(\n input: {\n cart_id: $cartId\n quote_name: $quoteName\n comment: $comment\n is_draft: $isDraft\n }\n ) {\n quote {\n ...NegotiableQuoteFragment\n }\n }\n }\n ${NEGOTIABLE_QUOTE_FRAGMENT}\n`;\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/quote-management/api';\nimport { events } from '@adobe-commerce/event-bus';\nimport { REQUEST_NEGOTIABLE_QUOTE_MUTATION } from './graphql/RequestNegotiableQuoteMutation';\nimport { NegotiableQuoteModel } from '@/quote-management/data/models/negotiable-quote-model';\nimport { transformQuote } from '@/quote-management/data/transforms';\n\nexport interface RequestNegotiableQuoteInput {\n cartId: string;\n quoteName: string;\n comment: string;\n isDraft?: boolean;\n attachments?: { key: string }[];\n}\n\nexport const requestNegotiableQuote = async (\n input: RequestNegotiableQuoteInput\n): Promise<NegotiableQuoteModel | null> => {\n const { cartId, quoteName, comment, attachments, isDraft } = input;\n\n if (!cartId) {\n throw new Error('Cart ID is required');\n }\n\n if (!quoteName) {\n throw new Error('Quote name is required');\n }\n\n if (!comment) {\n throw new Error('Comment is required');\n }\n\n return fetchGraphQl(REQUEST_NEGOTIABLE_QUOTE_MUTATION, {\n variables: {\n cartId,\n quoteName,\n comment: attachments?.length ? { comment, attachments } : { comment },\n isDraft,\n },\n }).then((response) => {\n const { errors } = response;\n\n if (errors) {\n // Provide more detailed error information\n const errorMessages = errors.map((error) => error.message).join('; ');\n throw new Error(`Failed to request negotiable quote: ${errorMessages}`);\n }\n\n // Transform the quote data\n const quoteData = transformQuote(response.data?.requestNegotiableQuote?.quote);\n\n if (!quoteData) {\n throw new Error(\n 'Failed to transform quote data: Invalid response structure'\n );\n }\n\n // Emit event with transformed quote data on success\n events.emit('quote-management/negotiable-quote-requested', {\n quote: quoteData,\n input: { cartId, quoteName, comment, attachments, isDraft },\n });\n\n return quoteData;\n });\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nexport const INITIATE_UPLOAD_MUTATION = `\n mutation INITIATE_UPLOAD_MUTATION($input: initiateUploadInput!) {\n initiateUpload(input: $input) {\n upload_url\n key\n expires_at\n }\n }\n`;","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nexport const FINISH_UPLOAD_MUTATION = `\n mutation FINISH_UPLOAD_MUTATION($input: finishUploadInput!) {\n finishUpload(input: $input) {\n success\n key\n message\n }\n }\n`;","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { fetchGraphQl } from '@/quote-management/api';\nimport { events } from '@adobe-commerce/event-bus';\nimport { INITIATE_UPLOAD_MUTATION } from '@/quote-management/api/uploadFile/graphql/InitiateUploadMutation';\nimport { FINISH_UPLOAD_MUTATION } from '@/quote-management/api/uploadFile/graphql/FinishUploadMutation';\n\ntype GraphQLError = { message: string };\ntype InitiateUploadData = {\n initiateUpload?: {\n upload_url: string;\n key: string;\n expires_at: string;\n };\n};\ntype FinishUploadData = {\n finishUpload?: {\n success: boolean;\n key: string;\n message?: string;\n };\n};\ntype GraphQLResponse<T> = {\n data?: T;\n errors?: GraphQLError[];\n};\n\nexport const uploadFile = async (file: File): Promise<{ key: string }> => {\n const mediaResourceType = 'NEGOTIABLE_QUOTE_ATTACHMENT';\n\n try {\n const filename = file?.name;\n if (!file || !filename) throw new Error('Invalid file');\n\n const formatGraphQLErrors = (errors: GraphQLError[]): string =>\n errors.map((e) => e.message).join('; ');\n\n const { data: initialData, errors: initialErrors } = (await fetchGraphQl(\n INITIATE_UPLOAD_MUTATION,\n { \n variables: { input: { key: filename, media_resource_type: mediaResourceType } } \n }\n )) as GraphQLResponse<InitiateUploadData>;\n if (initialErrors && initialErrors.length) throw new Error(formatGraphQLErrors(initialErrors));\n\n const { upload_url, key } = initialData?.initiateUpload || {};\n if (!upload_url || !key) throw new Error('Failed to initiate upload');\n\n const put = await fetch(upload_url, { method: 'PUT', body: file });\n if (!put.ok) throw new Error(`Upload failed: ${put.status} ${put.statusText}`);\n\n const { data: finishData, errors: finishErrors } = (await fetchGraphQl(\n FINISH_UPLOAD_MUTATION,\n { \n variables: { input: { key, media_resource_type: mediaResourceType } } \n }\n )) as GraphQLResponse<FinishUploadData>;\n if (finishErrors && finishErrors.length) throw new Error(formatGraphQLErrors(finishErrors));\n\n const { success, key: finalizedKey, message } = finishData?.finishUpload || {};\n if (!success || !finalizedKey) throw new Error(message || 'Failed to finish upload');\n\n return { key: finalizedKey };\n \n } catch (err: any) {\n events.emit('quote-management/file-upload-error', {\n error: err?.message || 'File upload failed',\n fileName: file?.name,\n });\n throw err instanceof Error ? err : new Error('File upload failed');\n }\n};\n"],"names":["REQUEST_NEGOTIABLE_QUOTE_MUTATION","NEGOTIABLE_QUOTE_FRAGMENT","requestNegotiableQuote","input","cartId","quoteName","comment","attachments","isDraft","fetchGraphQl","response","errors","errorMessages","error","quoteData","transformQuote","_b","_a","events","INITIATE_UPLOAD_MUTATION","FINISH_UPLOAD_MUTATION","uploadFile","file","mediaResourceType","filename","formatGraphQLErrors","e","initialData","initialErrors","upload_url","key","put","finishData","finishErrors","success","finalizedKey","message","err"],"mappings":"yKAWO,MAAMA,EAAoC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAoB7CC,CAAyB;AAAA,ECRhBC,EAAyB,MACpCC,GACyC,CACzC,KAAM,CAAE,OAAAC,EAAQ,UAAAC,EAAW,QAAAC,EAAS,YAAAC,EAAa,QAAAC,GAAYL,EAE7D,GAAI,CAACC,EACH,MAAM,IAAI,MAAM,qBAAqB,EAGvC,GAAI,CAACC,EACH,MAAM,IAAI,MAAM,wBAAwB,EAG1C,GAAI,CAACC,EACH,MAAM,IAAI,MAAM,qBAAqB,EAGvC,OAAOG,EAAaT,EAAmC,CACrD,UAAW,CACT,OAAAI,EACA,UAAAC,EACA,QAASE,GAAA,MAAAA,EAAa,OAAS,CAAE,QAAAD,EAAS,YAAAC,CAAA,EAAgB,CAAE,QAAAD,CAAA,EAC5D,QAAAE,CAAA,CACF,CACD,EAAE,KAAME,GAAa,SACpB,KAAM,CAAE,OAAAC,GAAWD,EAEnB,GAAIC,EAAQ,CAEV,MAAMC,EAAgBD,EAAO,IAAKE,GAAUA,EAAM,OAAO,EAAE,KAAK,IAAI,EACpE,MAAM,IAAI,MAAM,uCAAuCD,CAAa,EAAE,CACxE,CAGA,MAAME,EAAYC,GAAeC,GAAAC,EAAAP,EAAS,OAAT,YAAAO,EAAe,yBAAf,YAAAD,EAAuC,KAAK,EAE7E,GAAI,CAACF,EACH,MAAM,IAAI,MACR,4DAAA,EAKJ,OAAAI,EAAO,KAAK,8CAA+C,CACzD,MAAOJ,EACP,MAAO,CAAE,OAAAV,EAAQ,UAAAC,EAAW,QAAAC,EAAS,YAAAC,EAAa,QAAAC,CAAA,CAAQ,CAC3D,EAEMM,CACT,CAAC,CACH,EChEaK,EAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECA3BC,EAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECyBzBC,EAAa,MAAOC,GAAyC,CACxE,MAAMC,EAAoB,8BAE1B,GAAI,CACF,MAAMC,EAAWF,GAAA,YAAAA,EAAM,KACvB,GAAI,CAACA,GAAQ,CAACE,EAAU,MAAM,IAAI,MAAM,cAAc,EAEtD,MAAMC,EAAuBd,GAC3BA,EAAO,IAAKe,GAAMA,EAAE,OAAO,EAAE,KAAK,IAAI,EAElC,CAAE,KAAMC,EAAa,OAAQC,CAAA,EAAmB,MAAMnB,EAC1DU,EACA,CACE,UAAW,CAAE,MAAO,CAAE,IAAKK,EAAU,oBAAqBD,EAAkB,CAAE,CAChF,EAEF,GAAIK,GAAiBA,EAAc,OAAQ,MAAM,IAAI,MAAMH,EAAoBG,CAAa,CAAC,EAE7F,KAAM,CAAE,WAAAC,EAAY,IAAAC,CAAA,GAAQH,GAAA,YAAAA,EAAa,iBAAkB,CAAA,EAC3D,GAAI,CAACE,GAAc,CAACC,EAAK,MAAM,IAAI,MAAM,2BAA2B,EAEpE,MAAMC,EAAM,MAAM,MAAMF,EAAY,CAAE,OAAQ,MAAO,KAAMP,EAAM,EACjE,GAAI,CAACS,EAAI,GAAI,MAAM,IAAI,MAAM,kBAAkBA,EAAI,MAAM,IAAIA,EAAI,UAAU,EAAE,EAE7E,KAAM,CAAE,KAAMC,EAAY,OAAQC,CAAA,EAAkB,MAAMxB,EACxDW,EACA,CACE,UAAW,CAAE,MAAO,CAAE,IAAAU,EAAK,oBAAqBP,EAAkB,CAAE,CACtE,EAEF,GAAIU,GAAgBA,EAAa,OAAQ,MAAM,IAAI,MAAMR,EAAoBQ,CAAY,CAAC,EAE1F,KAAM,CAAE,QAAAC,EAAS,IAAKC,EAAc,QAAAC,IAAYJ,GAAA,YAAAA,EAAY,eAAgB,CAAA,EAC5E,GAAI,CAACE,GAAW,CAACC,QAAoB,IAAI,MAAMC,GAAW,yBAAyB,EAEnF,MAAO,CAAE,IAAKD,CAAA,CAEhB,OAASE,EAAU,CACjB,MAAAnB,EAAO,KAAK,qCAAsC,CAChD,OAAOmB,GAAA,YAAAA,EAAK,UAAW,qBACvB,SAAUf,GAAA,YAAAA,EAAM,IAAA,CACjB,EACKe,aAAe,MAAQA,EAAM,IAAI,MAAM,oBAAoB,CACnE,CACF"}
1
+ {"version":3,"file":"uploadFile.js","sources":["/@dropins/storefront-quote-management/src/api/uploadFile/graphql/InitiateUploadMutation.ts","/@dropins/storefront-quote-management/src/api/uploadFile/graphql/FinishUploadMutation.ts","/@dropins/storefront-quote-management/src/api/uploadFile/uploadFile.ts"],"sourcesContent":["/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nexport const INITIATE_UPLOAD_MUTATION = `\n mutation INITIATE_UPLOAD_MUTATION($input: initiateUploadInput!) {\n initiateUpload(input: $input) {\n upload_url\n key\n expires_at\n }\n }\n`;","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nexport const FINISH_UPLOAD_MUTATION = `\n mutation FINISH_UPLOAD_MUTATION($input: finishUploadInput!) {\n finishUpload(input: $input) {\n success\n key\n message\n }\n }\n`;","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { fetchGraphQl } from '@/quote-management/api';\nimport { events } from '@adobe-commerce/event-bus';\nimport { INITIATE_UPLOAD_MUTATION } from '@/quote-management/api/uploadFile/graphql/InitiateUploadMutation';\nimport { FINISH_UPLOAD_MUTATION } from '@/quote-management/api/uploadFile/graphql/FinishUploadMutation';\n\ntype GraphQLError = { message: string };\ntype InitiateUploadData = {\n initiateUpload?: {\n upload_url: string;\n key: string;\n expires_at: string;\n };\n};\ntype FinishUploadData = {\n finishUpload?: {\n success: boolean;\n key: string;\n message?: string;\n };\n};\ntype GraphQLResponse<T> = {\n data?: T;\n errors?: GraphQLError[];\n};\n\nexport const uploadFile = async (file: File): Promise<{ key: string }> => {\n const mediaResourceType = 'NEGOTIABLE_QUOTE_ATTACHMENT';\n\n try {\n const filename = file?.name;\n if (!file || !filename) throw new Error('Invalid file');\n\n const formatGraphQLErrors = (errors: GraphQLError[]): string =>\n errors.map((e) => e.message).join('; ');\n\n const { data: initialData, errors: initialErrors } = (await fetchGraphQl(\n INITIATE_UPLOAD_MUTATION,\n { \n variables: { input: { key: filename, media_resource_type: mediaResourceType } } \n }\n )) as GraphQLResponse<InitiateUploadData>;\n if (initialErrors && initialErrors.length) throw new Error(formatGraphQLErrors(initialErrors));\n\n const { upload_url, key } = initialData?.initiateUpload || {};\n if (!upload_url || !key) throw new Error('Failed to initiate upload');\n\n const put = await fetch(upload_url, { method: 'PUT', body: file });\n if (!put.ok) throw new Error(`Upload failed: ${put.status} ${put.statusText}`);\n\n const { data: finishData, errors: finishErrors } = (await fetchGraphQl(\n FINISH_UPLOAD_MUTATION,\n { \n variables: { input: { key, media_resource_type: mediaResourceType } } \n }\n )) as GraphQLResponse<FinishUploadData>;\n if (finishErrors && finishErrors.length) throw new Error(formatGraphQLErrors(finishErrors));\n\n const { success, key: finalizedKey, message } = finishData?.finishUpload || {};\n if (!success || !finalizedKey) throw new Error(message || 'Failed to finish upload');\n\n return { key: finalizedKey };\n \n } catch (err: any) {\n events.emit('quote-management/file-upload-error', {\n error: err?.message || 'File upload failed',\n fileName: file?.name,\n });\n throw err instanceof Error ? err : new Error('File upload failed');\n }\n};\n"],"names":["INITIATE_UPLOAD_MUTATION","FINISH_UPLOAD_MUTATION","uploadFile","file","mediaResourceType","filename","formatGraphQLErrors","errors","e","initialData","initialErrors","fetchGraphQl","upload_url","key","put","finishData","finishErrors","success","finalizedKey","message","err","events"],"mappings":"iHASO,MAAMA,EAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECA3BC,EAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECyBzBC,EAAa,MAAOC,GAAyC,CACxE,MAAMC,EAAoB,8BAE1B,GAAI,CACF,MAAMC,EAAWF,GAAA,YAAAA,EAAM,KACvB,GAAI,CAACA,GAAQ,CAACE,EAAU,MAAM,IAAI,MAAM,cAAc,EAEtD,MAAMC,EAAuBC,GAC3BA,EAAO,IAAKC,GAAMA,EAAE,OAAO,EAAE,KAAK,IAAI,EAElC,CAAE,KAAMC,EAAa,OAAQC,CAAA,EAAmB,MAAMC,EAC1DX,EACA,CACE,UAAW,CAAE,MAAO,CAAE,IAAKK,EAAU,oBAAqBD,EAAkB,CAAE,CAChF,EAEF,GAAIM,GAAiBA,EAAc,OAAQ,MAAM,IAAI,MAAMJ,EAAoBI,CAAa,CAAC,EAE7F,KAAM,CAAE,WAAAE,EAAY,IAAAC,CAAA,GAAQJ,GAAA,YAAAA,EAAa,iBAAkB,CAAA,EAC3D,GAAI,CAACG,GAAc,CAACC,EAAK,MAAM,IAAI,MAAM,2BAA2B,EAEpE,MAAMC,EAAM,MAAM,MAAMF,EAAY,CAAE,OAAQ,MAAO,KAAMT,EAAM,EACjE,GAAI,CAACW,EAAI,GAAI,MAAM,IAAI,MAAM,kBAAkBA,EAAI,MAAM,IAAIA,EAAI,UAAU,EAAE,EAE7E,KAAM,CAAE,KAAMC,EAAY,OAAQC,CAAA,EAAkB,MAAML,EACxDV,EACA,CACE,UAAW,CAAE,MAAO,CAAE,IAAAY,EAAK,oBAAqBT,EAAkB,CAAE,CACtE,EAEF,GAAIY,GAAgBA,EAAa,OAAQ,MAAM,IAAI,MAAMV,EAAoBU,CAAY,CAAC,EAE1F,KAAM,CAAE,QAAAC,EAAS,IAAKC,EAAc,QAAAC,IAAYJ,GAAA,YAAAA,EAAY,eAAgB,CAAA,EAC5E,GAAI,CAACE,GAAW,CAACC,QAAoB,IAAI,MAAMC,GAAW,yBAAyB,EAEnF,MAAO,CAAE,IAAKD,CAAA,CAEhB,OAASE,EAAU,CACjB,MAAAC,EAAO,KAAK,qCAAsC,CAChD,OAAOD,GAAA,YAAAA,EAAK,UAAW,qBACvB,SAAUjB,GAAA,YAAAA,EAAM,IAAA,CACjB,EACKiB,aAAe,MAAQA,EAAM,IAAI,MAAM,oBAAoB,CACnE,CACF"}
@@ -0,0 +1,16 @@
1
+ import { FunctionComponent } from 'preact';
2
+
3
+ export interface AttachedFile {
4
+ key: string;
5
+ name: string;
6
+ size: number;
7
+ status: 'uploading' | 'success' | 'error';
8
+ error?: string;
9
+ }
10
+ export interface AttachedFilesListProps {
11
+ files: AttachedFile[];
12
+ onRemove: (key: string) => void;
13
+ disabled?: boolean;
14
+ }
15
+ export declare const AttachedFilesList: FunctionComponent<AttachedFilesListProps>;
16
+ //# sourceMappingURL=AttachedFilesList.d.ts.map
@@ -0,0 +1,11 @@
1
+ /********************************************************************
2
+ * Copyright 2025 Adobe
3
+ * All Rights Reserved.
4
+ *
5
+ * NOTICE: Adobe permits you to use, modify, and distribute this
6
+ * file in accordance with the terms of the Adobe license agreement
7
+ * accompanying it.
8
+ *******************************************************************/
9
+ export { AttachedFilesList } from './AttachedFilesList';
10
+ export type { AttachedFile, AttachedFilesListProps } from './AttachedFilesList';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -11,6 +11,7 @@ export interface LineItemNoteModalProps extends Omit<HTMLAttributes<HTMLDivEleme
11
11
  errorBanner?: VNode;
12
12
  successBanner?: VNode;
13
13
  showCloseButton?: boolean;
14
+ readOnlyQuantity?: boolean;
14
15
  }
15
16
  export declare const LineItemNoteModal: FunctionComponent<LineItemNoteModalProps>;
16
17
  //# sourceMappingURL=LineItemNoteModal.d.ts.map
@@ -13,6 +13,8 @@ export interface ManageNegotiableQuoteProps extends Omit<HTMLAttributes<HTMLDivE
13
13
  shippingInformation: VNode;
14
14
  quoteCommentsTitle: VNode;
15
15
  quoteComments: VNode;
16
+ attachFilesField?: VNode;
17
+ attachedFilesList?: VNode;
16
18
  footer: VNode;
17
19
  }
18
20
  export declare const ManageNegotiableQuote: FunctionComponent<ManageNegotiableQuoteProps>;
@@ -4,13 +4,14 @@ import { HTMLAttributes } from 'preact/compat';
4
4
  export interface ManageNegotiableQuoteTemplateProps extends Omit<HTMLAttributes<HTMLDivElement>, 'loading'> {
5
5
  loading?: boolean;
6
6
  templateName: VNode;
7
- templateId: VNode;
7
+ templateStatus: VNode;
8
8
  banner?: VNode;
9
9
  details?: VNode;
10
10
  actionBar?: VNode;
11
11
  referenceDocuments?: VNode;
12
- referenceDocumentsTitle?: VNode;
13
12
  itemsTable: VNode;
13
+ shippingInformationTitle?: VNode;
14
+ shippingInformation?: VNode;
14
15
  commentsTitle: VNode;
15
16
  comments: VNode;
16
17
  footer?: VNode;
@@ -50,6 +50,7 @@ export interface ProductListTableProps extends HTMLAttributes<HTMLDivElement | H
50
50
  items: ProductListTableItem[];
51
51
  canEdit: boolean;
52
52
  readOnly?: boolean;
53
+ showActions?: boolean;
53
54
  onItemCheckboxChange?: (item: ProductListTableItem, isSelected: boolean) => void;
54
55
  onItemDropdownChange?: (item: ProductListTableItem, action: string) => void;
55
56
  onQuantityChange?: (item: ProductListTableItem, newQuantity: number) => void;
@@ -7,6 +7,10 @@ export interface QuoteCommentsListProps extends HTMLAttributes<HTMLUListElement>
7
7
  createdAt: VNode;
8
8
  author: VNode;
9
9
  text: VNode;
10
+ attachments?: Array<{
11
+ name: string;
12
+ url: string;
13
+ }>;
10
14
  }>;
11
15
  }
12
16
  export declare const QuoteCommentsList: FunctionComponent<QuoteCommentsListProps>;
@@ -0,0 +1,30 @@
1
+ import { FunctionComponent, HTMLAttributes } from 'preact/compat';
2
+ import { VNode } from 'preact';
3
+
4
+ export interface ReferenceDocument {
5
+ uid?: string;
6
+ name: string;
7
+ identifier?: string;
8
+ url: string;
9
+ }
10
+ export interface ReferenceDocumentFormModalProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
11
+ open: boolean;
12
+ document?: ReferenceDocument;
13
+ /**
14
+ * Optional error message string. If provided, automatically creates an InLineAlert error banner.
15
+ * If both errorMessage and errorBanner are provided, errorBanner takes precedence.
16
+ */
17
+ errorMessage?: string;
18
+ /**
19
+ * Optional custom error banner VNode. Provides full control over error banner rendering.
20
+ * If both errorMessage and errorBanner are provided, errorBanner takes precedence.
21
+ */
22
+ errorBanner?: VNode;
23
+ successBanner?: VNode;
24
+ showCloseButton?: boolean;
25
+ isSubmitting?: boolean;
26
+ onSave: (document: ReferenceDocument) => void;
27
+ onClose?: () => void;
28
+ }
29
+ export declare const ReferenceDocumentFormModal: FunctionComponent<ReferenceDocumentFormModalProps>;
30
+ //# sourceMappingURL=ReferenceDocumentFormModal.d.ts.map
@@ -0,0 +1,11 @@
1
+ /********************************************************************
2
+ * Copyright 2025 Adobe
3
+ * All Rights Reserved.
4
+ *
5
+ * NOTICE: Adobe permits you to use, modify, and distribute this
6
+ * file in accordance with the terms of the Adobe license agreement
7
+ * accompanying it.
8
+ *******************************************************************/
9
+ export * from './ReferenceDocumentFormModal';
10
+ export { ReferenceDocumentFormModal as default } from './ReferenceDocumentFormModal';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,18 @@
1
+ import { FunctionComponent } from 'preact';
2
+ import { HTMLAttributes } from 'preact/compat';
3
+
4
+ export interface ReferenceDocument {
5
+ uid?: string;
6
+ name: string;
7
+ identifier?: string;
8
+ url: string;
9
+ }
10
+ export interface ReferenceDocumentsListProps extends HTMLAttributes<HTMLDivElement> {
11
+ documents: ReferenceDocument[];
12
+ isEditable?: boolean;
13
+ onAdd?: () => void;
14
+ onEdit?: (document: ReferenceDocument) => void;
15
+ onRemove?: (document: ReferenceDocument) => void;
16
+ }
17
+ export declare const ReferenceDocumentsList: FunctionComponent<ReferenceDocumentsListProps>;
18
+ //# sourceMappingURL=ReferenceDocumentsList.d.ts.map
@@ -0,0 +1,11 @@
1
+ /********************************************************************
2
+ * Copyright 2025 Adobe
3
+ * All Rights Reserved.
4
+ *
5
+ * NOTICE: Adobe permits you to use, modify, and distribute this
6
+ * file in accordance with the terms of the Adobe license agreement
7
+ * accompanying it.
8
+ *******************************************************************/
9
+ export * from './ReferenceDocumentsList';
10
+ export { ReferenceDocumentsList as default } from './ReferenceDocumentsList';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -7,6 +7,7 @@ export interface RequestNegotiableQuoteFormProps extends Omit<HTMLAttributes<HTM
7
7
  commentField?: VNode;
8
8
  quoteNameField?: VNode;
9
9
  attachFile?: VNode;
10
+ attachedFilesList?: VNode;
10
11
  requestButton?: VNode;
11
12
  saveButton?: VNode;
12
13
  onSubmit: (e: Event) => void;
@@ -7,6 +7,7 @@
7
7
  * accompanying it.
8
8
  *******************************************************************/
9
9
  export * from './ActionsBar';
10
+ export * from './AttachedFilesList';
10
11
  export * from './ItemsQuoted';
11
12
  export * from './ManageNegotiableQuote';
12
13
  export * from './OrderSummary';
@@ -26,4 +27,6 @@ export * from './ConfirmationModal';
26
27
  export * from './RenameQuoteModal';
27
28
  export * from './ManageNegotiableQuoteTemplate';
28
29
  export * from './LineItemNoteModal';
30
+ export * from './ReferenceDocumentFormModal';
31
+ export * from './ReferenceDocumentsList';
29
32
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{I as q,I as v}from"../chunks/ItemsQuoted.js";import"@dropins/tools/preact-jsx-runtime.js";import"@dropins/tools/preact-compat.js";import"@dropins/tools/lib.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/components.js";/* empty css */import"../chunks/QuotePricesSummary.js";import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";import"../chunks/dateUtils.js";import"@dropins/tools/i18n.js";import"../chunks/ConfirmationModal.js";/* empty css *//* empty css *//* empty css */import"../chunks/state.js";import"../chunks/setLineItemNote.js";import"../chunks/transform-quote.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/NegotiableQuoteFragment.js";import"../chunks/WarningFilled.js";export{q as ItemsQuoted,v as default};
3
+ import{I as n,I as q}from"../chunks/ItemsQuoted.js";import"@dropins/tools/preact-jsx-runtime.js";import"@dropins/tools/preact-compat.js";import"@dropins/tools/lib.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/components.js";/* empty css */import"../chunks/LineItemNoteModal.js";import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";import"../chunks/dateUtils.js";import"@dropins/tools/i18n.js";import"../chunks/ConfirmationModal.js";/* empty css *//* empty css */import"../chunks/state.js";import"../chunks/setLineItemNote.js";import"../chunks/transform-quote.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/NegotiableQuoteFragment.js";import"../chunks/WarningFilled.js";export{n as ItemsQuoted,q as default};
4
4
  //# sourceMappingURL=ItemsQuoted.js.map
@@ -1,6 +1,7 @@
1
1
  import { HTMLAttributes } from 'preact/compat';
2
2
  import { Container, SlotProps } from '@dropins/tools/types/elsie/src/lib';
3
3
  import { NegotiableQuoteTemplateModel } from '../../data/models/negotiable-quote-template-model';
4
+ import { ProductListTableItem } from '../../components';
4
5
 
5
6
  export interface ItemsQuotedTemplateProps extends HTMLAttributes<HTMLDivElement> {
6
7
  templateData?: NegotiableQuoteTemplateModel;
@@ -8,6 +9,11 @@ export interface ItemsQuotedTemplateProps extends HTMLAttributes<HTMLDivElement>
8
9
  ProductListTable?: SlotProps<{
9
10
  items: NegotiableQuoteTemplateModel['items'];
10
11
  canEdit: boolean;
12
+ dropdownSelections: Record<string, string | undefined>;
13
+ handleItemDropdownChange: (item: ProductListTableItem, action: string) => void;
14
+ handleQuantityChange: (item: ProductListTableItem, newQuantity: number) => void;
15
+ handleUpdate: (e: SubmitEvent) => void;
16
+ onItemDropdownChange?: (item: any, action: string) => void;
11
17
  }>;
12
18
  QuotePricesSummary?: SlotProps<{
13
19
  items: NegotiableQuoteTemplateModel['items'];
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{I as T,I as b}from"../chunks/ItemsQuotedTemplate.js";import"@dropins/tools/preact-jsx-runtime.js";import"@dropins/tools/preact-compat.js";import"@dropins/tools/lib.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/components.js";/* empty css */import"../chunks/QuotePricesSummary.js";import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";import"../chunks/dateUtils.js";import"@dropins/tools/i18n.js";/* empty css *//* empty css *//* empty css */export{T as ItemsQuotedTemplate,b as default};
3
+ import{I as n,I as q}from"../chunks/ItemsQuotedTemplate.js";import"@dropins/tools/preact-jsx-runtime.js";import"@dropins/tools/preact-compat.js";import"@dropins/tools/lib.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/components.js";/* empty css */import"../chunks/LineItemNoteModal.js";import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";import"../chunks/dateUtils.js";import"@dropins/tools/i18n.js";import"../chunks/ConfirmationModal.js";/* empty css *//* empty css */import"../chunks/state.js";import"../chunks/addQuoteTemplateLineItemNote.js";import"../chunks/transform-quote-template.js";import"../chunks/transform-quote.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/NegotiableQuoteTemplateFragment.js";import"../chunks/WarningFilled.js";export{n as ItemsQuotedTemplate,q as default};
4
4
  //# sourceMappingURL=ItemsQuotedTemplate.js.map
@@ -1,6 +1,7 @@
1
1
  import { HTMLAttributes } from 'preact/compat';
2
2
  import { Container, SlotProps } from '@dropins/tools/types/elsie/src/lib';
3
3
  import { NegotiableQuoteModel } from '../../data/models/negotiable-quote-model';
4
+ import { AttachedFile } from '../../components';
4
5
 
5
6
  export interface ManageNegotiableQuoteProps extends HTMLAttributes<HTMLDivElement> {
6
7
  onActionsDropdownChange?: (event: Event) => void;
@@ -8,11 +9,19 @@ export interface ManageNegotiableQuoteProps extends HTMLAttributes<HTMLDivElemen
8
9
  onSendForReview?: (params: {
9
10
  quoteData: NegotiableQuoteModel;
10
11
  comment?: string;
12
+ attachments?: AttachedFile[];
11
13
  }) => void;
14
+ maxFiles?: number;
15
+ maxFileSize?: number;
16
+ acceptedFileTypes?: string[];
12
17
  onDuplicateQuote?: (params: {
13
18
  quoteData: NegotiableQuoteModel;
14
19
  newQuote: NegotiableQuoteModel;
15
20
  }) => void;
21
+ onCreateTemplate?: (params: {
22
+ quoteData: NegotiableQuoteModel;
23
+ templateId: string;
24
+ }) => void;
16
25
  slots?: {
17
26
  QuoteName?: SlotProps<{
18
27
  quoteName?: string;
@@ -58,10 +67,23 @@ export interface ManageNegotiableQuoteProps extends HTMLAttributes<HTMLDivElemen
58
67
  QuoteComments?: SlotProps<{
59
68
  quoteData?: NegotiableQuoteModel;
60
69
  }>;
70
+ AttachFilesField?: SlotProps<{
71
+ onFileChange: (files: File[]) => void;
72
+ attachedFiles: AttachedFile[];
73
+ fileUploadError: string | undefined;
74
+ disabled?: boolean;
75
+ }>;
76
+ AttachedFilesList?: SlotProps<{
77
+ files: AttachedFile[];
78
+ onRemove: (key: string) => void;
79
+ disabled?: boolean;
80
+ }>;
61
81
  Footer?: SlotProps<{
62
82
  quoteData?: NegotiableQuoteModel;
63
83
  comment?: string;
64
84
  isSubmitting?: boolean;
85
+ attachments?: AttachedFile[];
86
+ handleSendForReview: () => void;
65
87
  }>;
66
88
  };
67
89
  }
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{jsx as a,jsxs as d,Fragment as Xe}from"@dropins/tools/preact-jsx-runtime.js";import*as Ge from"@dropins/tools/preact-compat.js";import{useState as l,useRef as pe,useEffect as S,useCallback as c,useMemo as p,createPortal as B}from"@dropins/tools/preact-compat.js";import{classes as s,VComponent as b,Slot as u}from"@dropins/tools/lib.js";import{f as $e}from"../chunks/dateUtils.js";/* empty css */import{Skeleton as La,SkeletonRow as k,Modal as Ra,Input as xa,TextArea as Je,Button as A,InLineAlert as h}from"@dropins/tools/components.js";import{events as D}from"@dropins/tools/event-bus.js";import{A as Ha,T as Fa}from"../chunks/TabbedContent.js";import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";import{C as W}from"../chunks/ConfirmationModal.js";/* empty css *//* empty css *//* empty css */import{useText as Ke}from"@dropins/tools/i18n.js";import{S as Ba}from"../chunks/ShippingAddressDisplay.js";import{Q as ka}from"../chunks/QuoteHistoryLog3.js";import{g as Ua,r as Oa,c as za,a as Pa,s as Wa,d as Va,b as ja}from"../chunks/duplicateNegotiableQuote.js";import"../chunks/state.js";import{I as Ga}from"../chunks/ItemsQuoted.js";import{Q as $a}from"../chunks/QuoteCommentsList3.js";import{a as U,S as V}from"../chunks/WarningFilled.js";import"../chunks/QuoteHistoryLog.js";import"../chunks/transform-quote.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/NegotiableQuoteFragment.js";import"../chunks/transform-quote-template.js";import"../chunks/NegotiableQuoteTemplateFragment.js";import"../chunks/QuotePricesSummary.js";import"../chunks/setLineItemNote.js";import"../chunks/QuoteCommentsList.js";const Xa=N=>Ge.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",className:"feather feather-edit-2",...N},Ge.createElement("path",{d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"})),Ja=({className:N,loading:t,quoteName:m,quoteStatus:C,banner:q,details:I,actionBar:e,quoteContent:f,shippingInformationTitle:T,shippingInformation:y,quoteCommentsTitle:E,quoteComments:_,footer:Q,...M})=>t?a(Ka,{}):d("div",{...M,className:s(["quote-management-manage-negotiable-quote",N]),children:[d("div",{className:s(["quote-management-manage-negotiable-quote__header"]),children:[m&&a(b,{node:m,className:s(["quote-management-manage-negotiable-quote__quote-name"])}),C&&a(b,{node:C,className:s(["quote-management-manage-negotiable-quote__quote-status"])})]}),q&&a(b,{node:q,className:s(["quote-management-manage-negotiable-quote__banner"])}),I&&a(b,{node:I,className:s(["quote-management-manage-negotiable-quote__details"])}),e&&a(b,{node:e,className:s(["quote-management-manage-negotiable-quote__action-bar"])}),f&&a(b,{node:f,className:s(["quote-management-manage-negotiable-quote__quote-content"])}),d("div",{"data-testid":"quote-shipping-information-container",className:s(["quote-management-manage-negotiable-quote__shipping-information-container"]),children:[T&&a(b,{node:T,className:s(["quote-management-manage-negotiable-quote__shipping-information-title"])}),y&&a(b,{node:y,className:s(["quote-management-manage-negotiable-quote__shipping-information"])})]}),d("div",{"data-testid":"quote-comments-container",className:s(["quote-management-manage-negotiable-quote__quote-comments-container"]),children:[E&&a(b,{node:E,className:s(["quote-management-manage-negotiable-quote__quote-comments-title"])}),_&&a(b,{node:_,className:s(["quote-management-manage-negotiable-quote__quote-comments"])})]}),a(b,{node:Q,className:s(["quote-management-manage-negotiable-quote__footer"])})]}),Ka=()=>d(La,{"data-testid":"manage-negotiable-quote-skeleton",children:[a(k,{variant:"heading",fullWidth:!0,size:"large"}),a(k,{variant:"row",fullWidth:!1,size:"small"}),a(k,{variant:"row",fullWidth:!1,size:"small"}),a(k,{variant:"row",fullWidth:!0}),a(k,{variant:"row",fullWidth:!0,size:"xlarge",lines:2}),a(k,{variant:"row",fullWidth:!1,size:"small"})]}),Ya=({className:N,open:t,quoteName:m,renameReason:C,quoteNameError:q,errorBanner:I,successBanner:e,showCloseButton:f=!0,onQuoteNameChange:T,onRenameReasonChange:y,onSave:E,onClose:_})=>{const Q=Ke({title:"NegotiableQuote.Manage.rename.title",quoteNameLabel:"NegotiableQuote.Manage.rename.quoteNameLabel",reasonLabel:"NegotiableQuote.Manage.rename.reasonLabel",renameButton:"NegotiableQuote.Manage.rename.renameButton",cancelButton:"NegotiableQuote.Manage.rename.cancelButton"});return t?d(Ra,{open:t,size:"medium",title:a(Xe,{children:Q.title}),onClose:_,clickToDismiss:!0,escapeToDismiss:!0,showCloseButton:f,className:s(["quote-management-rename-quote-modal",N]),"data-testid":"rename-quote-modal",children:[I&&a("div",{className:s(["quote-management-rename-quote-modal__error-banner"]),"data-testid":"rename-quote-modal-error-banner",children:I}),e&&a("div",{className:s(["quote-management-rename-quote-modal__success-banner"]),"data-testid":"rename-quote-modal-success-banner",children:e}),d("div",{className:s(["quote-management-rename-quote-modal__content"]),children:[d("div",{children:[a(xa,{name:"quoteName",type:"text",value:m,onInput:M=>T(M.target.value),floatingLabel:Q.quoteNameLabel,required:!0,error:!!q}),q&&a("span",{className:s(["quote-management-rename-quote-modal__error-text"]),children:q})]}),a(Je,{name:"quoteComment",value:C,onInput:M=>y(M.target.value),label:Q.reasonLabel,rows:3})]}),d("div",{className:s(["quote-management-rename-quote-modal__actions"]),children:[a(A,{variant:"secondary",size:"medium",onClick:_,className:s(["quote-management-rename-quote-modal__cancel-button"]),children:Q.cancelButton}),a(A,{variant:"primary",size:"medium",onClick:E,className:s(["quote-management-rename-quote-modal__save-button"]),children:Q.renameButton})]})]}):null},Lt=({onActionsDropdownChange:N,slots:t,onActionsButtonClick:m,onSendForReview:C,onDuplicateQuote:q,...I})=>{const[e,f]=l(void 0),[T,y]=l(!0),[E,_]=l(!1),[Q,M]=l(null),[Ye,j]=l(!1),[fe,ee]=l(!1),[Me,w]=l(null),[Ze,R]=l(!1),[L,be]=l(""),[O,ae]=l(!1),[he,te]=l(!1),[Ne,ne]=l(!1),[qe,x]=l(""),[Qe,z]=l(""),[Se,Te]=l(!1),[ve,Ce]=l(!1),[ye,G]=l(""),[_e,$]=l(""),[De,oe]=l(!1),[X,J]=l(""),[re,K]=l(""),[ie,P]=l(""),[Ae,H]=l(""),[le,Y]=l(""),[ce,Ie]=l(new Set),Ee=pe(ce),se=pe(null),[F,me]=l(""),Z=pe(F),[we,Le]=l(!1);S(()=>{Ee.current=ce},[ce]),S(()=>{Z.current=F},[F]);const o=Ke({createdLabel:"NegotiableQuote.Manage.createdLabel",salesRepLabel:"NegotiableQuote.Manage.salesRepLabel",expiresLabel:"NegotiableQuote.Manage.expiresLabel",actionsLabel:"NegotiableQuote.Manage.actionsLabel",remove:"NegotiableQuote.Manage.actions.remove",close:"NegotiableQuote.Manage.actionButtons.close",delete:"NegotiableQuote.Manage.actionButtons.delete",print:"NegotiableQuote.Manage.actionButtons.print",createTemplate:"NegotiableQuote.Manage.actionButtons.createTemplate",createCopy:"NegotiableQuote.Manage.actionButtons.createCopy",shippingInformationTitle:"NegotiableQuote.Manage.shippingInformation.title",quoteCommentsTitle:"NegotiableQuote.Manage.quoteComments.title",quoteCommentsPlaceholder:"NegotiableQuote.Manage.quoteComments.placeholder",sendForReview:"NegotiableQuote.Manage.actionButtons.sendForReview",bannerTitle:"NegotiableQuote.Manage.bannerTitle",statusSubmitted:"NegotiableQuote.Manage.bannerStatusMessages.submitted",statusPending:"NegotiableQuote.Manage.bannerStatusMessages.pending",statusExpired:"NegotiableQuote.Manage.bannerStatusMessages.expired",errorFallback:"NegotiableQuote.Manage.confirmationModal.delete.errorFallback",closeSuccessMessage:"NegotiableQuote.Manage.confirmationModal.close.successDescription",closeModalTitle:"NegotiableQuote.Manage.actionButtons.close",closeModalMessage:"NegotiableQuote.Manage.confirmationModal.close.message",closeModalCancel:"NegotiableQuote.Manage.confirmationModal.cancel",closeModalConfirm:"NegotiableQuote.Manage.confirmationModal.close.confirm",closeModalConfirmLoading:"NegotiableQuote.Manage.confirmationModal.close.confirmLoading",closeModalSuccessHeading:"NegotiableQuote.Manage.confirmationModal.close.successHeading",createTemplateModalTitle:"NegotiableQuote.Manage.actionButtons.createTemplate",createTemplateModalMessage:"NegotiableQuote.Manage.confirmationModal.createTemplate.message",createTemplateModalCancel:"NegotiableQuote.Manage.confirmationModal.cancel",createTemplateModalConfirm:"NegotiableQuote.Manage.confirmationModal.createTemplate.confirm",createTemplateModalConfirmLoading:"NegotiableQuote.Manage.confirmationModal.createTemplate.confirmLoading",createTemplateModalSuccessHeading:"NegotiableQuote.Manage.confirmationModal.createTemplate.successHeading",createTemplateSuccessMessage:"NegotiableQuote.Manage.confirmationModal.createTemplate.successDescription",createTemplateModalErrorHeading:"NegotiableQuote.Manage.confirmationModal.createTemplate.errorHeading",createTemplateErrorFallback:"NegotiableQuote.Manage.confirmationModal.createTemplate.errorFallback",renameErrorHeading:"NegotiableQuote.Manage.rename.errorHeading",renameQuoteNameRequired:"NegotiableQuote.Manage.rename.quoteNameRequired",renameErrorDefault:"NegotiableQuote.Manage.rename.errorDefault",renameSuccessHeading:"NegotiableQuote.Manage.rename.successHeading",renameSuccessMessage:"NegotiableQuote.Manage.rename.successMessage",confirmationModalCancel:"NegotiableQuote.Manage.confirmationModal.cancel",confirmationModalDeleteTitle:"NegotiableQuote.Manage.confirmationModal.delete.title",confirmationModalDeleteMessage:"NegotiableQuote.Manage.confirmationModal.delete.message",confirmationModalDeleteConfirm:"NegotiableQuote.Manage.confirmationModal.delete.confirm",confirmationModalDeleteErrorHeading:"NegotiableQuote.Manage.confirmationModal.delete.errorHeading",confirmationModalDeleteErrorFallback:"NegotiableQuote.Manage.confirmationModal.delete.errorFallback",confirmationModalDeleteSuccessHeading:"NegotiableQuote.Manage.confirmationModal.delete.successHeading",confirmationModalDeleteSuccessDescription:"NegotiableQuote.Manage.confirmationModal.delete.successDescription",confirmationModalDuplicateTitle:"NegotiableQuote.Manage.confirmationModal.duplicate.title",confirmationModalDuplicateMessage:"NegotiableQuote.Manage.confirmationModal.duplicate.message",confirmationModalDuplicateConfirm:"NegotiableQuote.Manage.confirmationModal.duplicate.confirm",confirmationModalDuplicateErrorHeading:"NegotiableQuote.Manage.confirmationModal.duplicate.errorHeading",confirmationModalDuplicateErrorFallback:"NegotiableQuote.Manage.confirmationModal.duplicate.errorFallback",confirmationModalDuplicateSuccessHeading:"NegotiableQuote.Manage.confirmationModal.duplicate.successHeading",confirmationModalDuplicateSuccessDescription:"NegotiableQuote.Manage.confirmationModal.duplicate.successDescription",noItemsSelectedModalTitle:"NegotiableQuote.Manage.confirmationModal.noItemsSelected.title",noItemsSelectedModalMessage:"NegotiableQuote.Manage.confirmationModal.noItemsSelected.message",noItemsSelectedModalConfirm:"NegotiableQuote.Manage.confirmationModal.noItemsSelected.confirm"});S(()=>{const n=D.on("quote-management/quote-data",r=>{const{quote:i}=r;i&&(f(i),y(!1))},{eager:!0});return()=>n==null?void 0:n.off()},[]),S(()=>{const n=D.on("quote-management/shipping-address-set",r=>{const{quote:i}=r;i&&f(i)},{eager:!0});return()=>n==null?void 0:n.off()},[]),S(()=>{const n=D.on("quote-management/quote-sent-for-review",r=>{const{quote:i}=r;f(i),be(""),ae(!1)},{eager:!0});return()=>n==null?void 0:n.off()},[]),S(()=>{const n=D.on("quote-management/quote-items-removed",r=>{const{quote:i,removedItemUids:g}=r;i&&f(i),g&&Ie(v=>{const je=new Set(v);return g.forEach(wa=>je.delete(wa)),je})},{eager:!0});return()=>n==null?void 0:n.off()},[]);const Re=c((n,r)=>{Ie(i=>{const g=new Set(i);return r?g.add(n.uid):g.delete(n.uid),g})},[]),xe=c(n=>{const r=n.target.value,i=Ee.current;if(r==="remove"){if(me(r),Z.current=r,i.size===0)Le(!0);else if(e&&se.current){const g=e.items.filter(v=>i.has(v.uid));se.current(g)}}N==null||N(n)},[N,e]),He=c(()=>{Le(!1),me(""),Z.current=""},[]);S(()=>{const n=D.on("quote-management/negotiable-quote-closed",async r=>{ne(!1),z(""),x(o.closeSuccessMessage),f(i=>{var g;return i!=null&&i.uid&&((g=r.closedQuoteUids)!=null&&g.includes(i.uid))&&Ua(i.uid).then(v=>{f(v)}).catch(v=>{console.warn("Failed to refresh quote data after closure:",v)}),i}),setTimeout(()=>{te(!1),x("")},2e3)},{eager:!0});return()=>n==null?void 0:n.off()},[o.closeSuccessMessage]),S(()=>{const n=D.on("quote-management/negotiable-quote-close-error",r=>{console.log("Close error event received:",r),ne(!1),x("");const i=r.error.message||o.errorFallback;z(i)},{eager:!0});return()=>n==null?void 0:n.off()},[o.errorFallback]),S(()=>{const n=D.on("quote-management/quote-renamed",r=>{const{quote:i}=r;f(i),P(""),H(""),Y(o.renameSuccessMessage),setTimeout(()=>{oe(!1),J(""),K(""),Y("")},2e3)},{eager:!0});return()=>n==null?void 0:n.off()},[o.renameSuccessMessage]),S(()=>{const n=D.on("quote-management/quote-duplicated",r=>{const{quote:i}=r;e&&q&&q({quoteData:e,newQuote:i}),R(!0),w(null),setTimeout(()=>{ee(!1),R(!1),w(null)},2e3)},{eager:!0});return()=>n==null?void 0:n.off()},[e,q]);const Fe=c(()=>{J((e==null?void 0:e.name)||""),K(""),P(""),H(""),Y(""),oe(!0)},[e]),ea=c(()=>{oe(!1),J(""),K(""),P(""),H(""),Y("")},[]),aa=c(n=>{J(n),n.trim()&&H("")},[]),Be=c(()=>{ee(!0),w(null),R(!1)},[]),ta=c(async()=>{if(!X.trim()){H(o.renameQuoteNameRequired);return}try{P(""),H(""),await Oa({quoteUid:e.uid,quoteName:X,quoteComment:re.trim()||void 0})}catch(n){P(n.message||o.renameErrorDefault)}},[e,X,re,o.renameQuoteNameRequired,o.renameErrorDefault]),na=p(()=>{const n=e&&(e.lockedForEditing===!0||e.lockedForEditing===void 0&&(e.status==="SUBMITTED"||e.status==="PENDING"||e.status==="ORDERED"||e.status==="CLOSED"));return a(u,{name:"QuoteName",slot:t==null?void 0:t.QuoteName,context:{quoteName:e==null?void 0:e.name,quoteData:e},children:d("div",{className:"quote-management-manage-negotiable-quote__quote-name-wrapper",children:[a("h1",{"data-testid":"quote-name",className:"quote-management-manage-negotiable-quote__quote-name-title",children:e==null?void 0:e.name}),a("button",{onClick:Fe,disabled:n,"data-testid":"rename-quote-button",className:"quote-management-manage-negotiable-quote__rename-button","aria-label":"Rename quote",children:a(Xa,{})})]})})},[t==null?void 0:t.QuoteName,e,Fe]),oa=p(()=>a(u,{name:"QuoteStatus",slot:t==null?void 0:t.QuoteStatus,context:{quoteStatus:e==null?void 0:e.status,quoteData:e},children:a("div",{"data-testid":"quote-status",children:e==null?void 0:e.status})}),[t==null?void 0:t.QuoteStatus,e]),ke=c(n=>{switch(n){case"SUBMITTED":return o.statusSubmitted;case"PENDING":return o.statusPending;case"EXPIRED":return o.statusExpired;default:return null}},[o])(e==null?void 0:e.status),Ue=ke&&a(h,{type:"warning",variant:"secondary",icon:a(U,{}),heading:o.bannerTitle,description:ke}),ra=Ue&&a(u,{name:"Banner","data-testid":"banner",slot:t==null?void 0:t.Banner,context:{quoteData:e},children:Ue}),ia=p(()=>{if(!e)return;const n=e.expirationDate?$e(e.expirationDate,"short"):void 0;return d(u,{name:"Details",slot:t==null?void 0:t.Details,context:{quoteData:e},children:[d("div",{className:"quote-management-manage-negotiable-quote__detail",children:[a("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"created-label",children:o.createdLabel}),d("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"created-value",children:[$e(e.createdAt,"short")," (",e.buyer.firstname," ",e.buyer.lastname,")"]})]}),d("div",{className:"quote-management-manage-negotiable-quote__detail",children:[a("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"sales-rep-label",children:o.salesRepLabel}),a("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"sales-rep-value",children:e.salesRepName})]}),d("div",{className:"quote-management-manage-negotiable-quote__detail",children:[a("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"expires-label",children:o.expiresLabel}),a("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"expires-value",children:n})]})]})},[t==null?void 0:t.Details,o,e]),Oe=p(()=>[{label:o.close,value:"close",disabled:!(e!=null&&e.canClose)},{label:o.delete,value:"delete",disabled:!(e!=null&&e.canDelete)},{label:o.print,value:"print"},{label:o.createTemplate,value:"createTemplate"},{label:o.createCopy,value:"createCopy"}],[o,e==null?void 0:e.canDelete,e==null?void 0:e.canClose]),la=p(()=>{const n=r=>{switch(r){case"close":te(!0),z(""),x(""),m==null||m(r);break;case"delete":_(!0),m==null||m(r);break;case"print":m==null||m(r);break;case"createTemplate":Te(!0),$(""),G(""),m==null||m(r);break;case"createCopy":Be(),m==null||m(r);break}};return a(u,{name:"ActionBar",slot:t==null?void 0:t.ActionBar,context:{quoteData:e,actionsBarDropdownValue:F},children:a(Ha,{dropdownPlaceholder:o.actionsLabel,dropdownOptions:[{label:o.remove,value:"remove"}],dropdownValue:F,handleDropdownChange:xe,buttons:Oe.map(r=>a(A,{variant:"tertiary",onClick:()=>n(r.value),"data-testid":`actions-bar-${r.value}-button`,"data-action":r.value,disabled:r.disabled,children:r.label},r.value))})})},[Oe,o,t==null?void 0:t.ActionBar,e,xe,m,Be,F]),ca=p(()=>a(u,{name:"QuoteContent",slot:t==null?void 0:t.QuoteContent,context:{quoteData:e},children:a(Fa,{tabs:new Map([["items-quoted","Items Quoted"],["comments","Comments"],["history-log","History Log"]]),tabsContent:new Map([["items-quoted",a(u,{name:"ItemsQuotedTab",slot:t==null?void 0:t.ItemsQuotedTab,context:{quoteData:e},children:a(Ga,{quoteData:e,onItemCheckboxChange:Re,onRemoveItemsRef:n=>{se.current=n},onRemoveModalStateChange:n=>{!n&&Z.current==="remove"&&me("")}})},"items-quoted")],["comments",a(u,{name:"CommentsTab",slot:t==null?void 0:t.CommentsTab,context:{quoteData:e},children:a($a,{quoteData:e})},"comments")],["history-log",a(u,{name:"HistoryLogTab",slot:t==null?void 0:t.HistoryLogTab,context:{quoteData:e},children:a(ka,{quoteData:e})},"history-log")]])})}),[t==null?void 0:t.QuoteContent,t==null?void 0:t.HistoryLogTab,t==null?void 0:t.CommentsTab,t==null?void 0:t.ItemsQuotedTab,e,Re]),sa=p(()=>a(u,{name:"ShippingInformationTitle",slot:t==null?void 0:t.ShippingInformationTitle,context:{quoteData:e},children:a("h2",{children:o.shippingInformationTitle})}),[t==null?void 0:t.ShippingInformationTitle,e,o]),ma=p(()=>a(u,{name:"ShippingInformation",slot:t==null?void 0:t.ShippingInformation,context:{quoteData:e,loading:T,setLoading:y},children:a(Ba,{quoteData:e,loading:T,"data-testid":"manage-quote-shipping-address"})}),[t==null?void 0:t.ShippingInformation,e,T,y]),da=p(()=>a(u,{name:"QuoteCommentsTitle",slot:t==null?void 0:t.QuoteCommentsTitle,context:{quoteData:e},children:a("h2",{children:o.quoteCommentsTitle})}),[t==null?void 0:t.QuoteCommentsTitle,o,e]),ua=p(()=>a(u,{name:"QuoteComments",slot:t==null?void 0:t.QuoteComments,context:{quoteData:e},children:a(Je,{name:"quoteComments",placeholder:o.quoteCommentsPlaceholder,rows:3,value:L,onInput:n=>{be(n.target.value)},disabled:!(e!=null&&e.canSendForReview)||O})}),[t==null?void 0:t.QuoteComments,o,e,L,O]),ga=c(async()=>{if(e!=null&&e.uid){ne(!0),z(""),x("");try{await za({quoteUids:[e.uid]})}catch(n){console.error("Failed to close quote:",n)}}},[e]),pa=c(()=>{te(!1),z(""),x("")},[]),fa=c(async()=>{if(e!=null&&e.uid){Ce(!0),$(""),G("");try{await Pa(e.uid),G(o.createTemplateSuccessMessage)}catch(n){console.error("Failed to create quote template:",n);const r=n instanceof Error?n.message:o.createTemplateErrorFallback;$(r)}finally{Ce(!1)}}},[e,o.createTemplateSuccessMessage,o.createTemplateErrorFallback]),Ma=c(()=>{Te(!1),$(""),G("")},[]),ze=c(async()=>{if(C){C({quoteData:e,comment:L.trim()||void 0});return}ae(!0);try{await Wa({quoteUid:e.uid,comment:L.trim()||void 0})}catch(n){console.error("Failed to send quote for review:",n),ae(!1)}},[e,C,L]),ba=p(()=>a(u,{name:"Footer",slot:t==null?void 0:t.Footer,context:{quoteData:e,comment:L,isSubmitting:O},children:a(A,{variant:"primary",onClick:ze,"data-testid":"send-for-review-button",disabled:!(e!=null&&e.canSendForReview)||O,children:o.sendForReview})}),[t==null?void 0:t.Footer,o,e,L,O,ze]),ha=p(()=>ie?a(h,{type:"error",variant:"primary",icon:a(U,{color:"var(--color-error)"}),heading:o.renameErrorHeading,description:ie}):void 0,[ie,o.renameErrorHeading]),Na=p(()=>le?a(h,{type:"success",variant:"primary",icon:a(V,{}),heading:o.renameSuccessHeading,description:le}):void 0,[le,o.renameSuccessHeading]),de=c(n=>n.errors&&Array.isArray(n.errors)&&n.errors.length>0?n.errors[0].message||o.confirmationModalDeleteErrorFallback:(n==null?void 0:n.message)||o.confirmationModalDeleteErrorFallback,[o.confirmationModalDeleteErrorFallback]),qa=c(()=>{_(!1),M(null),j(!1)},[]),Qa=c(async()=>{if(e!=null&&e.uid){M(null),j(!1);try{const{operationResults:n}=await Va(e.uid),r=n.find(i=>i.__typename==="DeleteNegotiableQuoteOperationFailure");if(r){const i=de(r);M(i);return}j(!0)}catch(n){const r=de(n);M(r)}}},[e,de]),Sa=c(()=>{M(null)},[]),Ta=c(()=>{j(!1)},[]),Pe=c(n=>(n==null?void 0:n.message)||o.confirmationModalDuplicateErrorFallback,[o.confirmationModalDuplicateErrorFallback]),va=c(()=>{ee(!1),w(null),R(!1)},[]),Ca=c(async()=>{if(e!=null&&e.uid){w(null),R(!1);try{const r=(i=>{const g=i.slice(0,-8),v=crypto.randomUUID().slice(0,8);return g+v})(e.uid);await ja({quoteUid:e.uid,duplicatedQuoteUid:r})}catch(n){const r=Pe(n);w(r)}}},[e,Pe]),ya=c(()=>{w(null)},[]),_a=c(()=>{R(!1)},[]),Da=Q?a(h,{type:"error",variant:"primary",icon:a(U,{}),heading:o.confirmationModalDeleteErrorHeading,description:Q,onDismiss:Sa,"data-testid":"confirmation-modal-error-banner"}):null,We=(Ye?a(h,{type:"success",variant:"primary",icon:a(V,{}),heading:o.confirmationModalDeleteSuccessHeading,description:o.confirmationModalDeleteSuccessDescription,onDismiss:Ta,"data-testid":"confirmation-modal-success-banner"}):null)||Da,Ia=Me?a(h,{type:"error",variant:"primary",icon:a(U,{}),heading:o.confirmationModalDuplicateErrorHeading,description:Me,onDismiss:ya,"data-testid":"confirmation-modal-duplicate-error-banner"}):null,Ve=(Ze?a(h,{type:"success",variant:"primary",icon:a(V,{}),heading:o.confirmationModalDuplicateSuccessHeading,description:o.confirmationModalDuplicateSuccessDescription,onDismiss:_a,"data-testid":"confirmation-modal-duplicate-success-banner"}):null)||Ia,Ea={...I,loading:T,quoteName:na,quoteStatus:oa,banner:ra||void 0,details:ia,actionBar:la,quoteContent:ca,shippingInformationTitle:sa,shippingInformation:ma,quoteCommentsTitle:da,quoteComments:ua,footer:ba};let ue=null;qe?ue=a(h,{type:"success",variant:"primary",icon:a(V,{}),heading:o.closeModalSuccessHeading,description:qe,"data-testid":"close-quote-success-banner"}):Qe&&(ue=a(h,{type:"error",variant:"primary",icon:a(U,{}),heading:o.confirmationModalDeleteErrorHeading,description:Qe,"data-testid":"close-quote-error-banner"}));let ge=null;return ye?ge=a(h,{type:"success",variant:"primary",icon:a(V,{}),heading:o.createTemplateModalSuccessHeading,description:ye,"data-testid":"create-template-success-banner"}):_e&&(ge=a(h,{type:"error",variant:"primary",icon:a(U,{}),heading:o.createTemplateModalErrorHeading,description:_e,"data-testid":"create-template-error-banner"})),d(Xe,{children:[a(Ja,{...Ea}),De&&B(a(Ya,{open:De,quoteName:X,renameReason:re,quoteNameError:Ae,errorBanner:ha,successBanner:Na,onQuoteNameChange:aa,onRenameReasonChange:K,onSave:ta,onClose:ea}),document.body),E&&B(a(W,{open:E,title:o.confirmationModalDeleteTitle,message:o.confirmationModalDeleteMessage,cancelLabel:o.confirmationModalCancel,confirmLabel:o.confirmationModalDeleteConfirm,onCancel:qa,onConfirm:Qa,showCloseButton:!We,confirmationBanner:We}),document.body),fe&&B(a(W,{open:fe,title:o.confirmationModalDuplicateTitle,message:o.confirmationModalDuplicateMessage,cancelLabel:o.confirmationModalCancel,confirmLabel:o.confirmationModalDuplicateConfirm,onCancel:va,onConfirm:Ca,showCloseButton:!Ve,confirmationBanner:Ve}),document.body),he&&B(a(W,{open:he,title:o.closeModalTitle,message:o.closeModalMessage,cancelLabel:o.closeModalCancel,confirmLabel:Ne?o.closeModalConfirmLoading:o.closeModalConfirm,onCancel:pa,onConfirm:Ne?void 0:ga,showCloseButton:!0,confirmationBanner:ue,"data-testid":"close-quote-confirmation-modal"}),document.body),Se&&B(a(W,{open:Se,title:o.createTemplateModalTitle,message:o.createTemplateModalMessage,cancelLabel:o.createTemplateModalCancel,confirmLabel:ve?o.createTemplateModalConfirmLoading:o.createTemplateModalConfirm,onCancel:Ma,onConfirm:ve?void 0:fa,showCloseButton:!0,confirmationBanner:ge,"data-testid":"create-template-confirmation-modal"}),document.body),we&&B(a(W,{open:we,title:o.noItemsSelectedModalTitle,message:o.noItemsSelectedModalMessage,confirmLabel:o.noItemsSelectedModalConfirm,onConfirm:He,onClose:He,showCloseButton:!0,"data-testid":"no-items-selected-modal"}),document.body)]})};export{Lt as ManageNegotiableQuote,Lt as default};
3
+ import{jsx as n,jsxs as M,Fragment as Pa}from"@dropins/tools/preact-jsx-runtime.js";import{useState as l,useRef as _e,useEffect as h,useCallback as c,useMemo as u,createPortal as z}from"@dropins/tools/preact-compat.js";import{classes as d,VComponent as p,Slot as g}from"@dropins/tools/lib.js";import{f as oa}from"../chunks/dateUtils.js";/* empty css */import{Skeleton as Wa,SkeletonRow as O,InLineAlert as N,Button as ra,TextArea as Va,InputFile as $a}from"@dropins/tools/components.js";import{events as v}from"@dropins/tools/event-bus.js";import{S as ja,A as Ga,T as Ka,R as Xa}from"../chunks/RenameQuoteModal.js";import{v as Ja,f as Ya,a as Za,S as Aa,A as et}from"../chunks/AttachedFilesList.js";import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";import{C as X}from"../chunks/ConfirmationModal.js";/* empty css *//* empty css */import{S as at}from"../chunks/ShippingAddressDisplay.js";import{Q as tt}from"../chunks/QuoteHistoryLog3.js";import{g as nt,r as ot,c as rt,a as it,s as lt,d as ct,b as st}from"../chunks/duplicateNegotiableQuote.js";import"../chunks/state.js";import{u as mt}from"../chunks/uploadFile.js";import{I as dt}from"../chunks/ItemsQuoted.js";import{Q as ut}from"../chunks/QuoteCommentsList3.js";import{a as P,S as J}from"../chunks/WarningFilled.js";import{useText as gt}from"@dropins/tools/i18n.js";import"../chunks/QuoteHistoryLog.js";import"../chunks/transform-quote.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/NegotiableQuoteFragment.js";import"../chunks/transform-quote-template.js";import"../chunks/NegotiableQuoteTemplateFragment.js";import"../chunks/LineItemNoteModal.js";import"../chunks/setLineItemNote.js";import"../chunks/QuoteCommentsList.js";const ft=({className:D,loading:t,quoteName:s,quoteStatus:I,banner:T,details:C,actionBar:Q,quoteContent:w,shippingInformationTitle:x,shippingInformation:Y,quoteCommentsTitle:e,quoteComments:S,attachFilesField:y,attachedFilesList:R,footer:Z,...A})=>t?n(pt,{}):M("div",{...A,className:d(["quote-management-manage-negotiable-quote",D]),children:[M("div",{className:d(["quote-management-manage-negotiable-quote__header"]),children:[s&&n(p,{node:s,className:d(["quote-management-manage-negotiable-quote__quote-name"])}),I&&n(p,{node:I,className:d(["quote-management-manage-negotiable-quote__quote-status"])})]}),T&&n(p,{node:T,className:d(["quote-management-manage-negotiable-quote__banner"])}),C&&n(p,{node:C,className:d(["quote-management-manage-negotiable-quote__details"])}),Q&&n(p,{node:Q,className:d(["quote-management-manage-negotiable-quote__action-bar"])}),w&&n(p,{node:w,className:d(["quote-management-manage-negotiable-quote__quote-content"])}),M("div",{"data-testid":"quote-shipping-information-container",className:d(["quote-management-manage-negotiable-quote__shipping-information-container"]),children:[x&&n(p,{node:x,className:d(["quote-management-manage-negotiable-quote__shipping-information-title"])}),Y&&n(p,{node:Y,className:d(["quote-management-manage-negotiable-quote__shipping-information"])})]}),M("div",{"data-testid":"quote-comments-container",className:d(["quote-management-manage-negotiable-quote__quote-comments-container"]),children:[e&&n(p,{node:e,className:d(["quote-management-manage-negotiable-quote__quote-comments-title"])}),S&&n(p,{node:S,className:d(["quote-management-manage-negotiable-quote__quote-comments"])}),y&&n(p,{node:y,className:d(["quote-management-manage-negotiable-quote__attach-files-field"])}),R&&n(p,{node:R,className:d(["quote-management-manage-negotiable-quote__attached-files-list"])})]}),n(p,{node:Z,className:d(["quote-management-manage-negotiable-quote__footer"])})]}),pt=()=>M(Wa,{"data-testid":"manage-negotiable-quote-skeleton",children:[n(O,{variant:"heading",fullWidth:!0,size:"large"}),n(O,{variant:"row",fullWidth:!1,size:"small"}),n(O,{variant:"row",fullWidth:!1,size:"small"}),n(O,{variant:"row",fullWidth:!0}),n(O,{variant:"row",fullWidth:!0,size:"xlarge",lines:2}),n(O,{variant:"row",fullWidth:!1,size:"small"})]}),Yt=({onActionsDropdownChange:D,slots:t,onActionsButtonClick:s,onSendForReview:I,maxFiles:T,maxFileSize:C,acceptedFileTypes:Q,onDuplicateQuote:w,onCreateTemplate:x,...Y})=>{const[e,S]=l(void 0),[y,R]=l(!0),[Z,A]=l(!1),[Ee,W]=l(null),[ia,ee]=l(!1),[Fe,se]=l(!1),[De,_]=l(null),[la,L]=l(!1),[E,Ie]=l(""),[q,me]=l(!1),[we,de]=l(!1),[xe,ue]=l(!1),[Re,H]=l(""),[Le,V]=l(""),[He,ge]=l(!1),[Ue,ke]=l(!1),[Be,$]=l(""),[ze,ae]=l(""),[Oe,fe]=l(!1),[te,ne]=l(""),[pe,oe]=l(""),[Me,j]=l(""),[ca,U]=l(""),[be,re]=l(""),[b,G]=l([]),[ie,le]=l(void 0),[he,Pe]=l(new Set),We=_e(he),Ne=_e(null),[k,Qe]=l(""),ce=_e(k),[Ve,$e]=l(!1);h(()=>{We.current=he},[he]),h(()=>{ce.current=k},[k]);const o=gt({createdLabel:"NegotiableQuote.Manage.createdLabel",salesRepLabel:"NegotiableQuote.Manage.salesRepLabel",expiresLabel:"NegotiableQuote.Manage.expiresLabel",actionsLabel:"NegotiableQuote.Manage.actionsLabel",remove:"NegotiableQuote.Manage.actions.remove",close:"NegotiableQuote.Manage.actionButtons.close",delete:"NegotiableQuote.Manage.actionButtons.delete",print:"NegotiableQuote.Manage.actionButtons.print",createTemplate:"NegotiableQuote.Manage.actionButtons.createTemplate",createCopy:"NegotiableQuote.Manage.actionButtons.createCopy",shippingInformationTitle:"NegotiableQuote.Manage.shippingInformation.title",quoteCommentsTitle:"NegotiableQuote.Manage.quoteComments.title",quoteCommentsPlaceholder:"NegotiableQuote.Manage.quoteComments.placeholder",sendForReview:"NegotiableQuote.Manage.actionButtons.sendForReview",bannerTitle:"NegotiableQuote.Manage.bannerTitle",statusSubmitted:"NegotiableQuote.Manage.bannerStatusMessages.submitted",statusPending:"NegotiableQuote.Manage.bannerStatusMessages.pending",statusExpired:"NegotiableQuote.Manage.bannerStatusMessages.expired",errorFallback:"NegotiableQuote.Manage.confirmationModal.delete.errorFallback",closeSuccessMessage:"NegotiableQuote.Manage.confirmationModal.close.successDescription",closeModalTitle:"NegotiableQuote.Manage.actionButtons.close",closeModalMessage:"NegotiableQuote.Manage.confirmationModal.close.message",closeModalCancel:"NegotiableQuote.Manage.confirmationModal.cancel",closeModalConfirm:"NegotiableQuote.Manage.confirmationModal.close.confirm",closeModalConfirmLoading:"NegotiableQuote.Manage.confirmationModal.close.confirmLoading",closeModalSuccessHeading:"NegotiableQuote.Manage.confirmationModal.close.successHeading",createTemplateModalTitle:"NegotiableQuote.Manage.actionButtons.createTemplate",createTemplateModalMessage:"NegotiableQuote.Manage.confirmationModal.createTemplate.message",createTemplateModalCancel:"NegotiableQuote.Manage.confirmationModal.cancel",createTemplateModalConfirm:"NegotiableQuote.Manage.confirmationModal.createTemplate.confirm",createTemplateModalConfirmLoading:"NegotiableQuote.Manage.confirmationModal.createTemplate.confirmLoading",createTemplateModalSuccessHeading:"NegotiableQuote.Manage.confirmationModal.createTemplate.successHeading",createTemplateSuccessMessage:"NegotiableQuote.Manage.confirmationModal.createTemplate.successDescription",createTemplateModalErrorHeading:"NegotiableQuote.Manage.confirmationModal.createTemplate.errorHeading",createTemplateErrorFallback:"NegotiableQuote.Manage.confirmationModal.createTemplate.errorFallback",renameErrorHeading:"NegotiableQuote.Manage.rename.errorHeading",renameQuoteNameRequired:"NegotiableQuote.Manage.rename.quoteNameRequired",renameErrorDefault:"NegotiableQuote.Manage.rename.errorDefault",renameSuccessHeading:"NegotiableQuote.Manage.rename.successHeading",renameSuccessMessage:"NegotiableQuote.Manage.rename.successMessage",confirmationModalCancel:"NegotiableQuote.Manage.confirmationModal.cancel",confirmationModalDeleteTitle:"NegotiableQuote.Manage.confirmationModal.delete.title",confirmationModalDeleteMessage:"NegotiableQuote.Manage.confirmationModal.delete.message",confirmationModalDeleteConfirm:"NegotiableQuote.Manage.confirmationModal.delete.confirm",confirmationModalDeleteErrorHeading:"NegotiableQuote.Manage.confirmationModal.delete.errorHeading",confirmationModalDeleteErrorFallback:"NegotiableQuote.Manage.confirmationModal.delete.errorFallback",confirmationModalDeleteSuccessHeading:"NegotiableQuote.Manage.confirmationModal.delete.successHeading",confirmationModalDeleteSuccessDescription:"NegotiableQuote.Manage.confirmationModal.delete.successDescription",confirmationModalDuplicateTitle:"NegotiableQuote.Manage.confirmationModal.duplicate.title",confirmationModalDuplicateMessage:"NegotiableQuote.Manage.confirmationModal.duplicate.message",confirmationModalDuplicateConfirm:"NegotiableQuote.Manage.confirmationModal.duplicate.confirm",confirmationModalDuplicateErrorHeading:"NegotiableQuote.Manage.confirmationModal.duplicate.errorHeading",confirmationModalDuplicateErrorFallback:"NegotiableQuote.Manage.confirmationModal.duplicate.errorFallback",confirmationModalDuplicateSuccessHeading:"NegotiableQuote.Manage.confirmationModal.duplicate.successHeading",confirmationModalDuplicateSuccessDescription:"NegotiableQuote.Manage.confirmationModal.duplicate.successDescription",noItemsSelectedModalTitle:"NegotiableQuote.Manage.confirmationModal.noItemsSelected.title",noItemsSelectedModalMessage:"NegotiableQuote.Manage.confirmationModal.noItemsSelected.message",noItemsSelectedModalConfirm:"NegotiableQuote.Manage.confirmationModal.noItemsSelected.confirm",attachFiles:"NegotiableQuote.Manage.attachFiles",fileUploadError:"NegotiableQuote.Manage.fileUploadError",maxFilesExceeded:"NegotiableQuote.Manage.maxFilesExceeded",maxFileSizeExceeded:"NegotiableQuote.Manage.maxFileSizeExceeded",invalidFileType:"NegotiableQuote.Manage.invalidFileType"});h(()=>{const a=v.on("quote-management/quote-data",r=>{const{quote:i}=r;i&&(S(i),R(!1))},{eager:!0});return()=>a==null?void 0:a.off()},[]),h(()=>{const a=v.on("quote-management/shipping-address-set",r=>{const{quote:i}=r;i&&S(i)},{eager:!0});return()=>a==null?void 0:a.off()},[]),h(()=>{const a=v.on("quote-management/quote-sent-for-review",r=>{const{quote:i}=r;S(i),Ie(""),G([]),me(!1)},{eager:!0});return()=>a==null?void 0:a.off()},[]),h(()=>{const a=v.on("quote-management/quote-items-removed",r=>{const{quote:i,removedItemUids:m}=r;i&&S(i),m&&Pe(f=>{const B=new Set(f);return m.forEach(K=>B.delete(K)),B})},{eager:!0});return()=>a==null?void 0:a.off()},[]);const je=c((a,r)=>{Pe(i=>{const m=new Set(i);return r?m.add(a.uid):m.delete(a.uid),m})},[]),Ge=c(a=>{const r=a.target.value,i=We.current;if(r==="remove"){if(Qe(r),ce.current=r,i.size===0)$e(!0);else if(e&&Ne.current){const m=e.items.filter(f=>i.has(f.uid));Ne.current(m)}}D==null||D(a)},[D,e]),Ke=c(()=>{$e(!1),Qe(""),ce.current=""},[]);h(()=>{const a=v.on("quote-management/negotiable-quote-closed",async r=>{ue(!1),V(""),H(o.closeSuccessMessage),S(i=>{var m;return i!=null&&i.uid&&((m=r.closedQuoteUids)!=null&&m.includes(i.uid))&&nt(i.uid).then(f=>{S(f)}).catch(f=>{console.warn("Failed to refresh quote data after closure:",f)}),i}),setTimeout(()=>{de(!1),H("")},2e3)},{eager:!0});return()=>a==null?void 0:a.off()},[o.closeSuccessMessage]),h(()=>{const a=v.on("quote-management/negotiable-quote-close-error",r=>{console.log("Close error event received:",r),ue(!1),H("");const i=r.error.message||o.errorFallback;V(i)},{eager:!0});return()=>a==null?void 0:a.off()},[o.errorFallback]),h(()=>{const a=v.on("quote-management/quote-renamed",r=>{const{quote:i}=r;S(i),j(""),U(""),re(o.renameSuccessMessage),setTimeout(()=>{fe(!1),ne(""),oe(""),re("")},2e3)},{eager:!0});return()=>a==null?void 0:a.off()},[o.renameSuccessMessage]),h(()=>{const a=v.on("quote-management/quote-duplicated",r=>{const{quote:i}=r;e&&w&&w({quoteData:e,newQuote:i}),L(!0),_(null),setTimeout(()=>{se(!1),L(!1),_(null)},2e3)},{eager:!0});return()=>a==null?void 0:a.off()},[e,w]),h(()=>{const a=v.on("quote-management/quote-template-created",r=>{const{quoteTemplate:i}=r;e&&x&&x({quoteData:e,templateId:i.id}),setTimeout(()=>{ge(!1),$("")},2e3)},{eager:!0});return()=>a==null?void 0:a.off()},[e,x]);const Se=c(async a=>{if(T&&b.length+a.length>T){le(o.maxFilesExceeded.replace("{maxFiles}",String(T)));return}for(const i of a){if(C&&!Ja(i.size,C)){le(o.maxFileSizeExceeded.replace("{maxSize}",Ya(C)));return}if(Q&&!Za(i.type,Q)){le(o.invalidFileType);return}}le(void 0);const r=a.map(i=>({key:`temp-${Date.now()}-${Math.random()}-${i.name}`,name:i.name,size:i.size,status:"uploading"}));G(i=>[...i,...r]);for(let i=0;i<a.length;i++){const m=a[i],f=r[i].key;try{const B=await mt(m);G(K=>K.map(F=>F.key===f?{...F,key:B.key,status:"success"}:F))}catch(B){G(K=>K.map(F=>F.key===f?{...F,status:"error",error:B.message}:F))}}},[T,C,Q,b,o]),qe=c(a=>{G(r=>r.filter(i=>i.key!==a))},[]),Xe=c(()=>{ne((e==null?void 0:e.name)||""),oe(""),j(""),U(""),re(""),fe(!0)},[e]),sa=c(()=>{fe(!1),ne(""),oe(""),j(""),U(""),re("")},[]),ma=c(a=>{ne(a),a.trim()&&U("")},[]),Je=c(()=>{se(!0),_(null),L(!1)},[]),da=c(async()=>{if(!te.trim()){U(o.renameQuoteNameRequired);return}try{j(""),U(""),await ot({quoteUid:e.uid,quoteName:te,quoteComment:pe.trim()||void 0})}catch(a){j(a.message||o.renameErrorDefault)}},[e,te,pe,o.renameQuoteNameRequired,o.renameErrorDefault]),ua=u(()=>{const a=e&&(e.lockedForEditing===!0||e.lockedForEditing===void 0&&(e.status==="SUBMITTED"||e.status==="PENDING"||e.status==="ORDERED"||e.status==="CLOSED"));return n(g,{name:"QuoteName",slot:t==null?void 0:t.QuoteName,context:{quoteName:e==null?void 0:e.name,quoteData:e},children:M("div",{className:"quote-management-manage-negotiable-quote__quote-name-wrapper",children:[n("h1",{"data-testid":"quote-name",className:"quote-management-manage-negotiable-quote__quote-name-title",children:e==null?void 0:e.name}),n("button",{onClick:Xe,disabled:a,"data-testid":"rename-quote-button",className:"quote-management-manage-negotiable-quote__rename-button","aria-label":"Rename quote",children:n(ja,{})})]})})},[t==null?void 0:t.QuoteName,e,Xe]),ga=u(()=>n(g,{name:"QuoteStatus",slot:t==null?void 0:t.QuoteStatus,context:{quoteStatus:e==null?void 0:e.status,quoteData:e},children:n("div",{"data-testid":"quote-status",children:e==null?void 0:e.status})}),[t==null?void 0:t.QuoteStatus,e]),Ye=c(a=>{switch(a){case"SUBMITTED":return o.statusSubmitted;case"PENDING":return o.statusPending;case"EXPIRED":return o.statusExpired;default:return null}},[o])(e==null?void 0:e.status),Ze=Ye&&n(N,{type:"warning",variant:"secondary",icon:n(P,{}),heading:o.bannerTitle,description:Ye}),fa=Ze&&n(g,{name:"Banner","data-testid":"banner",slot:t==null?void 0:t.Banner,context:{quoteData:e},children:Ze}),pa=u(()=>{if(!e)return;const a=e.expirationDate?oa(e.expirationDate,"short"):void 0;return M(g,{name:"Details",slot:t==null?void 0:t.Details,context:{quoteData:e},children:[M("div",{className:"quote-management-manage-negotiable-quote__detail",children:[n("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"created-label",children:o.createdLabel}),M("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"created-value",children:[oa(e.createdAt,"short")," (",e.buyer.firstname," ",e.buyer.lastname,")"]})]}),M("div",{className:"quote-management-manage-negotiable-quote__detail",children:[n("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"sales-rep-label",children:o.salesRepLabel}),n("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"sales-rep-value",children:e.salesRepName})]}),M("div",{className:"quote-management-manage-negotiable-quote__detail",children:[n("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"expires-label",children:o.expiresLabel}),n("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"expires-value",children:a})]})]})},[t==null?void 0:t.Details,o,e]),Ae=u(()=>[{label:o.close,value:"close",disabled:!(e!=null&&e.canClose)},{label:o.delete,value:"delete",disabled:!(e!=null&&e.canDelete)},{label:o.print,value:"print"},{label:o.createTemplate,value:"createTemplate"},{label:o.createCopy,value:"createCopy"}],[o,e==null?void 0:e.canDelete,e==null?void 0:e.canClose]),Ma=u(()=>{const a=r=>{switch(r){case"close":de(!0),V(""),H(""),s==null||s(r);break;case"delete":A(!0),s==null||s(r);break;case"print":s==null||s(r);break;case"createTemplate":ge(!0),ae(""),$(""),s==null||s(r);break;case"createCopy":Je(),s==null||s(r);break}};return n(g,{name:"ActionBar",slot:t==null?void 0:t.ActionBar,context:{quoteData:e,actionsBarDropdownValue:k},children:n(Ga,{dropdownPlaceholder:o.actionsLabel,dropdownOptions:[{label:o.remove,value:"remove"}],dropdownValue:k,handleDropdownChange:Ge,buttons:Ae.map(r=>n(ra,{variant:"tertiary",onClick:()=>a(r.value),"data-testid":`actions-bar-${r.value}-button`,"data-action":r.value,disabled:r.disabled,children:r.label},r.value))})})},[Ae,o,t==null?void 0:t.ActionBar,e,Ge,s,Je,k]),ba=u(()=>n(g,{name:"QuoteContent",slot:t==null?void 0:t.QuoteContent,context:{quoteData:e},children:n(Ka,{tabs:new Map([["items-quoted","Items Quoted"],["comments","Comments"],["history-log","History Log"]]),tabsContent:new Map([["items-quoted",n(g,{name:"ItemsQuotedTab",slot:t==null?void 0:t.ItemsQuotedTab,context:{quoteData:e},children:n(dt,{quoteData:e,onItemCheckboxChange:je,onRemoveItemsRef:a=>{Ne.current=a},onRemoveModalStateChange:a=>{!a&&ce.current==="remove"&&Qe("")}})},"items-quoted")],["comments",n(g,{name:"CommentsTab",slot:t==null?void 0:t.CommentsTab,context:{quoteData:e},children:n(ut,{quoteData:e})},"comments")],["history-log",n(g,{name:"HistoryLogTab",slot:t==null?void 0:t.HistoryLogTab,context:{quoteData:e},children:n(tt,{quoteData:e})},"history-log")]])})}),[t==null?void 0:t.QuoteContent,t==null?void 0:t.HistoryLogTab,t==null?void 0:t.CommentsTab,t==null?void 0:t.ItemsQuotedTab,e,je]),ha=u(()=>n(g,{name:"ShippingInformationTitle",slot:t==null?void 0:t.ShippingInformationTitle,context:{quoteData:e},children:n("h2",{children:o.shippingInformationTitle})}),[t==null?void 0:t.ShippingInformationTitle,e,o]),Na=u(()=>{var a;return n(g,{name:"ShippingInformation",slot:t==null?void 0:t.ShippingInformation,context:{quoteData:e,loading:y,setLoading:R},children:n(at,{shippingAddress:(a=e==null?void 0:e.shippingAddresses)==null?void 0:a[0],loading:y,"data-testid":"manage-quote-shipping-address"})})},[t==null?void 0:t.ShippingInformation,e,y,R]),Qa=u(()=>n(g,{name:"QuoteCommentsTitle",slot:t==null?void 0:t.QuoteCommentsTitle,context:{quoteData:e},children:n("h2",{children:o.quoteCommentsTitle})}),[t==null?void 0:t.QuoteCommentsTitle,o,e]),Sa=u(()=>n(g,{name:"QuoteComments",slot:t==null?void 0:t.QuoteComments,context:{quoteData:e},children:n(Va,{name:"quoteComments",placeholder:o.quoteCommentsPlaceholder,rows:3,value:E,onInput:a=>{Ie(a.target.value)},disabled:!(e!=null&&e.canSendForReview)||q})}),[t==null?void 0:t.QuoteComments,o,e,E,q]),ea=u(()=>!(e!=null&&e.canSendForReview),[e]),qa=u(()=>{const a=q||ea;return n(g,{name:"AttachFilesField",slot:t==null?void 0:t.AttachFilesField,context:{onFileChange:Se,attachedFiles:b,fileUploadError:ie,disabled:a},children:M("div",{className:"quote-management-manage-negotiable-quote__attach-files",...a?{"data-disabled":!0}:{},"aria-disabled":a,children:[n($a,{multiple:!0,onChange:r=>{const i=r.target,m=i==null?void 0:i.files,f=m?Array.from(m):[];f.length>0&&Se(f)},icon:n(Aa,{}),disabled:a,"data-testid":"manage-quote-attach-files",accept:Q==null?void 0:Q.join(","),children:o.attachFiles}),ie&&n("div",{className:"quote-management-manage-negotiable-quote__file-error","data-testid":"file-upload-error",children:ie})]})})},[t==null?void 0:t.AttachFilesField,Se,q,ea,Q,ie,o,b]),va=u(()=>{if(b.length)return n(g,{name:"AttachedFilesList",slot:t==null?void 0:t.AttachedFilesList,context:{files:b,onRemove:qe,disabled:q},children:n(et,{files:b,onRemove:qe,disabled:q})})},[b,qe,q,t==null?void 0:t.AttachedFilesList]),Ta=c(async()=>{if(e!=null&&e.uid){ue(!0),V(""),H("");try{await rt({quoteUids:[e.uid]})}catch(a){console.error("Failed to close quote:",a)}}},[e]),Ca=c(()=>{de(!1),V(""),H("")},[]),ya=c(async()=>{if(e!=null&&e.uid){ke(!0),ae(""),$("");try{await it(e.uid),$(o.createTemplateSuccessMessage)}catch(a){console.error("Failed to create quote template:",a);const r=a instanceof Error?a.message:o.createTemplateErrorFallback;ae(r)}finally{ke(!1)}}},[e,o.createTemplateSuccessMessage,o.createTemplateErrorFallback]),_a=c(()=>{ge(!1),ae(""),$("")},[]),ve=c(async()=>{const a=b.filter(r=>r.status==="success");if(I){I({quoteData:e,comment:E.trim()||void 0,attachments:a.length?a:void 0});return}me(!0);try{await lt({quoteUid:e.uid,comment:E.trim()||void 0,attachments:a.length?a.map(r=>({key:r.key})):void 0})}catch(r){console.error("Failed to send quote for review:",r),me(!1)}},[e,I,E,b]),Ea=u(()=>n(g,{name:"Footer",slot:t==null?void 0:t.Footer,context:{quoteData:e,comment:E,isSubmitting:q,attachments:b,handleSendForReview:ve},children:n(ra,{variant:"primary",onClick:ve,"data-testid":"send-for-review-button",disabled:!(e!=null&&e.canSendForReview)||q,children:o.sendForReview})}),[t==null?void 0:t.Footer,o,e,E,q,b,ve]),Fa=u(()=>Me?n(N,{type:"error",variant:"primary",icon:n(P,{color:"var(--color-error)"}),heading:o.renameErrorHeading,description:Me}):void 0,[Me,o.renameErrorHeading]),Da=u(()=>be?n(N,{type:"success",variant:"primary",icon:n(J,{}),heading:o.renameSuccessHeading,description:be}):void 0,[be,o.renameSuccessHeading]),Te=c(a=>a.errors&&Array.isArray(a.errors)&&a.errors.length>0?a.errors[0].message||o.confirmationModalDeleteErrorFallback:(a==null?void 0:a.message)||o.confirmationModalDeleteErrorFallback,[o.confirmationModalDeleteErrorFallback]),Ia=c(()=>{A(!1),W(null),ee(!1)},[]),wa=c(async()=>{if(e!=null&&e.uid){W(null),ee(!1);try{const{operationResults:a}=await ct(e.uid),r=a.find(i=>i.__typename==="DeleteNegotiableQuoteOperationFailure");if(r){const i=Te(r);W(i);return}ee(!0)}catch(a){const r=Te(a);W(r)}}},[e,Te]),xa=c(()=>{W(null)},[]),Ra=c(()=>{ee(!1)},[]),aa=c(a=>(a==null?void 0:a.message)||o.confirmationModalDuplicateErrorFallback,[o.confirmationModalDuplicateErrorFallback]),La=c(()=>{se(!1),_(null),L(!1)},[]),Ha=c(async()=>{if(e!=null&&e.uid){_(null),L(!1);try{const r=(i=>{const m=i.slice(0,-8),f=crypto.randomUUID().slice(0,8);return m+f})(e.uid);await st({quoteUid:e.uid,duplicatedQuoteUid:r})}catch(a){const r=aa(a);_(r)}}},[e,aa]),Ua=c(()=>{_(null)},[]),ka=c(()=>{L(!1)},[]),Ba=Ee?n(N,{type:"error",variant:"primary",icon:n(P,{}),heading:o.confirmationModalDeleteErrorHeading,description:Ee,onDismiss:xa,"data-testid":"confirmation-modal-error-banner"}):null,ta=(ia?n(N,{type:"success",variant:"primary",icon:n(J,{}),heading:o.confirmationModalDeleteSuccessHeading,description:o.confirmationModalDeleteSuccessDescription,onDismiss:Ra,"data-testid":"confirmation-modal-success-banner"}):null)||Ba,za=De?n(N,{type:"error",variant:"primary",icon:n(P,{}),heading:o.confirmationModalDuplicateErrorHeading,description:De,onDismiss:Ua,"data-testid":"confirmation-modal-duplicate-error-banner"}):null,na=(la?n(N,{type:"success",variant:"primary",icon:n(J,{}),heading:o.confirmationModalDuplicateSuccessHeading,description:o.confirmationModalDuplicateSuccessDescription,onDismiss:ka,"data-testid":"confirmation-modal-duplicate-success-banner"}):null)||za,Oa={...Y,loading:y,quoteName:ua,quoteStatus:ga,banner:fa||void 0,details:pa,actionBar:Ma,quoteContent:ba,shippingInformationTitle:ha,shippingInformation:Na,quoteCommentsTitle:Qa,quoteComments:Sa,attachFilesField:qa,attachedFilesList:va,footer:Ea};let Ce=null;Re?Ce=n(N,{type:"success",variant:"primary",icon:n(J,{}),heading:o.closeModalSuccessHeading,description:Re,"data-testid":"close-quote-success-banner"}):Le&&(Ce=n(N,{type:"error",variant:"primary",icon:n(P,{}),heading:o.confirmationModalDeleteErrorHeading,description:Le,"data-testid":"close-quote-error-banner"}));let ye=null;return Be?ye=n(N,{type:"success",variant:"primary",icon:n(J,{}),heading:o.createTemplateModalSuccessHeading,description:Be,"data-testid":"create-template-success-banner"}):ze&&(ye=n(N,{type:"error",variant:"primary",icon:n(P,{}),heading:o.createTemplateModalErrorHeading,description:ze,"data-testid":"create-template-error-banner"})),M(Pa,{children:[n(ft,{...Oa}),Oe&&z(n(Xa,{open:Oe,quoteName:te,renameReason:pe,quoteNameError:ca,errorBanner:Fa,successBanner:Da,onQuoteNameChange:ma,onRenameReasonChange:oe,onSave:da,onClose:sa}),document.body),Z&&z(n(X,{open:Z,title:o.confirmationModalDeleteTitle,message:o.confirmationModalDeleteMessage,cancelLabel:o.confirmationModalCancel,confirmLabel:o.confirmationModalDeleteConfirm,onCancel:Ia,onConfirm:wa,showCloseButton:!ta,confirmationBanner:ta}),document.body),Fe&&z(n(X,{open:Fe,title:o.confirmationModalDuplicateTitle,message:o.confirmationModalDuplicateMessage,cancelLabel:o.confirmationModalCancel,confirmLabel:o.confirmationModalDuplicateConfirm,onCancel:La,onConfirm:Ha,showCloseButton:!na,confirmationBanner:na}),document.body),we&&z(n(X,{open:we,title:o.closeModalTitle,message:o.closeModalMessage,cancelLabel:o.closeModalCancel,confirmLabel:xe?o.closeModalConfirmLoading:o.closeModalConfirm,onCancel:Ca,onConfirm:xe?void 0:Ta,showCloseButton:!0,confirmationBanner:Ce,"data-testid":"close-quote-confirmation-modal"}),document.body),He&&z(n(X,{open:He,title:o.createTemplateModalTitle,message:o.createTemplateModalMessage,cancelLabel:o.createTemplateModalCancel,confirmLabel:Ue?o.createTemplateModalConfirmLoading:o.createTemplateModalConfirm,onCancel:_a,onConfirm:Ue?void 0:ya,showCloseButton:!0,confirmationBanner:ye,"data-testid":"create-template-confirmation-modal"}),document.body),Ve&&z(n(X,{open:Ve,title:o.noItemsSelectedModalTitle,message:o.noItemsSelectedModalMessage,confirmLabel:o.noItemsSelectedModalConfirm,onConfirm:Ke,onClose:Ke,showCloseButton:!0,"data-testid":"no-items-selected-modal"}),document.body)]})};export{Yt as ManageNegotiableQuote,Yt as default};
4
4
  //# sourceMappingURL=ManageNegotiableQuote.js.map