finished modal movement

This commit is contained in:
kandrusyak
2023-02-14 18:51:45 +03:00
parent 622b155a86
commit 614fa59f60
6 changed files with 90 additions and 96 deletions

View File

@@ -1,6 +1,6 @@
<template lang="pug"> <template lang="pug">
teleport(:to="appContainer") teleport(:to="appContainer")
.absolute.bottom-0.p-2.right-0.overflow-hidden.z-50(class="w-1/4 xl:w-1/3 sm:w-1/2") .absolute.top-0.p-2.right-0.overflow-hidden.z-50(class="w-1/4 xl:w-1/3 sm:w-1/2")
.pt-32(v-if="displayPadding") .pt-32(v-if="displayPadding")
.flex.gap-2.flex-col.relative .flex.gap-2.flex-col.relative
transition-group(name="list", @before-leave="displayPadding = true", @after-leave="displayPadding = false") transition-group(name="list", @before-leave="displayPadding = true", @after-leave="displayPadding = false")
@@ -54,7 +54,7 @@ export default {
.list-enter-from, .list-enter-from,
.list-leave-to { .list-leave-to {
opacity: 0; opacity: 0;
transform: translateY(30px); transform: translateY(-30px);
pointer-events: none; pointer-events: none;
} }
</style> </style>

View File

@@ -155,8 +155,3 @@ export default {
border-radius: 4px border-radius: 4px
background-color: var(--default-white) background-color: var(--default-white)
</style> </style>
<style lang="sass">
.q-menu
z-index: 40 !important
</style>

View File

@@ -1,5 +1,5 @@
<template lang="pug"> <template lang="pug">
base-modal(v-model="value", hide-overlay, title="Создание клиента", draggable ) base-modal(v-model="value", hide-overlay, title="Создание клиента", draggable, height="696px" )
.wrapper-create.gap-y-8.flex.flex-col.pt-8 .wrapper-create.gap-y-8.flex.flex-col.pt-8
.flex.gap-x-4.h-fit .flex.gap-x-4.h-fit
.flex.gap-x-3.w-full .flex.gap-x-3.w-full
@@ -525,11 +525,4 @@ export default {
background-repeat: no-repeat background-repeat: no-repeat
background-position: center background-position: center
background-image: url(@/assets/icons/download.svg) background-image: url(@/assets/icons/download.svg)
.modal
max-width: 1220px
max-height: 794px
width: 1220px
height: 794px
background-color: var(--default-white)
</style> </style>

View File

@@ -5,7 +5,7 @@
@hide="onHide", @hide="onHide",
ref="dialog" ref="dialog"
) )
.base-content(ref="contentRef", :style="contentStyles") .base-content(:class="{'draggable': draggable}", ref="contentRef", :style="{...contentStyles, height}")
q-resize-observer(@resize="onResize") q-resize-observer(@resize="onResize")
.base-header(draggable, :class="{'cursor-move': draggable}", ref="headerRef") .base-header(draggable, :class="{'cursor-move': draggable}", ref="headerRef")
.header-title.text {{ title }} .header-title.text {{ title }}
@@ -25,13 +25,13 @@ export default {
showCloseIcon: Boolean, showCloseIcon: Boolean,
draggable: Boolean, draggable: Boolean,
hideOverlay: Boolean, hideOverlay: Boolean,
height: {
type: String,
},
}, },
data() { data() {
return { return {
contentStyles: { contentStyles: {},
top: 0,
left: 0,
},
}; };
}, },
methods: { methods: {
@@ -64,6 +64,8 @@ export default {
) )
this.contentStyles.top = this.contentStyles.top =
parseInt(originalStyles.top) + e.movementY + "px"; parseInt(originalStyles.top) + e.movementY + "px";
this.contentStyles.bottom = "unset";
this.contentStyles.right = "unset";
}, },
onLetGo() { onLetGo() {
@@ -106,6 +108,12 @@ export default {
} else backdropEl.style.background = "rgba(0,0,0,0)"; } else backdropEl.style.background = "rgba(0,0,0,0)";
console.log("123"); console.log("123");
}, },
watch: {
value(val) {
if (val || !this.draggable) return;
this.contentStyles = {};
},
},
}; };
</script> </script>
@@ -125,7 +133,10 @@ export default {
background-color: var(--default-white) background-color: var(--default-white)
box-shadow: 4px 4px 8px rgba(9, 10, 21, 0.1), -4px -4px 8px rgba(9, 10, 21, 0.1) box-shadow: 4px 4px 8px rgba(9, 10, 21, 0.1), -4px -4px 8px rgba(9, 10, 21, 0.1)
border-radius: 4px border-radius: 4px
position: relative &.draggable
position: fixed
bottom: 10px
right: 10px
.header-title .header-title
font-weight: 700 font-weight: 700

View File

@@ -26,7 +26,7 @@
) )
transition(name="form") transition(name="form")
calendar-form-add-event( calendar-form-add-event(
v-if="isOpenForm", v-model="isOpenForm"
:close-form="closeFormCreateEvent", :close-form="closeFormCreateEvent",
:selected-event-data="selectedEvent", :selected-event-data="selectedEvent",
:event-statuses="eventStatuses", :event-statuses="eventStatuses",

View File

@@ -1,11 +1,6 @@
<template lang="pug"> <template lang="pug">
.flex.flex-col.gap-y-6.pt-6.pb-7.px-8.event-form.fixed.right-6.bottom-6( base-modal(v-model="value", :title="!selectedEventData.id ? 'Запись на прием' : 'Изменение записи'", draggable, hide-overlay )
v-click-outside="clearForm" .event-form.flex.flex-col.gap-y-6.pt-8
)
.flex.justify-between
span.title.text-xl.font-bold {{!selectedEventData.id ? "Запись на прием" : "Изменение записи"}}
.flex.pt-2
.icon-cancel.close-icon.tesxt-xs.cursor-pointer(@click="clearForm")
.flex.flex-col.gap-y-8 .flex.flex-col.gap-y-8
base-select( base-select(
v-if="selectedEventData.id" v-if="selectedEventData.id"
@@ -81,14 +76,18 @@ import BaseInput from "@/components/base/BaseInput.vue";
import BaseSelect from "@/components/base/BaseSelect.vue"; import BaseSelect from "@/components/base/BaseSelect.vue";
import * as moment from "moment/moment"; import * as moment from "moment/moment";
import { statusesDictionary } from "../utils/statusesDictionary.js"; import { statusesDictionary } from "../utils/statusesDictionary.js";
import BaseModal from "@/components/base/BaseModal.vue";
import { v_model } from "@/shared/mixins/v-model";
export default { export default {
name: "FormChangeEvent", name: "FormChangeEvent",
components: { components: {
BaseModal,
BaseSelect, BaseSelect,
BaseInput, BaseInput,
TheNotificationProvider, TheNotificationProvider,
}, },
mixins: [v_model],
emits: ["clear-selected-event-data", "close-change-form"], emits: ["clear-selected-event-data", "close-change-form"],
props: { props: {
closeForm: Function, closeForm: Function,
@@ -594,11 +593,7 @@ export default {
<style lang="sass" scoped> <style lang="sass" scoped>
.event-form .event-form
width: 634px width: 550px
background-color: var(--default-white)
box-shadow: var(--default-shadow)
border-radius: 4px
z-index: 5
.form-item .form-item
border-radius: 4px border-radius: 4px