Skip to content

Search is only available in production builds. Try building and previewing the site to test it out locally.

Quote Management Slots

The Quote Management drop-in exposes slots for customizing specific UI sections. Use slots to replace or extend container components. For default properties available to all slots, see Extending drop-in components.

Version: 1.0.0
ContainerSlots
ItemsQuotedProductListTable, QuotePricesSummary
ItemsQuotedTemplateProductListTable, QuotePricesSummary
ManageNegotiableQuoteQuoteName, QuoteStatus, Banner, DuplicateQuoteWarningBanner, Details, ActionBar, QuoteContent, ItemsQuotedTab, CommentsTab, HistoryLogTab, ShippingInformationTitle, ShippingInformation, QuoteCommentsTitle, QuoteComments, AttachFilesField, AttachedFilesList, Footer
ManageNegotiableQuoteTemplateTemplateName, TemplateStatus, Banner, Details, ActionBar, ReferenceDocuments, ItemsTable, ItemsQuotedTab, CommentsTab, HistoryLogTab, CommentsTitle, Comments, AttachFilesField, AttachedFilesList, HistoryLogTitle, HistoryLog, Footer, ShippingInformationTitle, ShippingInformation
QuoteSummaryListHeading, Footer, Thumbnail, ProductAttributes, QuoteSummaryFooter, QuoteItem, ItemTitle, ItemPrice, ItemTotal, ItemSku
QuoteTemplatesListTableName, State, Status, ValidUntil, MinQuoteTotal, OrdersPlaced, LastOrdered, Actions, EmptyTemplates, ItemRange, PageSizePicker, Pagination
QuotesListTableQuoteName, Created, CreatedBy, Status, LastUpdated, QuoteTemplate, QuoteTotal, Actions, EmptyQuotes, ItemRange, PageSizePicker, Pagination
RequestNegotiableQuoteFormErrorBanner, SuccessBanner, Title, CommentField, QuoteNameField, AttachFileField, AttachedFilesList, RequestButton, SaveDraftButton

The slots for the ItemsQuoted container allow you to customize its appearance and behavior.

interface ItemsQuotedProps {
slots?: {
ProductListTable?: SlotProps<{
items: NegotiableQuoteModel['items'];
canEdit: boolean;
readOnly?: boolean;
onItemCheckboxChange?: (
item: CartItemModel,
isSelected: boolean
) => void;
onItemDropdownChange?: (
item: CartItemModel,
action: string
) => void;
onQuantityChange?: (
item: CartItemModel,
newQuantity: number
) => void;
onUpdate?: (e: SubmitEvent) => void;
dropdownSelections?: Record<string, string | undefined>;
}>;
QuotePricesSummary?: SlotProps<{
items: NegotiableQuoteModel['items'];
prices: NegotiableQuoteModel['prices'];
}>;
};
}

The QuotePricesSummary slot allows you to customize the quote prices summary section of the ItemsQuoted container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ItemsQuoted } from '@dropins/storefront-quote-management/containers/ItemsQuoted.js';
await provider.render(ItemsQuoted, {
slots: {
QuotePricesSummary: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom QuotePricesSummary';
ctx.appendChild(element);
}
}
})(block);

The slots for the ItemsQuotedTemplate container allow you to customize its appearance and behavior.

interface ItemsQuotedTemplateProps {
slots?: {
ProductListTable?: SlotProps<{
items: NegotiableQuoteTemplateModel['items'];
canEdit: boolean;
dropdownSelections: Record<string, string | undefined>;
handleItemDropdownChange: (item: CartItemModel, action: string) => void;
handleQuantityChange: (item: CartItemModel, newQuantity: number) => void;
handleUpdate: (e: SubmitEvent) => void;
onItemDropdownChange?: (item: any, action: string) => void;
}>;
QuotePricesSummary?: SlotProps<{
items: NegotiableQuoteTemplateModel['items'];
prices: NegotiableQuoteTemplateModel['prices'];
}>;
};
}

The ProductListTable slot allows you to customize the product list table section of the ItemsQuotedTemplate container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ItemsQuotedTemplate } from '@dropins/storefront-quote-management/containers/ItemsQuotedTemplate.js';
await provider.render(ItemsQuotedTemplate, {
slots: {
ProductListTable: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom ProductListTable';
ctx.appendChild(element);
}
}
})(block);

