v2 first commit
This commit is contained in:
91
resources/assets/js/components/Collapse/CollapseItem.vue
Normal file
91
resources/assets/js/components/Collapse/CollapseItem.vue
Normal file
@ -0,0 +1,91 @@
|
||||
<template>
|
||||
<div class="card">
|
||||
<div role="tab" class="card-header" :aria-expanded="active">
|
||||
<a
|
||||
data-toggle="collapse"
|
||||
data-parent="#accordion"
|
||||
:href="`#${itemId}`"
|
||||
@click.prevent="activate"
|
||||
:aria-controls="`content-${itemId}`"
|
||||
>
|
||||
<slot name="title"> {{ title }} </slot>
|
||||
<i class="tim-icons icon-minimal-down"></i>
|
||||
</a>
|
||||
</div>
|
||||
<collapse-transition :duration="animationDuration">
|
||||
<div
|
||||
v-show="active"
|
||||
:id="`content-${itemId}`"
|
||||
role="tabpanel"
|
||||
:aria-labelledby="title"
|
||||
class="collapsed"
|
||||
>
|
||||
<div class="card-body"><slot></slot></div>
|
||||
</div>
|
||||
</collapse-transition>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { CollapseTransition } from 'vue2-transitions';
|
||||
|
||||
export default {
|
||||
name: 'collapse-item',
|
||||
components: {
|
||||
CollapseTransition
|
||||
},
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
default: '',
|
||||
description: 'Collapse item title'
|
||||
},
|
||||
id: String
|
||||
},
|
||||
inject: {
|
||||
animationDuration: {
|
||||
default: 250
|
||||
},
|
||||
multipleActive: {
|
||||
default: false
|
||||
},
|
||||
addItem: {
|
||||
default: () => {}
|
||||
},
|
||||
removeItem: {
|
||||
default: () => {}
|
||||
},
|
||||
deactivateAll: {
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
itemId() {
|
||||
return this.id || this.title;
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
active: false
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
activate() {
|
||||
let wasActive = this.active;
|
||||
if (!this.multipleActive) {
|
||||
this.deactivateAll();
|
||||
}
|
||||
this.active = !wasActive;
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.addItem(this);
|
||||
},
|
||||
destroyed() {
|
||||
if (this.$el && this.$el.parentNode) {
|
||||
this.$el.parentNode.removeChild(this.$el);
|
||||
}
|
||||
this.removeItem(this);
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style></style>
|
Reference in New Issue
Block a user