Create.vue 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <script setup>
  2. import { computed, watch } from 'vue'
  3. import { useForm, usePage } from '@inertiajs/inertia-vue3'
  4. import AppLayout from '@/layouts/AppLayout.vue'
  5. import AppInputNumber from '@/components/AppInputNumber.vue'
  6. import AppEditor from '@/components/AppEditor.vue'
  7. const errors = computed(() => usePage().props.value.errors)
  8. watch(errors, () => {
  9. form.clearErrors()
  10. })
  11. const form = useForm({
  12. description: null,
  13. amount: null,
  14. })
  15. const submit = () => {
  16. form.post(route('expenses.store'), { onSuccess: () => form.reset() })
  17. }
  18. </script>
  19. <template>
  20. <AppLayout>
  21. <div class="grid">
  22. <div class="col-12 md:col-8">
  23. <Card>
  24. <template #content>
  25. <AppInputNumber
  26. v-model="form.amount"
  27. class="md:w-16rem"
  28. label="Pengeluaran"
  29. placeholder="pengeluaran"
  30. :error="form.errors.amount"
  31. />
  32. <AppEditor
  33. label="Keterangan"
  34. v-model="form.description"
  35. editor-style="height: 320px"
  36. placeholder="tulis keterangan disini"
  37. :error="form.errors.description"
  38. >
  39. <template #toolbar>
  40. <span class="q-formats">
  41. <button class="ql-bold" v-tooltip.bottom="'Bold'"></button>
  42. <button class="ql-italic" v-tooltip.bottom="'Italic'"></button>
  43. <button class="ql-underline" v-tooltip.bottom="'Underline'"></button>
  44. </span>
  45. <span class="ql-formats">
  46. <button class="ql-list" value="ordered" v-tooltip.bottom="'Ordered'"></button>
  47. <button class="ql-list" value="bullet" v-tooltip.bottom="'Bullet'"></button>
  48. </span>
  49. </template>
  50. </AppEditor>
  51. </template>
  52. <template #footer>
  53. <div class="flex flex-column md:flex-row justify-content-end">
  54. <Button
  55. label="Simpan"
  56. icon="pi pi-check"
  57. class="p-button-outlined"
  58. :disabled="form.processing"
  59. @click="submit"
  60. />
  61. </div>
  62. </template>
  63. </Card>
  64. </div>
  65. </div>
  66. </AppLayout>
  67. </template>