From cebe3a10ac3223ec92d6c4a784611c56168bb184 Mon Sep 17 00:00:00 2001 From: egortriston Date: Sat, 12 Jul 2025 18:21:09 +0300 Subject: [PATCH] fix1207 --- public/images/resource2.png | Bin 0 -> 10543 bytes src/components/BottomHead.tsx | 142 ++++++++++++------ src/components/CatalogSubscribe.tsx | 42 +++++- src/components/Header.tsx | 2 +- .../index/BrandSelectionSection.tsx | 2 +- src/components/profile/ProfileGarageMain.tsx | 48 +++--- src/components/vin/VinQuick.tsx | 54 +++++-- src/styles/my.css | 65 +++++++- src/styles/protekproject.webflow.css | 7 +- 9 files changed, 264 insertions(+), 98 deletions(-) create mode 100644 public/images/resource2.png diff --git a/public/images/resource2.png b/public/images/resource2.png new file mode 100644 index 0000000000000000000000000000000000000000..49cfef2a0bf9d47288089164b8bc7bad1164ffce GIT binary patch literal 10543 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 literal 0 HcmV?d00001 diff --git a/src/components/BottomHead.tsx b/src/components/BottomHead.tsx index 64df85c..e24ca25 100644 --- a/src/components/BottomHead.tsx +++ b/src/components/BottomHead.tsx @@ -227,41 +227,63 @@ const BottomHead = ({ menuOpen, onClose }: { menuOpen: boolean; onClose: () => v {mobileCategory.label}
- {mobileCategory.links.map((link: string, linkIndex: number) => ( + {mobileCategory.links.length === 1 ? (
{ - // Ищем соответствующую подгруппу по названию - let subcategoryId = `${mobileCategory.catalogId}_${linkIndex}`; - + let subcategoryId = `${mobileCategory.catalogId}_0`; if (mobileCategory.groups) { for (const group of mobileCategory.groups) { - // Проверяем в подгруппах if (group.subgroups && group.subgroups.length > 0) { - const foundSubgroup = group.subgroups.find((subgroup: any) => subgroup.name === link); + const foundSubgroup = group.subgroups.find((subgroup: any) => subgroup.name === mobileCategory.links[0]); if (foundSubgroup) { subcategoryId = foundSubgroup.id; break; } - } - // Если нет подгрупп, проверяем саму группу - else if (group.name === link) { + } else if (group.name === mobileCategory.links[0]) { subcategoryId = group.id; break; } } } - - // Получаем catalogId из данных const activeCatalog = catalogsData?.partsIndexCategoriesWithGroups?.[tabData.findIndex(tab => tab === mobileCategory)]; const catalogId = activeCatalog?.id || 'fallback'; - handleCategoryClick(catalogId, link, subcategoryId); + handleCategoryClick(catalogId, mobileCategory.links[0], subcategoryId); }} + style={{ cursor: "pointer" }} > - {link} + Показать все
- ))} + ) : ( + mobileCategory.links.map((link: string, linkIndex: number) => ( +
{ + let subcategoryId = `${mobileCategory.catalogId}_${linkIndex}`; + if (mobileCategory.groups) { + for (const group of mobileCategory.groups) { + if (group.subgroups && group.subgroups.length > 0) { + const foundSubgroup = group.subgroups.find((subgroup: any) => subgroup.name === link); + if (foundSubgroup) { + subcategoryId = foundSubgroup.id; + break; + } + } else if (group.name === link) { + subcategoryId = group.id; + break; + } + } + } + const activeCatalog = catalogsData?.partsIndexCategoriesWithGroups?.[tabData.findIndex(tab => tab === mobileCategory)]; + const catalogId = activeCatalog?.id || 'fallback'; + handleCategoryClick(catalogId, link, subcategoryId); + }} + > + {link} +
+ )) + )}
) : ( @@ -443,44 +465,66 @@ const BottomHead = ({ menuOpen, onClose }: { menuOpen: boolean; onClose: () => v

{tab.heading}

- {tab.links.map((link, linkIndex) => { - const catalog = catalogsData?.partsIndexCategoriesWithGroups?.[idx]; - - // Ищем соответствующую подгруппу по названию - let subcategoryId = `fallback_${idx}_${linkIndex}`; - - if (catalog?.groups) { - for (const group of catalog.groups) { - // Проверяем в подгруппах - if (group.subgroups && group.subgroups.length > 0) { - const foundSubgroup = group.subgroups.find((subgroup: any) => subgroup.name === link); - if (foundSubgroup) { - subcategoryId = foundSubgroup.id; + {tab.links.length === 1 ? ( +
{ + const catalog = catalogsData?.partsIndexCategoriesWithGroups?.[idx]; + let subcategoryId = `fallback_${idx}_0`; + if (catalog?.groups) { + for (const group of catalog.groups) { + if (group.subgroups && group.subgroups.length > 0) { + const foundSubgroup = group.subgroups.find((subgroup: any) => subgroup.name === tab.links[0]); + if (foundSubgroup) { + subcategoryId = foundSubgroup.id; + break; + } + } else if (group.name === tab.links[0]) { + subcategoryId = group.id; + break; + } + } + } + const catalogId = catalog?.id || 'fallback'; + handleCategoryClick(catalogId, tab.links[0], subcategoryId); + }} + style={{ cursor: "pointer" }} + > + Показать все +
+ ) : ( + tab.links.map((link: string, linkIndex: number) => { + const catalog = catalogsData?.partsIndexCategoriesWithGroups?.[idx]; + let subcategoryId = `fallback_${idx}_${linkIndex}`; + if (catalog?.groups) { + for (const group of catalog.groups) { + if (group.subgroups && group.subgroups.length > 0) { + const foundSubgroup = group.subgroups.find((subgroup: any) => subgroup.name === link); + if (foundSubgroup) { + subcategoryId = foundSubgroup.id; + break; + } + } else if (group.name === link) { + subcategoryId = group.id; break; } } - // Если нет подгрупп, проверяем саму группу - else if (group.name === link) { - subcategoryId = group.id; - break; - } } - } - - return ( -
{ - const catalogId = catalog?.id || 'fallback'; - handleCategoryClick(catalogId, link, subcategoryId); - }} - style={{ cursor: "pointer" }} - > - {link} -
- ); - })} + return ( +
{ + const catalogId = catalog?.id || 'fallback'; + handleCategoryClick(catalogId, link, subcategoryId); + }} + style={{ cursor: "pointer" }} + > + {link} +
+ ); + }) + )}
diff --git a/src/components/CatalogSubscribe.tsx b/src/components/CatalogSubscribe.tsx index 6fca15a..79ad118 100644 --- a/src/components/CatalogSubscribe.tsx +++ b/src/components/CatalogSubscribe.tsx @@ -1,10 +1,16 @@ -import React from "react"; +import React, { useState } from "react"; const CatalogSubscribe: React.FC = () => (
+ Ресурс 2
-

Подпишитесь на новостную рассылку

+ {/*

Подпишитесь на новостную рассылку

*/} +
Оставайтесь в курсе акций,
новинок и специальных предложений
@@ -13,6 +19,38 @@ const CatalogSubscribe: React.FC = () => (
+
+ {/* Кастомный чекбокс без input/label */} + {(() => { + const [checked, setChecked] = useState(false); + return ( + <> +
setChecked(v => !v)} + role="checkbox" + aria-checked={checked} + tabIndex={0} + onKeyDown={e => { if (e.key === ' ' || e.key === 'Enter') setChecked(v => !v); }} + > + + + +
+ + Я даю свое согласие на обработку персональных данных
+ и соглашаюсь с условиями Политики конфиденциальности +
+ + ); + })()} +
); diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 0cc7b7c..e495215 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -385,7 +385,7 @@ const Header: React.FC = ({ onOpenAuthModal = () => console.log('Au
- + diff --git a/src/components/index/BrandSelectionSection.tsx b/src/components/index/BrandSelectionSection.tsx index 1ebf006..5ec5891 100644 --- a/src/components/index/BrandSelectionSection.tsx +++ b/src/components/index/BrandSelectionSection.tsx @@ -147,7 +147,7 @@ const BrandSelectionSection: React.FC = () => { diff --git a/src/components/profile/ProfileGarageMain.tsx b/src/components/profile/ProfileGarageMain.tsx index c3abe4d..dc015e4 100644 --- a/src/components/profile/ProfileGarageMain.tsx +++ b/src/components/profile/ProfileGarageMain.tsx @@ -247,63 +247,65 @@ const ProfileGarageMain = () => {
-
- - {/* Расширенная информация об автомобиле */} - {expandedVehicle === vehicle.id && ( -
+ {/* Расширенная информация об автомобиле — вложена внутрь карточки */} +
{vehicle.brand && (
- Бренд: - {vehicle.brand} +
Бренд
+
{vehicle.brand}
)} {vehicle.model && (
- Модель: - {vehicle.model} +
Модель
+
{vehicle.model}
)} {vehicle.modification && (
- Модификация: - {vehicle.modification} +
Модификация
+
{vehicle.modification}
)} {vehicle.year && (
- Год: - {vehicle.year} +
Год
+
{vehicle.year}
)} {vehicle.frame && (
- Номер кузова: - {vehicle.frame} +
Номер кузова
+
{vehicle.frame}
)} {vehicle.licensePlate && (
- Госномер: - {vehicle.licensePlate} +
Госномер
+
{vehicle.licensePlate}
)} {vehicle.mileage && (
- Пробег: - {vehicle.mileage.toLocaleString()} км +
Пробег
+
{vehicle.mileage.toLocaleString()} км
)}
- Добавлен: - +
Добавлен
+
{new Date(vehicle.createdAt).toLocaleDateString('ru-RU')} - +
- )} +
))} {!showAddCar && ( diff --git a/src/components/vin/VinQuick.tsx b/src/components/vin/VinQuick.tsx index a255017..26eac51 100644 --- a/src/components/vin/VinQuick.tsx +++ b/src/components/vin/VinQuick.tsx @@ -45,6 +45,8 @@ const VinQuick: React.FC = ({ quickGroup, catalogCode, vehicleId, } }; + const [shownCounts, setShownCounts] = useState<{ [unitid: string]: number }>({}); + return (
{/* */} @@ -71,16 +73,48 @@ const VinQuick: React.FC = ({ quickGroup, catalogCode, vehicleId,

{unit.name}

- - {unit.details && unit.details.length > 0 && unit.details.map((detail: any, index: number) => ( - - ))} - - { e.preventDefault(); handleUnitClick(unit); }}>Подробнее + {(() => { + const details = unit.details || []; + const total = details.length; + const shownCount = shownCounts[unit.unitid] ?? 3; + return ( + <> + {details.slice(0, shownCount).map((detail: any, index: number) => ( + + ))} + {total > 3 && shownCount < total && ( +
+ {shownCount + 3 < total && ( + + )} + +
+ )} + {shownCount >= total && ( + { e.preventDefault(); handleUnitClick(unit); }}>Подробнее + )} + + ); + })()}
)) diff --git a/src/styles/my.css b/src/styles/my.css index 9befbef..5ad1f36 100644 --- a/src/styles/my.css +++ b/src/styles/my.css @@ -30,7 +30,7 @@ } .bottom_head{ - z-index: 60; + z-index: 3000; } .top_head{ @@ -618,12 +618,48 @@ body { font-size: 28px; } +.form-block-4, +.flex-block-124, +.flex-block-6-copy +{ + overflow: visible !important; +} a.link-block.w-inline-block, a.link-block-2.w-inline-block { font-size: 12px; } +.core-product-search.carousel-scroll { + display: flex; + flex-wrap: nowrap; /* Не переносить строки */ + gap: 16px; /* Отступ между карточками, если нужно */ +} + +.subscribe{ + padding-top: 10px !important; + padding-bottom: 10px !important; + +} + +.text-block-14, .div-block-9{ + width: 350px !important; + max-width: 350px !important; + min-width: 350px !important; +} +@media screen and (max-width: 1920px) { + .text-block-14, .div-block-9{ + width: 350px !important; + } +} + + + +.flex-block-18{ + row-gap: 40px !important; +} + + .menu-button.w--open { z-index: 2000; @@ -631,10 +667,9 @@ a.link-block-2.w-inline-block { color: var(--white); justify-content: center; align-items: center; - height: 50px; - padding-top: 15px; - padding-bottom: 15px; - left: auto; + width: 50px; + height: 44px; + padding: 13px 12px; } .heading-7 { z-index: 999; @@ -671,15 +706,25 @@ a.link-block-2.w-inline-block { overflow: hidden; } +.flex-block-14-copy-copy{ + + margin-bottom: 20px !important; +} + +.showall-btn { + width: 100%; +} +.showall-btn:hover { + background: #ec1c24 !important; + color: #fff !important; +} + @media screen and (max-width: 991px) { .flex-block-108, .flex-block-14-copy-copy { flex-flow: column; justify-content: space-between; } - .flex-block-14-copy-copy{ - align-items: center; - } } @media screen and (max-width: 991px) { @@ -994,3 +1039,7 @@ a.link-block-2.w-inline-block { } } +.protekauto-logo { + position: fixed; + z-index: 3000; +} \ No newline at end of file diff --git a/src/styles/protekproject.webflow.css b/src/styles/protekproject.webflow.css index 7d87203..e0575b6 100644 --- a/src/styles/protekproject.webflow.css +++ b/src/styles/protekproject.webflow.css @@ -1008,10 +1008,9 @@ body { color: var(--white); justify-content: center; align-items: center; - height: 50px; - padding-top: 15px; - padding-bottom: 15px; - left: auto; + width: 50px; + height: 44px; + padding: 13px 12px; } .menu-button.w--open:hover { -- 2.49.0