@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.
- package/api/graphql/NegotiableQuoteTemplateFragment.d.ts +1 -1
- package/api/sendForReview/index.d.ts +1 -1
- package/api/sendForReview/sendForReview.d.ts +3 -0
- package/api/sendQuoteTemplateForReview/sendQuoteTemplateForReview.d.ts +7 -0
- package/api.js +8 -56
- package/api.js.map +1 -1
- package/chunks/AttachedFilesList.js +4 -0
- package/chunks/AttachedFilesList.js.map +1 -0
- package/chunks/ChevronDown.js +1 -1
- package/chunks/ChevronDown.js.map +1 -1
- package/chunks/ConfirmationModal.js +1 -1
- package/chunks/ConfirmationModal.js.map +1 -1
- package/chunks/ItemsQuoted.js +1 -1
- package/chunks/ItemsQuoted.js.map +1 -1
- package/chunks/ItemsQuotedTemplate.js +1 -1
- package/chunks/ItemsQuotedTemplate.js.map +1 -1
- package/chunks/LineItemNoteModal.js +4 -0
- package/chunks/LineItemNoteModal.js.map +1 -0
- package/chunks/NegotiableQuoteTemplateFragment.js +6 -0
- package/chunks/NegotiableQuoteTemplateFragment.js.map +1 -1
- package/chunks/OrderSummaryLine.js +1 -1
- package/chunks/OrderSummaryLine.js.map +1 -1
- package/chunks/QuoteCommentsList.js +1 -1
- package/chunks/QuoteCommentsList.js.map +1 -1
- package/chunks/QuoteCommentsList3.js +1 -1
- package/chunks/QuoteCommentsList3.js.map +1 -1
- package/chunks/RenameQuoteModal.js +4 -0
- package/chunks/RenameQuoteModal.js.map +1 -0
- package/chunks/ShippingAddressDisplay.js +1 -1
- package/chunks/ShippingAddressDisplay.js.map +1 -1
- package/chunks/addQuoteTemplateLineItemNote.js +33 -0
- package/chunks/addQuoteTemplateLineItemNote.js.map +1 -0
- package/chunks/duplicateNegotiableQuote.js +8 -8
- package/chunks/duplicateNegotiableQuote.js.map +1 -1
- package/chunks/openQuoteTemplate.js +28 -8
- package/chunks/openQuoteTemplate.js.map +1 -1
- package/chunks/requestNegotiableQuote.js +25 -0
- package/chunks/requestNegotiableQuote.js.map +1 -0
- package/chunks/setLineItemNote.js +1 -1
- package/chunks/transform-quote-template.js +1 -1
- package/chunks/transform-quote-template.js.map +1 -1
- package/chunks/transform-quote.js +1 -1
- package/chunks/uploadFile.js +2 -23
- package/chunks/uploadFile.js.map +1 -1
- package/components/AttachedFilesList/AttachedFilesList.d.ts +16 -0
- package/components/AttachedFilesList/index.d.ts +11 -0
- package/components/LineItemNoteModal/LineItemNoteModal.d.ts +1 -0
- package/components/ManageNegotiableQuote/ManageNegotiableQuote.d.ts +2 -0
- package/components/ManageNegotiableQuoteTemplate/ManageNegotiableQuoteTemplate.d.ts +3 -2
- package/components/ProductListTable/ProductListTable.d.ts +1 -0
- package/components/QuoteCommentsList/QuoteCommentsList.d.ts +4 -0
- package/components/ReferenceDocumentFormModal/ReferenceDocumentFormModal.d.ts +30 -0
- package/components/ReferenceDocumentFormModal/index.d.ts +11 -0
- package/components/ReferenceDocumentsList/ReferenceDocumentsList.d.ts +18 -0
- package/components/ReferenceDocumentsList/index.d.ts +11 -0
- package/components/RequestNegotiableQuoteForm/RequestNegotiableQuoteForm.d.ts +1 -0
- package/components/index.d.ts +3 -0
- package/containers/ItemsQuoted.js +1 -1
- package/containers/ItemsQuotedTemplate/ItemsQuotedTemplate.d.ts +6 -0
- package/containers/ItemsQuotedTemplate.js +1 -1
- package/containers/ManageNegotiableQuote/ManageNegotiableQuote.d.ts +22 -0
- package/containers/ManageNegotiableQuote.js +1 -1
- package/containers/ManageNegotiableQuote.js.map +1 -1
- package/containers/ManageNegotiableQuoteTemplate/ManageNegotiableQuoteTemplate.d.ts +28 -5
- package/containers/ManageNegotiableQuoteTemplate.js +3 -1
- package/containers/ManageNegotiableQuoteTemplate.js.map +1 -1
- package/containers/OrderSummary.js +1 -1
- package/containers/OrderSummary.js.map +1 -1
- package/containers/OrderSummaryLine.js +1 -1
- package/containers/QuoteSummaryList.js +1 -1
- package/containers/QuoteSummaryList.js.map +1 -1
- package/containers/QuoteTemplatesListTable.js +1 -1
- package/containers/QuoteTemplatesListTable.js.map +1 -1
- package/containers/QuotesListTable.js +1 -1
- package/containers/QuotesListTable.js.map +1 -1
- package/containers/RequestNegotiableQuoteForm/RequestNegotiableQuoteForm.d.ts +10 -0
- package/containers/RequestNegotiableQuoteForm.js +1 -1
- package/containers/RequestNegotiableQuoteForm.js.map +1 -1
- package/containers/ShippingAddressDisplay/ShippingAddressDisplay.d.ts +2 -2
- package/data/models/negotiable-quote-template-model.d.ts +2 -0
- package/data/transforms/__fixtures__/negotiableQuoteTemplateData.d.ts +55 -0
- package/hooks/useItemsQuotedTemplate.d.ts +16 -0
- package/hooks/useReferenceDocumentLinks.d.ts +34 -0
- package/hooks/useRemoveTemplateItems.d.ts +25 -0
- package/hooks/useRenameTemplate.d.ts +71 -0
- package/hooks/useUpdateTemplateQuantities.d.ts +27 -0
- package/i18n/en_US.json.d.ts +102 -3
- package/package.json +1 -1
- package/render.js +5 -5
- package/render.js.map +1 -1
- package/utils/fileUtils.d.ts +46 -0
- package/chunks/QuotePricesSummary.js +0 -4
- package/chunks/QuotePricesSummary.js.map +0 -1
- package/chunks/TabbedContent.js +0 -4
- package/chunks/TabbedContent.js.map +0 -1
package/chunks/uploadFile.js
CHANGED
|
@@ -1,27 +1,6 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{events as
|
|
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
|
-
`,
|
|
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
|
package/chunks/uploadFile.js.map
CHANGED
|
@@ -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
|
-
|
|
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
|
package/components/index.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
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
|