@dropins/storefront-quote-management 0.0.1-alpha17 → 0.0.1-alpha19

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 (81) hide show
  1. package/api/deleteQuote/deleteQuote.d.ts +28 -0
  2. package/api/deleteQuote/graphql/DeleteQuoteMutation.d.ts +10 -0
  3. package/api/deleteQuote/index.d.ts +10 -0
  4. package/api/getStoreConfig/getStoreConfig.d.ts +4 -0
  5. package/api/getStoreConfig/graphql/StoreConfigQuery.d.ts +10 -0
  6. package/api/getStoreConfig/index.d.ts +10 -0
  7. package/api/graphql/NegotiableQuoteAddressFragment.d.ts +10 -0
  8. package/api/graphql/NegotiableQuoteFragment.d.ts +1 -1
  9. package/api/graphql/ShippingMethodFragment.d.ts +10 -0
  10. package/api/index.d.ts +11 -0
  11. package/api/renameNegotiableQuote/graphql/RenameNegotiableQuoteMutation.d.ts +10 -0
  12. package/api/renameNegotiableQuote/index.d.ts +10 -0
  13. package/api/renameNegotiableQuote/renameNegotiableQuote.d.ts +9 -0
  14. package/api.js +22 -8
  15. package/api.js.map +1 -1
  16. package/chunks/ChevronDown.js +4 -0
  17. package/chunks/ChevronDown.js.map +1 -0
  18. package/chunks/NegotiableQuoteFragment.js +204 -26
  19. package/chunks/NegotiableQuoteFragment.js.map +1 -1
  20. package/chunks/OrderSummaryLine.js +4 -0
  21. package/chunks/OrderSummaryLine.js.map +1 -0
  22. package/chunks/WarningFilled.js +1 -1
  23. package/chunks/WarningFilled.js.map +1 -1
  24. package/chunks/negotiableQuotes.js +2 -2
  25. package/chunks/negotiableQuotes.js.map +1 -1
  26. package/chunks/renameNegotiableQuote.js +62 -0
  27. package/chunks/renameNegotiableQuote.js.map +1 -0
  28. package/chunks/state.js +4 -0
  29. package/chunks/state.js.map +1 -0
  30. package/chunks/transform-quote.js +4 -0
  31. package/chunks/transform-quote.js.map +1 -0
  32. package/chunks/uploadFile.js +3 -3
  33. package/chunks/uploadFile.js.map +1 -1
  34. package/components/ConfirmationModal/ConfirmationModal.d.ts +16 -0
  35. package/components/ConfirmationModal/index.d.ts +11 -0
  36. package/components/OrderSummary/OrderSummary.d.ts +7 -26
  37. package/components/RenameQuoteModal/RenameQuoteModal.d.ts +18 -0
  38. package/components/RenameQuoteModal/index.d.ts +11 -0
  39. package/components/index.d.ts +2 -0
  40. package/containers/ManageNegotiableQuote.js +1 -1
  41. package/containers/ManageNegotiableQuote.js.map +1 -1
  42. package/containers/OrderSummary/OrderSummary.d.ts +11 -0
  43. package/containers/OrderSummary/index.d.ts +11 -0
  44. package/containers/OrderSummary.d.ts +3 -0
  45. package/containers/OrderSummary.js +4 -0
  46. package/containers/OrderSummary.js.map +1 -0
  47. package/containers/OrderSummaryLine/OrderSummaryLine.d.ts +14 -0
  48. package/containers/OrderSummaryLine/index.d.ts +11 -0
  49. package/containers/OrderSummaryLine.d.ts +3 -0
  50. package/containers/OrderSummaryLine.js +4 -0
  51. package/containers/OrderSummaryLine.js.map +1 -0
  52. package/containers/QuoteSummaryList/QuoteSummaryList.d.ts +51 -0
  53. package/containers/QuoteSummaryList/index.d.ts +11 -0
  54. package/containers/QuoteSummaryList.d.ts +3 -0
  55. package/containers/QuoteSummaryList.js +4 -0
  56. package/containers/QuoteSummaryList.js.map +1 -0
  57. package/containers/QuotesListTable.js +1 -1
  58. package/containers/QuotesListTable.js.map +1 -1
  59. package/containers/RequestNegotiableQuoteForm.js +1 -1
  60. package/containers/RequestNegotiableQuoteForm.js.map +1 -1
  61. package/containers/index.d.ts +15 -4
  62. package/data/models/__fixtures__/negotiableQuoteModel.d.ts +1 -0
  63. package/data/models/__fixtures__/storeConfigModel.d.ts +5 -0
  64. package/data/models/index.d.ts +9 -0
  65. package/data/models/negotiable-quote-model.d.ts +66 -10
  66. package/data/models/store-config-model.d.ts +27 -0
  67. package/data/transforms/__fixtures__/negotiableQuoteData.d.ts +274 -0
  68. package/data/transforms/__fixtures__/storeConfigData.d.ts +31 -0
  69. package/data/transforms/index.d.ts +1 -0
  70. package/data/transforms/transform-quote.d.ts +8 -0
  71. package/data/transforms/transform-store-config.d.ts +4 -0
  72. package/i18n/en_US.json.d.ts +51 -0
  73. package/lib/state.d.ts +2 -0
  74. package/package.json +1 -1
  75. package/render.js +3 -3
  76. package/render.js.map +1 -1
  77. package/types/state.types.d.ts +3 -0
  78. package/chunks/fetch-graphql.js +0 -4
  79. package/chunks/fetch-graphql.js.map +0 -1
  80. package/chunks/sendForReview.js +0 -21
  81. package/chunks/sendForReview.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ManageNegotiableQuote.js","sources":["/@dropins/storefront-quote-management/src/components/ActionsBar/ActionsBar.tsx","/@dropins/storefront-quote-management/src/components/ManageNegotiableQuote/ManageNegotiableQuote.tsx","/@dropins/storefront-quote-management/src/components/TabbedContent/TabbedContent.tsx","/@dropins/storefront-quote-management/src/containers/ManageNegotiableQuote/ManageNegotiableQuote.tsx"],"sourcesContent":["/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport '@/quote-management/components/ActionsBar/ActionsBar.css';\nimport { Picker } from '@adobe-commerce/elsie/components';\n\nexport interface ActionsBarProps extends HTMLAttributes<HTMLDivElement> {\n dropdownPlaceholder?: string;\n dropdownOptions?: {\n label: string;\n value: string;\n }[];\n handleDropdownChange?: (event: Event) => void;\n buttons?: VNode[];\n}\n\nexport const ActionsBar: FunctionComponent<ActionsBarProps> = ({\n className,\n dropdownPlaceholder,\n dropdownOptions,\n handleDropdownChange,\n buttons,\n ...props\n}) => {\n const hasDropdown = dropdownOptions && dropdownOptions.length > 0;\n const hasButtons = buttons && buttons.length > 0;\n\n const pickerOptions = dropdownOptions?.map((option) => ({\n text: option.label,\n value: option.value,\n })) || [];\n pickerOptions.unshift({\n text: dropdownPlaceholder || '',\n value: '',\n });\n\n return (\n <div className=\"quote-management-actions-bar__container\" data-testid=\"actions-bar-container\">\n <div className={classes(['quote-management-actions-bar', className])} data-testid=\"actions-bar\" {...props}>\n {hasDropdown && (\n <Picker\n name=\"dropdown\"\n id=\"dropdown\"\n onInput={handleDropdownChange}\n className=\"quote-management-actions-bar__dropdown\"\n data-testid=\"dropdown\"\n options={pickerOptions}\n />\n )}\n {hasButtons && (\n <div className=\"quote-management-actions-bar__buttons\" data-testid=\"buttons-container\">\n {buttons?.map((button, index) => (\n <VComponent\n node={button}\n className={classes(['quote-management-actions-bar__button'])}\n key={index}\n />\n ))}\n </div>\n )}\n </div>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport '@/quote-management/components/ManageNegotiableQuote/ManageNegotiableQuote.css';\nimport { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nexport interface ManageNegotiableQuoteProps extends Omit<HTMLAttributes<HTMLDivElement>, 'loading'> {\n loading?: boolean;\n quoteName: VNode;\n quoteStatus: VNode;\n banner?: VNode;\n details: VNode;\n actionBar?: VNode;\n quoteContent: VNode;\n shippingInformationTitle: VNode;\n shippingInformation: VNode;\n quoteCommentsTitle: VNode;\n quoteComments: VNode;\n footer: VNode;\n}\n\nexport const ManageNegotiableQuote: FunctionComponent<ManageNegotiableQuoteProps> = ({\n className,\n loading,\n quoteName,\n quoteStatus,\n banner,\n details,\n actionBar,\n quoteContent,\n shippingInformationTitle,\n shippingInformation,\n quoteCommentsTitle,\n quoteComments,\n footer,\n ...props\n}) => {\n if (loading) {\n return <ManageNegotiableQuoteSkeleton />;\n }\n\n return (\n <div {...props} className={classes(['quote-management-manage-negotiable-quote', className])}>\n <div className={classes(['quote-management-manage-negotiable-quote__header'])}>\n {quoteName &&\n <VComponent\n node={quoteName}\n className={classes(['quote-management-manage-negotiable-quote__quote-name'])}\n />\n }\n {quoteStatus &&\n <VComponent\n node={quoteStatus}\n className={classes(['quote-management-manage-negotiable-quote__quote-status'])}\n />\n }\n </div>\n {banner &&\n <VComponent\n node={banner}\n className={classes(['quote-management-manage-negotiable-quote__banner'])}\n />\n }\n {details &&\n <VComponent\n node={details}\n className={classes(['quote-management-manage-negotiable-quote__details'])}\n />\n }\n {actionBar &&\n <VComponent\n node={actionBar}\n className={classes(['quote-management-manage-negotiable-quote__action-bar'])}\n />\n }\n {quoteContent &&\n <VComponent\n node={quoteContent}\n className={classes(['quote-management-manage-negotiable-quote__quote-content'])}\n />\n }\n <div data-testid=\"quote-shipping-information-container\" className={classes(['quote-management-manage-negotiable-quote__shipping-information-container'])}>\n {shippingInformationTitle &&\n <VComponent\n node={shippingInformationTitle}\n className={classes(['quote-management-manage-negotiable-quote__shipping-information-title'])}\n />\n }\n {shippingInformation &&\n <VComponent\n node={shippingInformation}\n className={classes(['quote-management-manage-negotiable-quote__shipping-information'])}\n />\n }\n </div>\n <div data-testid=\"quote-comments-container\" className={classes(['quote-management-manage-negotiable-quote__quote-comments-container'])}>\n {quoteCommentsTitle &&\n <VComponent\n node={quoteCommentsTitle}\n className={classes(['quote-management-manage-negotiable-quote__quote-comments-title'])}\n />\n }\n {quoteComments &&\n <VComponent\n node={quoteComments}\n className={classes(['quote-management-manage-negotiable-quote__quote-comments'])}\n />\n }\n </div>\n <VComponent\n node={footer}\n className={classes(['quote-management-manage-negotiable-quote__footer'])}\n />\n </div>\n );\n};\n\nexport const ManageNegotiableQuoteSkeleton: FunctionComponent = () => {\n return (\n <Skeleton data-testid=\"manage-negotiable-quote-skeleton\">\n <SkeletonRow variant=\"heading\" fullWidth={true} size=\"large\" />\n <SkeletonRow variant=\"row\" fullWidth={false} size=\"small\" />\n <SkeletonRow variant=\"row\" fullWidth={false} size=\"small\" />\n <SkeletonRow variant=\"row\" fullWidth={true} />\n <SkeletonRow variant=\"row\" fullWidth={true} size=\"xlarge\" lines={2} />\n <SkeletonRow variant=\"row\" fullWidth={false} size=\"small\" />\n </Skeleton>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes, useMemo, useState } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport '@/quote-management/components/TabbedContent/TabbedContent.css';\n\nexport interface TabbedContentProps extends HTMLAttributes<HTMLDivElement> {\n tabs: Map<string, string>;\n tabsContent: Map<string, VNode>;\n defaultActiveTab?: string;\n}\n\nexport const TabbedContent: FunctionComponent<TabbedContentProps> = ({\n className,\n tabs,\n tabsContent,\n defaultActiveTab,\n ...props\n}) => {\n const [activeTabId, setActiveTabId] = useState<string>(\n defaultActiveTab || Array.from(tabs.keys())[0]\n );\n\n const handleTabClick = (tabId: string) => {\n setActiveTabId(tabId);\n };\n\n const activeTabContent = useMemo(() => {\n return tabsContent.get(activeTabId);\n }, [activeTabId, tabsContent]);\n\n return (\n <div {...props} className={classes(['quote-management-tabbed-content', className])}>\n {tabs &&\n <div data-testid=\"tabbed-content-tabs\" className={classes(['quote-management-tabbed-content__tabs'])}>\n {Array.from(tabs.entries()).map(([tabId, tabLabel]) => (\n <button\n className={\n classes([\n 'quote-management-tabbed-content__tab',\n ['quote-management-tabbed-content__tab--active', tabId === activeTabId]\n ])}\n key={tabId}\n onClick={() => handleTabClick(tabId)}\n >\n {tabLabel}\n </button>\n ))}\n </div>\n }\n {\n activeTabContent &&\n <div className={classes(['quote-management-tabbed-content__active-tab-content'])}>\n <VComponent\n node={activeTabContent as VNode}\n />\n </div>\n }\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport {\n HTMLAttributes,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'preact/compat';\nimport {\n Container,\n getGlobalLocale,\n Slot,\n SlotProps,\n} from '@adobe-commerce/elsie/lib';\nimport { NegotiableQuoteModel } from '@/quote-management/data/models/negotiable-quote-model';\nimport {\n ManageNegotiableQuote as ManageNegotiableQuoteComponent,\n ManageNegotiableQuoteProps as ManageNegotiableQuoteComponentProps,\n} from '@/quote-management/components/ManageNegotiableQuote';\nimport { events } from '@adobe-commerce/event-bus';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { ActionsBar, TabbedContent } from '@/quote-management/components';\nimport { ShippingAddressDisplay } from '@/quote-management/containers/ShippingAddressDisplay';\nimport { QuoteHistoryLog } from '@/quote-management/containers/QuoteHistoryLog';\nimport { ItemsQuoted, QuoteCommentsList } from '@/quote-management/containers';\nimport {\n Button,\n InLineAlert,\n TextArea,\n} from '@adobe-commerce/elsie/components';\nimport { WarningFilled } from '@adobe-commerce/elsie/icons';\nimport { sendForReview } from '@/quote-management/api';\n\nexport interface ManageNegotiableQuoteProps\n extends HTMLAttributes<HTMLDivElement> {\n onActionsDropdownChange?: (event: Event) => void;\n onActionsButtonClick?: (action: string) => void;\n onSendForReview?: (params: {\n quoteData: NegotiableQuoteModel;\n comment?: string;\n }) => void;\n slots?: {\n QuoteName?: SlotProps<{\n quoteName?: string;\n quoteData?: NegotiableQuoteModel;\n }>;\n QuoteStatus?: SlotProps<{\n quoteStatus?: string;\n quoteData?: NegotiableQuoteModel;\n }>;\n Banner?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n Details?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n ActionBar?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n QuoteContent?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n ItemsQuotedTab?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n CommentsTab?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n HistoryLogTab?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n ShippingInformationTitle?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n ShippingInformation?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n loading?: boolean;\n setLoading?: (loading: boolean) => void;\n }>;\n QuoteCommentsTitle?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n QuoteComments?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n Footer?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n comment?: string;\n isSubmitting?: boolean;\n }>;\n };\n}\n\nexport const ManageNegotiableQuote: Container<ManageNegotiableQuoteProps> = ({\n onActionsDropdownChange,\n slots,\n onActionsButtonClick,\n onSendForReview,\n ...props\n}) => {\n const [quoteData, setQuoteData] = useState<NegotiableQuoteModel | undefined>(\n undefined\n );\n const [loading, setLoading] = useState<boolean>(true);\n const [comment, setComment] = useState<string>('');\n const [isSubmitting, setIsSubmitting] = useState<boolean>(false);\n\n const dictionary = useText({\n createdLabel: 'NegotiableQuote.Manage.createdLabel',\n salesRepLabel: 'NegotiableQuote.Manage.salesRepLabel',\n expiresLabel: 'NegotiableQuote.Manage.expiresLabel',\n actionsLabel: 'NegotiableQuote.Manage.actionsLabel',\n remove: 'NegotiableQuote.Manage.actions.remove',\n close: 'NegotiableQuote.Manage.actionButtons.close',\n delete: 'NegotiableQuote.Manage.actionButtons.delete',\n print: 'NegotiableQuote.Manage.actionButtons.print',\n createTemplate: 'NegotiableQuote.Manage.actionButtons.createTemplate',\n createCopy: 'NegotiableQuote.Manage.actionButtons.createCopy',\n shippingInformationTitle:\n 'NegotiableQuote.Manage.shippingInformation.title',\n quoteCommentsTitle: 'NegotiableQuote.Manage.quoteComments.title',\n quoteCommentsPlaceholder:\n 'NegotiableQuote.Manage.quoteComments.placeholder',\n sendForReview: 'NegotiableQuote.Manage.actionButtons.sendForReview',\n bannerTitle: 'NegotiableQuote.Manage.bannerTitle',\n statusSubmitted: 'NegotiableQuote.Manage.bannerStatusMessages.submitted',\n statusPending: 'NegotiableQuote.Manage.bannerStatusMessages.pending',\n statusExpired: 'NegotiableQuote.Manage.bannerStatusMessages.expired',\n });\n /* Event listeners */\n useEffect(() => {\n const quoteDataEvent = events.on(\n 'quote-management/quote-data',\n (data: { quote: NegotiableQuoteModel }) => {\n const { quote } = data;\n if (quote) {\n setQuoteData(quote);\n setLoading(false);\n }\n },\n {\n eager: true,\n }\n );\n return () => quoteDataEvent?.off();\n }, []);\n\n // Listen for shipping address set event\n useEffect(() => {\n const shippingAddressSetEvent = events.on(\n 'quote-management/shipping-address-set',\n (data: { quote: NegotiableQuoteModel }) => {\n const { quote } = data;\n if (quote) {\n setQuoteData(quote);\n }\n },\n {\n eager: true,\n }\n );\n return () => shippingAddressSetEvent?.off();\n }, []);\n\n // Listen for quote sent for review event\n useEffect(() => {\n const quoteSentForReviewEvent = events.on(\n 'quote-management/quote-sent-for-review',\n (data: { quote: NegotiableQuoteModel }) => {\n const { quote } = data;\n setQuoteData(quote);\n setComment(''); // Reset comment after successful submission\n setIsSubmitting(false);\n },\n {\n eager: true,\n }\n );\n return () => quoteSentForReviewEvent?.off();\n }, []);\n\n /**\n * VNodes for the ManageNegotiableQuote component\n */\n\n // Quote name\n const quoteName = useMemo(() => {\n return (\n <Slot\n name=\"QuoteName\"\n slot={slots?.QuoteName}\n context={{ quoteName: quoteData?.name, quoteData }}\n >\n <h1 data-testid=\"quote-name\">{quoteData?.name}</h1>\n </Slot>\n );\n }, [slots?.QuoteName, quoteData]);\n\n // Quote status\n const quoteStatus = useMemo(() => {\n return (\n <Slot\n name=\"QuoteStatus\"\n slot={slots?.QuoteStatus}\n context={{ quoteStatus: quoteData?.status, quoteData }}\n >\n <div data-testid=\"quote-status\">{quoteData?.status}</div>\n </Slot>\n );\n }, [slots?.QuoteStatus, quoteData]);\n\n // Banner\n const getBannerStatusMessage = useCallback(\n (status: string | undefined) => {\n switch (status) {\n case 'SUBMITTED':\n return dictionary.statusSubmitted;\n case 'PENDING':\n return dictionary.statusPending;\n case 'EXPIRED':\n return dictionary.statusExpired;\n default:\n return null;\n }\n },\n [dictionary]\n );\n\n const bannerMessage = getBannerStatusMessage(quoteData?.status);\n\n const bannerContent = bannerMessage && (\n <InLineAlert\n type=\"warning\"\n variant=\"secondary\"\n icon={<WarningFilled />}\n heading={dictionary.bannerTitle}\n description={bannerMessage}\n />\n );\n\n const banner = bannerContent && (\n <Slot\n name=\"Banner\"\n data-testid=\"banner\"\n slot={slots?.Banner}\n context={{ quoteData }}\n >\n {bannerContent}\n </Slot>\n );\n\n // Details\n const details = useMemo(() => {\n if (!quoteData) {\n return null;\n }\n\n const calculatedLocale = getGlobalLocale() || 'en-US';\n\n const dateFormatter = new Intl.DateTimeFormat(calculatedLocale, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n\n // Some quotes, such as draft quotes, don't have a date formatted expiration date\n let expirationDate;\n try {\n expirationDate = dateFormatter.format(\n new Date(quoteData!.expirationDate)\n );\n } catch (error) {\n expirationDate = quoteData!.expirationDate;\n }\n\n return (\n <Slot name=\"Details\" slot={slots?.Details} context={{ quoteData }}>\n <div className=\"quote-management-manage-negotiable-quote__detail\">\n <span\n className=\"quote-management-manage-negotiable-quote__detail-title\"\n data-testid=\"created-label\"\n >\n {dictionary.createdLabel}\n </span>\n <span\n className=\"quote-management-manage-negotiable-quote__detail-content\"\n data-testid=\"created-value\"\n >\n {dateFormatter.format(new Date(quoteData!.createdAt))} (\n {quoteData!.buyer.firstname} {quoteData!.buyer.lastname})\n </span>\n </div>\n <div className=\"quote-management-manage-negotiable-quote__detail\">\n <span\n className=\"quote-management-manage-negotiable-quote__detail-title\"\n data-testid=\"sales-rep-label\"\n >\n {dictionary.salesRepLabel}\n </span>\n <span\n className=\"quote-management-manage-negotiable-quote__detail-content\"\n data-testid=\"sales-rep-value\"\n >\n {quoteData!.salesRepName}\n </span>\n </div>\n <div className=\"quote-management-manage-negotiable-quote__detail\">\n <span\n className=\"quote-management-manage-negotiable-quote__detail-title\"\n data-testid=\"expires-label\"\n >\n {dictionary.expiresLabel}\n </span>\n <span\n className=\"quote-management-manage-negotiable-quote__detail-content\"\n data-testid=\"expires-value\"\n >\n {expirationDate}\n </span>\n </div>\n </Slot>\n );\n }, [slots?.Details, dictionary, quoteData]);\n\n // Action bar\n const buttons: { label: string; value: string; disabled?: boolean }[] =\n useMemo(\n () => [\n {\n label: dictionary.close,\n value: 'close',\n },\n {\n label: dictionary.delete,\n value: 'delete',\n },\n {\n label: dictionary.print,\n value: 'print',\n },\n {\n label: dictionary.createTemplate,\n value: 'createTemplate',\n },\n {\n label: dictionary.createCopy,\n value: 'createCopy',\n },\n ],\n [dictionary]\n );\n const actionBar = useMemo(() => {\n const handleActionsDropdownChange = (event: Event) => {\n onActionsDropdownChange?.(event);\n };\n\n const handleActionsButtonClick = (action: string) => {\n switch (action) {\n case 'close':\n onActionsButtonClick?.(action);\n break;\n case 'delete':\n onActionsButtonClick?.(action);\n break;\n case 'print':\n onActionsButtonClick?.(action);\n break;\n case 'createTemplate':\n onActionsButtonClick?.(action);\n break;\n case 'createCopy':\n onActionsButtonClick?.(action);\n break;\n }\n };\n return (\n <Slot name=\"ActionBar\" slot={slots?.ActionBar} context={{ quoteData }}>\n <ActionsBar\n dropdownPlaceholder={dictionary.actionsLabel}\n dropdownOptions={[\n {\n label: dictionary.remove,\n value: 'remove',\n },\n ]}\n handleDropdownChange={handleActionsDropdownChange}\n buttons={buttons.map((button) => (\n <Button\n key={button.value}\n variant=\"tertiary\"\n onClick={() => handleActionsButtonClick(button.value)}\n data-testid={`actions-bar-${button.value}-button`}\n data-action={button.value}\n disabled={button.disabled}\n >\n {button.label}\n </Button>\n ))}\n />\n </Slot>\n );\n }, [\n buttons,\n dictionary,\n slots?.ActionBar,\n quoteData,\n onActionsDropdownChange,\n onActionsButtonClick,\n ]);\n\n // Quote content\n const quoteContent = useMemo(() => {\n return (\n <Slot\n name=\"QuoteContent\"\n slot={slots?.QuoteContent}\n context={{ quoteData }}\n >\n <TabbedContent\n tabs={\n new Map([\n ['items-quoted', 'Items Quoted'],\n ['comments', 'Comments'],\n ['history-log', 'History Log'],\n ])\n }\n tabsContent={\n new Map([\n [\n 'items-quoted',\n <Slot\n key=\"items-quoted\"\n name=\"ItemsQuotedTab\"\n slot={slots?.ItemsQuotedTab}\n context={{ quoteData }}\n >\n <ItemsQuoted quoteData={quoteData} />\n </Slot>,\n ],\n [\n 'comments',\n <Slot\n key=\"comments\"\n name=\"CommentsTab\"\n slot={slots?.CommentsTab}\n context={{ quoteData }}\n >\n <QuoteCommentsList quoteData={quoteData} />\n </Slot>,\n ],\n [\n 'history-log',\n <Slot\n key=\"history-log\"\n name=\"HistoryLogTab\"\n slot={slots?.HistoryLogTab}\n context={{ quoteData }}\n >\n <QuoteHistoryLog quoteData={quoteData} />\n </Slot>,\n ],\n ])\n }\n />\n </Slot>\n );\n }, [\n slots?.QuoteContent,\n slots?.HistoryLogTab,\n slots?.CommentsTab,\n slots?.ItemsQuotedTab,\n quoteData,\n ]);\n\n // Shipping information title\n const shippingInformationTitle = useMemo(() => {\n return (\n <Slot\n name=\"ShippingInformationTitle\"\n slot={slots?.ShippingInformationTitle}\n context={{ quoteData }}\n >\n <h2>{dictionary.shippingInformationTitle}</h2>\n </Slot>\n );\n }, [slots?.ShippingInformationTitle, quoteData, dictionary]);\n\n // Shipping information\n const shippingInformation = useMemo(() => {\n return (\n <Slot\n name=\"ShippingInformation\"\n slot={slots?.ShippingInformation}\n context={{ quoteData, loading, setLoading }}\n >\n <ShippingAddressDisplay\n quoteData={quoteData}\n loading={loading}\n data-testid=\"manage-quote-shipping-address\"\n />\n </Slot>\n );\n }, [slots?.ShippingInformation, quoteData, loading, setLoading]);\n\n // Quote comments title\n const quoteCommentsTitle = useMemo(() => {\n return (\n <Slot\n name=\"QuoteCommentsTitle\"\n slot={slots?.QuoteCommentsTitle}\n context={{ quoteData }}\n >\n <h2>{dictionary.quoteCommentsTitle}</h2>\n </Slot>\n );\n }, [slots?.QuoteCommentsTitle, dictionary, quoteData]);\n\n // Quote comments\n const quoteComments = useMemo(() => {\n return (\n <Slot\n name=\"QuoteComments\"\n slot={slots?.QuoteComments}\n context={{ quoteData }}\n >\n <TextArea\n name=\"quoteComments\"\n placeholder={dictionary.quoteCommentsPlaceholder}\n rows={3}\n value={comment}\n onInput={(e) => {\n setComment((e.target as HTMLTextAreaElement).value);\n }}\n disabled={isSubmitting}\n />\n </Slot>\n );\n }, [slots?.QuoteComments, dictionary, quoteData, comment, isSubmitting]);\n\n // Footer\n const handleSendForReview = useCallback(async () => {\n // If override prop is provided, use it instead of the API\n if (onSendForReview) {\n onSendForReview({\n quoteData: quoteData!,\n comment: comment.trim() || undefined,\n });\n return;\n }\n\n // Otherwise, use the sendForReview API\n setIsSubmitting(true);\n try {\n await sendForReview({\n quoteUid: quoteData!.uid,\n comment: comment.trim() || undefined,\n });\n // The quote-sent-for-review event will handle updating state\n } catch (error) {\n console.error('Failed to send quote for review:', error);\n setIsSubmitting(false);\n // TODO: Show error notification to user\n }\n }, [quoteData, onSendForReview, comment]);\n\n const footer = useMemo(() => {\n return (\n <Slot\n name=\"Footer\"\n slot={slots?.Footer}\n context={{ quoteData, comment, isSubmitting }}\n >\n <Button\n variant=\"primary\"\n onClick={handleSendForReview}\n data-testid=\"send-for-review-button\"\n disabled={!quoteData?.canSendForReview || isSubmitting || !quoteData}\n >\n {dictionary.sendForReview}\n </Button>\n </Slot>\n );\n }, [\n slots?.Footer,\n dictionary,\n quoteData,\n comment,\n isSubmitting,\n handleSendForReview,\n ]);\n\n const manageNegotiableQuoteProps: ManageNegotiableQuoteComponentProps = {\n ...props,\n loading,\n quoteName,\n quoteStatus,\n banner: banner || undefined,\n details: details!, // Details will always be defined at this point\n actionBar,\n quoteContent,\n shippingInformationTitle,\n shippingInformation,\n quoteCommentsTitle,\n quoteComments,\n footer,\n };\n\n return <ManageNegotiableQuoteComponent {...manageNegotiableQuoteProps} />;\n};\n"],"names":["ActionsBar","className","dropdownPlaceholder","dropdownOptions","handleDropdownChange","buttons","props","hasDropdown","hasButtons","pickerOptions","option","classes","jsx","Picker","button","index","VComponent","ManageNegotiableQuote","loading","quoteName","quoteStatus","banner","details","actionBar","quoteContent","shippingInformationTitle","shippingInformation","quoteCommentsTitle","quoteComments","footer","ManageNegotiableQuoteSkeleton","jsxs","Skeleton","SkeletonRow","TabbedContent","tabs","tabsContent","defaultActiveTab","activeTabId","setActiveTabId","useState","handleTabClick","tabId","activeTabContent","useMemo","tabLabel","onActionsDropdownChange","slots","onActionsButtonClick","onSendForReview","quoteData","setQuoteData","setLoading","comment","setComment","isSubmitting","setIsSubmitting","dictionary","useText","useEffect","quoteDataEvent","events","data","quote","shippingAddressSetEvent","quoteSentForReviewEvent","Slot","bannerMessage","useCallback","status","bannerContent","InLineAlert","WarningFilled","calculatedLocale","getGlobalLocale","dateFormatter","expirationDate","handleActionsDropdownChange","event","handleActionsButtonClick","action","Button","ItemsQuoted","QuoteCommentsList","QuoteHistoryLog","ShippingAddressDisplay","TextArea","e","handleSendForReview","sendForReview","error","manageNegotiableQuoteProps","ManageNegotiableQuoteComponent"],"mappings":"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"}
