@dropins/storefront-quote-management 1.2.0-beta.1 → 1.2.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/api/acceptQuoteTemplate/acceptQuoteTemplate.d.ts +1 -2
  3. package/api/acceptQuoteTemplate/graphql/acceptQuoteTemplate.d.ts +0 -1
  4. package/api/acceptQuoteTemplate/index.d.ts +0 -1
  5. package/api/addQuoteTemplateLineItemNote/addQuoteTemplateLineItemNote.d.ts +1 -2
  6. package/api/addQuoteTemplateLineItemNote/graphql/setQuoteTemplateLineItemNote.d.ts +0 -1
  7. package/api/addQuoteTemplateLineItemNote/index.d.ts +0 -1
  8. package/api/addQuoteTemplateShippingAddress/addQuoteTemplateShippingAddress.d.ts +1 -2
  9. package/api/addQuoteTemplateShippingAddress/graphql/setNegotiableQuoteTemplateShippingAddress.d.ts +0 -1
  10. package/api/addQuoteTemplateShippingAddress/index.d.ts +0 -1
  11. package/api/cancelQuoteTemplate/cancelQuoteTemplate.d.ts +1 -2
  12. package/api/cancelQuoteTemplate/graphql/cancelQuoteTemplate.d.ts +0 -1
  13. package/api/cancelQuoteTemplate/index.d.ts +0 -1
  14. package/api/closeNegotiableQuote/closeNegotiableQuote.d.ts +0 -1
  15. package/api/closeNegotiableQuote/graphql/CloseNegotiableQuoteMutation.d.ts +0 -1
  16. package/api/closeNegotiableQuote/index.d.ts +0 -1
  17. package/api/createQuoteTemplate/createQuoteTemplate.d.ts +8 -2
  18. package/api/createQuoteTemplate/graphql/createQuoteTemplate.d.ts +0 -1
  19. package/api/createQuoteTemplate/index.d.ts +0 -1
  20. package/api/deleteQuote/deleteQuote.d.ts +0 -1
  21. package/api/deleteQuote/graphql/DeleteQuoteMutation.d.ts +0 -1
  22. package/api/deleteQuote/index.d.ts +0 -1
  23. package/api/deleteQuoteTemplate/deleteQuoteTemplate.d.ts +0 -1
  24. package/api/deleteQuoteTemplate/graphql/deleteQuoteTemplate.d.ts +0 -1
  25. package/api/deleteQuoteTemplate/index.d.ts +0 -1
  26. package/api/duplicateNegotiableQuote/duplicateNegotiableQuote.d.ts +8 -2
  27. package/api/duplicateNegotiableQuote/graphql/duplicateNegotiableQuoteMutation.d.ts +0 -1
  28. package/api/duplicateNegotiableQuote/index.d.ts +0 -1
  29. package/api/fetch-graphql/fetch-graphql.d.ts +3 -4
  30. package/api/fetch-graphql/index.d.ts +0 -1
  31. package/api/generateQuoteFromTemplate/generateQuoteFromTemplate.d.ts +0 -1
  32. package/api/generateQuoteFromTemplate/graphql/generateNegotiableQuoteFromTemplate.d.ts +0 -1
  33. package/api/generateQuoteFromTemplate/index.d.ts +0 -1
  34. package/api/getQuoteData/getQuoteData.d.ts +1 -2
  35. package/api/getQuoteData/graphql/QuoteDataQuery.d.ts +0 -1
  36. package/api/getQuoteData/index.d.ts +0 -1
  37. package/api/getQuoteTemplateData/getQuoteTemplateData.d.ts +8 -2
  38. package/api/getQuoteTemplateData/graphql/getQuoteTemplateData.d.ts +0 -1
  39. package/api/getQuoteTemplateData/index.d.ts +0 -1
  40. package/api/getQuoteTemplates/getQuoteTemplates.d.ts +8 -2
  41. package/api/getQuoteTemplates/graphql/getQuoteTemplates.d.ts +0 -1
  42. package/api/getQuoteTemplates/index.d.ts +0 -1
  43. package/api/getStoreConfig/getStoreConfig.d.ts +8 -2
  44. package/api/getStoreConfig/graphql/StoreConfigQuery.d.ts +0 -1
  45. package/api/getStoreConfig/index.d.ts +0 -1
  46. package/api/graphql/NegotiableQuoteAddressFragment.d.ts +0 -1
  47. package/api/graphql/NegotiableQuoteFragment.d.ts +0 -1
  48. package/api/graphql/NegotiableQuoteListFragment.d.ts +0 -1
  49. package/api/graphql/NegotiableQuoteTemplateFragment.d.ts +0 -1
  50. package/api/graphql/SearchResultPageInfoFragment.d.ts +0 -1
  51. package/api/graphql/ShippingMethodFragment.d.ts +0 -1
  52. package/api/graphql/SortFieldsFragment.d.ts +0 -1
  53. package/api/index.d.ts +0 -1
  54. package/api/initialize/index.d.ts +0 -1
  55. package/api/initialize/initialize.d.ts +10 -12
  56. package/api/negotiableQuotes/graphql/NegotiableQuotesQuery.d.ts +0 -1
  57. package/api/negotiableQuotes/index.d.ts +0 -1
  58. package/api/negotiableQuotes/negotiableQuotes.d.ts +8 -2
  59. package/api/openQuoteTemplate/graphql/openQuoteTemplate.d.ts +0 -1
  60. package/api/openQuoteTemplate/index.d.ts +0 -1
  61. package/api/openQuoteTemplate/openQuoteTemplate.d.ts +1 -2
  62. package/api/removeNegotiableQuoteItems/graphql/RemoveNegotiableQuoteItemsMutation.d.ts +0 -1
  63. package/api/removeNegotiableQuoteItems/index.d.ts +0 -1
  64. package/api/removeNegotiableQuoteItems/removeNegotiableQuoteItems.d.ts +8 -2
  65. package/api/removeQuoteTemplateItems/graphql/removeNegotiableQuoteTemplateItems.d.ts +0 -1
  66. package/api/removeQuoteTemplateItems/index.d.ts +0 -1
  67. package/api/removeQuoteTemplateItems/removeQuoteTemplateItems.d.ts +1 -2
  68. package/api/renameNegotiableQuote/graphql/RenameNegotiableQuoteMutation.d.ts +0 -1
  69. package/api/renameNegotiableQuote/index.d.ts +0 -1
  70. package/api/renameNegotiableQuote/renameNegotiableQuote.d.ts +8 -2
  71. package/api/requestNegotiableQuote/graphql/RequestNegotiableQuoteMutation.d.ts +0 -1
  72. package/api/requestNegotiableQuote/index.d.ts +0 -1
  73. package/api/requestNegotiableQuote/requestNegotiableQuote.d.ts +8 -2
  74. package/api/sendForReview/graphql/SendNegotiableQuoteForReviewMutation.d.ts +0 -1
  75. package/api/sendForReview/index.d.ts +0 -1
  76. package/api/sendForReview/sendForReview.d.ts +8 -2
  77. package/api/sendQuoteTemplateForReview/graphql/sendQuoteTemplateForReview.d.ts +0 -1
  78. package/api/sendQuoteTemplateForReview/index.d.ts +0 -1
  79. package/api/sendQuoteTemplateForReview/sendQuoteTemplateForReview.d.ts +1 -2
  80. package/api/setLineItemNote/graphql/SetLineItemNoteMutation.d.ts +0 -1
  81. package/api/setLineItemNote/index.d.ts +0 -1
  82. package/api/setLineItemNote/setLineItemNote.d.ts +8 -2
  83. package/api/setQuoteTemplateExpirationDate/graphql/setQuoteTemplateExpirationDate.d.ts +0 -1
  84. package/api/setQuoteTemplateExpirationDate/index.d.ts +0 -1
  85. package/api/setQuoteTemplateExpirationDate/setQuoteTemplateExpirationDate.d.ts +8 -2
  86. package/api/setShippingAddress/graphql/SetNegotiableQuoteShippingAddressMutation.d.ts +0 -1
  87. package/api/setShippingAddress/index.d.ts +0 -1
  88. package/api/setShippingAddress/setShippingAddress.d.ts +8 -2
  89. package/api/updateQuantities/graphql/UpdateNegotiableQuoteQuantitiesMutation.d.ts +0 -1
  90. package/api/updateQuantities/index.d.ts +0 -1
  91. package/api/updateQuantities/updateQuantities.d.ts +8 -2
  92. package/api/updateQuoteTemplateItemQuantities/graphql/updateNegotiableQuoteTemplateQuantities.d.ts +0 -1
  93. package/api/updateQuoteTemplateItemQuantities/index.d.ts +0 -1
  94. package/api/updateQuoteTemplateItemQuantities/updateQuoteTemplateItemQuantities.d.ts +1 -2
  95. package/api/uploadFile/graphql/FinishUploadMutation.d.ts +0 -1
  96. package/api/uploadFile/graphql/InitiateUploadMutation.d.ts +0 -1
  97. package/api/uploadFile/index.d.ts +0 -1
  98. package/api/uploadFile/uploadFile.d.ts +0 -1
  99. package/api.d.ts +1 -1
  100. package/api.js +1 -1
  101. package/api.js.map +1 -1
  102. package/chunks/ShippingAddressDisplay.js +1 -1
  103. package/chunks/components.js +1 -1
  104. package/components/ActionsBar/ActionsBar.d.ts +8 -2
  105. package/components/ActionsBar/index.d.ts +0 -1
  106. package/components/AttachedFilesList/AttachedFilesList.d.ts +8 -2
  107. package/components/AttachedFilesList/index.d.ts +0 -1
  108. package/components/ConfirmationModal/ConfirmationModal.d.ts +8 -2
  109. package/components/ConfirmationModal/index.d.ts +0 -1
  110. package/components/ExpirationDateModal/ExpirationDateModal.d.ts +8 -2
  111. package/components/ExpirationDateModal/index.d.ts +0 -1
  112. package/components/ItemsQuoted/ItemsQuoted.d.ts +8 -2
  113. package/components/ItemsQuoted/index.d.ts +0 -1
  114. package/components/LineItemNoteModal/LineItemNoteModal.d.ts +8 -2
  115. package/components/LineItemNoteModal/index.d.ts +0 -1
  116. package/components/ManageNegotiableQuote/ManageNegotiableQuote.d.ts +8 -2
  117. package/components/ManageNegotiableQuote/__fixtures__/ManageNegotiableQuoteProps.d.ts +1 -3
  118. package/components/ManageNegotiableQuote/index.d.ts +0 -1
  119. package/components/ManageNegotiableQuoteTemplate/ManageNegotiableQuoteTemplate.d.ts +8 -2
  120. package/components/ManageNegotiableQuoteTemplate/__fixtures__/ManageNegotiableQuoteTemplateProps.d.ts +1 -3
  121. package/components/ManageNegotiableQuoteTemplate/index.d.ts +0 -1
  122. package/components/OrderSummary/OrderSummary.d.ts +8 -2
  123. package/components/OrderSummary/index.d.ts +0 -1
  124. package/components/OrderSummaryLine/OrderSummaryLine.d.ts +8 -2
  125. package/components/OrderSummaryLine/index.d.ts +0 -1
  126. package/components/ProductListTable/ProductListTable.d.ts +8 -2
  127. package/components/ProductListTable/index.d.ts +0 -1
  128. package/components/QuoteCommentsList/QuoteCommentsList.d.ts +8 -2
  129. package/components/QuoteCommentsList/index.d.ts +0 -1
  130. package/components/QuoteHistoryLog/QuoteHistoryLog.d.ts +8 -2
  131. package/components/QuoteHistoryLog/index.d.ts +0 -1
  132. package/components/QuotePricesSummary/QuotePricesSummary.d.ts +8 -2
  133. package/components/QuotePricesSummary/index.d.ts +0 -1
  134. package/components/QuoteSummaryList/QuoteSummaryList.d.ts +8 -2
  135. package/components/QuoteSummaryList/index.d.ts +0 -1
  136. package/components/QuoteTemplatesListTable/QuoteTemplatesListTable.d.ts +8 -2
  137. package/components/QuoteTemplatesListTable/index.d.ts +0 -1
  138. package/components/QuotesListTable/QuotesListTable.d.ts +8 -2
  139. package/components/QuotesListTable/index.d.ts +0 -1
  140. package/components/ReferenceDocumentFormModal/ReferenceDocumentFormModal.d.ts +8 -2
  141. package/components/ReferenceDocumentFormModal/index.d.ts +0 -1
  142. package/components/ReferenceDocumentsList/ReferenceDocumentsList.d.ts +8 -2
  143. package/components/ReferenceDocumentsList/index.d.ts +0 -1
  144. package/components/RenameQuoteModal/RenameQuoteModal.d.ts +8 -2
  145. package/components/RenameQuoteModal/index.d.ts +0 -1
  146. package/components/RequestNegotiableQuoteForm/RequestNegotiableQuoteForm.d.ts +8 -2
  147. package/components/RequestNegotiableQuoteForm/index.d.ts +0 -1
  148. package/components/ShippingAddressDisplay/ShippingAddressDisplay.d.ts +8 -2
  149. package/components/ShippingAddressDisplay/index.d.ts +0 -1
  150. package/components/TabbedContent/TabbedContent.d.ts +8 -2
  151. package/components/TabbedContent/index.d.ts +0 -1
  152. package/components/index.d.ts +0 -1
  153. package/containers/ItemsQuoted/ItemsQuoted.d.ts +9 -3
  154. package/containers/ItemsQuoted/index.d.ts +0 -1
  155. package/containers/ItemsQuoted.d.ts +1 -3
  156. package/containers/ItemsQuoted.js +1 -1
  157. package/containers/ItemsQuoted.js.map +1 -1
  158. package/containers/ItemsQuotedTemplate/ItemsQuotedTemplate.d.ts +9 -3
  159. package/containers/ItemsQuotedTemplate/index.d.ts +0 -1
  160. package/containers/ItemsQuotedTemplate.d.ts +1 -3
  161. package/containers/ItemsQuotedTemplate.js +1 -1
  162. package/containers/ItemsQuotedTemplate.js.map +1 -1
  163. package/containers/ManageNegotiableQuote/ManageNegotiableQuote.d.ts +9 -3
  164. package/containers/ManageNegotiableQuote/index.d.ts +0 -1
  165. package/containers/ManageNegotiableQuote.d.ts +1 -3
  166. package/containers/ManageNegotiableQuote.js +3 -1
  167. package/containers/ManageNegotiableQuote.js.map +1 -1
  168. package/containers/ManageNegotiableQuoteTemplate/ManageNegotiableQuoteTemplate.d.ts +9 -3
  169. package/containers/ManageNegotiableQuoteTemplate/index.d.ts +0 -1
  170. package/containers/ManageNegotiableQuoteTemplate.d.ts +1 -3
  171. package/containers/ManageNegotiableQuoteTemplate.js +1 -3
  172. package/containers/ManageNegotiableQuoteTemplate.js.map +1 -1
  173. package/containers/OrderSummary/OrderSummary.d.ts +9 -3
  174. package/containers/OrderSummary/index.d.ts +0 -1
  175. package/containers/OrderSummary.d.ts +1 -3
  176. package/containers/OrderSummary.js +1 -1
  177. package/containers/OrderSummaryLine/OrderSummaryLine.d.ts +9 -3
  178. package/containers/OrderSummaryLine/index.d.ts +0 -1
  179. package/containers/OrderSummaryLine.d.ts +1 -3
  180. package/containers/OrderSummaryLine.js +1 -1
  181. package/containers/QuoteCommentsList/QuoteCommentsList.d.ts +9 -3
  182. package/containers/QuoteCommentsList/index.d.ts +0 -1
  183. package/containers/QuoteCommentsList.d.ts +1 -3
  184. package/containers/QuoteCommentsList.js +1 -1
  185. package/containers/QuoteCommentsList.js.map +1 -1
  186. package/containers/QuoteHistoryLog/QuoteHistoryLog.d.ts +9 -3
  187. package/containers/QuoteHistoryLog/index.d.ts +0 -1
  188. package/containers/QuoteHistoryLog.d.ts +1 -3
  189. package/containers/QuoteHistoryLog.js +1 -1
  190. package/containers/QuoteHistoryLog.js.map +1 -1
  191. package/containers/QuoteSummaryList/QuoteSummaryList.d.ts +10 -4
  192. package/containers/QuoteSummaryList/index.d.ts +0 -1
  193. package/containers/QuoteSummaryList.d.ts +1 -3
  194. package/containers/QuoteSummaryList.js +1 -1
  195. package/containers/QuoteSummaryList.js.map +1 -1
  196. package/containers/QuoteTemplateCommentsList/QuoteTemplateCommentsList.d.ts +9 -3
  197. package/containers/QuoteTemplateCommentsList/index.d.ts +0 -1
  198. package/containers/QuoteTemplateCommentsList.d.ts +1 -3
  199. package/containers/QuoteTemplateCommentsList.js +1 -1
  200. package/containers/QuoteTemplateCommentsList.js.map +1 -1
  201. package/containers/QuoteTemplateHistoryLog/QuoteTemplateHistoryLog.d.ts +9 -3
  202. package/containers/QuoteTemplateHistoryLog/index.d.ts +0 -1
  203. package/containers/QuoteTemplateHistoryLog.d.ts +1 -3
  204. package/containers/QuoteTemplateHistoryLog.js +1 -1
  205. package/containers/QuoteTemplateHistoryLog.js.map +1 -1
  206. package/containers/QuoteTemplatesListTable/QuoteTemplatesListTable.d.ts +9 -3
  207. package/containers/QuoteTemplatesListTable/index.d.ts +0 -1
  208. package/containers/QuoteTemplatesListTable.d.ts +1 -3
  209. package/containers/QuoteTemplatesListTable.js +1 -1
  210. package/containers/QuotesListTable/QuotesListTable.d.ts +9 -3
  211. package/containers/QuotesListTable/index.d.ts +0 -1
  212. package/containers/QuotesListTable.d.ts +1 -3
  213. package/containers/QuotesListTable.js +1 -1
  214. package/containers/QuotesListTable.js.map +1 -1
  215. package/containers/RequestNegotiableQuoteForm/RequestNegotiableQuoteForm.d.ts +9 -3
  216. package/containers/RequestNegotiableQuoteForm/index.d.ts +0 -1
  217. package/containers/RequestNegotiableQuoteForm.d.ts +1 -3
  218. package/containers/RequestNegotiableQuoteForm.js +1 -1
  219. package/containers/ShippingAddressDisplay/ShippingAddressDisplay.d.ts +9 -3
  220. package/containers/ShippingAddressDisplay/index.d.ts +0 -1
  221. package/containers/ShippingAddressDisplay.d.ts +1 -1
  222. package/containers/index.d.ts +0 -1
  223. package/data/models/__fixtures__/negotiableQuoteModel.d.ts +8 -2
  224. package/data/models/__fixtures__/negotiableQuoteTemplateModel.d.ts +8 -2
  225. package/data/models/__fixtures__/negotiableQuoteTemplatesListModel.d.ts +8 -2
  226. package/data/models/__fixtures__/negotiableQuotesListModel.d.ts +8 -2
  227. package/data/models/__fixtures__/storeConfigModel.d.ts +8 -2
  228. package/data/models/index.d.ts +0 -1
  229. package/data/models/negotiable-quote-model.d.ts +1 -2
  230. package/data/models/negotiable-quote-template-model.d.ts +8 -2
  231. package/data/models/store-config-model.d.ts +0 -1
  232. package/data/transforms/__fixtures__/negotiableQuoteData.d.ts +9 -4
  233. package/data/transforms/__fixtures__/negotiableQuoteTemplateData.d.ts +0 -1
  234. package/data/transforms/__fixtures__/storeConfigData.d.ts +0 -1
  235. package/data/transforms/index.d.ts +0 -1
  236. package/data/transforms/transform-history.d.ts +8 -2
  237. package/data/transforms/transform-quote-items.d.ts +8 -2
  238. package/data/transforms/transform-quote-template.d.ts +8 -2
  239. package/data/transforms/transform-quote.d.ts +8 -2
  240. package/data/transforms/transform-store-config.d.ts +8 -2
  241. package/hooks/useExpirationDate.d.ts +0 -1
  242. package/hooks/useItemsQuotedTemplate.d.ts +8 -2
  243. package/hooks/useQuoteSummaryData.d.ts +9 -4
  244. package/hooks/useReferenceDocumentLinks.d.ts +8 -2
  245. package/hooks/useRemoveTemplateItems.d.ts +8 -2
  246. package/hooks/useRenameTemplate.d.ts +0 -1
  247. package/hooks/useUpdateTemplateQuantities.d.ts +8 -2
  248. package/lib/configurationTransformers.d.ts +0 -1
  249. package/lib/itemFormatters.d.ts +11 -7
  250. package/lib/priceCalculators.d.ts +14 -13
  251. package/lib/state.d.ts +8 -3
  252. package/package.json +1 -1
  253. package/render/Provider.d.ts +8 -2
  254. package/render/index.d.ts +0 -1
  255. package/render/render.d.ts +9 -4
  256. package/render.d.ts +1 -1
  257. package/types/state.types.d.ts +8 -2
  258. package/utils/dateUtils.d.ts +0 -1
  259. package/utils/fileUtils.d.ts +0 -1
  260. package/utils/mapAuthPermissions.d.ts +8 -2
  261. package/chunks/ItemsQuoted.js +0 -4
  262. package/chunks/ItemsQuoted.js.map +0 -1
  263. package/chunks/ItemsQuotedTemplate.js +0 -4
  264. package/chunks/ItemsQuotedTemplate.js.map +0 -1
  265. package/chunks/QuoteCommentsList.js +0 -4
  266. package/chunks/QuoteCommentsList.js.map +0 -1
  267. package/chunks/QuoteHistoryLog.js +0 -4
  268. package/chunks/QuoteHistoryLog.js.map +0 -1
  269. package/chunks/QuoteTemplateCommentsList.js +0 -4
  270. package/chunks/QuoteTemplateCommentsList.js.map +0 -1
  271. package/chunks/QuoteTemplateHistoryLog.js +0 -4
  272. package/chunks/QuoteTemplateHistoryLog.js.map +0 -1
  273. package/i18n/en_US.json.d.ts +0 -485
