/
45case
/
ptable
Обзор
Документация
Войти
/
45case
/
ptable
Код
Запросы
3
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
dev
src/shared/lib/useSelectedElement.ts
29 строк
818 B
Olya
feat: страница Электроны с блоками, орбиталями и боковой панелью
17 июл 2026, 17:38
17 июл 2026, 17:38
ef4d9c2
Код
Авторство
О чём код?
import { computed } from "vue"; import { useRoute, useRouter } from "vue-router"; import { getElementByAtomicNumber, getElementBySlug } from "@/entities/element/api/elements"; import type { PeriodicElement } from "@/entities/element/model/elements"; export function useSelectedElement() { const route = useRoute(); const router = useRouter(); const selectedElement = computed<PeriodicElement>(() => { const slug = route.query.slug; if (slug && typeof slug === "string") { return getElementBySlug(slug) ?? getElementByAtomicNumber(1)!; } return getElementByAtomicNumber(1)!; }); function selectElement(element: PeriodicElement) { router.push({ query: { ...route.query, slug: element.slug, }, }); } return { selectedElement, selectElement }; }