fix: fixed accordion

This commit is contained in:
victor
2022-12-13 18:20:44 +04:00
parent 11fe2dd903
commit 552c460efa
6 changed files with 103 additions and 82 deletions

View File

@@ -1,26 +1,30 @@
<template>
<div>
<slot></slot>
<div :data-panel-id="panelId" ref="panel">
<slot v-if="accordionId"></slot>
</div>
</template>
<script lang="ts" setup>
import { computed, inject, onBeforeMount, provide } from 'vue'
import { computed, onMounted, ref } from 'vue'
import { useAccordionState } from '@/components/Accordion/composables/useAccordionState'
import { nanoid } from 'nanoid'
const { accordionsStates } = useAccordionState()
const panelId = nanoid()
const accordionId: string = inject('accordionId') ?? ''
provide('panelId', panelId)
const accordionState = computed(() => {
return accordionsStates[accordionId]
const panelId = nanoid()
const panel = ref()
const accordionId = computed(() => {
if (panel.value) return panel.value.parentElement.dataset.accordionId
return null
})
onBeforeMount(() => {
const panelsCount = Object.keys(accordionState.value.panels).length
const accordionState = computed(() => {
return accordionsStates[accordionId.value]
})
onMounted(() => {
const panelsCount = Object.keys(accordionState?.value?.panels)?.length
accordionState.value.panels[panelId] = {
id: panelId,
order: panelsCount,