Skip to content

Commit 3ee9b42

Browse files
committed
Display images where they should be displayed
1 parent 1839b1f commit 3ee9b42

10 files changed

+30
-14
lines changed
-2.83 KB
Binary file not shown.

apps/client/src/components/Entity/EntityDeleteDialog.tsx

+4-2
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ import toast from 'react-hot-toast';
44
import { BsTrash } from 'react-icons/bs';
55
import { useQueryClient } from 'react-query';
66
import { useNavigate } from 'react-router-dom';
7-
import placeholderImage from '../../assets/placeholder.png';
87
import { Utils } from '../../utils';
98
import Button from '../Button';
109
import Form from '../Form/Form';
1110
import FormError from '../Form/FormError';
1211
import FormField from '../Form/FormField';
1312
import FormInput from '../Form/FormInput';
1413
import IconButton from '../IconButton';
14+
import { ImageDto } from 'shared-types/dist/ImageDto';
1515

1616
export interface EntityDeleteDialogProps {
1717
entityName: string;
@@ -20,6 +20,7 @@ export interface EntityDeleteDialogProps {
2020
identifier: string;
2121
deletedItems?: string[];
2222
confirmBeforeDelete?: boolean;
23+
image?: ImageDto;
2324
}
2425

2526
function EntityDeleteDialog({
@@ -29,6 +30,7 @@ function EntityDeleteDialog({
2930
identifier,
3031
deletedItems = [],
3132
confirmBeforeDelete = false,
33+
image,
3234
}: EntityDeleteDialogProps) {
3335
const [loading, setLoading] = useState(false);
3436
const [error, setError] = useState<string | null>(null);
@@ -58,7 +60,7 @@ function EntityDeleteDialog({
5860
<div className="my-6 flex w-96 gap-4 rounded-md border border-gray-300 p-4">
5961
<div>
6062
<img
61-
src={placeholderImage}
63+
src={image?.url || '/api/images/default'}
6264
className="w-16 rounded-md"
6365
width={50}
6466
height={50}

apps/client/src/components/Entity/EntityImageColumn.tsx

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
import classNames from 'classnames';
2-
import placeholderImage from '../../assets/placeholder.png';
2+
import { ImageDto } from 'shared-types/dist/ImageDto';
33

44
type ImgProps = React.DetailedHTMLProps<
55
React.ImgHTMLAttributes<HTMLImageElement>,
66
HTMLImageElement
77
>;
88

9-
export interface EntityImageColumnProps extends ImgProps {}
9+
export interface EntityImageColumnProps extends ImgProps {
10+
image: ImageDto;
11+
}
1012

11-
function EntityImageColumn({ ...props }: EntityImageColumnProps) {
13+
function EntityImageColumn({ image, ...props }: EntityImageColumnProps) {
1214
return (
1315
<div className="hidden w-48 flex-shrink-0 xl:flex">
1416
<img
15-
src={placeholderImage}
1617
{...props}
18+
src={image.url}
1719
className={classNames(props.className, 'm-auto h-auto w-full rounded-md')}
1820
width={50}
1921
height={50}

apps/client/src/components/InventoryItem/InventoryEntityInfo.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ function InventoryEntityInfo({ inventoryItem }: InventoryEntityInfoProps) {
2121

2222
return (
2323
<EntityContainer>
24-
<EntityImageColumn />
24+
<EntityImageColumn image={inventoryItem.image} />
2525
<div>
2626
<HeaderWithHint
2727
hint="inventory item"

apps/client/src/components/InventoryItem/InventoryItemDeleteForm.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ function InventoryItemDeleteForm({ item }: InventoryItemDeleteFormProps) {
1010
<EntityDeleteDialog
1111
entityName={item.name}
1212
entityId={item.id}
13+
image={item.image}
1314
resourceName="inventory"
1415
identifier="inventory item"
1516
/>

apps/client/src/components/InventoryItem/InventoryTable.tsx

+6
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { useNavigate } from 'react-router-dom';
33
import { BasicInventoryItemDto, BasicProductDto } from 'shared-types';
44
import Table from '../Helpers/Table';
55
import InventoryItemActions from './InventoryItemActions';
6+
import TableImage from '../TableImage';
67

78
const columnHelper = createColumnHelper<BasicInventoryItemDto>();
89

@@ -19,6 +20,11 @@ function InventoryTable({ items }: InventoryTableProps) {
1920
cell: (info) => <div className="text-center">{info.row.index + 1}</div>,
2021
size: 0,
2122
}),
23+
columnHelper.accessor('image', {
24+
header: 'Image',
25+
cell: (info) => <TableImage image={info.getValue()} />,
26+
size: 0,
27+
}),
2228
columnHelper.accessor('name', {
2329
header: 'Product Name',
2430
cell: (info) => info.getValue(),

apps/client/src/components/Product/ProductDeleteForm.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ function ProductDeleteForm({ product }: ProductDeleteFormProps) {
1010
<EntityDeleteDialog
1111
entityName={product.name}
1212
entityId={product.id}
13+
image={product.image}
1314
resourceName="products"
1415
identifier="product definition"
1516
deletedItems={['Inventory items associated with this product']}

apps/client/src/components/Product/ProductEntityInfo.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ function ProductEntityInfo({ product }: ProductEntityInfoProps) {
2323

2424
return (
2525
<EntityContainer>
26-
<EntityImageColumn />
26+
<EntityImageColumn image={product.image} />
2727
<div>
2828
<HeaderWithHint hint="product definition">{product?.name}</HeaderWithHint>
2929

apps/client/src/components/Product/ProductsTable.tsx

+3-4
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ import { createColumnHelper, getCoreRowModel, useReactTable } from '@tanstack/re
22
import { useContext } from 'react';
33
import { useNavigate } from 'react-router-dom';
44
import { BasicProductDto } from 'shared-types';
5-
import placeholderImage from '../../assets/placeholder.png';
6-
import { Utils } from '../../utils';
75
import { CurrentAppContext } from '../../context/CurrentAppContext';
6+
import { Utils } from '../../utils';
87
import Table from '../Helpers/Table';
98
import TableImage from '../TableImage';
109
import ProductActions from './ProductActions';
@@ -25,9 +24,9 @@ function ProductsTable({ products }: ProductsTableProps) {
2524
cell: (info) => <div className="text-center">{info.row.index + 1}</div>,
2625
size: 0,
2726
}),
28-
columnHelper.display({
27+
columnHelper.accessor('image', {
2928
header: 'Image',
30-
cell: (info) => <TableImage src={info.getValue<string>() || placeholderImage} />,
29+
cell: (info) => <TableImage image={info.getValue()} />,
3130
size: 0,
3231
}),
3332
columnHelper.accessor('name', {

apps/client/src/components/TableImage.tsx

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
1+
import { ImageDto } from 'shared-types/dist/ImageDto';
2+
13
type ImgProps = React.DetailedHTMLProps<
24
React.ImgHTMLAttributes<HTMLImageElement>,
35
HTMLImageElement
46
>;
57

6-
export interface TableImageProps extends ImgProps {}
8+
export interface TableImageProps extends ImgProps {
9+
image: ImageDto;
10+
}
711

8-
function TableImage(props: TableImageProps) {
12+
function TableImage({ image, ...props }: TableImageProps) {
913
return (
1014
<div className="m-auto h-12 w-12 ">
1115
<img
1216
{...props}
17+
src={image.url}
1318
className="rounded-md"
1419
width={50}
1520
height={50}

0 commit comments

Comments
 (0)