Skip to content

Commit 91d4b94

Browse files
committed
feat: collapse vue component
1 parent f14b68c commit 91d4b94

File tree

3 files changed

+48
-0
lines changed

3 files changed

+48
-0
lines changed

packages/common-enums/src/components.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,5 @@ export const componentNames = [
4646
"Dropdown",
4747
"Table",
4848
"Slider",
49+
"Collapse",
4950
] as const;
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<template>
2+
<nav class="list">
3+
<BaseInput v-if="title" v-slot="{ id }" type="checkbox" :checked="checked" :theme="theme">
4+
<label :for="id" class="toggle--list" :class="`--txtColor-${themeValues[0]}`">
5+
<span>{{ title }}</span>
6+
<IconFa name="angle-down" size="20" />
7+
</label>
8+
</BaseInput>
9+
<component :is="el || 'ul'" class="list-group">
10+
<slot></slot>
11+
</component>
12+
</nav>
13+
</template>
14+
<script setup lang="ts">
15+
import {
16+
type Component as VueComponent,
17+
type DefineComponent,
18+
type FunctionalComponent,
19+
} from "vue";
20+
21+
import BaseInput from "./base/Input.vue";
22+
import IconFa from "./icon/Fa.vue";
23+
24+
import type { iUseThemeProps } from "../types/props";
25+
import useTheme from "../composables/theme";
26+
27+
interface Collapse extends iUseThemeProps {
28+
title?: string;
29+
checked?: boolean;
30+
el?: VueComponent | FunctionalComponent | DefineComponent | string;
31+
}
32+
33+
/**
34+
* Collapse component
35+
*
36+
* Collapses contents leaving only the given title behind
37+
*
38+
* @component
39+
*/
40+
41+
defineOptions({ name: "CollapseSimple", inheritAttrs: false });
42+
43+
const props = defineProps<Collapse>();
44+
45+
const { themeValues } = useTheme(props);
46+
</script>

packages/components-vue/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export { default as Modal } from "./components/Modal.vue";
5252
export { default as Dropdown } from "./components/Dropdown.vue";
5353
export { default as Table } from "./components/Table.vue";
5454
export { default as Slider } from "./components/Slider.vue";
55+
export { default as Collapse } from "./components/Collapse.vue";
5556

5657
// composables
5758
export { default as useTheme } from "./composables/theme";

0 commit comments

Comments
 (0)