File tree Expand file tree Collapse file tree 6 files changed +101
-0
lines changed
ui/components/FaCollapsible Expand file tree Collapse file tree 6 files changed +101
-0
lines changed Original file line number Diff line number Diff line change @@ -16,6 +16,7 @@ declare module 'vue' {
1616 FaButtonGroup : typeof import ( './../ui/components/FaButtonGroup/index.vue' ) [ 'default' ]
1717 FaCard : typeof import ( './../ui/components/FaCard/index.vue' ) [ 'default' ]
1818 FaCheckbox : typeof import ( './../ui/components/FaCheckbox/index.vue' ) [ 'default' ]
19+ FaCollapsible : typeof import ( './../ui/components/FaCollapsible/index.vue' ) [ 'default' ]
1920 FaContextMenu : typeof import ( './../ui/components/FaContextMenu/index.vue' ) [ 'default' ]
2021 FaCopyright : typeof import ( './../ui/components/FaCopyright/index.vue' ) [ 'default' ]
2122 FaDivider : typeof import ( './../ui/components/FaDivider/index.vue' ) [ 'default' ]
Original file line number Diff line number Diff line change 1+ <script setup lang="ts">
2+ import type { CollapsibleRootEmits , CollapsibleRootProps } from ' reka-ui'
3+ import { CollapsibleRoot , useForwardPropsEmits } from ' reka-ui'
4+
5+ const props = defineProps <CollapsibleRootProps >()
6+ const emits = defineEmits <CollapsibleRootEmits >()
7+
8+ const forwarded = useForwardPropsEmits (props , emits )
9+ </script >
10+
11+ <template >
12+ <CollapsibleRoot v-slot =" { open }" v-bind =" forwarded" >
13+ <slot :open =" open" />
14+ </CollapsibleRoot >
15+ </template >
Original file line number Diff line number Diff line change 1+ <script setup lang="ts">
2+ import type { CollapsibleContentProps } from ' reka-ui'
3+ import { CollapsibleContent } from ' reka-ui'
4+
5+ const props = defineProps <CollapsibleContentProps >()
6+ </script >
7+
8+ <template >
9+ <CollapsibleContent v-bind =" props" class =" CollapsibleContent" >
10+ <slot />
11+ </CollapsibleContent >
12+ </template >
13+
14+ <style scoped>
15+ .CollapsibleContent {
16+ overflow : hidden ;
17+ }
18+
19+ .CollapsibleContent [data-state = " open" ] {
20+ animation : collapsible-down 300ms ease-out ;
21+ }
22+
23+ .CollapsibleContent [data-state = " closed" ] {
24+ animation : collapsible-up 300ms ease-out ;
25+ }
26+
27+ @keyframes collapsible-down {
28+ from {
29+ height : 0 ;
30+ }
31+
32+ to {
33+ height : var (--reka-collapsible-content-height );
34+ }
35+ }
36+
37+ @keyframes collapsible-up {
38+ from {
39+ height : var (--reka-collapsible-content-height );
40+ }
41+
42+ to {
43+ height : 0 ;
44+ }
45+ }
46+ </style >
Original file line number Diff line number Diff line change 1+ <script setup lang="ts">
2+ import type { CollapsibleTriggerProps } from ' reka-ui'
3+ import { CollapsibleTrigger } from ' reka-ui'
4+
5+ const props = defineProps <CollapsibleTriggerProps >()
6+ </script >
7+
8+ <template >
9+ <CollapsibleTrigger v-bind =" props" >
10+ <slot />
11+ </CollapsibleTrigger >
12+ </template >
Original file line number Diff line number Diff line change 1+ export { default as Collapsible } from './Collapsible.vue'
2+ export { default as CollapsibleContent } from './CollapsibleContent.vue'
3+ export { default as CollapsibleTrigger } from './CollapsibleTrigger.vue'
Original file line number Diff line number Diff line change 1+ <script setup lang="ts">
2+ import { Collapsible , CollapsibleContent , CollapsibleTrigger } from ' ./collapsible'
3+
4+ defineOptions ({
5+ name: ' FaCollapsible' ,
6+ })
7+
8+ const open = defineModel <boolean >(' modelValue' , {
9+ default: false ,
10+ })
11+
12+ const slots = useSlots ()
13+ </script >
14+
15+ <template >
16+ <Collapsible v-model:open =" open" >
17+ <CollapsibleTrigger v-if =" !!slots.trigger" >
18+ <slot name =" trigger" :open />
19+ </CollapsibleTrigger >
20+ <CollapsibleContent >
21+ <slot />
22+ </CollapsibleContent >
23+ </Collapsible >
24+ </template >
You can’t perform that action at this time.
0 commit comments