HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/buyercall/buyercall/assets/vue/widgets/EmailTemplates/components/List.vue
<template>
  <div class="table-responsive mb-0">
    <b-table
      class="datatables"
      :items="tableData"
      :fields="fields"
      responsive="sm"
      :per-page="perPage"
      :current-page="currentPage"
      :sort-by.sync="sortBy"
      :sort-desc.sync="sortDesc"
      @filtered="onFiltered"
      :bordered="true"
      thead-class="table-light"
      :hover="true"
      :striped="false"
      :busy="loadingTemplates"
      :show-empty="true"
      sticky-header
    >
      <!-- Template for loader  -->
      <template #table-busy>
        <growing-loader></growing-loader>
      </template>
      <template #cell(image)="data">
        <img :src="data.item.image" alt class="avatar-sm" />
      </template>
      <template #cell(status)="data">
        <span
          :class="{
            badge: true,
            'bg-success': data.item.isActive === true,
            'bg-danger': data.item.isActive === false,
          }"
          >{{ data.item.isActive ? 'Active' : 'Pending' }}</span
        >
      </template>
      <template #cell(dateCreated)="data">
        {{ formattedDate(data.item.dateCreated) }}
      </template>
      <template #cell(action)="data">
        <b-button
          variant="success"
          class="ms-1"
          @click="$emit('selectedId', data.item.sid)"
          style="margin-right: 10px;"
          >Edit</b-button
        >
        <b-button
          variant="danger"
          class="me-1"
          @click="$emit('onDelete', data.item.sid)"
          ><i
            class="bx bx-loader bx-spin font-size-16 align-middle me-2"
            v-if="deleteTemplateID === data.item.sid && deletingTemplateLoading"
          ></i>
          Delete</b-button
        >
      </template>
    </b-table>
  </div>
</template>
<script>
import moment from 'moment';
import GrowingLoader from '../../../components/GrowingLoader.vue';
import { BTable,BButton} from 'bootstrap-vue-next'

export default {
  props: {
    loadingTemplates: {
      type: Boolean,
      required: true,
    },
    tableData: {
      type: Array,
      required: true,
    },
    deletingTemplateLoading: {
      type: Boolean,
      required: true,
    },
    deleteTemplateID: {},
  },
  data() {
    return {
      totalRows: 1,
      currentPage: 1,
      perPage: 5,
      pageOptions: [5, 10, 25, 50, 100],
      filter: null,
      filterOn: [],
      sortBy: 'createdOn',
      sortDesc: false,
      fields: [
        'image',
        {
          key: 'title',
          sortable: true,
        },
        {
          key: 'description',
          sortable: false,
        },
        'dateCreated',
        'status',
        'action',
      ],
    };
  },
  computed: {
    rows() {
      return this.tableData.length;
    },
  },
  methods: {
    formattedDate(v) {
      return moment(new Date(v)).format('L');
    },
    onFiltered(filteredItems) {
      // Trigger pagination to update the number of buttons/pages due to filtering
      this.totalRows = filteredItems.length;
      this.currentPage = 1;
    },
  },
  components: {
    GrowingLoader,
    BTable,BButton
  },
};
</script>