The QuotePricesSummary slot allows you to customize the quote prices summary section of the ItemsQuotedTemplate container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ItemsQuotedTemplate } from '@dropins/storefront-quote-management/containers/ItemsQuotedTemplate.js';
await provider.render(ItemsQuotedTemplate, {
slots: {
QuotePricesSummary: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom QuotePricesSummary';
ctx.appendChild(element);
}
}
})(block);

The slots for the ManageNegotiableQuote container allow you to customize its appearance and behavior.

interface ManageNegotiableQuoteProps {
slots?: {
QuoteName?: SlotProps<{
quoteName?: string;
quoteData?: NegotiableQuoteModel;
}>;
QuoteStatus?: SlotProps<{
quoteStatus?: string;
quoteData?: NegotiableQuoteModel;
}>;
Banner?: SlotProps<{
quoteData?: NegotiableQuoteModel;
}>;
DuplicateQuoteWarningBanner?: SlotProps<{
outOfStockWarning?: boolean;
}>;
Details?: SlotProps<{
quoteData?: NegotiableQuoteModel;
}>;
ActionBar?: SlotProps<{
quoteData?: NegotiableQuoteModel;
actionsBarDropdownValue?: string;
}>;
QuoteContent?: SlotProps<{
quoteData?: NegotiableQuoteModel;
}>;
ItemsQuotedTab?: SlotProps<{
quoteData?: NegotiableQuoteModel;
}>;
CommentsTab?: SlotProps<{
quoteData?: NegotiableQuoteModel;
}>;
HistoryLogTab?: SlotProps<{
quoteData?: NegotiableQuoteModel;
}>;
ShippingInformationTitle?: SlotProps<{
quoteData?: NegotiableQuoteModel;
}>;
ShippingInformation?: SlotProps<{
quoteData?: NegotiableQuoteModel;
loading?: boolean;
setLoading?: (loading: boolean) => void;
}>;
QuoteCommentsTitle?: SlotProps<{
quoteData?: NegotiableQuoteModel;
}>;
QuoteComments?: SlotProps<{
quoteData?: NegotiableQuoteModel;
}>;
AttachFilesField?: SlotProps<{
onFileChange: (files: File[]) => void;
attachedFiles: AttachedFile[];
fileUploadError: string | undefined;
disabled?: boolean;
}>;
AttachedFilesList?: SlotProps<{
files: AttachedFile[];
onRemove: (key: string) => void;
disabled?: boolean;
}>;
Footer?: SlotProps<{
quoteData?: NegotiableQuoteModel;
comment?: string;
isSubmitting?: boolean;
attachments?: AttachedFile[];
handleSendForReview: () => void;
}>;
};
}

The QuoteName slot allows you to customize the quote name section of the ManageNegotiableQuote container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuote } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuote.js';
await provider.render(ManageNegotiableQuote, {
slots: {
QuoteName: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom QuoteName';
ctx.appendChild(element);
}
}
})(block);

The QuoteStatus slot allows you to customize the quote status section of the ManageNegotiableQuote container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuote } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuote.js';
await provider.render(ManageNegotiableQuote, {
slots: {
QuoteStatus: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom QuoteStatus';
ctx.appendChild(element);
}
}
})(block);

The Banner slot allows you to customize the banner section of the ManageNegotiableQuote container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuote } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuote.js';
await provider.render(ManageNegotiableQuote, {
slots: {
Banner: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom Banner';
ctx.appendChild(element);
}
}
})(block);

The DuplicateQuoteWarningBanner slot allows you to customize the duplicate quote warning banner section of the ManageNegotiableQuote container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuote } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuote.js';
await provider.render(ManageNegotiableQuote, {
slots: {
DuplicateQuoteWarningBanner: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom DuplicateQuoteWarningBanner';
ctx.appendChild(element);
}
}
})(block);

The Details slot allows you to customize the details section of the ManageNegotiableQuote container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuote } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuote.js';
await provider.render(ManageNegotiableQuote, {
slots: {
Details: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom Details';
ctx.appendChild(element);
}
}
})(block);

The ActionBar slot allows you to customize the action bar section of the ManageNegotiableQuote container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuote } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuote.js';
await provider.render(ManageNegotiableQuote, {
slots: {
ActionBar: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom ActionBar';
ctx.appendChild(element);
}
}
})(block);

The QuoteContent slot allows you to customize the quote content section of the ManageNegotiableQuote container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuote } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuote.js';
await provider.render(ManageNegotiableQuote, {
slots: {
QuoteContent: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom QuoteContent';
ctx.appendChild(element);
}
}
})(block);

