WIP Переместила форму, добавила click-outside
This commit is contained in:
@@ -13,17 +13,25 @@
|
|||||||
: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"
|
||||||
|
@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"
|
@update-events="fetchEventsData"
|
||||||
@close-change-form="setChangeFormState"
|
@close-change-form="setChangeFormState"
|
||||||
@reset-change-form="resetChangeFormState"
|
|
||||||
)
|
)
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -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();
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
Reference in New Issue
Block a user