<template>
  <div
    class="tab-pane fade"
    :id="tabID"
    role="tabpanel"
    :aria-labelledby="labelID"
  >
    <slot />
  </div>
</template>

<script lang="ts">
import { defineComponent } from "vue";

export default defineComponent({
  props: {
    title: {
      type: String,
    },
  },
  data() {
    return {
      tabID: "",
      labelID: "",
    };
  },
  beforeMount() {
    let tag = "tab-" + Math.random().toString(36).substring(2);
    this.tabID = tag;
    this.labelID = tag + "-" + "label";

    // Since Vue 3.0, we have no access to $children.
    // So we need another approach to register our child components.
    this.$parent.$data.children.push(this);
  },
});
</script>

<style lang="scss" scoped>
@import "~bootstrap/scss/bootstrap";
</style>