The ItemsQuotedTab slot allows you to customize the items quoted tab section of the ManageNegotiableQuote container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuote } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuote.js';
await provider.render(ManageNegotiableQuote, {
slots: {
ItemsQuotedTab: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom ItemsQuotedTab';
ctx.appendChild(element);
}
}
})(block);

The CommentsTab slot allows you to customize the comments tab section of the ManageNegotiableQuote container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuote } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuote.js';
await provider.render(ManageNegotiableQuote, {
slots: {
CommentsTab: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom CommentsTab';
ctx.appendChild(element);
}
}
})(block);

The HistoryLogTab slot allows you to customize the history log tab section of the ManageNegotiableQuote container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuote } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuote.js';
await provider.render(ManageNegotiableQuote, {
slots: {
HistoryLogTab: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom HistoryLogTab';
ctx.appendChild(element);
}
}
})(block);

The ShippingInformationTitle slot allows you to customize the shipping information title section of the ManageNegotiableQuote container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuote } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuote.js';
await provider.render(ManageNegotiableQuote, {
slots: {
ShippingInformationTitle: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom ShippingInformationTitle';
ctx.appendChild(element);
}
}
})(block);

The QuoteCommentsTitle slot allows you to customize the quote comments title section of the ManageNegotiableQuote container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuote } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuote.js';
await provider.render(ManageNegotiableQuote, {
slots: {
QuoteCommentsTitle: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom QuoteCommentsTitle';
ctx.appendChild(element);
}
}
})(block);

The QuoteComments slot allows you to customize the quote comments section of the ManageNegotiableQuote container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuote } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuote.js';
await provider.render(ManageNegotiableQuote, {
slots: {
QuoteComments: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom QuoteComments';
ctx.appendChild(element);
}
}
})(block);

The slots for the ManageNegotiableQuoteTemplate container allow you to customize its appearance and behavior.

interface ManageNegotiableQuoteTemplateProps {
slots?: {
TemplateName?: SlotProps<{
templateName?: string;
templateData?: NegotiableQuoteTemplateModel;
templateDisplayName?: string;
isRenameDisabled?: boolean;
}>;
TemplateStatus?: SlotProps<{
templateStatus?: string;
templateData?: NegotiableQuoteTemplateModel;
}>;
Banner?: SlotProps<{
templateData?: NegotiableQuoteTemplateModel;
}>;
Details?: SlotProps<{
templateData?: NegotiableQuoteTemplateModel;
}>;
ActionBar?: SlotProps<{
templateData?: NegotiableQuoteTemplateModel;
}>;
ReferenceDocuments?: SlotProps<{
templateData?: NegotiableQuoteTemplateModel;
referenceDocuments?: ReferenceDocument[];
isEditable?: boolean;
onAddDocument?: () => void;
onEditDocument?: (document: ReferenceDocument) => void;
onRemoveDocument?: (document: ReferenceDocument) => void;
referenceDocumentsTitle?: string;
}>;
ItemsTable?: SlotProps<{
templateData?: NegotiableQuoteTemplateModel;
}>;
ItemsQuotedTab?: SlotProps<{
templateData?: NegotiableQuoteTemplateModel;
}>;
CommentsTab?: SlotProps<{
templateData?: NegotiableQuoteTemplateModel;
}>;
HistoryLogTab?: SlotProps<{
templateData?: NegotiableQuoteTemplateModel;
}>;
CommentsTitle?: SlotProps<{
templateData?: NegotiableQuoteTemplateModel;
}>;
Comments?: SlotProps<{
templateData?: NegotiableQuoteTemplateModel;
}>;
AttachFilesField?: SlotProps<{
templateData?: NegotiableQuoteTemplateModel;
onFileChange: (files: File[]) => void;
attachedFiles: AttachedFile[];
fileUploadError: string | undefined;
disabled: boolean;
}>;
AttachedFilesList?: SlotProps<{
templateData?: NegotiableQuoteTemplateModel;
files: AttachedFile[];
onRemove: (key: string) => void;
disabled: boolean;
}>;
HistoryLogTitle?: SlotProps<{
templateData?: NegotiableQuoteTemplateModel;
}>;
HistoryLog?: SlotProps<{
templateData?: NegotiableQuoteTemplateModel;
}>;
Footer?: SlotProps<{
templateData?: NegotiableQuoteTemplateModel;
comment?: string;
isSubmitting?: boolean;
attachedFiles?: AttachedFile[];
referenceDocuments?: ReferenceDocument[];
hasUnsavedChanges?: boolean;
handleSendForReview: () => void;
showAcceptButton?: boolean;
renameTemplateName?: string;
renameReason?: string;
}>;
ShippingInformationTitle?: SlotProps<{
templateData?: NegotiableQuoteTemplateModel;
}>;
ShippingInformation?: SlotProps<{
templateData?: NegotiableQuoteTemplateModel;
loading?: boolean;
setLoading?: (loading: boolean) => void;
}>;
};
}

