WIP Переместила форму, добавила click-outside

This commit is contained in:
Daria Golova
2022-11-15 12:18:40 +03:00
parent 016e08cf71
commit c54014ad5f
3 changed files with 27 additions and 35 deletions

View File

@@ -13,18 +13,26 @@
:events-data="eventsData" :events-data="eventsData"
:members-data="membersData" :members-data="membersData"
:sidebar-width="sidebarWidth" :sidebar-width="sidebarWidth"
:close-form-create-event="closeFormCreateEvent"
:is-open-form="isOpenForm"
:event-types="eventTypes" :event-types="eventTypes"
:change-form-was-closed="changeFormWasClosed" :change-form-was-closed="changeFormWasClosed"
@previous-date="switchPreviousDate" @previous-date="switchPreviousDate"
@next-date="switchNextDate" @next-date="switchNextDate"
@selected-layout="changeCalendarLayout" @selected-layout="changeCalendarLayout"
@open-change-form="openFormCreateEvent" @open-change-form="openFormCreateEvent"
@update-events="fetchEventsData"
@close-change-form="setChangeFormState"
@reset-change-form="resetChangeFormState" @reset-change-form="resetChangeFormState"
@selected-event="writeEventData"
) )
calendar-form-add-event(
v-if="isOpenForm"
:close-form="closeFormCreateEvent"
:owners-data="employeesData"
:members-data="membersData"
:selected-event-data="selectedEvent"
:event-types="eventTypes"
@clear-selected-event-data="clearSelectedEvent"
@update-events="fetchEventsData"
@close-change-form="setChangeFormState"
)
</template> </template>
<script> <script>
@@ -32,17 +40,20 @@ import { fetchWrapper } from "../../shared/fetchWrapper.js";
import * as moment from "moment/moment"; import * as moment from "moment/moment";
import CalendarSchedule from "./components/CalendarSchedule.vue"; import CalendarSchedule from "./components/CalendarSchedule.vue";
import CalendarSidebar from "./components/CalendarSidebar.vue"; import CalendarSidebar from "./components/CalendarSidebar.vue";
import CalendarFormAddEvent from "./components/CalendarFormAddEvent.vue";
export default { export default {
name: "TheCalendar", name: "TheCalendar",
components: { components: {
CalendarSchedule, CalendarSchedule,
CalendarSidebar, CalendarSidebar,
CalendarFormAddEvent,
}, },
data() { data() {
return { return {
sidebarWidth: "72px", sidebarWidth: "72px",
calendarLayout: "", calendarLayout: "",
currentDate: moment(), currentDate: moment(),
selectedEvent: {},
timeInformation: { timeInformation: {
dayStartTime: "08:00", dayStartTime: "08:00",
dayEndTime: "20:00", dayEndTime: "20:00",
@@ -107,6 +118,13 @@ export default {
resetChangeFormState() { resetChangeFormState() {
this.changeFormWasClosed = false; this.changeFormWasClosed = false;
}, },
writeEventData(eventData) {
this.selectedEvent = eventData;
this.openFormCreateEvent();
},
clearSelectedEvent() {
this.selectedEvent = {};
},
}, },
mounted() { mounted() {
this.fetchPersonsData(); this.fetchPersonsData();

View File

@@ -1,5 +1,5 @@
<template lang="pug"> <template lang="pug">
.flex.flex-col.gap-y-6.pt-6.pb-7.px-8.event-form.fixed.right-0.bottom-4 .flex.flex-col.gap-y-6.pt-6.pb-7.px-8.event-form.fixed.right-0.bottom-4(v-click-outside="clearForm")
.flex.justify-between .flex.justify-between
span.title.text-xl.font-bold {{!selectedEventData.id ? "Назначение события" : "Изменение события"}} span.title.text-xl.font-bold {{!selectedEventData.id ? "Назначение события" : "Изменение события"}}
.flex.pt-2 .flex.pt-2

View File

@@ -22,7 +22,7 @@
:style="columnSize" :style="columnSize"
:event-types="eventTypes" :event-types="eventTypes"
:change-form-was-closed="changeFormWasClosed" :change-form-was-closed="changeFormWasClosed"
@selected-event="writeEventData" @selected-event="transmitEventData"
@reset-change-form="transmitResetChangeForm" @reset-change-form="transmitResetChangeForm"
) )
.flex.w-full.relative .flex.w-full.relative
@@ -46,17 +46,6 @@
:time-coil="timeCoil" :time-coil="timeCoil"
:owners-count="ownersCount" :owners-count="ownersCount"
) )
calendar-form-add-event(
v-if="isOpenForm"
:close-form="closeFormCreateEvent"
:owners-data="ownersData"
:members-data="membersData"
:selected-event-data="selectedEvent"
:event-types="eventTypes"
@clear-selected-event-data="clearSelectedEvent"
@update-events="transmitUpdateEvents"
@close-change-form="transmitCloseChangeForm"
)
</template> </template>
<script> <script>
@@ -65,7 +54,6 @@ import CalendarHeader from "./CalendarHeader.vue";
import CalendarBackground from "./CalendarBackground.vue"; import CalendarBackground from "./CalendarBackground.vue";
import CalendarClockColumn from "./CalendarClockColumn.vue"; import CalendarClockColumn from "./CalendarClockColumn.vue";
import CalendarColumn from "./CalendarColumn.vue"; import CalendarColumn from "./CalendarColumn.vue";
import CalendarFormAddEvent from "./CalendarFormAddEvent.vue";
export default { export default {
name: "CalendarSchedule", name: "CalendarSchedule",
components: { components: {
@@ -73,7 +61,6 @@ export default {
CalendarBackground, CalendarBackground,
CalendarClockColumn, CalendarClockColumn,
CalendarColumn, CalendarColumn,
CalendarFormAddEvent,
}, },
props: { props: {
changeFormWasClosed: Boolean, changeFormWasClosed: Boolean,
@@ -108,8 +95,6 @@ export default {
return []; return [];
}, },
}, },
closeFormCreateEvent: Function,
isOpenForm: Boolean,
eventTypes: { eventTypes: {
type: Array, type: Array,
default() { default() {
@@ -127,7 +112,6 @@ export default {
pixelsPerHour: 62, pixelsPerHour: 62,
columnHeaderHeight: 48, columnHeaderHeight: 48,
defaultColumnWidth: 470, defaultColumnWidth: 470,
selectedEvent: {},
isScrolling: false, isScrolling: false,
}; };
}, },
@@ -319,19 +303,6 @@ export default {
}); });
return filteredArray; return filteredArray;
}, },
writeEventData(eventData) {
this.selectedEvent = eventData;
this.$emit("open-change-form");
},
clearSelectedEvent() {
this.selectedEvent = {};
},
transmitUpdateEvents() {
this.$emit("update-events");
},
transmitCloseChangeForm() {
this.$emit("close-change-form");
},
changeScrollingState(e) { changeScrollingState(e) {
this.isScrolling = e.target.scrollTop !== 0; this.isScrolling = e.target.scrollTop !== 0;
}, },
@@ -346,6 +317,9 @@ export default {
transmitResetChangeForm() { transmitResetChangeForm() {
this.$emit("reset-change-form"); this.$emit("reset-change-form");
}, },
transmitEventData(eventData) {
this.$emit("selected-event", eventData);
},
}, },
watch: { watch: {
currentTime() { currentTime() {