diff --git a/package-lock.json b/package-lock.json
index 48f47d2a68c7625508106ca651eeac7650da8e24..6ab5819ad4921d0e9ded6be35466dfb3c1dd23c9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15,7 +15,8 @@
         "jquery": "^3.6.0",
         "vue": "^3.0.0",
         "vue-router": "^4.0.12",
-        "vue-select": "^4.0.0-beta.3"
+        "vue-select": "^4.0.0-beta.3",
+        "vue3-click-away": "^1.2.4"
       },
       "devDependencies": {
         "@vue/cli-plugin-babel": "~4.5.0",
@@ -14050,6 +14051,11 @@
       "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
       "dev": true
     },
+    "node_modules/vue3-click-away": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/vue3-click-away/-/vue3-click-away-1.2.4.tgz",
+      "integrity": "sha512-O9Z2KlvIhJT8OxaFy04eiZE9rc1Mk/bp+70dLok68ko3Kr8AW5dU+j8avSk4GDQu94FllSr4m5ul4BpzlKOw1A=="
+    },
     "node_modules/watchpack": {
       "version": "1.7.5",
       "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-1.7.5.tgz",
@@ -26646,6 +26652,11 @@
       "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
       "dev": true
     },
+    "vue3-click-away": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/vue3-click-away/-/vue3-click-away-1.2.4.tgz",
+      "integrity": "sha512-O9Z2KlvIhJT8OxaFy04eiZE9rc1Mk/bp+70dLok68ko3Kr8AW5dU+j8avSk4GDQu94FllSr4m5ul4BpzlKOw1A=="
+    },
     "watchpack": {
       "version": "1.7.5",
       "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-1.7.5.tgz",
diff --git a/package.json b/package.json
index 997dd32021d8e81eb96b522b3de7b263fbd17f2d..64277b37aad127db8078cf44410d0302be922e99 100644
--- a/package.json
+++ b/package.json
@@ -15,7 +15,8 @@
     "jquery": "^3.6.0",
     "vue": "^3.0.0",
     "vue-router": "^4.0.12",
-    "vue-select": "^4.0.0-beta.3"
+    "vue-select": "^4.0.0-beta.3",
+    "vue3-click-away": "^1.2.4"
   },
   "devDependencies": {
     "@vue/cli-plugin-babel": "~4.5.0",
diff --git a/src/components/dropdown.vue b/src/components/dropdown.vue
new file mode 100644
index 0000000000000000000000000000000000000000..814abf6eacb9711a1149c6f46f01ef50359d456f
--- /dev/null
+++ b/src/components/dropdown.vue
@@ -0,0 +1,114 @@
+<template>
+  <div class="relative">
+    <div id="start-button">
+      <button
+          href="#"
+          class="ms-1"
+          style="border: none; background-color:transparent"
+          @click="toggleVisibility"
+
+        >
+        <slot name="start-button-item"> Start-button-content</slot>
+      </button>
+    </div>
+    <Transition name="fade">
+      <div class="item-container">
+        <ul v-if="isVisible" class="item-parent" :style="topMargin">
+          <li class="item" style="margin-right:var(--right-margin)">
+            <slot name="item-1"></slot>
+          </li>
+          <li class="item" style="margin-right:var(--left-margin)">
+            <slot name="item-2"></slot>
+          </li>
+        </ul>
+      </div>
+      
+    </Transition>
+  </div>
+</template>
+
+<script>
+//import { mixin as VueClickAway } from "vue3-click-away";
+
+export default{
+  //mixins: [VueClickAway],
+  props:['type'],
+  data(){
+    return{
+        isVisible: false,
+        top: 0,
+        right: 0,
+        left: 0,
+        // bgColor: 'transparent',
+    }
+  }, 
+  methods: {
+    toggleVisibility(){
+      this.isVisible = !this.isVisible
+    },
+    hideDropdown(){
+      this.isVisible = false
+    },
+    defineCSS(){
+      if (this.type === "dropdownUser"){
+        this.top = 2.08;
+        this.right = 7.5;
+        // this.bgColor = "white";
+      }
+      else if (this.type === "addUser"){
+        this.top = 10.25;
+        this.right = 3;
+        this.left = -4.5;
+      }
+    }
+  },
+  computed: {
+    topMargin(){
+      this.defineCSS();
+      return{
+        '--top-margin': (this.top) + "rem",
+        '--right-margin': (this.right) + "em",
+        '--left-margin': (this.left) + "em"
+        // '--bg-color': (this.bgColor)
+      }
+    }
+  }
+}
+</script>
+
+
+<style scoped>
+  .fade-enter-active,
+  .fade-leave-active {
+    transition: all 0.1s ease-in-out;
+  }
+
+  .fade-enter-from,
+  .fade-leave-to {
+    opacity: 0;
+    transform: translateX(12px);
+  }
+  .item-parent {
+    position: absolute;
+    display: flex;
+    flex-direction: row-reverse;
+    flex-wrap: nowrap;
+    justify-content: space-between;
+    align-items: baseline;
+    top: var(--top-margin);
+    /* border: 1px;
+    border-color: black; */
+    
+  }
+  .item {
+    position: absolute;
+    list-style:none;
+    width: 150px;
+    /* background-color: var(--bg-color); */
+  }
+  /* .item-container {
+    display: flex;
+    border-color: black;
+    border-style: solid;
+  } */
+</style>
\ No newline at end of file
diff --git a/src/components/header.vue b/src/components/header.vue
index b97c460eee5cb115d2150a5fc01b9dc0aefc3b76..4a94102e9a34d2485e8bc57798064b84152068d7 100644
--- a/src/components/header.vue
+++ b/src/components/header.vue
@@ -3,6 +3,8 @@
     <div class="container-fluid"  >
       <div class="row justify-content-between">
         <div class="col align-self-center">
+          <button hidden="hidden" id="toggleSidebar" data-bs-target="#sidebar"
+            data-bs-toggle="collapse"> </button>
           <button
             @click="onclick"
             v-if="nav_active"
@@ -28,15 +30,28 @@
         <div class="col">
           <div
             class="d-flex flex-row-reverse justify-content-start align-items-center illustration"
-          >
-            <button @click="showModal()" class="profile-btn">
-              <i
-                class="icon ion-ios-person-outline text-red"
-                style="font-size: 65px"
+          > 
+            <Dropdown type="dropdownUser">
+              <template v-slot:start-button-item>
+                <i @click="onDisplayName"
+                  class="icon ion-ios-person-outline text-red"
+                  style="font-size: 65px"
               ></i>
-            </button>
-            <!-- <Name :name="this.name"/> -->
-            <h2 class="text-red" style="text-align: right">Hello, {{name}}</h2>
+              </template>
+              <template v-slot:item-1>
+                <button class="btn-blue" @click="toProfile">
+                  <svg fill="white" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path class="heroicon-ui" d="M12 12a5 5 0 1 1 0-10 5 5 0 0 1 0 10zm0-2a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm9 11a1 1 0 0 1-2 0v-2a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3v2a1 1 0 0 1-2 0v-2a5 5 0 0 1 5-5h8a5 5 0 0 1 5 5v2z"></path></svg>
+                  <span class="ms-1" style="color: white; weight: lighter">Profil</span>
+                </button>
+              </template>
+              <template v-slot:item-2>
+                <button class="btn-red" @click="toLogout">
+                  <svg fill="white" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"></path><path d="M10.09 15.59L11.5 17l5-5-5-5-1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v-4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"></path></svg>
+                  <span class="ms-1" style="color: white; weight: lighter">Keluar</span>
+                </button>
+              </template>
+            </Dropdown>
+            <Name v-if="isNameDisplayed" :value="this.name"></Name>
           </div>
         </div>
       </div>
@@ -44,37 +59,28 @@
 
     <hr style="border: 1px solid red" />
   </div>
-  <Modal class="profile-modal"
-    v-show="isModalVisible"
-		@close="closeModal"
-  >
-    <template v-slot:header>Menu Pilihan</template>
-    <template v-slot:body>
-      <!-- warna biru, link ke halaman profil -->
-      <button class="btn-blue mb-2 ms-2" @click="toProfile">Lihat Profil</button>
-      <!-- warna merah -->
-      <button class="btn-red ms-4" @click="toLogout">Keluar</button>
-    </template>
-  
-  </Modal>
 </template>
 
 <script>
-import Modal from "../components/modal";
+import Dropdown from "../components/dropdown";
+import Name from "../components/name"
 import { HTTP } from '../http-common'
 
 export default {
   name: "Header",
   components: {
-    Modal
+    Dropdown,
+    Name
   },
   data() {
     return {
-      nav_active: true,
+      nav_active: JSON.parse(localStorage.getItem('navActive')),
       isModalVisible: false,
       profile_employee:[],
       profile_admin:[],
+      isNameDisplayed: true,
       name:"",
+      helloName:"",
       id: null,
       user_id: null,
       is_admin: false,
@@ -84,13 +90,11 @@ export default {
     onclick() {
       this.nav_active = !this.nav_active
       document.getElementById("toggleNav").click()
+      localStorage.setItem("navActive", this.nav_active)
+    },
+    onDisplayName(){
+      this.isNameDisplayed = !this.isNameDisplayed;
     },
-    showModal(){
-			this.isModalVisible = true;
-		},
-    closeModal(){
-			this.isModalVisible = false;
-		},
     toProfile(){
       if (this.is_admin){
         this.$router.push({ name: "profil-admin", params: { id: this.id }});
@@ -102,11 +106,7 @@ export default {
     toLogout(e){
       e.preventDefault();
       console.log("logout")
-      this.$router.push('login')
-      // var a = localStorage.getItem("token");
-      // console.log(a)
-      // var b = localStorage.removeItem("token");
-      // console.log(b)
+      this.$router.push({ path: '/login' })
       localStorage.removeItem("token");
       console.log('token removed')
       window.location.reload()
@@ -126,10 +126,14 @@ export default {
             this.user_id = this.profile_employee.user_id
           }
       }})
+      // console.log(this.isNameDisplayed)
     },
   },
   mounted(){
     this.getProfile();
+    if (!this.nav_active){
+      document.getElementById("toggleSidebar").click()
+    }
   },
 };
 </script>
@@ -155,24 +159,13 @@ export default {
 .logo{
   width: 100px;
 }
-.profile-btn{
-  text-decoration: none;
-  border: none;
-  background-color: transparent;
-}
-/* butuh buat akses class di dalem class modal */
-.profile-modal{
-  width: 20em;
-  height: 35em;
-  /* transform: translate(150%, -80%); */
-}
 
 .btn-red {
-  background: #f4476b;
-  border-radius: 15px;
-  color: white;
-  border: none;
-  padding: 4% 15% 4% 15%;
+background: #f4476b;
+border-radius: 15px;
+color: white;
+border: none;
+padding: 2% 13% 2% 10%;
 }
 
 .btn-blue {
@@ -180,7 +173,7 @@ export default {
   border-radius: 15px;
   color: white;
   border: none;
-  padding: 4% 15% 4% 15%;
+  padding: 2% 13% 2% 10%;
 }
 
 </style>
diff --git a/src/components/name.vue b/src/components/name.vue
index 018d6746694830a4c4f7f1fa811bef344154ee05..be2315632ff3171e8927d53718c36d0582835d5a 100644
--- a/src/components/name.vue
+++ b/src/components/name.vue
@@ -1,11 +1,11 @@
 <template>
-    <h2 class="text-red" style="text-align: right">Hello, {{name}}</h2>
+    <h2 class="text-red" style="text-align: right">Hello, {{value}}</h2>
 </template>
 
 <script>
 
 export default {
     name: "Name",
-    props:{name: String},
+    props:{value: String},
 };
 </script>
\ No newline at end of file
diff --git a/src/components/sidebar.vue b/src/components/sidebar.vue
index db93e776a59205349f6fd18d48dcc459eb369881..abc506db42a1d2ae8ed5de0c4681bf11f082f655 100644
--- a/src/components/sidebar.vue
+++ b/src/components/sidebar.vue
@@ -90,15 +90,11 @@ export default {
         "KPI Bawahan": "ManagerkpiIndex",
         Bawahan: "ManagerkaryawanIndex",
       },
-      isActive: true,
       isAdmin: false,
       isEmp: false,
     };
   },
   methods: {
-    setActive() {
-      this.isActive = !this.isActive;
-    },
     checkAdmin(){
       HTTP.get("users/profile").then((res)=>{
         this.isAdmin = res.data.data.is_admin
@@ -110,7 +106,7 @@ export default {
   },
   created(){
     this.checkAdmin()
-  }
+  },
 };
 </script>
 
@@ -136,7 +132,7 @@ export default {
   position: fixed;
   margin-left: -300px;
   background-color: #f1f7fc;
-  transition: 0.4s;
+  /* transition: 0.4s; */
 }
 
 .nav-link {
@@ -165,13 +161,13 @@ export default {
 .active_cont {
   margin-left: 250px;
   visibility: hidden;
-  transition: 0.4s;
+  /* transition: 0.4s; */
 }
 
 .btn {
   background-color: #6992b4;
   color: #f1f7fc;
-  transition: 0.4s;
+  /* transition: 0.4s; */
   align-content: left;
 }
 
diff --git a/src/components/table-response.vue b/src/components/table-response.vue
index 9d0b8322124fa2c89ebd9f3f250efc7e767bd122..329b6039a82f6399aa552923d45edd55591d68ae 100644
--- a/src/components/table-response.vue
+++ b/src/components/table-response.vue
@@ -34,7 +34,7 @@
                 </td>
               </template>
               <td v-if="c.name=='Bukti'" >
-                  <a :href="e[c.data][0].image">link</a>
+                  <a :href="e[c.data][0].image">{{e[c.data][0].name}}</a>
               </td>
             </template>
 
diff --git a/src/router/index.js b/src/router/index.js
index 832bff200f952167d6b061554df04aca263c582c..ded9c880ce6dfef1278adb81b6d6d14bf9b07fb9 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -1,4 +1,4 @@
-import { createRouter, createWebHistory } from "vue-router";
+import { createRouter, createWebHashHistory } from "vue-router";
 //import Home from "../views/Home.vue";
 import ProfilUser from "../views/ProfilUser.vue";
 import ProfilAdmin from "../views/ProfilAdmin.vue";
@@ -158,7 +158,8 @@ const routes = [
 ];
 
 const router = createRouter({
-  history: createWebHistory(process.env.BASE_URL),
+  // history: createWebHistory(process.env.BASE_URL),
+  history: createWebHashHistory(),
   routes,
 });
 
diff --git a/src/views/AdminEdit.vue b/src/views/AdminEdit.vue
index f580e370318edf1ae952fda9a8f911569af37406..b3bdf87b382c2c79a5676804a5c2fc5bbcbfffe2 100644
--- a/src/views/AdminEdit.vue
+++ b/src/views/AdminEdit.vue
@@ -69,7 +69,7 @@ export default {
             username: "",
             email: "",
             password: "",
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
         }
     },
     methods: {
diff --git a/src/views/AdminIndex.vue b/src/views/AdminIndex.vue
index 7362cadd9f5f6e305b66b705fd503f8f1d9d9646..5244b9735ab3677ed49c8ee0449d5591450b5adb 100644
--- a/src/views/AdminIndex.vue
+++ b/src/views/AdminIndex.vue
@@ -100,7 +100,7 @@ export default {
 
       },
       filter: "",
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
     };
   },
   methods: {
diff --git a/src/views/AdminInsert.vue b/src/views/AdminInsert.vue
index 98c5a1b0d211cb936761cdc8277bcfd8a70c817d..1719eb392e4d2459a6541b9f850fa576b5fc216f 100644
--- a/src/views/AdminInsert.vue
+++ b/src/views/AdminInsert.vue
@@ -69,7 +69,7 @@ export default {
             username: "",
             email: "",
             password: "",
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
         }
     },
     methods: {
diff --git a/src/views/ChangePass.vue b/src/views/ChangePass.vue
index 3507d5fd03635fc362128a9c150b8f69ced613e8..f7db0dae52709611ab53e15c998958e5595e2d33 100644
--- a/src/views/ChangePass.vue
+++ b/src/views/ChangePass.vue
@@ -48,7 +48,7 @@ export default {
             current_password: "",
             new_password:"",
             new_password_confirmation:"",
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
         }
     },
     methods: {
diff --git a/src/views/DepartemenIndex.vue b/src/views/DepartemenIndex.vue
index 8442c4bc9f497359dc583178c8af2e1b02442c36..7de2dad62d9ff95f83932a7b3c23414bc6f045dc 100644
--- a/src/views/DepartemenIndex.vue
+++ b/src/views/DepartemenIndex.vue
@@ -59,14 +59,9 @@
 			v-show="isModalVisible"
 			@close="closeModal"
 		>
-
-      <!-- <div v-if="type === 'addDept'"> -->
-      
 			<template v-slot:header>
         <template v-if="type === 'addDept'"> Tambah Departemen </template>
         <template v-if="type === 'editDept'"> Edit Departemen </template>
-        
-			
 			</template>
 
 			<template v-slot:body>
@@ -114,21 +109,8 @@ export default {
       isModalVisible: false,
 			deptnameadd:"",
       deptnameedit:"",
+      curr_id:"",
       dept: [],
-      temp_dept: [
-        {
-          id: 1,
-          nama: "Keuangan",
-        },
-        {
-          id: 2,
-          nama: "Marketing",
-        },
-        {
-          id: 3,
-          nama: "Operasional",
-        },
-      ],
       columns: {
         Id : {
           name : "Id",
@@ -150,7 +132,7 @@ export default {
         },
       },
       filter: "",
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
     };
   },
   props:{},
@@ -168,20 +150,31 @@ export default {
 		},
 		closeModal(){
 			this.isModalVisible = false;
-			//console.log(this.isModalVisible)
 		},
 		insert(e){
 			e.preventDefault();
+
 			let formValue = this.deptnameadd
-			console.log(formValue)
-			alert("Dept berhasil ditambahkan")
-			document.getElementById("formAddDept").reset();
+
+      let data = {
+        name: formValue
+      }
+      console.log(data.name)
+
+      HTTP.post("departments", data, {
+          headers:{
+              'Content-Type': 'application/json'
+          }
+      }).then((res)=>{
+          if (res.status == 200){
+              alert("Departemen berhasil ditambahkan")
+              this.closeModal()
+          }
+      }).catch(()=>{
+          alert("Gagal menambahkan Departemen")
+      })
 		},
-    // addDept(data){
-    //   console.log(data);
-    // },
     getDept() {
-      // di sini ambil data admin dari database
       HTTP.get("departments").then((res)=>{
         if (res.data.success == true){
           this.dept = res.data.data
@@ -191,56 +184,54 @@ export default {
       console.log(id);
     },
     deleteDept(id) {
-      console.log(id);
+      if (confirm("Yakin akan menghapus Departemen?")){
+          HTTP.delete(`departments/${id}`).then((res) =>{
+            if (res.status == 200){
+              alert("Berhasil menghapus Departemen")
+              this.getDept()
+            }
+          }).catch( () => {
+            alert("Gagal Menghapus Departemen")
+          }
+          )
+        }
     },
     edit(e){
       e.preventDefault();
-
-      //let prevDept = this.temp_dept[parseInt(id)-1]
-      //console.log(prevDept.nama)
-
       //get data from form
 			let formValue = this.deptnameedit
-      console.log(formValue)
-			console.log(typeof formValue) //udah jalan sampe sini
-      //console.log(id) //id undefined
-      //console.log(this.id) //undefined
-
-      //this.temp_dept[parseInt(this.id)-1].nama = formValue
-
-      // methods: {
-      //   // ...
-      //   fillData(selected){
-      //     this.datacollection.datasets[0].label = selected;
-      //   },
-
-
-      // let prevDept = this.temp_dept[parseInt(id)-1].nama
-      // prevDept = formValue
-      // console.log(prevDept)
 
-			alert("Dept berhasil diedit")
+      let data = {
+        name: formValue
+      }
+      HTTP.put(`departments/${this.curr_id}`, data, {
+          headers: {
+              'Content-Type': 'application/json'
+          }
+      }).then((res)=>{
+          if (res.status == 200){
+              alert("Departemen berhasil diedit")
+              this.closeModal()
+          }
+      }).catch(() => alert("Gagal mengedit Departemen"))
 
-			document.getElementById("formEditDept").reset();
+			;
     },
 
     editDept(id) {
-      //console.log(id);
+      console.log(id);
       this.showModal("editDept");
 
       //get data
-      let dept = this.temp_dept[parseInt(id)-1]
-      this.deptnameedit = dept.nama
-      //console.log(this.deptnameedit)
-
-      //change data
-
-      
+      HTTP.get(`departments/${id}`).then((res)=>{
+          if (res.status == 200){
+              this.deptnameedit = res.data.data.name
+          }
+        }
+      )
 
+      this.curr_id = id;
     },
-    // updateDept(event){
-    //   console.log(event);
-    // }
   },
   mounted() {
     this.getDept();
diff --git a/src/views/KaryawanDetail.vue b/src/views/KaryawanDetail.vue
index 56d6afd5208e7129399192c0e5f8960e6a5ce69a..064b16a1d2ba9f6e2f75212a88ba6950e6ed7d30 100644
--- a/src/views/KaryawanDetail.vue
+++ b/src/views/KaryawanDetail.vue
@@ -46,7 +46,7 @@
                                     </div>
                                     <div class="mb-3 me-3">
                                         <label for="atasanInput" class="text-blue"> Atasan </label>
-                                        <input v-model="employee.manager" list="atasan" id="atasanInput" class="form-control">
+                                        <input v-model="employee.manager" list="atasan" id="atasanInput" class="form-control" readonly>
                                         <datalist id="atasan">
                                             <option v-for="a in this.atasan" :key="a.id" :value="a.name"></option>
                                         </datalist>
@@ -61,10 +61,6 @@
                                         <label for="emailInput" class="text-blue"> Email </label>
                                         <input v-model="employee.user.email" type="email" id="emailInput" class="form-control" readonly>
                                     </div>
-                                    <div class="mb-3">
-                                        <label for="passwordInput" class="text-blue"> Kata Sandi </label>
-                                        <input v-model="password" type="password" id="passwordInput" class="form-control">
-                                    </div>
                                 </div>
                         </div>
                         </form>
@@ -184,7 +180,7 @@ export default {
                 },
             ],
             dept_last_page : 1,
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
         }
     },
     methods: {
diff --git a/src/views/KaryawanEdit.vue b/src/views/KaryawanEdit.vue
index bd91509f14b82243f8a4236e96167e6717bd19dd..06c91903b9bc6dcf0eb229b0ce06668288adf7ce 100644
--- a/src/views/KaryawanEdit.vue
+++ b/src/views/KaryawanEdit.vue
@@ -188,7 +188,7 @@ export default {
                 },
             ],
             dept_last_page : 1,
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
         }
     },
     methods: {
diff --git a/src/views/KaryawanInsert.vue b/src/views/KaryawanInsert.vue
index fd2213b1c122481a4b8535aa005f0d86c7940730..dbaa8914b34daf787045ac528219d16dcbf98c11 100644
--- a/src/views/KaryawanInsert.vue
+++ b/src/views/KaryawanInsert.vue
@@ -35,6 +35,20 @@
                                         <datalist id="dept">
                                             <option v-for="d in this.dept" :key="d" :value="d.name"></option>
                                         </datalist>
+                                        <!-- <v-select v-model="dept_in"
+                                        :options="this.dept"
+                                        label="name"
+                                        @closed="()=>(getAtasan())"
+                                        >
+                                        <template #search="{attributes, events}">
+                                            <input
+                                            class="vs__search"
+                                            :required="!dept_in"
+                                            v-bind="attributes"
+                                            v-on="events"
+                                            />
+                                        </template> -->
+                                        <!-- </v-select> -->
                                     </div>
                                     <div class="mb-3 me-3">
                                         <label for="jabatanInput" class="text-blue"> Jabatan </label>
@@ -83,13 +97,15 @@
 import Header from "../components/header"
 import Sidebar from "../components/sidebar"
 import { HTTP } from "../http-common";
+// import vSelect from 'vue-select'
 
 
 export default {
     name: "KaryawanInsert",
     components: {
         Header,
-        Sidebar
+        Sidebar,
+        // vSelect
     },
     data() {
         return{
@@ -108,17 +124,25 @@ export default {
             temp_dept: ["Keuangan", "Marketing", "Operasional"],
             temp_atasan: ["Yusuf", "Budi"],
             temp_jabatan: ["Manager", "Staf"],
-      nav_active : true,
+            dept_last_page: 1,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
         }
     },
     methods: {
         getDept(){
-            HTTP.get("departments").then((res)=>{
-                if (res.data.success == true){
-                console.log(res.data.data)
-                this.dept = res.data.data
-            }})
-        },
+      HTTP.get("departments?page=1").then((res)=>{
+        if (res.data.success == true){
+          this.dept= res.data.data.data
+          this.dept_last_page = res.data.data.last_page
+          for (let i=2;i<=this.dept_last_page;i++){
+            HTTP.get(`departments?page=${i}`).then((res)=>{
+            if (res.data.success == true){
+              this.dept = this.dept.concat(res.data.data.data)
+          }})
+          }
+          
+      }})
+    },
         getJabatan(){
             this.jabatan = this.temp_jabatan
         },
@@ -137,6 +161,15 @@ export default {
                     })
                 }
             })
+            // console.log("in")
+            // HTTP.get(`departments/${this.dept_in.id}/employees`).then((res)=>{
+            //             if (res.data.success == true){
+            //                 this.atasan = []
+            //                 res.data.data.forEach((a) => {
+            //                     this.atasan.push({name: a.name, id: a.id})
+            //                 })
+            //             }
+            //         })
         },
         insert(e){
             e.preventDefault();
diff --git a/src/views/KpiCreate.vue b/src/views/KpiCreate.vue
index 3c0b414f7252747bc6f3e645e878243f0ea7b437..417f110a84180eb080e4373546c07dd6a3ef5b80 100644
--- a/src/views/KpiCreate.vue
+++ b/src/views/KpiCreate.vue
@@ -115,7 +115,7 @@ export default {
             period_type: "Daily",
             deadline: null,
             deadline_time: "",
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
         }
     },
     methods: {
diff --git a/src/views/KpiDetail.vue b/src/views/KpiDetail.vue
index 51d5b69720da502cd34d09a20cdf011222af1dd7..e69b38d1a6093160fb8912162fe855a9b870fe86 100644
--- a/src/views/KpiDetail.vue
+++ b/src/views/KpiDetail.vue
@@ -87,7 +87,7 @@
                         <div class="row p-3">
                             <h1 class="text-blue">Buat Response</h1>
                             <hr class="my-2">
-                            <form @submit="insert" autocomplete="off">
+                            <form id="formResponse" @submit="insert" autocomplete="off">
                                 <div class="mb-3 me-3">
                                     <label class="text-blue"> Nilai Aktual </label>
                                     <input v-model="response.actual" type="number" min="0" class="form-control" required>
@@ -136,7 +136,7 @@ export default {
                 date : "",
                 images:[]
             },
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
         }
     },
     methods: {
@@ -160,6 +160,7 @@ export default {
             formData.append("images[0]", this.response.images[0]);
             HTTP.post("kpi-responses", formData).then(()=>{
                 alert("Berhasil Membuat Response")
+                document.getElementById("formResponse").reset();
             }).catch((e)=>{
                 console.log(e.response.data)
                 alert("Gagal Membuat Response")
diff --git a/src/views/KpiIndex.vue b/src/views/KpiIndex.vue
index 71d39c92d60d0e239fe61cf5f8949b674c47445b..40365a0622210f53d2f3bbbd8a019914ebe9644f 100644
--- a/src/views/KpiIndex.vue
+++ b/src/views/KpiIndex.vue
@@ -89,7 +89,7 @@ export default {
             page_num : 0,
             entry_per_page: 10,
             pagination: [],
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
         }
     },
     methods: {
diff --git a/src/views/KpiManagerDetail.vue b/src/views/KpiManagerDetail.vue
index 18d2d28c413d05f014f1aadf912f4b057dcb314c..94b889b7b750c57331102aaa10f44b0e93f0981d 100644
--- a/src/views/KpiManagerDetail.vue
+++ b/src/views/KpiManagerDetail.vue
@@ -199,7 +199,7 @@ export default {
             name: "Hadi",
             },
       ],
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
         }
     },
     methods: {
diff --git a/src/views/Login.vue b/src/views/Login.vue
index f1fbac30b58f2bfac806949d26d737abe483a4b3..7b40a19a4bd8deab139549d4d04a04126c660d4f 100644
--- a/src/views/Login.vue
+++ b/src/views/Login.vue
@@ -109,13 +109,18 @@ export default {
       })
         .then((response) => {
           localStorage.setItem("token", response.data.token)
+          localStorage.setItem("navActive", true)
           if (response.data.success) {
             window.location.reload()
           }
         })
         .catch(() => alert("username atau password salah"));
     },
+
   },
+  mounted(){
+    document.getElementById("app").style.padding = "0"
+  }
 };
 </script>
 