The TemplateName slot allows you to customize the template name section of the ManageNegotiableQuoteTemplate container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuoteTemplate } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuoteTemplate.js';
await provider.render(ManageNegotiableQuoteTemplate, {
slots: {
TemplateName: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom TemplateName';
ctx.appendChild(element);
}
}
})(block);

The TemplateStatus slot allows you to customize the template status section of the ManageNegotiableQuoteTemplate container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuoteTemplate } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuoteTemplate.js';
await provider.render(ManageNegotiableQuoteTemplate, {
slots: {
TemplateStatus: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom TemplateStatus';
ctx.appendChild(element);
}
}
})(block);

The Banner slot allows you to customize the banner section of the ManageNegotiableQuoteTemplate container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuoteTemplate } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuoteTemplate.js';
await provider.render(ManageNegotiableQuoteTemplate, {
slots: {
Banner: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom Banner';
ctx.appendChild(element);
}
}
})(block);

The Details slot allows you to customize the details section of the ManageNegotiableQuoteTemplate container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuoteTemplate } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuoteTemplate.js';
await provider.render(ManageNegotiableQuoteTemplate, {
slots: {
Details: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom Details';
ctx.appendChild(element);
}
}
})(block);

The ActionBar slot allows you to customize the action bar section of the ManageNegotiableQuoteTemplate container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuoteTemplate } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuoteTemplate.js';
await provider.render(ManageNegotiableQuoteTemplate, {
slots: {
ActionBar: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom ActionBar';
ctx.appendChild(element);
}
}
})(block);

The ItemsTable slot allows you to customize the items table section of the ManageNegotiableQuoteTemplate container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuoteTemplate } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuoteTemplate.js';
await provider.render(ManageNegotiableQuoteTemplate, {
slots: {
ItemsTable: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom ItemsTable';
ctx.appendChild(element);
}
}
})(block);

The ItemsQuotedTab slot allows you to customize the items quoted tab section of the ManageNegotiableQuoteTemplate container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuoteTemplate } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuoteTemplate.js';
await provider.render(ManageNegotiableQuoteTemplate, {
slots: {
ItemsQuotedTab: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom ItemsQuotedTab';
ctx.appendChild(element);
}
}
})(block);

The CommentsTab slot allows you to customize the comments tab section of the ManageNegotiableQuoteTemplate container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuoteTemplate } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuoteTemplate.js';
await provider.render(ManageNegotiableQuoteTemplate, {
slots: {
CommentsTab: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom CommentsTab';
ctx.appendChild(element);
}
}
})(block);

The HistoryLogTab slot allows you to customize the history log tab section of the ManageNegotiableQuoteTemplate container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuoteTemplate } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuoteTemplate.js';
await provider.render(ManageNegotiableQuoteTemplate, {
slots: {
HistoryLogTab: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom HistoryLogTab';
ctx.appendChild(element);
}
}
})(block);

The CommentsTitle slot allows you to customize the comments title section of the ManageNegotiableQuoteTemplate container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuoteTemplate } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuoteTemplate.js';
await provider.render(ManageNegotiableQuoteTemplate, {
slots: {
CommentsTitle: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom CommentsTitle';
ctx.appendChild(element);
}
}
})(block);

The Comments slot allows you to customize the comments section of the ManageNegotiableQuoteTemplate container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuoteTemplate } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuoteTemplate.js';
await provider.render(ManageNegotiableQuoteTemplate, {
slots: {
Comments: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom Comments';
ctx.appendChild(element);
}
}
})(block);

The HistoryLogTitle slot allows you to customize the history log title section of the ManageNegotiableQuoteTemplate container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuoteTemplate } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuoteTemplate.js';
await provider.render(ManageNegotiableQuoteTemplate, {
slots: {
HistoryLogTitle: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom HistoryLogTitle';
ctx.appendChild(element);
}
}
})(block);