@@ -1 +1 @@
1
- {"version":3,"file":"ItemsQuotedTemplate.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"ItemsQuotedTemplate.js","sources":["/@dropins/storefront-quote-management/src/hooks/useRemoveTemplateItems.ts","/@dropins/storefront-quote-management/src/hooks/useItemsQuotedTemplate.ts","/@dropins/storefront-quote-management/src/hooks/useUpdateTemplateQuantities.ts","/@dropins/storefront-quote-management/src/containers/ItemsQuotedTemplate/ItemsQuotedTemplate.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 { useState, useEffect, useCallback } from 'preact/compat';\nimport { events } from '@adobe-commerce/event-bus';\nimport { removeQuoteTemplateItems } from '@/quote-management/api/removeQuoteTemplateItems';\nimport { CartItemModel } from '@/quote-management/data/models/negotiable-quote-model';\n\nconst NOTIFICATION_AUTO_DISMISS_DELAY = 3000;\n\nexport interface UseRemoveTemplateItemsReturn {\n handleRemoveItems: (items: CartItemModel[]) => void;\n handleConfirmRemove: () => Promise<void>;\n handleCancelRemove: () => void;\n isRemoveModalOpen: boolean;\n itemsToRemove: CartItemModel[];\n isRemoving: boolean;\n removeNotificationState: {\n type: 'success' | 'error' | null;\n message: string;\n };\n}\n\nexport interface UseRemoveTemplateItemsParams {\n templateId?: string;\n onRemoveModalStateChange?: (isOpen: boolean) => void;\n removeSuccessMessage: string;\n removeErrorMessage: string;\n}\n\n/**\n * Custom hook to manage removing items from a quote template\n */\nexport const useRemoveTemplateItems = (\n params: UseRemoveTemplateItemsParams\n): UseRemoveTemplateItemsReturn => {\n const {\n templateId,\n onRemoveModalStateChange,\n removeSuccessMessage,\n removeErrorMessage,\n } = params;\n\n const [isRemoveModalOpen, setIsRemoveModalOpen] = useState(false);\n const [itemsToRemove, setItemsToRemove] = useState<CartItemModel[]>([]);\n const [isRemoving, setIsRemoving] = useState(false);\n const [removeNotificationState, setRemoveNotificationState] = useState<{\n type: 'success' | 'error' | null;\n message: string;\n }>({ type: null, message: '' });\n\n // Listen for quote template data event (successful removal)\n useEffect(() => {\n const templateDataEvent = events.on(\n 'quote-management/quote-template-data',\n () => {\n setItemsToRemove([]);\n setIsRemoving(false);\n setRemoveNotificationState({\n type: 'success',\n message: removeSuccessMessage,\n });\n // Auto-close success notification after delay\n setTimeout(() => {\n setIsRemoveModalOpen(false);\n setRemoveNotificationState({ type: null, message: '' });\n onRemoveModalStateChange?.(false);\n }, NOTIFICATION_AUTO_DISMISS_DELAY);\n }\n );\n return () => templateDataEvent?.off();\n }, [removeSuccessMessage, onRemoveModalStateChange]);\n\n // Unified handler for removing items (single or multiple)\n const handleRemoveItems = useCallback((items: CartItemModel[]) => {\n if (!items || items.length === 0) {\n return;\n }\n setItemsToRemove(items);\n setRemoveNotificationState({ type: null, message: '' });\n setIsRemoveModalOpen(true);\n }, []);\n\n const handleConfirmRemove = useCallback(async () => {\n if (!templateId || itemsToRemove.length === 0) {\n return;\n }\n\n const uidsToRemove = itemsToRemove.map((item) => item.uid).filter(Boolean) as string[];\n\n if (uidsToRemove.length === 0) {\n return;\n }\n\n setIsRemoving(true);\n setRemoveNotificationState({ type: null, message: '' });\n\n try {\n await removeQuoteTemplateItems({\n templateId,\n itemUids: uidsToRemove,\n });\n // Success is handled by the event listener\n } catch (err) {\n const errorMessage =\n err instanceof Error ? err.message : removeErrorMessage;\n setRemoveNotificationState({\n type: 'error',\n message: errorMessage,\n });\n setIsRemoving(false);\n }\n }, [templateId, itemsToRemove, removeErrorMessage]);\n\n const handleCancelRemove = useCallback(() => {\n setIsRemoveModalOpen(false);\n setRemoveNotificationState({ type: null, message: '' });\n onRemoveModalStateChange?.(false);\n setItemsToRemove([]);\n }, [onRemoveModalStateChange]);\n\n return {\n handleRemoveItems,\n handleConfirmRemove,\n handleCancelRemove,\n isRemoveModalOpen,\n itemsToRemove,\n isRemoving,\n removeNotificationState,\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';\nimport { CartItemModel } from '@/quote-management/data/models/negotiable-quote-model';\n\nexport interface UseItemsQuotedTemplateReturn {\n dropdownSelections: Record<string, string | undefined>;\n handleItemDropdownChange: (item: CartItemModel, action: string) => void;\n handleDismissRemoveBanner: () => void;\n clearDropdownSelection: (item: CartItemModel) => void;\n}\n\nexport interface UseItemsQuotedTemplateParams {\n handleRemoveItems: (items: CartItemModel[]) => void;\n}\n\n/**\n * Custom hook to manage dropdown selections and item actions for quote template items\n */\nexport const useItemsQuotedTemplate = (\n params: UseItemsQuotedTemplateParams\n): UseItemsQuotedTemplateReturn => {\n const { handleRemoveItems } = params;\n\n const [dropdownSelections, setDropdownSelections] = useState<\n Record<string, string | undefined>\n >({});\n\n const handleDismissRemoveBanner = useCallback(() => {\n // The hook manages its own notification state, but we can add custom dismiss logic if needed\n }, []);\n\n const clearDropdownSelection = useCallback((item: CartItemModel) => {\n const key = item.uid || '';\n setDropdownSelections((prev) => {\n if (!(key in prev)) {\n return prev;\n }\n const next = { ...prev };\n delete next[key];\n return next;\n });\n }, []);\n\n const handleItemDropdownChange = useCallback(\n (item: CartItemModel, action: string) => {\n const cartItem = item;\n\n // Handle remove action\n if (action === 'remove') {\n setDropdownSelections((prev) => ({\n ...prev,\n [cartItem.uid || '']: action,\n }));\n handleRemoveItems([cartItem]);\n // Dropdown is cleared when modal is closed/cancelled via clearDropdownSelection\n return;\n }\n\n // Clear dropdown selection for other actions\n setDropdownSelections((prev) => {\n if (!cartItem.uid || !(cartItem.uid in prev)) {\n return prev;\n }\n const next = { ...prev };\n delete next[cartItem.uid];\n return next;\n });\n },\n [handleRemoveItems]\n );\n\n return {\n dropdownSelections,\n handleItemDropdownChange,\n handleDismissRemoveBanner,\n clearDropdownSelection,\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, useEffect, useCallback } from 'preact/compat';\nimport { events } from '@adobe-commerce/event-bus';\nimport { updateQuoteTemplateItemQuantities } from '@/quote-management/api/updateQuoteTemplateItemQuantities';\nimport { CartItemModel } from '@/quote-management/data/models/negotiable-quote-model';\n\nconst NOTIFICATION_AUTO_DISMISS_DELAY = 3000;\n\nexport interface UseUpdateTemplateQuantitiesReturn {\n quantityChanges: Record<string, number>;\n handleQuantityChange: (item: CartItemModel, newQuantity: number) => void;\n handleUpdate: (e: SubmitEvent) => void;\n handleConfirmUpdate: () => Promise<void>;\n handleCancelUpdate: () => void;\n handleDismissBanner: () => void;\n isUpdateModalOpen: boolean;\n isUpdating: boolean;\n updateNotificationState: {\n type: 'success' | 'error' | null;\n message: string;\n };\n}\n\nexport interface UseUpdateTemplateQuantitiesParams {\n templateId?: string;\n onUpdateModalStateChange?: (isOpen: boolean) => void;\n updateSuccessMessage: string;\n updateErrorMessage: string;\n}\n\n/**\n * Custom hook to manage updating quantities of items in a quote template\n */\nexport const useUpdateTemplateQuantities = (\n params: UseUpdateTemplateQuantitiesParams\n): UseUpdateTemplateQuantitiesReturn => {\n const {\n templateId,\n onUpdateModalStateChange,\n updateSuccessMessage,\n updateErrorMessage,\n } = params;\n\n const [quantityChanges, setQuantityChanges] = useState<Record<string, number>>({});\n const [isUpdateModalOpen, setIsUpdateModalOpen] = useState(false);\n const [isUpdating, setIsUpdating] = useState(false);\n const [updateNotificationState, setUpdateNotificationState] = useState<{\n type: 'success' | 'error' | null;\n message: string;\n }>({ type: null, message: '' });\n\n // Listen for quote template data event (successful update)\n useEffect(() => {\n const templateDataEvent = events.on(\n 'quote-management/quote-template-data',\n () => {\n setQuantityChanges({});\n setIsUpdating(false);\n setUpdateNotificationState({\n type: 'success',\n message: updateSuccessMessage,\n });\n // Auto-close success notification after delay\n setTimeout(() => {\n setIsUpdateModalOpen(false);\n setUpdateNotificationState({ type: null, message: '' });\n onUpdateModalStateChange?.(false);\n }, NOTIFICATION_AUTO_DISMISS_DELAY);\n }\n );\n return () => templateDataEvent?.off();\n }, [updateSuccessMessage, onUpdateModalStateChange]);\n\n const handleQuantityChange = useCallback(\n (item: CartItemModel, newQuantity: number) => {\n const cartItem = item;\n if (!cartItem.uid) {\n return;\n }\n const itemUid = cartItem.uid;\n setQuantityChanges((prev) => ({\n ...prev,\n [itemUid]: newQuantity,\n }));\n },\n []\n );\n\n const handleUpdate = useCallback((e: SubmitEvent) => {\n e.preventDefault();\n setUpdateNotificationState({ type: null, message: '' });\n setIsUpdateModalOpen(true);\n }, []);\n\n const handleConfirmUpdate = useCallback(async () => {\n if (!templateId || Object.keys(quantityChanges).length === 0) {\n setIsUpdateModalOpen(false);\n return;\n }\n\n setIsUpdating(true);\n setUpdateNotificationState({ type: null, message: '' });\n\n // Map quantity changes to API format\n const items = Object.entries(quantityChanges).map(([itemId, quantity]) => ({\n itemId,\n quantity,\n }));\n\n try {\n await updateQuoteTemplateItemQuantities({\n templateId,\n items,\n });\n // Success is handled by the event listener\n } catch (err) {\n const errorMessage =\n err instanceof Error ? err.message : updateErrorMessage;\n setUpdateNotificationState({\n type: 'error',\n message: errorMessage,\n });\n setIsUpdating(false);\n }\n }, [templateId, quantityChanges, updateErrorMessage]);\n\n const handleCancelUpdate = useCallback(() => {\n setIsUpdateModalOpen(false);\n setUpdateNotificationState({ type: null, message: '' });\n onUpdateModalStateChange?.(false);\n setQuantityChanges({});\n }, [onUpdateModalStateChange]);\n\n const handleDismissBanner = useCallback(() => {\n setUpdateNotificationState({ type: null, message: '' });\n }, []);\n\n return {\n quantityChanges,\n handleQuantityChange,\n handleUpdate,\n handleConfirmUpdate,\n handleCancelUpdate,\n handleDismissBanner,\n isUpdateModalOpen,\n isUpdating,\n updateNotificationState,\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 useState,\n} from 'preact/compat';\nimport { Container, Slot, SlotProps } from '@adobe-commerce/elsie/lib';\nimport { events } from '@adobe-commerce/event-bus';\nimport { Price, InLineAlert } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { CheckWithCircle, WarningFilled } from '@adobe-commerce/elsie/icons';\nimport { NegotiableQuoteTemplateModel } from '@/quote-management/data/models/negotiable-quote-template-model';\nimport { CartItemModel } from '@/quote-management/data/models/negotiable-quote-model';\nimport {\n QuotePricesSummary,\n ProductListTable,\n ItemsQuoted as ItemsQuotedComponent,\n ConfirmationModal,\n} from '@/quote-management/components';\nimport { LineItemNoteModal } from '@/quote-management/components/LineItemNoteModal';\nimport { addQuoteTemplateLineItemNote } from '@/quote-management/api';\nimport { useRemoveTemplateItems } from '@/quote-management/hooks/useRemoveTemplateItems';\nimport { useItemsQuotedTemplate } from '@/quote-management/hooks/useItemsQuotedTemplate';\nimport { useUpdateTemplateQuantities } from '@/quote-management/hooks/useUpdateTemplateQuantities';\n\nexport interface ItemsQuotedTemplateProps\n extends HTMLAttributes<HTMLDivElement> {\n templateData?: NegotiableQuoteTemplateModel;\n slots?: {\n ProductListTable?: SlotProps<{\n items: NegotiableQuoteTemplateModel['items'];\n canEdit: boolean;\n dropdownSelections: Record<string, string | undefined>;\n handleItemDropdownChange: (item: CartItemModel, action: string) => void;\n handleQuantityChange: (item: CartItemModel, newQuantity: number) => void;\n handleUpdate: (e: SubmitEvent) => void;\n onItemDropdownChange?: (item: any, action: string) => void;\n }>;\n QuotePricesSummary?: SlotProps<{\n items: NegotiableQuoteTemplateModel['items'];\n prices: NegotiableQuoteTemplateModel['prices'];\n }>;\n };\n}\n\nexport const ItemsQuotedTemplate: Container<ItemsQuotedTemplateProps> = ({\n templateData: initialData,\n slots,\n ...props\n}) => {\n const [templateData, setTemplateData] = useState<\n NegotiableQuoteTemplateModel | undefined\n >(initialData);\n const [selectedItem, setSelectedItem] = useState<CartItemModel | null>(null);\n const [isLineItemNoteModalOpen, setIsLineItemNoteModalOpen] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [modalErrorMessage, setModalErrorMessage] = useState('');\n const [dropdownSelections, setDropdownSelections] = useState<\n Record<string, string>\n >({});\n\n const dictionary = useText({\n subtotal:\n 'NegotiableQuoteTemplate.Manage.quotePricesSummary.subtotal.excludingTax',\n grandTotal:\n 'NegotiableQuoteTemplate.Manage.quotePricesSummary.grandTotal.includingTax',\n appliedTaxes:\n 'NegotiableQuoteTemplate.Manage.quotePricesSummary.appliedTaxes',\n removeModalTitle: 'NegotiableQuoteTemplate.Manage.removeItemsModal.title',\n removeModalDescription:\n 'NegotiableQuoteTemplate.Manage.removeItemsModal.description',\n removeModalCancelButton:\n 'NegotiableQuoteTemplate.Manage.removeItemsModal.cancelButton',\n removeModalConfirmButton:\n 'NegotiableQuoteTemplate.Manage.removeItemsModal.confirmButton',\n removeModalConfirmButtonRemoving:\n 'NegotiableQuoteTemplate.Manage.removeItemsModal.confirmButtonRemoving',\n removeSuccessHeading:\n 'NegotiableQuoteTemplate.Manage.removeItemsModal.successHeading',\n removeSuccessMessage:\n 'NegotiableQuoteTemplate.Manage.removeItemsModal.successMessage',\n removeErrorHeading:\n 'NegotiableQuoteTemplate.Manage.removeItemsModal.errorHeading',\n removeErrorMessage:\n 'NegotiableQuoteTemplate.Manage.removeItemsModal.errorMessage',\n updateModalTitle:\n 'NegotiableQuoteTemplate.Manage.updateQuantitiesModal.title',\n updateModalDescription:\n 'NegotiableQuoteTemplate.Manage.updateQuantitiesModal.description',\n updateModalCancelButton:\n 'NegotiableQuoteTemplate.Manage.updateQuantitiesModal.cancelButton',\n updateModalUpdateButton:\n 'NegotiableQuoteTemplate.Manage.updateQuantitiesModal.updateButton',\n updateSuccessHeading:\n 'NegotiableQuoteTemplate.Manage.updateQuantitiesModal.successHeading',\n updateSuccessMessage:\n 'NegotiableQuoteTemplate.Manage.updateQuantitiesModal.successMessage',\n updateErrorHeading:\n 'NegotiableQuoteTemplate.Manage.updateQuantitiesModal.errorHeading',\n updateErrorMessage:\n 'NegotiableQuoteTemplate.Manage.updateQuantitiesModal.errorMessage',\n errorHeading:\n 'NegotiableQuoteTemplate.Manage.lineItemNoteModal.errorHeading',\n });\n\n // Use the remove template items hook\n const {\n handleRemoveItems,\n handleConfirmRemove,\n handleCancelRemove,\n isRemoveModalOpen,\n isRemoving,\n removeNotificationState,\n itemsToRemove,\n } = useRemoveTemplateItems({\n templateId: templateData?.id,\n removeSuccessMessage: dictionary.removeSuccessMessage,\n removeErrorMessage: dictionary.removeErrorMessage,\n });\n\n // Use the items quoted template hook for dropdown and interaction logic\n const {\n dropdownSelections: hookDropdownSelections,\n handleItemDropdownChange: hookHandleItemDropdownChange,\n handleDismissRemoveBanner,\n clearDropdownSelection,\n } = useItemsQuotedTemplate({\n handleRemoveItems,\n });\n\n // Use the update template quantities hook\n const {\n handleQuantityChange,\n handleUpdate,\n handleConfirmUpdate,\n handleCancelUpdate,\n handleDismissBanner,\n isUpdateModalOpen,\n updateNotificationState,\n } = useUpdateTemplateQuantities({\n templateId: templateData?.id,\n updateSuccessMessage: dictionary.updateSuccessMessage,\n updateErrorMessage: dictionary.updateErrorMessage,\n });\n\n useEffect(() => {\n const templateDataEvent = events.on(\n 'quote-management/quote-template-data',\n (payload) => {\n setTemplateData(payload.quoteTemplate);\n setDropdownSelections({});\n },\n { eager: true }\n );\n\n return () => templateDataEvent?.off();\n }, []);\n\n // Wrapper for cancel remove that also clears dropdown selection\n const handleCancelRemoveWithCleanup = useCallback(() => {\n // Clear dropdown selections for all cancelled items\n itemsToRemove.forEach((item) => {\n clearDropdownSelection(item);\n });\n handleCancelRemove();\n }, [itemsToRemove, clearDropdownSelection, handleCancelRemove]);\n\n // Combined handler for dropdown selection that handles both remove (via hook) and edit (for line item notes)\n const handleItemDropdownChange = useCallback(\n (item: CartItemModel, action: string) => {\n const templateItem = item;\n\n // Handle edit action - open line item note modal\n if (action === 'edit') {\n setSelectedItem(templateItem);\n setIsLineItemNoteModalOpen(true);\n // Keep 'edit' selected while modal is open - dropdown is cleared in handleModalClose\n setDropdownSelections((prev) => ({\n ...prev,\n [templateItem.uid]: action,\n }));\n return;\n }\n\n // For remove and other actions, delegate to hook handler\n hookHandleItemDropdownChange(item, action);\n },\n [hookHandleItemDropdownChange]\n );\n\n // Merge dropdown selections from hook and local state\n const mergedDropdownSelections = {\n ...hookDropdownSelections,\n ...dropdownSelections,\n };\n\n // Handle modal close\n const handleModalClose = useCallback(() => {\n // Clean up dropdown selection for the selected item before clearing it\n /* istanbul ignore else: defensive check - selectedItem should always be truthy when modal is open */\n if (selectedItem) {\n setDropdownSelections((prev) => {\n const next = { ...prev };\n delete next[selectedItem.uid];\n return next;\n });\n }\n setIsLineItemNoteModalOpen(false);\n setSelectedItem(null);\n setIsSubmitting(false);\n setModalErrorMessage('');\n }, [selectedItem]);\n\n // Handle modal confirm - submit note only (quantity is read-only for templates)\n const handleModalConfirm = useCallback(\n async (note: string) => {\n /* istanbul ignore next: defensive guard for async race conditions - unreachable in normal flow as modal only renders with selectedItem and templateData */\n if (!selectedItem || !templateData) return;\n\n setIsSubmitting(true);\n setModalErrorMessage('');\n\n try {\n // Set the line item note\n await addQuoteTemplateLineItemNote({\n templateId: templateData.id,\n itemId: selectedItem.uid,\n note,\n });\n\n // Close modal on success\n handleModalClose();\n } catch (error) {\n console.error('Failed to set template line item note:', error);\n const errorMessage =\n error instanceof Error\n ? error.message\n : 'Unable to update the item. Please try again.';\n setModalErrorMessage(errorMessage);\n setIsSubmitting(false);\n }\n },\n [selectedItem, templateData, handleModalClose]\n );\n\n // Create remove confirmation banner based on notification state\n const removeConfirmationBanner =\n removeNotificationState.type === 'success' ? (\n <InLineAlert\n type=\"success\"\n variant=\"primary\"\n icon={<CheckWithCircle />}\n heading={dictionary.removeSuccessHeading}\n description={removeNotificationState.message}\n onDismiss={handleDismissRemoveBanner}\n data-testid=\"remove-items-success-banner\"\n />\n ) : removeNotificationState.type === 'error' ? (\n <InLineAlert\n type=\"error\"\n variant=\"primary\"\n icon={<WarningFilled />}\n heading={dictionary.removeErrorHeading}\n description={removeNotificationState.message}\n onDismiss={handleDismissRemoveBanner}\n data-testid=\"remove-items-error-banner\"\n />\n ) : null;\n\n // Create update quantities confirmation banner based on notification state\n const updateConfirmationBanner =\n updateNotificationState.type === 'success' ? (\n <InLineAlert\n type=\"success\"\n variant=\"primary\"\n icon={<CheckWithCircle />}\n heading={dictionary.updateSuccessHeading}\n description={updateNotificationState.message}\n onDismiss={handleDismissBanner}\n data-testid=\"update-quantities-success-banner\"\n />\n ) : updateNotificationState.type === 'error' ? (\n <InLineAlert\n type=\"error\"\n variant=\"primary\"\n icon={<WarningFilled />}\n heading={dictionary.updateErrorHeading}\n description={updateNotificationState.message}\n onDismiss={handleDismissBanner}\n data-testid=\"update-quantities-error-banner\"\n />\n ) : null;\n\n if (!templateData) {\n return <ItemsQuotedComponent loading={true} />;\n }\n\n const removeConfirmationModalProps = isRemoveModalOpen\n ? {\n open: true,\n title: dictionary.removeModalTitle,\n message: dictionary.removeModalDescription,\n cancelLabel: dictionary.removeModalCancelButton,\n confirmLabel: isRemoving\n ? dictionary.removeModalConfirmButtonRemoving\n : dictionary.removeModalConfirmButton,\n onCancel: handleCancelRemoveWithCleanup,\n onConfirm: handleConfirmRemove,\n confirmationBanner: removeConfirmationBanner,\n }\n : null;\n\n const updateConfirmationModalProps = isUpdateModalOpen\n ? {\n open: true,\n title: dictionary.updateModalTitle,\n message: dictionary.updateModalDescription,\n cancelLabel: dictionary.updateModalCancelButton,\n confirmLabel: dictionary.updateModalUpdateButton,\n onCancel: handleCancelUpdate,\n onConfirm: handleConfirmUpdate,\n confirmationBanner: updateConfirmationBanner,\n }\n : null;\n\n // Only define a single confirmation modal\n const confirmationModalProps =\n removeConfirmationModalProps || updateConfirmationModalProps;\n\n const quotePricesSummaryEntries = [];\n\n templateData.prices.subtotalExcludingTax &&\n quotePricesSummaryEntries.push({\n label: dictionary.subtotal,\n id: 'subtotal',\n value: (\n <Price\n amount={templateData.prices.subtotalExcludingTax.value}\n currency={templateData.prices.subtotalExcludingTax.currency}\n weight=\"normal\"\n />\n ),\n });\n\n templateData.prices.grandTotal &&\n quotePricesSummaryEntries.push({\n label: dictionary.grandTotal,\n id: 'total',\n value: (\n <Price\n amount={templateData.prices.grandTotal.value}\n currency={templateData.prices.grandTotal.currency}\n />\n ),\n strong: true,\n });\n\n // Create modal error banner\n const modalErrorBanner = modalErrorMessage ? (\n <InLineAlert\n type=\"error\"\n variant=\"primary\"\n icon={<WarningFilled />}\n heading={dictionary.errorHeading}\n description={modalErrorMessage}\n onDismiss={() => setModalErrorMessage('')}\n data-testid=\"line-item-note-error-banner\"\n />\n ) : null;\n\n return (\n <>\n <ItemsQuotedComponent\n data-testid=\"items-quoted-template-container\"\n {...props}\n loading={false}\n table={\n <Slot\n name=\"ProductListTable\"\n slot={slots?.ProductListTable}\n context={{\n items: templateData.items,\n canEdit: templateData.canSendForReview,\n dropdownSelections: mergedDropdownSelections,\n handleItemDropdownChange,\n handleQuantityChange,\n handleUpdate,\n }}\n >\n <ProductListTable\n items={templateData.items}\n canEdit={templateData.canSendForReview}\n showActions={templateData.canEditTemplateItems}\n onItemDropdownChange={handleItemDropdownChange}\n onQuantityChange={handleQuantityChange}\n onUpdate={handleUpdate}\n dropdownSelections={mergedDropdownSelections}\n />\n </Slot>\n }\n pricesSummary={\n <Slot\n name=\"QuotePricesSummary\"\n slot={slots?.QuotePricesSummary}\n context={{\n items: templateData.items,\n prices: templateData.prices,\n }}\n >\n <QuotePricesSummary entries={quotePricesSummaryEntries} />\n </Slot>\n }\n />\n {/* Confirmation Modal for remove/update */}\n {confirmationModalProps && (\n <ConfirmationModal {...confirmationModalProps} />\n )}\n {/* Line Item Note Modal */}\n {selectedItem && (\n <LineItemNoteModal\n open={isLineItemNoteModalOpen}\n item={selectedItem as any}\n onClose={handleModalClose}\n onConfirm={handleModalConfirm}\n isSubmitting={isSubmitting}\n readOnlyQuantity={true}\n errorBanner={modalErrorBanner || undefined}\n />\n )}\n </>\n );\n};\n"],"names":["NOTIFICATION_AUTO_DISMISS_DELAY","useRemoveTemplateItems","params","templateId","onRemoveModalStateChange","removeSuccessMessage","removeErrorMessage","isRemoveModalOpen","setIsRemoveModalOpen","useState","itemsToRemove","setItemsToRemove","isRemoving","setIsRemoving","removeNotificationState","setRemoveNotificationState","useEffect","templateDataEvent","events","handleRemoveItems","useCallback","items","handleConfirmRemove","uidsToRemove","item","removeQuoteTemplateItems","err","errorMessage","handleCancelRemove","useItemsQuotedTemplate","dropdownSelections","setDropdownSelections","handleDismissRemoveBanner","clearDropdownSelection","key","prev","next","handleItemDropdownChange","action","cartItem","useUpdateTemplateQuantities","onUpdateModalStateChange","updateSuccessMessage","updateErrorMessage","quantityChanges","setQuantityChanges","isUpdateModalOpen","setIsUpdateModalOpen","isUpdating","setIsUpdating","updateNotificationState","setUpdateNotificationState","handleQuantityChange","newQuantity","itemUid","handleUpdate","e","handleConfirmUpdate","itemId","quantity","updateQuoteTemplateItemQuantities","handleCancelUpdate","handleDismissBanner","ItemsQuotedTemplate","initialData","slots","props","templateData","setTemplateData","selectedItem","setSelectedItem","isLineItemNoteModalOpen","setIsLineItemNoteModalOpen","isSubmitting","setIsSubmitting","modalErrorMessage","setModalErrorMessage","dictionary","useText","hookDropdownSelections","hookHandleItemDropdownChange","payload","handleCancelRemoveWithCleanup","templateItem","mergedDropdownSelections","handleModalClose","handleModalConfirm","note","addQuoteTemplateLineItemNote","error","removeConfirmationBanner","jsx","InLineAlert","CheckWithCircle","WarningFilled","updateConfirmationBanner","ItemsQuotedComponent","removeConfirmationModalProps","updateConfirmationModalProps","confirmationModalProps","quotePricesSummaryEntries","Price","modalErrorBanner","jsxs","Fragment","Slot","ProductListTable","QuotePricesSummary","ConfirmationModal","LineItemNoteModal"],"mappings":"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"}
@@ -1,8 +1,15 @@
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
+ *******************************************************************/
1
9
  import { HTMLAttributes } from 'preact/compat';
2
- import { Container, SlotProps } from '@dropins/tools/types/elsie/src/lib';
10
+ import { Container, SlotProps } from '@dropins/tools/lib';
3
11
  import { NegotiableQuoteModel } from '../../data/models/negotiable-quote-model';
4
12
  import { AttachedFile } from '../../components';
5
-
6
13
  export interface ManageNegotiableQuoteProps extends HTMLAttributes<HTMLDivElement> {
7
14
  onActionsDropdownChange?: (event: Event) => void;
8
15
  onActionsButtonClick?: (action: string) => void;
@@ -87,4 +94,3 @@ export interface ManageNegotiableQuoteProps extends HTMLAttributes<HTMLDivElemen
87
94
  };
88
95
  }
89
96
  export declare const ManageNegotiableQuote: Container<ManageNegotiableQuoteProps>;
90
- //# sourceMappingURL=ManageNegotiableQuote.d.ts.map
@@ -8,4 +8,3 @@
8
8
  *******************************************************************/
9
9
  export * from './ManageNegotiableQuote';
10
10
  export { ManageNegotiableQuote as default } from './ManageNegotiableQuote';
11
- //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1 @@
1
- export * from './ManageNegotiableQuote/index'
2
- import _default from './ManageNegotiableQuote/index'
3
- export default _default
1
+ export * from './ManageNegotiableQuote/index';
@@ -1,4 +1,6 @@
1
1
  /*! Copyright 2026 Adobe
2
2
  All Rights Reserved. */
3
- import{jsx as o,jsxs as N,Fragment as na}from"@dropins/tools/preact-jsx-runtime.js";import{useState as c,useRef as Ne,useEffect as h,useCallback as l,useMemo as g,createPortal as x}from"@dropins/tools/preact-compat.js";import{Slot as m}from"@dropins/tools/lib.js";import{v as za,f as $a,a as Va,k as ja,c as F,d as oa,l as Ga,T as Ka,S as Xa,A as Ja,b as _,M as Ya,m as Za,C as B}from"../chunks/components.js";import{events as Q}from"@dropins/tools/event-bus.js";import{InLineAlert as p,Button as ia,TextArea as Aa,InputFile as et}from"@dropins/tools/components.js";import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";import{S as at}from"../chunks/ShippingAddressDisplay.js";import{Q as tt}from"../chunks/QuoteHistoryLog.js";import{getQuoteData as nt,uploadFile as ot,renameNegotiableQuote as it,closeNegotiableQuote as rt,createQuoteTemplate as ct,sendForReview as lt,deleteQuote as st,duplicateQuote as dt}from"../api.js";import{I as mt}from"../chunks/ItemsQuoted.js";import{Q as ut}from"../chunks/QuoteCommentsList.js";import{useText as gt}from"@dropins/tools/i18n.js";import"@dropins/tools/fetch-graphql.js";const xt=({onActionsDropdownChange:U,slots:t,onActionsButtonClick:u,onSendForReview:A,maxFiles:W,maxFileSize:P,acceptedFileTypes:T,onDuplicateQuote:ee,...ra})=>{const[e,C]=c(void 0),[z,ae]=c(!0),[Qe,Te]=c(!1),[Ce,L]=c(null),[ca,$]=c(!1),[ve,te]=c(!1),[ye,v]=c(null),[la,I]=c(!1),[Ee,Fe]=c(!1),[y,Ie]=c(""),[M,ne]=c(!1),[De,oe]=c(!1),[qe,ie]=c(!1),[we,D]=c(""),[xe,R]=c(""),[Le,re]=c(!1),[Re,He]=c(!1),[Oe,H]=c(""),[ke,V]=c(""),[_e,ce]=c(!1),[j,G]=c(""),[le,K]=c(""),[se,O]=c(""),[sa,q]=c(""),[de,X]=c(""),[f,k]=c([]),[J,Y]=c(void 0),[me,Be]=c(new Set),Ue=Ne(me),ue=Ne(null),[w,ge]=c(""),Z=Ne(w),[We,Pe]=c(!1);h(()=>{Ue.current=me},[me]),h(()=>{Z.current=w},[w]);const n=gt({createdLabel:"NegotiableQuote.Manage.createdLabel",salesRepLabel:"NegotiableQuote.Manage.salesRepLabel",expiresLabel:"NegotiableQuote.Manage.expiresLabel",actionsLabel:"NegotiableQuote.Manage.actionsLabel",remove:"NegotiableQuote.Manage.actions.remove",close:"NegotiableQuote.Manage.actionButtons.close",delete:"NegotiableQuote.Manage.actionButtons.delete",print:"NegotiableQuote.Manage.actionButtons.print",createTemplate:"NegotiableQuote.Manage.actionButtons.createTemplate",createCopy:"NegotiableQuote.Manage.actionButtons.createCopy",shippingInformationTitle:"NegotiableQuote.Manage.shippingInformation.title",quoteCommentsTitle:"NegotiableQuote.Manage.quoteComments.title",quoteCommentsPlaceholder:"NegotiableQuote.Manage.quoteComments.placeholder",sendForReview:"NegotiableQuote.Manage.actionButtons.sendForReview",bannerTitle:"NegotiableQuote.Manage.bannerTitle",statusSubmitted:"NegotiableQuote.Manage.bannerStatusMessages.submitted",statusPending:"NegotiableQuote.Manage.bannerStatusMessages.pending",statusExpired:"NegotiableQuote.Manage.bannerStatusMessages.expired",errorFallback:"NegotiableQuote.Manage.confirmationModal.delete.errorFallback",closeSuccessMessage:"NegotiableQuote.Manage.confirmationModal.close.successDescription",closeModalTitle:"NegotiableQuote.Manage.actionButtons.close",closeModalMessage:"NegotiableQuote.Manage.confirmationModal.close.message",closeModalCancel:"NegotiableQuote.Manage.confirmationModal.cancel",closeModalConfirm:"NegotiableQuote.Manage.confirmationModal.close.confirm",closeModalConfirmLoading:"NegotiableQuote.Manage.confirmationModal.close.confirmLoading",closeModalSuccessHeading:"NegotiableQuote.Manage.confirmationModal.close.successHeading",createTemplateModalTitle:"NegotiableQuote.Manage.actionButtons.createTemplate",createTemplateModalMessage:"NegotiableQuote.Manage.confirmationModal.createTemplate.message",createTemplateModalCancel:"NegotiableQuote.Manage.confirmationModal.cancel",createTemplateModalConfirm:"NegotiableQuote.Manage.confirmationModal.createTemplate.confirm",createTemplateModalConfirmLoading:"NegotiableQuote.Manage.confirmationModal.createTemplate.confirmLoading",createTemplateModalSuccessHeading:"NegotiableQuote.Manage.confirmationModal.createTemplate.successHeading",createTemplateSuccessMessage:"NegotiableQuote.Manage.confirmationModal.createTemplate.successDescription",createTemplateModalErrorHeading:"NegotiableQuote.Manage.confirmationModal.createTemplate.errorHeading",createTemplateErrorFallback:"NegotiableQuote.Manage.confirmationModal.createTemplate.errorFallback",renameErrorHeading:"NegotiableQuote.Manage.rename.errorHeading",renameQuoteNameRequired:"NegotiableQuote.Manage.rename.quoteNameRequired",renameErrorDefault:"NegotiableQuote.Manage.rename.errorDefault",renameSuccessHeading:"NegotiableQuote.Manage.rename.successHeading",renameSuccessMessage:"NegotiableQuote.Manage.rename.successMessage",confirmationModalCancel:"NegotiableQuote.Manage.confirmationModal.cancel",confirmationModalDeleteTitle:"NegotiableQuote.Manage.confirmationModal.delete.title",confirmationModalDeleteMessage:"NegotiableQuote.Manage.confirmationModal.delete.message",confirmationModalDeleteConfirm:"NegotiableQuote.Manage.confirmationModal.delete.confirm",confirmationModalDeleteErrorHeading:"NegotiableQuote.Manage.confirmationModal.delete.errorHeading",confirmationModalDeleteErrorFallback:"NegotiableQuote.Manage.confirmationModal.delete.errorFallback",confirmationModalDeleteSuccessHeading:"NegotiableQuote.Manage.confirmationModal.delete.successHeading",confirmationModalDeleteSuccessDescription:"NegotiableQuote.Manage.confirmationModal.delete.successDescription",confirmationModalDuplicateTitle:"NegotiableQuote.Manage.confirmationModal.duplicate.title",confirmationModalDuplicateMessage:"NegotiableQuote.Manage.confirmationModal.duplicate.message",confirmationModalDuplicateConfirm:"NegotiableQuote.Manage.confirmationModal.duplicate.confirm",confirmationModalDuplicateErrorHeading:"NegotiableQuote.Manage.confirmationModal.duplicate.errorHeading",confirmationModalDuplicateErrorFallback:"NegotiableQuote.Manage.confirmationModal.duplicate.errorFallback",confirmationModalDuplicateSuccessHeading:"NegotiableQuote.Manage.confirmationModal.duplicate.successHeading",confirmationModalDuplicateSuccessDescription:"NegotiableQuote.Manage.confirmationModal.duplicate.successDescription",duplicateOutOfStockWarningHeading:"NegotiableQuote.Manage.confirmationModal.duplicate.outOfStockWarningHeading",duplicateOutOfStockWarningMessage:"NegotiableQuote.Manage.confirmationModal.duplicate.outOfStockWarningMessage",noItemsSelectedModalTitle:"NegotiableQuote.Manage.confirmationModal.noItemsSelected.title",noItemsSelectedModalMessage:"NegotiableQuote.Manage.confirmationModal.noItemsSelected.message",noItemsSelectedModalConfirm:"NegotiableQuote.Manage.confirmationModal.noItemsSelected.confirm",attachFiles:"NegotiableQuote.Manage.attachFiles",fileUploadError:"NegotiableQuote.Manage.fileUploadError",maxFilesExceeded:"NegotiableQuote.Manage.maxFilesExceeded",maxFileSizeExceeded:"NegotiableQuote.Manage.maxFileSizeExceeded",invalidFileType:"NegotiableQuote.Manage.invalidFileType"});h(()=>{const a=Q.on("quote-management/quote-data",i=>{const{quote:r}=i;if(r){C(r),ae(!1);const s=`duplicate-outOfStock-warning-${r.uid}`;sessionStorage.getItem(s)==="true"&&(Fe(!0),sessionStorage.removeItem(s))}},{eager:!0});return()=>a==null?void 0:a.off()},[]),h(()=>{const a=Q.on("quote-management/shipping-address-set",i=>{const{quote:r}=i;r&&C(r)},{eager:!0});return()=>a==null?void 0:a.off()},[]),h(()=>{const a=Q.on("quote-management/quote-sent-for-review",i=>{const{quote:r}=i;C(r),Ie(""),k([]),ne(!1)},{eager:!0});return()=>a==null?void 0:a.off()},[]),h(()=>{const a=Q.on("quote-management/quote-items-removed",i=>{const{quote:r,removedItemUids:s}=i;r&&C(r),s&&Be(d=>{const b=new Set(d);return s.forEach(E=>b.delete(E)),b})},{eager:!0});return()=>a==null?void 0:a.off()},[]);const ze=l((a,i)=>{Be(r=>{const s=new Set(r);return i?s.add(a.uid):s.delete(a.uid),s})},[]),$e=l(a=>{const i=a.target.value,r=Ue.current;if(i==="remove"){if(ge(i),Z.current=i,r.size===0)Pe(!0);else if(e&&ue.current){const s=e.items.filter(d=>r.has(d.uid));ue.current(s)}}U==null||U(a)},[U,e]),Ve=l(()=>{Pe(!1),ge(""),Z.current=""},[]);h(()=>{const a=Q.on("quote-management/negotiable-quote-closed",async i=>{ie(!1),R(""),D(n.closeSuccessMessage),C(r=>{var s;return r!=null&&r.uid&&((s=i.closedQuoteUids)!=null&&s.includes(r.uid))&&nt(r.uid).then(d=>{C(d)}).catch(d=>{console.warn("Failed to refresh quote data after closure:",d)}),r}),setTimeout(()=>{oe(!1),D("")},2e3)},{eager:!0});return()=>a==null?void 0:a.off()},[n.closeSuccessMessage]),h(()=>{const a=Q.on("quote-management/negotiable-quote-close-error",i=>{console.log("Close error event received:",i),ie(!1),D("");const r=i.error.message||n.errorFallback;R(r)},{eager:!0});return()=>a==null?void 0:a.off()},[n.errorFallback]),h(()=>{const a=Q.on("quote-management/quote-renamed",i=>{const{quote:r}=i;C(r),O(""),q(""),X(n.renameSuccessMessage),setTimeout(()=>{ce(!1),G(""),K(""),X("")},2e3)},{eager:!0});return()=>a==null?void 0:a.off()},[n.renameSuccessMessage]),h(()=>{const a=Q.on("quote-management/quote-duplicated",i=>{const{quote:r}=i;e&&ee&&ee({quoteData:e,newQuote:r}),I(!0),v(null),setTimeout(()=>{te(!1),I(!1),v(null)},2e3)},{eager:!0});return()=>a==null?void 0:a.off()},[e,ee]);const fe=l(async a=>{if(W&&f.length+a.length>W){Y(n.maxFilesExceeded.replace("{maxFiles}",String(W)));return}for(const r of a){if(P&&!za(r.size,P)){Y(n.maxFileSizeExceeded.replace("{maxSize}",$a(P)));return}if(T&&!Va(r.type,T)){Y(n.invalidFileType);return}}Y(void 0);const i=a.map(r=>({key:`temp-${Date.now()}-${Math.random()}-${r.name}`,name:r.name,size:r.size,status:"uploading"}));k(r=>[...r,...i]);for(let r=0;r<a.length;r++){const s=a[r],d=i[r].key;try{const b=await ot(s);k(E=>E.map(S=>S.key===d?{...S,key:b.key,status:"success"}:S))}catch(b){k(E=>E.map(S=>S.key===d?{...S,status:"error",error:b.message}:S))}}},[W,P,T,f,n]),pe=l(a=>{k(i=>i.filter(r=>r.key!==a))},[]),je=l(()=>{G((e==null?void 0:e.name)||""),K(""),O(""),q(""),X(""),ce(!0)},[e]),da=l(()=>{ce(!1),G(""),K(""),O(""),q(""),X("")},[]),ma=l(a=>{G(a),a.trim()&&q("")},[]),Ge=l(()=>{te(!0),v(null),I(!1)},[]),ua=l(async()=>{if(!j.trim()){q(n.renameQuoteNameRequired);return}try{O(""),q(""),await it({quoteUid:e.uid,quoteName:j,quoteComment:le.trim()||void 0})}catch(a){O(a.message||n.renameErrorDefault)}},[e,j,le,n.renameQuoteNameRequired,n.renameErrorDefault]),ga=g(()=>{const a=e&&(e.lockedForEditing===!0||e.lockedForEditing===void 0&&(e.status==="SUBMITTED"||e.status==="PENDING"||e.status==="ORDERED"||e.status==="CLOSED"));return o(m,{name:"QuoteName",slot:t==null?void 0:t.QuoteName,context:{quoteName:e==null?void 0:e.name,quoteData:e},children:N("div",{className:"quote-management-manage-negotiable-quote__quote-name-wrapper",children:[o("h1",{"data-testid":"quote-name",className:"quote-management-manage-negotiable-quote__quote-name-title",children:e==null?void 0:e.name}),o("button",{onClick:je,disabled:a,"data-testid":"rename-quote-button",className:"quote-management-manage-negotiable-quote__rename-button","aria-label":"Rename quote",children:o(ja,{})})]})})},[t==null?void 0:t.QuoteName,e,je]),fa=g(()=>o(m,{name:"QuoteStatus",slot:t==null?void 0:t.QuoteStatus,context:{quoteStatus:e==null?void 0:e.status,quoteData:e},children:o("div",{"data-testid":"quote-status",children:e==null?void 0:e.status})}),[t==null?void 0:t.QuoteStatus,e]),Ke=l(a=>{switch(a){case"SUBMITTED":return n.statusSubmitted;case"PENDING":return n.statusPending;case"EXPIRED":return n.statusExpired;default:return null}},[n])(e==null?void 0:e.status),Xe=Ke&&o(p,{type:"warning",variant:"secondary",icon:o(F,{}),heading:n.bannerTitle,description:Ke}),Je=Xe&&o(m,{name:"Banner","data-testid":"banner",slot:t==null?void 0:t.Banner,context:{quoteData:e},children:Xe}),pa=l(()=>{Fe(!1)},[]),Ye=Ee&&o(m,{name:"DuplicateQuoteWarningBanner","data-testid":"duplicate-outOfStock-warning-banner",slot:t==null?void 0:t.DuplicateQuoteWarningBanner,context:{outOfStockWarning:Ee},children:o(p,{type:"warning",variant:"primary",icon:o(F,{}),heading:n.duplicateOutOfStockWarningHeading,description:n.duplicateOutOfStockWarningMessage,onDismiss:pa,"data-testid":"duplicate-outOfStock-warning-alert"})}),Ma=g(()=>{if(!e)return;const a=e.expirationDate?oa(e.expirationDate,"short"):void 0;return N(m,{name:"Details",slot:t==null?void 0:t.Details,context:{quoteData:e},children:[N("div",{className:"quote-management-manage-negotiable-quote__detail",children:[o("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"created-label",children:n.createdLabel}),N("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"created-value",children:[oa(e.createdAt,"short")," (",e.buyer.firstname," ",e.buyer.lastname,")"]})]}),N("div",{className:"quote-management-manage-negotiable-quote__detail",children:[o("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"sales-rep-label",children:n.salesRepLabel}),o("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"sales-rep-value",children:e.salesRepName})]}),N("div",{className:"quote-management-manage-negotiable-quote__detail",children:[o("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"expires-label",children:n.expiresLabel}),o("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"expires-value",children:a})]})]})},[t==null?void 0:t.Details,n,e]),Ze=g(()=>[{label:n.close,value:"close",disabled:!(e!=null&&e.canClose)},{label:n.delete,value:"delete",disabled:!(e!=null&&e.canDelete)},{label:n.print,value:"print"},{label:n.createTemplate,value:"createTemplate",disabled:!!(e!=null&&e.templateName)},{label:n.createCopy,value:"createCopy",disabled:!!(e!=null&&e.templateName)}],[n,e==null?void 0:e.canDelete,e==null?void 0:e.canClose,e==null?void 0:e.templateName]),ba=g(()=>{const a=i=>{switch(i){case"close":oe(!0),R(""),D(""),u==null||u(i);break;case"delete":Te(!0),u==null||u(i);break;case"print":u==null||u(i);break;case"createTemplate":re(!0),V(""),H(""),u==null||u(i);break;case"createCopy":Ge(),u==null||u(i);break}};return o(m,{name:"ActionBar",slot:t==null?void 0:t.ActionBar,context:{quoteData:e,actionsBarDropdownValue:w},children:o(Ga,{dropdownPlaceholder:n.actionsLabel,dropdownOptions:[{label:n.remove,value:"remove"}],dropdownValue:w,handleDropdownChange:$e,buttons:Ze.map(i=>o(ia,{variant:"tertiary",onClick:()=>a(i.value),"data-testid":`actions-bar-${i.value}-button`,"data-action":i.value,disabled:i.disabled,children:i.label},i.value))})})},[Ze,n,t==null?void 0:t.ActionBar,e,$e,u,Ge,w]),ha=g(()=>o(m,{name:"QuoteContent",slot:t==null?void 0:t.QuoteContent,context:{quoteData:e},children:o(Ka,{tabs:new Map([["items-quoted","Items Quoted"],["comments","Comments"],["history-log","History Log"]]),tabsContent:new Map([["items-quoted",o(m,{name:"ItemsQuotedTab",slot:t==null?void 0:t.ItemsQuotedTab,context:{quoteData:e},children:o(mt,{quoteData:e,onItemCheckboxChange:ze,onRemoveItemsRef:a=>{ue.current=a},onRemoveModalStateChange:a=>{!a&&Z.current==="remove"&&ge("")}})},"items-quoted")],["comments",o(m,{name:"CommentsTab",slot:t==null?void 0:t.CommentsTab,context:{quoteData:e},children:o(ut,{quoteData:e})},"comments")],["history-log",o(m,{name:"HistoryLogTab",slot:t==null?void 0:t.HistoryLogTab,context:{quoteData:e},children:o(tt,{quoteData:e})},"history-log")]])})}),[t==null?void 0:t.QuoteContent,t==null?void 0:t.HistoryLogTab,t==null?void 0:t.CommentsTab,t==null?void 0:t.ItemsQuotedTab,e,ze]),Sa=g(()=>o(m,{name:"ShippingInformationTitle",slot:t==null?void 0:t.ShippingInformationTitle,context:{quoteData:e},children:o("h2",{children:n.shippingInformationTitle})}),[t==null?void 0:t.ShippingInformationTitle,e,n]),Na=g(()=>{var a;return o(m,{name:"ShippingInformation",slot:t==null?void 0:t.ShippingInformation,context:{quoteData:e,loading:z,setLoading:ae},children:o(at,{shippingAddress:(a=e==null?void 0:e.shippingAddresses)==null?void 0:a[0],loading:z,"data-testid":"manage-quote-shipping-address"})})},[t==null?void 0:t.ShippingInformation,e,z,ae]),Qa=g(()=>o(m,{name:"QuoteCommentsTitle",slot:t==null?void 0:t.QuoteCommentsTitle,context:{quoteData:e},children:o("h2",{children:n.quoteCommentsTitle})}),[t==null?void 0:t.QuoteCommentsTitle,n,e]),Ta=g(()=>o(m,{name:"QuoteComments",slot:t==null?void 0:t.QuoteComments,context:{quoteData:e},children:o(Aa,{name:"quoteComments",placeholder:n.quoteCommentsPlaceholder,rows:3,value:y,onInput:a=>{Ie(a.target.value)},disabled:!(e!=null&&e.canSendForReview)||M})}),[t==null?void 0:t.QuoteComments,n,e,y,M]),Ae=g(()=>!(e!=null&&e.canSendForReview),[e]),Ca=g(()=>{const a=M||Ae;return o(m,{name:"AttachFilesField",slot:t==null?void 0:t.AttachFilesField,context:{onFileChange:fe,attachedFiles:f,fileUploadError:J,disabled:a},children:N("div",{className:"quote-management-manage-negotiable-quote__attach-files",...a?{"data-disabled":!0}:{},"aria-disabled":a,children:[o(et,{id:"manage-quote-attach-files",multiple:!0,onChange:i=>{const r=i.target,s=r==null?void 0:r.files,d=s?Array.from(s):[];d.length>0&&fe(d)},icon:o(Xa,{}),disabled:a,"data-testid":"manage-quote-attach-files",accept:T==null?void 0:T.join(","),children:n.attachFiles}),J&&o("div",{className:"quote-management-manage-negotiable-quote__file-error","data-testid":"file-upload-error",children:J})]})})},[t==null?void 0:t.AttachFilesField,fe,M,Ae,T,J,n,f]),va=g(()=>{if(f.length)return o(m,{name:"AttachedFilesList",slot:t==null?void 0:t.AttachedFilesList,context:{files:f,onRemove:pe,disabled:M},children:o(Ja,{files:f,onRemove:pe,disabled:M})})},[f,pe,M,t==null?void 0:t.AttachedFilesList]),ya=l(async()=>{if(e!=null&&e.uid){ie(!0),R(""),D("");try{await rt({quoteUids:[e.uid]})}catch(a){console.error("Failed to close quote:",a)}}},[e]),Ea=l(()=>{oe(!1),R(""),D("")},[]),Fa=l(async()=>{if(e!=null&&e.uid){He(!0),V(""),H("");try{await ct(e.uid),H(n.createTemplateSuccessMessage),setTimeout(()=>{re(!1),H("")},2e3)}catch(a){console.error("Failed to create quote template:",a);const i=a instanceof Error?a.message:n.createTemplateErrorFallback;V(i)}finally{He(!1)}}},[e,n.createTemplateSuccessMessage,n.createTemplateErrorFallback]),Ia=l(()=>{re(!1),V(""),H("")},[]),Me=l(async()=>{const a=f.filter(i=>i.status==="success");if(A){A({quoteData:e,comment:y.trim()||void 0,attachments:a.length?a:void 0});return}ne(!0);try{await lt({quoteUid:e.uid,comment:y.trim()||void 0,attachments:a.length?a.map(i=>({key:i.key})):void 0})}catch(i){console.error("Failed to send quote for review:",i),ne(!1)}},[e,A,y,f]),Da=g(()=>o(m,{name:"Footer",slot:t==null?void 0:t.Footer,context:{quoteData:e,comment:y,isSubmitting:M,attachments:f,handleSendForReview:Me},children:o(ia,{variant:"primary",onClick:Me,"data-testid":"send-for-review-button",disabled:!(e!=null&&e.canSendForReview)||M,children:n.sendForReview})}),[t==null?void 0:t.Footer,n,e,y,M,f,Me]),qa=g(()=>se?o(p,{type:"error",variant:"primary",icon:o(F,{color:"var(--color-error)"}),heading:n.renameErrorHeading,description:se}):void 0,[se,n.renameErrorHeading]),wa=g(()=>de?o(p,{type:"success",variant:"primary",icon:o(_,{}),heading:n.renameSuccessHeading,description:de}):void 0,[de,n.renameSuccessHeading]),be=l(a=>a.errors&&Array.isArray(a.errors)&&a.errors.length>0?a.errors[0].message||n.confirmationModalDeleteErrorFallback:(a==null?void 0:a.message)||n.confirmationModalDeleteErrorFallback,[n.confirmationModalDeleteErrorFallback]),xa=l(()=>{Te(!1),L(null),$(!1)},[]),La=l(async()=>{if(e!=null&&e.uid){L(null),$(!1);try{const{operationResults:a}=await st(e.uid),i=a.find(r=>r.__typename==="DeleteNegotiableQuoteOperationFailure");if(i){const r=be(i);L(r);return}$(!0)}catch(a){const i=be(a);L(i)}}},[e,be]),Ra=l(()=>{L(null)},[]),Ha=l(()=>{$(!1)},[]),ea=l(a=>(a==null?void 0:a.message)||n.confirmationModalDuplicateErrorFallback,[n.confirmationModalDuplicateErrorFallback]),Oa=l(()=>{te(!1),v(null),I(!1)},[]),ka=l(async()=>{var a;if(e!=null&&e.uid){v(null),I(!1);try{const i=((a=e.items)==null?void 0:a.filter(b=>b.outOfStock))||[],s=(b=>{const E=b.slice(0,-8),S=crypto.randomUUID().slice(0,8);return E+S})(e.uid),d=i.length>0;d&&sessionStorage.setItem(`duplicate-outOfStock-warning-${s}`,"true"),await dt({quoteUid:e.uid,duplicatedQuoteUid:s,hasOutOfStockItems:d})}catch(i){const r=ea(i);v(r)}}},[e,ea]),_a=l(()=>{v(null)},[]),Ba=l(()=>{I(!1)},[]),Ua=Ce?o(p,{type:"error",variant:"primary",icon:o(F,{}),heading:n.confirmationModalDeleteErrorHeading,description:Ce,onDismiss:Ra,"data-testid":"confirmation-modal-error-banner"}):null,aa=(ca?o(p,{type:"success",variant:"primary",icon:o(_,{}),heading:n.confirmationModalDeleteSuccessHeading,description:n.confirmationModalDeleteSuccessDescription,onDismiss:Ha,"data-testid":"confirmation-modal-success-banner"}):null)||Ua,Wa=ye?o(p,{type:"error",variant:"primary",icon:o(F,{}),heading:n.confirmationModalDuplicateErrorHeading,description:ye,onDismiss:_a,"data-testid":"confirmation-modal-duplicate-error-banner"}):null,ta=(la?o(p,{type:"success",variant:"primary",icon:o(_,{}),heading:n.confirmationModalDuplicateSuccessHeading,description:n.confirmationModalDuplicateSuccessDescription,onDismiss:Ba,"data-testid":"confirmation-modal-duplicate-success-banner"}):null)||Wa,Pa={...ra,loading:z,quoteName:ga,quoteStatus:fa,banner:Ye||Je?N(na,{children:[Ye,Je]}):void 0,details:Ma,actionBar:ba,quoteContent:ha,shippingInformationTitle:Sa,shippingInformation:Na,quoteCommentsTitle:Qa,quoteComments:Ta,attachFilesField:Ca,attachedFilesList:va,footer:Da};let he=null;we?he=o(p,{type:"success",variant:"primary",icon:o(_,{}),heading:n.closeModalSuccessHeading,description:we,"data-testid":"close-quote-success-banner"}):xe&&(he=o(p,{type:"error",variant:"primary",icon:o(F,{}),heading:n.confirmationModalDeleteErrorHeading,description:xe,"data-testid":"close-quote-error-banner"}));let Se=null;return Oe?Se=o(p,{type:"success",variant:"primary",icon:o(_,{}),heading:n.createTemplateModalSuccessHeading,description:Oe,"data-testid":"create-template-success-banner"}):ke&&(Se=o(p,{type:"error",variant:"primary",icon:o(F,{}),heading:n.createTemplateModalErrorHeading,description:ke,"data-testid":"create-template-error-banner"})),N(na,{children:[o(Ya,{...Pa}),_e&&x(o(Za,{open:_e,quoteName:j,renameReason:le,quoteNameError:sa,errorBanner:qa,successBanner:wa,onQuoteNameChange:ma,onRenameReasonChange:K,onSave:ua,onClose:da}),document.body),Qe&&x(o(B,{open:Qe,title:n.confirmationModalDeleteTitle,message:n.confirmationModalDeleteMessage,cancelLabel:n.confirmationModalCancel,confirmLabel:n.confirmationModalDeleteConfirm,onCancel:xa,onConfirm:La,showCloseButton:!aa,confirmationBanner:aa}),document.body),ve&&x(o(B,{open:ve,title:n.confirmationModalDuplicateTitle,message:n.confirmationModalDuplicateMessage,cancelLabel:n.confirmationModalCancel,confirmLabel:n.confirmationModalDuplicateConfirm,onCancel:Oa,onConfirm:ka,showCloseButton:!ta,confirmationBanner:ta}),document.body),De&&x(o(B,{open:De,title:n.closeModalTitle,message:n.closeModalMessage,cancelLabel:n.closeModalCancel,confirmLabel:qe?n.closeModalConfirmLoading:n.closeModalConfirm,onCancel:Ea,onConfirm:qe?void 0:ya,showCloseButton:!0,confirmationBanner:he,"data-testid":"close-quote-confirmation-modal"}),document.body),Le&&x(o(B,{open:Le,title:n.createTemplateModalTitle,message:n.createTemplateModalMessage,cancelLabel:n.createTemplateModalCancel,confirmLabel:Re?n.createTemplateModalConfirmLoading:n.createTemplateModalConfirm,onCancel:Ia,onConfirm:Re?void 0:Fa,showCloseButton:!0,confirmationBanner:Se,"data-testid":"create-template-confirmation-modal"}),document.body),We&&x(o(B,{open:We,title:n.noItemsSelectedModalTitle,message:n.noItemsSelectedModalMessage,confirmLabel:n.noItemsSelectedModalConfirm,onConfirm:Ve,onClose:Ve,showCloseButton:!0,"data-testid":"no-items-selected-modal"}),document.body)]})};export{xt as ManageNegotiableQuote,xt as default};
3
+ import{jsx as n,jsxs as y,Fragment as Ea}from"@dropins/tools/preact-jsx-runtime.js";import{useState as s,useRef as va,useEffect as U,useCallback as d,useMemo as p,createPortal as A}from"@dropins/tools/preact-compat.js";import{Slot as M}from"@dropins/tools/lib.js";import{v as nn,f as tn,a as on,p as Xa,d as P,e as ya,q as rn,T as cn,b as ln,A as sn,c as re,M as Mn,r as dn,C as ce,s as bn,t as hn,u as Tn,E as Qn}from"../chunks/components.js";import{events as ie}from"@dropins/tools/event-bus.js";import{InLineAlert as Q,Button as Ee,TextArea as mn,InputFile as un,Icon as Sa}from"@dropins/tools/components.js";import{getQuoteData as Nn,uploadFile as gn,renameNegotiableQuote as Cn,closeNegotiableQuote as Sn,createQuoteTemplate as vn,sendForReview as En,deleteQuote as yn,duplicateQuote as xn,setQuoteTemplateExpirationDate as Dn,N as an,deleteQuoteTemplate as Rn,cancelQuoteTemplate as qn,sendQuoteTemplateForReview as Fn,generateQuoteFromTemplate as In,acceptQuoteTemplate as Ln,openQuoteTemplate as wn}from"../api.js";import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";import"./RequestNegotiableQuoteForm.js";import{S as pn}from"../chunks/ShippingAddressDisplay.js";import Hn from"./QuoteHistoryLog.js";import kn from"./ItemsQuoted.js";import"./OrderSummary.js";import"./OrderSummaryLine.js";import _n from"./QuoteCommentsList.js";import"./QuoteSummaryList.js";import"./QuotesListTable.js";import Bn from"./ItemsQuotedTemplate.js";import On from"./QuoteTemplateCommentsList.js";import Wn from"./QuoteTemplateHistoryLog.js";import"./QuoteTemplatesListTable.js";import{useText as fn}from"@dropins/tools/i18n.js";import"@dropins/tools/fetch-graphql.js";const Un=({onActionsDropdownChange:o,slots:t,onActionsButtonClick:f,onSendForReview:D,maxFiles:q,maxFileSize:S,acceptedFileTypes:v,onDuplicateQuote:e,...$})=>{const[a,b]=s(void 0),[E,N]=s(!0),[h,G]=s(!1),[Y,_]=s(null),[le,B]=s(!1),[z,O]=s(!1),[L,w]=s(null),[ye,j]=s(!1),[la,se]=s(!1),[H,de]=s(""),[W,me]=s(!1),[he,ue]=s(!1),[sa,ge]=s(!1),[Be,Z]=s(""),[Oe,pe]=s(""),[We,fe]=s(!1),[Ue,Te]=s(!1),[Ae,ee]=s(""),[Pe,Qe]=s(""),[$e,ae]=s(!1),[Ne,ne]=s(""),[xe,F]=s(""),[te,K]=s(""),[De,oe]=s(""),[Re,r]=s(""),[I,R]=s([]),[X,Me]=s(void 0),[Ge,qe]=s(new Set),ze=va(Ge),je=va(null),[be,Ve]=s(""),Fe=va(be),[Ke,Xe]=s(!1);U(()=>{ze.current=Ge},[Ge]),U(()=>{Fe.current=be},[be]);const c=fn({createdLabel:"NegotiableQuote.Manage.createdLabel",salesRepLabel:"NegotiableQuote.Manage.salesRepLabel",expiresLabel:"NegotiableQuote.Manage.expiresLabel",actionsLabel:"NegotiableQuote.Manage.actionsLabel",remove:"NegotiableQuote.Manage.actions.remove",close:"NegotiableQuote.Manage.actionButtons.close",delete:"NegotiableQuote.Manage.actionButtons.delete",print:"NegotiableQuote.Manage.actionButtons.print",createTemplate:"NegotiableQuote.Manage.actionButtons.createTemplate",createCopy:"NegotiableQuote.Manage.actionButtons.createCopy",shippingInformationTitle:"NegotiableQuote.Manage.shippingInformation.title",quoteCommentsTitle:"NegotiableQuote.Manage.quoteComments.title",quoteCommentsPlaceholder:"NegotiableQuote.Manage.quoteComments.placeholder",sendForReview:"NegotiableQuote.Manage.actionButtons.sendForReview",bannerTitle:"NegotiableQuote.Manage.bannerTitle",statusSubmitted:"NegotiableQuote.Manage.bannerStatusMessages.submitted",statusPending:"NegotiableQuote.Manage.bannerStatusMessages.pending",statusExpired:"NegotiableQuote.Manage.bannerStatusMessages.expired",errorFallback:"NegotiableQuote.Manage.confirmationModal.delete.errorFallback",closeSuccessMessage:"NegotiableQuote.Manage.confirmationModal.close.successDescription",closeModalTitle:"NegotiableQuote.Manage.actionButtons.close",closeModalMessage:"NegotiableQuote.Manage.confirmationModal.close.message",closeModalCancel:"NegotiableQuote.Manage.confirmationModal.cancel",closeModalConfirm:"NegotiableQuote.Manage.confirmationModal.close.confirm",closeModalConfirmLoading:"NegotiableQuote.Manage.confirmationModal.close.confirmLoading",closeModalSuccessHeading:"NegotiableQuote.Manage.confirmationModal.close.successHeading",createTemplateModalTitle:"NegotiableQuote.Manage.actionButtons.createTemplate",createTemplateModalMessage:"NegotiableQuote.Manage.confirmationModal.createTemplate.message",createTemplateModalCancel:"NegotiableQuote.Manage.confirmationModal.cancel",createTemplateModalConfirm:"NegotiableQuote.Manage.confirmationModal.createTemplate.confirm",createTemplateModalConfirmLoading:"NegotiableQuote.Manage.confirmationModal.createTemplate.confirmLoading",createTemplateModalSuccessHeading:"NegotiableQuote.Manage.confirmationModal.createTemplate.successHeading",createTemplateSuccessMessage:"NegotiableQuote.Manage.confirmationModal.createTemplate.successDescription",createTemplateModalErrorHeading:"NegotiableQuote.Manage.confirmationModal.createTemplate.errorHeading",createTemplateErrorFallback:"NegotiableQuote.Manage.confirmationModal.createTemplate.errorFallback",renameErrorHeading:"NegotiableQuote.Manage.rename.errorHeading",renameQuoteNameRequired:"NegotiableQuote.Manage.rename.quoteNameRequired",renameErrorDefault:"NegotiableQuote.Manage.rename.errorDefault",renameSuccessHeading:"NegotiableQuote.Manage.rename.successHeading",renameSuccessMessage:"NegotiableQuote.Manage.rename.successMessage",confirmationModalCancel:"NegotiableQuote.Manage.confirmationModal.cancel",confirmationModalDeleteTitle:"NegotiableQuote.Manage.confirmationModal.delete.title",confirmationModalDeleteMessage:"NegotiableQuote.Manage.confirmationModal.delete.message",confirmationModalDeleteConfirm:"NegotiableQuote.Manage.confirmationModal.delete.confirm",confirmationModalDeleteErrorHeading:"NegotiableQuote.Manage.confirmationModal.delete.errorHeading",confirmationModalDeleteErrorFallback:"NegotiableQuote.Manage.confirmationModal.delete.errorFallback",confirmationModalDeleteSuccessHeading:"NegotiableQuote.Manage.confirmationModal.delete.successHeading",confirmationModalDeleteSuccessDescription:"NegotiableQuote.Manage.confirmationModal.delete.successDescription",confirmationModalDuplicateTitle:"NegotiableQuote.Manage.confirmationModal.duplicate.title",confirmationModalDuplicateMessage:"NegotiableQuote.Manage.confirmationModal.duplicate.message",confirmationModalDuplicateConfirm:"NegotiableQuote.Manage.confirmationModal.duplicate.confirm",confirmationModalDuplicateErrorHeading:"NegotiableQuote.Manage.confirmationModal.duplicate.errorHeading",confirmationModalDuplicateErrorFallback:"NegotiableQuote.Manage.confirmationModal.duplicate.errorFallback",confirmationModalDuplicateSuccessHeading:"NegotiableQuote.Manage.confirmationModal.duplicate.successHeading",confirmationModalDuplicateSuccessDescription:"NegotiableQuote.Manage.confirmationModal.duplicate.successDescription",duplicateOutOfStockWarningHeading:"NegotiableQuote.Manage.confirmationModal.duplicate.outOfStockWarningHeading",duplicateOutOfStockWarningMessage:"NegotiableQuote.Manage.confirmationModal.duplicate.outOfStockWarningMessage",noItemsSelectedModalTitle:"NegotiableQuote.Manage.confirmationModal.noItemsSelected.title",noItemsSelectedModalMessage:"NegotiableQuote.Manage.confirmationModal.noItemsSelected.message",noItemsSelectedModalConfirm:"NegotiableQuote.Manage.confirmationModal.noItemsSelected.confirm",attachFiles:"NegotiableQuote.Manage.attachFiles",fileUploadError:"NegotiableQuote.Manage.fileUploadError",maxFilesExceeded:"NegotiableQuote.Manage.maxFilesExceeded",maxFileSizeExceeded:"NegotiableQuote.Manage.maxFileSizeExceeded",invalidFileType:"NegotiableQuote.Manage.invalidFileType"});U(()=>{const i=ie.on("quote-management/quote-data",m=>{const{quote:u}=m;if(u){b(u),N(!1);const C=`duplicate-outOfStock-warning-${u.uid}`;sessionStorage.getItem(C)==="true"&&(se(!0),sessionStorage.removeItem(C))}},{eager:!0});return()=>i==null?void 0:i.off()},[]),U(()=>{const i=ie.on("quote-management/shipping-address-set",m=>{const{quote:u}=m;u&&b(u)},{eager:!0});return()=>i==null?void 0:i.off()},[]),U(()=>{const i=ie.on("quote-management/quote-sent-for-review",m=>{const{quote:u}=m;b(u),de(""),R([]),me(!1)},{eager:!0});return()=>i==null?void 0:i.off()},[]),U(()=>{const i=ie.on("quote-management/quote-items-removed",m=>{const{quote:u,removedItemUids:C}=m;u&&b(u),C&&qe(x=>{const k=new Set(x);return C.forEach(J=>k.delete(J)),k})},{eager:!0});return()=>i==null?void 0:i.off()},[]);const Ie=d((i,m)=>{qe(u=>{const C=new Set(u);return m?C.add(i.uid):C.delete(i.uid),C})},[]),da=d(i=>{const m=i.target.value,u=ze.current;if(m==="remove"){if(Ve(m),Fe.current=m,u.size===0)Xe(!0);else if(a&&je.current){const C=a.items.filter(x=>u.has(x.uid));je.current(C)}}o==null||o(i)},[o,a]),Le=d(()=>{Xe(!1),Ve(""),Fe.current=""},[]);U(()=>{const i=ie.on("quote-management/negotiable-quote-closed",async m=>{ge(!1),pe(""),Z(c.closeSuccessMessage),b(u=>{var C;return u!=null&&u.uid&&((C=m.closedQuoteUids)!=null&&C.includes(u.uid))&&Nn(u.uid).then(x=>{b(x)}).catch(x=>{console.warn("Failed to refresh quote data after closure:",x)}),u}),setTimeout(()=>{ue(!1),Z("")},2e3)},{eager:!0});return()=>i==null?void 0:i.off()},[c.closeSuccessMessage]),U(()=>{const i=ie.on("quote-management/negotiable-quote-close-error",m=>{console.log("Close error event received:",m),ge(!1),Z("");const u=m.error.message||c.errorFallback;pe(u)},{eager:!0});return()=>i==null?void 0:i.off()},[c.errorFallback]),U(()=>{const i=ie.on("quote-management/quote-renamed",m=>{const{quote:u}=m;b(u),K(""),oe(""),r(c.renameSuccessMessage),setTimeout(()=>{ae(!1),ne(""),F(""),r("")},2e3)},{eager:!0});return()=>i==null?void 0:i.off()},[c.renameSuccessMessage]),U(()=>{const i=ie.on("quote-management/quote-duplicated",m=>{const{quote:u}=m;a&&e&&e({quoteData:a,newQuote:u}),j(!0),w(null),setTimeout(()=>{O(!1),j(!1),w(null)},2e3)},{eager:!0});return()=>i==null?void 0:i.off()},[a,e]);const we=d(async i=>{if(q&&I.length+i.length>q){Me(c.maxFilesExceeded.replace("{maxFiles}",String(q)));return}for(const u of i){if(S&&!nn(u.size,S)){Me(c.maxFileSizeExceeded.replace("{maxSize}",tn(S)));return}if(v&&!on(u.type,v)){Me(c.invalidFileType);return}}Me(void 0);const m=i.map(u=>({key:`temp-${Date.now()}-${Math.random()}-${u.name}`,name:u.name,size:u.size,status:"uploading"}));R(u=>[...u,...m]);for(let u=0;u<i.length;u++){const C=i[u],x=m[u].key;try{const k=await gn(C);R(J=>J.map(l=>l.key===x?{...l,key:k.key,status:"success"}:l))}catch(k){R(J=>J.map(l=>l.key===x?{...l,status:"error",error:k.message}:l))}}},[q,S,v,I,c]),Je=d(i=>{R(m=>m.filter(u=>u.key!==i))},[]),ma=d(()=>{ne((a==null?void 0:a.name)||""),F(""),K(""),oe(""),r(""),ae(!0)},[a]),xa=d(()=>{ae(!1),ne(""),F(""),K(""),oe(""),r("")},[]),ua=d(i=>{ne(i),i.trim()&&oe("")},[]),Ye=d(()=>{O(!0),w(null),j(!1)},[]),Ce=d(async()=>{if(!Ne.trim()){oe(c.renameQuoteNameRequired);return}try{K(""),oe(""),await Cn({quoteUid:a.uid,quoteName:Ne,quoteComment:xe.trim()||void 0})}catch(i){K(i.message||c.renameErrorDefault)}},[a,Ne,xe,c.renameQuoteNameRequired,c.renameErrorDefault]),Ze=p(()=>{const i=a&&(a.lockedForEditing===!0||a.lockedForEditing===void 0&&(a.status==="SUBMITTED"||a.status==="PENDING"||a.status==="ORDERED"||a.status==="CLOSED"));return n(M,{name:"QuoteName",slot:t==null?void 0:t.QuoteName,context:{quoteName:a==null?void 0:a.name,quoteData:a},children:y("div",{className:"quote-management-manage-negotiable-quote__quote-name-wrapper",children:[n("h1",{"data-testid":"quote-name",className:"quote-management-manage-negotiable-quote__quote-name-title",children:a==null?void 0:a.name}),n("button",{onClick:ma,disabled:i,"data-testid":"rename-quote-button",className:"quote-management-manage-negotiable-quote__rename-button","aria-label":"Rename quote",children:n(Xa,{})})]})})},[t==null?void 0:t.QuoteName,a,ma]),ea=p(()=>n(M,{name:"QuoteStatus",slot:t==null?void 0:t.QuoteStatus,context:{quoteStatus:a==null?void 0:a.status,quoteData:a},children:n("div",{"data-testid":"quote-status",children:a==null?void 0:a.status})}),[t==null?void 0:t.QuoteStatus,a]),ga=d(i=>{switch(i){case"SUBMITTED":return c.statusSubmitted;case"PENDING":return c.statusPending;case"EXPIRED":return c.statusExpired;default:return null}},[c])(a==null?void 0:a.status),pa=ga&&n(Q,{type:"warning",variant:"secondary",icon:n(P,{}),heading:c.bannerTitle,description:ga}),fa=pa&&n(M,{name:"Banner","data-testid":"banner",slot:t==null?void 0:t.Banner,context:{quoteData:a},children:pa}),Da=d(()=>{se(!1)},[]),Ma=la&&n(M,{name:"DuplicateQuoteWarningBanner","data-testid":"duplicate-outOfStock-warning-banner",slot:t==null?void 0:t.DuplicateQuoteWarningBanner,context:{outOfStockWarning:la},children:n(Q,{type:"warning",variant:"primary",icon:n(P,{}),heading:c.duplicateOutOfStockWarningHeading,description:c.duplicateOutOfStockWarningMessage,onDismiss:Da,"data-testid":"duplicate-outOfStock-warning-alert"})}),Ra=p(()=>{if(!a)return;const i=a.expirationDate?ya(a.expirationDate,"short"):void 0;return y(M,{name:"Details",slot:t==null?void 0:t.Details,context:{quoteData:a},children:[y("div",{className:"quote-management-manage-negotiable-quote__detail",children:[n("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"created-label",children:c.createdLabel}),y("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"created-value",children:[ya(a.createdAt,"short")," (",a.buyer.firstname," ",a.buyer.lastname,")"]})]}),y("div",{className:"quote-management-manage-negotiable-quote__detail",children:[n("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"sales-rep-label",children:c.salesRepLabel}),n("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"sales-rep-value",children:a.salesRepName})]}),y("div",{className:"quote-management-manage-negotiable-quote__detail",children:[n("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"expires-label",children:c.expiresLabel}),n("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"expires-value",children:i})]})]})},[t==null?void 0:t.Details,c,a]),ba=p(()=>[{label:c.close,value:"close",disabled:!(a!=null&&a.canClose)},{label:c.delete,value:"delete",disabled:!(a!=null&&a.canDelete)},{label:c.print,value:"print"},{label:c.createTemplate,value:"createTemplate",disabled:!!(a!=null&&a.templateName)},{label:c.createCopy,value:"createCopy",disabled:!!(a!=null&&a.templateName)}],[c,a==null?void 0:a.canDelete,a==null?void 0:a.canClose,a==null?void 0:a.templateName]),aa=p(()=>{const i=m=>{switch(m){case"close":ue(!0),pe(""),Z(""),f==null||f(m);break;case"delete":G(!0),f==null||f(m);break;case"print":f==null||f(m);break;case"createTemplate":fe(!0),Qe(""),ee(""),f==null||f(m);break;case"createCopy":Ye(),f==null||f(m);break}};return n(M,{name:"ActionBar",slot:t==null?void 0:t.ActionBar,context:{quoteData:a,actionsBarDropdownValue:be},children:n(rn,{dropdownPlaceholder:c.actionsLabel,dropdownOptions:[{label:c.remove,value:"remove"}],dropdownValue:be,handleDropdownChange:da,buttons:ba.map(m=>n(Ee,{variant:"tertiary",onClick:()=>i(m.value),"data-testid":`actions-bar-${m.value}-button`,"data-action":m.value,disabled:m.disabled,children:m.label},m.value))})})},[ba,c,t==null?void 0:t.ActionBar,a,da,f,Ye,be]),na=p(()=>n(M,{name:"QuoteContent",slot:t==null?void 0:t.QuoteContent,context:{quoteData:a},children:n(cn,{tabs:new Map([["items-quoted","Items Quoted"],["comments","Comments"],["history-log","History Log"]]),tabsContent:new Map([["items-quoted",n(M,{name:"ItemsQuotedTab",slot:t==null?void 0:t.ItemsQuotedTab,context:{quoteData:a},children:n(kn,{quoteData:a,onItemCheckboxChange:Ie,onRemoveItemsRef:i=>{je.current=i},onRemoveModalStateChange:i=>{!i&&Fe.current==="remove"&&Ve("")}})},"items-quoted")],["comments",n(M,{name:"CommentsTab",slot:t==null?void 0:t.CommentsTab,context:{quoteData:a},children:n(_n,{quoteData:a})},"comments")],["history-log",n(M,{name:"HistoryLogTab",slot:t==null?void 0:t.HistoryLogTab,context:{quoteData:a},children:n(Hn,{quoteData:a})},"history-log")]])})}),[t==null?void 0:t.QuoteContent,t==null?void 0:t.HistoryLogTab,t==null?void 0:t.CommentsTab,t==null?void 0:t.ItemsQuotedTab,a,Ie]),ta=p(()=>n(M,{name:"ShippingInformationTitle",slot:t==null?void 0:t.ShippingInformationTitle,context:{quoteData:a},children:n("h2",{children:c.shippingInformationTitle})}),[t==null?void 0:t.ShippingInformationTitle,a,c]),oa=p(()=>{var i;return n(M,{name:"ShippingInformation",slot:t==null?void 0:t.ShippingInformation,context:{quoteData:a,loading:E,setLoading:N},children:n(pn,{shippingAddress:(i=a==null?void 0:a.shippingAddresses)==null?void 0:i[0],loading:E,"data-testid":"manage-quote-shipping-address"})})},[t==null?void 0:t.ShippingInformation,a,E,N]),qa=p(()=>n(M,{name:"QuoteCommentsTitle",slot:t==null?void 0:t.QuoteCommentsTitle,context:{quoteData:a},children:n("h2",{children:c.quoteCommentsTitle})}),[t==null?void 0:t.QuoteCommentsTitle,c,a]),Fa=p(()=>n(M,{name:"QuoteComments",slot:t==null?void 0:t.QuoteComments,context:{quoteData:a},children:n(mn,{name:"quoteComments",placeholder:c.quoteCommentsPlaceholder,rows:3,value:H,onInput:i=>{de(i.target.value)},disabled:!(a!=null&&a.canSendForReview)||W})}),[t==null?void 0:t.QuoteComments,c,a,H,W]),ha=p(()=>!(a!=null&&a.canSendForReview),[a]),Ia=p(()=>{const i=W||ha;return n(M,{name:"AttachFilesField",slot:t==null?void 0:t.AttachFilesField,context:{onFileChange:we,attachedFiles:I,fileUploadError:X,disabled:i},children:y("div",{className:"quote-management-manage-negotiable-quote__attach-files",...i?{"data-disabled":!0}:{},"aria-disabled":i,children:[n(un,{id:"manage-quote-attach-files",multiple:!0,onChange:m=>{const u=m.target,C=u==null?void 0:u.files,x=C?Array.from(C):[];x.length>0&&we(x)},icon:n(ln,{}),disabled:i,"data-testid":"manage-quote-attach-files",accept:v==null?void 0:v.join(","),children:c.attachFiles}),X&&n("div",{className:"quote-management-manage-negotiable-quote__file-error","data-testid":"file-upload-error",children:X})]})})},[t==null?void 0:t.AttachFilesField,we,W,ha,v,X,c,I]),La=p(()=>{if(I.length)return n(M,{name:"AttachedFilesList",slot:t==null?void 0:t.AttachedFilesList,context:{files:I,onRemove:Je,disabled:W},children:n(sn,{files:I,onRemove:Je,disabled:W})})},[I,Je,W,t==null?void 0:t.AttachedFilesList]),wa=d(async()=>{if(a!=null&&a.uid){ge(!0),pe(""),Z("");try{await Sn({quoteUids:[a.uid]})}catch(i){console.error("Failed to close quote:",i)}}},[a]),Ha=d(()=>{ue(!1),pe(""),Z("")},[]),ka=d(async()=>{if(a!=null&&a.uid){Te(!0),Qe(""),ee("");try{await vn(a.uid),ee(c.createTemplateSuccessMessage),setTimeout(()=>{fe(!1),ee("")},2e3)}catch(i){console.error("Failed to create quote template:",i);const m=i instanceof Error?i.message:c.createTemplateErrorFallback;Qe(m)}finally{Te(!1)}}},[a,c.createTemplateSuccessMessage,c.createTemplateErrorFallback]),_a=d(()=>{fe(!1),Qe(""),ee("")},[]),He=d(async()=>{const i=I.filter(m=>m.status==="success");if(D){D({quoteData:a,comment:H.trim()||void 0,attachments:i.length?i:void 0});return}me(!0);try{await En({quoteUid:a.uid,comment:H.trim()||void 0,attachments:i.length?i.map(m=>({key:m.key})):void 0})}catch(m){console.error("Failed to send quote for review:",m),me(!1)}},[a,D,H,I]),Ba=p(()=>n(M,{name:"Footer",slot:t==null?void 0:t.Footer,context:{quoteData:a,comment:H,isSubmitting:W,attachments:I,handleSendForReview:He},children:n(Ee,{variant:"primary",onClick:He,"data-testid":"send-for-review-button",disabled:!(a!=null&&a.canSendForReview)||W,children:c.sendForReview})}),[t==null?void 0:t.Footer,c,a,H,W,I,He]),ke=p(()=>te?n(Q,{type:"error",variant:"primary",icon:n(P,{color:"var(--color-error)"}),heading:c.renameErrorHeading,description:te}):void 0,[te,c.renameErrorHeading]),Oa=p(()=>Re?n(Q,{type:"success",variant:"primary",icon:n(re,{}),heading:c.renameSuccessHeading,description:Re}):void 0,[Re,c.renameSuccessHeading]),ia=d(i=>i.errors&&Array.isArray(i.errors)&&i.errors.length>0?i.errors[0].message||c.confirmationModalDeleteErrorFallback:(i==null?void 0:i.message)||c.confirmationModalDeleteErrorFallback,[c.confirmationModalDeleteErrorFallback]),Wa=d(()=>{G(!1),_(null),B(!1)},[]),Ua=d(async()=>{if(a!=null&&a.uid){_(null),B(!1);try{const{operationResults:i}=await yn(a.uid),m=i.find(u=>u.__typename==="DeleteNegotiableQuoteOperationFailure");if(m){const u=ia(m);_(u);return}B(!0)}catch(i){const m=ia(i);_(m)}}},[a,ia]),Aa=d(()=>{_(null)},[]),Pa=d(()=>{B(!1)},[]),ra=d(i=>(i==null?void 0:i.message)||c.confirmationModalDuplicateErrorFallback,[c.confirmationModalDuplicateErrorFallback]),$a=d(()=>{O(!1),w(null),j(!1)},[]),Ga=d(async()=>{var i;if(a!=null&&a.uid){w(null),j(!1);try{const m=((i=a.items)==null?void 0:i.filter(k=>k.outOfStock))||[],C=(k=>{const J=k.slice(0,-8),l=crypto.randomUUID().slice(0,8);return J+l})(a.uid),x=m.length>0;x&&sessionStorage.setItem(`duplicate-outOfStock-warning-${C}`,"true"),await xn({quoteUid:a.uid,duplicatedQuoteUid:C,hasOutOfStockItems:x})}catch(m){const u=ra(m);w(u)}}},[a,ra]),Ta=d(()=>{w(null)},[]),Qa=d(()=>{j(!1)},[]),za=Y?n(Q,{type:"error",variant:"primary",icon:n(P,{}),heading:c.confirmationModalDeleteErrorHeading,description:Y,onDismiss:Aa,"data-testid":"confirmation-modal-error-banner"}):null,Na=(le?n(Q,{type:"success",variant:"primary",icon:n(re,{}),heading:c.confirmationModalDeleteSuccessHeading,description:c.confirmationModalDeleteSuccessDescription,onDismiss:Pa,"data-testid":"confirmation-modal-success-banner"}):null)||za,Za=L?n(Q,{type:"error",variant:"primary",icon:n(P,{}),heading:c.confirmationModalDuplicateErrorHeading,description:L,onDismiss:Ta,"data-testid":"confirmation-modal-duplicate-error-banner"}):null,Ca=(ye?n(Q,{type:"success",variant:"primary",icon:n(re,{}),heading:c.confirmationModalDuplicateSuccessHeading,description:c.confirmationModalDuplicateSuccessDescription,onDismiss:Qa,"data-testid":"confirmation-modal-duplicate-success-banner"}):null)||Za,en={...$,loading:E,quoteName:Ze,quoteStatus:ea,banner:Ma||fa?y(Ea,{children:[Ma,fa]}):void 0,details:Ra,actionBar:aa,quoteContent:na,shippingInformationTitle:ta,shippingInformation:oa,quoteCommentsTitle:qa,quoteComments:Fa,attachFilesField:Ia,attachedFilesList:La,footer:Ba};let _e=null;Be?_e=n(Q,{type:"success",variant:"primary",icon:n(re,{}),heading:c.closeModalSuccessHeading,description:Be,"data-testid":"close-quote-success-banner"}):Oe&&(_e=n(Q,{type:"error",variant:"primary",icon:n(P,{}),heading:c.confirmationModalDeleteErrorHeading,description:Oe,"data-testid":"close-quote-error-banner"}));let ca=null;return Ae?ca=n(Q,{type:"success",variant:"primary",icon:n(re,{}),heading:c.createTemplateModalSuccessHeading,description:Ae,"data-testid":"create-template-success-banner"}):Pe&&(ca=n(Q,{type:"error",variant:"primary",icon:n(P,{}),heading:c.createTemplateModalErrorHeading,description:Pe,"data-testid":"create-template-error-banner"})),y(Ea,{children:[n(Mn,{...en}),$e&&A(n(dn,{open:$e,quoteName:Ne,renameReason:xe,quoteNameError:De,errorBanner:ke,successBanner:Oa,onQuoteNameChange:ua,onRenameReasonChange:F,onSave:Ce,onClose:xa}),document.body),h&&A(n(ce,{open:h,title:c.confirmationModalDeleteTitle,message:c.confirmationModalDeleteMessage,cancelLabel:c.confirmationModalCancel,confirmLabel:c.confirmationModalDeleteConfirm,onCancel:Wa,onConfirm:Ua,showCloseButton:!Na,confirmationBanner:Na}),document.body),z&&A(n(ce,{open:z,title:c.confirmationModalDuplicateTitle,message:c.confirmationModalDuplicateMessage,cancelLabel:c.confirmationModalCancel,confirmLabel:c.confirmationModalDuplicateConfirm,onCancel:$a,onConfirm:Ga,showCloseButton:!Ca,confirmationBanner:Ca}),document.body),he&&A(n(ce,{open:he,title:c.closeModalTitle,message:c.closeModalMessage,cancelLabel:c.closeModalCancel,confirmLabel:sa?c.closeModalConfirmLoading:c.closeModalConfirm,onCancel:Ha,onConfirm:sa?void 0:wa,showCloseButton:!0,confirmationBanner:_e,"data-testid":"close-quote-confirmation-modal"}),document.body),We&&A(n(ce,{open:We,title:c.createTemplateModalTitle,message:c.createTemplateModalMessage,cancelLabel:c.createTemplateModalCancel,confirmLabel:Ue?c.createTemplateModalConfirmLoading:c.createTemplateModalConfirm,onCancel:_a,onConfirm:Ue?void 0:ka,showCloseButton:!0,confirmationBanner:ca,"data-testid":"create-template-confirmation-modal"}),document.body),Ke&&A(n(ce,{open:Ke,title:c.noItemsSelectedModalTitle,message:c.noItemsSelectedModalMessage,confirmLabel:c.noItemsSelectedModalConfirm,onConfirm:Le,onClose:Le,showCloseButton:!0,"data-testid":"no-items-selected-modal"}),document.body)]})};Un.displayName="ManageNegotiableQuote";const An=o=>{const{templateReferenceDocuments:t,localReferenceDocuments:f}=o,D=d(a=>{if(t)return t.find(b=>a.uid&&b.uid?b.uid===a.uid:b.url===a.url)},[t]),q=d(a=>D(a)!==void 0,[D]),S=d((a,b)=>a.name!==b.name||a.identifier!==b.identifier||a.url!==b.url,[]),v=d(()=>t?f.filter(a=>!t.some(b=>a.uid&&b.uid?b.uid===a.uid:b.url===a.url)):f,[t,f]),e=d(()=>f.map(a=>({uid:a.uid,name:a.name,identifier:a.identifier,url:a.url})),[f]),$=p(()=>t?f.some(N=>D(N)===void 0)||t.some(N=>!f.some(h=>h.uid&&N.uid?h.uid===N.uid:h.url===N.url))?!0:f.some(N=>{const h=D(N);return h?S(N,h):!1}):f.length>0,[t,f,D,S]);return{isDocumentInTemplateData:q,getNewDocuments:v,getReferenceDocumentLinks:e,hasUnsavedChanges:$}},Pn=(o={})=>{const{initialTemplateName:t,templateNameRequiredErrorMessage:f="Template name is required"}=o,[D,q]=s(!1),[S,v]=s(""),[e,$]=s(""),[a,b]=s(""),[E,N]=s(""),[h,G]=s(""),Y=d(L=>{v(L||t||""),$(""),b(""),N(""),G(""),q(!0)},[t]),_=d(()=>{q(!1),v(""),$(""),b(""),N(""),G("")},[]),le=d(L=>{v(L),L.trim()&&N("")},[]),B=d(L=>{$(L)},[]),z=d(()=>S.trim()?(b(""),N(""),q(!1),!0):(N(f),!1),[S,f]),O=d(()=>{v(""),$(""),b(""),N(""),G("")},[]);return{isRenameModalOpen:D,renameTemplateName:S,renameReason:e,renameError:a,renameTemplateNameError:E,renameSuccess:h,handleRenameClick:Y,handleRenameClose:_,handleRenameTemplateNameChange:le,handleRenameReasonChange:B,handleRenameSave:z,resetRenameState:O}},$n=(o={})=>{const{templateId:t,initialExpirationDate:f,expirationDateRequiredErrorMessage:D="Expiration date is required"}=o,[q,S]=s(!1),[v,e]=s(""),[$,a]=s(""),[b,E]=s(""),[N,h]=s(""),G=d(z=>{e(z||f||""),a(""),E(""),h(""),S(!0)},[f]),Y=d(()=>{S(!1),e(""),a(""),E(""),h("")},[]),_=d(z=>{e(z),z.trim()&&E("")},[]),le=d(async()=>{if(!v.trim())return E(D),!1;if(!/^\d{4}-\d{2}-\d{2}$/.test(v))return E("Please enter a valid date"),!1;const O=new Date(v),L=new Date;if(L.setHours(0,0,0,0),O<L)return E("Expiration date must be in the future"),!1;if(!t)return a("Template ID is required"),!1;a(""),E("");try{return await Dn({templateId:t,expirationDate:v}),S(!1),h("Expiration date saved successfully"),!0}catch(w){console.error("Failed to set expiration date:",w);const ye=w instanceof Error?w.message:"Failed to set expiration date. Please try again.";return a(ye),!1}},[v,D,t]),B=d(()=>{e(""),a(""),E(""),h("")},[]);return{isExpirationModalOpen:q,expirationDate:v,expirationError:$,expirationDateError:b,expirationSuccess:N,handleExpirationClick:G,handleExpirationClose:Y,handleExpirationDateChange:_,handleExpirationSave:le,resetExpirationState:B}},Gn=({slots:o,onActionsButtonClick:t,onSendForReview:f,maxFiles:D,maxFileSize:q,acceptedFileTypes:S,...v})=>{var J;const[e,$]=s(void 0),[a,b]=s(!0),[E,N]=s(""),[h,G]=s(!1),[Y,_]=s(!1),[le,B]=s(null),[z,O]=s(!1),[L,w]=s(!1),[ye,j]=s(null),[la,se]=s(!1),[H,de]=s([]),[W,me]=s(!1),[he,ue]=s(void 0),[sa,ge]=s(null),[Be,Z]=s(!1),[Oe,pe]=s(!1),[We,fe]=s(""),[Ue,Te]=s(""),[Ae,ee]=s(!1),[Pe,Qe]=s(!1),[$e,ae]=s(""),[Ne,ne]=s(""),xe=va(!1),[F,te]=s([]),[K,De]=s(void 0),{getReferenceDocumentLinks:oe,hasUnsavedChanges:Re}=An({templateReferenceDocuments:e==null?void 0:e.referenceDocuments,localReferenceDocuments:H}),r=fn({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",attachFiles:"NegotiableQuote.Manage.attachFiles",fileUploadError:"NegotiableQuote.Manage.fileUploadError",maxFilesExceeded:"NegotiableQuote.Manage.maxFilesExceeded",maxFileSizeExceeded:"NegotiableQuote.Manage.maxFileSizeExceeded",invalidFileType:"NegotiableQuote.Manage.invalidFileType",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",expirationDateRequired:"NegotiableQuoteTemplate.Manage.expirationDate.expirationDateRequired",expirationDateErrorHeading:"NegotiableQuoteTemplate.Manage.expirationDate.errorHeading",expirationDateSuccessHeading:"NegotiableQuoteTemplate.Manage.expirationDate.successHeading",shippingInformationTitle:"NegotiableQuoteTemplate.Manage.shippingInformation.title",unsavedChangesWarningHeading:"NegotiableQuoteTemplate.Manage.unsavedChangesWarningHeading",unsavedChangesWarningMessage:"NegotiableQuoteTemplate.Manage.unsavedChangesWarningMessage",shippingAddressWarningHeading:"NegotiableQuoteTemplate.Manage.shippingAddressWarningHeading",shippingAddressWarningMessage:"NegotiableQuoteTemplate.Manage.shippingAddressWarningMessage"}),{isRenameModalOpen:I,renameTemplateName:R,renameReason:X,renameError:Me,renameTemplateNameError:Ge,renameSuccess:qe,handleRenameClick:ze,handleRenameClose:je,handleRenameTemplateNameChange:be,handleRenameReasonChange:Ve,handleRenameSave:Fe,resetRenameState:Ke}=Pn({initialTemplateName:e==null?void 0:e.name,templateNameRequiredErrorMessage:r.renameTemplateNameRequired}),{isExpirationModalOpen:Xe,expirationDate:c,expirationError:Ie,expirationDateError:da,expirationSuccess:Le,handleExpirationClick:we,handleExpirationClose:Je,handleExpirationDateChange:ma,handleExpirationSave:xa,resetExpirationState:ua}=$n({templateId:e==null?void 0:e.id,initialExpirationDate:e==null?void 0:e.expirationDate,expirationDateRequiredErrorMessage:r.expirationDateRequired}),Ye=p(()=>I?!1:R!==""&&R!==(e==null?void 0:e.name),[R,e==null?void 0:e.name,I]),Ce=p(()=>Re||Ye,[Re,Ye]),Ze=d(async l=>{if(D&&F.length+l.length>D){De(r.maxFilesExceeded.replace("{maxFiles}",String(D)));return}for(const T of l){if(q&&!nn(T.size,q)){De(r.maxFileSizeExceeded.replace("{maxSize}",tn(q)));return}if(S&&!on(T.type,S)){De(r.invalidFileType);return}}De(void 0);const g=l.map(T=>({key:`temp-${Date.now()}-${Math.random()}-${T.name}`,name:T.name,size:T.size,status:"uploading"}));te(T=>[...T,...g]);for(let T=0;T<l.length;T++){const Se=l[T],V=g[T].key;try{const Va=await gn(Se);te(Ka=>Ka.map(ve=>ve.key===V?{...ve,key:Va.key,status:"success"}:ve))}catch(Va){te(Ka=>Ka.map(ve=>ve.key===V?{...ve,status:"error",error:Va.message}:ve))}}},[D,q,S,F,r]),ea=d(l=>{te(g=>g.filter(T=>T.key!==l))},[]);U(()=>{const l=ie.on("quote-management/quote-template-data",g=>{g.quoteTemplate&&($(g.quoteTemplate),b(!1),N(""),G(!1),te([]),de(g.quoteTemplate.referenceDocuments||[]),Ke(),ua())},{eager:!0});return()=>l==null?void 0:l.off()},[Ke,ua]),U(()=>{e!=null&&e.referenceDocuments&&de(e.referenceDocuments)},[e==null?void 0:e.referenceDocuments]),U(()=>{e&&e.status===an.UPDATED&&!xe.current&&(xe.current=!0,(async()=>{try{await wn({templateId:e.id})}catch(g){console.error("Failed to auto-open quote template:",g)}})())},[e]);const Ja=d(()=>{_(!1),B(null),O(!1)},[]),ga=d(async()=>{if(e!=null&&e.id){B(null),O(!1);try{await Rn({templateId:e.id}),O(!0),setTimeout(()=>{_(!1),O(!1)},2e3)}catch(l){const g=l.message||r.confirmationModalDeleteErrorFallback;B(g)}}},[e,r.confirmationModalDeleteErrorFallback]),pa=d(()=>{B(null)},[]),fa=d(()=>{O(!1)},[]),Da=d(()=>{w(!1),j(null),se(!1)},[]),Ma=d(async()=>{if(e!=null&&e.id){j(null),se(!1);try{await qn({templateId:e.id}),se(!0),setTimeout(()=>{w(!1),se(!1)},2e3)}catch(l){const g=l.message||r.confirmationModalCancelErrorFallback;j(g)}}},[e,r.confirmationModalCancelErrorFallback]),Ra=d(()=>{j(null)},[]),ba=d(()=>{se(!1)},[]),aa=d(async()=>{const l=oe(),g=F.filter(V=>V.status==="success"),T=[X.trim(),E.trim()].filter(Boolean).join(`
4
+
5
+ `).trim()||void 0,Se=R&&R!==(e==null?void 0:e.name)?R:void 0;if(f){f({templateData:e,name:Se,comment:T,referenceDocumentLinks:l,attachments:g.length?g:void 0});return}G(!0);try{await Fn({templateId:e.id,name:Se,comment:T,referenceDocumentLinks:l.length>0?l:void 0,attachments:g.length?g.map(V=>({key:V.key})):void 0})}catch(V){console.error("Failed to send quote template for review:",V),G(!1)}},[e,f,E,X,R,oe,F]),na=d(()=>{ue(void 0),ge(null),me(!0)},[]),ta=d(l=>{ue(l),ge(null),me(!0)},[]),oa=d(l=>{de(g=>g.filter(T=>T.uid!==l.uid||T.url!==l.url))},[]),qa=d(l=>{ge(null),de(he?g=>g.map(T=>T.identifier===he.identifier?l:T):g=>[...g,l]),me(!1),ue(void 0)},[he]),Fa=d(()=>{me(!1),ue(void 0),ge(null)},[]),ha=d(async()=>{pe(!0),Te(""),fe("");try{await In({templateId:e.id}),fe(r.generateQuoteSuccessMessage)}catch(l){console.error("Failed to generate quote from template:",l);const g=l instanceof Error?l.message:r.generateQuoteErrorFallback;Te(g)}finally{pe(!1)}},[e,r.generateQuoteSuccessMessage,r.generateQuoteErrorFallback]),Ia=d(()=>{Z(!1),Te(""),fe("")},[]),La=d(async()=>{Qe(!0),ne(""),ae("");try{await Ln({templateId:e.id}),ae(r.acceptSuccessMessage),setTimeout(()=>{ee(!1),ae("")},2e3)}catch(l){console.error("Failed to accept quote template:",l);const g=l instanceof Error?l.message:r.acceptErrorFallback;ne(g)}finally{Qe(!1)}},[e,r.acceptSuccessMessage,r.acceptErrorFallback]),wa=d(()=>{ee(!1),ne(""),ae("")},[]),Ha=p(()=>{const l=!(e!=null&&e.canSendForReview),g=R||(e==null?void 0:e.name);return n(M,{name:"TemplateName",slot:o==null?void 0:o.TemplateName,context:{templateName:e==null?void 0:e.name,templateData:e,templateDisplayName:g,isRenameDisabled:l},children:y("div",{className:"quote-management-manage-negotiable-quote-template__template-name-wrapper",children:[n("h1",{"data-testid":"template-name",className:"quote-management-manage-negotiable-quote-template__template-name-title",children:g}),n("button",{onClick:()=>ze(g),disabled:l,"data-testid":"rename-template-button",className:"quote-management-manage-negotiable-quote-template__rename-button","aria-label":"Rename template",children:n(Xa,{})})]})})},[o==null?void 0:o.TemplateName,e,ze,R]),ka=p(()=>n(M,{name:"TemplateStatus",slot:o==null?void 0:o.TemplateStatus,context:{templateStatus:e==null?void 0:e.status,templateData:e},children:n("div",{"data-testid":"template-status",children:e==null?void 0:e.status})}),[o==null?void 0:o.TemplateStatus,e]),_a=p(()=>{if(!e)return;const g=!["Active","Expired","Closed","Canceled","Inactive"].includes(e.status),T=e.expirationDate?ya(e.expirationDate,"short"):void 0;return y(M,{name:"Details",slot:o==null?void 0:o.Details,context:{templateData:e},children:[y("div",{className:"quote-management-manage-negotiable-quote-template__detail",children:[n("span",{className:"quote-management-manage-negotiable-quote-template__detail-title","data-testid":"template-id-label",children:r.templateIdLabel}),n("span",{className:"quote-management-manage-negotiable-quote-template__detail-content","data-testid":"template-id-value",children:e.id})]}),y("div",{className:"quote-management-manage-negotiable-quote-template__detail",children:[n("span",{className:"quote-management-manage-negotiable-quote-template__detail-title","data-testid":"created-label",children:r.createdLabel}),y("span",{className:"quote-management-manage-negotiable-quote-template__detail-content","data-testid":"created-value",children:[ya(e.createdAt,"short")," (",e.buyer.firstname," ",e.buyer.lastname,")"]})]}),y("div",{className:"quote-management-manage-negotiable-quote-template__detail",children:[n("span",{className:"quote-management-manage-negotiable-quote-template__detail-title","data-testid":"sales-rep-label",children:r.salesRepLabel}),n("span",{className:"quote-management-manage-negotiable-quote-template__detail-content","data-testid":"sales-rep-value",children:e.salesRepName})]}),y("div",{className:"quote-management-manage-negotiable-quote-template__detail",children:[n("span",{className:"quote-management-manage-negotiable-quote-template__detail-title","data-testid":"expires-label",children:r.expiresLabel}),y("div",{className:"quote-management-manage-negotiable-quote-template__expiration-wrapper",children:[n("span",{className:"quote-management-manage-negotiable-quote-template__detail-content","data-testid":"expires-value",children:T}),g&&n("button",{onClick:()=>we(e.expirationDate),className:"quote-management-manage-negotiable-quote-template__edit-expiration-button","data-testid":"edit-expiration-button","aria-label":"Edit expiration date",children:n(Xa,{})})]})]})]})},[o==null?void 0:o.Details,r,e,we]),He=p(()=>[{label:r.generateQuote,value:"generateQuote",disabled:!(e!=null&&e.canGenerateQuoteFromTemplate)}],[r,e==null?void 0:e.canGenerateQuoteFromTemplate]),Ba=p(()=>{const l=g=>{switch(g){case"generateQuote":Z(!0),Te(""),fe(""),t==null||t(g);break}};return n(M,{name:"ActionBar",slot:o==null?void 0:o.ActionBar,context:{templateData:e},children:n(rn,{dropdownPlaceholder:r.actionsLabel,dropdownOptions:[],buttons:He.map(g=>n(Ee,{variant:"tertiary",onClick:()=>l(g.value),"data-testid":`actions-bar-${g.value}-button`,"data-action":g.value,disabled:g.disabled,children:g.label},g.value))})})},[He,r,o==null?void 0:o.ActionBar,e,t]),ke=p(()=>{const l=e==null?void 0:e.status;return l==="Draft"||l==="Open"},[e==null?void 0:e.status]),Oa=p(()=>{const l=H.length>0||ke,g=l?r.referenceDocumentsTitle:void 0;return n(M,{name:"ReferenceDocuments",slot:o==null?void 0:o.ReferenceDocuments,context:{templateData:e,referenceDocuments:H,isEditable:ke,onAddDocument:na,onEditDocument:ta,onRemoveDocument:oa,referenceDocumentsTitle:r.referenceDocumentsTitle},children:y("div",{"data-testid":"reference-documents",children:[l&&n("h2",{children:g}),n(bn,{documents:H,isEditable:ke,onAdd:na,onEdit:ta,onRemove:oa})]})})},[o==null?void 0:o.ReferenceDocuments,r,e,H,ke,na,ta,oa]),ia=p(()=>n(M,{name:"ShippingInformationTitle",slot:o==null?void 0:o.ShippingInformationTitle,context:{templateData:e},children:n("h2",{children:r.shippingInformationTitle})}),[o==null?void 0:o.ShippingInformationTitle,e,r]),Wa=p(()=>{var l;return n(M,{name:"ShippingInformation",slot:o==null?void 0:o.ShippingInformation,context:{templateData:e,loading:a,setLoading:b},children:n(pn,{shippingAddress:(l=e==null?void 0:e.shippingAddresses)==null?void 0:l[0],loading:a,"data-testid":"manage-template-shipping-address"})})},[o==null?void 0:o.ShippingInformation,e,a,b]),Ua=p(()=>n(M,{name:"ItemsTable",slot:o==null?void 0:o.ItemsTable,context:{templateData:e},children:n(cn,{tabs:new Map([["items-quoted",r.itemsQuotedTab],["comments",r.commentsTab],["history-log",r.historyLogTab]]),tabsContent:new Map([["items-quoted",n(M,{name:"ItemsQuotedTab",slot:o==null?void 0:o.ItemsQuotedTab,context:{templateData:e},children:n(Bn,{templateData:e})},"items-quoted")],["comments",n(M,{name:"CommentsTab",slot:o==null?void 0:o.CommentsTab,context:{templateData:e},children:n(On,{templateData:e})},"comments")],["history-log",n(M,{name:"HistoryLogTab",slot:o==null?void 0:o.HistoryLogTab,context:{templateData:e},children:n(Wn,{templateData:e})},"history-log")]])})}),[o==null?void 0:o.ItemsTable,o==null?void 0:o.ItemsQuotedTab,o==null?void 0:o.CommentsTab,o==null?void 0:o.HistoryLogTab,r,e]),Aa=p(()=>n(M,{name:"CommentsTitle",slot:o==null?void 0:o.CommentsTitle,context:{templateData:e},children:n("h2",{children:r.commentsTitle})}),[o==null?void 0:o.CommentsTitle,r,e]),Pa=p(()=>n(M,{name:"Comments",slot:o==null?void 0:o.Comments,context:{templateData:e},children:n(mn,{name:"templateComments",placeholder:r.templateCommentsPlaceholder,rows:3,value:E,onInput:l=>{N(l.target.value)},disabled:!(e!=null&&e.canSendForReview)||h})}),[o==null?void 0:o.Comments,r,e,E,h]),ra=p(()=>!(e!=null&&e.canSendForReview),[e]),$a=p(()=>{const l=h||ra;return n(M,{name:"AttachFilesField",slot:o==null?void 0:o.AttachFilesField,context:{templateData:e,onFileChange:Ze,attachedFiles:F,fileUploadError:K,disabled:l},children:y("div",{className:"quote-management-manage-negotiable-quote-template__attach-files",...l?{"data-disabled":!0}:{},"aria-disabled":l,children:[n(un,{id:"manage-template-attach-files",multiple:!0,onChange:g=>{const T=g.target,Se=T==null?void 0:T.files,V=Se?Array.from(Se):[];V.length>0&&Ze(V)},icon:n(ln,{}),disabled:l,"data-testid":"manage-template-attach-files",accept:S==null?void 0:S.join(","),children:r.attachFiles}),K&&n("div",{className:"quote-management-manage-negotiable-quote-template__file-error","data-testid":"file-upload-error",children:K})]})})},[o==null?void 0:o.AttachFilesField,e,Ze,h,ra,S,K,r,F]),Ga=p(()=>{if(F.length)return n(M,{name:"AttachedFilesList",slot:o==null?void 0:o.AttachedFilesList,context:{templateData:e,files:F,onRemove:ea,disabled:h},children:n(sn,{files:F,onRemove:ea,disabled:h})})},[F,ea,h,o==null?void 0:o.AttachedFilesList,e]),Ta=p(()=>Ce?n(Q,{type:"warning",variant:"primary",icon:n(P,{}),heading:r.unsavedChangesWarningHeading,description:r.unsavedChangesWarningMessage,"data-testid":"unsaved-changes-warning-alert"}):void 0,[Ce,r.unsavedChangesWarningHeading,r.unsavedChangesWarningMessage]),Qa=p(()=>{var l;return(l=e==null?void 0:e.shippingAddresses)!=null&&l.length?void 0:n(Q,{type:"warning",variant:"primary",icon:n(P,{}),heading:r.shippingAddressWarningHeading,description:r.shippingAddressWarningMessage,"data-testid":"shipping-address-warning-alert"})},[(J=e==null?void 0:e.shippingAddresses)==null?void 0:J.length,r.shippingAddressWarningHeading,r.shippingAddressWarningMessage]),za=p(()=>y(Ea,{children:[Ta,Qa]}),[Ta,Qa]),Ya=p(()=>{const l=(e==null?void 0:e.status)===an.OPEN&&(e==null?void 0:e.canAccept);return y(M,{name:"Footer",slot:o==null?void 0:o.Footer,context:{templateData:e,comment:E,isSubmitting:h,attachedFiles:F,referenceDocuments:H,hasUnsavedChanges:Ce,handleSendForReview:aa,showAcceptButton:l,renameTemplateName:R,renameReason:X},children:[l&&n(Ee,{variant:"primary",onClick:()=>{ee(!0),ne(""),ae("")},"data-testid":"accept-button",disabled:h||Ce,children:r.accept}),(e==null?void 0:e.canSendForReview)&&n(Ee,{variant:"primary",onClick:aa,"data-testid":"send-for-review-button",disabled:!(e!=null&&e.canSendForReview)||h,children:r.sendForReview}),(e==null?void 0:e.canCancel)&&n(Ee,{variant:"tertiary",onClick:()=>w(!0),"data-testid":"cancel-template-button",disabled:h,children:r.cancel}),(e==null?void 0:e.canDelete)&&n(Ee,{variant:"tertiary",onClick:()=>_(!0),"data-testid":"delete-template-button",disabled:h,children:r.delete})]})},[o==null?void 0:o.Footer,r,e,E,h,F,aa,H,Ce,R,X]),Na=le?n(Q,{type:"error",variant:"primary",icon:n(P,{}),heading:r.confirmationModalDeleteErrorHeading,description:le,onDismiss:pa,"data-testid":"confirmation-modal-error-banner"}):null,ja=(z?n(Q,{type:"success",variant:"primary",icon:n(re,{}),heading:r.confirmationModalDeleteSuccessHeading,description:r.confirmationModalDeleteSuccessDescription,onDismiss:fa,"data-testid":"confirmation-modal-success-banner"}):null)||Na,Ca=ye?n(Q,{type:"error",variant:"primary",icon:n(P,{}),heading:r.confirmationModalCancelErrorHeading,description:ye,onDismiss:Ra,"data-testid":"confirmation-modal-cancel-error-banner"}):null,_e=(la?n(Q,{type:"success",variant:"primary",icon:n(re,{}),heading:r.confirmationModalCancelSuccessHeading,description:r.confirmationModalCancelSuccessDescription,onDismiss:ba,"data-testid":"confirmation-modal-cancel-success-banner"}):null)||Ca,ca=p(()=>Me?n(Q,{type:"error",variant:"primary",icon:n(P,{color:"var(--color-error)"}),heading:r.renameErrorHeading,description:Me}):void 0,[Me,r.renameErrorHeading]),i=p(()=>qe?n(Q,{type:"success",variant:"primary",icon:n(re,{}),heading:r.renameSuccessHeading,description:qe}):void 0,[qe,r.renameSuccessHeading]),m=p(()=>Ie?n(Q,{type:"error",variant:"primary",icon:n(P,{color:"var(--color-error)"}),heading:r.expirationDateErrorHeading,description:Ie}):void 0,[Ie,r.expirationDateErrorHeading]),u=p(()=>Le?n(Q,{type:"success",variant:"primary",icon:n(re,{}),heading:r.expirationDateSuccessHeading,description:Le}):void 0,[Le,r.expirationDateSuccessHeading]),C={...v,loading:a,templateName:Ha,templateStatus:ka,banner:za,details:_a,actionBar:Ba,referenceDocuments:Oa,itemsTable:Ua,shippingInformationTitle:ia,shippingInformation:Wa,commentsTitle:Aa,comments:Pa,attachFilesField:$a,attachedFilesList:Ga,footer:Ya};let x=null;We?x=n(Q,{type:"success",variant:"primary",icon:n(Sa,{source:"CheckWithCircle"}),heading:r.generateQuoteModalSuccessHeading,description:We,"data-testid":"generate-quote-success-banner"}):Ue&&(x=n(Q,{type:"error",variant:"primary",icon:n(Sa,{source:"WarningFilled"}),heading:r.generateQuoteModalErrorHeading,description:Ue,"data-testid":"generate-quote-error-banner"}));let k=null;return $e?k=n(Q,{type:"success",variant:"primary",icon:n(Sa,{source:"CheckWithCircle"}),heading:r.acceptModalSuccessHeading,description:$e,"data-testid":"accept-success-banner"}):Ne&&(k=n(Q,{type:"error",variant:"primary",icon:n(Sa,{source:"WarningFilled"}),heading:r.acceptModalErrorHeading,description:Ne,"data-testid":"accept-error-banner"})),y(Ea,{children:[n(hn,{...C}),Y&&A(n(ce,{open:Y,title:r.confirmationModalDeleteTitle,message:r.confirmationModalDeleteMessage,cancelLabel:r.confirmationModalCancel,confirmLabel:r.confirmationModalDeleteConfirm,onCancel:Ja,onConfirm:ga,showCloseButton:!ja,confirmationBanner:ja}),document.body),L&&A(n(ce,{open:L,title:r.confirmationModalCancelTitle,message:r.confirmationModalCancelMessage,cancelLabel:r.confirmationModalCancel,confirmLabel:r.confirmationModalCancelConfirm,onCancel:Da,onConfirm:Ma,showCloseButton:!_e,confirmationBanner:_e}),document.body),W&&A(n(Tn,{open:W,document:he,errorMessage:sa||void 0,onSave:qa,onClose:Fa,isSubmitting:h}),document.body),Be&&A(n(ce,{open:Be,title:r.generateQuoteModalTitle,message:r.generateQuoteModalMessage,cancelLabel:r.generateQuoteModalCancel,confirmLabel:Oe?r.generateQuoteModalConfirmLoading:r.generateQuoteModalConfirm,onCancel:Ia,onConfirm:Oe?void 0:ha,showCloseButton:!0,confirmationBanner:x,"data-testid":"generate-quote-confirmation-modal"}),document.body),Ae&&A(n(ce,{open:Ae,title:r.acceptModalTitle,message:r.acceptModalMessage,cancelLabel:r.acceptModalCancel,confirmLabel:Pe?r.acceptModalConfirmLoading:r.acceptModalConfirm,onCancel:wa,onConfirm:Pe?void 0:La,showCloseButton:!0,confirmationBanner:k,"data-testid":"accept-confirmation-modal"}),document.body),I&&A(n(dn,{open:I,quoteName:R,renameReason:X,quoteNameError:Ge,errorBanner:ca,successBanner:i,onQuoteNameChange:be,onRenameReasonChange:Ve,onSave:Fe,onClose:je}),document.body),Xe&&A(n(Qn,{open:Xe,expirationDate:c,expirationDateError:da,errorBanner:m,successBanner:u,onExpirationDateChange:ma,onSave:xa,onClose:Je}),document.body)]})};Gn.displayName="ManageNegotiableQuoteTemplate";export{Gn as M,Un as ManageNegotiableQuote,Un as default};
4
6
  //# sourceMappingURL=ManageNegotiableQuote.js.map