Create.vue 2.1KB

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