The HistoryLog slot allows you to customize the history log section of the ManageNegotiableQuoteTemplate container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuoteTemplate } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuoteTemplate.js';
await provider.render(ManageNegotiableQuoteTemplate, {
slots: {
HistoryLog: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom HistoryLog';
ctx.appendChild(element);
}
}
})(block);

The ShippingInformationTitle slot allows you to customize the shipping information title section of the ManageNegotiableQuoteTemplate container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { ManageNegotiableQuoteTemplate } from '@dropins/storefront-quote-management/containers/ManageNegotiableQuoteTemplate.js';
await provider.render(ManageNegotiableQuoteTemplate, {
slots: {
ShippingInformationTitle: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom ShippingInformationTitle';
ctx.appendChild(element);
}
}
})(block);

The slots for the QuoteSummaryList container allow you to customize its appearance and behavior.

interface QuoteSummaryListProps {
slots?: {
Heading?: SlotProps<{ count: number; quoteId: string }>;
Footer?: SlotProps<{ item: NegotiableQuoteItemModel }>;
Thumbnail?: SlotProps<{
item: NegotiableQuoteItemModel;
defaultImageProps: ImageProps;
}>;
ProductAttributes?: SlotProps<{ item: NegotiableQuoteItemModel }>;
QuoteSummaryFooter?: SlotProps<{
displayMaxItems: boolean;
}>;
QuoteItem?: SlotProps;
ItemTitle?: SlotProps<{ item: NegotiableQuoteItemModel }>;
ItemPrice?: SlotProps<{ item: NegotiableQuoteItemModel }>;
ItemTotal?: SlotProps<{ item: NegotiableQuoteItemModel }>;
ItemSku?: SlotProps<{ item: NegotiableQuoteItemModel }>;
};
}

The Heading slot allows you to customize the heading section of the QuoteSummaryList container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteSummaryList } from '@dropins/storefront-quote-management/containers/QuoteSummaryList.js';
await provider.render(QuoteSummaryList, {
slots: {
Heading: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom Heading';
ctx.appendChild(element);
}
}
})(block);

The Footer slot allows you to customize the footer section of the QuoteSummaryList container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteSummaryList } from '@dropins/storefront-quote-management/containers/QuoteSummaryList.js';
await provider.render(QuoteSummaryList, {
slots: {
Footer: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom Footer';
ctx.appendChild(element);
}
}
})(block);

The Thumbnail slot allows you to customize the thumbnail section of the QuoteSummaryList container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteSummaryList } from '@dropins/storefront-quote-management/containers/QuoteSummaryList.js';
await provider.render(QuoteSummaryList, {
slots: {
Thumbnail: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom Thumbnail';
ctx.appendChild(element);
}
}
})(block);

The ProductAttributes slot allows you to customize the product attributes section of the QuoteSummaryList container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteSummaryList } from '@dropins/storefront-quote-management/containers/QuoteSummaryList.js';
await provider.render(QuoteSummaryList, {
slots: {
ProductAttributes: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom ProductAttributes';
ctx.appendChild(element);
}
}
})(block);

The QuoteSummaryFooter slot allows you to customize the quote summary footer section of the QuoteSummaryList container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteSummaryList } from '@dropins/storefront-quote-management/containers/QuoteSummaryList.js';
await provider.render(QuoteSummaryList, {
slots: {
QuoteSummaryFooter: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom QuoteSummaryFooter';
ctx.appendChild(element);
}
}
})(block);

The QuoteItem slot allows you to customize the quote item section of the QuoteSummaryList container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteSummaryList } from '@dropins/storefront-quote-management/containers/QuoteSummaryList.js';
await provider.render(QuoteSummaryList, {
slots: {
QuoteItem: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom QuoteItem';
ctx.appendChild(element);
}
}
})(block);

The ItemTitle slot allows you to customize the item title section of the QuoteSummaryList container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteSummaryList } from '@dropins/storefront-quote-management/containers/QuoteSummaryList.js';
await provider.render(QuoteSummaryList, {
slots: {
ItemTitle: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom ItemTitle';
ctx.appendChild(element);
}
}
})(block);

The ItemPrice slot allows you to customize the item price section of the QuoteSummaryList container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteSummaryList } from '@dropins/storefront-quote-management/containers/QuoteSummaryList.js';
await provider.render(QuoteSummaryList, {
slots: {
ItemPrice: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom ItemPrice';
ctx.appendChild(element);
}
}
})(block);

The ItemTotal slot allows you to customize the item total section of the QuoteSummaryList container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteSummaryList } from '@dropins/storefront-quote-management/containers/QuoteSummaryList.js';
await provider.render(QuoteSummaryList, {
slots: {
ItemTotal: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom ItemTotal';
ctx.appendChild(element);
}
}
})(block);

