ChangeImageDialog.vue 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <template>
  2. <q-dialog ref="dialogRef" @hide="onDialogHide">
  3. <q-card
  4. class="q-dialog-plugin overflow-hidden"
  5. style="min-width: 400px"
  6. >
  7. <DefaultDialogHeader title="Trocar Imagem" @close="onDialogCancel" />
  8. <q-card-section class="row q-col-gutter-md q-pt-none">
  9. <div class="col-12 text-caption text-grey-6">
  10. Personalizar
  11. </div>
  12. <DefaultMediaPicker
  13. v-model="selectedFile"
  14. v-model:preview-url="previewUrl"
  15. accept="image/*"
  16. class="col-12"
  17. dense
  18. label=""
  19. placeholder="Buscar no Desktop"
  20. preview-height="200"
  21. show-preview
  22. :label-outside="false"
  23. />
  24. </q-card-section>
  25. <q-separator />
  26. <q-card-actions align="right" class="q-pa-md q-gutter-sm">
  27. <q-btn
  28. color="negative"
  29. label="Cancelar"
  30. no-caps
  31. outline
  32. @click="onDialogCancel"
  33. />
  34. <q-btn
  35. color="primary"
  36. label="Salvar"
  37. no-caps
  38. unelevated
  39. :disable="!selectedFile"
  40. @click="onSave"
  41. />
  42. </q-card-actions>
  43. </q-card>
  44. </q-dialog>
  45. </template>
  46. <script setup>
  47. import { ref } from "vue";
  48. import { useDialogPluginComponent } from "quasar";
  49. import DefaultDialogHeader from "src/components/defaults/DefaultDialogHeader.vue";
  50. import DefaultMediaPicker from "src/components/defaults/DefaultMediaPicker.vue";
  51. defineEmits([...useDialogPluginComponent.emits]);
  52. const { dialogRef, onDialogCancel, onDialogHide, onDialogOK } =
  53. useDialogPluginComponent();
  54. const previewUrl = ref(null);
  55. const selectedFile = ref(null);
  56. const onSave = () => {
  57. onDialogOK({
  58. file: selectedFile.value,
  59. previewUrl: previewUrl.value,
  60. });
  61. };
  62. </script>