@dropins/storefront-quote-management 0.0.1-alpha36 → 0.0.1-alpha37
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.
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsxs as
|
|
3
|
+
import{jsxs as m,jsx as t,Fragment as ie}from"@dropins/tools/preact-jsx-runtime.js";import{useState as d,useEffect as ce,createPortal as le}from"@dropins/tools/preact-compat.js";import{classes as se,Slot as s}from"@dropins/tools/lib.js";import{Table as de,IllustratedMessage as ue,Picker as ge,Pagination as me,InLineAlert as R,Icon as A,Button as j,Price as pe}from"@dropins/tools/components.js";import{events as Qe}from"@dropins/tools/event-bus.js";/* empty css */import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";import{f as D}from"../chunks/dateUtils.js";import{useText as $}from"@dropins/tools/i18n.js";import{C as he}from"../chunks/ConfirmationModal.js";/* empty css *//* empty css */import{g as W}from"../chunks/transform-quote.js";import"../chunks/state.js";import{g as fe}from"../chunks/getQuoteTemplates.js";import{g as Me}from"../chunks/generateQuoteFromTemplate.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/transform-quote-template.js";const be=({rowData:p=[],loading:Q=!1,className:x,emptyStateMessage:S,showItemRange:z=!0,itemRangeMessage:u,showPageSizePicker:h=!0,pageSizePickerMessage:g,showPagination:i=!0,paginationMessage:P,...l})=>{const o=$({name:"QuoteManagement.QuoteTemplatesListTable.name",state:"QuoteManagement.QuoteTemplatesListTable.state",status:"QuoteManagement.QuoteTemplatesListTable.status",validUntil:"QuoteManagement.QuoteTemplatesListTable.validUntil",minQuoteTotal:"QuoteManagement.QuoteTemplatesListTable.minQuoteTotal",ordersPlaced:"QuoteManagement.QuoteTemplatesListTable.ordersPlaced",lastOrdered:"QuoteManagement.QuoteTemplatesListTable.lastOrdered",actions:"QuoteManagement.QuoteTemplatesListTable.actions"}),y=[{key:"name",label:o.name},{key:"state",label:o.state},{key:"status",label:o.status},{key:"validUntil",label:o.validUntil},{key:"minQuoteTotal",label:o.minQuoteTotal},{key:"ordersPlaced",label:o.ordersPlaced},{key:"lastOrdered",label:o.lastOrdered},{key:"actions",label:o.actions}],q=Q||p.length>0,f=!Q&&p.length===0&&S,M=z&&u,b=h&&g,T=i&&P,v=M||b||T;return m("div",{...l,className:se(["quote-management-quote-templates-list-table",x]),children:[q&&t(de,{columns:y,rowData:p,loading:Q,mobileLayout:"none",className:"quote-management-quote-templates-list-table__table"}),f&&t("div",{className:"quote-templates-list-table__empty-state",children:S}),v&&m("div",{className:"quote-templates-list-table__footer",children:[t("div",{className:"quote-templates-list-table__item-range",children:M&&u}),t("div",{className:"quote-templates-list-table__pagination",children:T&&P}),t("div",{className:"quote-templates-list-table__page-size-picker",children:b&&g})]})]})},Ue=({pageSize:p,showItemRange:Q=!0,showPageSizePicker:x=!0,showPagination:S=!0,onViewQuoteTemplate:z,onGenerateQuoteFromTemplate:u,onPageSizeChange:h,onPageChange:g,slots:i,...P})=>{const l=$({view:"QuoteManagement.QuoteTemplatesListTable.view",generateQuote:"NegotiableQuoteTemplate.Manage.actionButtons.generateQuote",generateQuoteModalMessage:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.message",generateQuoteModalCancel:"NegotiableQuoteTemplate.Manage.confirmationModal.cancel",generateQuoteModalConfirm:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.confirm",generateQuoteModalConfirmLoading:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.confirmLoading",generateQuoteModalSuccessHeading:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.successHeading",generateQuoteSuccessMessage:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.successDescription",generateQuoteModalErrorHeading:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.errorHeading",generateQuoteErrorFallback:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.errorFallback"}),[o,y]=d(null),[q,f]=d(!0),[M,b]=d(!1),[T,v]=d(!1),[I,O]=d(null),[_,N]=d(""),[w,k]=d(""),J=W()[0],[E,K]=d(p||J),[G,F]=d(1);ce(()=>{const n=async()=>{try{f(!0);const c=await fe({pageSize:E,currentPage:G});y(c)}catch(c){console.error("Failed to fetch quote templates:",c)}finally{f(!1)}},e=Qe.on("authenticated",c=>{c?n():(y(null),f(!1))},{eager:!0});return()=>{e==null||e.off()}},[E,G]);const U=n=>{K(n),F(1),h==null||h(n)},H=n=>{F(n),g==null||g(n)},X=n=>{const e=n.target,c=e==null?void 0:e.value;c&&U(Number(c))},Y=(n,e)=>{O({id:n,name:e}),N(""),k(""),b(!0)},Z=async n=>{v(!0),N(""),k("");try{const e=await Me({templateId:n.id});N(l.generateQuoteSuccessMessage),u==null||u(n.id,n.name,e.quoteId)}catch(e){console.error("Failed to generate quote from template:",e);const c=e instanceof Error?e.message:l.generateQuoteErrorFallback;k(c)}finally{v(!1)}},V=()=>{b(!1),O(null),N(""),k("")},ee=(n,e,c)=>n.filter(a=>a==null?void 0:a.uid).map(a=>{var B;return{id:a.id,name:t(s,{name:"Name",slot:e==null?void 0:e.Name,context:{template:a},children:t("span",{children:a.name})}),state:t(s,{name:"State",slot:e==null?void 0:e.State,context:{template:a},children:t("span",{style:{textTransform:"capitalize"},children:((B=a.state)==null?void 0:B.replace(/_/g," "))||"-"})}),status:t(s,{name:"Status",slot:e==null?void 0:e.Status,context:{template:a},children:t("span",{children:a.status})}),validUntil:t(s,{name:"ValidUntil",slot:e==null?void 0:e.ValidUntil,context:{template:a},children:t("span",{children:D(a.expirationDate,"short")})}),minQuoteTotal:t(s,{name:"MinQuoteTotal",slot:e==null?void 0:e.MinQuoteTotal,context:{template:a},children:t(pe,{amount:a.prices.minNegotiatedGrandTotal.value,currency:a.prices.minNegotiatedGrandTotal.currency})}),ordersPlaced:t(s,{name:"OrdersPlaced",slot:e==null?void 0:e.OrdersPlaced,context:{template:a},children:t("span",{children:a.ordersPlaced})}),lastOrdered:t(s,{name:"LastOrdered",slot:e==null?void 0:e.LastOrdered,context:{template:a},children:t("span",{children:D(a.lastOrderedAt,"short")})}),actions:m(s,{name:"Actions",slot:e==null?void 0:e.Actions,context:{template:a,onViewQuoteTemplate:c},className:"quote-management-quote-templates-list-table__actions-cell",children:[t(j,{variant:"tertiary",size:"medium",onClick:()=>c==null?void 0:c(a.id,a.name,a.status),children:l.view}),a.canGenerateQuoteFromTemplate&&t(j,{variant:"primary",size:"medium",onClick:()=>Y(a.id,a.name),"data-testid":`generate-quote-button-${a.id}`,children:l.generateQuote})]})}}),te=o!=null&&o.items?ee(o.items,i,z):[],r=o!=null&&o.paginationInfo?{...o.paginationInfo,pageSizeOptions:W()}:void 0,C=!!r,ae=t(s,{name:"EmptyTemplates",slot:i==null?void 0:i.EmptyTemplates,context:{templatesData:o},children:t(ue,{heading:"No Quote Templates Found"})}),ne=r?t(s,{name:"ItemRange",slot:i==null?void 0:i.ItemRange,context:r,children:m("span",{children:["Items ",r.startItem," to ",r.endItem," of"," ",r.totalCount," total"]})}):void 0,oe=r&&r.pageSizeOptions?m(s,{name:"PageSizePicker",slot:i==null?void 0:i.PageSizePicker,context:{pageSize:r.pageSize,pageSizeOptions:r.pageSizeOptions,onPageSizeChange:U},children:[t("span",{children:"Show "}),t(ge,{variant:"primary",size:"medium",value:String(r.pageSize),options:r.pageSizeOptions.map(n=>({value:String(n),text:String(n)})),handleSelect:X}),t("span",{children:" per page"})]}):void 0,re=r?t(s,{name:"Pagination",slot:i==null?void 0:i.Pagination,context:{currentPage:r.currentPage,totalPages:r.totalPages,onChange:H},children:t(me,{currentPage:r.currentPage,totalPages:r.totalPages,onChange:H})}):void 0;let L=null;return _?L=t(R,{type:"success",variant:"primary",icon:t(A,{source:"CheckWithCircle"}),heading:l.generateQuoteModalSuccessHeading,description:_,"data-testid":"generate-quote-success-banner"}):w&&(L=t(R,{type:"error",variant:"primary",icon:t(A,{source:"WarningFilled"}),heading:l.generateQuoteModalErrorHeading,description:w,"data-testid":"generate-quote-error-banner"})),m(ie,{children:[t(be,{rowData:te,loading:q,className:P.className,emptyStateMessage:ae,showItemRange:Q&&C,itemRangeMessage:ne,showPageSizePicker:x&&C,pageSizePickerMessage:oe,showPagination:S&&C,paginationMessage:re}),M&&le(t(he,{open:M,title:l.generateQuote,message:l.generateQuoteModalMessage,cancelLabel:l.generateQuoteModalCancel,confirmLabel:T?l.generateQuoteModalConfirmLoading:l.generateQuoteModalConfirm,onCancel:V,onConfirm:T||!I?void 0:()=>Z(I),showCloseButton:!L,confirmationBanner:L,"data-testid":"generate-quote-confirmation-modal"}),document.body)]})};export{Ue as QuoteTemplatesListTable,Ue as default};
|
|
4
4
|
//# sourceMappingURL=QuoteTemplatesListTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuoteTemplatesListTable.js","sources":["/@dropins/storefront-quote-management/src/components/QuoteTemplatesListTable/QuoteTemplatesListTable.tsx","/@dropins/storefront-quote-management/src/containers/QuoteTemplatesListTable/QuoteTemplatesListTable.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 } from '@adobe-commerce/elsie/lib';\nimport { Table } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport '@/quote-management/components/QuoteTemplatesListTable/QuoteTemplatesListTable.css';\n\ntype Column = {\n key: string;\n label: string;\n};\n\nexport interface QuoteTemplatesListTableProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'loading' | 'children'> {\n rowData: QuoteTemplateRowData[];\n loading?: boolean;\n className?: string;\n emptyStateMessage?: VNode;\n showItemRange?: boolean;\n itemRangeMessage?: VNode;\n showPageSizePicker?: boolean;\n pageSizePickerMessage?: VNode;\n showPagination?: boolean;\n paginationMessage?: VNode;\n}\n\nexport type QuoteTemplateRowData = {\n id: string;\n name: VNode;\n state: VNode;\n status: VNode;\n validUntil: VNode;\n minQuoteTotal: VNode;\n ordersPlaced: VNode;\n lastOrdered: VNode;\n actions: VNode;\n [key: string]: VNode | string | number | undefined;\n};\n\nexport const QuoteTemplatesListTable: FunctionComponent<\n QuoteTemplatesListTableProps\n> = ({\n rowData = [],\n loading = false,\n className,\n emptyStateMessage,\n showItemRange = true,\n itemRangeMessage,\n showPageSizePicker = true,\n pageSizePickerMessage,\n showPagination = true,\n paginationMessage,\n ...props\n}) => {\n const dictionary = useText({\n name: 'QuoteManagement.QuoteTemplatesListTable.name',\n state: 'QuoteManagement.QuoteTemplatesListTable.state',\n status: 'QuoteManagement.QuoteTemplatesListTable.status',\n validUntil: 'QuoteManagement.QuoteTemplatesListTable.validUntil',\n minQuoteTotal: 'QuoteManagement.QuoteTemplatesListTable.minQuoteTotal',\n ordersPlaced: 'QuoteManagement.QuoteTemplatesListTable.ordersPlaced',\n lastOrdered: 'QuoteManagement.QuoteTemplatesListTable.lastOrdered',\n actions: 'QuoteManagement.QuoteTemplatesListTable.actions',\n });\n\n const columns: Column[] = [\n { key: 'name', label: dictionary.name },\n { key: 'state', label: dictionary.state },\n { key: 'status', label: dictionary.status },\n { key: 'validUntil', label: dictionary.validUntil },\n { key: 'minQuoteTotal', label: dictionary.minQuoteTotal },\n { key: 'ordersPlaced', label: dictionary.ordersPlaced },\n { key: 'lastOrdered', label: dictionary.lastOrdered },\n { key: 'actions', label: dictionary.actions },\n ];\n\n // Check if should show the table when loading or there is data\n const shouldShowTable = loading || rowData.length > 0;\n\n // Check if we should show empty state\n const shouldShowEmptyState =\n !loading && rowData.length === 0 && emptyStateMessage;\n\n // Show item range if requested and message is provided\n const shouldShowItemRange = showItemRange && itemRangeMessage;\n\n // Show page size picker if requested and message is provided\n const shouldShowPageSizePicker = showPageSizePicker && pageSizePickerMessage;\n\n // Show pagination if requested and message is provided\n const shouldShowPagination = showPagination && paginationMessage;\n\n // Show footer if any pagination element should be shown\n const shouldShowFooter =\n shouldShowItemRange || shouldShowPageSizePicker || shouldShowPagination;\n\n return (\n <div\n {...props}\n className={classes([\n 'quote-management-quote-templates-list-table',\n className,\n ])}\n >\n {shouldShowTable && (\n <Table\n columns={columns}\n rowData={rowData}\n loading={loading}\n mobileLayout=\"none\"\n className=\"quote-management-quote-templates-list-table__table\"\n />\n )}\n {shouldShowEmptyState && (\n <div className=\"quote-templates-list-table__empty-state\">\n {emptyStateMessage}\n </div>\n )}\n {shouldShowFooter && (\n <div className=\"quote-templates-list-table__footer\">\n <div className=\"quote-templates-list-table__item-range\">\n {shouldShowItemRange && itemRangeMessage}\n </div>\n <div className=\"quote-templates-list-table__pagination\">\n {shouldShowPagination && paginationMessage}\n </div>\n <div className=\"quote-templates-list-table__page-size-picker\">\n {shouldShowPageSizePicker && pageSizePickerMessage}\n </div>\n </div>\n )}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { HTMLAttributes, useEffect, useState, createPortal } from 'preact/compat';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Container, Slot, SlotProps } from '@adobe-commerce/elsie/lib';\nimport {\n Price,\n Button,\n IllustratedMessage,\n Picker,\n Pagination,\n type PickerOption,\n} from '@adobe-commerce/elsie/components';\nimport { events } from '@adobe-commerce/event-bus';\nimport {\n QuoteTemplatesListTable as QuoteTemplatesListTableComponent,\n QuoteTemplateRowData,\n ConfirmationModal,\n} from '@/quote-management/components';\nimport { getQuoteTemplates, generateQuoteFromTemplate } from '@/quote-management/api';\nimport { getDefaultPageSizeOptions } from '@/quote-management/data/transforms';\nimport {\n NegotiableQuoteTemplatesListModel,\n NegotiableQuoteTemplateListEntry,\n} from '@/quote-management/data/models';\nimport { formattedDate } from '@/quote-management/utils/dateUtils';\n\nexport interface QuoteTemplatesListTableProps\n extends HTMLAttributes<HTMLDivElement> {\n pageSize?: number;\n showItemRange?: boolean;\n showPageSizePicker?: boolean;\n showPagination?: boolean;\n onViewQuoteTemplate?: (templateId: string, templateName: string, status: string) => void;\n onGenerateQuoteFromTemplate?: (templateId: string, templateName: string, quoteId: string) => void;\n onPageSizeChange?: (pageSize: number) => void;\n onPageChange?: (page: number) => void;\n slots?: {\n /** Slot for customizing the template name cell content */\n Name?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the state cell content */\n State?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the status cell content */\n Status?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the valid until cell content */\n ValidUntil?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the min quote total cell content */\n MinQuoteTotal?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the orders placed cell content */\n OrdersPlaced?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the last ordered cell content */\n LastOrdered?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the actions cell content */\n Actions?: SlotProps<{\n template: NegotiableQuoteTemplateListEntry;\n onViewQuoteTemplate?: (id: string, name: string, status: string) => void;\n onGenerateQuoteFromTemplate?: (id: string, name: string) => void;\n }>;\n /** Slot for customizing the empty templates message */\n EmptyTemplates?: SlotProps;\n /** Slot for customizing the item range display */\n ItemRange?: SlotProps<{\n startItem: number;\n endItem: number;\n totalCount: number;\n currentPage: number;\n pageSize: number;\n }>;\n /** Slot for customizing the page size picker */\n PageSizePicker?: SlotProps<{\n pageSize: number;\n pageSizeOptions: number[];\n onPageSizeChange?: (pageSize: number) => void;\n }>;\n /** Slot for customizing the pagination */\n Pagination?: SlotProps<{\n currentPage: number;\n totalPages: number;\n onChange?: (page: number) => void;\n }>;\n };\n}\n\nexport const QuoteTemplatesListTable: Container<\n QuoteTemplatesListTableProps\n> = ({\n pageSize,\n showItemRange = true,\n showPageSizePicker = true,\n showPagination = true,\n onViewQuoteTemplate,\n onGenerateQuoteFromTemplate,\n onPageSizeChange,\n onPageChange,\n slots,\n ...props\n}) => {\n const dictionary = useText({\n view: 'QuoteManagement.QuoteTemplatesListTable.view',\n generateQuote: 'NegotiableQuoteTemplate.Manage.actionButtons.generateQuote',\n generateQuoteModalMessage: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.message',\n generateQuoteModalCancel: 'NegotiableQuoteTemplate.Manage.confirmationModal.cancel',\n generateQuoteModalConfirm: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.confirm',\n generateQuoteModalConfirmLoading: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.confirmLoading',\n });\n\n const [templatesData, setTemplatesData] =\n useState<NegotiableQuoteTemplatesListModel | null>(null);\n const [loading, setLoading] = useState(true);\n const [showGenerateQuoteModal, setShowGenerateQuoteModal] = useState<boolean>(false);\n const [isGeneratingQuote, setIsGeneratingQuote] = useState<boolean>(false);\n const [selectedTemplate, setSelectedTemplate] = useState<{ id: string; name: string } | null>(null);\n\n // Default to first page size option if no pageSize prop provided\n const defaultPageSize = getDefaultPageSizeOptions()[0];\n const [currentPageSize, setCurrentPageSize] = useState(\n pageSize || defaultPageSize\n );\n const [currentPage, setCurrentPage] = useState(1);\n\n // Fetch quote templates data when authenticated\n useEffect(() => {\n const fetchTemplates = async () => {\n try {\n setLoading(true);\n const data = await getQuoteTemplates({\n pageSize: currentPageSize,\n currentPage,\n });\n setTemplatesData(data);\n } catch (error) {\n console.error('Failed to fetch quote templates:', error);\n } finally {\n setLoading(false);\n }\n };\n\n // Listen for authentication events\n const unsubscribe = events.on(\n 'authenticated',\n (isAuthenticated) => {\n if (isAuthenticated) {\n fetchTemplates();\n } else {\n setTemplatesData(null);\n setLoading(false);\n }\n },\n { eager: true }\n ); // eager: true means it fires immediately with current state\n\n return () => {\n unsubscribe?.off();\n };\n }, [currentPageSize, currentPage]);\n\n // Handle page size change\n const handlePageSizeChange = (newPageSize: number) => {\n setCurrentPageSize(newPageSize);\n setCurrentPage(1); // Reset to page 1 when page size changes\n onPageSizeChange?.(newPageSize); // Also call parent callback\n };\n\n // Handle page change\n const handlePageChange = (newPage: number) => {\n setCurrentPage(newPage);\n onPageChange?.(newPage); // Also call parent callback\n };\n\n // Handle page size picker selection\n const handlePageSizeSelect = (event: Event) => {\n const target = event.target as HTMLSelectElement;\n const value = target?.value;\n if (value) {\n handlePageSizeChange(Number(value));\n }\n };\n\n // Handle generate quote button click\n const handleGenerateQuoteClick = (templateId: string, templateName: string) => {\n setSelectedTemplate({ id: templateId, name: templateName });\n setShowGenerateQuoteModal(true);\n };\n\n // Handle generate quote confirmation\n const handleGenerateQuote = async (template: { id: string; name: string }) => { \n setIsGeneratingQuote(true);\n \n try {\n const result = await generateQuoteFromTemplate({ templateId: template.id });\n \n // Call the callback AFTER successful generation\n onGenerateQuoteFromTemplate?.(template.id, template.name, result.quoteId);\n \n // Close modal on success\n setShowGenerateQuoteModal(false);\n setSelectedTemplate(null);\n } catch (error) {\n console.error('Failed to generate quote from template:', error);\n // Keep modal open on error so user can try again or cancel\n } finally {\n setIsGeneratingQuote(false);\n }\n };\n\n // Handle generate quote modal cancel\n const handleGenerateQuoteModalCancel = () => {\n setShowGenerateQuoteModal(false);\n setSelectedTemplate(null);\n };\n\n // Prepare transformed quote template data for table component\n const prepareRowData = (\n templates: NegotiableQuoteTemplateListEntry[],\n slots?: QuoteTemplatesListTableProps['slots'],\n onViewQuoteTemplate?: (templateId: string, templateName: string, status: string) => void\n ): QuoteTemplateRowData[] => {\n return templates\n .filter((template) => template?.uid) // Filter out null templates\n .map((template) => {\n return {\n id: template.id,\n name: (\n <Slot name=\"Name\" slot={slots?.Name} context={{ template }}>\n <span>{template.name}</span>\n </Slot>\n ),\n state: (\n <Slot name=\"State\" slot={slots?.State} context={{ template }}>\n <span style={{ textTransform: 'capitalize' }}>\n {template.state?.replace(/_/g, ' ') || '-'}\n </span>\n </Slot>\n ),\n status: (\n <Slot name=\"Status\" slot={slots?.Status} context={{ template }}>\n <span>{template.status}</span>\n </Slot>\n ),\n validUntil: (\n <Slot\n name=\"ValidUntil\"\n slot={slots?.ValidUntil}\n context={{ template }}\n >\n <span>{formattedDate(template.expirationDate, 'short')}</span>\n </Slot>\n ),\n minQuoteTotal: (\n <Slot\n name=\"MinQuoteTotal\"\n slot={slots?.MinQuoteTotal}\n context={{ template }}\n >\n <Price\n amount={template.prices.minNegotiatedGrandTotal.value}\n currency={template.prices.minNegotiatedGrandTotal.currency}\n />\n </Slot>\n ),\n ordersPlaced: (\n <Slot\n name=\"OrdersPlaced\"\n slot={slots?.OrdersPlaced}\n context={{ template }}\n >\n <span>{template.ordersPlaced}</span>\n </Slot>\n ),\n lastOrdered: (\n <Slot\n name=\"LastOrdered\"\n slot={slots?.LastOrdered}\n context={{ template }}\n >\n <span>{formattedDate(template.lastOrderedAt, 'short')}</span>\n </Slot>\n ),\n actions: (\n <Slot\n name=\"Actions\"\n slot={slots?.Actions}\n context={{ template, onViewQuoteTemplate }}\n className=\"quote-management-quote-templates-list-table__actions-cell\"\n >\n <Button\n variant=\"tertiary\"\n size=\"medium\"\n onClick={() => onViewQuoteTemplate?.(template.id, template.name, template.status)}\n >\n {dictionary.view}\n </Button>\n {template.canGenerateQuoteFromTemplate && (\n <Button\n variant=\"primary\"\n size=\"medium\"\n onClick={() => handleGenerateQuoteClick(template.id, template.name)}\n data-testid={`generate-quote-button-${template.id}`}\n >\n {dictionary.generateQuote}\n </Button>\n )}\n </Slot>\n ),\n };\n });\n };\n\n // Prepare data for rendering\n const rowData = templatesData?.items\n ? prepareRowData(templatesData.items, slots, onViewQuoteTemplate)\n : [];\n\n // Use pagination info directly from API response, merging in pageSizeOptions if needed\n const paginationInfo = templatesData?.paginationInfo\n ? {\n ...templatesData.paginationInfo,\n pageSizeOptions: getDefaultPageSizeOptions(),\n }\n : undefined;\n\n const shouldShowPagination = !!paginationInfo;\n\n // Empty state message\n const emptyStateMessage = (\n <Slot\n name=\"EmptyTemplates\"\n slot={slots?.EmptyTemplates}\n context={{ templatesData }}\n >\n <IllustratedMessage heading=\"No Quote Templates Found\" />\n </Slot>\n );\n\n // Item range message\n const itemRangeMessage = paginationInfo ? (\n <Slot name=\"ItemRange\" slot={slots?.ItemRange} context={paginationInfo}>\n <span>\n Items {paginationInfo.startItem} to {paginationInfo.endItem} of{' '}\n {paginationInfo.totalCount} total\n </span>\n </Slot>\n ) : undefined;\n\n // Prepare page size picker message for component\n const pageSizePickerMessage =\n paginationInfo && paginationInfo.pageSizeOptions ? (\n <Slot\n name=\"PageSizePicker\"\n slot={slots?.PageSizePicker}\n context={{\n pageSize: paginationInfo.pageSize,\n pageSizeOptions: paginationInfo.pageSizeOptions,\n onPageSizeChange: handlePageSizeChange,\n }}\n >\n <span>Show </span>\n <Picker\n variant=\"primary\"\n size=\"medium\"\n value={String(paginationInfo.pageSize)}\n options={paginationInfo.pageSizeOptions.map(\n (size): PickerOption => ({\n value: String(size),\n text: String(size),\n })\n )}\n handleSelect={handlePageSizeSelect}\n />\n <span> per page</span>\n </Slot>\n ) : undefined;\n\n // Prepare pagination message for component\n const paginationMessage = paginationInfo ? (\n <Slot\n name=\"Pagination\"\n slot={slots?.Pagination}\n context={{\n currentPage: paginationInfo.currentPage,\n totalPages: paginationInfo.totalPages,\n onChange: handlePageChange,\n }}\n >\n <Pagination\n currentPage={paginationInfo.currentPage}\n totalPages={paginationInfo.totalPages}\n onChange={handlePageChange}\n />\n </Slot>\n ) : undefined;\n\n return (\n <>\n <QuoteTemplatesListTableComponent\n rowData={rowData}\n loading={loading}\n className={props.className as string}\n emptyStateMessage={emptyStateMessage}\n showItemRange={showItemRange && shouldShowPagination}\n itemRangeMessage={itemRangeMessage}\n showPageSizePicker={showPageSizePicker && shouldShowPagination}\n pageSizePickerMessage={pageSizePickerMessage}\n showPagination={showPagination && shouldShowPagination}\n paginationMessage={paginationMessage}\n />\n {showGenerateQuoteModal &&\n createPortal(\n <ConfirmationModal\n open={showGenerateQuoteModal}\n title={dictionary.generateQuote}\n message={dictionary.generateQuoteModalMessage}\n cancelLabel={dictionary.generateQuoteModalCancel}\n confirmLabel={\n isGeneratingQuote\n ? dictionary.generateQuoteModalConfirmLoading\n : dictionary.generateQuoteModalConfirm\n }\n onCancel={handleGenerateQuoteModalCancel}\n onConfirm={isGeneratingQuote || !selectedTemplate ? undefined : () => handleGenerateQuote(selectedTemplate)}\n showCloseButton={true}\n data-testid=\"generate-quote-confirmation-modal\"\n />,\n document.body\n )}\n </>\n );\n};\n"],"names":["QuoteTemplatesListTable","rowData","loading","className","emptyStateMessage","showItemRange","itemRangeMessage","showPageSizePicker","pageSizePickerMessage","showPagination","paginationMessage","props","dictionary","useText","columns","shouldShowTable","shouldShowEmptyState","shouldShowItemRange","shouldShowPageSizePicker","shouldShowPagination","shouldShowFooter","jsxs","classes","jsx","Table","pageSize","onViewQuoteTemplate","onGenerateQuoteFromTemplate","onPageSizeChange","onPageChange","slots","templatesData","setTemplatesData","useState","setLoading","showGenerateQuoteModal","setShowGenerateQuoteModal","isGeneratingQuote","setIsGeneratingQuote","selectedTemplate","setSelectedTemplate","defaultPageSize","getDefaultPageSizeOptions","currentPageSize","setCurrentPageSize","currentPage","setCurrentPage","useEffect","fetchTemplates","data","getQuoteTemplates","error","unsubscribe","events","isAuthenticated","handlePageSizeChange","newPageSize","handlePageChange","newPage","handlePageSizeSelect","event","target","value","handleGenerateQuoteClick","templateId","templateName","handleGenerateQuote","template","result","generateQuoteFromTemplate","handleGenerateQuoteModalCancel","prepareRowData","templates","Slot","_a","formattedDate","Price","Button","paginationInfo","IllustratedMessage","Picker","size","Pagination","Fragment","QuoteTemplatesListTableComponent","createPortal","ConfirmationModal"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QuoteTemplatesListTable.js","sources":["/@dropins/storefront-quote-management/src/components/QuoteTemplatesListTable/QuoteTemplatesListTable.tsx","/@dropins/storefront-quote-management/src/containers/QuoteTemplatesListTable/QuoteTemplatesListTable.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 } from '@adobe-commerce/elsie/lib';\nimport { Table } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport '@/quote-management/components/QuoteTemplatesListTable/QuoteTemplatesListTable.css';\n\ntype Column = {\n key: string;\n label: string;\n};\n\nexport interface QuoteTemplatesListTableProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'loading' | 'children'> {\n rowData: QuoteTemplateRowData[];\n loading?: boolean;\n className?: string;\n emptyStateMessage?: VNode;\n showItemRange?: boolean;\n itemRangeMessage?: VNode;\n showPageSizePicker?: boolean;\n pageSizePickerMessage?: VNode;\n showPagination?: boolean;\n paginationMessage?: VNode;\n}\n\nexport type QuoteTemplateRowData = {\n id: string;\n name: VNode;\n state: VNode;\n status: VNode;\n validUntil: VNode;\n minQuoteTotal: VNode;\n ordersPlaced: VNode;\n lastOrdered: VNode;\n actions: VNode;\n [key: string]: VNode | string | number | undefined;\n};\n\nexport const QuoteTemplatesListTable: FunctionComponent<\n QuoteTemplatesListTableProps\n> = ({\n rowData = [],\n loading = false,\n className,\n emptyStateMessage,\n showItemRange = true,\n itemRangeMessage,\n showPageSizePicker = true,\n pageSizePickerMessage,\n showPagination = true,\n paginationMessage,\n ...props\n}) => {\n const dictionary = useText({\n name: 'QuoteManagement.QuoteTemplatesListTable.name',\n state: 'QuoteManagement.QuoteTemplatesListTable.state',\n status: 'QuoteManagement.QuoteTemplatesListTable.status',\n validUntil: 'QuoteManagement.QuoteTemplatesListTable.validUntil',\n minQuoteTotal: 'QuoteManagement.QuoteTemplatesListTable.minQuoteTotal',\n ordersPlaced: 'QuoteManagement.QuoteTemplatesListTable.ordersPlaced',\n lastOrdered: 'QuoteManagement.QuoteTemplatesListTable.lastOrdered',\n actions: 'QuoteManagement.QuoteTemplatesListTable.actions',\n });\n\n const columns: Column[] = [\n { key: 'name', label: dictionary.name },\n { key: 'state', label: dictionary.state },\n { key: 'status', label: dictionary.status },\n { key: 'validUntil', label: dictionary.validUntil },\n { key: 'minQuoteTotal', label: dictionary.minQuoteTotal },\n { key: 'ordersPlaced', label: dictionary.ordersPlaced },\n { key: 'lastOrdered', label: dictionary.lastOrdered },\n { key: 'actions', label: dictionary.actions },\n ];\n\n // Check if should show the table when loading or there is data\n const shouldShowTable = loading || rowData.length > 0;\n\n // Check if we should show empty state\n const shouldShowEmptyState =\n !loading && rowData.length === 0 && emptyStateMessage;\n\n // Show item range if requested and message is provided\n const shouldShowItemRange = showItemRange && itemRangeMessage;\n\n // Show page size picker if requested and message is provided\n const shouldShowPageSizePicker = showPageSizePicker && pageSizePickerMessage;\n\n // Show pagination if requested and message is provided\n const shouldShowPagination = showPagination && paginationMessage;\n\n // Show footer if any pagination element should be shown\n const shouldShowFooter =\n shouldShowItemRange || shouldShowPageSizePicker || shouldShowPagination;\n\n return (\n <div\n {...props}\n className={classes([\n 'quote-management-quote-templates-list-table',\n className,\n ])}\n >\n {shouldShowTable && (\n <Table\n columns={columns}\n rowData={rowData}\n loading={loading}\n mobileLayout=\"none\"\n className=\"quote-management-quote-templates-list-table__table\"\n />\n )}\n {shouldShowEmptyState && (\n <div className=\"quote-templates-list-table__empty-state\">\n {emptyStateMessage}\n </div>\n )}\n {shouldShowFooter && (\n <div className=\"quote-templates-list-table__footer\">\n <div className=\"quote-templates-list-table__item-range\">\n {shouldShowItemRange && itemRangeMessage}\n </div>\n <div className=\"quote-templates-list-table__pagination\">\n {shouldShowPagination && paginationMessage}\n </div>\n <div className=\"quote-templates-list-table__page-size-picker\">\n {shouldShowPageSizePicker && pageSizePickerMessage}\n </div>\n </div>\n )}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { HTMLAttributes, useEffect, useState, createPortal } from 'preact/compat';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Container, Slot, SlotProps } from '@adobe-commerce/elsie/lib';\nimport {\n Price,\n Button,\n IllustratedMessage,\n Picker,\n Pagination,\n InLineAlert,\n Icon,\n type PickerOption,\n} from '@adobe-commerce/elsie/components';\nimport { events } from '@adobe-commerce/event-bus';\nimport {\n QuoteTemplatesListTable as QuoteTemplatesListTableComponent,\n QuoteTemplateRowData,\n ConfirmationModal,\n} from '@/quote-management/components';\nimport { getQuoteTemplates, generateQuoteFromTemplate } from '@/quote-management/api';\nimport { getDefaultPageSizeOptions } from '@/quote-management/data/transforms';\nimport {\n NegotiableQuoteTemplatesListModel,\n NegotiableQuoteTemplateListEntry,\n} from '@/quote-management/data/models';\nimport { formattedDate } from '@/quote-management/utils/dateUtils';\n\nexport interface QuoteTemplatesListTableProps\n extends HTMLAttributes<HTMLDivElement> {\n pageSize?: number;\n showItemRange?: boolean;\n showPageSizePicker?: boolean;\n showPagination?: boolean;\n onViewQuoteTemplate?: (templateId: string, templateName: string, status: string) => void;\n onGenerateQuoteFromTemplate?: (templateId: string, templateName: string, quoteId: string) => void;\n onPageSizeChange?: (pageSize: number) => void;\n onPageChange?: (page: number) => void;\n slots?: {\n /** Slot for customizing the template name cell content */\n Name?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the state cell content */\n State?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the status cell content */\n Status?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the valid until cell content */\n ValidUntil?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the min quote total cell content */\n MinQuoteTotal?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the orders placed cell content */\n OrdersPlaced?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the last ordered cell content */\n LastOrdered?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the actions cell content */\n Actions?: SlotProps<{\n template: NegotiableQuoteTemplateListEntry;\n onViewQuoteTemplate?: (id: string, name: string, status: string) => void;\n onGenerateQuoteFromTemplate?: (id: string, name: string) => void;\n }>;\n /** Slot for customizing the empty templates message */\n EmptyTemplates?: SlotProps;\n /** Slot for customizing the item range display */\n ItemRange?: SlotProps<{\n startItem: number;\n endItem: number;\n totalCount: number;\n currentPage: number;\n pageSize: number;\n }>;\n /** Slot for customizing the page size picker */\n PageSizePicker?: SlotProps<{\n pageSize: number;\n pageSizeOptions: number[];\n onPageSizeChange?: (pageSize: number) => void;\n }>;\n /** Slot for customizing the pagination */\n Pagination?: SlotProps<{\n currentPage: number;\n totalPages: number;\n onChange?: (page: number) => void;\n }>;\n };\n}\n\nexport const QuoteTemplatesListTable: Container<\n QuoteTemplatesListTableProps\n> = ({\n pageSize,\n showItemRange = true,\n showPageSizePicker = true,\n showPagination = true,\n onViewQuoteTemplate,\n onGenerateQuoteFromTemplate,\n onPageSizeChange,\n onPageChange,\n slots,\n ...props\n}) => {\n const dictionary = useText({\n view: 'QuoteManagement.QuoteTemplatesListTable.view',\n generateQuote: 'NegotiableQuoteTemplate.Manage.actionButtons.generateQuote',\n generateQuoteModalMessage: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.message',\n generateQuoteModalCancel: 'NegotiableQuoteTemplate.Manage.confirmationModal.cancel',\n generateQuoteModalConfirm: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.confirm',\n generateQuoteModalConfirmLoading: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.confirmLoading',\n generateQuoteModalSuccessHeading: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.successHeading',\n generateQuoteSuccessMessage: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.successDescription',\n generateQuoteModalErrorHeading: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.errorHeading',\n generateQuoteErrorFallback: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.errorFallback',\n });\n\n const [templatesData, setTemplatesData] =\n useState<NegotiableQuoteTemplatesListModel | null>(null);\n const [loading, setLoading] = useState(true);\n const [showGenerateQuoteModal, setShowGenerateQuoteModal] = useState<boolean>(false);\n const [isGeneratingQuote, setIsGeneratingQuote] = useState<boolean>(false);\n const [selectedTemplate, setSelectedTemplate] = useState<{ id: string; name: string } | null>(null);\n const [generateQuoteSuccessMessage, setGenerateQuoteSuccessMessage] = useState<string>('');\n const [generateQuoteErrorMessage, setGenerateQuoteErrorMessage] = useState<string>('');\n\n // Default to first page size option if no pageSize prop provided\n const defaultPageSize = getDefaultPageSizeOptions()[0];\n const [currentPageSize, setCurrentPageSize] = useState(\n pageSize || defaultPageSize\n );\n const [currentPage, setCurrentPage] = useState(1);\n\n // Fetch quote templates data when authenticated\n useEffect(() => {\n const fetchTemplates = async () => {\n try {\n setLoading(true);\n const data = await getQuoteTemplates({\n pageSize: currentPageSize,\n currentPage,\n });\n setTemplatesData(data);\n } catch (error) {\n console.error('Failed to fetch quote templates:', error);\n } finally {\n setLoading(false);\n }\n };\n\n // Listen for authentication events\n const unsubscribe = events.on(\n 'authenticated',\n (isAuthenticated) => {\n if (isAuthenticated) {\n fetchTemplates();\n } else {\n setTemplatesData(null);\n setLoading(false);\n }\n },\n { eager: true }\n ); // eager: true means it fires immediately with current state\n\n return () => {\n unsubscribe?.off();\n };\n }, [currentPageSize, currentPage]);\n\n // Handle page size change\n const handlePageSizeChange = (newPageSize: number) => {\n setCurrentPageSize(newPageSize);\n setCurrentPage(1); // Reset to page 1 when page size changes\n onPageSizeChange?.(newPageSize); // Also call parent callback\n };\n\n // Handle page change\n const handlePageChange = (newPage: number) => {\n setCurrentPage(newPage);\n onPageChange?.(newPage); // Also call parent callback\n };\n\n // Handle page size picker selection\n const handlePageSizeSelect = (event: Event) => {\n const target = event.target as HTMLSelectElement;\n const value = target?.value;\n if (value) {\n handlePageSizeChange(Number(value));\n }\n };\n\n // Handle generate quote button click\n const handleGenerateQuoteClick = (templateId: string, templateName: string) => {\n setSelectedTemplate({ id: templateId, name: templateName });\n setGenerateQuoteSuccessMessage('');\n setGenerateQuoteErrorMessage('');\n setShowGenerateQuoteModal(true);\n };\n\n // Handle generate quote confirmation\n const handleGenerateQuote = async (template: { id: string; name: string }) => { \n setIsGeneratingQuote(true);\n setGenerateQuoteSuccessMessage('');\n setGenerateQuoteErrorMessage('');\n \n try {\n const result = await generateQuoteFromTemplate({ templateId: template.id });\n \n // Show success message\n setGenerateQuoteSuccessMessage(dictionary.generateQuoteSuccessMessage);\n \n // Call the callback AFTER successful generation\n onGenerateQuoteFromTemplate?.(template.id, template.name, result.quoteId);\n } catch (error) {\n console.error('Failed to generate quote from template:', error);\n // Show error message and keep modal open so user can try again or cancel\n const errorMessage = error instanceof Error ? error.message : dictionary.generateQuoteErrorFallback;\n setGenerateQuoteErrorMessage(errorMessage);\n } finally {\n setIsGeneratingQuote(false);\n }\n };\n\n // Handle generate quote modal cancel\n const handleGenerateQuoteModalCancel = () => {\n setShowGenerateQuoteModal(false);\n setSelectedTemplate(null);\n setGenerateQuoteSuccessMessage('');\n setGenerateQuoteErrorMessage('');\n };\n\n // Prepare transformed quote template data for table component\n const prepareRowData = (\n templates: NegotiableQuoteTemplateListEntry[],\n slots?: QuoteTemplatesListTableProps['slots'],\n onViewQuoteTemplate?: (templateId: string, templateName: string, status: string) => void\n ): QuoteTemplateRowData[] => {\n return templates\n .filter((template) => template?.uid) // Filter out null templates\n .map((template) => {\n return {\n id: template.id,\n name: (\n <Slot name=\"Name\" slot={slots?.Name} context={{ template }}>\n <span>{template.name}</span>\n </Slot>\n ),\n state: (\n <Slot name=\"State\" slot={slots?.State} context={{ template }}>\n <span style={{ textTransform: 'capitalize' }}>\n {template.state?.replace(/_/g, ' ') || '-'}\n </span>\n </Slot>\n ),\n status: (\n <Slot name=\"Status\" slot={slots?.Status} context={{ template }}>\n <span>{template.status}</span>\n </Slot>\n ),\n validUntil: (\n <Slot\n name=\"ValidUntil\"\n slot={slots?.ValidUntil}\n context={{ template }}\n >\n <span>{formattedDate(template.expirationDate, 'short')}</span>\n </Slot>\n ),\n minQuoteTotal: (\n <Slot\n name=\"MinQuoteTotal\"\n slot={slots?.MinQuoteTotal}\n context={{ template }}\n >\n <Price\n amount={template.prices.minNegotiatedGrandTotal.value}\n currency={template.prices.minNegotiatedGrandTotal.currency}\n />\n </Slot>\n ),\n ordersPlaced: (\n <Slot\n name=\"OrdersPlaced\"\n slot={slots?.OrdersPlaced}\n context={{ template }}\n >\n <span>{template.ordersPlaced}</span>\n </Slot>\n ),\n lastOrdered: (\n <Slot\n name=\"LastOrdered\"\n slot={slots?.LastOrdered}\n context={{ template }}\n >\n <span>{formattedDate(template.lastOrderedAt, 'short')}</span>\n </Slot>\n ),\n actions: (\n <Slot\n name=\"Actions\"\n slot={slots?.Actions}\n context={{ template, onViewQuoteTemplate }}\n className=\"quote-management-quote-templates-list-table__actions-cell\"\n >\n <Button\n variant=\"tertiary\"\n size=\"medium\"\n onClick={() => onViewQuoteTemplate?.(template.id, template.name, template.status)}\n >\n {dictionary.view}\n </Button>\n {template.canGenerateQuoteFromTemplate && (\n <Button\n variant=\"primary\"\n size=\"medium\"\n onClick={() => handleGenerateQuoteClick(template.id, template.name)}\n data-testid={`generate-quote-button-${template.id}`}\n >\n {dictionary.generateQuote}\n </Button>\n )}\n </Slot>\n ),\n };\n });\n };\n\n // Prepare data for rendering\n const rowData = templatesData?.items\n ? prepareRowData(templatesData.items, slots, onViewQuoteTemplate)\n : [];\n\n // Use pagination info directly from API response, merging in pageSizeOptions if needed\n const paginationInfo = templatesData?.paginationInfo\n ? {\n ...templatesData.paginationInfo,\n pageSizeOptions: getDefaultPageSizeOptions(),\n }\n : undefined;\n\n const shouldShowPagination = !!paginationInfo;\n\n // Empty state message\n const emptyStateMessage = (\n <Slot\n name=\"EmptyTemplates\"\n slot={slots?.EmptyTemplates}\n context={{ templatesData }}\n >\n <IllustratedMessage heading=\"No Quote Templates Found\" />\n </Slot>\n );\n\n // Item range message\n const itemRangeMessage = paginationInfo ? (\n <Slot name=\"ItemRange\" slot={slots?.ItemRange} context={paginationInfo}>\n <span>\n Items {paginationInfo.startItem} to {paginationInfo.endItem} of{' '}\n {paginationInfo.totalCount} total\n </span>\n </Slot>\n ) : undefined;\n\n // Prepare page size picker message for component\n const pageSizePickerMessage =\n paginationInfo && paginationInfo.pageSizeOptions ? (\n <Slot\n name=\"PageSizePicker\"\n slot={slots?.PageSizePicker}\n context={{\n pageSize: paginationInfo.pageSize,\n pageSizeOptions: paginationInfo.pageSizeOptions,\n onPageSizeChange: handlePageSizeChange,\n }}\n >\n <span>Show </span>\n <Picker\n variant=\"primary\"\n size=\"medium\"\n value={String(paginationInfo.pageSize)}\n options={paginationInfo.pageSizeOptions.map(\n (size): PickerOption => ({\n value: String(size),\n text: String(size),\n })\n )}\n handleSelect={handlePageSizeSelect}\n />\n <span> per page</span>\n </Slot>\n ) : undefined;\n\n // Prepare pagination message for component\n const paginationMessage = paginationInfo ? (\n <Slot\n name=\"Pagination\"\n slot={slots?.Pagination}\n context={{\n currentPage: paginationInfo.currentPage,\n totalPages: paginationInfo.totalPages,\n onChange: handlePageChange,\n }}\n >\n <Pagination\n currentPage={paginationInfo.currentPage}\n totalPages={paginationInfo.totalPages}\n onChange={handlePageChange}\n />\n </Slot>\n ) : undefined;\n\n // Create banner for generate quote modal based on success/error state\n let generateQuoteModalBanner = null;\n if (generateQuoteSuccessMessage) {\n generateQuoteModalBanner = (\n <InLineAlert\n type=\"success\"\n variant=\"primary\"\n icon={<Icon source=\"CheckWithCircle\" />}\n heading={dictionary.generateQuoteModalSuccessHeading}\n description={generateQuoteSuccessMessage}\n data-testid=\"generate-quote-success-banner\"\n />\n );\n } else if (generateQuoteErrorMessage) {\n generateQuoteModalBanner = (\n <InLineAlert\n type=\"error\"\n variant=\"primary\"\n icon={<Icon source=\"WarningFilled\" />}\n heading={dictionary.generateQuoteModalErrorHeading}\n description={generateQuoteErrorMessage}\n data-testid=\"generate-quote-error-banner\"\n />\n );\n }\n\n return (\n <>\n <QuoteTemplatesListTableComponent\n rowData={rowData}\n loading={loading}\n className={props.className as string}\n emptyStateMessage={emptyStateMessage}\n showItemRange={showItemRange && shouldShowPagination}\n itemRangeMessage={itemRangeMessage}\n showPageSizePicker={showPageSizePicker && shouldShowPagination}\n pageSizePickerMessage={pageSizePickerMessage}\n showPagination={showPagination && shouldShowPagination}\n paginationMessage={paginationMessage}\n />\n {showGenerateQuoteModal &&\n createPortal(\n <ConfirmationModal\n open={showGenerateQuoteModal}\n title={dictionary.generateQuote}\n message={dictionary.generateQuoteModalMessage}\n cancelLabel={dictionary.generateQuoteModalCancel}\n confirmLabel={\n isGeneratingQuote\n ? dictionary.generateQuoteModalConfirmLoading\n : dictionary.generateQuoteModalConfirm\n }\n onCancel={handleGenerateQuoteModalCancel}\n onConfirm={isGeneratingQuote || !selectedTemplate ? undefined : () => handleGenerateQuote(selectedTemplate)}\n showCloseButton={!generateQuoteModalBanner}\n confirmationBanner={generateQuoteModalBanner}\n data-testid=\"generate-quote-confirmation-modal\"\n />,\n document.body\n )}\n </>\n );\n};\n"],"names":["QuoteTemplatesListTable","rowData","loading","className","emptyStateMessage","showItemRange","itemRangeMessage","showPageSizePicker","pageSizePickerMessage","showPagination","paginationMessage","props","dictionary","useText","columns","shouldShowTable","shouldShowEmptyState","shouldShowItemRange","shouldShowPageSizePicker","shouldShowPagination","shouldShowFooter","jsxs","classes","jsx","Table","pageSize","onViewQuoteTemplate","onGenerateQuoteFromTemplate","onPageSizeChange","onPageChange","slots","templatesData","setTemplatesData","useState","setLoading","showGenerateQuoteModal","setShowGenerateQuoteModal","isGeneratingQuote","setIsGeneratingQuote","selectedTemplate","setSelectedTemplate","generateQuoteSuccessMessage","setGenerateQuoteSuccessMessage","generateQuoteErrorMessage","setGenerateQuoteErrorMessage","defaultPageSize","getDefaultPageSizeOptions","currentPageSize","setCurrentPageSize","currentPage","setCurrentPage","useEffect","fetchTemplates","data","getQuoteTemplates","error","unsubscribe","events","isAuthenticated","handlePageSizeChange","newPageSize","handlePageChange","newPage","handlePageSizeSelect","event","target","value","handleGenerateQuoteClick","templateId","templateName","handleGenerateQuote","template","result","generateQuoteFromTemplate","errorMessage","handleGenerateQuoteModalCancel","prepareRowData","templates","Slot","_a","formattedDate","Price","Button","paginationInfo","IllustratedMessage","Picker","size","Pagination","generateQuoteModalBanner","InLineAlert","Icon","Fragment","QuoteTemplatesListTableComponent","createPortal","ConfirmationModal"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name": "@dropins/storefront-quote-management", "version": "0.0.1-
|
|
1
|
+
{"name": "@dropins/storefront-quote-management", "version": "0.0.1-alpha37", "@dropins/tools": "1.6.0-beta3", "license": "SEE LICENSE IN LICENSE.md"}
|