The ItemSku slot allows you to customize the item sku section of the QuoteSummaryList container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteSummaryList } from '@dropins/storefront-quote-management/containers/QuoteSummaryList.js';
await provider.render(QuoteSummaryList, {
slots: {
ItemSku: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom ItemSku';
ctx.appendChild(element);
}
}
})(block);

The slots for the QuoteTemplatesListTable container allow you to customize its appearance and behavior.

interface QuoteTemplatesListTableProps {
slots?: {
Name?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;
State?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;
Status?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;
ValidUntil?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;
MinQuoteTotal?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;
OrdersPlaced?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;
LastOrdered?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;
Actions?: SlotProps<{
template: NegotiableQuoteTemplateListEntry;
onViewQuoteTemplate?: (id: string, name: string, status: string) => void;
onGenerateQuoteFromTemplate?: (id: string, name: string) => void;
}>;
EmptyTemplates?: SlotProps;
ItemRange?: SlotProps<{
startItem: number;
endItem: number;
totalCount: number;
currentPage: number;
pageSize: number;
}>;
PageSizePicker?: SlotProps<{
pageSize: number;
pageSizeOptions: number[];
onPageSizeChange?: (pageSize: number) => void;
}>;
Pagination?: SlotProps<{
currentPage: number;
totalPages: number;
onChange?: (page: number) => void;
}>;
};
}

The Name slot allows you to customize the name section of the QuoteTemplatesListTable container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteTemplatesListTable } from '@dropins/storefront-quote-management/containers/QuoteTemplatesListTable.js';
await provider.render(QuoteTemplatesListTable, {
slots: {
Name: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom Name';
ctx.appendChild(element);
}
}
})(block);

The State slot allows you to customize the state section of the QuoteTemplatesListTable container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteTemplatesListTable } from '@dropins/storefront-quote-management/containers/QuoteTemplatesListTable.js';
await provider.render(QuoteTemplatesListTable, {
slots: {
State: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom State';
ctx.appendChild(element);
}
}
})(block);

The Status slot allows you to customize the status section of the QuoteTemplatesListTable container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteTemplatesListTable } from '@dropins/storefront-quote-management/containers/QuoteTemplatesListTable.js';
await provider.render(QuoteTemplatesListTable, {
slots: {
Status: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom Status';
ctx.appendChild(element);
}
}
})(block);

The ValidUntil slot allows you to customize the valid until section of the QuoteTemplatesListTable container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteTemplatesListTable } from '@dropins/storefront-quote-management/containers/QuoteTemplatesListTable.js';
await provider.render(QuoteTemplatesListTable, {
slots: {
ValidUntil: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom ValidUntil';
ctx.appendChild(element);
}
}
})(block);

The MinQuoteTotal slot allows you to customize the min quote total section of the QuoteTemplatesListTable container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteTemplatesListTable } from '@dropins/storefront-quote-management/containers/QuoteTemplatesListTable.js';
await provider.render(QuoteTemplatesListTable, {
slots: {
MinQuoteTotal: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom MinQuoteTotal';
ctx.appendChild(element);
}
}
})(block);

The OrdersPlaced slot allows you to customize the orders placed section of the QuoteTemplatesListTable container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteTemplatesListTable } from '@dropins/storefront-quote-management/containers/QuoteTemplatesListTable.js';
await provider.render(QuoteTemplatesListTable, {
slots: {
OrdersPlaced: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom OrdersPlaced';
ctx.appendChild(element);
}
}
})(block);

The LastOrdered slot allows you to customize the last ordered section of the QuoteTemplatesListTable container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteTemplatesListTable } from '@dropins/storefront-quote-management/containers/QuoteTemplatesListTable.js';
await provider.render(QuoteTemplatesListTable, {
slots: {
LastOrdered: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom LastOrdered';
ctx.appendChild(element);
}
}
})(block);

The EmptyTemplates slot allows you to customize the empty templates section of the QuoteTemplatesListTable container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteTemplatesListTable } from '@dropins/storefront-quote-management/containers/QuoteTemplatesListTable.js';
await provider.render(QuoteTemplatesListTable, {
slots: {
EmptyTemplates: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom EmptyTemplates';
ctx.appendChild(element);
}
}
})(block);

