@dropins/storefront-quote-management 1.0.0-beta1 → 1.0.0-beta10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +25 -26
- package/api/duplicateNegotiableQuote/duplicateNegotiableQuote.d.ts +1 -0
- package/api/getQuoteTemplates/graphql/getQuoteTemplates.d.ts +1 -1
- package/api/getStoreConfig/graphql/StoreConfigQuery.d.ts +1 -1
- package/api/graphql/NegotiableQuoteTemplateFragment.d.ts +1 -1
- package/api/sendForReview/index.d.ts +1 -1
- package/api/sendQuoteTemplateForReview/sendQuoteTemplateForReview.d.ts +10 -0
- package/api.js +10 -47
- package/api.js.map +1 -1
- package/chunks/AttachedFilesList.js +1 -1
- package/chunks/AttachedFilesList.js.map +1 -1
- package/chunks/ConfirmationModal.js +1 -1
- package/chunks/ConfirmationModal.js.map +1 -1
- package/chunks/ItemsQuoted.js +1 -1
- package/chunks/ItemsQuoted.js.map +1 -1
- package/chunks/ItemsQuotedTemplate.js +1 -1
- package/chunks/ItemsQuotedTemplate.js.map +1 -1
- package/chunks/LineItemNoteModal.js +4 -0
- package/chunks/LineItemNoteModal.js.map +1 -0
- package/chunks/NegotiableQuoteFragment.js +1 -0
- package/chunks/NegotiableQuoteFragment.js.map +1 -1
- package/chunks/NegotiableQuoteTemplateFragment.js +154 -6
- package/chunks/NegotiableQuoteTemplateFragment.js.map +1 -1
- package/chunks/OrderSummaryLine.js +1 -1
- package/chunks/OrderSummaryLine.js.map +1 -1
- package/chunks/QuoteTemplateCommentsList.js +1 -1
- package/chunks/QuoteTemplateCommentsList.js.map +1 -1
- package/chunks/RenameQuoteModal.js +4 -0
- package/chunks/RenameQuoteModal.js.map +1 -0
- package/chunks/ShippingAddressDisplay.js +1 -1
- package/chunks/ShippingAddressDisplay.js.map +1 -1
- package/chunks/addQuoteTemplateLineItemNote.js +23 -3
- package/chunks/addQuoteTemplateLineItemNote.js.map +1 -1
- package/chunks/duplicateNegotiableQuote.js +5 -5
- package/chunks/duplicateNegotiableQuote.js.map +1 -1
- package/chunks/getQuoteTemplates.js +13 -11
- package/chunks/getQuoteTemplates.js.map +1 -1
- package/chunks/negotiableQuotes.js +1 -1
- package/chunks/openQuoteTemplate.js +29 -8
- package/chunks/openQuoteTemplate.js.map +1 -1
- package/chunks/state.js +1 -1
- package/chunks/state.js.map +1 -1
- package/chunks/transform-quote-template.js +1 -1
- package/chunks/transform-quote-template.js.map +1 -1
- package/chunks/transform-quote.js +1 -1
- package/chunks/transform-quote.js.map +1 -1
- package/components/LineItemNoteModal/LineItemNoteModal.d.ts +2 -2
- package/components/ManageNegotiableQuoteTemplate/ManageNegotiableQuoteTemplate.d.ts +5 -2
- package/components/ProductListTable/ProductListTable.d.ts +5 -49
- package/components/ReferenceDocumentFormModal/ReferenceDocumentFormModal.d.ts +30 -0
- package/components/ReferenceDocumentFormModal/index.d.ts +11 -0
- package/components/ReferenceDocumentsList/ReferenceDocumentsList.d.ts +18 -0
- package/components/ReferenceDocumentsList/index.d.ts +11 -0
- package/components/index.d.ts +2 -0
- package/containers/ItemsQuoted/ItemsQuoted.d.ts +7 -7
- package/containers/ItemsQuoted.js +1 -1
- package/containers/ItemsQuotedTemplate/ItemsQuotedTemplate.d.ts +5 -1
- package/containers/ItemsQuotedTemplate.js +1 -1
- package/containers/ManageNegotiableQuote/ManageNegotiableQuote.d.ts +3 -0
- package/containers/ManageNegotiableQuote.js +1 -1
- package/containers/ManageNegotiableQuote.js.map +1 -1
- package/containers/ManageNegotiableQuoteTemplate/ManageNegotiableQuoteTemplate.d.ts +46 -5
- package/containers/ManageNegotiableQuoteTemplate.js +3 -1
- package/containers/ManageNegotiableQuoteTemplate.js.map +1 -1
- package/containers/OrderSummary.js +1 -1
- package/containers/OrderSummary.js.map +1 -1
- package/containers/OrderSummaryLine.js +1 -1
- package/containers/QuoteSummaryList/QuoteSummaryList.d.ts +1 -1
- package/containers/QuoteSummaryList.js +1 -1
- package/containers/QuoteSummaryList.js.map +1 -1
- package/containers/QuoteTemplatesListTable.js +1 -1
- package/containers/QuoteTemplatesListTable.js.map +1 -1
- package/containers/QuotesListTable.js +1 -1
- package/containers/QuotesListTable.js.map +1 -1
- package/containers/RequestNegotiableQuoteForm.js +1 -1
- package/containers/RequestNegotiableQuoteForm.js.map +1 -1
- package/containers/ShippingAddressDisplay/ShippingAddressDisplay.d.ts +2 -2
- package/containers/ShippingAddressDisplay.js +1 -1
- package/data/models/__fixtures__/negotiableQuoteModel.d.ts +5 -5
- package/data/models/negotiable-quote-model.d.ts +3 -2
- package/data/models/negotiable-quote-template-model.d.ts +4 -39
- package/data/models/store-config-model.d.ts +2 -0
- package/data/transforms/__fixtures__/negotiableQuoteData.d.ts +8 -0
- package/data/transforms/__fixtures__/negotiableQuoteTemplateData.d.ts +616 -75
- package/data/transforms/__fixtures__/storeConfigData.d.ts +4 -0
- package/data/transforms/transform-history.d.ts +15 -0
- package/data/transforms/transform-quote-items.d.ts +15 -0
- package/hooks/useItemsQuotedTemplate.d.ts +15 -0
- package/hooks/useReferenceDocumentLinks.d.ts +34 -0
- package/hooks/useRemoveTemplateItems.d.ts +25 -0
- package/hooks/useRenameTemplate.d.ts +71 -0
- package/hooks/useUpdateTemplateQuantities.d.ts +27 -0
- package/i18n/en_US.json.d.ts +93 -6
- package/lib/itemFormatters.d.ts +1 -1
- package/lib/priceCalculators.d.ts +1 -1
- package/package.json +1 -1
- package/render.js +3 -3
- package/render.js.map +1 -1
- package/chunks/LineItemNoteModal2.js +0 -4
- package/chunks/LineItemNoteModal2.js.map +0 -1
- package/chunks/TabbedContent.js +0 -4
- package/chunks/TabbedContent.js.map +0 -1
package/render.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
(function(o,
|
|
3
|
+
(function(o,t){try{if(typeof document<"u"){const e=document.createElement("style"),r=t.styleId;for(const a in t.attributes)e.setAttribute(a,t.attributes[a]);e.setAttribute("data-dropin",r),e.appendChild(document.createTextNode(o));const n=document.querySelector('style[data-dropin="sdk"]');if(n)n.after(e);else{const a=document.querySelector('link[rel="stylesheet"], style');a?a.before(e):document.head.append(e)}}}catch(e){console.error("dropin-styles (injectCodeFunction)",e)}})(`.quote-management-quote-history-log{padding:var(--spacing-small)}.quote-management-quote-history-log__entries{display:flex;flex-direction:column;gap:var(--spacing-small)}.quote-management-quote-history-log__entry{border:1px solid var(--color-neutral-400);padding:var(--spacing-small);background-color:var(--color-neutral-50)}.quote-management-quote-history-log__entry-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--spacing-xsmall);flex-wrap:wrap;gap:var(--spacing-xsmall)}.quote-management-quote-history-log__entry-meta{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-quote-history-log__entry-date,.quote-management-quote-history-log__entry-author{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-1-emphasized-letter-spacing);color:var(--color-neutral-800)}.quote-management-quote-history-log__entry-type{background-color:var(--color-neutral-200);color:var(--color-neutral-800);padding:var(--spacing-xxsmall) var(--spacing-xsmall);font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing);white-space:nowrap;border:1px solid var(--color-neutral-300)}.quote-management-quote-history-log__entry-changes{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-quote-history-log__entry-change{font:var(--type-body-2-font);letter-spacing:var(--type-body-2-letter-spacing);color:var(--color-neutral-700);padding-left:var(--spacing-small);position:relative}.quote-management-quote-history-log__entry-change:before{position:absolute;left:0;color:var(--color-neutral-600);font-weight:700}.quote-management-quote-history-log__empty{text-align:center;color:var(--color-neutral-700);font:var(--type-body-1-font);letter-spacing:var(--type-body-1-letter-spacing);font-style:italic;padding:var(--spacing-big)}@media only screen and (min-width: 768px){.quote-management-quote-history-log__entry-header{flex-wrap:nowrap}.quote-management-quote-history-log__entry-meta{flex-direction:row;gap:var(--spacing-xsmall);align-items:center}}
|
|
4
4
|
.quote-management-quote-comments-list{list-style:none;padding:0;margin:0}.quote-management-quote-comments-list__empty-state{color:var(--color-neutral-800);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);padding:var(--spacing-small) 0;margin:0;list-style:none}.quote-management-quote-comments-list__item{padding:var(--spacing-small) 0;border-bottom:1px solid var(--color-neutral-300)}.quote-management-quote-comments-list__item:last-child{border-bottom:none}.quote-management-quote-comments-list__header{display:flex;align-items:baseline;margin-bottom:var(--spacing-xxsmall);gap:var(--spacing-xxsmall)}.quote-management-quote-comments-list__date,.quote-management-quote-comments-list__by,.quote-management-quote-comments-list__author{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);color:var(--color-neutral-800)}.quote-management-quote-comments-list__date{white-space:nowrap}.quote-management-quote-comments-list__text{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing);color:var(--color-neutral-800);margin:0;word-wrap:break-word}.quote-management-quote-comments-list__attachments{margin-top:var(--spacing-xsmall);display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-quote-comments-list__attachments-label{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);color:var(--color-neutral-800);margin-bottom:var(--spacing-xxsmall)}.quote-management-quote-comments-list__attachment-link{font:var(--type-body-2-font);letter-spacing:var(--type-body-2-letter-spacing);color:var(--color-brand-600);text-decoration:underline;transition:color .2s ease;display:block;padding-left:var(--spacing-small);position:relative}.quote-management-quote-comments-list__attachment-link:hover{color:var(--color-brand-700);text-decoration:underline}.quote-management-quote-comments-list__attachment-link:focus{outline:2px solid var(--color-brand-600);outline-offset:2px}@media only screen and (min-width: 768px){.quote-management-quote-comments-list__item{padding:var(--spacing-medium) 0}}
|
|
5
5
|
.quote-management-shipping-address-display{display:flex;flex-direction:column;gap:var(--spacing-xsmall);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-800)}.quote-management-shipping-address-display__field{margin:0;word-wrap:break-word;overflow-wrap:break-word}.quote-management-shipping-address-display__name{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing)}.quote-management-shipping-address-display--empty{padding:var(--spacing-medium);background-color:var(--color-neutral-50)}.quote-management-shipping-address-display__no-address{margin:0;color:var(--color-neutral-700);font-style:italic}
|
|
6
6
|
.attached-files-list{display:flex;flex-direction:column;gap:var(--spacing-small, 8px);margin:var(--spacing-medium, 16px) 0}.attached-files-list__item{border:1px solid var(--color-neutral-300, #d1d5db);border-radius:var(--border-radius, 4px);padding:var(--spacing-small, 8px) var(--spacing-medium, 12px);background-color:var(--color-neutral-50, #f9fafb);transition:all .2s ease-in-out}.attached-files-list__item--error{border-color:var(--color-error, #ef4444);background-color:var(--color-error-light, #fef2f2)}.attached-files-list__item--success{border-color:var(--color-success, #10b981)}.attached-files-list__item--uploading{opacity:.8}.attached-files-list__item-main{display:flex;align-items:center;gap:var(--spacing-small, 8px)}.attached-files-list__item-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0}.attached-files-list__spinner{width:20px;height:20px;border:2px solid var(--color-neutral-200, #e5e7eb);border-top-color:var(--color-primary, #3b82f6);border-radius:50%;animation:attached-files-list__spin .8s linear infinite}@keyframes attached-files-list__spin{to{transform:rotate(360deg)}}.attached-files-list__success-icon{color:var(--color-success, #10b981)}.attached-files-list__error-icon{color:var(--color-error, #ef4444)}.attached-files-list__item-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--spacing-xsmall, 4px)}.attached-files-list__item-name{font-weight:var(--font-weight-medium, 500);font-size:var(--font-size-base, 14px);line-height:1.4;color:var(--color-text-primary, #111827);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attached-files-list__item-size{font-size:var(--font-size-small, 12px);line-height:1.4;color:var(--color-text-secondary, #6b7280)}.attached-files-list__remove-button{flex-shrink:0;padding:var(--spacing-xsmall, 4px);min-width:auto}.attached-files-list__remove-button:disabled{opacity:.5;cursor:not-allowed}.attached-files-list__item-error{margin-top:var(--spacing-small, 8px);padding-left:32px;font-size:var(--font-size-small, 12px);color:var(--color-error, #ef4444);line-height:1.4}@media (max-width: 640px){.attached-files-list__item-name{font-size:var(--font-size-small, 12px)}.attached-files-list__item-size{font-size:var(--font-size-xsmall, 11px)}}
|
|
7
|
-
.request-negotiable-quote-form{display:grid;gap:var(--spacing-small);align-items:flex-end;color:var(--color-neutral-800);width:100%}.request-negotiable-quote-form input:user-invalid,.request-negotiable-quote-form textarea:user-invalid{border-color:var(--color-alert-800)}.request-negotiable-quote-form__title{font:var(--type-body-1-emphasized-font);letter-spacing:var(--type-body-1-emphasized-letter-spacing)}.request-negotiable-quote-form__actions,.request-negotiable-quote-form [data-slot=AttachFileField]{display:flex;gap:var(--spacing-small)}.request-negotiable-quote-form__actions{justify-content:flex-start}.request-negotiable-quote-form__attach-file-field{justify-content:end}.request-negotiable-quote-form__attach-file-field label{background:none;color:var(--color-brand-500);font:var(--type-body-1-strong-font)}.request-negotiable-quote-form__attach-file-field label:hover{background:none}.request-negotiable-quote-form__error-banner svg{color:var(--color-alert-800)}.quote-management-actions-bar__container{container-type:inline-size;container-name:actions-bar-container}.quote-management-actions-bar{background:var(--color-neutral-200);padding:var(--spacing-xsmall);display:flex;gap:var(--spacing-small);justify-content:space-between;align-items:center}.quote-management-actions-bar__dropdown{width:max-content}.quote-management-actions-bar__buttons{display:flex}.quote-management-actions-bar__button>span{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}@container actions-bar-container (max-width: 768px){.quote-management-actions-bar{flex-direction:column;align-items:flex-start;gap:var(--spacing-xsmall)}.quote-management-actions-bar__dropdown{width:100%}.quote-management-actions-bar__buttons{flex-direction:column;align-items:flex-start;gap:var(--spacing-xsmall);width:100%}.quote-management-actions-bar__button{width:100%}}.quote-management-items-quoted{display:flex;flex-direction:column;gap:var(--spacing-big)}.quote-management-manage-negotiable-quote{display:grid;gap:var(--spacing-small);color:var(--color-neutral-800);width:100%;container-type:inline-size}.quote-management-manage-negotiable-quote__header{display:flex;gap:var(--spacing-big);align-items:center}.quote-management-manage-negotiable-quote__quote-name>*{font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);margin:0}.quote-management-manage-negotiable-quote__quote-name-wrapper{display:flex;align-items:center;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote__quote-name-title{font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);margin:0}.quote-management-manage-negotiable-quote__rename-button{background:none;border:none;padding:var(--spacing-xsmall);cursor:pointer;display:inline-flex;align-items:center}.quote-management-manage-negotiable-quote__rename-button:disabled{cursor:not-allowed;opacity:.5}.quote-management-manage-negotiable-quote__quote-status>*{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing);border:2px solid var(--color-neutral-300);padding:var(--spacing-xxsmall)}.quote-management-manage-negotiable-quote__banner{width:100%}.quote-management-manage-negotiable-quote__details{display:flex;flex-direction:row;gap:var(--spacing-xsmall);justify-content:space-between;align-items:center;flex-wrap:wrap}.quote-management-manage-negotiable-quote__detail{display:flex;flex-wrap:wrap;gap:var(--spacing-xxsmall);align-items:baseline}.quote-management-manage-negotiable-quote__detail-title{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing)}.quote-management-manage-negotiable-quote__detail-content{font:var(--type-body-2-font);letter-spacing:var(--type-body-2-letter-spacing)}.quote-management-manage-negotiable-quote__item-actions{justify-content:flex-start}.quote-management-manage-negotiable-quote__quote-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote__shipping-information-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote__shipping-information-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote__quote-comments-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote__quote-comments-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote__footer{display:flex;gap:var(--spacing-small);justify-content:flex-start}@container (max-width: 768px){.quote-management-manage-negotiable-quote__header{flex-direction:column}.quote-management-manage-negotiable-quote__action-bar{flex-direction:column;align-items:flex-start}.quote-management-manage-negotiable-quote__quote-actions{justify-content:flex-start}}.quote-order-summary{display:grid;position:relative;grid-auto-flow:row;padding:var(--spacing-medium)}.quote-order-summary__primary{background-color:var(--color-neutral-200)}.quote-order-summary__secondary{background-color:var(--color-neutral-50)}.quote-order-summary__content{display:grid;gap:var(--spacing-xsmall);margin-top:var(--spacing-small)}.quote-order-summary__heading{display:grid;font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-2-strong-letter-spacing);color:var(--color-neutral-800);gap:var(--spacing-small)}.quote-order-summary__discount .quote-order-summary__label,.quote-order-summary__discount .quote-order-summary__price{color:var(--color-warning-800)}.quote-order-summary__taxes .dropin-divider:last-child{margin-bottom:0}.quote-order-summary__total{margin-top:var(--spacing-medium)}.quote-order-summary__heading .quote-order-summary__divider-primary,.quote-order-summary__heading .quote-order-summary__divider-secondary{width:100%;margin:0}.quote-order-summary__divider-secondary{margin:0}.quote-order-summary__taxEntry.quote-order-summary__entry{margin-top:0}.quote-order-summary__entry,.quote-order-summary__taxEntry{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-xxsmall);align-items:center;color:var(--color-neutral-800)}.quote-order-summary__caption{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing);grid-column:span 2;color:var(--color-neutral-700)}.quote-order-summary__shipping--edit{display:grid;grid-column:1 / span 2;gap:var(--spacing-small);padding-top:var(--spacing-small);padding-left:var(--spacing-small)}a.quote-order-summary__shippingLink{text-decoration:underline}.quote-order-summary__shipping--hide{display:none!important}.quote-order-summary__shipping--edit button{width:var(--spacing-huge);justify-self:end}.quote-order-summary__shipping--zip,.quote-order-summary__shipping--state{background-color:var(--color-neutral-50)}.quote-order-summary__taxes .dropin-accordion-section__content-container{gap:var(--spacing-small);margin:var(--spacing-small) 0}.quote-order-summary__spinner{margin:0 auto;position:absolute;z-index:999;left:0;right:0;top:calc(50% - (var(--size) / 2));bottom:0}.quote-order-summary__label,.quote-order-summary__price{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.quote-order-summary__price{text-align:right;text-transform:uppercase}.quote-order-summary__label--muted{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-700)}.quote-order-summary__price--muted{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.quote-order-summary__label--bold,.quote-order-summary__price--bold{font:var(--type-body-1-emphasized-font);letter-spacing:var(--type-body-1-emphasized-letter-spacing)}.quote-management-product-list-table-container{display:flex;flex-direction:column;gap:var(--spacing-small)}.quote-management-product-list-table__checkbox{align-self:center;justify-self:center}.quote-management-product-list-table__product-name-container{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__product-name{font:var(--type-body-1-font);letter-spacing:var(--type-body-1-letter-spacing)}.quote-management-product-list-table__configurable-option{display:flex;flex-direction:row;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__configurable-option-label{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing)}.quote-management-product-list-table__configurable-option-value{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.quote-management-product-list-table__bundle-option{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__bundle-option-label{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing)}.quote-management-product-list-table__bundle-option-values{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__bundle-option-value{display:flex;flex-direction:row;align-items:center;gap:var(--spacing-xxsmall);font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.quote-management-product-list-table__bundle-option-value-original-price{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.quote-management-product-list-table__sku{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing)}.quote-management-product-list-table__quantity{font:var(--type-body-1-font);letter-spacing:var(--type-body-1-letter-spacing);display:block;justify-self:center}.quote-management-product-list-table__quantity-input{width:80px}@media only screen and (max-width: 767px){.quote-management-product-list-table__quantity-input{width:100%;max-width:200px}}.quote-management-product-list-table__discount-container{display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--spacing-xxsmall);align-items:baseline}.quote-management-product-list-table-container__submit-container{display:flex;justify-content:flex-end}.quote-management-product-list-table__notes-row-wrapper{margin-left:calc(var(--spacing-medium) * -1);margin-right:calc(var(--spacing-medium) * -1);margin-top:calc(var(--spacing-small) * -1);margin-bottom:calc(var(--spacing-small) * -1);background-color:var(--color-neutral-100);box-shadow:100vw 0 0 0 var(--color-neutral-100),-100vw 0 0 0 var(--color-neutral-100)}.quote-management-product-list-table__notes-container{padding:var(--spacing-medium)}.quote-management-product-list-table__notes-header{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-letter-spacing);color:var(--color-neutral-600);margin-bottom:var(--spacing-small);text-transform:uppercase}.quote-management-product-list-table__notes-list{display:flex;flex-direction:column;gap:var(--spacing-small)}.quote-management-product-list-table__note-item{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__note-content{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-800)}.quote-management-product-list-table__note-meta{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);color:var(--color-neutral-800)}.quote-management-product-list-table__note-text{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-800);padding-left:0}.quote-management-product-list-table__note-edit-icon{cursor:pointer;opacity:.6}.quote-management-product-list-table__note-edit-icon:hover{opacity:1}.quote-management-quote-prices-summary{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.quote-management-quote-prices-summary__entry{display:flex;flex-direction:row;justify-content:space-between;gap:10px;width:100%}.quote-management-quote-prices-summary__accordion,.quote-management-quote-prices-summary__label{flex-grow:1}.quote-management-quote-prices-summary__label--strong{font:var(--type-body-1-strong-font);letter-spacing:var(--type-body-1-strong-letter-spacing)}.quote-management-quote-prices-summary__value{flex-grow:1;text-align:right}.quote-management-quote-summary-list{container-type:inline-size;container-name:quote-summary-list}.quote-management-quote-summary-list__background--secondary{background-color:var(--color-neutral-200)}.quote-management-quote-summary-list__heading{display:grid;row-gap:var(--spacing-xsmall);padding:var(--spacing-medium) 0 0 0;font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);color:var(--color-neutral-800)}.quote-management-quote-summary-list__heading--full-width{width:100%}.quote-management-quote-summary-list__heading-divider{width:100%;margin:var(--spacing-xxsmall) 0 var(--spacing-medium) 0}.quote-management-quote-summary-list__content{display:grid;grid-template-columns:1fr;padding:0}.quote-management-quote-summary-list__out-of-stock-message{margin:calc(-1 * var(--spacing-xsmall)) 0 var(--spacing-medium) 0}.quote-management-quote-summary-list-footer__action,.quote-management-quote-summary-list-footer__action:focus .quote-management-quote-summary-list-footer__action:active,.quote-management-quote-summary-list-footer__action:link{font:var(--type-body-2-strong-font);margin:0 auto;width:auto;margin-top:var(--spacing-medium);margin-bottom:var(--spacing-medium)}.quote-management-quote-summary-list-footer__action:hover{text-decoration:underline;text-underline-offset:var(--spacing-xxsmall);background:transparent;color:var(--color-brand-700)}.quote-management-quote-summary-list-footer__action:visited{background-color:transparent}.quote-management-quote-summary-list-accordion{border-left:var(--shape-border-width-2) solid var(--color-neutral-400);border-right:var(--shape-border-width-2) solid var(--color-neutral-400)}.quote-management-quote-summary-list-accordion__section{margin:var(--spacing-medium)}.dropin-cart-item__quantity{width:fit-content}@container quote-summary-list (width >= 768px){.quote-management-quote-summary-list__out-of-stock-message{margin:calc(-1 * var(--spacing-small)) 0 var(--spacing-xxbig) 0}}@container quote-summary-list (width >= 1024px){.quote-management-quote-summary-list__content,.quote-management-quote-summary-list__heading{grid-column:1 / span 8}.quote-management-quote-summary-list__heading--full-width{grid-column:1 / span 12}.quote-management-quote-summary-list__content{padding:0}}.quotes-list-table__empty-state{padding:var(--spacing-large);text-align:center;color:var(--color-neutral-600);border-top:var(--shape-border-width-1) solid var(--color-neutral-200)}.quotes-list-table__footer{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-medium);border-top:var(--shape-border-width-1) solid var(--color-neutral-200);gap:var(--spacing-medium)}.quotes-list-table__item-range{flex:1;color:var(--color-neutral-800);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.quotes-list-table__pagination{flex:0 0 auto;display:flex;justify-content:center}.quotes-list-table__page-size-picker{flex:1;display:flex;justify-content:flex-end;align-items:center;gap:var(--spacing-small);color:var(--color-neutral-800);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.quotes-list-table__page-size-picker>span{display:inline-flex;align-items:baseline}.quotes-list-table__page-size-picker .dropin-picker{display:inline-flex;align-items:center;margin:0 var(--spacing-xsmall);vertical-align:center}.quotes-list-table__page-size-picker .dropin-picker__select{height:auto;min-height:var(--sizing-medium);line-height:1.2;vertical-align:baseline}.quote-management-quote-templates-list-table,.quote-management-quote-templates-list-table__table{width:100%}.quote-templates-list-table__empty-state{padding:var(--spacing-large);text-align:center}.quote-templates-list-table__footer{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-medium) 0;gap:var(--spacing-medium);flex-wrap:wrap}.quote-templates-list-table__item-range{display:flex;align-items:center;color:var(--color-neutral-700);font-size:var(--type-body-2-font-size)}.quote-templates-list-table__pagination{display:flex;justify-content:center;flex:1}.quote-templates-list-table__page-size-picker{display:flex;align-items:center;gap:var(--spacing-xsmall);color:var(--color-neutral-700);font-size:var(--type-body-2-font-size)}.quote-management-quote-templates-list-table__actions-cell{display:flex;gap:var(--spacing-xsmall)}.quote-management-quote-templates-list-table__actions-cell>*{white-space:nowrap}.dropin-modal__body.dropin-modal__body--medium{padding:var(--spacing-small)}.confirmation-modal__content{display:flex;flex-direction:column}.confirmation-modal__banner{margin-left:calc(-1 * var(--spacing-small));margin-right:calc(-1 * var(--spacing-small));margin-top:calc(-1 * var(--spacing-small));margin-bottom:var(--spacing-medium)}.confirmation-modal__title{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-1-letter-spacing);color:var(--color-neutral-800);margin-bottom:var(--spacing-medium);padding-bottom:var(--spacing-medium)}.confirmation-modal__message{margin-bottom:var(--spacing-medium);text-align:left;color:var(--color-neutral-800)}.confirmation-modal__actions{display:flex;justify-content:flex-end;gap:var(--spacing-medium);margin-top:var(--spacing-big);margin-right:var(--spacing-small);padding-bottom:var(--spacing-small)}div.dropin-modal__body.dropin-modal__body--medium>div.dropin-modal__content{margin:var(--spacing-small) var(--spacing-small) var(--spacing-small) var(--spacing-small)!important}.dropin-modal:has(.confirmation-modal__banner) .dropin-modal__header,.dropin-modal__body:has(.confirmation-modal__banner) .dropin-modal__header{display:none!important;height:0!important;padding:0!important;margin:0!important}@media only screen and (max-width: 768px){.confirmation-modal__banner .dropin-in-line-alert{padding:var(--spacing-xsmall) var(--spacing-small)!important;gap:var(--spacing-xsmall)!important}.confirmation-modal__actions{flex-direction:column-reverse;gap:var(--spacing-small)}.confirmation-modal__actions button{width:100%}}.quote-management-tabbed-content{width:100%}.quote-management-tabbed-content__tabs{display:flex;margin-bottom:-1px}.quote-management-tabbed-content__tab{background:var(--color-neutral-100);color:var(--color-neutral-700);border:solid 1px var(--color-neutral-400);padding:var(--spacing-xsmall) var(--spacing-medium);margin-left:-1px;cursor:pointer;font:var(--type-body-2-font);letter-spacing:var(--type-body-2-letter-spacing)}.quote-management-tabbed-content__tab:first-child{margin-left:unset}.quote-management-tabbed-content__tab:hover{background:var(--color-neutral-300);color:var(--color-neutral-700)}.quote-management-tabbed-content__tab--active{background:var(--color-neutral-50);color:var(--color-neutral-800);border-bottom:none}.quote-management-tabbed-content__tab--active:hover{background:var(--color-neutral-50);color:var(--color-neutral-800)}.quote-management-tabbed-content__active-tab-content{background:var(--color-neutral-50);padding:var(--spacing-small);border:solid 1px var(--color-neutral-400)}.quote-management-rename-quote-modal__error-banner,.quote-management-rename-quote-modal__success-banner{margin-bottom:var(--spacing-medium)}.dropin-modal__header-title-content{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-1-letter-spacing);color:var(--color-neutral-800);margin-top:var(--spacing-small);margin-left:var(--spacing-small)}.quote-management-rename-quote-modal__content{display:flex;flex-direction:column;gap:var(--spacing-medium);margin-bottom:var(--spacing-medium);width:100%}.quote-management-rename-quote-modal__error-text{color:var(--color-alert-800);font:var(--type-body-2-default-font);margin-top:var(--spacing-xsmall)}.quote-management-rename-quote-modal__actions{display:flex;justify-content:flex-start;gap:var(--spacing-small);margin-top:var(--spacing-medium);width:100%}.quote-management-rename-quote-modal__cancel-button{order:1}.quote-management-rename-quote-modal__save-button{order:2}@media only screen and (min-width: 768px) and (max-width: 1023px){.quote-management-rename-quote-modal .dropin-modal__close-button{top:var(--spacing-small);right:var(--spacing-small)}.quote-management-rename-quote-modal__actions{gap:var(--spacing-medium)}}@media only screen and (min-width: 1024px){.quote-management-rename-quote-modal__actions{gap:var(--spacing-medium)}}@media only screen and (max-width: 767px){.quote-management-rename-quote-modal .dropin-modal__close-button{margin:var(--spacing-small)}.quote-management-rename-quote-modal__error-banner .dropin-in-line-alert{padding:var(--spacing-xsmall) var(--spacing-small)!important;gap:var(--spacing-xsmall)!important}.quote-management-rename-quote-modal__content{gap:var(--spacing-small)}.quote-management-rename-quote-modal__actions{flex-direction:column-reverse;gap:var(--spacing-small);margin-top:var(--spacing-small)}.quote-management-rename-quote-modal__actions button{width:100%}.quote-management-rename-quote-modal__cancel-button{order:2}.quote-management-rename-quote-modal__save-button{order:1}}.quote-management-manage-negotiable-quote-template{display:grid;gap:var(--spacing-small);color:var(--color-neutral-800);width:100%;container-type:inline-size}.quote-management-manage-negotiable-quote-template__header{display:flex;gap:var(--spacing-big);align-items:center}.quote-management-manage-negotiable-quote-template__template-name>*{font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__template-id>*{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing);border:2px solid var(--color-neutral-300);padding:var(--spacing-xxsmall)}.quote-management-manage-negotiable-quote-template__banner{width:100%}.quote-management-manage-negotiable-quote-template__details{display:flex;flex-direction:row;gap:var(--spacing-xsmall);justify-content:space-between;align-items:center;flex-wrap:wrap}.quote-management-manage-negotiable-quote-template__detail{display:flex;flex-wrap:wrap;gap:var(--spacing-xxsmall);align-items:baseline}.quote-management-manage-negotiable-quote-template__detail-title{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing)}.quote-management-manage-negotiable-quote-template__detail-content{font:var(--type-body-2-font);letter-spacing:var(--type-body-2-letter-spacing)}.quote-management-manage-negotiable-quote-template__reference-documents-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote-template__reference-documents-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__reference-documents{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-manage-negotiable-quote-template__items-table{width:100%}.quote-management-manage-negotiable-quote-template__comments-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote-template__comments-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__history-log-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote-template__history-log-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__footer{display:flex;gap:var(--spacing-small);justify-content:flex-start}@container (max-width: 768px){.quote-management-manage-negotiable-quote-template__header{flex-direction:column}}.quote-management-line-item-note-modal .dropin-modal__header-title-content{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-2-strong-letter-spacing);color:var(--color-neutral-800);margin-top:var(--spacing-small);margin-left:var(--spacing-small)}.quote-management-line-item-note-modal__error-banner,.quote-management-line-item-note-modal__success-banner{margin-bottom:var(--spacing-medium)}.quote-management-line-item-note-modal__content{display:flex;flex-direction:column;gap:var(--spacing-medium);margin-bottom:var(--spacing-medium);width:100%}.quote-management-line-item-note-modal__details{width:100%;overflow-x:auto;margin-bottom:var(--spacing-small)}.quote-management-line-item-note-modal__details-table{width:100%}.quote-management-line-item-note-modal__product-info{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-line-item-note-modal__product-name,.quote-management-line-item-note-modal__stock,.quote-management-line-item-note-modal__discount{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing);color:var(--color-neutral-800)}.quote-management-line-item-note-modal__product-sku{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing);color:var(--color-neutral-600)}.quote-management-line-item-note-modal__quantity-input{width:100px;min-width:100px;margin:0}.quote-management-line-item-note-modal__quantity-input input{padding:var(--spacing-xsmall) var(--spacing-small);font:var(--type-body-2-default-font);width:100%}.quote-management-line-item-note-modal__table-error{color:var(--color-alert-800);font:var(--type-body-2-default-font);margin-top:var(--spacing-xsmall);padding:var(--spacing-xsmall) var(--spacing-small)}.quote-management-line-item-note-modal__form-field{display:flex;flex-direction:column;gap:var(--spacing-xxsmall);width:100%}.quote-management-line-item-note-modal__error-text{color:var(--color-alert-800);font:var(--type-body-2-default-font);margin-top:var(--spacing-xxsmall)}.quote-management-line-item-note-modal__helper-text{color:var(--color-neutral-600);font:var(--type-body-3-default-font);margin-top:var(--spacing-xxsmall)}.quote-management-line-item-note-modal__actions{display:flex;justify-content:flex-start;gap:var(--spacing-small);margin-top:var(--spacing-medium);width:100%}.quote-management-line-item-note-modal__cancel-button{order:1}.quote-management-line-item-note-modal__confirm-button{order:2}@media only screen and (min-width: 768px) and (max-width: 1023px){.quote-management-line-item-note-modal .dropin-modal__close-button{top:var(--spacing-small);right:var(--spacing-small)}.quote-management-line-item-note-modal__actions{gap:var(--spacing-medium)}}@media only screen and (min-width: 1024px){.quote-management-line-item-note-modal__actions{gap:var(--spacing-medium)}}@media only screen and (max-width: 767px){.quote-management-line-item-note-modal .dropin-modal__close-button{margin:var(--spacing-small)}.quote-management-line-item-note-modal__error-banner .dropin-in-line-alert{padding:var(--spacing-xsmall) var(--spacing-small);gap:var(--spacing-xsmall)}.quote-management-line-item-note-modal__content{gap:var(--spacing-small)}.quote-management-line-item-note-modal__details{overflow-x:auto;-webkit-overflow-scrolling:touch}.quote-management-line-item-note-modal__actions{flex-direction:column-reverse;gap:var(--spacing-small);margin-top:var(--spacing-small)}.quote-management-line-item-note-modal__actions button{width:100%}.quote-management-line-item-note-modal__cancel-button{order:2}.quote-management-line-item-note-modal__confirm-button{order:1}}`,{styleId:"quote-management"});
|
|
8
|
-
import{jsx as t}from"@dropins/tools/preact-jsx-runtime.js";import{Render as i}from"@dropins/tools/lib.js";import{useState as n,useEffect as l}from"@dropins/tools/preact-hooks.js";import{UIProvider as u}from"@dropins/tools/components.js";import{events as c}from"@dropins/tools/event-bus.js";const d={cancel:"Cancel",confirm:"Confirm"},m={Request:{title:"Request a Quote",comment:"Comment",commentError:"Please add your comment",quoteName:"Quote name",quoteNameError:"Please add a quote name",attachmentsError:"Error uploading attachments",maxFilesExceeded:"Maximum {maxFiles} file(s) allowed",maxFileSizeExceeded:"File size exceeds maximum limit of {maxSize}",invalidFileType:"File type not accepted",removeFile:"Remove file",uploading:"Uploading...",uploadSuccess:"Upload complete",uploadError:"Upload failed",requestCta:"Request a Quote",saveDraftCta:"Save as draft",error:{header:"Error",unauthenticated:"Please sign in to request a quote.",unauthorized:"You are not authorized to request a quote.",missingCart:"Could not find a valid cart."},success:{header:"Success",submitted:"Quote request submitted successfully!",draftSaved:"Quote saved as draft successfully!"}},Manage:{createdLabel:"Created:",salesRepLabel:"Sales Rep:",expiresLabel:"Expires:",actionsLabel:"Actions",actions:{remove:"Remove"},attachFile:"Attach File",attachFiles:"Attach Files",fileUploadError:"Failed to upload file. Please try again.",maxFilesExceeded:"Maximum {maxFiles} file(s) allowed",maxFileSizeExceeded:"File size exceeds maximum limit of {maxSize}",invalidFileType:"File type not accepted",removeFile:"Remove file",uploading:"Uploading...",uploadSuccess:"Upload complete",uploadError:"Upload failed",bannerTitle:"Alert",bannerStatusMessages:{submitted:"This quote is currently locked for editing. It will become available once released by the Merchant.",pending:"This quote is currently locked for editing. It will become available once released by the Merchant.",expired:"Your quote has expired and the product prices have been updated as per the latest prices in your catalog. You can either re-submit the quote to seller for further negotiation or go to checkout."},actionButtons:{close:"Close quote",delete:"Delete quote",print:"Print quote",createTemplate:"Create quote template",createCopy:"Create copy",sendForReview:"Send for review"},confirmationModal:{cancel:"Cancel",delete:{title:"Delete Quote",message:"Are you sure you want to delete this quote?",confirm:"Delete",errorHeading:"Error",errorFallback:"Failed to delete quote",successHeading:"Success",successDescription:"Quote has been successfully deleted"},duplicate:{title:"Duplicate Quote",message:"Are you sure you want to create a copy of this quote?",confirm:"Create Copy",errorHeading:"Error",errorFallback:"Failed to duplicate quote",successHeading:"Success",successDescription:"Quote has been successfully duplicated. You will be redirected to the new quote shortly."},close:{message:"Are you sure you want to close this quote?",confirm:"Close",confirmLoading:"Closing...",successHeading:"Success",successDescription:"Quote has been successfully closed"},createTemplate:{message:"Are you sure you want to create a quote template from this quote?",confirm:"Create Template",confirmLoading:"Creating...",successHeading:"Success",successDescription:"Quote template has been successfully created",errorHeading:"Error",errorFallback:"Failed to create quote template"},noItemsSelected:{title:"Please Select Quote Items",message:"Please select at least one quote item to proceed.",confirm:"Ok"}},shippingInformation:{title:"Shipping Information"},shippingAddress:{noAddress:"No shipping address has been set for this quote."},quoteComments:{title:"Quote Comments",placeholder:"Add your comment",emptyState:"No comments yet",by:"by",attachments:"Attachments:"},productListTable:{headers:{productName:"Product name",sku:"SKU",price:"Price",quantity:"Quantity",discount:"Discount",subtotal:"Subtotal",actions:"Actions"},submitButton:"Update",actions:{editNoteToSeller:"Edit note to seller",remove:"Remove"},notes:{header:"NOTES",leftANote:"left a note:",buyer:"Buyer"}},rename:{title:"Rename Quote",quoteNameLabel:"Quote name",reasonLabel:"Reason for change",renameButton:"Rename",cancelButton:"Cancel",errorHeading:"Error",quoteNameRequired:"Quote name is required",errorDefault:"Failed to rename quote. Please try again.",successHeading:"Success",successMessage:"Quote renamed successfully!"},lineItemNote:{title:"Leave a note to seller",productLabel:"Name & SKU",skuLabel:"SKU",priceLabel:"Price",stockLabel:"Stock",quantityLabel:"Qty",discountLabel:"Discount",subtotalLabel:"Subtotal",noteLabel:"Note to seller",notePlaceholder:"Can I get a discount on this?",noteHelper:"The seller will see the note when you send the quote back.",confirmButton:"Confirm",cancelButton:"Cancel",noteError:"Please enter a note",quantityError:"Quantity must be greater than 0"},tabbedContent:{itemsQuoted:"Items quoted",comments:"Comments",historyLog:"History log"},quotePricesSummary:{subtotal:{excludingTax:"Quote Subtotal (excluding tax)"},appliedTaxes:"Applied Taxes",grandTotal:{includingTax:"Quote Grand Total (including tax)"}},updateQuantitiesModal:{title:"Change Quote Items",description:"Making changes to any quote item changes the terms of the quote. After you update the quote, return it to the seller for review and approval.",cancelButton:"Cancel",updateButton:"Apply Changes",successHeading:"Success",successMessage:"Quote quantities have been successfully updated.",errorHeading:"Error",errorMessage:"Failed to update quote quantities. Please try again."},removeItemsModal:{title:"Change Quote Items",description:"Making changes to any quote item changes the terms of the quote. After you update the quote, return it to the seller for review and approval.",cancelButton:"Cancel",confirmButton:"Remove",confirmButtonRemoving:"Removing...",successHeading:"Success",successMessage:"Quote items have been successfully removed.",errorHeading:"Error",errorMessage:"Failed to remove quote items. Please try again."}},PriceSummary:{taxToBeDetermined:"TBD",orderSummary:"Order Summary",giftOptionsTax:{printedCard:{title:"Printed card",inclTax:"Including taxes",exclTax:"excluding taxes"},itemGiftWrapping:{title:"Item gift wrapping",inclTax:"Including taxes",exclTax:"excluding taxes"},orderGiftWrapping:{title:"Order gift wrapping",inclTax:"Including taxes",exclTax:"excluding taxes"}},subTotal:{label:"Subtotal",withTaxes:"Including taxes",withoutTaxes:"excluding taxes"},shipping:{label:"Shipping",withTaxes:"Including taxes",withoutTaxes:"excluding taxes"},taxes:{total:"Tax Total",totalOnly:"Tax",breakdown:"Taxes",showBreakdown:"Show Tax Breakdown",hideBreakdown:"Hide Tax Breakdown"},total:{free:"Free",label:"Total",withoutTax:"Total excluding taxes",saved:"Total saved"}},QuoteSummaryList:{discountedPrice:"Discounted Price",discountPercentage:"{discount}% off",editQuote:"Edit",file:"{count} file",files:"{count} files",heading:"Negotiable Quote ({count})",listOfQuoteItems:"List of Quote Items",regularPrice:"Regular Price",savingsAmount:"Savings",viewMore:"View more"}},p={Manage:{createdLabel:"Created:",salesRepLabel:"Sales Rep:",expiresLabel:"Expires:",referenceDocuments:{title:"Reference Documents"},comments:{title:"Comments"},historyLog:{title:"History Log"},tabs:{itemsQuoted:"Items Quoted",comments:"Comments",historyLog:"History Log"},templateComments:{title:"Template Comments",placeholder:"Add your comment"},actionsLabel:"Actions",actionButtons:{sendForReview:"Send for review",accept:"Accept",generateQuote:"Generate quote"},confirmationModal:{cancel:"Cancel",accept:{title:"Accept Quote Template",message:"Are you sure you want to accept this quote template?",confirm:"Accept",confirmLoading:"Accepting...",successHeading:"Quote Template Accepted",successDescription:"Quote template has been successfully accepted.",errorHeading:"Error",errorFallback:"Failed to accept quote template. Please try again."},generateQuote:{message:"Are you sure you want to generate a quote from this template?",confirm:"Generate Quote",confirmLoading:"Generating...",successHeading:"Quote Generated",successDescription:"Quote has been successfully generated from the template.",errorHeading:"Error",errorFallback:"Failed to generate quote from template. Please try again."}},quotePricesSummary:{subtotal:{excludingTax:"Quote Template Subtotal (excluding tax)"},appliedTaxes:"Applied Taxes",grandTotal:{includingTax:"Quote Template Grand Total (including tax)"}},lineItemNoteModal:{errorHeading:"Error"}}},g={changeTypes:{created:"Quote Created",updated:"Quote Updated",statusChanged:"Status Changed",commentAdded:"Comment Added",expirationChanged:"Expiration Changed"},noteTypes:{buyerNoteAdded:"Buyer Note Added",sellerNoteAdded:"Seller Note Added"},authorLabels:{buyer:"(Buyer)",seller:"(Seller)"},changeDetails:{comment:'Comment: "{comment}"',statusChangedFromTo:"Status changed from {oldStatus} to {newStatus}",statusSetTo:"Status set to {newStatus}",expirationChangedFromTo:"Expiration changed from {oldExpiration} to {newExpiration}",expirationSetTo:"Expiration set to {newExpiration}",totalChangedFromTo:"Total changed from {oldTotal} to {newTotal}",customChange:'{title}: changed from "{oldValue}" to "{newValue}"',productsRemovedFromCatalog:"Products removed from catalog: {products}",productsRemovedFromQuote:"Products removed from quote: {products}",noDetailsAvailable:"No details available"},emptyState:"No history available for this quote."},h={QuotesListTable:{quoteName:"Quote Name",created:"Created",createdBy:"Created By",status:"Status",lastUpdated:"Last Updated",quoteTemplate:"Quote Template",quoteTotal:"Quote Total",actions:"Action"},QuoteTemplatesListTable:{name:"Template Name",state:"State",status:"Status",validUntil:"Valid Until",minQuoteTotal:"Min. Quote Total (Negotiated)",ordersPlaced:"Orders Placed",lastOrdered:"Last Ordered",actions:"Action",view:"View"}},f={ConfirmationModal:d,NegotiableQuote:m,NegotiableQuoteTemplate:p,historyLog:g,QuoteManagement:h},x={default:f},y=({children:a})=>{const[o,s]=n("en_US");return l(()=>{const e=c.on("locale",r=>{s(r)},{eager:!0});return()=>{e==null||e.off()}},[]),t(u,{lang:o,langDefinitions:x,children:a})},C=new i(t(y,{}));export{C as render};
|
|
7
|
+
.request-negotiable-quote-form{display:grid;gap:var(--spacing-small);align-items:flex-end;color:var(--color-neutral-800);width:100%}.request-negotiable-quote-form input:user-invalid,.request-negotiable-quote-form textarea:user-invalid{border-color:var(--color-alert-800)}.request-negotiable-quote-form__title{font:var(--type-body-1-emphasized-font);letter-spacing:var(--type-body-1-emphasized-letter-spacing)}.request-negotiable-quote-form__actions,.request-negotiable-quote-form [data-slot=AttachFileField]{display:flex;gap:var(--spacing-small)}.request-negotiable-quote-form__actions{justify-content:flex-start}.request-negotiable-quote-form__attach-file-field{justify-content:end}.request-negotiable-quote-form__attach-file-field label{background:none;color:var(--color-brand-500);font:var(--type-body-1-strong-font)}.request-negotiable-quote-form__attach-file-field label:hover{background:none}.request-negotiable-quote-form__error-banner svg{color:var(--color-alert-800)}.quote-management-actions-bar__container{container-type:inline-size;container-name:actions-bar-container}.quote-management-actions-bar{background:var(--color-neutral-200);padding:var(--spacing-xsmall);display:flex;gap:var(--spacing-small);justify-content:space-between;align-items:center}.quote-management-actions-bar__dropdown{width:max-content}.quote-management-actions-bar__buttons{display:flex}.quote-management-actions-bar__button>span{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}@container actions-bar-container (max-width: 768px){.quote-management-actions-bar{flex-direction:column;align-items:flex-start;gap:var(--spacing-xsmall)}.quote-management-actions-bar__dropdown{width:100%}.quote-management-actions-bar__buttons{flex-direction:column;align-items:flex-start;gap:var(--spacing-xsmall);width:100%}.quote-management-actions-bar__button{width:100%}}.quote-management-items-quoted{display:flex;flex-direction:column;gap:var(--spacing-big)}.quote-management-manage-negotiable-quote{display:grid;gap:var(--spacing-small);color:var(--color-neutral-800);width:100%;container-type:inline-size}.quote-management-manage-negotiable-quote__header{display:flex;gap:var(--spacing-big);align-items:center}.quote-management-manage-negotiable-quote__quote-name>*{font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);margin:0}.quote-management-manage-negotiable-quote__quote-name-wrapper{display:flex;align-items:center;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote__quote-name-title{font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);margin:0}.quote-management-manage-negotiable-quote__rename-button{background:none;border:none;padding:var(--spacing-xsmall);cursor:pointer;display:inline-flex;align-items:center}.quote-management-manage-negotiable-quote__rename-button:disabled{cursor:not-allowed;opacity:.5}.quote-management-manage-negotiable-quote__quote-status>*{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing);border:2px solid var(--color-neutral-300);padding:var(--spacing-xxsmall)}.quote-management-manage-negotiable-quote__banner{width:100%}.quote-management-manage-negotiable-quote__details{display:flex;flex-direction:row;gap:var(--spacing-xsmall);justify-content:space-between;align-items:center;flex-wrap:wrap}.quote-management-manage-negotiable-quote__detail{display:flex;flex-wrap:wrap;gap:var(--spacing-xxsmall);align-items:baseline}.quote-management-manage-negotiable-quote__detail-title{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing)}.quote-management-manage-negotiable-quote__detail-content{font:var(--type-body-2-font);letter-spacing:var(--type-body-2-letter-spacing)}.quote-management-manage-negotiable-quote__item-actions{justify-content:flex-start}.quote-management-manage-negotiable-quote__quote-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote__shipping-information-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote__shipping-information-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote__quote-comments-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote__quote-comments-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote__attach-files[data-disabled]{opacity:.5;pointer-events:none}.quote-management-manage-negotiable-quote__footer{display:flex;gap:var(--spacing-small);justify-content:flex-start}@container (max-width: 768px){.quote-management-manage-negotiable-quote__header{flex-direction:column}.quote-management-manage-negotiable-quote__action-bar{flex-direction:column;align-items:flex-start}.quote-management-manage-negotiable-quote__quote-actions{justify-content:flex-start}}.quote-order-summary{display:grid;position:relative;grid-auto-flow:row;padding:var(--spacing-medium)}.quote-order-summary__primary{background-color:var(--color-neutral-200)}.quote-order-summary__secondary{background-color:var(--color-neutral-50)}.quote-order-summary__content{display:grid;gap:var(--spacing-xsmall);margin-top:var(--spacing-small)}.quote-order-summary__heading{display:grid;font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-2-strong-letter-spacing);color:var(--color-neutral-800);gap:var(--spacing-small)}.quote-order-summary__discount .quote-order-summary__label,.quote-order-summary__discount .quote-order-summary__price{color:var(--color-warning-800)}.quote-order-summary__taxes .dropin-divider:last-child{margin-bottom:0}.quote-order-summary__total{margin-top:var(--spacing-medium)}.quote-order-summary__heading .quote-order-summary__divider-primary,.quote-order-summary__heading .quote-order-summary__divider-secondary{width:100%;margin:0}.quote-order-summary__divider-secondary{margin:0}.quote-order-summary__taxEntry.quote-order-summary__entry{margin-top:0}.quote-order-summary__entry,.quote-order-summary__taxEntry{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-xxsmall);align-items:center;color:var(--color-neutral-800)}.quote-order-summary__caption{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing);grid-column:span 2;color:var(--color-neutral-700)}.quote-order-summary__shipping--edit{display:grid;grid-column:1 / span 2;gap:var(--spacing-small);padding-top:var(--spacing-small);padding-left:var(--spacing-small)}a.quote-order-summary__shippingLink{text-decoration:underline}.quote-order-summary__shipping--hide{display:none!important}.quote-order-summary__shipping--edit button{width:var(--spacing-huge);justify-self:end}.quote-order-summary__shipping--zip,.quote-order-summary__shipping--state{background-color:var(--color-neutral-50)}.quote-order-summary__taxes .dropin-accordion-section__content-container{gap:var(--spacing-small);margin:var(--spacing-small) 0}.quote-order-summary__spinner{margin:0 auto;position:absolute;z-index:999;left:0;right:0;top:calc(50% - (var(--size) / 2));bottom:0}.quote-order-summary__label,.quote-order-summary__price{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.quote-order-summary__price{text-align:right;text-transform:uppercase}.quote-order-summary__label--muted{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-700)}.quote-order-summary__price--muted{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.quote-order-summary__label--bold,.quote-order-summary__price--bold{font:var(--type-body-1-emphasized-font);letter-spacing:var(--type-body-1-emphasized-letter-spacing)}.quote-management-product-list-table-container{display:flex;flex-direction:column;gap:var(--spacing-small)}.quote-management-product-list-table__checkbox{align-self:center;justify-self:center}.quote-management-product-list-table__product-name-container{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__product-name{font:var(--type-body-1-font);letter-spacing:var(--type-body-1-letter-spacing)}.quote-management-product-list-table__configurable-option{display:flex;flex-direction:row;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__configurable-option-label{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing)}.quote-management-product-list-table__configurable-option-value{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.quote-management-product-list-table__bundle-option{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__bundle-option-label{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing)}.quote-management-product-list-table__bundle-option-values{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__bundle-option-value{display:flex;flex-direction:row;align-items:center;gap:var(--spacing-xxsmall);font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.quote-management-product-list-table__bundle-option-value-original-price{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.quote-management-product-list-table__sku{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing)}.quote-management-product-list-table__quantity{font:var(--type-body-1-font);letter-spacing:var(--type-body-1-letter-spacing);display:block;justify-self:center}.quote-management-product-list-table__quantity-input{width:80px}@media only screen and (max-width: 767px){.quote-management-product-list-table__quantity-input{width:100%;max-width:200px}}.quote-management-product-list-table__discount-container{display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--spacing-xxsmall);align-items:baseline}.quote-management-product-list-table-container__submit-container{display:flex;justify-content:flex-end}td:has(.quote-management-product-list-table__notes-row-wrapper)~td{display:none}.quote-management-product-list-table__notes-row-wrapper{margin-left:calc(var(--spacing-medium) * -1);margin-right:calc(var(--spacing-medium) * -1);margin-top:calc(var(--spacing-small) * -1);margin-bottom:calc(var(--spacing-small) * -1);background-color:var(--color-neutral-100);box-shadow:100vw 0 0 0 var(--color-neutral-100),-100vw 0 0 0 var(--color-neutral-100)}.quote-management-product-list-table__notes-container{padding:var(--spacing-medium)}.quote-management-product-list-table__notes-header{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-letter-spacing);color:var(--color-neutral-600);margin-bottom:var(--spacing-small);text-transform:uppercase}.quote-management-product-list-table__notes-list{display:flex;flex-direction:column;gap:var(--spacing-small)}.quote-management-product-list-table__note-item{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__note-content{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-800)}.quote-management-product-list-table__note-meta{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);color:var(--color-neutral-800)}.quote-management-product-list-table__note-text{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-800);padding-left:0}.quote-management-product-list-table__note-edit-icon{cursor:pointer;opacity:.6}.quote-management-product-list-table__note-edit-icon:hover{opacity:1}.quote-management-quote-prices-summary{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.quote-management-quote-prices-summary__entry{display:flex;flex-direction:row;justify-content:space-between;gap:10px;width:100%}.quote-management-quote-prices-summary__accordion,.quote-management-quote-prices-summary__label{flex-grow:1}.quote-management-quote-prices-summary__label--strong{font:var(--type-body-1-strong-font);letter-spacing:var(--type-body-1-strong-letter-spacing)}.quote-management-quote-prices-summary__value{flex-grow:1;text-align:right}.quote-management-quote-summary-list{container-type:inline-size;container-name:quote-summary-list}.quote-management-quote-summary-list__background--secondary{background-color:var(--color-neutral-200)}.quote-management-quote-summary-list__heading{display:grid;row-gap:var(--spacing-xsmall);padding:var(--spacing-medium) 0 0 0;font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);color:var(--color-neutral-800)}.quote-management-quote-summary-list__heading--full-width{width:100%}.quote-management-quote-summary-list__heading-divider{width:100%;margin:var(--spacing-xxsmall) 0 var(--spacing-medium) 0}.quote-management-quote-summary-list__content{display:grid;grid-template-columns:1fr;padding:0}.quote-management-quote-summary-list__out-of-stock-message{margin:calc(-1 * var(--spacing-xsmall)) 0 var(--spacing-medium) 0}.quote-management-quote-summary-list-footer__action,.quote-management-quote-summary-list-footer__action:focus .quote-management-quote-summary-list-footer__action:active,.quote-management-quote-summary-list-footer__action:link{font:var(--type-body-2-strong-font);margin:0 auto;width:auto;margin-top:var(--spacing-medium);margin-bottom:var(--spacing-medium)}.quote-management-quote-summary-list-footer__action:hover{text-decoration:underline;text-underline-offset:var(--spacing-xxsmall);background:transparent;color:var(--color-brand-700)}.quote-management-quote-summary-list-footer__action:visited{background-color:transparent}.quote-management-quote-summary-list-accordion{border-left:var(--shape-border-width-2) solid var(--color-neutral-400);border-right:var(--shape-border-width-2) solid var(--color-neutral-400)}.quote-management-quote-summary-list-accordion__section{margin:var(--spacing-medium)}.dropin-cart-item__quantity{width:fit-content}@container quote-summary-list (width >= 768px){.quote-management-quote-summary-list__out-of-stock-message{margin:calc(-1 * var(--spacing-small)) 0 var(--spacing-xxbig) 0}}@container quote-summary-list (width >= 1024px){.quote-management-quote-summary-list__content,.quote-management-quote-summary-list__heading{grid-column:1 / span 8}.quote-management-quote-summary-list__heading--full-width{grid-column:1 / span 12}.quote-management-quote-summary-list__content{padding:0}}.quotes-list-table__empty-state{padding:var(--spacing-large);text-align:center;color:var(--color-neutral-600)}.quotes-list-table__footer{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-medium);border-top:var(--shape-border-width-1) solid var(--color-neutral-200);gap:var(--spacing-medium)}.quotes-list-table__item-range{flex:1;color:var(--color-neutral-800);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.quotes-list-table__pagination{flex:0 0 auto;display:flex;justify-content:center}.quotes-list-table__page-size-picker{flex:1;display:flex;justify-content:flex-end;align-items:center;gap:var(--spacing-small);color:var(--color-neutral-800);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.quotes-list-table__page-size-picker>span{display:inline-flex;align-items:baseline}.quotes-list-table__page-size-picker .dropin-picker{display:inline-flex;align-items:center;margin:0 var(--spacing-xsmall);vertical-align:center}.quotes-list-table__page-size-picker .dropin-picker__select{height:auto;min-height:var(--sizing-medium);line-height:1.2;vertical-align:baseline}.quote-management-quote-templates-list-table,.quote-management-quote-templates-list-table__table{width:100%}.quote-templates-list-table__empty-state{padding:var(--spacing-large);text-align:center}.quote-templates-list-table__footer{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-medium) 0;gap:var(--spacing-medium);flex-wrap:wrap}.quote-templates-list-table__item-range{display:flex;align-items:center;color:var(--color-neutral-700);font-size:var(--type-body-2-font-size)}.quote-templates-list-table__pagination{display:flex;justify-content:center;flex:1}.quote-templates-list-table__page-size-picker{display:flex;align-items:center;gap:var(--spacing-xsmall);color:var(--color-neutral-700);font-size:var(--type-body-2-font-size)}.quote-management-quote-templates-list-table__actions-cell{display:flex;gap:var(--spacing-xsmall)}.quote-management-quote-templates-list-table__actions-cell>*{white-space:nowrap}.dropin-modal__body.dropin-modal__body--medium{padding:var(--spacing-small)}.confirmation-modal__content{display:flex;flex-direction:column}.confirmation-modal__banner{margin-left:calc(-1 * var(--spacing-small));margin-right:calc(-1 * var(--spacing-small));margin-top:calc(-1 * var(--spacing-small));margin-bottom:var(--spacing-medium)}.confirmation-modal__title{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-1-letter-spacing);color:var(--color-neutral-800);margin-bottom:var(--spacing-medium);padding-bottom:var(--spacing-medium)}.confirmation-modal__message{margin-bottom:var(--spacing-medium);text-align:left;color:var(--color-neutral-800)}.confirmation-modal__actions{display:flex;justify-content:flex-end;gap:var(--spacing-medium);margin-top:var(--spacing-big);margin-right:var(--spacing-small);padding-bottom:var(--spacing-small)}div.dropin-modal__body.dropin-modal__body--medium>div.dropin-modal__content{margin:var(--spacing-small) var(--spacing-small) var(--spacing-small) var(--spacing-small)!important}.dropin-modal:has(.confirmation-modal__banner) .dropin-modal__header,.dropin-modal__body:has(.confirmation-modal__banner) .dropin-modal__header{display:none!important;height:0!important;padding:0!important;margin:0!important}@media only screen and (max-width: 768px){.confirmation-modal__banner .dropin-in-line-alert{padding:var(--spacing-xsmall) var(--spacing-small)!important;gap:var(--spacing-xsmall)!important}.confirmation-modal__actions{flex-direction:column-reverse;gap:var(--spacing-small)}.confirmation-modal__actions button{width:100%}}.quote-management-tabbed-content{width:100%}.quote-management-tabbed-content__tabs{display:flex;margin-bottom:-1px}.quote-management-tabbed-content__tab{background:var(--color-neutral-100);color:var(--color-neutral-700);border:solid 1px var(--color-neutral-400);padding:var(--spacing-xsmall) var(--spacing-medium);margin-left:-1px;cursor:pointer;font:var(--type-body-2-font);letter-spacing:var(--type-body-2-letter-spacing)}.quote-management-tabbed-content__tab:first-child{margin-left:unset}.quote-management-tabbed-content__tab:hover{background:var(--color-neutral-300);color:var(--color-neutral-700)}.quote-management-tabbed-content__tab--active{background:var(--color-neutral-50);color:var(--color-neutral-800);border-bottom:none}.quote-management-tabbed-content__tab--active:hover{background:var(--color-neutral-50);color:var(--color-neutral-800)}.quote-management-tabbed-content__active-tab-content{background:var(--color-neutral-50);padding:var(--spacing-small);border:solid 1px var(--color-neutral-400)}.quote-management-rename-quote-modal__error-banner,.quote-management-rename-quote-modal__success-banner{margin-bottom:var(--spacing-medium)}.dropin-modal__header-title-content{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-1-letter-spacing);color:var(--color-neutral-800);margin-top:var(--spacing-small);margin-left:var(--spacing-small)}.quote-management-rename-quote-modal__content{display:flex;flex-direction:column;gap:var(--spacing-medium);margin-bottom:var(--spacing-medium);width:100%}.quote-management-rename-quote-modal__error-text{color:var(--color-alert-800);font:var(--type-body-2-default-font);margin-top:var(--spacing-xsmall)}.quote-management-rename-quote-modal__actions{display:flex;justify-content:flex-start;gap:var(--spacing-small);margin-top:var(--spacing-medium);width:100%}.quote-management-rename-quote-modal__cancel-button{order:1}.quote-management-rename-quote-modal__save-button{order:2}@media only screen and (min-width: 768px) and (max-width: 1023px){.quote-management-rename-quote-modal .dropin-modal__close-button{top:var(--spacing-small);right:var(--spacing-small)}.quote-management-rename-quote-modal__actions{gap:var(--spacing-medium)}}@media only screen and (min-width: 1024px){.quote-management-rename-quote-modal__actions{gap:var(--spacing-medium)}}@media only screen and (max-width: 767px){.quote-management-rename-quote-modal .dropin-modal__close-button{margin:var(--spacing-small)}.quote-management-rename-quote-modal__error-banner .dropin-in-line-alert{padding:var(--spacing-xsmall) var(--spacing-small)!important;gap:var(--spacing-xsmall)!important}.quote-management-rename-quote-modal__content{gap:var(--spacing-small)}.quote-management-rename-quote-modal__actions{flex-direction:column-reverse;gap:var(--spacing-small);margin-top:var(--spacing-small)}.quote-management-rename-quote-modal__actions button{width:100%}.quote-management-rename-quote-modal__cancel-button{order:2}.quote-management-rename-quote-modal__save-button{order:1}}.quote-management-manage-negotiable-quote-template{display:grid;gap:var(--spacing-small);color:var(--color-neutral-800);width:100%;container-type:inline-size}.quote-management-manage-negotiable-quote-template__header{display:flex;gap:var(--spacing-big);align-items:center}.quote-management-manage-negotiable-quote-template__template-name-wrapper{display:flex;align-items:center;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote-template__template-name-title{font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__rename-button{background:none;border:none;padding:var(--spacing-xsmall);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--color-neutral-700)}.quote-management-manage-negotiable-quote-template__rename-button:hover:not(:disabled){color:var(--color-neutral-900)}.quote-management-manage-negotiable-quote-template__rename-button:disabled{cursor:not-allowed;opacity:.5}.quote-management-manage-negotiable-quote-template__template-status>*{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing);border:2px solid var(--color-neutral-300);padding:var(--spacing-xxsmall)}.quote-management-manage-negotiable-quote-template__banner{display:flex;flex-direction:row}.quote-management-manage-negotiable-quote-template__reference-documents h2{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__details{display:flex;flex-direction:row;gap:var(--spacing-xsmall);justify-content:space-between;align-items:center;flex-wrap:wrap}.quote-management-manage-negotiable-quote-template__detail{display:flex;flex-wrap:wrap;gap:var(--spacing-xxsmall);align-items:baseline}.quote-management-manage-negotiable-quote-template__detail-title{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing)}.quote-management-manage-negotiable-quote-template__detail-content{font:var(--type-body-2-font);letter-spacing:var(--type-body-2-letter-spacing)}.quote-management-manage-negotiable-quote-template__reference-documents-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote-template__reference-documents-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__reference-documents{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-manage-negotiable-quote-template__items-table{width:100%}.quote-management-manage-negotiable-quote-template__comments-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote-template__comments-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__attach-files[data-disabled]{opacity:.5;pointer-events:none}.quote-management-manage-negotiable-quote-template__file-error{color:var(--color-error);font:var(--type-body-2-font);letter-spacing:var(--type-body-2-letter-spacing);margin-top:var(--spacing-xxsmall)}.quote-management-manage-negotiable-quote-template__history-log-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote-template__history-log-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__shipping-information-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote-template__shipping-information-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__footer{display:flex;flex-wrap:wrap;gap:var(--spacing-small);justify-content:flex-start}@container (max-width: 768px){.quote-management-manage-negotiable-quote-template__header{flex-direction:column}}.quote-management-line-item-note-modal .dropin-modal__header-title-content{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-2-strong-letter-spacing);color:var(--color-neutral-800);margin-top:var(--spacing-small);margin-left:var(--spacing-small)}.quote-management-line-item-note-modal__error-banner,.quote-management-line-item-note-modal__success-banner{margin-bottom:var(--spacing-medium)}.quote-management-line-item-note-modal__content{display:flex;flex-direction:column;gap:var(--spacing-medium);margin-bottom:var(--spacing-medium);width:100%}.quote-management-line-item-note-modal__details{width:100%;overflow-x:auto;margin-bottom:var(--spacing-small)}.quote-management-line-item-note-modal__details-table{width:100%}.quote-management-line-item-note-modal__product-info{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-line-item-note-modal__product-name,.quote-management-line-item-note-modal__stock,.quote-management-line-item-note-modal__discount{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing);color:var(--color-neutral-800)}.quote-management-line-item-note-modal__product-sku{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing);color:var(--color-neutral-600)}.quote-management-line-item-note-modal__quantity-input{width:100px;min-width:100px;margin:0}.quote-management-line-item-note-modal__quantity-input input{padding:var(--spacing-xsmall) var(--spacing-small);font:var(--type-body-2-default-font);width:100%}.quote-management-line-item-note-modal__table-error{color:var(--color-alert-800);font:var(--type-body-2-default-font);margin-top:var(--spacing-xsmall);padding:var(--spacing-xsmall) var(--spacing-small)}.quote-management-line-item-note-modal__form-field{display:flex;flex-direction:column;gap:var(--spacing-xxsmall);width:100%}.quote-management-line-item-note-modal__error-text{color:var(--color-alert-800);font:var(--type-body-2-default-font);margin-top:var(--spacing-xxsmall)}.quote-management-line-item-note-modal__helper-text{color:var(--color-neutral-600);font:var(--type-body-3-default-font);margin-top:var(--spacing-xxsmall)}.quote-management-line-item-note-modal__actions{display:flex;justify-content:flex-start;gap:var(--spacing-small);margin-top:var(--spacing-medium);width:100%}.quote-management-line-item-note-modal__cancel-button{order:1}.quote-management-line-item-note-modal__confirm-button{order:2}@media only screen and (min-width: 768px) and (max-width: 1023px){.quote-management-line-item-note-modal .dropin-modal__close-button{top:var(--spacing-small);right:var(--spacing-small)}.quote-management-line-item-note-modal__actions{gap:var(--spacing-medium)}}@media only screen and (min-width: 1024px){.quote-management-line-item-note-modal__actions{gap:var(--spacing-medium)}}@media only screen and (max-width: 767px){.quote-management-line-item-note-modal .dropin-modal__close-button{margin:var(--spacing-small)}.quote-management-line-item-note-modal__error-banner .dropin-in-line-alert{padding:var(--spacing-xsmall) var(--spacing-small);gap:var(--spacing-xsmall)}.quote-management-line-item-note-modal__content{gap:var(--spacing-small)}.quote-management-line-item-note-modal__details{overflow-x:auto;-webkit-overflow-scrolling:touch}.quote-management-line-item-note-modal__actions{flex-direction:column-reverse;gap:var(--spacing-small);margin-top:var(--spacing-small)}.quote-management-line-item-note-modal__actions button{width:100%}.quote-management-line-item-note-modal__cancel-button{order:2}.quote-management-line-item-note-modal__confirm-button{order:1}}.quote-management-reference-document-form-modal__error-banner,.quote-management-reference-document-form-modal__success-banner{margin-bottom:var(--spacing-medium)}.quote-management-reference-document-form-modal__content{display:flex;flex-direction:column;gap:var(--spacing-medium);margin-bottom:var(--spacing-medium);width:100%}.quote-management-reference-document-form-modal__error-text{color:var(--color-alert-800);font:var(--type-body-2-default-font);margin-top:var(--spacing-xsmall)}.quote-management-reference-document-form-modal__actions{display:flex;justify-content:flex-start;gap:var(--spacing-small);margin-top:var(--spacing-medium);width:100%}.quote-management-reference-document-form-modal__cancel-button{order:1}.quote-management-reference-document-form-modal__save-button{order:2}@media only screen and (min-width: 768px) and (max-width: 1023px){.quote-management-reference-document-form-modal .dropin-modal__close-button{top:var(--spacing-small);right:var(--spacing-small)}.quote-management-reference-document-form-modal__actions{gap:var(--spacing-medium)}}@media only screen and (min-width: 1024px){.quote-management-reference-document-form-modal__actions{gap:var(--spacing-medium)}}@media only screen and (max-width: 767px){.quote-management-reference-document-form-modal .dropin-modal__close-button{margin:var(--spacing-small)}.quote-management-reference-document-form-modal__error-banner .dropin-in-line-alert{padding:var(--spacing-xsmall) var(--spacing-small)!important;gap:var(--spacing-xsmall)!important}.quote-management-reference-document-form-modal__content{gap:var(--spacing-small)}.quote-management-reference-document-form-modal__actions{flex-direction:column-reverse;gap:var(--spacing-small);margin-top:var(--spacing-small)}.quote-management-reference-document-form-modal__actions button{width:100%}.quote-management-reference-document-form-modal__cancel-button{order:2}.quote-management-reference-document-form-modal__save-button{order:1}}.quote-management-reference-documents-list{margin-bottom:var(--spacing-medium)}.quote-management-reference-documents-list__header{display:flex;align-items:center;gap:var(--spacing-xsmall);margin-bottom:var(--spacing-small)}.quote-management-reference-documents-list__title{font:var(--type-body-1-emphasized-font);letter-spacing:var(--type-body-1-emphasized-letter-spacing);color:var(--color-neutral-800);margin:0}.quote-management-reference-documents-list__info-icon{width:16px;height:16px;color:var(--color-neutral-600)}.quote-management-reference-documents-list__empty{color:var(--color-neutral-600);font:var(--type-body-2-default-font);padding:var(--spacing-small) 0}.quote-management-reference-documents-list__content{display:flex;flex-wrap:wrap;gap:var(--spacing-small)}.quote-management-reference-documents-list__document{display:flex;align-items:center;gap:var(--spacing-small);background-color:var(--color-neutral-100);border-radius:var(--border-radius-medium);border:1px solid var(--color-neutral-200)}.quote-management-reference-documents-list__document-link{color:var(--color-primary-700);text-decoration:none;font:var(--type-body-2-default-font);word-break:break-word}.quote-management-reference-documents-list__document-link:hover{text-decoration:underline}.quote-management-reference-documents-list__document-actions{display:flex;align-items:center;gap:var(--spacing-xsmall);margin-left:auto}.quote-management-reference-documents-list__separator{color:var(--color-neutral-400);font:var(--type-body-2-default-font)}.quote-management-reference-documents-list__edit-button,.quote-management-reference-documents-list__remove-button{padding:var(--spacing-xsmall) var(--spacing-small);font-size:var(--type-body-2-default-font-size)}.quote-management-reference-documents-list__add-button{background-color:var(--color-neutral-100);border:1px solid var(--color-neutral-200);border-radius:var(--border-radius-medium)}@media only screen and (max-width: 767px){.quote-management-reference-documents-list__content{flex-direction:column}.quote-management-reference-documents-list__document{flex-direction:column;align-items:flex-start;width:100%}.quote-management-reference-documents-list__document-actions{margin-left:0;width:100%;justify-content:flex-start}.quote-management-reference-documents-list__add-button{width:100%}}`,{styleId:"quote-management"});
|
|
8
|
+
import{jsx as t}from"@dropins/tools/preact-jsx-runtime.js";import{Render as n}from"@dropins/tools/lib.js";import{useState as i,useEffect as l}from"@dropins/tools/preact-hooks.js";import{UIProvider as u}from"@dropins/tools/components.js";import{events as c}from"@dropins/tools/event-bus.js";const d={cancel:"Cancel",confirm:"Confirm"},m={Request:{title:"Request a Quote",comment:"Comment",commentError:"Please add your comment",quoteName:"Quote name",quoteNameError:"Please add a quote name",attachmentsError:"Error uploading attachments",maxFilesExceeded:"Maximum {maxFiles} file(s) allowed",maxFileSizeExceeded:"File size exceeds maximum limit of {maxSize}",invalidFileType:"File type not accepted",removeFile:"Remove file",uploading:"Uploading...",uploadSuccess:"Upload complete",uploadError:"Upload failed",requestCta:"Request a Quote",saveDraftCta:"Save as draft",error:{header:"Error",unauthenticated:"Please sign in to request a quote.",unauthorized:"You are not authorized to request a quote.",missingCart:"Could not find a valid cart."},success:{header:"Success",submitted:"Quote request submitted successfully!",draftSaved:"Quote saved as draft successfully!"}},Manage:{createdLabel:"Created:",salesRepLabel:"Sales Rep:",expiresLabel:"Expires:",actionsLabel:"Actions",actions:{remove:"Remove"},attachFile:"Attach File",attachFiles:"Attach Files",fileUploadError:"Failed to upload file. Please try again.",maxFilesExceeded:"Maximum {maxFiles} file(s) allowed",maxFileSizeExceeded:"File size exceeds maximum limit of {maxSize}",invalidFileType:"File type not accepted",removeFile:"Remove file",uploading:"Uploading...",uploadSuccess:"Upload complete",uploadError:"Upload failed",bannerTitle:"Alert",bannerStatusMessages:{submitted:"This quote is currently locked for editing. It will become available once released by the Merchant.",pending:"This quote is currently locked for editing. It will become available once released by the Merchant.",expired:"Your quote has expired and the product prices have been updated as per the latest prices in your catalog. You can either re-submit the quote to seller for further negotiation or go to checkout."},actionButtons:{close:"Close quote",delete:"Delete quote",print:"Print quote",createTemplate:"Create quote template",createCopy:"Create copy",sendForReview:"Send for review"},confirmationModal:{cancel:"Cancel",delete:{title:"Delete Quote",message:"Are you sure you want to delete this quote?",confirm:"Delete",errorHeading:"Error",errorFallback:"Failed to delete quote",successHeading:"Success",successDescription:"Quote has been successfully deleted"},duplicate:{title:"Duplicate Quote",message:"Are you sure you want to create a copy of this quote?",confirm:"Create Copy",errorHeading:"Error",errorFallback:"Failed to duplicate quote",successHeading:"Success",successDescription:"Quote has been successfully duplicated. You will be redirected to the new quote shortly.",outOfStockWarningHeading:"Alert",outOfStockWarningMessage:"Some items were skipped during duplication due to errors."},close:{message:"Are you sure you want to close this quote?",confirm:"Close",confirmLoading:"Closing...",successHeading:"Success",successDescription:"Quote has been successfully closed"},createTemplate:{message:"Are you sure you want to create a quote template from this quote?",confirm:"Create Template",confirmLoading:"Creating...",successHeading:"Success",successDescription:"Quote template has been successfully created",errorHeading:"Error",errorFallback:"Failed to create quote template"},noItemsSelected:{title:"Please Select Quote Items",message:"Please select at least one quote item to proceed.",confirm:"Ok"}},shippingInformation:{title:"Shipping Information"},shippingAddress:{noAddress:"No shipping address has been set for this quote.",noAddressHeading:"No Shipping Address",noAddressDescription:"Please select or enter a shipping address."},quoteComments:{title:"Quote Comments",placeholder:"Add your comment",emptyState:"No comments yet",by:"by",attachments:"Attachments:"},productListTable:{headers:{productName:"Product name",sku:"SKU",price:"Price",quantity:"Quantity",discount:"Discount",subtotal:"Subtotal",actions:"Actions"},submitButton:"Update",actions:{editNoteToSeller:"Edit note to seller",remove:"Remove"},notes:{header:"NOTES",leftANote:"left a note:",buyer:"Buyer",seller:"Seller"},outOfStock:"Out of Stock",outOfStockMessage:"This item is currently out of stock."},rename:{title:"Rename Quote",quoteNameLabel:"Quote name",reasonLabel:"Reason for change",renameButton:"Rename",cancelButton:"Cancel",errorHeading:"Error",quoteNameRequired:"Quote name is required",errorDefault:"Failed to rename quote. Please try again.",successHeading:"Success",successMessage:"Quote renamed successfully!"},lineItemNote:{title:"Leave a note to seller",productLabel:"Name & SKU",skuLabel:"SKU",priceLabel:"Price",stockLabel:"Stock",quantityLabel:"Qty",discountLabel:"Discount",subtotalLabel:"Subtotal",noteLabel:"Note to seller",notePlaceholder:"Can I get a discount on this?",noteHelper:"The seller will see the note when you send the quote back.",confirmButton:"Confirm",cancelButton:"Cancel",noteError:"Please enter a note",quantityError:"Quantity must be greater than 0"},tabbedContent:{itemsQuoted:"Items quoted",comments:"Comments",historyLog:"History log"},quotePricesSummary:{subtotal:{excludingTax:"Quote Subtotal (excluding tax)"},appliedTaxes:"Applied Taxes",grandTotal:{includingTax:"Quote Grand Total (including tax)"}},updateQuantitiesModal:{title:"Change Quote Items",description:"Making changes to any quote item changes the terms of the quote. After you update the quote, return it to the seller for review and approval.",cancelButton:"Cancel",updateButton:"Apply Changes",successHeading:"Success",successMessage:"Quote quantities have been successfully updated.",errorHeading:"Error",errorMessage:"Failed to update quote quantities. Please try again."},removeItemsModal:{title:"Change Quote Items",description:"Making changes to any quote item changes the terms of the quote. After you update the quote, return it to the seller for review and approval.",cancelButton:"Cancel",confirmButton:"Remove",confirmButtonRemoving:"Removing...",successHeading:"Success",successMessage:"Quote items have been successfully removed.",errorHeading:"Error",errorMessage:"Failed to remove quote items. Please try again."}},PriceSummary:{taxToBeDetermined:"TBD",orderSummary:"Order Summary",giftOptionsTax:{printedCard:{title:"Printed card",inclTax:"Including taxes",exclTax:"excluding taxes"},itemGiftWrapping:{title:"Item gift wrapping",inclTax:"Including taxes",exclTax:"excluding taxes"},orderGiftWrapping:{title:"Order gift wrapping",inclTax:"Including taxes",exclTax:"excluding taxes"}},subTotal:{label:"Subtotal",withTaxes:"Including taxes",withoutTaxes:"excluding taxes"},shipping:{label:"Shipping",withTaxes:"Including taxes",withoutTaxes:"excluding taxes"},taxes:{total:"Tax Total",totalOnly:"Tax",breakdown:"Taxes",showBreakdown:"Show Tax Breakdown",hideBreakdown:"Hide Tax Breakdown"},total:{free:"Free",label:"Total",withoutTax:"Total excluding taxes",saved:"Total saved"}},QuoteSummaryList:{discountedPrice:"Discounted Price",discountPercentage:"{discount}% off",editQuote:"Edit",file:"{count} file",files:"{count} files",heading:"Negotiable Quote ({count})",listOfQuoteItems:"List of Quote Items",regularPrice:"Regular Price",savingsAmount:"Savings",viewMore:"View more"}},p={Manage:{createdLabel:"Created:",salesRepLabel:"Sales Rep:",expiresLabel:"Expires:",templateIdLabel:"Template ID:",referenceDocuments:{title:"Reference Documents",add:"Add",edit:"Edit",remove:"Remove",noReferenceDocuments:"No reference documents",form:{title:"Document Information",documentNameLabel:"Document name",documentIdentifierLabel:"Document identifier",referenceUrlLabel:"Reference URL",addButton:"Add to Quote Template",updateButton:"Update Document",cancelButton:"Cancel",documentNameRequired:"Document name is required",documentIdentifierRequired:"Document identifier is required",referenceUrlRequired:"Reference URL is required",invalidUrl:"Please enter a valid URL",errorHeading:"Error",duplicateUidError:"A document with this identifier already exists in the template. Please use a different identifier."}},shippingInformation:{title:"Shipping Information"},comments:{title:"Comments"},historyLog:{title:"History Log"},tabs:{itemsQuoted:"Items Quoted",comments:"Comments",historyLog:"History Log"},templateComments:{title:"Template Comments",placeholder:"Add your comment"},actionsLabel:"Actions",actionButtons:{sendForReview:"Send for review",delete:"Delete template",cancel:"Cancel template",accept:"Accept",generateQuote:"Generate quote"},removeItemsModal:{title:"Change Quote Template Items",description:"Making changes to any quote template item changes the terms of the template. After you update the template, return it to the seller for review and approval.",cancelButton:"Cancel",confirmButton:"Remove",confirmButtonRemoving:"Removing...",successHeading:"Success",successMessage:"Quote template items have been successfully removed.",errorHeading:"Error",errorMessage:"Failed to remove quote template items. Please try again."},updateQuantitiesModal:{title:"Change Quote Template Items",description:"Making changes to any quote template item changes the terms of the template. After you update the template, return it to the seller for review and approval.",cancelButton:"Cancel",updateButton:"Apply Changes",successHeading:"Success",successMessage:"Quote template quantities have been successfully updated.",errorHeading:"Error",errorMessage:"Failed to update quote template quantities. Please try again."},confirmationModal:{cancel:"Cancel",delete:{title:"Delete Quote Template",message:"Are you sure you want to delete this quote template?",confirm:"Delete",errorHeading:"Error",errorFallback:"Failed to delete quote template",successHeading:"Success",successDescription:"Quote template has been successfully deleted"},cancelTemplate:{title:"Cancel Quote Template",message:"Are you sure you want to cancel this quote template?",confirm:"Cancel Template",errorHeading:"Error",errorFallback:"Failed to cancel quote template",successHeading:"Success",successDescription:"Quote template has been successfully cancelled"},accept:{title:"Accept Quote Template",message:"Are you sure you want to accept this quote template?",confirm:"Accept",confirmLoading:"Accepting...",successHeading:"Quote Template Accepted",successDescription:"Quote template has been successfully accepted.",errorHeading:"Error",errorFallback:"Failed to accept quote template. Please try again."},generateQuote:{message:"Are you sure you want to generate a quote from this template?",confirm:"Generate Quote",confirmLoading:"Generating...",successHeading:"Quote Generated",successDescription:"Quote has been successfully generated from the template.",errorHeading:"Error",errorFallback:"Failed to generate quote from template. Please try again."}},quotePricesSummary:{subtotal:{excludingTax:"Quote Template Subtotal (excluding tax)"},appliedTaxes:"Applied Taxes",grandTotal:{includingTax:"Quote Template Grand Total (including tax)"}},lineItemNoteModal:{errorHeading:"Error"},rename:{title:"Rename Quote Template",templateNameLabel:"Template name",reasonLabel:"Reason for change",renameButton:"Rename",cancelButton:"Cancel",errorHeading:"Error",templateNameRequired:"Template name is required",errorDefault:"Failed to rename quote template. Please try again.",successHeading:"Success",successMessage:"Quote template renamed successfully!"},unsavedChangesWarningHeading:"Unsaved Changes",unsavedChangesWarningMessage:"The quote template must be submitted for review to save the changes.",shippingAddressWarningHeading:"No Shipping Address",shippingAddressWarningMessage:"No shipping address has been set for this quote template."}},g={changeTypes:{created:"Quote Created",updated:"Quote Updated",statusChanged:"Status Changed",commentAdded:"Comment Added",expirationChanged:"Expiration Changed"},noteTypes:{buyerNoteAdded:"Buyer Note Added",sellerNoteAdded:"Seller Note Added"},authorLabels:{buyer:"(Buyer)",seller:"(Seller)"},changeDetails:{comment:'Comment: "{comment}"',statusChangedFromTo:"Status changed from {oldStatus} to {newStatus}",statusSetTo:"Status set to {newStatus}",expirationChangedFromTo:"Expiration changed from {oldExpiration} to {newExpiration}",expirationSetTo:"Expiration set to {newExpiration}",totalChangedFromTo:"Total changed from {oldTotal} to {newTotal}",customChange:'{title}: changed from "{oldValue}" to "{newValue}"',productsRemovedFromCatalog:"Products removed from catalog: {products}",productsRemovedFromQuote:"Products removed from quote: {products}",noDetailsAvailable:"No details available"},emptyState:"No history available for this quote."},h={QuotesListTable:{quoteName:"Quote Name",created:"Created",createdBy:"Created By",status:"Status",lastUpdated:"Last Updated",quoteTemplate:"Quote Template",quoteTotal:"Quote Total",actions:"Action"},QuoteTemplatesListTable:{name:"Template Name",state:"State",status:"Status",validUntil:"Valid Until",minQuoteTotal:"Min. Quote Total (Negotiated)",ordersPlaced:"Orders Placed",lastOrdered:"Last Ordered",actions:"Action",view:"View"}},f={ConfirmationModal:d,NegotiableQuote:m,NegotiableQuoteTemplate:p,historyLog:g,QuoteManagement:h},y={default:f},b=({children:a})=>{const[o,s]=i("en_US");return l(()=>{const e=c.on("locale",r=>{s(r)},{eager:!0});return()=>{e==null||e.off()}},[]),t(u,{lang:o,langDefinitions:y,children:a})},v=new n(t(b,{}));export{v as render};
|
|
9
9
|
//# sourceMappingURL=render.js.map
|
package/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sources":["/@dropins/storefront-quote-management/src/render/Provider.tsx","/@dropins/storefront-quote-management/src/render/render.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 } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport { UIProvider } from '@adobe-commerce/elsie/components';\nimport { Lang } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\n\nimport en_US from '../i18n/en_US.json';\n\n// Langs\nconst langDefinitions = {\n default: en_US,\n};\n\ninterface CartProviderProps {\n children?: any;\n}\n\nexport const Provider: FunctionComponent<CartProviderProps> = ({\n children,\n}) => {\n const [lang, setLang] = useState<Lang>('en_US');\n\n // Events\n useEffect(() => {\n const localeEvent = events.on(\n 'locale',\n (locale: string) => {\n setLang(locale as Lang);\n },\n { eager: true }\n );\n return () => {\n localeEvent?.off();\n };\n }, []);\n\n return (\n <UIProvider lang={lang} langDefinitions={langDefinitions}>\n {children}\n </UIProvider>\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 { Render } from '@adobe-commerce/elsie/lib';\nimport { Provider } from './Provider';\n\nexport const render = new Render(<Provider />);\n"],"names":["langDefinitions","en_US","Provider","children","lang","setLang","useState","useEffect","localeEvent","events","locale","jsx","UIProvider","render","Render"],"mappings":"
|
|
1
|
+
{"version":3,"file":"render.js","sources":["/@dropins/storefront-quote-management/src/render/Provider.tsx","/@dropins/storefront-quote-management/src/render/render.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 } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport { UIProvider } from '@adobe-commerce/elsie/components';\nimport { Lang } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\n\nimport en_US from '../i18n/en_US.json';\n\n// Langs\nconst langDefinitions = {\n default: en_US,\n};\n\ninterface CartProviderProps {\n children?: any;\n}\n\nexport const Provider: FunctionComponent<CartProviderProps> = ({\n children,\n}) => {\n const [lang, setLang] = useState<Lang>('en_US');\n\n // Events\n useEffect(() => {\n const localeEvent = events.on(\n 'locale',\n (locale: string) => {\n setLang(locale as Lang);\n },\n { eager: true }\n );\n return () => {\n localeEvent?.off();\n };\n }, []);\n\n return (\n <UIProvider lang={lang} langDefinitions={langDefinitions}>\n {children}\n </UIProvider>\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 { Render } from '@adobe-commerce/elsie/lib';\nimport { Provider } from './Provider';\n\nexport const render = new Render(<Provider />);\n"],"names":["langDefinitions","en_US","Provider","children","lang","setLang","useState","useEffect","localeEvent","events","locale","jsx","UIProvider","render","Render"],"mappings":"4iaAkBMA,EAAkB,CACtB,QAASC,CACX,EAMaC,EAAiD,CAAC,CAC7D,SAAAC,CACF,IAAM,CACJ,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAe,OAAO,EAG9C,OAAAC,EAAU,IAAM,CACd,MAAMC,EAAcC,EAAO,GACzB,SACCC,GAAmB,CAClBL,EAAQK,CAAc,CACxB,EACA,CAAE,MAAO,EAAA,CAAK,EAEhB,MAAO,IAAM,CACXF,GAAA,MAAAA,EAAa,KACf,CACF,EAAG,CAAA,CAAE,EAGHG,EAACC,EAAA,CAAW,KAAAR,EAAY,gBAAAJ,EACrB,SAAAG,CAAA,CACH,CAEJ,ECtCaU,EAAS,IAAIC,EAAOH,EAACT,IAAS,CAAE"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*! Copyright 2025 Adobe
|
|
2
|
-
All Rights Reserved. */
|
|
3
|
-
import{jsx as t,jsxs as o,Fragment as G}from"@dropins/tools/preact-jsx-runtime.js";import{classes as v,VComponent as E}from"@dropins/tools/lib.js";/* empty css */import{Skeleton as C,SkeletonRow as ee,Input as V,Picker as te,Price as Q,Checkbox as ae,Button as F,Table as W,Accordion as ne,AccordionSection as oe,Modal as le,TextArea as ie}from"@dropins/tools/components.js";import{h as z}from"@dropins/tools/preact.js";import{useState as R,useEffect as se}from"@dropins/tools/preact-hooks.js";import{g as ue}from"./dateUtils.js";import{useText as Z}from"@dropins/tools/i18n.js";import{useState as D,useEffect as re,useCallback as O}from"@dropins/tools/preact-compat.js";const ye=({className:N,loading:c,table:a,pricesSummary:u,...i})=>c?t(ce,{}):o("div",{className:v(["quote-management-items-quoted",N]),...i,children:[a&&t(E,{node:a,className:v(["quote-management-items-quoted__table"]),"data-testid":"quote-management-items-quoted__table"}),u&&t(E,{node:u,className:v(["quote-management-items-quoted__prices-summary"]),"data-testid":"quote-management-items-quoted__prices-summary"})]}),ce=()=>t(C,{"data-testid":"items-quoted-skeleton",children:t(ee,{variant:"row",fullWidth:!0,size:"medium",lines:4,multilineGap:"xsmall"})}),ve=({className:N,items:c,canEdit:a,readOnly:u=!1,showActions:i,onItemCheckboxChange:d,onItemDropdownChange:p,onQuantityChange:k,onUpdate:M,dropdownSelections:q,..._})=>{const[T,f]=R({}),[h,b]=R({});se(()=>{const e={};c.forEach(s=>{e[s.uid]=s.quantity}),f(e),b(e)},[c]);const y=Object.keys(h).some(e=>h[e]!==T[e]),n=Z({updateButton:"NegotiableQuote.Manage.productListTable.submitButton",productNameHeader:"NegotiableQuote.Manage.productListTable.headers.productName",skuHeader:"NegotiableQuote.Manage.productListTable.headers.sku",priceHeader:"NegotiableQuote.Manage.productListTable.headers.price",quantityHeader:"NegotiableQuote.Manage.productListTable.headers.quantity",discountHeader:"NegotiableQuote.Manage.productListTable.headers.discount",subtotalHeader:"NegotiableQuote.Manage.productListTable.headers.subtotal",actionsHeader:"NegotiableQuote.Manage.productListTable.headers.actions",editNoteToSeller:"NegotiableQuote.Manage.productListTable.actions.editNoteToSeller",remove:"NegotiableQuote.Manage.productListTable.actions.remove",notesHeader:"NegotiableQuote.Manage.productListTable.notes.header",leftANote:"NegotiableQuote.Manage.productListTable.notes.leftANote",buyer:"NegotiableQuote.Manage.productListTable.notes.buyer"}),I=[{label:n.productNameHeader,key:"productName"},{label:n.skuHeader,key:"sku"},{label:n.priceHeader,key:"price"},{label:n.quantityHeader,key:"quantity"},{label:n.discountHeader,key:"discount"},{label:n.subtotalHeader,key:"subtotal"}];a&&!u&&I.unshift({label:"",key:"checkbox"}),(i??a)&&!u&&I.push({label:n.actionsHeader,key:"actions"});const j=(e,s)=>{const l=e.target.checked;d==null||d(s,l)},S=(e,s)=>{const l=e.target.value;p==null||p(s,l)},B=(e,s)=>{const l=parseInt(e.target.value,10);!isNaN(l)&&l>0&&(b(g=>({...g,[s.uid]:l})),k==null||k(s,l))},$=e=>{e.preventDefault(),M==null||M(e)},r=(e,s)=>e>0?o("div",{className:"quote-management-product-list-table__discount-container",children:[o("span",{className:"quote-management-product-list-table__discount-percent",children:[s,"%"]}),o("span",{className:"quote-management-product-list-table__discount-price",children:["(",t(Q,{amount:e}),")"]})]}):void 0,L=e=>{var g,H;const s=(g=e.configurableOptions)==null?void 0:g.map(m=>o("div",{className:"quote-management-product-list-table__configurable-option",children:[o("span",{className:"quote-management-product-list-table__configurable-option-label",children:[m.optionLabel,":"]}),t("span",{className:"quote-management-product-list-table__configurable-option-value",children:m.valueLabel})]},m.optionLabel)),l=(H=e.bundleOptions)==null?void 0:H.map(m=>o("div",{className:"quote-management-product-list-table__bundle-option",children:[t("span",{className:"quote-management-product-list-table__bundle-option-label",children:m.label}),t("div",{className:"quote-management-product-list-table__bundle-option-values",children:m.values.map(w=>o("span",{className:"quote-management-product-list-table__bundle-option-value",children:[o("span",{className:"quote-management-product-list-table__bundle-option-value-quantity",children:[w.quantity," x"]}),t("span",{className:"quote-management-product-list-table__bundle-option-value-label",children:w.label}),t(Q,{className:"quote-management-product-list-table__bundle-option-value-original-price",amount:w.originalPrice.value,currency:w.originalPrice.currency,weight:"normal"})]},w.label))})]},m.label));return o("div",{className:"quote-management-product-list-table__product-name-container",children:[t("span",{className:"quote-management-product-list-table__product-name",children:e.product.name}),s,l]})},A=e=>new Date(e).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",second:"2-digit",hour12:!0,timeZone:ue()}),x=e=>{if(!e.noteFromBuyer||e.noteFromBuyer.length===0)return null;const s=e.noteFromBuyer.filter(l=>l&&l.note&&l.note.trim()!=="");return s.length===0?null:o("div",{className:"quote-management-product-list-table__notes-container","data-testid":`item-notes-${e.product.sku}`,children:[t("div",{className:"quote-management-product-list-table__notes-header",children:n.notesHeader}),t("div",{className:"quote-management-product-list-table__notes-list",children:s.map((l,g)=>o("div",{className:"quote-management-product-list-table__note-item",children:[o("div",{className:"quote-management-product-list-table__note-content",children:[o("strong",{className:"quote-management-product-list-table__note-meta",children:[A(l.createdAt)," (",n.buyer,")"]})," ",n.leftANote]}),o("div",{className:"quote-management-product-list-table__note-text",children:[l.note," "]})]},l.noteUid||g))})]})},J=c.flatMap(e=>{var H;const s=a?t(V,{className:"quote-management-product-list-table__quantity-input",type:"number",min:"1",value:((H=h[e.uid])==null?void 0:H.toString())||e.quantity.toString(),onChange:m=>B(m,e),disabled:u||!a,"data-testid":`quantity-input-${e.product.sku}`}):t("span",{className:"quote-management-product-list-table__quantity",children:e.quantity}),l={checkbox:t(ae,{className:"quote-management-product-list-table__checkbox",name:"itemSelected","data-testid":`item-checkbox-${e.product.sku}`,onChange:m=>j(m,e),value:e.product.sku}),productName:L(e),sku:t("span",{className:"quote-management-product-list-table__sku",children:e.product.sku}),price:t(Q,{className:"quote-management-product-list-table__price",amount:e.prices.originalItemPrice.value,currency:e.prices.originalItemPrice.currency}),quantity:s,discount:e.catalogDiscount?r(e.catalogDiscount.amountOff,e.catalogDiscount.percentOff):void 0,subtotal:t(Q,{className:"quote-management-product-list-table__subtotal",amount:e.prices.rowTotal.value,currency:e.prices.rowTotal.currency}),actions:t(te,{className:"quote-management-product-list-table__actions","data-testid":`item-dropdown-${e.product.sku}`,name:`item-dropdown-${e.product.sku}`,handleSelect:m=>S(m,e),placeholder:"Select",value:(q==null?void 0:q[e.uid])??"",options:[{text:n.editNoteToSeller,value:"edit"},{text:n.remove,value:"remove"}]})},g=x(e);return g?[l,{checkbox:"",productName:t("div",{className:"quote-management-product-list-table__notes-row-wrapper",children:g}),sku:"",price:"",quantity:"",discount:"",subtotal:"",actions:""}]:[l]}),K=t(W,{columns:I,rowData:J,"data-testid":"product-list-table",mobileLayout:"stacked"}),U=a?z("form",{}):z("div",{}),X=a?{onSubmit:$,..._}:_,Y=t(F,{type:"submit",disabled:u||!a||!y,"data-testid":"product-list-table-submit-button",children:n.updateButton});return o(E,{node:U,className:v(["quote-management-product-list-table-container",N]),"data-testid":"product-list-table-container",...X,children:[K,t("div",{className:"quote-management-product-list-table-container__submit-container",children:Y})]})},ke=({className:N,entries:c,...a})=>{const u=i=>{var p;const d=(p=i.children)==null?void 0:p.map(u);return t("div",{className:"quote-management-quote-prices-summary__entry","data-testid":`quote-prices-summary-entry-${i.id}`,children:d?t(ne,{className:"quote-management-quote-prices-summary__accordion","data-testid":`quote-prices-summary-entry-accordion-${i.id}`,children:t(oe,{className:"quote-management-quote-prices-summary__accordion-section",title:i.label,ariaLabelTitle:i.label,secondaryText:i.value,children:d})}):o(G,{children:[t("span",{className:v(["quote-management-quote-prices-summary__label",["quote-management-quote-prices-summary__label--strong",i.strong]]),"data-testid":`quote-prices-summary-entry-label-${i.id}`,children:i.label}),t("span",{className:"quote-management-quote-prices-summary__value","data-testid":`quote-prices-summary-entry-value-${i.id}`,children:i.value})]})},i.id)};return t("div",{className:v(["quote-management-quote-prices-summary",N]),"data-testid":"quote-prices-summary",...a,children:c==null?void 0:c.map(u)})},fe=({className:N,open:c,item:a,onClose:u,onConfirm:i,isSubmitting:d=!1,errorBanner:p,successBanner:k,showCloseButton:M=!0,readOnlyQuantity:q=!1})=>{const[_,T]=D(""),[f,h]=D(a.quantity),[b,y]=D({}),n=Z({title:"NegotiableQuote.Manage.lineItemNote.title",productLabel:"NegotiableQuote.Manage.lineItemNote.productLabel",skuLabel:"NegotiableQuote.Manage.lineItemNote.skuLabel",priceLabel:"NegotiableQuote.Manage.lineItemNote.priceLabel",stockLabel:"NegotiableQuote.Manage.lineItemNote.stockLabel",quantityLabel:"NegotiableQuote.Manage.lineItemNote.quantityLabel",discountLabel:"NegotiableQuote.Manage.lineItemNote.discountLabel",subtotalLabel:"NegotiableQuote.Manage.lineItemNote.subtotalLabel",noteLabel:"NegotiableQuote.Manage.lineItemNote.noteLabel",notePlaceholder:"NegotiableQuote.Manage.lineItemNote.notePlaceholder",noteHelper:"NegotiableQuote.Manage.lineItemNote.noteHelper",confirmButton:"NegotiableQuote.Manage.lineItemNote.confirmButton",cancelButton:"NegotiableQuote.Manage.lineItemNote.cancelButton",noteError:"NegotiableQuote.Manage.lineItemNote.noteError",quantityError:"NegotiableQuote.Manage.lineItemNote.quantityError"});re(()=>{var r;if(c){const L=((r=a.noteFromBuyer)==null?void 0:r.filter(x=>x&&x.note))||[],A=L.length>0?L[0].note:"";T(A||""),h(a.quantity),y({})}},[c,a.quantity,a.noteFromBuyer]);const I=O(()=>{const r={};if(_.trim()||(r.note=n.noteError),!q&&f<=0&&(r.quantity=n.quantityError),Object.keys(r).length>0){y(r);return}i(_.trim(),f)},[_,f,i,n,q]),P=O(()=>{T(""),h(a.quantity),y({}),u==null||u()},[u,a.quantity]);if(!c)return null;const S=a.discounts&&a.discounts.length>0?a.discounts.map(r=>r.label).join(", "):"-",B=[{label:n.productLabel,key:"productName"},{label:n.priceLabel,key:"price"},{label:n.stockLabel,key:"stock"},{label:n.quantityLabel,key:"quantity"},{label:n.discountLabel,key:"discount"},{label:n.subtotalLabel,key:"subtotal"}],$=[{productName:o("div",{className:"quote-management-line-item-note-modal__product-info",children:[t("div",{className:"quote-management-line-item-note-modal__product-name",children:a.product.name}),o("div",{className:"quote-management-line-item-note-modal__product-sku",children:[n.skuLabel,": ",a.product.sku]})]}),price:t(Q,{amount:a.prices.originalItemPrice.value,currency:a.prices.originalItemPrice.currency}),stock:t("span",{className:"quote-management-line-item-note-modal__stock",children:a.stockStatus}),quantity:q?t("span",{className:"quote-management-line-item-note-modal__quantity-readonly",children:a.quantity}):t(V,{name:"quantity",type:"number",min:"1",value:f.toString(),onInput:r=>{const L=parseInt(r.target.value,10)||0;h(L),y({...b,quantity:void 0})},disabled:d,error:!!b.quantity,required:!0,"data-testid":"line-item-note-quantity-input",className:"quote-management-line-item-note-modal__quantity-input"}),discount:t("span",{className:"quote-management-line-item-note-modal__discount",children:S}),subtotal:t(Q,{amount:a.prices.rowTotal.value,currency:a.prices.rowTotal.currency})}];return o(le,{open:c,size:"medium",title:t(G,{children:n.title}),onClose:P,clickToDismiss:!0,escapeToDismiss:!0,showCloseButton:M,className:v(["quote-management-line-item-note-modal",N]),"data-testid":"line-item-note-modal",children:[p&&t("div",{className:"quote-management-line-item-note-modal__error-banner","data-testid":"line-item-note-modal-error-banner",children:p}),k&&t("div",{className:"quote-management-line-item-note-modal__success-banner","data-testid":"line-item-note-modal-success-banner",children:k}),o("div",{className:"quote-management-line-item-note-modal__content",children:[o("div",{className:"quote-management-line-item-note-modal__details",children:[t(W,{columns:B,rowData:$,"data-testid":"line-item-note-table",mobileLayout:"stacked",className:"quote-management-line-item-note-modal__details-table"}),b.quantity&&t("div",{className:"quote-management-line-item-note-modal__table-error",children:b.quantity})]}),o("div",{className:"quote-management-line-item-note-modal__form-field",children:[t(ie,{name:"note",placeholder:n.notePlaceholder,rows:4,value:_,onInput:r=>{T(r.target.value),y({...b,note:void 0})},label:n.noteLabel,disabled:d,"data-testid":"line-item-note-textarea"}),!b.note&&t("span",{className:"quote-management-line-item-note-modal__helper-text",children:n.noteHelper}),b.note&&t("span",{className:"quote-management-line-item-note-modal__error-text",children:b.note})]})]}),o("div",{className:"quote-management-line-item-note-modal__actions",children:[t(F,{variant:"secondary",size:"medium",onClick:P,disabled:d,className:"quote-management-line-item-note-modal__cancel-button","data-testid":"line-item-note-cancel-button",children:n.cancelButton}),t(F,{variant:"primary",size:"medium",onClick:I,disabled:d,className:"quote-management-line-item-note-modal__confirm-button","data-testid":"line-item-note-confirm-button",children:n.confirmButton})]})]})};export{ye as I,fe as L,ve as P,ke as Q};
|
|
4
|
-
//# sourceMappingURL=LineItemNoteModal2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LineItemNoteModal2.js","sources":["/@dropins/storefront-quote-management/src/components/ItemsQuoted/ItemsQuoted.tsx","/@dropins/storefront-quote-management/src/components/ProductListTable/ProductListTable.tsx","/@dropins/storefront-quote-management/src/components/QuotePricesSummary/QuotePricesSummary.tsx","/@dropins/storefront-quote-management/src/components/LineItemNoteModal/LineItemNoteModal.tsx"],"sourcesContent":["/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport '@/quote-management/components/ItemsQuoted/ItemsQuoted.css';\nimport { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nexport interface ItemsQuotedProps extends Omit<HTMLAttributes<HTMLDivElement>, 'loading'> {\n loading?: boolean;\n table?: VNode;\n pricesSummary?: VNode;\n}\n\nexport const ItemsQuoted: FunctionComponent<ItemsQuotedProps> = ({\n className,\n loading,\n table,\n pricesSummary,\n ...props\n}) => {\n if (loading) {\n return <ItemsQuotedSkeleton />;\n }\n\n return (\n <div className={classes(['quote-management-items-quoted', className])} {...props}>\n {table && (\n <VComponent\n node={table}\n className={classes(['quote-management-items-quoted__table'])}\n data-testid=\"quote-management-items-quoted__table\"\n />\n )}\n {pricesSummary && (\n <VComponent\n node={pricesSummary}\n className={classes(['quote-management-items-quoted__prices-summary'])}\n data-testid=\"quote-management-items-quoted__prices-summary\"\n />\n )}\n </div>\n );\n};\n\nexport const ItemsQuotedSkeleton: FunctionComponent = () => {\n return (\n <Skeleton data-testid=\"items-quoted-skeleton\">\n <SkeletonRow variant=\"row\" fullWidth={true} size=\"medium\" lines={4} multilineGap='xsmall' />\n </Skeleton>\n );\n};","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { FunctionComponent, h } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { useState, useEffect } from 'preact/hooks';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport {\n Table,\n Checkbox,\n Picker,\n Price,\n Button,\n Input,\n} from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { getUserTimezone } from '@/quote-management/utils/dateUtils';\n\nimport '@/quote-management/components/ProductListTable/ProductListTable.css';\n\nexport interface ProductListTableItem {\n uid: string;\n product: {\n name: string;\n sku: string;\n };\n prices: {\n originalItemPrice: {\n value: number;\n currency: string;\n };\n rowTotal: {\n value: number;\n currency: string;\n };\n };\n quantity: number;\n catalogDiscount?: {\n amountOff: number;\n percentOff: number;\n };\n configurableOptions?: Array<{\n optionLabel: string;\n valueLabel: string;\n }>;\n bundleOptions?: Array<{\n label: string;\n values: Array<{\n label: string;\n quantity: number;\n originalPrice: {\n value: number;\n currency: string;\n };\n }>;\n }>;\n noteFromBuyer?: Array<{\n createdAt: string;\n creatorId: number;\n creatorType: number;\n negotiableQuoteItemUid: string;\n note: string;\n noteUid: string;\n }>;\n}\n\nexport interface ProductListTableProps\n extends HTMLAttributes<HTMLDivElement | HTMLFormElement> {\n items: ProductListTableItem[];\n canEdit: boolean;\n readOnly?: boolean;\n showActions?: boolean;\n onItemCheckboxChange?: (\n item: ProductListTableItem,\n isSelected: boolean\n ) => void;\n onItemDropdownChange?: (item: ProductListTableItem, action: string) => void;\n onQuantityChange?: (item: ProductListTableItem, newQuantity: number) => void;\n onUpdate?: (e: SubmitEvent) => void;\n dropdownSelections?: Record<string, string | undefined>;\n}\n\nexport const ProductListTable: FunctionComponent<ProductListTableProps> = ({\n className,\n items,\n canEdit,\n readOnly = false,\n showActions,\n onItemCheckboxChange,\n onItemDropdownChange,\n onQuantityChange,\n onUpdate,\n dropdownSelections,\n ...props\n}) => {\n // Track original quantities to detect changes\n const [originalQuantities, setOriginalQuantities] = useState<\n Record<string, number>\n >({});\n const [currentQuantities, setCurrentQuantities] = useState<\n Record<string, number>\n >({});\n\n // Initialize quantities when items change\n useEffect(() => {\n const quantities: Record<string, number> = {};\n items.forEach((item) => {\n quantities[item.uid] = item.quantity;\n });\n setOriginalQuantities(quantities);\n setCurrentQuantities(quantities);\n }, [items]);\n\n // Check if any quantities have changed\n const hasQuantityChanges = Object.keys(currentQuantities).some(\n (uid) => currentQuantities[uid] !== originalQuantities[uid]\n );\n\n const dictionary = useText({\n updateButton: 'NegotiableQuote.Manage.productListTable.submitButton',\n productNameHeader:\n 'NegotiableQuote.Manage.productListTable.headers.productName',\n skuHeader: 'NegotiableQuote.Manage.productListTable.headers.sku',\n priceHeader: 'NegotiableQuote.Manage.productListTable.headers.price',\n quantityHeader: 'NegotiableQuote.Manage.productListTable.headers.quantity',\n discountHeader: 'NegotiableQuote.Manage.productListTable.headers.discount',\n subtotalHeader: 'NegotiableQuote.Manage.productListTable.headers.subtotal',\n actionsHeader: 'NegotiableQuote.Manage.productListTable.headers.actions',\n editNoteToSeller:\n 'NegotiableQuote.Manage.productListTable.actions.editNoteToSeller',\n remove: 'NegotiableQuote.Manage.productListTable.actions.remove',\n notesHeader: 'NegotiableQuote.Manage.productListTable.notes.header',\n leftANote: 'NegotiableQuote.Manage.productListTable.notes.leftANote',\n buyer: 'NegotiableQuote.Manage.productListTable.notes.buyer',\n });\n\n const columns = [\n {\n label: dictionary.productNameHeader,\n key: 'productName',\n },\n {\n label: dictionary.skuHeader,\n key: 'sku',\n },\n {\n label: dictionary.priceHeader,\n key: 'price',\n },\n {\n label: dictionary.quantityHeader,\n key: 'quantity',\n },\n {\n label: dictionary.discountHeader,\n key: 'discount',\n },\n {\n label: dictionary.subtotalHeader,\n key: 'subtotal',\n },\n ];\n\n // Add checkbox column when canEdit (for bulk operations)\n if (canEdit && !readOnly) {\n columns.unshift({\n label: '',\n key: 'checkbox',\n });\n }\n\n // Add actions column when showActions is explicitly true, or when canEdit is true and showActions is not explicitly false\n const shouldShowActions = showActions ?? canEdit;\n if (shouldShowActions && !readOnly) {\n columns.push({\n label: dictionary.actionsHeader,\n key: 'actions',\n });\n }\n\n const handleItemCheckboxChange = (\n event: Event,\n item: ProductListTableItem\n ) => {\n const isSelected = (event.target as HTMLInputElement).checked;\n onItemCheckboxChange?.(item, isSelected);\n };\n\n const handleItemDropdownChange = (\n event: Event,\n item: ProductListTableItem\n ) => {\n const action = (event.target as HTMLSelectElement).value;\n onItemDropdownChange?.(item, action);\n };\n\n const handleQuantityChange = (event: Event, item: ProductListTableItem) => {\n const newQuantity = parseInt((event.target as HTMLInputElement).value, 10);\n if (!isNaN(newQuantity) && newQuantity > 0) {\n setCurrentQuantities((prev) => ({\n ...prev,\n [item.uid]: newQuantity,\n }));\n onQuantityChange?.(item, newQuantity);\n }\n };\n\n const handleUpdate = (event: SubmitEvent) => {\n event.preventDefault();\n onUpdate?.(event);\n };\n\n const discountElement = (amountOff: number, percentOff: number) => {\n return amountOff > 0 ? (\n <div className=\"quote-management-product-list-table__discount-container\">\n <span className=\"quote-management-product-list-table__discount-percent\">\n {percentOff}%\n </span>\n <span className=\"quote-management-product-list-table__discount-price\">\n (<Price amount={amountOff} />)\n </span>\n </div>\n ) : undefined;\n };\n\n const getProductNameContent = (item: ProductListTableItem) => {\n const configurableOptions = item.configurableOptions?.map((option) => (\n <div\n key={option.optionLabel}\n className=\"quote-management-product-list-table__configurable-option\"\n >\n <span className=\"quote-management-product-list-table__configurable-option-label\">\n {option.optionLabel}:\n </span>\n <span className=\"quote-management-product-list-table__configurable-option-value\">\n {option.valueLabel}\n </span>\n </div>\n ));\n\n const bundleOptions = item.bundleOptions?.map((option) => (\n <div\n key={option.label}\n className=\"quote-management-product-list-table__bundle-option\"\n >\n <span className=\"quote-management-product-list-table__bundle-option-label\">\n {option.label}\n </span>\n <div className=\"quote-management-product-list-table__bundle-option-values\">\n {option.values.map((value) => (\n <span\n key={value.label}\n className=\"quote-management-product-list-table__bundle-option-value\"\n >\n <span className=\"quote-management-product-list-table__bundle-option-value-quantity\">\n {value.quantity} x\n </span>\n <span className=\"quote-management-product-list-table__bundle-option-value-label\">\n {value.label}\n </span>\n <Price\n className=\"quote-management-product-list-table__bundle-option-value-original-price\"\n amount={value.originalPrice.value}\n currency={value.originalPrice.currency}\n weight=\"normal\"\n />\n </span>\n ))}\n </div>\n </div>\n ));\n\n return (\n <div className=\"quote-management-product-list-table__product-name-container\">\n <span className=\"quote-management-product-list-table__product-name\">\n {item.product.name}\n </span>\n {configurableOptions}\n {bundleOptions}\n </div>\n );\n };\n\n const formatNoteTimestamp = (timestamp: string) => {\n const date = new Date(timestamp);\n return date.toLocaleString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n second: '2-digit',\n hour12: true,\n timeZone: getUserTimezone(),\n });\n };\n\n const getNotesContent = (item: ProductListTableItem) => {\n // Check if notes exist and have valid data\n if (!item.noteFromBuyer || item.noteFromBuyer.length === 0) {\n return null;\n }\n\n // Filter out notes with null or empty note text\n const validNotes = item.noteFromBuyer.filter(\n (note) => note && note.note && note.note.trim() !== ''\n );\n\n if (validNotes.length === 0) {\n return null;\n }\n\n return (\n <div\n className=\"quote-management-product-list-table__notes-container\"\n data-testid={`item-notes-${item.product.sku}`}\n >\n <div className=\"quote-management-product-list-table__notes-header\">\n {dictionary.notesHeader}\n </div>\n <div className=\"quote-management-product-list-table__notes-list\">\n {validNotes.map((note, index) => (\n <div\n key={note.noteUid || index}\n className=\"quote-management-product-list-table__note-item\"\n >\n <div className=\"quote-management-product-list-table__note-content\">\n <strong className=\"quote-management-product-list-table__note-meta\">\n {/* TODO: When backend exposes creator_name for notes, replace (Buyer) with the actual name */}\n {formatNoteTimestamp(note.createdAt)} ({dictionary.buyer})\n </strong>{' '}\n {dictionary.leftANote}\n </div>\n <div className=\"quote-management-product-list-table__note-text\">\n {note.note}{' '}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n };\n\n const rowData = items.flatMap((item) => {\n const quantityElement = canEdit ? (\n <Input\n className=\"quote-management-product-list-table__quantity-input\"\n type=\"number\"\n min=\"1\"\n value={\n currentQuantities[item.uid]?.toString() || item.quantity.toString()\n }\n onChange={(e) => handleQuantityChange(e, item)}\n disabled={readOnly || !canEdit}\n data-testid={`quantity-input-${item.product.sku}`}\n />\n ) : (\n <span className=\"quote-management-product-list-table__quantity\">\n {item.quantity}\n </span>\n );\n\n const productRow = {\n checkbox: (\n <Checkbox\n className=\"quote-management-product-list-table__checkbox\"\n name=\"itemSelected\"\n data-testid={`item-checkbox-${item.product.sku}`}\n onChange={(e) => handleItemCheckboxChange(e, item)}\n value={item.product.sku}\n />\n ),\n productName: getProductNameContent(item),\n sku: (\n <span className=\"quote-management-product-list-table__sku\">\n {item.product.sku}\n </span>\n ),\n price: (\n <Price\n className=\"quote-management-product-list-table__price\"\n amount={item.prices.originalItemPrice.value}\n currency={item.prices.originalItemPrice.currency}\n />\n ),\n quantity: quantityElement,\n discount: item.catalogDiscount\n ? discountElement(\n item.catalogDiscount.amountOff,\n item.catalogDiscount.percentOff\n )\n : undefined,\n subtotal: (\n <Price\n className=\"quote-management-product-list-table__subtotal\"\n amount={item.prices.rowTotal.value}\n currency={item.prices.rowTotal.currency}\n />\n ),\n actions: (\n <Picker\n className=\"quote-management-product-list-table__actions\"\n data-testid={`item-dropdown-${item.product.sku}`}\n name={`item-dropdown-${item.product.sku}`}\n handleSelect={(e) => handleItemDropdownChange(e, item)}\n placeholder=\"Select\"\n value={dropdownSelections?.[item.uid] ?? ''}\n options={[\n { text: dictionary.editNoteToSeller, value: 'edit' },\n { text: dictionary.remove, value: 'remove' },\n ]}\n />\n ),\n };\n\n const notes = getNotesContent(item);\n\n // If there are notes, create a notes row\n if (notes) {\n const notesRow = {\n checkbox: '',\n productName: (\n <div className=\"quote-management-product-list-table__notes-row-wrapper\">\n {notes}\n </div>\n ),\n sku: '',\n price: '',\n quantity: '',\n discount: '',\n subtotal: '',\n actions: '',\n };\n return [productRow, notesRow];\n }\n\n return [productRow];\n });\n\n const table = (\n <Table\n columns={columns}\n rowData={rowData}\n data-testid=\"product-list-table\"\n mobileLayout=\"stacked\"\n />\n );\n\n // if can edit, the wrapper node should use the form element, else use the div element\n const wrapperNode = canEdit ? h('form', {}) : h('div', {});\n const wrapperProps = canEdit\n ? {\n onSubmit: handleUpdate,\n ...props,\n }\n : props;\n\n const submitButton = (\n <Button\n type=\"submit\"\n disabled={readOnly || !canEdit || !hasQuantityChanges}\n data-testid=\"product-list-table-submit-button\"\n >\n {dictionary.updateButton}\n </Button>\n );\n\n return (\n <VComponent\n node={wrapperNode}\n className={classes([\n 'quote-management-product-list-table-container',\n className,\n ])}\n data-testid=\"product-list-table-container\"\n {...wrapperProps}\n >\n {table}\n <div className=\"quote-management-product-list-table-container__submit-container\">\n {submitButton}\n </div>\n </VComponent>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n \nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@/quote-management/components/QuotePricesSummary/QuotePricesSummary.css';\nimport { Accordion, AccordionSection } from '@adobe-commerce/elsie/components';\n\ninterface Entry {\n label: string;\n id: string;\n value: VNode;\n strong?: boolean;\n children?: Entry[];\n}\n\nexport interface QuotePricesSummaryProps extends HTMLAttributes<HTMLDivElement> {\n entries?: Entry[];\n}\n\nexport const QuotePricesSummary: FunctionComponent<QuotePricesSummaryProps> = ({\n className,\n entries,\n ...props\n}) => {\n const createEntry = (entry: Entry) => {\n const children = entry.children?.map(createEntry);\n return (\n <div key={entry.id} className=\"quote-management-quote-prices-summary__entry\" data-testid={`quote-prices-summary-entry-${entry.id}`}>\n {children ? <Accordion\n className=\"quote-management-quote-prices-summary__accordion\"\n data-testid={`quote-prices-summary-entry-accordion-${entry.id}`}\n >\n <AccordionSection className=\"quote-management-quote-prices-summary__accordion-section\" title={entry.label} ariaLabelTitle={entry.label} secondaryText={entry.value}>\n {children}\n </AccordionSection>\n </Accordion>\n :\n <>\n <span className={classes(['quote-management-quote-prices-summary__label', ['quote-management-quote-prices-summary__label--strong', entry.strong]])} data-testid={`quote-prices-summary-entry-label-${entry.id}`}>{entry.label}</span>\n <span className=\"quote-management-quote-prices-summary__value\" data-testid={`quote-prices-summary-entry-value-${entry.id}`}>{entry.value}</span>\n </>\n }\n </div>\n );\n };\n\n return (\n <div className={classes(['quote-management-quote-prices-summary', className])} data-testid=\"quote-prices-summary\" {...props}>\n {entries?.map(createEntry)}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport {\n HTMLAttributes,\n useCallback,\n useEffect,\n useState,\n} from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport {\n Button,\n TextArea,\n Input,\n Modal,\n Price,\n Table,\n} from '@adobe-commerce/elsie/components';\nimport { NegotiableQuoteCartItem } from '@/quote-management/data/models/negotiable-quote-model';\nimport '@/quote-management/components/LineItemNoteModal/LineItemNoteModal.css';\n\nexport interface LineItemNoteModalProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n open: boolean;\n item: NegotiableQuoteCartItem;\n onClose?: () => void;\n onConfirm: (note: string, quantity: number) => void;\n isSubmitting?: boolean;\n errorBanner?: VNode;\n successBanner?: VNode;\n showCloseButton?: boolean;\n readOnlyQuantity?: boolean;\n}\n\nexport const LineItemNoteModal: FunctionComponent<LineItemNoteModalProps> = ({\n className,\n open,\n item,\n onClose,\n onConfirm,\n isSubmitting = false,\n errorBanner,\n successBanner,\n showCloseButton = true,\n readOnlyQuantity = false,\n}) => {\n const [note, setNote] = useState('');\n const [quantity, setQuantity] = useState(item.quantity);\n const [errors, setErrors] = useState<{ note?: string; quantity?: string }>(\n {}\n );\n\n const dictionary = useText({\n title: 'NegotiableQuote.Manage.lineItemNote.title',\n productLabel: 'NegotiableQuote.Manage.lineItemNote.productLabel',\n skuLabel: 'NegotiableQuote.Manage.lineItemNote.skuLabel',\n priceLabel: 'NegotiableQuote.Manage.lineItemNote.priceLabel',\n stockLabel: 'NegotiableQuote.Manage.lineItemNote.stockLabel',\n quantityLabel: 'NegotiableQuote.Manage.lineItemNote.quantityLabel',\n discountLabel: 'NegotiableQuote.Manage.lineItemNote.discountLabel',\n subtotalLabel: 'NegotiableQuote.Manage.lineItemNote.subtotalLabel',\n noteLabel: 'NegotiableQuote.Manage.lineItemNote.noteLabel',\n notePlaceholder: 'NegotiableQuote.Manage.lineItemNote.notePlaceholder',\n noteHelper: 'NegotiableQuote.Manage.lineItemNote.noteHelper',\n confirmButton: 'NegotiableQuote.Manage.lineItemNote.confirmButton',\n cancelButton: 'NegotiableQuote.Manage.lineItemNote.cancelButton',\n noteError: 'NegotiableQuote.Manage.lineItemNote.noteError',\n quantityError: 'NegotiableQuote.Manage.lineItemNote.quantityError',\n });\n\n // Reset form when modal opens with new item\n useEffect(() => {\n if (open) {\n // Get the most recent valid note from buyer (if exists)\n const validNotes =\n item.noteFromBuyer?.filter((note) => note && note.note) || [];\n const existingNote = validNotes.length > 0 ? validNotes[0].note : '';\n setNote(existingNote || '');\n setQuantity(item.quantity);\n setErrors({});\n }\n }, [open, item.quantity, item.noteFromBuyer]);\n\n const handleConfirm = useCallback(() => {\n const newErrors: { note?: string; quantity?: string } = {};\n\n // Check if the note field is empty\n if (!note.trim()) {\n newErrors.note = dictionary.noteError;\n }\n\n // Only validate quantity if it's editable\n if (!readOnlyQuantity && quantity <= 0) {\n newErrors.quantity = dictionary.quantityError;\n }\n\n if (Object.keys(newErrors).length > 0) {\n setErrors(newErrors);\n return;\n }\n\n onConfirm(note.trim(), quantity);\n }, [note, quantity, onConfirm, dictionary, readOnlyQuantity]);\n\n const handleCancel = useCallback(() => {\n setNote('');\n setQuantity(item.quantity);\n setErrors({});\n onClose?.();\n }, [onClose, item.quantity]);\n\n if (!open) {\n return null;\n }\n\n // Calculate discount display\n const hasDiscount = item.discounts && item.discounts.length > 0;\n const discountDisplay = hasDiscount\n ? item.discounts.map((d) => d.label).join(', ')\n : '-';\n\n // Define table columns\n const columns = [\n {\n label: dictionary.productLabel,\n key: 'productName',\n },\n {\n label: dictionary.priceLabel,\n key: 'price',\n },\n {\n label: dictionary.stockLabel,\n key: 'stock',\n },\n {\n label: dictionary.quantityLabel,\n key: 'quantity',\n },\n {\n label: dictionary.discountLabel,\n key: 'discount',\n },\n {\n label: dictionary.subtotalLabel,\n key: 'subtotal',\n },\n ];\n\n // Define table row data\n const rowData = [\n {\n productName: (\n <div className=\"quote-management-line-item-note-modal__product-info\">\n <div className=\"quote-management-line-item-note-modal__product-name\">\n {item.product.name}\n </div>\n <div className=\"quote-management-line-item-note-modal__product-sku\">\n {dictionary.skuLabel}: {item.product.sku}\n </div>\n </div>\n ),\n price: (\n <Price\n amount={item.prices.originalItemPrice.value}\n currency={item.prices.originalItemPrice.currency}\n />\n ),\n stock: (\n <span className=\"quote-management-line-item-note-modal__stock\">\n {item.stockStatus}\n </span>\n ),\n quantity: readOnlyQuantity ? (\n <span className=\"quote-management-line-item-note-modal__quantity-readonly\">\n {item.quantity}\n </span>\n ) : (\n <Input\n name=\"quantity\"\n type=\"number\"\n min=\"1\"\n value={quantity.toString()}\n onInput={(e: any) => {\n const newQuantity = parseInt(e.target.value, 10) || 0;\n setQuantity(newQuantity);\n setErrors({ ...errors, quantity: undefined });\n }}\n disabled={isSubmitting}\n error={!!errors.quantity}\n required\n data-testid=\"line-item-note-quantity-input\"\n className=\"quote-management-line-item-note-modal__quantity-input\"\n />\n ),\n discount: (\n <span className=\"quote-management-line-item-note-modal__discount\">\n {discountDisplay}\n </span>\n ),\n subtotal: (\n <Price\n amount={item.prices.rowTotal.value}\n currency={item.prices.rowTotal.currency}\n />\n ),\n },\n ];\n\n return (\n <Modal\n open={open}\n size=\"medium\"\n title={<>{dictionary.title}</>}\n onClose={handleCancel}\n clickToDismiss={true}\n escapeToDismiss={true}\n showCloseButton={showCloseButton}\n className={classes(['quote-management-line-item-note-modal', className])}\n data-testid=\"line-item-note-modal\"\n >\n {errorBanner && (\n <div\n className=\"quote-management-line-item-note-modal__error-banner\"\n data-testid=\"line-item-note-modal-error-banner\"\n >\n {errorBanner}\n </div>\n )}\n\n {successBanner && (\n <div\n className=\"quote-management-line-item-note-modal__success-banner\"\n data-testid=\"line-item-note-modal-success-banner\"\n >\n {successBanner}\n </div>\n )}\n\n <div className=\"quote-management-line-item-note-modal__content\">\n {/* Product Details Table */}\n <div className=\"quote-management-line-item-note-modal__details\">\n <Table\n columns={columns}\n rowData={rowData}\n data-testid=\"line-item-note-table\"\n mobileLayout=\"stacked\"\n className=\"quote-management-line-item-note-modal__details-table\"\n />\n {errors.quantity && (\n <div className=\"quote-management-line-item-note-modal__table-error\">\n {errors.quantity}\n </div>\n )}\n </div>\n\n {/* Note TextArea */}\n <div className=\"quote-management-line-item-note-modal__form-field\">\n <TextArea\n name=\"note\"\n placeholder={dictionary.notePlaceholder}\n rows={4}\n value={note}\n onInput={(e: any) => {\n setNote(e.target.value);\n setErrors({ ...errors, note: undefined });\n }}\n label={dictionary.noteLabel}\n disabled={isSubmitting}\n data-testid=\"line-item-note-textarea\"\n />\n {!errors.note && (\n <span className=\"quote-management-line-item-note-modal__helper-text\">\n {dictionary.noteHelper}\n </span>\n )}\n {errors.note && (\n <span className=\"quote-management-line-item-note-modal__error-text\">\n {errors.note}\n </span>\n )}\n </div>\n </div>\n\n <div className=\"quote-management-line-item-note-modal__actions\">\n <Button\n variant=\"secondary\"\n size=\"medium\"\n onClick={handleCancel}\n disabled={isSubmitting}\n className=\"quote-management-line-item-note-modal__cancel-button\"\n data-testid=\"line-item-note-cancel-button\"\n >\n {dictionary.cancelButton}\n </Button>\n <Button\n variant=\"primary\"\n size=\"medium\"\n onClick={handleConfirm}\n disabled={isSubmitting}\n className=\"quote-management-line-item-note-modal__confirm-button\"\n data-testid=\"line-item-note-confirm-button\"\n >\n {dictionary.confirmButton}\n </Button>\n </div>\n </Modal>\n );\n};\n"],"names":["ItemsQuoted","className","loading","table","pricesSummary","props","ItemsQuotedSkeleton","jsxs","classes","jsx","VComponent","Skeleton","SkeletonRow","ProductListTable","items","canEdit","readOnly","showActions","onItemCheckboxChange","onItemDropdownChange","onQuantityChange","onUpdate","dropdownSelections","originalQuantities","setOriginalQuantities","useState","currentQuantities","setCurrentQuantities","useEffect","quantities","item","hasQuantityChanges","uid","dictionary","useText","columns","handleItemCheckboxChange","event","isSelected","handleItemDropdownChange","action","handleQuantityChange","newQuantity","prev","handleUpdate","discountElement","amountOff","percentOff","Price","getProductNameContent","configurableOptions","_a","option","bundleOptions","_b","value","formatNoteTimestamp","timestamp","getUserTimezone","getNotesContent","validNotes","note","index","rowData","quantityElement","Input","e","productRow","Checkbox","Picker","notes","Table","wrapperNode","h","wrapperProps","submitButton","Button","QuotePricesSummary","entries","createEntry","entry","children","Accordion","AccordionSection","Fragment","LineItemNoteModal","open","onClose","onConfirm","isSubmitting","errorBanner","successBanner","showCloseButton","readOnlyQuantity","setNote","quantity","setQuantity","errors","setErrors","existingNote","handleConfirm","useCallback","newErrors","handleCancel","discountDisplay","d","Modal","TextArea"],"mappings":"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"}
|
package/chunks/TabbedContent.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*! Copyright 2025 Adobe
|
|
2
|
-
All Rights Reserved. */
|
|
3
|
-
import{jsx as n,jsxs as u}from"@dropins/tools/preact-jsx-runtime.js";import{classes as s,VComponent as _}from"@dropins/tools/lib.js";/* empty css */import{Picker as h}from"@dropins/tools/components.js";import{useState as g,useMemo as q}from"@dropins/tools/preact-compat.js";const x=({className:r,dropdownPlaceholder:m,dropdownOptions:a,dropdownValue:o,handleDropdownChange:d,buttons:e,...l})=>{const b=a&&a.length>0,i=e&&e.length>0,t=(a==null?void 0:a.map(c=>({text:c.label,value:c.value})))||[];return t.unshift({text:m||"",value:""}),n("div",{className:"quote-management-actions-bar__container","data-testid":"actions-bar-container",children:u("div",{className:s(["quote-management-actions-bar",r]),"data-testid":"actions-bar",...l,children:[b&&n(h,{name:"dropdown",id:"dropdown",handleSelect:d,className:"quote-management-actions-bar__dropdown","data-testid":"dropdown",options:t,value:o||""},`actions-bar-picker-${o||"empty"}`),i&&n("div",{className:"quote-management-actions-bar__buttons","data-testid":"buttons-container",children:e==null?void 0:e.map((c,v)=>n(_,{node:c,className:s(["quote-management-actions-bar__button"])},v))})]})})},A=({className:r,tabs:m,tabsContent:a,defaultActiveTab:o,...d})=>{const[e,l]=g(o||Array.from(m.keys())[0]),b=t=>{l(t)},i=q(()=>a.get(e),[e,a]);return u("div",{...d,className:s(["quote-management-tabbed-content",r]),children:[m&&n("div",{"data-testid":"tabbed-content-tabs",className:s(["quote-management-tabbed-content__tabs"]),children:Array.from(m.entries()).map(([t,c])=>n("button",{className:s(["quote-management-tabbed-content__tab",["quote-management-tabbed-content__tab--active",t===e]]),onClick:()=>b(t),children:c},t))}),i&&n("div",{className:s(["quote-management-tabbed-content__active-tab-content"]),children:n(_,{node:i})})]})};export{x as A,A as T};
|
|
4
|
-
//# sourceMappingURL=TabbedContent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TabbedContent.js","sources":["/@dropins/storefront-quote-management/src/components/ActionsBar/ActionsBar.tsx","/@dropins/storefront-quote-management/src/components/TabbedContent/TabbedContent.tsx"],"sourcesContent":["/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport '@/quote-management/components/ActionsBar/ActionsBar.css';\nimport { Picker } from '@adobe-commerce/elsie/components';\n\nexport interface ActionsBarProps extends HTMLAttributes<HTMLDivElement> {\n dropdownPlaceholder?: string;\n dropdownOptions?: {\n label: string;\n value: string;\n }[];\n dropdownValue?: string;\n handleDropdownChange?: (event: Event) => void;\n buttons?: VNode[];\n}\n\nexport const ActionsBar: FunctionComponent<ActionsBarProps> = ({\n className,\n dropdownPlaceholder,\n dropdownOptions,\n dropdownValue,\n handleDropdownChange,\n buttons,\n ...props\n}) => {\n const hasDropdown = dropdownOptions && dropdownOptions.length > 0;\n const hasButtons = buttons && buttons.length > 0;\n\n const pickerOptions =\n dropdownOptions?.map((option) => ({\n text: option.label,\n value: option.value,\n })) || [];\n pickerOptions.unshift({\n text: dropdownPlaceholder || '',\n value: '',\n });\n\n return (\n <div\n className=\"quote-management-actions-bar__container\"\n data-testid=\"actions-bar-container\"\n >\n <div\n className={classes(['quote-management-actions-bar', className])}\n data-testid=\"actions-bar\"\n {...props}\n >\n {hasDropdown && (\n <Picker\n key={`actions-bar-picker-${dropdownValue || 'empty'}`}\n name=\"dropdown\"\n id=\"dropdown\"\n handleSelect={handleDropdownChange}\n className=\"quote-management-actions-bar__dropdown\"\n data-testid=\"dropdown\"\n options={pickerOptions}\n value={dropdownValue || ''}\n />\n )}\n {hasButtons && (\n <div\n className=\"quote-management-actions-bar__buttons\"\n data-testid=\"buttons-container\"\n >\n {buttons?.map((button, index) => (\n <VComponent\n node={button}\n className={classes(['quote-management-actions-bar__button'])}\n key={index}\n />\n ))}\n </div>\n )}\n </div>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes, useMemo, useState } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport '@/quote-management/components/TabbedContent/TabbedContent.css';\n\nexport interface TabbedContentProps extends HTMLAttributes<HTMLDivElement> {\n tabs: Map<string, string>;\n tabsContent: Map<string, VNode>;\n defaultActiveTab?: string;\n}\n\nexport const TabbedContent: FunctionComponent<TabbedContentProps> = ({\n className,\n tabs,\n tabsContent,\n defaultActiveTab,\n ...props\n}) => {\n const [activeTabId, setActiveTabId] = useState<string>(\n defaultActiveTab || Array.from(tabs.keys())[0]\n );\n\n const handleTabClick = (tabId: string) => {\n setActiveTabId(tabId);\n };\n\n const activeTabContent = useMemo(() => {\n return tabsContent.get(activeTabId);\n }, [activeTabId, tabsContent]);\n\n return (\n <div {...props} className={classes(['quote-management-tabbed-content', className])}>\n {tabs &&\n <div data-testid=\"tabbed-content-tabs\" className={classes(['quote-management-tabbed-content__tabs'])}>\n {Array.from(tabs.entries()).map(([tabId, tabLabel]) => (\n <button\n className={\n classes([\n 'quote-management-tabbed-content__tab',\n ['quote-management-tabbed-content__tab--active', tabId === activeTabId]\n ])}\n key={tabId}\n onClick={() => handleTabClick(tabId)}\n >\n {tabLabel}\n </button>\n ))}\n </div>\n }\n {\n activeTabContent &&\n <div className={classes(['quote-management-tabbed-content__active-tab-content'])}>\n <VComponent\n node={activeTabContent as VNode}\n />\n </div>\n }\n </div>\n );\n};\n"],"names":["ActionsBar","className","dropdownPlaceholder","dropdownOptions","dropdownValue","handleDropdownChange","buttons","props","hasDropdown","hasButtons","pickerOptions","option","jsx","jsxs","classes","Picker","button","index","VComponent","TabbedContent","tabs","tabsContent","defaultActiveTab","activeTabId","setActiveTabId","useState","handleTabClick","tabId","activeTabContent","useMemo","tabLabel"],"mappings":"kSA0BO,MAAMA,EAAiD,CAAC,CAC7D,UAAAC,EACA,oBAAAC,EACA,gBAAAC,EACA,cAAAC,EACA,qBAAAC,EACA,QAAAC,EACA,GAAGC,CACL,IAAM,CACJ,MAAMC,EAAcL,GAAmBA,EAAgB,OAAS,EAC1DM,EAAaH,GAAWA,EAAQ,OAAS,EAEzCI,GACJP,GAAA,YAAAA,EAAiB,IAAKQ,IAAY,CAChC,KAAMA,EAAO,MACb,MAAOA,EAAO,KAAA,MACT,CAAA,EACT,OAAAD,EAAc,QAAQ,CACpB,KAAMR,GAAuB,GAC7B,MAAO,EAAA,CACR,EAGCU,EAAC,MAAA,CACC,UAAU,0CACV,cAAY,wBAEZ,SAAAC,EAAC,MAAA,CACC,UAAWC,EAAQ,CAAC,+BAAgCb,CAAS,CAAC,EAC9D,cAAY,cACX,GAAGM,EAEH,SAAA,CAAAC,GACCI,EAACG,EAAA,CAEC,KAAK,WACL,GAAG,WACH,aAAcV,EACd,UAAU,yCACV,cAAY,WACZ,QAASK,EACT,MAAON,GAAiB,EAAA,EAPnB,sBAAsBA,GAAiB,OAAO,EAAA,EAUtDK,GACCG,EAAC,MAAA,CACC,UAAU,wCACV,cAAY,oBAEX,SAAAN,GAAA,YAAAA,EAAS,IAAI,CAACU,EAAQC,IACrBL,EAACM,EAAA,CACC,KAAMF,EACN,UAAWF,EAAQ,CAAC,sCAAsC,CAAC,CAAA,EACtDG,CAAA,EAER,CAAA,CACH,CAAA,CAAA,CAEJ,CAAA,CAGN,ECnEaE,EAAuD,CAAC,CACnE,UAAAlB,EACA,KAAAmB,EACA,YAAAC,EACA,iBAAAC,EACA,GAAGf,CACL,IAAM,CACJ,KAAM,CAACgB,EAAaC,CAAc,EAAIC,EACpCH,GAAoB,MAAM,KAAKF,EAAK,KAAA,CAAM,EAAE,CAAC,CAAA,EAGzCM,EAAkBC,GAAkB,CACxCH,EAAeG,CAAK,CACtB,EAEMC,EAAmBC,EAAQ,IACxBR,EAAY,IAAIE,CAAW,EACjC,CAACA,EAAaF,CAAW,CAAC,EAE7B,OACER,EAAC,MAAA,CAAK,GAAGN,EAAO,UAAWO,EAAQ,CAAC,kCAAmCb,CAAS,CAAC,EAC9E,SAAA,CAAAmB,GACCR,EAAC,OAAI,cAAY,sBAAsB,UAAWE,EAAQ,CAAC,uCAAuC,CAAC,EAChG,eAAM,KAAKM,EAAK,SAAS,EAAE,IAAI,CAAC,CAACO,EAAOG,CAAQ,IAC/ClB,EAAC,SAAA,CACC,UACEE,EAAQ,CACN,uCACA,CAAC,+CAAgDa,IAAUJ,CAAW,CAAA,CACvE,EAEH,QAAS,IAAMG,EAAeC,CAAK,EAElC,SAAAG,CAAA,EAHIH,CAAA,CAKR,EACH,EAGAC,KACC,MAAA,CAAI,UAAWd,EAAQ,CAAC,qDAAqD,CAAC,EAC7E,SAAAF,EAACM,EAAA,CACC,KAAMU,CAAA,CAAA,CACR,CACF,CAAA,EAEJ,CAEJ"}
|