@dropins/storefront-quote-management 0.0.1-alpha5 → 0.0.1-alpha8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/graphql/NegotiableQuoteFragment.d.ts +1 -1
- package/api/graphql/SearchResultPageInfoFragment.d.ts +10 -0
- package/api/{getQuoteData/getQuoteData.d.ts → graphql/SortFieldsFragment.d.ts} +2 -2
- package/api/index.d.ts +1 -1
- package/api/initialize/initialize.d.ts +0 -1
- package/{components/ActionsBar/index.d.ts → api/negotiableQuotes/graphql/NegotiableQuotesQuery.d.ts} +2 -3
- package/api/{getQuoteData → negotiableQuotes}/index.d.ts +1 -1
- package/api/negotiableQuotes/negotiableQuotes.d.ts +39 -0
- package/api.js +4 -16
- package/api.js.map +1 -1
- package/chunks/NegotiableQuoteFragment.js +56 -0
- package/chunks/NegotiableQuoteFragment.js.map +1 -0
- package/chunks/negotiableQuotes.js +47 -0
- package/chunks/negotiableQuotes.js.map +1 -0
- package/chunks/requestNegotiableQuote.js +3 -111
- package/chunks/requestNegotiableQuote.js.map +1 -1
- package/components/QuotesListTable/QuotesListTable.d.ts +29 -0
- package/components/{TabbedContent → QuotesListTable}/index.d.ts +2 -2
- package/components/index.d.ts +1 -6
- package/containers/QuotesListTable/QuotesListTable.d.ts +72 -0
- package/{components/ItemsQuoted → containers/QuotesListTable}/index.d.ts +2 -2
- package/containers/QuotesListTable.d.ts +3 -0
- package/containers/QuotesListTable.js +4 -0
- package/containers/QuotesListTable.js.map +1 -0
- package/containers/RequestNegotiableQuoteForm.js +1 -1
- package/containers/RequestNegotiableQuoteForm.js.map +1 -1
- package/containers/index.d.ts +1 -2
- package/data/models/__fixtures__/negotiableQuotesListModel.d.ts +5 -0
- package/data/models/customer-model.d.ts +0 -1
- package/data/models/index.d.ts +1 -0
- package/data/models/negotiable-quote-model.d.ts +61 -27
- package/data/transforms/__fixtures__/negotiableQuoteData.d.ts +117 -94
- package/data/transforms/transform-quote.d.ts +4 -1
- package/i18n/en_US.json.d.ts +14 -55
- package/lib/state.d.ts +0 -1
- package/package.json +1 -1
- package/render.js +3 -4
- package/render.js.map +1 -1
- package/types/state.types.d.ts +0 -1
- package/api/getQuoteData/graphql/QuoteDataQuery.d.ts +0 -2
- package/chunks/RequestNegotiableQuoteForm.js +0 -4
- package/chunks/RequestNegotiableQuoteForm.js.map +0 -1
- package/components/ActionsBar/ActionsBar.d.ts +0 -14
- package/components/ItemsQuoted/ItemsQuoted.d.ts +0 -9
- package/components/ManageNegotiableQuote/ManageNegotiableQuote.d.ts +0 -18
- package/components/ManageNegotiableQuote/__fixtures__/ManageNegotiableQuoteProps.d.ts +0 -4
- package/components/ManageNegotiableQuote/index.d.ts +0 -11
- package/components/ProductListTable/ProductListTable.d.ts +0 -13
- package/components/ProductListTable/index.d.ts +0 -11
- package/components/QuotePricesSummary/QuotePricesSummary.d.ts +0 -16
- package/components/QuotePricesSummary/index.d.ts +0 -11
- package/components/TabbedContent/TabbedContent.d.ts +0 -10
- package/containers/ItemsQuoted/ItemsQuoted.d.ts +0 -25
- package/containers/ItemsQuoted/index.d.ts +0 -11
- package/containers/ItemsQuoted.d.ts +0 -3
- package/containers/ItemsQuoted.js +0 -4
- package/containers/ItemsQuoted.js.map +0 -1
- package/containers/ManageNegotiableQuote/ManageNegotiableQuote.d.ts +0 -48
- package/containers/ManageNegotiableQuote/index.d.ts +0 -11
- package/containers/ManageNegotiableQuote.d.ts +0 -3
- package/containers/ManageNegotiableQuote.js +0 -4
- package/containers/ManageNegotiableQuote.js.map +0 -1
- package/data/models/__fixtures__/negotiableQuoteModel.d.ts +0 -4
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ItemsQuoted.js","sources":["/@dropins/storefront-quote-management/src/components/ProductListTable/ProductListTable.tsx","/@dropins/storefront-quote-management/src/components/QuotePricesSummary/QuotePricesSummary.tsx","/@dropins/storefront-quote-management/src/components/ItemsQuoted/ItemsQuoted.tsx","/@dropins/storefront-quote-management/src/containers/ItemsQuoted/ItemsQuoted.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, h } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport { Table, Checkbox, Picker, Price, Button } from '@adobe-commerce/elsie/components';\nimport '@/quote-management/components/ProductListTable/ProductListTable.css';\nimport { NegotiableQuoteModel } from '@/quote-management/data/models/negotiable-quote-model';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport interface ProductListTableProps extends HTMLAttributes<HTMLDivElement | HTMLFormElement> {\n items: NegotiableQuoteModel['items'];\n canEdit: boolean;\n onItemCheckboxChange?: (item: NegotiableQuoteModel['items'][number], isSelected: boolean) => void;\n onItemDropdownChange?: (item: NegotiableQuoteModel['items'][number], action: string) => void;\n onUpdate?: (e: SubmitEvent) => void;\n}\n\nexport const ProductListTable: FunctionComponent<ProductListTableProps> = ({\n className,\n items,\n canEdit,\n onItemCheckboxChange,\n onItemDropdownChange,\n onUpdate,\n ...props\n}) => {\n\n const dictionary = useText({\n updateButton: 'NegotiableQuote.Manage.productListTable.submitButton',\n productNameHeader: 'NegotiableQuote.Manage.productListTable.headers.productName',\n skuHeader: 'NegotiableQuote.Manage.productListTable.headers.sku',\n priceHeader: 'NegotiableQuote.Manage.productListTable.headers.price',\n quantityHeader: 'NegotiableQuote.Manage.productListTable.headers.quantity',\n discountHeader: 'NegotiableQuote.Manage.productListTable.headers.discount',\n subtotalHeader: 'NegotiableQuote.Manage.productListTable.headers.subtotal',\n actionsHeader: 'NegotiableQuote.Manage.productListTable.headers.actions',\n editNoteToSeller: 'NegotiableQuote.Manage.productListTable.actions.editNoteToSeller',\n remove: 'NegotiableQuote.Manage.productListTable.actions.remove',\n });\n\n const columns = [\n {\n label: dictionary.productNameHeader,\n key: 'productName',\n },\n {\n label: dictionary.skuHeader,\n key: 'sku',\n },\n {\n label: dictionary.priceHeader,\n key: 'price',\n },\n {\n label: dictionary.quantityHeader,\n key: 'quantity',\n },\n {\n label: dictionary.discountHeader,\n key: 'discount',\n },\n {\n label: dictionary.subtotalHeader,\n key: 'subtotal',\n },\n ];\n\n if (canEdit) {\n columns.unshift({\n label: '',\n key: 'checkbox',\n });\n columns.push({\n label: dictionary.actionsHeader,\n key: 'actions',\n });\n }\n\n const handleItemCheckboxChange = (event: Event, item: NegotiableQuoteModel['items'][number]) => {\n const isSelected = (event.target as HTMLInputElement).checked;\n onItemCheckboxChange?.(item, isSelected);\n };\n\n const handleItemDropdownChange = (event: Event, item: NegotiableQuoteModel['items'][number]) => {\n const action = (event.target as HTMLSelectElement).value;\n onItemDropdownChange?.(item, action);\n };\n\n const handleUpdate = (event: SubmitEvent) => {\n event.preventDefault();\n onUpdate?.(event);\n };\n\n const discountElement = (amountOff: number, percentOff: number) => {\n return amountOff > 0 ?\n <div className=\"quote-management-product-list-table__discount-container\">\n <span className=\"quote-management-product-list-table__discount-percent\">{percentOff}%</span>\n <span className=\"quote-management-product-list-table__discount-price\">(<Price amount={amountOff} />)</span>\n </div>\n : undefined;\n };\n\n const rowData = items.map((item) => {\n return {\n checkbox: <Checkbox className=\"quote-management-product-list-table__checkbox\" name=\"itemSelected\" data-testid={`item-checkbox-${item.product.sku}`} onChange={(e) => handleItemCheckboxChange(e, item)} value={item.product.sku} />,\n productName: <span className=\"quote-management-product-list-table__product-name\">{item.product.name}</span>,\n sku: <span className=\"quote-management-product-list-table__sku\">{item.product.sku}</span>,\n price: <Price className=\"quote-management-product-list-table__price\" amount={item.prices.originalItemPrice.value} currency={item.prices.originalItemPrice.currency} />,\n quantity: <span className=\"quote-management-product-list-table__quantity\">{item.quantity}</span>,\n discount: discountElement(item.catalogDiscount.amountOff, item.catalogDiscount.percentOff),\n subtotal: <Price className=\"quote-management-product-list-table__subtotal\" amount={item.prices.rowTotal.value} currency={item.prices.rowTotal.currency} />,\n actions: <Picker\n className=\"quote-management-product-list-table__actions\"\n data-testid={`item-dropdown-${item.product.sku}`}\n name=\"item-dropdown\"\n onChange={(e) => handleItemDropdownChange(e, item)}\n placeholder=\"Select\"\n options={[{ text: dictionary.editNoteToSeller, value: 'edit' }, { text: dictionary.remove, value: 'remove' }]}\n value={item.product.sku}\n />,\n }\n });\n\n const table = <Table columns={columns} rowData={rowData} data-testid=\"product-list-table\" mobileLayout='stacked' />\n\n // if can edit, the wrapper node should use the form element, else use the div element\n const wrapperNode = canEdit ? h('form', {}) : h('div', {});\n const wrapperProps = canEdit ? {\n onSubmit: handleUpdate,\n ...props,\n } : props;\n\n const submitButton = canEdit ? <Button type=\"submit\" data-testid=\"product-list-table-submit-button\">{dictionary.updateButton}</Button> : undefined;\n\n return (\n <VComponent\n node={wrapperNode}\n className={classes(['quote-management-product-list-table-container', className])}\n data-testid=\"product-list-table-container\"\n {...wrapperProps}\n >\n {table}\n <div className=\"quote-management-product-list-table-container__submit-container\">\n {submitButton}\n </div>\n </VComponent>\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 '@/quote-management/components/QuotePricesSummary/QuotePricesSummary.css';\nimport { Accordion, AccordionSection } from '@adobe-commerce/elsie/components';\n\ninterface Entry {\n label: string;\n id: string;\n value: VNode;\n strong?: boolean;\n children?: Entry[];\n}\n\nexport interface QuotePricesSummaryProps extends HTMLAttributes<HTMLDivElement> {\n entries?: Entry[];\n}\n\nexport const QuotePricesSummary: FunctionComponent<QuotePricesSummaryProps> = ({\n className,\n entries,\n ...props\n}) => {\n const createEntry = (entry: Entry) => {\n const children = entry.children?.map(createEntry);\n return (\n <div key={entry.id} className=\"quote-management-quote-prices-summary__entry\" data-testid={`quote-prices-summary-entry-${entry.id}`}>\n {children ? <Accordion\n className=\"quote-management-quote-prices-summary__accordion\"\n data-testid={`quote-prices-summary-entry-accordion-${entry.id}`}\n >\n <AccordionSection className=\"quote-management-quote-prices-summary__accordion-section\" title={entry.label} ariaLabelTitle={entry.label} secondaryText={entry.value}>\n {children}\n </AccordionSection>\n </Accordion>\n :\n <>\n <span className={classes(['quote-management-quote-prices-summary__label', ['quote-management-quote-prices-summary__label--strong', entry.strong]])} data-testid={`quote-prices-summary-entry-label-${entry.id}`}>{entry.label}</span>\n <span className=\"quote-management-quote-prices-summary__value\" data-testid={`quote-prices-summary-entry-value-${entry.id}`}>{entry.value}</span>\n </>\n }\n </div>\n );\n };\n\n return (\n <div className={classes(['quote-management-quote-prices-summary', className])} data-testid=\"quote-prices-summary\" {...props}>\n {entries?.map(createEntry)}\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/ItemsQuoted/ItemsQuoted.css';\n\nexport interface ItemsQuotedProps extends HTMLAttributes<HTMLDivElement> {\n table?: VNode;\n pricesSummary?: VNode;\n}\n\nexport const ItemsQuoted: FunctionComponent<ItemsQuotedProps> = ({\n className,\n table,\n pricesSummary,\n ...props\n}) => {\n return (\n <div className={classes(['quote-management-items-quoted', className])} {...props}>\n {table && (\n <VComponent\n node={table}\n className={classes(['quote-management-items-quoted__table'])}\n data-testid=\"quote-management-items-quoted__table\"\n />\n )}\n {pricesSummary && (\n <VComponent\n node={pricesSummary}\n className={classes(['quote-management-items-quoted__prices-summary'])}\n data-testid=\"quote-management-items-quoted__prices-summary\"\n />\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 { HTMLAttributes, useEffect, useState } from 'preact/compat';\nimport { Container, Slot, SlotProps } from '@adobe-commerce/elsie/lib';\nimport { ProductListTable } from '@/quote-management/components/ProductListTable/ProductListTable';\nimport { NegotiableQuoteModel } from '@/quote-management/data/models/negotiable-quote-model';\nimport { events } from '@adobe-commerce/event-bus';\nimport { QuotePricesSummary } from '@/quote-management/components/QuotePricesSummary';\nimport { ItemsQuoted as ItemsQuotedComponent } from '@/quote-management/components/ItemsQuoted';\nimport { Price } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport interface ItemsQuotedProps extends HTMLAttributes<HTMLDivElement> {\n quoteData?: NegotiableQuoteModel;\n onItemCheckboxChange?: (item: NegotiableQuoteModel['items'][number], isSelected: boolean) => void;\n onItemDropdownChange?: (item: NegotiableQuoteModel['items'][number], action: string) => void;\n onUpdate?: (e: SubmitEvent) => void;\n slots?: {\n ProductListTable?: SlotProps<{\n items: NegotiableQuoteModel['items'];\n canEdit: boolean;\n onItemCheckboxChange?: (item: NegotiableQuoteModel['items'][number], isSelected: boolean) => void;\n onItemDropdownChange?: (item: NegotiableQuoteModel['items'][number], action: string) => void;\n onUpdate?: (e: SubmitEvent) => void;\n }>;\n QuotePricesSummary?: SlotProps<{\n items: NegotiableQuoteModel['items'];\n prices: NegotiableQuoteModel['prices'];\n }>;\n }\n}\n\nexport const ItemsQuoted: Container<ItemsQuotedProps> = ({\n quoteData: initialData,\n onItemCheckboxChange,\n onItemDropdownChange,\n onUpdate,\n slots,\n ...props\n}) => {\n const [quoteData, setQuoteData] = useState<NegotiableQuoteModel | undefined>(initialData);\n\n const dictionary = useText({\n subtotal: 'NegotiableQuote.Manage.quotePricesSummary.subtotal.excludingTax',\n grandTotal: 'NegotiableQuote.Manage.quotePricesSummary.grandTotal.includingTax',\n appliedTaxes: 'NegotiableQuote.Manage.quotePricesSummary.appliedTaxes',\n });\n\n useEffect(() => {\n const quoteDataEvent = events.on('quote-management/quote-data', (data: { quote: NegotiableQuoteModel }) => {\n setQuoteData(data.quote);\n }, {\n eager: true,\n });\n return () => quoteDataEvent?.off();\n }, [quoteData]);\n\n\n if (!quoteData) {\n return <div>Loading...</div>;\n }\n\n const quotePricesSummaryEntries = [\n {\n label: dictionary.subtotal,\n id: 'subtotal',\n value: <Price amount={quoteData.prices.subtotalExcludingTax.value} currency={quoteData.prices.subtotalExcludingTax.currency} weight='normal' />,\n },\n {\n label: dictionary.grandTotal,\n id: 'total',\n value: <Price amount={quoteData.prices.grandTotal.value} currency={quoteData.prices.grandTotal.currency} />,\n strong: true,\n },\n ];\n\n return (\n <ItemsQuotedComponent data-testid=\"items-quoted-container\" {...props}\n table={<Slot name=\"ProductListTable\" slot={slots?.ProductListTable}\n context={{\n items: quoteData.items,\n canEdit: true,\n onItemCheckboxChange,\n onItemDropdownChange,\n onUpdate\n }}>\n <ProductListTable\n items={quoteData.items}\n canEdit={true}\n onItemCheckboxChange={onItemCheckboxChange}\n onItemDropdownChange={onItemDropdownChange}\n onUpdate={onUpdate}\n />\n </Slot>}\n pricesSummary={<Slot name=\"QuotePricesSummary\" slot={slots?.QuotePricesSummary} context={{\n items: quoteData.items,\n prices: quoteData.prices,\n }}>\n <QuotePricesSummary entries={quotePricesSummaryEntries} />\n </Slot>\n }\n />\n );\n};"],"names":["ProductListTable","className","items","canEdit","onItemCheckboxChange","onItemDropdownChange","onUpdate","props","dictionary","useText","columns","handleItemCheckboxChange","event","item","isSelected","handleItemDropdownChange","action","handleUpdate","discountElement","amountOff","percentOff","jsxs","jsx","Price","rowData","Checkbox","e","Picker","table","Table","wrapperNode","wrapperProps","submitButton","Button","VComponent","classes","QuotePricesSummary","entries","createEntry","entry","children","_a","Accordion","AccordionSection","Fragment","ItemsQuoted","pricesSummary","initialData","slots","quoteData","setQuoteData","useState","useEffect","quoteDataEvent","events","data","quotePricesSummaryEntries","ItemsQuotedComponent","Slot"],"mappings":"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"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { HTMLAttributes } from 'preact/compat';
|
|
2
|
-
import { Container, SlotProps } from '@dropins/tools/types/elsie/src/lib';
|
|
3
|
-
import { NegotiableQuoteModel } from '../../data/models/negotiable-quote-model';
|
|
4
|
-
|
|
5
|
-
export interface ManageNegotiableQuoteProps extends HTMLAttributes<HTMLDivElement> {
|
|
6
|
-
onActionsDropdownChange?: (event: Event) => void;
|
|
7
|
-
onActionsButtonClick?: (action: string) => void;
|
|
8
|
-
onSendForReview?: (quoteData: NegotiableQuoteModel) => void;
|
|
9
|
-
slots?: {
|
|
10
|
-
QuoteName?: SlotProps<{
|
|
11
|
-
quoteName?: string;
|
|
12
|
-
quoteData?: NegotiableQuoteModel;
|
|
13
|
-
}>;
|
|
14
|
-
QuoteStatus?: SlotProps<{
|
|
15
|
-
quoteStatus?: string;
|
|
16
|
-
quoteData?: NegotiableQuoteModel;
|
|
17
|
-
}>;
|
|
18
|
-
Banner?: SlotProps<{
|
|
19
|
-
quoteData?: NegotiableQuoteModel;
|
|
20
|
-
}>;
|
|
21
|
-
Details?: SlotProps<{
|
|
22
|
-
quoteData?: NegotiableQuoteModel;
|
|
23
|
-
}>;
|
|
24
|
-
ActionBar?: SlotProps<{
|
|
25
|
-
quoteData?: NegotiableQuoteModel;
|
|
26
|
-
}>;
|
|
27
|
-
QuoteContent?: SlotProps<{
|
|
28
|
-
quoteData?: NegotiableQuoteModel;
|
|
29
|
-
}>;
|
|
30
|
-
ShippingInformationTitle?: SlotProps<{
|
|
31
|
-
quoteData?: NegotiableQuoteModel;
|
|
32
|
-
}>;
|
|
33
|
-
ShippingInformation?: SlotProps<{
|
|
34
|
-
quoteData?: NegotiableQuoteModel;
|
|
35
|
-
}>;
|
|
36
|
-
QuoteCommentsTitle?: SlotProps<{
|
|
37
|
-
quoteData?: NegotiableQuoteModel;
|
|
38
|
-
}>;
|
|
39
|
-
QuoteComments?: SlotProps<{
|
|
40
|
-
quoteData?: NegotiableQuoteModel;
|
|
41
|
-
}>;
|
|
42
|
-
Footer?: SlotProps<{
|
|
43
|
-
quoteData?: NegotiableQuoteModel;
|
|
44
|
-
}>;
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
export declare const ManageNegotiableQuote: Container<ManageNegotiableQuoteProps>;
|
|
48
|
-
//# sourceMappingURL=ManageNegotiableQuote.d.ts.map
|
|
@@ -1,11 +0,0 @@
|
|
|
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 './ManageNegotiableQuote';
|
|
10
|
-
export { ManageNegotiableQuote as default } from './ManageNegotiableQuote';
|
|
11
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*! Copyright 2025 Adobe
|
|
2
|
-
All Rights Reserved. */
|
|
3
|
-
import{jsxs as u,jsx as t}from"@dropins/tools/preact-jsx-runtime.js";import{useState as T,useEffect as G,useMemo as d,useCallback as $}from"@dropins/tools/preact-compat.js";import{classes as i,VComponent as o,Slot as g,getGlobalLocale as U}from"@dropins/tools/lib.js";import{events as V}from"@dropins/tools/event-bus.js";import{S as W}from"../chunks/RequestNegotiableQuoteForm.js";import"@dropins/tools/preact.js";import{InLineAlert as X,Button as L,TextArea as z}from"@dropins/tools/components.js";/* empty css */import{useText as H}from"@dropins/tools/i18n.js";const J=({className:h,quoteName:e,quoteStatus:m,banner:b,details:l,actionBar:a,quoteContent:q,shippingInformationTitle:N,shippingInformation:c,quoteCommentsTitle:n,quoteComments:v,footer:Q,...f})=>u("div",{...f,className:i(["quote-management-manage-negotiable-quote",h]),children:[u("div",{className:i(["quote-management-manage-negotiable-quote__header"]),children:[e&&t(o,{node:e,className:i(["quote-management-manage-negotiable-quote__quote-name"])}),m&&t(o,{node:m,className:i(["quote-management-manage-negotiable-quote__quote-status"])})]}),b&&t(o,{node:b,className:i(["quote-management-manage-negotiable-quote__banner"])}),l&&t(o,{node:l,className:i(["quote-management-manage-negotiable-quote__details"])}),a&&t(o,{node:a,className:i(["quote-management-manage-negotiable-quote__action-bar"])}),q&&t(o,{node:q,className:i(["quote-management-manage-negotiable-quote__quote-content"])}),u("div",{"data-testid":"quote-shipping-information-container",className:i(["quote-management-manage-negotiable-quote__shipping-information-container"]),children:[N&&t(o,{node:N,className:i(["quote-management-manage-negotiable-quote__shipping-information-title"])}),c&&t(o,{node:c,className:i(["quote-management-manage-negotiable-quote__shipping-information"])})]}),u("div",{"data-testid":"quote-comments-container",className:i(["quote-management-manage-negotiable-quote__quote-comments-container"]),children:[n&&t(o,{node:n,className:i(["quote-management-manage-negotiable-quote__quote-comments-title"])}),v&&t(o,{node:v,className:i(["quote-management-manage-negotiable-quote__quote-comments"])})]}),t(o,{node:Q,className:i(["quote-management-manage-negotiable-quote__footer"])})]}),K=({className:h,dropdownPlaceholder:e,dropdownOptions:m,handleDropdownChange:b,buttons:l,...a})=>{const q=m&&m.length>0,N=l&&l.length>0;return t("div",{className:"quote-management-actions-bar__container","data-testid":"actions-bar-container",children:u("div",{className:i(["quote-management-actions-bar",h]),"data-testid":"actions-bar",...a,children:[q&&u("select",{name:"dropdown",id:"dropdown",onInput:b,className:"quote-management-actions-bar__dropdown","data-testid":"dropdown",children:[t("option",{value:"",children:e}),m==null?void 0:m.map(c=>t("option",{value:c.value,children:c.label},c.value))]}),N&&t("div",{className:"quote-management-actions-bar__buttons","data-testid":"buttons-container",children:l==null?void 0:l.map((c,n)=>t(o,{node:c,className:i(["quote-management-actions-bar__button"])},n))})]})})},te=({onActionsDropdownChange:h,slots:e,onActionsButtonClick:m,onSendForReview:b,...l})=>{const[a,q]=T(void 0),[N,c]=T(!0),n=H({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",statusPending:"NegotiableQuote.Manage.bannerStatusMessages.pending",statusExpired:"NegotiableQuote.Manage.bannerStatusMessages.expired"});G(()=>{const p=V.on("quote-management/quote-data",_=>{const{quote:r}=_;r&&(q(r),c(!1))},{eager:!0});return()=>p==null?void 0:p.off()},[]);const v=d(()=>t(g,{name:"QuoteName",slot:e==null?void 0:e.QuoteName,context:{quoteName:a==null?void 0:a.name,quoteData:a},children:t("h1",{"data-testid":"quote-name",children:a==null?void 0:a.name})}),[e==null?void 0:e.QuoteName,a]),Q=d(()=>t(g,{name:"QuoteStatus",slot:e==null?void 0:e.QuoteStatus,context:{quoteStatus:a==null?void 0:a.status,quoteData:a},children:t("div",{"data-testid":"quote-status",children:a==null?void 0:a.status})}),[e==null?void 0:e.QuoteStatus,a]),s=$(p=>{switch(p){case"PENDING":return n.statusPending;case"EXPIRED":return n.statusExpired;default:return null}},[n])(a==null?void 0:a.status),M=s&&t(X,{type:"warning",variant:"secondary",icon:t(W,{}),heading:n.bannerTitle,description:s}),S=M&&t(g,{name:"Banner","data-testid":"banner",slot:e==null?void 0:e.Banner,context:{quoteData:a},children:M}),y=d(()=>{if(!a)return null;const p=U()||"en-US",_=new Intl.DateTimeFormat(p,{year:"numeric",month:"long",day:"numeric"});return u(g,{name:"Details",slot:e==null?void 0:e.Details,context:{quoteData:a},children:[u("div",{className:"quote-management-manage-negotiable-quote__detail",children:[t("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"created-label",children:n.createdLabel}),u("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"created-value",children:[_.format(new Date(a.createdAt))," (",a.buyer.firstname," ",a.buyer.lastname,")"]})]}),u("div",{className:"quote-management-manage-negotiable-quote__detail",children:[t("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"sales-rep-label",children:n.salesRepLabel}),t("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"sales-rep-value",children:"TBD"})]}),u("div",{className:"quote-management-manage-negotiable-quote__detail",children:[t("span",{className:"quote-management-manage-negotiable-quote__detail-title","data-testid":"expires-label",children:n.expiresLabel}),t("span",{className:"quote-management-manage-negotiable-quote__detail-content","data-testid":"expires-value",children:"TBD"})]})]})},[e==null?void 0:e.Details,n,a]),x=d(()=>[{label:n.close,value:"close"},{label:n.delete,value:"delete"},{label:n.print,value:"print"},{label:n.createTemplate,value:"createTemplate"},{label:n.createCopy,value:"createCopy"}],[n]),I=d(()=>{const p=r=>{h==null||h(r)},_=r=>{switch(r){case"close":m==null||m(r);break;case"delete":m==null||m(r);break;case"print":m==null||m(r);break;case"createTemplate":m==null||m(r);break;case"createCopy":m==null||m(r);break}};return t(g,{name:"ActionBar",slot:e==null?void 0:e.ActionBar,context:{quoteData:a},children:t(K,{dropdownPlaceholder:n.actionsLabel,dropdownOptions:[{label:n.remove,value:"remove"}],handleDropdownChange:p,buttons:x.map(r=>t(L,{variant:"tertiary",onClick:()=>_(r.value),"data-testid":`actions-bar-${r.value}-button`,"data-action":r.value,disabled:r.disabled,children:r.label},r.value))})})},[x,n,e==null?void 0:e.ActionBar,a,h,m]),P=d(()=>t(g,{name:"QuoteContent",slot:e==null?void 0:e.QuoteContent,context:{quoteData:a}}),[e==null?void 0:e.QuoteContent,a]),E=d(()=>t(g,{name:"ShippingInformationTitle",slot:e==null?void 0:e.ShippingInformationTitle,context:{quoteData:a},children:t("h2",{children:n.shippingInformationTitle})}),[e==null?void 0:e.ShippingInformationTitle,a,n]),F=d(()=>t(g,{name:"ShippingInformation",slot:e==null?void 0:e.ShippingInformation,context:{quoteData:a},children:t("div",{children:"TBD"})}),[e==null?void 0:e.ShippingInformation,a]),w=d(()=>t(g,{name:"QuoteCommentsTitle",slot:e==null?void 0:e.QuoteCommentsTitle,context:{quoteData:a},children:t("h2",{children:n.quoteCommentsTitle})}),[e==null?void 0:e.QuoteCommentsTitle,n,a]),R=d(()=>t(g,{name:"QuoteComments",slot:e==null?void 0:e.QuoteComments,context:{quoteData:a},children:t(z,{name:"quoteComments",placeholder:n.quoteCommentsPlaceholder,rows:3})}),[e==null?void 0:e.QuoteComments,n,a]),j=d(()=>t(g,{name:"Footer",slot:e==null?void 0:e.Footer,context:{quoteData:a},children:t(L,{variant:"primary",onClick:()=>b==null?void 0:b(a),"data-testid":"send-for-review-button",disabled:!(a!=null&&a.canSendForReview),children:n.sendForReview})}),[e==null?void 0:e.Footer,n,a,b]);return N?t("div",{children:"Loading..."}):t(J,{...{quoteName:v,quoteStatus:Q,banner:S||void 0,details:y,actionBar:I,quoteContent:P,shippingInformationTitle:E,shippingInformation:F,quoteCommentsTitle:w,quoteComments:R,footer:j},...l})};export{te as ManageNegotiableQuote,te as default};
|
|
4
|
-
//# sourceMappingURL=ManageNegotiableQuote.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ManageNegotiableQuote.js","sources":["/@dropins/storefront-quote-management/src/components/ManageNegotiableQuote/ManageNegotiableQuote.tsx","/@dropins/storefront-quote-management/src/components/ActionsBar/ActionsBar.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/ManageNegotiableQuote/ManageNegotiableQuote.css';\n\nexport interface ManageNegotiableQuoteProps extends HTMLAttributes<HTMLDivElement> {\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 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 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","/********************************************************************\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';\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 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 <select name=\"dropdown\" id=\"dropdown\" onInput={handleDropdownChange} className=\"quote-management-actions-bar__dropdown\" data-testid=\"dropdown\">\n <option value=\"\">{dropdownPlaceholder}</option>\n {dropdownOptions?.map((option) => (\n <option key={option.value} value={option.value}>{option.label}</option>\n ))}\n </select>\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 { HTMLAttributes, useCallback, useEffect, useMemo, useState } from 'preact/compat';\nimport { Container, getGlobalLocale, Slot, SlotProps } from '@adobe-commerce/elsie/lib';\nimport { NegotiableQuoteModel } from '@/quote-management/data/models/negotiable-quote-model';\nimport { ManageNegotiableQuote as ManageNegotiableQuoteComponent, ManageNegotiableQuoteProps as ManageNegotiableQuoteComponentProps } from '@/quote-management/components/ManageNegotiableQuote';\nimport { events } from '@adobe-commerce/event-bus';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { ActionsBar } from '@/quote-management/components';\nimport { Button, InLineAlert, TextArea } from '@adobe-commerce/elsie/components';\nimport { WarningFilled } from '@adobe-commerce/elsie/icons';\n\nexport interface ManageNegotiableQuoteProps extends HTMLAttributes<HTMLDivElement> {\n onActionsDropdownChange?: (event: Event) => void;\n onActionsButtonClick?: (action: string) => void;\n onSendForReview?: (quoteData: NegotiableQuoteModel) => 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 ShippingInformationTitle?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n ShippingInformation?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n QuoteCommentsTitle?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n QuoteComments?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\n }>;\n Footer?: SlotProps<{\n quoteData?: NegotiableQuoteModel;\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>(undefined)\n const [loading, setLoading] = useState<boolean>(true)\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: 'NegotiableQuote.Manage.shippingInformation.title',\n quoteCommentsTitle: 'NegotiableQuote.Manage.quoteComments.title',\n quoteCommentsPlaceholder: 'NegotiableQuote.Manage.quoteComments.placeholder',\n sendForReview: 'NegotiableQuote.Manage.actionButtons.sendForReview',\n bannerTitle: 'NegotiableQuote.Manage.bannerTitle',\n statusPending: 'NegotiableQuote.Manage.bannerStatusMessages.pending',\n statusExpired: 'NegotiableQuote.Manage.bannerStatusMessages.expired',\n });\n /* Event listeners */\n useEffect(() => {\n const quoteDataEvent = events.on('quote-management/quote-data', (data: { quote: NegotiableQuoteModel }) => {\n const { quote } = data;\n if (quote) {\n setQuoteData(quote);\n setLoading(false);\n }\n }, {\n eager: true,\n });\n return () => quoteDataEvent?.off();\n }, []);\n\n /**\n * VNodes for the ManageNegotiableQuote component\n */\n\n // Quote name\n const quoteName = useMemo(() => {\n return <Slot name=\"QuoteName\" slot={slots?.QuoteName} context={{ quoteName: quoteData?.name, quoteData }}>\n <h1 data-testid=\"quote-name\">{quoteData?.name}</h1>\n </Slot>;\n }, [slots?.QuoteName, quoteData]);\n\n // Quote status\n const quoteStatus = useMemo(() => {\n return <Slot name=\"QuoteStatus\" slot={slots?.QuoteStatus} context={{ quoteStatus: quoteData?.status, quoteData }}>\n <div data-testid=\"quote-status\">{quoteData?.status}</div>\n </Slot>;\n }, [slots?.QuoteStatus, quoteData]);\n\n // Banner\n const getBannerStatusMessage = useCallback((status: string | undefined) => {\n switch (status) {\n case 'PENDING':\n return dictionary.statusPending;\n case 'EXPIRED':\n return dictionary.statusExpired;\n default:\n return null;\n }\n }, [dictionary]);\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 const banner = bannerContent && <Slot name=\"Banner\" data-testid=\"banner\" slot={slots?.Banner} context={{ quoteData }}>\n {bannerContent}\n </Slot>;\n\n // Details\n const details = useMemo(() => {\n\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 return <Slot name=\"Details\" slot={slots?.Details} context={{ quoteData }}>\n <div className=\"quote-management-manage-negotiable-quote__detail\">\n <span className=\"quote-management-manage-negotiable-quote__detail-title\" data-testid=\"created-label\">\n {dictionary.createdLabel}\n </span>\n <span className=\"quote-management-manage-negotiable-quote__detail-content\" data-testid=\"created-value\">\n {dateFormatter.format(new Date(quoteData!.createdAt))} ({quoteData!.buyer.firstname} {quoteData!.buyer.lastname})\n </span>\n </div>\n <div className=\"quote-management-manage-negotiable-quote__detail\">\n <span className=\"quote-management-manage-negotiable-quote__detail-title\" data-testid=\"sales-rep-label\">\n {dictionary.salesRepLabel}\n </span>\n <span className=\"quote-management-manage-negotiable-quote__detail-content\" data-testid=\"sales-rep-value\">\n TBD\n </span>\n </div>\n <div className=\"quote-management-manage-negotiable-quote__detail\">\n <span className=\"quote-management-manage-negotiable-quote__detail-title\" data-testid=\"expires-label\">\n {dictionary.expiresLabel}\n </span>\n <span className=\"quote-management-manage-negotiable-quote__detail-content\" data-testid=\"expires-value\">\n TBD\n </span>\n </div>\n </Slot>;\n }, [slots?.Details, dictionary, quoteData]);\n\n // Action bar\n const buttons: { label: string; value: string; disabled?: boolean }[] = useMemo(() => [\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 ], [dictionary]);\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 <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={\n 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 />\n </Slot>;\n }, [buttons, dictionary, slots?.ActionBar, quoteData, onActionsDropdownChange, onActionsButtonClick]);\n\n // Quote content\n const quoteContent = useMemo(() => {\n return <Slot name=\"QuoteContent\" slot={slots?.QuoteContent} context={{ quoteData }} />\n }, [slots?.QuoteContent, quoteData]);\n\n // Shipping information title\n const shippingInformationTitle = useMemo(() => {\n return <Slot name=\"ShippingInformationTitle\" slot={slots?.ShippingInformationTitle} context={{ quoteData }}>\n <h2>{dictionary.shippingInformationTitle}</h2>\n </Slot>;\n }, [slots?.ShippingInformationTitle, quoteData, dictionary]);\n\n // Shipping information\n const shippingInformation = useMemo(() => {\n return <Slot name=\"ShippingInformation\" slot={slots?.ShippingInformation} context={{ quoteData }}>\n <div>TBD</div>\n </Slot>;\n }, [slots?.ShippingInformation, quoteData]);\n\n // Quote comments title\n const quoteCommentsTitle = useMemo(() => {\n return <Slot name=\"QuoteCommentsTitle\" slot={slots?.QuoteCommentsTitle} context={{ quoteData }}>\n <h2>{dictionary.quoteCommentsTitle}</h2>\n </Slot>;\n }, [slots?.QuoteCommentsTitle, dictionary, quoteData]);\n\n // Quote comments\n const quoteComments = useMemo(() => {\n return <Slot name=\"QuoteComments\" slot={slots?.QuoteComments} context={{ quoteData }}>\n <TextArea\n name=\"quoteComments\"\n placeholder={dictionary.quoteCommentsPlaceholder}\n rows={3}\n />\n </Slot>;\n }, [slots?.QuoteComments, dictionary, quoteData]);\n\n // Footer\n const footer = useMemo(() => {\n return <Slot name=\"Footer\" slot={slots?.Footer} context={{ quoteData }}>\n <Button variant=\"primary\"\n onClick={() => onSendForReview?.(quoteData as NegotiableQuoteModel)}\n data-testid=\"send-for-review-button\"\n disabled={!quoteData?.canSendForReview}\n >{dictionary.sendForReview}</Button>\n </Slot>;\n }, [slots?.Footer, dictionary, quoteData, onSendForReview]);\n\n /* Loading */\n if (loading) {\n return <div>Loading...</div>;\n }\n\n const manageNegotiableQuoteProps: ManageNegotiableQuoteComponentProps = {\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 <ManageNegotiableQuoteComponent\n {...manageNegotiableQuoteProps}\n {...props}\n />\n );\n};"],"names":["ManageNegotiableQuote","className","quoteName","quoteStatus","banner","details","actionBar","quoteContent","shippingInformationTitle","shippingInformation","quoteCommentsTitle","quoteComments","footer","props","jsxs","classes","jsx","VComponent","ActionsBar","dropdownPlaceholder","dropdownOptions","handleDropdownChange","buttons","hasDropdown","hasButtons","option","button","index","onActionsDropdownChange","slots","onActionsButtonClick","onSendForReview","quoteData","setQuoteData","useState","loading","setLoading","dictionary","useText","useEffect","quoteDataEvent","events","data","quote","useMemo","Slot","bannerMessage","useCallback","status","bannerContent","InLineAlert","WarningFilled","calculatedLocale","getGlobalLocale","dateFormatter","handleActionsDropdownChange","event","handleActionsButtonClick","action","Button","TextArea","ManageNegotiableQuoteComponent"],"mappings":"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"}
|