@dropins/storefront-quote-management 0.0.1-alpha3 → 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/acceptQuoteTemplate/acceptQuoteTemplate.d.ts +13 -0
- package/api/{getCustomerData/getCustomerData.d.ts → acceptQuoteTemplate/graphql/acceptQuoteTemplate.d.ts} +2 -2
- package/{data/transforms/__fixtures__/customerData.d.ts → api/acceptQuoteTemplate/index.d.ts} +2 -2
- package/api/addQuoteTemplateLineItemNote/addQuoteTemplateLineItemNote.d.ts +15 -0
- package/api/addQuoteTemplateLineItemNote/graphql/setQuoteTemplateLineItemNote.d.ts +10 -0
- package/api/addQuoteTemplateLineItemNote/index.d.ts +10 -0
- package/api/addQuoteTemplateShippingAddress/addQuoteTemplateShippingAddress.d.ts +37 -0
- package/api/addQuoteTemplateShippingAddress/graphql/setNegotiableQuoteTemplateShippingAddress.d.ts +10 -0
- package/api/addQuoteTemplateShippingAddress/index.d.ts +10 -0
- package/api/cancelQuoteTemplate/cancelQuoteTemplate.d.ts +14 -0
- package/api/cancelQuoteTemplate/graphql/cancelQuoteTemplate.d.ts +10 -0
- package/api/cancelQuoteTemplate/index.d.ts +10 -0
- package/api/closeNegotiableQuote/closeNegotiableQuote.d.ts +31 -0
- package/api/closeNegotiableQuote/graphql/CloseNegotiableQuoteMutation.d.ts +2 -0
- package/api/closeNegotiableQuote/index.d.ts +10 -0
- package/api/createQuoteTemplate/createQuoteTemplate.d.ts +4 -0
- package/api/createQuoteTemplate/graphql/createQuoteTemplate.d.ts +10 -0
- package/api/createQuoteTemplate/index.d.ts +10 -0
- package/api/deleteQuote/deleteQuote.d.ts +28 -0
- package/api/deleteQuote/graphql/DeleteQuoteMutation.d.ts +10 -0
- package/api/{getCustomerData → deleteQuote}/index.d.ts +1 -1
- package/{data/models/customer-model.d.ts → api/deleteQuoteTemplate/deleteQuoteTemplate.d.ts} +6 -8
- package/api/deleteQuoteTemplate/graphql/deleteQuoteTemplate.d.ts +10 -0
- package/api/deleteQuoteTemplate/index.d.ts +10 -0
- package/api/duplicateNegotiableQuote/duplicateNegotiableQuote.d.ts +8 -0
- package/api/duplicateNegotiableQuote/graphql/duplicateNegotiableQuoteMutation.d.ts +10 -0
- package/api/duplicateNegotiableQuote/index.d.ts +10 -0
- package/api/generateQuoteFromTemplate/generateQuoteFromTemplate.d.ts +15 -0
- package/api/generateQuoteFromTemplate/graphql/generateNegotiableQuoteFromTemplate.d.ts +10 -0
- package/api/generateQuoteFromTemplate/index.d.ts +10 -0
- package/api/getQuoteData/getQuoteData.d.ts +10 -0
- package/api/getQuoteData/graphql/QuoteDataQuery.d.ts +2 -0
- package/api/getQuoteData/index.d.ts +10 -0
- package/api/getQuoteTemplateData/getQuoteTemplateData.d.ts +4 -0
- package/api/getQuoteTemplateData/graphql/getQuoteTemplateData.d.ts +10 -0
- package/api/getQuoteTemplateData/index.d.ts +10 -0
- package/api/getQuoteTemplates/getQuoteTemplates.d.ts +34 -0
- package/api/getQuoteTemplates/graphql/getQuoteTemplates.d.ts +10 -0
- package/api/getQuoteTemplates/index.d.ts +10 -0
- package/api/getStoreConfig/getStoreConfig.d.ts +4 -0
- package/api/getStoreConfig/graphql/StoreConfigQuery.d.ts +10 -0
- package/api/getStoreConfig/index.d.ts +10 -0
- package/api/graphql/NegotiableQuoteAddressFragment.d.ts +10 -0
- package/api/graphql/NegotiableQuoteFragment.d.ts +5 -13
- package/api/graphql/NegotiableQuoteListFragment.d.ts +10 -0
- package/api/graphql/NegotiableQuoteTemplateFragment.d.ts +10 -0
- package/api/graphql/SearchResultPageInfoFragment.d.ts +10 -0
- package/api/graphql/ShippingMethodFragment.d.ts +10 -0
- package/api/graphql/SortFieldsFragment.d.ts +10 -0
- package/api/index.d.ts +34 -1
- package/api/initialize/initialize.d.ts +2 -0
- package/api/negotiableQuotes/graphql/NegotiableQuotesQuery.d.ts +10 -0
- package/api/negotiableQuotes/index.d.ts +10 -0
- package/api/negotiableQuotes/negotiableQuotes.d.ts +39 -0
- package/api/openQuoteTemplate/graphql/openQuoteTemplate.d.ts +10 -0
- package/api/openQuoteTemplate/index.d.ts +10 -0
- package/api/openQuoteTemplate/openQuoteTemplate.d.ts +13 -0
- package/api/removeNegotiableQuoteItems/graphql/RemoveNegotiableQuoteItemsMutation.d.ts +10 -0
- package/api/removeNegotiableQuoteItems/index.d.ts +10 -0
- package/api/removeNegotiableQuoteItems/removeNegotiableQuoteItems.d.ts +8 -0
- package/api/removeQuoteTemplateItems/graphql/removeNegotiableQuoteTemplateItems.d.ts +10 -0
- package/api/removeQuoteTemplateItems/index.d.ts +10 -0
- package/api/removeQuoteTemplateItems/removeQuoteTemplateItems.d.ts +14 -0
- package/api/renameNegotiableQuote/graphql/RenameNegotiableQuoteMutation.d.ts +10 -0
- package/api/renameNegotiableQuote/index.d.ts +10 -0
- package/api/renameNegotiableQuote/renameNegotiableQuote.d.ts +9 -0
- package/api/requestNegotiableQuote/graphql/RequestNegotiableQuoteMutation.d.ts +4 -12
- package/api/requestNegotiableQuote/requestNegotiableQuote.d.ts +3 -0
- package/api/sendForReview/graphql/SendNegotiableQuoteForReviewMutation.d.ts +10 -0
- package/api/sendForReview/index.d.ts +10 -0
- package/api/sendForReview/sendForReview.d.ts +11 -0
- package/api/sendQuoteTemplateForReview/graphql/sendQuoteTemplateForReview.d.ts +10 -0
- package/api/sendQuoteTemplateForReview/index.d.ts +10 -0
- package/api/sendQuoteTemplateForReview/sendQuoteTemplateForReview.d.ts +22 -0
- package/api/setLineItemNote/graphql/SetLineItemNoteMutation.d.ts +10 -0
- package/api/setLineItemNote/index.d.ts +10 -0
- package/api/setLineItemNote/setLineItemNote.d.ts +10 -0
- package/api/setShippingAddress/graphql/SetNegotiableQuoteShippingAddressMutation.d.ts +10 -0
- package/api/setShippingAddress/index.d.ts +2 -0
- package/api/setShippingAddress/setShippingAddress.d.ts +110 -0
- package/api/updateQuantities/graphql/UpdateNegotiableQuoteQuantitiesMutation.d.ts +10 -0
- package/api/updateQuantities/index.d.ts +10 -0
- package/api/updateQuantities/updateQuantities.d.ts +36 -0
- package/api/updateQuoteTemplateItemQuantities/graphql/updateNegotiableQuoteTemplateQuantities.d.ts +10 -0
- package/api/updateQuoteTemplateItemQuantities/index.d.ts +10 -0
- package/api/updateQuoteTemplateItemQuantities/updateQuoteTemplateItemQuantities.d.ts +20 -0
- package/api/uploadFile/graphql/FinishUploadMutation.d.ts +10 -0
- package/api/uploadFile/graphql/InitiateUploadMutation.d.ts +10 -0
- package/api/uploadFile/index.d.ts +10 -0
- package/api/uploadFile/uploadFile.d.ts +12 -0
- package/api.js +56 -22
- package/api.js.map +1 -1
- package/chunks/AttachedFilesList.js +4 -0
- package/chunks/AttachedFilesList.js.map +1 -0
- package/chunks/ChevronDown.js +4 -0
- package/chunks/ChevronDown.js.map +1 -0
- package/chunks/ConfirmationModal.js +4 -0
- package/chunks/ConfirmationModal.js.map +1 -0
- package/chunks/ItemsQuoted.js +4 -0
- package/chunks/ItemsQuoted.js.map +1 -0
- package/chunks/ItemsQuotedTemplate.js +4 -0
- package/chunks/ItemsQuotedTemplate.js.map +1 -0
- package/chunks/LineItemNoteModal.js +4 -0
- package/chunks/LineItemNoteModal.js.map +1 -0
- package/chunks/NegotiableQuoteFragment.js +391 -0
- package/chunks/NegotiableQuoteFragment.js.map +1 -0
- package/chunks/NegotiableQuoteTemplateFragment.js +196 -0
- package/chunks/NegotiableQuoteTemplateFragment.js.map +1 -0
- package/chunks/OrderSummaryLine.js +4 -0
- package/chunks/OrderSummaryLine.js.map +1 -0
- package/chunks/QuoteCommentsList.js +4 -0
- package/chunks/QuoteCommentsList.js.map +1 -0
- package/chunks/QuoteCommentsList3.js +4 -0
- package/chunks/QuoteCommentsList3.js.map +1 -0
- package/chunks/QuoteHistoryLog.js +4 -0
- package/chunks/QuoteHistoryLog.js.map +1 -0
- package/chunks/QuoteHistoryLog3.js +4 -0
- package/chunks/QuoteHistoryLog3.js.map +1 -0
- package/chunks/QuoteTemplateCommentsList.js +4 -0
- package/chunks/QuoteTemplateCommentsList.js.map +1 -0
- package/chunks/QuoteTemplateHistoryLog.js +4 -0
- package/chunks/QuoteTemplateHistoryLog.js.map +1 -0
- package/chunks/RenameQuoteModal.js +4 -0
- package/chunks/RenameQuoteModal.js.map +1 -0
- package/chunks/ShippingAddressDisplay.js +4 -0
- package/chunks/ShippingAddressDisplay.js.map +1 -0
- package/chunks/WarningFilled.js +4 -0
- package/chunks/WarningFilled.js.map +1 -0
- package/chunks/addQuoteTemplateLineItemNote.js +33 -0
- package/chunks/addQuoteTemplateLineItemNote.js.map +1 -0
- package/chunks/dateUtils.js +4 -0
- package/chunks/dateUtils.js.map +1 -0
- package/chunks/duplicateNegotiableQuote.js +121 -0
- package/chunks/duplicateNegotiableQuote.js.map +1 -0
- package/chunks/generateQuoteFromTemplate.js +12 -0
- package/chunks/generateQuoteFromTemplate.js.map +1 -0
- package/chunks/getQuoteTemplates.js +50 -0
- package/chunks/getQuoteTemplates.js.map +1 -0
- package/chunks/negotiableQuotes.js +77 -0
- package/chunks/negotiableQuotes.js.map +1 -0
- package/chunks/openQuoteTemplate.js +51 -0
- package/chunks/openQuoteTemplate.js.map +1 -0
- package/chunks/requestNegotiableQuote.js +6 -53
- package/chunks/requestNegotiableQuote.js.map +1 -1
- package/chunks/setLineItemNote.js +47 -0
- package/chunks/setLineItemNote.js.map +1 -0
- package/chunks/state.js +4 -0
- package/chunks/state.js.map +1 -0
- package/chunks/transform-quote-template.js +4 -0
- package/chunks/transform-quote-template.js.map +1 -0
- package/chunks/transform-quote.js +4 -0
- package/chunks/transform-quote.js.map +1 -0
- package/chunks/uploadFile.js +20 -0
- package/chunks/uploadFile.js.map +1 -0
- package/components/ActionsBar/ActionsBar.d.ts +15 -0
- package/components/ActionsBar/index.d.ts +11 -0
- package/components/AttachedFilesList/AttachedFilesList.d.ts +16 -0
- package/components/AttachedFilesList/index.d.ts +11 -0
- package/components/ConfirmationModal/ConfirmationModal.d.ts +17 -0
- package/components/ConfirmationModal/index.d.ts +11 -0
- package/components/ItemsQuoted/ItemsQuoted.d.ts +11 -0
- package/components/ItemsQuoted/index.d.ts +11 -0
- package/components/LineItemNoteModal/LineItemNoteModal.d.ts +17 -0
- package/components/LineItemNoteModal/index.d.ts +11 -0
- package/components/ManageNegotiableQuote/ManageNegotiableQuote.d.ts +22 -0
- package/components/ManageNegotiableQuote/__fixtures__/ManageNegotiableQuoteProps.d.ts +4 -0
- package/components/ManageNegotiableQuote/index.d.ts +11 -0
- package/components/ManageNegotiableQuoteTemplate/ManageNegotiableQuoteTemplate.d.ts +21 -0
- package/components/ManageNegotiableQuoteTemplate/__fixtures__/ManageNegotiableQuoteTemplateProps.d.ts +4 -0
- package/components/ManageNegotiableQuoteTemplate/index.d.ts +11 -0
- package/components/OrderSummary/OrderSummary.d.ts +48 -0
- package/components/OrderSummary/index.d.ts +11 -0
- package/components/OrderSummaryLine/OrderSummaryLine.d.ts +13 -0
- package/components/OrderSummaryLine/index.d.ts +11 -0
- package/components/ProductListTable/ProductListTable.d.ts +61 -0
- package/components/ProductListTable/index.d.ts +11 -0
- package/components/QuoteCommentsList/QuoteCommentsList.d.ts +17 -0
- package/components/QuoteCommentsList/index.d.ts +11 -0
- package/components/QuoteHistoryLog/QuoteHistoryLog.d.ts +77 -0
- package/components/QuoteHistoryLog/index.d.ts +11 -0
- package/components/QuotePricesSummary/QuotePricesSummary.d.ts +16 -0
- package/components/QuotePricesSummary/index.d.ts +11 -0
- package/components/QuoteSummaryList/QuoteSummaryList.d.ts +13 -0
- package/components/QuoteSummaryList/index.d.ts +11 -0
- package/components/QuoteTemplatesListTable/QuoteTemplatesListTable.d.ts +29 -0
- package/components/QuoteTemplatesListTable/index.d.ts +10 -0
- package/components/QuotesListTable/QuotesListTable.d.ts +29 -0
- package/components/QuotesListTable/index.d.ts +11 -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/RenameQuoteModal/RenameQuoteModal.d.ts +18 -0
- package/components/RenameQuoteModal/index.d.ts +11 -0
- package/components/RequestNegotiableQuoteForm/RequestNegotiableQuoteForm.d.ts +1 -0
- package/components/ShippingAddressDisplay/ShippingAddressDisplay.d.ts +12 -0
- package/components/ShippingAddressDisplay/index.d.ts +11 -0
- package/components/TabbedContent/TabbedContent.d.ts +10 -0
- package/components/TabbedContent/index.d.ts +11 -0
- package/components/index.d.ts +30 -0
- package/containers/ItemsQuoted/ItemsQuoted.d.ts +30 -0
- package/containers/ItemsQuoted/index.d.ts +11 -0
- package/containers/ItemsQuoted.d.ts +3 -0
- package/containers/ItemsQuoted.js +4 -0
- package/containers/ItemsQuoted.js.map +1 -0
- package/containers/ItemsQuotedTemplate/ItemsQuotedTemplate.d.ts +25 -0
- package/containers/ItemsQuotedTemplate/index.d.ts +11 -0
- package/containers/ItemsQuotedTemplate.d.ts +3 -0
- package/containers/ItemsQuotedTemplate.js +4 -0
- package/containers/ItemsQuotedTemplate.js.map +1 -0
- package/containers/ManageNegotiableQuote/ManageNegotiableQuote.d.ts +91 -0
- package/containers/ManageNegotiableQuote/index.d.ts +11 -0
- package/containers/ManageNegotiableQuote.d.ts +3 -0
- package/containers/ManageNegotiableQuote.js +4 -0
- package/containers/ManageNegotiableQuote.js.map +1 -0
- package/containers/ManageNegotiableQuoteTemplate/ManageNegotiableQuoteTemplate.d.ts +90 -0
- package/containers/ManageNegotiableQuoteTemplate/index.d.ts +11 -0
- package/containers/ManageNegotiableQuoteTemplate.d.ts +3 -0
- package/containers/ManageNegotiableQuoteTemplate.js +6 -0
- package/containers/ManageNegotiableQuoteTemplate.js.map +1 -0
- package/containers/OrderSummary/OrderSummary.d.ts +11 -0
- package/containers/OrderSummary/index.d.ts +11 -0
- package/containers/OrderSummary.d.ts +3 -0
- package/containers/OrderSummary.js +4 -0
- package/containers/OrderSummary.js.map +1 -0
- package/containers/OrderSummaryLine/OrderSummaryLine.d.ts +14 -0
- package/containers/OrderSummaryLine/index.d.ts +11 -0
- package/containers/OrderSummaryLine.d.ts +3 -0
- package/containers/OrderSummaryLine.js +4 -0
- package/containers/OrderSummaryLine.js.map +1 -0
- package/containers/QuoteCommentsList/QuoteCommentsList.d.ts +9 -0
- package/containers/QuoteCommentsList/index.d.ts +11 -0
- package/containers/QuoteCommentsList.d.ts +3 -0
- package/containers/QuoteCommentsList.js +4 -0
- package/containers/QuoteCommentsList.js.map +1 -0
- package/containers/QuoteHistoryLog/QuoteHistoryLog.d.ts +9 -0
- package/containers/QuoteHistoryLog/index.d.ts +11 -0
- package/containers/QuoteHistoryLog.d.ts +3 -0
- package/containers/QuoteHistoryLog.js +4 -0
- package/containers/QuoteHistoryLog.js.map +1 -0
- package/containers/QuoteSummaryList/QuoteSummaryList.d.ts +51 -0
- package/containers/QuoteSummaryList/index.d.ts +11 -0
- package/containers/QuoteSummaryList.d.ts +3 -0
- package/containers/QuoteSummaryList.js +4 -0
- package/containers/QuoteSummaryList.js.map +1 -0
- package/containers/QuoteTemplateCommentsList/QuoteTemplateCommentsList.d.ts +9 -0
- package/containers/QuoteTemplateCommentsList/index.d.ts +11 -0
- package/containers/QuoteTemplateCommentsList.d.ts +3 -0
- package/containers/QuoteTemplateCommentsList.js +4 -0
- package/containers/QuoteTemplateCommentsList.js.map +1 -0
- package/containers/QuoteTemplateHistoryLog/QuoteTemplateHistoryLog.d.ts +9 -0
- package/containers/QuoteTemplateHistoryLog/index.d.ts +11 -0
- package/containers/QuoteTemplateHistoryLog.d.ts +3 -0
- package/containers/QuoteTemplateHistoryLog.js +4 -0
- package/containers/QuoteTemplateHistoryLog.js.map +1 -0
- package/containers/QuoteTemplatesListTable/QuoteTemplatesListTable.d.ts +74 -0
- package/containers/QuoteTemplatesListTable/index.d.ts +11 -0
- package/containers/QuoteTemplatesListTable.d.ts +3 -0
- package/containers/QuoteTemplatesListTable.js +4 -0
- package/containers/QuoteTemplatesListTable.js.map +1 -0
- package/containers/QuotesListTable/QuotesListTable.d.ts +72 -0
- package/containers/QuotesListTable/index.d.ts +11 -0
- package/containers/QuotesListTable.d.ts +3 -0
- package/containers/QuotesListTable.js +4 -0
- package/containers/QuotesListTable.js.map +1 -0
- 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 +10 -0
- package/containers/ShippingAddressDisplay/index.d.ts +11 -0
- package/containers/ShippingAddressDisplay.d.ts +1 -0
- package/containers/ShippingAddressDisplay.js +4 -0
- package/containers/ShippingAddressDisplay.js.map +1 -0
- package/containers/index.d.ts +22 -0
- package/data/models/__fixtures__/negotiableQuoteModel.d.ts +8 -0
- package/data/models/__fixtures__/negotiableQuoteTemplateModel.d.ts +4 -0
- package/data/models/__fixtures__/negotiableQuoteTemplatesListModel.d.ts +5 -0
- package/data/models/__fixtures__/negotiableQuotesListModel.d.ts +5 -0
- package/data/models/__fixtures__/storeConfigModel.d.ts +5 -0
- package/data/models/index.d.ts +11 -1
- package/data/models/negotiable-quote-model.d.ts +266 -27
- package/data/models/negotiable-quote-template-model.d.ts +148 -0
- package/data/models/store-config-model.d.ts +27 -0
- package/data/transforms/__fixtures__/negotiableQuoteData.d.ts +665 -2
- package/data/transforms/__fixtures__/negotiableQuoteTemplateData.d.ts +1665 -0
- package/data/transforms/__fixtures__/storeConfigData.d.ts +31 -0
- package/data/transforms/index.d.ts +6 -13
- package/data/transforms/transform-quote-template.d.ts +5 -0
- package/data/transforms/transform-quote.d.ts +13 -2
- package/data/transforms/transform-store-config.d.ts +4 -0
- package/hooks/useItemsQuotedTemplate.d.ts +16 -0
- package/hooks/useQuoteSummaryData.d.ts +10 -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 +438 -1
- package/lib/configurationTransformers.d.ts +27 -0
- package/lib/itemFormatters.d.ts +47 -0
- package/lib/priceCalculators.d.ts +41 -0
- package/lib/state.d.ts +6 -0
- package/package.json +1 -1
- package/render.js +6 -2
- package/render.js.map +1 -1
- package/types/state.types.d.ts +13 -0
- package/utils/dateUtils.d.ts +26 -0
- package/utils/fileUtils.d.ts +46 -0
- package/utils/mapAuthPermissions.d.ts +39 -0
- package/api/getCustomerData/graphql/CustomerQuery.d.ts +0 -2
- package/api/graphql/CustomerFragment.d.ts +0 -2
- package/data/models/__fixtures__/customerModel.d.ts +0 -4
- package/data/transforms/transform-customer.d.ts +0 -15
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*! Copyright 2025 Adobe
|
|
2
|
+
All Rights Reserved. */
|
|
3
|
+
import{jsx as a,jsxs as f,Fragment as Ae}from"@dropins/tools/preact-jsx-runtime.js";import{useState as l,useEffect as ne,useCallback as s,useMemo as N,useRef as _a,createPortal as U}from"@dropins/tools/preact-compat.js";import{classes as d,VComponent as E,Slot as S}from"@dropins/tools/lib.js";import{f as xe}from"../chunks/dateUtils.js";import{events as ya}from"@dropins/tools/event-bus.js";import{Skeleton as Ra,SkeletonRow as A,InLineAlert as I,Modal as Da,Input as ue,Button as w,TextArea as Sa,Icon as ee}from"@dropins/tools/components.js";import{N as Ue}from"../chunks/transform-quote-template.js";import{S as La,A as Ea,T as Ia,R as ka}from"../chunks/RenameQuoteModal.js";/* empty css */import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";import{C as ae}from"../chunks/ConfirmationModal.js";/* empty css *//* empty css */import{a as $,S as ge}from"../chunks/WarningFilled.js";import{useText as fe}from"@dropins/tools/i18n.js";import"../chunks/state.js";import{d as wa,c as Ba,s as Ha,a as Fa,o as xa}from"../chunks/openQuoteTemplate.js";import{g as Ua}from"../chunks/generateQuoteFromTemplate.js";import{S as Aa}from"../chunks/ShippingAddressDisplay.js";import{I as Wa}from"../chunks/ItemsQuotedTemplate.js";import{Q as Oa}from"../chunks/QuoteTemplateCommentsList.js";import{Q as Ga}from"../chunks/QuoteTemplateHistoryLog.js";import"../chunks/transform-quote.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/NegotiableQuoteTemplateFragment.js";import"../chunks/LineItemNoteModal.js";import"../chunks/addQuoteTemplateLineItemNote.js";import"../chunks/QuoteCommentsList.js";import"../chunks/QuoteHistoryLog.js";const $a=({className:n,loading:u,templateName:c,templateStatus:q,banner:e,details:T,actionBar:Q,referenceDocuments:b,itemsTable:M,shippingInformationTitle:m,shippingInformation:r,commentsTitle:v,comments:g,footer:h,...y})=>u?a(za,{}):f("div",{...y,className:d(["quote-management-manage-negotiable-quote-template",n]),children:[f("div",{className:d(["quote-management-manage-negotiable-quote-template__header"]),children:[c&&a(E,{node:c,className:d(["quote-management-manage-negotiable-quote-template__template-name"])}),q&&a(E,{node:q,className:d(["quote-management-manage-negotiable-quote-template__template-status"])})]}),e&&a(E,{node:e,className:d(["quote-management-manage-negotiable-quote-template__banner"])}),T&&a(E,{node:T,className:d(["quote-management-manage-negotiable-quote-template__details"])}),Q&&a(E,{node:Q,className:d(["quote-management-manage-negotiable-quote-template__action-bar"])}),b&&a("div",{"data-testid":"reference-documents-container",className:d(["quote-management-manage-negotiable-quote-template__reference-documents-container"]),children:a(E,{node:b,className:d(["quote-management-manage-negotiable-quote-template__reference-documents"])})}),M&&a(E,{node:M,className:d(["quote-management-manage-negotiable-quote-template__items-table"])}),f("div",{"data-testid":"template-shipping-information-container",className:d(["quote-management-manage-negotiable-quote-template__shipping-information-container"]),children:[m&&a(E,{node:m,className:d(["quote-management-manage-negotiable-quote-template__shipping-information-title"])}),r&&a(E,{node:r,className:d(["quote-management-manage-negotiable-quote-template__shipping-information"])})]}),f("div",{"data-testid":"comments-container",className:d(["quote-management-manage-negotiable-quote-template__comments-container"]),children:[v&&a(E,{node:v,className:d(["quote-management-manage-negotiable-quote-template__comments-title"])}),g&&a(E,{node:g,className:d(["quote-management-manage-negotiable-quote-template__comments"])})]}),h&&a(E,{node:h,className:d(["quote-management-manage-negotiable-quote-template__footer"])})]}),za=()=>f(Ra,{"data-testid":"manage-negotiable-quote-template-skeleton",children:[a(A,{variant:"heading",fullWidth:!0,size:"large"}),a(A,{variant:"row",fullWidth:!1,size:"small"}),a(A,{variant:"row",fullWidth:!1,size:"small"}),a(A,{variant:"row",fullWidth:!0}),a(A,{variant:"row",fullWidth:!0,size:"xlarge",lines:2}),a(A,{variant:"row",fullWidth:!1,size:"small"})]}),Pa=({className:n,open:u,document:c,errorMessage:q,errorBanner:e,successBanner:T,showCloseButton:Q=!0,isSubmitting:b=!1,onSave:M,onClose:m})=>{const[r,v]=l(""),[g,h]=l(""),[y,k]=l(""),[_,R]=l({}),C=fe({title:"NegotiableQuoteTemplate.Manage.referenceDocuments.form.title",documentNameLabel:"NegotiableQuoteTemplate.Manage.referenceDocuments.form.documentNameLabel",documentIdentifierLabel:"NegotiableQuoteTemplate.Manage.referenceDocuments.form.documentIdentifierLabel",referenceUrlLabel:"NegotiableQuoteTemplate.Manage.referenceDocuments.form.referenceUrlLabel",addButton:"NegotiableQuoteTemplate.Manage.referenceDocuments.form.addButton",updateButton:"NegotiableQuoteTemplate.Manage.referenceDocuments.form.updateButton",cancelButton:"NegotiableQuoteTemplate.Manage.referenceDocuments.form.cancelButton",documentNameRequired:"NegotiableQuoteTemplate.Manage.referenceDocuments.form.documentNameRequired",documentIdentifierRequired:"NegotiableQuoteTemplate.Manage.referenceDocuments.form.documentIdentifierRequired",referenceUrlRequired:"NegotiableQuoteTemplate.Manage.referenceDocuments.form.referenceUrlRequired",invalidUrl:"NegotiableQuoteTemplate.Manage.referenceDocuments.form.invalidUrl",errorHeading:"NegotiableQuoteTemplate.Manage.referenceDocuments.form.errorHeading"}),B=e||(q?a(I,{type:"error",variant:"primary",icon:a($,{}),heading:C.errorHeading,description:q,"data-testid":"reference-document-form-modal-error-banner-inline"}):null),x=!!c;ne(()=>{u&&(c?(v(c.name||""),h(c.identifier||""),k(c.url||"")):(v(""),h(""),k("")),R({}))},[u,c]);const D=s(p=>{if(!p.trim())return!1;try{return new URL(p),!0}catch{return!1}},[]),te=s(()=>{const p={};if(r.trim()||(p.documentName=C.documentNameRequired),y.trim()?D(y.trim())||(p.referenceUrl=C.invalidUrl):p.referenceUrl=C.referenceUrlRequired,g.trim()||(p.documentIdentifier=C.documentIdentifierRequired),Object.keys(p).length>0){R(p);return}M({uid:c==null?void 0:c.uid,name:r.trim(),identifier:g.trim(),url:y.trim()})},[r,g,y,c,C,D,M]),H=s(()=>{v(""),h(""),k(""),R({}),m==null||m()},[m]);return u?f(Da,{open:u,size:"medium",title:a(Ae,{children:C.title}),onClose:H,clickToDismiss:!0,escapeToDismiss:!0,showCloseButton:Q,className:d(["quote-management-reference-document-form-modal",n]),"data-testid":"reference-document-form-modal",children:[B&&a("div",{className:d(["quote-management-reference-document-form-modal__error-banner"]),"data-testid":"reference-document-form-modal-error-banner",children:B}),T&&a("div",{className:d(["quote-management-reference-document-form-modal__success-banner"]),"data-testid":"reference-document-form-modal-success-banner",children:T}),f("div",{className:d(["quote-management-reference-document-form-modal__content"]),children:[f("div",{children:[a(ue,{name:"documentName",type:"text",value:r,onInput:p=>{v(p.target.value),R({..._,documentName:void 0})},floatingLabel:C.documentNameLabel,required:!0,error:!!_.documentName,disabled:b,"data-testid":"reference-document-name-input"}),_.documentName&&a("span",{className:d(["quote-management-reference-document-form-modal__error-text"]),"data-testid":"reference-document-name-error",children:_.documentName})]}),f("div",{children:[a(ue,{name:"documentIdentifier",type:"text",value:g,onInput:p=>{h(p.target.value),R({..._,documentIdentifier:void 0})},floatingLabel:C.documentIdentifierLabel,error:!!_.documentIdentifier,disabled:b,"data-testid":"reference-document-identifier-input"}),_.documentIdentifier&&a("span",{className:d(["quote-management-reference-document-form-modal__error-text"]),"data-testid":"reference-document-identifier-error",children:_.documentIdentifier})]}),f("div",{children:[a(ue,{name:"referenceUrl",type:"url",value:y,onInput:p=>{k(p.target.value),R({..._,referenceUrl:void 0})},floatingLabel:C.referenceUrlLabel,required:!0,error:!!_.referenceUrl,disabled:b,"data-testid":"reference-document-url-input"}),_.referenceUrl&&a("span",{className:d(["quote-management-reference-document-form-modal__error-text"]),"data-testid":"reference-document-url-error",children:_.referenceUrl})]})]}),f("div",{className:d(["quote-management-reference-document-form-modal__actions"]),children:[a(w,{variant:"secondary",size:"medium",onClick:H,disabled:b,className:d(["quote-management-reference-document-form-modal__cancel-button"]),"data-testid":"reference-document-form-cancel-button",children:C.cancelButton}),a(w,{variant:"primary",size:"medium",onClick:te,disabled:b,className:d(["quote-management-reference-document-form-modal__save-button"]),"data-testid":"reference-document-form-save-button",children:x?C.updateButton:C.addButton})]})]}):null},ja=({className:n,documents:u,isEditable:c=!1,onAdd:q,onEdit:e,onRemove:T,...Q})=>{const b=fe({add:"NegotiableQuoteTemplate.Manage.referenceDocuments.add",edit:"NegotiableQuoteTemplate.Manage.referenceDocuments.edit",remove:"NegotiableQuoteTemplate.Manage.referenceDocuments.remove",noReferenceDocuments:"NegotiableQuoteTemplate.Manage.referenceDocuments.noReferenceDocuments"}),M=r=>r.identifier?`${r.name}, ${r.identifier}`:`${r.name} ${r.url}`,m=(r,v)=>{r.preventDefault(),window.open(v,"_blank","noopener,noreferrer")};return a("div",{className:d(["quote-management-reference-documents-list",n]),"data-testid":"reference-documents-list",...Q,children:f("div",{className:"quote-management-reference-documents-list__content",children:[u.map(r=>f("div",{className:"quote-management-reference-documents-list__document","data-testid":`reference-document-${r.uid||r.url}`,children:[a("a",{href:r.url,onClick:v=>m(v,r.url),className:"quote-management-reference-documents-list__document-link",target:"_blank",rel:"noopener noreferrer","data-testid":`reference-document-link-${r.uid||r.url}`,children:M(r)}),c&&f("div",{className:"quote-management-reference-documents-list__document-actions",children:[a(w,{variant:"tertiary",onClick:()=>e==null?void 0:e(r),className:"quote-management-reference-documents-list__edit-button","data-testid":`reference-document-edit-${r.uid||r.url}`,children:b.edit}),a("span",{className:"quote-management-reference-documents-list__separator",children:"|"}),a(w,{variant:"tertiary",onClick:()=>T==null?void 0:T(r),className:"quote-management-reference-documents-list__remove-button","data-testid":`reference-document-remove-${r.uid||r.url}`,children:b.remove})]})]},r.uid||r.url)),c&&f(w,{variant:"tertiary",onClick:q,className:"quote-management-reference-documents-list__add-button","data-testid":"reference-documents-add-button",children:["+ ",b.add]}),u.length===0&&!c&&a("div",{className:"quote-management-reference-documents-list__empty",children:b.noReferenceDocuments})]})})},Va=n=>{const{templateReferenceDocuments:u,localReferenceDocuments:c}=n,q=s(m=>{if(u)return u.find(r=>m.uid&&r.uid?r.uid===m.uid:r.url===m.url)},[u]),e=s(m=>q(m)!==void 0,[q]),T=s((m,r)=>m.name!==r.name||m.identifier!==r.identifier||m.url!==r.url,[]),Q=s(()=>u?c.filter(m=>!u.some(r=>m.uid&&r.uid?r.uid===m.uid:r.url===m.url)):c,[u,c]),b=s(()=>c.map(m=>({uid:m.uid,name:m.name,identifier:m.identifier,url:m.url})),[c]),M=N(()=>u?c.some(g=>q(g)===void 0)||u.some(g=>!c.some(h=>h.uid&&g.uid?h.uid===g.uid:h.url===g.url))?!0:c.some(g=>{const h=q(g);return h?T(g,h):!1}):c.length>0,[u,c,q,T]);return{isDocumentInTemplateData:e,getNewDocuments:Q,getReferenceDocumentLinks:b,hasUnsavedChanges:M}},Ja=(n={})=>{const{initialTemplateName:u,templateNameRequiredErrorMessage:c="Template name is required"}=n,[q,e]=l(!1),[T,Q]=l(""),[b,M]=l(""),[m,r]=l(""),[v,g]=l(""),[h,y]=l(""),k=s(D=>{Q(D||u||""),M(""),r(""),g(""),y(""),e(!0)},[u]),_=s(()=>{e(!1),Q(""),M(""),r(""),g(""),y("")},[]),R=s(D=>{Q(D),D.trim()&&g("")},[]),C=s(D=>{M(D)},[]),B=s(()=>T.trim()?(r(""),g(""),e(!1),!0):(g(c),!1),[T,c]),x=s(()=>{Q(""),M(""),r(""),g(""),y("")},[]);return{isRenameModalOpen:q,renameTemplateName:T,renameReason:b,renameError:m,renameTemplateNameError:v,renameSuccess:h,handleRenameClick:k,handleRenameClose:_,handleRenameTemplateNameChange:R,handleRenameReasonChange:C,handleRenameSave:B,resetRenameState:x}},Sn=({slots:n,onActionsButtonClick:u,onSendForReview:c,...q})=>{const[e,T]=l(void 0),[Q,b]=l(!0),[M,m]=l(""),[r,v]=l(!1),[g,h]=l(!1),[y,k]=l(null),[_,R]=l(!1),[C,B]=l(!1),[x,D]=l(null),[te,H]=l(!1),[p,W]=l([]),[pe,z]=l(!1),[P,j]=l(void 0),[We,V]=l(null),[be,Me]=l(!1),[he,Ne]=l(!1),[Te,J]=l(""),[Qe,K]=l(""),[ve,Ce]=l(!1),[qe,_e]=l(!1),[ye,X]=l(""),[Re,Y]=l(""),De=_a(!1),{getReferenceDocumentLinks:Se,hasUnsavedChanges:Le}=Va({templateReferenceDocuments:e==null?void 0:e.referenceDocuments,localReferenceDocuments:p}),t=fe({createdLabel:"NegotiableQuoteTemplate.Manage.createdLabel",salesRepLabel:"NegotiableQuoteTemplate.Manage.salesRepLabel",expiresLabel:"NegotiableQuoteTemplate.Manage.expiresLabel",templateIdLabel:"NegotiableQuoteTemplate.Manage.templateIdLabel",actionsLabel:"NegotiableQuoteTemplate.Manage.actionsLabel",referenceDocumentsTitle:"NegotiableQuoteTemplate.Manage.referenceDocuments.title",commentsTitle:"NegotiableQuoteTemplate.Manage.comments.title",historyLogTitle:"NegotiableQuoteTemplate.Manage.historyLog.title",itemsQuotedTab:"NegotiableQuoteTemplate.Manage.tabs.itemsQuoted",commentsTab:"NegotiableQuoteTemplate.Manage.tabs.comments",historyLogTab:"NegotiableQuoteTemplate.Manage.tabs.historyLog",templateCommentsPlaceholder:"NegotiableQuoteTemplate.Manage.templateComments.placeholder",sendForReview:"NegotiableQuoteTemplate.Manage.actionButtons.sendForReview",delete:"NegotiableQuoteTemplate.Manage.actionButtons.delete",cancel:"NegotiableQuoteTemplate.Manage.actionButtons.cancel",confirmationModalDeleteTitle:"NegotiableQuoteTemplate.Manage.confirmationModal.delete.title",confirmationModalDeleteMessage:"NegotiableQuoteTemplate.Manage.confirmationModal.delete.message",confirmationModalDeleteConfirm:"NegotiableQuoteTemplate.Manage.confirmationModal.delete.confirm",confirmationModalDeleteErrorHeading:"NegotiableQuoteTemplate.Manage.confirmationModal.delete.errorHeading",confirmationModalDeleteErrorFallback:"NegotiableQuoteTemplate.Manage.confirmationModal.delete.errorFallback",confirmationModalDeleteSuccessHeading:"NegotiableQuoteTemplate.Manage.confirmationModal.delete.successHeading",confirmationModalDeleteSuccessDescription:"NegotiableQuoteTemplate.Manage.confirmationModal.delete.successDescription",confirmationModalCancelTitle:"NegotiableQuoteTemplate.Manage.confirmationModal.cancelTemplate.title",confirmationModalCancelMessage:"NegotiableQuoteTemplate.Manage.confirmationModal.cancelTemplate.message",confirmationModalCancelConfirm:"NegotiableQuoteTemplate.Manage.confirmationModal.cancelTemplate.confirm",confirmationModalCancelErrorHeading:"NegotiableQuoteTemplate.Manage.confirmationModal.cancelTemplate.errorHeading",confirmationModalCancelErrorFallback:"NegotiableQuoteTemplate.Manage.confirmationModal.cancelTemplate.errorFallback",confirmationModalCancelSuccessHeading:"NegotiableQuoteTemplate.Manage.confirmationModal.cancelTemplate.successHeading",confirmationModalCancelSuccessDescription:"NegotiableQuoteTemplate.Manage.confirmationModal.cancelTemplate.successDescription",confirmationModalCancel:"NegotiableQuoteTemplate.Manage.confirmationModal.cancel",accept:"NegotiableQuoteTemplate.Manage.actionButtons.accept",generateQuote:"NegotiableQuoteTemplate.Manage.actionButtons.generateQuote",generateQuoteModalTitle:"NegotiableQuoteTemplate.Manage.actionButtons.generateQuote",generateQuoteModalMessage:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.message",generateQuoteModalCancel:"NegotiableQuoteTemplate.Manage.confirmationModal.cancel",generateQuoteModalConfirm:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.confirm",generateQuoteModalConfirmLoading:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.confirmLoading",generateQuoteModalSuccessHeading:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.successHeading",generateQuoteSuccessMessage:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.successDescription",generateQuoteModalErrorHeading:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.errorHeading",generateQuoteErrorFallback:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.errorFallback",acceptModalTitle:"NegotiableQuoteTemplate.Manage.confirmationModal.accept.title",acceptModalMessage:"NegotiableQuoteTemplate.Manage.confirmationModal.accept.message",acceptModalCancel:"NegotiableQuoteTemplate.Manage.confirmationModal.cancel",acceptModalConfirm:"NegotiableQuoteTemplate.Manage.confirmationModal.accept.confirm",acceptModalConfirmLoading:"NegotiableQuoteTemplate.Manage.confirmationModal.accept.confirmLoading",acceptModalSuccessHeading:"NegotiableQuoteTemplate.Manage.confirmationModal.accept.successHeading",acceptSuccessMessage:"NegotiableQuoteTemplate.Manage.confirmationModal.accept.successDescription",acceptModalErrorHeading:"NegotiableQuoteTemplate.Manage.confirmationModal.accept.errorHeading",acceptErrorFallback:"NegotiableQuoteTemplate.Manage.confirmationModal.accept.errorFallback",documentDuplicateUidError:"NegotiableQuoteTemplate.Manage.referenceDocuments.form.duplicateUidError",renameTitle:"NegotiableQuoteTemplate.Manage.rename.title",renameTemplateNameLabel:"NegotiableQuoteTemplate.Manage.rename.templateNameLabel",renameReasonLabel:"NegotiableQuoteTemplate.Manage.rename.reasonLabel",renameButton:"NegotiableQuoteTemplate.Manage.rename.renameButton",renameCancelButton:"NegotiableQuoteTemplate.Manage.rename.cancelButton",renameErrorHeading:"NegotiableQuoteTemplate.Manage.rename.errorHeading",renameTemplateNameRequired:"NegotiableQuoteTemplate.Manage.rename.templateNameRequired",renameErrorDefault:"NegotiableQuoteTemplate.Manage.rename.errorDefault",renameSuccessHeading:"NegotiableQuoteTemplate.Manage.rename.successHeading",renameSuccessMessage:"NegotiableQuoteTemplate.Manage.rename.successMessage",shippingInformationTitle:"NegotiableQuoteTemplate.Manage.shippingInformation.title",unsavedChangesWarningHeading:"NegotiableQuoteTemplate.Manage.unsavedChangesWarningHeading",unsavedChangesWarningMessage:"NegotiableQuoteTemplate.Manage.unsavedChangesWarningMessage"}),{isRenameModalOpen:Ee,renameTemplateName:L,renameReason:O,renameError:re,renameTemplateNameError:Oe,renameSuccess:oe,handleRenameClick:Ie,handleRenameClose:Ge,handleRenameTemplateNameChange:$e,handleRenameReasonChange:ze,handleRenameSave:Pe,resetRenameState:ke}=Ja({initialTemplateName:e==null?void 0:e.name,templateNameRequiredErrorMessage:t.renameTemplateNameRequired}),we=N(()=>L!==""&&L!==(e==null?void 0:e.name),[L,e==null?void 0:e.name]),G=N(()=>Le||we,[Le,we]);ne(()=>{const o=ya.on("quote-management/quote-template-data",i=>{i.quoteTemplate&&(T(i.quoteTemplate),b(!1),m(""),v(!1),W(i.quoteTemplate.referenceDocuments||[]),ke())},{eager:!0});return()=>o==null?void 0:o.off()},[ke]),ne(()=>{e!=null&&e.referenceDocuments&&W(e.referenceDocuments)},[e==null?void 0:e.referenceDocuments]),ne(()=>{e&&e.status===Ue.UPDATED&&!De.current&&(De.current=!0,(async()=>{try{await xa({templateId:e.id})}catch(i){console.error("Failed to auto-open quote template:",i)}})())},[e]);const je=s(()=>{h(!1),k(null),R(!1)},[]),Ve=s(async()=>{if(e!=null&&e.id){k(null),R(!1);try{await wa({templateId:e.id}),R(!0),setTimeout(()=>{h(!1),R(!1)},2e3)}catch(o){const i=o.message||t.confirmationModalDeleteErrorFallback;k(i)}}},[e,t.confirmationModalDeleteErrorFallback]),Je=s(()=>{k(null)},[]),Ke=s(()=>{R(!1)},[]),Xe=s(()=>{B(!1),D(null),H(!1)},[]),Ye=s(async()=>{if(e!=null&&e.id){D(null),H(!1);try{await Ba({templateId:e.id}),H(!0),setTimeout(()=>{B(!1),H(!1)},2e3)}catch(o){const i=o.message||t.confirmationModalCancelErrorFallback;D(i)}}},[e,t.confirmationModalCancelErrorFallback]),Ze=s(()=>{D(null)},[]),ea=s(()=>{H(!1)},[]),ie=s(async()=>{const o=Se(),i=[O.trim(),M.trim()].filter(Boolean).join(`
|
|
4
|
+
|
|
5
|
+
`).trim()||void 0,F=L&&L!==(e==null?void 0:e.name)?L:void 0;if(c){c({templateData:e,name:F,comment:i,referenceDocumentLinks:o});return}v(!0);try{await Ha({templateId:e.id,name:F,comment:i,referenceDocumentLinks:o.length>0?o:void 0})}catch(qa){console.error("Failed to send quote template for review:",qa),v(!1)}},[e,c,M,O,L,Se]),ce=s(()=>{j(void 0),V(null),z(!0)},[]),me=s(o=>{j(o),V(null),z(!0)},[]),le=s(o=>{W(i=>i.filter(F=>F.uid!==o.uid||F.url!==o.url))},[]),aa=s(o=>{V(null),W(P?i=>i.map(F=>F.identifier===P.identifier?o:F):i=>[...i,o]),z(!1),j(void 0)},[P]),na=s(()=>{z(!1),j(void 0),V(null)},[]),ta=s(async()=>{Ne(!0),K(""),J("");try{await Ua({templateId:e.id}),J(t.generateQuoteSuccessMessage)}catch(o){console.error("Failed to generate quote from template:",o);const i=o instanceof Error?o.message:t.generateQuoteErrorFallback;K(i)}finally{Ne(!1)}},[e,t.generateQuoteSuccessMessage,t.generateQuoteErrorFallback]),ra=s(()=>{Me(!1),K(""),J("")},[]),oa=s(async()=>{_e(!0),Y(""),X("");try{await Fa({templateId:e.id}),X(t.acceptSuccessMessage)}catch(o){console.error("Failed to accept quote template:",o);const i=o instanceof Error?o.message:t.acceptErrorFallback;Y(i)}finally{_e(!1)}},[e,t.acceptSuccessMessage,t.acceptErrorFallback]),ia=s(()=>{Ce(!1),Y(""),X("")},[]),ca=N(()=>{const o=!(e!=null&&e.canSendForReview),i=L||(e==null?void 0:e.name);return a(S,{name:"TemplateName",slot:n==null?void 0:n.TemplateName,context:{templateName:e==null?void 0:e.name,templateData:e,templateDisplayName:i,isRenameDisabled:o},children:f("div",{className:"quote-management-manage-negotiable-quote-template__template-name-wrapper",children:[a("h1",{"data-testid":"template-name",className:"quote-management-manage-negotiable-quote-template__template-name-title",children:i}),a("button",{onClick:()=>Ie(i),disabled:o,"data-testid":"rename-template-button",className:"quote-management-manage-negotiable-quote-template__rename-button","aria-label":"Rename template",children:a(La,{})})]})})},[n==null?void 0:n.TemplateName,e,Ie,L]),ma=N(()=>a(S,{name:"TemplateStatus",slot:n==null?void 0:n.TemplateStatus,context:{templateStatus:e==null?void 0:e.status,templateData:e},children:a("div",{"data-testid":"template-status",children:e==null?void 0:e.status})}),[n==null?void 0:n.TemplateStatus,e]),la=N(()=>{if(!e)return;const o=e.expirationDate?xe(e.expirationDate,"short"):void 0;return f(S,{name:"Details",slot:n==null?void 0:n.Details,context:{templateData:e},children:[f("div",{className:"quote-management-manage-negotiable-quote-template__detail",children:[a("span",{className:"quote-management-manage-negotiable-quote-template__detail-title","data-testid":"template-id-label",children:t.templateIdLabel}),a("span",{className:"quote-management-manage-negotiable-quote-template__detail-content","data-testid":"template-id-value",children:e.id})]}),f("div",{className:"quote-management-manage-negotiable-quote-template__detail",children:[a("span",{className:"quote-management-manage-negotiable-quote-template__detail-title","data-testid":"created-label",children:t.createdLabel}),f("span",{className:"quote-management-manage-negotiable-quote-template__detail-content","data-testid":"created-value",children:[xe(e.createdAt,"short")," (",e.buyer.firstname," ",e.buyer.lastname,")"]})]}),f("div",{className:"quote-management-manage-negotiable-quote-template__detail",children:[a("span",{className:"quote-management-manage-negotiable-quote-template__detail-title","data-testid":"sales-rep-label",children:t.salesRepLabel}),a("span",{className:"quote-management-manage-negotiable-quote-template__detail-content","data-testid":"sales-rep-value",children:e.salesRepName})]}),o&&f("div",{className:"quote-management-manage-negotiable-quote-template__detail",children:[a("span",{className:"quote-management-manage-negotiable-quote-template__detail-title","data-testid":"expires-label",children:t.expiresLabel}),a("span",{className:"quote-management-manage-negotiable-quote-template__detail-content","data-testid":"expires-value",children:o})]})]})},[n==null?void 0:n.Details,t,e]),Be=N(()=>[{label:t.generateQuote,value:"generateQuote",disabled:!(e!=null&&e.canGenerateQuoteFromTemplate)}],[t,e==null?void 0:e.canGenerateQuoteFromTemplate]),sa=N(()=>{const o=i=>{switch(i){case"generateQuote":Me(!0),K(""),J(""),u==null||u(i);break}};return a(S,{name:"ActionBar",slot:n==null?void 0:n.ActionBar,context:{templateData:e},children:a(Ea,{dropdownPlaceholder:t.actionsLabel,dropdownOptions:[],buttons:Be.map(i=>a(w,{variant:"tertiary",onClick:()=>o(i.value),"data-testid":`actions-bar-${i.value}-button`,"data-action":i.value,disabled:i.disabled,children:i.label},i.value))})})},[Be,t,n==null?void 0:n.ActionBar,e,u]),Z=N(()=>{const o=e==null?void 0:e.status;return o==="Draft"||o==="Open"},[e==null?void 0:e.status]),da=N(()=>{const o=p.length>0||Z,i=o?t.referenceDocumentsTitle:void 0;return a(S,{name:"ReferenceDocuments",slot:n==null?void 0:n.ReferenceDocuments,context:{templateData:e,referenceDocuments:p,isEditable:Z,onAddDocument:ce,onEditDocument:me,onRemoveDocument:le,referenceDocumentsTitle:t.referenceDocumentsTitle},children:f("div",{"data-testid":"reference-documents",children:[o&&a("h2",{children:i}),a(ja,{documents:p,isEditable:Z,onAdd:ce,onEdit:me,onRemove:le})]})})},[n==null?void 0:n.ReferenceDocuments,t,e,p,Z,ce,me,le]),ua=N(()=>a(S,{name:"ShippingInformationTitle",slot:n==null?void 0:n.ShippingInformationTitle,context:{templateData:e},children:a("h2",{children:t.shippingInformationTitle})}),[n==null?void 0:n.ShippingInformationTitle,e,t]),ga=N(()=>{var o;return a(S,{name:"ShippingInformation",slot:n==null?void 0:n.ShippingInformation,context:{templateData:e,loading:Q,setLoading:b},children:a(Aa,{shippingAddress:(o=e==null?void 0:e.shippingAddresses)==null?void 0:o[0],loading:Q,"data-testid":"manage-template-shipping-address"})})},[n==null?void 0:n.ShippingInformation,e,Q,b]),fa=N(()=>a(S,{name:"ItemsTable",slot:n==null?void 0:n.ItemsTable,context:{templateData:e},children:a(Ia,{tabs:new Map([["items-quoted",t.itemsQuotedTab],["comments",t.commentsTab],["history-log",t.historyLogTab]]),tabsContent:new Map([["items-quoted",a(S,{name:"ItemsQuotedTab",slot:n==null?void 0:n.ItemsQuotedTab,context:{templateData:e},children:a(Wa,{templateData:e})},"items-quoted")],["comments",a(S,{name:"CommentsTab",slot:n==null?void 0:n.CommentsTab,context:{templateData:e},children:a(Oa,{templateData:e})},"comments")],["history-log",a(S,{name:"HistoryLogTab",slot:n==null?void 0:n.HistoryLogTab,context:{templateData:e},children:a(Ga,{templateData:e})},"history-log")]])})}),[n==null?void 0:n.ItemsTable,n==null?void 0:n.ItemsQuotedTab,n==null?void 0:n.CommentsTab,n==null?void 0:n.HistoryLogTab,t,e]),pa=N(()=>a(S,{name:"CommentsTitle",slot:n==null?void 0:n.CommentsTitle,context:{templateData:e},children:a("h2",{children:t.commentsTitle})}),[n==null?void 0:n.CommentsTitle,t,e]),ba=N(()=>a(S,{name:"Comments",slot:n==null?void 0:n.Comments,context:{templateData:e},children:a(Sa,{name:"templateComments",placeholder:t.templateCommentsPlaceholder,rows:3,value:M,onInput:o=>{m(o.target.value)},disabled:!(e!=null&&e.canSendForReview)||r})}),[n==null?void 0:n.Comments,t,e,M,r]),Ma=N(()=>G?a(I,{type:"warning",variant:"primary",icon:a($,{}),heading:t.unsavedChangesWarningHeading,description:t.unsavedChangesWarningMessage,"data-testid":"unsaved-changes-warning-alert"}):void 0,[G,t.unsavedChangesWarningHeading,t.unsavedChangesWarningMessage]),ha=N(()=>{const o=(e==null?void 0:e.status)===Ue.OPEN&&(e==null?void 0:e.canAccept);return f(S,{name:"Footer",slot:n==null?void 0:n.Footer,context:{templateData:e,comment:M,isSubmitting:r,referenceDocuments:p,hasUnsavedChanges:G,handleSendForReview:ie,showAcceptButton:o,renameTemplateName:L,renameReason:O},children:[o&&a(w,{variant:"primary",onClick:()=>{Ce(!0),Y(""),X("")},"data-testid":"accept-button",disabled:r||G,children:t.accept}),(e==null?void 0:e.canSendForReview)&&a(w,{variant:"primary",onClick:ie,"data-testid":"send-for-review-button",disabled:r,children:t.sendForReview}),(e==null?void 0:e.canCancel)&&a(w,{variant:"tertiary",onClick:()=>B(!0),"data-testid":"cancel-template-button",disabled:r,children:t.cancel}),(e==null?void 0:e.canDelete)&&a(w,{variant:"tertiary",onClick:()=>h(!0),"data-testid":"delete-template-button",disabled:r,children:t.delete})]})},[n==null?void 0:n.Footer,t,e,M,r,ie,p,G,L,O]),Na=y?a(I,{type:"error",variant:"primary",icon:a($,{}),heading:t.confirmationModalDeleteErrorHeading,description:y,onDismiss:Je,"data-testid":"confirmation-modal-error-banner"}):null,He=(_?a(I,{type:"success",variant:"primary",icon:a(ge,{}),heading:t.confirmationModalDeleteSuccessHeading,description:t.confirmationModalDeleteSuccessDescription,onDismiss:Ke,"data-testid":"confirmation-modal-success-banner"}):null)||Na,Ta=x?a(I,{type:"error",variant:"primary",icon:a($,{}),heading:t.confirmationModalCancelErrorHeading,description:x,onDismiss:Ze,"data-testid":"confirmation-modal-cancel-error-banner"}):null,Fe=(te?a(I,{type:"success",variant:"primary",icon:a(ge,{}),heading:t.confirmationModalCancelSuccessHeading,description:t.confirmationModalCancelSuccessDescription,onDismiss:ea,"data-testid":"confirmation-modal-cancel-success-banner"}):null)||Ta,Qa=N(()=>re?a(I,{type:"error",variant:"primary",icon:a($,{color:"var(--color-error)"}),heading:t.renameErrorHeading,description:re}):void 0,[re,t.renameErrorHeading]),va=N(()=>oe?a(I,{type:"success",variant:"primary",icon:a(ge,{}),heading:t.renameSuccessHeading,description:oe}):void 0,[oe,t.renameSuccessHeading]),Ca={...q,loading:Q,templateName:ca,templateStatus:ma,banner:Ma,details:la,actionBar:sa,referenceDocuments:da,itemsTable:fa,shippingInformationTitle:ua,shippingInformation:ga,commentsTitle:pa,comments:ba,footer:ha};let se=null;Te?se=a(I,{type:"success",variant:"primary",icon:a(ee,{source:"CheckWithCircle"}),heading:t.generateQuoteModalSuccessHeading,description:Te,"data-testid":"generate-quote-success-banner"}):Qe&&(se=a(I,{type:"error",variant:"primary",icon:a(ee,{source:"WarningFilled"}),heading:t.generateQuoteModalErrorHeading,description:Qe,"data-testid":"generate-quote-error-banner"}));let de=null;return ye?de=a(I,{type:"success",variant:"primary",icon:a(ee,{source:"CheckWithCircle"}),heading:t.acceptModalSuccessHeading,description:ye,"data-testid":"accept-success-banner"}):Re&&(de=a(I,{type:"error",variant:"primary",icon:a(ee,{source:"WarningFilled"}),heading:t.acceptModalErrorHeading,description:Re,"data-testid":"accept-error-banner"})),f(Ae,{children:[a($a,{...Ca}),g&&U(a(ae,{open:g,title:t.confirmationModalDeleteTitle,message:t.confirmationModalDeleteMessage,cancelLabel:t.confirmationModalCancel,confirmLabel:t.confirmationModalDeleteConfirm,onCancel:je,onConfirm:Ve,showCloseButton:!He,confirmationBanner:He}),document.body),C&&U(a(ae,{open:C,title:t.confirmationModalCancelTitle,message:t.confirmationModalCancelMessage,cancelLabel:t.confirmationModalCancel,confirmLabel:t.confirmationModalCancelConfirm,onCancel:Xe,onConfirm:Ye,showCloseButton:!Fe,confirmationBanner:Fe}),document.body),pe&&U(a(Pa,{open:pe,document:P,errorMessage:We||void 0,onSave:aa,onClose:na,isSubmitting:r}),document.body),be&&U(a(ae,{open:be,title:t.generateQuoteModalTitle,message:t.generateQuoteModalMessage,cancelLabel:t.generateQuoteModalCancel,confirmLabel:he?t.generateQuoteModalConfirmLoading:t.generateQuoteModalConfirm,onCancel:ra,onConfirm:he?void 0:ta,showCloseButton:!0,confirmationBanner:se,"data-testid":"generate-quote-confirmation-modal"}),document.body),ve&&U(a(ae,{open:ve,title:t.acceptModalTitle,message:t.acceptModalMessage,cancelLabel:t.acceptModalCancel,confirmLabel:qe?t.acceptModalConfirmLoading:t.acceptModalConfirm,onCancel:ia,onConfirm:qe?void 0:oa,showCloseButton:!0,confirmationBanner:de,"data-testid":"accept-confirmation-modal"}),document.body),Ee&&U(a(ka,{open:Ee,quoteName:L,renameReason:O,quoteNameError:Oe,errorBanner:Qa,successBanner:va,onQuoteNameChange:$e,onRenameReasonChange:ze,onSave:Pe,onClose:Ge}),document.body)]})};export{Sn as ManageNegotiableQuoteTemplate,Sn as default};
|
|
6
|
+
//# sourceMappingURL=ManageNegotiableQuoteTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManageNegotiableQuoteTemplate.js","sources":["/@dropins/storefront-quote-management/src/components/ManageNegotiableQuoteTemplate/ManageNegotiableQuoteTemplate.tsx","/@dropins/storefront-quote-management/src/components/ReferenceDocumentFormModal/ReferenceDocumentFormModal.tsx","/@dropins/storefront-quote-management/src/components/ReferenceDocumentsList/ReferenceDocumentsList.tsx","/@dropins/storefront-quote-management/src/hooks/useReferenceDocumentLinks.ts","/@dropins/storefront-quote-management/src/hooks/useRenameTemplate.ts","/@dropins/storefront-quote-management/src/containers/ManageNegotiableQuoteTemplate/ManageNegotiableQuoteTemplate.tsx"],"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 { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nimport '@/quote-management/components/ManageNegotiableQuoteTemplate/ManageNegotiableQuoteTemplate.css';\n\nexport interface ManageNegotiableQuoteTemplateProps extends Omit<HTMLAttributes<HTMLDivElement>, 'loading'> {\n loading?: boolean;\n templateName: VNode;\n templateStatus: VNode;\n banner?: VNode;\n details?: VNode;\n actionBar?: VNode;\n referenceDocuments?: VNode;\n itemsTable: VNode;\n shippingInformationTitle?: VNode;\n shippingInformation?: VNode;\n commentsTitle: VNode;\n comments: VNode;\n footer?: VNode;\n}\n\nexport const ManageNegotiableQuoteTemplate: FunctionComponent<ManageNegotiableQuoteTemplateProps> = ({\n className,\n loading,\n templateName,\n templateStatus,\n banner,\n details,\n actionBar,\n referenceDocuments,\n itemsTable,\n shippingInformationTitle,\n shippingInformation,\n commentsTitle,\n comments,\n footer,\n ...props\n}) => {\n if (loading) {\n return <ManageNegotiableQuoteTemplateSkeleton />;\n }\n\n return (\n <div {...props} className={classes(['quote-management-manage-negotiable-quote-template', className])}>\n <div className={classes(['quote-management-manage-negotiable-quote-template__header'])}>\n {templateName &&\n <VComponent\n node={templateName}\n className={classes(['quote-management-manage-negotiable-quote-template__template-name'])}\n />\n }\n {templateStatus &&\n <VComponent\n node={templateStatus}\n className={classes(['quote-management-manage-negotiable-quote-template__template-status'])}\n />\n }\n </div>\n {banner &&\n <VComponent\n node={banner}\n className={classes(['quote-management-manage-negotiable-quote-template__banner'])}\n />\n }\n {details &&\n <VComponent\n node={details}\n className={classes(['quote-management-manage-negotiable-quote-template__details'])}\n />\n }\n {actionBar &&\n <VComponent\n node={actionBar}\n className={classes(['quote-management-manage-negotiable-quote-template__action-bar'])}\n />\n }\n {referenceDocuments &&\n <div data-testid=\"reference-documents-container\" className={classes(['quote-management-manage-negotiable-quote-template__reference-documents-container'])}>\n <VComponent\n node={referenceDocuments}\n className={classes(['quote-management-manage-negotiable-quote-template__reference-documents'])}\n />\n </div>\n }\n {itemsTable &&\n <VComponent\n node={itemsTable}\n className={classes(['quote-management-manage-negotiable-quote-template__items-table'])}\n />\n }\n <div data-testid=\"template-shipping-information-container\" className={classes(['quote-management-manage-negotiable-quote-template__shipping-information-container'])}>\n {shippingInformationTitle &&\n <VComponent\n node={shippingInformationTitle}\n className={classes(['quote-management-manage-negotiable-quote-template__shipping-information-title'])}\n />\n }\n {shippingInformation &&\n <VComponent\n node={shippingInformation}\n className={classes(['quote-management-manage-negotiable-quote-template__shipping-information'])}\n />\n }\n </div>\n <div data-testid=\"comments-container\" className={classes(['quote-management-manage-negotiable-quote-template__comments-container'])}>\n {commentsTitle &&\n <VComponent\n node={commentsTitle}\n className={classes(['quote-management-manage-negotiable-quote-template__comments-title'])}\n />\n }\n {comments &&\n <VComponent\n node={comments}\n className={classes(['quote-management-manage-negotiable-quote-template__comments'])}\n />\n }\n </div>\n {footer &&\n <VComponent\n node={footer}\n className={classes(['quote-management-manage-negotiable-quote-template__footer'])}\n />\n }\n </div>\n );\n};\n\nexport const ManageNegotiableQuoteTemplateSkeleton: FunctionComponent = () => {\n return (\n <Skeleton data-testid=\"manage-negotiable-quote-template-skeleton\">\n <SkeletonRow variant=\"heading\" fullWidth={true} size=\"large\" />\n <SkeletonRow variant=\"row\" fullWidth={false} size=\"small\" />\n <SkeletonRow variant=\"row\" fullWidth={false} size=\"small\" />\n <SkeletonRow variant=\"row\" fullWidth={true} />\n <SkeletonRow variant=\"row\" fullWidth={true} size=\"xlarge\" lines={2} />\n <SkeletonRow variant=\"row\" fullWidth={false} size=\"small\" />\n </Skeleton>\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 { FunctionComponent, useCallback, useEffect, useState, HTMLAttributes } from 'preact/compat';\nimport { VNode } from 'preact';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Button, Input, Modal, InLineAlert } from '@adobe-commerce/elsie/components';\nimport { WarningFilled } from '@adobe-commerce/elsie/icons';\nimport '@/quote-management/components/ReferenceDocumentFormModal/ReferenceDocumentFormModal.css';\n\nexport interface ReferenceDocument {\n uid?: string;\n name: string;\n identifier?: string;\n url: string;\n}\n\nexport interface ReferenceDocumentFormModalProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n open: boolean;\n document?: ReferenceDocument;\n /**\n * Optional error message string. If provided, automatically creates an InLineAlert error banner.\n * If both errorMessage and errorBanner are provided, errorBanner takes precedence.\n */\n errorMessage?: string;\n /**\n * Optional custom error banner VNode. Provides full control over error banner rendering.\n * If both errorMessage and errorBanner are provided, errorBanner takes precedence.\n */\n errorBanner?: VNode;\n successBanner?: VNode;\n showCloseButton?: boolean;\n isSubmitting?: boolean;\n onSave: (document: ReferenceDocument) => void;\n onClose?: () => void;\n}\n\nexport const ReferenceDocumentFormModal: FunctionComponent<ReferenceDocumentFormModalProps> = ({\n className,\n open,\n document,\n errorMessage,\n errorBanner,\n successBanner,\n showCloseButton = true,\n isSubmitting = false,\n onSave,\n onClose,\n}) => {\n const [documentName, setDocumentName] = useState('');\n const [documentIdentifier, setDocumentIdentifier] = useState('');\n const [referenceUrl, setReferenceUrl] = useState('');\n const [errors, setErrors] = useState<{\n documentName?: string;\n documentIdentifier?: string;\n referenceUrl?: string;\n }>({});\n\n const dictionary = useText({\n title: 'NegotiableQuoteTemplate.Manage.referenceDocuments.form.title',\n documentNameLabel: 'NegotiableQuoteTemplate.Manage.referenceDocuments.form.documentNameLabel',\n documentIdentifierLabel: 'NegotiableQuoteTemplate.Manage.referenceDocuments.form.documentIdentifierLabel',\n referenceUrlLabel: 'NegotiableQuoteTemplate.Manage.referenceDocuments.form.referenceUrlLabel',\n addButton: 'NegotiableQuoteTemplate.Manage.referenceDocuments.form.addButton',\n updateButton: 'NegotiableQuoteTemplate.Manage.referenceDocuments.form.updateButton',\n cancelButton: 'NegotiableQuoteTemplate.Manage.referenceDocuments.form.cancelButton',\n documentNameRequired: 'NegotiableQuoteTemplate.Manage.referenceDocuments.form.documentNameRequired',\n documentIdentifierRequired: 'NegotiableQuoteTemplate.Manage.referenceDocuments.form.documentIdentifierRequired',\n referenceUrlRequired: 'NegotiableQuoteTemplate.Manage.referenceDocuments.form.referenceUrlRequired',\n invalidUrl: 'NegotiableQuoteTemplate.Manage.referenceDocuments.form.invalidUrl',\n errorHeading: 'NegotiableQuoteTemplate.Manage.referenceDocuments.form.errorHeading',\n });\n\n // Create error banner from errorMessage if errorBanner is not provided\n const displayErrorBanner = errorBanner || (errorMessage ? (\n <InLineAlert\n type=\"error\"\n variant=\"primary\"\n icon={<WarningFilled />}\n heading={dictionary.errorHeading}\n description={errorMessage}\n data-testid=\"reference-document-form-modal-error-banner-inline\"\n />\n ) : null);\n\n // Determine if we're in edit mode (document prop is provided)\n const isEditMode = !!document;\n\n // Reset form when modal opens or document changes\n useEffect(() => {\n if (open) {\n if (document) {\n setDocumentName(document.name || '');\n setDocumentIdentifier(document.identifier || '');\n setReferenceUrl(document.url || '');\n } else {\n setDocumentName('');\n setDocumentIdentifier('');\n setReferenceUrl('');\n }\n setErrors({});\n }\n }, [open, document]);\n\n const validateUrl = useCallback((url: string): boolean => {\n // istanbul ignore if - whitespace-only URL are caught before this function is called, but leaving this here for defensive programming.\n if (!url.trim()) {\n return false;\n }\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n }, []);\n\n const handleSave = useCallback(() => {\n const newErrors: { documentName?: string; documentIdentifier?: string; referenceUrl?: string } = {};\n\n if (!documentName.trim()) {\n newErrors.documentName = dictionary.documentNameRequired;\n }\n\n if (!referenceUrl.trim()) {\n newErrors.referenceUrl = dictionary.referenceUrlRequired;\n } else if (!validateUrl(referenceUrl.trim())) {\n newErrors.referenceUrl = dictionary.invalidUrl;\n }\n\n if (!documentIdentifier.trim()) {\n newErrors.documentIdentifier = dictionary.documentIdentifierRequired;\n }\n\n if (Object.keys(newErrors).length > 0) {\n setErrors(newErrors);\n return;\n }\n\n onSave({\n uid: document?.uid,\n name: documentName.trim(),\n identifier: documentIdentifier.trim(),\n url: referenceUrl.trim(),\n });\n }, [documentName, documentIdentifier, referenceUrl, document, dictionary, validateUrl, onSave]);\n\n const handleClose = useCallback(() => {\n setDocumentName('');\n setDocumentIdentifier('');\n setReferenceUrl('');\n setErrors({});\n onClose?.();\n }, [onClose]);\n\n if (!open) {\n return null;\n }\n\n return (\n <Modal\n open={open}\n size=\"medium\"\n title={<>{dictionary.title}</>}\n onClose={handleClose}\n clickToDismiss={true}\n escapeToDismiss={true}\n showCloseButton={showCloseButton}\n className={classes(['quote-management-reference-document-form-modal', className])}\n data-testid=\"reference-document-form-modal\"\n >\n {displayErrorBanner && (\n <div\n className={classes(['quote-management-reference-document-form-modal__error-banner'])}\n data-testid=\"reference-document-form-modal-error-banner\"\n >\n {displayErrorBanner}\n </div>\n )}\n\n {successBanner && (\n <div\n className={classes(['quote-management-reference-document-form-modal__success-banner'])}\n data-testid=\"reference-document-form-modal-success-banner\"\n >\n {successBanner}\n </div>\n )}\n\n <div className={classes(['quote-management-reference-document-form-modal__content'])}>\n <div>\n <Input\n name=\"documentName\"\n type=\"text\"\n value={documentName}\n onInput={(e: any) => {\n setDocumentName(e.target.value);\n setErrors({ ...errors, documentName: undefined });\n }}\n floatingLabel={dictionary.documentNameLabel}\n required\n error={!!errors.documentName}\n disabled={isSubmitting}\n data-testid=\"reference-document-name-input\"\n />\n {errors.documentName && (\n <span\n className={classes(['quote-management-reference-document-form-modal__error-text'])}\n data-testid=\"reference-document-name-error\"\n >\n {errors.documentName}\n </span>\n )}\n </div>\n\n <div>\n <Input\n name=\"documentIdentifier\"\n type=\"text\"\n value={documentIdentifier}\n onInput={(e: any) => {\n setDocumentIdentifier(e.target.value);\n setErrors({ ...errors, documentIdentifier: undefined });\n }}\n floatingLabel={dictionary.documentIdentifierLabel}\n error={!!errors.documentIdentifier}\n disabled={isSubmitting}\n data-testid=\"reference-document-identifier-input\"\n />\n {errors.documentIdentifier && (\n <span\n className={classes(['quote-management-reference-document-form-modal__error-text'])}\n data-testid=\"reference-document-identifier-error\"\n >\n {errors.documentIdentifier}\n </span>\n )}\n </div>\n\n <div>\n <Input\n name=\"referenceUrl\"\n type=\"url\"\n value={referenceUrl}\n onInput={(e: any) => {\n setReferenceUrl(e.target.value);\n setErrors({ ...errors, referenceUrl: undefined });\n }}\n floatingLabel={dictionary.referenceUrlLabel}\n required\n error={!!errors.referenceUrl}\n disabled={isSubmitting}\n data-testid=\"reference-document-url-input\"\n />\n {errors.referenceUrl && (\n <span\n className={classes(['quote-management-reference-document-form-modal__error-text'])}\n data-testid=\"reference-document-url-error\"\n >\n {errors.referenceUrl}\n </span>\n )}\n </div>\n </div>\n\n <div className={classes(['quote-management-reference-document-form-modal__actions'])}>\n <Button\n variant=\"secondary\"\n size=\"medium\"\n onClick={handleClose}\n disabled={isSubmitting}\n className={classes(['quote-management-reference-document-form-modal__cancel-button'])}\n data-testid=\"reference-document-form-cancel-button\"\n >\n {dictionary.cancelButton}\n </Button>\n <Button\n variant=\"primary\"\n size=\"medium\"\n onClick={handleSave}\n disabled={isSubmitting}\n className={classes(['quote-management-reference-document-form-modal__save-button'])}\n data-testid=\"reference-document-form-save-button\"\n >\n {isEditMode ? dictionary.updateButton : dictionary.addButton}\n </Button>\n </div>\n </Modal>\n );\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 { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Button } from '@adobe-commerce/elsie/components';\nimport '@/quote-management/components/ReferenceDocumentsList/ReferenceDocumentsList.css';\n\nexport interface ReferenceDocument {\n uid?: string;\n name: string;\n identifier?: string;\n url: string;\n}\n\nexport interface ReferenceDocumentsListProps extends HTMLAttributes<HTMLDivElement> {\n documents: ReferenceDocument[];\n isEditable?: boolean;\n onAdd?: () => void;\n onEdit?: (document: ReferenceDocument) => void;\n onRemove?: (document: ReferenceDocument) => void;\n}\n\nexport const ReferenceDocumentsList: FunctionComponent<ReferenceDocumentsListProps> = ({\n className,\n documents,\n isEditable = false,\n onAdd,\n onEdit,\n onRemove,\n ...props\n}) => {\n const dictionary = useText({\n add: 'NegotiableQuoteTemplate.Manage.referenceDocuments.add',\n edit: 'NegotiableQuoteTemplate.Manage.referenceDocuments.edit',\n remove: 'NegotiableQuoteTemplate.Manage.referenceDocuments.remove',\n noReferenceDocuments: 'NegotiableQuoteTemplate.Manage.referenceDocuments.noReferenceDocuments',\n });\n\n const formatDocumentDisplay = (doc: ReferenceDocument): string => {\n if (doc.identifier) {\n return `${doc.name}, ${doc.identifier}`;\n }\n return `${doc.name} ${doc.url}`;\n };\n\n const handleDocumentClick = (e: Event, url: string) => {\n e.preventDefault();\n window.open(url, '_blank', 'noopener,noreferrer');\n };\n\n return (\n <div\n className={classes(['quote-management-reference-documents-list', className])}\n data-testid=\"reference-documents-list\"\n {...props}\n >\n <div className=\"quote-management-reference-documents-list__content\">\n {documents.map((doc) => (\n <div\n key={doc.uid || doc.url}\n className=\"quote-management-reference-documents-list__document\"\n data-testid={`reference-document-${doc.uid || doc.url}`}\n >\n <a\n href={doc.url}\n onClick={(e) => handleDocumentClick(e, doc.url)}\n className=\"quote-management-reference-documents-list__document-link\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n data-testid={`reference-document-link-${doc.uid || doc.url}`}\n >\n {formatDocumentDisplay(doc)}\n </a>\n {isEditable && (\n <div className=\"quote-management-reference-documents-list__document-actions\">\n <Button\n variant=\"tertiary\"\n onClick={() => onEdit?.(doc)}\n className=\"quote-management-reference-documents-list__edit-button\"\n data-testid={`reference-document-edit-${doc.uid || doc.url}`}\n >\n {dictionary.edit}\n </Button>\n <span className=\"quote-management-reference-documents-list__separator\">|</span>\n <Button\n variant=\"tertiary\"\n onClick={() => onRemove?.(doc)}\n className=\"quote-management-reference-documents-list__remove-button\"\n data-testid={`reference-document-remove-${doc.uid || doc.url}`}\n >\n {dictionary.remove}\n </Button>\n </div>\n )}\n </div>\n ))}\n {isEditable && (\n <Button\n variant=\"tertiary\"\n onClick={onAdd}\n className=\"quote-management-reference-documents-list__add-button\"\n data-testid=\"reference-documents-add-button\"\n >\n + {dictionary.add}\n </Button>\n )}\n {documents.length === 0 && !isEditable && (\n <div className=\"quote-management-reference-documents-list__empty\">\n {dictionary.noReferenceDocuments}\n </div>\n )}\n </div>\n </div>\n );\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 { useMemo, useCallback } from 'preact/compat';\nimport { ReferenceDocument } from '@/quote-management/components';\nimport { ReferenceDocumentLinkInput } from '@/quote-management/api/sendQuoteTemplateForReview/sendQuoteTemplateForReview';\n\nexport interface UseReferenceDocumentLinksParams {\n templateReferenceDocuments?: ReferenceDocument[];\n localReferenceDocuments: ReferenceDocument[];\n}\n\nexport interface UseReferenceDocumentLinksReturn {\n /**\n * Checks if a document exists in the template reference documents.\n * Matches by uid if both documents have it, otherwise matches by url.\n */\n isDocumentInTemplateData: (document: ReferenceDocument) => boolean;\n /**\n * Returns documents from localReferenceDocuments that are not in templateReferenceDocuments.\n */\n getNewDocuments: () => ReferenceDocument[];\n /**\n * Transforms all reference documents to API format.\n */\n getReferenceDocumentLinks: () => ReferenceDocumentLinkInput[];\n /**\n * Indicates if there are unsaved changes (new documents, removed documents, or modified documents).\n */\n hasUnsavedChanges: boolean;\n}\n\n/**\n * Custom hook to manage reference document links logic.\n * Handles document matching, filtering new documents, transformation to API format,\n * and detection of unsaved changes (new, removed, or modified documents).\n * Note: getReferenceDocumentLinks() returns all local reference documents, not just new ones.\n */\nexport const useReferenceDocumentLinks = (\n params: UseReferenceDocumentLinksParams\n): UseReferenceDocumentLinksReturn => {\n const { templateReferenceDocuments, localReferenceDocuments } = params;\n\n /**\n * Helper function to find a matching document in template data for a given document.\n * Matches by uid if both documents have it, otherwise matches by url.\n * Returns the matching template document or undefined if no match is found.\n */\n const findMatchingTemplateDocument = useCallback(\n (document: ReferenceDocument): ReferenceDocument | undefined => {\n if (!templateReferenceDocuments) {\n return undefined;\n }\n return templateReferenceDocuments.find((templateDoc) => {\n // If both documents have uids, match by uid\n if (document.uid && templateDoc.uid) {\n return templateDoc.uid === document.uid;\n }\n // Otherwise, match by URL\n return templateDoc.url === document.url;\n });\n },\n [templateReferenceDocuments]\n );\n\n /**\n * Helper function to check if a document is part of the template data.\n * A document is considered part of template data if:\n * - Its uid exists in templateReferenceDocuments (when uid is available), OR\n * - Its url exists in templateReferenceDocuments (when uid is not available)\n */\n const isDocumentInTemplateData = useCallback(\n (document: ReferenceDocument): boolean => {\n return findMatchingTemplateDocument(document) !== undefined;\n },\n [findMatchingTemplateDocument]\n );\n\n /**\n * Helper function to check if a document has been modified.\n * Compares all properties (name, identifier, url) between a local document and its matching template document.\n * Returns true if any property differs.\n */\n const isDocumentModified = useCallback(\n (localDoc: ReferenceDocument, templateDoc: ReferenceDocument): boolean => {\n // Compare all properties\n return (\n localDoc.name !== templateDoc.name ||\n localDoc.identifier !== templateDoc.identifier ||\n localDoc.url !== templateDoc.url\n );\n },\n []\n );\n\n /**\n * Returns documents from localReferenceDocuments that are not in templateReferenceDocuments.\n */\n const getNewDocuments = useCallback((): ReferenceDocument[] => {\n if (!templateReferenceDocuments) {\n // If no template documents exist, all local documents are new\n return localReferenceDocuments;\n }\n // Filter to only include documents not in template data\n return localReferenceDocuments.filter((doc) => {\n return !templateReferenceDocuments.some((templateDoc) => {\n // If both documents have uids, match by uid\n if (doc.uid && templateDoc.uid) {\n return templateDoc.uid === doc.uid;\n }\n // Otherwise, match by URL\n return templateDoc.url === doc.url;\n });\n });\n }, [templateReferenceDocuments, localReferenceDocuments]);\n\n /**\n * Transforms all reference documents to API format.\n */\n const getReferenceDocumentLinks = useCallback((): ReferenceDocumentLinkInput[] => {\n return localReferenceDocuments.map((doc) => ({\n uid: doc.uid,\n name: doc.name,\n identifier: doc.identifier,\n url: doc.url,\n }));\n }, [localReferenceDocuments]);\n\n /**\n * Checks if there are unsaved changes.\n * Returns true if there are:\n * - New documents: documents in local state that don't exist in template data\n * - Removed documents: documents in template data that don't exist in local state\n * - Modified documents: documents that exist in both but have different properties (name, identifier, or url)\n */\n const hasUnsavedChanges = useMemo(() => {\n if (!templateReferenceDocuments) {\n // If no template documents exist, any documents in local state are unsaved (new)\n return localReferenceDocuments.length > 0;\n }\n\n // Check for new documents: documents in local state not found in template data\n const hasNewDocuments = localReferenceDocuments.some((localDoc) => {\n return findMatchingTemplateDocument(localDoc) === undefined;\n });\n\n if (hasNewDocuments) {\n return true;\n }\n\n // Check for removed documents: documents in template data not found in local state\n const hasRemovedDocuments = templateReferenceDocuments.some((templateDoc) => {\n return !localReferenceDocuments.some((localDoc) => {\n // If both documents have uids, match by uid\n if (localDoc.uid && templateDoc.uid) {\n return localDoc.uid === templateDoc.uid;\n }\n // Otherwise, match by URL\n return localDoc.url === templateDoc.url;\n });\n });\n\n if (hasRemovedDocuments) {\n return true;\n }\n\n // Check for modified documents: documents that match but have different properties\n const hasModifiedDocuments = localReferenceDocuments.some((localDoc) => {\n const matchingTemplateDoc = findMatchingTemplateDocument(localDoc);\n // Defensive code: The falsy branch should be unreachable because we've already checked\n // for new documents above. If a document doesn't have a match, we would have\n // returned true in the hasNewDocuments check. This is kept for safety.\n /* istanbul ignore else */\n if (matchingTemplateDoc) {\n return isDocumentModified(localDoc, matchingTemplateDoc);\n }\n /* istanbul ignore next */\n return false;\n });\n\n return hasModifiedDocuments;\n }, [templateReferenceDocuments, localReferenceDocuments, findMatchingTemplateDocument, isDocumentModified]);\n\n return {\n isDocumentInTemplateData,\n getNewDocuments,\n getReferenceDocumentLinks,\n hasUnsavedChanges,\n };\n};\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 { useState, useCallback } from 'preact/compat';\n\nexport interface UseRenameTemplateParams {\n initialTemplateName?: string;\n templateNameRequiredErrorMessage?: string;\n}\n\nexport interface UseRenameTemplateReturn {\n /**\n * Whether the rename modal is currently open.\n */\n isRenameModalOpen: boolean;\n /**\n * The new template name entered by the user.\n */\n renameTemplateName: string;\n /**\n * The reason for renaming the template.\n */\n renameReason: string;\n /**\n * Error message for rename operation.\n */\n renameError: string;\n /**\n * Error message for template name validation.\n */\n renameTemplateNameError: string;\n /**\n * Success message for rename operation.\n */\n renameSuccess: string;\n /**\n * Opens the rename modal and initializes state with the current template name.\n */\n handleRenameClick: (currentTemplateName?: string) => void;\n /**\n * Closes the rename modal and resets all state.\n */\n handleRenameClose: () => void;\n /**\n * Updates the template name and clears any name-related errors.\n */\n handleRenameTemplateNameChange: (value: string) => void;\n /**\n * Updates the rename reason.\n */\n handleRenameReasonChange: (value: string) => void;\n /**\n * Validates and saves the rename. Closes the modal if validation passes.\n * Does not make an API call - rename is tracked locally and included when submitting for review.\n */\n handleRenameSave: () => boolean;\n /**\n * Resets rename state (useful after successful submission).\n */\n resetRenameState: () => void;\n}\n\n/**\n * Custom hook to manage quote template rename functionality.\n * Handles state management for the rename modal, validation, and tracking rename changes.\n * Note: This hook does not make API calls. The rename is tracked locally and should be\n * included when calling sendQuoteTemplateForReview.\n */\nexport const useRenameTemplate = (\n params: UseRenameTemplateParams = {}\n): UseRenameTemplateReturn => {\n const { initialTemplateName, templateNameRequiredErrorMessage = 'Template name is required' } = params;\n\n const [isRenameModalOpen, setIsRenameModalOpen] = useState<boolean>(false);\n const [renameTemplateName, setRenameTemplateName] = useState<string>('');\n const [renameReason, setRenameReason] = useState<string>('');\n const [renameError, setRenameError] = useState<string>('');\n const [renameTemplateNameError, setRenameTemplateNameError] = useState<string>('');\n const [renameSuccess, setRenameSuccess] = useState<string>('');\n\n const handleRenameClick = useCallback((currentTemplateName?: string) => {\n setRenameTemplateName(currentTemplateName || initialTemplateName || '');\n setRenameReason('');\n setRenameError('');\n setRenameTemplateNameError('');\n setRenameSuccess('');\n setIsRenameModalOpen(true);\n }, [initialTemplateName]);\n\n const handleRenameClose = useCallback(() => {\n setIsRenameModalOpen(false);\n setRenameTemplateName('');\n setRenameReason('');\n setRenameError('');\n setRenameTemplateNameError('');\n setRenameSuccess('');\n }, []);\n\n const handleRenameTemplateNameChange = useCallback((value: string) => {\n setRenameTemplateName(value);\n if (value.trim()) {\n setRenameTemplateNameError('');\n }\n }, []);\n\n const handleRenameReasonChange = useCallback((value: string) => {\n setRenameReason(value);\n }, []);\n\n const handleRenameSave = useCallback((): boolean => {\n // Validate template name\n if (!renameTemplateName.trim()) {\n setRenameTemplateNameError(templateNameRequiredErrorMessage);\n return false;\n }\n\n // Clear any previous errors\n setRenameError('');\n setRenameTemplateNameError('');\n \n // Close modal - rename is tracked in state and will be included when submitting for review\n setIsRenameModalOpen(false);\n return true;\n }, [renameTemplateName, templateNameRequiredErrorMessage]);\n\n const resetRenameState = useCallback(() => {\n setRenameTemplateName('');\n setRenameReason('');\n setRenameError('');\n setRenameTemplateNameError('');\n setRenameSuccess('');\n }, []);\n\n return {\n isRenameModalOpen,\n renameTemplateName,\n renameReason,\n renameError,\n renameTemplateNameError,\n renameSuccess,\n handleRenameClick,\n handleRenameClose,\n handleRenameTemplateNameChange,\n handleRenameReasonChange,\n handleRenameSave,\n resetRenameState,\n };\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 {\n HTMLAttributes,\n useCallback,\n useEffect,\n useMemo,\n useState,\n createPortal,\n useRef,\n} from 'preact/compat';\nimport {\n Container,\n Slot,\n SlotProps,\n} from '@adobe-commerce/elsie/lib';\nimport { formattedDate } from '@/quote-management/utils/dateUtils';\nimport { events } from '@adobe-commerce/event-bus';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport {\n Button,\n TextArea,\n InLineAlert,\n Icon,\n} from '@adobe-commerce/elsie/components';\nimport { NegotiableQuoteTemplateModel, NegotiableQuoteTemplateStatus } from '@/quote-management/data/models/negotiable-quote-template-model';\nimport {\n TabbedContent,\n ActionsBar,\n ConfirmationModal,\n ManageNegotiableQuoteTemplate as ManageNegotiableQuoteTemplateComponent,\n ManageNegotiableQuoteTemplateProps as ManageNegotiableQuoteTemplateComponentProps,\n ReferenceDocumentsList,\n ReferenceDocumentFormModal,\n ReferenceDocument,\n} from '@/quote-management/components';\nimport {\n ItemsQuotedTemplate,\n QuoteTemplateCommentsList,\n QuoteTemplateHistoryLog,\n ShippingAddressDisplay,\n} from '@/quote-management/containers';\nimport {\n WarningFilled,\n CheckWithCircle,\n Edit,\n} from '@adobe-commerce/elsie/icons';\nimport {\n sendQuoteTemplateForReview,\n deleteQuoteTemplate,\n cancelQuoteTemplate,\n generateQuoteFromTemplate,\n openQuoteTemplate,\n acceptQuoteTemplate,\n ReferenceDocumentLinkInput,\n} from '@/quote-management/api';\nimport { useReferenceDocumentLinks } from '@/quote-management/hooks/useReferenceDocumentLinks';\nimport { useRenameTemplate } from '@/quote-management/hooks/useRenameTemplate';\nimport { RenameQuoteModal } from '@/quote-management/components/RenameQuoteModal';\n\nexport interface ManageNegotiableQuoteTemplateProps\n extends HTMLAttributes<HTMLDivElement> {\n onActionsButtonClick?: (action: string) => void;\n onSendForReview?: (params: {\n templateData?: NegotiableQuoteTemplateModel;\n name?: string;\n comment?: string;\n referenceDocumentLinks?: ReferenceDocumentLinkInput[];\n }) => void;\n slots?: {\n TemplateName?: SlotProps<{\n templateName?: string;\n templateData?: NegotiableQuoteTemplateModel;\n templateDisplayName?: string;\n isRenameDisabled?: boolean;\n }>;\n TemplateStatus?: SlotProps<{\n templateStatus?: string;\n templateData?: NegotiableQuoteTemplateModel;\n }>;\n Banner?: SlotProps<{\n templateData?: NegotiableQuoteTemplateModel;\n }>;\n Details?: SlotProps<{\n templateData?: NegotiableQuoteTemplateModel;\n }>;\n ActionBar?: SlotProps<{\n templateData?: NegotiableQuoteTemplateModel;\n }>;\n ReferenceDocuments?: SlotProps<{\n templateData?: NegotiableQuoteTemplateModel;\n referenceDocuments?: ReferenceDocument[];\n isEditable?: boolean;\n onAddDocument?: () => void;\n onEditDocument?: (document: ReferenceDocument) => void;\n onRemoveDocument?: (document: ReferenceDocument) => void;\n referenceDocumentsTitle?: string;\n }>;\n ItemsTable?: SlotProps<{\n templateData?: NegotiableQuoteTemplateModel;\n }>;\n ItemsQuotedTab?: SlotProps<{\n templateData?: NegotiableQuoteTemplateModel;\n }>;\n CommentsTab?: SlotProps<{\n templateData?: NegotiableQuoteTemplateModel;\n }>;\n HistoryLogTab?: SlotProps<{\n templateData?: NegotiableQuoteTemplateModel;\n }>;\n CommentsTitle?: SlotProps<{\n templateData?: NegotiableQuoteTemplateModel;\n }>;\n Comments?: SlotProps<{\n templateData?: NegotiableQuoteTemplateModel;\n }>;\n HistoryLogTitle?: SlotProps<{\n templateData?: NegotiableQuoteTemplateModel;\n }>;\n HistoryLog?: SlotProps<{\n templateData?: NegotiableQuoteTemplateModel;\n }>;\n Footer?: SlotProps<{\n templateData?: NegotiableQuoteTemplateModel;\n comment?: string;\n isSubmitting?: boolean;\n referenceDocuments?: ReferenceDocument[];\n hasUnsavedChanges?: boolean;\n handleSendForReview: () => void;\n showAcceptButton?: boolean;\n renameTemplateName?: string;\n renameReason?: string;\n }>;\n ShippingInformationTitle?: SlotProps<{\n templateData?: NegotiableQuoteTemplateModel;\n }>;\n ShippingInformation?: SlotProps<{\n templateData?: NegotiableQuoteTemplateModel;\n loading?: boolean;\n setLoading?: (loading: boolean) => void;\n }>;\n };\n}\n\nexport const ManageNegotiableQuoteTemplate: Container<ManageNegotiableQuoteTemplateProps> = ({\n slots,\n onActionsButtonClick,\n onSendForReview,\n ...props\n}) => {\n const [templateData, setTemplateData] = useState<NegotiableQuoteTemplateModel | undefined>(undefined);\n const [loading, setLoading] = useState<boolean>(true);\n const [comment, setComment] = useState<string>('');\n const [isSubmitting, setIsSubmitting] = useState<boolean>(false);\n const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState<boolean>(false);\n const [deleteError, setDeleteError] = useState<string | null>(null);\n const [deleteSuccess, setDeleteSuccess] = useState<boolean>(false);\n const [isCancelDialogOpen, setIsCancelDialogOpen] = useState<boolean>(false);\n const [cancelError, setCancelError] = useState<string | null>(null);\n const [cancelSuccess, setCancelSuccess] = useState<boolean>(false);\n const [referenceDocuments, setReferenceDocuments] = useState<ReferenceDocument[]>([]);\n const [isDocumentModalOpen, setIsDocumentModalOpen] = useState<boolean>(false);\n const [editingDocument, setEditingDocument] = useState<ReferenceDocument | undefined>(undefined);\n const [documentModalErrorMessage, setDocumentModalErrorMessage] = useState<string | null>(null);\n const [showGenerateQuoteModal, setShowGenerateQuoteModal] = useState<boolean>(false);\n const [isGeneratingQuote, setIsGeneratingQuote] = useState<boolean>(false);\n const [generateQuoteSuccessMessage, setGenerateQuoteSuccessMessage] = useState<string>('');\n const [generateQuoteErrorMessage, setGenerateQuoteErrorMessage] = useState<string>('');\n const [showAcceptModal, setShowAcceptModal] = useState<boolean>(false);\n const [isAccepting, setIsAccepting] = useState<boolean>(false);\n const [acceptSuccessMessage, setAcceptSuccessMessage] = useState<string>('');\n const [acceptErrorMessage, setAcceptErrorMessage] = useState<string>('');\n const hasAutoOpened = useRef<boolean>(false);\n\n // Use hook for reference document links logic\n const {\n getReferenceDocumentLinks,\n hasUnsavedChanges: hasUnsavedReferenceDocuments,\n } = useReferenceDocumentLinks({\n templateReferenceDocuments: templateData?.referenceDocuments,\n localReferenceDocuments: referenceDocuments,\n });\n\n const dictionary = useText({\n createdLabel: 'NegotiableQuoteTemplate.Manage.createdLabel',\n salesRepLabel: 'NegotiableQuoteTemplate.Manage.salesRepLabel',\n expiresLabel: 'NegotiableQuoteTemplate.Manage.expiresLabel',\n templateIdLabel: 'NegotiableQuoteTemplate.Manage.templateIdLabel',\n actionsLabel: 'NegotiableQuoteTemplate.Manage.actionsLabel',\n referenceDocumentsTitle: 'NegotiableQuoteTemplate.Manage.referenceDocuments.title',\n commentsTitle: 'NegotiableQuoteTemplate.Manage.comments.title',\n historyLogTitle: 'NegotiableQuoteTemplate.Manage.historyLog.title',\n itemsQuotedTab: 'NegotiableQuoteTemplate.Manage.tabs.itemsQuoted',\n commentsTab: 'NegotiableQuoteTemplate.Manage.tabs.comments',\n historyLogTab: 'NegotiableQuoteTemplate.Manage.tabs.historyLog',\n templateCommentsPlaceholder: 'NegotiableQuoteTemplate.Manage.templateComments.placeholder',\n sendForReview: 'NegotiableQuoteTemplate.Manage.actionButtons.sendForReview',\n delete: 'NegotiableQuoteTemplate.Manage.actionButtons.delete',\n cancel: 'NegotiableQuoteTemplate.Manage.actionButtons.cancel',\n confirmationModalDeleteTitle: 'NegotiableQuoteTemplate.Manage.confirmationModal.delete.title',\n confirmationModalDeleteMessage: 'NegotiableQuoteTemplate.Manage.confirmationModal.delete.message',\n confirmationModalDeleteConfirm: 'NegotiableQuoteTemplate.Manage.confirmationModal.delete.confirm',\n confirmationModalDeleteErrorHeading: 'NegotiableQuoteTemplate.Manage.confirmationModal.delete.errorHeading',\n confirmationModalDeleteErrorFallback: 'NegotiableQuoteTemplate.Manage.confirmationModal.delete.errorFallback',\n confirmationModalDeleteSuccessHeading: 'NegotiableQuoteTemplate.Manage.confirmationModal.delete.successHeading',\n confirmationModalDeleteSuccessDescription: 'NegotiableQuoteTemplate.Manage.confirmationModal.delete.successDescription',\n confirmationModalCancelTitle: 'NegotiableQuoteTemplate.Manage.confirmationModal.cancelTemplate.title',\n confirmationModalCancelMessage: 'NegotiableQuoteTemplate.Manage.confirmationModal.cancelTemplate.message',\n confirmationModalCancelConfirm: 'NegotiableQuoteTemplate.Manage.confirmationModal.cancelTemplate.confirm',\n confirmationModalCancelErrorHeading: 'NegotiableQuoteTemplate.Manage.confirmationModal.cancelTemplate.errorHeading',\n confirmationModalCancelErrorFallback: 'NegotiableQuoteTemplate.Manage.confirmationModal.cancelTemplate.errorFallback',\n confirmationModalCancelSuccessHeading: 'NegotiableQuoteTemplate.Manage.confirmationModal.cancelTemplate.successHeading',\n confirmationModalCancelSuccessDescription: 'NegotiableQuoteTemplate.Manage.confirmationModal.cancelTemplate.successDescription',\n confirmationModalCancel: 'NegotiableQuoteTemplate.Manage.confirmationModal.cancel',\n accept: 'NegotiableQuoteTemplate.Manage.actionButtons.accept',\n generateQuote: 'NegotiableQuoteTemplate.Manage.actionButtons.generateQuote',\n generateQuoteModalTitle: 'NegotiableQuoteTemplate.Manage.actionButtons.generateQuote',\n generateQuoteModalMessage: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.message',\n generateQuoteModalCancel: 'NegotiableQuoteTemplate.Manage.confirmationModal.cancel',\n generateQuoteModalConfirm: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.confirm',\n generateQuoteModalConfirmLoading: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.confirmLoading',\n generateQuoteModalSuccessHeading: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.successHeading',\n generateQuoteSuccessMessage: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.successDescription',\n generateQuoteModalErrorHeading: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.errorHeading',\n generateQuoteErrorFallback: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.errorFallback',\n acceptModalTitle: 'NegotiableQuoteTemplate.Manage.confirmationModal.accept.title',\n acceptModalMessage: 'NegotiableQuoteTemplate.Manage.confirmationModal.accept.message',\n acceptModalCancel: 'NegotiableQuoteTemplate.Manage.confirmationModal.cancel',\n acceptModalConfirm: 'NegotiableQuoteTemplate.Manage.confirmationModal.accept.confirm',\n acceptModalConfirmLoading: 'NegotiableQuoteTemplate.Manage.confirmationModal.accept.confirmLoading',\n acceptModalSuccessHeading: 'NegotiableQuoteTemplate.Manage.confirmationModal.accept.successHeading',\n acceptSuccessMessage: 'NegotiableQuoteTemplate.Manage.confirmationModal.accept.successDescription',\n acceptModalErrorHeading: 'NegotiableQuoteTemplate.Manage.confirmationModal.accept.errorHeading',\n acceptErrorFallback: 'NegotiableQuoteTemplate.Manage.confirmationModal.accept.errorFallback',\n documentDuplicateUidError: 'NegotiableQuoteTemplate.Manage.referenceDocuments.form.duplicateUidError',\n renameTitle: 'NegotiableQuoteTemplate.Manage.rename.title',\n renameTemplateNameLabel: 'NegotiableQuoteTemplate.Manage.rename.templateNameLabel',\n renameReasonLabel: 'NegotiableQuoteTemplate.Manage.rename.reasonLabel',\n renameButton: 'NegotiableQuoteTemplate.Manage.rename.renameButton',\n renameCancelButton: 'NegotiableQuoteTemplate.Manage.rename.cancelButton',\n renameErrorHeading: 'NegotiableQuoteTemplate.Manage.rename.errorHeading',\n renameTemplateNameRequired: 'NegotiableQuoteTemplate.Manage.rename.templateNameRequired',\n renameErrorDefault: 'NegotiableQuoteTemplate.Manage.rename.errorDefault',\n renameSuccessHeading: 'NegotiableQuoteTemplate.Manage.rename.successHeading',\n renameSuccessMessage: 'NegotiableQuoteTemplate.Manage.rename.successMessage',\n shippingInformationTitle: 'NegotiableQuoteTemplate.Manage.shippingInformation.title',\n unsavedChangesWarningHeading: 'NegotiableQuoteTemplate.Manage.unsavedChangesWarningHeading',\n unsavedChangesWarningMessage: 'NegotiableQuoteTemplate.Manage.unsavedChangesWarningMessage',\n });\n\n // Use hook for rename template logic (after dictionary is defined)\n const {\n isRenameModalOpen,\n renameTemplateName,\n renameReason,\n renameError,\n renameTemplateNameError,\n renameSuccess,\n handleRenameClick,\n handleRenameClose,\n handleRenameTemplateNameChange,\n handleRenameReasonChange,\n handleRenameSave,\n resetRenameState,\n } = useRenameTemplate({\n initialTemplateName: templateData?.name,\n templateNameRequiredErrorMessage: dictionary.renameTemplateNameRequired,\n });\n\n // Check if there are unsaved rename changes\n const hasUnsavedRenameChanges = useMemo(() => {\n // A rename change exists when renameTemplateName is set and differs from current template name\n return renameTemplateName !== '' && renameTemplateName !== templateData?.name;\n }, [renameTemplateName, templateData?.name]);\n\n // Combine unsaved changes from reference documents and rename\n const hasUnsavedChanges = useMemo(() => {\n return hasUnsavedReferenceDocuments || hasUnsavedRenameChanges;\n }, [hasUnsavedReferenceDocuments, hasUnsavedRenameChanges]);\n\n /* Event listeners */\n useEffect(() => {\n const quoteTemplateDataEvent = events.on('quote-management/quote-template-data', (data) => {\n if (data.quoteTemplate) {\n setTemplateData(data.quoteTemplate);\n setLoading(false);\n // Reset comment and submitting state after successful update\n setComment('');\n setIsSubmitting(false);\n // Update reference documents from template data\n setReferenceDocuments(data.quoteTemplate.referenceDocuments || []);\n // Reset rename state after successful submission\n resetRenameState();\n }\n }, { eager: true });\n\n return () => quoteTemplateDataEvent?.off();\n }, [resetRenameState]);\n\n // Initialize reference documents when template data changes\n useEffect(() => {\n if (templateData?.referenceDocuments) {\n setReferenceDocuments(templateData.referenceDocuments);\n }\n }, [templateData?.referenceDocuments]);\n\n // Auto-open template if status is \"Updated\"\n useEffect(() => {\n if (templateData && templateData.status === NegotiableQuoteTemplateStatus.UPDATED && !hasAutoOpened.current) {\n hasAutoOpened.current = true;\n const openTemplate = async () => {\n try {\n await openQuoteTemplate({ templateId: templateData.id });\n // The event listener will handle updating state\n } catch (error) {\n console.error('Failed to auto-open quote template:', error);\n // Silently fail - template data is still available for viewing\n }\n };\n openTemplate();\n }\n }, [templateData]);\n\n /**\n * Handlers\n */\n const handleDeleteCancel = useCallback(() => {\n setIsDeleteDialogOpen(false);\n setDeleteError(null);\n setDeleteSuccess(false);\n }, []);\n\n const handleDeleteConfirm = useCallback(async () => {\n /* istanbul ignore next */ // If there is no template data, the button should not be enabled or even rendered\n if (!templateData?.id) {\n return;\n }\n\n setDeleteError(null);\n setDeleteSuccess(false);\n\n try {\n await deleteQuoteTemplate({\n templateId: templateData.id,\n });\n setDeleteSuccess(true);\n // Close modal after a delay to show success message\n setTimeout(() => {\n setIsDeleteDialogOpen(false);\n setDeleteSuccess(false);\n }, 2000);\n } catch (error) {\n const errorMessage = (error as Error).message || dictionary.confirmationModalDeleteErrorFallback;\n setDeleteError(errorMessage);\n }\n }, [templateData, dictionary.confirmationModalDeleteErrorFallback]);\n\n const handleDismissError = useCallback(() => {\n setDeleteError(null);\n }, []);\n\n const handleDismissSuccess = useCallback(() => {\n setDeleteSuccess(false);\n }, []);\n\n const handleCancelCancel = useCallback(() => {\n setIsCancelDialogOpen(false);\n setCancelError(null);\n setCancelSuccess(false);\n }, []);\n\n const handleCancelConfirm = useCallback(async () => {\n /* istanbul ignore next */ // If there is no template data, the button should not be enabled or even rendered\n if (!templateData?.id) {\n return;\n }\n\n setCancelError(null);\n setCancelSuccess(false);\n\n try {\n await cancelQuoteTemplate({\n templateId: templateData.id,\n });\n setCancelSuccess(true);\n // Close modal after a delay to show success message\n setTimeout(() => {\n setIsCancelDialogOpen(false);\n setCancelSuccess(false);\n }, 2000);\n } catch (error) {\n const errorMessage = (error as Error).message || dictionary.confirmationModalCancelErrorFallback;\n setCancelError(errorMessage);\n }\n }, [templateData, dictionary.confirmationModalCancelErrorFallback]);\n\n const handleDismissCancelError = useCallback(() => {\n setCancelError(null);\n }, []);\n\n const handleDismissCancelSuccess = useCallback(() => {\n setCancelSuccess(false);\n }, []);\n\n const handleSendForReview = useCallback(async () => {\n // Get all reference document links\n const referenceDocumentLinks = getReferenceDocumentLinks();\n\n // Combine comment with rename reason if rename reason exists\n const combinedComment = [renameReason.trim(), comment.trim()]\n .filter(Boolean)\n .join('\\n\\n')\n .trim() || undefined;\n\n // Include renamed name if it differs from current template name\n const templateName = renameTemplateName && renameTemplateName !== templateData?.name\n ? renameTemplateName\n : undefined;\n\n // If override prop is provided, use it instead of the API\n if (onSendForReview) {\n onSendForReview({\n templateData,\n name: templateName,\n comment: combinedComment,\n referenceDocumentLinks,\n });\n return;\n }\n // Otherwise, use the sendQuoteTemplateForReview API\n setIsSubmitting(true);\n\n try {\n await sendQuoteTemplateForReview({\n templateId: templateData!.id, // the button should be disabled if templateData is null\n name: templateName,\n comment: combinedComment,\n referenceDocumentLinks: referenceDocumentLinks.length > 0 ? referenceDocumentLinks : undefined,\n });\n // The quote-template-data event will handle updating state\n } catch (error) {\n console.error('Failed to send quote template for review:', error);\n setIsSubmitting(false);\n // TODO: Show error notification to user\n }\n }, [templateData, onSendForReview, comment, renameReason, renameTemplateName, getReferenceDocumentLinks]);\n\n const handleAddDocument = useCallback(() => {\n setEditingDocument(undefined);\n setDocumentModalErrorMessage(null);\n setIsDocumentModalOpen(true);\n }, []);\n\n const handleEditDocument = useCallback((document: ReferenceDocument) => {\n setEditingDocument(document);\n setDocumentModalErrorMessage(null);\n setIsDocumentModalOpen(true);\n }, []);\n\n const handleRemoveDocument = useCallback((document: ReferenceDocument) => {\n setReferenceDocuments((prev) => prev.filter((doc) => doc.uid !== document.uid || doc.url !== document.url));\n }, []);\n\n const handleSaveDocument = useCallback((document: ReferenceDocument) => {\n // Clear any previous error messages\n setDocumentModalErrorMessage(null);\n\n if (editingDocument) {\n // Update existing document\n setReferenceDocuments((prev) =>\n prev.map((doc) =>\n doc.identifier === editingDocument.identifier\n ? document\n : doc\n )\n );\n } else {\n // Add new document\n setReferenceDocuments((prev) => [...prev, document]);\n }\n setIsDocumentModalOpen(false);\n setEditingDocument(undefined);\n }, [editingDocument]);\n\n const handleDocumentModalClose = useCallback(() => {\n setIsDocumentModalOpen(false);\n setEditingDocument(undefined);\n setDocumentModalErrorMessage(null);\n }, []);\n\n // Generate quote handler\n const handleGenerateQuote = useCallback(async () => {\n setIsGeneratingQuote(true);\n setGenerateQuoteErrorMessage('');\n setGenerateQuoteSuccessMessage('');\n try {\n await generateQuoteFromTemplate({ templateId: templateData!.id });\n // Show success message\n setGenerateQuoteSuccessMessage(dictionary.generateQuoteSuccessMessage);\n } catch (error) {\n console.error('Failed to generate quote from template:', error);\n const errorMessage = error instanceof Error ? error.message : dictionary.generateQuoteErrorFallback;\n setGenerateQuoteErrorMessage(errorMessage);\n } finally {\n setIsGeneratingQuote(false);\n }\n }, [templateData, dictionary.generateQuoteSuccessMessage, dictionary.generateQuoteErrorFallback]);\n\n const handleGenerateQuoteModalCancel = useCallback(() => {\n setShowGenerateQuoteModal(false);\n setGenerateQuoteErrorMessage('');\n setGenerateQuoteSuccessMessage('');\n }, []);\n\n // Accept quote template handler\n const handleAcceptQuote = useCallback(async () => {\n setIsAccepting(true);\n setAcceptErrorMessage('');\n setAcceptSuccessMessage('');\n try {\n await acceptQuoteTemplate({ templateId: templateData!.id });\n // Show success message\n setAcceptSuccessMessage(dictionary.acceptSuccessMessage);\n } catch (error) {\n console.error('Failed to accept quote template:', error);\n const errorMessage = error instanceof Error ? error.message : dictionary.acceptErrorFallback;\n setAcceptErrorMessage(errorMessage);\n } finally {\n setIsAccepting(false);\n }\n }, [templateData, dictionary.acceptSuccessMessage, dictionary.acceptErrorFallback]);\n\n const handleAcceptModalCancel = useCallback(() => {\n setShowAcceptModal(false);\n setAcceptErrorMessage('');\n setAcceptSuccessMessage('');\n }, []);\n\n /**\n * VNodes for the ManageNegotiableQuoteTemplate component\n */\n\n // Template name\n const templateName = useMemo(() => {\n // Determine if rename is disabled based on canSendForReview permission\n const isRenameDisabled = !templateData?.canSendForReview;\n\n // Use the renamed template name if it exists\n const templateDisplayName = renameTemplateName || templateData?.name;\n\n return (\n <Slot\n name=\"TemplateName\"\n slot={slots?.TemplateName}\n context={{ templateName: templateData?.name, templateData, templateDisplayName, isRenameDisabled }}\n >\n <div className=\"quote-management-manage-negotiable-quote-template__template-name-wrapper\">\n <h1\n data-testid=\"template-name\"\n className=\"quote-management-manage-negotiable-quote-template__template-name-title\"\n >\n {templateDisplayName}\n </h1>\n <button\n onClick={() => handleRenameClick(templateDisplayName)}\n disabled={isRenameDisabled}\n data-testid=\"rename-template-button\"\n className=\"quote-management-manage-negotiable-quote-template__rename-button\"\n aria-label=\"Rename template\"\n >\n <Edit />\n </button>\n </div>\n </Slot>\n );\n }, [slots?.TemplateName, templateData, handleRenameClick, renameTemplateName]);\n\n // Template Status\n const templateStatus = useMemo(() => {\n return (\n <Slot\n name=\"TemplateStatus\"\n slot={slots?.TemplateStatus}\n context={{ templateStatus: templateData?.status, templateData }}\n >\n <div data-testid=\"template-status\">{templateData?.status}</div>\n </Slot>\n );\n }, [slots?.TemplateStatus, templateData]);\n\n // Details\n const details = useMemo(() => {\n if (!templateData) {\n return;\n }\n\n // Format expiration date if it exists\n const expirationDate = templateData.expirationDate ? formattedDate(templateData.expirationDate, 'short') : undefined;\n\n return (\n <Slot name=\"Details\" slot={slots?.Details} context={{ templateData }}>\n {/* template id data */}\n <div className=\"quote-management-manage-negotiable-quote-template__detail\">\n <span\n className=\"quote-management-manage-negotiable-quote-template__detail-title\"\n data-testid=\"template-id-label\"\n >\n {dictionary.templateIdLabel}\n </span>\n <span\n className=\"quote-management-manage-negotiable-quote-template__detail-content\"\n data-testid=\"template-id-value\"\n >\n {templateData.id}\n </span>\n </div>\n\n <div className=\"quote-management-manage-negotiable-quote-template__detail\">\n <span\n className=\"quote-management-manage-negotiable-quote-template__detail-title\"\n data-testid=\"created-label\"\n >\n {dictionary.createdLabel}\n </span>\n <span\n className=\"quote-management-manage-negotiable-quote-template__detail-content\"\n data-testid=\"created-value\"\n >\n {formattedDate(templateData.createdAt, 'short')} (\n {templateData.buyer.firstname} {templateData.buyer.lastname})\n </span>\n </div>\n\n <div className=\"quote-management-manage-negotiable-quote-template__detail\">\n <span\n className=\"quote-management-manage-negotiable-quote-template__detail-title\"\n data-testid=\"sales-rep-label\"\n >\n {dictionary.salesRepLabel}\n </span>\n <span\n className=\"quote-management-manage-negotiable-quote-template__detail-content\"\n data-testid=\"sales-rep-value\"\n >\n {templateData.salesRepName}\n </span>\n </div>\n\n {expirationDate && (\n <div className=\"quote-management-manage-negotiable-quote-template__detail\">\n <span\n className=\"quote-management-manage-negotiable-quote-template__detail-title\"\n data-testid=\"expires-label\"\n >\n {dictionary.expiresLabel}\n </span>\n <span\n className=\"quote-management-manage-negotiable-quote-template__detail-content\"\n data-testid=\"expires-value\"\n >\n {expirationDate}\n </span>\n </div>\n )}\n </Slot>\n );\n }, [slots?.Details, dictionary, templateData]);\n\n\n // Action bar\n const buttons: { label: string; value: string; disabled?: boolean }[] =\n useMemo(() => {\n return [\n {\n label: dictionary.generateQuote,\n value: 'generateQuote',\n disabled: !templateData?.canGenerateQuoteFromTemplate,\n },\n ];\n }, [dictionary, templateData?.canGenerateQuoteFromTemplate]);\n\n const actionBar = useMemo(() => {\n const handleActionsButtonClick = (action: string) => {\n switch (action) {\n case 'generateQuote':\n setShowGenerateQuoteModal(true);\n setGenerateQuoteErrorMessage(''); // Clear modal errors\n setGenerateQuoteSuccessMessage(''); // Clear modal success messages\n onActionsButtonClick?.(action);\n break;\n }\n };\n\n return (\n <Slot\n name=\"ActionBar\"\n slot={slots?.ActionBar}\n context={{ templateData }}\n >\n <ActionsBar\n dropdownPlaceholder={dictionary.actionsLabel}\n dropdownOptions={[]}\n buttons={buttons.map((button) => (\n <Button\n key={button.value}\n variant=\"tertiary\"\n onClick={() => handleActionsButtonClick(button.value)}\n data-testid={`actions-bar-${button.value}-button`}\n data-action={button.value}\n disabled={button.disabled}\n >\n {button.label}\n </Button>\n ))}\n />\n </Slot>\n );\n }, [\n buttons,\n dictionary,\n slots?.ActionBar,\n templateData,\n onActionsButtonClick,\n ]);\n\n // Reference documents\n const isEditable = useMemo(() => {\n const status = templateData?.status as string;\n return status === 'Draft' || status === 'Open';\n }, [templateData?.status]);\n\n\n const referenceDocumentsNode = useMemo(() => {\n const shouldShowTitle = referenceDocuments.length > 0 || isEditable;\n const title = shouldShowTitle ? dictionary.referenceDocumentsTitle : undefined;\n\n return (\n <Slot\n name=\"ReferenceDocuments\"\n slot={slots?.ReferenceDocuments}\n context={{ templateData, referenceDocuments, isEditable, onAddDocument: handleAddDocument, onEditDocument: handleEditDocument, onRemoveDocument: handleRemoveDocument, referenceDocumentsTitle: dictionary.referenceDocumentsTitle }}\n >\n <div data-testid=\"reference-documents\">\n {shouldShowTitle && <h2>{title}</h2>}\n <ReferenceDocumentsList\n documents={referenceDocuments}\n isEditable={isEditable}\n onAdd={handleAddDocument}\n onEdit={handleEditDocument}\n onRemove={handleRemoveDocument}\n />\n </div>\n </Slot>\n );\n }, [slots?.ReferenceDocuments, dictionary, templateData, referenceDocuments, isEditable, handleAddDocument, handleEditDocument, handleRemoveDocument]);\n\n // Shipping information title\n const shippingInformationTitle = useMemo(() => {\n return (\n <Slot\n name=\"ShippingInformationTitle\"\n slot={slots?.ShippingInformationTitle}\n context={{ templateData }}\n >\n <h2>{dictionary.shippingInformationTitle}</h2>\n </Slot>\n );\n }, [slots?.ShippingInformationTitle, templateData, dictionary]);\n\n // Shipping information\n const shippingInformation = useMemo(() => {\n return (\n <Slot\n name=\"ShippingInformation\"\n slot={slots?.ShippingInformation}\n context={{ templateData, loading, setLoading }}\n >\n <ShippingAddressDisplay\n shippingAddress={templateData?.shippingAddresses?.[0]}\n loading={loading}\n data-testid=\"manage-template-shipping-address\"\n />\n </Slot>\n );\n }, [slots?.ShippingInformation, templateData, loading, setLoading]);\n\n // Items table (using TabbedContent with ItemsQuoted)\n const itemsTable = useMemo(() => {\n return (\n <Slot\n name=\"ItemsTable\"\n slot={slots?.ItemsTable}\n context={{ templateData }}\n >\n <TabbedContent\n tabs={\n new Map([\n ['items-quoted', dictionary.itemsQuotedTab],\n ['comments', dictionary.commentsTab],\n ['history-log', dictionary.historyLogTab],\n ])\n }\n tabsContent={\n new Map([\n [\n 'items-quoted',\n <Slot\n key=\"items-quoted\"\n name=\"ItemsQuotedTab\"\n slot={slots?.ItemsQuotedTab}\n context={{ templateData }}\n >\n <ItemsQuotedTemplate templateData={templateData} />\n </Slot>,\n ],\n [\n 'comments',\n <Slot\n key=\"comments\"\n name=\"CommentsTab\"\n slot={slots?.CommentsTab}\n context={{ templateData }}\n >\n <QuoteTemplateCommentsList templateData={templateData} />\n </Slot>,\n ],\n [\n 'history-log',\n <Slot\n key=\"history-log\"\n name=\"HistoryLogTab\"\n slot={slots?.HistoryLogTab}\n context={{ templateData }}\n >\n <QuoteTemplateHistoryLog templateData={templateData} />\n </Slot>,\n ],\n ])\n }\n />\n </Slot>\n );\n }, [\n slots?.ItemsTable,\n slots?.ItemsQuotedTab,\n slots?.CommentsTab,\n slots?.HistoryLogTab,\n dictionary,\n templateData,\n ]);\n\n // Comments title\n const commentsTitle = useMemo(() => {\n return (\n <Slot\n name=\"CommentsTitle\"\n slot={slots?.CommentsTitle}\n context={{ templateData }}\n >\n <h2>{dictionary.commentsTitle}</h2>\n </Slot>\n );\n }, [slots?.CommentsTitle, dictionary, templateData]);\n\n // Comments\n const comments = useMemo(() => {\n return (\n <Slot\n name=\"Comments\"\n slot={slots?.Comments}\n context={{ templateData }}\n >\n <TextArea\n name=\"templateComments\"\n placeholder={dictionary.templateCommentsPlaceholder}\n rows={3}\n value={comment}\n onInput={(e) => {\n setComment((e.target as HTMLTextAreaElement).value);\n }}\n disabled={!templateData?.canSendForReview || isSubmitting}\n />\n </Slot>\n );\n }, [slots?.Comments, dictionary, templateData, comment, isSubmitting]);\n\n\n // Unsaved changes warning banner\n const unsavedChangesBanner = useMemo(\n () =>\n hasUnsavedChanges ? (\n <InLineAlert\n type=\"warning\"\n variant=\"primary\"\n icon={<WarningFilled />}\n heading={dictionary.unsavedChangesWarningHeading}\n description={dictionary.unsavedChangesWarningMessage}\n data-testid=\"unsaved-changes-warning-alert\"\n />\n ) : undefined,\n [hasUnsavedChanges, dictionary.unsavedChangesWarningHeading, dictionary.unsavedChangesWarningMessage]\n );\n\n // Footer\n const footer = useMemo(() => {\n const showAcceptButton = templateData?.status === NegotiableQuoteTemplateStatus.OPEN && templateData?.canAccept;\n\n return (\n <Slot\n name=\"Footer\"\n slot={slots?.Footer}\n context={{ templateData, comment, isSubmitting, referenceDocuments, hasUnsavedChanges, handleSendForReview, showAcceptButton, renameTemplateName, renameReason}}\n >\n {showAcceptButton && (\n <Button\n variant=\"primary\"\n onClick={() => {\n setShowAcceptModal(true);\n setAcceptErrorMessage(''); // Clear modal errors\n setAcceptSuccessMessage(''); // Clear modal success messages\n }}\n data-testid=\"accept-button\"\n disabled={isSubmitting || hasUnsavedChanges}\n >\n {dictionary.accept}\n </Button>\n )}\n\n {templateData?.canSendForReview && (\n <Button\n variant=\"primary\"\n onClick={handleSendForReview}\n data-testid=\"send-for-review-button\"\n disabled={isSubmitting}\n >\n {dictionary.sendForReview}\n </Button>\n )}\n {templateData?.canCancel && (\n <Button\n variant=\"tertiary\"\n onClick={() => setIsCancelDialogOpen(true)}\n data-testid=\"cancel-template-button\"\n disabled={isSubmitting}\n >\n {dictionary.cancel}\n </Button>\n )}\n {templateData?.canDelete && (\n <Button\n variant=\"tertiary\"\n onClick={() => setIsDeleteDialogOpen(true)}\n data-testid=\"delete-template-button\"\n disabled={isSubmitting}\n >\n {dictionary.delete}\n </Button>\n )}\n </Slot>\n );\n }, [\n slots?.Footer,\n dictionary,\n templateData,\n comment,\n isSubmitting,\n handleSendForReview,\n referenceDocuments,\n hasUnsavedChanges,\n renameTemplateName,\n renameReason,\n ]);\n\n // Delete error banner\n const deleteErrorBanner = deleteError ? (\n <InLineAlert\n type=\"error\"\n variant=\"primary\"\n icon={<WarningFilled />}\n heading={dictionary.confirmationModalDeleteErrorHeading}\n description={deleteError}\n onDismiss={handleDismissError}\n data-testid=\"confirmation-modal-error-banner\"\n />\n ) : null;\n\n // Delete success banner\n const deleteSuccessBanner = deleteSuccess ? (\n <InLineAlert\n type=\"success\"\n variant=\"primary\"\n icon={<CheckWithCircle />}\n heading={dictionary.confirmationModalDeleteSuccessHeading}\n description={dictionary.confirmationModalDeleteSuccessDescription}\n onDismiss={handleDismissSuccess}\n data-testid=\"confirmation-modal-success-banner\"\n />\n ) : null;\n\n const deleteBanner = deleteSuccessBanner || deleteErrorBanner;\n\n // Cancel error banner\n const cancelErrorBanner = cancelError ? (\n <InLineAlert\n type=\"error\"\n variant=\"primary\"\n icon={<WarningFilled />}\n heading={dictionary.confirmationModalCancelErrorHeading}\n description={cancelError}\n onDismiss={handleDismissCancelError}\n data-testid=\"confirmation-modal-cancel-error-banner\"\n />\n ) : null;\n\n // Cancel success banner\n const cancelSuccessBanner = cancelSuccess ? (\n <InLineAlert\n type=\"success\"\n variant=\"primary\"\n icon={<CheckWithCircle />}\n heading={dictionary.confirmationModalCancelSuccessHeading}\n description={dictionary.confirmationModalCancelSuccessDescription}\n onDismiss={handleDismissCancelSuccess}\n data-testid=\"confirmation-modal-cancel-success-banner\"\n />\n ) : null;\n\n const cancelBanner = cancelSuccessBanner || cancelErrorBanner;\n\n // Rename modal error banner\n const renameErrorBanner = useMemo(\n () =>\n renameError ? (\n <InLineAlert\n type=\"error\"\n variant=\"primary\"\n icon={<WarningFilled color=\"var(--color-error)\" />}\n heading={dictionary.renameErrorHeading}\n description={renameError}\n />\n ) : undefined,\n [renameError, dictionary.renameErrorHeading]\n );\n\n // Rename modal success banner\n const renameSuccessBanner = useMemo(\n () =>\n renameSuccess ? (\n <InLineAlert\n type=\"success\"\n variant=\"primary\"\n icon={<CheckWithCircle />}\n heading={dictionary.renameSuccessHeading}\n description={renameSuccess}\n />\n ) : undefined,\n [renameSuccess, dictionary.renameSuccessHeading]\n );\n\n const manageNegotiableQuoteTemplateProps: ManageNegotiableQuoteTemplateComponentProps = {\n ...props,\n loading,\n templateName,\n templateStatus,\n banner: unsavedChangesBanner,\n details,\n actionBar,\n referenceDocuments: referenceDocumentsNode,\n itemsTable,\n shippingInformationTitle,\n shippingInformation,\n commentsTitle,\n comments,\n footer,\n };\n\n // Create banner for generate quote modal based on success/error state\n let generateQuoteModalBanner = null;\n if (generateQuoteSuccessMessage) {\n generateQuoteModalBanner = (\n <InLineAlert\n type=\"success\"\n variant=\"primary\"\n icon={<Icon source=\"CheckWithCircle\" />}\n heading={dictionary.generateQuoteModalSuccessHeading}\n description={generateQuoteSuccessMessage}\n data-testid=\"generate-quote-success-banner\"\n />\n );\n } else if (generateQuoteErrorMessage) {\n generateQuoteModalBanner = (\n <InLineAlert\n type=\"error\"\n variant=\"primary\"\n icon={<Icon source=\"WarningFilled\" />}\n heading={dictionary.generateQuoteModalErrorHeading}\n description={generateQuoteErrorMessage}\n data-testid=\"generate-quote-error-banner\"\n />\n );\n }\n\n // Create banner for accept modal based on success/error state\n let acceptModalBanner = null;\n if (acceptSuccessMessage) {\n acceptModalBanner = (\n <InLineAlert\n type=\"success\"\n variant=\"primary\"\n icon={<Icon source=\"CheckWithCircle\" />}\n heading={dictionary.acceptModalSuccessHeading}\n description={acceptSuccessMessage}\n data-testid=\"accept-success-banner\"\n />\n );\n } else if (acceptErrorMessage) {\n acceptModalBanner = (\n <InLineAlert\n type=\"error\"\n variant=\"primary\"\n icon={<Icon source=\"WarningFilled\" />}\n heading={dictionary.acceptModalErrorHeading}\n description={acceptErrorMessage}\n data-testid=\"accept-error-banner\"\n />\n );\n }\n\n return (\n <>\n <ManageNegotiableQuoteTemplateComponent {...manageNegotiableQuoteTemplateProps} />\n {isDeleteDialogOpen &&\n createPortal(\n <ConfirmationModal\n open={isDeleteDialogOpen}\n title={dictionary.confirmationModalDeleteTitle}\n message={dictionary.confirmationModalDeleteMessage}\n cancelLabel={dictionary.confirmationModalCancel}\n confirmLabel={dictionary.confirmationModalDeleteConfirm}\n onCancel={handleDeleteCancel}\n onConfirm={handleDeleteConfirm}\n showCloseButton={!deleteBanner}\n confirmationBanner={deleteBanner}\n />,\n document.body\n )}\n {isCancelDialogOpen &&\n createPortal(\n <ConfirmationModal\n open={isCancelDialogOpen}\n title={dictionary.confirmationModalCancelTitle}\n message={dictionary.confirmationModalCancelMessage}\n cancelLabel={dictionary.confirmationModalCancel}\n confirmLabel={dictionary.confirmationModalCancelConfirm}\n onCancel={handleCancelCancel}\n onConfirm={handleCancelConfirm}\n showCloseButton={!cancelBanner}\n confirmationBanner={cancelBanner}\n />,\n document.body\n )}\n {isDocumentModalOpen &&\n createPortal(\n <ReferenceDocumentFormModal\n open={isDocumentModalOpen}\n document={editingDocument}\n errorMessage={documentModalErrorMessage || undefined}\n onSave={handleSaveDocument}\n onClose={handleDocumentModalClose}\n isSubmitting={isSubmitting}\n />,\n document.body\n )}\n {showGenerateQuoteModal &&\n createPortal(\n <ConfirmationModal\n open={showGenerateQuoteModal}\n title={dictionary.generateQuoteModalTitle}\n message={dictionary.generateQuoteModalMessage}\n cancelLabel={dictionary.generateQuoteModalCancel}\n confirmLabel={\n isGeneratingQuote\n ? dictionary.generateQuoteModalConfirmLoading\n : dictionary.generateQuoteModalConfirm\n }\n onCancel={handleGenerateQuoteModalCancel}\n onConfirm={isGeneratingQuote ? undefined : handleGenerateQuote}\n showCloseButton={true}\n confirmationBanner={generateQuoteModalBanner}\n data-testid=\"generate-quote-confirmation-modal\"\n />,\n document.body\n )}\n {showAcceptModal &&\n createPortal(\n <ConfirmationModal\n open={showAcceptModal}\n title={dictionary.acceptModalTitle}\n message={dictionary.acceptModalMessage}\n cancelLabel={dictionary.acceptModalCancel}\n confirmLabel={\n isAccepting\n ? dictionary.acceptModalConfirmLoading\n : dictionary.acceptModalConfirm\n }\n onCancel={handleAcceptModalCancel}\n onConfirm={isAccepting ? undefined : handleAcceptQuote}\n showCloseButton={true}\n confirmationBanner={acceptModalBanner}\n data-testid=\"accept-confirmation-modal\"\n />,\n document.body\n )}\n {isRenameModalOpen &&\n createPortal(\n <RenameQuoteModal\n open={isRenameModalOpen}\n quoteName={renameTemplateName}\n renameReason={renameReason}\n quoteNameError={renameTemplateNameError}\n errorBanner={renameErrorBanner}\n successBanner={renameSuccessBanner}\n onQuoteNameChange={handleRenameTemplateNameChange}\n onRenameReasonChange={handleRenameReasonChange}\n onSave={handleRenameSave}\n onClose={handleRenameClose}\n />,\n document.body\n )}\n </>\n );\n};\n"],"names":["ManageNegotiableQuoteTemplate","className","loading","templateName","templateStatus","banner","details","actionBar","referenceDocuments","itemsTable","shippingInformationTitle","shippingInformation","commentsTitle","comments","footer","props","ManageNegotiableQuoteTemplateSkeleton","jsxs","classes","jsx","VComponent","Skeleton","SkeletonRow","ReferenceDocumentFormModal","open","document","errorMessage","errorBanner","successBanner","showCloseButton","isSubmitting","onSave","onClose","documentName","setDocumentName","useState","documentIdentifier","setDocumentIdentifier","referenceUrl","setReferenceUrl","errors","setErrors","dictionary","useText","displayErrorBanner","InLineAlert","WarningFilled","isEditMode","useEffect","validateUrl","useCallback","url","handleSave","newErrors","handleClose","Modal","Fragment","Input","e","Button","ReferenceDocumentsList","documents","isEditable","onAdd","onEdit","onRemove","formatDocumentDisplay","doc","handleDocumentClick","useReferenceDocumentLinks","params","templateReferenceDocuments","localReferenceDocuments","findMatchingTemplateDocument","templateDoc","isDocumentInTemplateData","isDocumentModified","localDoc","getNewDocuments","getReferenceDocumentLinks","hasUnsavedChanges","useMemo","matchingTemplateDoc","useRenameTemplate","initialTemplateName","templateNameRequiredErrorMessage","isRenameModalOpen","setIsRenameModalOpen","renameTemplateName","setRenameTemplateName","renameReason","setRenameReason","renameError","setRenameError","renameTemplateNameError","setRenameTemplateNameError","renameSuccess","setRenameSuccess","handleRenameClick","currentTemplateName","handleRenameClose","handleRenameTemplateNameChange","value","handleRenameReasonChange","handleRenameSave","resetRenameState","slots","onActionsButtonClick","onSendForReview","templateData","setTemplateData","setLoading","comment","setComment","setIsSubmitting","isDeleteDialogOpen","setIsDeleteDialogOpen","deleteError","setDeleteError","deleteSuccess","setDeleteSuccess","isCancelDialogOpen","setIsCancelDialogOpen","cancelError","setCancelError","cancelSuccess","setCancelSuccess","setReferenceDocuments","isDocumentModalOpen","setIsDocumentModalOpen","editingDocument","setEditingDocument","documentModalErrorMessage","setDocumentModalErrorMessage","showGenerateQuoteModal","setShowGenerateQuoteModal","isGeneratingQuote","setIsGeneratingQuote","generateQuoteSuccessMessage","setGenerateQuoteSuccessMessage","generateQuoteErrorMessage","setGenerateQuoteErrorMessage","showAcceptModal","setShowAcceptModal","isAccepting","setIsAccepting","acceptSuccessMessage","setAcceptSuccessMessage","acceptErrorMessage","setAcceptErrorMessage","hasAutoOpened","useRef","hasUnsavedReferenceDocuments","hasUnsavedRenameChanges","quoteTemplateDataEvent","events","data","NegotiableQuoteTemplateStatus","openQuoteTemplate","error","handleDeleteCancel","handleDeleteConfirm","deleteQuoteTemplate","handleDismissError","handleDismissSuccess","handleCancelCancel","handleCancelConfirm","cancelQuoteTemplate","handleDismissCancelError","handleDismissCancelSuccess","handleSendForReview","referenceDocumentLinks","combinedComment","sendQuoteTemplateForReview","handleAddDocument","handleEditDocument","handleRemoveDocument","prev","handleSaveDocument","handleDocumentModalClose","handleGenerateQuote","generateQuoteFromTemplate","handleGenerateQuoteModalCancel","handleAcceptQuote","acceptQuoteTemplate","handleAcceptModalCancel","isRenameDisabled","templateDisplayName","Slot","Edit","expirationDate","formattedDate","buttons","handleActionsButtonClick","action","ActionsBar","button","status","referenceDocumentsNode","shouldShowTitle","title","ShippingAddressDisplay","_a","TabbedContent","ItemsQuotedTemplate","QuoteTemplateCommentsList","QuoteTemplateHistoryLog","TextArea","unsavedChangesBanner","showAcceptButton","deleteErrorBanner","deleteBanner","CheckWithCircle","cancelErrorBanner","cancelBanner","renameErrorBanner","renameSuccessBanner","manageNegotiableQuoteTemplateProps","generateQuoteModalBanner","Icon","acceptModalBanner","ManageNegotiableQuoteTemplateComponent","createPortal","ConfirmationModal","RenameQuoteModal"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { OrderSummaryLineItem } from '../../components';
|
|
2
|
+
import { NegotiableQuoteModel } from '../../data/models';
|
|
3
|
+
import { Container } from '@dropins/tools/types/elsie/src/lib';
|
|
4
|
+
import { HTMLAttributes } from 'preact/compat';
|
|
5
|
+
|
|
6
|
+
export interface OrderSummaryProps extends HTMLAttributes<HTMLDivElement> {
|
|
7
|
+
showTotalSaved?: boolean;
|
|
8
|
+
updateLineItems?: (lineItems: Array<OrderSummaryLineItem>) => Array<OrderSummaryLineItem>;
|
|
9
|
+
}
|
|
10
|
+
export declare const OrderSummary: Container<OrderSummaryProps, NegotiableQuoteModel | null>;
|
|
11
|
+
//# sourceMappingURL=OrderSummary.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 './OrderSummary';
|
|
10
|
+
export { OrderSummary as default } from './OrderSummary';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/*! Copyright 2025 Adobe
|
|
2
|
+
All Rights Reserved. */
|
|
3
|
+
import{jsxs as u,jsx as t,Fragment as _e}from"@dropins/tools/preact-jsx-runtime.js";import{VComponent as M,classes as Ee}from"@dropins/tools/lib.js";/* empty css */import{Accordion as Ce,AccordionSection as fe,Divider as we,Price as l,Icon as Me}from"@dropins/tools/components.js";import{O as s}from"../chunks/OrderSummaryLine.js";import*as H from"@dropins/tools/preact-compat.js";import{useState as Se,useEffect as Ze}from"@dropins/tools/preact-compat.js";import{S as ve}from"../chunks/ChevronDown.js";import{useText as Ne}from"@dropins/tools/i18n.js";import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";/* empty css *//* empty css */import{s as He,Q as Z}from"../chunks/state.js";import{events as Ve}from"@dropins/tools/event-bus.js";const Le=m=>H.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...m},H.createElement("path",{d:"M7.74512 14.132L12.0001 9.87701L16.2551 14.132",stroke:"currentColor",strokeWidth:1,strokeLinecap:"square",strokeLinejoin:"round"})),Ie=m=>H.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...m},H.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M22 6.25H22.75C22.75 5.83579 22.4142 5.5 22 5.5V6.25ZM22 9.27L22.2514 9.97663C22.5503 9.87029 22.75 9.58731 22.75 9.27H22ZM20.26 12.92L19.5534 13.1714L19.5539 13.1728L20.26 12.92ZM22 14.66H22.75C22.75 14.3433 22.551 14.0607 22.2528 13.9539L22 14.66ZM22 17.68V18.43C22.4142 18.43 22.75 18.0942 22.75 17.68H22ZM2 17.68H1.25C1.25 18.0942 1.58579 18.43 2 18.43V17.68ZM2 14.66L1.74865 13.9534C1.44969 14.0597 1.25 14.3427 1.25 14.66H2ZM3.74 11.01L4.44663 10.7586L4.44611 10.7572L3.74 11.01ZM2 9.27H1.25C1.25 9.58675 1.44899 9.86934 1.7472 9.97611L2 9.27ZM2 6.25V5.5C1.58579 5.5 1.25 5.83579 1.25 6.25H2ZM21.25 6.25V9.27H22.75V6.25H21.25ZM21.7486 8.56337C19.8706 9.23141 18.8838 11.2889 19.5534 13.1714L20.9666 12.6686C20.5762 11.5711 21.1494 10.3686 22.2514 9.97663L21.7486 8.56337ZM19.5539 13.1728C19.9195 14.1941 20.7259 15.0005 21.7472 15.3661L22.2528 13.9539C21.6541 13.7395 21.1805 13.2659 20.9661 12.6672L19.5539 13.1728ZM21.25 14.66V17.68H22.75V14.66H21.25ZM22 16.93H2V18.43H22V16.93ZM2.75 17.68V14.66H1.25V17.68H2.75ZM2.25135 15.3666C4.12941 14.6986 5.11623 12.6411 4.44663 10.7586L3.03337 11.2614C3.42377 12.3589 2.85059 13.5614 1.74865 13.9534L2.25135 15.3666ZM4.44611 10.7572C4.08045 9.73588 3.27412 8.92955 2.2528 8.56389L1.7472 9.97611C2.34588 10.1905 2.81955 10.6641 3.03389 11.2628L4.44611 10.7572ZM2.75 9.27V6.25H1.25V9.27H2.75ZM2 7H22V5.5H2V7ZM7.31 6.74V18.17H8.81V6.74H7.31ZM17.0997 8.39967L11.0397 14.4597L12.1003 15.5203L18.1603 9.46033L17.0997 8.39967ZM12.57 9.67C12.57 9.87231 12.4159 10 12.27 10V11.5C13.2839 11.5 14.07 10.6606 14.07 9.67H12.57ZM12.27 10C12.1241 10 11.97 9.87231 11.97 9.67H10.47C10.47 10.6606 11.2561 11.5 12.27 11.5V10ZM11.97 9.67C11.97 9.46769 12.1241 9.34 12.27 9.34V7.84C11.2561 7.84 10.47 8.67938 10.47 9.67H11.97ZM12.27 9.34C12.4159 9.34 12.57 9.46769 12.57 9.67H14.07C14.07 8.67938 13.2839 7.84 12.27 7.84V9.34ZM17.22 14.32C17.22 14.5223 17.0659 14.65 16.92 14.65V16.15C17.9339 16.15 18.72 15.3106 18.72 14.32H17.22ZM16.92 14.65C16.7741 14.65 16.62 14.5223 16.62 14.32H15.12C15.12 15.3106 15.9061 16.15 16.92 16.15V14.65ZM16.62 14.32C16.62 14.1177 16.7741 13.99 16.92 13.99V12.49C15.9061 12.49 15.12 13.3294 15.12 14.32H16.62ZM16.92 13.99C17.0659 13.99 17.22 14.1177 17.22 14.32H18.72C18.72 13.3294 17.9339 12.49 16.92 12.49V13.99Z",fill:"currentColor"})),ke=({className:m,children:V,variant:T="primary",heading:y,subTotal:d,shipping:e,discounts:g,taxTotal:c,taxesApplied:r,total:n,totalSaved:b,updateLineItems:C=p=>p,...f})=>{const[p,x]=Se(!1),o=Ne({taxesBreakdownTitle:"NegotiableQuote.PriceSummary.taxes.breakdown",taxTotal:"NegotiableQuote.PriceSummary.taxes.total",taxTotalOnly:"NegotiableQuote.PriceSummary.taxes.totalOnly",showTaxBreakdown:"NegotiableQuote.PriceSummary.taxes.showBreakdown",hideTaxBreakdown:"NegotiableQuote.PriceSummary.taxes.hideBreakdown",subtotalLabel:"NegotiableQuote.PriceSummary.subTotal.label",subtotalWithTaxes:"NegotiableQuote.PriceSummary.subTotal.withTaxes",subtotalWithoutTaxes:"NegotiableQuote.PriceSummary.subTotal.withoutTaxes",shippingLabel:"NegotiableQuote.PriceSummary.shipping.label",shippingWithTaxes:"NegotiableQuote.PriceSummary.shipping.withTaxes",shippingWithoutTaxes:"NegotiableQuote.PriceSummary.shipping.withoutTaxes",totalLabel:"NegotiableQuote.PriceSummary.total.label",totalWithoutTax:"NegotiableQuote.PriceSummary.total.withoutTax",totalSaved:"NegotiableQuote.PriceSummary.total.saved"}),v=d&&u(s,{label:o.subtotalLabel,price:d.price,classSuffixes:["subTotal"],children:[d.taxIncluded&&t("div",{"data-testid":"sub-total-tax-caption",className:"quote-order-summary__caption",children:t("span",{children:o.subtotalWithTaxes})}),d.taxExcluded?t("div",{"data-testid":"sub-total-tax-caption-excluded",className:"quote-order-summary__caption",children:u("span",{children:[d.priceExcludingTax," ",o.subtotalWithoutTaxes]})}):void 0]},o.subtotalLabel),L=e&&u(s,{label:o.shippingLabel,price:e.price,classSuffixes:["shipping"],children:[e.taxIncluded&&t("div",{"data-testid":"shipping-tax-caption",className:"quote-order-summary__caption",children:t("span",{children:o.shippingWithTaxes})}),e.taxExcluded?t("div",{"data-testid":"shipping-tax-caption-excluded",className:"quote-order-summary__caption",children:u("span",{children:[e.priceExcludingTax," ",o.shippingWithoutTaxes]})}):void 0]},o.shippingLabel),S=g&&g.length>0&&t(_e,{children:g.map(a=>u(s,{label:a.label,price:a.price,classSuffixes:["discount"],children:[a.coupon&&t(M,{node:a.coupon,className:"quote-order-summary__coupon__code"}),a.caption&&t(M,{node:a.caption,className:"quote-order-summary__caption"})]},a.label))}),N=r&&r.length>0?t(Ce,{"data-testid":"tax-breakdown",className:"quote-order-summary__taxes",iconOpen:ve,iconClose:Le,children:u(fe,{ariaLabelTitle:o.taxesBreakdownTitle,title:o.taxesBreakdownTitle,secondaryText:!p&&c?t(M,{node:c.price,className:"quote-order-summary__price"}):void 0,renderContentWhenClosed:!1,onStateChange:x,children:[t("div",{className:"quote-order-summary__appliedTaxes",children:r.map(a=>t(s,{label:a.label,price:a.price,classSuffixes:["taxEntry"],labelClassSuffix:"muted"},a.label))}),c&&t(s,{label:o.taxTotal,price:c.price,classSuffixes:["taxTotal"],labelClassSuffix:"muted"})]})}):c&&t(s,{label:o.taxTotalOnly,price:c.price,classSuffixes:["taxTotal"],testId:"tax-total-only"}),_=[{key:"subTotalContent",sortOrder:100,content:v},{key:"shippingContent",sortOrder:200,content:L},{key:"discountsContent",sortOrder:600,content:S},{key:"taxContent",sortOrder:800,content:N},...n?[{key:"totalContent",sortOrder:900,content:t(s,{label:o.totalLabel,price:n.price,classSuffixes:["total","total--padded"],testId:"total-content",labelClassSuffix:"bold"})}]:[],...n!=null&&n.priceWithoutTax?[{key:"totalWithoutTaxContent",sortOrder:1e3,content:t(s,{label:o.totalWithoutTax,price:n.priceWithoutTax,classSuffixes:["totalWithoutTax"],testId:"total-without-tax",labelClassSuffix:"muted"})}]:[],...b?[{key:"totalSavedContent",sortOrder:1100,content:t(s,{label:o.totalSaved,price:b,classSuffixes:["saved"],testId:"total-saved",labelClassSuffix:"muted"})}]:[]],E=C(_).sort((a,h)=>a.sortOrder-h.sortOrder);return u("div",{...f,className:Ee(["quote-order-summary",[`quote-order-summary__${T}`,T],m]),children:[u("div",{className:"quote-order-summary__heading",children:[y&&t(M,{node:y,className:"quote-order-summary__heading-text"}),t(we,{variant:"primary",className:"quote-order-summary__divider-primary"})]}),t("div",{className:"quote-order-summary__content",children:E.map(a=>Array.isArray(a.content)?t(Ce,{className:a.className,actionIconPosition:"right",iconOpen:ve,iconClose:Le,children:t(fe,{defaultOpen:!1,title:a.title,renderContentWhenClosed:!1,children:a.content.map(h=>h.content)})},a.key):a.content)})]})},Re=({children:m,initialData:V=null,showTotalSaved:T,updateLineItems:y=e=>e,...d})=>{var o,v,L,S,N,_,E,a,h,I,k,O,P,Q,W,B,A,D,q,U,X,j,z,$,F,R,G,J,K,Y,ee,te,re,ae,oe,ie,ne,le,ce,se,ue,de,me,pe,xe,he,ge,be,Te,ye;const[e,g]=Se(V),c=e==null?void 0:e.isVirtual,{quoteDisplaySettings:r}=He.config,n=!!(r!=null&&r.zeroTax),b=(r==null?void 0:r.subtotal)===Z.TAX_INCLUDED,C=(r==null?void 0:r.subtotal)===Z.TAX_INCLUDED_AND_EXCLUDED,f=(r==null?void 0:r.shipping)===Z.TAX_INCLUDED,p=(r==null?void 0:r.shipping)===Z.TAX_INCLUDED_AND_EXCLUDED;Ze(()=>{const i=Ve.on("quote-management/quote-data",w=>{g(w.quote)},{eager:!0});return()=>{i==null||i.off()}},[]);const x=Ne({free:"NegotiableQuote.PriceSummary.total.free",orderSummary:"NegotiableQuote.PriceSummary.orderSummary",taxToBeDetermined:"NegotiableQuote.PriceSummary.taxToBeDetermined"});return Object.keys(e??{}).length?t(ke,{...d,"data-testid":"quote-order-summary",heading:t("div",{children:x.orderSummary}),updateLineItems:y,subTotal:{taxIncluded:b&&!n,taxExcluded:C,priceExcludingTax:t(l,{"data-testid":"subtotal",amount:(v=(o=e==null?void 0:e.prices)==null?void 0:o.subtotalExcludingTax)==null?void 0:v.value,currency:(S=(L=e==null?void 0:e.prices)==null?void 0:L.subtotalExcludingTax)==null?void 0:S.currency}),price:!n&&b||!n&&C?t(l,{"data-testid":"subtotal",amount:(_=(N=e==null?void 0:e.prices)==null?void 0:N.subtotalIncludingTax)==null?void 0:_.value,currency:(a=(E=e==null?void 0:e.prices)==null?void 0:E.subtotalIncludingTax)==null?void 0:a.currency}):t(l,{"data-testid":"subtotal",amount:(I=(h=e==null?void 0:e.prices)==null?void 0:h.subtotalExcludingTax)==null?void 0:I.value,currency:(O=(k=e==null?void 0:e.prices)==null?void 0:k.subtotalExcludingTax)==null?void 0:O.currency})},shipping:{taxIncluded:f&&!n,taxExcluded:p,priceExcludingTax:t(l,{"data-testid":"shipping",amount:(Q=(P=e==null?void 0:e.prices)==null?void 0:P.shippingExcludingTax)==null?void 0:Q.value,currency:(B=(W=e==null?void 0:e.prices)==null?void 0:W.shippingExcludingTax)==null?void 0:B.currency}),price:!n&&f||!n&&p?t(l,{"data-testid":"shipping",amount:(D=(A=e==null?void 0:e.prices)==null?void 0:A.shippingIncludingTax)==null?void 0:D.value,currency:(U=(q=e==null?void 0:e.prices)==null?void 0:q.shippingIncludingTax)==null?void 0:U.currency}):t(l,{"data-testid":"shipping",amount:(j=(X=e==null?void 0:e.prices)==null?void 0:X.shippingExcludingTax)==null?void 0:j.value,currency:($=(z=e==null?void 0:e.prices)==null?void 0:z.shippingExcludingTax)==null?void 0:$.currency})},discounts:(R=(F=e==null?void 0:e.prices)==null?void 0:F.appliedDiscounts)==null?void 0:R.map(i=>{var w;return{label:i.label,price:t(l,{"data-testid":"summary-discount-total",amount:-i.amount.value,currency:i.amount.currency,sale:!0}),coupon:i!=null&&i.coupon?u("span",{children:[t(Me,{source:Ie,size:"16"}),(w=i==null?void 0:i.coupon)==null?void 0:w.code]}):void 0}}),taxTotal:c&&!((J=(G=e==null?void 0:e.prices)==null?void 0:G.appliedTaxes)!=null&&J.length)?{price:t("span",{"data-testid":"tax-total-tbd",children:x.taxToBeDetermined})}:{price:t(l,{"data-testid":"tax-total-actual",amount:(Y=(K=e==null?void 0:e.prices)==null?void 0:K.totalTax)==null?void 0:Y.value,currency:(te=(ee=e==null?void 0:e.prices)==null?void 0:ee.totalTax)==null?void 0:te.currency})},taxesApplied:c?void 0:r!=null&&r.fullSummary?(ae=(re=e==null?void 0:e.prices)==null?void 0:re.appliedTaxes)==null?void 0:ae.map(i=>({label:i.label,price:t(l,{"data-testid":"applied-taxes",amount:i.amount.value,currency:i.amount.currency})})):void 0,total:{price:((ie=(oe=e==null?void 0:e.prices)==null?void 0:oe.grandTotal)==null?void 0:ie.value)===0?t("span",{"data-testid":"total-including-tax",children:x.free}):t(l,{"data-testid":"total-including-tax-actual",amount:(le=(ne=e==null?void 0:e.prices)==null?void 0:ne.grandTotal)==null?void 0:le.value,currency:(se=(ce=e==null?void 0:e.prices)==null?void 0:ce.grandTotal)==null?void 0:se.currency}),priceWithoutTax:r!=null&&r.grandTotal?((de=(ue=e==null?void 0:e.prices)==null?void 0:ue.grandTotalExcludingTax)==null?void 0:de.value)===0?t("span",{"data-testid":"total-excluding-tax",children:x.free}):t(l,{"data-testid":"total-excluding-tax",amount:(pe=(me=e==null?void 0:e.prices)==null?void 0:me.grandTotalExcludingTax)==null?void 0:pe.value,currency:(he=(xe=e==null?void 0:e.prices)==null?void 0:xe.grandTotalExcludingTax)==null?void 0:he.currency}):void 0},totalSaved:T?t(l,{amount:(be=(ge=e==null?void 0:e.prices)==null?void 0:ge.discount)==null?void 0:be.value,currency:(ye=(Te=e==null?void 0:e.prices)==null?void 0:Te.grandTotal)==null?void 0:ye.currency}):void 0}):null};export{Re as OrderSummary,Re as default};
|
|
4
|
+
//# sourceMappingURL=OrderSummary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrderSummary.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/ChevronUp.svg","../../node_modules/@adobe-commerce/elsie/src/icons/Coupon.svg","/@dropins/storefront-quote-management/src/components/OrderSummary/OrderSummary.tsx","/@dropins/storefront-quote-management/src/containers/OrderSummary/OrderSummary.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgChevronUp = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.74512 14.132L12.0001 9.87701L16.2551 14.132\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"square\", strokeLinejoin: \"round\" }));\nexport default SvgChevronUp;\n","import * as React from \"react\";\nconst SvgCoupon = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M22 6.25H22.75C22.75 5.83579 22.4142 5.5 22 5.5V6.25ZM22 9.27L22.2514 9.97663C22.5503 9.87029 22.75 9.58731 22.75 9.27H22ZM20.26 12.92L19.5534 13.1714L19.5539 13.1728L20.26 12.92ZM22 14.66H22.75C22.75 14.3433 22.551 14.0607 22.2528 13.9539L22 14.66ZM22 17.68V18.43C22.4142 18.43 22.75 18.0942 22.75 17.68H22ZM2 17.68H1.25C1.25 18.0942 1.58579 18.43 2 18.43V17.68ZM2 14.66L1.74865 13.9534C1.44969 14.0597 1.25 14.3427 1.25 14.66H2ZM3.74 11.01L4.44663 10.7586L4.44611 10.7572L3.74 11.01ZM2 9.27H1.25C1.25 9.58675 1.44899 9.86934 1.7472 9.97611L2 9.27ZM2 6.25V5.5C1.58579 5.5 1.25 5.83579 1.25 6.25H2ZM21.25 6.25V9.27H22.75V6.25H21.25ZM21.7486 8.56337C19.8706 9.23141 18.8838 11.2889 19.5534 13.1714L20.9666 12.6686C20.5762 11.5711 21.1494 10.3686 22.2514 9.97663L21.7486 8.56337ZM19.5539 13.1728C19.9195 14.1941 20.7259 15.0005 21.7472 15.3661L22.2528 13.9539C21.6541 13.7395 21.1805 13.2659 20.9661 12.6672L19.5539 13.1728ZM21.25 14.66V17.68H22.75V14.66H21.25ZM22 16.93H2V18.43H22V16.93ZM2.75 17.68V14.66H1.25V17.68H2.75ZM2.25135 15.3666C4.12941 14.6986 5.11623 12.6411 4.44663 10.7586L3.03337 11.2614C3.42377 12.3589 2.85059 13.5614 1.74865 13.9534L2.25135 15.3666ZM4.44611 10.7572C4.08045 9.73588 3.27412 8.92955 2.2528 8.56389L1.7472 9.97611C2.34588 10.1905 2.81955 10.6641 3.03389 11.2628L4.44611 10.7572ZM2.75 9.27V6.25H1.25V9.27H2.75ZM2 7H22V5.5H2V7ZM7.31 6.74V18.17H8.81V6.74H7.31ZM17.0997 8.39967L11.0397 14.4597L12.1003 15.5203L18.1603 9.46033L17.0997 8.39967ZM12.57 9.67C12.57 9.87231 12.4159 10 12.27 10V11.5C13.2839 11.5 14.07 10.6606 14.07 9.67H12.57ZM12.27 10C12.1241 10 11.97 9.87231 11.97 9.67H10.47C10.47 10.6606 11.2561 11.5 12.27 11.5V10ZM11.97 9.67C11.97 9.46769 12.1241 9.34 12.27 9.34V7.84C11.2561 7.84 10.47 8.67938 10.47 9.67H11.97ZM12.27 9.34C12.4159 9.34 12.57 9.46769 12.57 9.67H14.07C14.07 8.67938 13.2839 7.84 12.27 7.84V9.34ZM17.22 14.32C17.22 14.5223 17.0659 14.65 16.92 14.65V16.15C17.9339 16.15 18.72 15.3106 18.72 14.32H17.22ZM16.92 14.65C16.7741 14.65 16.62 14.5223 16.62 14.32H15.12C15.12 15.3106 15.9061 16.15 16.92 16.15V14.65ZM16.62 14.32C16.62 14.1177 16.7741 13.99 16.92 13.99V12.49C15.9061 12.49 15.12 13.3294 15.12 14.32H16.62ZM16.92 13.99C17.0659 13.99 17.22 14.1177 17.22 14.32H18.72C18.72 13.3294 17.9339 12.49 16.92 12.49V13.99Z\", fill: \"currentColor\" }));\nexport default SvgCoupon;\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 '@/quote-management/components/OrderSummary/OrderSummary.css';\nimport { OrderSummaryLine } from '@/quote-management/containers/OrderSummaryLine/OrderSummaryLine';\nimport {\n Accordion,\n AccordionSection,\n Divider,\n} from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { ChevronDown, ChevronUp } from '@adobe-commerce/elsie/icons';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes, useState } from 'preact/compat';\nimport { JSXInternal } from 'preact/src/jsx';\n\nexport interface OrderSummaryLineItem {\n key: string;\n title?: string;\n className?: string;\n sortOrder: number;\n content:\n | string\n | JSXInternal.Element\n | VNode<HTMLAttributes<HTMLDivElement>>\n | OrderSummaryLineItem[]\n | undefined;\n}\n\nexport interface OrderSummaryProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'primary' | 'secondary';\n heading?: VNode<HTMLAttributes<HTMLDivElement>>;\n subTotal?: {\n price: VNode<HTMLAttributes<HTMLSpanElement>>;\n priceExcludingTax?: VNode<HTMLAttributes<HTMLSpanElement>>;\n taxIncluded?: boolean;\n taxExcluded?: boolean;\n };\n shipping?: {\n price: VNode<HTMLAttributes<HTMLSpanElement>>;\n priceExcludingTax?: VNode<HTMLAttributes<HTMLSpanElement>>;\n taxIncluded?: boolean;\n taxExcluded?: boolean;\n };\n discounts?: {\n label: string;\n price: VNode<HTMLAttributes<HTMLSpanElement>>;\n caption?: VNode<HTMLAttributes<HTMLDivElement>>;\n coupon?: VNode<HTMLAttributes<HTMLSpanElement>>;\n }[];\n taxTotal?: {\n price: VNode<HTMLAttributes<HTMLSpanElement>>;\n };\n taxesApplied?: {\n label: string;\n price: VNode<HTMLAttributes<HTMLSpanElement>>;\n }[];\n total?: {\n price: VNode<HTMLAttributes<HTMLSpanElement>>;\n priceWithoutTax?: VNode<HTMLAttributes<HTMLSpanElement>>;\n };\n totalSaved?: VNode<HTMLAttributes<HTMLSpanElement>>;\n updateLineItems?: (\n lineItems: Array<OrderSummaryLineItem>\n ) => Array<OrderSummaryLineItem>;\n}\n\nexport const OrderSummary: FunctionComponent<OrderSummaryProps> = ({\n className,\n children,\n variant = 'primary',\n heading,\n subTotal,\n shipping,\n discounts,\n taxTotal,\n taxesApplied,\n total,\n totalSaved,\n updateLineItems = (lineItems) => lineItems,\n ...props\n}) => {\n const [showTaxBreakdown, setShowTaxBreakdown] = useState(false);\n\n const translations = useText({\n // Taxes\n taxesBreakdownTitle: 'NegotiableQuote.PriceSummary.taxes.breakdown',\n taxTotal: 'NegotiableQuote.PriceSummary.taxes.total',\n taxTotalOnly: 'NegotiableQuote.PriceSummary.taxes.totalOnly',\n showTaxBreakdown: 'NegotiableQuote.PriceSummary.taxes.showBreakdown',\n hideTaxBreakdown: 'NegotiableQuote.PriceSummary.taxes.hideBreakdown',\n\n // Subtotal\n subtotalLabel: 'NegotiableQuote.PriceSummary.subTotal.label',\n subtotalWithTaxes: 'NegotiableQuote.PriceSummary.subTotal.withTaxes',\n subtotalWithoutTaxes: 'NegotiableQuote.PriceSummary.subTotal.withoutTaxes',\n\n // Shipping\n shippingLabel: 'NegotiableQuote.PriceSummary.shipping.label',\n shippingWithTaxes: 'NegotiableQuote.PriceSummary.shipping.withTaxes',\n shippingWithoutTaxes: 'NegotiableQuote.PriceSummary.shipping.withoutTaxes',\n\n // Total\n totalLabel: 'NegotiableQuote.PriceSummary.total.label',\n totalWithoutTax: 'NegotiableQuote.PriceSummary.total.withoutTax',\n totalSaved: 'NegotiableQuote.PriceSummary.total.saved',\n });\n\n const subTotalContent = subTotal && (\n <OrderSummaryLine\n key={translations.subtotalLabel}\n label={translations.subtotalLabel}\n price={subTotal.price}\n classSuffixes={['subTotal']}\n >\n {subTotal.taxIncluded && (\n <div\n data-testid=\"sub-total-tax-caption\"\n className=\"quote-order-summary__caption\"\n >\n <span>{translations.subtotalWithTaxes}</span>\n </div>\n )}\n\n {subTotal.taxExcluded ? (\n <div\n data-testid=\"sub-total-tax-caption-excluded\"\n className=\"quote-order-summary__caption\"\n >\n <span>\n {subTotal.priceExcludingTax}\n \n {translations.subtotalWithoutTaxes}\n </span>\n </div>\n ) : undefined}\n </OrderSummaryLine>\n );\n\n const shippingContent = shipping && (\n <OrderSummaryLine\n key={translations.shippingLabel}\n label={translations.shippingLabel}\n price={shipping.price}\n classSuffixes={['shipping']}\n >\n {shipping.taxIncluded && (\n <div\n data-testid=\"shipping-tax-caption\"\n className=\"quote-order-summary__caption\"\n >\n <span>{translations.shippingWithTaxes}</span>\n </div>\n )}\n\n {shipping.taxExcluded ? (\n <div\n data-testid=\"shipping-tax-caption-excluded\"\n className=\"quote-order-summary__caption\"\n >\n <span>\n {shipping.priceExcludingTax}\n \n {translations.shippingWithoutTaxes}\n </span>\n </div>\n ) : undefined}\n </OrderSummaryLine>\n );\n\n const discountsContent = discounts && discounts.length > 0 && (\n <>\n {discounts.map((discount) => (\n <OrderSummaryLine\n key={discount.label}\n label={discount.label}\n price={discount.price}\n classSuffixes={['discount']}\n >\n {discount.coupon && (\n <VComponent\n node={discount.coupon}\n className=\"quote-order-summary__coupon__code\"\n />\n )}\n\n {discount.caption && (\n <VComponent\n node={discount.caption}\n className=\"quote-order-summary__caption\"\n />\n )}\n </OrderSummaryLine>\n ))}\n </>\n );\n\n const taxContent =\n taxesApplied && taxesApplied.length > 0 ? (\n /* Show breakdown if provided */\n <Accordion\n data-testid=\"tax-breakdown\"\n className=\"quote-order-summary__taxes\"\n iconOpen={ChevronDown}\n iconClose={ChevronUp}\n >\n <AccordionSection\n ariaLabelTitle={translations.taxesBreakdownTitle}\n title={translations.taxesBreakdownTitle}\n secondaryText={\n !showTaxBreakdown && taxTotal ? (\n <VComponent\n node={taxTotal.price}\n className=\"quote-order-summary__price\"\n />\n ) : undefined\n }\n renderContentWhenClosed={false}\n onStateChange={setShowTaxBreakdown}\n >\n <div className=\"quote-order-summary__appliedTaxes\">\n {taxesApplied.map((tax) => (\n <OrderSummaryLine\n key={tax.label}\n label={tax.label}\n price={tax.price}\n classSuffixes={['taxEntry']}\n labelClassSuffix=\"muted\"\n />\n ))}\n </div>\n\n {taxTotal && (\n <OrderSummaryLine\n label={translations.taxTotal}\n price={taxTotal.price}\n classSuffixes={['taxTotal']}\n labelClassSuffix=\"muted\"\n />\n )}\n </AccordionSection>\n </Accordion>\n ) : (\n taxTotal && (\n <OrderSummaryLine\n label={translations.taxTotalOnly}\n price={taxTotal.price}\n classSuffixes={['taxTotal']}\n testId=\"tax-total-only\"\n />\n )\n );\n\n const lineItems: Array<OrderSummaryLineItem> = [\n {\n key: 'subTotalContent',\n sortOrder: 100,\n content: subTotalContent,\n },\n {\n key: 'shippingContent',\n sortOrder: 200,\n content: shippingContent,\n },\n {\n key: 'discountsContent',\n sortOrder: 600,\n content: discountsContent,\n },\n {\n key: 'taxContent',\n sortOrder: 800,\n content: taxContent,\n },\n ...(total\n ? [\n {\n key: 'totalContent',\n sortOrder: 900,\n content: (\n <OrderSummaryLine\n label={translations.totalLabel}\n price={total.price}\n classSuffixes={['total', 'total--padded']}\n testId=\"total-content\"\n labelClassSuffix=\"bold\"\n />\n ),\n },\n ]\n : []),\n ...(total?.priceWithoutTax\n ? [\n {\n key: 'totalWithoutTaxContent',\n sortOrder: 1000,\n content: (\n <OrderSummaryLine\n label={translations.totalWithoutTax}\n price={total.priceWithoutTax}\n classSuffixes={['totalWithoutTax']}\n testId=\"total-without-tax\"\n labelClassSuffix=\"muted\"\n />\n ),\n },\n ]\n : []),\n ...(totalSaved\n ? [\n {\n key: 'totalSavedContent',\n sortOrder: 1100,\n content: (\n <OrderSummaryLine\n label={translations.totalSaved}\n price={totalSaved}\n classSuffixes={['saved']}\n testId=\"total-saved\"\n labelClassSuffix=\"muted\"\n />\n ),\n },\n ]\n : []),\n ];\n\n const updatedLineItems: Array<OrderSummaryLineItem> = updateLineItems(\n lineItems\n ).sort(\n (currentLine: OrderSummaryLineItem, nextLine: OrderSummaryLineItem) => {\n return currentLine.sortOrder - nextLine.sortOrder;\n }\n );\n\n return (\n <div\n {...props}\n className={classes([\n 'quote-order-summary',\n [`quote-order-summary__${variant}`, variant],\n className,\n ])}\n >\n <div className=\"quote-order-summary__heading\">\n {heading && (\n <VComponent\n node={heading}\n className=\"quote-order-summary__heading-text\"\n />\n )}\n\n <Divider\n variant=\"primary\"\n className=\"quote-order-summary__divider-primary\"\n />\n </div>\n\n <div className=\"quote-order-summary__content\">\n {updatedLineItems.map((line: OrderSummaryLineItem) => {\n if (Array.isArray(line.content)) {\n return (\n <Accordion\n key={line.key}\n className={line.className}\n actionIconPosition={'right'}\n iconOpen={ChevronDown}\n iconClose={ChevronUp}\n >\n <AccordionSection\n defaultOpen={false}\n title={line.title}\n renderContentWhenClosed={false}\n >\n {line.content.map((innerLine) => {\n return innerLine.content;\n })}\n </AccordionSection>\n </Accordion>\n );\n }\n return line.content;\n })}\n </div>\n </div>\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 {\n OrderSummary as OrderSummaryComponent,\n OrderSummaryLineItem,\n} from '@/quote-management/components';\nimport {\n NegotiableQuoteModel,\n QuoteDisplayAmount,\n} from '@/quote-management/data/models';\nimport { state } from '@/quote-management/lib/state';\nimport { Icon, Price } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Coupon } from '@adobe-commerce/elsie/icons';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { events } from '@adobe-commerce/event-bus';\nimport { HTMLAttributes, useEffect, useState } from 'preact/compat';\n\nexport interface OrderSummaryProps extends HTMLAttributes<HTMLDivElement> {\n showTotalSaved?: boolean;\n updateLineItems?: (\n lineItems: Array<OrderSummaryLineItem>\n ) => Array<OrderSummaryLineItem>;\n}\n\nexport const OrderSummary: Container<\n OrderSummaryProps,\n NegotiableQuoteModel | null\n> = ({\n children,\n initialData = null,\n showTotalSaved,\n updateLineItems = (lineItems) => lineItems,\n ...props\n}) => {\n const [data, setData] = useState<NegotiableQuoteModel | null>(initialData);\n const isVirtual = data?.isVirtual;\n\n const { quoteDisplaySettings } = state.config;\n\n const isZeroTax = Boolean(quoteDisplaySettings?.zeroTax);\n\n const isTaxIncludedInSubtotal =\n quoteDisplaySettings?.subtotal === QuoteDisplayAmount.TAX_INCLUDED;\n const isTaxIncludedAndExcludedInSubtotal =\n quoteDisplaySettings?.subtotal ===\n QuoteDisplayAmount.TAX_INCLUDED_AND_EXCLUDED;\n\n const isTaxIncludedInShipping =\n quoteDisplaySettings?.shipping === QuoteDisplayAmount.TAX_INCLUDED;\n const isTaxIncludedAndExcludedInShipping =\n quoteDisplaySettings?.shipping ===\n QuoteDisplayAmount.TAX_INCLUDED_AND_EXCLUDED;\n\n useEffect(() => {\n const dataEvent = events.on(\n 'quote-management/quote-data',\n (payload) => {\n setData(payload.quote as NegotiableQuoteModel);\n },\n { eager: true }\n );\n\n return () => {\n dataEvent?.off();\n };\n }, []);\n\n const translations = useText({\n free: 'NegotiableQuote.PriceSummary.total.free',\n orderSummary: 'NegotiableQuote.PriceSummary.orderSummary',\n taxToBeDetermined: 'NegotiableQuote.PriceSummary.taxToBeDetermined',\n });\n\n if (!Object.keys(data ?? {}).length) {\n return null;\n }\n\n return (\n <OrderSummaryComponent\n {...props}\n data-testid=\"quote-order-summary\"\n heading={<div>{translations.orderSummary}</div>}\n updateLineItems={updateLineItems}\n subTotal={{\n taxIncluded: isTaxIncludedInSubtotal && !isZeroTax,\n taxExcluded: isTaxIncludedAndExcludedInSubtotal,\n priceExcludingTax: (\n <Price\n data-testid=\"subtotal\"\n amount={data?.prices?.subtotalExcludingTax?.value}\n currency={data?.prices?.subtotalExcludingTax?.currency}\n />\n ),\n price:\n (!isZeroTax && isTaxIncludedInSubtotal) ||\n (!isZeroTax && isTaxIncludedAndExcludedInSubtotal) ? (\n <Price\n data-testid=\"subtotal\"\n amount={data?.prices?.subtotalIncludingTax?.value}\n currency={data?.prices?.subtotalIncludingTax?.currency}\n />\n ) : (\n <Price\n data-testid=\"subtotal\"\n amount={data?.prices?.subtotalExcludingTax?.value}\n currency={data?.prices?.subtotalExcludingTax?.currency}\n />\n ),\n }}\n shipping={{\n taxIncluded: isTaxIncludedInShipping && !isZeroTax,\n taxExcluded: isTaxIncludedAndExcludedInShipping,\n priceExcludingTax: (\n <Price\n data-testid=\"shipping\"\n amount={data?.prices?.shippingExcludingTax?.value}\n currency={data?.prices?.shippingExcludingTax?.currency}\n />\n ),\n price:\n (!isZeroTax && isTaxIncludedInShipping) ||\n (!isZeroTax && isTaxIncludedAndExcludedInShipping) ? (\n <Price\n data-testid=\"shipping\"\n amount={data?.prices?.shippingIncludingTax?.value}\n currency={data?.prices?.shippingIncludingTax?.currency}\n />\n ) : (\n <Price\n data-testid=\"shipping\"\n amount={data?.prices?.shippingExcludingTax?.value}\n currency={data?.prices?.shippingExcludingTax?.currency}\n />\n ),\n }}\n discounts={data?.prices?.appliedDiscounts?.map((discount) => {\n return {\n label: discount.label,\n price: (\n <Price\n data-testid=\"summary-discount-total\"\n amount={-discount.amount.value}\n currency={discount.amount.currency}\n sale={true}\n />\n ),\n coupon: discount?.coupon ? (\n <span>\n <Icon source={Coupon} size=\"16\" />\n {discount?.coupon?.code}\n </span>\n ) : undefined,\n };\n })}\n taxTotal={\n isVirtual && !data?.prices?.appliedTaxes?.length\n ? {\n price: (\n <span data-testid=\"tax-total-tbd\">\n {translations.taxToBeDetermined}\n </span>\n ),\n }\n : {\n price: (\n <Price\n data-testid=\"tax-total-actual\"\n amount={data?.prices?.totalTax?.value}\n currency={data?.prices?.totalTax?.currency}\n />\n ),\n }\n }\n taxesApplied={\n isVirtual\n ? undefined\n : quoteDisplaySettings?.fullSummary\n ? data?.prices?.appliedTaxes?.map((tax: any) => ({\n label: tax.label,\n price: (\n <Price\n data-testid=\"applied-taxes\"\n amount={tax.amount.value}\n currency={tax.amount.currency}\n />\n ),\n }))\n : undefined\n }\n total={{\n price:\n data?.prices?.grandTotal?.value === 0 ? (\n <span data-testid=\"total-including-tax\">{translations.free}</span>\n ) : (\n <Price\n data-testid=\"total-including-tax-actual\"\n amount={data?.prices?.grandTotal?.value}\n currency={data?.prices?.grandTotal?.currency}\n />\n ),\n priceWithoutTax: quoteDisplaySettings?.grandTotal ? (\n data?.prices?.grandTotalExcludingTax?.value === 0 ? (\n <span data-testid=\"total-excluding-tax\">{translations.free}</span>\n ) : (\n <Price\n data-testid=\"total-excluding-tax\"\n amount={data?.prices?.grandTotalExcludingTax?.value}\n currency={data?.prices?.grandTotalExcludingTax?.currency}\n />\n )\n ) : undefined,\n }}\n totalSaved={\n showTotalSaved ? (\n <Price\n amount={data?.prices?.discount?.value}\n currency={data?.prices?.grandTotal?.currency}\n />\n ) : undefined\n }\n />\n );\n};\n"],"names":["SvgChevronUp","props","React","SvgCoupon","OrderSummary","className","children","variant","heading","subTotal","shipping","discounts","taxTotal","taxesApplied","total","totalSaved","updateLineItems","lineItems","showTaxBreakdown","setShowTaxBreakdown","useState","translations","useText","subTotalContent","jsxs","OrderSummaryLine","jsx","shippingContent","discountsContent","Fragment","discount","VComponent","taxContent","Accordion","ChevronDown","ChevronUp","AccordionSection","tax","updatedLineItems","currentLine","nextLine","classes","Divider","line","innerLine","initialData","showTotalSaved","data","setData","isVirtual","quoteDisplaySettings","state","isZeroTax","isTaxIncludedInSubtotal","QuoteDisplayAmount","isTaxIncludedAndExcludedInSubtotal","isTaxIncludedInShipping","isTaxIncludedAndExcludedInShipping","useEffect","dataEvent","events","payload","OrderSummaryComponent","Price","_b","_a","_d","_c","_f","_e","_h","_g","_j","_i","_l","_k","_n","_m","_p","_o","_r","_q","_t","_s","_v","_u","_x","_w","_z","_y","Icon","Coupon","_B","_A","_D","_C","_F","_E","_H","_G","_J","_I","_L","_K","_N","_M","_P","_O","_R","_Q","_T","_S","_V","_U","_X","_W"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { HTMLAttributes } from 'preact/compat';
|
|
2
|
+
import { Container } from '@dropins/tools/types/elsie/src/lib';
|
|
3
|
+
import { VNode } from 'preact';
|
|
4
|
+
|
|
5
|
+
export interface OrderSummaryLineProps extends Omit<HTMLAttributes<HTMLDivElement>, 'label'> {
|
|
6
|
+
label: VNode | string;
|
|
7
|
+
price: VNode<HTMLAttributes<HTMLSpanElement>>;
|
|
8
|
+
classSuffixes?: Array<string>;
|
|
9
|
+
labelClassSuffix?: string;
|
|
10
|
+
testId?: string;
|
|
11
|
+
children?: any;
|
|
12
|
+
}
|
|
13
|
+
export declare const OrderSummaryLine: Container<OrderSummaryLineProps>;
|
|
14
|
+
//# sourceMappingURL=OrderSummaryLine.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 './OrderSummaryLine';
|
|
10
|
+
export { OrderSummaryLine as default } from './OrderSummaryLine';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/*! Copyright 2025 Adobe
|
|
2
|
+
All Rights Reserved. */
|
|
3
|
+
import{O as s,O as u}from"../chunks/OrderSummaryLine.js";import"@dropins/tools/preact-jsx-runtime.js";import"@dropins/tools/lib.js";/* empty css */import"@dropins/tools/components.js";import"@dropins/tools/preact-compat.js";import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";/* empty css *//* empty css */export{s as OrderSummaryLine,u as default};
|
|
4
|
+
//# sourceMappingURL=OrderSummaryLine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrderSummaryLine.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { HTMLAttributes } from 'preact/compat';
|
|
2
|
+
import { Container } from '@dropins/tools/types/elsie/src/lib';
|
|
3
|
+
import { NegotiableQuoteModel } from '../../data/models/negotiable-quote-model';
|
|
4
|
+
|
|
5
|
+
export interface QuoteCommentsListProps extends HTMLAttributes<HTMLUListElement> {
|
|
6
|
+
quoteData?: NegotiableQuoteModel;
|
|
7
|
+
}
|
|
8
|
+
export declare const QuoteCommentsList: Container<QuoteCommentsListProps>;
|
|
9
|
+
//# sourceMappingURL=QuoteCommentsList.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 './QuoteCommentsList';
|
|
10
|
+
export { QuoteCommentsList as default } from './QuoteCommentsList';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|