Create.vue 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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'))
  18. }
  19. </script>
  20. <template>
  21. <AppLayout>
  22. <Card>
  23. <template #content>
  24. <div class="grid">
  25. <div class="col-12 md:col-3">
  26. <AppInputNumber
  27. v-model="form.amount"
  28. label="Pengeluaran"
  29. placeholder="pengeluaran"
  30. :error="form.errors.amount"
  31. />
  32. </div>
  33. <div class="col-12">
  34. <AppEditor
  35. label="Keterangan"
  36. v-model="form.description"
  37. editor-style="height: 320px"
  38. placeholder="tulis keterangan disini"
  39. :error="form.errors.description"
  40. >
  41. <template #toolbar>
  42. <span class="q-formats">
  43. <button class="ql-bold" v-tooltip.bottom="'Bold'"></button>
  44. <button class="ql-italic" v-tooltip.bottom="'Italic'"></button>
  45. <button class="ql-underline" v-tooltip.bottom="'Underline'"></button>
  46. </span>
  47. <span class="ql-formats">
  48. <button class="ql-list" value="ordered" v-tooltip.bottom="'Ordered'"></button>
  49. <button class="ql-list" value="bullet" v-tooltip.bottom="'Bullet'"></button>
  50. </span>
  51. </template>
  52. </AppEditor>
  53. </div>
  54. </div>
  55. </template>
  56. <template #footer>
  57. <div class="flex justify-content-end">
  58. <AppButton @click="submit" label="Simpan" icon="pi pi-check" class="p-button-text" />
  59. </div>
  60. </template>
  61. </Card>
  62. </AppLayout>
  63. </template>