From 4118f570fb15d361dd6389ce5741b9b2fd55cf5e Mon Sep 17 00:00:00 2001 From: lizerk Date: Tue, 18 Aug 2026 10:06:08 +0300 Subject: [PATCH] Make product stock list collapsible --- .../src/app/products/[productId]/page.tsx | 72 ++++++++++++++----- 1 file changed, 53 insertions(+), 19 deletions(-) diff --git a/frontend/src/app/products/[productId]/page.tsx b/frontend/src/app/products/[productId]/page.tsx index 4c53f4b0..dca2c65f 100644 --- a/frontend/src/app/products/[productId]/page.tsx +++ b/frontend/src/app/products/[productId]/page.tsx @@ -85,6 +85,7 @@ export default function ProductDetailPage() { const [previewImage, setPreviewImage] = useState(null); const [descriptionExpanded, setDescriptionExpanded] = useState(false); const [expandedChannelKey, setExpandedChannelKey] = useState(null); + const [stockExpanded, setStockExpanded] = useState(false); const permissions = user?.auth?.permissions_by_app?.commerce ?? []; const canManage = Boolean( user?.auth?.is_staff || @@ -357,29 +358,62 @@ export default function ProductDetailPage() {
-
- -

Остатки по источникам

-
{metrics.stock.length === 0 ? ( -

Снимков остатков пока нет.

+ <> +
+ +

Остатки по источникам

+
+

Снимков остатков пока нет.

+ ) : ( -
- {metrics.stock.map((stock) => ( -
-
-
-

{stock.warehouse_name || stock.warehouse_external_id}

-

{stock.source}

+ <> + + + {stockExpanded ? ( +
+ {metrics.stock.map((stock) => ( +
+
+
+

{stock.warehouse_name || stock.warehouse_external_id}

+

{stock.source}

+
+

{formatDecimal(stock.available, 4)} доступно

+
+

+ Всего {formatDecimal(stock.quantity, 4)} · резерв {formatDecimal(stock.reserved, 4)} · в пути {formatDecimal(stock.in_transit, 4)} +

-

{formatDecimal(stock.available, 4)} доступно

-
-

- Всего {formatDecimal(stock.quantity, 4)} · резерв {formatDecimal(stock.reserved, 4)} · в пути {formatDecimal(stock.in_transit, 4)} -

+ ))}
- ))} -
+ ) : null} + )}