@dropins/storefront-quick-order 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/api.js CHANGED
@@ -1,4 +1,10 @@
1
1
  /*! Copyright 2026 Adobe
2
2
  All Rights Reserved. */
3
- import{c as i,f as o,g as p,a as h,i as c,r as f,s as g,b as n,d}from"./chunks/getStoreConfig.js";import"@dropins/tools/lib.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/event-bus.js";export{i as config,o as fetchGraphQl,p as getConfig,h as getStoreConfig,c as initialize,f as removeFetchGraphQlHeader,g as setEndpoint,n as setFetchGraphQlHeader,d as setFetchGraphQlHeaders};
3
+ import{events as c}from"@dropins/tools/event-bus.js";import{Initializer as n}from"@dropins/tools/lib.js";import{FetchGraphQL as a}from"@dropins/tools/fetch-graphql.js";const i=new n({init:async r=>{const e={quickOrderActive:!1};try{const t=await g();e.quickOrderActive=t.storeConfig.quickOrderActive}catch(t){console.error("[Quick Order] Failed to fetch store config:",t)}i.config.setConfig({...e,...r})},listeners:()=>[]}),m=i.config,{setEndpoint:C,setFetchGraphQlHeader:k,removeFetchGraphQlHeader:G,setFetchGraphQlHeaders:O,fetchGraphQl:s,getConfig:p}=new a().getMethods(),f=`
4
+ query GET_STORE_CONFIG {
5
+ storeConfig {
6
+ quickorder_active
7
+ }
8
+ }
9
+ `,h=r=>{throw r instanceof DOMException&&r.name==="AbortError"||c.emit("b2b-quick-order/error",{source:"auth",type:"network",error:r}),r},d=r=>{const e=r.map(t=>t.message).join(" ");throw Error(e)},g=async()=>await s(f,{method:"GET",cache:"force-cache"}).then(r=>{var e,t,o;return(e=r.errors)!=null&&e.length?d(r.errors):{storeConfig:{quickOrderActive:((o=(t=r==null?void 0:r.data)==null?void 0:t.storeConfig)==null?void 0:o.quickorder_active)??!1}}}).catch(h);export{m as config,s as fetchGraphQl,p as getConfig,g as getStoreConfig,i as initialize,G as removeFetchGraphQlHeader,C as setEndpoint,k as setFetchGraphQlHeader,O as setFetchGraphQlHeaders};
4
10
  //# sourceMappingURL=api.js.map