The ItemRange slot allows you to customize the item range section of the QuoteTemplatesListTable container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuoteTemplatesListTable } from '@dropins/storefront-quote-management/containers/QuoteTemplatesListTable.js';
await provider.render(QuoteTemplatesListTable, {
slots: {
ItemRange: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom ItemRange';
ctx.appendChild(element);
}
}
})(block);

The slots for the QuotesListTable container allow you to customize its appearance and behavior.

interface QuotesListTableProps {
slots?: {
QuoteName?: SlotProps<{ quote: NegotiableQuoteListEntry }>;
Created?: SlotProps<{ quote: NegotiableQuoteListEntry }>;
CreatedBy?: SlotProps<{ quote: NegotiableQuoteListEntry }>;
Status?: SlotProps<{ quote: NegotiableQuoteListEntry }>;
LastUpdated?: SlotProps<{ quote: NegotiableQuoteListEntry }>;
QuoteTemplate?: SlotProps<{ quote: NegotiableQuoteListEntry }>;
QuoteTotal?: SlotProps<{ quote: NegotiableQuoteListEntry }>;
Actions?: SlotProps<{
quote: NegotiableQuoteListEntry;
onViewQuote?: (id: string, name: string, status: string) => void;
}>;
EmptyQuotes?: SlotProps;
ItemRange?: SlotProps<{
startItem: number;
endItem: number;
totalCount: number;
currentPage: number;
pageSize: number;
}>;
PageSizePicker?: SlotProps<{
pageSize: number;
pageSizeOptions: number[];
onPageSizeChange?: (pageSize: number) => void;
}>;
Pagination?: SlotProps<{
currentPage: number;
totalPages: number;
onChange?: (page: number) => void;
}>;
};
}

The QuoteName slot allows you to customize the quote name section of the QuotesListTable container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuotesListTable } from '@dropins/storefront-quote-management/containers/QuotesListTable.js';
await provider.render(QuotesListTable, {
slots: {
QuoteName: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom QuoteName';
ctx.appendChild(element);
}
}
})(block);

The Created slot allows you to customize the created section of the QuotesListTable container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuotesListTable } from '@dropins/storefront-quote-management/containers/QuotesListTable.js';
await provider.render(QuotesListTable, {
slots: {
Created: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom Created';
ctx.appendChild(element);
}
}
})(block);

The CreatedBy slot allows you to customize the created by section of the QuotesListTable container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuotesListTable } from '@dropins/storefront-quote-management/containers/QuotesListTable.js';
await provider.render(QuotesListTable, {
slots: {
CreatedBy: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom CreatedBy';
ctx.appendChild(element);
}
}
})(block);

The Status slot allows you to customize the status section of the QuotesListTable container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuotesListTable } from '@dropins/storefront-quote-management/containers/QuotesListTable.js';
await provider.render(QuotesListTable, {
slots: {
Status: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom Status';
ctx.appendChild(element);
}
}
})(block);

The LastUpdated slot allows you to customize the last updated section of the QuotesListTable container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuotesListTable } from '@dropins/storefront-quote-management/containers/QuotesListTable.js';
await provider.render(QuotesListTable, {
slots: {
LastUpdated: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom LastUpdated';
ctx.appendChild(element);
}
}
})(block);

The QuoteTemplate slot allows you to customize the quote template section of the QuotesListTable container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuotesListTable } from '@dropins/storefront-quote-management/containers/QuotesListTable.js';
await provider.render(QuotesListTable, {
slots: {
QuoteTemplate: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom QuoteTemplate';
ctx.appendChild(element);
}
}
})(block);

The QuoteTotal slot allows you to customize the quote total section of the QuotesListTable container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuotesListTable } from '@dropins/storefront-quote-management/containers/QuotesListTable.js';
await provider.render(QuotesListTable, {
slots: {
QuoteTotal: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom QuoteTotal';
ctx.appendChild(element);
}
}
})(block);

The EmptyQuotes slot allows you to customize the empty quotes section of the QuotesListTable container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuotesListTable } from '@dropins/storefront-quote-management/containers/QuotesListTable.js';
await provider.render(QuotesListTable, {
slots: {
EmptyQuotes: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom EmptyQuotes';
ctx.appendChild(element);
}
}
})(block);

The ItemRange slot allows you to customize the item range section of the QuotesListTable container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { QuotesListTable } from '@dropins/storefront-quote-management/containers/QuotesListTable.js';
await provider.render(QuotesListTable, {
slots: {
ItemRange: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom ItemRange';
ctx.appendChild(element);
}
}
})(block);

