From 1d7253f9a1917a77564ab2c6d9c2a4ae79334ac5 Mon Sep 17 00:00:00 2001 From: Antony Kurniawan Date: Fri, 19 Dec 2025 12:43:19 +0700 Subject: [PATCH] repair: sparepart select brand-device --- .../component/CustomSparepartCard.jsx | 261 +++++------------- .../brandDevice/component/SparepartSelect.jsx | 30 +- 2 files changed, 85 insertions(+), 206 deletions(-) diff --git a/src/pages/master/brandDevice/component/CustomSparepartCard.jsx b/src/pages/master/brandDevice/component/CustomSparepartCard.jsx index 1dea0a5..60fd55e 100644 --- a/src/pages/master/brandDevice/component/CustomSparepartCard.jsx +++ b/src/pages/master/brandDevice/component/CustomSparepartCard.jsx @@ -46,6 +46,11 @@ const CustomSparepartCard = ({ } }; + const truncateText = (text, maxLength = 15) => { + if (!text) return 'Unnamed'; + return text.length > maxLength ? `${text.substring(0, maxLength)}...` : text; + }; + const handleCardClick = () => { if (!isReadOnly && onCardClick) { onCardClick(sparepart); @@ -125,210 +130,88 @@ const CustomSparepartCard = ({ return ( <> - -
- -
- {sparepart.sparepart_item_type && ( - - {sparepart.sparepart_item_type} - - )} -
+
+ - {sparepart.sparepart_name { - e.target.src = 'https://via.placeholder.com/75'; - }} - /> -
- - - {isSelected && ( -
- -
- )} + {truncateText(sparepart.sparepart_name || sparepart.name || 'Unnamed')} + + + {sparepart.sparepart_stok || 'Not Available'} +
- -
-
- + <div style={{ display: 'flex', alignItems: 'center' }}> + <Text style={{ fontSize: '12px', color: '#666', marginRight: '4px' }}> + qty: + </Text> + <Text style={{ - margin: `0 0 ${size === 'small' ? '6px' : '8px'} 0`, - fontSize: size === 'small' ? '12px' : '14px', + fontSize: '12px', fontWeight: 600, - lineHeight: '1.4', - overflow: 'hidden', - textOverflow: 'ellipsis', - display: '-webkit-box', - WebkitLineClamp: size === 'small' ? 2 : 3, - WebkitBoxOrient: 'vertical' + color: '#262626' }} > - {sparepart.sparepart_name || sparepart.name || 'Unnamed'} - - - -
- -
- - {sparepart.sparepart_stok || 'Not Available'} - -
- - -
- - qty: - - 0 ? '#52c41a' : '#ff4d4f', - fontWeight: 600 - }} - > - {sparepart.sparepart_qty || 0} - {sparepart.sparepart_unit ? ` ${sparepart.sparepart_unit}` : ''} - -
-
- -
- - {sparepart.sparepart_code || 'No code'} - -
- - {(sparepart.sparepart_merk || sparepart.sparepart_model) && ( -
- {sparepart.sparepart_merk && ( -
Brand: {sparepart.sparepart_merk}
- )} - {sparepart.sparepart_model && ( -
Model: {sparepart.sparepart_model}
- )} -
- )} + {sparepart.sparepart_qty || 0} +
- - - {sparepart.updated_at && dayjs(sparepart.updated_at).format('DD MMM YYYY')} -
- + + + {showPreview && ( +
sp.sparepart_id === sparepart.sparepart_id); return ( - - handleSparepartSelect(sparepart.sparepart_id) : undefined} - onDelete={() => handleRemoveSparepart(sparepart.sparepart_id)} - style={{ - border: isAlreadySelected ? '2px solid #52c41a' : undefined, - }} - /> - + handleSparepartSelect(sparepart.sparepart_id) : undefined} + onDelete={() => handleRemoveSparepart(sparepart.sparepart_id)} + /> ); }; @@ -163,9 +159,9 @@ const SparepartSelect = ({ Selected Spareparts ({selectedSpareparts.length}) - +
{selectedSpareparts.map(sparepart => renderSparepartCard(sparepart, true))} - +
) : (