diff --git a/src/views/ManagerKaryawanDetail.vue b/src/views/ManagerKaryawanDetail.vue
index 6452deafd4772c523f67fc3892e9c7c516d4b588..0c4bf5ea325b94e762d3b2d0714fbf6601e78e9d 100644
--- a/src/views/ManagerKaryawanDetail.vue
+++ b/src/views/ManagerKaryawanDetail.vue
@@ -126,7 +126,7 @@ export default {
             endpoint:"",
             startReport : "",
             endReport:"",
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
         }
     },
     created(){
@@ -137,14 +137,34 @@ export default {
         openResponses(idKpi){
             this.$router.push({ name: "ResponseIndex", params: { kpiId: idKpi, empId:this.slug}});
         },
-        report(){
+        report(e){
+            e.preventDefault()
             //download report
+            HTTP.get(`report/${this.emp.slug}?before=${this.endReport}&after=${this.startReport}`, {responseType: 'arraybuffer',
+            headers: {
+                'Content-Type': 'application/json',
+                'Accept': 'application/pdf'
+            }
+            }).then((res)=>{
+                // console.log(res.data.data)
+                const url = window.URL.createObjectURL(new Blob([res.data]))
+                const link = document.createElement('a')
+                link.href = url
+                link.setAttribute('download', `KPI-Report-${this.emp.name}.pdf`)
+                document.body.appendChild(link)
+                link.click()
+            }).catch((e)=>{
+                console.log(e.response.data)
+                alert("Gagal Membuat Report")
+                })
+            // HTTP.get(`report/${this.emp.slug}?before=${this.endReport}`).then((res)=>{
+            //     console.log(res.data.data)
+            // }).catch((e)=>{console.log(e.response.data)})
         },
         getEmp(){
             HTTP.get(`employees/${this.slug}`).then((res)=>{
                 this.emp = res.data.data
                 this.endpoint = `kpis/assigned/${this.emp.id}`
-                console.log(this.emp)
             }).catch(()=> {alert("Error loading page")})
         }
     }
diff --git a/src/views/ManagerKaryawanIndex.vue b/src/views/ManagerKaryawanIndex.vue
index 862f75718fe20d03dfc151d42b3f85de748cd6a8..1382ed6f7b7e71fbed22bd76b6d30d931966983e 100644
--- a/src/views/ManagerKaryawanIndex.vue
+++ b/src/views/ManagerKaryawanIndex.vue
@@ -67,7 +67,7 @@ export default {
                 clickable : false
                 },
             },
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
         }
     },
     methods: {
diff --git a/src/views/ManagerKpiIndex.vue b/src/views/ManagerKpiIndex.vue
index 4c0af268c5a2c5bb143555c2014cb2016aa0a1b9..1a303747d00995d4cab9c709261735ff23b6d8d3 100644
--- a/src/views/ManagerKpiIndex.vue
+++ b/src/views/ManagerKpiIndex.vue
@@ -97,7 +97,7 @@ export default {
                 data: "custom"},
             ],
             componentKey : 1,
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
         }
     },
     methods: {
diff --git a/src/views/ProfilAdmin.vue b/src/views/ProfilAdmin.vue
index a4791f78a9402dc3f3b27f9b07be0679593a6342..beb5a3b9ee8f2dd7dec9f0be44f301e8a19b6ec6 100644
--- a/src/views/ProfilAdmin.vue
+++ b/src/views/ProfilAdmin.vue
@@ -53,7 +53,7 @@ export default {
     return{
       username:"",
       email:"",
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
     }
   },
   methods:{
diff --git a/src/views/ProfilUser.vue b/src/views/ProfilUser.vue
index 7cd3c9d2a312c437f24b167cfb7627ab85e74cfe..ffccd29d9d606d8782019d3de81e330a73baf788 100644
--- a/src/views/ProfilUser.vue
+++ b/src/views/ProfilUser.vue
@@ -79,7 +79,7 @@ export default {
       atasan_name:null,
       username:"",
       email:"",
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
     };
     
   },
diff --git a/src/views/ResponseDetail.vue b/src/views/ResponseDetail.vue
index 301e1c80a07990337c4a2ef4d7687fea394ea9e9..27c2395a00d5ce9eee0f9d15f9ee58edeec5ab40 100644
--- a/src/views/ResponseDetail.vue
+++ b/src/views/ResponseDetail.vue
@@ -48,13 +48,13 @@
                         </div>
                         <div class="mb-3 me-3">
                             <label  for="NameInput" class="text-blue"> Bukti: </label>
-                            <a class="mx-2" :href="response.images[0].image">link</a>
+                            <a class="mx-2" :href="response.images[0].image">{{response.images[0].name}}</a>
                         </div>
                         <div v-if="response.status == 'pending'" class="col">
                         <!-- <div class="col"> -->
                             <button @click="reject" class="btn-reject float-end mx-2">Reject</button>
                             <button @click="adjust" class="btn-blue float-end mx-2">Adjust</button>
-                            <button @click="Reject" class="btn-green float-end mx-2">Approve</button>
+                            <button @click="approve" class="btn-green float-end mx-2">Approve</button>
                         </div>
                     </div>
                     <hr class="m-2">
@@ -149,9 +149,8 @@ export default {
                 target: 20
             },
             emp: {},
-            responseAdj:{},
             newComment:"",
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
         }
     },
     created(){
@@ -189,13 +188,13 @@ export default {
         changeStatus(id, status){
             let response = {
                     "kpi_id": this.response.kpi_id,
-                    "actual" : this.responseId.actual,
-                    "description" : this.responseId.description,
+                    "actual" : this.response.actual,
+                    "description" : this.response.description,
                     "status" : status,
-                    "date" : this.responseId.date
+                    "date" : this.response.date
                 }
             HTTP.put(`kpi-responses/${id}`, response).then(()=>{
-                    this.refresh = !this.refresh
+                    window.location.reload()
                 }).catch(()=> {alert("Gagal Mengubah Status")})
         },
         approve(){
@@ -208,8 +207,15 @@ export default {
             document.getElementById("modalButton").click()
         },
         saveAdj(){
-            HTTP.put(`kpi-responses/${this.responseId}`, this.responseAdj).then(()=>{
-                    this.refresh = !this.refresh
+            let response = {
+                    "kpi_id": this.response.kpi_id,
+                    "actual" : this.response.actual,
+                    "description" : this.response.description,
+                    "status" : "approved",
+                    "date" : this.response.date
+                }
+            HTTP.put(`kpi-responses/${this.responseId}`, response).then(()=>{
+                    window.location.reload()
                 }).catch(()=> {alert("Gagal Mengubah Nilai")})
         },
         postComment(){
diff --git a/src/views/ResponseEmployee.vue b/src/views/ResponseEmployee.vue
index 3e1b9d6d44bc363b8f5c38277d21db9986e3a8de..ec061ca14af919bdc2eabf49bd659cc4bb96f1ec 100644
--- a/src/views/ResponseEmployee.vue
+++ b/src/views/ResponseEmployee.vue
@@ -125,7 +125,7 @@ export default {
             emp: {},
             responseAdj:{},
             newComment:"",
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
         }
     },
     created(){
diff --git a/src/views/ResponseIndex.vue b/src/views/ResponseIndex.vue
index bd631b8e827720c36d04175025c01e55ef7df3c8..4b1bf977acc677df0a47ee58950481dd41567dce 100644
--- a/src/views/ResponseIndex.vue
+++ b/src/views/ResponseIndex.vue
@@ -204,7 +204,7 @@ export default {
             showModal : false,
             responseAdj : {actual : 0},
             responseId : -1,
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
         }
     },
     created(){
diff --git a/src/views/UserIndex.vue b/src/views/UserIndex.vue
index 8b7af354ce51ba078fd4c821531a7c0efd3cc5fa..dc493273e6b8000a62419f8727140788880b29ff 100644
--- a/src/views/UserIndex.vue
+++ b/src/views/UserIndex.vue
@@ -159,7 +159,7 @@ export default {
       selected_filter: "",
       dept_last_page: 1,
       jabatan: [],
-      nav_active : true,
+      nav_active : JSON.parse(localStorage.getItem('navActive')),
     };
   },
   methods: {