AddEditUserDialog.vue 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <template>
  2. <q-dialog ref="dialogRef" @hide="onDialogHide">
  3. <q-card class="q-dialog-plugin">
  4. <DefaultDialogHeader :title="props.title" @close="onDialogCancel" />
  5. <q-card-section>
  6. <q-form ref="formRef" class="row q-col-gutter-sm">
  7. <q-input
  8. v-model="name"
  9. :label="$t('users.name')"
  10. :hint="$t('users.name_and_surname')"
  11. :rules="[inputRules.required]"
  12. class="col-6"
  13. />
  14. <q-input
  15. v-model="email"
  16. label="Email"
  17. :rules="[inputRules.email]"
  18. class="col-6"
  19. />
  20. <q-input
  21. v-model="password"
  22. :label="$t('users.password')"
  23. :rules="[inputRules.min(6)]"
  24. class="col-6"
  25. />
  26. </q-form>
  27. </q-card-section>
  28. <q-card-actions align="center">
  29. <q-btn color="primary" label="Cancel" @click="onDialogCancel" />
  30. <q-space />
  31. <q-btn color="primary" label="OK" @click="onOKClick" />
  32. </q-card-actions>
  33. </q-card>
  34. </q-dialog>
  35. </template>
  36. <script setup>
  37. import { ref } from "vue";
  38. import { useInputRules } from "src/composables/useInputRules";
  39. import { useDialogPluginComponent } from "quasar";
  40. import { useI18n } from "vue-i18n";
  41. import DefaultDialogHeader from "src/components/geral/DefaultDialogHeader.vue";
  42. defineEmits([
  43. // REQUIRED; need to specify some events that your
  44. // component will emit through useDialogPluginComponent()
  45. ...useDialogPluginComponent.emits,
  46. ]);
  47. const props = defineProps({
  48. user: {
  49. type: Object,
  50. default: null,
  51. },
  52. title: {
  53. type: Function,
  54. default: () => useI18n().t("general.title"),
  55. },
  56. });
  57. const { dialogRef, onDialogHide, onDialogOK, onDialogCancel } =
  58. useDialogPluginComponent();
  59. const { inputRules } = useInputRules();
  60. const formRef = ref(null);
  61. const name = ref(props.user?.name || "");
  62. const email = ref(props.user?.email || "");
  63. const password = ref("");
  64. // this is part of our example (so not required)
  65. const onOKClick = () => {
  66. if (!formRef.value.validate()) {
  67. return;
  68. }
  69. const payload = {
  70. name: name.value,
  71. email: email.value,
  72. password: password.value,
  73. };
  74. // on OK, it is REQUIRED to
  75. // call onDialogOK (with optional payload)
  76. onDialogOK({ ...payload });
  77. // or with payload: onDialogOK({ ... })
  78. // ...and it will also hide the dialog automatically
  79. };
  80. </script>