@dropins/storefront-quote-management 1.0.0-beta4 → 1.0.0-beta5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/getQuoteTemplates/graphql/getQuoteTemplates.d.ts +1 -1
- package/api/getStoreConfig/graphql/StoreConfigQuery.d.ts +1 -1
- package/api/graphql/NegotiableQuoteTemplateFragment.d.ts +1 -1
- package/api.js +5 -3
- package/api.js.map +1 -1
- package/chunks/AttachedFilesList.js +1 -1
- package/chunks/AttachedFilesList.js.map +1 -1
- package/chunks/CheckWithCircle.js +4 -0
- package/chunks/CheckWithCircle.js.map +1 -0
- package/chunks/ItemsQuoted.js +1 -1
- package/chunks/ItemsQuoted.js.map +1 -1
- package/chunks/ItemsQuotedTemplate.js +1 -1
- package/chunks/ItemsQuotedTemplate.js.map +1 -1
- package/chunks/LineItemNoteModal.js +1 -1
- package/chunks/LineItemNoteModal.js.map +1 -1
- package/chunks/NegotiableQuoteTemplateFragment.js +4 -4
- package/chunks/NegotiableQuoteTemplateFragment.js.map +1 -1
- package/chunks/ShippingAddressDisplay.js +1 -1
- package/chunks/ShippingAddressDisplay.js.map +1 -1
- package/chunks/WarningFilled.js +1 -1
- package/chunks/WarningFilled.js.map +1 -1
- package/chunks/addQuoteTemplateLineItemNote.js +1 -1
- package/chunks/addQuoteTemplateLineItemNote.js.map +1 -1
- package/chunks/getQuoteTemplates.js +13 -11
- package/chunks/getQuoteTemplates.js.map +1 -1
- package/chunks/state.js +1 -1
- package/chunks/state.js.map +1 -1
- package/chunks/transform-quote-template.js +1 -1
- package/chunks/transform-quote-template.js.map +1 -1
- package/components/ProductListTable/ProductListTable.d.ts +5 -49
- package/containers/ItemsQuoted.js +1 -1
- package/containers/ItemsQuotedTemplate/ItemsQuotedTemplate.d.ts +3 -3
- package/containers/ItemsQuotedTemplate.js +1 -1
- package/containers/ManageNegotiableQuote.js +1 -1
- package/containers/ManageNegotiableQuote.js.map +1 -1
- package/containers/ManageNegotiableQuoteTemplate.js +2 -2
- package/containers/ManageNegotiableQuoteTemplate.js.map +1 -1
- package/containers/RequestNegotiableQuoteForm.js +1 -1
- package/containers/RequestNegotiableQuoteForm.js.map +1 -1
- package/containers/ShippingAddressDisplay.js +1 -1
- package/data/models/store-config-model.d.ts +2 -0
- package/data/transforms/__fixtures__/negotiableQuoteTemplateData.d.ts +1 -0
- package/data/transforms/__fixtures__/storeConfigData.d.ts +4 -0
- package/hooks/useItemsQuotedTemplate.d.ts +1 -2
- package/hooks/useUpdateTemplateQuantities.d.ts +2 -2
- package/i18n/en_US.json.d.ts +8 -3
- package/package.json +1 -1
- package/render.js +2 -2
- package/render.js.map +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{a as _,b as E,c as f}from"./transform-quote.js";var i=(n=>(n.ACTIVE="Active",n.IN_REVIEW="In Review",n.INACTIVE="Inactive",n.SUBMITTED="Submitted",n.PENDING="Pending",n.CLOSED="Closed",n.OPEN="Open",n.UPDATED="Updated",n.EDITED="Edited",n.NEW="New",n.DRAFT="Draft",n.DECLINED="Declined",n.CANCELED="Canceled",n.EXPIRED="Expired",n))(i||{});function
|
|
3
|
+
import{a as _,b as E,c as f}from"./transform-quote.js";var i=(n=>(n.ACTIVE="Active",n.IN_REVIEW="In Review",n.INACTIVE="Inactive",n.SUBMITTED="Submitted",n.PENDING="Pending",n.CLOSED="Closed",n.OPEN="Open",n.UPDATED="Updated",n.EDITED="Edited",n.NEW="New",n.DRAFT="Draft",n.DECLINED="Declined",n.CANCELED="Canceled",n.EXPIRED="Expired",n))(i||{});function l(n){var u,e,s,c;return n?{id:n.template_id,uid:n.uid,name:n.name,createdAt:n.created_at,updatedAt:n.updated_at,expirationDate:n.expiration_date,status:n.status,salesRepName:n.sales_rep_name,buyer:{firstname:n.buyer.firstname,lastname:n.buyer.lastname},comments:(u=n.comments)==null?void 0:u.map(r=>{var o;return{uid:r.uid,createdAt:r.created_at,author:{firstname:r.author.firstname,lastname:r.author.lastname},text:r.text,attachments:(o=r.attachments)==null?void 0:o.map(d=>({name:d.name,url:d.url}))}}),prices:n.prices&&{subtotalExcludingTax:n.prices.subtotal_excluding_tax&&{value:n.prices.subtotal_excluding_tax.value,currency:n.prices.subtotal_excluding_tax.currency},subtotalIncludingTax:n.prices.subtotal_including_tax&&{value:n.prices.subtotal_including_tax.value,currency:n.prices.subtotal_including_tax.currency},subtotalWithDiscountExcludingTax:n.prices.subtotal_with_discount_excluding_tax&&{value:n.prices.subtotal_with_discount_excluding_tax.value,currency:n.prices.subtotal_with_discount_excluding_tax.currency},appliedTaxes:(e=n.prices.applied_taxes)==null?void 0:e.map(r=>({amount:{value:r.amount.value,currency:r.amount.currency},label:r.label})),grandTotal:n.prices.grand_total&&{value:n.prices.grand_total.value,currency:n.prices.grand_total.currency}},history:E(n.history),items:_(n.items),shippingAddresses:(s=n.shipping_addresses)==null?void 0:s.map(r=>({uid:r.uid,firstname:r.firstname,lastname:r.lastname,company:r.company,street:r.street,city:r.city,postcode:r.postcode,country:{code:r.country.code,label:r.country.label},telephone:r.telephone,region:r.region?{code:r.region.code,label:r.region.label,regionId:r.region.region_id}:void 0})),referenceDocuments:(c=n.reference_document_links)==null?void 0:c.map(r=>({uid:r.link_id,name:r.document_name,identifier:r.document_identifier,url:r.reference_document_url})),canAccept:[i.SUBMITTED,i.PENDING,i.OPEN].includes(n.status),canDelete:n.status===i.DRAFT,canReopen:[i.DECLINED,i.CANCELED,i.EXPIRED].includes(n.status),canCancel:[i.SUBMITTED,i.PENDING,i.OPEN,i.ACTIVE,i.EDITED].includes(n.status),canSendForReview:[i.OPEN,i.DRAFT,i.NEW,i.EDITED].includes(n.status),canGenerateQuoteFromTemplate:[i.ACTIVE].includes(n.status),canEditTemplateItems:[i.SUBMITTED,i.DRAFT,i.OPEN,i.EDITED].includes(n.status)}:null}function I(n){var s;if(!n)return null;const u={items:((s=n.items)==null?void 0:s.map(c=>{var r,o,d;return{id:c.template_id,uid:c.uid,name:c.name,createdAt:c.created_at,updatedAt:c.updated_at,status:c.status,state:c.state,prices:{grandTotal:(r=c.prices)!=null&&r.grand_total?{value:c.prices.grand_total.value,currency:c.prices.grand_total.currency}:{value:0,currency:"USD"},minNegotiatedGrandTotal:{value:c.min_negotiated_grand_total,currency:((d=(o=c.prices)==null?void 0:o.grand_total)==null?void 0:d.currency)||"USD"}},lastSharedAt:c.last_shared_at,lastOrderedAt:c.last_ordered_at,expirationDate:c.expiration_date,ordersPlaced:c.orders_placed,canGenerateQuoteFromTemplate:[i.ACTIVE].includes(c.status)}}))||[],pageInfo:{currentPage:n.page_info.current_page,pageSize:n.page_info.page_size,totalPages:n.page_info.total_pages},totalCount:n.total_count,sortFields:n.sort_fields?{default:n.sort_fields.default,options:n.sort_fields.options}:void 0},e=f(u);return{...u,paginationInfo:e||void 0}}export{i as N,l as a,I as t};
|
|
4
4
|
//# sourceMappingURL=transform-quote-template.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform-quote-template.js","sources":["/@dropins/storefront-quote-management/src/data/models/negotiable-quote-template-model.ts","/@dropins/storefront-quote-management/src/data/transforms/transform-quote-template.ts"],"sourcesContent":["/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport {\n Currency,\n PaginationInfo,\n ShippingAddress,\n NegotiableQuoteHistoryEntry,\n CartItemModel,\n} from './negotiable-quote-model';\n\nexport interface NegotiableQuoteTemplateModel {\n id: string;\n uid: string;\n name: string;\n createdAt: string;\n updatedAt: string;\n expirationDate?: string;\n status: NegotiableQuoteTemplateStatus;\n salesRepName: string;\n buyer: {\n firstname: string;\n lastname: string;\n };\n comments?: QuoteTemplateComment[];\n history?: NegotiableQuoteHistoryEntry[];\n prices: {\n subtotalExcludingTax?: Currency;\n subtotalIncludingTax?: Currency;\n subtotalWithDiscountExcludingTax?: Currency;\n grandTotal?: Currency;\n appliedTaxes?: {\n amount: Currency;\n label: string;\n }[];\n };\n items: CartItemModel[];\n shippingAddresses?: ShippingAddress[];\n referenceDocuments?: {\n uid: string;\n name: string;\n identifier?: string;\n url: string;\n }[];\n // Template-specific fields\n quantityThresholds?: {\n min?: number;\n max?: number;\n };\n canAccept: boolean;\n canDelete: boolean;\n canReopen: boolean;\n canCancel: boolean;\n canSendForReview: boolean;\n canGenerateQuoteFromTemplate: boolean;\n canEditTemplateItems: boolean;\n}\n\nexport enum NegotiableQuoteTemplateStatus {\n ACTIVE = 'Active',\n IN_REVIEW = 'In Review',\n INACTIVE = 'Inactive',\n SUBMITTED = 'Submitted',\n PENDING = 'Pending',\n CLOSED = 'Closed',\n OPEN = 'Open',\n UPDATED = 'Updated',\n EDITED = 'Edited',\n NEW = 'New',\n DRAFT = 'Draft',\n DECLINED = 'Declined',\n CANCELED = 'Canceled',\n EXPIRED = 'Expired',\n}\n\n\nexport interface QuoteTemplateComment {\n uid: string;\n createdAt: string;\n author: {\n firstname: string;\n lastname: string;\n };\n text: string;\n attachments?: {\n name: string;\n url: string;\n }[];\n}\n\n// List model for getQuoteTemplates\nexport interface NegotiableQuoteTemplatesListModel {\n items: NegotiableQuoteTemplateListEntry[];\n pageInfo: {\n currentPage: number;\n pageSize: number;\n totalPages: number;\n };\n totalCount: number;\n paginationInfo?: PaginationInfo;\n sortFields?: {\n default: string;\n options: Array<{\n label: string;\n value: string;\n }>;\n };\n}\n\nexport interface NegotiableQuoteTemplateListEntry {\n id: string;\n uid: string;\n name: string;\n createdAt: string;\n updatedAt: string;\n status: NegotiableQuoteTemplateStatus;\n state: 'active' | 'inactive' | 'in_review';\n lastSharedAt: string;\n lastOrderedAt: string;\n expirationDate: string;\n ordersPlaced: number;\n prices: {\n grandTotal: Currency;\n minNegotiatedGrandTotal: Currency;\n };\n canGenerateQuoteFromTemplate?: boolean;\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 NegotiableQuoteTemplateModel,\n NegotiableQuoteTemplatesListModel,\n NegotiableQuoteTemplateStatus,\n} from '../models/negotiable-quote-template-model';\nimport { transformPaginationInfo } from './transform-quote';\nimport { transformHistory } from './transform-history';\nimport { transformQuoteItems } from './transform-quote-items';\n\nexport function transformQuoteTemplate(\n templateData: any\n): NegotiableQuoteTemplateModel | null {\n if (!templateData) {\n return null;\n }\n\n return {\n id: templateData.template_id,\n uid: templateData.uid,\n name: templateData.name,\n createdAt: templateData.created_at,\n updatedAt: templateData.updated_at,\n expirationDate: templateData.expiration_date,\n status: templateData.status,\n salesRepName: templateData.sales_rep_name,\n buyer: {\n firstname: templateData.buyer.firstname,\n lastname: templateData.buyer.lastname,\n },\n comments: templateData.comments?.map((comment: any) => ({\n uid: comment.uid,\n createdAt: comment.created_at,\n author: {\n firstname: comment.author.firstname,\n lastname: comment.author.lastname,\n },\n text: comment.text,\n attachments: comment.attachments?.map((a: any) => ({\n name: a.name,\n url: a.url,\n })),\n })),\n prices: templateData.prices && {\n subtotalExcludingTax: templateData.prices.subtotal_excluding_tax && {\n value: templateData.prices.subtotal_excluding_tax.value,\n currency: templateData.prices.subtotal_excluding_tax.currency,\n },\n subtotalIncludingTax: templateData.prices.subtotal_including_tax && {\n value: templateData.prices.subtotal_including_tax.value,\n currency: templateData.prices.subtotal_including_tax.currency,\n },\n subtotalWithDiscountExcludingTax: templateData.prices\n .subtotal_with_discount_excluding_tax && {\n value: templateData.prices.subtotal_with_discount_excluding_tax.value,\n currency:\n templateData.prices.subtotal_with_discount_excluding_tax.currency,\n },\n appliedTaxes: templateData.prices.applied_taxes?.map((tax: any) => ({\n amount: { value: tax.amount.value, currency: tax.amount.currency },\n label: tax.label,\n })),\n grandTotal: templateData.prices.grand_total && {\n value: templateData.prices.grand_total.value,\n currency: templateData.prices.grand_total.currency,\n },\n },\n history: transformHistory(templateData.history),\n items: transformQuoteItems(templateData.items),\n shippingAddresses: templateData.shipping_addresses?.map((address: any) => ({\n uid: address.uid,\n firstname: address.firstname,\n lastname: address.lastname,\n company: address.company,\n street: address.street,\n city: address.city,\n postcode: address.postcode,\n country: {\n code: address.country.code,\n label: address.country.label,\n },\n telephone: address.telephone,\n region: address.region\n ? {\n code: address.region.code,\n label: address.region.label,\n regionId: address.region.region_id,\n }\n : undefined,\n })),\n referenceDocuments: templateData.reference_document_links?.map((doc: any) => ({\n uid: doc.link_id,\n name: doc.document_name,\n identifier: doc.document_identifier,\n url: doc.reference_document_url,\n })),\n // Calculate permissions based on status\n canAccept: [\n NegotiableQuoteTemplateStatus.SUBMITTED,\n NegotiableQuoteTemplateStatus.PENDING,\n NegotiableQuoteTemplateStatus.OPEN,\n ].includes(templateData.status),\n canDelete: templateData.status === NegotiableQuoteTemplateStatus.DRAFT,\n canReopen: [\n NegotiableQuoteTemplateStatus.DECLINED,\n NegotiableQuoteTemplateStatus.CANCELED,\n NegotiableQuoteTemplateStatus.EXPIRED,\n ].includes(templateData.status),\n canCancel: [\n NegotiableQuoteTemplateStatus.SUBMITTED,\n NegotiableQuoteTemplateStatus.PENDING,\n NegotiableQuoteTemplateStatus.OPEN,\n NegotiableQuoteTemplateStatus.ACTIVE,\n NegotiableQuoteTemplateStatus.EDITED,\n ].includes(templateData.status),\n canSendForReview: [\n NegotiableQuoteTemplateStatus.OPEN,\n NegotiableQuoteTemplateStatus.DRAFT,\n NegotiableQuoteTemplateStatus.NEW,\n NegotiableQuoteTemplateStatus.EDITED,\n ].includes(templateData.status),\n canGenerateQuoteFromTemplate: [\n NegotiableQuoteTemplateStatus.ACTIVE,\n ].includes(templateData.status),\n canEditTemplateItems: [\n NegotiableQuoteTemplateStatus.SUBMITTED,\n NegotiableQuoteTemplateStatus.DRAFT,\n NegotiableQuoteTemplateStatus.OPEN,\n NegotiableQuoteTemplateStatus.EDITED,\n ].includes(templateData.status),\n };\n}\n\nexport function transformQuoteTemplatesList(\n templatesData: any\n): NegotiableQuoteTemplatesListModel | null {\n if (!templatesData) {\n return null;\n }\n\n const transformedModel = {\n items:\n templatesData.items?.map((template: any) => ({\n id: template.template_id,\n uid: 'TBD',\n name: template.name,\n createdAt: '0000-00-00 00:00:00', // TODO: missing from GraphQL API\n updatedAt: '0000-00-00 00:00:00', // TODO: missing from GraphQL API\n status: template.status,\n state: template.state,\n prices: {\n grandTotal: {\n value: 0, // TODO: missing from GraphQL API\n currency: 'USD', // TODO: missing from GraphQL API\n },\n minNegotiatedGrandTotal: {\n value: template.min_negotiated_grand_total,\n currency: 'USD', // TODO: use the same from grand total when available\n },\n },\n lastSharedAt: template.last_shared_at,\n lastOrderedAt: '0000-00-00 00:00:00', // TODO: missing from GraphQL API\n expirationDate: '0000-00-00 00:00:00', // TODO: broken in GraphQL API\n ordersPlaced: template.orders_placed,\n canGenerateQuoteFromTemplate: [\n NegotiableQuoteTemplateStatus.ACTIVE,\n ].includes(template.status),\n })) || [],\n pageInfo: {\n currentPage: templatesData.page_info.current_page,\n pageSize: templatesData.page_info.page_size,\n totalPages: templatesData.page_info.total_pages,\n },\n totalCount: templatesData.total_count,\n sortFields: templatesData.sort_fields\n ? {\n default: templatesData.sort_fields.default,\n options: templatesData.sort_fields.options,\n }\n : undefined,\n };\n\n // Calculate pagination info\n const paginationInfo = transformPaginationInfo(transformedModel);\n\n return {\n ...transformedModel,\n paginationInfo: paginationInfo || undefined,\n };\n}\n"],"names":["NegotiableQuoteTemplateStatus","transformQuoteTemplate","templateData","_a","comment","a","_b","tax","transformHistory","transformQuoteItems","_c","address","_d","doc","transformQuoteTemplatesList","templatesData","transformedModel","template","paginationInfo","transformPaginationInfo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transform-quote-template.js","sources":["/@dropins/storefront-quote-management/src/data/models/negotiable-quote-template-model.ts","/@dropins/storefront-quote-management/src/data/transforms/transform-quote-template.ts"],"sourcesContent":["/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport {\n Currency,\n PaginationInfo,\n ShippingAddress,\n NegotiableQuoteHistoryEntry,\n CartItemModel,\n} from './negotiable-quote-model';\n\nexport interface NegotiableQuoteTemplateModel {\n id: string;\n uid: string;\n name: string;\n createdAt: string;\n updatedAt: string;\n expirationDate?: string;\n status: NegotiableQuoteTemplateStatus;\n salesRepName: string;\n buyer: {\n firstname: string;\n lastname: string;\n };\n comments?: QuoteTemplateComment[];\n history?: NegotiableQuoteHistoryEntry[];\n prices: {\n subtotalExcludingTax?: Currency;\n subtotalIncludingTax?: Currency;\n subtotalWithDiscountExcludingTax?: Currency;\n grandTotal?: Currency;\n appliedTaxes?: {\n amount: Currency;\n label: string;\n }[];\n };\n items: CartItemModel[];\n shippingAddresses?: ShippingAddress[];\n referenceDocuments?: {\n uid: string;\n name: string;\n identifier?: string;\n url: string;\n }[];\n // Template-specific fields\n quantityThresholds?: {\n min?: number;\n max?: number;\n };\n canAccept: boolean;\n canDelete: boolean;\n canReopen: boolean;\n canCancel: boolean;\n canSendForReview: boolean;\n canGenerateQuoteFromTemplate: boolean;\n canEditTemplateItems: boolean;\n}\n\nexport enum NegotiableQuoteTemplateStatus {\n ACTIVE = 'Active',\n IN_REVIEW = 'In Review',\n INACTIVE = 'Inactive',\n SUBMITTED = 'Submitted',\n PENDING = 'Pending',\n CLOSED = 'Closed',\n OPEN = 'Open',\n UPDATED = 'Updated',\n EDITED = 'Edited',\n NEW = 'New',\n DRAFT = 'Draft',\n DECLINED = 'Declined',\n CANCELED = 'Canceled',\n EXPIRED = 'Expired',\n}\n\n\nexport interface QuoteTemplateComment {\n uid: string;\n createdAt: string;\n author: {\n firstname: string;\n lastname: string;\n };\n text: string;\n attachments?: {\n name: string;\n url: string;\n }[];\n}\n\n// List model for getQuoteTemplates\nexport interface NegotiableQuoteTemplatesListModel {\n items: NegotiableQuoteTemplateListEntry[];\n pageInfo: {\n currentPage: number;\n pageSize: number;\n totalPages: number;\n };\n totalCount: number;\n paginationInfo?: PaginationInfo;\n sortFields?: {\n default: string;\n options: Array<{\n label: string;\n value: string;\n }>;\n };\n}\n\nexport interface NegotiableQuoteTemplateListEntry {\n id: string;\n uid: string;\n name: string;\n createdAt: string;\n updatedAt: string;\n status: NegotiableQuoteTemplateStatus;\n state: 'active' | 'inactive' | 'in_review';\n lastSharedAt: string;\n lastOrderedAt: string;\n expirationDate: string;\n ordersPlaced: number;\n prices: {\n grandTotal: Currency;\n minNegotiatedGrandTotal: Currency;\n };\n canGenerateQuoteFromTemplate?: boolean;\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 NegotiableQuoteTemplateModel,\n NegotiableQuoteTemplatesListModel,\n NegotiableQuoteTemplateStatus,\n} from '../models/negotiable-quote-template-model';\nimport { transformPaginationInfo } from './transform-quote';\nimport { transformHistory } from './transform-history';\nimport { transformQuoteItems } from './transform-quote-items';\n\nexport function transformQuoteTemplate(\n templateData: any\n): NegotiableQuoteTemplateModel | null {\n if (!templateData) {\n return null;\n }\n\n return {\n id: templateData.template_id,\n uid: templateData.uid,\n name: templateData.name,\n createdAt: templateData.created_at,\n updatedAt: templateData.updated_at,\n expirationDate: templateData.expiration_date,\n status: templateData.status,\n salesRepName: templateData.sales_rep_name,\n buyer: {\n firstname: templateData.buyer.firstname,\n lastname: templateData.buyer.lastname,\n },\n comments: templateData.comments?.map((comment: any) => ({\n uid: comment.uid,\n createdAt: comment.created_at,\n author: {\n firstname: comment.author.firstname,\n lastname: comment.author.lastname,\n },\n text: comment.text,\n attachments: comment.attachments?.map((a: any) => ({\n name: a.name,\n url: a.url,\n })),\n })),\n prices: templateData.prices && {\n subtotalExcludingTax: templateData.prices.subtotal_excluding_tax && {\n value: templateData.prices.subtotal_excluding_tax.value,\n currency: templateData.prices.subtotal_excluding_tax.currency,\n },\n subtotalIncludingTax: templateData.prices.subtotal_including_tax && {\n value: templateData.prices.subtotal_including_tax.value,\n currency: templateData.prices.subtotal_including_tax.currency,\n },\n subtotalWithDiscountExcludingTax: templateData.prices\n .subtotal_with_discount_excluding_tax && {\n value: templateData.prices.subtotal_with_discount_excluding_tax.value,\n currency:\n templateData.prices.subtotal_with_discount_excluding_tax.currency,\n },\n appliedTaxes: templateData.prices.applied_taxes?.map((tax: any) => ({\n amount: { value: tax.amount.value, currency: tax.amount.currency },\n label: tax.label,\n })),\n grandTotal: templateData.prices.grand_total && {\n value: templateData.prices.grand_total.value,\n currency: templateData.prices.grand_total.currency,\n },\n },\n history: transformHistory(templateData.history),\n items: transformQuoteItems(templateData.items),\n shippingAddresses: templateData.shipping_addresses?.map((address: any) => ({\n uid: address.uid,\n firstname: address.firstname,\n lastname: address.lastname,\n company: address.company,\n street: address.street,\n city: address.city,\n postcode: address.postcode,\n country: {\n code: address.country.code,\n label: address.country.label,\n },\n telephone: address.telephone,\n region: address.region\n ? {\n code: address.region.code,\n label: address.region.label,\n regionId: address.region.region_id,\n }\n : undefined,\n })),\n referenceDocuments: templateData.reference_document_links?.map((doc: any) => ({\n uid: doc.link_id,\n name: doc.document_name,\n identifier: doc.document_identifier,\n url: doc.reference_document_url,\n })),\n // Calculate permissions based on status\n canAccept: [\n NegotiableQuoteTemplateStatus.SUBMITTED,\n NegotiableQuoteTemplateStatus.PENDING,\n NegotiableQuoteTemplateStatus.OPEN,\n ].includes(templateData.status),\n canDelete: templateData.status === NegotiableQuoteTemplateStatus.DRAFT,\n canReopen: [\n NegotiableQuoteTemplateStatus.DECLINED,\n NegotiableQuoteTemplateStatus.CANCELED,\n NegotiableQuoteTemplateStatus.EXPIRED,\n ].includes(templateData.status),\n canCancel: [\n NegotiableQuoteTemplateStatus.SUBMITTED,\n NegotiableQuoteTemplateStatus.PENDING,\n NegotiableQuoteTemplateStatus.OPEN,\n NegotiableQuoteTemplateStatus.ACTIVE,\n NegotiableQuoteTemplateStatus.EDITED,\n ].includes(templateData.status),\n canSendForReview: [\n NegotiableQuoteTemplateStatus.OPEN,\n NegotiableQuoteTemplateStatus.DRAFT,\n NegotiableQuoteTemplateStatus.NEW,\n NegotiableQuoteTemplateStatus.EDITED,\n ].includes(templateData.status),\n canGenerateQuoteFromTemplate: [\n NegotiableQuoteTemplateStatus.ACTIVE,\n ].includes(templateData.status),\n canEditTemplateItems: [\n NegotiableQuoteTemplateStatus.SUBMITTED,\n NegotiableQuoteTemplateStatus.DRAFT,\n NegotiableQuoteTemplateStatus.OPEN,\n NegotiableQuoteTemplateStatus.EDITED,\n ].includes(templateData.status),\n };\n}\n\nexport function transformQuoteTemplatesList(\n templatesData: any\n): NegotiableQuoteTemplatesListModel | null {\n if (!templatesData) {\n return null;\n }\n\n const transformedModel = {\n items:\n templatesData.items?.map((template: any) => ({\n id: template.template_id,\n uid: template.uid,\n name: template.name,\n createdAt: template.created_at,\n updatedAt: template.updated_at,\n status: template.status,\n state: template.state,\n prices: {\n grandTotal: template.prices?.grand_total\n ? {\n value: template.prices.grand_total.value,\n currency: template.prices.grand_total.currency,\n }\n : {\n value: 0,\n currency: 'USD',\n },\n minNegotiatedGrandTotal: {\n value: template.min_negotiated_grand_total,\n currency: template.prices?.grand_total?.currency || 'USD',\n },\n },\n lastSharedAt: template.last_shared_at,\n lastOrderedAt: template.last_ordered_at,\n expirationDate: template.expiration_date,\n ordersPlaced: template.orders_placed,\n canGenerateQuoteFromTemplate: [\n NegotiableQuoteTemplateStatus.ACTIVE,\n ].includes(template.status),\n })) || [],\n pageInfo: {\n currentPage: templatesData.page_info.current_page,\n pageSize: templatesData.page_info.page_size,\n totalPages: templatesData.page_info.total_pages,\n },\n totalCount: templatesData.total_count,\n sortFields: templatesData.sort_fields\n ? {\n default: templatesData.sort_fields.default,\n options: templatesData.sort_fields.options,\n }\n : undefined,\n };\n\n // Calculate pagination info\n const paginationInfo = transformPaginationInfo(transformedModel);\n\n return {\n ...transformedModel,\n paginationInfo: paginationInfo || undefined,\n };\n}\n"],"names":["NegotiableQuoteTemplateStatus","transformQuoteTemplate","templateData","_a","comment","a","_b","tax","transformHistory","transformQuoteItems","_c","address","_d","doc","transformQuoteTemplatesList","templatesData","transformedModel","template","paginationInfo","transformPaginationInfo"],"mappings":"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"}
|
|
@@ -1,59 +1,15 @@
|
|
|
1
1
|
import { FunctionComponent } from 'preact';
|
|
2
2
|
import { HTMLAttributes } from 'preact/compat';
|
|
3
|
+
import { CartItemModel } from '../../data/models/negotiable-quote-model';
|
|
3
4
|
|
|
4
|
-
export interface ProductListTableItem {
|
|
5
|
-
uid: string;
|
|
6
|
-
product: {
|
|
7
|
-
name: string;
|
|
8
|
-
sku: string;
|
|
9
|
-
};
|
|
10
|
-
prices: {
|
|
11
|
-
originalItemPrice: {
|
|
12
|
-
value: number;
|
|
13
|
-
currency: string;
|
|
14
|
-
};
|
|
15
|
-
rowTotal: {
|
|
16
|
-
value: number;
|
|
17
|
-
currency: string;
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
quantity: number;
|
|
21
|
-
catalogDiscount?: {
|
|
22
|
-
amountOff: number;
|
|
23
|
-
percentOff: number;
|
|
24
|
-
};
|
|
25
|
-
configurableOptions?: Array<{
|
|
26
|
-
optionLabel: string;
|
|
27
|
-
valueLabel: string;
|
|
28
|
-
}>;
|
|
29
|
-
bundleOptions?: Array<{
|
|
30
|
-
label: string;
|
|
31
|
-
values: Array<{
|
|
32
|
-
label: string;
|
|
33
|
-
quantity: number;
|
|
34
|
-
originalPrice: {
|
|
35
|
-
value: number;
|
|
36
|
-
currency: string;
|
|
37
|
-
};
|
|
38
|
-
}>;
|
|
39
|
-
}>;
|
|
40
|
-
noteFromBuyer?: Array<{
|
|
41
|
-
createdAt: string;
|
|
42
|
-
creatorId: number;
|
|
43
|
-
creatorType: number;
|
|
44
|
-
negotiableQuoteItemUid: string;
|
|
45
|
-
note: string;
|
|
46
|
-
noteUid: string;
|
|
47
|
-
}>;
|
|
48
|
-
}
|
|
49
5
|
export interface ProductListTableProps extends HTMLAttributes<HTMLDivElement | HTMLFormElement> {
|
|
50
|
-
items:
|
|
6
|
+
items: CartItemModel[];
|
|
51
7
|
canEdit: boolean;
|
|
52
8
|
readOnly?: boolean;
|
|
53
9
|
showActions?: boolean;
|
|
54
|
-
onItemCheckboxChange?: (item:
|
|
55
|
-
onItemDropdownChange?: (item:
|
|
56
|
-
onQuantityChange?: (item:
|
|
10
|
+
onItemCheckboxChange?: (item: CartItemModel, isSelected: boolean) => void;
|
|
11
|
+
onItemDropdownChange?: (item: CartItemModel, action: string) => void;
|
|
12
|
+
onQuantityChange?: (item: CartItemModel, newQuantity: number) => void;
|
|
57
13
|
onUpdate?: (e: SubmitEvent) => void;
|
|
58
14
|
dropdownSelections?: Record<string, string | undefined>;
|
|
59
15
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{I as
|
|
3
|
+
import{I as q,I as v}from"../chunks/ItemsQuoted.js";import"@dropins/tools/preact-jsx-runtime.js";import"@dropins/tools/preact-compat.js";import"@dropins/tools/lib.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/components.js";/* empty css */import"../chunks/LineItemNoteModal.js";import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";import"../chunks/dateUtils.js";import"../chunks/WarningFilled.js";import"@dropins/tools/i18n.js";import"../chunks/ConfirmationModal.js";/* empty css *//* empty css */import"../chunks/state.js";import"../chunks/setLineItemNote.js";import"../chunks/transform-quote.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/NegotiableQuoteFragment.js";import"../chunks/CheckWithCircle.js";export{q as ItemsQuoted,v as default};
|
|
4
4
|
//# sourceMappingURL=ItemsQuoted.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { HTMLAttributes } from 'preact/compat';
|
|
2
2
|
import { Container, SlotProps } from '@dropins/tools/types/elsie/src/lib';
|
|
3
3
|
import { NegotiableQuoteTemplateModel } from '../../data/models/negotiable-quote-template-model';
|
|
4
|
-
import {
|
|
4
|
+
import { CartItemModel } from '../../data/models/negotiable-quote-model';
|
|
5
5
|
|
|
6
6
|
export interface ItemsQuotedTemplateProps extends HTMLAttributes<HTMLDivElement> {
|
|
7
7
|
templateData?: NegotiableQuoteTemplateModel;
|
|
@@ -10,8 +10,8 @@ export interface ItemsQuotedTemplateProps extends HTMLAttributes<HTMLDivElement>
|
|
|
10
10
|
items: NegotiableQuoteTemplateModel['items'];
|
|
11
11
|
canEdit: boolean;
|
|
12
12
|
dropdownSelections: Record<string, string | undefined>;
|
|
13
|
-
handleItemDropdownChange: (item:
|
|
14
|
-
handleQuantityChange: (item:
|
|
13
|
+
handleItemDropdownChange: (item: CartItemModel, action: string) => void;
|
|
14
|
+
handleQuantityChange: (item: CartItemModel, newQuantity: number) => void;
|
|
15
15
|
handleUpdate: (e: SubmitEvent) => void;
|
|
16
16
|
onItemDropdownChange?: (item: any, action: string) => void;
|
|
17
17
|
}>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{I as
|
|
3
|
+
import{I as q,I as v}from"../chunks/ItemsQuotedTemplate.js";import"@dropins/tools/preact-jsx-runtime.js";import"@dropins/tools/preact-compat.js";import"@dropins/tools/lib.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/components.js";/* empty css */import"../chunks/LineItemNoteModal.js";import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";import"../chunks/dateUtils.js";import"../chunks/WarningFilled.js";import"@dropins/tools/i18n.js";import"../chunks/ConfirmationModal.js";/* empty css *//* empty css */import"../chunks/state.js";import"../chunks/addQuoteTemplateLineItemNote.js";import"../chunks/transform-quote-template.js";import"../chunks/transform-quote.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/NegotiableQuoteTemplateFragment.js";import"../chunks/CheckWithCircle.js";export{q as ItemsQuotedTemplate,v as default};
|
|
4
4
|
//# sourceMappingURL=ItemsQuotedTemplate.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsx as n,jsxs as p,Fragment as la}from"@dropins/tools/preact-jsx-runtime.js";import{useState as l,useRef as _e,useEffect as v,useCallback as c,useMemo as f,createPortal as W}from"@dropins/tools/preact-compat.js";import{classes as u,VComponent as M,Slot as g}from"@dropins/tools/lib.js";import{f as ca}from"../chunks/dateUtils.js";/* empty css */import{Skeleton as ja,SkeletonRow as z,InLineAlert as h,Button as sa,TextArea as Ga,InputFile as Ka}from"@dropins/tools/components.js";import{events as C}from"@dropins/tools/event-bus.js";import{S as Xa,A as Ja,T as Ya,R as Za}from"../chunks/RenameQuoteModal.js";import{v as Aa,f as et,a as at,S as tt,A as nt}from"../chunks/AttachedFilesList.js";import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";import{C as X}from"../chunks/ConfirmationModal.js";/* empty css *//* empty css */import{S as ot}from"../chunks/ShippingAddressDisplay.js";import{Q as it}from"../chunks/QuoteHistoryLog3.js";import{g as rt,r as lt,c as ct,a as st,s as mt,d as dt,b as ut}from"../chunks/duplicateNegotiableQuote.js";import"../chunks/state.js";import{u as gt}from"../chunks/uploadFile.js";import{I as ft}from"../chunks/ItemsQuoted.js";import{Q as pt}from"../chunks/QuoteCommentsList3.js";import{a as w,S as J}from"../chunks/WarningFilled.js";import{useText as Mt}from"@dropins/tools/i18n.js";import"../chunks/QuoteHistoryLog.js";import"../chunks/transform-quote.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/NegotiableQuoteFragment.js";import"../chunks/transform-quote-template.js";import"../chunks/NegotiableQuoteTemplateFragment.js";import"../chunks/LineItemNoteModal.js";import"../chunks/setLineItemNote.js";import"../chunks/QuoteCommentsList.js";const bt=({className:x,loading:t,quoteName:m,quoteStatus:R,banner:y,details:_,actionBar:N,quoteContent:L,shippingInformationTitle:Y,shippingInformation:e,quoteCommentsTitle:S,quoteComments:E,attachFilesField:k,attachedFilesList:P,footer:Z,...A})=>t?n(ht,{}):p("div",{...A,className:u(["quote-management-manage-negotiable-quote",x]),children:[p("div",{className:u(["quote-management-manage-negotiable-quote__header"]),children:[m&&n(M,{node:m,className:u(["quote-management-manage-negotiable-quote__quote-name"])}),R&&n(M,{node:R,className:u(["quote-management-manage-negotiable-quote__quote-status"])})]}),y&&n(M,{node:y,className:u(["quote-management-manage-negotiable-quote__banner"])}),_&&n(M,{node:_,className:u(["quote-management-manage-negotiable-quote__details"])}),N&&n(M,{node:N,className:u(["quote-management-manage-negotiable-quote__action-bar"])}),L&&n(M,{node:L,className:u(["quote-management-manage-negotiable-quote__quote-content"])}),p("div",{"data-testid":"quote-shipping-information-container",className:u(["quote-management-manage-negotiable-quote__shipping-information-container"]),children:[Y&&n(M,{node:Y,className:u(["quote-management-manage-negotiable-quote__shipping-information-title"])}),e&&n(M,{node:e,className:u(["quote-management-manage-negotiable-quote__shipping-information"])})]}),p("div",{"data-testid":"quote-comments-container",className:u(["quote-management-manage-negotiable-quote__quote-comments-container"]),children:[S&&n(M,{node:S,className:u(["quote-management-manage-negotiable-quote__quote-comments-title"])}),E&&n(M,{node:E,className:u(["quote-management-manage-negotiable-quote__quote-comments"])}),k&&n(M,{node:k,className:u(["quote-management-manage-negotiable-quote__attach-files-field"])}),P&&n(M,{node:P,className:u(["quote-management-manage-negotiable-quote__attached-files-list"])})]}),n(M,{node:Z,className:u(["quote-management-manage-negotiable-quote__footer"])})]}),ht=()=>p(ja,{"data-testid":"manage-negotiable-quote-skeleton",children:[n(z,{variant:"heading",fullWidth:!0,size:"large"}),n(z,{variant:"row",fullWidth:!1,size:"small"}),n(z,{variant:"row",fullWidth:!1,size:"small"}),n(z,{variant:"row",fullWidth:!0}),n(z,{variant:"row",fullWidth:!0,size:"xlarge",lines:2}),n(z,{variant:"row",fullWidth:!1,size:"small"})]}),en=({onActionsDropdownChange:x,slots:t,onActionsButtonClick:m,onSendForReview:R,maxFiles:y,maxFileSize:_,acceptedFileTypes:N,onDuplicateQuote:L,...Y})=>{const[e,S]=l(void 0),[E,k]=l(!0),[P,Z]=l(!1),[A,$]=l(null),[ma,ee]=l(!1),[Ee,se]=l(!1),[De,D]=l(null),[da,H]=l(!1),[Fe,Ie]=l(!1),[F,we]=l(""),[Q,me]=l(!1),[xe,de]=l(!1),[Re,ue]=l(!1),[Le,O]=l(""),[ke,V]=l(""),[He,ge]=l(!1),[Oe,Ue]=l(!1),[Be,j]=l(""),[We,ae]=l(""),[ze,fe]=l(!1),[te,ne]=l(""),[pe,oe]=l(""),[Me,G]=l(""),[ua,U]=l(""),[be,ie]=l(""),[b,K]=l([]),[re,le]=l(void 0),[he,Pe]=l(new Set),$e=_e(he),Ne=_e(null),[B,Se]=l(""),ce=_e(B),[Ve,je]=l(!1);v(()=>{$e.current=he},[he]),v(()=>{ce.current=B},[B]);const o=Mt({createdLabel:"NegotiableQuote.Manage.createdLabel",salesRepLabel:"NegotiableQuote.Manage.salesRepLabel",expiresLabel:"NegotiableQuote.Manage.expiresLabel",actionsLabel:"NegotiableQuote.Manage.actionsLabel",remove:"NegotiableQuote.Manage.actions.remove",close:"NegotiableQuote.Manage.actionButtons.close",delete:"NegotiableQuote.Manage.actionButtons.delete",print:"NegotiableQuote.Manage.actionButtons.print",createTemplate:"NegotiableQuote.Manage.actionButtons.createTemplate",createCopy:"NegotiableQuote.Manage.actionButtons.createCopy",shippingInformationTitle:"NegotiableQuote.Manage.shippingInformation.title",quoteCommentsTitle:"NegotiableQuote.Manage.quoteComments.title",quoteCommentsPlaceholder:"NegotiableQuote.Manage.quoteComments.placeholder",sendForReview:"NegotiableQuote.Manage.actionButtons.sendForReview",bannerTitle:"NegotiableQuote.Manage.bannerTitle",statusSubmitted:"NegotiableQuote.Manage.bannerStatusMessages.submitted",statusPending:"NegotiableQuote.Manage.bannerStatusMessages.pending",statusExpired:"NegotiableQuote.Manage.bannerStatusMessages.expired",errorFallback:"NegotiableQuote.Manage.confirmationModal.delete.errorFallback",closeSuccessMessage:"NegotiableQuote.Manage.confirmationModal.close.successDescription",closeModalTitle:"NegotiableQuote.Manage.actionButtons.close",closeModalMessage:"NegotiableQuote.Manage.confirmationModal.close.message",closeModalCancel:"NegotiableQuote.Manage.confirmationModal.cancel",closeModalConfirm:"NegotiableQuote.Manage.confirmationModal.close.confirm",closeModalConfirmLoading:"NegotiableQuote.Manage.confirmationModal.close.confirmLoading",closeModalSuccessHeading:"NegotiableQuote.Manage.confirmationModal.close.successHeading",createTemplateModalTitle:"NegotiableQuote.Manage.actionButtons.createTemplate",createTemplateModalMessage:"NegotiableQuote.Manage.confirmationModal.createTemplate.message",createTemplateModalCancel:"NegotiableQuote.Manage.confirmationModal.cancel",createTemplateModalConfirm:"NegotiableQuote.Manage.confirmationModal.createTemplate.confirm",createTemplateModalConfirmLoading:"NegotiableQuote.Manage.confirmationModal.createTemplate.confirmLoading",createTemplateModalSuccessHeading:"NegotiableQuote.Manage.confirmationModal.createTemplate.successHeading",createTemplateSuccessMessage:"NegotiableQuote.Manage.confirmationModal.createTemplate.successDescription",createTemplateModalErrorHeading:"NegotiableQuote.Manage.confirmationModal.createTemplate.errorHeading",createTemplateErrorFallback:"NegotiableQuote.Manage.confirmationModal.createTemplate.errorFallback",renameErrorHeading:"NegotiableQuote.Manage.rename.errorHeading",renameQuoteNameRequired:"NegotiableQuote.Manage.rename.quoteNameRequired",renameErrorDefault:"NegotiableQuote.Manage.rename.errorDefault",renameSuccessHeading:"NegotiableQuote.Manage.rename.successHeading",renameSuccessMessage:"NegotiableQuote.Manage.rename.successMessage",confirmationModalCancel:"NegotiableQuote.Manage.confirmationModal.cancel",confirmationModalDeleteTitle:"NegotiableQuote.Manage.confirmationModal.delete.title",confirmationModalDeleteMessage:"NegotiableQuote.Manage.confirmationModal.delete.message",confirmationModalDeleteConfirm:"NegotiableQuote.Manage.confirmationModal.delete.confirm",confirmationModalDeleteErrorHeading:"NegotiableQuote.Manage.confirmationModal.delete.errorHeading",confirmationModalDeleteErrorFallback:"NegotiableQuote.Manage.confirmationModal.delete.errorFallback",confirmationModalDeleteSuccessHeading:"NegotiableQuote.Manage.confirmationModal.delete.successHeading",confirmationModalDeleteSuccessDescription:"NegotiableQuote.Manage.confirmationModal.delete.successDescription",confirmationModalDuplicateTitle:"NegotiableQuote.Manage.confirmationModal.duplicate.title",confirmationModalDuplicateMessage:"NegotiableQuote.Manage.confirmationModal.duplicate.message",confirmationModalDuplicateConfirm:"NegotiableQuote.Manage.confirmationModal.duplicate.confirm",confirmationModalDuplicateErrorHeading:"NegotiableQuote.Manage.confirmationModal.duplicate.errorHeading",confirmationModalDuplicateErrorFallback:"NegotiableQuote.Manage.confirmationModal.duplicate.errorFallback",confirmationModalDuplicateSuccessHeading:"NegotiableQuote.Manage.confirmationModal.duplicate.successHeading",confirmationModalDuplicateSuccessDescription:"NegotiableQuote.Manage.confirmationModal.duplicate.successDescription",duplicateOutOfStockWarningHeading:"NegotiableQuote.Manage.confirmationModal.duplicate.outOfStockWarningHeading",duplicateOutOfStockWarningMessage:"NegotiableQuote.Manage.confirmationModal.duplicate.outOfStockWarningMessage",noItemsSelectedModalTitle:"NegotiableQuote.Manage.confirmationModal.noItemsSelected.title",noItemsSelectedModalMessage:"NegotiableQuote.Manage.confirmationModal.noItemsSelected.message",noItemsSelectedModalConfirm:"NegotiableQuote.Manage.confirmationModal.noItemsSelected.confirm",attachFiles:"NegotiableQuote.Manage.attachFiles",fileUploadError:"NegotiableQuote.Manage.fileUploadError",maxFilesExceeded:"NegotiableQuote.Manage.maxFilesExceeded",maxFileSizeExceeded:"NegotiableQuote.Manage.maxFileSizeExceeded",invalidFileType:"NegotiableQuote.Manage.invalidFileType"});v(()=>{const a=C.on("quote-management/quote-data",i=>{const{quote:r}=i;if(r){S(r),k(!1);const s=`duplicate-outOfStock-warning-${r.uid}`;sessionStorage.getItem(s)==="true"&&(Ie(!0),sessionStorage.removeItem(s))}},{eager:!0});return()=>a==null?void 0:a.off()},[]),v(()=>{const a=C.on("quote-management/shipping-address-set",i=>{const{quote:r}=i;r&&S(r)},{eager:!0});return()=>a==null?void 0:a.off()},[]),v(()=>{const a=C.on("quote-management/quote-sent-for-review",i=>{const{quote:r}=i;S(r),we(""),K([]),me(!1)},{eager:!0});return()=>a==null?void 0:a.off()},[]),v(()=>{const a=C.on("quote-management/quote-items-removed",i=>{const{quote:r,removedItemUids:s}=i;r&&S(r),s&&Pe(d=>{const q=new Set(d);return s.forEach(I=>q.delete(I)),q})},{eager:!0});return()=>a==null?void 0:a.off()},[]);const Ge=c((a,i)=>{Pe(r=>{const s=new Set(r);return i?s.add(a.uid):s.delete(a.uid),s})},[]),Ke=c(a=>{const i=a.target.value,r=$e.current;if(i==="remove"){if(Se(i),ce.current=i,r.size===0)je(!0);else if(e&&Ne.current){const s=e.items.filter(d=>r.has(d.uid));Ne.current(s)}}x==null||x(a)},[x,e]),Xe=c(()=>{je(!1),Se(""),ce.current=""},[]);v(()=>{const a=C.on("quote-management/negotiable-quote-closed",async i=>{ue(!1),V(""),O(o.closeSuccessMessage),S(r=>{var s;return r!=null&&r.uid&&((s=i.closedQuoteUids)!=null&&s.includes(r.uid))&&rt(r.uid).then(d=>{S(d)}).catch(d=>{console.warn("Failed to refresh quote data after closure:",d)}),r}),setTimeout(()=>{de(!1),O("")},2e3)},{eager:!0});return()=>a==null?void 0:a.off()},[o.closeSuccessMessage]),v(()=>{const a=C.on("quote-management/negotiable-quote-close-error",i=>{console.log("Close error event received:",i),ue(!1),O("");const r=i.error.message||o.errorFallback;V(r)},{eager:!0});return()=>a==null?void 0:a.off()},[o.errorFallback]),v(()=>{const a=C.on("quote-management/quote-renamed",i=>{const{quote:r}=i;S(r),G(""),U(""),ie(o.renameSuccessMessage),setTimeout(()=>{fe(!1),ne(""),oe(""),ie("")},2e3)},{eager:!0});return()=>a==null?void 0:a.off()},[o.renameSuccessMessage]),v(()=>{const a=C.on("quote-management/quote-duplicated",i=>{const{quote:r}=i;e&&L&&L({quoteData:e,newQuote:r}),H(!0),D(null),setTimeout(()=>{se(!1),H(!1),D(null)},2e3)},{eager:!0});return()=>a==null?void 0:a.off()},[e,L]);const Qe=c(async a=>{if(y&&b.length+a.length>y){le(o.maxFilesExceeded.replace("{maxFiles}",String(y)));return}for(const r of a){if(_&&!Aa(r.size,_)){le(o.maxFileSizeExceeded.replace("{maxSize}",et(_)));return}if(N&&!at(r.type,N)){le(o.invalidFileType);return}}le(void 0);const i=a.map(r=>({key:`temp-${Date.now()}-${Math.random()}-${r.name}`,name:r.name,size:r.size,status:"uploading"}));K(r=>[...r,...i]);for(let r=0;r<a.length;r++){const s=a[r],d=i[r].key;try{const q=await gt(s);K(I=>I.map(T=>T.key===d?{...T,key:q.key,status:"success"}:T))}catch(q){K(I=>I.map(T=>T.key===d?{...T,status:"error",error:q.message}:T))}}},[y,_,N,b,o]),qe=c(a=>{K(i=>i.filter(r=>r.key!==a))},[]),Je=c(()=>{ne((e==null?void 0:e.name)||""),oe(""),G(""),U(""),ie(""),fe(!0)},[e]),ga=c(()=>{fe(!1),ne(""),oe(""),G(""),U(""),ie("")},[]),fa=c(a=>{ne(a),a.trim()&&U("")},[]),Ye=c(()=>{se(!0),D(null),H(!1)},[]),pa=c(async()=>{if(!te.trim()){U(o.renameQuoteNameRequired);return}try{G(""),U(""),await lt({quoteUid:e.uid,quoteName:te,quoteComment:pe.trim()||void 0})}catch(a){G(a.message||o.renameErrorDefault)}},[e,te,pe,o.renameQuoteNameRequired,o.renameErrorDefault]),Ma=f(()=>{const a=e&&(e.lockedForEditing===!0||e.lockedForEditing===void 0&&(e.status==="SUBMITTED"||e.status==="PENDING"||e.status==="ORDERED"||e.status==="CLOSED"));return n(g,{name:"QuoteName",slot:t==null?void 0:t.QuoteName,context:{quoteName:e==null?void 0:e.name,quoteData:e},children:p("div",{className:"quote-management-manage-negotiable-quote__quote-name-wrapper",children:[n("h1",{"data-testid":"quote-name",className:"quote-management-manage-negotiable-quote__quote-name-title",children:e==null?void 0:e.name}),n("button",{onClick:Je,disabled:a,"data-testid":"rename-quote-button",className:"quote-management-manage-negotiable-quote__rename-button","aria-label":"Rename quote",children:n(Xa,{})})]})})},[t==null?void 0:t.QuoteName,e,Je]),ba=f(()=>n(g,{name:"QuoteStatus",slot:t==null?void 0:t.QuoteStatus,context:{quoteStatus:e==null?void 0:e.status,quoteData:e},children:n("div",{"data-testid":"quote-status",children:e==null?void 0:e.status})}),[t==null?void 0:t.QuoteStatus,e]),Ze=c(a=>{switch(a){case"SUBMITTED":return o.statusSubmitted;case"PENDING":return o.statusPending;case"EXPIRED":return o.statusExpired;default:return null}},[o])(e==null?void 0:e.status),Ae=Ze&&n(h,{type:"warning",variant:"secondary",icon:n(w,{}),heading:o.bannerTitle,description:Ze}),ea=Ae&&n(g,{name:"Banner","data-testid":"banner",slot:t==null?void 0:t.Banner,context:{quoteData:e},children:Ae}),ha=c(()=>{Ie(!1)},[]),aa=Fe&&n(g,{name:"DuplicateQuoteWarningBanner","data-testid":"duplicate-outOfStock-warning-banner",slot:t==null?void 0:t.DuplicateQuoteWarningBanner,context:{outOfStockWarning:Fe},children:n(h,{type:"warning",variant:"primary",icon:n(w,{}),heading:o.duplicateOutOfStockWarningHeading,description:o.duplicateOutOfStockWarningMessage,onDismiss:ha,"data-testid":"duplicate-outOfStock-warning-alert"})}),Na=f(()=>{if(!e)return;const a=e.expirationDate?ca(e.expirationDate,"short"):void 0;return p(g,{name:"Details",slot:t==null?void 0:t.Details,context:{quoteData:e},children:[p("div",{className:"quote-management-manage-negotiable-quote__detail",children:[n("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"created-label",children:o.createdLabel}),p("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"created-value",children:[ca(e.createdAt,"short")," (",e.buyer.firstname," ",e.buyer.lastname,")"]})]}),p("div",{className:"quote-management-manage-negotiable-quote__detail",children:[n("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"sales-rep-label",children:o.salesRepLabel}),n("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"sales-rep-value",children:e.salesRepName})]}),p("div",{className:"quote-management-manage-negotiable-quote__detail",children:[n("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"expires-label",children:o.expiresLabel}),n("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"expires-value",children:a})]})]})},[t==null?void 0:t.Details,o,e]),ta=f(()=>[{label:o.close,value:"close",disabled:!(e!=null&&e.canClose)},{label:o.delete,value:"delete",disabled:!(e!=null&&e.canDelete)},{label:o.print,value:"print"},{label:o.createTemplate,value:"createTemplate"},{label:o.createCopy,value:"createCopy"}],[o,e==null?void 0:e.canDelete,e==null?void 0:e.canClose]),Sa=f(()=>{const a=i=>{switch(i){case"close":de(!0),V(""),O(""),m==null||m(i);break;case"delete":Z(!0),m==null||m(i);break;case"print":m==null||m(i);break;case"createTemplate":ge(!0),ae(""),j(""),m==null||m(i);break;case"createCopy":Ye(),m==null||m(i);break}};return n(g,{name:"ActionBar",slot:t==null?void 0:t.ActionBar,context:{quoteData:e,actionsBarDropdownValue:B},children:n(Ja,{dropdownPlaceholder:o.actionsLabel,dropdownOptions:[{label:o.remove,value:"remove"}],dropdownValue:B,handleDropdownChange:Ke,buttons:ta.map(i=>n(sa,{variant:"tertiary",onClick:()=>a(i.value),"data-testid":`actions-bar-${i.value}-button`,"data-action":i.value,disabled:i.disabled,children:i.label},i.value))})})},[ta,o,t==null?void 0:t.ActionBar,e,Ke,m,Ye,B]),Qa=f(()=>n(g,{name:"QuoteContent",slot:t==null?void 0:t.QuoteContent,context:{quoteData:e},children:n(Ya,{tabs:new Map([["items-quoted","Items Quoted"],["comments","Comments"],["history-log","History Log"]]),tabsContent:new Map([["items-quoted",n(g,{name:"ItemsQuotedTab",slot:t==null?void 0:t.ItemsQuotedTab,context:{quoteData:e},children:n(ft,{quoteData:e,onItemCheckboxChange:Ge,onRemoveItemsRef:a=>{Ne.current=a},onRemoveModalStateChange:a=>{!a&&ce.current==="remove"&&Se("")}})},"items-quoted")],["comments",n(g,{name:"CommentsTab",slot:t==null?void 0:t.CommentsTab,context:{quoteData:e},children:n(pt,{quoteData:e})},"comments")],["history-log",n(g,{name:"HistoryLogTab",slot:t==null?void 0:t.HistoryLogTab,context:{quoteData:e},children:n(it,{quoteData:e})},"history-log")]])})}),[t==null?void 0:t.QuoteContent,t==null?void 0:t.HistoryLogTab,t==null?void 0:t.CommentsTab,t==null?void 0:t.ItemsQuotedTab,e,Ge]),qa=f(()=>n(g,{name:"ShippingInformationTitle",slot:t==null?void 0:t.ShippingInformationTitle,context:{quoteData:e},children:n("h2",{children:o.shippingInformationTitle})}),[t==null?void 0:t.ShippingInformationTitle,e,o]),va=f(()=>{var a;return n(g,{name:"ShippingInformation",slot:t==null?void 0:t.ShippingInformation,context:{quoteData:e,loading:E,setLoading:k},children:n(ot,{shippingAddress:(a=e==null?void 0:e.shippingAddresses)==null?void 0:a[0],loading:E,"data-testid":"manage-quote-shipping-address"})})},[t==null?void 0:t.ShippingInformation,e,E,k]),Ta=f(()=>n(g,{name:"QuoteCommentsTitle",slot:t==null?void 0:t.QuoteCommentsTitle,context:{quoteData:e},children:n("h2",{children:o.quoteCommentsTitle})}),[t==null?void 0:t.QuoteCommentsTitle,o,e]),Ca=f(()=>n(g,{name:"QuoteComments",slot:t==null?void 0:t.QuoteComments,context:{quoteData:e},children:n(Ga,{name:"quoteComments",placeholder:o.quoteCommentsPlaceholder,rows:3,value:F,onInput:a=>{we(a.target.value)},disabled:!(e!=null&&e.canSendForReview)||Q})}),[t==null?void 0:t.QuoteComments,o,e,F,Q]),na=f(()=>!(e!=null&&e.canSendForReview),[e]),ya=f(()=>{const a=Q||na;return n(g,{name:"AttachFilesField",slot:t==null?void 0:t.AttachFilesField,context:{onFileChange:Qe,attachedFiles:b,fileUploadError:re,disabled:a},children:p("div",{className:"quote-management-manage-negotiable-quote__attach-files",...a?{"data-disabled":!0}:{},"aria-disabled":a,children:[n(Ka,{id:"manage-quote-attach-files",multiple:!0,onChange:i=>{const r=i.target,s=r==null?void 0:r.files,d=s?Array.from(s):[];d.length>0&&Qe(d)},icon:n(tt,{}),disabled:a,"data-testid":"manage-quote-attach-files",accept:N==null?void 0:N.join(","),children:o.attachFiles}),re&&n("div",{className:"quote-management-manage-negotiable-quote__file-error","data-testid":"file-upload-error",children:re})]})})},[t==null?void 0:t.AttachFilesField,Qe,Q,na,N,re,o,b]),_a=f(()=>{if(b.length)return n(g,{name:"AttachedFilesList",slot:t==null?void 0:t.AttachedFilesList,context:{files:b,onRemove:qe,disabled:Q},children:n(nt,{files:b,onRemove:qe,disabled:Q})})},[b,qe,Q,t==null?void 0:t.AttachedFilesList]),Ea=c(async()=>{if(e!=null&&e.uid){ue(!0),V(""),O("");try{await ct({quoteUids:[e.uid]})}catch(a){console.error("Failed to close quote:",a)}}},[e]),Da=c(()=>{de(!1),V(""),O("")},[]),Fa=c(async()=>{if(e!=null&&e.uid){Ue(!0),ae(""),j("");try{await st(e.uid),j(o.createTemplateSuccessMessage),setTimeout(()=>{ge(!1),j("")},2e3)}catch(a){console.error("Failed to create quote template:",a);const i=a instanceof Error?a.message:o.createTemplateErrorFallback;ae(i)}finally{Ue(!1)}}},[e,o.createTemplateSuccessMessage,o.createTemplateErrorFallback]),Ia=c(()=>{ge(!1),ae(""),j("")},[]),ve=c(async()=>{const a=b.filter(i=>i.status==="success");if(R){R({quoteData:e,comment:F.trim()||void 0,attachments:a.length?a:void 0});return}me(!0);try{await mt({quoteUid:e.uid,comment:F.trim()||void 0,attachments:a.length?a.map(i=>({key:i.key})):void 0})}catch(i){console.error("Failed to send quote for review:",i),me(!1)}},[e,R,F,b]),wa=f(()=>n(g,{name:"Footer",slot:t==null?void 0:t.Footer,context:{quoteData:e,comment:F,isSubmitting:Q,attachments:b,handleSendForReview:ve},children:n(sa,{variant:"primary",onClick:ve,"data-testid":"send-for-review-button",disabled:!(e!=null&&e.canSendForReview)||Q,children:o.sendForReview})}),[t==null?void 0:t.Footer,o,e,F,Q,b,ve]),xa=f(()=>Me?n(h,{type:"error",variant:"primary",icon:n(w,{color:"var(--color-error)"}),heading:o.renameErrorHeading,description:Me}):void 0,[Me,o.renameErrorHeading]),Ra=f(()=>be?n(h,{type:"success",variant:"primary",icon:n(J,{}),heading:o.renameSuccessHeading,description:be}):void 0,[be,o.renameSuccessHeading]),Te=c(a=>a.errors&&Array.isArray(a.errors)&&a.errors.length>0?a.errors[0].message||o.confirmationModalDeleteErrorFallback:(a==null?void 0:a.message)||o.confirmationModalDeleteErrorFallback,[o.confirmationModalDeleteErrorFallback]),La=c(()=>{Z(!1),$(null),ee(!1)},[]),ka=c(async()=>{if(e!=null&&e.uid){$(null),ee(!1);try{const{operationResults:a}=await dt(e.uid),i=a.find(r=>r.__typename==="DeleteNegotiableQuoteOperationFailure");if(i){const r=Te(i);$(r);return}ee(!0)}catch(a){const i=Te(a);$(i)}}},[e,Te]),Ha=c(()=>{$(null)},[]),Oa=c(()=>{ee(!1)},[]),oa=c(a=>(a==null?void 0:a.message)||o.confirmationModalDuplicateErrorFallback,[o.confirmationModalDuplicateErrorFallback]),Ua=c(()=>{se(!1),D(null),H(!1)},[]),Ba=c(async()=>{var a;if(e!=null&&e.uid){D(null),H(!1);try{const i=((a=e.items)==null?void 0:a.filter(q=>q.outOfStock))||[],s=(q=>{const I=q.slice(0,-8),T=crypto.randomUUID().slice(0,8);return I+T})(e.uid),d=i.length>0;d&&sessionStorage.setItem(`duplicate-outOfStock-warning-${s}`,"true"),await ut({quoteUid:e.uid,duplicatedQuoteUid:s,hasOutOfStockItems:d})}catch(i){const r=oa(i);D(r)}}},[e,oa]),Wa=c(()=>{D(null)},[]),za=c(()=>{H(!1)},[]),Pa=A?n(h,{type:"error",variant:"primary",icon:n(w,{}),heading:o.confirmationModalDeleteErrorHeading,description:A,onDismiss:Ha,"data-testid":"confirmation-modal-error-banner"}):null,ia=(ma?n(h,{type:"success",variant:"primary",icon:n(J,{}),heading:o.confirmationModalDeleteSuccessHeading,description:o.confirmationModalDeleteSuccessDescription,onDismiss:Oa,"data-testid":"confirmation-modal-success-banner"}):null)||Pa,$a=De?n(h,{type:"error",variant:"primary",icon:n(w,{}),heading:o.confirmationModalDuplicateErrorHeading,description:De,onDismiss:Wa,"data-testid":"confirmation-modal-duplicate-error-banner"}):null,ra=(da?n(h,{type:"success",variant:"primary",icon:n(J,{}),heading:o.confirmationModalDuplicateSuccessHeading,description:o.confirmationModalDuplicateSuccessDescription,onDismiss:za,"data-testid":"confirmation-modal-duplicate-success-banner"}):null)||$a,Va={...Y,loading:E,quoteName:Ma,quoteStatus:ba,banner:aa||ea?p(la,{children:[aa,ea]}):void 0,details:Na,actionBar:Sa,quoteContent:Qa,shippingInformationTitle:qa,shippingInformation:va,quoteCommentsTitle:Ta,quoteComments:Ca,attachFilesField:ya,attachedFilesList:_a,footer:wa};let Ce=null;Le?Ce=n(h,{type:"success",variant:"primary",icon:n(J,{}),heading:o.closeModalSuccessHeading,description:Le,"data-testid":"close-quote-success-banner"}):ke&&(Ce=n(h,{type:"error",variant:"primary",icon:n(w,{}),heading:o.confirmationModalDeleteErrorHeading,description:ke,"data-testid":"close-quote-error-banner"}));let ye=null;return Be?ye=n(h,{type:"success",variant:"primary",icon:n(J,{}),heading:o.createTemplateModalSuccessHeading,description:Be,"data-testid":"create-template-success-banner"}):We&&(ye=n(h,{type:"error",variant:"primary",icon:n(w,{}),heading:o.createTemplateModalErrorHeading,description:We,"data-testid":"create-template-error-banner"})),p(la,{children:[n(bt,{...Va}),ze&&W(n(Za,{open:ze,quoteName:te,renameReason:pe,quoteNameError:ua,errorBanner:xa,successBanner:Ra,onQuoteNameChange:fa,onRenameReasonChange:oe,onSave:pa,onClose:ga}),document.body),P&&W(n(X,{open:P,title:o.confirmationModalDeleteTitle,message:o.confirmationModalDeleteMessage,cancelLabel:o.confirmationModalCancel,confirmLabel:o.confirmationModalDeleteConfirm,onCancel:La,onConfirm:ka,showCloseButton:!ia,confirmationBanner:ia}),document.body),Ee&&W(n(X,{open:Ee,title:o.confirmationModalDuplicateTitle,message:o.confirmationModalDuplicateMessage,cancelLabel:o.confirmationModalCancel,confirmLabel:o.confirmationModalDuplicateConfirm,onCancel:Ua,onConfirm:Ba,showCloseButton:!ra,confirmationBanner:ra}),document.body),xe&&W(n(X,{open:xe,title:o.closeModalTitle,message:o.closeModalMessage,cancelLabel:o.closeModalCancel,confirmLabel:Re?o.closeModalConfirmLoading:o.closeModalConfirm,onCancel:Da,onConfirm:Re?void 0:Ea,showCloseButton:!0,confirmationBanner:Ce,"data-testid":"close-quote-confirmation-modal"}),document.body),He&&W(n(X,{open:He,title:o.createTemplateModalTitle,message:o.createTemplateModalMessage,cancelLabel:o.createTemplateModalCancel,confirmLabel:Oe?o.createTemplateModalConfirmLoading:o.createTemplateModalConfirm,onCancel:Ia,onConfirm:Oe?void 0:Fa,showCloseButton:!0,confirmationBanner:ye,"data-testid":"create-template-confirmation-modal"}),document.body),Ve&&W(n(X,{open:Ve,title:o.noItemsSelectedModalTitle,message:o.noItemsSelectedModalMessage,confirmLabel:o.noItemsSelectedModalConfirm,onConfirm:Xe,onClose:Xe,showCloseButton:!0,"data-testid":"no-items-selected-modal"}),document.body)]})};export{en as ManageNegotiableQuote,en as default};
|
|
3
|
+
import{jsx as n,jsxs as p,Fragment as la}from"@dropins/tools/preact-jsx-runtime.js";import{useState as l,useRef as _e,useEffect as v,useCallback as c,useMemo as f,createPortal as W}from"@dropins/tools/preact-compat.js";import{classes as u,VComponent as M,Slot as g}from"@dropins/tools/lib.js";import{f as ca}from"../chunks/dateUtils.js";/* empty css */import{Skeleton as ja,SkeletonRow as z,InLineAlert as h,Button as sa,TextArea as Ga,InputFile as Ka}from"@dropins/tools/components.js";import{events as C}from"@dropins/tools/event-bus.js";import{S as Xa,A as Ja,T as Ya,R as Za}from"../chunks/RenameQuoteModal.js";import{v as Aa,f as et,a as at,S as tt,A as nt}from"../chunks/AttachedFilesList.js";import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";import{C as X}from"../chunks/ConfirmationModal.js";/* empty css *//* empty css */import{S as ot}from"../chunks/ShippingAddressDisplay.js";import{Q as it}from"../chunks/QuoteHistoryLog3.js";import{g as rt,r as lt,c as ct,a as st,s as mt,d as dt,b as ut}from"../chunks/duplicateNegotiableQuote.js";import"../chunks/state.js";import{u as gt}from"../chunks/uploadFile.js";import{I as ft}from"../chunks/ItemsQuoted.js";import{Q as pt}from"../chunks/QuoteCommentsList3.js";import{S as w}from"../chunks/WarningFilled.js";import{S as J}from"../chunks/CheckWithCircle.js";import{useText as Mt}from"@dropins/tools/i18n.js";import"../chunks/QuoteHistoryLog.js";import"../chunks/transform-quote.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/NegotiableQuoteFragment.js";import"../chunks/transform-quote-template.js";import"../chunks/NegotiableQuoteTemplateFragment.js";import"../chunks/LineItemNoteModal.js";import"../chunks/setLineItemNote.js";import"../chunks/QuoteCommentsList.js";const bt=({className:x,loading:t,quoteName:m,quoteStatus:R,banner:y,details:_,actionBar:N,quoteContent:L,shippingInformationTitle:Y,shippingInformation:e,quoteCommentsTitle:S,quoteComments:E,attachFilesField:k,attachedFilesList:P,footer:Z,...A})=>t?n(ht,{}):p("div",{...A,className:u(["quote-management-manage-negotiable-quote",x]),children:[p("div",{className:u(["quote-management-manage-negotiable-quote__header"]),children:[m&&n(M,{node:m,className:u(["quote-management-manage-negotiable-quote__quote-name"])}),R&&n(M,{node:R,className:u(["quote-management-manage-negotiable-quote__quote-status"])})]}),y&&n(M,{node:y,className:u(["quote-management-manage-negotiable-quote__banner"])}),_&&n(M,{node:_,className:u(["quote-management-manage-negotiable-quote__details"])}),N&&n(M,{node:N,className:u(["quote-management-manage-negotiable-quote__action-bar"])}),L&&n(M,{node:L,className:u(["quote-management-manage-negotiable-quote__quote-content"])}),p("div",{"data-testid":"quote-shipping-information-container",className:u(["quote-management-manage-negotiable-quote__shipping-information-container"]),children:[Y&&n(M,{node:Y,className:u(["quote-management-manage-negotiable-quote__shipping-information-title"])}),e&&n(M,{node:e,className:u(["quote-management-manage-negotiable-quote__shipping-information"])})]}),p("div",{"data-testid":"quote-comments-container",className:u(["quote-management-manage-negotiable-quote__quote-comments-container"]),children:[S&&n(M,{node:S,className:u(["quote-management-manage-negotiable-quote__quote-comments-title"])}),E&&n(M,{node:E,className:u(["quote-management-manage-negotiable-quote__quote-comments"])}),k&&n(M,{node:k,className:u(["quote-management-manage-negotiable-quote__attach-files-field"])}),P&&n(M,{node:P,className:u(["quote-management-manage-negotiable-quote__attached-files-list"])})]}),n(M,{node:Z,className:u(["quote-management-manage-negotiable-quote__footer"])})]}),ht=()=>p(ja,{"data-testid":"manage-negotiable-quote-skeleton",children:[n(z,{variant:"heading",fullWidth:!0,size:"large"}),n(z,{variant:"row",fullWidth:!1,size:"small"}),n(z,{variant:"row",fullWidth:!1,size:"small"}),n(z,{variant:"row",fullWidth:!0}),n(z,{variant:"row",fullWidth:!0,size:"xlarge",lines:2}),n(z,{variant:"row",fullWidth:!1,size:"small"})]}),an=({onActionsDropdownChange:x,slots:t,onActionsButtonClick:m,onSendForReview:R,maxFiles:y,maxFileSize:_,acceptedFileTypes:N,onDuplicateQuote:L,...Y})=>{const[e,S]=l(void 0),[E,k]=l(!0),[P,Z]=l(!1),[A,$]=l(null),[ma,ee]=l(!1),[Ee,se]=l(!1),[De,D]=l(null),[da,H]=l(!1),[Fe,Ie]=l(!1),[F,we]=l(""),[Q,me]=l(!1),[xe,de]=l(!1),[Re,ue]=l(!1),[Le,O]=l(""),[ke,V]=l(""),[He,ge]=l(!1),[Oe,Ue]=l(!1),[Be,j]=l(""),[We,ae]=l(""),[ze,fe]=l(!1),[te,ne]=l(""),[pe,oe]=l(""),[Me,G]=l(""),[ua,U]=l(""),[be,ie]=l(""),[b,K]=l([]),[re,le]=l(void 0),[he,Pe]=l(new Set),$e=_e(he),Ne=_e(null),[B,Se]=l(""),ce=_e(B),[Ve,je]=l(!1);v(()=>{$e.current=he},[he]),v(()=>{ce.current=B},[B]);const o=Mt({createdLabel:"NegotiableQuote.Manage.createdLabel",salesRepLabel:"NegotiableQuote.Manage.salesRepLabel",expiresLabel:"NegotiableQuote.Manage.expiresLabel",actionsLabel:"NegotiableQuote.Manage.actionsLabel",remove:"NegotiableQuote.Manage.actions.remove",close:"NegotiableQuote.Manage.actionButtons.close",delete:"NegotiableQuote.Manage.actionButtons.delete",print:"NegotiableQuote.Manage.actionButtons.print",createTemplate:"NegotiableQuote.Manage.actionButtons.createTemplate",createCopy:"NegotiableQuote.Manage.actionButtons.createCopy",shippingInformationTitle:"NegotiableQuote.Manage.shippingInformation.title",quoteCommentsTitle:"NegotiableQuote.Manage.quoteComments.title",quoteCommentsPlaceholder:"NegotiableQuote.Manage.quoteComments.placeholder",sendForReview:"NegotiableQuote.Manage.actionButtons.sendForReview",bannerTitle:"NegotiableQuote.Manage.bannerTitle",statusSubmitted:"NegotiableQuote.Manage.bannerStatusMessages.submitted",statusPending:"NegotiableQuote.Manage.bannerStatusMessages.pending",statusExpired:"NegotiableQuote.Manage.bannerStatusMessages.expired",errorFallback:"NegotiableQuote.Manage.confirmationModal.delete.errorFallback",closeSuccessMessage:"NegotiableQuote.Manage.confirmationModal.close.successDescription",closeModalTitle:"NegotiableQuote.Manage.actionButtons.close",closeModalMessage:"NegotiableQuote.Manage.confirmationModal.close.message",closeModalCancel:"NegotiableQuote.Manage.confirmationModal.cancel",closeModalConfirm:"NegotiableQuote.Manage.confirmationModal.close.confirm",closeModalConfirmLoading:"NegotiableQuote.Manage.confirmationModal.close.confirmLoading",closeModalSuccessHeading:"NegotiableQuote.Manage.confirmationModal.close.successHeading",createTemplateModalTitle:"NegotiableQuote.Manage.actionButtons.createTemplate",createTemplateModalMessage:"NegotiableQuote.Manage.confirmationModal.createTemplate.message",createTemplateModalCancel:"NegotiableQuote.Manage.confirmationModal.cancel",createTemplateModalConfirm:"NegotiableQuote.Manage.confirmationModal.createTemplate.confirm",createTemplateModalConfirmLoading:"NegotiableQuote.Manage.confirmationModal.createTemplate.confirmLoading",createTemplateModalSuccessHeading:"NegotiableQuote.Manage.confirmationModal.createTemplate.successHeading",createTemplateSuccessMessage:"NegotiableQuote.Manage.confirmationModal.createTemplate.successDescription",createTemplateModalErrorHeading:"NegotiableQuote.Manage.confirmationModal.createTemplate.errorHeading",createTemplateErrorFallback:"NegotiableQuote.Manage.confirmationModal.createTemplate.errorFallback",renameErrorHeading:"NegotiableQuote.Manage.rename.errorHeading",renameQuoteNameRequired:"NegotiableQuote.Manage.rename.quoteNameRequired",renameErrorDefault:"NegotiableQuote.Manage.rename.errorDefault",renameSuccessHeading:"NegotiableQuote.Manage.rename.successHeading",renameSuccessMessage:"NegotiableQuote.Manage.rename.successMessage",confirmationModalCancel:"NegotiableQuote.Manage.confirmationModal.cancel",confirmationModalDeleteTitle:"NegotiableQuote.Manage.confirmationModal.delete.title",confirmationModalDeleteMessage:"NegotiableQuote.Manage.confirmationModal.delete.message",confirmationModalDeleteConfirm:"NegotiableQuote.Manage.confirmationModal.delete.confirm",confirmationModalDeleteErrorHeading:"NegotiableQuote.Manage.confirmationModal.delete.errorHeading",confirmationModalDeleteErrorFallback:"NegotiableQuote.Manage.confirmationModal.delete.errorFallback",confirmationModalDeleteSuccessHeading:"NegotiableQuote.Manage.confirmationModal.delete.successHeading",confirmationModalDeleteSuccessDescription:"NegotiableQuote.Manage.confirmationModal.delete.successDescription",confirmationModalDuplicateTitle:"NegotiableQuote.Manage.confirmationModal.duplicate.title",confirmationModalDuplicateMessage:"NegotiableQuote.Manage.confirmationModal.duplicate.message",confirmationModalDuplicateConfirm:"NegotiableQuote.Manage.confirmationModal.duplicate.confirm",confirmationModalDuplicateErrorHeading:"NegotiableQuote.Manage.confirmationModal.duplicate.errorHeading",confirmationModalDuplicateErrorFallback:"NegotiableQuote.Manage.confirmationModal.duplicate.errorFallback",confirmationModalDuplicateSuccessHeading:"NegotiableQuote.Manage.confirmationModal.duplicate.successHeading",confirmationModalDuplicateSuccessDescription:"NegotiableQuote.Manage.confirmationModal.duplicate.successDescription",duplicateOutOfStockWarningHeading:"NegotiableQuote.Manage.confirmationModal.duplicate.outOfStockWarningHeading",duplicateOutOfStockWarningMessage:"NegotiableQuote.Manage.confirmationModal.duplicate.outOfStockWarningMessage",noItemsSelectedModalTitle:"NegotiableQuote.Manage.confirmationModal.noItemsSelected.title",noItemsSelectedModalMessage:"NegotiableQuote.Manage.confirmationModal.noItemsSelected.message",noItemsSelectedModalConfirm:"NegotiableQuote.Manage.confirmationModal.noItemsSelected.confirm",attachFiles:"NegotiableQuote.Manage.attachFiles",fileUploadError:"NegotiableQuote.Manage.fileUploadError",maxFilesExceeded:"NegotiableQuote.Manage.maxFilesExceeded",maxFileSizeExceeded:"NegotiableQuote.Manage.maxFileSizeExceeded",invalidFileType:"NegotiableQuote.Manage.invalidFileType"});v(()=>{const a=C.on("quote-management/quote-data",i=>{const{quote:r}=i;if(r){S(r),k(!1);const s=`duplicate-outOfStock-warning-${r.uid}`;sessionStorage.getItem(s)==="true"&&(Ie(!0),sessionStorage.removeItem(s))}},{eager:!0});return()=>a==null?void 0:a.off()},[]),v(()=>{const a=C.on("quote-management/shipping-address-set",i=>{const{quote:r}=i;r&&S(r)},{eager:!0});return()=>a==null?void 0:a.off()},[]),v(()=>{const a=C.on("quote-management/quote-sent-for-review",i=>{const{quote:r}=i;S(r),we(""),K([]),me(!1)},{eager:!0});return()=>a==null?void 0:a.off()},[]),v(()=>{const a=C.on("quote-management/quote-items-removed",i=>{const{quote:r,removedItemUids:s}=i;r&&S(r),s&&Pe(d=>{const q=new Set(d);return s.forEach(I=>q.delete(I)),q})},{eager:!0});return()=>a==null?void 0:a.off()},[]);const Ge=c((a,i)=>{Pe(r=>{const s=new Set(r);return i?s.add(a.uid):s.delete(a.uid),s})},[]),Ke=c(a=>{const i=a.target.value,r=$e.current;if(i==="remove"){if(Se(i),ce.current=i,r.size===0)je(!0);else if(e&&Ne.current){const s=e.items.filter(d=>r.has(d.uid));Ne.current(s)}}x==null||x(a)},[x,e]),Xe=c(()=>{je(!1),Se(""),ce.current=""},[]);v(()=>{const a=C.on("quote-management/negotiable-quote-closed",async i=>{ue(!1),V(""),O(o.closeSuccessMessage),S(r=>{var s;return r!=null&&r.uid&&((s=i.closedQuoteUids)!=null&&s.includes(r.uid))&&rt(r.uid).then(d=>{S(d)}).catch(d=>{console.warn("Failed to refresh quote data after closure:",d)}),r}),setTimeout(()=>{de(!1),O("")},2e3)},{eager:!0});return()=>a==null?void 0:a.off()},[o.closeSuccessMessage]),v(()=>{const a=C.on("quote-management/negotiable-quote-close-error",i=>{console.log("Close error event received:",i),ue(!1),O("");const r=i.error.message||o.errorFallback;V(r)},{eager:!0});return()=>a==null?void 0:a.off()},[o.errorFallback]),v(()=>{const a=C.on("quote-management/quote-renamed",i=>{const{quote:r}=i;S(r),G(""),U(""),ie(o.renameSuccessMessage),setTimeout(()=>{fe(!1),ne(""),oe(""),ie("")},2e3)},{eager:!0});return()=>a==null?void 0:a.off()},[o.renameSuccessMessage]),v(()=>{const a=C.on("quote-management/quote-duplicated",i=>{const{quote:r}=i;e&&L&&L({quoteData:e,newQuote:r}),H(!0),D(null),setTimeout(()=>{se(!1),H(!1),D(null)},2e3)},{eager:!0});return()=>a==null?void 0:a.off()},[e,L]);const Qe=c(async a=>{if(y&&b.length+a.length>y){le(o.maxFilesExceeded.replace("{maxFiles}",String(y)));return}for(const r of a){if(_&&!Aa(r.size,_)){le(o.maxFileSizeExceeded.replace("{maxSize}",et(_)));return}if(N&&!at(r.type,N)){le(o.invalidFileType);return}}le(void 0);const i=a.map(r=>({key:`temp-${Date.now()}-${Math.random()}-${r.name}`,name:r.name,size:r.size,status:"uploading"}));K(r=>[...r,...i]);for(let r=0;r<a.length;r++){const s=a[r],d=i[r].key;try{const q=await gt(s);K(I=>I.map(T=>T.key===d?{...T,key:q.key,status:"success"}:T))}catch(q){K(I=>I.map(T=>T.key===d?{...T,status:"error",error:q.message}:T))}}},[y,_,N,b,o]),qe=c(a=>{K(i=>i.filter(r=>r.key!==a))},[]),Je=c(()=>{ne((e==null?void 0:e.name)||""),oe(""),G(""),U(""),ie(""),fe(!0)},[e]),ga=c(()=>{fe(!1),ne(""),oe(""),G(""),U(""),ie("")},[]),fa=c(a=>{ne(a),a.trim()&&U("")},[]),Ye=c(()=>{se(!0),D(null),H(!1)},[]),pa=c(async()=>{if(!te.trim()){U(o.renameQuoteNameRequired);return}try{G(""),U(""),await lt({quoteUid:e.uid,quoteName:te,quoteComment:pe.trim()||void 0})}catch(a){G(a.message||o.renameErrorDefault)}},[e,te,pe,o.renameQuoteNameRequired,o.renameErrorDefault]),Ma=f(()=>{const a=e&&(e.lockedForEditing===!0||e.lockedForEditing===void 0&&(e.status==="SUBMITTED"||e.status==="PENDING"||e.status==="ORDERED"||e.status==="CLOSED"));return n(g,{name:"QuoteName",slot:t==null?void 0:t.QuoteName,context:{quoteName:e==null?void 0:e.name,quoteData:e},children:p("div",{className:"quote-management-manage-negotiable-quote__quote-name-wrapper",children:[n("h1",{"data-testid":"quote-name",className:"quote-management-manage-negotiable-quote__quote-name-title",children:e==null?void 0:e.name}),n("button",{onClick:Je,disabled:a,"data-testid":"rename-quote-button",className:"quote-management-manage-negotiable-quote__rename-button","aria-label":"Rename quote",children:n(Xa,{})})]})})},[t==null?void 0:t.QuoteName,e,Je]),ba=f(()=>n(g,{name:"QuoteStatus",slot:t==null?void 0:t.QuoteStatus,context:{quoteStatus:e==null?void 0:e.status,quoteData:e},children:n("div",{"data-testid":"quote-status",children:e==null?void 0:e.status})}),[t==null?void 0:t.QuoteStatus,e]),Ze=c(a=>{switch(a){case"SUBMITTED":return o.statusSubmitted;case"PENDING":return o.statusPending;case"EXPIRED":return o.statusExpired;default:return null}},[o])(e==null?void 0:e.status),Ae=Ze&&n(h,{type:"warning",variant:"secondary",icon:n(w,{}),heading:o.bannerTitle,description:Ze}),ea=Ae&&n(g,{name:"Banner","data-testid":"banner",slot:t==null?void 0:t.Banner,context:{quoteData:e},children:Ae}),ha=c(()=>{Ie(!1)},[]),aa=Fe&&n(g,{name:"DuplicateQuoteWarningBanner","data-testid":"duplicate-outOfStock-warning-banner",slot:t==null?void 0:t.DuplicateQuoteWarningBanner,context:{outOfStockWarning:Fe},children:n(h,{type:"warning",variant:"primary",icon:n(w,{}),heading:o.duplicateOutOfStockWarningHeading,description:o.duplicateOutOfStockWarningMessage,onDismiss:ha,"data-testid":"duplicate-outOfStock-warning-alert"})}),Na=f(()=>{if(!e)return;const a=e.expirationDate?ca(e.expirationDate,"short"):void 0;return p(g,{name:"Details",slot:t==null?void 0:t.Details,context:{quoteData:e},children:[p("div",{className:"quote-management-manage-negotiable-quote__detail",children:[n("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"created-label",children:o.createdLabel}),p("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"created-value",children:[ca(e.createdAt,"short")," (",e.buyer.firstname," ",e.buyer.lastname,")"]})]}),p("div",{className:"quote-management-manage-negotiable-quote__detail",children:[n("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"sales-rep-label",children:o.salesRepLabel}),n("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"sales-rep-value",children:e.salesRepName})]}),p("div",{className:"quote-management-manage-negotiable-quote__detail",children:[n("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"expires-label",children:o.expiresLabel}),n("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"expires-value",children:a})]})]})},[t==null?void 0:t.Details,o,e]),ta=f(()=>[{label:o.close,value:"close",disabled:!(e!=null&&e.canClose)},{label:o.delete,value:"delete",disabled:!(e!=null&&e.canDelete)},{label:o.print,value:"print"},{label:o.createTemplate,value:"createTemplate"},{label:o.createCopy,value:"createCopy"}],[o,e==null?void 0:e.canDelete,e==null?void 0:e.canClose]),Sa=f(()=>{const a=i=>{switch(i){case"close":de(!0),V(""),O(""),m==null||m(i);break;case"delete":Z(!0),m==null||m(i);break;case"print":m==null||m(i);break;case"createTemplate":ge(!0),ae(""),j(""),m==null||m(i);break;case"createCopy":Ye(),m==null||m(i);break}};return n(g,{name:"ActionBar",slot:t==null?void 0:t.ActionBar,context:{quoteData:e,actionsBarDropdownValue:B},children:n(Ja,{dropdownPlaceholder:o.actionsLabel,dropdownOptions:[{label:o.remove,value:"remove"}],dropdownValue:B,handleDropdownChange:Ke,buttons:ta.map(i=>n(sa,{variant:"tertiary",onClick:()=>a(i.value),"data-testid":`actions-bar-${i.value}-button`,"data-action":i.value,disabled:i.disabled,children:i.label},i.value))})})},[ta,o,t==null?void 0:t.ActionBar,e,Ke,m,Ye,B]),Qa=f(()=>n(g,{name:"QuoteContent",slot:t==null?void 0:t.QuoteContent,context:{quoteData:e},children:n(Ya,{tabs:new Map([["items-quoted","Items Quoted"],["comments","Comments"],["history-log","History Log"]]),tabsContent:new Map([["items-quoted",n(g,{name:"ItemsQuotedTab",slot:t==null?void 0:t.ItemsQuotedTab,context:{quoteData:e},children:n(ft,{quoteData:e,onItemCheckboxChange:Ge,onRemoveItemsRef:a=>{Ne.current=a},onRemoveModalStateChange:a=>{!a&&ce.current==="remove"&&Se("")}})},"items-quoted")],["comments",n(g,{name:"CommentsTab",slot:t==null?void 0:t.CommentsTab,context:{quoteData:e},children:n(pt,{quoteData:e})},"comments")],["history-log",n(g,{name:"HistoryLogTab",slot:t==null?void 0:t.HistoryLogTab,context:{quoteData:e},children:n(it,{quoteData:e})},"history-log")]])})}),[t==null?void 0:t.QuoteContent,t==null?void 0:t.HistoryLogTab,t==null?void 0:t.CommentsTab,t==null?void 0:t.ItemsQuotedTab,e,Ge]),qa=f(()=>n(g,{name:"ShippingInformationTitle",slot:t==null?void 0:t.ShippingInformationTitle,context:{quoteData:e},children:n("h2",{children:o.shippingInformationTitle})}),[t==null?void 0:t.ShippingInformationTitle,e,o]),va=f(()=>{var a;return n(g,{name:"ShippingInformation",slot:t==null?void 0:t.ShippingInformation,context:{quoteData:e,loading:E,setLoading:k},children:n(ot,{shippingAddress:(a=e==null?void 0:e.shippingAddresses)==null?void 0:a[0],loading:E,"data-testid":"manage-quote-shipping-address"})})},[t==null?void 0:t.ShippingInformation,e,E,k]),Ta=f(()=>n(g,{name:"QuoteCommentsTitle",slot:t==null?void 0:t.QuoteCommentsTitle,context:{quoteData:e},children:n("h2",{children:o.quoteCommentsTitle})}),[t==null?void 0:t.QuoteCommentsTitle,o,e]),Ca=f(()=>n(g,{name:"QuoteComments",slot:t==null?void 0:t.QuoteComments,context:{quoteData:e},children:n(Ga,{name:"quoteComments",placeholder:o.quoteCommentsPlaceholder,rows:3,value:F,onInput:a=>{we(a.target.value)},disabled:!(e!=null&&e.canSendForReview)||Q})}),[t==null?void 0:t.QuoteComments,o,e,F,Q]),na=f(()=>!(e!=null&&e.canSendForReview),[e]),ya=f(()=>{const a=Q||na;return n(g,{name:"AttachFilesField",slot:t==null?void 0:t.AttachFilesField,context:{onFileChange:Qe,attachedFiles:b,fileUploadError:re,disabled:a},children:p("div",{className:"quote-management-manage-negotiable-quote__attach-files",...a?{"data-disabled":!0}:{},"aria-disabled":a,children:[n(Ka,{id:"manage-quote-attach-files",multiple:!0,onChange:i=>{const r=i.target,s=r==null?void 0:r.files,d=s?Array.from(s):[];d.length>0&&Qe(d)},icon:n(tt,{}),disabled:a,"data-testid":"manage-quote-attach-files",accept:N==null?void 0:N.join(","),children:o.attachFiles}),re&&n("div",{className:"quote-management-manage-negotiable-quote__file-error","data-testid":"file-upload-error",children:re})]})})},[t==null?void 0:t.AttachFilesField,Qe,Q,na,N,re,o,b]),_a=f(()=>{if(b.length)return n(g,{name:"AttachedFilesList",slot:t==null?void 0:t.AttachedFilesList,context:{files:b,onRemove:qe,disabled:Q},children:n(nt,{files:b,onRemove:qe,disabled:Q})})},[b,qe,Q,t==null?void 0:t.AttachedFilesList]),Ea=c(async()=>{if(e!=null&&e.uid){ue(!0),V(""),O("");try{await ct({quoteUids:[e.uid]})}catch(a){console.error("Failed to close quote:",a)}}},[e]),Da=c(()=>{de(!1),V(""),O("")},[]),Fa=c(async()=>{if(e!=null&&e.uid){Ue(!0),ae(""),j("");try{await st(e.uid),j(o.createTemplateSuccessMessage),setTimeout(()=>{ge(!1),j("")},2e3)}catch(a){console.error("Failed to create quote template:",a);const i=a instanceof Error?a.message:o.createTemplateErrorFallback;ae(i)}finally{Ue(!1)}}},[e,o.createTemplateSuccessMessage,o.createTemplateErrorFallback]),Ia=c(()=>{ge(!1),ae(""),j("")},[]),ve=c(async()=>{const a=b.filter(i=>i.status==="success");if(R){R({quoteData:e,comment:F.trim()||void 0,attachments:a.length?a:void 0});return}me(!0);try{await mt({quoteUid:e.uid,comment:F.trim()||void 0,attachments:a.length?a.map(i=>({key:i.key})):void 0})}catch(i){console.error("Failed to send quote for review:",i),me(!1)}},[e,R,F,b]),wa=f(()=>n(g,{name:"Footer",slot:t==null?void 0:t.Footer,context:{quoteData:e,comment:F,isSubmitting:Q,attachments:b,handleSendForReview:ve},children:n(sa,{variant:"primary",onClick:ve,"data-testid":"send-for-review-button",disabled:!(e!=null&&e.canSendForReview)||Q,children:o.sendForReview})}),[t==null?void 0:t.Footer,o,e,F,Q,b,ve]),xa=f(()=>Me?n(h,{type:"error",variant:"primary",icon:n(w,{color:"var(--color-error)"}),heading:o.renameErrorHeading,description:Me}):void 0,[Me,o.renameErrorHeading]),Ra=f(()=>be?n(h,{type:"success",variant:"primary",icon:n(J,{}),heading:o.renameSuccessHeading,description:be}):void 0,[be,o.renameSuccessHeading]),Te=c(a=>a.errors&&Array.isArray(a.errors)&&a.errors.length>0?a.errors[0].message||o.confirmationModalDeleteErrorFallback:(a==null?void 0:a.message)||o.confirmationModalDeleteErrorFallback,[o.confirmationModalDeleteErrorFallback]),La=c(()=>{Z(!1),$(null),ee(!1)},[]),ka=c(async()=>{if(e!=null&&e.uid){$(null),ee(!1);try{const{operationResults:a}=await dt(e.uid),i=a.find(r=>r.__typename==="DeleteNegotiableQuoteOperationFailure");if(i){const r=Te(i);$(r);return}ee(!0)}catch(a){const i=Te(a);$(i)}}},[e,Te]),Ha=c(()=>{$(null)},[]),Oa=c(()=>{ee(!1)},[]),oa=c(a=>(a==null?void 0:a.message)||o.confirmationModalDuplicateErrorFallback,[o.confirmationModalDuplicateErrorFallback]),Ua=c(()=>{se(!1),D(null),H(!1)},[]),Ba=c(async()=>{var a;if(e!=null&&e.uid){D(null),H(!1);try{const i=((a=e.items)==null?void 0:a.filter(q=>q.outOfStock))||[],s=(q=>{const I=q.slice(0,-8),T=crypto.randomUUID().slice(0,8);return I+T})(e.uid),d=i.length>0;d&&sessionStorage.setItem(`duplicate-outOfStock-warning-${s}`,"true"),await ut({quoteUid:e.uid,duplicatedQuoteUid:s,hasOutOfStockItems:d})}catch(i){const r=oa(i);D(r)}}},[e,oa]),Wa=c(()=>{D(null)},[]),za=c(()=>{H(!1)},[]),Pa=A?n(h,{type:"error",variant:"primary",icon:n(w,{}),heading:o.confirmationModalDeleteErrorHeading,description:A,onDismiss:Ha,"data-testid":"confirmation-modal-error-banner"}):null,ia=(ma?n(h,{type:"success",variant:"primary",icon:n(J,{}),heading:o.confirmationModalDeleteSuccessHeading,description:o.confirmationModalDeleteSuccessDescription,onDismiss:Oa,"data-testid":"confirmation-modal-success-banner"}):null)||Pa,$a=De?n(h,{type:"error",variant:"primary",icon:n(w,{}),heading:o.confirmationModalDuplicateErrorHeading,description:De,onDismiss:Wa,"data-testid":"confirmation-modal-duplicate-error-banner"}):null,ra=(da?n(h,{type:"success",variant:"primary",icon:n(J,{}),heading:o.confirmationModalDuplicateSuccessHeading,description:o.confirmationModalDuplicateSuccessDescription,onDismiss:za,"data-testid":"confirmation-modal-duplicate-success-banner"}):null)||$a,Va={...Y,loading:E,quoteName:Ma,quoteStatus:ba,banner:aa||ea?p(la,{children:[aa,ea]}):void 0,details:Na,actionBar:Sa,quoteContent:Qa,shippingInformationTitle:qa,shippingInformation:va,quoteCommentsTitle:Ta,quoteComments:Ca,attachFilesField:ya,attachedFilesList:_a,footer:wa};let Ce=null;Le?Ce=n(h,{type:"success",variant:"primary",icon:n(J,{}),heading:o.closeModalSuccessHeading,description:Le,"data-testid":"close-quote-success-banner"}):ke&&(Ce=n(h,{type:"error",variant:"primary",icon:n(w,{}),heading:o.confirmationModalDeleteErrorHeading,description:ke,"data-testid":"close-quote-error-banner"}));let ye=null;return Be?ye=n(h,{type:"success",variant:"primary",icon:n(J,{}),heading:o.createTemplateModalSuccessHeading,description:Be,"data-testid":"create-template-success-banner"}):We&&(ye=n(h,{type:"error",variant:"primary",icon:n(w,{}),heading:o.createTemplateModalErrorHeading,description:We,"data-testid":"create-template-error-banner"})),p(la,{children:[n(bt,{...Va}),ze&&W(n(Za,{open:ze,quoteName:te,renameReason:pe,quoteNameError:ua,errorBanner:xa,successBanner:Ra,onQuoteNameChange:fa,onRenameReasonChange:oe,onSave:pa,onClose:ga}),document.body),P&&W(n(X,{open:P,title:o.confirmationModalDeleteTitle,message:o.confirmationModalDeleteMessage,cancelLabel:o.confirmationModalCancel,confirmLabel:o.confirmationModalDeleteConfirm,onCancel:La,onConfirm:ka,showCloseButton:!ia,confirmationBanner:ia}),document.body),Ee&&W(n(X,{open:Ee,title:o.confirmationModalDuplicateTitle,message:o.confirmationModalDuplicateMessage,cancelLabel:o.confirmationModalCancel,confirmLabel:o.confirmationModalDuplicateConfirm,onCancel:Ua,onConfirm:Ba,showCloseButton:!ra,confirmationBanner:ra}),document.body),xe&&W(n(X,{open:xe,title:o.closeModalTitle,message:o.closeModalMessage,cancelLabel:o.closeModalCancel,confirmLabel:Re?o.closeModalConfirmLoading:o.closeModalConfirm,onCancel:Da,onConfirm:Re?void 0:Ea,showCloseButton:!0,confirmationBanner:Ce,"data-testid":"close-quote-confirmation-modal"}),document.body),He&&W(n(X,{open:He,title:o.createTemplateModalTitle,message:o.createTemplateModalMessage,cancelLabel:o.createTemplateModalCancel,confirmLabel:Oe?o.createTemplateModalConfirmLoading:o.createTemplateModalConfirm,onCancel:Ia,onConfirm:Oe?void 0:Fa,showCloseButton:!0,confirmationBanner:ye,"data-testid":"create-template-confirmation-modal"}),document.body),Ve&&W(n(X,{open:Ve,title:o.noItemsSelectedModalTitle,message:o.noItemsSelectedModalMessage,confirmLabel:o.noItemsSelectedModalConfirm,onConfirm:Xe,onClose:Xe,showCloseButton:!0,"data-testid":"no-items-selected-modal"}),document.body)]})};export{an as ManageNegotiableQuote,an as default};
|
|
4
4
|
//# sourceMappingURL=ManageNegotiableQuote.js.map
|