From fdcf3a07c0b4fef307c6ffc976c620a2d084f034 Mon Sep 17 00:00:00 2001 From: StepanovPlaton Date: Sat, 14 Feb 2026 01:21:29 +0400 Subject: [PATCH] Fix --- src/components/data/projectCard.astro | 57 ++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/src/components/data/projectCard.astro b/src/components/data/projectCard.astro index 66276e0..f0c6859 100644 --- a/src/components/data/projectCard.astro +++ b/src/components/data/projectCard.astro @@ -22,6 +22,7 @@ export interface Props { size?: "small" | "medium" | "large"; showImage?: boolean; maxTechStack?: number; + maxTags?: number; } const { @@ -29,6 +30,7 @@ const { size = "medium", showImage = true, maxTechStack = 4, + maxTags = 3, } = Astro.props; // 状态样式映射 @@ -163,12 +165,32 @@ const sizeClasses = getSizeClasses(size); )} {project.tags && project.tags.length > 0 && ( -
- {project.tags.map((tag) => ( +
+ {project.tags.slice(0, maxTags).map((tag) => ( #{tag} ))} + {project.tags.length > maxTags && ( + <> + {project.tags.slice(maxTags).map((tag) => ( + + #{tag} + + ))} + + + )}
)} @@ -229,5 +251,36 @@ const sizeClasses = getSizeClasses(size); } }); }); + + // Раскрытие списка тегов при клике на "+" + const tagsToggleButtons = document.querySelectorAll('[data-tags-toggle]'); + + tagsToggleButtons.forEach(button => { + button.addEventListener('click', (e) => { + const container = button.closest('[data-tags-container]'); + const hiddenElements = container?.querySelectorAll('[data-tag-hidden]'); + const hiddenCount = parseInt(button.getAttribute('data-hidden-count') || '0'); + + if (hiddenElements && hiddenElements.length > 0) { + const isExpanded = !hiddenElements[0].classList.contains('hidden'); + + if (isExpanded) { + // Сворачиваем: скрываем все скрытые элементы + hiddenElements.forEach(el => { + el.classList.add('hidden'); + }); + button.textContent = `+${hiddenCount}`; + button.setAttribute('aria-expanded', 'false'); + } else { + // Раскрываем: показываем все скрытые элементы + hiddenElements.forEach(el => { + el.classList.remove('hidden'); + }); + button.textContent = '−'; + button.setAttribute('aria-expanded', 'true'); + } + } + }); + }); });