DefaultDialogHeader.vue 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <template>
  2. <q-bar
  3. class="q-py-md"
  4. v-bind="$attrs"
  5. style="min-height: 45px; max-height: 45px"
  6. >
  7. <q-icon v-if="props.icon" :name="props.icon" />
  8. <div>{{ props.title }}</div>
  9. <q-space />
  10. <q-btn
  11. v-if="props.maximizable"
  12. dense
  13. flat
  14. :icon="!maximizedToggle ? 'mdi-arrow-expand' : 'mdi-arrow-collapse'"
  15. @click="onMaximazedClick"
  16. />
  17. <q-btn dense flat icon="mdi-close" @click="emit('close')" />
  18. </q-bar>
  19. </template>
  20. <script setup>
  21. import { ref, onMounted } from "vue";
  22. const emit = defineEmits(["maximized", "close"]);
  23. const props = defineProps({
  24. title: {
  25. type: String,
  26. default: 'Título',
  27. },
  28. fullscreen: {
  29. type: Boolean,
  30. default: false,
  31. },
  32. maximizable: {
  33. type: Boolean,
  34. default: false,
  35. },
  36. icon: {
  37. type: String,
  38. default: "",
  39. },
  40. });
  41. const maximizedToggle = ref(false);
  42. const onMaximazedClick = () => {
  43. maximizedToggle.value = !maximizedToggle.value;
  44. emit("maximized", maximizedToggle.value);
  45. };
  46. onMounted(() => {
  47. if (props.fullscreen) {
  48. maximizedToggle.value = true;
  49. }
  50. });
  51. </script>