123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <script setup>
  2. import { Inertia } from '@inertiajs/inertia'
  3. import { useConfirm } from 'primevue/useconfirm'
  4. import { useForm } from '@/composables/useForm'
  5. import AppInputText from '@/components/AppInputText.vue'
  6. import AppDropdown from '@/components/AppDropdown.vue'
  7. import DashboardLayout from '@/layouts/Dashboard/DashboardLayout.vue'
  8. const props = defineProps({
  9. user: Object,
  10. roles: Array,
  11. })
  12. const blockConfirm = useConfirm()
  13. const onBlockConfirm = () => {
  14. blockConfirm.require({
  15. message: `Yakin akan memblokir (${props.user.username}) ?`,
  16. header: 'Blokir User',
  17. acceptLabel: props.user.status ? 'Blokir' : 'Aktifkan',
  18. rejectLabel: 'Batalkan',
  19. accept: () => {
  20. Inertia.delete(route('users.block', props.user.id))
  21. },
  22. reject: () => {
  23. blockConfirm.close()
  24. },
  25. })
  26. }
  27. const form = useForm({
  28. name: props.user.name,
  29. username: props.user.username,
  30. role_id: props.user.role_id,
  31. })
  32. const onSubmit = () => {
  33. form.put(route('users.update', props.user.id))
  34. }
  35. </script>
  36. <template>
  37. <DashboardLayout title="Ubah User">
  38. <div class="grid">
  39. <div class="col-12">
  40. <Card>
  41. <template #title> Edit User </template>
  42. <template #content>
  43. <div class="grid">
  44. <div class="col-12 md:col-6">
  45. <AppInputText
  46. label="Nama"
  47. placeholder="nama"
  48. :disabled="user.role_id !== 1"
  49. :error="form.errors.name"
  50. v-model="form.name"
  51. />
  52. </div>
  53. <div class="col-12 md:col-6">
  54. <AppInputText
  55. label="Nama Pengguna"
  56. placeholder="nama pengguna"
  57. :disabled="user.role_id !== 1"
  58. :error="form.errors.username"
  59. v-model="form.username"
  60. />
  61. </div>
  62. <div v-if="user.role_id !== 1" class="col-12 md:col-6">
  63. <AppDropdown
  64. label="Hak Akses"
  65. placeholder="Pilih satu"
  66. v-model="form.role_id"
  67. :options="roles"
  68. :error="form.errors.role_id"
  69. />
  70. </div>
  71. </div>
  72. </template>
  73. <template #footer>
  74. <div class="flex flex-column md:flex-row justify-content-end">
  75. <Button
  76. v-if="user.role_id !== 1"
  77. icon="pi pi-ban"
  78. class="p-button-outlined md:mr-3 mb-3 md:mb-0"
  79. :class="[user.status ? 'p-button-danger' : 'p-button-success']"
  80. :label="user.status ? 'Blokir' : 'Aktifkan'"
  81. @click="onBlockConfirm"
  82. />
  83. <Button
  84. label="Simpan"
  85. class="p-button-outlined"
  86. icon="pi pi-check"
  87. :disabled="form.processing"
  88. @click="onSubmit"
  89. />
  90. </div>
  91. </template>
  92. </Card>
  93. </div>
  94. </div>
  95. </DashboardLayout>
  96. </template>