PageSourceSearch

https://www.simon-o.com/theme/dc1fb8d81ca68ccca1685d2e11da4a18/js/…quote-manage-line-items.plugin.ts.70739a.js

js simon-o.com collected 2026-10-10 01:47:18 UTC 17,545 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkquote_management=self.webpackChunkquote_management||[]).push([[45933],{933(e,t,i){i.r(t),i.d(t,{default:()=>o});var n=i(220),s=i(724),a=i(374);class o extends n.A{static #e=this.options={events:{resyncData:"b2b-quote-manage-line-items-plugin-resync-data",historyOpen:"b2b-quote-manage-line-items-history-open",lineItemsReloaded:"b2b-quote-manage-line-items-reloaded",updateTotalLineItems:"b2b-quote-manage-line-items-update-total-line-items",lineItemsReloadRequested:"b2b-quote-manage-line-items-reload-requested",quickSearchQuoteLineItemAdded:"b2b-quick-search-quote-line-item-added",quoteLineItemDeleteConfirmed:"b2b-quote-manage-line-item-delete-confirmed",saved:"b2b-quote-manage-line-items-saved",historyReload:"b2b-quote-manage-line-items-history-reload",quoteDetailReload:"b2b-quote-detail-reload"},selectors:{actionDetail:".quote-manage-line-items-modal__action-detail",modalRoot:".quote-manage-line-items-modal__root",quantityInput:"[data-b2b-quote-manage-line-items-quantity-input]",requestedPriceInput:"[data-b2b-quote-manage-line-items-requested-price]",root:".quote-manage-line-items-modal__content",row:"[data-b2b-quote-manage-line-items-row]",saveButton:".quote-manage-line-items-modal__save",searchContainer:".quote-manage-line-items-modal__topbar",hiddenSubmitButton:"[data-hidden-quote-manage-line-items-submit-button]",historySidebar:".quote-manage-line-items-modal__sidebar",quoteDetail:"[data-b2b-quote-detail-plugin]"},classes:{selectedRow:"quote-manage-line-items-modal__row--selected"},createDraftVersionUrl:"",deleteDraftVersionUrl:"",draftVersionId:"",errorMessages:{createDraftVersionFailed:"",createDraftVersionGenericFailed:"",missingDraftVersionId:"",editLineItemFailed:"",removeLineItemFailed:"",saveDraftVersionFailed:"",deleteDraftVersionFailed:""},isEditable:!0,saveDraftVersionUrl:""};init(){this._boundHandleChange=this._handleChange.bind(this),this._boundHandleClick=this._handleClick.bind(this),this._boundHandleKeypress=this._handleKeypress.bind(this),this._boundHandleModalHidden=this._handleModalHidden.bind(this),this._boundHandleModalShown=this._handleModalShown.bind(this),this._boundHandlePageLifecycleClose=this._handlePageLifecycleClose.bind(this),this._quickSearchQuoteLineItemAddedHandler=this._handleQuickSearchQuoteLineItemAdded.bind(this),this._lineItemsReloadRequestedHandler=this._handleLineItemsReloadRequested.bind(this),this._quoteLineItemDeleteConfirmedHandler=this._handleQuoteLineItemDeleteConfirmed.bind(this),this._boundHandleAfterAjaxSubmit=this._handleAfterAjaxSubmit.bind(this),this._syncState(),this._registerModalEvents(),this._rootElement?.addEventListener("onAfterAjaxSubmit",this._boundHandleAfterAjaxSubmit)}_syncState(){this._rootElement=document.querySelector(this.options.selectors.root),this._modalElement=this._rootElement?.closest(".modal")||null,this._hiddenSubmitButton=this._modalElement?.querySelector(this.options.selectors.hiddenSubmitButton),this._saveButton=this._modalElement?.querySelector(this.options.selectors.saveButton)}_registerModalEvents(){this._modalElement&&(this._modalElement.dispatchEvent(new CustomEvent(this.options.events.resyncData,{detail:{options:this.options}})),"true"!==this._modalElement.dataset.hasB2bQuoteManageLineItemsModalEvents&&this._modalElement.classList.contains("show")&&(this._modalElement.addEventListener("hidden.bs.modal",this._boundHandleModalHidden),this._modalElement.addEventListener("shown.bs.modal",this._boundHandleModalShown),this._modalElement.dataset.hasB2bQuoteManageLineItemsModalEvents="true"),"true"===this._modalElement.dataset.hasB2bQuoteManageLineItemsModalDelegatedEvents||this._modalElement.classList.contains("show")||this._modalElement.addEventListener("shown.bs.modal",this._boundHandleModalShown),"true"!==this._modalElement.dataset.hasB2bQuoteManageLineItemsModalDelegatedEvents&&(this._modalElement.addEventListener("click",this._boundHandleClick),this._modalElement.addEventListener("change",this._boundHandleChange),this._modalElement.addEventListener("keypress",this._boundHandleKeypress),this._modalElement.addEventListener(this.options.events.quickSearchQuoteLineItemAdded,this._quickSearchQuoteLineItemAddedHandler),this._modalElement.addEventListener(this.options.events.lineItemsReloadRequested,this._lineItemsReloadRequestedHandler),this._modalElement.addEventListener(this.options.events.resyncData,e=>{this.options={...this.options,...e.detail.options},this._syncState(),this._modalElement?.dispatchEvent(new CustomEvent(this.options.events.updateTotalLineItems,{detail:{totalLineItems:this.options.totalLineItems}}))}),this._modalElement.addEventListener(this.options.events.quoteLineItemDeleteConfirmed,this._quoteLineItemDeleteConfirmedHandler),this._modalElement.dataset.hasB2bQuoteManageLineItemsModalDelegatedEvents="true"))}handleFocusItem(){if(!this._modalElement)return;let e=this._modalElement.dataset.initialAction,t=this._modalElement.dataset.focusLineItemId;if(e&&t){if("comment"===e||"history"===e){let i=this._modalElement.querySelector(`${this.options.selectors.row}[data-line-item-id="${t}"]`);i&&(this._highlightSelectedRow(i),this._openHistory(t,"comment"===e))}else{let e=this._modalElement.querySelector(`${this.options.selectors.quantityInput}.quantity-input-${t}`);e?.focus()}this._modalElement.removeAttribute("data-focus-line-item-id"),this._modalElement.removeAttribute("data-initial-action")}}_handleAfterAjaxSubmit(){this._syncState(),this._emitLineItemsReloaded(),this.handleFocusItem()}_handleModalShown(){this._modalElement?.removeEventListener("shown.bs.modal",this._boundHandleModalShown),this._createDraftVersionAndLoadLineItems().catch(e=>{(0,a.F)(e)})}_handleModalHidden(){this._modalElement&&(this._modalElement.removeEventListener("hidden.bs.modal",this._boundHandleModalHidden),this._modalElement.dataset.hasB2bQuoteManageLineItemsModalEvents="false"),this._handlePageLifecycleClose()}async _createDraftVersionAndLoadLineItems(){if(!this._shouldCreateDraftVersionOnModalOpen()){this._emitHistoryReloaded("reload"),this._submitHiddenManageLineItemsButton();return}let e=`[data-bs-dismiss="modal"], ${this.options.selectors.saveButton}`;s.A.create(this._rootElement),this._toggleInteractiveElementsPending(!0,e);try{let e=await this._createDraftVersion();this._emitHistoryReloaded("reload",e),this._registerDraftCleanupEvents(),this._submitHiddenManageLineItemsButton(e)}catch(e){(0,a.F)(this._getErrorMessage("createDraftVersionGenericFailed")||e)}finally{this._toggleInteractiveElementsPending(!1,e)}}_shouldCreateDraftVersionOnModalOpen(){return!1!==this.options.isEditable&&"0"!==this.options.isEditable}async _createDraftVersion(){let e=(this.options.createDraftVersionUrl||"").trim(),t=await fetch(e,{method:"POST",credentials:"same-origin",headers:{Accept:"application/json","X-Requested-With":"XMLHttpRequest"}});if(!t.ok)throw Error(this._getErrorMessage("createDraftVersionFailed",{status:t.status}));let i=await t.json();return this._getDraftVersionIdFromResponse(i)}_getDraftVersionIdFromResponse(e){let t=(e.versionId||"").trim();if(""===t)throw Error(this._getErrorMessage("missingDraftVersionId"));return t}_submitHiddenManageLineItemsButton(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=this._resolveHiddenSubmitButton();if(!t)return;if(!e){t.click();return}let i=this._buildHiddenSubmitButtonAction(t,e);t.value=e,t.dataset.formAction=i,t.setAttribute("formaction",i),t.setAttribute("value",e),this._rootElement?.setAttribute("action",i),t.click()}_resolveHiddenSubmitButton(){return this._hiddenSubmitButton=this._modalElement?.querySelector(this.options.selectors.hiddenSubmitButton)||null,this._hiddenSubmitButton}_buildHiddenSubmitButtonAction(e,t){let i=new URL(e.dataset.formAction||e.getAttribute("formaction")||this._rootElement?.getAttribute("action")||window.location.href,window.location.origin);return i.searchParams.set("versionId",t),`${i.pathname}${i.search}${i.hash}`}_handleKeypress(e){let t=e.target;(t instanceof HTMLElement?t.closest(this.options.selectors.searchContainer):null)&&"Enter"===e.key&&e.preventDefault()}_handleClick(e){let t=e.target;if(!(t instanceof Element))return;let i=t.closest(this.options.selectors.saveButton);if(i&&this._modalElement?.contains(i)){e.preventDefault(),this._saveDraftVersion().then(()=>{let e=this._rootElement?.closest(this.options.selectors.quoteDetail);e?.dispatchEvent(new CustomEvent(this.options.events.quoteDetailReload,{bubbles:!0}))}).catch(e=>{(0,a.F)(e)});return}let n=t.closest(this.options.selectors.actionDetail);if(!n||!this._modalElement?.contains(n))return;e.preventDefault();let s=n.closest(this.options.selectors.row),o=(s?.dataset.lineItemId||"").trim();s&&o&&(this._highlightSelectedRow(s),this._openHistory(o))}_highlightSelectedRow(e){this._modalElement?.querySelectorAll(this.options.selectors.row).forEac
1h(t=>{t.classList.toggle(this.options.classes.selectedRow,t===e)})}_handleChange(e){let t=e.target;if(t instanceof HTMLElement){if(t instanceof HTMLInputElement&&t.matches(this.options.selectors.quantityInput)){let e=t.closest(this.options.selectors.row);if(!e)return;let i=this._normalizeQuantityValue(t.value);if(t.value=`${i}`,!t.checkValidity()){t.reportValidity();return}this._submitRowEdit(e,{quantity:`${i}`});return}if(t instanceof HTMLInputElement&&t.matches(this.options.selectors.requestedPriceInput)){let e=t.closest(this.options.selectors.row);if(!e)return;let i=this._normalizeRequestedPriceValue(t.value);if(t.value=i,!t.checkValidity()){t.reportValidity();return}this._submitRowEdit(e,{requestedPrice:i})}}}_handleQuickSearchQuoteLineItemAdded(){this._reloadManageLineItems("add").catch(e=>{(0,a.F)(e)})}_handleLineItemsReloadRequested(e){e.preventDefault();let t=e.detail||{},i=t.reason||"reload";this._reloadManageLineItems(i).then(()=>{t.resolve?.()}).catch(e=>{t.reject?.(e),(0,a.F)(e)})}_handleQuoteLineItemDeleteConfirmed(e){e.stopPropagation();let t=e.detail||{};this._submitLineItemDelete(t).catch(e=>{(0,a.F)(e)})}async _submitRowEdit(e,t){let i=(e.dataset.editUrl||"").trim(),n=(e.dataset.versionId||"").trim();if(i&&n){this._toggleInteractiveElementsPending(!0);try{let e=this._buildVersionIdPayload(n);Object.entries(t).forEach(t=>{let[i,n]=t;e.set(i,n)});let s=await fetch(i,{method:"POST",body:e.toString(),credentials:"same-origin",headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8","X-Requested-With":"XMLHttpRequest"}});if(!s.ok)throw Error(this._getErrorMessage("editLineItemFailed",{status:s.status}));await this._reloadManageLineItems("edit")}catch(e){(0,a.F)(e)}finally{this._toggleInteractiveElementsPending(!1)}}}async _submitLineItemDelete(e){let t=e.trigger instanceof HTMLElement?e.trigger:null,i=t?.closest(this.options.selectors.row)||null,n=this._getStringFromUnknown(e.context?.lineItemId)||(i?.dataset.lineItemId||"").trim(),s=this._getStringFromUnknown(e.context?.removeUrl)||(i?.dataset.removeUrl||"").trim(),a=this._getStringFromUnknown(e.context?.versionId)||(i?.dataset.versionId||"").trim();if(s&&a){this._toggleInteractiveElementsPending(!0);try{let e=await fetch(s,{method:"POST",body:this._buildVersionIdPayload(a).toString(),credentials:"same-origin",headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8","X-Requested-With":"XMLHttpRequest"}});if(!e.ok)throw Error(this._getErrorMessage("removeLineItemFailed",{status:e.status}));await this._reloadManageLineItems("delete",n)}finally{this._toggleInteractiveElementsPending(!1)}}}async _reloadManageLineItems(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"reload",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;await new Promise(e=>{let t=!1,i=()=>{this._rootElement?.removeEventListener("onAfterAjaxSubmit",i),this._rootElement?.removeEventListener("removeLoadingIndicators",i),window.clearTimeout(n),t||(t=!0,e())},n=window.setTimeout(i,15e3);this._rootElement?.addEventListener("onAfterAjaxSubmit",i),this._rootElement?.addEventListener("removeLoadingIndicators",i),this._rootElement?.dispatchEvent(new Event("submit",{bubbles:!0,cancelable:!0}))}),this._emitHistoryReloaded(e,null,t)}async _saveDraftVersion(){let e=(this.options.saveDraftVersionUrl||"").trim(),t=this.options.draftVersionId;if(e&&t){this._setSaveLoadingState(!0);try{let i=await fetch(e,{method:"POST",body:this._buildVersionIdPayload(t).toString(),credentials:"same-origin",headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8","X-Requested-With":"XMLHttpRequest"}});if(!i.ok)throw Error(await this._getResponseErrorMessage(i,"saveDraftVersionFailed",{status:i.status}));this._unregisterDraftCleanupEvents(),this._emitDraftVersionSaved(t),this._closeModal()}finally{this._setSaveLoadingState(!1)}}}_openHistory(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1];this._modalElement?.dispatchEvent(new CustomEvent(this.options.events.historyOpen,{bubbles:!0,detail:{lineItemId:e,focusComment:t}}))}_emitHistoryReloaded(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;this._modalElement?.dispatchEvent(new CustomEvent(this.options.events.historyReload,{bubbles:!0,detail:{lineItemId:i,versionId:t||this.options.draftVersionId,reason:e}}))}_emitLineItemsReloaded(){this._modalElement?.dispatchEvent(new CustomEvent(this.options.events.lineItemsReloaded,{bubbles:!0,detail:{reason:"reload"}}))}_emitDraftVersionSaved(e){this.$emitter.publish("saveDraftVersion",{draftVersionId:e}),this._rootElement?.dispatchEvent(new CustomEvent(this.options.events.saved,{bubbles:!0,detail:{draftVersionId:e}}))}_closeModal(){let e=this._rootElement?.closest(".modal");e&&"undefined"!=typeof bootstrap&&bootstrap.Modal&&(bootstrap.Modal.getInstance?.(e)||bootstrap.Modal.getOrCreateInstance?.(e)||new bootstrap.Modal(e)).hide()}
1_setSaveLoadingState(e){this._saveButton?.toggleAttribute("aria-busy",e),this._saveButton&&(this._saveButton.disabled=e)}_buildVersionIdPayload(e){let t=new URLSearchParams;return t.set("versionId",e),t}_handlePageLifecycleClose(){this._deleteCreatedDraftVersion({keepalive:!0})}_registerDraftCleanupEvents(){this._unregisterDraftCleanupEvents(),window.addEventListener("pagehide",this._boundHandlePageLifecycleClose),window.addEventListener("beforeunload",this._boundHandlePageLifecycleClose)}_unregisterDraftCleanupEvents(){window.removeEventListener("pagehide",this._boundHandlePageLifecycleClose),window.removeEventListener("beforeunload",this._boundHandlePageLifecycleClose)}async _deleteCreatedDraftVersion(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.options.draftVersionId,i=(this.options.deleteDraftVersionUrl||"").trim();if(!t||""===i)return;this._unregisterDraftCleanupEvents();let n=new URLSearchParams;n.set("versionId",t);let s=await fetch(i,{method:"DELETE",body:n.toString(),credentials:"same-origin",keepalive:!0===e.keepalive,headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8","X-Requested-With":"XMLHttpRequest"}});if(!s.ok)throw Error(await this._getResponseErrorMessage(s,"deleteDraftVersionFailed",{status:s.status}))}async _getResponseErrorMessage(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};try{let t=await e.json(),i=t.errors?.find(e=>"string"==typeof e.detail||"string"==typeof e.message),n="string"==typeof i?.detail?i.detail.trim():"",s="string"==typeof i?.message?i.message.trim():"";if(n)return n;if(s)return s}catch{}return this._getErrorMessage(t,i)}_getErrorMessage(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=this.options.errorMessages||{},n=`${i[e]||e}`;return Object.entries(t).forEach(e=>{let[t,i]=e;n=n.split(`%${t}%`).join(`${i}`)}),n}_toggleInteractiveElementsPending(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:'button, input, select, textarea, a[href], [tabindex], [role="button"]';this._modalElement?.querySelectorAll(t).forEach(t=>{this._toggleInteractiveElementPending(t,e)})}_toggleInteractiveElementPending(e,t){if(t){if("true"===e.dataset.b2bQuoteManageLineItemsPending)return;if(e.dataset.b2bQuoteManageLineItemsPending="true",this._isDisableableFormControl(e)){e.disabled=!0;return}e.dataset.b2bQuoteManageLineItemsAriaDisabled=e.getAttribute("aria-disabled")||"",e.dataset.b2bQuoteManageLineItemsTabindex=e.getAttribute("tabindex")||"",e.dataset.b2bQuoteManageLineItemsPointerEvents=e.style.pointerEvents||"",e.setAttribute("aria-disabled","true"),e.setAttribute("tabindex","-1"),e.style.pointerEvents="none";return}if("true"===e.dataset.b2bQuoteManageLineItemsPending){if(this._isDisableableFormControl(e))e.disabled=!1;else{let t=e.dataset.b2bQuoteManageLineItemsAriaDisabled||"",i=e.dataset.b2bQuoteManageLineItemsTabindex||"",n=e.dataset.b2bQuoteManageLineItemsPointerEvents||"";t?e.setAttribute("aria-disabled",t):e.removeAttribute("aria-disabled"),i?e.setAttribute("tabindex",i):e.removeAttribute("tabindex"),e.style.pointerEvents=n,delete e.dataset.b2bQuoteManageLineItemsAriaDisabled,delete e.dataset.b2bQuoteManageLineItemsTabindex,delete e.dataset.b2bQuoteManageLineItemsPointerEvents}delete e.dataset.b2bQuoteManageLineItemsPending}}_isDisableableFormControl(e){return e instanceof HTMLButtonElement||e instanceof HTMLInputElement||e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement}_getStringFromUnknown(e){return"string"==typeof e?e.trim():""}_normalizeQuantityValue(e){let t=Number.parseInt(e,10);return Number.isNaN(t)||t<1?1:t}_normalizeRequestedPriceValue(e){return e.trim().replace(",",".")}}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.