Cart.vue 1.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <script setup>
  2. import { IDRCurrencyFormat } from '@/utils/currencyFormat'
  3. defineProps({
  4. title: String,
  5. headerTable: {
  6. required: true,
  7. type: Array,
  8. },
  9. value: {
  10. required: true,
  11. type: Array,
  12. },
  13. })
  14. </script>
  15. <template>
  16. <DataTable
  17. responsiveLayout="scroll"
  18. columnResizeMode="expand"
  19. :value="value"
  20. :rowHover="true"
  21. :stripedRows="true"
  22. >
  23. <template #header>
  24. <h2 class="text-2xl font-bold">{{ title }}</h2>
  25. </template>
  26. <Column
  27. v-for="value in headerTable"
  28. :field="value.field"
  29. :header="value.header"
  30. :key="value.field"
  31. >
  32. <template #body="{ data, field }">
  33. <template v-if="field === 'price'">
  34. {{ IDRCurrencyFormat(data[field]) }}
  35. </template>
  36. <template v-else-if="field === 'ppn'"> {{ data[field] }}% </template>
  37. <template v-else> {{ data[field] }} </template>
  38. </template>
  39. </Column>
  40. <Column>
  41. <template #body="{ index }">
  42. <Button
  43. icon="pi pi-trash"
  44. class="p-button-icon-only p-button-rounded p-button-text"
  45. v-tooltip.bottom="'hapus'"
  46. @click="$emit('delete', index)"
  47. />
  48. </template>
  49. </Column>
  50. </DataTable>
  51. </template>