Skip to content

Commit c08b8c6

Browse files
committed
fix: Add product import template to import UI
1 parent ade62ea commit c08b8c6

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
const ProductImportCSV =
2+
"data:text/csv;charset=utf-8," +
3+
`Product Id;Product Handle;Product Title;Product Subtitle;Product Description;Product Status;Product Thumbnail;Product Weight;Product Length;Product Width;Product Height;Product HS Code;Product Origin Country;Product MID Code;Product Material;Product Collection Title;Product Collection Handle;Product Type;Product Tags;Product Discountable;Product External Id;Product Profile Name;Product Profile Type;Variant Id;Variant Title;Variant SKU;Variant Barcode;Variant Inventory Quantity;Variant Allow Backorder;Variant Manage Inventory;Variant Weight;Variant Length;Variant Width;Variant Height;Variant HS Code;Variant Origin Country;Variant MID Code;Variant Material;Price EUR;Price USD;Option 1 Name;Option 1 Value;Image 1 Url;Image 2 Url
4+
;coffee-mug-v2;Medusa Coffee Mug;;Every programmer's best friend.;published;https://medusa-public-images.s3.eu-west-1.amazonaws.com/coffee-mug.png;400;;;;;;;;;;;;true;;;;;One Size;;;100;false;true;;;;;;;;;1000;1200;Size;One Size;https://medusa-public-images.s3.eu-west-1.amazonaws.com/coffee-mug.png;
5+
;sweatpants-v2;Medusa Sweatpants;;Reimagine the feeling of classic sweatpants. With our cotton sweatpants, everyday essentials no longer have to be ordinary.;published;https://medusa-public-images.s3.eu-west-1.amazonaws.com/sweatpants-gray-front.png;400;;;;;;;;;;;;true;;;;;S;;;100;false;true;;;;;;;;;2950;3350;Size;S;https://medusa-public-images.s3.eu-west-1.amazonaws.com/sweatpants-gray-front.png;https://medusa-public-images.s3.eu-west-1.amazonaws.com/sweatpants-gray-back.png
6+
;sweatpants-v2;Medusa Sweatpants;;Reimagine the feeling of classic sweatpants. With our cotton sweatpants, everyday essentials no longer have to be ordinary.;published;https://medusa-public-images.s3.eu-west-1.amazonaws.com/sweatpants-gray-front.png;400;;;;;;;;;;;;true;;;;;M;;;100;false;true;;;;;;;;;2950;3350;Size;M;https://medusa-public-images.s3.eu-west-1.amazonaws.com/sweatpants-gray-front.png;https://medusa-public-images.s3.eu-west-1.amazonaws.com/sweatpants-gray-back.png
7+
;sweatpants-v2;Medusa Sweatpants;;Reimagine the feeling of classic sweatpants. With our cotton sweatpants, everyday essentials no longer have to be ordinary.;published;https://medusa-public-images.s3.eu-west-1.amazonaws.com/sweatpants-gray-front.png;400;;;;;;;;;;;;true;;;;;L;;;100;false;true;;;;;;;;;2950;3350;Size;L;https://medusa-public-images.s3.eu-west-1.amazonaws.com/sweatpants-gray-front.png;https://medusa-public-images.s3.eu-west-1.amazonaws.com/sweatpants-gray-back.png
8+
;sweatpants-v2;Medusa Sweatpants;;Reimagine the feeling of classic sweatpants. With our cotton sweatpants, everyday essentials no longer have to be ordinary.;published;https://medusa-public-images.s3.eu-west-1.amazonaws.com/sweatpants-gray-front.png;400;;;;;;;;;;;;true;;;;;XL;;;100;false;true;;;;;;;;;2950;3350;Size;XL;https://medusa-public-images.s3.eu-west-1.amazonaws.com/sweatpants-gray-front.png;https://medusa-public-images.s3.eu-west-1.amazonaws.com/sweatpants-gray-back.png
9+
`
10+
11+
export const getProductImportCsvTemplate = () => {
12+
return encodeURI(ProductImportCSV)
13+
}

packages/admin-next/dashboard/src/routes/products/product-import/product-import.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import { Button, Heading, Text, toast } from "@medusajs/ui"
22
import { RouteDrawer, useRouteModal } from "../../../components/modals"
33
import { useTranslation } from "react-i18next"
4-
import { useState } from "react"
4+
import { useMemo, useState } from "react"
55
import { useConfirmImportProducts, useImportProducts } from "../../../hooks/api"
66
import { UploadImport } from "./components/upload-import"
77
import { ImportSummary } from "./components/import-summary"
88
import { Trash } from "@medusajs/icons"
99
import { FilePreview } from "../../../components/common/file-preview"
10+
import { getProductImportCsvTemplate } from "./helpers/import-template"
1011

1112
export const ProductImport = () => {
1213
const { t } = useTranslation()
@@ -34,6 +35,10 @@ const ProductImportContent = () => {
3435
const { mutateAsync: confirm } = useConfirmImportProducts()
3536
const { handleSuccess } = useRouteModal()
3637

38+
const productImportTemplateContent = useMemo(() => {
39+
return getProductImportCsvTemplate()
40+
}, [])
41+
3742
const handleUploaded = async (file: File) => {
3843
setFilename(file.name)
3944
await importProducts(
@@ -112,9 +117,8 @@ const ProductImportContent = () => {
112117
</Text>
113118
<div className="mt-4">
114119
<FilePreview
115-
filename={"medusa-template-product-list.csv"}
116-
// TODO: Where would the template file be stored?
117-
url={"https://example.com"}
120+
filename={"product-import-template.csv"}
121+
url={productImportTemplateContent}
118122
/>
119123
</div>
120124
</RouteDrawer.Body>

0 commit comments

Comments
 (0)