package/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"api.js","sources":["/@dropins/storefront-quick-order/src/api/initialize/initialize.ts","/@dropins/storefront-quick-order/src/api/fetch-graphql/fetch-graphql.ts","/@dropins/storefront-quick-order/src/api/getStoreConfig/graphql/getStoreConfig.graphql.ts","/@dropins/storefront-quick-order/src/lib/network-error.ts","/@dropins/storefront-quick-order/src/lib/fetch-error.ts","/@dropins/storefront-quick-order/src/api/getStoreConfig/getStoreConfig.ts"],"sourcesContent":["import { Initializer } from '@adobe-commerce/elsie/lib';\nimport { Lang } from '@adobe-commerce/elsie/i18n';\nimport { getStoreConfig } from '@/b2b-quick-order/api';\n\ntype ConfigProps = {\n langDefinitions?: Lang;\n quickOrderActive?: boolean;\n};\n\nexport const initialize = new Initializer<ConfigProps>({\n init: async (config) => {\n const defaultConfig: Partial<ConfigProps> = {\n quickOrderActive: false,\n };\n\n try {\n const storeConfigResponse = await getStoreConfig();\n defaultConfig.quickOrderActive =\n storeConfigResponse.storeConfig.quickOrderActive;\n } catch (error) {\n console.error('[Quick Order] Failed to fetch store config:', error);\n }\n\n initialize.config.setConfig({ ...defaultConfig, ...config });\n },\n\n listeners: () => [],\n});\n\nexport const config = initialize.config;\n","import { FetchGraphQL } from '@adobe-commerce/fetch-graphql';\n\nexport const {\n setEndpoint,\n setFetchGraphQlHeader,\n removeFetchGraphQlHeader,\n setFetchGraphQlHeaders,\n fetchGraphQl,\n getConfig,\n} = new FetchGraphQL().getMethods();\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const GET_STORE_CONFIG = /* GraphQL */ `\n query GET_STORE_CONFIG {\n storeConfig {\n quickorder_active\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { events } from '@adobe-commerce/event-bus';\n\n/**\n * A function which can be attached to fetchGraphQL to handle thrown errors in\n * a generic way.\n */\nexport const handleNetworkError = (error: Error) => {\n const isAbortError =\n error instanceof DOMException && error.name === 'AbortError';\n\n if (!isAbortError) {\n events.emit('b2b-quick-order/error', {\n source: 'auth',\n type: 'network',\n error,\n });\n }\n throw error;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n/** Actions */\nexport const handleFetchError = (errors: Array<{ message: string }>) => {\n const errorMessage = errors.map((e: any) => e.message).join(' ');\n\n throw Error(errorMessage);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { GET_STORE_CONFIG } from './graphql/getStoreConfig.graphql';\nimport { handleNetworkError } from '@/b2b-quick-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-quick-order/lib/fetch-error';\n\nexport const getStoreConfig = async (): Promise<{\n storeConfig: {\n quickOrderActive: boolean;\n };\n}> => {\n return await fetchGraphQl(GET_STORE_CONFIG, {\n method: 'GET',\n cache: 'force-cache',\n })\n .then((response) => {\n if (response.errors?.length) return handleFetchError(response.errors);\n\n return {\n storeConfig: {\n quickOrderActive:\n response?.data?.storeConfig?.quickorder_active ?? false,\n },\n };\n })\n .catch(handleNetworkError);\n};\n"],"names":["initialize","Initializer","config","defaultConfig","storeConfigResponse","getStoreConfig","error","setEndpoint","setFetchGraphQlHeader","removeFetchGraphQlHeader","setFetchGraphQlHeaders","fetchGraphQl","getConfig","FetchGraphQL","GET_STORE_CONFIG","handleNetworkError","events","handleFetchError","errors","errorMessage","e","response","_a","_c","_b"],"mappings":"wKASO,MAAMA,EAAa,IAAIC,EAAyB,CACrD,KAAM,MAAOC,GAAW,CACtB,MAAMC,EAAsC,CAC1C,iBAAkB,EAAA,EAGpB,GAAI,CACF,MAAMC,EAAsB,MAAMC,EAAA,EAClCF,EAAc,iBACZC,EAAoB,YAAY,gBACpC,OAASE,EAAO,CACd,QAAQ,MAAM,8CAA+CA,CAAK,CACpE,CAEAN,EAAW,OAAO,UAAU,CAAE,GAAGG,EAAe,GAAGD,EAAQ,CAC7D,EAEA,UAAW,IAAM,CAAA,CACnB,CAAC,EAEYA,EAASF,EAAW,OC3BpB,CACX,YAAAO,EACA,sBAAAC,EACA,yBAAAC,EACA,uBAAAC,EACA,aAAAC,EACA,UAAAC,CACF,EAAI,IAAIC,EAAA,EAAe,WAAA,ECQVC,EAAiC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECMjCC,EAAsBT,GAAiB,CAIlD,MAFEA,aAAiB,cAAgBA,EAAM,OAAS,cAGhDU,EAAO,KAAK,wBAAyB,CACnC,OAAQ,OACR,KAAM,UACN,MAAAV,CAAA,CACD,EAEGA,CACR,ECjBaW,EAAoBC,GAAuC,CACtE,MAAMC,EAAeD,EAAO,IAAKE,GAAWA,EAAE,OAAO,EAAE,KAAK,GAAG,EAE/D,MAAM,MAAMD,CAAY,CAC1B,ECAad,EAAiB,SAKrB,MAAMM,EAAaG,EAAkB,CAC1C,OAAQ,MACR,MAAO,aAAA,CACR,EACE,KAAMO,GAAa,WAClB,OAAIC,EAAAD,EAAS,SAAT,MAAAC,EAAiB,OAAeL,EAAiBI,EAAS,MAAM,EAE7D,CACL,YAAa,CACX,mBACEE,GAAAC,EAAAH,GAAA,YAAAA,EAAU,OAAV,YAAAG,EAAgB,cAAhB,YAAAD,EAA6B,oBAAqB,EAAA,CACtD,CAEJ,CAAC,EACA,MAAMR,CAAkB"}
@@ -0,0 +1,9 @@
1
+ /*! Copyright 2026 Adobe
2
+ All Rights Reserved. */
3
+ import{Slot as F,classes as ye}from"@dropins/tools/lib.js";import{useText as fe}from"@dropins/tools/i18n.js";import{useState as $,useRef as P,useEffect as V,useMemo as X,useCallback as D}from"@dropins/tools/preact-hooks.js";import{events as E}from"@dropins/tools/event-bus.js";import{jsx as o,jsxs as x,Fragment as te}from"@dropins/tools/preact-jsx-runtime.js";import{Price as se,Incrementer as ve,Tag as ge,Table as qe,Button as Z,TextArea as _e,InputFile as Ce,CartList as Oe,Divider as Ie,CartItem as ie,AccordionSection as we,PriceRange as Ne,Input as Ae,AlertBanner as Ee}from"@dropins/tools/components.js";import{memo as W,useMemo as J,useState as G,useCallback as K,useRef as H,useEffect as ee}from"@dropins/tools/preact-compat.js";const j=e=>e.reduce((t,n)=>{if(!n)return t;if(typeof n=="string"&&(t+=` ${n}`),Array.isArray(n)){const[u,a]=n;u&&a&&(t+=` ${u}`)}return t},"").trim(),Re=({t:e,variants:r,loading:t=!1,className:n,onQuantityChange:u,visibleVariantsLimit:a=10,columns:s,slots:i})=>{const S=J(()=>[{key:"image",label:e.imageColumn||"Image"},{key:"sku",label:e.skuColumn||"SKU"},{key:"availability",label:e.availabilityColumn||"Availability"},{key:"price",label:e.priceColumn||"Price"},{key:"quantity",label:e.quantityColumn||"Quantity"},{key:"subtotal",label:e.subtotalColumn||"Subtotal"}],[e]),b=s||S,h=J(()=>r.map((m,w)=>{var d;const{product:q,quantity:v}=m,O=q.price.final.amount.value,I=q.price.final.amount.currency,N=O*v,A=q.inStock?e.inStock||"In Stock":e.outOfStock||"Out of Stock",T={id:`${q.sku}-${w}`,image:o(F,{name:"ImageCell",slot:i==null?void 0:i.ImageCell,context:{variant:m,quantity:v,onQuantityChange:u},children:((d=q.images[0])==null?void 0:d.url)&&o("img",{src:q.images[0].url,alt:q.name,className:"b2b-quick-order-variants-grid__image"})}),sku:o(F,{name:"SKUCell",slot:i==null?void 0:i.SKUCell,context:{variant:m,quantity:v,onQuantityChange:u},children:q.sku}),availability:o(F,{name:"AvailabilityCell",slot:i==null?void 0:i.AvailabilityCell,context:{variant:m,quantity:v,onQuantityChange:u},children:o(ge,{label:A,className:j(["b2b-quick-order-variants-grid__availability",["b2b-quick-order-variants-grid__availability--in-stock",q.inStock],["b2b-quick-order-variants-grid__availability--out-of-stock",!q.inStock]])})}),price:o(F,{name:"PriceCell",slot:i==null?void 0:i.PriceCell,context:{variant:m,quantity:v,onQuantityChange:u},children:o(se,{amount:O,currency:I,size:"small"})}),quantity:o(F,{name:"QuantityCell",slot:i==null?void 0:i.QuantityCell,context:{variant:m,quantity:v,onQuantityChange:u},children:o("div",{"data-testid":`variant-quantity-input-${w}`,children:o(ve,{value:v,min:0,disabled:!q.inStock,onValue:p=>{u(q.sku,p)},size:"medium",className:"b2b-quick-order-variants-grid__quantity-input","aria-label":`${e.quantityLabel||"Quantity for"} ${q.sku}`})})}),subtotal:o(F,{name:"SubtotalCell",slot:i==null?void 0:i.SubtotalCell,context:{variant:m,quantity:v,onQuantityChange:u},children:o(se,{amount:N,currency:I,size:"small"})})};if(s){const p=["image","variant","sku","availability","price","quantity","subtotal"];s.forEach(g=>{if(!p.includes(g.key)&&!Object.prototype.hasOwnProperty.call(T,g.key)){const c=`${g.key.charAt(0).toUpperCase()+g.key.slice(1)}Cell`,f=i==null?void 0:i[c];f&&(T[g.key]=o(F,{name:c,slot:f,context:{variant:m,quantity:v,onQuantityChange:u}}))}})}return T}),[r,e,u,i,s]),[l,k]=G(!1),y=h.length>a,C=y&&!l?h.slice(0,a):h;return x("div",{className:j(["b2b-quick-order-variants-grid",n]),"data-testid":"variants-grid",children:[o(qe,{columns:b,rowData:C,loading:t,mobileLayout:"stacked",className:"b2b-quick-order-variants-grid__table"}),y&&o("div",{className:"b2b-quick-order-variants-grid__footer",children:o(Z,{variant:"secondary",size:"medium",onClick:()=>k(!l),className:"b2b-quick-order-variants-grid__toggle-button",children:l?`${e.showLess||"Show Less"}`:`${e.showAll||"Show All"} (${h.length})`})})]})},gr=W(Re),xe=({t:e,onClear:r,onSaveToCsv:t,onCollectData:n,isDisabled:u=!1,variantsCount:a=0,className:s,slots:i})=>o("div",{className:j(["b2b-quick-order-variants-actions",s]),"data-testid":"variants-actions",children:o(F,{name:"Actions",slot:i==null?void 0:i.Actions,context:{onClear:r,onSaveToCsv:t,onCollectData:n||(()=>[]),isDisabled:u,variantsCount:a},children:x("div",{className:"b2b-quick-order-variants-actions__buttons",children:[o(Z,{variant:"secondary",size:"medium",onClick:r,disabled:u||a===0,"aria-label":e.clearButton,"data-testid":"variants-clear-button",children:e.clearButton}),o(Z,{variant:"primary",size:"medium",onClick:t,disabled:u||a===0,"aria-label":e.saveToCsvButton,"data-testid":"variants-save-csv-button",children:e.saveToCsvButton})]})})}),qr=W(xe),ne=(e,r)=>{let t;const n=function(...u){clearTimeout(t),t=setTimeout(()=>e.apply(this,u),r)};return n.cancel=()=>{clearTimeout(t)},n},Te=["sku","parentSku","itemId","quantity","optionsUIDs","valid","productType"],Ve=e=>{const r=[],t=[];return e.forEach((n,u)=>{if(Te.includes(u))return;const a=n;a&&a.match(/^[A-Za-z0-9+/=]+$/)?r.push(a):t.push({uid:u,value:a})}),{optionUIDs:r,enteredOptions:t}},De=e=>{const r=Number(e.get("quantity")),t=!r||r<1?1:r,n={sku:e.get("sku"),quantity:t},u=e.get("itemId");u&&(n.itemId=u);const a=e.get("parentSku");a&&(n.parentSku=a);const{optionUIDs:s,enteredOptions:i}=Ve(e);return s.length>0&&(n.optionsUIDs=s),i.length>0&&(n.enteredOptions=i),n},ue={sku:"",quantity:1,name:"",images:[],inStock:!1,addToCartAllowed:!1,isBundle:!1,prices:{},attributes:[],options:[],url:"",urlKey:"",externalId:"",productType:"simple",shortDescription:"",metaDescription:"",metaKeyword:"",metaTitle:"",description:""},$e=[{attribute:"visibility",in:["Search","Catalog, Search"]}],oe=(e,r)=>!r||!Array.isArray(r)?e.map(t=>({...ue,sku:t.sku,quantity:t.quantity??1})):e.map(t=>{const n=r.find(u=>(u==null?void 0:u.sku)===(t==null?void 0:t.sku));if(n){const u=t.variantSku||n.variantSku;return{...n,...u&&{variantSku:t.variantSku||n.variantSku,parentSku:n.sku},quantity:t.quantity??1}}return{...ue,sku:t.sku,...t.variantSku&&{variantSku:t.variantSku,parentSku:t.sku},quantity:t.quantity??1}}),ce=e=>e.trim().replace(/^["']|["']$/g,""),le=200,Qe=(e,r)=>{const n=e.replace(/^\uFEFF/,"").trim().split(/\r?\n|\r/);if(!n.some(b=>b.trim()))return{isValid:!1,error:r.emptyFile};const a=n[0].split(",").map(b=>ce(b).toLowerCase()),s=a.indexOf("sku"),i=a.indexOf("qty");if(s===-1||i===-1)return{isValid:!1,error:r.missingColumns};if(a.length!==2)return{isValid:!1,error:r.extraColumns};if(n.length-1>le)return{isValid:!1,error:r.maxRowsExceeded.replace("{maxRows}",le.toString())};const S=[];for(let b=1;b<n.length;b++){const h=n[b].trim();if(!h)continue;const l=h.split(",").map(m=>ce(m)),k=l[s],y=l[i];if(!k)return{isValid:!1,error:r.skuRequired.replace("{rowNumber}",b.toString())};const C=parseInt(y,10);if(isNaN(C)||C<=0||!Number.isInteger(C))return{isValid:!1,error:r.invalidQuantity.replace("{rowNumber}",b.toString())};S.push({sku:k,quantity:C})}return S.length===0?{isValid:!1,error:r.noValidData}:{isValid:!0,data:S}},de=e=>e.length===0?!1:e.every(r=>!((r.urlKey||r.url)&&r.name)||r.inStock===!1?!1:r.options&&r.options.length>0?r.options.some(a=>a.required)?r.options.every(a=>{var s;return a.required?(s=a.items)==null?void 0:s.some(i=>i.selected):!0}):r.options.some(a=>a.items&&a.items.length>0&&a.items.some(s=>s.selected===!0)):!0),Y=e=>{const r=[];return e.forEach(t=>{if(!((t.urlKey||t.url)&&t.name)){r.push({sku:t.sku,name:t.name||"Unknown",reason:"incomplete_data"});return}if(t.inStock===!1){r.push({sku:t.sku,name:t.name,reason:"out_of_stock"});return}if(t.options&&t.options.length>0){if(t.options.some(s=>s.required)){t.options.every(i=>{var S;return i.required?(S=i.items)==null?void 0:S.some(b=>b.selected):!0})||r.push({sku:t.sku,name:t.name,reason:"missing_required_options"});return}t.options.some(s=>s.items&&s.items.length>0&&s.items.some(i=>i.selected===!0))||r.push({sku:t.sku,name:t.name,reason:"missing_options"})}}),r},z=e=>`quick-order-item-${e.id||e.variantSku||e.sku}`,pe=e=>`${e}-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,ke=(e,r)=>e.findIndex(t=>r.variantSku&&t.variantSku?t.variantSku===r.variantSku:t.variantSku&&!r.variantSku&&r.sku?t.variantSku===r.sku:r.variantSku&&!t.variantSku&&t.sku?t.sku===r.variantSku:!r.variantSku&&!t.variantSku?t.sku===r.sku:!1),Fe=(e,r,t)=>e.findIndex(n=>n.id===t?!1:r.variantSku&&n.variantSku?n.variantSku===r.variantSku:r.variantSku&&!n.variantSku&&n.sku?n.sku===r.variantSku:!1),Be=(e,r,t,n=1)=>{const u=e[r];return e.map((a,s)=>s===t?{...a,quantity:a.quantity+n,parentSku:a.parentSku||(u==null?void 0:u.parentSku)}:s===r?null:a).filter(Boolean)},Le=(e,r,t)=>{const n=[...e],u=[],a=[],s=[];return r.forEach((i,S)=>{const b=t[S];if(b!=null&&b.replaceItemSku){const l=n.findIndex(k=>k.sku===b.replaceItemSku||k.id===b.replaceItemSku);if(l!==-1){const k=ke(n,i);if(k!==-1&&k!==l){n.splice(l,1);const y=k>l?k-1:k;n[y]={...n[y],quantity:n[y].quantity+i.quantity,parentSku:n[y].parentSku||i.parentSku},s.push(n[y])}else{const y={...i,id:pe(i.sku)};n[l]=y,a.push(y)}return}}const h=ke(n,i);if(h!==-1)n[h]={...n[h],quantity:n[h].quantity+i.quantity,parentSku:n[h].parentSku||i.parentSku},s.push(n[h]);else{const l={...i,id:pe(i.sku)};n.push(l),u.push(l)}}),{updatedItems:n,addedItems:u,replacedItems:a,mergedItems:s}},Ue=e=>e.filter(r=>r.quantity>0).map(r=>{var n;const t={sku:r.product.sku,name:r.product.name,inStock:r.product.inStock,attributes:r.product.attributes.reduce((u,a)=>(a.value&&(u[a.name]={label:a.label,value:a.value}),u),{}),price:r.product.price.final.amount.value,quantity:r.quantity,subtotal:r.product.price.final.amount.value*r.quantity,image:((n=r.product.images[0])==null?void 0:n.url)||""};return r.selections&&r.selections.length>0&&(t.optionsUIDs=r.selections),r.parentSku&&(t.parentSku=r.parentSku),t}),Ke=(e,r,t,n=1)=>{const u=r?Fe(e,t,r):-1;if(u!==-1){const s=e.findIndex(i=>i.id===r);return{updatedItems:Be(e,s,u,n),wasMerged:!0,mergedIntoIndex:u}}return{updatedItems:e.map(s=>r&&s.id===r?{...s,...t,id:r,parentSku:t.parentSku!==void 0?t.parentSku:s.parentSku||(t.variantSku?s.sku:void 0)}:!r&&s.sku===t.sku?{...s,...t,parentSku:t.parentSku!==void 0?t.parentSku:s.parentSku||(t.variantSku?s.sku:void 0)}:s),wasMerged:!1}},Me=e=>e.map(r=>{const t=r.id||r.sku,n=document.forms[`form-${t}`];if(!n)return null;const u=new FormData(n);return u.get("valid")==="true"?De(u):null}),Pe=e=>{let r=[];return e&&typeof e=="object"?e.optionsUIDs&&Array.isArray(e.optionsUIDs)?r=e.optionsUIDs:Array.isArray(e)&&(r=e):typeof e=="string"&&(r=[e]),r},me=e=>{try{const r=localStorage.getItem(e);if(r)return JSON.parse(r)}catch(r){console.error("Error reading from localStorage:",r)}return{}},je=(e,r,t)=>{if(t.length!==0)try{const n=me(e);n[r]=t,localStorage.setItem(e,JSON.stringify(n))}catch(n){console.error("Error saving to localStorage:",n)}},We=(e,r,t)=>e.map(n=>{let u=n.itemId?r.find(a=>(a.id||a.sku)===n.itemId):void 0;if(u||(u=r.find(a=>n.sku===a.sku||n.sku===a.variantSku)),u){const a=u.id||u.sku,s=t[a],i={...n};return s&&s.length>0&&(i.optionsUIDs=s),u.parentSku&&(i.parentSku=u.parentSku),i}return n}),He=e=>{const{containerRef:r,itemSelected:t,initialValue:n,currentValue:u,onValueRestore:a,onClose:s}=e,i=document.activeElement;(r==null?void 0:r.contains(i))||(s(),!t&&n!==u&&a(n))},ze=(e,r=150)=>window.setTimeout(()=>{He(e)},r),re=e=>{e&&clearTimeout(e)},Ge=(e,r)=>r===0?-1:e<r-1?e+1:e,Je=e=>e>0?e-1:-1,Ye=()=>0,Xe=e=>Math.max(0,e-1),Ze=(e,r,t)=>e>=0&&r[e]?(t(r[e]),!0):!1,er=(e,r,t,n)=>{t(e),n(),r&&"blur"in r&&typeof r.blur=="function"&&r.blur()},rr=e=>{const r=!e.inStock||!e.addToCartAllowed;if(e.options&&e.options.length>0){if(e.options.some(a=>!a.items||a.items.length===0))return!0;if(e.options.some(a=>a.required)){const a=e.options.every(s=>{var i;return s.required?(i=s.items)==null?void 0:i.some(S=>S.selected):!0});return r||!a}const u=e.options.some(a=>a.items&&a.items.length>0&&a.items.some(s=>s.selected===!0));return r||!u}return r},_r=({initialVariants:e,onVariantsLoaded:r,onSelectedVariantsChange:t,debounceMs:n=300,initialLoading:u=!0}={})=>{const[a,s]=$([]),i=P([]),[S,b]=$(u),h=P(!1),l=P(null);V(()=>{e&&e.length>0&&E.emit("quick-order/grid-ordering-variants",e)},[e]),V(()=>{const v=E.on("quick-order/grid-ordering-variants",O=>{if(!O||O.length===0)s([]),i.current=[],b(!1);else{const I=O.map(N=>({...N,quantity:0}));s(I),i.current=I,b(!1),E.emit("quick-order/grid-ordering-selected-variants",[]),r==null||r(I)}},{eager:!0});return()=>{v==null||v.off()}},[r]);const k=X(()=>ne(v=>{const O=Ue(v);t&&t(O),E.emit("quick-order/grid-ordering-selected-variants",O)},n),[t,n]),y=D((v,O)=>{h.current||s(I=>{const N=I.map(A=>A.product.sku===v?A.product.inStock?{...A,quantity:Math.max(0,O)}:{...A,quantity:0}:A);return i.current=N,k(N),N})},[k]),C=D(()=>{l.current!==null&&clearTimeout(l.current),h.current=!0,s(v=>{const O=v.map(I=>({...I,quantity:0}));return i.current=O,k(O),O}),l.current=window.setTimeout(()=>{h.current=!1,l.current=null},200)},[k]);V(()=>{const v=E.on("quick-order/grid-ordering-reset-selected-variants",C,{eager:!0});return()=>{v==null||v.off()}},[C]),V(()=>()=>{l.current!==null&&clearTimeout(l.current)},[]);const m=D(()=>{const O=(i.current.length>0?i.current:a).filter(c=>c.quantity>0);if(O.length===0){console.warn("No variants with quantity to export");return}const I=`SKU,Quantity
4
+ `,N=O.map(c=>`${c.product.sku},${c.quantity}`).join(`
5
+ `),A=I+N,T=new Blob([A],{type:"text/csv;charset=utf-8;"}),d=document.createElement("a"),p=URL.createObjectURL(T),g=new Date().toISOString().split("T")[0];d.setAttribute("href",p),d.setAttribute("download",`product-variants-${g}.csv`),d.style.visibility="hidden",document.body.appendChild(d),d.click(),document.body.removeChild(d),URL.revokeObjectURL(p)},[a]),w=D(()=>(i.current.length>0?i.current:a).filter(I=>I.quantity>0).map(I=>{var N;return{sku:I.product.sku,name:I.product.name,inStock:I.product.inStock,attributes:I.product.attributes.reduce((A,T)=>(T.value&&T.value!==""&&(A[T.name]={label:T.label,value:T.value}),A),{}),price:I.product.price.final.amount.value,quantity:I.quantity,subtotal:I.product.price.final.amount.value*I.quantity,image:((N=I.product.images[0])==null?void 0:N.url)||""}}),[a]),q=X(()=>a.filter(v=>v.quantity>0).length,[a]);return{variants:a,loading:S,updateQuantity:y,clearAllQuantities:C,exportToCsv:m,collectTableData:w,variantsWithQuantity:q}},Cr=({t:e,onChange:r,textAreaValue:t,loading:n,disabled:u})=>x("div",{className:j(["b2b-quick-order-sku-list-input"]),children:[o("div",{className:"b2b-quick-order-sku-list-input__title",children:e.title}),o(_e,{id:"quick-order-sku-list-input",label:e.label,className:"b2b-quick-order-sku-list-input__textarea",placeholder:e.textAreaPlaceholder,onChange:r,value:t,disabled:n||u}),o("div",{className:"b2b-quick-order-sku-list-input__message",children:e.helperText})]}),tr=({t:e,onFileUpload:r,error:t,fileName:n,onDownloadSample:u,showSampleDownload:a,disabled:s})=>{const i=K(b=>{var k;const l=(k=b.target.files)==null?void 0:k[0];l&&r(l)},[r]);return x("div",{className:"b2b-quick-order-csv-file-input",children:[o("div",{className:"b2b-quick-order-csv-file-input__title",children:e.title}),x("div",{className:"b2b-quick-order-csv-file-input__helper",children:[e.helperText,a&&o(te,{children:o("button",{type:"button",className:"b2b-quick-order-csv-file-input__download-link",onClick:u,"data-testid":"download-sample",disabled:s,children:e.downloadSample})})]}),o("div",{className:`b2b-quick-order-csv-file-input__input-wrapper ${s?"b2b-quick-order-csv-file-input__input-wrapper--disabled":""}`,children:o(Ce,{id:"quick-order-csv-file-input",label:e.inputLabel,className:"b2b-quick-order-csv-file-input__input",onChange:i,accept:".csv",disabled:s})}),n&&x("div",{className:"b2b-quick-order-csv-file-input__file-name","data-testid":"file-name",children:[e.selectedFile,": ",n]}),t&&o("div",{className:"b2b-quick-order-csv-file-input__error","data-testid":"error-message",role:"alert",children:t})]})},Or=W(tr),Ir=({onChange:e})=>{const[r,t]=$(""),[n,u]=$(!1),a=P([]),s=P(!0);V(()=>()=>{s.current=!1},[]);const i=D(l=>{const k=l.split(/[\s,]+/).map(m=>m.trim()).filter(m=>m.length>0),y=new Map;k.forEach(m=>{y.set(m,(y.get(m)||0)+1)});const C=Array.from(y.entries()).map(([m,w])=>({sku:m,quantity:w}));return a.current=C,C},[]),S=X(()=>ne(l=>{e&&s.current&&e(l)},300),[e]);V(()=>{S(i(r))},[r,S,i]),V(()=>{const l=E.on("quick-order/loading",k=>{s.current&&u(k)},{eager:!0});return()=>{l==null||l.off()}},[]);const b=D(l=>{const y=l.target.value;t(y)},[]),h=D(l=>{const k=a.current,y=l?[...k,...l]:k;E.emit("quick-order/add-items",y),t("")},[]);return{handleChange:b,textAreaValue:r,loading:n,handleAddToList:h}},wr=({routeSampleCSV:e,onFileUpload:r})=>{const[t,n]=$(null),[u,a]=$(null),s=fe({invalidFile:"QuickOrder.CsvFileInput.uploadCSVErrors.invalidFile",emptyFile:"QuickOrder.CsvFileInput.uploadCSVErrors.emptyFile",missingColumns:"QuickOrder.CsvFileInput.uploadCSVErrors.missingColumns",extraColumns:"QuickOrder.CsvFileInput.uploadCSVErrors.extraColumns",maxRowsExceeded:"QuickOrder.CsvFileInput.uploadCSVErrors.maxRowsExceeded",skuRequired:"QuickOrder.CsvFileInput.uploadCSVErrors.skuRequired",invalidQuantity:"QuickOrder.CsvFileInput.uploadCSVErrors.invalidQuantity",noValidData:"QuickOrder.CsvFileInput.uploadCSVErrors.noValidData",onlyCSV:"QuickOrder.CsvFileInput.uploadCSVErrors.onlyCSV",failedToRead:"QuickOrder.CsvFileInput.uploadCSVErrors.failedToRead",failedToParse:"QuickOrder.CsvFileInput.uploadCSVErrors.failedToParse"}),i=D(b=>{if(n(null),a(b.name),!b.name.toLowerCase().endsWith(".csv")){n(s.onlyCSV);return}const h=new FileReader;h.onload=l=>{var k;try{const y=(k=l.target)==null?void 0:k.result,C=Qe(y,{emptyFile:s.emptyFile,missingColumns:s.missingColumns,extraColumns:s.extraColumns,maxRowsExceeded:s.maxRowsExceeded,skuRequired:s.skuRequired,invalidQuantity:s.invalidQuantity,noValidData:s.noValidData});if(!C.isValid){n(C.error);return}r?r(C.data):E.emit("quick-order/add-items",C.data),a(null),n(null)}catch{n(s.failedToParse)}},h.onerror=()=>{n(s.failedToRead)},h.readAsText(b)},[r,s]),S=D(()=>{if(e)window.open(e(),"_blank");else{const b=`SKU,QTY
6
+ SKU123,1
7
+ SKU456,2
8
+ SKU789,3`,h=new Blob([b],{type:"text/csv"}),l=URL.createObjectURL(h),k=document.createElement("a");k.href=l,k.download="sample-quick-order.csv",document.body.appendChild(k),k.click(),document.body.removeChild(k),URL.revokeObjectURL(l)}},[e]);return{handleFileUpload:i,error:t,fileName:u,handleDownloadSample:S,showSampleDownload:!0}},Nr=({getProductsData:e,handleAddToCart:r}={})=>{const[t,n]=$([]),[u,a]=$(!1),[s,i]=$(new Set),[S,b]=$(!1),[h,l]=$(null),[k,y]=$([]),C=P([]),m=fe({validationError:"QuickOrder.QuickOrderItem.notification.validationError",backendError:"QuickOrder.QuickOrderItem.notification.backendError",success:"QuickOrder.QuickOrderItem.notification.success",partialSuccess:"QuickOrder.QuickOrderItem.notification.partialSuccess",unexpectedError:"QuickOrder.QuickOrderItem.notification.unexpectedError"}),w="quick-order-selected-options",q=D(()=>{l(null)},[]),v=D(d=>{b(d)},[]);V(()=>{const d=E.on("quick-order/loading",p=>{a(p)},{eager:!0});return()=>{d==null||d.off()}},[]),V(()=>{const d=E.on("quick-order/add-items",async p=>{if(p&&p.length>0){if(!e)return;a(!0),E.emit("quick-order/loading",!0);const g=p.map(c=>c.variantSku||c.sku).filter(Boolean);i(c=>new Set([...Array.from(c),...g]));try{let c=[];try{const _=await e(p)??[];v(p.length!==_.length),c=oe(p,_)}catch(_){console.error("Error fetching products data:",_),c=oe(p,[])}const f=Y(c);if(f.length>0){const _=f.map(R=>R.sku);l(R=>{if((R==null?void 0:R.type)==="validation"&&R.clickableSkus){const L=[...new Set([...R.clickableSkus,..._])];return{...R,clickableSkus:L}}return{type:"validation",variant:"warning",message:m.validationError,clickableSkus:_}})}n(_=>{const{updatedItems:R,addedItems:L,mergedItems:Q,replacedItems:U}=Le(_,c,p);return U.forEach(B=>{const M=z(B);E.emit(`${M}/pdp/data`,B)}),Q.forEach(B=>{const M=z(B);E.emit(`${M}/pdp/data`,B)}),L.forEach(B=>{const M=z(B);E.emit(`${M}/pdp/data`,B)}),R})}finally{a(!1),E.emit("quick-order/loading",!1),i(c=>new Set(Array.from(c).filter(f=>!g.includes(f))))}}},{eager:!0});return()=>{d==null||d.off()}},[e,v]),V(()=>{const d=t.map(p=>{const g=z(p),c=p.id;return E.on(`${g}/pdp/data`,f=>{n(_=>Ke(_,c||"",f,p.quantity||1).updatedItems)})});return()=>{d==null||d.forEach(p=>{p==null||p.off()})}},[t,w]),V(()=>{const d=de(t);v(!d)},[t,v]),V(()=>{l(d=>{if(!d||!d.clickableSkus||d.clickableSkus.length===0)return d;const p=d.clickableSkus.filter(g=>{const c=t.filter(f=>f.sku===g||f.variantSku===g);return c.length===0?!1:c.some(f=>rr(f))});return p.length===0?null:p.length!==d.clickableSkus.length?{...d,clickableSkus:p}:d})},[t]),V(()=>{!S||t.length===0||l(d=>{if(d&&(d.type==="validation"||d.type==="partial-success"))return d;const p=Y(t);if(p.length===0)return d;const g=[...new Set(p.map(_=>_.sku))],c=(d==null?void 0:d.clickableSkus)||[];return g.length!==c.length||!g.every(_=>c.includes(_))?{type:"validation",variant:"warning",message:m.validationError,clickableSkus:g}:d})},[S,t,m.validationError]),V(()=>{const d=t.map(p=>{const g=z(p),c=p.id||p.sku;return E.on(`${g}/pdp/values`,f=>{const _=Pe(f);je(w,c,_)})});return()=>{d.forEach(p=>{p==null||p.off()})}},[t,w]),V(()=>{C.current=k},[k]),V(()=>{const d=E.on("cart/product/added",g=>{const c=Array.isArray(g)?g.length:0,f=Array.isArray(g)?g.map(_=>_.sku).filter(Boolean):[];if(C.current.length>0){const _=C.current.reduce((Q,U)=>(Q[U]=(Q[U]||0)+1,Q),{}),R=f.reduce((Q,U)=>(Q[U]=(Q[U]||0)+1,Q),{}),L=[];Object.keys(_).forEach(Q=>{const U=_[Q],B=R[Q]||0,M=U-B;for(let ae=0;ae<M;ae++)L.push(Q)}),L.length>0&&c>0&&(l({type:"partial-success",variant:"warning",message:m.partialSuccess,count:c,clickableSkus:L}),y([]))}else return}),p=E.on("quick-order/add-to-cart-error",g=>{l({type:"backend-error",variant:"warning",message:m.backendError,details:g.message}),y([])});return()=>{d==null||d.off(),p==null||p.off()}},[k]),V(()=>{const d=E.on("cart/data",p=>{if(C.current.length===0||!(p!=null&&p.items)||p.items.length===0)return;const g=p.items.flatMap(f=>{var R;const _=[];return f.sku&&_.push(f.sku),(R=f.product)!=null&&R.sku&&_.push(f.product.sku),_}),c=C.current.filter(f=>g.includes(f));c.length!==0&&(l({type:"success",variant:"success",message:m.success,count:c.length}),y([]),E.emit("quick-order/loading",!1))},{eager:!0});return()=>{d==null||d.off()}},[]);const O=D(d=>{n(p=>p.filter(g=>g.id!==d&&g.sku!==d))},[]),I=D(()=>{n([]),l(null)},[]),N=D((d,p)=>{n(g=>g.map(c=>(c.variantSku||c.sku)===d?{...c,quantity:p}:c))},[]),A=D(d=>s.has(d),[s]),T=D(()=>{const d=Me(t).filter(f=>f!==null);if(t.length>0&&!de(t)){const R=Y(t).map(L=>L.sku);l({type:"validation",variant:"warning",message:m.validationError,clickableSkus:R});return}if(d.length===0){if(t.length>0){const _=Y(t).map(R=>R.sku);l({type:"validation",variant:"warning",message:m.validationError,clickableSkus:_})}return}l(null);const p=d.map(f=>f.sku).filter(f=>!!f);y(p);const g=me(w),c=We(d,t,g);r?(E.emit("quick-order/loading",!0),Promise.resolve(r(c,I)).then(f=>{f&&typeof f=="string"?(l({type:"backend-error",variant:"warning",message:m.backendError,details:f}),y([])):y([])}).catch(f=>{l({type:"backend-error",variant:"warning",message:m.backendError,details:f.message||m.unexpectedError}),y([])}).finally(()=>{E.emit("quick-order/loading",!1)})):E.emit("quick-order/add-to-cart",c)},[t,r,w]);return{items:t,loading:u,removeItem:O,clearItems:I,updateItemQuantity:N,addToCart:T,isItemUpdating:A,isDisabledButton:S,setDisabledCartButton:v,notification:h,dismissNotification:q}},he=({productsSearch:e,initialSku:r,replaceItemSku:t,searchFilter:n=$e})=>{const[u,a]=$(r),[s,i]=$([]),[S,b]=$(!1),h=P(!0);V(()=>()=>{h.current=!1},[]),V(()=>{S||a(r)},[r,S]);const l=X(()=>ne(async m=>{if(!m||!e){h.current&&i([]);return}try{const w=await e({phrase:m,filter:n});h.current&&i(w.items||[])}catch(w){console.error("Error searching products:",w),h.current&&i([])}},300),[e,n]),k=D(m=>{const q=m.target.value;a(q),b(!0),l(q)},[l]),y=D(()=>{a(""),i([]),b(!1)},[]),C=D(m=>{const w={sku:m.sku,...m.variantSku&&{variantSku:m.variantSku},quantity:1,...t&&{replaceItemSku:t}};E.emit("quick-order/add-items",[w]),y()},[t,y]);return{searchValue:u,searchResults:s,handleSearchChange:k,shouldShowResults:S,resetSearch:y,handleItemClick:C}},nr=({value:e,onChange:r,items:t,shouldShowResults:n=!0,onItemClick:u})=>{const[a,s]=G(-1),[i,S]=G(""),[b,h]=G(!1),[l,k]=G(!1),y=H(`search-results-${Math.random().toString(36).substr(2,9)}`),C=H(null),m=H([]),w=H(null),q=H(null),v=!!e&&!l,O=n&&v&&t.length>0,I=n&&v&&t.length===0;ee(()=>{s(-1)},[t]),ee(()=>()=>{re(q.current)},[]),ee(()=>{if(a>=0&&m.current[a]){const c=m.current[a];c&&typeof c.scrollIntoView=="function"&&c.scrollIntoView({behavior:"smooth",block:"nearest"})}},[a]);const N=K(c=>{l&&k(!1),r==null||r(c)},[r,l]),A=K(c=>()=>{h(!0),k(!0),u==null||u(c),s(-1)},[u]),T=K(()=>{re(q.current),q.current=null,S(e||""),h(!1),k(!1)},[e]),d=K(()=>{q.current=ze({containerRef:w.current,itemSelected:b,initialValue:i,currentValue:e||"",onValueRestore:c=>{r==null||r({target:{value:c}})},onClose:()=>{k(!0)}})},[b,i,e,r]),p=K(c=>{if(O)switch(c.key){case"ArrowDown":c.preventDefault(),s(f=>Ge(f,t.length));break;case"ArrowUp":c.preventDefault(),s(f=>Je(f));break;case"Home":O&&t.length>0&&(c.preventDefault(),s(Ye()));break;case"End":O&&t.length>0&&(c.preventDefault(),s(Xe(t.length)));break;case"Tab":re(q.current),q.current=null,k(!0),r==null||r({target:{value:i}});break;case"Enter":{Ze(a,t,_=>{h(!0),k(!0),u==null||u(_),s(-1)})&&c.preventDefault();break}case"Escape":c.preventDefault(),er(i,C.current,f=>{r==null||r({target:{value:f}}),s(-1),k(!0)},()=>{k(!0)});break}},[O,t,a,u,r,i]),g=K(()=>{if(a>=0&&O)return`${y.current}-item-${a}`},[a,O]);return{activeIndex:a,showResults:O,showEmptyState:I,resultsId:y,inputRef:C,itemRefs:m,containerRef:w,handleChange:N,handleFocus:T,handleBlur:d,handleKeyDown:p,createItemClickHandler:A,getActiveDescendant:g}},ar=({t:e,items:r,onRemove:t,clearItems:n,onUpdateQuantity:u,slots:a,handleAddToCart:s,isItemUpdating:i,loading:S,isDisabledButton:b,productsSearch:h,searchFilter:l})=>{const{searchValue:k,searchResults:y,handleSearchChange:C,shouldShowResults:m,handleItemClick:w}=he({productsSearch:h,initialSku:"",searchFilter:l});return x("div",{className:j(["b2b-quick-order-form-quick-order-items-list"]),role:"region","aria-label":e.title,children:[o("div",{className:"b2b-quick-order-form-quick-order-items-list__title",children:e.title}),r.length>0&&x(te,{children:[o(Oe,{role:"list",className:"b2b-quick-order-form-quick-order-items-list__list",children:r.map(q=>o(ir,{item:q,t:e,onRemove:t,onUpdateQuantity:u,isUpdating:i==null?void 0:i(q.variantSku||q.sku),loading:S,productsSearch:h,searchFilter:l,slots:a},q.id||q.sku))}),o(Ie,{variant:"secondary"})]}),o("div",{className:"b2b-quick-order-form-quick-order-items-list__global-search",children:o(be,{t:e,onChange:C,items:y,value:k,shouldShowResults:m,onItemClick:w,className:"b2b-quick-order-form-quick-order-items-list__search"})}),r.length===0&&o("div",{className:"b2b-quick-order-form-quick-order-items-list__empty","data-testid":"empty-items",children:e.emptyList}),o(F,{slot:a==null?void 0:a.AddAllToCartButton,name:"AddAllToCartButton",context:{handleAddToCart:s,clearItems:n,loading:S,isDisabledButton:b},"data-testid":"addAllToCart",children:o("div",{className:"b2b-quick-order-form-quick-order-items-list__actions",children:o(Z,{variant:"primary",onClick:s,"data-testid":"add-all-to-cart-button",disabled:S||b,children:e.addAllToCart})})})]})},Ar=W(ar),sr=({item:e,t:r,onRemove:t,onUpdateQuantity:n,isUpdating:u,loading:a,productsSearch:s,searchFilter:i,slots:S})=>{var p,g;const b=`quick-order-item-${e.id||e.variantSku||e.sku}`,h=(e==null?void 0:e.variantSku)??(e==null?void 0:e.sku),{searchValue:l,searchResults:k,handleSearchChange:y,shouldShowResults:C,handleItemClick:m}=he({productsSearch:s,initialSku:h,replaceItemSku:e.sku,searchFilter:i}),w=`form-${e.id||h}`,q=e.inStock&&e.addToCartAllowed,v=e.options&&e.options.length>0,O=J(()=>v&&e.options.some(c=>c.required),[v,e.options]),I=J(()=>v?O?e.options.every(c=>c.required?c.items&&c.items.some(f=>f.selected):!0):e.options.every(c=>c.items&&c.items.some(f=>f.selected)):!0,[v,O,e.options]),N=J(()=>{var c;return(c=e.images)==null?void 0:c.find(f=>{var _;return(_=f.roles)==null?void 0:_.includes("image")})},[e.images]),A=K(()=>{t==null||t(e.id||e.sku)},[t,e.id,e.sku]),T=K(c=>{n==null||n(h,c);const f=document.forms[w];if(f){const _=f.querySelector('input[name="quantity"]');_&&(_.value=String(c))}},[n,h,w]),d=o(F,{name:"QuickOrderItemSearch",slot:S==null?void 0:S.QuickOrderItemSearch,context:{item:e,scope:b,handleSearchChange:y,searchResults:k,searchValue:l,shouldShowResults:C,handleItemClick:m},children:o(be,{t:r,onChange:y,items:k,value:l,shouldShowResults:C,className:"b2b-quick-order-form-quick-order-items__item-search",onItemClick:m,slots:S})});return!e.name&&!((p=e.images)!=null&&p.length)?x("form",{name:w,className:"b2b-quick-order-form-quick-order-items__item-form",onSubmit:c=>c.preventDefault(),"data-sku":e.sku,children:[o("input",{type:"hidden",name:"sku",value:e.sku}),o("input",{type:"hidden",name:"quantity",value:e.quantity}),o("input",{type:"hidden",name:"valid",value:"false"}),o("input",{type:"hidden",name:"productType",value:""}),e.parentSku&&o("input",{type:"hidden",name:"parentSku",value:e.parentSku}),d,o(ie,{sku:o("span",{children:e.sku}),title:o("span",{children:r.productNotFound}),quantity:e.quantity,alert:o("div",{className:"b2b-quick-order-items__error",children:(g=r.productNotFoundDescription)==null?void 0:g.replace("{sku}",e.sku)}),disabled:a,onRemove:A,ariaLabel:`${r.productNotFound} - ${e.sku}`})]},e.sku):x("form",{name:w,className:"b2b-quick-order-form-quick-order-items__item-form",onSubmit:c=>c.preventDefault(),"data-sku":h,children:[o("input",{type:"hidden",name:"sku",value:h}),o("input",{type:"hidden",name:"quantity",value:e.quantity}),o("input",{type:"hidden",name:"valid",value:q?"true":"false"}),o("input",{type:"hidden",name:"productType",value:e.productType||""}),e.id&&o("input",{type:"hidden",name:"itemId",value:e.id}),e.parentSku&&o("input",{type:"hidden",name:"parentSku",value:e.parentSku}),d,o(ie,{title:o("span",{children:e.name}),sku:o("span",{children:h}),image:N?o("img",{src:N.url,alt:N.label||e.name}):void 0,price:o(F,{name:"ProductPrice",slot:S==null?void 0:S.ProductPrice,context:{item:e,scope:b},children:o(Ne,{minimumAmount:e.prices.final.minimumAmount,maximumAmount:e.prices.final.maximumAmount,amount:e.prices.final.amount,currency:e.prices.final.currency})}),quantity:e.quantity,alert:e.inStock===!1?o("div",{className:"b2b-quick-order-items__alert",children:r.outOfStock}):void 0,warning:v&&!I?o("div",{className:"b2b-quick-order-items__warning",children:r.configurableOptionsWarning}):void 0,footer:v?o(we,{title:r.productOptions,ariaLabelTitle:r.productOptions,defaultOpen:!I,className:"b2b-quick-order-list-item__accordion",actionIconPosition:"left",children:o(F,{name:"ProductOptions",slot:S==null?void 0:S.ProductOptions,context:{item:e,scope:b},children:o("div",{className:"b2b-quick-order-items__configurable-error",children:r.configurableProductErrorDescription})})}):void 0,updating:u,disabled:a,loading:a,onRemove:A,onQuantity:T,ariaLabel:`${e.name} - ${e.sku}`})]},h)},ir=W(sr),ur={cursor:"pointer"},or={cursor:"default"},cr=({t:e,value:r,onChange:t,items:n,shouldShowResults:u=!0,className:a,onItemClick:s,slots:i})=>{const{activeIndex:S,showResults:b,showEmptyState:h,resultsId:l,inputRef:k,itemRefs:y,containerRef:C,handleChange:m,handleFocus:w,handleBlur:q,handleKeyDown:v,createItemClickHandler:O,getActiveDescendant:I}=nr({value:r,onChange:t,items:n,shouldShowResults:u,onItemClick:s});return x("div",{ref:C,className:j(["b2b-quick-order-search",a]),children:[o(Ae,{ref:k,className:"b2b-quick-order-search__input",value:r,onChange:m,onFocus:w,onBlur:q,placeholder:e.searchPlaceholder,"aria-label":e.searchAriaLabel,role:"combobox","aria-autocomplete":"list","aria-expanded":b,"aria-controls":l.current,"aria-activedescendant":I(),onKeyDown:v}),b&&o("div",{id:l.current,role:"listbox",className:"b2b-quick-order-search__results","aria-label":e.searchAriaLabel,children:n.map((N,A)=>o(F,{slot:i==null?void 0:i.QuickOrderSearchAutocompleteItem,name:"QuickOrderSearchAutocompleteItem",context:{item:N,index:A,createItemClickHandler:O,activeIndex:S},children:o("div",{id:`${l.current}-item-${A}`,ref:T=>y.current[A]=T,role:"option","aria-selected":A===S,className:j(["b2b-quick-order-search__result-item",A===S&&"b2b-quick-order-search__result-item--active"]),onClick:O(N),style:s?ur:or,children:`${N.sku} ${N.name}`})},N.sku))}),h&&o("div",{className:"b2b-quick-order-search__empty-state",role:"status","aria-live":"polite",children:e.searchEmptyState}),b&&x("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:[n.length," ",n.length===1?e.resultAvailable:e.resultsAvailable,"."," ",e.srInstructions]})]})},be=W(cr),Er=({notification:e,onDismiss:r,onSkuClick:t,validationErrorText:n,backendErrorText:u,successText:a,partialSuccessText:s})=>{if(!e)return null;const i=()=>{switch(e.type){case"validation":return lr(n,e.clickableSkus,e.details,t);case"partial-success":return dr(s,e.message,e.count,e.clickableSkus,t);case"backend-error":return pr(u,e.details);case"success":return kr(a,e.count);default:return o("span",{children:e.message})}};return o("div",{className:ye(["b2b-quick-order-notification-banner",[`b2b-quick-order-notification-banner--${e.variant}`,e.variant]]),children:o(Ee,{variant:e.variant,message:i(),onDismiss:r})})};function Se(e,r){return e.map((t,n)=>x("span",{children:[o("a",{href:"#",onClick:u=>{u.preventDefault(),r(t)},style:{cursor:"pointer",textDecoration:"underline",color:"white"},children:t}),n<e.length-1?", ":""]},t))}function lr(e,r,t,n){return r!=null&&r.length&&n?x("span",{children:[e," - ",Se(r,n)]}):x("span",{children:[e," - ",t]})}function dr(e,r,t,n,u){if(!e)return o("span",{children:r});const a=e.replace("{count}",String(t||0)).replace("{total}",String((t||0)+((n==null?void 0:n.length)||0)));return n!=null&&n.length&&u?x("span",{children:[a,": ",Se(n,u)]}):x("span",{children:[a,": ",(n==null?void 0:n.join(", "))||"Unknown"]})}function pr(e,r){return x("span",{children:[e,r?` - ${r}`:""]})}function kr(e,r){return r!==void 0?o("span",{children:e.replace("{count}",String(r))}):o("span",{children:e})}const Rr=({isDisabled:e,message:r,children:t})=>x("div",{className:"b2b-quick-order-disabled-overlay",children:[o("div",{className:"b2b-quick-order-disabled-overlay__content",style:{pointerEvents:e?"none":"auto"},children:t}),e&&x(te,{children:[o("div",{className:"b2b-quick-order-disabled-overlay__blur"}),o("div",{className:"b2b-quick-order-disabled-overlay__message",children:r})]})]});export{Or as C,qr as Q,Cr as S,gr as a,Ir as b,Rr as c,Nr as d,Er as e,Ar as f,wr as g,_r as u};
9
+ //# sourceMappingURL=components.js.map