@dropins/storefront-quick-order 1.0.0-beta2 → 1.0.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.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*! Copyright 2026 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsxs as
|
|
4
|
-
`,u=e.map(
|
|
5
|
-
`),
|
|
3
|
+
import{jsxs as j,jsx as D}from"@dropins/tools/preact-jsx-runtime.js";import{classes as U}from"@dropins/tools/lib.js";import{d as L,Q as $,a as W}from"../chunks/debounce.js";import{useState as x,useRef as w,useEffect as v,useMemo as R,useCallback as O}from"@dropins/tools/preact-hooks.js";import{events as g}from"@dropins/tools/event-bus.js";import{useText as N}from"@dropins/tools/i18n.js";import"@dropins/tools/preact-compat.js";import"@dropins/tools/components.js";const E=({initialVariants:s,onVariantsLoaded:l,onSelectedVariantsChange:k,debounceMs:Q=300,initialLoading:h=!0}={})=>{const[c,d]=x([]),a=w([]),[q,b]=x(h),m=w(!1),o=w(null);v(()=>{s&&s.length>0&&g.emit("quick-order/grid-ordering-variants",s)},[s]),v(()=>{const r=g.on("quick-order/grid-ordering-variants",e=>{if(!e||e.length===0)d([]),a.current=[],b(!1);else{const t=e.map(u=>({...u,quantity:0}));d(t),a.current=t,b(!1),g.emit("quick-order/grid-ordering-selected-variants",[]),l==null||l(t)}},{eager:!0});return()=>{r==null||r.off()}},[l]);const p=R(()=>L(r=>{const e=r.filter(t=>t.quantity>0).map(t=>{var u;return{sku:t.product.sku,name:t.product.name,inStock:t.product.inStock,attributes:t.product.attributes.reduce((n,i)=>(i.value&&(n[i.name]={label:i.label,value:i.value}),n),{}),price:t.product.price.final.amount.value,quantity:t.quantity,subtotal:t.product.price.final.amount.value*t.quantity,image:((u=t.product.images[0])==null?void 0:u.url)||""}});k&&k(e),g.emit("quick-order/grid-ordering-selected-variants",e)},Q),[k,Q]),G=O((r,e)=>{m.current||d(t=>{const u=t.map(n=>n.product.sku===r?n.product.inStock?{...n,quantity:Math.max(0,e)}:{...n,quantity:0}:n);return a.current=u,p(u),u})},[p]),y=O(()=>{o.current!==null&&clearTimeout(o.current),m.current=!0,d(r=>{const e=r.map(t=>({...t,quantity:0}));return a.current=e,p(e),e}),o.current=window.setTimeout(()=>{m.current=!1,o.current=null},200)},[p]);v(()=>{const r=g.on("quick-order/grid-ordering-reset-selected-variants",y,{eager:!0});return()=>{r==null||r.off()}},[y]),v(()=>()=>{o.current!==null&&clearTimeout(o.current)},[]);const T=O(()=>{const e=(a.current.length>0?a.current:c).filter(C=>C.quantity>0);if(e.length===0){console.warn("No variants with quantity to export");return}const t=`SKU,Quantity
|
|
4
|
+
`,u=e.map(C=>`${C.product.sku},${C.quantity}`).join(`
|
|
5
|
+
`),n=t+u,i=new Blob([n],{type:"text/csv;charset=utf-8;"}),f=document.createElement("a"),V=URL.createObjectURL(i),A=new Date().toISOString().split("T")[0];f.setAttribute("href",V),f.setAttribute("download",`product-variants-${A}.csv`),f.style.visibility="hidden",document.body.appendChild(f),f.click(),document.body.removeChild(f),URL.revokeObjectURL(V)},[c]),S=O(()=>(a.current.length>0?a.current:c).filter(t=>t.quantity>0).map(t=>{var u;return{sku:t.product.sku,name:t.product.name,inStock:t.product.inStock,attributes:t.product.attributes.reduce((n,i)=>(i.value&&i.value!==""&&(n[i.name]={label:i.label,value:i.value}),n),{}),price:t.product.price.final.amount.value,quantity:t.quantity,subtotal:t.product.price.final.amount.value*t.quantity,image:((u=t.product.images[0])==null?void 0:u.url)||""}}),[c]),B=R(()=>c.filter(r=>r.quantity>0).length,[c]);return{variants:c,loading:q,updateQuantity:G,clearAllQuantities:y,exportToCsv:T,collectTableData:S,variantsWithQuantity:B}},X=({className:s,initialVariants:l,onVariantsLoaded:k,onSelectedVariantsChange:Q,debounceMs:h=300,initialLoading:c,visibleVariantsLimit:d=10,columns:a,slots:q})=>{const b=N({imageColumn:"QuickOrder.VariantsGrid.imageColumn",skuColumn:"QuickOrder.VariantsGrid.skuColumn",availabilityColumn:"QuickOrder.VariantsGrid.availabilityColumn",priceColumn:"QuickOrder.VariantsGrid.priceColumn",quantityColumn:"QuickOrder.VariantsGrid.quantityColumn",subtotalColumn:"QuickOrder.VariantsGrid.subtotalColumn",clearButton:"QuickOrder.VariantsGrid.clearButton",saveToCsvButton:"QuickOrder.VariantsGrid.saveToCsvButton",collectDataButton:"QuickOrder.VariantsGrid.collectDataButton",inStock:"QuickOrder.VariantsGrid.inStock",outOfStock:"QuickOrder.VariantsGrid.outOfStock",quantityLabel:"QuickOrder.VariantsGrid.quantityLabel",showAll:"QuickOrder.VariantsGrid.showAll",showLess:"QuickOrder.VariantsGrid.showLess"}),{variants:m,loading:o,updateQuantity:p,clearAllQuantities:G,exportToCsv:y,collectTableData:T,variantsWithQuantity:S}=E({initialVariants:l,onVariantsLoaded:k,onSelectedVariantsChange:Q,debounceMs:h,initialLoading:c});return m.length===0&&!o?null:j("div",{className:U(["b2b-quick-order-variants-grid-container",s]),"data-testid":"variants-grid-container",children:[D($,{t:b,onClear:G,onSaveToCsv:y,onCollectData:T,isDisabled:o,variantsCount:S,slots:q}),D(W,{t:b,variants:m,loading:o,onQuantityChange:p,visibleVariantsLimit:d,columns:a,slots:q})]})};export{X as QuickOrderVariantsGrid,X as default};
|
|
6
6
|
//# sourceMappingURL=QuickOrderVariantsGrid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuickOrderVariantsGrid.js","sources":["/@dropins/storefront-quick-order/src/hooks/useQuickOrderVariantsData.tsx","/@dropins/storefront-quick-order/src/containers/QuickOrderVariantsGrid/QuickOrderVariantsGrid.tsx"],"sourcesContent":["/********************************************************************\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 {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'preact/hooks';\nimport {\n VariantWithQuantity,\n ProductVariant,\n UseQuickOrderVariantsDataProps,\n UseQuickOrderVariantsDataReturn,\n} from '@/b2b-quick-order/types';\nimport { debounce } from '@adobe-commerce/elsie/lib/debounce';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const useQuickOrderVariantsData = ({\n initialVariants,\n onVariantsLoaded,\n onSelectedVariantsChange,\n debounceMs = 300,\n initialLoading = true,\n}: UseQuickOrderVariantsDataProps = {}): UseQuickOrderVariantsDataReturn => {\n const [variants, setVariants] = useState<VariantWithQuantity[]>([]);\n const variantsRef = useRef<VariantWithQuantity[]>([]);\n const [loading, setLoading] = useState(initialLoading);\n\n // Emit event when initialVariants prop is provided (e.g., from Storybook)\n useEffect(() => {\n if (initialVariants && initialVariants.length > 0) {\n events.emit('quick-order/grid-ordering-variants', initialVariants);\n }\n }, [initialVariants]);\n\n // Initializing event\n useEffect(() => {\n const variantsEvent = events.on(\n 'quick-order/grid-ordering-variants',\n (incomingVariants: ProductVariant[]) => {\n if (!incomingVariants || incomingVariants.length === 0) {\n setVariants([]);\n variantsRef.current = [];\n setLoading(false);\n } else {\n const variantsWithQuantity: VariantWithQuantity[] =\n incomingVariants.map((variant) => ({\n ...variant,\n quantity: 0,\n }));\n setVariants(variantsWithQuantity);\n variantsRef.current = variantsWithQuantity;\n setLoading(false);\n events.emit('quick-order/grid-ordering-selected-variants', []);\n onVariantsLoaded?.(variantsWithQuantity);\n }\n },\n {\n eager: true,\n }\n );\n\n return () => {\n variantsEvent?.off();\n };\n }, [onVariantsLoaded]);\n\n const debouncedSelectedVariantsChange = useMemo(\n () =>\n debounce((updatedVariants: VariantWithQuantity[]) => {\n const collectedData = updatedVariants\n .filter((v) => v.quantity > 0)\n .map((v) => ({\n sku: v.product.sku,\n name: v.product.name,\n inStock: v.product.inStock,\n attributes: v.product.attributes.reduce((acc, attr) => {\n if (attr.value) {\n acc[attr.name] = {\n label: attr.label,\n value: attr.value,\n };\n }\n return acc;\n }, {} as Record<string, { label: string; value: string | number }>),\n price: v.product.price.final.amount.value,\n quantity: v.quantity,\n subtotal: v.product.price.final.amount.value * v.quantity,\n image: v.product.images[0]?.url || '',\n }));\n\n if (onSelectedVariantsChange) {\n onSelectedVariantsChange(collectedData);\n }\n\n events.emit(\n 'quick-order/grid-ordering-selected-variants',\n collectedData\n );\n }, debounceMs),\n [onSelectedVariantsChange, debounceMs]\n );\n\n const updateQuantity = useCallback(\n (sku: string, quantity: number) => {\n setVariants((prevVariants) => {\n const updated = prevVariants.map((variant) => {\n if (variant.product.sku === sku) {\n if (!variant.product.inStock) {\n return { ...variant, quantity: 0 };\n }\n return { ...variant, quantity: Math.max(0, quantity) };\n }\n return variant;\n });\n\n variantsRef.current = updated;\n debouncedSelectedVariantsChange(updated);\n\n return updated;\n });\n },\n [debouncedSelectedVariantsChange]\n );\n\n const clearAllQuantities = useCallback(() => {\n setVariants((prevVariants) => {\n const cleared = prevVariants.map((variant) => ({\n ...variant,\n quantity: 0,\n }));\n\n variantsRef.current = cleared;\n debouncedSelectedVariantsChange(cleared);\n return cleared;\n });\n }, [debouncedSelectedVariantsChange]);\n\n useEffect(() => {\n const clearAllQuantitiesEvent = events.on(\n 'quick-order/grid-ordering-reset-selected-variants',\n clearAllQuantities,\n {\n eager: true,\n }\n );\n\n return () => {\n clearAllQuantitiesEvent?.off();\n };\n }, [clearAllQuantities]);\n\n const exportToCsv = useCallback(() => {\n const currentVariants =\n variantsRef.current.length > 0 ? variantsRef.current : variants;\n const variantsToExport = currentVariants.filter((v) => v.quantity > 0);\n\n if (variantsToExport.length === 0) {\n console.warn('No variants with quantity to export');\n return;\n }\n\n const csvHeader = 'SKU,Quantity\\n';\n const csvRows = variantsToExport\n .map((v) => `${v.product.sku},${v.quantity}`)\n .join('\\n');\n const csvContent = csvHeader + csvRows;\n\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n const link = document.createElement('a');\n const url = URL.createObjectURL(blob);\n\n const timestamp = new Date().toISOString().split('T')[0];\n link.setAttribute('href', url);\n link.setAttribute('download', `product-variants-${timestamp}.csv`);\n link.style.visibility = 'hidden';\n\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n\n URL.revokeObjectURL(url);\n }, [variants]);\n\n const collectTableData = useCallback(() => {\n const currentVariants =\n variantsRef.current.length > 0 ? variantsRef.current : variants;\n const tableData = currentVariants\n .filter((v) => v.quantity > 0)\n .map((variant) => ({\n sku: variant.product.sku,\n name: variant.product.name,\n inStock: variant.product.inStock,\n attributes: variant.product.attributes.reduce((acc, attr) => {\n if (attr.value && attr.value !== '') {\n acc[attr.name] = {\n label: attr.label,\n value: attr.value,\n };\n }\n return acc;\n }, {} as Record<string, { label: string; value: string | number }>),\n price: variant.product.price.final.amount.value,\n quantity: variant.quantity,\n subtotal: variant.product.price.final.amount.value * variant.quantity,\n image: variant.product.images[0]?.url || '',\n }));\n\n return tableData;\n }, [variants]);\n\n const variantsWithQuantity = useMemo(\n () => variants.filter((v) => v.quantity > 0).length,\n [variants]\n );\n\n return {\n variants,\n loading,\n updateQuantity,\n clearAllQuantities,\n exportToCsv,\n collectTableData,\n variantsWithQuantity,\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 { useText } from '@adobe-commerce/elsie/i18n';\nimport { classes, Container } from '@adobe-commerce/elsie/lib';\nimport { QuickOrderVariantsGrid as QuickOrderVariantsGridComponent } from '@/b2b-quick-order/components/QuickOrderVariantsGrid/QuickOrderVariantsGrid';\nimport { QuickOrderVariantsActions } from '@/b2b-quick-order/components/QuickOrderVariantsActions/QuickOrderVariantsActions';\nimport { useQuickOrderVariantsData } from '@/b2b-quick-order/hooks/useQuickOrderVariantsData';\nimport { QuickOrderVariantsGridProps } from '@/b2b-quick-order/types/quickOrderVariantsGrid.types';\n\nexport const QuickOrderVariantsGrid: Container<QuickOrderVariantsGridProps> = ({\n className,\n initialVariants,\n onVariantsLoaded,\n onSelectedVariantsChange,\n debounceMs = 300,\n initialLoading,\n visibleVariantsLimit = 10,\n columns,\n slots,\n}) => {\n const t = useText({\n imageColumn: 'QuickOrder.VariantsGrid.imageColumn',\n skuColumn: 'QuickOrder.VariantsGrid.skuColumn',\n availabilityColumn: 'QuickOrder.VariantsGrid.availabilityColumn',\n priceColumn: 'QuickOrder.VariantsGrid.priceColumn',\n quantityColumn: 'QuickOrder.VariantsGrid.quantityColumn',\n subtotalColumn: 'QuickOrder.VariantsGrid.subtotalColumn',\n clearButton: 'QuickOrder.VariantsGrid.clearButton',\n saveToCsvButton: 'QuickOrder.VariantsGrid.saveToCsvButton',\n collectDataButton: 'QuickOrder.VariantsGrid.collectDataButton',\n inStock: 'QuickOrder.VariantsGrid.inStock',\n outOfStock: 'QuickOrder.VariantsGrid.outOfStock',\n quantityLabel: 'QuickOrder.VariantsGrid.quantityLabel',\n showAll: 'QuickOrder.VariantsGrid.showAll',\n showLess: 'QuickOrder.VariantsGrid.showLess',\n });\n\n const {\n variants,\n loading,\n updateQuantity,\n clearAllQuantities,\n exportToCsv,\n collectTableData,\n variantsWithQuantity,\n } = useQuickOrderVariantsData({\n initialVariants,\n onVariantsLoaded,\n onSelectedVariantsChange,\n debounceMs,\n initialLoading,\n });\n\n if (variants.length === 0 && !loading) {\n return null;\n }\n\n return (\n <div\n className={classes([\n 'b2b-quick-order-variants-grid-container',\n className,\n ])}\n data-testid=\"variants-grid-container\"\n >\n <QuickOrderVariantsActions\n t={t}\n onClear={clearAllQuantities}\n onSaveToCsv={exportToCsv}\n onCollectData={collectTableData}\n isDisabled={loading}\n variantsCount={variantsWithQuantity}\n slots={slots}\n />\n\n <QuickOrderVariantsGridComponent\n t={t}\n variants={variants}\n loading={loading}\n onQuantityChange={updateQuantity}\n visibleVariantsLimit={visibleVariantsLimit}\n columns={columns}\n slots={slots}\n />\n </div>\n );\n};\n"],"names":["useQuickOrderVariantsData","initialVariants","onVariantsLoaded","onSelectedVariantsChange","debounceMs","initialLoading","variants","setVariants","useState","variantsRef","useRef","loading","setLoading","useEffect","events","variantsEvent","incomingVariants","variantsWithQuantity","variant","debouncedSelectedVariantsChange","useMemo","debounce","updatedVariants","collectedData","v","acc","attr","_a","updateQuantity","useCallback","sku","quantity","prevVariants","updated","clearAllQuantities","cleared","clearAllQuantitiesEvent","exportToCsv","variantsToExport","csvHeader","csvRows","csvContent","blob","link","url","timestamp","collectTableData","QuickOrderVariantsGrid","className","visibleVariantsLimit","columns","slots","t","useText","jsxs","classes","jsx","QuickOrderVariantsActions","QuickOrderVariantsGridComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QuickOrderVariantsGrid.js","sources":["/@dropins/storefront-quick-order/src/hooks/useQuickOrderVariantsData.tsx","/@dropins/storefront-quick-order/src/containers/QuickOrderVariantsGrid/QuickOrderVariantsGrid.tsx"],"sourcesContent":["/********************************************************************\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 {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'preact/hooks';\nimport {\n VariantWithQuantity,\n ProductVariant,\n UseQuickOrderVariantsDataProps,\n UseQuickOrderVariantsDataReturn,\n} from '@/b2b-quick-order/types';\nimport { debounce } from '@adobe-commerce/elsie/lib/debounce';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const useQuickOrderVariantsData = ({\n initialVariants,\n onVariantsLoaded,\n onSelectedVariantsChange,\n debounceMs = 300,\n initialLoading = true,\n}: UseQuickOrderVariantsDataProps = {}): UseQuickOrderVariantsDataReturn => {\n const [variants, setVariants] = useState<VariantWithQuantity[]>([]);\n const variantsRef = useRef<VariantWithQuantity[]>([]);\n const [loading, setLoading] = useState(initialLoading);\n const isClearingRef = useRef(false);\n const clearTimeoutRef = useRef<number | null>(null);\n\n // Emit event when initialVariants prop is provided (e.g., from Storybook)\n useEffect(() => {\n if (initialVariants && initialVariants.length > 0) {\n events.emit('quick-order/grid-ordering-variants', initialVariants);\n }\n }, [initialVariants]);\n\n // Initializing event\n useEffect(() => {\n const variantsEvent = events.on(\n 'quick-order/grid-ordering-variants',\n (incomingVariants: ProductVariant[]) => {\n if (!incomingVariants || incomingVariants.length === 0) {\n setVariants([]);\n variantsRef.current = [];\n setLoading(false);\n } else {\n const variantsWithQuantity: VariantWithQuantity[] =\n incomingVariants.map((variant) => ({\n ...variant,\n quantity: 0,\n }));\n setVariants(variantsWithQuantity);\n variantsRef.current = variantsWithQuantity;\n setLoading(false);\n events.emit('quick-order/grid-ordering-selected-variants', []);\n onVariantsLoaded?.(variantsWithQuantity);\n }\n },\n {\n eager: true,\n }\n );\n\n return () => {\n variantsEvent?.off();\n };\n }, [onVariantsLoaded]);\n\n const debouncedSelectedVariantsChange = useMemo(\n () =>\n debounce((updatedVariants: VariantWithQuantity[]) => {\n const collectedData = updatedVariants\n .filter((v) => v.quantity > 0)\n .map((v) => ({\n sku: v.product.sku,\n name: v.product.name,\n inStock: v.product.inStock,\n attributes: v.product.attributes.reduce((acc, attr) => {\n if (attr.value) {\n acc[attr.name] = {\n label: attr.label,\n value: attr.value,\n };\n }\n return acc;\n }, {} as Record<string, { label: string; value: string | number }>),\n price: v.product.price.final.amount.value,\n quantity: v.quantity,\n subtotal: v.product.price.final.amount.value * v.quantity,\n image: v.product.images[0]?.url || '',\n }));\n\n if (onSelectedVariantsChange) {\n onSelectedVariantsChange(collectedData);\n }\n\n events.emit(\n 'quick-order/grid-ordering-selected-variants',\n collectedData\n );\n }, debounceMs),\n [onSelectedVariantsChange, debounceMs]\n );\n\n const updateQuantity = useCallback(\n (sku: string, quantity: number) => {\n // Block updateQuantity if clearing is in progress\n if (isClearingRef.current) {\n return;\n }\n\n setVariants((prevVariants) => {\n const updated = prevVariants.map((variant) => {\n if (variant.product.sku === sku) {\n if (!variant.product.inStock) {\n return { ...variant, quantity: 0 };\n }\n return { ...variant, quantity: Math.max(0, quantity) };\n }\n return variant;\n });\n\n variantsRef.current = updated;\n debouncedSelectedVariantsChange(updated);\n\n return updated;\n });\n },\n [debouncedSelectedVariantsChange]\n );\n\n const clearAllQuantities = useCallback(() => {\n // Clear previous timeout if exists\n if (clearTimeoutRef.current !== null) {\n clearTimeout(clearTimeoutRef.current);\n }\n\n isClearingRef.current = true;\n\n setVariants((prevVariants) => {\n const cleared = prevVariants.map((variant) => ({\n ...variant,\n quantity: 0,\n }));\n\n variantsRef.current = cleared;\n debouncedSelectedVariantsChange(cleared);\n return cleared;\n });\n\n // [USF-3838] Timeout required since an SDK Incrementer component using onBlur event timeout\n // We should ensure that a clear action will be executed after it\n clearTimeoutRef.current = window.setTimeout(() => {\n isClearingRef.current = false;\n clearTimeoutRef.current = null;\n }, 200);\n }, [debouncedSelectedVariantsChange]);\n\n useEffect(() => {\n const clearAllQuantitiesEvent = events.on(\n 'quick-order/grid-ordering-reset-selected-variants',\n clearAllQuantities,\n {\n eager: true,\n }\n );\n\n return () => {\n clearAllQuantitiesEvent?.off();\n };\n }, [clearAllQuantities]);\n\n // Cleanup timeout on component unmount\n useEffect(() => {\n return () => {\n if (clearTimeoutRef.current !== null) {\n clearTimeout(clearTimeoutRef.current);\n }\n };\n }, []);\n\n const exportToCsv = useCallback(() => {\n const currentVariants =\n variantsRef.current.length > 0 ? variantsRef.current : variants;\n const variantsToExport = currentVariants.filter((v) => v.quantity > 0);\n\n if (variantsToExport.length === 0) {\n console.warn('No variants with quantity to export');\n return;\n }\n\n const csvHeader = 'SKU,Quantity\\n';\n const csvRows = variantsToExport\n .map((v) => `${v.product.sku},${v.quantity}`)\n .join('\\n');\n const csvContent = csvHeader + csvRows;\n\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n const link = document.createElement('a');\n const url = URL.createObjectURL(blob);\n\n const timestamp = new Date().toISOString().split('T')[0];\n link.setAttribute('href', url);\n link.setAttribute('download', `product-variants-${timestamp}.csv`);\n link.style.visibility = 'hidden';\n\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n\n URL.revokeObjectURL(url);\n }, [variants]);\n\n const collectTableData = useCallback(() => {\n const currentVariants =\n variantsRef.current.length > 0 ? variantsRef.current : variants;\n const tableData = currentVariants\n .filter((v) => v.quantity > 0)\n .map((variant) => ({\n sku: variant.product.sku,\n name: variant.product.name,\n inStock: variant.product.inStock,\n attributes: variant.product.attributes.reduce((acc, attr) => {\n if (attr.value && attr.value !== '') {\n acc[attr.name] = {\n label: attr.label,\n value: attr.value,\n };\n }\n return acc;\n }, {} as Record<string, { label: string; value: string | number }>),\n price: variant.product.price.final.amount.value,\n quantity: variant.quantity,\n subtotal: variant.product.price.final.amount.value * variant.quantity,\n image: variant.product.images[0]?.url || '',\n }));\n\n return tableData;\n }, [variants]);\n\n const variantsWithQuantity = useMemo(\n () => variants.filter((v) => v.quantity > 0).length,\n [variants]\n );\n\n return {\n variants,\n loading,\n updateQuantity,\n clearAllQuantities,\n exportToCsv,\n collectTableData,\n variantsWithQuantity,\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 { useText } from '@adobe-commerce/elsie/i18n';\nimport { classes, Container } from '@adobe-commerce/elsie/lib';\nimport { QuickOrderVariantsGrid as QuickOrderVariantsGridComponent } from '@/b2b-quick-order/components/QuickOrderVariantsGrid/QuickOrderVariantsGrid';\nimport { QuickOrderVariantsActions } from '@/b2b-quick-order/components/QuickOrderVariantsActions/QuickOrderVariantsActions';\nimport { useQuickOrderVariantsData } from '@/b2b-quick-order/hooks/useQuickOrderVariantsData';\nimport { QuickOrderVariantsGridProps } from '@/b2b-quick-order/types/quickOrderVariantsGrid.types';\n\nexport const QuickOrderVariantsGrid: Container<QuickOrderVariantsGridProps> = ({\n className,\n initialVariants,\n onVariantsLoaded,\n onSelectedVariantsChange,\n debounceMs = 300,\n initialLoading,\n visibleVariantsLimit = 10,\n columns,\n slots,\n}) => {\n const t = useText({\n imageColumn: 'QuickOrder.VariantsGrid.imageColumn',\n skuColumn: 'QuickOrder.VariantsGrid.skuColumn',\n availabilityColumn: 'QuickOrder.VariantsGrid.availabilityColumn',\n priceColumn: 'QuickOrder.VariantsGrid.priceColumn',\n quantityColumn: 'QuickOrder.VariantsGrid.quantityColumn',\n subtotalColumn: 'QuickOrder.VariantsGrid.subtotalColumn',\n clearButton: 'QuickOrder.VariantsGrid.clearButton',\n saveToCsvButton: 'QuickOrder.VariantsGrid.saveToCsvButton',\n collectDataButton: 'QuickOrder.VariantsGrid.collectDataButton',\n inStock: 'QuickOrder.VariantsGrid.inStock',\n outOfStock: 'QuickOrder.VariantsGrid.outOfStock',\n quantityLabel: 'QuickOrder.VariantsGrid.quantityLabel',\n showAll: 'QuickOrder.VariantsGrid.showAll',\n showLess: 'QuickOrder.VariantsGrid.showLess',\n });\n\n const {\n variants,\n loading,\n updateQuantity,\n clearAllQuantities,\n exportToCsv,\n collectTableData,\n variantsWithQuantity,\n } = useQuickOrderVariantsData({\n initialVariants,\n onVariantsLoaded,\n onSelectedVariantsChange,\n debounceMs,\n initialLoading,\n });\n\n if (variants.length === 0 && !loading) {\n return null;\n }\n\n return (\n <div\n className={classes([\n 'b2b-quick-order-variants-grid-container',\n className,\n ])}\n data-testid=\"variants-grid-container\"\n >\n <QuickOrderVariantsActions\n t={t}\n onClear={clearAllQuantities}\n onSaveToCsv={exportToCsv}\n onCollectData={collectTableData}\n isDisabled={loading}\n variantsCount={variantsWithQuantity}\n slots={slots}\n />\n\n <QuickOrderVariantsGridComponent\n t={t}\n variants={variants}\n loading={loading}\n onQuantityChange={updateQuantity}\n visibleVariantsLimit={visibleVariantsLimit}\n columns={columns}\n slots={slots}\n />\n </div>\n );\n};\n"],"names":["useQuickOrderVariantsData","initialVariants","onVariantsLoaded","onSelectedVariantsChange","debounceMs","initialLoading","variants","setVariants","useState","variantsRef","useRef","loading","setLoading","isClearingRef","clearTimeoutRef","useEffect","events","variantsEvent","incomingVariants","variantsWithQuantity","variant","debouncedSelectedVariantsChange","useMemo","debounce","updatedVariants","collectedData","v","acc","attr","_a","updateQuantity","useCallback","sku","quantity","prevVariants","updated","clearAllQuantities","cleared","clearAllQuantitiesEvent","exportToCsv","variantsToExport","csvHeader","csvRows","csvContent","blob","link","url","timestamp","collectTableData","QuickOrderVariantsGrid","className","visibleVariantsLimit","columns","slots","t","useText","jsxs","classes","jsx","QuickOrderVariantsActions","QuickOrderVariantsGridComponent"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name": "@dropins/storefront-quick-order", "version": "1.0.0
|
|
1
|
+
{"name": "@dropins/storefront-quick-order", "version": "1.0.0", "@dropins/tools": "~1.7.0", "license": "SEE LICENSE IN LICENSE.md"}
|