Create.vue 2.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <script setup>
  2. import { useForm, Head } from '@inertiajs/inertia-vue3'
  3. import { useFormErrorReset } from '@/components/useFormErrorReset'
  4. import AppInputText from '@/components/AppInputText.vue'
  5. import AppDropdown from '@/components/AppDropdown.vue'
  6. import DashboardLayout from '@/layouts/DashboardLayout.vue'
  7. defineProps({
  8. roles: Array,
  9. })
  10. const form = useForm({
  11. name: null,
  12. username: null,
  13. role_id: null,
  14. })
  15. useFormErrorReset(form)
  16. const onSubmit = () => {
  17. form.post(route('users.store'), { onSuccess: () => form.reset() })
  18. }
  19. </script>
  20. <template>
  21. <Head title="Tambah User" />
  22. <DashboardLayout>
  23. <div class="grid">
  24. <div class="col-12 lg:col-8">
  25. <Card>
  26. <template #title> Tambah User </template>
  27. <template #content>
  28. <div class="grid">
  29. <div class="col-12 md:col-6">
  30. <AppInputText
  31. label="Nama"
  32. placeholder="nama"
  33. :error="form.errors.name"
  34. v-model="form.name"
  35. />
  36. </div>
  37. <div class="col-12 md:col-6">
  38. <AppInputText
  39. label="Nama Pengguna"
  40. placeholder="nama pengguna"
  41. :error="form.errors.username"
  42. v-model="form.username"
  43. />
  44. </div>
  45. <div class="col-12 md:col-6">
  46. <AppDropdown
  47. label="Hak Akses"
  48. placeholder="pilih satu"
  49. v-model="form.role_id"
  50. :options="roles"
  51. :error="form.errors.role_id"
  52. />
  53. </div>
  54. </div>
  55. </template>
  56. <template #footer>
  57. <div class="flex flex-column md:flex-row justify-content-end">
  58. <Button
  59. label="Simpan"
  60. icon="pi pi-check"
  61. class="p-button-outlined"
  62. :disabled="form.processing"
  63. @click="onSubmit"
  64. />
  65. </div>
  66. </template>
  67. </Card>
  68. </div>
  69. </div>
  70. </DashboardLayout>
  71. </template>