The slots for the RequestNegotiableQuoteForm container allow you to customize its appearance and behavior.

interface RequestNegotiableQuoteFormProps {
slots?: {
ErrorBanner?: SlotProps<{
message: string,
}>;
SuccessBanner?: SlotProps<{
message: string,
}>;
Title?: SlotProps<{
text: string,
}>;
CommentField?: SlotProps<{
formErrors: Record<string, string>;
isFormDisabled: boolean;
setFormErrors: (errors: Record<string, string>) => void;
}>;
QuoteNameField?: SlotProps<{
formErrors: Record<string, string>;
isFormDisabled: boolean;
setFormErrors: (errors: Record<string, string>) => void;
}>;
AttachFileField?: SlotProps<{
onChange: (files: File[]) => void, formErrors: Record<string, string>,
isFormDisabled: boolean,
attachedFiles: AttachedFile[]
}>;
AttachedFilesList?: SlotProps<{
files: AttachedFile[];
onRemove: (key: string) => void;
disabled?: boolean;
}>;
RequestButton?: SlotProps<{
requestNegotiableQuote: typeof requestNegotiableQuote;
formErrors: Record<string, string>;
isFormDisabled: boolean;
setIsFormDisabled: (isFormDisabled: boolean) => void;
}>;
SaveDraftButton?: SlotProps<{
requestNegotiableQuote: typeof requestNegotiableQuote;
formErrors: Record<string, string>;
isFormDisabled: boolean;
setIsFormDisabled: (isFormDisabled: boolean) => void;
}>;
};
}

The ErrorBanner slot allows you to customize the error banner section of the RequestNegotiableQuoteForm container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { RequestNegotiableQuoteForm } from '@dropins/storefront-quote-management/containers/RequestNegotiableQuoteForm.js';
await provider.render(RequestNegotiableQuoteForm, {
slots: {
ErrorBanner: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom ErrorBanner';
ctx.appendChild(element);
}
}
})(block);

The SuccessBanner slot allows you to customize the success banner section of the RequestNegotiableQuoteForm container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { RequestNegotiableQuoteForm } from '@dropins/storefront-quote-management/containers/RequestNegotiableQuoteForm.js';
await provider.render(RequestNegotiableQuoteForm, {
slots: {
SuccessBanner: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom SuccessBanner';
ctx.appendChild(element);
}
}
})(block);

The Title slot allows you to customize the title section of the RequestNegotiableQuoteForm container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { RequestNegotiableQuoteForm } from '@dropins/storefront-quote-management/containers/RequestNegotiableQuoteForm.js';
await provider.render(RequestNegotiableQuoteForm, {
slots: {
Title: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom Title';
ctx.appendChild(element);
}
}
})(block);

The CommentField slot allows you to customize the comment field section of the RequestNegotiableQuoteForm container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { RequestNegotiableQuoteForm } from '@dropins/storefront-quote-management/containers/RequestNegotiableQuoteForm.js';
await provider.render(RequestNegotiableQuoteForm, {
slots: {
CommentField: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom CommentField';
ctx.appendChild(element);
}
}
})(block);

The QuoteNameField slot allows you to customize the quote name field section of the RequestNegotiableQuoteForm container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { RequestNegotiableQuoteForm } from '@dropins/storefront-quote-management/containers/RequestNegotiableQuoteForm.js';
await provider.render(RequestNegotiableQuoteForm, {
slots: {
QuoteNameField: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom QuoteNameField';
ctx.appendChild(element);
}
}
})(block);

The RequestButton slot allows you to customize the request button section of the RequestNegotiableQuoteForm container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { RequestNegotiableQuoteForm } from '@dropins/storefront-quote-management/containers/RequestNegotiableQuoteForm.js';
await provider.render(RequestNegotiableQuoteForm, {
slots: {
RequestButton: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom RequestButton';
ctx.appendChild(element);
}
}
})(block);

The SaveDraftButton slot allows you to customize the save draft button section of the RequestNegotiableQuoteForm container.

import { render as provider } from '@dropins/storefront-quote-management/render.js';
import { RequestNegotiableQuoteForm } from '@dropins/storefront-quote-management/containers/RequestNegotiableQuoteForm.js';
await provider.render(RequestNegotiableQuoteForm, {
slots: {
SaveDraftButton: (ctx) => {
// Your custom implementation
const element = document.createElement('div');
element.innerText = 'Custom SaveDraftButton';
ctx.appendChild(element);
}
}
})(block);