Skip to content

Commit b219c18

Browse files
author
issayah
committed
BAccordion script setup update
1 parent 1934585 commit b219c18

File tree

5 files changed

+56
-67
lines changed

5 files changed

+56
-67
lines changed

src/BootstrapVue.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import {createBreadcrumb} from './composables/useBreadcrumb'
77
import './styles/styles.scss'
88

99
// export available components
10-
export {default as BAccordion} from './components/BAccordion.vue'
11-
export {default as BAccordionItem} from './components/BAccordionItem.vue'
10+
export {default as BAccordion} from './components/BAccordion/BAccordion.vue'
11+
export {default as BAccordionItem} from './components/BAccordion/BAccordionItem.vue'
1212
export {default as BAlert} from './components/BAlert.vue'
1313
export {default as BAvatar} from './components/BAvatar/BAvatar.vue'
1414
export {default as BAvatarGroup} from './components/BAvatar/BAvatarGroup.vue'

src/components/BAccordion.vue

Lines changed: 0 additions & 36 deletions
This file was deleted.
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<template>
2+
<div :id="computedId" class="accordion" :class="classes">
3+
<slot />
4+
</div>
5+
</template>
6+
7+
<script setup lang="ts">
8+
// import type {BAccordionProps} from '@/types/components'
9+
import {computed, InjectionKey, provide} from 'vue'
10+
import useId from '@/composables/useId'
11+
12+
interface BAccordionProps {
13+
flush?: boolean
14+
free?: boolean
15+
id?: string
16+
}
17+
18+
const props = withDefaults(defineProps<BAccordionProps>(), {
19+
flush: false,
20+
free: false,
21+
id: undefined,
22+
})
23+
24+
const computedId = useId(props.id, 'accordion')
25+
26+
const classes = computed(() => ({
27+
'accordion-flush': props.flush,
28+
}))
29+
30+
if (!props.free) {
31+
provide(injectionKey, computedId.value.toString())
32+
}
33+
</script>
34+
35+
<script lang="ts">
36+
export const injectionKey: InjectionKey<string> = Symbol()
37+
</script>

src/components/BAccordionItem.vue renamed to src/components/BAccordion/BAccordionItem.vue

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -28,34 +28,22 @@
2828
</div>
2929
</template>
3030

31-
<script lang="ts">
32-
import {defineComponent, inject} from 'vue'
31+
<script setup lang="ts">
32+
import {inject} from 'vue'
33+
import BCollapse from '../BCollapse.vue'
34+
import vBToggle from '@/directives/BToggle'
35+
import useId from '@/composables/useId'
3336
import {injectionKey} from './BAccordion.vue'
34-
import BCollapse from './BCollapse.vue'
35-
import BToggle from '../directives/BToggle'
36-
import useId from '../composables/useId'
37+
// import type {BAccordionItemProps} from '@/types/components'
3738
38-
export default defineComponent({
39-
name: 'BAccordionItem',
40-
components: {
41-
BCollapse,
42-
},
43-
directives: {
44-
BToggle,
45-
},
46-
props: {
47-
title: {type: String},
48-
id: {type: String},
49-
visible: {type: Boolean, default: false},
50-
},
51-
setup(props) {
52-
const computedId = useId(props.id, 'accordion_item')
53-
const parent = inject(injectionKey, '')
39+
interface BAccordionItemProps {
40+
id: string
41+
title: string
42+
visible?: boolean
43+
}
5444
55-
return {
56-
parent,
57-
computedId,
58-
}
59-
},
60-
})
45+
const props = withDefaults(defineProps<BAccordionItemProps>(), {visible: false})
46+
47+
const computedId = useId(props.id, 'accordion_item')
48+
const parent = inject(injectionKey, '')
6149
</script>

src/components/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import BAccordion from './BAccordion.vue'
2-
import BAccordionItem from './BAccordionItem.vue'
1+
import BAccordion from './BAccordion/BAccordion.vue'
2+
import BAccordionItem from './BAccordion/BAccordionItem.vue'
33
import BAlert from './BAlert.vue'
44
import BAvatar from './BAvatar/BAvatar.vue'
55
import BAvatarGroup from './BAvatar/BAvatarGroup.vue'

0 commit comments

Comments
 (0)