From 890dcc7ab4c29b4f72efeef81da8d83458c8bcab Mon Sep 17 00:00:00 2001
From: Jens Christian Aanestad <jenscaa@stud.ntnu.no>
Date: Mon, 29 Apr 2024 13:38:25 +0200
Subject: [PATCH] feat/Created new import budget modal upon importing a budget

---
 .../Budget/Modal/ImportBudgetModal.vue        | 58 +++++++++++++++++++
 1 file changed, 58 insertions(+)
 create mode 100644 src/components/Budget/Modal/ImportBudgetModal.vue

diff --git a/src/components/Budget/Modal/ImportBudgetModal.vue b/src/components/Budget/Modal/ImportBudgetModal.vue
new file mode 100644
index 0000000..47ab56b
--- /dev/null
+++ b/src/components/Budget/Modal/ImportBudgetModal.vue
@@ -0,0 +1,58 @@
+<script setup lang="ts">
+import type { BudgetResponseDTO } from '@/api'
+import MiniBudgetBox from '@/components/Budget/Modal/MiniBudgetBox.vue'
+
+const emit = defineEmits(['importBudgetEvent'])
+const props = defineProps({
+  modalId: {
+    type: String,
+    required: true
+  },
+  listOfBudgetResponseDTO: {
+    type: Array as () => BudgetResponseDTO[],
+    default: () => []
+  }
+})
+
+/**
+ * Emits an importBudgetEvent to the parent in order to signalize that
+ * a budget with id has been imported.
+ *
+ * @param budgetId The id of the imported budget.
+ */
+const emitImportBudgetEvent = (budgetId: number) => {
+  emit('importBudgetEvent', budgetId)
+}
+</script>
+
+<template>
+  <div class="modal fade" :id="modalId">
+    <div class="modal-dialog modal-dialog-centered modal-lg">
+      <div class="modal-content">
+        <div class="modal-header">
+          <h3>Choose a budget you would like to import</h3>
+          <button class="btn btn-close" data-bs-dismiss="modal"></button>
+        </div>
+        <div class="modal-body">
+          <MiniBudgetBox v-for="(item, index) in listOfBudgetResponseDTO"
+                         :key="index"
+                         :budget-id="Number(item.id) || 0"
+                         :budget-title="item.budgetName"
+                         :budget-amount="Number(item.budgetAmount)"
+                         :expense-amount="Number(item.expenseAmount)"
+                         @importBudgetEvent="emitImportBudgetEvent"
+          >
+          </MiniBudgetBox>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<style scoped>
+
+div.modal-body {
+  padding-left: 0;
+}
+
+</style>
\ No newline at end of file
-- 
GitLab