Category Anchor
Descripción
Section titled “Descripción”UiCategoryAnchor es un componente de navegación por categorías que permite a los usuarios desplazarse suavemente hacia secciones específicas de la página. Cada botón representa una categoría y, al hacer clic, el componente realiza un scroll hasta el elemento correspondiente identificado por un id generado automáticamente con la función slugify. Además, actualiza la URL con el hash de la categoría para facilitar la navegación directa.
elementList
Section titled “elementList”- Tipo:
Array<string | { title: string }> - Requerido: Sí
- Descripción: Lista de elementos que representan las categorías. Cada elemento puede ser un
stringo un objeto con la propiedadtitle. - Ejemplo:
elementList: ["Matemáticas", { title: "Física" }, "Química"];Funcionalidad
Section titled “Funcionalidad”scrollToCategory(category: string)
Section titled “scrollToCategory(category: string)”-
Parámetros:
category→ el nombre de la categoría a la que se quiere desplazar. -
Descripción:
- Convierte el nombre de la categoría a un
idválido usandoslugify. - Busca el elemento en el DOM con ese
id. - Si existe, hace scroll suave hacia el inicio de ese elemento.
- Actualiza la URL con el hash correspondiente (
#categoria).
- Convierte el nombre de la categoría a un
Computed Properties
Section titled “Computed Properties”-
categories→Set<string>Extrae los nombres únicos de las categorías a partir deelementList. -
arrayCategories→string[]Convierte elSetde categorías en un array para iterar en el template.
Template
Section titled “Template”-
Renderiza un
navcon botones (button) para cada categoría. -
Cada botón:
- Tiene un evento
@clickque llama ascrollToCategory. - Incluye un
titleaccesible para lectores de pantalla. - Se genera dinámicamente a partir de
arrayCategories.
- Tiene un evento
Estilos
Section titled “Estilos”-
El contenedor
.anchor-categoriesusa un layout flexible (flex) y se adapta a dispositivos responsivos. -
Los botones
.anchor-categories__linktienen:- Borde y color principal definidos por variables CSS.
- Efecto de hover con escalado.
- Bordes redondeados y padding cómodo para interacción táctil.
<UiCategoryAnchor v-if="inspiriaCourseData?.courseList" :element-list="inspiriaCourseData?.courseList"/>Integración con secciones
Section titled “Integración con secciones”Para que el scroll funcione correctamente, cada sección destino debe tener un id generado con slugify del nombre de la categoría:
<UiSectionFeaturedCards v-for="courses in inspiriaCourseData?.courseList" :id="slugify(courses.title)" :key="courses.id" :title="courses.title" :title-strong="visibleVertical.name" :items="courses.products" :show-view-more="true"/>Accesibilidad
Section titled “Accesibilidad”- Se utiliza
aria-labelen el contenedornavpara describir la navegación por categorías. - Cada botón incluye
titlepara mejorar la accesibilidad y claridad de navegación.