1
+ {"version":3,"file":"ManageNegotiableQuote.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/Edit.svg","/@dropins/storefront-quote-management/src/components/ActionsBar/ActionsBar.tsx","/@dropins/storefront-quote-management/src/components/ManageNegotiableQuote/ManageNegotiableQuote.tsx","/@dropins/storefront-quote-management/src/components/ConfirmationModal/ConfirmationModal.tsx","/@dropins/storefront-quote-management/src/components/TabbedContent/TabbedContent.tsx","/@dropins/storefront-quote-management/src/components/RenameQuoteModal/RenameQuoteModal.tsx","/@dropins/storefront-quote-management/src/containers/ManageNegotiableQuote/ManageNegotiableQuote.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgEdit = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", className: \"feather feather-edit-2\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z\" }));\nexport default SvgEdit;\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport '@/quote-management/components/ActionsBar/ActionsBar.css';\nimport { Picker } from '@adobe-commerce/elsie/components';\n\nexport interface ActionsBarProps extends HTMLAttributes<HTMLDivElement> {\n dropdownPlaceholder?: string;\n dropdownOptions?: {\n label: string;\n value: string;\n }[];\n handleDropdownChange?: (event: Event) => void;\n buttons?: VNode[];\n}\n\nexport const ActionsBar: FunctionComponent<ActionsBarProps> = ({\n className,\n dropdownPlaceholder,\n dropdownOptions,\n handleDropdownChange,\n buttons,\n ...props\n}) => {\n const hasDropdown = dropdownOptions && dropdownOptions.length > 0;\n const hasButtons = buttons && buttons.length > 0;\n\n const pickerOptions = dropdownOptions?.map((option) => ({\n text: option.label,\n value: option.value,\n })) || [];\n pickerOptions.unshift({\n text: dropdownPlaceholder || '',\n value: '',\n });\n\n return (\n <div className=\"quote-management-actions-bar__container\" data-testid=\"actions-bar-container\">\n <div className={classes(['quote-management-actions-bar', className])} data-testid=\"actions-bar\" {...props}>\n {hasDropdown && (\n <Picker\n name=\"dropdown\"\n id=\"dropdown\"\n onInput={handleDropdownChange}\n className=\"quote-management-actions-bar__dropdown\"\n data-testid=\"dropdown\"\n options={pickerOptions}\n />\n )}\n {hasButtons && (\n <div className=\"quote-management-actions-bar__buttons\" data-testid=\"buttons-container\">\n {buttons?.map((button, index) => (\n <VComponent\n node={button}\n className={classes(['quote-management-actions-bar__button'])}\n key={index}\n />\n ))}\n </div>\n )}\n </div>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport '@/quote-management/components/ManageNegotiableQuote/ManageNegotiableQuote.css';\nimport { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nexport interface ManageNegotiableQuoteProps extends Omit<HTMLAttributes<HTMLDivElement>, 'loading'> {\n loading?: boolean;\n quoteName: VNode;\n quoteStatus: VNode;\n banner?: VNode;\n details: VNode;\n actionBar?: VNode;\n quoteContent: VNode;\n shippingInformationTitle: VNode;\n shippingInformation: VNode;\n quoteCommentsTitle: VNode;\n quoteComments: VNode;\n footer: VNode;\n}\n\nexport const ManageNegotiableQuote: FunctionComponent<ManageNegotiableQuoteProps> = ({\n className,\n loading,\n quoteName,\n quoteStatus,\n banner,\n details,\n actionBar,\n quoteContent,\n shippingInformationTitle,\n shippingInformation,\n quoteCommentsTitle,\n quoteComments,\n footer,\n ...props\n}) => {\n if (loading) {\n return <ManageNegotiableQuoteSkeleton />;\n }\n\n return (\n <div {...props} className={classes(['quote-management-manage-negotiable-quote', className])}>\n <div className={classes(['quote-management-manage-negotiable-quote__header'])}>\n {quoteName &&\n <VComponent\n node={quoteName}\n className={classes(['quote-management-manage-negotiable-quote__quote-name'])}\n />\n }\n {quoteStatus &&\n <VComponent\n node={quoteStatus}\n className={classes(['quote-management-manage-negotiable-quote__quote-status'])}\n />\n }\n </div>\n {banner &&\n <VComponent\n node={banner}\n className={classes(['quote-management-manage-negotiable-quote__banner'])}\n />\n }\n {details &&\n <VComponent\n node={details}\n className={classes(['quote-management-manage-negotiable-quote__details'])}\n />\n }\n {actionBar &&\n <VComponent\n node={actionBar}\n className={classes(['quote-management-manage-negotiable-quote__action-bar'])}\n />\n }\n {quoteContent &&\n <VComponent\n node={quoteContent}\n className={classes(['quote-management-manage-negotiable-quote__quote-content'])}\n />\n }\n <div data-testid=\"quote-shipping-information-container\" className={classes(['quote-management-manage-negotiable-quote__shipping-information-container'])}>\n {shippingInformationTitle &&\n <VComponent\n node={shippingInformationTitle}\n className={classes(['quote-management-manage-negotiable-quote__shipping-information-title'])}\n />\n }\n {shippingInformation &&\n <VComponent\n node={shippingInformation}\n className={classes(['quote-management-manage-negotiable-quote__shipping-information'])}\n />\n }\n </div>\n <div data-testid=\"quote-comments-container\" className={classes(['quote-management-manage-negotiable-quote__quote-comments-container'])}>\n {quoteCommentsTitle &&\n <VComponent\n node={quoteCommentsTitle}\n className={classes(['quote-management-manage-negotiable-quote__quote-comments-title'])}\n />\n }\n {quoteComments &&\n <VComponent\n node={quoteComments}\n className={classes(['quote-management-manage-negotiable-quote__quote-comments'])}\n />\n }\n </div>\n <VComponent\n node={footer}\n className={classes(['quote-management-manage-negotiable-quote__footer'])}\n />\n </div>\n );\n};\n\nexport const ManageNegotiableQuoteSkeleton: FunctionComponent = () => {\n return (\n <Skeleton data-testid=\"manage-negotiable-quote-skeleton\">\n <SkeletonRow variant=\"heading\" fullWidth={true} size=\"large\" />\n <SkeletonRow variant=\"row\" fullWidth={false} size=\"small\" />\n <SkeletonRow variant=\"row\" fullWidth={false} size=\"small\" />\n <SkeletonRow variant=\"row\" fullWidth={true} />\n <SkeletonRow variant=\"row\" fullWidth={true} size=\"xlarge\" lines={2} />\n <SkeletonRow variant=\"row\" fullWidth={false} size=\"small\" />\n </Skeleton>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n \nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { Button, Modal } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport '@/quote-management/components/ConfirmationModal/ConfirmationModal.css';\n\nexport interface ConfirmationModalProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n open?: boolean;\n title?: VNode | string;\n message?: VNode | string;\n cancelLabel?: VNode | string;\n confirmLabel?: VNode | string;\n onCancel?: () => void;\n onConfirm?: () => void;\n showCloseButton?: boolean;\n confirmationBanner?: VNode | null;\n}\n\nexport const ConfirmationModal: FunctionComponent<ConfirmationModalProps> = ({\n open = false,\n title,\n message,\n cancelLabel,\n confirmLabel,\n onCancel,\n onConfirm,\n showCloseButton,\n confirmationBanner,\n ...props\n}) => {\n const dictionary = useText({\n cancel: 'ConfirmationModal.cancel',\n confirm: 'ConfirmationModal.confirm',\n });\n\n if (!open) {\n return null;\n }\n\n const { className, ...restProps } = props;\n\n return (\n <Modal\n {...restProps}\n size={\"medium\"}\n onClose={onCancel}\n clickToDismiss={true}\n escapeToDismiss={true}\n showCloseButton={showCloseButton}\n data-testid=\"confirmation-modal\"\n className={className}\n >\n <div className=\"confirmation-modal__content\">\n {confirmationBanner && (\n <div className=\"confirmation-modal__banner\" data-testid=\"confirmation-modal-banner\">\n {confirmationBanner}\n </div>\n )}\n {title && (\n <div className=\"confirmation-modal__title\" data-testid=\"confirmation-modal-title\">\n {title}\n </div>\n )}\n {message && (\n <div className=\"confirmation-modal__message\" data-testid=\"confirmation-modal-message\">\n {message}\n </div>\n )}\n <div className=\"confirmation-modal__actions\" data-testid=\"confirmation-modal-actions\">\n <Button variant=\"secondary\" onClick={onCancel} data-testid=\"confirmation-modal-cancel\">\n {cancelLabel ?? dictionary.cancel}\n </Button>\n <Button variant=\"primary\" onClick={onConfirm} data-testid=\"confirmation-modal-confirm\">\n {confirmLabel ?? dictionary.confirm}\n </Button>\n </div>\n </div>\n </Modal>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes, useMemo, useState } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport '@/quote-management/components/TabbedContent/TabbedContent.css';\n\nexport interface TabbedContentProps extends HTMLAttributes<HTMLDivElement> {\n tabs: Map<string, string>;\n tabsContent: Map<string, VNode>;\n defaultActiveTab?: string;\n}\n\nexport const TabbedContent: FunctionComponent<TabbedContentProps> = ({\n className,\n tabs,\n tabsContent,\n defaultActiveTab,\n ...props\n}) => {\n const [activeTabId, setActiveTabId] = useState<string>(\n defaultActiveTab || Array.from(tabs.keys())[0]\n );\n\n const handleTabClick = (tabId: string) => {\n setActiveTabId(tabId);\n };\n\n const activeTabContent = useMemo(() => {\n return tabsContent.get(activeTabId);\n }, [activeTabId, tabsContent]);\n\n return (\n <div {...props} className={classes(['quote-management-tabbed-content', className])}>\n {tabs &&\n <div data-testid=\"tabbed-content-tabs\" className={classes(['quote-management-tabbed-content__tabs'])}>\n {Array.from(tabs.entries()).map(([tabId, tabLabel]) => (\n <button\n className={\n classes([\n 'quote-management-tabbed-content__tab',\n ['quote-management-tabbed-content__tab--active', tabId === activeTabId]\n ])}\n key={tabId}\n onClick={() => handleTabClick(tabId)}\n >\n {tabLabel}\n </button>\n ))}\n </div>\n }\n {\n activeTabContent &&\n <div className={classes(['quote-management-tabbed-content__active-tab-content'])}>\n <VComponent\n node={activeTabContent as VNode}\n />\n </div>\n }\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Button, Input, TextArea, Modal } from '@adobe-commerce/elsie/components';\nimport '@/quote-management/components/RenameQuoteModal/RenameQuoteModal.css';\n\nexport interface RenameQuoteModalProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n open: boolean;\n quoteName: string;\n renameReason: string;\n quoteNameError?: string;\n errorBanner?: VNode;\n successBanner?: VNode;\n showCloseButton?: boolean;\n onQuoteNameChange: (value: string) => void;\n onRenameReasonChange: (value: string) => void;\n onSave: () => void;\n onClose?: () => void;\n}\n\nexport const RenameQuoteModal: FunctionComponent<RenameQuoteModalProps> = ({\n className,\n open,\n quoteName,\n renameReason,\n quoteNameError,\n errorBanner,\n successBanner,\n showCloseButton = true,\n onQuoteNameChange,\n onRenameReasonChange,\n onSave,\n onClose,\n}) => {\n const dictionary = useText({\n title: 'NegotiableQuote.Manage.rename.title',\n quoteNameLabel: 'NegotiableQuote.Manage.rename.quoteNameLabel',\n reasonLabel: 'NegotiableQuote.Manage.rename.reasonLabel',\n renameButton: 'NegotiableQuote.Manage.rename.renameButton',\n cancelButton: 'NegotiableQuote.Manage.rename.cancelButton',\n });\n\n if (!open) {\n return null;\n }\n\n return (\n <Modal\n open={open}\n size=\"medium\"\n title={<>{dictionary.title}</>}\n onClose={onClose}\n clickToDismiss={true}\n escapeToDismiss={true}\n showCloseButton={showCloseButton}\n className={classes(['quote-management-rename-quote-modal', className])}\n data-testid=\"rename-quote-modal\"\n >\n {errorBanner && (\n <div className={classes(['quote-management-rename-quote-modal__error-banner'])} data-testid=\"rename-quote-modal-error-banner\">\n {errorBanner}\n </div>\n )}\n\n {successBanner && (\n <div className={classes(['quote-management-rename-quote-modal__success-banner'])} data-testid=\"rename-quote-modal-success-banner\">\n {successBanner}\n </div>\n )}\n\n <div className={classes(['quote-management-rename-quote-modal__content'])}>\n <div>\n <Input\n name=\"quoteName\"\n type=\"text\"\n value={quoteName}\n onInput={(e: any) => onQuoteNameChange(e.target.value)}\n floatingLabel={dictionary.quoteNameLabel}\n required\n error={!!quoteNameError}\n />\n {quoteNameError && (\n <span className={classes(['quote-management-rename-quote-modal__error-text'])}>\n {quoteNameError}\n </span>\n )}\n </div>\n\n <TextArea\n name=\"quoteComment\"\n value={renameReason}\n onInput={(e: any) => onRenameReasonChange(e.target.value)}\n label={dictionary.reasonLabel}\n rows={3}\n />\n </div>\n\n <div className={classes(['quote-management-rename-quote-modal__actions'])}>\n <Button \n variant=\"secondary\"\n size=\"medium\"\n onClick={onClose}\n className={classes(['quote-management-rename-quote-modal__cancel-button'])}\n >\n {dictionary.cancelButton}\n </Button>\n <Button \n variant=\"primary\"\n size=\"medium\"\n onClick={onSave}\n className={classes(['quote-management-rename-quote-modal__save-button'])}\n >\n {dictionary.renameButton}\n </Button>\n </div>\n </Modal>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport {\n HTMLAttributes,\n useCallback,\n useEffect,\n useMemo,\n useState,\n createPortal,\n} from 'preact/compat';\nimport {\n Container,\n getGlobalLocale,\n Slot,\n SlotProps,\n} from '@adobe-commerce/elsie/lib';\nimport { NegotiableQuoteModel } from '@/quote-management/data/models/negotiable-quote-model';\nimport {\n ManageNegotiableQuote as ManageNegotiableQuoteComponent,\n ManageNegotiableQuoteProps as ManageNegotiableQuoteComponentProps,\n} from '@/quote-management/components/ManageNegotiableQuote';\nimport { events } from '@adobe-commerce/event-bus';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { ActionsBar, TabbedContent, ConfirmationModal } from '@/quote-management/components';\nimport { Button, InLineAlert, TextArea } from '@adobe-commerce/elsie/components';\nimport { ShippingAddressDisplay } from '@/quote-management/containers/ShippingAddressDisplay';\nimport { QuoteHistoryLog } from '@/quote-management/containers/QuoteHistoryLog';\nimport { ItemsQuoted, QuoteCommentsList } from '@/quote-management/containers';\nimport { WarningFilled, Edit, CheckWithCircle } from '@adobe-commerce/elsie/icons';\nimport { deleteQuote, sendForReview, renameNegotiableQuote } from '@/quote-management/api';\nimport { RenameQuoteModal } from '@/quote-management/components/RenameQuoteModal';\n\nexport interface ManageNegotiableQuoteProps\n extends HTMLAttributes<HTMLDivElement> {\n onActionsDropdownChange?: (event: Event) => void;\n onActionsButtonClick?: (action: string) => void;\n onSendForReview?: (params: {\n quoteData: NegotiableQuoteModel;\n comment?: string;\n }) => void;\n slots?: {\n QuoteName?: SlotProps<{\n quoteName?: string;\n quoteData?: NegotiableQuoteModel;\n }>;\n QuoteStatus?: SlotProps<{\n quoteStatus?: string;\n quoteData?: NegotiableQuoteModel;\n }>;\n Banner?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n Details?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n ActionBar?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n QuoteContent?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n ItemsQuotedTab?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n CommentsTab?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n HistoryLogTab?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n ShippingInformationTitle?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n ShippingInformation?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n loading?: boolean;\n setLoading?: (loading: boolean) => void;\n }>;\n QuoteCommentsTitle?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n QuoteComments?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n Footer?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n comment?: string;\n isSubmitting?: boolean;\n }>;\n };\n}\n\nexport const ManageNegotiableQuote: Container<ManageNegotiableQuoteProps> = ({\n onActionsDropdownChange,\n slots,\n onActionsButtonClick,\n onSendForReview,\n ...props\n}) => {\n\n const [quoteData, setQuoteData] = useState<NegotiableQuoteModel | undefined>(\n undefined\n );\n const [loading, setLoading] = useState<boolean>(true);\n const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState<boolean>(false);\n const [deleteError, setDeleteError] = useState<string | null>(null);\n const [deleteSuccess, setDeleteSuccess] = useState<boolean>(false);\n const [comment, setComment] = useState<string>('');\n const [isSubmitting, setIsSubmitting] = useState<boolean>(false);\n const [isRenameModalOpen, setIsRenameModalOpen] = useState<boolean>(false);\n const [renameQuoteName, setRenameQuoteName] = useState<string>('');\n const [renameReason, setRenameReason] = useState<string>('');\n const [renameError, setRenameError] = useState<string>('');\n const [renameQuoteNameError, setRenameQuoteNameError] = useState<string>('');\n const [renameSuccess, setRenameSuccess] = useState<string>('');\n\n const dictionary = useText({\n createdLabel: 'NegotiableQuote.Manage.createdLabel',\n salesRepLabel: 'NegotiableQuote.Manage.salesRepLabel',\n expiresLabel: 'NegotiableQuote.Manage.expiresLabel',\n actionsLabel: 'NegotiableQuote.Manage.actionsLabel',\n remove: 'NegotiableQuote.Manage.actions.remove',\n close: 'NegotiableQuote.Manage.actionButtons.close',\n delete: 'NegotiableQuote.Manage.actionButtons.delete',\n print: 'NegotiableQuote.Manage.actionButtons.print',\n createTemplate: 'NegotiableQuote.Manage.actionButtons.createTemplate',\n createCopy: 'NegotiableQuote.Manage.actionButtons.createCopy',\n shippingInformationTitle:\n 'NegotiableQuote.Manage.shippingInformation.title',\n quoteCommentsTitle: 'NegotiableQuote.Manage.quoteComments.title',\n quoteCommentsPlaceholder:\n 'NegotiableQuote.Manage.quoteComments.placeholder',\n sendForReview: 'NegotiableQuote.Manage.actionButtons.sendForReview',\n bannerTitle: 'NegotiableQuote.Manage.bannerTitle',\n statusSubmitted: 'NegotiableQuote.Manage.bannerStatusMessages.submitted',\n statusPending: 'NegotiableQuote.Manage.bannerStatusMessages.pending',\n statusExpired: 'NegotiableQuote.Manage.bannerStatusMessages.expired',\n renameErrorHeading: 'NegotiableQuote.Manage.rename.errorHeading',\n renameQuoteNameRequired: 'NegotiableQuote.Manage.rename.quoteNameRequired',\n renameErrorDefault: 'NegotiableQuote.Manage.rename.errorDefault',\n renameSuccessHeading: 'NegotiableQuote.Manage.rename.successHeading',\n renameSuccessMessage: 'NegotiableQuote.Manage.rename.successMessage',\n confirmationModalCancel: 'NegotiableQuote.Manage.confirmationModal.cancel',\n confirmationModalDeleteTitle: 'NegotiableQuote.Manage.confirmationModal.delete.title',\n confirmationModalDeleteMessage: 'NegotiableQuote.Manage.confirmationModal.delete.message',\n confirmationModalDeleteConfirm: 'NegotiableQuote.Manage.confirmationModal.delete.confirm',\n confirmationModalDeleteErrorHeading: 'NegotiableQuote.Manage.confirmationModal.delete.errorHeading',\n confirmationModalDeleteErrorFallback: 'NegotiableQuote.Manage.confirmationModal.delete.errorFallback',\n confirmationModalDeleteSuccessHeading: 'NegotiableQuote.Manage.confirmationModal.delete.successHeading',\n confirmationModalDeleteSuccessDescription: 'NegotiableQuote.Manage.confirmationModal.delete.successDescription',\n });\n /* Event listeners */\n useEffect(() => {\n const quoteDataEvent = events.on(\n 'quote-management/quote-data',\n (data: { quote: NegotiableQuoteModel }) => {\n const { quote } = data;\n if (quote) {\n setQuoteData(quote);\n setLoading(false);\n }\n },\n {\n eager: true,\n }\n );\n return () => quoteDataEvent?.off();\n }, []);\n\n // Listen for shipping address set event\n useEffect(() => {\n const shippingAddressSetEvent = events.on(\n 'quote-management/shipping-address-set',\n (data: { quote: NegotiableQuoteModel }) => {\n const { quote } = data;\n if (quote) {\n setQuoteData(quote);\n }\n },\n {\n eager: true,\n }\n );\n return () => shippingAddressSetEvent?.off();\n }, []);\n\n // Listen for quote sent for review event\n useEffect(() => {\n const quoteSentForReviewEvent = events.on(\n 'quote-management/quote-sent-for-review',\n (data: { quote: NegotiableQuoteModel }) => {\n const { quote } = data;\n setQuoteData(quote);\n setComment(''); // Reset comment after successful submission\n setIsSubmitting(false);\n },\n {\n eager: true,\n }\n );\n return () => quoteSentForReviewEvent?.off();\n }, []);\n\n // Listen for quote renamed event\n useEffect(() => {\n const quoteRenamedEvent = events.on(\n 'quote-management/quote-renamed',\n (data: { quote: NegotiableQuoteModel }) => {\n const { quote } = data;\n setQuoteData(quote);\n setRenameError('');\n setRenameQuoteNameError('');\n setRenameSuccess(dictionary.renameSuccessMessage);\n \n // Wait 2 seconds before closing the modal\n setTimeout(() => {\n setIsRenameModalOpen(false);\n setRenameQuoteName('');\n setRenameReason('');\n setRenameSuccess('');\n }, 2000);\n },\n {\n eager: true,\n }\n );\n return () => quoteRenamedEvent?.off();\n }, [dictionary.renameSuccessMessage]);\n\n /**\n * VNodes for the ManageNegotiableQuote component\n */\n\n // Rename handlers\n const handleRenameClick = useCallback(() => {\n setRenameQuoteName(quoteData?.name || '');\n setRenameReason('');\n setRenameError('');\n setRenameQuoteNameError('');\n setRenameSuccess('');\n setIsRenameModalOpen(true);\n }, [quoteData]);\n\n const handleRenameClose = useCallback(() => {\n setIsRenameModalOpen(false);\n setRenameQuoteName('');\n setRenameReason('');\n setRenameError('');\n setRenameQuoteNameError('');\n setRenameSuccess('');\n }, []);\n\n const handleRenameQuoteNameChange = useCallback((value: string) => {\n setRenameQuoteName(value);\n if (value.trim()) {\n setRenameQuoteNameError('');\n }\n }, []);\n\n const handleRenameSave = useCallback(async () => {\n // Validate quote name\n if (!renameQuoteName.trim()) {\n setRenameQuoteNameError(dictionary.renameQuoteNameRequired);\n return;\n }\n\n try {\n setRenameError('');\n setRenameQuoteNameError('');\n await renameNegotiableQuote({\n quoteUid: quoteData!.uid,\n quoteName: renameQuoteName,\n quoteComment: renameReason.trim() || undefined,\n });\n // The quote-renamed event will handle closing the modal and updating state\n } catch (error) {\n setRenameError((error as Error).message || dictionary.renameErrorDefault);\n }\n }, [quoteData, renameQuoteName, renameReason, dictionary.renameQuoteNameRequired, dictionary.renameErrorDefault]);\n\n // Quote name with rename icon\n const quoteName = useMemo(() => {\n // Priority 1: Check lockedForEditing if explicitly set\n // Priority 2: Fall back to status check\n const isLocked = quoteData && (\n // If lockedForEditing is explicitly set, use it\n quoteData.lockedForEditing === true ||\n // Otherwise, lock based on status\n (quoteData.lockedForEditing === undefined && (\n quoteData.status === 'SUBMITTED' || \n quoteData.status === 'PENDING' || \n quoteData.status === 'ORDERED' || \n quoteData.status === 'CLOSED'\n ))\n );\n \n return (\n <Slot\n name=\"QuoteName\"\n slot={slots?.QuoteName}\n context={{ quoteName: quoteData?.name, quoteData }}\n >\n <div className=\"quote-management-manage-negotiable-quote__quote-name-wrapper\">\n <h1 \n data-testid=\"quote-name\" \n className=\"quote-management-manage-negotiable-quote__quote-name-title\"\n >\n {quoteData?.name}\n </h1>\n <button\n onClick={handleRenameClick}\n disabled={isLocked}\n data-testid=\"rename-quote-button\"\n className=\"quote-management-manage-negotiable-quote__rename-button\"\n aria-label=\"Rename quote\"\n >\n <Edit />\n </button>\n </div>\n </Slot>\n );\n }, [slots?.QuoteName, quoteData, handleRenameClick]);\n\n // Quote status\n const quoteStatus = useMemo(() => {\n return (\n <Slot\n name=\"QuoteStatus\"\n slot={slots?.QuoteStatus}\n context={{ quoteStatus: quoteData?.status, quoteData }}\n >\n <div data-testid=\"quote-status\">{quoteData?.status}</div>\n </Slot>\n );\n }, [slots?.QuoteStatus, quoteData]);\n\n // Banner\n const getBannerStatusMessage = useCallback(\n (status: string | undefined) => {\n switch (status) {\n case 'SUBMITTED':\n return dictionary.statusSubmitted;\n case 'PENDING':\n return dictionary.statusPending;\n case 'EXPIRED':\n return dictionary.statusExpired;\n default:\n return null;\n }\n },\n [dictionary]\n );\n\n const bannerMessage = getBannerStatusMessage(quoteData?.status);\n\n const bannerContent = bannerMessage && (\n <InLineAlert\n type=\"warning\"\n variant=\"secondary\"\n icon={<WarningFilled />}\n heading={dictionary.bannerTitle}\n description={bannerMessage}\n />\n );\n\n const banner = bannerContent && (\n <Slot\n name=\"Banner\"\n data-testid=\"banner\"\n slot={slots?.Banner}\n context={{ quoteData }}\n >\n {bannerContent}\n </Slot>\n );\n\n // Details\n const details = useMemo(() => {\n if (!quoteData) {\n return null;\n }\n\n const calculatedLocale = getGlobalLocale() || 'en-US';\n\n const dateFormatter = new Intl.DateTimeFormat(calculatedLocale, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n\n // Some quotes, such as draft quotes, don't have a date formatted expiration date\n let expirationDate;\n try {\n expirationDate = dateFormatter.format(\n new Date(quoteData!.expirationDate)\n );\n } catch (error) {\n expirationDate = quoteData!.expirationDate;\n }\n\n return (\n <Slot name=\"Details\" slot={slots?.Details} context={{ quoteData }}>\n <div className=\"quote-management-manage-negotiable-quote__detail\">\n <span\n className=\"quote-management-manage-negotiable-quote__detail-title\"\n data-testid=\"created-label\"\n >\n {dictionary.createdLabel}\n </span>\n <span\n className=\"quote-management-manage-negotiable-quote__detail-content\"\n data-testid=\"created-value\"\n >\n {dateFormatter.format(new Date(quoteData!.createdAt))} (\n {quoteData!.buyer.firstname} {quoteData!.buyer.lastname})\n </span>\n </div>\n <div className=\"quote-management-manage-negotiable-quote__detail\">\n <span\n className=\"quote-management-manage-negotiable-quote__detail-title\"\n data-testid=\"sales-rep-label\"\n >\n {dictionary.salesRepLabel}\n </span>\n <span\n className=\"quote-management-manage-negotiable-quote__detail-content\"\n data-testid=\"sales-rep-value\"\n >\n {quoteData!.salesRepName}\n </span>\n </div>\n <div className=\"quote-management-manage-negotiable-quote__detail\">\n <span\n className=\"quote-management-manage-negotiable-quote__detail-title\"\n data-testid=\"expires-label\"\n >\n {dictionary.expiresLabel}\n </span>\n <span\n className=\"quote-management-manage-negotiable-quote__detail-content\"\n data-testid=\"expires-value\"\n >\n {expirationDate}\n </span>\n </div>\n </Slot>\n );\n }, [slots?.Details, dictionary, quoteData]);\n\n // Action bar\n const buttons: { label: string; value: string; disabled?: boolean }[] = useMemo(() => {\n return [\n {\n label: dictionary.close,\n value: 'close'\n },\n {\n label: dictionary.delete,\n value: 'delete',\n disabled: !quoteData?.canDelete,\n },\n {\n label: dictionary.print,\n value: 'print'\n },\n {\n label: dictionary.createTemplate,\n value: 'createTemplate'\n },\n {\n label: dictionary.createCopy,\n value: 'createCopy'\n },\n ]\n }, [dictionary, quoteData?.canDelete]);\n const actionBar = useMemo(() => {\n const handleActionsDropdownChange = (event: Event) => {\n onActionsDropdownChange?.(event);\n };\n\n const handleActionsButtonClick = (action: string) => {\n switch (action) {\n case 'close':\n onActionsButtonClick?.(action);\n break;\n case 'delete':\n setIsDeleteDialogOpen(true);\n onActionsButtonClick?.(action);\n break;\n case 'print':\n onActionsButtonClick?.(action);\n break;\n case 'createTemplate':\n onActionsButtonClick?.(action);\n break;\n case 'createCopy':\n onActionsButtonClick?.(action);\n break;\n }\n };\n return (\n <Slot name=\"ActionBar\" slot={slots?.ActionBar} context={{ quoteData }}>\n <ActionsBar\n dropdownPlaceholder={dictionary.actionsLabel}\n dropdownOptions={[\n {\n label: dictionary.remove,\n value: 'remove',\n },\n ]}\n handleDropdownChange={handleActionsDropdownChange}\n buttons={buttons.map((button) => (\n <Button\n key={button.value}\n variant=\"tertiary\"\n onClick={() => handleActionsButtonClick(button.value)}\n data-testid={`actions-bar-${button.value}-button`}\n data-action={button.value}\n disabled={button.disabled}\n >\n {button.label}\n </Button>\n ))}\n />\n </Slot>\n );\n }, [\n buttons,\n dictionary,\n slots?.ActionBar,\n quoteData,\n onActionsDropdownChange,\n onActionsButtonClick,\n ]);\n\n // Quote content\n const quoteContent = useMemo(() => {\n return (\n <Slot\n name=\"QuoteContent\"\n slot={slots?.QuoteContent}\n context={{ quoteData }}\n >\n <TabbedContent\n tabs={\n new Map([\n ['items-quoted', 'Items Quoted'],\n ['comments', 'Comments'],\n ['history-log', 'History Log'],\n ])\n }\n tabsContent={\n new Map([\n [\n 'items-quoted',\n <Slot\n key=\"items-quoted\"\n name=\"ItemsQuotedTab\"\n slot={slots?.ItemsQuotedTab}\n context={{ quoteData }}\n >\n <ItemsQuoted quoteData={quoteData} />\n </Slot>,\n ],\n [\n 'comments',\n <Slot\n key=\"comments\"\n name=\"CommentsTab\"\n slot={slots?.CommentsTab}\n context={{ quoteData }}\n >\n <QuoteCommentsList quoteData={quoteData} />\n </Slot>,\n ],\n [\n 'history-log',\n <Slot\n key=\"history-log\"\n name=\"HistoryLogTab\"\n slot={slots?.HistoryLogTab}\n context={{ quoteData }}\n >\n <QuoteHistoryLog quoteData={quoteData} />\n </Slot>,\n ],\n ])\n }\n />\n </Slot>\n );\n }, [\n slots?.QuoteContent,\n slots?.HistoryLogTab,\n slots?.CommentsTab,\n slots?.ItemsQuotedTab,\n quoteData,\n ]);\n\n // Shipping information title\n const shippingInformationTitle = useMemo(() => {\n return (\n <Slot\n name=\"ShippingInformationTitle\"\n slot={slots?.ShippingInformationTitle}\n context={{ quoteData }}\n >\n <h2>{dictionary.shippingInformationTitle}</h2>\n </Slot>\n );\n }, [slots?.ShippingInformationTitle, quoteData, dictionary]);\n\n // Shipping information\n const shippingInformation = useMemo(() => {\n return (\n <Slot\n name=\"ShippingInformation\"\n slot={slots?.ShippingInformation}\n context={{ quoteData, loading, setLoading }}\n >\n <ShippingAddressDisplay\n quoteData={quoteData}\n loading={loading}\n data-testid=\"manage-quote-shipping-address\"\n />\n </Slot>\n );\n }, [slots?.ShippingInformation, quoteData, loading, setLoading]);\n\n // Quote comments title\n const quoteCommentsTitle = useMemo(() => {\n return (\n <Slot\n name=\"QuoteCommentsTitle\"\n slot={slots?.QuoteCommentsTitle}\n context={{ quoteData }}\n >\n <h2>{dictionary.quoteCommentsTitle}</h2>\n </Slot>\n );\n }, [slots?.QuoteCommentsTitle, dictionary, quoteData]);\n\n // Quote comments\n const quoteComments = useMemo(() => {\n return (\n <Slot\n name=\"QuoteComments\"\n slot={slots?.QuoteComments}\n context={{ quoteData }}\n >\n <TextArea\n name=\"quoteComments\"\n placeholder={dictionary.quoteCommentsPlaceholder}\n rows={3}\n value={comment}\n onInput={(e) => {\n setComment((e.target as HTMLTextAreaElement).value);\n }}\n disabled={isSubmitting}\n />\n </Slot>\n );\n }, [slots?.QuoteComments, dictionary, quoteData, comment, isSubmitting]);\n\n // Footer\n const handleSendForReview = useCallback(async () => {\n // If override prop is provided, use it instead of the API\n if (onSendForReview) {\n onSendForReview({\n quoteData: quoteData!,\n comment: comment.trim() || undefined,\n });\n return;\n }\n\n // Otherwise, use the sendForReview API\n setIsSubmitting(true);\n try {\n await sendForReview({\n quoteUid: quoteData!.uid,\n comment: comment.trim() || undefined,\n });\n // The quote-sent-for-review event will handle updating state\n } catch (error) {\n console.error('Failed to send quote for review:', error);\n setIsSubmitting(false);\n // TODO: Show error notification to user\n }\n }, [quoteData, onSendForReview, comment]);\n\n const footer = useMemo(() => {\n return (\n <Slot\n name=\"Footer\"\n slot={slots?.Footer}\n context={{ quoteData, comment, isSubmitting }}\n >\n <Button\n variant=\"primary\"\n onClick={handleSendForReview}\n data-testid=\"send-for-review-button\"\n disabled={!quoteData?.canSendForReview || isSubmitting || !quoteData}\n >\n {dictionary.sendForReview}\n </Button>\n </Slot>\n );\n }, [\n slots?.Footer,\n dictionary,\n quoteData,\n comment,\n isSubmitting,\n handleSendForReview,\n ]);\n\n // Rename modal error banner\n const renameErrorBanner = useMemo(() => renameError ? (\n <InLineAlert\n type=\"error\"\n variant=\"primary\"\n icon={<WarningFilled color=\"var(--color-error)\" />}\n heading={dictionary.renameErrorHeading}\n description={renameError}\n />\n ) : undefined, [renameError, dictionary.renameErrorHeading]);\n\n // Rename modal success banner\n const renameSuccessBanner = useMemo(() => renameSuccess ? (\n <InLineAlert\n type=\"success\"\n variant=\"primary\"\n icon={<CheckWithCircle />}\n heading={dictionary.renameSuccessHeading}\n description={renameSuccess}\n />\n ) : undefined, [renameSuccess, dictionary.renameSuccessHeading]);\n\n // Delete quote functionality\n const getDeleteErrorMessage = useCallback((error: any): string => {\n // If it's an operation failure with errors array, get the first error message\n if (error.errors && Array.isArray(error.errors) && error.errors.length > 0) {\n return error.errors[0].message || dictionary.confirmationModalDeleteErrorFallback;\n }\n // Otherwise use the error message or fallback\n return error?.message || dictionary.confirmationModalDeleteErrorFallback;\n }, [dictionary.confirmationModalDeleteErrorFallback]);\n\n const handleDeleteCancel = useCallback(() => {\n setIsDeleteDialogOpen(false);\n setDeleteError(null);\n setDeleteSuccess(false);\n }, []);\n\n const handleDeleteConfirm = useCallback(async () => {\n if (!quoteData?.uid) {\n return;\n }\n\n setDeleteError(null);\n setDeleteSuccess(false);\n\n try {\n const { operationResults } = await deleteQuote(quoteData.uid);\n\n const failure = operationResults.find((res: any) => res.__typename === 'DeleteNegotiableQuoteOperationFailure') as any;\n if (failure) {\n const errorMessage = getDeleteErrorMessage(failure);\n setDeleteError(errorMessage);\n return;\n }\n\n setDeleteSuccess(true);\n } catch (error: any) {\n const errorMessage = getDeleteErrorMessage(error);\n setDeleteError(errorMessage);\n }\n }, [quoteData, getDeleteErrorMessage]);\n\n const handleDismissError = useCallback(() => {\n setDeleteError(null);\n }, []);\n\n const handleDismissSuccess = useCallback(() => {\n setDeleteSuccess(false);\n }, []);\n\n const deleteErrorBanner = deleteError ? (\n <InLineAlert\n type=\"error\"\n variant=\"primary\"\n icon={<WarningFilled />}\n heading={dictionary.confirmationModalDeleteErrorHeading}\n description={deleteError}\n onDismiss={handleDismissError}\n data-testid=\"confirmation-modal-error-banner\"\n />\n ) : null;\n\n const deleteSuccessBanner = deleteSuccess ? (\n <InLineAlert\n type=\"success\"\n variant=\"primary\"\n icon={<CheckWithCircle />}\n heading={dictionary.confirmationModalDeleteSuccessHeading}\n description={dictionary.confirmationModalDeleteSuccessDescription}\n onDismiss={handleDismissSuccess}\n data-testid=\"confirmation-modal-success-banner\"\n />\n ) : null;\n\n const deleteBanner = deleteSuccessBanner || deleteErrorBanner;\n\n const manageNegotiableQuoteProps: ManageNegotiableQuoteComponentProps = {\n ...props,\n loading,\n quoteName,\n quoteStatus,\n banner: banner || undefined,\n details: details!, // Details will always be defined at this point\n actionBar,\n quoteContent,\n shippingInformationTitle,\n shippingInformation,\n quoteCommentsTitle,\n quoteComments,\n footer,\n };\n\n return (\n <>\n <ManageNegotiableQuoteComponent {...manageNegotiableQuoteProps} />\n {isRenameModalOpen &&\n createPortal(\n <RenameQuoteModal\n open={isRenameModalOpen}\n quoteName={renameQuoteName}\n renameReason={renameReason}\n quoteNameError={renameQuoteNameError}\n errorBanner={renameErrorBanner}\n successBanner={renameSuccessBanner}\n onQuoteNameChange={handleRenameQuoteNameChange}\n onRenameReasonChange={setRenameReason}\n onSave={handleRenameSave}\n onClose={handleRenameClose}\n />,\n document.body\n )}\n {isDeleteDialogOpen &&\n createPortal(\n <ConfirmationModal\n open={isDeleteDialogOpen}\n title={dictionary.confirmationModalDeleteTitle}\n message={dictionary.confirmationModalDeleteMessage}\n cancelLabel={dictionary.confirmationModalCancel}\n confirmLabel={dictionary.confirmationModalDeleteConfirm}\n onCancel={handleDeleteCancel}\n onConfirm={handleDeleteConfirm}\n showCloseButton={!deleteBanner}\n confirmationBanner={deleteBanner}\n />,\n document.body\n )}\n </>\n );\n};\n"],"names":["SvgEdit","props","React","ActionsBar","className","dropdownPlaceholder","dropdownOptions","handleDropdownChange","buttons","hasDropdown","hasButtons","pickerOptions","option","classes","jsx","Picker","button","index","VComponent","ManageNegotiableQuote","loading","quoteName","quoteStatus","banner","details","actionBar","quoteContent","shippingInformationTitle","shippingInformation","quoteCommentsTitle","quoteComments","footer","ManageNegotiableQuoteSkeleton","jsxs","Skeleton","SkeletonRow","ConfirmationModal","open","title","message","cancelLabel","confirmLabel","onCancel","onConfirm","showCloseButton","confirmationBanner","dictionary","useText","restProps","Modal","Button","TabbedContent","tabs","tabsContent","defaultActiveTab","activeTabId","setActiveTabId","useState","handleTabClick","tabId","activeTabContent","useMemo","tabLabel","RenameQuoteModal","renameReason","quoteNameError","errorBanner","successBanner","onQuoteNameChange","onRenameReasonChange","onSave","onClose","Fragment","Input","e","TextArea","onActionsDropdownChange","slots","onActionsButtonClick","onSendForReview","quoteData","setQuoteData","setLoading","isDeleteDialogOpen","setIsDeleteDialogOpen","deleteError","setDeleteError","deleteSuccess","setDeleteSuccess","comment","setComment","isSubmitting","setIsSubmitting","isRenameModalOpen","setIsRenameModalOpen","renameQuoteName","setRenameQuoteName","setRenameReason","renameError","setRenameError","renameQuoteNameError","setRenameQuoteNameError","renameSuccess","setRenameSuccess","useEffect","quoteDataEvent","events","data","quote","shippingAddressSetEvent","quoteSentForReviewEvent","quoteRenamedEvent","handleRenameClick","useCallback","handleRenameClose","handleRenameQuoteNameChange","value","handleRenameSave","renameNegotiableQuote","error","isLocked","Slot","Edit","bannerMessage","status","bannerContent","InLineAlert","WarningFilled","calculatedLocale","getGlobalLocale","dateFormatter","expirationDate","handleActionsDropdownChange","event","handleActionsButtonClick","action","ItemsQuoted","QuoteCommentsList","QuoteHistoryLog","ShippingAddressDisplay","handleSendForReview","sendForReview","renameErrorBanner","renameSuccessBanner","CheckWithCircle","getDeleteErrorMessage","handleDeleteCancel","handleDeleteConfirm","operationResults","deleteQuote","failure","res","errorMessage","handleDismissError","handleDismissSuccess","deleteErrorBanner","deleteBanner","manageNegotiableQuoteProps","ManageNegotiableQuoteComponent","createPortal"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,11 @@
1
+ import { OrderSummaryLineItem } from '../../components';
2
+ import { NegotiableQuoteModel } from '../../data/models';
3
+ import { Container } from '@dropins/tools/types/elsie/src/lib';
4
+ import { HTMLAttributes } from 'preact/compat';
5
+
6
+ export interface OrderSummaryProps extends HTMLAttributes<HTMLDivElement> {
7
+ showTotalSaved?: boolean;
8
+ updateLineItems?: (lineItems: Array<OrderSummaryLineItem>) => Array<OrderSummaryLineItem>;
9
+ }
10
+ export declare const OrderSummary: Container<OrderSummaryProps, NegotiableQuoteModel | null>;
11
+ //# sourceMappingURL=OrderSummary.d.ts.map
@@ -0,0 +1,11 @@
1
+ /********************************************************************
2
+ * Copyright 2025 Adobe
3
+ * All Rights Reserved.
4
+ *
5
+ * NOTICE: Adobe permits you to use, modify, and distribute this
6
+ * file in accordance with the terms of the Adobe license agreement
7
+ * accompanying it.
8
+ *******************************************************************/
9
+ export * from './OrderSummary';
10
+ export { OrderSummary as default } from './OrderSummary';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './OrderSummary/index'
2
+ import _default from './OrderSummary/index'
3
+ export default _default
@@ -0,0 +1,4 @@
1
+ /*! Copyright 2025 Adobe
2
+ All Rights Reserved. */
3
+ import{jsxs as u,jsx as t,Fragment as Ee}from"@dropins/tools/preact-jsx-runtime.js";import{VComponent as M,classes as we}from"@dropins/tools/lib.js";/* empty css */import{Accordion as fe,AccordionSection as ve,Divider as Me,Price as l,Icon as Ze}from"@dropins/tools/components.js";/* empty css */import{O as s}from"../chunks/OrderSummaryLine.js";import*as H from"@dropins/tools/preact-compat.js";import{useState as Ne,useEffect as He}from"@dropins/tools/preact-compat.js";import{S as Le}from"../chunks/ChevronDown.js";import{useText as _e}from"@dropins/tools/i18n.js";import"@dropins/tools/preact.js";/* empty css *//* empty css *//* empty css */import{s as Ve,Q as Z}from"../chunks/state.js";import{events as Ie}from"@dropins/tools/event-bus.js";const Se=m=>H.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...m},H.createElement("path",{d:"M7.74512 14.132L12.0001 9.87701L16.2551 14.132",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"square",strokeLinejoin:"round"})),ke=m=>H.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...m},H.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M22 6.25H22.75C22.75 5.83579 22.4142 5.5 22 5.5V6.25ZM22 9.27L22.2514 9.97663C22.5503 9.87029 22.75 9.58731 22.75 9.27H22ZM20.26 12.92L19.5534 13.1714L19.5539 13.1728L20.26 12.92ZM22 14.66H22.75C22.75 14.3433 22.551 14.0607 22.2528 13.9539L22 14.66ZM22 17.68V18.43C22.4142 18.43 22.75 18.0942 22.75 17.68H22ZM2 17.68H1.25C1.25 18.0942 1.58579 18.43 2 18.43V17.68ZM2 14.66L1.74865 13.9534C1.44969 14.0597 1.25 14.3427 1.25 14.66H2ZM3.74 11.01L4.44663 10.7586L4.44611 10.7572L3.74 11.01ZM2 9.27H1.25C1.25 9.58675 1.44899 9.86934 1.7472 9.97611L2 9.27ZM2 6.25V5.5C1.58579 5.5 1.25 5.83579 1.25 6.25H2ZM21.25 6.25V9.27H22.75V6.25H21.25ZM21.7486 8.56337C19.8706 9.23141 18.8838 11.2889 19.5534 13.1714L20.9666 12.6686C20.5762 11.5711 21.1494 10.3686 22.2514 9.97663L21.7486 8.56337ZM19.5539 13.1728C19.9195 14.1941 20.7259 15.0005 21.7472 15.3661L22.2528 13.9539C21.6541 13.7395 21.1805 13.2659 20.9661 12.6672L19.5539 13.1728ZM21.25 14.66V17.68H22.75V14.66H21.25ZM22 16.93H2V18.43H22V16.93ZM2.75 17.68V14.66H1.25V17.68H2.75ZM2.25135 15.3666C4.12941 14.6986 5.11623 12.6411 4.44663 10.7586L3.03337 11.2614C3.42377 12.3589 2.85059 13.5614 1.74865 13.9534L2.25135 15.3666ZM4.44611 10.7572C4.08045 9.73588 3.27412 8.92955 2.2528 8.56389L1.7472 9.97611C2.34588 10.1905 2.81955 10.6641 3.03389 11.2628L4.44611 10.7572ZM2.75 9.27V6.25H1.25V9.27H2.75ZM2 7H22V5.5H2V7ZM7.31 6.74V18.17H8.81V6.74H7.31ZM17.0997 8.39967L11.0397 14.4597L12.1003 15.5203L18.1603 9.46033L17.0997 8.39967ZM12.57 9.67C12.57 9.87231 12.4159 10 12.27 10V11.5C13.2839 11.5 14.07 10.6606 14.07 9.67H12.57ZM12.27 10C12.1241 10 11.97 9.87231 11.97 9.67H10.47C10.47 10.6606 11.2561 11.5 12.27 11.5V10ZM11.97 9.67C11.97 9.46769 12.1241 9.34 12.27 9.34V7.84C11.2561 7.84 10.47 8.67938 10.47 9.67H11.97ZM12.27 9.34C12.4159 9.34 12.57 9.46769 12.57 9.67H14.07C14.07 8.67938 13.2839 7.84 12.27 7.84V9.34ZM17.22 14.32C17.22 14.5223 17.0659 14.65 16.92 14.65V16.15C17.9339 16.15 18.72 15.3106 18.72 14.32H17.22ZM16.92 14.65C16.7741 14.65 16.62 14.5223 16.62 14.32H15.12C15.12 15.3106 15.9061 16.15 16.92 16.15V14.65ZM16.62 14.32C16.62 14.1177 16.7741 13.99 16.92 13.99V12.49C15.9061 12.49 15.12 13.3294 15.12 14.32H16.62ZM16.92 13.99C17.0659 13.99 17.22 14.1177 17.22 14.32H18.72C18.72 13.3294 17.9339 12.49 16.92 12.49V13.99Z",fill:"currentColor"})),Oe=({className:m,children:V,variant:T="primary",heading:y,subTotal:d,shipping:e,discounts:g,taxTotal:c,taxesApplied:r,total:n,totalSaved:b,updateLineItems:C=p=>p,...f})=>{const[p,x]=Ne(!1),o=_e({taxesBreakdownTitle:"NegotiableQuote.PriceSummary.taxes.breakdown",taxTotal:"NegotiableQuote.PriceSummary.taxes.total",taxTotalOnly:"NegotiableQuote.PriceSummary.taxes.totalOnly",showTaxBreakdown:"NegotiableQuote.PriceSummary.taxes.showBreakdown",hideTaxBreakdown:"NegotiableQuote.PriceSummary.taxes.hideBreakdown",subtotalLabel:"NegotiableQuote.PriceSummary.subTotal.label",subtotalWithTaxes:"NegotiableQuote.PriceSummary.subTotal.withTaxes",subtotalWithoutTaxes:"NegotiableQuote.PriceSummary.subTotal.withoutTaxes",shippingLabel:"NegotiableQuote.PriceSummary.shipping.label",shippingWithTaxes:"NegotiableQuote.PriceSummary.shipping.withTaxes",shippingWithoutTaxes:"NegotiableQuote.PriceSummary.shipping.withoutTaxes",totalLabel:"NegotiableQuote.PriceSummary.total.label",totalWithoutTax:"NegotiableQuote.PriceSummary.total.withoutTax",totalSaved:"NegotiableQuote.PriceSummary.total.saved"}),v=d&&u(s,{label:o.subtotalLabel,price:d.price,classSuffixes:["subTotal"],children:[d.taxIncluded&&t("div",{"data-testid":"sub-total-tax-caption",className:"quote-order-summary__caption",children:t("span",{children:o.subtotalWithTaxes})}),d.taxExcluded?t("div",{"data-testid":"sub-total-tax-caption-excluded",className:"quote-order-summary__caption",children:u("span",{children:[d.priceExcludingTax," ",o.subtotalWithoutTaxes]})}):void 0]},o.subtotalLabel),L=e&&u(s,{label:o.shippingLabel,price:e.price,classSuffixes:["shipping"],children:[e.taxIncluded&&t("div",{"data-testid":"shipping-tax-caption",className:"quote-order-summary__caption",children:t("span",{children:o.shippingWithTaxes})}),e.taxExcluded?t("div",{"data-testid":"shipping-tax-caption-excluded",className:"quote-order-summary__caption",children:u("span",{children:[e.priceExcludingTax," ",o.shippingWithoutTaxes]})}):void 0]},o.shippingLabel),S=g&&g.length>0&&t(Ee,{children:g.map(a=>u(s,{label:a.label,price:a.price,classSuffixes:["discount"],children:[a.coupon&&t(M,{node:a.coupon,className:"quote-order-summary__coupon__code"}),a.caption&&t(M,{node:a.caption,className:"quote-order-summary__caption"})]},a.label))}),N=r&&r.length>0?t(fe,{"data-testid":"tax-breakdown",className:"quote-order-summary__taxes",iconOpen:Le,iconClose:Se,children:u(ve,{ariaLabelTitle:o.taxesBreakdownTitle,title:o.taxesBreakdownTitle,secondaryText:!p&&c?t(M,{node:c.price,className:"quote-order-summary__price"}):void 0,renderContentWhenClosed:!1,onStateChange:x,children:[t("div",{className:"quote-order-summary__appliedTaxes",children:r.map(a=>t(s,{label:a.label,price:a.price,classSuffixes:["taxEntry"],labelClassSuffix:"muted"},a.label))}),c&&t(s,{label:o.taxTotal,price:c.price,classSuffixes:["taxTotal"],labelClassSuffix:"muted"})]})}):c&&t(s,{label:o.taxTotalOnly,price:c.price,classSuffixes:["taxTotal"],testId:"tax-total-only"}),_=[{key:"subTotalContent",sortOrder:100,content:v},{key:"shippingContent",sortOrder:200,content:L},{key:"discountsContent",sortOrder:600,content:S},{key:"taxContent",sortOrder:800,content:N},...n?[{key:"totalContent",sortOrder:900,content:t(s,{label:o.totalLabel,price:n.price,classSuffixes:["total","total--padded"],testId:"total-content",labelClassSuffix:"bold"})}]:[],...n!=null&&n.priceWithoutTax?[{key:"totalWithoutTaxContent",sortOrder:1e3,content:t(s,{label:o.totalWithoutTax,price:n.priceWithoutTax,classSuffixes:["totalWithoutTax"],testId:"total-without-tax",labelClassSuffix:"muted"})}]:[],...b?[{key:"totalSavedContent",sortOrder:1100,content:t(s,{label:o.totalSaved,price:b,classSuffixes:["saved"],testId:"total-saved",labelClassSuffix:"muted"})}]:[]],E=C(_).sort((a,h)=>a.sortOrder-h.sortOrder);return u("div",{...f,className:we(["quote-order-summary",[`quote-order-summary__${T}`,T],m]),children:[u("div",{className:"quote-order-summary__heading",children:[y&&t(M,{node:y,className:"quote-order-summary__heading-text"}),t(Me,{variant:"primary",className:"quote-order-summary__divider-primary"})]}),t("div",{className:"quote-order-summary__content",children:E.map(a=>Array.isArray(a.content)?t(fe,{className:a.className,actionIconPosition:"right",iconOpen:Le,iconClose:Se,children:t(ve,{defaultOpen:!1,title:a.title,renderContentWhenClosed:!1,children:a.content.map(h=>h.content)})},a.key):a.content)})]})},Je=({children:m,initialData:V=null,showTotalSaved:T,updateLineItems:y=e=>e,...d})=>{var o,v,L,S,N,_,E,a,h,I,k,O,P,Q,W,B,A,D,q,U,X,j,z,$,F,R,G,J,K,Y,ee,te,re,ae,oe,ie,ne,le,ce,se,ue,de,me,pe,xe,he,ge,be,Te,ye,Ce;const[e,g]=Ne(V),c=e==null?void 0:e.isVirtual,r=(o=Ve.config)==null?void 0:o.quoteDisplaySettings,n=!!(r!=null&&r.zeroTax),b=(r==null?void 0:r.subtotal)===Z.TAX_INCLUDED,C=(r==null?void 0:r.subtotal)===Z.TAX_INCLUDED_AND_EXCLUDED,f=(r==null?void 0:r.shipping)===Z.TAX_INCLUDED,p=(r==null?void 0:r.shipping)===Z.TAX_INCLUDED_AND_EXCLUDED;He(()=>{const i=Ie.on("quote-management/quote-data",w=>{g(w.quote)},{eager:!0});return()=>{i==null||i.off()}},[]);const x=_e({free:"NegotiableQuote.PriceSummary.total.free",orderSummary:"NegotiableQuote.PriceSummary.orderSummary",taxToBeDetermined:"NegotiableQuote.PriceSummary.taxToBeDetermined"});return Object.keys(e??{}).length?t(Oe,{...d,"data-testid":"quote-order-summary",heading:t("div",{children:x.orderSummary}),updateLineItems:y,subTotal:{taxIncluded:b&&!n,taxExcluded:C,priceExcludingTax:t(l,{"data-testid":"subtotal",amount:(L=(v=e==null?void 0:e.prices)==null?void 0:v.subtotalExcludingTax)==null?void 0:L.value,currency:(N=(S=e==null?void 0:e.prices)==null?void 0:S.subtotalExcludingTax)==null?void 0:N.currency}),price:!n&&b||!n&&C?t(l,{"data-testid":"subtotal",amount:(E=(_=e==null?void 0:e.prices)==null?void 0:_.subtotalIncludingTax)==null?void 0:E.value,currency:(h=(a=e==null?void 0:e.prices)==null?void 0:a.subtotalIncludingTax)==null?void 0:h.currency}):t(l,{"data-testid":"subtotal",amount:(k=(I=e==null?void 0:e.prices)==null?void 0:I.subtotalExcludingTax)==null?void 0:k.value,currency:(P=(O=e==null?void 0:e.prices)==null?void 0:O.subtotalExcludingTax)==null?void 0:P.currency})},shipping:{taxIncluded:f&&!n,taxExcluded:p,priceExcludingTax:t(l,{"data-testid":"shipping",amount:(W=(Q=e==null?void 0:e.prices)==null?void 0:Q.shippingExcludingTax)==null?void 0:W.value,currency:(A=(B=e==null?void 0:e.prices)==null?void 0:B.shippingExcludingTax)==null?void 0:A.currency}),price:!n&&f||!n&&p?t(l,{"data-testid":"shipping",amount:(q=(D=e==null?void 0:e.prices)==null?void 0:D.shippingIncludingTax)==null?void 0:q.value,currency:(X=(U=e==null?void 0:e.prices)==null?void 0:U.shippingIncludingTax)==null?void 0:X.currency}):t(l,{"data-testid":"shipping",amount:(z=(j=e==null?void 0:e.prices)==null?void 0:j.shippingExcludingTax)==null?void 0:z.value,currency:(F=($=e==null?void 0:e.prices)==null?void 0:$.shippingExcludingTax)==null?void 0:F.currency})},discounts:(G=(R=e==null?void 0:e.prices)==null?void 0:R.appliedDiscounts)==null?void 0:G.map(i=>{var w;return{label:i.label,price:t(l,{"data-testid":"summary-discount-total",amount:-i.amount.value,currency:i.amount.currency,sale:!0}),coupon:i!=null&&i.coupon?u("span",{children:[t(Ze,{source:ke,size:"16"}),(w=i==null?void 0:i.coupon)==null?void 0:w.code]}):void 0}}),taxTotal:c&&!((K=(J=e==null?void 0:e.prices)==null?void 0:J.appliedTaxes)!=null&&K.length)?{price:t("span",{"data-testid":"tax-total-tbd",children:x.taxToBeDetermined})}:{price:t(l,{"data-testid":"tax-total-actual",amount:(ee=(Y=e==null?void 0:e.prices)==null?void 0:Y.totalTax)==null?void 0:ee.value,currency:(re=(te=e==null?void 0:e.prices)==null?void 0:te.totalTax)==null?void 0:re.currency})},taxesApplied:c?void 0:r!=null&&r.fullSummary?(oe=(ae=e==null?void 0:e.prices)==null?void 0:ae.appliedTaxes)==null?void 0:oe.map(i=>({label:i.label,price:t(l,{"data-testid":"applied-taxes",amount:i.amount.value,currency:i.amount.currency})})):void 0,total:{price:((ne=(ie=e==null?void 0:e.prices)==null?void 0:ie.grandTotal)==null?void 0:ne.value)===0?t("span",{"data-testid":"total-including-tax",children:x.free}):t(l,{"data-testid":"total-including-tax-actual",amount:(ce=(le=e==null?void 0:e.prices)==null?void 0:le.grandTotal)==null?void 0:ce.value,currency:(ue=(se=e==null?void 0:e.prices)==null?void 0:se.grandTotal)==null?void 0:ue.currency}),priceWithoutTax:r!=null&&r.grandTotal?((me=(de=e==null?void 0:e.prices)==null?void 0:de.grandTotalExcludingTax)==null?void 0:me.value)===0?t("span",{"data-testid":"total-excluding-tax",children:x.free}):t(l,{"data-testid":"total-excluding-tax",amount:(xe=(pe=e==null?void 0:e.prices)==null?void 0:pe.grandTotalExcludingTax)==null?void 0:xe.value,currency:(ge=(he=e==null?void 0:e.prices)==null?void 0:he.grandTotalExcludingTax)==null?void 0:ge.currency}):void 0},totalSaved:T?t(l,{amount:(Te=(be=e==null?void 0:e.prices)==null?void 0:be.discount)==null?void 0:Te.value,currency:(Ce=(ye=e==null?void 0:e.prices)==null?void 0:ye.grandTotal)==null?void 0:Ce.currency}):void 0}):null};export{Je as OrderSummary,Je as default};
4
+ //# sourceMappingURL=OrderSummary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrderSummary.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/ChevronUp.svg","../../node_modules/@adobe-commerce/elsie/src/icons/Coupon.svg","/@dropins/storefront-quote-management/src/components/OrderSummary/OrderSummary.tsx","/@dropins/storefront-quote-management/src/containers/OrderSummary/OrderSummary.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgChevronUp = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.74512 14.132L12.0001 9.87701L16.2551 14.132\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"square\", strokeLinejoin: \"round\" }));\nexport default SvgChevronUp;\n","import * as React from \"react\";\nconst SvgCoupon = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M22 6.25H22.75C22.75 5.83579 22.4142 5.5 22 5.5V6.25ZM22 9.27L22.2514 9.97663C22.5503 9.87029 22.75 9.58731 22.75 9.27H22ZM20.26 12.92L19.5534 13.1714L19.5539 13.1728L20.26 12.92ZM22 14.66H22.75C22.75 14.3433 22.551 14.0607 22.2528 13.9539L22 14.66ZM22 17.68V18.43C22.4142 18.43 22.75 18.0942 22.75 17.68H22ZM2 17.68H1.25C1.25 18.0942 1.58579 18.43 2 18.43V17.68ZM2 14.66L1.74865 13.9534C1.44969 14.0597 1.25 14.3427 1.25 14.66H2ZM3.74 11.01L4.44663 10.7586L4.44611 10.7572L3.74 11.01ZM2 9.27H1.25C1.25 9.58675 1.44899 9.86934 1.7472 9.97611L2 9.27ZM2 6.25V5.5C1.58579 5.5 1.25 5.83579 1.25 6.25H2ZM21.25 6.25V9.27H22.75V6.25H21.25ZM21.7486 8.56337C19.8706 9.23141 18.8838 11.2889 19.5534 13.1714L20.9666 12.6686C20.5762 11.5711 21.1494 10.3686 22.2514 9.97663L21.7486 8.56337ZM19.5539 13.1728C19.9195 14.1941 20.7259 15.0005 21.7472 15.3661L22.2528 13.9539C21.6541 13.7395 21.1805 13.2659 20.9661 12.6672L19.5539 13.1728ZM21.25 14.66V17.68H22.75V14.66H21.25ZM22 16.93H2V18.43H22V16.93ZM2.75 17.68V14.66H1.25V17.68H2.75ZM2.25135 15.3666C4.12941 14.6986 5.11623 12.6411 4.44663 10.7586L3.03337 11.2614C3.42377 12.3589 2.85059 13.5614 1.74865 13.9534L2.25135 15.3666ZM4.44611 10.7572C4.08045 9.73588 3.27412 8.92955 2.2528 8.56389L1.7472 9.97611C2.34588 10.1905 2.81955 10.6641 3.03389 11.2628L4.44611 10.7572ZM2.75 9.27V6.25H1.25V9.27H2.75ZM2 7H22V5.5H2V7ZM7.31 6.74V18.17H8.81V6.74H7.31ZM17.0997 8.39967L11.0397 14.4597L12.1003 15.5203L18.1603 9.46033L17.0997 8.39967ZM12.57 9.67C12.57 9.87231 12.4159 10 12.27 10V11.5C13.2839 11.5 14.07 10.6606 14.07 9.67H12.57ZM12.27 10C12.1241 10 11.97 9.87231 11.97 9.67H10.47C10.47 10.6606 11.2561 11.5 12.27 11.5V10ZM11.97 9.67C11.97 9.46769 12.1241 9.34 12.27 9.34V7.84C11.2561 7.84 10.47 8.67938 10.47 9.67H11.97ZM12.27 9.34C12.4159 9.34 12.57 9.46769 12.57 9.67H14.07C14.07 8.67938 13.2839 7.84 12.27 7.84V9.34ZM17.22 14.32C17.22 14.5223 17.0659 14.65 16.92 14.65V16.15C17.9339 16.15 18.72 15.3106 18.72 14.32H17.22ZM16.92 14.65C16.7741 14.65 16.62 14.5223 16.62 14.32H15.12C15.12 15.3106 15.9061 16.15 16.92 16.15V14.65ZM16.62 14.32C16.62 14.1177 16.7741 13.99 16.92 13.99V12.49C15.9061 12.49 15.12 13.3294 15.12 14.32H16.62ZM16.92 13.99C17.0659 13.99 17.22 14.1177 17.22 14.32H18.72C18.72 13.3294 17.9339 12.49 16.92 12.49V13.99Z\", fill: \"currentColor\" }));\nexport default SvgCoupon;\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport '@/quote-management/components/OrderSummary/OrderSummary.css';\nimport { OrderSummaryLine } from '@/quote-management/containers/OrderSummaryLine/OrderSummaryLine';\nimport {\n Accordion,\n AccordionSection,\n Divider,\n} from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { ChevronDown, ChevronUp } from '@adobe-commerce/elsie/icons';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes, useState } from 'preact/compat';\nimport { JSXInternal } from 'preact/src/jsx';\n\nexport interface OrderSummaryLineItem {\n key: string;\n title?: string;\n className?: string;\n sortOrder: number;\n content:\n | string\n | JSXInternal.Element\n | VNode<HTMLAttributes<HTMLDivElement>>\n | OrderSummaryLineItem[]\n | undefined;\n}\n\nexport interface OrderSummaryProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'primary' | 'secondary';\n heading?: VNode<HTMLAttributes<HTMLDivElement>>;\n subTotal?: {\n price: VNode<HTMLAttributes<HTMLSpanElement>>;\n priceExcludingTax?: VNode<HTMLAttributes<HTMLSpanElement>>;\n taxIncluded?: boolean;\n taxExcluded?: boolean;\n };\n shipping?: {\n price: VNode<HTMLAttributes<HTMLSpanElement>>;\n priceExcludingTax?: VNode<HTMLAttributes<HTMLSpanElement>>;\n taxIncluded?: boolean;\n taxExcluded?: boolean;\n };\n discounts?: {\n label: string;\n price: VNode<HTMLAttributes<HTMLSpanElement>>;\n caption?: VNode<HTMLAttributes<HTMLDivElement>>;\n coupon?: VNode<HTMLAttributes<HTMLSpanElement>>;\n }[];\n taxTotal?: {\n price: VNode<HTMLAttributes<HTMLSpanElement>>;\n };\n taxesApplied?: {\n label: string;\n price: VNode<HTMLAttributes<HTMLSpanElement>>;\n }[];\n total?: {\n price: VNode<HTMLAttributes<HTMLSpanElement>>;\n priceWithoutTax?: VNode<HTMLAttributes<HTMLSpanElement>>;\n };\n totalSaved?: VNode<HTMLAttributes<HTMLSpanElement>>;\n updateLineItems?: (\n lineItems: Array<OrderSummaryLineItem>\n ) => Array<OrderSummaryLineItem>;\n}\n\nexport const OrderSummary: FunctionComponent<OrderSummaryProps> = ({\n className,\n children,\n variant = 'primary',\n heading,\n subTotal,\n shipping,\n discounts,\n taxTotal,\n taxesApplied,\n total,\n totalSaved,\n updateLineItems = (lineItems) => lineItems,\n ...props\n}) => {\n const [showTaxBreakdown, setShowTaxBreakdown] = useState(false);\n\n const translations = useText({\n // Taxes\n taxesBreakdownTitle: 'NegotiableQuote.PriceSummary.taxes.breakdown',\n taxTotal: 'NegotiableQuote.PriceSummary.taxes.total',\n taxTotalOnly: 'NegotiableQuote.PriceSummary.taxes.totalOnly',\n showTaxBreakdown: 'NegotiableQuote.PriceSummary.taxes.showBreakdown',\n hideTaxBreakdown: 'NegotiableQuote.PriceSummary.taxes.hideBreakdown',\n\n // Subtotal\n subtotalLabel: 'NegotiableQuote.PriceSummary.subTotal.label',\n subtotalWithTaxes: 'NegotiableQuote.PriceSummary.subTotal.withTaxes',\n subtotalWithoutTaxes: 'NegotiableQuote.PriceSummary.subTotal.withoutTaxes',\n\n // Shipping\n shippingLabel: 'NegotiableQuote.PriceSummary.shipping.label',\n shippingWithTaxes: 'NegotiableQuote.PriceSummary.shipping.withTaxes',\n shippingWithoutTaxes: 'NegotiableQuote.PriceSummary.shipping.withoutTaxes',\n\n // Total\n totalLabel: 'NegotiableQuote.PriceSummary.total.label',\n totalWithoutTax: 'NegotiableQuote.PriceSummary.total.withoutTax',\n totalSaved: 'NegotiableQuote.PriceSummary.total.saved',\n });\n\n const subTotalContent = subTotal && (\n <OrderSummaryLine\n key={translations.subtotalLabel}\n label={translations.subtotalLabel}\n price={subTotal.price}\n classSuffixes={['subTotal']}\n >\n {subTotal.taxIncluded && (\n <div\n data-testid=\"sub-total-tax-caption\"\n className=\"quote-order-summary__caption\"\n >\n <span>{translations.subtotalWithTaxes}</span>\n </div>\n )}\n\n {subTotal.taxExcluded ? (\n <div\n data-testid=\"sub-total-tax-caption-excluded\"\n className=\"quote-order-summary__caption\"\n >\n <span>\n {subTotal.priceExcludingTax}\n &nbsp;\n {translations.subtotalWithoutTaxes}\n </span>\n </div>\n ) : undefined}\n </OrderSummaryLine>\n );\n\n const shippingContent = shipping && (\n <OrderSummaryLine\n key={translations.shippingLabel}\n label={translations.shippingLabel}\n price={shipping.price}\n classSuffixes={['shipping']}\n >\n {shipping.taxIncluded && (\n <div\n data-testid=\"shipping-tax-caption\"\n className=\"quote-order-summary__caption\"\n >\n <span>{translations.shippingWithTaxes}</span>\n </div>\n )}\n\n {shipping.taxExcluded ? (\n <div\n data-testid=\"shipping-tax-caption-excluded\"\n className=\"quote-order-summary__caption\"\n >\n <span>\n {shipping.priceExcludingTax}\n &nbsp;\n {translations.shippingWithoutTaxes}\n </span>\n </div>\n ) : undefined}\n </OrderSummaryLine>\n );\n\n const discountsContent = discounts && discounts.length > 0 && (\n <>\n {discounts.map((discount) => (\n <OrderSummaryLine\n key={discount.label}\n label={discount.label}\n price={discount.price}\n classSuffixes={['discount']}\n >\n {discount.coupon && (\n <VComponent\n node={discount.coupon}\n className=\"quote-order-summary__coupon__code\"\n />\n )}\n\n {discount.caption && (\n <VComponent\n node={discount.caption}\n className=\"quote-order-summary__caption\"\n />\n )}\n </OrderSummaryLine>\n ))}\n </>\n );\n\n const taxContent =\n taxesApplied && taxesApplied.length > 0 ? (\n /* Show breakdown if provided */\n <Accordion\n data-testid=\"tax-breakdown\"\n className=\"quote-order-summary__taxes\"\n iconOpen={ChevronDown}\n iconClose={ChevronUp}\n >\n <AccordionSection\n ariaLabelTitle={translations.taxesBreakdownTitle}\n title={translations.taxesBreakdownTitle}\n secondaryText={\n !showTaxBreakdown && taxTotal ? (\n <VComponent\n node={taxTotal.price}\n className=\"quote-order-summary__price\"\n />\n ) : undefined\n }\n renderContentWhenClosed={false}\n onStateChange={setShowTaxBreakdown}\n >\n <div className=\"quote-order-summary__appliedTaxes\">\n {taxesApplied.map((tax) => (\n <OrderSummaryLine\n key={tax.label}\n label={tax.label}\n price={tax.price}\n classSuffixes={['taxEntry']}\n labelClassSuffix=\"muted\"\n />\n ))}\n </div>\n\n {taxTotal && (\n <OrderSummaryLine\n label={translations.taxTotal}\n price={taxTotal.price}\n classSuffixes={['taxTotal']}\n labelClassSuffix=\"muted\"\n />\n )}\n </AccordionSection>\n </Accordion>\n ) : (\n taxTotal && (\n <OrderSummaryLine\n label={translations.taxTotalOnly}\n price={taxTotal.price}\n classSuffixes={['taxTotal']}\n testId=\"tax-total-only\"\n />\n )\n );\n\n const lineItems: Array<OrderSummaryLineItem> = [\n {\n key: 'subTotalContent',\n sortOrder: 100,\n content: subTotalContent,\n },\n {\n key: 'shippingContent',\n sortOrder: 200,\n content: shippingContent,\n },\n {\n key: 'discountsContent',\n sortOrder: 600,\n content: discountsContent,\n },\n {\n key: 'taxContent',\n sortOrder: 800,\n content: taxContent,\n },\n ...(total\n ? [\n {\n key: 'totalContent',\n sortOrder: 900,\n content: (\n <OrderSummaryLine\n label={translations.totalLabel}\n price={total.price}\n classSuffixes={['total', 'total--padded']}\n testId=\"total-content\"\n labelClassSuffix=\"bold\"\n />\n ),\n },\n ]\n : []),\n ...(total?.priceWithoutTax\n ? [\n {\n key: 'totalWithoutTaxContent',\n sortOrder: 1000,\n content: (\n <OrderSummaryLine\n label={translations.totalWithoutTax}\n price={total.priceWithoutTax}\n classSuffixes={['totalWithoutTax']}\n testId=\"total-without-tax\"\n labelClassSuffix=\"muted\"\n />\n ),\n },\n ]\n : []),\n ...(totalSaved\n ? [\n {\n key: 'totalSavedContent',\n sortOrder: 1100,\n content: (\n <OrderSummaryLine\n label={translations.totalSaved}\n price={totalSaved}\n classSuffixes={['saved']}\n testId=\"total-saved\"\n labelClassSuffix=\"muted\"\n />\n ),\n },\n ]\n : []),\n ];\n\n const updatedLineItems: Array<OrderSummaryLineItem> = updateLineItems(\n lineItems\n ).sort(\n (currentLine: OrderSummaryLineItem, nextLine: OrderSummaryLineItem) => {\n return currentLine.sortOrder - nextLine.sortOrder;\n }\n );\n\n return (\n <div\n {...props}\n className={classes([\n 'quote-order-summary',\n [`quote-order-summary__${variant}`, variant],\n className,\n ])}\n >\n <div className=\"quote-order-summary__heading\">\n {heading && (\n <VComponent\n node={heading}\n className=\"quote-order-summary__heading-text\"\n />\n )}\n\n <Divider\n variant=\"primary\"\n className=\"quote-order-summary__divider-primary\"\n />\n </div>\n\n <div className=\"quote-order-summary__content\">\n {updatedLineItems.map((line: OrderSummaryLineItem) => {\n if (Array.isArray(line.content)) {\n return (\n <Accordion\n key={line.key}\n className={line.className}\n actionIconPosition={'right'}\n iconOpen={ChevronDown}\n iconClose={ChevronUp}\n >\n <AccordionSection\n defaultOpen={false}\n title={line.title}\n renderContentWhenClosed={false}\n >\n {line.content.map((innerLine) => {\n return innerLine.content;\n })}\n </AccordionSection>\n </Accordion>\n );\n }\n return line.content;\n })}\n </div>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport {\n OrderSummary as OrderSummaryComponent,\n OrderSummaryLineItem,\n} from '@/quote-management/components';\nimport {\n NegotiableQuoteModel,\n QuoteDisplayAmount,\n} from '@/quote-management/data/models';\nimport { state } from '@/quote-management/lib/state';\nimport { Icon, Price } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Coupon } from '@adobe-commerce/elsie/icons';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { events } from '@adobe-commerce/event-bus';\nimport { HTMLAttributes, useEffect, useState } from 'preact/compat';\n\nexport interface OrderSummaryProps extends HTMLAttributes<HTMLDivElement> {\n showTotalSaved?: boolean;\n updateLineItems?: (\n lineItems: Array<OrderSummaryLineItem>\n ) => Array<OrderSummaryLineItem>;\n}\n\nexport const OrderSummary: Container<\n OrderSummaryProps,\n NegotiableQuoteModel | null\n> = ({\n children,\n initialData = null,\n showTotalSaved,\n updateLineItems = (lineItems) => lineItems,\n ...props\n}) => {\n const [data, setData] = useState<NegotiableQuoteModel | null>(initialData);\n const isVirtual = data?.isVirtual;\n\n const quoteDisplaySettings = state.config?.quoteDisplaySettings;\n\n const isZeroTax = Boolean(quoteDisplaySettings?.zeroTax);\n\n const isTaxIncludedInSubtotal =\n quoteDisplaySettings?.subtotal === QuoteDisplayAmount.TAX_INCLUDED;\n const isTaxIncludedAndExcludedInSubtotal =\n quoteDisplaySettings?.subtotal ===\n QuoteDisplayAmount.TAX_INCLUDED_AND_EXCLUDED;\n\n const isTaxIncludedInShipping =\n quoteDisplaySettings?.shipping === QuoteDisplayAmount.TAX_INCLUDED;\n const isTaxIncludedAndExcludedInShipping =\n quoteDisplaySettings?.shipping ===\n QuoteDisplayAmount.TAX_INCLUDED_AND_EXCLUDED;\n\n useEffect(() => {\n const dataEvent = events.on(\n 'quote-management/quote-data',\n (payload) => {\n setData(payload.quote as NegotiableQuoteModel);\n },\n { eager: true }\n );\n\n return () => {\n dataEvent?.off();\n };\n }, []);\n\n const translations = useText({\n free: 'NegotiableQuote.PriceSummary.total.free',\n orderSummary: 'NegotiableQuote.PriceSummary.orderSummary',\n taxToBeDetermined: 'NegotiableQuote.PriceSummary.taxToBeDetermined',\n });\n\n if (!Object.keys(data ?? {}).length) {\n return null;\n }\n\n return (\n <OrderSummaryComponent\n {...props}\n data-testid=\"quote-order-summary\"\n heading={<div>{translations.orderSummary}</div>}\n updateLineItems={updateLineItems}\n subTotal={{\n taxIncluded: isTaxIncludedInSubtotal && !isZeroTax,\n taxExcluded: isTaxIncludedAndExcludedInSubtotal,\n priceExcludingTax: (\n <Price\n data-testid=\"subtotal\"\n amount={data?.prices?.subtotalExcludingTax?.value}\n currency={data?.prices?.subtotalExcludingTax?.currency}\n />\n ),\n price:\n (!isZeroTax && isTaxIncludedInSubtotal) ||\n (!isZeroTax && isTaxIncludedAndExcludedInSubtotal) ? (\n <Price\n data-testid=\"subtotal\"\n amount={data?.prices?.subtotalIncludingTax?.value}\n currency={data?.prices?.subtotalIncludingTax?.currency}\n />\n ) : (\n <Price\n data-testid=\"subtotal\"\n amount={data?.prices?.subtotalExcludingTax?.value}\n currency={data?.prices?.subtotalExcludingTax?.currency}\n />\n ),\n }}\n shipping={{\n taxIncluded: isTaxIncludedInShipping && !isZeroTax,\n taxExcluded: isTaxIncludedAndExcludedInShipping,\n priceExcludingTax: (\n <Price\n data-testid=\"shipping\"\n amount={data?.prices?.shippingExcludingTax?.value}\n currency={data?.prices?.shippingExcludingTax?.currency}\n />\n ),\n price:\n (!isZeroTax && isTaxIncludedInShipping) ||\n (!isZeroTax && isTaxIncludedAndExcludedInShipping) ? (\n <Price\n data-testid=\"shipping\"\n amount={data?.prices?.shippingIncludingTax?.value}\n currency={data?.prices?.shippingIncludingTax?.currency}\n />\n ) : (\n <Price\n data-testid=\"shipping\"\n amount={data?.prices?.shippingExcludingTax?.value}\n currency={data?.prices?.shippingExcludingTax?.currency}\n />\n ),\n }}\n discounts={data?.prices?.appliedDiscounts?.map((discount) => {\n return {\n label: discount.label,\n price: (\n <Price\n data-testid=\"summary-discount-total\"\n amount={-discount.amount.value}\n currency={discount.amount.currency}\n sale={true}\n />\n ),\n coupon: discount?.coupon ? (\n <span>\n <Icon source={Coupon} size=\"16\" />\n {discount?.coupon?.code}\n </span>\n ) : undefined,\n };\n })}\n taxTotal={\n isVirtual && !data?.prices?.appliedTaxes?.length\n ? {\n price: (\n <span data-testid=\"tax-total-tbd\">\n {translations.taxToBeDetermined}\n </span>\n ),\n }\n : {\n price: (\n <Price\n data-testid=\"tax-total-actual\"\n amount={data?.prices?.totalTax?.value}\n currency={data?.prices?.totalTax?.currency}\n />\n ),\n }\n }\n taxesApplied={\n isVirtual\n ? undefined\n : quoteDisplaySettings?.fullSummary\n ? data?.prices?.appliedTaxes?.map((tax: any) => ({\n label: tax.label,\n price: (\n <Price\n data-testid=\"applied-taxes\"\n amount={tax.amount.value}\n currency={tax.amount.currency}\n />\n ),\n }))\n : undefined\n }\n total={{\n price:\n data?.prices?.grandTotal?.value === 0 ? (\n <span data-testid=\"total-including-tax\">{translations.free}</span>\n ) : (\n <Price\n data-testid=\"total-including-tax-actual\"\n amount={data?.prices?.grandTotal?.value}\n currency={data?.prices?.grandTotal?.currency}\n />\n ),\n priceWithoutTax: quoteDisplaySettings?.grandTotal ? (\n data?.prices?.grandTotalExcludingTax?.value === 0 ? (\n <span data-testid=\"total-excluding-tax\">{translations.free}</span>\n ) : (\n <Price\n data-testid=\"total-excluding-tax\"\n amount={data?.prices?.grandTotalExcludingTax?.value}\n currency={data?.prices?.grandTotalExcludingTax?.currency}\n />\n )\n ) : undefined,\n }}\n totalSaved={\n showTotalSaved ? (\n <Price\n amount={data?.prices?.discount?.value}\n currency={data?.prices?.grandTotal?.currency}\n />\n ) : undefined\n }\n />\n );\n};\n"],"names":["SvgChevronUp","props","React","SvgCoupon","OrderSummary","className","children","variant","heading","subTotal","shipping","discounts","taxTotal","taxesApplied","total","totalSaved","updateLineItems","lineItems","showTaxBreakdown","setShowTaxBreakdown","useState","translations","useText","subTotalContent","jsxs","OrderSummaryLine","jsx","shippingContent","discountsContent","Fragment","discount","VComponent","taxContent","Accordion","ChevronDown","ChevronUp","AccordionSection","tax","updatedLineItems","currentLine","nextLine","classes","Divider","line","innerLine","initialData","showTotalSaved","data","setData","isVirtual","quoteDisplaySettings","_a","state","isZeroTax","isTaxIncludedInSubtotal","QuoteDisplayAmount","isTaxIncludedAndExcludedInSubtotal","isTaxIncludedInShipping","isTaxIncludedAndExcludedInShipping","useEffect","dataEvent","events","payload","OrderSummaryComponent","Price","_c","_b","_e","_d","_g","_f","_i","_h","_k","_j","_m","_l","_o","_n","_q","_p","_s","_r","_u","_t","_w","_v","_y","_x","_A","_z","Icon","Coupon","_C","_B","_E","_D","_G","_F","_I","_H","_K","_J","_M","_L","_O","_N","_Q","_P","_S","_R","_U","_T","_W","_V","_Y","_X"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -0,0 +1,14 @@
1
+ import { HTMLAttributes } from 'preact/compat';
2
+ import { Container } from '@dropins/tools/types/elsie/src/lib';
3
+ import { VNode } from 'preact';
4
+
5
+ export interface OrderSummaryLineProps extends Omit<HTMLAttributes<HTMLDivElement>, 'label'> {
6
+ label: VNode | string;
7
+ price: VNode<HTMLAttributes<HTMLSpanElement>>;
8
+ classSuffixes?: Array<string>;
9
+ labelClassSuffix?: string;
10
+ testId?: string;
11
+ children?: any;
12
+ }
13
+ export declare const OrderSummaryLine: Container<OrderSummaryLineProps>;
14
+ //# sourceMappingURL=OrderSummaryLine.d.ts.map
@@ -0,0 +1,11 @@
1
+ /********************************************************************
2
+ * Copyright 2025 Adobe
3
+ * All Rights Reserved.
4
+ *
5
+ * NOTICE: Adobe permits you to use, modify, and distribute this
6
+ * file in accordance with the terms of the Adobe license agreement
7
+ * accompanying it.
8
+ *******************************************************************/
9
+ export * from './OrderSummaryLine';
10
+ export { OrderSummaryLine as default } from './OrderSummaryLine';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './OrderSummaryLine/index'
2
+ import _default from './OrderSummaryLine/index'
3
+ export default _default
@@ -0,0 +1,4 @@
1
+ /*! Copyright 2025 Adobe
2
+ All Rights Reserved. */
3
+ import{O as u,O as l}from"../chunks/OrderSummaryLine.js";import"@dropins/tools/preact-jsx-runtime.js";import"@dropins/tools/lib.js";/* empty css */import"@dropins/tools/components.js";/* empty css */import"@dropins/tools/preact-compat.js";import"@dropins/tools/preact.js";/* empty css *//* empty css *//* empty css */export{u as OrderSummaryLine,l as default};
4
+ //# sourceMappingURL=OrderSummaryLine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrderSummaryLine.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ import { HTMLAttributes } from 'preact/compat';
2
+ import { ImageProps } from '@dropins/tools/types/elsie/src/components';
3
+ import { Container, SlotProps } from '@dropins/tools/types/elsie/src/lib';
4
+ import { NegotiableQuoteCartItem as NegotiableQuoteItemModel } from '../../data/models';
5
+
6
+ export interface QuoteSummaryListProps extends HTMLAttributes<HTMLDivElement> {
7
+ hideHeading?: boolean;
8
+ hideFooter?: boolean;
9
+ routeProduct?: (item: NegotiableQuoteItemModel) => string;
10
+ showMaxItems?: boolean;
11
+ attributesToHide?: SwitchableAttributes[];
12
+ slots?: {
13
+ Heading?: SlotProps<{
14
+ count: number;
15
+ quoteId: string;
16
+ }>;
17
+ Footer?: SlotProps<{
18
+ item: NegotiableQuoteItemModel;
19
+ }>;
20
+ Thumbnail?: SlotProps<{
21
+ item: NegotiableQuoteItemModel;
22
+ defaultImageProps: ImageProps;
23
+ }>;
24
+ ProductAttributes?: SlotProps<{
25
+ item: NegotiableQuoteItemModel;
26
+ }>;
27
+ QuoteSummaryFooter?: SlotProps<{
28
+ displayMaxItems: boolean;
29
+ }>;
30
+ QuoteItem?: SlotProps;
31
+ ItemTitle?: SlotProps<{
32
+ item: NegotiableQuoteItemModel;
33
+ }>;
34
+ ItemPrice?: SlotProps<{
35
+ item: NegotiableQuoteItemModel;
36
+ }>;
37
+ ItemTotal?: SlotProps<{
38
+ item: NegotiableQuoteItemModel;
39
+ }>;
40
+ ItemSku?: SlotProps<{
41
+ item: NegotiableQuoteItemModel;
42
+ }>;
43
+ };
44
+ accordion?: boolean;
45
+ variant?: 'primary' | 'secondary';
46
+ showDiscount?: boolean;
47
+ showSavings?: boolean;
48
+ }
49
+ export type SwitchableAttributes = 'name' | 'image' | 'configurations' | 'warning' | 'alert' | 'sku' | 'price' | 'quantity' | 'total' | 'totalDiscount' | 'totalExcludingTax';
50
+ export declare const QuoteSummaryList: Container<QuoteSummaryListProps>;
51
+ //# sourceMappingURL=QuoteSummaryList.d.ts.map
@@ -0,0 +1,11 @@
1
+ /********************************************************************
2
+ * Copyright 2025 Adobe
3
+ * All Rights Reserved.
4
+ *
5
+ * NOTICE: Adobe permits you to use, modify, and distribute this
6
+ * file in accordance with the terms of the Adobe license agreement
7
+ * accompanying it.
8
+ *******************************************************************/
9
+ export * from './QuoteSummaryList';
10
+ export { QuoteSummaryList as default } from './QuoteSummaryList';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './QuoteSummaryList/index'
2
+ import _default from './QuoteSummaryList/index'
3
+ export default _default
@@ -0,0 +1,4 @@
1
+ /*! Copyright 2025 Adobe
2
+ All Rights Reserved. */
3
+ import{jsx as n,jsxs as v,Fragment as E}from"@dropins/tools/preact-jsx-runtime.js";import*as b from"@dropins/tools/preact-compat.js";import{useState as L,useEffect as ve,useCallback as fe}from"@dropins/tools/preact-compat.js";import{Divider as re,Skeleton as _e,SkeletonRow as xe,Button as be,CartList as Ie,Accordion as Te,AccordionSection as ke,CartItem as Qe,Price as I,Image as Ce}from"@dropins/tools/components.js";import{classes as y,VComponent as q,Slot as d}from"@dropins/tools/lib.js";import{events as we}from"@dropins/tools/event-bus.js";/* empty css *//* empty css */import"@dropins/tools/preact.js";/* empty css *//* empty css *//* empty css */import{s as ie,Q as p}from"../chunks/state.js";import{S as Ee}from"../chunks/ChevronDown.js";import{useText as Ne}from"@dropins/tools/i18n.js";const Pe=f=>b.createElement("svg",{id:"Icon_Chevron_right_Base","data-name":"Icon \\u2013 Chevron right \\u2013 Base",xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",...f},b.createElement("g",{id:"Large"},b.createElement("rect",{id:"Placement_area","data-name":"Placement area",width:24,height:24,fill:"#fff",opacity:0}),b.createElement("g",{id:"Chevron_right_icon","data-name":"Chevron right icon"},b.createElement("path",{vectorEffect:"non-scaling-stroke",id:"chevron",d:"M199.75,367.5l4.255,-4.255-4.255,-4.255",transform:"translate(-189.25 -351.0)",fill:"none",stroke:"currentColor"})))),oe=({className:f,children:N,heading:g,footer:T,products:u,outOfStockMessage:r,loading:P=!0,variant:_="primary",...k})=>n("div",{...k,className:y(["quote-management-quote-summary-list",f,`quote-management-quote-summary-list__background--${_}`]),children:P?n(Ae,{}):v(E,{children:[(g||r)&&v("div",{"data-testid":"quote-summary-list-heading-wrapper",className:y(["quote-management-quote-summary-list__heading",["quote-management-quote-summary-list__heading--full-width",!u]]),children:[g&&v(E,{children:[n(q,{node:g,className:"quote-management-quote-summary-list__heading-text"}),n(re,{variant:"primary",className:y(["quote-management-quote-summary-list__heading-divider"])})]}),r&&n(q,{node:r,className:"quote-management-quote-summary-list__out-of-stock-message"})]}),n("div",{className:y(["quote-management-quote-summary-list__content"]),children:u}),T&&v(E,{children:[n(re,{variant:"primary",className:y(["quote-management-quote-summary-list__footer-divider"])}),n(q,{node:T,className:"quote-management-quote-summary-list__footer-text"})]})]})}),Ae=()=>n(_e,{"data-testid":"quote-summary-list-skeleton",className:"quote-management-quote-summary-list__skeleton",rowGap:"medium",children:n(xe,{variant:"row",size:"xlarge",fullWidth:!0,lines:3,multilineGap:"small"})}),We=({hideHeading:f,hideFooter:N,routeProduct:g,showMaxItems:T=!0,attributesToHide:u=[],slots:r,accordion:P=!1,variant:_="primary",showDiscount:k,showSavings:M,...O})=>{var Z,H;const[o,ce]=L(void 0),[Q,ue]=L(!0),[A,le]=L(T),R=((Z=ie.config)==null?void 0:Z.quoteSummaryMaxItems)||5,c=(H=ie.config)==null?void 0:H.quoteDisplaySettings,s=Ne({discountedPrice:"NegotiableQuote.QuoteSummaryList.discountedPrice",discountPercentage:"NegotiableQuote.QuoteSummaryList.discountPercentage",editQuote:"NegotiableQuote.QuoteSummaryList.editQuote",file:"NegotiableQuote.QuoteSummaryList.file",files:"NegotiableQuote.QuoteSummaryList.files",heading:"NegotiableQuote.QuoteSummaryList.heading",regularPrice:"NegotiableQuote.QuoteSummaryList.regularPrice",savingsAmount:"NegotiableQuote.QuoteSummaryList.savingsAmount",viewMore:"NegotiableQuote.QuoteSummaryList.viewMore"});ve(()=>{const e=we.on("quote-management/quote-data",t=>{const{quote:a}=t;a&&(ce(a),ue(!1))},{eager:!0});return()=>e==null?void 0:e.off()},[]);const se=fe(()=>{le(e=>!e)},[]),U=(e,t)=>{if(u.includes("image"))return;const a={loading:t<4?"eager":"lazy",src:e.image.src,alt:e.image.alt,width:"300",height:"300",params:{width:300}},i=n(Ce,{"data-testid":"quote-summary-list-item-image",...a});return n(d,{name:"Thumbnail",slot:r==null?void 0:r.Thumbnail,context:{item:e,defaultImageProps:a},children:g?n("a",{href:g(e),children:i}):i})},X=e=>{if(!u.includes("name"))return n("span",{"data-testid":"quote-summary-list-item-title",children:g?n("a",{href:g(e),children:e.product.name}):e.product.name})},de=e=>{const t=e==null?void 0:e.map(i=>({label:i.label,value:i.values.map(l=>l.label).join(", ")})),a={};return t==null||t.forEach(i=>{a[i.label]=i.value}),Object.keys(a).length>0?a:null},me=e=>{const t=e==null?void 0:e.map(i=>({label:i.optionLabel,value:i.valueLabel})),a={};return t==null||t.forEach(i=>{a[i.label]=i.value}),Object.keys(a).length>0?a:null},ge=e=>{const t=e==null?void 0:e.map(i=>({label:i.label,type:i.type,values:i.values.map(l=>({label:l.label,value:l.value}))})),a={};return t==null||t.forEach(i=>{var l;switch(i.type){case"field":case"area":case"date_time":a[i.label]=i.values[0].value;break;case"radio":case"drop_down":a[i.label]=i.values[0].label;break;case"multiple":case"checkbox":a[i.label]=i.values.reduce((m,h)=>m?`${m}, ${h.label}`:h.label,"");break;case"file":{const m=new DOMParser,h=i.values[0].value,w=((l=m.parseFromString(h,"text/html").querySelector("a"))==null?void 0:l.textContent)||"";a[i.label]=w;break}}}),a},$=e=>{if(u.includes("configurations"))return;const t={...de(e.bundleOptions),...me(e.configurableOptions),...ge(e.customizableOptions),...e.links&&e.links.count?e.links.count>1?{[s.files.replace("{count}",e.links.count.toString())]:e.links.result}:{[s.file.replace("{count}",e.links.count.toString())]:e.links.result}:null};if(Object.keys(t).length!==0)return t},j=e=>(c==null?void 0:c.price)===p.TAX_INCLUDED?e.discounted?{amount:e.prices.regularPrice.value,currency:e.prices.regularPrice.currency,style:{font:"inherit"},"data-testid":"including-tax-item-price"}:{amount:e.prices.priceIncludingTax.value,currency:e.prices.priceIncludingTax.currency,style:{font:"inherit"},"data-testid":"including-tax-item-price"}:{amount:e.prices.regularPrice.value,currency:e.prices.regularPrice.currency,style:{font:"inherit"},"data-testid":"regular-item-price"},F=e=>{var t,a;return{amount:(t=e.savingsAmount)==null?void 0:t.value,currency:(a=e.savingsAmount)==null?void 0:a.currency,style:{font:"inherit"},"data-testid":"item-savings-amount"}},B=e=>(c==null?void 0:c.price)===p.TAX_INCLUDED_AND_EXCLUDED?n(I,{amount:e.prices.rowTotal.value,currency:e.prices.rowTotal.currency,"data-testid":"excluding-tax-total","aria-label":s.regularPrice}):void 0,z=e=>{var i,l,m,h,S,w,ee,te,ne,ae;const t={"aria-label":s.regularPrice},a=e.discounted?{}:null;return(c==null?void 0:c.price)===p.TAX_INCLUDED||(c==null?void 0:c.price)===p.TAX_INCLUDED_AND_EXCLUDED?(t.amount=(i=e.prices.rowTotalIncludingTax)==null?void 0:i.value,t.currency=(l=e.prices.rowTotalIncludingTax)==null?void 0:l.currency,t.variant=e.discounted?"strikethrough":"default",t["data-testid"]="including-tax-item-total",a&&(t.amount=(m=e.prices.originalRowTotal)==null?void 0:m.value,t.currency=(h=e.prices.originalRowTotal)==null?void 0:h.currency,a.amount=(S=e.prices.rowTotalIncludingTax)==null?void 0:S.value,a.currency=(w=e.prices.rowTotalIncludingTax)==null?void 0:w.currency,a.sale=!0,a["aria-label"]=s.discountedPrice,a["data-testid"]="discount-total")):(t.amount=(ee=e.prices.originalRowTotal)==null?void 0:ee.value,t.currency=(te=e.prices.originalRowTotal)==null?void 0:te.currency,t.variant=e.discounted?"strikethrough":"default",t["data-testid"]="regular-item-total",a&&(a.amount=(ne=e.discountedTotal)==null?void 0:ne.value,a.currency=(ae=e.discountedTotal)==null?void 0:ae.currency,a.sale=!0,a["aria-label"]=s.regularPrice,a["data-testid"]="discount-total")),{totalProps:t,discountProps:a}},V=e=>n(d,{name:"ProductAttributes",slot:r==null?void 0:r.ProductAttributes,context:{item:e}}),G=e=>n("span",{"data-testid":"quote-summary-list-item-sku",children:e.product.sku}),W=e=>n(d,{name:"Footer",slot:r==null?void 0:r.Footer,context:{item:e}}),he=e=>o!=null&&o.totalQuantity?o.items.filter(e).map((t,a)=>{const{totalProps:i,discountProps:l}=z(t),m=n(Qe,{loading:Q,"data-testid":`quote-summary-list-item-entry-${t.uid}`,image:U(t,a),title:n(d,{name:"ItemTitle",slot:r==null?void 0:r.ItemTitle,context:{item:t},children:X(t)}),sku:u.includes("sku")?void 0:n(d,{name:"ItemSku",slot:r==null?void 0:r.ItemSku,context:{item:t},children:G(t)}),price:u.includes("price")?void 0:n(d,{name:"ItemPrice",slot:r==null?void 0:r.ItemPrice,context:{item:t},slotTag:"span",children:n(I,{...j(t)})}),quantity:u.includes("quantity")?void 0:t.quantity,total:v(E,{children:[u.includes("total")?void 0:n(d,{name:"ItemTotal",slot:r==null?void 0:r.ItemTotal,context:{item:t},children:n(I,{...i})}),u.includes("totalDiscount")?void 0:l&&n(d,{name:"ItemTotal",slot:r==null?void 0:r.ItemTotal,context:{item:t},children:n(I,{...l})})]}),attributes:V(t),configurations:$(t),totalExcludingTax:u.includes("totalExcludingTax")?void 0:B(t),taxIncluded:(c==null?void 0:c.price)===p.TAX_INCLUDED,taxExcluded:!u.includes("totalExcludingTax")&&(c==null?void 0:c.price)===p.TAX_INCLUDED_AND_EXCLUDED,discount:k&&t.discounted&&t.discountPercentage!==void 0?n("div",{"data-testid":"item-discount-percentage",children:s.discountPercentage.replace("{discount}",t.discountPercentage.toString())}):void 0,savings:M&&t.discounted&&t.savingsAmount!==void 0?v("div",{children:[n("span",{children:n(I,{...F(t)})})," ",s.savingsAmount]}):void 0,footer:W(t)},t.uid);return n(d,{name:"CartItem",slot:r==null?void 0:r.QuoteItem,context:{item:t,index:a,loading:Q,attributesToHide:u,quoteDisplaySettings:c,showDiscount:k,showSavings:M,dictionary:s,getImage:U,getTitle:X,getSku:G,getPriceProps:j,getTotalPriceProps:z,getProductAttributes:V,getConfigurations:$,getTotalExcludingTax:B,getFooter:W,getSavingsAmount:F},children:m},t.uid)}):null,Y=n(d,{name:"Heading",slot:r==null?void 0:r.Heading,context:{count:(o==null?void 0:o.totalQuantity)??0,quoteId:o==null?void 0:o.uid},children:n("div",{"data-testid":"default-quote-summary-list-heading",children:s.heading.replace("({count})",o!=null&&o.totalQuantity?`(${o==null?void 0:o.totalQuantity.toString()})`:"")})}),D=Y.props.children.props.children,C=he(e=>!e.outOfStock&&!e.insufficientQuantity),x=(o==null?void 0:o.items.length)||0,pe=A?Math.min(x,R):x,ye=x>pe,J=o!=null&&o.totalQuantity&&C?n(d,{name:"Footer",slot:r==null?void 0:r.QuoteSummaryFooter,context:{displayMaxItems:A},"data-testid":"quote-summary-list-footer-slot",className:"quote-management-quote-summary-list-footer",children:ye?n(be,{className:"quote-management-quote-summary-list-footer__action",onClick:se,"data-testid":"view-more-items-button",variant:"tertiary",children:s.viewMore}):null}):null,K=o!=null&&o.totalQuantity?n(Ie,{"data-testid":"quote-summary-list",children:C==null?void 0:C.slice(0,A?Math.min(x,R):x)}):null;return P?n(Te,{"data-testid":"quote-summary-list-accordion",className:y(["quote-management-quote-summary-list-accordion",`quote-management-quote-summary-list__background--${_}`]),iconOpen:Pe,iconClose:Ee,children:n(ke,{title:D,ariaLabelTitle:D,"data-testid":"quote-summary-list-accordion__section",open:!0,renderContentWhenClosed:!0,children:n(oe,{...O,"aria-expanded":!0,"aria-label":"TEST",className:"quote-management-quote-summary-list-accordion__list",footer:N?void 0:J,products:K,outOfStockMessage:void 0,loading:Q,variant:_})})}):n(oe,{...O,heading:f?void 0:Y,footer:N?void 0:J,products:K,outOfStockMessage:void 0,loading:Q,variant:_})};export{We as QuoteSummaryList,We as default};
4
+ //# sourceMappingURL=QuoteSummaryList.js.map